foundr-companion 0.1.3 → 0.1.7

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.
Files changed (47) hide show
  1. package/dist/bridge/codex-app-server-adapter.d.mts +29 -0
  2. package/dist/bridge/codex-app-server-adapter.d.mts.map +1 -1
  3. package/dist/bridge/codex-app-server-adapter.mjs +45 -0
  4. package/dist/bridge/codex-app-server-adapter.mjs.map +1 -1
  5. package/dist/bridge/fleet/codex-fleet-config.d.mts +26 -0
  6. package/dist/bridge/fleet/codex-fleet-config.d.mts.map +1 -0
  7. package/dist/bridge/fleet/codex-fleet-config.mjs +63 -0
  8. package/dist/bridge/fleet/codex-fleet-config.mjs.map +1 -0
  9. package/dist/bridge/fleet/fleet-cli.mjs +303 -0
  10. package/dist/bridge/fleet/fleet-client.d.mts +35 -0
  11. package/dist/bridge/fleet/fleet-client.d.mts.map +1 -0
  12. package/dist/bridge/fleet/fleet-client.mjs +62 -0
  13. package/dist/bridge/fleet/fleet-client.mjs.map +1 -0
  14. package/dist/bridge/fleet/fleet-logic.d.mts +39 -0
  15. package/dist/bridge/fleet/fleet-logic.d.mts.map +1 -0
  16. package/dist/bridge/fleet/fleet-logic.mjs +61 -0
  17. package/dist/bridge/fleet/fleet-logic.mjs.map +1 -0
  18. package/dist/bridge/fleet/supervisor.d.mts +13 -0
  19. package/dist/bridge/fleet/supervisor.d.mts.map +1 -0
  20. package/dist/bridge/fleet/supervisor.mjs +33 -0
  21. package/dist/bridge/fleet/supervisor.mjs.map +1 -0
  22. package/dist/bridge/fleet/worker.d.mts +14 -0
  23. package/dist/bridge/fleet/worker.d.mts.map +1 -0
  24. package/dist/bridge/fleet/worker.mjs +46 -0
  25. package/dist/bridge/fleet/worker.mjs.map +1 -0
  26. package/dist/bridge/fleet/worktree.d.mts +14 -0
  27. package/dist/bridge/fleet/worktree.d.mts.map +1 -0
  28. package/dist/bridge/fleet/worktree.mjs +32 -0
  29. package/dist/bridge/fleet/worktree.mjs.map +1 -0
  30. package/dist/bridge/foundr-codex-reply.d.mts.map +1 -1
  31. package/dist/bridge/foundr-codex-reply.mjs +4 -0
  32. package/dist/bridge/foundr-codex-reply.mjs.map +1 -1
  33. package/dist/bridge/grok-acp-reply.d.mts +7 -0
  34. package/dist/bridge/grok-acp-reply.d.mts.map +1 -0
  35. package/dist/bridge/grok-acp-reply.mjs +47 -0
  36. package/dist/bridge/grok-acp-reply.mjs.map +1 -0
  37. package/dist/cli-parse.d.ts +1 -1
  38. package/dist/cli-parse.d.ts.map +1 -1
  39. package/dist/cli-parse.js +3 -0
  40. package/dist/cli-parse.js.map +1 -1
  41. package/dist/cli.js +114 -0
  42. package/dist/cli.js.map +1 -1
  43. package/dist/grok-preflight.d.ts +39 -0
  44. package/dist/grok-preflight.d.ts.map +1 -0
  45. package/dist/grok-preflight.js +51 -0
  46. package/dist/grok-preflight.js.map +1 -0
  47. 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":"AAkYA;;;;;;;EAcC;AA7SD;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;;CAuOF;sBAhYqB,oBAAoB"}
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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"}
@@ -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,303 @@
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
+ log,
195
+ deps: {
196
+ ensureWorktree,
197
+ stageWorkerCodexConfig: stageCodexConfig,
198
+ claimMission,
199
+ surfaceMission,
200
+ makeAdapter,
201
+ makeBudget,
202
+ },
203
+ })
204
+
205
+ // Register the host first to get its id, then poll the real planned-mission
206
+ // queue for this host via the fleet-client `listMissions` wrapper.
207
+ const host = await registerHost()
208
+ const pollMissions = async (hostId) =>
209
+ listMissionsTool(mcp, { hostId, statuses: ['planned'] })
210
+
211
+ // N concurrency slots on ONE subscription — slots only bound concurrency.
212
+ const seats = buildSeats(workers)
213
+
214
+ log(`Foundr fleet supervisor starting as ${auth.agent.name} — ${seats.length} worker slot(s)`)
215
+ log(`MCP: ${mcpUrl}`)
216
+ await runSupervisor({
217
+ registerHost: () => host,
218
+ heartbeatHost,
219
+ pollMissions,
220
+ runWorker,
221
+ seats,
222
+ signal: ac.signal,
223
+ log,
224
+ })
225
+ } finally {
226
+ process.off?.('SIGINT', stop)
227
+ process.off?.('SIGTERM', stop)
228
+ await mcp?.close?.().catch(() => {})
229
+ }
230
+ }
231
+
232
+ /**
233
+ * One-shot: hand a single mission to the fleet (`foundr dispatch`). Mirrors
234
+ * runFleet's auth + MCP-client setup, then binds the mission to a host that a
235
+ * supervisor actually polls — see resolveDispatchHost:
236
+ * • default (no --host) → register THIS host under defaultHostName(auth), the
237
+ * same name `foundr fleet` registers + polls, so the local supervisor claims it.
238
+ * • --host other → resolve against the live fleet_host_list; bind only to a
239
+ * registered, ONLINE host. An unknown/offline name THROWS instead of
240
+ * registering an unpolled host (which would orphan the mission).
241
+ *
242
+ * An explicit `mcpUrl` (from `foundr dispatch --url …`) targets that origin
243
+ * authoritatively, overriding the paired origin — mirrors `foundr login --url`.
244
+ * Otherwise it falls back to the paired origin, then FOUNDR_URL, then default.
245
+ *
246
+ * Returns the created mission row. Throws "Not paired" when there is no stored
247
+ * pairing (caller should treat as a clean non-crash exit, like runFleet).
248
+ */
249
+ export async function dispatchMission({ title, repo, branch, hostName, priority, mcpUrl: mcpUrlOverride, log = console.error } = {}) {
250
+ const auth = await loadBridgeAuth().catch(() => null)
251
+ if (!auth?.agent?.id) {
252
+ throw new Error('Not paired. Run: foundr login')
253
+ }
254
+ const mcpUrl = resolveMcpUrl(mcpUrlOverride || auth.mcpUrl || process.env.FOUNDR_URL || DEFAULT_MCP_URL)
255
+ const agentName = defaultHostName(auth)
256
+
257
+ const provider = new FileBackedOAuthProvider({
258
+ mcpUrl,
259
+ agentName,
260
+ auth,
261
+ onChange: async (nextAuth) => {
262
+ await saveBridgeAuth({
263
+ ...nextAuth,
264
+ mcpUrl,
265
+ agentName,
266
+ agent: auth.agent,
267
+ updatedAt: new Date().toISOString(),
268
+ })
269
+ },
270
+ onRedirect: () => log('Foundr re-authorization required. Run: foundr login'),
271
+ })
272
+
273
+ let mcp
274
+ try {
275
+ mcp = await createMcpClient({ mcpUrl, authProvider: provider })
276
+
277
+ // Resolve the target host BEFORE binding the mission. For a foreign --host
278
+ // we need the live host list to validate it's registered + online; for the
279
+ // default path the list is unused. resolveDispatchHost throws loudly on an
280
+ // unknown/offline --host so we never create an unclaimable mission.
281
+ const needsHostList = Boolean((hostName ?? '').trim()) && hostName.trim() !== agentName
282
+ const hosts = needsHostList ? await listHostsTool(mcp) : []
283
+ const target = resolveDispatchHost({ hostName, defaultName: agentName, hosts })
284
+
285
+ const hostId =
286
+ target.kind === 'bind'
287
+ ? target.hostId
288
+ : // Register this host to get its id (idempotent on name) — the mission's
289
+ // host_id is set to it so the local supervisor's queue includes it.
290
+ (await registerHostTool(mcp, { name: target.name, backend: 'codex' })).id
291
+
292
+ const mission = await createMissionTool(mcp, {
293
+ title,
294
+ repo,
295
+ worktreeBranch: branch,
296
+ hostId,
297
+ priority,
298
+ })
299
+ return mission
300
+ } finally {
301
+ await mcp?.close?.().catch(() => {})
302
+ }
303
+ }
@@ -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"}