sensorium-mcp 3.1.0-refactor.17 → 3.1.0-refactor.18

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 (109) hide show
  1. package/dist/config/agent-settings.d.ts +0 -6
  2. package/dist/config/agent-settings.d.ts.map +1 -1
  3. package/dist/config/agent-settings.js +0 -22
  4. package/dist/config/agent-settings.js.map +1 -1
  5. package/dist/config/index.d.ts +0 -1
  6. package/dist/config/index.d.ts.map +1 -1
  7. package/dist/config/index.js +0 -1
  8. package/dist/config/index.js.map +1 -1
  9. package/dist/dashboard/routes/copilot.d.ts.map +1 -1
  10. package/dist/dashboard/routes/copilot.js +1 -17
  11. package/dist/dashboard/routes/copilot.js.map +1 -1
  12. package/dist/dashboard/routes/threads-read.d.ts.map +1 -1
  13. package/dist/dashboard/routes/threads-read.js +2 -9
  14. package/dist/dashboard/routes/threads-read.js.map +1 -1
  15. package/dist/dashboard/routes/threads.js +3 -3
  16. package/dist/dashboard/routes/threads.js.map +1 -1
  17. package/dist/dashboard/routes.d.ts.map +1 -1
  18. package/dist/dashboard/routes.js +4 -11
  19. package/dist/dashboard/routes.js.map +1 -1
  20. package/dist/dashboard/spa.html +11 -11
  21. package/dist/index.js +13 -48
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/logger.d.ts.map +1 -1
  24. package/dist/lib/logger.js +2 -21
  25. package/dist/lib/logger.js.map +1 -1
  26. package/dist/server/factory.js +6 -16
  27. package/dist/server/factory.js.map +1 -1
  28. package/dist/server/http-server.d.ts.map +1 -1
  29. package/dist/server/http-server.js +7 -10
  30. package/dist/server/http-server.js.map +1 -1
  31. package/dist/services/agent-spawn.service.d.ts +3 -3
  32. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  33. package/dist/services/agent-spawn.service.js +8 -14
  34. package/dist/services/agent-spawn.service.js.map +1 -1
  35. package/dist/services/background-runner.d.ts.map +1 -1
  36. package/dist/services/background-runner.js +12 -6
  37. package/dist/services/background-runner.js.map +1 -1
  38. package/dist/services/claude-spawn.service.d.ts +1 -1
  39. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  40. package/dist/services/claude-spawn.service.js +25 -25
  41. package/dist/services/claude-spawn.service.js.map +1 -1
  42. package/dist/services/codex-spawn.service.d.ts +1 -1
  43. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  44. package/dist/services/codex-spawn.service.js +24 -19
  45. package/dist/services/codex-spawn.service.js.map +1 -1
  46. package/dist/services/copilot-spawn.service.d.ts +1 -1
  47. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  48. package/dist/services/copilot-spawn.service.js +36 -45
  49. package/dist/services/copilot-spawn.service.js.map +1 -1
  50. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  51. package/dist/services/dispatcher/poller.js +5 -24
  52. package/dist/services/dispatcher/poller.js.map +1 -1
  53. package/dist/services/flight-recorder.service.d.ts.map +1 -1
  54. package/dist/services/flight-recorder.service.js +2 -41
  55. package/dist/services/flight-recorder.service.js.map +1 -1
  56. package/dist/services/keeper.service.d.ts +0 -9
  57. package/dist/services/keeper.service.d.ts.map +1 -1
  58. package/dist/services/keeper.service.js +31 -147
  59. package/dist/services/keeper.service.js.map +1 -1
  60. package/dist/services/process.service.d.ts +62 -40
  61. package/dist/services/process.service.d.ts.map +1 -1
  62. package/dist/services/process.service.js +613 -118
  63. package/dist/services/process.service.js.map +1 -1
  64. package/dist/services/scheduler.d.ts +0 -1
  65. package/dist/services/scheduler.d.ts.map +1 -1
  66. package/dist/services/scheduler.js +11 -58
  67. package/dist/services/scheduler.js.map +1 -1
  68. package/dist/services/self-update.service.d.ts +3 -14
  69. package/dist/services/self-update.service.d.ts.map +1 -1
  70. package/dist/services/self-update.service.js +72 -141
  71. package/dist/services/self-update.service.js.map +1 -1
  72. package/dist/services/spawn-common.d.ts +23 -49
  73. package/dist/services/spawn-common.d.ts.map +1 -1
  74. package/dist/services/spawn-common.js +47 -262
  75. package/dist/services/spawn-common.js.map +1 -1
  76. package/dist/services/thread-health.service.d.ts +1 -1
  77. package/dist/services/thread-health.service.d.ts.map +1 -1
  78. package/dist/services/thread-health.service.js +6 -6
  79. package/dist/services/thread-health.service.js.map +1 -1
  80. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  81. package/dist/services/worker-cleanup.service.js +92 -9
  82. package/dist/services/worker-cleanup.service.js.map +1 -1
  83. package/dist/tools/defs/session-defs.js +1 -1
  84. package/dist/tools/defs/session-defs.js.map +1 -1
  85. package/dist/tools/defs/utility-defs.d.ts.map +1 -1
  86. package/dist/tools/defs/utility-defs.js +3 -4
  87. package/dist/tools/defs/utility-defs.js.map +1 -1
  88. package/dist/tools/delegate-tool.d.ts +1 -1
  89. package/dist/tools/delegate-tool.d.ts.map +1 -1
  90. package/dist/tools/delegate-tool.js +5 -5
  91. package/dist/tools/delegate-tool.js.map +1 -1
  92. package/dist/tools/session-tools.d.ts.map +1 -1
  93. package/dist/tools/session-tools.js +9 -26
  94. package/dist/tools/session-tools.js.map +1 -1
  95. package/dist/tools/utility-tools.js +1 -1
  96. package/dist/tools/utility-tools.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/config/detail-grant.d.ts +0 -39
  99. package/dist/config/detail-grant.d.ts.map +0 -1
  100. package/dist/config/detail-grant.js +0 -61
  101. package/dist/config/detail-grant.js.map +0 -1
  102. package/dist/services/broker-client.d.ts +0 -181
  103. package/dist/services/broker-client.d.ts.map +0 -1
  104. package/dist/services/broker-client.js +0 -323
  105. package/dist/services/broker-client.js.map +0 -1
  106. package/dist/services/spawn-exit-watcher.d.ts +0 -32
  107. package/dist/services/spawn-exit-watcher.d.ts.map +0 -1
  108. package/dist/services/spawn-exit-watcher.js +0 -102
  109. package/dist/services/spawn-exit-watcher.js.map +0 -1
