@cotal-ai/connector-opencode 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAa3G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAmG/B,CAAC"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAa3G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAqG/B,CAAC"}
package/dist/extension.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { fileURLToPath } from "node:url";
2
2
  import { resolve } from "node:path";
3
3
  import { loadAgentFile, registry } from "@cotal-ai/core";
4
- import { aclEnv, launchEnv, controlEndpoint, MODEL_PROVIDER_KEYS } from "@cotal-ai/connector-core";
4
+ import { aclEnv, launchEnv, controlEndpoint, MODEL_PROVIDER_KEYS, transcriptChannel } from "@cotal-ai/connector-core";
5
5
  /** The bundled in-process plugin (esbuild → `dist/plugin.bundle.js`). `opencode serve` loads it by
6
6
  * absolute path from the inline config, so it runs *inside* the server and shares its SDK client.
7
7
  * Resolved relative to this module — beside the built `dist/extension.js`, so the connector must be
@@ -27,6 +27,7 @@ const SERVE_SHIM = fileURLToPath(new URL("./serve.js", import.meta.url));
27
27
  export const opencodeConnector = {
28
28
  kind: "connector",
29
29
  name: "opencode",
30
+ transcriptChannel, // the shared `tr-<name>` convention (connector-core), exposed via the contract
30
31
  requires: ["opencode"],
31
32
  buildLaunch(opts) {
32
33
  // Tool-sharing isn't wired for opencode: its OPENCODE_CONFIG_CONTENT is a merge layer, so an
@@ -57,6 +58,8 @@ export const opencodeConnector = {
57
58
  env.COTAL_CREDS = opts.creds;
58
59
  if (opts.servers)
59
60
  env.COTAL_SERVERS = opts.servers;
61
+ if (opts.transcript === true)
62
+ env.COTAL_TRANSCRIPT = "1"; // gate the plugin's transcript mirror (parity with Claude)
60
63
  // Where serve.ts roots this agent's SQLite DB + serve pidfile. Pin it to the manager's
61
64
  // workspace root so a per-agent launch cwd (which the manager can point at any repo) doesn't
62
65
  // drop `.cotal/opencode/<name>` into the target tree. Standalone `cotal spawn` has no manager
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -19326,7 +19326,7 @@ function configFromEnv(env = process.env) {
19326
19326
  description: def?.description,
19327
19327
  tags: def?.tags,
19328
19328
  meta: def?.meta,
19329
- capabilities: def?.capabilities,
19329
+ capabilities: splitList(env.COTAL_CAPABILITIES).length ? splitList(env.COTAL_CAPABILITIES) : def?.capabilities,
19330
19330
  model: env.COTAL_MODEL?.trim() || def?.model || void 0,
19331
19331
  servers: env.COTAL_SERVERS?.trim() || link?.servers || DEFAULT_SERVER,
19332
19332
  subscribe: resolvedSubscribe,
@@ -19894,6 +19894,11 @@ ${lines.join("\n")}`;
19894
19894
  }
19895
19895
  };
19896
19896
 
19897
+ // ../connector-core/dist/launch.js
19898
+ function transcriptChannel(name) {
19899
+ return `tr-${name.toLowerCase().replace(/[^a-z0-9_-]+/g, "-")}`;
19900
+ }
19901
+
19897
19902
  // ../connector-core/dist/tool-specs.js
19898
19903
  import { execFileSync } from "node:child_process";
19899
19904
 
@@ -35049,12 +35054,98 @@ function buildCotalTools(agent, config2) {
35049
35054
  return tools;
35050
35055
  }
35051
35056
 
35057
+ // src/transcript.ts
35058
+ var MAX_PREVIEW = 700;
35059
+ var MAX_CHUNK = 6e3;
35060
+ function truncate(s, max) {
35061
+ return s.length > max ? `${s.slice(0, max - 1)}\u2026` : s;
35062
+ }
35063
+ function salient(input) {
35064
+ const i = input ?? {};
35065
+ const v = i.command ?? i.filePath ?? i.file_path ?? i.path ?? i.url ?? i.pattern ?? i.description;
35066
+ const s = typeof v === "string" ? v : Object.keys(i).length ? JSON.stringify(i) : "";
35067
+ return s ? `: ${truncate(s, 300)}` : "";
35068
+ }
35069
+ function condensePart(part) {
35070
+ switch (part?.type) {
35071
+ case "text":
35072
+ if (part.synthetic || part.ignored || !part.text?.trim()) return [];
35073
+ return [part.text.trim()];
35074
+ // assistant text in FULL — chunkLines splits it across messages
35075
+ case "tool": {
35076
+ const head = `\u2692 ${part.tool}${salient(part.state?.input)}`;
35077
+ const status = part.state?.status;
35078
+ if (status === "completed")
35079
+ return [head, `\u2192 ${truncate(String(part.state.output ?? ""), MAX_PREVIEW) || "(no output)"}`];
35080
+ if (status === "error") return [head, `\u2192 ERROR: ${truncate(String(part.state.error ?? ""), MAX_PREVIEW)}`];
35081
+ return [head];
35082
+ }
35083
+ default:
35084
+ return [];
35085
+ }
35086
+ }
35087
+ function chunkLines(lines, max) {
35088
+ const chunks = [];
35089
+ let cur = "";
35090
+ for (const ln of lines) {
35091
+ if (ln.length > max) {
35092
+ if (cur) {
35093
+ chunks.push(cur);
35094
+ cur = "";
35095
+ }
35096
+ for (let i = 0; i < ln.length; i += max) chunks.push(ln.slice(i, i + max));
35097
+ continue;
35098
+ }
35099
+ if (cur && cur.length + ln.length + 1 > max) {
35100
+ chunks.push(cur);
35101
+ cur = "";
35102
+ }
35103
+ cur = cur ? `${cur}
35104
+ ${ln}` : ln;
35105
+ }
35106
+ if (cur) chunks.push(cur);
35107
+ return chunks;
35108
+ }
35109
+ function createTranscriptMirror(agent, channel) {
35110
+ const assistantMsgs = /* @__PURE__ */ new Set();
35111
+ const condensed = /* @__PURE__ */ new Map();
35112
+ const clear = () => {
35113
+ condensed.clear();
35114
+ assistantMsgs.clear();
35115
+ };
35116
+ return {
35117
+ record(message) {
35118
+ const info = message?.info ?? message;
35119
+ if (info?.role === "assistant" && typeof info.id === "string") assistantMsgs.add(info.id);
35120
+ },
35121
+ observe(part) {
35122
+ if (!part?.id || typeof part.messageID !== "string") return;
35123
+ const key = `${part.messageID}:${part.id}`;
35124
+ const lines = condensePart(part);
35125
+ if (lines.length) condensed.set(key, { messageID: part.messageID, lines });
35126
+ else condensed.delete(key);
35127
+ },
35128
+ async flush() {
35129
+ const lines = [];
35130
+ for (const { messageID, lines: ls } of condensed.values())
35131
+ if (assistantMsgs.has(messageID)) lines.push(...ls);
35132
+ clear();
35133
+ for (const chunk of chunkLines(lines, MAX_CHUNK)) await agent.send(chunk, channel);
35134
+ },
35135
+ reset() {
35136
+ clear();
35137
+ }
35138
+ };
35139
+ }
35140
+
35052
35141
  // src/plugin.ts
