foundr-companion 0.1.2 → 0.1.6
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/bridge/codex-app-server-adapter.d.mts +29 -0
- package/dist/bridge/codex-app-server-adapter.d.mts.map +1 -1
- package/dist/bridge/codex-app-server-adapter.mjs +45 -0
- package/dist/bridge/codex-app-server-adapter.mjs.map +1 -1
- package/dist/bridge/daemon.mjs +1 -1
- package/dist/bridge/fleet/codex-fleet-config.d.mts +26 -0
- package/dist/bridge/fleet/codex-fleet-config.d.mts.map +1 -0
- package/dist/bridge/fleet/codex-fleet-config.mjs +63 -0
- package/dist/bridge/fleet/codex-fleet-config.mjs.map +1 -0
- package/dist/bridge/fleet/fleet-cli.mjs +301 -0
- package/dist/bridge/fleet/fleet-client.d.mts +35 -0
- package/dist/bridge/fleet/fleet-client.d.mts.map +1 -0
- package/dist/bridge/fleet/fleet-client.mjs +62 -0
- package/dist/bridge/fleet/fleet-client.mjs.map +1 -0
- package/dist/bridge/fleet/fleet-logic.d.mts +39 -0
- package/dist/bridge/fleet/fleet-logic.d.mts.map +1 -0
- package/dist/bridge/fleet/fleet-logic.mjs +61 -0
- package/dist/bridge/fleet/fleet-logic.mjs.map +1 -0
- package/dist/bridge/fleet/supervisor.d.mts +12 -0
- package/dist/bridge/fleet/supervisor.d.mts.map +1 -0
- package/dist/bridge/fleet/supervisor.mjs +26 -0
- package/dist/bridge/fleet/supervisor.mjs.map +1 -0
- package/dist/bridge/fleet/worker.d.mts +13 -0
- package/dist/bridge/fleet/worker.d.mts.map +1 -0
- package/dist/bridge/fleet/worker.mjs +34 -0
- package/dist/bridge/fleet/worker.mjs.map +1 -0
- package/dist/bridge/fleet/worktree.d.mts +14 -0
- package/dist/bridge/fleet/worktree.d.mts.map +1 -0
- package/dist/bridge/fleet/worktree.mjs +32 -0
- package/dist/bridge/fleet/worktree.mjs.map +1 -0
- package/dist/bridge/foundr-codex-reply.d.mts.map +1 -1
- package/dist/bridge/foundr-codex-reply.mjs +4 -0
- package/dist/bridge/foundr-codex-reply.mjs.map +1 -1
- package/dist/bridge/grok-acp-reply.d.mts +7 -0
- package/dist/bridge/grok-acp-reply.d.mts.map +1 -0
- package/dist/bridge/grok-acp-reply.mjs +47 -0
- package/dist/bridge/grok-acp-reply.mjs.map +1 -0
- package/dist/cli-parse.d.ts +1 -1
- package/dist/cli-parse.d.ts.map +1 -1
- package/dist/cli-parse.js +3 -0
- package/dist/cli-parse.js.map +1 -1
- package/dist/cli.js +124 -0
- package/dist/cli.js.map +1 -1
- package/dist/grok-preflight.d.ts +39 -0
- package/dist/grok-preflight.d.ts.map +1 -0
- package/dist/grok-preflight.js +51 -0
- package/dist/grok-preflight.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,6 +4,16 @@ export function createCodexAppServerAdapter(options?: {}): {
|
|
|
4
4
|
reply(envelope: any, replyOptions?: {}): Promise<{
|
|
5
5
|
text: string;
|
|
6
6
|
}>;
|
|
7
|
+
steer(text: any): Promise<{
|
|
8
|
+
delivered: string;
|
|
9
|
+
reason?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
delivered: string;
|
|
12
|
+
reason: string;
|
|
13
|
+
}>;
|
|
14
|
+
interrupt(): Promise<{
|
|
15
|
+
interrupted: boolean;
|
|
16
|
+
}>;
|
|
7
17
|
close(): void;
|
|
8
18
|
};
|
|
9
19
|
export class CodexAppServerSession {
|
|
@@ -31,6 +41,25 @@ export class CodexAppServerSession {
|
|
|
31
41
|
text: string;
|
|
32
42
|
}>;
|
|
33
43
|
close(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Queue→next-action steering: inject `text` into the RUNNING turn via
|
|
46
|
+
* `turn/steer`. Codex delivers it at the next model boundary (after the
|
|
47
|
+
* current tool-call batch finishes) — the Claude-Code feel, no full-turn
|
|
48
|
+
* wait. Returns a result object; never throws. When no turn is active the
|
|
49
|
+
* caller should route the message as a normal new turn instead.
|
|
50
|
+
*/
|
|
51
|
+
steer(text: any): Promise<{
|
|
52
|
+
delivered: string;
|
|
53
|
+
reason?: undefined;
|
|
54
|
+
} | {
|
|
55
|
+
delivered: string;
|
|
56
|
+
reason: string;
|
|
57
|
+
}>;
|
|
58
|
+
/** Abort the in-flight turn now (`turn/interrupt`). Codex emits turn/completed
|
|
59
|
+
* afterward, which resolves the pending reply. No-op when no turn is active. */
|
|
60
|
+
interrupt(): Promise<{
|
|
61
|
+
interrupted: boolean;
|
|
62
|
+
}>;
|
|
34
63
|
#private;
|
|
35
64
|
}
|
|
36
65
|
import { spawn } from 'node:child_process';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-server-adapter.d.mts","sourceRoot":"","sources":["../../src/bridge/codex-app-server-adapter.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-app-server-adapter.d.mts","sourceRoot":"","sources":["../../src/bridge/codex-app-server-adapter.mjs"],"names":[],"mappings":"AAyaA;;;;;;;;;;;;;;;;;EAoBC;AA1VD;IACE;;;;;OAmBC;IAbC,uBAAc;IACd,sBAAsB;IACtB,yBAAwC;IACxC,sBAAkC;IAClC,YAAiB;IACjB,mBAAoB;IACpB,mBAAoB;IACpB,sBAAsB;IACtB,uBAAwB;IACxB,kBAAwB;IACxB,cAAoB;IACpB,iBAAuB;IACvB,gBAAmB;IAGrB,uBAYC;IAED;;OAIC;IAED,cAYC;IA4HD;;;;;;OAMG;IACH;;;;;;OAeC;IAED;qFACiF;IACjF;;OAKC;;CAmHF;sBAvaqB,oBAAoB"}
|
|
@@ -163,8 +163,14 @@ export class CodexAppServerSession {
|
|
|
163
163
|
)
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
+
// Run codex IN the worker's per-mission worktree. The fleet threads the
|
|
167
|
+
// worktree path through env.PWD (fleet-cli makeAdapter), but safeCodexEnv
|
|
168
|
+
// drops PWD from the spawned env — so without an explicit spawn `cwd` every
|
|
169
|
+
// worker would execute codex in the supervisor's cwd, breaking per-mission
|
|
170
|
+
// isolation. Mirror appServerThreadStartParams/ResumeParams' PWD || cwd().
|
|
166
171
|
this.child = this.spawnFn('codex', codexArgs(), {
|
|
167
172
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
173
|
+
cwd: this.env.PWD || process.cwd(),
|
|
168
174
|
env: safeCodexEnv(this.env),
|
|
169
175
|
})
|
|
170
176
|
this.lineBuffer = ''
|
|
@@ -269,6 +275,39 @@ export class CodexAppServerSession {
|
|
|
269
275
|
return done
|
|
270
276
|
}
|
|
271
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Queue→next-action steering: inject `text` into the RUNNING turn via
|
|
280
|
+
* `turn/steer`. Codex delivers it at the next model boundary (after the
|
|
281
|
+
* current tool-call batch finishes) — the Claude-Code feel, no full-turn
|
|
282
|
+
* wait. Returns a result object; never throws. When no turn is active the
|
|
283
|
+
* caller should route the message as a normal new turn instead.
|
|
284
|
+
*/
|
|
285
|
+
async steer(text) {
|
|
286
|
+
const turn = this.currentTurn
|
|
287
|
+
if (!turn || !turn.turnId) return { delivered: 'no_active_turn' }
|
|
288
|
+
try {
|
|
289
|
+
await this.#send('turn/steer', {
|
|
290
|
+
threadId: turn.threadId,
|
|
291
|
+
expectedTurnId: turn.turnId,
|
|
292
|
+
input: [{ type: 'text', text }],
|
|
293
|
+
})
|
|
294
|
+
return { delivered: 'steered' }
|
|
295
|
+
} catch (error) {
|
|
296
|
+
// review / manual-compaction turns reject steer — caller can fall back to
|
|
297
|
+
// a followup turn after turn/completed.
|
|
298
|
+
return { delivered: 'rejected', reason: error instanceof Error ? error.message : String(error) }
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/** Abort the in-flight turn now (`turn/interrupt`). Codex emits turn/completed
|
|
303
|
+
* afterward, which resolves the pending reply. No-op when no turn is active. */
|
|
304
|
+
async interrupt() {
|
|
305
|
+
const turn = this.currentTurn
|
|
306
|
+
if (!turn || !turn.turnId) return { interrupted: false }
|
|
307
|
+
await this.#send('turn/interrupt', { threadId: turn.threadId, turnId: turn.turnId })
|
|
308
|
+
return { interrupted: true }
|
|
309
|
+
}
|
|
310
|
+
|
|
272
311
|
#send(method, params) {
|
|
273
312
|
if (!this.child) {
|
|
274
313
|
return Promise.reject(new Error('Codex app-server is not running'))
|
|
@@ -394,6 +433,12 @@ export function createCodexAppServerAdapter(options = {}) {
|
|
|
394
433
|
reply(envelope, replyOptions = {}) {
|
|
395
434
|
return session.reply(envelope, replyOptions)
|
|
396
435
|
},
|
|
436
|
+
steer(text) {
|
|
437
|
+
return session.steer(text)
|
|
438
|
+
},
|
|
439
|
+
interrupt() {
|
|
440
|
+
return session.interrupt()
|
|
441
|
+
},
|
|
397
442
|
close() {
|
|
398
443
|
session.close()
|
|
399
444
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-server-adapter.mjs","sourceRoot":"","sources":["../../src/bridge/codex-app-server-adapter.mjs"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-app-server-adapter.mjs","sourceRoot":"","sources":["../../src/bridge/codex-app-server-adapter.mjs"],"names":[],"mappings":"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"}
|
package/dist/bridge/daemon.mjs
CHANGED
|
@@ -130,7 +130,7 @@ export function classifyLiveError(err) {
|
|
|
130
130
|
* server is bounded by `timeoutMs`. Always resolves (never rejects) so callers
|
|
131
131
|
* can report a definite state.
|
|
132
132
|
*/
|
|
133
|
-
export async function verifyCompanionPairing({ timeoutMs =
|
|
133
|
+
export async function verifyCompanionPairing({ timeoutMs = 15000 } = {}) {
|
|
134
134
|
const local = await readLocalPairing()
|
|
135
135
|
if (!local.paired) return { ...local, live: false }
|
|
136
136
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage a per-worker CODEX_HOME with a config.toml registering the Foundr MCP,
|
|
3
|
+
* so the worker `codex` can call fleet_mission_surface itself (decision D1,
|
|
4
|
+
* Model 1 — the worker self-surfaces). The worker codex must also be logged
|
|
5
|
+
* into the *same* ChatGPT subscription as the user, so we share the user's
|
|
6
|
+
* `auth.json` (the subscription login) into the per-worker CODEX_HOME — by
|
|
7
|
+
* symlink (falling back to copy) so every worker draws on the one subscription
|
|
8
|
+
* without a separate `codex login` per worktree. Returns the CODEX_HOME path to
|
|
9
|
+
* pass in the worker's env.
|
|
10
|
+
*
|
|
11
|
+
* NOTE: whether codex needs more than auth.json + config.toml in CODEX_HOME
|
|
12
|
+
* (e.g. additional cache/state files) is confirmed at the live shakedown — this
|
|
13
|
+
* is the first thing that run validates.
|
|
14
|
+
*
|
|
15
|
+
* NOTE: the exact OAuth/bearer key names for a Codex HTTP MCP server are
|
|
16
|
+
* confirmed live (Codex MCP docs); we thread the founder's mcp:work-missions
|
|
17
|
+
* bearer in via an Authorization header entry as a documented best-effort —
|
|
18
|
+
* this is also validated at the live shakedown.
|
|
19
|
+
*/
|
|
20
|
+
export function stageWorkerCodexConfig({ worktreePath, mcpUrl, bearer, sourceCodexHome, }: {
|
|
21
|
+
worktreePath: any;
|
|
22
|
+
mcpUrl: any;
|
|
23
|
+
bearer: any;
|
|
24
|
+
sourceCodexHome?: string | undefined;
|
|
25
|
+
}): Promise<string>;
|
|
26
|
+
//# sourceMappingURL=codex-fleet-config.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-fleet-config.d.mts","sourceRoot":"","sources":["../../../src/bridge/fleet/codex-fleet-config.mjs"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;oBAuCC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import fs from 'node:fs/promises'
|
|
2
|
+
import os from 'node:os'
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Stage a per-worker CODEX_HOME with a config.toml registering the Foundr MCP,
|
|
7
|
+
* so the worker `codex` can call fleet_mission_surface itself (decision D1,
|
|
8
|
+
* Model 1 — the worker self-surfaces). The worker codex must also be logged
|
|
9
|
+
* into the *same* ChatGPT subscription as the user, so we share the user's
|
|
10
|
+
* `auth.json` (the subscription login) into the per-worker CODEX_HOME — by
|
|
11
|
+
* symlink (falling back to copy) so every worker draws on the one subscription
|
|
12
|
+
* without a separate `codex login` per worktree. Returns the CODEX_HOME path to
|
|
13
|
+
* pass in the worker's env.
|
|
14
|
+
*
|
|
15
|
+
* NOTE: whether codex needs more than auth.json + config.toml in CODEX_HOME
|
|
16
|
+
* (e.g. additional cache/state files) is confirmed at the live shakedown — this
|
|
17
|
+
* is the first thing that run validates.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: the exact OAuth/bearer key names for a Codex HTTP MCP server are
|
|
20
|
+
* confirmed live (Codex MCP docs); we thread the founder's mcp:work-missions
|
|
21
|
+
* bearer in via an Authorization header entry as a documented best-effort —
|
|
22
|
+
* this is also validated at the live shakedown.
|
|
23
|
+
*/
|
|
24
|
+
export async function stageWorkerCodexConfig({
|
|
25
|
+
worktreePath,
|
|
26
|
+
mcpUrl,
|
|
27
|
+
bearer,
|
|
28
|
+
sourceCodexHome = process.env.CODEX_HOME || path.join(os.homedir(), '.codex'),
|
|
29
|
+
}) {
|
|
30
|
+
const codexHome = path.join(worktreePath, '.codex')
|
|
31
|
+
await fs.mkdir(codexHome, { recursive: true })
|
|
32
|
+
|
|
33
|
+
// Share the user's subscription login (auth.json) into this worker's
|
|
34
|
+
// CODEX_HOME so the worker codex is logged into the same ChatGPT account.
|
|
35
|
+
const sourceAuth = path.join(sourceCodexHome, 'auth.json')
|
|
36
|
+
const hasAuth = await fs
|
|
37
|
+
.stat(sourceAuth)
|
|
38
|
+
.then((s) => s.isFile())
|
|
39
|
+
.catch(() => false)
|
|
40
|
+
if (hasAuth) {
|
|
41
|
+
const destAuth = path.join(codexHome, 'auth.json')
|
|
42
|
+
await fs.rm(destAuth, { force: true }).catch(() => {})
|
|
43
|
+
try {
|
|
44
|
+
await fs.symlink(sourceAuth, destAuth)
|
|
45
|
+
} catch {
|
|
46
|
+
await fs.copyFile(sourceAuth, destAuth)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const toml = [
|
|
51
|
+
'# Staged by the Foundr fleet supervisor — registers the Foundr MCP so this',
|
|
52
|
+
'# worker can surface itself (fleet_mission_surface). Do not edit.',
|
|
53
|
+
'[mcp_servers.foundr]',
|
|
54
|
+
'type = "http"',
|
|
55
|
+
`url = "${mcpUrl}"`,
|
|
56
|
+
'',
|
|
57
|
+
'[mcp_servers.foundr.http_headers]',
|
|
58
|
+
`Authorization = "Bearer ${bearer}"`,
|
|
59
|
+
'',
|
|
60
|
+
].join('\n')
|
|
61
|
+
await fs.writeFile(path.join(codexHome, 'config.toml'), toml, { mode: 0o600 })
|
|
62
|
+
return codexHome
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-fleet-config.mjs","sourceRoot":"","sources":["../../../src/bridge/fleet/codex-fleet-config.mjs"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,YAAY,EACZ,MAAM,EACN,MAAM,EACN,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,GAC9E;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE9C,qEAAqE;IACrE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,IAAI,CAAC,UAAU,CAAC;SAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACrB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAClD,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACxC,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG;QACX,4EAA4E;QAC5E,mEAAmE;QACnE,sBAAsB;QACtB,eAAe;QACf,UAAU,MAAM,GAAG;QACnB,EAAE;QACF,mCAAmC;QACnC,2BAA2B,MAAM,GAAG;QACpC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9E,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
// `foundr fleet` wiring — the binding layer between the dependency-injected
|
|
2
|
+
// orchestration units (runSupervisor / runMissionWorker) and the REAL deps
|
|
3
|
+
// (the founder's MCP client, the git/worktree + codex-config building blocks,
|
|
4
|
+
// and the warm Codex app-server adapter). This is the seam that reconciles the
|
|
5
|
+
// two interface mismatches the units leave open by design:
|
|
6
|
+
// • supervisor calls heartbeatHost(host.id) with a bare string, but
|
|
7
|
+
// fleet-client.heartbeatHost expects (client, { hostId }) — bound below.
|
|
8
|
+
// • supervisor calls runWorker({ mission, hostId, seat }), but
|
|
9
|
+
// runMissionWorker expects ({ mission, hostId, mcpUrl, bearer, deps }) —
|
|
10
|
+
// bridged by the `runWorker` adapter below.
|
|
11
|
+
//
|
|
12
|
+
// N-concurrent-workers-on-ONE-subscription: `--workers N` builds N CONCURRENCY
|
|
13
|
+
// SLOTS (`buildSeats` → ['w1'..'wN']), NOT N identities. Every worker drives the
|
|
14
|
+
// SAME paired bearer/identity (the one createMcpClient + the OAuth provider
|
|
15
|
+
// hold) and shares the user's single ChatGPT subscription login (auth.json,
|
|
16
|
+
// staged per-worktree from `sourceCodexHome`). The slots only bound how many
|
|
17
|
+
// missions run at once.
|
|
18
|
+
|
|
19
|
+
import os from 'node:os'
|
|
20
|
+
import path from 'node:path'
|
|
21
|
+
import { loadBridgeAuth, saveBridgeAuth } from '../bridge-auth.mjs'
|
|
22
|
+
import { createMcpClient } from '../mcp-client.mjs'
|
|
23
|
+
import { FileBackedOAuthProvider } from '../oauth-provider.mjs'
|
|
24
|
+
import { createCodexAppServerAdapter } from '../codex-app-server-adapter.mjs'
|
|
25
|
+
import { DEFAULT_MCP_URL, resolveMcpUrl } from '../daemon.mjs'
|
|
26
|
+
import { BudgetGuard, buildSeats } from './fleet-logic.mjs'
|
|
27
|
+
import { ensureWorktree } from './worktree.mjs'
|
|
28
|
+
import { stageWorkerCodexConfig } from './codex-fleet-config.mjs'
|
|
29
|
+
import {
|
|
30
|
+
registerHost as registerHostTool,
|
|
31
|
+
heartbeatHost as heartbeatHostTool,
|
|
32
|
+
claimMission as claimMissionTool,
|
|
33
|
+
createMission as createMissionTool,
|
|
34
|
+
surfaceMission as surfaceMissionTool,
|
|
35
|
+
listMissions as listMissionsTool,
|
|
36
|
+
listHosts as listHostsTool,
|
|
37
|
+
} from './fleet-client.mjs'
|
|
38
|
+
import { runMissionWorker } from './worker.mjs'
|
|
39
|
+
import { runSupervisor } from './supervisor.mjs'
|
|
40
|
+
|
|
41
|
+
const DEFAULT_AGENT_NAME = 'Local Agent'
|
|
42
|
+
const DEFAULT_WORKERS = 4
|
|
43
|
+
const WORKER_MAX_STEPS = 200
|
|
44
|
+
const WORKER_MAX_MS = 30 * 60 * 1000
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The host NAME the supervisor registers with (`host_register` → host.id). The
|
|
48
|
+
* created-mission host_id MUST match this so `foundr fleet` (which registers the
|
|
49
|
+
* same name and polls planned missions for that host.id) picks the mission up.
|
|
50
|
+
* Single source of truth shared by both runFleet (the supervisor) and
|
|
51
|
+
* dispatchMission (`foundr dispatch`).
|
|
52
|
+
*/
|
|
53
|
+
export function defaultHostName(auth) {
|
|
54
|
+
return auth?.agentName || DEFAULT_AGENT_NAME
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Decide which host a dispatched mission binds to — the load-bearing
|
|
59
|
+
* reconciliation that keeps a mission claimable.
|
|
60
|
+
*
|
|
61
|
+
* A mission's host_id MUST point at a host some supervisor actually polls.
|
|
62
|
+
* `foundr fleet` always registers + polls under `defaultHostName(auth)`, so:
|
|
63
|
+
*
|
|
64
|
+
* • No `--host` (or blank) → register under the default name and bind there.
|
|
65
|
+
* This is the local-supervisor path: the mission lands on the same host
|
|
66
|
+
* this machine's `foundr fleet` claims from.
|
|
67
|
+
* • `--host` === the default name → same as above (register the local host).
|
|
68
|
+
* • `--host other` → it must already be a REGISTERED, ONLINE fleet host
|
|
69
|
+
* (some other machine's running supervisor). Bind to its id. If no such
|
|
70
|
+
* host exists — or it's offline — THROW, rather than silently registering a
|
|
71
|
+
* brand-new host nobody polls (the orphaned-mission bug). Fail loud so the
|
|
72
|
+
* user fixes the target instead of dispatching into the void.
|
|
73
|
+
*
|
|
74
|
+
* Returns `{ kind: 'register', name }` (caller registers + binds) or
|
|
75
|
+
* `{ kind: 'bind', hostId }` (caller binds to the resolved id). Pure — no I/O.
|
|
76
|
+
*
|
|
77
|
+
* @param {object} a
|
|
78
|
+
* @param {string|undefined} a.hostName raw `--host` value (may be blank).
|
|
79
|
+
* @param {string} a.defaultName defaultHostName(auth) — the supervisor's name.
|
|
80
|
+
* @param {Array<{id:string,name:string,status?:string}>} a.hosts fleet_host_list rows.
|
|
81
|
+
*/
|
|
82
|
+
export function resolveDispatchHost({ hostName, defaultName, hosts = [] } = {}) {
|
|
83
|
+
const requested = (hostName ?? '').trim()
|
|
84
|
+
// No override, or pointing at our own supervisor name → register the local host.
|
|
85
|
+
if (!requested || requested === defaultName) {
|
|
86
|
+
return { kind: 'register', name: defaultName }
|
|
87
|
+
}
|
|
88
|
+
// Explicit foreign --host: it has to be a real, online host some supervisor
|
|
89
|
+
// is polling, otherwise the mission would never be claimed.
|
|
90
|
+
const match = hosts.find((h) => h?.name === requested)
|
|
91
|
+
if (!match) {
|
|
92
|
+
throw new Error(
|
|
93
|
+
`No online fleet host named "${requested}". Run \`foundr fleet\` on that ` +
|
|
94
|
+
`machine first (it registers + polls under its agent name), or omit ` +
|
|
95
|
+
`--host to dispatch to this machine.`,
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
if (match.status && match.status !== 'online') {
|
|
99
|
+
throw new Error(
|
|
100
|
+
`Fleet host "${requested}" is ${match.status} — nothing would claim the ` +
|
|
101
|
+
`mission. Start \`foundr fleet\` on that machine, or omit --host.`,
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
return { kind: 'bind', hostId: match.id }
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Wire the real deps and run the fleet supervisor in the foreground until
|
|
109
|
+
* Ctrl-C (SIGINT/SIGTERM). Mirrors startCompanionDaemon's auth setup: load the
|
|
110
|
+
* persisted founder pairing, build an OAuth-backed MCP client (token refresh is
|
|
111
|
+
* transparent), then thread the live bearer into each worker's staged Foundr
|
|
112
|
+
* MCP config so the worker codex can self-surface (Model 1).
|
|
113
|
+
*
|
|
114
|
+
* `workers` is the number of concurrency slots (default 4). All slots share the
|
|
115
|
+
* one paired identity + ChatGPT subscription.
|
|
116
|
+
*/
|
|
117
|
+
export async function runFleet({ log = console.error, signal, workers = DEFAULT_WORKERS } = {}) {
|
|
118
|
+
const auth = await loadBridgeAuth().catch(() => null)
|
|
119
|
+
if (!auth?.agent?.id) {
|
|
120
|
+
throw new Error('Not paired. Run: foundr login')
|
|
121
|
+
}
|
|
122
|
+
const mcpUrl = resolveMcpUrl(auth.mcpUrl || process.env.FOUNDR_URL || DEFAULT_MCP_URL)
|
|
123
|
+
const agentName = defaultHostName(auth)
|
|
124
|
+
|
|
125
|
+
const provider = new FileBackedOAuthProvider({
|
|
126
|
+
mcpUrl,
|
|
127
|
+
agentName,
|
|
128
|
+
auth,
|
|
129
|
+
onChange: async (nextAuth) => {
|
|
130
|
+
await saveBridgeAuth({
|
|
131
|
+
...nextAuth,
|
|
132
|
+
mcpUrl,
|
|
133
|
+
agentName,
|
|
134
|
+
agent: auth.agent,
|
|
135
|
+
updatedAt: new Date().toISOString(),
|
|
136
|
+
})
|
|
137
|
+
},
|
|
138
|
+
onRedirect: () => log('Foundr re-authorization required. Run: foundr login'),
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
// Ctrl-C → abort the supervisor loop (in-flight workers settle on their own).
|
|
142
|
+
const ac = new AbortController()
|
|
143
|
+
const stop = () => ac.abort()
|
|
144
|
+
signal?.addEventListener?.('abort', stop, { once: true })
|
|
145
|
+
process.once('SIGINT', stop)
|
|
146
|
+
process.once('SIGTERM', stop)
|
|
147
|
+
|
|
148
|
+
let mcp
|
|
149
|
+
try {
|
|
150
|
+
mcp = await createMcpClient({ mcpUrl, authProvider: provider })
|
|
151
|
+
// After connect the provider holds a fresh (refreshed) token — this is the
|
|
152
|
+
// bearer each worker stages into its CODEX_HOME so its codex can call
|
|
153
|
+
// fleet_mission_surface itself.
|
|
154
|
+
const bearer = provider.auth?.tokens?.access_token ?? auth.tokens?.access_token ?? ''
|
|
155
|
+
|
|
156
|
+
// Bind the fleet-client tool wrappers to the live MCP client, adapting the
|
|
157
|
+
// supervisor's call shapes (bare hostId string; {mission, hostId, seat}).
|
|
158
|
+
const registerHost = () =>
|
|
159
|
+
registerHostTool(mcp, { name: agentName, backend: 'codex' })
|
|
160
|
+
const heartbeatHost = (hostId) => heartbeatHostTool(mcp, { hostId })
|
|
161
|
+
const claimMission = (args) => claimMissionTool(mcp, args)
|
|
162
|
+
const surfaceMission = (args) => surfaceMissionTool(mcp, args)
|
|
163
|
+
|
|
164
|
+
// Shared-auth CODEX_HOME: the user's ONE ChatGPT subscription login lives
|
|
165
|
+
// here (auth.json). Every worker stages its per-worktree CODEX_HOME FROM
|
|
166
|
+
// this source, so all N concurrency slots draw on the single subscription.
|
|
167
|
+
const sourceCodexHome = process.env.CODEX_HOME || path.join(os.homedir(), '.codex')
|
|
168
|
+
|
|
169
|
+
// Thread the shared-auth source into every worker's staged config so the
|
|
170
|
+
// worker codex is logged into the same subscription.
|
|
171
|
+
const stageCodexConfig = (args) => stageWorkerCodexConfig({ ...args, sourceCodexHome })
|
|
172
|
+
|
|
173
|
+
const makeAdapter = ({ cwd, codexHome }) =>
|
|
174
|
+
createCodexAppServerAdapter({
|
|
175
|
+
env: {
|
|
176
|
+
...process.env,
|
|
177
|
+
PWD: cwd,
|
|
178
|
+
// The per-worktree CODEX_HOME staged off sourceCodexHome — carries the
|
|
179
|
+
// shared subscription auth.json + the Foundr MCP config.
|
|
180
|
+
CODEX_HOME: codexHome,
|
|
181
|
+
FOUNDR_CODEX_THREAD_MODE: 'bridge',
|
|
182
|
+
},
|
|
183
|
+
})
|
|
184
|
+
const makeBudget = () => new BudgetGuard({ maxSteps: WORKER_MAX_STEPS, maxMs: WORKER_MAX_MS })
|
|
185
|
+
|
|
186
|
+
// The supervisor hands us { mission, hostId, seat }; runMissionWorker needs
|
|
187
|
+
// { mission, hostId, mcpUrl, bearer, deps }. This adapter is the bridge.
|
|
188
|
+
const runWorker = ({ mission, hostId }) =>
|
|
189
|
+
runMissionWorker({
|
|
190
|
+
mission,
|
|
191
|
+
hostId,
|
|
192
|
+
mcpUrl,
|
|
193
|
+
bearer,
|
|
194
|
+
deps: {
|
|
195
|
+
ensureWorktree,
|
|
196
|
+
stageWorkerCodexConfig: stageCodexConfig,
|
|
197
|
+
claimMission,
|
|
198
|
+
surfaceMission,
|
|
199
|
+
makeAdapter,
|
|
200
|
+
makeBudget,
|
|
201
|
+
},
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
// Register the host first to get its id, then poll the real planned-mission
|
|
205
|
+
// queue for this host via the fleet-client `listMissions` wrapper.
|
|
206
|
+
const host = await registerHost()
|
|
207
|
+
const pollMissions = async (hostId) =>
|
|
208
|
+
listMissionsTool(mcp, { hostId, statuses: ['planned'] })
|
|
209
|
+
|
|
210
|
+
// N concurrency slots on ONE subscription — slots only bound concurrency.
|
|
211
|
+
const seats = buildSeats(workers)
|
|
212
|
+
|
|
213
|
+
log(`Foundr fleet supervisor starting as ${auth.agent.name} — ${seats.length} worker slot(s)`)
|
|
214
|
+
log(`MCP: ${mcpUrl}`)
|
|
215
|
+
await runSupervisor({
|
|
216
|
+
registerHost: () => host,
|
|
217
|
+
heartbeatHost,
|
|
218
|
+
pollMissions,
|
|
219
|
+
runWorker,
|
|
220
|
+
seats,
|
|
221
|
+
signal: ac.signal,
|
|
222
|
+
})
|
|
223
|
+
} finally {
|
|
224
|
+
process.off?.('SIGINT', stop)
|
|
225
|
+
process.off?.('SIGTERM', stop)
|
|
226
|
+
await mcp?.close?.().catch(() => {})
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* One-shot: hand a single mission to the fleet (`foundr dispatch`). Mirrors
|
|
232
|
+
* runFleet's auth + MCP-client setup, then binds the mission to a host that a
|
|
233
|
+
* supervisor actually polls — see resolveDispatchHost:
|
|
234
|
+
* • default (no --host) → register THIS host under defaultHostName(auth), the
|
|
235
|
+
* same name `foundr fleet` registers + polls, so the local supervisor claims it.
|
|
236
|
+
* • --host other → resolve against the live fleet_host_list; bind only to a
|
|
237
|
+
* registered, ONLINE host. An unknown/offline name THROWS instead of
|
|
238
|
+
* registering an unpolled host (which would orphan the mission).
|
|
239
|
+
*
|
|
240
|
+
* An explicit `mcpUrl` (from `foundr dispatch --url …`) targets that origin
|
|
241
|
+
* authoritatively, overriding the paired origin — mirrors `foundr login --url`.
|
|
242
|
+
* Otherwise it falls back to the paired origin, then FOUNDR_URL, then default.
|
|
243
|
+
*
|
|
244
|
+
* Returns the created mission row. Throws "Not paired" when there is no stored
|
|
245
|
+
* pairing (caller should treat as a clean non-crash exit, like runFleet).
|
|
246
|
+
*/
|
|
247
|
+
export async function dispatchMission({ title, repo, branch, hostName, priority, mcpUrl: mcpUrlOverride, log = console.error } = {}) {
|
|
248
|
+
const auth = await loadBridgeAuth().catch(() => null)
|
|
249
|
+
if (!auth?.agent?.id) {
|
|
250
|
+
throw new Error('Not paired. Run: foundr login')
|
|
251
|
+
}
|
|
252
|
+
const mcpUrl = resolveMcpUrl(mcpUrlOverride || auth.mcpUrl || process.env.FOUNDR_URL || DEFAULT_MCP_URL)
|
|
253
|
+
const agentName = defaultHostName(auth)
|
|
254
|
+
|
|
255
|
+
const provider = new FileBackedOAuthProvider({
|
|
256
|
+
mcpUrl,
|
|
257
|
+
agentName,
|
|
258
|
+
auth,
|
|
259
|
+
onChange: async (nextAuth) => {
|
|
260
|
+
await saveBridgeAuth({
|
|
261
|
+
...nextAuth,
|
|
262
|
+
mcpUrl,
|
|
263
|
+
agentName,
|
|
264
|
+
agent: auth.agent,
|
|
265
|
+
updatedAt: new Date().toISOString(),
|
|
266
|
+
})
|
|
267
|
+
},
|
|
268
|
+
onRedirect: () => log('Foundr re-authorization required. Run: foundr login'),
|
|
269
|
+
})
|
|
270
|
+
|
|
271
|
+
let mcp
|
|
272
|
+
try {
|
|
273
|
+
mcp = await createMcpClient({ mcpUrl, authProvider: provider })
|
|
274
|
+
|
|
275
|
+
// Resolve the target host BEFORE binding the mission. For a foreign --host
|
|
276
|
+
// we need the live host list to validate it's registered + online; for the
|
|
277
|
+
// default path the list is unused. resolveDispatchHost throws loudly on an
|
|
278
|
+
// unknown/offline --host so we never create an unclaimable mission.
|
|
279
|
+
const needsHostList = Boolean((hostName ?? '').trim()) && hostName.trim() !== agentName
|
|
280
|
+
const hosts = needsHostList ? await listHostsTool(mcp) : []
|
|
281
|
+
const target = resolveDispatchHost({ hostName, defaultName: agentName, hosts })
|
|
282
|
+
|
|
283
|
+
const hostId =
|
|
284
|
+
target.kind === 'bind'
|
|
285
|
+
? target.hostId
|
|
286
|
+
: // Register this host to get its id (idempotent on name) — the mission's
|
|
287
|
+
// host_id is set to it so the local supervisor's queue includes it.
|
|
288
|
+
(await registerHostTool(mcp, { name: target.name, backend: 'codex' })).id
|
|
289
|
+
|
|
290
|
+
const mission = await createMissionTool(mcp, {
|
|
291
|
+
title,
|
|
292
|
+
repo,
|
|
293
|
+
worktreeBranch: branch,
|
|
294
|
+
hostId,
|
|
295
|
+
priority,
|
|
296
|
+
})
|
|
297
|
+
return mission
|
|
298
|
+
} finally {
|
|
299
|
+
await mcp?.close?.().catch(() => {})
|
|
300
|
+
}
|
|
301
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Thin wrappers over the Plan A work-missions MCP tools. `client.callTool` is
|
|
2
|
+
* the companion's MCP client (createMcpClient result), which calls a tool by
|
|
3
|
+
* name and returns its parsed JSON result. Each wrapper translates camelCase
|
|
4
|
+
* call sites into the snake_case tool args Plan A expects and unwraps the row. */
|
|
5
|
+
export function registerHost(client: any, { name, backend, subscriptionLabel }: {
|
|
6
|
+
name: any;
|
|
7
|
+
backend?: string | undefined;
|
|
8
|
+
subscriptionLabel?: string | undefined;
|
|
9
|
+
}): Promise<any>;
|
|
10
|
+
export function heartbeatHost(client: any, { hostId }: {
|
|
11
|
+
hostId: any;
|
|
12
|
+
}): Promise<any>;
|
|
13
|
+
export function claimMission(client: any, { missionId, hostId, repo, worktreeBranch, leaseSeconds }: {
|
|
14
|
+
missionId: any;
|
|
15
|
+
hostId: any;
|
|
16
|
+
repo: any;
|
|
17
|
+
worktreeBranch: any;
|
|
18
|
+
leaseSeconds: any;
|
|
19
|
+
}): Promise<any>;
|
|
20
|
+
export function createMission(client: any, { title, brief, repo, worktreeBranch, hostId, priority }: {
|
|
21
|
+
title: any;
|
|
22
|
+
brief: any;
|
|
23
|
+
repo: any;
|
|
24
|
+
worktreeBranch: any;
|
|
25
|
+
hostId: any;
|
|
26
|
+
priority: any;
|
|
27
|
+
}): Promise<any>;
|
|
28
|
+
export function surfaceMission(client: any, { missionId, state, payload }: {
|
|
29
|
+
missionId: any;
|
|
30
|
+
state: any;
|
|
31
|
+
payload?: {} | undefined;
|
|
32
|
+
}): Promise<any>;
|
|
33
|
+
export function listMissions(client: any, { hostId, statuses }?: {}): Promise<any>;
|
|
34
|
+
export function listHosts(client: any): Promise<any>;
|
|
35
|
+
//# sourceMappingURL=fleet-client.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-client.d.mts","sourceRoot":"","sources":["../../../src/bridge/fleet/fleet-client.mjs"],"names":[],"mappings":"AAAA;;;mFAGmF;AAEnF;;;;iBAOC;AAED;;iBAGC;AAED;;;;;;iBAUC;AAED;;;;;;;iBAaC;AAED;;;;iBAEC;AAED,mFAMC;AAED,qDAGC"}
|