Official

chat

Built-in chat UI (JavaScript UI plugin).

The app opens the listing; nothing installs until an agent in your Plugins workspace has read the files and you enable the plugin. In a terminal: cvg install convergence/chat@0.2.0

Permissions in 0.2.0

  • Control chats chats.controlHighCreates chats, sends prompts and cancels runs.Send prompts, answer agent questions, and create, change, fork, revert, stop and group chats
  • Run other plugins' commands commands.runHighRuns commands of other plugins.Run the sidebar's New chat command from the title bar
  • Read chats chats.readMediumReads your transcripts and chat lists.Show workspaces, tasks, chats and transcripts, and follow them as agents work
  • Read files fs.readMediumReads files in the listed places.Suggest workspace files for @ mentionsPlaces: the open workspace
  • Show panels ui.slotsLowShows views in the listed parts of the window.Draw the chat grid and the title barSlots: centertitle

Files

settings.ts2.1 KB
// Embed an Effect-owned view in the standard custom-settings extension point.
// The quick limit checkbox and this section write the exact same per-agent map.
import { html, ui } from "convergence";
import type { Api, Element, ViewContext } from "convergence";
import type { ChatView } from "./controller.ts";
import { autoSend } from "./scheduler-policy.ts";
import { column } from "./views/styles.ts";

let viewId: number | undefined;
export const bindSettings = (id: number | undefined) => {
  viewId = id;
};
export function render(_ctx: ViewContext<object>, _api: Api): Element {
  return viewId === undefined ? html`<text tone="muted">Loading Chat settings…</text>` : ui.view({ view: viewId });
}
export function renderSettings(v: ChatView): Element {
  const scheduler = v.controller.scheduler;
  const agents = Object.values(v.controller.state.agents);
  return html`
    <div ...${column} gap="large">
      <setting heading title="Usage-limit recovery" description="Auto-send applies to all chats for an agent. It holds pending input until actual limit interruption and settlement, then checks account availability. Unknown delivery or account identity requires manual retry." />
      <card divided>
        ${
          agents.length
            ? agents.map(
                (agent) => html`
          <setting title=${agent.name} description="Automatically send existing follow-ups after a reported usage-limit reset.">
            <checkbox id=${`auto-limit-agent-${agent.id}`} label="Auto-send after recovery" checked=${autoSend(scheduler.preferences, agent.id)}
              onChange=${(event: { value: boolean }) => v.ctx.run(scheduler.setAutoSend(agent.id, event.value))} />
          </setting>`,
              )
            : html`<text tone="muted">Loading agents…</text>`
        }
      </card>
      <text style="body" size="xs" tone="muted">Automatic Continue is a separate app-wide switch above, off by default. It generates exactly “Continue” once only when a run stopped because of a usage limit and no other input is pending. User input takes precedence.</text>
    </div>`;
}

Versions

VersionPublishedPlugin APISizePermissionsStatus
0.2.0latestOct 5, 2026>=2 <3105.1 KB5 permissionsListed

Reviews and comments

0 threads · 0 reviews

No comments yet.