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
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
| Version | Published | Plugin API | Size | Permissions | Status |
|---|---|---|---|---|---|
| 0.2.0latest | Oct 5, 2026 | >=2 <3 | 105.1 KB | 5 permissions | Listed |
No comments yet.