@volter/supercode-teams 0.3.110 → 0.3.112
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/codex-startup.mjs +3 -2
- package/mail/relay.mjs +26 -8
- package/package.json +1 -1
package/codex-startup.mjs
CHANGED
|
@@ -137,8 +137,9 @@ export async function settleCodexHookReview(host, sessionId, { signal, deadlineM
|
|
|
137
137
|
* into one composer entry. */
|
|
138
138
|
export const CODEX_WINDOWS_PASTE_CHARS = 8000;
|
|
139
139
|
|
|
140
|
-
/** The most written characters
|
|
141
|
-
|
|
140
|
+
/** The most written characters one Windows Codex paste is given, line breaks pulled in included: below the measured
|
|
141
|
+
* edge (8180 characters inside the 12 paste-marker characters arrived, 8200 did not), with room to spare. */
|
|
142
|
+
const CODEX_WINDOWS_PASTE_MAX = 8100;
|
|
142
143
|
|
|
143
144
|
/** One character as a Windows Codex reads it from its console. Codex drops some BMP characters that arrive as plain
|
|
144
145
|
* text through ConPTY (measured: `—`, `…`, `✓` vanish while `é`, `日`, and astral `🙂` arrive), so every BMP
|
package/mail/relay.mjs
CHANGED
|
@@ -31,6 +31,9 @@ const TURN_END_MS = 15_000;
|
|
|
31
31
|
* runtime's process group itself, so a relay stuck in a turn is closed through serve, never left running. */
|
|
32
32
|
const CLOSE_MS = 35_000;
|
|
33
33
|
|
|
34
|
+
/** How long a started relay's receipt is waited for, in the map (its watch) or through serve (terminal instructions). */
|
|
35
|
+
const RECEIPT_WAIT_MS = 15_000;
|
|
36
|
+
|
|
34
37
|
/**
|
|
35
38
|
* Whether harness serve's error for a relay's input leaves its outcome unknown: no answer (its bound passed, serve ended
|
|
36
39
|
* mid-call) or serve's own deadline on the runtime ("gave up after", harness_service.rs `within_control_deadline`).
|
|
@@ -280,10 +283,18 @@ export class Relays {
|
|
|
280
283
|
}
|
|
281
284
|
// why it is not reused, said in the timing line: a relay that should have been warm and was not shows here
|
|
282
285
|
step(`runtime not reused (${stale ? 'it held a stale turn' : !runtime ? 'no live receipt' : !alive(this.#pid(spec, runtime)) ? 'its process ended' : !record.connection ? 'no connection' : 'endpoint moved'})`);
|
|
283
|
-
// closed through the owner's door even after its receipt went
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
286
|
+
// closed through the owner's door even after its receipt went. One whose receipt is gone (it ended) is only
|
|
287
|
+
// serve's record of it: let go without holding this send (yuerans, 2026-10-06: 2.3-18 s of every send under
|
|
288
|
+
// load); one still held is closed before its successor starts, as before
|
|
289
|
+
const close = this.serve('harness.v1.runtimes.close', { connection: record.connection, runtime_id: record.runtime_id }, CLOSE_MS);
|
|
290
|
+
if (runtime) {
|
|
291
|
+
try { await close; }
|
|
292
|
+
catch (error) { if (this.runtimeOf('claude-code', record.runtime_id)) throw new Error(`could not retire the old relay: ${error.message}`); }
|
|
293
|
+
step('old runtime closed (runtimes.close)');
|
|
294
|
+
} else {
|
|
295
|
+
close.catch(() => {});
|
|
296
|
+
step('old runtime let go (runtimes.close, not waited on)');
|
|
297
|
+
}
|
|
287
298
|
}
|
|
288
299
|
const key = spec.directory.split(/[\\/]/).pop();
|
|
289
300
|
const started = await this.#start(spec, {
|
|
@@ -308,12 +319,19 @@ export class Relays {
|
|
|
308
319
|
// one it does not hold yet is read by its own name (the receipt the runtime's terminal launch opens), never waited on
|
|
309
320
|
const known = this.runtimeOf('claude-code', runtimeId);
|
|
310
321
|
if (known) { step('its receipt held'); return { runtime: known, connection }; }
|
|
322
|
+
// its receipt, from whichever answers first: the map's watch (it learns the receipt file serve wrote before it
|
|
323
|
+
// answered the start, about a second later), or serve naming it (terminal instructions), each for at most
|
|
324
|
+
// RECEIPT_WAIT_MS. Serve alone, bounded at 5 s, refused every start on a loaded machine (yuerans, 2026-10-06:
|
|
325
|
+
// "the relay started but registered no live runtime").
|
|
311
326
|
let receiptId = null;
|
|
312
|
-
|
|
313
|
-
const launch =
|
|
327
|
+
this.serve('harness.v1.runtimes.terminal_instructions', { connection }, RECEIPT_WAIT_MS).then((answer) => {
|
|
328
|
+
const launch = answer?.launch;
|
|
314
329
|
receiptId = (Array.isArray(launch?.arguments) ? launch.arguments : []).find((arg) => typeof arg === 'string' && arg.startsWith('supercode-live://'))?.slice('supercode-live://'.length) ?? null;
|
|
315
|
-
}
|
|
316
|
-
|
|
330
|
+
}, () => { /* the map's watch still may */ });
|
|
331
|
+
let runtime = null;
|
|
332
|
+
for (const until = Date.now() + RECEIPT_WAIT_MS; !runtime && Date.now() < until; await new Promise((resolve) => setTimeout(resolve, 100))) {
|
|
333
|
+
runtime = this.runtimeOf('claude-code', runtimeId) ?? (receiptId ? this.runtimeNamed(receiptId) : null);
|
|
334
|
+
}
|
|
317
335
|
step('its receipt read');
|
|
318
336
|
if (!runtime) {
|
|
319
337
|
// a runtime no send can use is closed, never left running untracked
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/supercode-teams",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.112",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A machine daemon serving this machine's doors, and a local or remote Teams server for shared session discovery, OpenTelemetry ingestion and access to enrolled machines.",
|
|
6
6
|
"license": "MIT",
|