@cotal-ai/connector-opencode 0.3.2 → 0.5.0
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.
- package/README.md +11 -0
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +31 -2
- package/dist/extension.js.map +1 -1
- package/dist/plugin.bundle.js +1815 -353
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +68 -31
- package/dist/plugin.js.map +1 -1
- package/dist/serve.js +15 -11
- package/dist/serve.js.map +1 -1
- package/package.json +4 -3
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,qBAAqB,CAAC;AAazD,eAAO,MAAM,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,qBAAqB,CAAC;AAazD,eAAO,MAAM,KAAK,EAAE,MAqRnB,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -38,6 +38,7 @@ export const cotal = async ({ client }) => {
|
|
|
38
38
|
if (guard.__cotalOpencodeHooks)
|
|
39
39
|
return guard.__cotalOpencodeHooks; // one agent; reuse the hooks
|
|
40
40
|
const config = configFromEnv();
|
|
41
|
+
config.connector = "opencode"; // advertise the host harness on our AgentCard (meta.connector)
|
|
41
42
|
const agent = new MeshAgent(config);
|
|
42
43
|
agent.start(); // background connect with retry — never blocks startup
|
|
43
44
|
const def = process.env.COTAL_AGENT_FILE?.trim() ? loadAgentFile(process.env.COTAL_AGENT_FILE.trim()) : undefined;
|
|
@@ -59,11 +60,13 @@ export const cotal = async ({ client }) => {
|
|
|
59
60
|
const faceReminder = facePrompt
|
|
60
61
|
? "(avatar: begin your cotal_send/cotal_dm text with [[face:X]] — neutral|happy|sad|angry|surprised — and add another tag when your mood shifts)"
|
|
61
62
|
: undefined;
|
|
62
|
-
// This agent OWNS one session
|
|
63
|
-
//
|
|
64
|
-
//
|
|
63
|
+
// This agent OWNS one top-level OpenCode session at a time. The serve shim attaches the foreground
|
|
64
|
+
// TUI to the boot session; if the human runs `/new` in that same TUI/process, OpenCode creates a
|
|
65
|
+
// replacement top-level session. We adopt that as a context reset while keeping the same MeshAgent
|
|
66
|
+
// and creds alive. Used to match our turn-end (idle) vs subagent idles.
|
|
65
67
|
let sessionID;
|
|
66
|
-
let busy = false; // a turn is running
|
|
68
|
+
let busy = false; // a turn is running (ours via drive(), OR the human's via session.status) → don't
|
|
69
|
+
// prompt: opencode would COALESCE onto it (no reject). Released at EVERY turn end (completeTurn).
|
|
67
70
|
let driving = false; // re-entrancy guard around an in-flight promptAsync
|
|
68
71
|
let primed = false; // persona is prepended to the first turn's text once
|
|
69
72
|
let briefed = false; // the boot channel briefing is prepended once, on the first turn
|
|
@@ -78,6 +81,27 @@ export const cotal = async ({ client }) => {
|
|
|
78
81
|
/* presence is best-effort — never throw into opencode */
|
|
79
82
|
}
|
|
80
83
|
};
|
|
84
|
+
function pendingForWake() {
|
|
85
|
+
return agent.pendingWake(); // mode-and-channel-aware: excludes held dnd/quiet ambient
|
|
86
|
+
}
|
|
87
|
+
function adoptSession(id, reason) {
|
|
88
|
+
if (sessionID === id)
|
|
89
|
+
return;
|
|
90
|
+
const previous = sessionID;
|
|
91
|
+
sessionID = id;
|
|
92
|
+
agent.setContextId(id);
|
|
93
|
+
busy = false;
|
|
94
|
+
driving = false;
|
|
95
|
+
primed = false;
|
|
96
|
+
briefed = false;
|
|
97
|
+
surfaced = [];
|
|
98
|
+
awaitingTurnEnd = false;
|
|
99
|
+
if (previous) {
|
|
100
|
+
log(`adopted opencode session ${id} after ${reason}; mesh identity unchanged`);
|
|
101
|
+
if (pendingForWake() > 0)
|
|
102
|
+
void drive();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
81
105
|
/** Create the session this agent owns and announce its id to the serve shim, which attaches the
|
|
82
106
|
* foreground TUI to it. The handshake line on stderr (`[cotal-session] <id>`) is how the shim
|
|
83
107
|
* learns *which* session to open — by exact id, so a stale same-titled session from a prior run
|
|
@@ -85,9 +109,11 @@ export const cotal = async ({ client }) => {
|
|
|
85
109
|
const sessionReady = (async () => {
|
|
86
110
|
try {
|
|
87
111
|
const res = await client.session.create({ body: { title: `cotal:${config.space}:${config.name}` } });
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
112
|
+
const id = res.data?.id;
|
|
113
|
+
if (id) {
|
|
114
|
+
adoptSession(id, "boot");
|
|
115
|
+
process.stderr.write(`[cotal-session] ${id}\n`);
|
|
116
|
+
}
|
|
91
117
|
else
|
|
92
118
|
log("session.create returned no id");
|
|
93
119
|
}
|
|
@@ -175,28 +201,35 @@ export const cotal = async ({ client }) => {
|
|
|
175
201
|
agent.drainInbox(n);
|
|
176
202
|
surfaced = [];
|
|
177
203
|
}
|
|
178
|
-
/** A turn ended
|
|
179
|
-
*
|
|
180
|
-
*
|
|
204
|
+
/** A turn ended — ANY turn, ours (a driven inbox batch) OR the human's (typing into the attached
|
|
205
|
+
* TUI, a `/reconnect`, etc). Clear `busy` regardless of who drove it: it's the COALESCE guard, so
|
|
206
|
+
* a turn the connector didn't drive must still release it or every later push wedges behind a
|
|
207
|
+
* finished turn. Ack only what WE surfaced (gated on awaitingTurnEnd — a human turn surfaced
|
|
208
|
+
* nothing), then flush the next buffered batch — mode-aware, so bare ambient (dnd/focus) doesn't
|
|
209
|
+
* self-wake (it rides the next directed/human turn). A truly stray idle (nothing was running and
|
|
210
|
+
* we drove nothing) is ignored, so it can't mis-ack or empty-drive. */
|
|
181
211
|
function completeTurn() {
|
|
182
|
-
if (!awaitingTurnEnd)
|
|
183
|
-
return;
|
|
184
|
-
awaitingTurnEnd = false;
|
|
212
|
+
if (!busy && !awaitingTurnEnd)
|
|
213
|
+
return; // stray/duplicate idle — no turn to close
|
|
185
214
|
busy = false;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
215
|
+
if (awaitingTurnEnd) {
|
|
216
|
+
awaitingTurnEnd = false;
|
|
217
|
+
ackSurfaced(); // our driven turn: ack the surfaced batch (the sole ack site)
|
|
218
|
+
}
|
|
219
|
+
if (pendingForWake() > 0)
|
|
189
220
|
void drive();
|
|
190
221
|
}
|
|
191
222
|
// Inbound mesh → drive (never interrupt a running turn — matches Claude). A directed message
|
|
192
223
|
// (DM / anycast / @mention) drives when idle; ambient channel chatter drives only in `open` while
|
|
193
|
-
// idle (dnd/focus hold it for the next turn)
|
|
194
|
-
// (
|
|
224
|
+
// idle (dnd/focus hold it for the next turn), and a per-channel `quiet` channel never ambient-drives
|
|
225
|
+
// (read on the agent's terms; a `quiet` @mention still drives). `muted` ambient never reaches here
|
|
226
|
+
// (ack-dropped at ingest); in `focus`, ambient/@mentions never reach "incoming" either.
|
|
195
227
|
agent.on("incoming", (item) => {
|
|
196
228
|
if (busy)
|
|
197
229
|
return; // buffer; completeTurn drives at turn end
|
|
198
230
|
const directed = item.kind !== "channel" || item.mentionsMe;
|
|
199
|
-
|
|
231
|
+
const quiet = item.kind === "channel" && agent.channelMode(item.channel) === "quiet";
|
|
232
|
+
if (directed || (!quiet && agent.attention === "open"))
|
|
200
233
|
void drive();
|
|
201
234
|
});
|
|
202
235
|
agent.on("mention-wake", (item) => {
|
|
@@ -208,13 +241,13 @@ export const cotal = async ({ client }) => {
|
|
|
208
241
|
if (!busy)
|
|
209
242
|
void drive();
|
|
210
243
|
});
|
|
211
|
-
/** Match an event's session against the one we drive. Adopt the first session id we see
|
|
212
|
-
*
|
|
244
|
+
/** Match an event's session against the one we drive. Adopt the first session id we see, then
|
|
245
|
+
* filter to it; later top-level `session.created` events adopt explicitly as reset-in-place. */
|
|
213
246
|
const ours = (id) => {
|
|
214
247
|
if (!id)
|
|
215
248
|
return !sessionID; // a session-less event counts as ours only before we've adopted one
|
|
216
249
|
if (!sessionID)
|
|
217
|
-
|
|
250
|
+
adoptSession(id, "first event");
|
|
218
251
|
return id === sessionID;
|
|
219
252
|
};
|
|
220
253
|
const hooks = {
|
|
@@ -231,9 +264,10 @@ export const cotal = async ({ client }) => {
|
|
|
231
264
|
}
|
|
232
265
|
switch (event.type) {
|
|
233
266
|
case "session.created":
|
|
234
|
-
// Adopt
|
|
267
|
+
// Adopt every top-level session created in this OpenCode process. That makes `/new` a
|
|
268
|
+
// Cotal-aware context reset: same mesh identity, new OpenCode context/session id.
|
|
235
269
|
if (!event.properties.info.parentID)
|
|
236
|
-
|
|
270
|
+
adoptSession(event.properties.info.id, "top-level session create");
|
|
237
271
|
break;
|
|
238
272
|
case "session.idle":
|
|
239
273
|
if (!ours(event.properties.sessionID))
|
|
@@ -260,17 +294,20 @@ export const cotal = async ({ client }) => {
|
|
|
260
294
|
}
|
|
261
295
|
case "session.error":
|
|
262
296
|
// session.error's sessionID is OPTIONAL; skip only a DIFFERENT session's error — a
|
|
263
|
-
// session-less one (id undefined) during
|
|
264
|
-
//
|
|
297
|
+
// session-less one (id undefined) during an in-flight turn must still close it, else
|
|
298
|
+
// `busy` stays stuck and every later push is buffered behind a turn that already failed.
|
|
265
299
|
if (event.properties.sessionID && !ours(event.properties.sessionID))
|
|
266
300
|
return;
|
|
267
|
-
if (!awaitingTurnEnd)
|
|
268
|
-
return; // no
|
|
269
|
-
awaitingTurnEnd = false;
|
|
301
|
+
if (!busy && !awaitingTurnEnd)
|
|
302
|
+
return; // no turn to fail — stray error
|
|
270
303
|
busy = false;
|
|
271
|
-
|
|
304
|
+
if (awaitingTurnEnd) {
|
|
305
|
+
awaitingTurnEnd = false;
|
|
306
|
+
ackSurfaced(); // our turn surfaced the batch but failed — ack (don't retry-loop) and move on
|
|
307
|
+
}
|
|
272
308
|
await safeStatus("idle");
|
|
273
|
-
|
|
309
|
+
if (pendingForWake() > 0)
|
|
310
|
+
void drive();
|
|
274
311
|
break;
|
|
275
312
|
case "session.deleted":
|
|
276
313
|
if (!ours(event.properties.info.id))
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,eAAe,EACf,OAAO,GAER,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;0DAG0D;AAC1D,MAAM,KAAK,GAAG,UAA8C,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAW,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAChD,8EAA8E;IAC9E,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACnB,GAAG,CAAC,6DAA6D,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC,6BAA6B;IAChG,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,uDAAuD;IAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,+FAA+F;IAC/F,4FAA4F;IAC5F,+FAA+F;IAC/F,4CAA4C;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACvD,CAAC,CAAC,6FAA6F;YAC7F,0FAA0F;YAC1F,+FAA+F;YAC/F,iFAAiF;YACjF,gGAAgG;YAChG,sFAAsF;QACxF,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IACrF,8FAA8F;IAC9F,sEAAsE;IACtE,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,+IAA+I;QACjJ,CAAC,CAAC,SAAS,CAAC;IAEd,iGAAiG;IACjG,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,eAAe,EACf,OAAO,GAER,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;0DAG0D;AAC1D,MAAM,KAAK,GAAG,UAA8C,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAW,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAChD,8EAA8E;IAC9E,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACnB,GAAG,CAAC,6DAA6D,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC,6BAA6B;IAChG,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,+DAA+D;IAC9F,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,uDAAuD;IAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,+FAA+F;IAC/F,4FAA4F;IAC5F,+FAA+F;IAC/F,4CAA4C;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACvD,CAAC,CAAC,6FAA6F;YAC7F,0FAA0F;YAC1F,+FAA+F;YAC/F,iFAAiF;YACjF,gGAAgG;YAChG,sFAAsF;QACxF,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IACrF,8FAA8F;IAC9F,sEAAsE;IACtE,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,+IAA+I;QACjJ,CAAC,CAAC,SAAS,CAAC;IAEd,mGAAmG;IACnG,iGAAiG;IACjG,mGAAmG;IACnG,wEAAwE;IACxE,IAAI,SAA6B,CAAC;IAClC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,kFAAkF;IACpG,kGAAkG;IAClG,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,oDAAoD;IACzE,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,qDAAqD;IACzE,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,iEAAiE;IACtF,IAAI,QAAQ,GAAa,EAAE,CAAC,CAAC,6EAA6E;IAC1G,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC,mEAAmE;IAEhG,MAAM,UAAU,GAAG,KAAK,EAAE,MAAsB,EAAE,QAAiB,EAAiB,EAAE;QACpF,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,SAAS;gBAAE,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,cAAc;QACrB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,0DAA0D;IACxF,CAAC;IAED,SAAS,YAAY,CAAC,EAAU,EAAE,MAAc;QAC9C,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO;QAC7B,MAAM,QAAQ,GAAG,SAAS,CAAC;QAC3B,SAAS,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,GAAG,KAAK,CAAC;QACb,OAAO,GAAG,KAAK,CAAC;QAChB,MAAM,GAAG,KAAK,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,QAAQ,GAAG,EAAE,CAAC;QACd,eAAe,GAAG,KAAK,CAAC;QACxB,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,4BAA4B,EAAE,UAAU,MAAM,2BAA2B,CAAC,CAAC;YAC/E,IAAI,cAAc,EAAE,GAAG,CAAC;gBAAE,KAAK,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;4EAGwE;IACxE,MAAM,YAAY,GAAgC,CAAC,KAAK,IAAI,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrG,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,IAAI,EAAE,EAAE,CAAC;gBACP,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;;gBAAM,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,EAAE,CAAC;IAEL,4EAA4E;IAC5E,KAAK,UAAU,aAAa;QAC1B,OAAO,SAAS,IAAI,CAAC,MAAM,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;+FAK2F;IAC3F,KAAK,UAAU,KAAK,CAAC,QAAiB;QACpC,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO;QAC5B,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,wDAAwD;YACzE,MAAM,KAAK,GAAqC,EAAE,CAAC;YACnD,IAAI,GAAG,GAAa,EAAE,CAAC;YACvB,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAC/B,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;gBACtC,IAAI,KAAK;oBAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,IAAI,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,GAA6C,EAAE,KAAK,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,IAAI,OAAO;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,sDAAsD;YACrG,IAAI,GAAG,IAAI,CAAC;YACZ,QAAQ,GAAG,GAAG,CAAC;YACf,oFAAoF;YACpF,oFAAoF;YACpF,eAAe,GAAG,IAAI,CAAC;YACvB,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,KAAK,CAAC;YACb,QAAQ,GAAG,EAAE,CAAC;YACd,eAAe,GAAG,KAAK,CAAC;YACxB,GAAG,CAAC,iBAAkB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;gFAI4E;IAC5E,SAAS,WAAW;QAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;4EAMwE;IACxE,SAAS,YAAY;QACnB,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,CAAC,0CAA0C;QACjF,IAAI,GAAG,KAAK,CAAC;QACb,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,GAAG,KAAK,CAAC;YACxB,WAAW,EAAE,CAAC,CAAC,8DAA8D;QAC/E,CAAC;QACD,IAAI,cAAc,EAAE,GAAG,CAAC;YAAE,KAAK,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,6FAA6F;IAC7F,kGAAkG;IAClG,qGAAqG;IACrG,mGAAmG;IACnG,wFAAwF;IACxF,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAe,EAAE,EAAE;QACvC,IAAI,IAAI;YAAE,OAAO,CAAC,0CAA0C;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;QACrF,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC;YAAE,KAAK,KAAK,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAe,EAAE,EAAE;QAC3C,8FAA8F;QAC9F,IAAI,CAAC,IAAI;YAAE,KAAK,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,GAAG,8BAA8B,CAAC,CAAC;IAC5H,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,IAAI;YAAE,KAAK,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH;qGACiG;IACjG,MAAM,IAAI,GAAG,CAAC,EAAW,EAAW,EAAE;QACpC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,SAAS,CAAC,CAAC,oEAAoE;QAChG,IAAI,CAAC,SAAS;YAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,EAAE,KAAK,SAAS,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAU;QACnB,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;QAEpC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACzB,2FAA2F;YAC3F,4FAA4F;YAC5F,0EAA0E;YAC1E,IAAK,KAAK,CAAC,IAAe,KAAK,kBAAkB,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,KAAK,CAAC,UAAoD,CAAC;gBACrE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;oBAAE,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,iBAAiB;oBACpB,sFAAsF;oBACtF,kFAAkF;oBAClF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;wBAAE,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBACxG,MAAM;gBACR,KAAK,cAAc;oBACjB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;wBAAE,OAAO;oBAC9C,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;oBACzB,YAAY,EAAE,CAAC,CAAC,gEAAgE;oBAChF,MAAM;gBACR,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;wBAAE,OAAO;oBAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;oBAClC,qFAAqF;oBACrF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACtB,IAAI,GAAG,IAAI,CAAC;wBACZ,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;yBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC7B,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC;yBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC9B,MAAM,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe;oBAClB,mFAAmF;oBACnF,qFAAqF;oBACrF,yFAAyF;oBACzF,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;wBAAE,OAAO;oBAC5E,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe;wBAAE,OAAO,CAAC,gCAAgC;oBACvE,IAAI,GAAG,KAAK,CAAC;oBACb,IAAI,eAAe,EAAE,CAAC;wBACpB,eAAe,GAAG,KAAK,CAAC;wBACxB,WAAW,EAAE,CAAC,CAAC,8EAA8E;oBAC/F,CAAC;oBACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;oBACzB,IAAI,cAAc,EAAE,GAAG,CAAC;wBAAE,KAAK,KAAK,EAAE,CAAC;oBACvC,MAAM;gBACR,KAAK,iBAAiB;oBACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAE,OAAO;oBAC5C,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC5B,MAAM;YACV,CAAC;QACH,CAAC;QAED,mFAAmF;QACnF,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO;YACnC,MAAM,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACnC,GAAG,CAAC,kCAAkC,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3H,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/dist/serve.js
CHANGED
|
@@ -22,6 +22,7 @@ import { createServer } from "node:net";
|
|
|
22
22
|
import { once } from "node:events";
|
|
23
23
|
import { randomBytes } from "node:crypto";
|
|
24
24
|
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
25
|
+
import { join } from "node:path";
|
|
25
26
|
const BIN = process.env.COTAL_OPENCODE_BIN?.trim() || "opencode";
|
|
26
27
|
/** Per-launch secret gating the spawned server's HTTP API (see SECURITY above). */
|
|
27
28
|
const SECRET = randomBytes(24).toString("hex");
|
|
@@ -52,14 +53,13 @@ async function killServe(serve) {
|
|
|
52
53
|
async function main() {
|
|
53
54
|
const port = process.env.COTAL_OPENCODE_PORT?.trim() || String(await freePort());
|
|
54
55
|
const url = `http://127.0.0.1:${port}`;
|
|
55
|
-
// Own
|
|
56
|
-
//
|
|
57
|
-
// session never came up" failure). Per-peer session state is the right scoping anyway;
|
|
58
|
-
// provider config/auth lives under XDG_CONFIG_HOME, untouched.
|
|
56
|
+
// Own SQLite DB per agent: opencode auth/config stay on the operator's normal HOME/XDG roots,
|
|
57
|
+
// while sessions avoid the global DB write lock that stalls concurrent `opencode serve`s.
|
|
59
58
|
const name = process.env.COTAL_NAME?.trim() || "agent";
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
const agentHome = join(process.cwd(), ".cotal", "opencode", name);
|
|
60
|
+
const dbPath = join(agentHome, "opencode.db");
|
|
61
|
+
// Two serves on one agent DB share the SQLite file and stall each other — refuse up front.
|
|
62
|
+
const pidFile = join(agentHome, "serve.pid");
|
|
63
63
|
if (existsSync(pidFile)) {
|
|
64
64
|
const pid = Number(readFileSync(pidFile, "utf8"));
|
|
65
65
|
let alive = false;
|
|
@@ -74,11 +74,11 @@ async function main() {
|
|
|
74
74
|
throw new Error(`agent "${name}" is already running (opencode serve pid ${pid}) — kill it first`);
|
|
75
75
|
rmSync(pidFile);
|
|
76
76
|
}
|
|
77
|
+
mkdirSync(agentHome, { recursive: true });
|
|
77
78
|
const serve = spawn(BIN, ["serve", "--hostname", "127.0.0.1", "--port", port], {
|
|
78
|
-
env: { ...process.env, OPENCODE_SERVER_PASSWORD: SECRET,
|
|
79
|
+
env: { ...process.env, OPENCODE_SERVER_PASSWORD: SECRET, OPENCODE_DB: dbPath },
|
|
79
80
|
stdio: ["ignore", "pipe", "pipe"],
|
|
80
81
|
});
|
|
81
|
-
mkdirSync(dataHome, { recursive: true });
|
|
82
82
|
writeFileSync(pidFile, String(serve.pid));
|
|
83
83
|
serve.on("exit", () => rmSync(pidFile, { force: true }));
|
|
84
84
|
// Scan the server's output for the plugin's session handshake; forward boot logs to our stderr
|
|
@@ -129,11 +129,15 @@ async function main() {
|
|
|
129
129
|
setTimeout(() => resolve(sessionId), 60_000);
|
|
130
130
|
});
|
|
131
131
|
if (!id) {
|
|
132
|
-
process.stderr.write(
|
|
132
|
+
process.stderr.write(`[cotal-connector] serve: agent session never came up (~60s) — aborting. Check the boot log above for plugin/mesh errors (OPENCODE_DB=${dbPath})\n`);
|
|
133
133
|
await killServe(serve);
|
|
134
134
|
process.exit(1);
|
|
135
135
|
}
|
|
136
|
-
const tuiEnv = {
|
|
136
|
+
const tuiEnv = {
|
|
137
|
+
...process.env,
|
|
138
|
+
OPENCODE_SERVER_PASSWORD: SECRET,
|
|
139
|
+
OPENCODE_DB: dbPath,
|
|
140
|
+
};
|
|
137
141
|
delete tuiEnv.OPENCODE_CONFIG_CONTENT; // a viewer, not a peer — must NOT load the plugin again
|
|
138
142
|
for (const k of Object.keys(tuiEnv))
|
|
139
143
|
if (k.startsWith("COTAL_"))
|
package/dist/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +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.5.0",
|
|
4
5
|
"license": "Apache-2.0",
|
|
5
6
|
"repository": {
|
|
6
7
|
"type": "git",
|
|
@@ -17,7 +18,7 @@
|
|
|
17
18
|
}
|
|
18
19
|
},
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@cotal-ai/connector-core": "0.
|
|
21
|
+
"@cotal-ai/connector-core": "0.5.0"
|
|
21
22
|
},
|
|
22
23
|
"peerDependencies": {
|
|
23
24
|
"@cotal-ai/core": ">=0.1.0",
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
"@opencode-ai/sdk": "^1.16.2",
|
|
30
31
|
"esbuild": "^0.28.0",
|
|
31
32
|
"tsx": "^4.22.4",
|
|
32
|
-
"@cotal-ai/core": "0.
|
|
33
|
+
"@cotal-ai/core": "0.5.0"
|
|
33
34
|
},
|
|
34
35
|
"files": [
|
|
35
36
|
"dist"
|