borgmcp 5.2.0 → 5.4.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/dist/agent-runtime.d.ts +3 -4
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.js +9 -5
- package/dist/agent-runtime.js.map +1 -1
- package/dist/agent-session-identity.d.ts +13 -0
- package/dist/agent-session-identity.d.ts.map +1 -0
- package/dist/agent-session-identity.js +106 -0
- package/dist/agent-session-identity.js.map +1 -0
- package/dist/assimilate-cmd.d.ts +1 -11
- package/dist/assimilate-cmd.d.ts.map +1 -1
- package/dist/assimilate-cmd.js +37 -48
- package/dist/assimilate-cmd.js.map +1 -1
- package/dist/assimilate-deps.d.ts.map +1 -1
- package/dist/assimilate-deps.js +1 -4
- package/dist/assimilate-deps.js.map +1 -1
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +36 -77
- package/dist/claude.js.map +1 -1
- package/dist/codex-app-server.d.ts +4 -6
- package/dist/codex-app-server.d.ts.map +1 -1
- package/dist/codex-app-server.js +4 -25
- package/dist/codex-app-server.js.map +1 -1
- package/dist/codex-app-wake.d.ts +8 -10
- package/dist/codex-app-wake.d.ts.map +1 -1
- package/dist/codex-app-wake.js +49 -66
- package/dist/codex-app-wake.js.map +1 -1
- package/dist/codex-launch.d.ts +15 -24
- package/dist/codex-launch.d.ts.map +1 -1
- package/dist/codex-launch.js +29 -55
- package/dist/codex-launch.js.map +1 -1
- package/dist/codex-remote.d.ts +15 -8
- package/dist/codex-remote.d.ts.map +1 -1
- package/dist/codex-remote.js +71 -70
- package/dist/codex-remote.js.map +1 -1
- package/dist/codex-wake-resolve.d.ts +12 -31
- package/dist/codex-wake-resolve.d.ts.map +1 -1
- package/dist/codex-wake-resolve.js +21 -38
- package/dist/codex-wake-resolve.js.map +1 -1
- package/dist/config-utils.js +2 -2
- package/dist/config-utils.js.map +1 -1
- package/dist/cubes.d.ts +0 -17
- package/dist/cubes.d.ts.map +1 -1
- package/dist/cubes.js +0 -81
- package/dist/cubes.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/lifecycle-log-guard.d.ts +6 -8
- package/dist/lifecycle-log-guard.d.ts.map +1 -1
- package/dist/lifecycle-log-guard.js +74 -22
- package/dist/lifecycle-log-guard.js.map +1 -1
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +4 -1
- package/dist/log-stream.js.map +1 -1
- package/dist/opencode-drone.d.ts +2 -0
- package/dist/opencode-drone.d.ts.map +1 -1
- package/dist/opencode-drone.js +16 -0
- package/dist/opencode-drone.js.map +1 -1
- package/dist/regen-format.js +1 -1
- package/dist/regen-format.js.map +1 -1
- package/dist/regen.js +11 -1
- package/dist/regen.js.map +1 -1
- package/docs/SESSION_IDENTITY.md +15 -0
- package/package.json +1 -1
- package/src/agent-runtime.ts +9 -5
- package/src/agent-session-identity.ts +98 -0
- package/src/assimilate-cmd.ts +35 -58
- package/src/assimilate-deps.ts +0 -4
- package/src/claude.ts +34 -81
- package/src/codex-app-server.ts +8 -25
- package/src/codex-app-wake.ts +46 -73
- package/src/codex-launch.ts +43 -76
- package/src/codex-remote.ts +90 -82
- package/src/codex-wake-resolve.ts +26 -47
- package/src/config-utils.ts +2 -2
- package/src/cubes.ts +2 -100
- package/src/index.ts +10 -5
- package/src/lifecycle-log-guard.ts +70 -26
- package/src/log-stream.ts +4 -1
- package/src/opencode-drone.ts +14 -0
- package/src/regen-format.ts +1 -1
- package/src/regen.ts +7 -1
package/dist/codex-launch.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { wakePathArming } from './regen-format.js';
|
|
2
2
|
import { OPENCODE_WAKE_PATH_GUIDANCE } from './opencode-wake-copy.js';
|
|
3
|
+
import { withCodexCwdArg } from './codex-remote.js';
|
|
4
|
+
import { codexBorgSessionConfigArgs } from './launch-gate.js';
|
|
5
|
+
import { codexAgentKindConfigArgs, codexRemoteWakeConfigArgs, codexStateRootConfigArgs, } from './agent-runtime.js';
|
|
3
6
|
/**
|
|
4
7
|
* The claude kickoff prompt's wake-path section (gh#929) — the SAME shared
|
|
5
8
|
* `wakePathArming` the SessionStart hook + /clear orientation use (one place,
|
|
@@ -26,12 +29,8 @@ export function buildAgentKickoffPrompt(options) {
|
|
|
26
29
|
// clause (Coordinator/Queen-only; belongs in role-text, not injected for
|
|
27
30
|
// ALL). KEPT: core call + MCP-disconnect recovery + the wake-path arming
|
|
28
31
|
// (claude via the shared monitorClause = buildKickoffWakePathClause; codex
|
|
29
|
-
// via
|
|
30
|
-
const
|
|
31
|
-
? `Wake target nonce: ${options.codexWakeNonce}. `
|
|
32
|
-
: '';
|
|
33
|
-
const codexWakePathClause = options.codexWakePathClause ??
|
|
34
|
-
`Codex Borg wakeups use remote-control when available; if no wake arrives, run borg_regen manually when returning to the session.`;
|
|
32
|
+
// via the Borg-owned remote socket clause) + the cli-specific branching.
|
|
33
|
+
const codexWakePathClause = 'Codex Borg wakeups use the Borg-owned remote-control socket for this session.';
|
|
35
34
|
const opencodeWakePathClause = OPENCODE_WAKE_PATH_GUIDANCE;
|
|
36
35
|
const wakeClause = options.cli === 'claude'
|
|
37
36
|
? options.monitorClause
|
|
@@ -39,7 +38,6 @@ export function buildAgentKickoffPrompt(options) {
|
|
|
39
38
|
? codexWakePathClause
|
|
40
39
|
: opencodeWakePathClause;
|
|
41
40
|
return (`Call borg_regen and follow the playbook in its response. ` +
|
|
42
|
-
codexNonceClause +
|
|
43
41
|
`Note: at session start the borg MCP server is still spinning up in ` +
|
|
44
42
|
`parallel — if a system reminder claims "MCP server disconnected" or ` +
|
|
45
43
|
`the borg tools are not yet registered, do NOT bail. Make one recovery attempt via ` +
|
|
@@ -49,55 +47,31 @@ export function buildAgentKickoffPrompt(options) {
|
|
|
49
47
|
`Never start, stop, restart, update, or recover the Borg server. ` +
|
|
50
48
|
wakeClause);
|
|
51
49
|
}
|
|
52
|
-
export function
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
return
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return value.slice('unix://'.length);
|
|
60
|
-
}
|
|
61
|
-
export function threadIdFromPassthroughArgs(args) {
|
|
62
|
-
if (args[0] === 'resume' && args[1] && !args[1].startsWith('-'))
|
|
63
|
-
return args[1];
|
|
64
|
-
const resumeIndex = args.indexOf('--resume');
|
|
65
|
-
if (resumeIndex >= 0 && args[resumeIndex + 1])
|
|
66
|
-
return args[resumeIndex + 1];
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
export async function recordCodexWakeTarget(options) {
|
|
70
|
-
try {
|
|
71
|
-
const explicitThreadId = options.passthroughArgs
|
|
72
|
-
? threadIdFromPassthroughArgs(options.passthroughArgs)
|
|
73
|
-
: null;
|
|
74
|
-
if (explicitThreadId) {
|
|
75
|
-
await options.deps.setCodexWakeTarget(options.cubeId, options.droneId, {
|
|
76
|
-
threadId: explicitThreadId,
|
|
77
|
-
socketPath: options.socketPath,
|
|
78
|
-
});
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const deadline = Date.now() + 15_000;
|
|
82
|
-
while (Date.now() < deadline) {
|
|
83
|
-
const threadId = await options.deps.findLoadedCodexThread({
|
|
84
|
-
socketPath: options.socketPath,
|
|
85
|
-
cwd: options.cwd,
|
|
86
|
-
previewIncludes: options.previewNeedle,
|
|
87
|
-
updatedAfter: options.launchedAtSeconds - 5,
|
|
88
|
-
});
|
|
89
|
-
if (threadId) {
|
|
90
|
-
await options.deps.setCodexWakeTarget(options.cubeId, options.droneId, {
|
|
91
|
-
threadId,
|
|
92
|
-
socketPath: options.socketPath,
|
|
93
|
-
});
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
97
|
-
}
|
|
50
|
+
export function buildCodexLaunchArgs(options) {
|
|
51
|
+
const passthroughArgs = options.passthroughArgs ?? [];
|
|
52
|
+
if (passthroughArgs.some((arg) => arg === '--remote' || arg.startsWith('--remote='))) {
|
|
53
|
+
return {
|
|
54
|
+
ready: false,
|
|
55
|
+
reason: 'Borg owns Codex remote control; remove the passthrough --remote option and retry.',
|
|
56
|
+
};
|
|
98
57
|
}
|
|
99
|
-
|
|
100
|
-
|
|
58
|
+
const remoteValue = `unix://${options.remote.server.socketPath}`;
|
|
59
|
+
if (options.remote.args.length !== 2 || options.remote.args[0] !== '--remote' || options.remote.args[1] !== remoteValue) {
|
|
60
|
+
return { ready: false, reason: 'The Borg-owned Codex remote socket is unavailable.' };
|
|
101
61
|
}
|
|
62
|
+
return {
|
|
63
|
+
ready: true,
|
|
64
|
+
args: [
|
|
65
|
+
...(options.accessArgs ?? []),
|
|
66
|
+
...(options.approvalArgs ?? []),
|
|
67
|
+
...codexBorgSessionConfigArgs(),
|
|
68
|
+
...codexAgentKindConfigArgs(),
|
|
69
|
+
...codexRemoteWakeConfigArgs(),
|
|
70
|
+
...codexStateRootConfigArgs(),
|
|
71
|
+
...(options.seatExpectationArgs ?? []),
|
|
72
|
+
...options.remote.args,
|
|
73
|
+
...withCodexCwdArg([...passthroughArgs, options.kickoff], options.cwd),
|
|
74
|
+
],
|
|
75
|
+
};
|
|
102
76
|
}
|
|
103
77
|
//# sourceMappingURL=codex-launch.js.map
|
package/dist/codex-launch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-launch.js","sourceRoot":"","sources":["../src/codex-launch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-launch.js","sourceRoot":"","sources":["../src/codex-launch.ts"],"names":[],"mappings":"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"}
|
package/dist/codex-remote.d.ts
CHANGED
|
@@ -17,13 +17,19 @@ export interface CodexAppServerHandle {
|
|
|
17
17
|
/** Kill the owned app-server + remove its socket/pidfile. Wire to TUI exit. */
|
|
18
18
|
cleanup: () => void;
|
|
19
19
|
}
|
|
20
|
-
export interface
|
|
20
|
+
export interface CodexRemoteReadyLaunch {
|
|
21
|
+
ready: true;
|
|
21
22
|
args: string[];
|
|
22
23
|
env: Record<string, string>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
server?: CodexAppServerHandle;
|
|
24
|
+
/** Borg owns this per-launch app-server and must clean it up on TUI exit. */
|
|
25
|
+
server: CodexAppServerHandle;
|
|
26
26
|
}
|
|
27
|
+
export interface CodexRemoteLaunchRefusal {
|
|
28
|
+
ready: false;
|
|
29
|
+
reason: string;
|
|
30
|
+
stderr: string;
|
|
31
|
+
}
|
|
32
|
+
export type CodexRemoteLaunch = CodexRemoteReadyLaunch | CodexRemoteLaunchRefusal;
|
|
27
33
|
export interface CodexChild {
|
|
28
34
|
pid: number | undefined;
|
|
29
35
|
kill: () => void;
|
|
@@ -48,9 +54,11 @@ export interface PrepareCodexRemoteDeps {
|
|
|
48
54
|
runtimeDir?: string;
|
|
49
55
|
/** Unique socket id generator (default 32-hex). Injected for deterministic tests. */
|
|
50
56
|
socketId?: () => string;
|
|
51
|
-
/** Readiness timeout (default
|
|
57
|
+
/** Readiness timeout (default 60000ms) + poll interval (default 250ms). */
|
|
52
58
|
readyTimeoutMs?: number;
|
|
53
59
|
pollIntervalMs?: number;
|
|
60
|
+
/** Wall clock used to enforce the readiness budget. */
|
|
61
|
+
now?: () => number;
|
|
54
62
|
/** Whether a pid is alive (default process.kill(pid, 0)). Injected for tests. */
|
|
55
63
|
isAlive?: (pid: number) => boolean;
|
|
56
64
|
}
|
|
@@ -102,9 +110,8 @@ export declare function checkCodexBridgeHealthy(socketPath: string | null, deps?
|
|
|
102
110
|
}): boolean | null;
|
|
103
111
|
/**
|
|
104
112
|
* Start a borg-owned per-launch Codex app-server, probe it for readiness, and
|
|
105
|
-
* return the `--remote` launch args + an owned handle
|
|
106
|
-
*
|
|
107
|
-
* TUI exit.
|
|
113
|
+
* return the `--remote` launch args + an owned handle, or a typed refusal after
|
|
114
|
+
* one retry. The caller MUST call `result.server.cleanup()` on TUI exit.
|
|
108
115
|
*/
|
|
109
116
|
export declare function prepareCodexRemoteLaunch(deps: PrepareCodexRemoteDeps): Promise<CodexRemoteLaunch>;
|
|
110
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-remote.d.ts","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"codex-remote.d.ts","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
|
package/dist/codex-remote.js
CHANGED
|
@@ -8,7 +8,7 @@ import { codexAppServerSocketConfigArgs } from './codex-wake-resolve.js';
|
|
|
8
8
|
import { BORG_AGENT_KIND_ENV, BORG_CODEX_REMOTE_WAKE_ENV, codexAgentKindConfigArgs, codexRemoteWakeConfigArgs, codexStateRootConfigArgs, } from './agent-runtime.js';
|
|
9
9
|
import { borgConfigRoot } from './private-root.js';
|
|
10
10
|
export const DEFAULT_CODEX_REMOTE_DIR = join(borgConfigRoot(), 'codex-remote');
|
|
11
|
-
const DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS =
|
|
11
|
+
const DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS = 60_000;
|
|
12
12
|
const MAX_CODEX_APP_SERVER_STDERR_CHARS = 16_384;
|
|
13
13
|
/**
|
|
14
14
|
* Keep app-server failure details useful without copying credentials or local
|
|
@@ -173,8 +173,8 @@ function pruneStaleSockets(runtimeDir, isAlive) {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
function
|
|
177
|
-
return {
|
|
176
|
+
function refuse(reason, stderr = '') {
|
|
177
|
+
return { ready: false, reason, stderr: sanitizeCodexDiagnostic(stderr).trim() };
|
|
178
178
|
}
|
|
179
179
|
function formatExitReason(diagnostics) {
|
|
180
180
|
if (diagnostics.error)
|
|
@@ -185,21 +185,17 @@ function formatExitReason(diagnostics) {
|
|
|
185
185
|
return `signal ${diagnostics.signal}`;
|
|
186
186
|
return 'unknown exit status';
|
|
187
187
|
}
|
|
188
|
-
function formatStderr(stderr) {
|
|
189
|
-
const trimmed = sanitizeCodexDiagnostic(stderr).trim();
|
|
190
|
-
return trimmed ? ` Stderr: ${trimmed}` : '';
|
|
191
|
-
}
|
|
192
188
|
/**
|
|
193
189
|
* Start a borg-owned per-launch Codex app-server, probe it for readiness, and
|
|
194
|
-
* return the `--remote` launch args + an owned handle
|
|
195
|
-
*
|
|
196
|
-
* TUI exit.
|
|
190
|
+
* return the `--remote` launch args + an owned handle, or a typed refusal after
|
|
191
|
+
* one retry. The caller MUST call `result.server.cleanup()` on TUI exit.
|
|
197
192
|
*/
|
|
198
193
|
export async function prepareCodexRemoteLaunch(deps) {
|
|
199
194
|
const runtimeDir = deps.runtimeDir ?? DEFAULT_CODEX_REMOTE_DIR;
|
|
200
195
|
const isAlive = deps.isAlive ?? defaultIsAlive;
|
|
201
196
|
const readyTimeoutMs = deps.readyTimeoutMs ?? DEFAULT_CODEX_REMOTE_READY_TIMEOUT_MS;
|
|
202
197
|
const pollIntervalMs = deps.pollIntervalMs ?? 250;
|
|
198
|
+
const now = deps.now ?? Date.now;
|
|
203
199
|
// 1. 0700 owned dir + prune crashed prior sockets (concurrent-safe via pid liveness).
|
|
204
200
|
try {
|
|
205
201
|
mkdirSync(runtimeDir, { recursive: true, mode: 0o700 });
|
|
@@ -207,80 +203,85 @@ export async function prepareCodexRemoteLaunch(deps) {
|
|
|
207
203
|
pruneStaleSockets(runtimeDir, isAlive);
|
|
208
204
|
}
|
|
209
205
|
catch (err) {
|
|
210
|
-
return
|
|
211
|
-
}
|
|
212
|
-
// 2. unique, non-predictable socket path inside the owned dir.
|
|
213
|
-
const id = (deps.socketId ?? (() => randomBytes(16).toString('hex')))();
|
|
214
|
-
const socketPath = join(runtimeDir, `${id}.sock`);
|
|
215
|
-
const pidPath = join(runtimeDir, `${id}.pid`);
|
|
216
|
-
// 3. spawn the long-lived app-server.
|
|
217
|
-
let child;
|
|
218
|
-
try {
|
|
219
|
-
child = deps.spawnAppServer(socketPath);
|
|
220
|
-
}
|
|
221
|
-
catch (err) {
|
|
222
|
-
safeRm(socketPath);
|
|
223
|
-
return failLoud(`Codex remote-wake disabled: could not start \`codex app-server\` (${sanitizeCodexDiagnostic(String(err?.message ?? err))}) — ` +
|
|
224
|
-
`confirm the Codex executable is installed and available on PATH. ` +
|
|
225
|
-
`Remote wake is unavailable for this session; run borg_regen manually to catch up.`);
|
|
206
|
+
return refuse(`could not prepare the Codex app-server runtime directory (${sanitizeCodexDiagnostic(String(err?.message ?? err))})`);
|
|
226
207
|
}
|
|
227
|
-
|
|
208
|
+
let lastRefusal = refuse('the Codex app-server did not become ready');
|
|
209
|
+
for (let launchAttempt = 0; launchAttempt < 2; launchAttempt += 1) {
|
|
210
|
+
// Each retry owns a fresh, non-predictable socket and pidfile.
|
|
211
|
+
const id = (deps.socketId ?? (() => randomBytes(16).toString('hex')))();
|
|
212
|
+
const socketPath = join(runtimeDir, `${id}.sock`);
|
|
213
|
+
const pidPath = join(runtimeDir, `${id}.pid`);
|
|
214
|
+
let child;
|
|
228
215
|
try {
|
|
229
|
-
|
|
216
|
+
child = deps.spawnAppServer(socketPath);
|
|
230
217
|
}
|
|
231
|
-
catch {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
try {
|
|
237
|
-
child.kill();
|
|
238
|
-
}
|
|
239
|
-
catch {
|
|
240
|
-
// best-effort
|
|
241
|
-
}
|
|
242
|
-
safeRm(socketPath);
|
|
243
|
-
safeRm(pidPath);
|
|
244
|
-
};
|
|
245
|
-
// 4. readiness via a real protocol round-trip — bounded attempts (no clock dep).
|
|
246
|
-
const attempts = Math.max(1, Math.ceil(readyTimeoutMs / pollIntervalMs));
|
|
247
|
-
let ready = false;
|
|
248
|
-
let exitDiagnostics;
|
|
249
|
-
for (let i = 0; i < attempts && !ready; i++) {
|
|
250
|
-
try {
|
|
251
|
-
ready = await deps.probeReady(socketPath);
|
|
218
|
+
catch (err) {
|
|
219
|
+
safeRm(socketPath);
|
|
220
|
+
safeRm(pidPath);
|
|
221
|
+
lastRefusal = refuse(`could not start \`codex app-server\` (${sanitizeCodexDiagnostic(String(err?.message ?? err))}); confirm the Codex executable is installed and available on PATH`);
|
|
222
|
+
continue;
|
|
252
223
|
}
|
|
253
|
-
|
|
254
|
-
|
|
224
|
+
if (child.pid != null) {
|
|
225
|
+
try {
|
|
226
|
+
writeFileSync(pidPath, String(child.pid));
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
// pidfile is only for stale-prune; launch still proceeds.
|
|
230
|
+
}
|
|
255
231
|
}
|
|
256
|
-
|
|
232
|
+
const cleanup = () => {
|
|
233
|
+
try {
|
|
234
|
+
child.kill();
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// best-effort
|
|
238
|
+
}
|
|
239
|
+
safeRm(socketPath);
|
|
240
|
+
safeRm(pidPath);
|
|
241
|
+
};
|
|
242
|
+
// Readiness is bounded by elapsed wall time, so slow protocol probes count
|
|
243
|
+
// against the same cold-start budget as the poll sleeps.
|
|
244
|
+
const startedAt = now();
|
|
245
|
+
let ready = false;
|
|
246
|
+
let exitDiagnostics;
|
|
247
|
+
for (;;) {
|
|
248
|
+
try {
|
|
249
|
+
ready = await deps.probeReady(socketPath);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
ready = false;
|
|
253
|
+
}
|
|
254
|
+
if (ready)
|
|
255
|
+
break;
|
|
257
256
|
const diagnostics = child.diagnostics?.();
|
|
258
257
|
if (diagnostics?.exited) {
|
|
259
258
|
exitDiagnostics = diagnostics;
|
|
260
259
|
break;
|
|
261
260
|
}
|
|
261
|
+
const remainingMs = readyTimeoutMs - (now() - startedAt);
|
|
262
|
+
if (remainingMs <= 0)
|
|
263
|
+
break;
|
|
264
|
+
await deps.sleep(Math.min(pollIntervalMs, remainingMs));
|
|
262
265
|
}
|
|
263
|
-
if (!ready && i < attempts - 1)
|
|
264
|
-
await deps.sleep(pollIntervalMs);
|
|
265
|
-
}
|
|
266
|
-
if (!ready) {
|
|
267
266
|
const diagnostics = exitDiagnostics ?? child.diagnostics?.();
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
267
|
+
if (!ready) {
|
|
268
|
+
cleanup();
|
|
269
|
+
if (diagnostics?.exited) {
|
|
270
|
+
lastRefusal = refuse(`\`codex app-server\` exited before becoming ready (${formatExitReason(diagnostics)})`, diagnostics.stderr);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
lastRefusal = refuse(`\`codex app-server\` remained running but did not become ready within ${readyTimeoutMs}ms`, diagnostics?.stderr ?? '');
|
|
274
|
+
}
|
|
275
|
+
continue;
|
|
273
276
|
}
|
|
274
|
-
return
|
|
275
|
-
|
|
276
|
-
|
|
277
|
+
return {
|
|
278
|
+
ready: true,
|
|
279
|
+
args: ['--remote', `unix://${socketPath}`],
|
|
280
|
+
env: { [BORG_CODEX_REMOTE_WAKE_ENV]: '1' },
|
|
281
|
+
server: { pid: child.pid, socketPath, cleanup },
|
|
282
|
+
};
|
|
277
283
|
}
|
|
278
|
-
|
|
279
|
-
return {
|
|
280
|
-
args: ['--remote', `unix://${socketPath}`],
|
|
281
|
-
env: { [BORG_CODEX_REMOTE_WAKE_ENV]: '1' },
|
|
282
|
-
server: { pid: child.pid, socketPath, cleanup },
|
|
283
|
-
};
|
|
284
|
+
return lastRefusal;
|
|
284
285
|
}
|
|
285
286
|
/**
|
|
286
287
|
* Production deps for prepareCodexRemoteLaunch — spawn the real `codex
|
package/dist/codex-remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-remote.js","sourceRoot":"","sources":["../src/codex-remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* gh#855 — pure helpers for FRESH codex wake-target re-resolution.
|
|
3
3
|
*
|
|
4
|
-
* Root cause of codex deaf-when-idle:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* authoritative about its OWN live app-server socket — the socket is injected
|
|
4
|
+
* Root cause of codex deaf-when-idle: stale thread selection could leave the
|
|
5
|
+
* drone permanently deaf. The waking borg-mcp child is authoritative about its
|
|
6
|
+
* OWN live app-server socket — the socket is injected
|
|
8
7
|
* into the child's pinned env at spawn (codex-remote.ts, via the #851 `-c
|
|
9
8
|
* mcp_servers.borg.env.X` channel) — and re-resolves the loaded thread FRESH on
|
|
10
9
|
* every wake (loadedThreadIds is a re-runnable RPC).
|
|
@@ -13,7 +12,7 @@
|
|
|
13
12
|
*/
|
|
14
13
|
/** Pinned-env var carrying THIS drone's live app-server socket (set at spawn). */
|
|
15
14
|
export declare const BORG_CODEX_APP_SERVER_SOCKET_ENV = "BORG_CODEX_APP_SERVER_SOCKET";
|
|
16
|
-
/** The live app-server socket for this borg-mcp child
|
|
15
|
+
/** The live app-server socket for this borg-mcp child. */
|
|
17
16
|
export declare function codexAppServerSocketFromEnv(env?: NodeJS.ProcessEnv): string | null;
|
|
18
17
|
/**
|
|
19
18
|
* The per-launch codex config override that pins THIS app-server's live socket
|
|
@@ -28,44 +27,26 @@ export interface CodexThreadInfo {
|
|
|
28
27
|
id: string;
|
|
29
28
|
cwd?: string;
|
|
30
29
|
updatedAt?: number;
|
|
30
|
+
source?: unknown;
|
|
31
|
+
ephemeral?: boolean;
|
|
32
|
+
threadSource?: string;
|
|
33
|
+
preview?: string;
|
|
34
|
+
turns?: unknown[];
|
|
31
35
|
}
|
|
36
|
+
export declare function isCodexSubagentSource(source: unknown): boolean;
|
|
32
37
|
/**
|
|
33
38
|
* Pick the loaded thread to wake on the live socket. Each borg-owned app-server
|
|
34
39
|
* is fresh-per-launch / single-session, so the common case is exactly one loaded
|
|
35
40
|
* thread. When more than one is loaded, prefer the thread whose cwd matches this
|
|
36
41
|
* drone's working directory (sibling worktrees have distinct cwds), then the
|
|
37
|
-
* newest by updatedAt
|
|
42
|
+
* newest by updatedAt, without preferring an empty thread over one with turns.
|
|
43
|
+
* System, ephemeral and subagent threads are never candidates. No loaded thread → null (no wake
|
|
38
44
|
* this cycle; the next wake retries, so a transient empty list never causes
|
|
39
45
|
* permanent deafness).
|
|
40
46
|
*/
|
|
41
47
|
export declare function pickFreshThread(threads: CodexThreadInfo[], opts: {
|
|
42
48
|
cwd: string;
|
|
43
49
|
}): string | null;
|
|
44
|
-
/**
|
|
45
|
-
* Pure prune: drop wake-target entries whose app-server socket is positively
|
|
46
|
-
* dead (liveness === false), so the file self-heals. Keeps alive (true) and
|
|
47
|
-
* indeterminate (null) entries — false-deaf-avoidance, mirroring
|
|
48
|
-
* checkCodexBridgeHealthy's tri-state. Returns the surviving map + whether
|
|
49
|
-
* anything changed (so the caller writes only on change).
|
|
50
|
-
*/
|
|
51
|
-
export declare function pruneDeadWakeTargets<T extends {
|
|
52
|
-
socketPath: string;
|
|
53
|
-
}>(targets: Record<string, T>, socketLiveness: (socketPath: string) => boolean | null): {
|
|
54
|
-
targets: Record<string, T>;
|
|
55
|
-
changed: boolean;
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Whether the freshly-resolved target differs from what's already recorded —
|
|
59
|
-
* so the self-healing cache write happens only on change (no file thrash on a
|
|
60
|
-
* busy cube re-resolving the same socket+thread every wake).
|
|
61
|
-
*/
|
|
62
|
-
export declare function wakeTargetChanged(existing: {
|
|
63
|
-
socketPath: string;
|
|
64
|
-
threadId: string;
|
|
65
|
-
} | null, fresh: {
|
|
66
|
-
socketPath: string;
|
|
67
|
-
threadId: string;
|
|
68
|
-
}): boolean;
|
|
69
50
|
/** Base backoff for the first retry of a dropped/deferred wake. */
|
|
70
51
|
export declare const WAKE_RETRY_BASE_MS = 5000;
|
|
71
52
|
/** Backoff ceiling — a wedged thread is retried at most this often. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-wake-resolve.d.ts","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"codex-wake-resolve.d.ts","sourceRoot":"","sources":["../src/codex-wake-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,kFAAkF;AAClF,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E,0DAA0D;AAC1D,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3E;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAG9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAgBhG;AAID,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AACjD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,CAIvE;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,QAAQ,SAAwB,GAC/B,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* gh#855 — pure helpers for FRESH codex wake-target re-resolution.
|
|
3
3
|
*
|
|
4
|
-
* Root cause of codex deaf-when-idle:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* authoritative about its OWN live app-server socket — the socket is injected
|
|
4
|
+
* Root cause of codex deaf-when-idle: stale thread selection could leave the
|
|
5
|
+
* drone permanently deaf. The waking borg-mcp child is authoritative about its
|
|
6
|
+
* OWN live app-server socket — the socket is injected
|
|
8
7
|
* into the child's pinned env at spawn (codex-remote.ts, via the #851 `-c
|
|
9
8
|
* mcp_servers.borg.env.X` channel) — and re-resolves the loaded thread FRESH on
|
|
10
9
|
* every wake (loadedThreadIds is a re-runnable RPC).
|
|
@@ -13,7 +12,7 @@
|
|
|
13
12
|
*/
|
|
14
13
|
/** Pinned-env var carrying THIS drone's live app-server socket (set at spawn). */
|
|
15
14
|
export const BORG_CODEX_APP_SERVER_SOCKET_ENV = 'BORG_CODEX_APP_SERVER_SOCKET';
|
|
16
|
-
/** The live app-server socket for this borg-mcp child
|
|
15
|
+
/** The live app-server socket for this borg-mcp child. */
|
|
17
16
|
export function codexAppServerSocketFromEnv(env = process.env) {
|
|
18
17
|
const v = env[BORG_CODEX_APP_SERVER_SOCKET_ENV];
|
|
19
18
|
return v && v.length > 0 ? v : null;
|
|
@@ -29,22 +28,33 @@ export function codexAppServerSocketFromEnv(env = process.env) {
|
|
|
29
28
|
export function codexAppServerSocketConfigArgs(socketPath) {
|
|
30
29
|
return ['-c', `mcp_servers.borg.env.${BORG_CODEX_APP_SERVER_SOCKET_ENV}="${socketPath}"`];
|
|
31
30
|
}
|
|
31
|
+
export function isCodexSubagentSource(source) {
|
|
32
|
+
if (!source || typeof source !== 'object' || Array.isArray(source))
|
|
33
|
+
return false;
|
|
34
|
+
return 'subagent' in source || 'subAgent' in source;
|
|
35
|
+
}
|
|
32
36
|
/**
|
|
33
37
|
* Pick the loaded thread to wake on the live socket. Each borg-owned app-server
|
|
34
38
|
* is fresh-per-launch / single-session, so the common case is exactly one loaded
|
|
35
39
|
* thread. When more than one is loaded, prefer the thread whose cwd matches this
|
|
36
40
|
* drone's working directory (sibling worktrees have distinct cwds), then the
|
|
37
|
-
* newest by updatedAt
|
|
41
|
+
* newest by updatedAt, without preferring an empty thread over one with turns.
|
|
42
|
+
* System, ephemeral and subagent threads are never candidates. No loaded thread → null (no wake
|
|
38
43
|
* this cycle; the next wake retries, so a transient empty list never causes
|
|
39
44
|
* permanent deafness).
|
|
40
45
|
*/
|
|
41
46
|
export function pickFreshThread(threads, opts) {
|
|
42
|
-
|
|
47
|
+
const rootThreads = threads.filter((thread) => !isCodexSubagentSource(thread.source) && thread.ephemeral !== true &&
|
|
48
|
+
(thread.threadSource === undefined || thread.threadSource === 'user'));
|
|
49
|
+
if (rootThreads.length === 0)
|
|
43
50
|
return null;
|
|
44
|
-
if (
|
|
45
|
-
return
|
|
46
|
-
const cwdMatches =
|
|
47
|
-
|
|
51
|
+
if (rootThreads.length === 1)
|
|
52
|
+
return rootThreads[0].id;
|
|
53
|
+
const cwdMatches = rootThreads.filter((t) => t.cwd === opts.cwd);
|
|
54
|
+
let pool = cwdMatches.length > 0 ? cwdMatches : rootThreads;
|
|
55
|
+
if (pool.some((thread) => (thread.turns?.length ?? 0) > 0)) {
|
|
56
|
+
pool = pool.filter((thread) => (thread.turns?.length ?? 0) > 0 || !!thread.preview);
|
|
57
|
+
}
|
|
48
58
|
let best = pool[0];
|
|
49
59
|
for (const t of pool) {
|
|
50
60
|
if ((t.updatedAt ?? 0) > (best.updatedAt ?? 0))
|
|
@@ -52,33 +62,6 @@ export function pickFreshThread(threads, opts) {
|
|
|
52
62
|
}
|
|
53
63
|
return best.id;
|
|
54
64
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Pure prune: drop wake-target entries whose app-server socket is positively
|
|
57
|
-
* dead (liveness === false), so the file self-heals. Keeps alive (true) and
|
|
58
|
-
* indeterminate (null) entries — false-deaf-avoidance, mirroring
|
|
59
|
-
* checkCodexBridgeHealthy's tri-state. Returns the surviving map + whether
|
|
60
|
-
* anything changed (so the caller writes only on change).
|
|
61
|
-
*/
|
|
62
|
-
export function pruneDeadWakeTargets(targets, socketLiveness) {
|
|
63
|
-
const out = {};
|
|
64
|
-
let changed = false;
|
|
65
|
-
for (const [key, t] of Object.entries(targets)) {
|
|
66
|
-
if (socketLiveness(t.socketPath) === false) {
|
|
67
|
-
changed = true;
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
out[key] = t;
|
|
71
|
-
}
|
|
72
|
-
return { targets: out, changed };
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Whether the freshly-resolved target differs from what's already recorded —
|
|
76
|
-
* so the self-healing cache write happens only on change (no file thrash on a
|
|
77
|
-
* busy cube re-resolving the same socket+thread every wake).
|
|
78
|
-
*/
|
|
79
|
-
export function wakeTargetChanged(existing, fresh) {
|
|
80
|
-
return (!existing || existing.socketPath !== fresh.socketPath || existing.threadId !== fresh.threadId);
|
|
81
|
-
}
|
|
82
65
|
// ─── gh#857 Phase 2: durable retry + heartbeat (pure helpers) ───────────────
|
|
83
66
|
/** Base backoff for the first retry of a dropped/deferred wake. */
|
|
84
67
|
export const WAKE_RETRY_BASE_MS = 5_000;
|