@@ -8,6 +8,7 @@
8
8
  * agent module stay focused on its own CLI invocation without duplicating the
9
9
  * lifecycle plumbing.
10
10
  */
11
+ import { type ChildProcess, type SpawnOptions } from "node:child_process";
11
12
  import { type ThreadLifecycleService } from "./thread-lifecycle.service.js";
12
13
  import type { SensoriumTransport } from "./mcp-config.service.js";
13
14
  /** Result shape shared by every spawn function. */
@@ -27,8 +28,6 @@ export declare const sanitizeSpawnEnv: (extra?: Record<string, string | undefine
27
28
  * separately and are unaffected.
28
29
  */
29
30
  export declare const stripDenylistedEnvVars: (vars: Record<string, string>) => Record<string, string>;
30
- /** Test hook: clear the CLI resolution cache. */
31
- export declare function resetCliPathCacheForTest(): void;
32
31
  export declare const resolveCliPath: (name: string, prefer?: RegExp) => string | null;
33
32
  /** On Windows: prefer .exe, fall back to .cmd, refuse extensionless shims (e.g. Volta). */
34
33
  export declare function resolveWindowsCliPath(name: string): string | null;
@@ -52,12 +51,14 @@ export declare function buildThreadLogPath(name: string, threadId: number, ext:
52
51
  * delivers its own autonomous-loop prompt over stdin instead). */
53
52
  export declare const buildSessionPrompt: (name: string, threadId: number) => string;
54
53
  /**
55
- * Everything needed to start an agent process, agent-specific policy already
56
- * applied (env assembly, CLI args, prompt delivery). The SAME plan drives both
57
- * spawn mechanics: POST /proc/spawn on the supervisor broker (the process
58
- * owner target state, plan §4.1) and the legacy local `spawn()` fallback.
54
+ * Spawn options shared by every agent child: detached from this (ephemeral)
55
+ * server process, stdout/stderr on the child-owned log fd, and .cmd/.bat
56
+ * launched through a shell on Windows. `stdin` defaults to "ignore"; Codex
57
+ * passes "pipe" because it delivers its prompt over stdin.
59
58
  */
60
- export interface AgentLaunchPlan {
59
+ export declare function detachedChildOptions(cliPath: string, outFd: number, env: NodeJS.ProcessEnv, cwd: string | undefined, stdin?: "ignore" | "pipe"): SpawnOptions;
60
+ interface RegisterSpawnOpts {
61
+ child: ChildProcess;
61
62
  threadId: number;
62
63
  name: string;
63
64
  logFilePath: string;
@@ -65,50 +66,23 @@ export interface AgentLaunchPlan {
65
66
  agentLabel: string;
66
67
  memorySourceThreadId?: number;
67
68
  threadType?: "worker" | "branch";
68
- exe: string;
69
- args: string[];
70
- env: NodeJS.ProcessEnv;
71
- cwd?: string;
72
- /** Prompt-sized payload written to the child's stdin then EOF'd (Codex);
73
- * undefined → stdin ignored/NUL. */
74
- stdinData?: string;
75
69
  }
76
- export type BrokerSpawnMode = "required" | "auto" | "off";
77
70
  /**
78
- * Staged cutover switch (plan hard criterion 7 — zero-disruption migration):
79
- * SENSORIUM_BROKER_SPAWN=1 broker REQUIRED — a broker failure fails the
80
- * spawn loudly, never a silent local fallback;
81
- * SENSORIUM_BROKER_SPAWN=0 legacy local spawning only;
82
- * unset auto — broker first, and if it is unreachable or
83
- * predates /proc/spawn, WARN and spawn locally so
84
- * an MCP update cannot strand agents behind an
85
- * old supervisor binary. Locally-spawned processes
86
- * are adopted into jobs+registry by the
87
- * supervisor's boot reconciliation / /proc/adopt.
88
- * Job objects are Windows-only, so non-Windows resolves to "off" unless forced.
89
- */
90
- export declare function brokerSpawnMode(): BrokerSpawnMode;
91
- export declare function spawnReconcileDelayForTest(ms: number | null): void;
92
- /**
93
- * Launch an agent process for a thread. Broker path first (the supervisor owns
94
- * spawn/observe/kill; children land in the thread's job object so the whole
95
- * tree stays killable), legacy local path per the cutover flag above.
96
- *
97
- * Duplicate-agent guarantee: the legacy local fallback runs ONLY on definitive
98
- * evidence that the broker created nothing — a spawn error answer, an absent
99
- * endpoint (404/401), or a connection that was never established. An uncertain
100
- * outcome (timeout, dropped connection) goes through reconcileUncertainSpawn
101
- * instead, so no timeout value can ever yield two agents for one thread.
71
+ * Shared tail of every agent spawn: open the log fd, run the agent-specific
72
+ * spawn callback, register the child for lifecycle bookkeeping, and translate
73
+ * any exception into an error result.
102
74
  *
103
- * In the local path stdout/stderr go to a file descriptor the CHILD owns, not
104
- * a pipe drained by this (ephemeral) server process. A pipe's only reader is
105
- * this node process; when it dies on a self-update/restart the orphaned,
106
- * detached child keeps writing, the ~64KB OS pipe buffer fills, and the next
107
- * write() blocks the child's event loop forever — killing MCP polling, the API
108
- * stream and any reconnect (the exact zombie we saw on thread 20869). A file
109
- * fd is duplicated into the child at spawn and drained by the OS, so it
110
- * survives our restarts. The broker path keeps the identical design with the
111
- * supervisor opening the file handle (spawn-to-file-fd, plan §6 "keep").
75
+ * stdout/stderr go to a file descriptor the CHILD owns, not a pipe drained by
76
+ * this (ephemeral) server process. A pipe's only reader is this node process;
77
+ * when it dies on a self-update/restart the orphaned, detached child keeps
78
+ * writing, the ~64KB OS pipe buffer fills, and the next write() blocks the
79
+ * child's event loop forever — killing MCP polling, the API stream and any
80
+ * reconnect (the exact zombie we saw on thread 20869). A file fd is duplicated
81
+ * into the child at spawn and drained by the OS, so it survives our restarts.
82
+ * (64KB blocking is a PIPE phenomenon, not a file.)
112
83
  */
113
- export declare function launchAgent(plan: AgentLaunchPlan, threadLifecycle: ThreadLifecycleService): Promise<SpawnResult>;
84
+ export declare function launchAgentChild(opts: Omit<RegisterSpawnOpts, "child"> & {
85
+ spawnChild: (outFd: number) => ChildProcess;
86
+ }, threadLifecycle: ThreadLifecycleService): SpawnResult;
87
+ export {};
114
88
  //# sourceMappingURL=spawn-common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-common.d.ts","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgCH,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA+BlE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwB/E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAG,MAAM,CAAC,UAKpF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1F,CAAC;AAWF,iDAAiD;AACjD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,IA2BvE,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BjE;AASD,eAAO,MAAM,yBAAyB,GAAI,mBAAmB,MAAM,KAAG,MAAM,GAAG,SAK9E,CAAC;AAOF,eAAO,MAAM,0BAA0B,QAAO,OAAmC,CAAC;AAClF,eAAO,MAAM,2BAA2B,GAAI,GAAG,OAAO,KAAG,IAExD,CAAC;AASF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAYvD;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAMhG;AAED;kEACkE;AAClE,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MACkD,CAAC;AAuRvH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;yCACqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,IAAI,eAAe,CAKjD;AAmDD,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAElE;AA4ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,EACrB,eAAe,EAAE,sBAAsB,GACtC,OAAO,CAAC,WAAW,CAAC,CAuCtB"}
1
+ {"version":3,"file":"spawn-common.d.ts","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8BrF,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA6BlE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAwB/E,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAG,MAAM,CAAC,UAKpF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAI1F,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,GAAG,IAsBvE,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBjE;AASD,eAAO,MAAM,yBAAyB,GAAI,mBAAmB,MAAM,KAAG,MAAM,GAAG,SAK9E,CAAC;AAOF,eAAO,MAAM,0BAA0B,QAAO,OAAmC,CAAC;AAClF,eAAO,MAAM,2BAA2B,GAAI,GAAG,OAAO,KAAG,IAExD,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAYvD;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAMhG;AAED;kEACkE;AAClE,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MACkD,CAAC;AAEvH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,KAAK,GAAE,QAAQ,GAAG,MAAiB,GAClC,YAAY,CASd;AAID,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AAoOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG;IAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,CAAA;CAAE,EACxF,eAAe,EAAE,sBAAsB,GACtC,WAAW,CAmBb"}
@@ -8,7 +8,7 @@
8
8
  * agent module stay focused on its own CLI invocation without duplicating the
9
9
  * lifecycle plumbing.
10
10
  */
11
- import { spawn, spawnSync } from "node:child_process";
11
+ import { spawnSync } from "node:child_process";
12
12
  import { closeSync, existsSync, fstatSync, openSync, readSync, unlinkSync, writeFileSync, readFileSync, } from "node:fs";
13
13
  import { tmpdir } from "node:os";
14
14
  import { join } from "node:path";
@@ -21,8 +21,6 @@ import { errorMessage } from "../lib/utils.js";
21
21
  import { deleteTelegramTopicByBotApi } from "./topic.service.js";
22
22
  import { PROCESS_PIDS_DIR, PENDING_TASKS_DIR, THREAD_LOGS_DIR, spawnedThreads, wasTaskConsumed, clearTaskConsumed, } from "./process.service.js";
23
23
  import { ThreadState } from "./thread-lifecycle.service.js";
24
- import { brokerSpawn, brokerListThread } from "./broker-client.js";
25
- import { watchBrokerSpawnExit } from "./spawn-exit-watcher.js";
26
24
  import { decommissionWorker, clearWorkerGrace } from "./worker-cleanup.service.js";
27
25
  import { writeThreadHeartbeatSync, clearThreadHeartbeat } from "../data/file-storage.js";
28
26
  // ── Worker respawn (failed MCP-handshake recovery) ──────────────────────────
@@ -94,79 +92,54 @@ export const stripDenylistedEnvVars = (vars) => {
94
92
  out[k] = v;
95
93
  return out;
96
94
  };
97
- // CLI paths are resolved through a synchronous `where`/`which` child — the one
98
- // remaining shell-out on the spawn path, and a sync child can block the event
99
- // loop for its full 5s timeout under AV/EDR pressure. Installed CLI locations
100
- // do not move during a server's lifetime, so resolve each name ONCE and serve
101
- // every later spawn from this cache (null results are cached too: a missing CLI
102
- // stays missing until a restart, and hammering `where` for it each spawn is the
103
- // exact stall this avoids). The env override is read fresh on every call.
104
- const cliPathCache = new Map();
105
- /** Test hook: clear the CLI resolution cache. */
106
- export function resetCliPathCacheForTest() {
107
- cliPathCache.clear();
108
- }
109
95
  export const resolveCliPath = (name, prefer) => {
110
96
  const envCmd = process.env[`${name.toUpperCase()}_CLI_CMD`];
111
97
  if (envCmd)
112
98
  return envCmd;
113
- const cacheKey = `posix:${name}:${prefer?.source ?? ""}`;
114
- if (cliPathCache.has(cacheKey))
115
- return cliPathCache.get(cacheKey);
116
- let resolved = null;
117
99
  try {
118
100
  const result = spawnSync(process.platform === "win32" ? "where" : "which", [name], {
119
101
  timeout: 5000,
120
102
  encoding: "utf-8",
121
103
  windowsHide: true,
122
104
  });
123
- if (result.status === 0 && result.stdout) {
124
- const candidates = result.stdout
125
- .trim()
126
- .split(/\r?\n/)
127
- .map((s) => s.trim())
128
- .filter(Boolean);
129
- resolved = prefer ? (candidates.find((p) => prefer.test(p)) ?? candidates[0]) : candidates[0];
130
- }
105
+ if (result.status !== 0 || !result.stdout)
106
+ return null;
107
+ const candidates = result.stdout
108
+ .trim()
109
+ .split(/\r?\n/)
110
+ .map((s) => s.trim())
111
+ .filter(Boolean);
112
+ return prefer ? (candidates.find((p) => prefer.test(p)) ?? candidates[0]) : candidates[0];
131
113
  }
132
114
  catch (err) {
133
115
  log.debug(`[spawn] CLI resolution for ${name} failed: ${err instanceof Error ? err.message : err}`);
116
+ return null;
134
117
  }
135
- cliPathCache.set(cacheKey, resolved ?? null);
136
- return resolved ?? null;
137
118
  };
138
119
  /** On Windows: prefer .exe, fall back to .cmd, refuse extensionless shims (e.g. Volta). */
139
120
  export function resolveWindowsCliPath(name) {
140
121
  const envCmd = process.env[`${name.toUpperCase()}_CLI_CMD`];
141
122
  if (envCmd)
142
123
  return envCmd;
143
- const cacheKey = `win:${name}`;
144
- if (cliPathCache.has(cacheKey))
145
- return cliPathCache.get(cacheKey);
146
- let resolved = null;
147
124
  try {
148
125
  const result = spawnSync("where", [name], {
149
126
  timeout: 5000,
150
127
  encoding: "utf-8",
151
128
  windowsHide: true,
152
129
  });
153
- if (result.status === 0 && result.stdout) {
154
- const candidates = result.stdout
155
- .trim()
156
- .split(/\r?\n/)
157
- .map((s) => s.trim())
158
- .filter(Boolean);
159
- resolved =
160
- candidates.find((p) => /\.exe$/i.test(p)) ??
161
- candidates.find((p) => /\.cmd$/i.test(p)) ??
162
- null;
163
- }
130
+ if (result.status !== 0 || !result.stdout)
131
+ return null;
132
+ const candidates = result.stdout
133
+ .trim()
134
+ .split(/\r?\n/)
135
+ .map((s) => s.trim())
136
+ .filter(Boolean);
137
+ return (candidates.find((p) => /\.exe$/i.test(p)) ?? candidates.find((p) => /\.cmd$/i.test(p)) ?? null);
164
138
  }
165
139
  catch (err) {
166
140
  log.debug(`[spawn] Windows CLI resolution for ${name} failed: ${err instanceof Error ? err.message : err}`);
141
+ return null;
167
142
  }
168
- cliPathCache.set(cacheKey, resolved);
169
- return resolved;
170
143
  }
171
144
  /** Parse MCP transport from env. Returns null if port is not set or invalid. */
172
145
  function parseSensoriumTransport() {
@@ -191,10 +164,9 @@ export const setStartupCleanupInProgress = (v) => {
191
164
  };
192
165
  // ── Shared spawn choreography ───────────────────────────────────────────────
193
166
  // The pieces every agent spawn goes through in the same order: preflight
194
- // checks, log-path construction, common spawn options, and the launch/register
195
- // tail (launchAgent below — broker spawn with a flagged local fallback). Agent
196
- // modules keep only their own CLI quirks: env building, argument lists and
197
- // prompt delivery.
167
+ // checks, log-path construction, common spawn options, and the fd/register
168
+ // tail (launchAgentChild below). Agent modules keep only their own CLI
169
+ // quirks: env building, argument lists and prompt delivery.
198
170
  /**
199
171
  * Shared spawn preflight: refuse when the dashboard's max-concurrent-threads
200
172
  * limit is already reached, then require the MCP HTTP transport. Kept here so
@@ -228,7 +200,7 @@ export const buildSessionPrompt = (name, threadId) => `Start remote session with
228
200
  * launched through a shell on Windows. `stdin` defaults to "ignore"; Codex
229
201
  * passes "pipe" because it delivers its prompt over stdin.
230
202
  */
231
- function detachedChildOptions(cliPath, outFd, env, cwd, stdin = "ignore") {
203
+ export function detachedChildOptions(cliPath, outFd, env, cwd, stdin = "ignore") {
232
204
  return {
233
205
  stdio: [stdin, outFd, outFd],
234
206
  shell: process.platform === "win32" && /\.(cmd|bat)$/i.test(cliPath),
@@ -295,7 +267,7 @@ async function handleProcessExit(code, threadId, pid, pidFilePath, entry, proces
295
267
  const reg = getThread(db, threadId);
296
268
  const agentType = (reg?.client ?? getAgentType());
297
269
  const { dispatchSpawn } = await import("./agent-spawn.service.js");
298
- const res = await dispatchSpawn(agentType, entry.name, threadId, threadLifecycle, reg?.workingDirectory ?? undefined, entry.memorySourceThreadId ?? reg?.rootThreadId ?? undefined, "worker", db);
270
+ const res = dispatchSpawn(agentType, entry.name, threadId, threadLifecycle, reg?.workingDirectory ?? undefined, entry.memorySourceThreadId ?? reg?.rootThreadId ?? undefined, "worker", db);
299
271
  if ("pid" in res) {
300
272
  log.info(`[respawn] worker thread ${threadId} relaunched as PID=${res.pid}`);
301
273
  return; // task file preserved for the new process — skip decommission
@@ -376,7 +348,7 @@ async function handleProcessExit(code, threadId, pid, pidFilePath, entry, proces
376
348
  }
377
349
  }
378
350
  function registerSpawnedProcess(opts, threadLifecycle) {
379
- const pid = opts.pid;
351
+ const pid = opts.child.pid;
380
352
  if (pid === undefined)
381
353
  return {
382
354
  error: `${opts.agentLabel} process spawned but PID is undefined - spawn may have failed.`,
@@ -387,8 +359,7 @@ function registerSpawnedProcess(opts, threadLifecycle) {
387
359
  pid,
388
360
  name: opts.name,
389
361
  configPath: opts.configPath,
390
- startedAt: opts.startedAt,
391
- ...(opts.startTimeTicks ? { startTimeTicks: opts.startTimeTicks } : {}),
362
+ startedAt: Date.now(),
392
363
  ...(opts.threadType ? { threadType: opts.threadType } : {}),
393
364
  }), "utf-8");
394
365
  }
@@ -401,7 +372,7 @@ function registerSpawnedProcess(opts, threadLifecycle) {
401
372
  pid,
402
373
  threadId: opts.threadId,
403
374
  name: opts.name,
404
- startedAt: opts.startedAt,
375
+ startedAt: Date.now(),
405
376
  createdAt: Date.now(),
406
377
  logFile: opts.logFilePath,
407
378
  ...(opts.memorySourceThreadId !== undefined
@@ -410,205 +381,33 @@ function registerSpawnedProcess(opts, threadLifecycle) {
410
381
  ...(opts.threadType ? { threadType: opts.threadType } : {}),
411
382
  };
412
383
  spawnedThreads.push(entry);
413
- opts.attachExit((code) => {
384
+ opts.child.on("exit", (code) => {
414
385
  handleProcessExit(code, opts.threadId, pid, pidFilePath, entry, opts.agentLabel, threadLifecycle).catch((err) => log.warn(`[exit] cleanup failed: ${err}`));
415
386
  });
416
- opts.unref?.();
417
- log.info(`[start_thread] Spawned ${opts.agentLabel} process PID=${pid} for thread ${opts.threadId} ("${opts.name}") via ${opts.spawnedVia}`);
387
+ opts.child.unref();
388
+ log.info(`[start_thread] Spawned ${opts.agentLabel} process PID=${pid} for thread ${opts.threadId} ("${opts.name}")`);
418
389
  return { pid, logFile: opts.logFilePath };
419
390
  }
420
391
  /**
421
- * Staged cutover switch (plan hard criterion 7 — zero-disruption migration):
422
- * SENSORIUM_BROKER_SPAWN=1 broker REQUIRED — a broker failure fails the
423
- * spawn loudly, never a silent local fallback;
424
- * SENSORIUM_BROKER_SPAWN=0 legacy local spawning only;
425
- * unset auto — broker first, and if it is unreachable or
426
- * predates /proc/spawn, WARN and spawn locally so
427
- * an MCP update cannot strand agents behind an
428
- * old supervisor binary. Locally-spawned processes
429
- * are adopted into jobs+registry by the
430
- * supervisor's boot reconciliation / /proc/adopt.
431
- * Job objects are Windows-only, so non-Windows resolves to "off" unless forced.
432
- */
433
- export function brokerSpawnMode() {
434
- const raw = (process.env.SENSORIUM_BROKER_SPAWN ?? "").trim().toLowerCase();
435
- if (["1", "true", "on", "required"].includes(raw))
436
- return "required";
437
- if (["0", "false", "off"].includes(raw))
438
- return "off";
439
- return process.platform === "win32" ? "auto" : "off";
440
- }
441
- const envToStringRecord = (env) => {
442
- const out = {};
443
- for (const [k, v] of Object.entries(env))
444
- if (v !== undefined)
445
- out[k] = v;
446
- return out;
447
- };
448
- /** Register a broker-owned process (fresh spawn, idempotent hit, or a reconcile
449
- * adoption): PID file, spawnedThreads[], and the polling exit watcher. */
450
- function registerBrokerOwnedProcess(plan, proc, threadLifecycle) {
451
- return registerSpawnedProcess({
452
- pid: proc.pid,
453
- startedAt: proc.startTimeMs,
454
- startTimeTicks: proc.startTimeTicks || undefined,
455
- spawnedVia: "broker",
456
- attachExit: (onExit) => watchBrokerSpawnExit({
457
- pid: proc.pid,
458
- threadId: plan.threadId,
459
- startedAtMs: proc.startTimeMs,
460
- startTimeTicks: proc.startTimeTicks || undefined,
461
- onExit,
462
- }),
463
- threadId: plan.threadId,
464
- name: plan.name,
465
- logFilePath: plan.logFilePath,
466
- configPath: plan.configPath,
467
- agentLabel: plan.agentLabel,
468
- memorySourceThreadId: plan.memorySourceThreadId,
469
- threadType: plan.threadType,
470
- }, threadLifecycle);
471
- }
472
- // Reconcile pacing after an UNCERTAIN spawn outcome. The delay matches the
473
- // broker client's unreachable cooldown so each attempt gets a fresh probe
474
- // rather than a cached failure. Three rounds bound the worst case (wedged-but-
475
- // accepting supervisor) to ~2 min; a still-unverifiable spawn then fails LOUDLY
476
- // and the keeper retries later — safely, because spawn is idempotent.
477
- const SPAWN_RECONCILE_ATTEMPTS = 3;
478
- const SPAWN_RECONCILE_DELAY_MS = 5000;
479
- /** Test hook: shrink the reconcile pacing. Null restores the default. */
480
- let reconcileDelayOverride = null;
481
- export function spawnReconcileDelayForTest(ms) {
482
- reconcileDelayOverride = ms;
483
- }
484
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
485
- /**
486
- * The reconcile contract for an uncertain broker spawn (timeout / connection
487
- * lost mid-flight): the request MAY have created a process, so a blind local
488
- * spawn is forbidden — no timeout value may ever produce two agents for one
489
- * thread. Instead:
490
- * 1. Ask the broker registry (/proc/list) — a live process there IS the
491
- * thread's agent: adopt it.
492
- * 2. Otherwise retry the spawn — idempotent by threadId server-side, so the
493
- * retry either creates the one process or returns the one that exists.
494
- * 3. Still unverifiable after the attempts → fail loudly. NEVER local-spawn:
495
- * the keeper's next cycle retries against the same idempotent contract.
496
- */
497
- async function reconcileUncertainSpawn(plan, spec, threadLifecycle, firstDetail) {
498
- log.warn(`[spawn] broker spawn outcome UNCERTAIN for ${plan.agentLabel} thread ${plan.threadId} (${firstDetail}) — reconciling against the broker registry; a blind local spawn is forbidden here`);
499
- for (let attempt = 1; attempt <= SPAWN_RECONCILE_ATTEMPTS; attempt++) {
500
- const list = await brokerListThread(plan.threadId);
501
- if (list && list.processes.length > 0) {
502
- const root = list.processes[0];
503
- if (root.startTimeTicks || root.startTimeMs) {
504
- log.warn(`[spawn] reconcile attempt ${attempt}: broker has live pid ${root.pid} for thread ${plan.threadId} — adopting it as the agent (the uncertain spawn DID land)`);
505
- return registerBrokerOwnedProcess(plan, { pid: root.pid, startTimeTicks: root.startTimeTicks, startTimeMs: root.startTimeMs }, threadLifecycle);
506
- }
507
- // Entry without identity: the pid vanished between the broker's job read
508
- // and its snapshot — likely mid-death. Let the next attempt see clearly.
509
- }
510
- else {
511
- // Broker unreachable OR answered "no live process". Either way the spawn
512
- // retry is safe: idempotent server-side, it can never create a second
513
- // process — and if the first request is still in flight it serializes on
514
- // the broker's per-thread lock and returns that process.
515
- const retry = await brokerSpawn(spec);
516
- if ("pid" in retry) {
517
- if (retry.existing)
518
- log.warn(`[spawn] reconcile attempt ${attempt}: idempotent spawn returned the EXISTING live pid ${retry.pid} for thread ${plan.threadId} — adopted, no duplicate created`);
519
- return registerBrokerOwnedProcess(plan, retry, threadLifecycle);
520
- }
521
- if ("error" in retry) {
522
- // Definitive: the broker checked (no live process) and CreateProcess
523
- // failed. Nothing is running for this thread.
524
- return {
525
- error: `Broker spawn failed for ${plan.agentLabel} thread ${plan.threadId}: ${retry.error}`,
526
- };
527
- }
528
- // unavailable/uncertain → the broker may have died AFTER creating the
529
- // process (it survives — the job handle is pinned into the child). Keep
530
- // reconciling; never blind-spawn.
531
- }
532
- if (attempt < SPAWN_RECONCILE_ATTEMPTS)
533
- await sleep(reconcileDelayOverride ?? SPAWN_RECONCILE_DELAY_MS);
534
- }
535
- return {
536
- error: `Broker spawn for ${plan.agentLabel} thread ${plan.threadId} remained unverifiable after ` +
537
- `${SPAWN_RECONCILE_ATTEMPTS} reconcile attempts — refusing a blind local spawn (a broker-side ` +
538
- `process may exist). The next spawn attempt reconciles again safely.`,
539
- };
540
- }
541
- /**
542
- * Launch an agent process for a thread. Broker path first (the supervisor owns
543
- * spawn/observe/kill; children land in the thread's job object so the whole
544
- * tree stays killable), legacy local path per the cutover flag above.
545
- *
546
- * Duplicate-agent guarantee: the legacy local fallback runs ONLY on definitive
547
- * evidence that the broker created nothing — a spawn error answer, an absent
548
- * endpoint (404/401), or a connection that was never established. An uncertain
549
- * outcome (timeout, dropped connection) goes through reconcileUncertainSpawn
550
- * instead, so no timeout value can ever yield two agents for one thread.
392
+ * Shared tail of every agent spawn: open the log fd, run the agent-specific
393
+ * spawn callback, register the child for lifecycle bookkeeping, and translate
394
+ * any exception into an error result.
551
395
  *
552
- * In the local path stdout/stderr go to a file descriptor the CHILD owns, not
553
- * a pipe drained by this (ephemeral) server process. A pipe's only reader is
554
- * this node process; when it dies on a self-update/restart the orphaned,
555
- * detached child keeps writing, the ~64KB OS pipe buffer fills, and the next
556
- * write() blocks the child's event loop forever — killing MCP polling, the API
557
- * stream and any reconnect (the exact zombie we saw on thread 20869). A file
558
- * fd is duplicated into the child at spawn and drained by the OS, so it
559
- * survives our restarts. The broker path keeps the identical design with the
560
- * supervisor opening the file handle (spawn-to-file-fd, plan §6 "keep").
396
+ * stdout/stderr go to a file descriptor the CHILD owns, not a pipe drained by
397
+ * this (ephemeral) server process. A pipe's only reader is this node process;
398
+ * when it dies on a self-update/restart the orphaned, detached child keeps
399
+ * writing, the ~64KB OS pipe buffer fills, and the next write() blocks the
400
+ * child's event loop forever — killing MCP polling, the API stream and any
401
+ * reconnect (the exact zombie we saw on thread 20869). A file fd is duplicated
402
+ * into the child at spawn and drained by the OS, so it survives our restarts.
403
+ * (64KB blocking is a PIPE phenomenon, not a file.)
561
404
  */
562
- export async function launchAgent(plan, threadLifecycle) {
563
- const mode = brokerSpawnMode();
564
- if (mode !== "off") {
565
- const role = plan.threadType ?? "agent";
566
- const spec = {
567
- threadId: plan.threadId,
568
- role,
569
- exe: plan.exe,
570
- args: plan.args,
571
- env: envToStringRecord(plan.env),
572
- cwd: plan.cwd,
573
- logFilePath: plan.logFilePath,
574
- stdinData: plan.stdinData,
575
- };
576
- const spawned = await brokerSpawn(spec);
577
- if ("pid" in spawned) {
578
- if (spawned.existing)
579
- log.warn(`[spawn] broker returned the EXISTING live pid ${spawned.pid} for thread ${plan.threadId} (idempotent hit) — adopting it instead of double-spawning`);
580
- return registerBrokerOwnedProcess(plan, spawned, threadLifecycle);
581
- }
582
- if ("uncertain" in spawned)
583
- return reconcileUncertainSpawn(plan, spec, threadLifecycle, spawned.uncertain);
584
- // A failed spawn must NEVER look like success (hard criterion 5): both
585
- // remaining outcomes are loud and DEFINITIVE (no process was created);
586
- // they differ only in whether a legacy local spawn is allowed to take over.
587
- const detail = "error" in spawned ? spawned.error : spawned.unavailable;
588
- if (mode === "required") {
589
- log.error(`[spawn] BROKER spawn FAILED for ${plan.agentLabel} thread ${plan.threadId}: ${detail} — SENSORIUM_BROKER_SPAWN=1 forbids the local fallback; spawn failed`);
590
- return { error: `Broker spawn failed for ${plan.agentLabel} thread ${plan.threadId}: ${detail}` };
591
- }
592
- log.warn(`[spawn] broker spawn unavailable for ${plan.agentLabel} thread ${plan.threadId} (${detail}) — falling back to LOCAL spawn; the process runs outside job containment until the supervisor's boot reconciliation adopts it`);
593
- }
594
- return launchLocalChild(plan, threadLifecycle);
595
- }
596
- /** Legacy local spawn — the pre-Phase-3 mechanics, kept verbatim behind the flag. */
597
- function launchLocalChild(plan, threadLifecycle) {
405
+ export function launchAgentChild(opts, threadLifecycle) {
598
406
  try {
599
- const outFd = openSync(plan.logFilePath, "a");
600
- let child;
407
+ const outFd = openSync(opts.logFilePath, "a");
601
408
  try {
602
- child = spawn(plan.exe, plan.args, detachedChildOptions(plan.exe, outFd, plan.env, plan.cwd, plan.stdinData !== undefined ? "pipe" : "ignore"));
603
- if (plan.stdinData !== undefined) {
604
- try {
605
- child.stdin?.write(plan.stdinData);
606
- child.stdin?.end();
607
- }
608
- catch {
609
- /* child died at spawn — the exit handler reports it */
610
- }
611
- }
409
+ const { spawnChild, ...reg } = opts;
410
+ return registerSpawnedProcess({ ...reg, child: spawnChild(outFd) }, threadLifecycle);
612
411
  }
613
412
  finally {
614
413
  // Parent no longer needs the fd — the child holds its own duplicated handle.
@@ -616,26 +415,12 @@ function launchLocalChild(plan, threadLifecycle) {
616
415
  closeSync(outFd);
617
416
  }
618
417
  catch (err) {
619
- log.debug(`[spawn] closeSync log fd failed for thread ${plan.threadId}: ${errorMessage(err)}`);
418
+ log.debug(`[spawn] closeSync log fd failed for thread ${opts.threadId}: ${errorMessage(err)}`);
620
419
  }
621
420
  }
622
- return registerSpawnedProcess({
623
- pid: child.pid,
624
- startedAt: Date.now(),
625
- spawnedVia: "local",
626
- attachExit: (onExit) => child.on("exit", (code) => onExit(code)),
627
- unref: () => child.unref(),
628
- threadId: plan.threadId,
629
- name: plan.name,
630
- logFilePath: plan.logFilePath,
631
- configPath: plan.configPath,
632
- agentLabel: plan.agentLabel,
633
- memorySourceThreadId: plan.memorySourceThreadId,
634
- threadType: plan.threadType,
635
- }, threadLifecycle);
636
421
  }
637
422
  catch (err) {
638
- return { error: `Failed to spawn ${plan.agentLabel} process: ${errorMessage(err)}` };
423
+ return { error: `Failed to spawn ${opts.agentLabel} process: ${errorMessage(err)}` };
639
424
  }
640
425
  }
641
426
  //# sourceMappingURL=spawn-common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-common.js","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn-common.js","sourceRoot":"","sources":["../../src/services/spawn-common.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,6 @@ export interface ThreadsHealthOptions {
32
32
  * Hidden threads are still counted in a roll-up line, so nothing is silently
33
33
  * dropped; pass `status: "all"` or `includeDead: true` to see them.
34
34
  */
35
- export declare function getThreadsHealth(getMemoryDb: () => ReturnType<typeof initMemoryDb>, options?: ThreadsHealthOptions): Promise<string>;
35
+ export declare function getThreadsHealth(getMemoryDb: () => ReturnType<typeof initMemoryDb>, options?: ThreadsHealthOptions): string;
36
36
  export {};
37
37
  //# sourceMappingURL=thread-health.service.d.ts.map