35053
35142
  function log(msg) {
35054
35143
  process.stderr.write(`[cotal-connector] ${msg}
35055
35144
  `);
35056
35145
  }
35057
35146
  var guard = globalThis;
35147
+ var ERROR_RETRY_INITIAL_MS = 1e3;
35148
+ var ERROR_RETRY_MAX_MS = 3e4;
35058
35149
  var cotal = async () => {
35059
35150
  if (!hasIdentity()) {
35060
35151
  log("no COTAL_NAME \u2014 not a managed session; staying off the mesh");
@@ -35095,6 +35186,9 @@ var cotal = async () => {
35095
35186
  let briefed = false;
35096
35187
  let surfaced = [];
35097
35188
  let awaitingTurnEnd = false;
35189
+ let errorRetryTimer;
35190
+ let errorRetryMs = ERROR_RETRY_INITIAL_MS;
35191
+ const transcript = /^(1|true|yes|on)$/i.test(process.env.COTAL_TRANSCRIPT ?? "") ? createTranscriptMirror(agent, transcriptChannel(config2.name)) : void 0;
35098
35192
  const safeStatus = async (status, activity) => {
35099
35193
  try {
35100
35194
  if (agent.connected) await agent.setStatus(status, activity);
@@ -35129,6 +35223,21 @@ var cotal = async () => {
35129
35223
  function pendingForWake() {
35130
35224
  return agent.pendingWake();
35131
35225
  }
35226
+ function clearErrorRetry(resetDelay = false) {
35227
+ if (errorRetryTimer) clearTimeout(errorRetryTimer);
35228
+ errorRetryTimer = void 0;
35229
+ if (resetDelay) errorRetryMs = ERROR_RETRY_INITIAL_MS;
35230
+ }
35231
+ function scheduleErrorRetry() {
35232
+ if (errorRetryTimer || pendingForWake() === 0) return;
35233
+ const delay = errorRetryMs;
35234
+ errorRetryMs = Math.min(errorRetryMs * 2, ERROR_RETRY_MAX_MS);
35235
+ errorRetryTimer = setTimeout(() => {
35236
+ errorRetryTimer = void 0;
35237
+ if (!busy && pendingForWake() > 0) void drive();
35238
+ }, delay);
35239
+ errorRetryTimer.unref?.();
35240
+ }
35132
35241
  function adoptSession(id, reason) {
35133
35242
  if (sessionID === id) return;
35134
35243
  const previous = sessionID;
@@ -35140,6 +35249,8 @@ var cotal = async () => {
35140
35249
  briefed = false;
35141
35250
  surfaced = [];
35142
35251
  awaitingTurnEnd = false;
35252
+ clearErrorRetry(true);
35253
+ transcript?.reset();
35143
35254
  if (previous) {
35144
35255
  log(`adopted opencode session ${id} after ${reason}; mesh identity unchanged`);
35145
35256
  if (pendingForWake() > 0) void drive();
@@ -35203,6 +35314,7 @@ ${ORIENTATION_BOOTSTRAP}`;
35203
35314
  surfaced = [];
35204
35315
  awaitingTurnEnd = false;
35205
35316
  log(`drive failed: ${e.message}`);
35317
+ scheduleErrorRetry();
35206
35318
  } finally {
35207
35319
  driving = false;
35208
35320
  }
@@ -35215,6 +35327,26 @@ ${ORIENTATION_BOOTSTRAP}`;
35215
35327
  if (n > 0) agent.drainInbox(n);
35216
35328
  surfaced = [];
35217
35329
  }
35330
+ function abandonSurfaced() {
35331
+ surfaced = [];
35332
+ }
35333
+ function injectIntoPrompt(output) {
35334
+ if (driving || awaitingTurnEnd) return;
35335
+ const items = agent.peekInbox();
35336
+ if (items.length === 0) return;
35337
+ const inj = formatInjection(items);
35338
+ if (!inj) return;
35339
+ const textPart = output.parts?.find(
35340
+ (p) => typeof p === "object" && p !== null && p.type === "text" && typeof p.text === "string"
35341
+ );
35342
+ if (!textPart) return;
35343
+ textPart.text = `${inj}
35344
+
35345
+ ${textPart.text}`;
35346
+ surfaced = items.map((i) => i.id);
35347
+ awaitingTurnEnd = true;
35348
+ busy = true;
35349
+ }
35218
35350
  function completeTurn() {
35219
35351
  if (!busy && !awaitingTurnEnd) return;
35220
35352
  busy = false;
@@ -35222,6 +35354,7 @@ ${ORIENTATION_BOOTSTRAP}`;
35222
35354
  awaitingTurnEnd = false;
35223
35355
  ackSurfaced();
35224
35356
  }
35357
+ clearErrorRetry(true);
35225
35358
  if (pendingForWake() > 0) void drive();
35226
35359
  }
35227
35360
  agent.on("incoming", (item) => {
@@ -35243,6 +35376,10 @@ ${ORIENTATION_BOOTSTRAP}`;
35243
35376
  };
35244
35377
  const hooks = {
35245
35378
  tool: buildCotalTools(agent, config2),
35379
+ "chat.message": async (input, output) => {
35380
+ if (!ours(input.sessionID)) return;
35381
+ injectIntoPrompt(output);
35382
+ },
35246
35383
  event: async ({ event }) => {
35247
35384
  if (event.type === "permission.asked") {
35248
35385
  const p = event.properties;
@@ -35253,11 +35390,21 @@ ${ORIENTATION_BOOTSTRAP}`;
35253
35390
  case "session.created":
35254
35391
  if (!event.properties.info.parentID) adoptSession(event.properties.info.id, "top-level session create");
35255
35392
  break;
35256
- case "session.idle":
35257
- if (!ours(event.properties.sessionID)) return;
35393
+ case "message.updated":
35394
+ if (transcript && ours(event.properties.info.sessionID)) transcript.record(event.properties.info);
35395
+ break;
35396
+ case "message.part.updated":
35397
+ if (transcript && ours(event.properties.part.sessionID)) transcript.observe(event.properties.part);
35398
+ break;
35399
+ case "session.idle": {
35400
+ const idleSession = event.properties.sessionID;
35401
+ if (!ours(idleSession)) return;
35258
35402
  await safeStatus("idle");
35403
+ if (transcript)
35404
+ await transcript.flush().catch((e) => log(`transcript mirror publish failed: ${e.message}`));
35259
35405
  completeTurn();
35260
35406
  break;
35407
+ }
35261
35408
  case "session.status": {
35262
35409
  if (!ours(event.properties.sessionID)) return;
35263
35410
  const s = event.properties.status;
@@ -35277,10 +35424,10 @@ ${ORIENTATION_BOOTSTRAP}`;
35277
35424
  busy = false;
35278
35425
  if (awaitingTurnEnd) {
35279
35426
  awaitingTurnEnd = false;
35280
- ackSurfaced();
35427
+ abandonSurfaced();
35281
35428
  }
35282
35429
  await safeStatus("idle");
35283
- if (pendingForWake() > 0) void drive();
35430
+ scheduleErrorRetry();
35284
35431
  break;
35285
35432
  case "session.deleted":
35286
35433
  if (!ours(event.properties.info.id)) return;
@@ -35299,6 +35446,7 @@ ${ORIENTATION_BOOTSTRAP}`;
35299
35446
  } catch {
35300
35447
  }
35301
35448
  await safeStatus("offline");
35449
+ clearErrorRetry(true);
35302
35450
  await agent.stop();
35303
35451
  }
35304
35452
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,qBAAqB,CAAC;AAazD,eAAO,MAAM,KAAK,EAAE,MAwVnB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,qBAAqB,CAAC;AAgBzD,eAAO,MAAM,KAAK,EAAE,MAqanB,CAAC"}
package/dist/plugin.js CHANGED
@@ -10,17 +10,17 @@
10
10
  * • maps OpenCode bus events to presence (idle | working | waiting | offline);
11
11
  * • owns ONE session (created at boot) and drives it: it injects each inbox batch as a turn through
12
12
  * the authenticated OpenCode server HTTP API (the same server the TUI is attached to), acking ON
13
- * TURN COMPLETION (so a crash/error redelivers).
14
- * Delivery is **attention-aware** (open/dnd/focus) and never interrupts a running turn a
15
- * message that arrives mid-turn waits for the turn to end (matching Claude's no-interrupt
16
- * behavior), then drives.
13
+ * TURN COMPLETION (so a crash/error redelivers). Pending peer messages are also injected into
14
+ * the next native prompt creation when a human/API prompt starts in the attached session.
15
+ * Delivery is **attention-aware** (open/dnd/focus) and never interrupts a running turn.
17
16
  *
18
17
  * Identity comes from COTAL_* env (the plugin runs in the opencode process and inherits it).
19
18
  * No identity → inert, so an operator's own `opencode` never joins as a stray peer.
20
19
  */
21
20
  import { loadAgentFile } from "@cotal-ai/core";
22
- import { configFromEnv, hasIdentity, MeshAgent, startControlServer, formatInjection, fmtFrom, ORIENTATION_BOOTSTRAP, } from "@cotal-ai/connector-core";
21
+ import { configFromEnv, hasIdentity, MeshAgent, startControlServer, formatInjection, fmtFrom, ORIENTATION_BOOTSTRAP, transcriptChannel, } from "@cotal-ai/connector-core";
23
22
  import { buildCotalTools } from "./tools.js";
23
+ import { createTranscriptMirror } from "./transcript.js";
24
24
  function log(msg) {
25
25
  process.stderr.write(`[cotal-connector] ${msg}\n`);
26
26
  }
@@ -29,6 +29,8 @@ function log(msg) {
29
29
  * call wires up the agent, and every call returns the *same* hooks (the same tools, bound to that
30
30
  * one agent), whichever scope opencode ends up using. */
31
31
  const guard = globalThis;
32
+ const ERROR_RETRY_INITIAL_MS = 1_000;
33
+ const ERROR_RETRY_MAX_MS = 30_000;
32
34
  export const cotal = async () => {
33
35
  // No identity → a plain `opencode`, not a launcher-spawned agent. Stay inert.
34
36
  if (!hasIdentity()) {
@@ -94,6 +96,16 @@ export const cotal = async () => {
94
96
  let briefed = false; // the boot channel briefing is prepended once, on the first turn
95
97
  let surfaced = []; // ids surfaced into the current turn, acked on completion (by id, not count)
96
98
  let awaitingTurnEnd = false; // a turn is in flight → ignore a duplicate idle that isn't its end
99
+ let errorRetryTimer;
100
+ let errorRetryMs = ERROR_RETRY_INITIAL_MS;
101
+ // Transcript mirror → `tr-<name>`: opt-in via COTAL_TRANSCRIPT (the connector's buildLaunch / the
102
+ // manager set it for managed sessions; a personal opencode never mirrors). EVENT-DRIVEN — fed from
103
+ // the OpenCode event hook below (message.updated → assistant roles, message.part.updated → parts)
104
+ // and flushed at session.idle, so it never re-reads the whole session. The manager grants this agent
105
+ // pub rights on the same `tr-<name>` channel.
106
+ const transcript = /^(1|true|yes|on)$/i.test(process.env.COTAL_TRANSCRIPT ?? "")
107
+ ? createTranscriptMirror(agent, transcriptChannel(config.name))
108
+ : undefined;
97
109
  const safeStatus = async (status, activity) => {
98
110
  try {
99
111
  if (agent.connected)
@@ -143,6 +155,25 @@ export const cotal = async () => {
143
155
  function pendingForWake() {
144
156
  return agent.pendingWake(); // mode-and-channel-aware: excludes held dnd/quiet ambient
145
157
  }
158
+ function clearErrorRetry(resetDelay = false) {
159
+ if (errorRetryTimer)
160
+ clearTimeout(errorRetryTimer);
161
+ errorRetryTimer = undefined;
162
+ if (resetDelay)
163
+ errorRetryMs = ERROR_RETRY_INITIAL_MS;
164
+ }
165
+ function scheduleErrorRetry() {
166
+ if (errorRetryTimer || pendingForWake() === 0)
167
+ return;
168
+ const delay = errorRetryMs;
169
+ errorRetryMs = Math.min(errorRetryMs * 2, ERROR_RETRY_MAX_MS);
170
+ errorRetryTimer = setTimeout(() => {
171
+ errorRetryTimer = undefined;
172
+ if (!busy && pendingForWake() > 0)
173
+ void drive();
174
+ }, delay);
175
+ errorRetryTimer.unref?.();
176
+ }
146
177
  function adoptSession(id, reason) {
147
178
  if (sessionID === id)
148
179
  return;
@@ -155,6 +186,8 @@ export const cotal = async () => {
155
186
  briefed = false;
156
187
  surfaced = [];
157
188
  awaitingTurnEnd = false;
189
+ clearErrorRetry(true);
190
+ transcript?.reset(); // hard session boundary: drop any buffered parts so `/new` never mirrors them
158
191
  if (previous) {
159
192
  log(`adopted opencode session ${id} after ${reason}; mesh identity unchanged`);
160
193
  if (pendingForWake() > 0)
@@ -244,6 +277,7 @@ export const cotal = async () => {
244
277
  surfaced = [];
245
278
  awaitingTurnEnd = false;
246
279
  log(`drive failed: ${e.message}`);
280
+ scheduleErrorRetry();
247
281
  }
248
282
  finally {
249
283
  driving = false;
@@ -265,6 +299,30 @@ export const cotal = async () => {
265
299
  agent.drainInbox(n);
266
300
  surfaced = [];
267
301
  }
302
+ function abandonSurfaced() {
303
+ surfaced = [];
304
+ }
305
+ /** Native TUI / API prompts enter through OpenCode's chat.message hook before the model loop
306
+ * starts. This is the real "next turn" boundary for human-typed input: prepend the buffered Cotal
307
+ * batch to the user's text, then ack it when the resulting turn ends. We only mutate an existing
308
+ * text part so we don't need to manufacture OpenCode's internal part IDs. */
309
+ function injectIntoPrompt(output) {
310
+ if (driving || awaitingTurnEnd)
311
+ return; // drive() already injected, or one surfaced batch is open
312
+ const items = agent.peekInbox();
313
+ if (items.length === 0)
314
+ return;
315
+ const inj = formatInjection(items);
316
+ if (!inj)
317
+ return;
318
+ const textPart = output.parts?.find((p) => typeof p === "object" && p !== null && p.type === "text" && typeof p.text === "string");
319
+ if (!textPart)
320
+ return;
321
+ textPart.text = `${inj}\n\n${textPart.text}`;
322
+ surfaced = items.map((i) => i.id);
323
+ awaitingTurnEnd = true;
324
+ busy = true;
325
+ }
268
326
  /** A turn ended — ANY turn, ours (a driven inbox batch) OR the human's (typing into the attached
269
327
  * TUI, a `/reconnect`, etc). Clear `busy` regardless of who drove it: it's the COALESCE guard, so
270
328
  * a turn the connector didn't drive must still release it or every later push wedges behind a
@@ -280,6 +338,7 @@ export const cotal = async () => {
280
338
  awaitingTurnEnd = false;
281
339
  ackSurfaced(); // our driven turn: ack the surfaced batch (the sole ack site)
282
340
  }
341
+ clearErrorRetry(true);
283
342
  if (pendingForWake() > 0)
284
343
  void drive();
285
344
  }
@@ -290,7 +349,7 @@ export const cotal = async () => {
290
349
  // (ack-dropped at ingest); in `focus`, ambient/@mentions never reach "incoming" either.
291
350
  agent.on("incoming", (item) => {
292
351
  if (busy)
293
- return; // buffer; completeTurn drives at turn end
352
+ return; // buffer; chat.message or completeTurn drives at the next safe boundary
294
353
  const directed = item.kind !== "channel" || item.mentionsMe;
295
354
  const quiet = item.kind === "channel" && agent.channelMode(item.channel) === "quiet";
296
355
  if (directed || (!quiet && agent.attention === "open"))
@@ -316,6 +375,11 @@ export const cotal = async () => {
316
375
  };
317
376
  const hooks = {
318
377
  tool: buildCotalTools(agent, config),
378
+ "chat.message": async (input, output) => {
379
+ if (!ours(input.sessionID))
380
+ return;
381
+ injectIntoPrompt(output);
382
+ },
319
383
  event: async ({ event }) => {
320
384
  // The server emits `permission.asked` (the SDK's `permission.updated` type ships but never
321
385
  // fires — #11616), so match the real runtime name out of band. With permission:"allow" this
@@ -333,12 +397,29 @@ export const cotal = async () => {
333
397
  if (!event.properties.info.parentID)
334
398
  adoptSession(event.properties.info.id, "top-level session create");
335
399
  break;
336
- case "session.idle":
337
- if (!ours(event.properties.sessionID))
400
+ case "message.updated":
401
+ // Feed the transcript mirror: which messages on OUR session are assistant-authored.
402
+ if (transcript && ours(event.properties.info.sessionID))
403
+ transcript.record(event.properties.info);
404
+ break;
405
+ case "message.part.updated":
406
+ // Feed the transcript mirror: buffer each part as it streams (no per-turn refetch).
407
+ if (transcript && ours(event.properties.part.sessionID))
408
+ transcript.observe(event.properties.part);
409
+ break;
410
+ case "session.idle": {
411
+ const idleSession = event.properties.sessionID;
412
+ if (!ours(idleSession))
338
413
  return;
339
414
  await safeStatus("idle");
415
+ // Publish what the agent did this turn BEFORE driving the next batch, so a fresh turn's parts
416
+ // don't bleed in. The mirror is an observability side-channel: surface a publish failure but
417
+ // keep it OFF the turn loop, so a transport hiccup can never wedge the agent.
418
+ if (transcript)
419
+ await transcript.flush().catch((e) => log(`transcript mirror publish failed: ${e.message}`));
340
420
  completeTurn(); // the sole turn-end site: ack-on-surface + drive the next batch
341
421
  break;
422
+ }
342
423
  case "session.status": {
343
424
  if (!ours(event.properties.sessionID))
344
425
  return;
@@ -367,11 +448,10 @@ export const cotal = async () => {
367
448
  busy = false;
368
449
  if (awaitingTurnEnd) {
369
450
  awaitingTurnEnd = false;
370
- ackSurfaced(); // our turn surfaced the batch but failed ack (don't retry-loop) and move on
451
+ abandonSurfaced(); // failed turn: leave inbox unacked so the batch can retry on a later safe turn
371
452
  }
372
453
  await safeStatus("idle");
373
- if (pendingForWake() > 0)
374
- void drive();
454
+ scheduleErrorRetry();
375
455
  break;
376
456
  case "session.deleted":
377
457
  if (!ours(event.properties.info.id))
@@ -394,6 +474,7 @@ export const cotal = async () => {
394
474
  /* ignore */
395
475
  }
396
476
  await safeStatus("offline");
477
+ clearErrorRetry(true);
397
478
  await agent.stop();
398
479
  },
399
480
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -167,6 +167,17 @@ async function main() {
167
167
  await killServe(serve);
168
168
  process.exit(1);
169
169
  }
170
+ // Headless mode (COTAL_SERVE_HEADLESS=1): no foreground TUI. Hand the running server back to a
171
+ // non-terminal host (a web studio, an automated harness) via one machine-readable handshake line
172
+ // on stdout, then keep the serve alive. The host drives the session over HTTP (basic auth with the
173
+ // password below) and tails its event stream. `attached` stays false, so the `serve.on("exit")`
174
+ // handler above still exits us if the server dies; SIGTERM tears the server down for real.
175
+ if (process.env.COTAL_SERVE_HEADLESS?.trim() === "1") {
176
+ process.stdout.write(`[cotal-serve] ${JSON.stringify({ port: Number(port), session: id, password: SECRET })}\n`);
177
+ for (const sig of ["SIGINT", "SIGTERM"])
178
+ process.on(sig, () => void killServe(serve).then(() => process.exit(0)));
179
+ return;
180
+ }
170
181
  const tuiEnv = {
171
182
  ...process.env,
172
183
  OPENCODE_SERVER_USERNAME: USERNAME,
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * OpenCode transcript mirror — publishes the agent's OWN session output to the per-agent `tr-<name>`
3
+ * channel (assistant text in full, tool calls as one-liners, tool results truncated, reasoning
4
+ * omitted) so observers can read what an OpenCode agent ACTUALLY did — not only what it narrates on
5
+ * the work channels (the Claude connector has had this; OpenCode did not).
6
+ *
7
+ * EVENT-DRIVEN, not poll-based. The connector plugin already receives OpenCode's bus events
8
+ * in-process, so the mirror taps them (the same live stream the frontier-faces studio proxies to its
9
+ * browser, instead of re-reading the session each frame):
10
+ * • record(msg) ← message.updated: learn which messageIDs are ASSISTANT (mirror the agent's
11
+ * own output, never the injected user/peer turns).
12
+ * • observe(part) ← message.part.updated: condense the part NOW and buffer its lines (tool results
13
+ * truncated to a preview, assistant text kept in full;
14
+ * keyed by `${messageID}:${partID}`, replaced as it streams).
15
+ * • flush() ← session.idle: publish the turn's settled assistant lines, then clear.
16
+ * • reset() ← session adoption: drop the buffer at a hard boundary (`/new`).
17
+ * Cost is O(parts-this-turn) with NO HTTP — unlike a fetch-the-whole-session-every-idle poll, which is
18
+ * O(N²) and grows unboundedly over a long session. flush() snapshots the turn's lines and clears before
19
+ * it publishes, so a duplicate/late session.idle can't republish the batch.
20
+ *
21
+ * Each turn's lines are published ONCE to the channel; DURABLE delivery (persistence, replay to offline
22
+ * readers) is the channel's job — a durable `tr-<name>` is JetStream-backed — not a hand-rolled retry
23
+ * buffer here. This mirror is therefore best-effort at the publish boundary: the plugin runs flush() on
24
+ * the turn-end path and keeps a transport error OFF the turn loop by logging it (so a failed publish can
25
+ * never wedge the agent) — which means a publish that fails outright drops THAT turn's lines. That is
26
+ * the deliberate tradeoff for an opt-in observability side-channel; it is logged, never silent.
27
+ */
28
+ import type { MeshAgent } from "@cotal-ai/connector-core";
29
+ export interface TranscriptMirror {
30
+ /** message.updated → remember which messageIDs are assistant-authored (this turn). */
31
+ record(message: any): void;
32
+ /** message.part.updated → condense the part and buffer its lines (tool results truncated, assistant
33
+ * text kept full; keyed by `${messageID}:${partID}`, this turn). */
34
+ observe(part: any): void;
35
+ /** session.idle → publish the turn's settled assistant lines to the channel, then clear. */
36
+ flush(): Promise<void>;
37
+ /** session adoption (`/new`) → drop the buffer so a new session never inherits stale parts. */
38
+ reset(): void;
39
+ }
40
+ /** An event-driven mirror to `channel`, fed from the plugin's OpenCode event hook. */
41
+ export declare function createTranscriptMirror(agent: MeshAgent, channel: string): TranscriptMirror;
42
+ //# sourceMappingURL=transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA8D1D,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAC3B;yEACqE;IACrE,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,4FAA4F;IAC5F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+FAA+F;IAC/F,KAAK,IAAI,IAAI,CAAC;CACf;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAyC1F"}
@@ -0,0 +1,107 @@
1
+ const MAX_PREVIEW = 700; // tool results — enough to see what happened
2
+ const MAX_CHUNK = 6000; // chars per published message
3
+ function truncate(s, max) {
4
+ return s.length > max ? `${s.slice(0, max - 1)}…` : s;
5
+ }
6
+ /** A tool call's most salient input — mirrors the Claude connector's `salient`. */
7
+ function salient(input) {
8
+ const i = (input ?? {});
9
+ const v = i.command ?? i.filePath ?? i.file_path ?? i.path ?? i.url ?? i.pattern ?? i.description;
10
+ const s = typeof v === "string" ? v : Object.keys(i).length ? JSON.stringify(i) : "";
11
+ return s ? `: ${truncate(s, 300)}` : "";
12
+ }
13
+ /** One OpenCode message Part → the line(s) worth mirroring (empty for reasoning/file/step/etc). */
14
+ function condensePart(part) {
15
+ switch (part?.type) {
16
+ case "text":
17
+ if (part.synthetic || part.ignored || !part.text?.trim())
18
+ return [];
19
+ return [part.text.trim()]; // assistant text in FULL — chunkLines splits it across messages
20
+ case "tool": {
21
+ const head = `⚒ ${part.tool}${salient(part.state?.input)}`;
22
+ const status = part.state?.status;
23
+ if (status === "completed")
24
+ return [head, `→ ${truncate(String(part.state.output ?? ""), MAX_PREVIEW) || "(no output)"}`];
25
+ if (status === "error")
26
+ return [head, `→ ERROR: ${truncate(String(part.state.error ?? ""), MAX_PREVIEW)}`];
27
+ return [head];
28
+ }
29
+ default:
30
+ return []; // reasoning (thinking) omitted; file/step/snapshot/patch skipped
31
+ }
32
+ }
33
+ /** Batch lines into wire-sized chunks, splitting on line boundaries — and hard-splitting any single
34
+ * line longer than `max` (e.g. a long assistant answer/code block) so full text is preserved across
35
+ * messages rather than truncated. */
36
+ function chunkLines(lines, max) {
37
+ const chunks = [];
38
+ let cur = "";
39
+ for (const ln of lines) {
40
+ if (ln.length > max) {
41
+ if (cur) {
42
+ chunks.push(cur);
43
+ cur = "";
44
+ }
45
+ for (let i = 0; i < ln.length; i += max)
46
+ chunks.push(ln.slice(i, i + max));
47
+ continue;
48
+ }
49
+ if (cur && cur.length + ln.length + 1 > max) {
50
+ chunks.push(cur);
51
+ cur = "";
52
+ }
53
+ cur = cur ? `${cur}\n${ln}` : ln;
54
+ }
55
+ if (cur)
56
+ chunks.push(cur);
57
+ return chunks;
58
+ }
59
+ /** An event-driven mirror to `channel`, fed from the plugin's OpenCode event hook. */
60
+ export function createTranscriptMirror(agent, channel) {
61
+ // One turn's worth, cleared every flush. `condensed` keeps each part's already-condensed lines (not
62
+ // the raw part) — tool results truncated to a preview, assistant text kept in full — so noisy tool
63
+ // output never sits in memory at full size. Map insertion order preserves emission order (a later
64
+ // .updated replaces the value, keeping its slot).
65
+ const assistantMsgs = new Set(); // messageIDs whose role is "assistant"
66
+ // Keyed by `${messageID}:${partID}` (NOT partID alone): OpenCode part ids are message-scoped, so a
67
+ // multi-message turn could otherwise collide two parts on the same id and drop output.
68
+ const condensed = new Map();
69
+ const clear = () => {
70
+ condensed.clear();
71
+ assistantMsgs.clear();
72
+ };
73
+ return {
74
+ record(message) {
75
+ const info = message?.info ?? message;
76
+ if (info?.role === "assistant" && typeof info.id === "string")
77
+ assistantMsgs.add(info.id);
78
+ },
79
+ observe(part) {
80
+ if (!part?.id || typeof part.messageID !== "string")
81
+ return;
82
+ const key = `${part.messageID}:${part.id}`;
83
+ const lines = condensePart(part); // condense NOW (tool results truncated) → assistant text kept full
84
+ if (lines.length)
85
+ condensed.set(key, { messageID: part.messageID, lines });
86
+ else
87
+ condensed.delete(key); // a part that condensed to nothing (e.g. reasoning) holds no slot
88
+ },
89
+ async flush() {
90
+ // Collect this turn's assistant lines and clear — each turn's output is published ONCE, then
91
+ // forgotten. Snapshot-then-clear before the await means a duplicate/late session.idle finds an
92
+ // empty buffer and can't republish. Delivery reliability is the CHANNEL's job (NATS/JetStream),
93
+ // not a hand-rolled retry buffer here.
94
+ const lines = [];
95
+ for (const { messageID, lines: ls } of condensed.values())
96
+ if (assistantMsgs.has(messageID))
97
+ lines.push(...ls); // the agent's OWN output, not injected turns
98
+ clear();
99
+ for (const chunk of chunkLines(lines, MAX_CHUNK))
100
+ await agent.send(chunk, channel);
101
+ },
102
+ reset() {
103
+ clear();
104
+ },
105
+ };
106
+ }
107
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/connector-opencode",
3
3
  "description": "Cotal connector for OpenCode: a native in-process plugin that joins a session to the mesh.",
4
- "version": "0.8.2",
4
+ "version": "0.8.3",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -18,7 +18,7 @@
18
18
  }
19
19
  },
20
20
  "dependencies": {
21
- "@cotal-ai/connector-core": "0.8.2"
21
+ "@cotal-ai/connector-core": "0.8.3"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "@cotal-ai/core": ">=0.1.0",
@@ -30,7 +30,7 @@
30
30
  "@opencode-ai/sdk": "^1.16.2",
31
31
  "esbuild": "^0.28.0",
32
32
  "tsx": "^4.22.4",
33
- "@cotal-ai/core": "0.8.2"
33
+ "@cotal-ai/core": "0.8.3"
34
34
  },
35
35
  "files": [
36
36
  "dist"