sensorium-mcp 3.1.0-refactor.9 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/config/agent-settings.d.ts +6 -0
  2. package/dist/config/agent-settings.d.ts.map +1 -1
  3. package/dist/config/agent-settings.js +22 -0
  4. package/dist/config/agent-settings.js.map +1 -1
  5. package/dist/config/detail-grant.d.ts +39 -0
  6. package/dist/config/detail-grant.d.ts.map +1 -0
  7. package/dist/config/detail-grant.js +61 -0
  8. package/dist/config/detail-grant.js.map +1 -0
  9. package/dist/config/index.d.ts +2 -0
  10. package/dist/config/index.d.ts.map +1 -1
  11. package/dist/config/index.js +5 -3
  12. package/dist/config/index.js.map +1 -1
  13. package/dist/config/misc-settings.d.ts +2 -0
  14. package/dist/config/misc-settings.d.ts.map +1 -1
  15. package/dist/config/misc-settings.js +22 -0
  16. package/dist/config/misc-settings.js.map +1 -1
  17. package/dist/config/settings-store.d.ts +41 -2
  18. package/dist/config/settings-store.d.ts.map +1 -1
  19. package/dist/config/settings-store.js +151 -14
  20. package/dist/config/settings-store.js.map +1 -1
  21. package/dist/dashboard/routes/copilot.d.ts.map +1 -1
  22. package/dist/dashboard/routes/copilot.js +17 -1
  23. package/dist/dashboard/routes/copilot.js.map +1 -1
  24. package/dist/dashboard/routes/settings.d.ts +2 -0
  25. package/dist/dashboard/routes/settings.d.ts.map +1 -1
  26. package/dist/dashboard/routes/settings.js +25 -1
  27. package/dist/dashboard/routes/settings.js.map +1 -1
  28. package/dist/dashboard/routes/threads-read.d.ts.map +1 -1
  29. package/dist/dashboard/routes/threads-read.js +15 -3
  30. package/dist/dashboard/routes/threads-read.js.map +1 -1
  31. package/dist/dashboard/routes/threads.d.ts.map +1 -1
  32. package/dist/dashboard/routes/threads.js +13 -4
  33. package/dist/dashboard/routes/threads.js.map +1 -1
  34. package/dist/dashboard/routes.d.ts.map +1 -1
  35. package/dist/dashboard/routes.js +14 -5
  36. package/dist/dashboard/routes.js.map +1 -1
  37. package/dist/dashboard/spa.html +11 -11
  38. package/dist/data/daily-marker.js +3 -3
  39. package/dist/data/daily-marker.js.map +1 -1
  40. package/dist/data/file-storage.d.ts.map +1 -1
  41. package/dist/data/file-storage.js +3 -3
  42. package/dist/data/file-storage.js.map +1 -1
  43. package/dist/data/memory/bootstrap.d.ts.map +1 -1
  44. package/dist/data/memory/bootstrap.js +2 -3
  45. package/dist/data/memory/bootstrap.js.map +1 -1
  46. package/dist/data/memory/migration-runner.d.ts.map +1 -1
  47. package/dist/data/memory/migration-runner.js +4 -7
  48. package/dist/data/memory/migration-runner.js.map +1 -1
  49. package/dist/data/memory/schema.js +2 -2
  50. package/dist/data/memory/schema.js.map +1 -1
  51. package/dist/index.js +67 -21
  52. package/dist/index.js.map +1 -1
  53. package/dist/lib/logger.d.ts.map +1 -1
  54. package/dist/lib/logger.js +21 -2
  55. package/dist/lib/logger.js.map +1 -1
  56. package/dist/lib/paths.d.ts +29 -0
  57. package/dist/lib/paths.d.ts.map +1 -0
  58. package/dist/lib/paths.js +36 -0
  59. package/dist/lib/paths.js.map +1 -0
  60. package/dist/lib/types.d.ts +1 -0
  61. package/dist/lib/types.d.ts.map +1 -1
  62. package/dist/server/factory.js +16 -6
  63. package/dist/server/factory.js.map +1 -1
  64. package/dist/server/http-server.d.ts.map +1 -1
  65. package/dist/server/http-server.js +52 -20
  66. package/dist/server/http-server.js.map +1 -1
  67. package/dist/services/agent-spawn.service.d.ts +3 -3
  68. package/dist/services/agent-spawn.service.d.ts.map +1 -1
  69. package/dist/services/agent-spawn.service.js +30 -9
  70. package/dist/services/agent-spawn.service.js.map +1 -1
  71. package/dist/services/background-runner.d.ts.map +1 -1
  72. package/dist/services/background-runner.js +22 -12
  73. package/dist/services/background-runner.js.map +1 -1
  74. package/dist/services/broker-client.d.ts +209 -0
  75. package/dist/services/broker-client.d.ts.map +1 -0
  76. package/dist/services/broker-client.js +359 -0
  77. package/dist/services/broker-client.js.map +1 -0
  78. package/dist/services/claude-spawn.service.d.ts +1 -1
  79. package/dist/services/claude-spawn.service.d.ts.map +1 -1
  80. package/dist/services/claude-spawn.service.js +25 -25
  81. package/dist/services/claude-spawn.service.js.map +1 -1
  82. package/dist/services/codex-spawn.service.d.ts +1 -1
  83. package/dist/services/codex-spawn.service.d.ts.map +1 -1
  84. package/dist/services/codex-spawn.service.js +19 -24
  85. package/dist/services/codex-spawn.service.js.map +1 -1
  86. package/dist/services/copilot-spawn.service.d.ts +1 -1
  87. package/dist/services/copilot-spawn.service.d.ts.map +1 -1
  88. package/dist/services/copilot-spawn.service.js +86 -37
  89. package/dist/services/copilot-spawn.service.js.map +1 -1
  90. package/dist/services/dispatcher/broker.d.ts +4 -3
  91. package/dist/services/dispatcher/broker.d.ts.map +1 -1
  92. package/dist/services/dispatcher/broker.js +23 -11
  93. package/dist/services/dispatcher/broker.js.map +1 -1
  94. package/dist/services/dispatcher/lock.js +2 -2
  95. package/dist/services/dispatcher/lock.js.map +1 -1
  96. package/dist/services/dispatcher/poller.d.ts.map +1 -1
  97. package/dist/services/dispatcher/poller.js +24 -5
  98. package/dist/services/dispatcher/poller.js.map +1 -1
  99. package/dist/services/flight-recorder.service.d.ts +37 -0
  100. package/dist/services/flight-recorder.service.d.ts.map +1 -0
  101. package/dist/services/flight-recorder.service.js +210 -0
  102. package/dist/services/flight-recorder.service.js.map +1 -0
  103. package/dist/services/keeper.service.d.ts +9 -0
  104. package/dist/services/keeper.service.d.ts.map +1 -1
  105. package/dist/services/keeper.service.js +198 -39
  106. package/dist/services/keeper.service.js.map +1 -1
  107. package/dist/services/maintenance-signal.d.ts.map +1 -1
  108. package/dist/services/maintenance-signal.js +2 -3
  109. package/dist/services/maintenance-signal.js.map +1 -1
  110. package/dist/services/process.service.d.ts +76 -61
  111. package/dist/services/process.service.d.ts.map +1 -1
  112. package/dist/services/process.service.js +224 -608
  113. package/dist/services/process.service.js.map +1 -1
  114. package/dist/services/reconnect-snapshot.service.js +2 -2
  115. package/dist/services/reconnect-snapshot.service.js.map +1 -1
  116. package/dist/services/scheduler.d.ts +1 -0
  117. package/dist/services/scheduler.d.ts.map +1 -1
  118. package/dist/services/scheduler.js +69 -14
  119. package/dist/services/scheduler.js.map +1 -1
  120. package/dist/services/self-update.service.d.ts +113 -15
  121. package/dist/services/self-update.service.d.ts.map +1 -1
  122. package/dist/services/self-update.service.js +382 -109
  123. package/dist/services/self-update.service.js.map +1 -1
  124. package/dist/services/spawn-common.d.ts +49 -23
  125. package/dist/services/spawn-common.d.ts.map +1 -1
  126. package/dist/services/spawn-common.js +262 -47
  127. package/dist/services/spawn-common.js.map +1 -1
  128. package/dist/services/spawn-exit-watcher.d.ts +43 -0
  129. package/dist/services/spawn-exit-watcher.d.ts.map +1 -0
  130. package/dist/services/spawn-exit-watcher.js +127 -0
  131. package/dist/services/spawn-exit-watcher.js.map +1 -0
  132. package/dist/services/telegram.d.ts +3 -2
  133. package/dist/services/telegram.d.ts.map +1 -1
  134. package/dist/services/telegram.js +8 -5
  135. package/dist/services/telegram.js.map +1 -1
  136. package/dist/services/thread-health.service.d.ts +1 -1
  137. package/dist/services/thread-health.service.d.ts.map +1 -1
  138. package/dist/services/thread-health.service.js +11 -7
  139. package/dist/services/thread-health.service.js.map +1 -1
  140. package/dist/services/thread-lifecycle.service.js +2 -2
  141. package/dist/services/thread-lifecycle.service.js.map +1 -1
  142. package/dist/services/topic.service.d.ts +1 -1
  143. package/dist/services/topic.service.d.ts.map +1 -1
  144. package/dist/services/topic.service.js +3 -2
  145. package/dist/services/topic.service.js.map +1 -1
  146. package/dist/services/worker-cleanup.service.d.ts.map +1 -1
  147. package/dist/services/worker-cleanup.service.js +25 -99
  148. package/dist/services/worker-cleanup.service.js.map +1 -1
  149. package/dist/test-bootstrap.d.ts +39 -0
  150. package/dist/test-bootstrap.d.ts.map +1 -0
  151. package/dist/test-bootstrap.js +78 -0
  152. package/dist/test-bootstrap.js.map +1 -0
  153. package/dist/tools/defs/session-defs.js +1 -1
  154. package/dist/tools/defs/session-defs.js.map +1 -1
  155. package/dist/tools/defs/utility-defs.d.ts.map +1 -1
  156. package/dist/tools/defs/utility-defs.js +4 -3
  157. package/dist/tools/defs/utility-defs.js.map +1 -1
  158. package/dist/tools/delegate-tool.d.ts +1 -1
  159. package/dist/tools/delegate-tool.d.ts.map +1 -1
  160. package/dist/tools/delegate-tool.js +37 -6
  161. package/dist/tools/delegate-tool.js.map +1 -1
  162. package/dist/tools/session-tools.d.ts.map +1 -1
  163. package/dist/tools/session-tools.js +34 -20
  164. package/dist/tools/session-tools.js.map +1 -1
  165. package/dist/tools/utility-tools.js +1 -1
  166. package/dist/tools/utility-tools.js.map +1 -1
  167. package/dist/tools/wait/context.d.ts +13 -0
  168. package/dist/tools/wait/context.d.ts.map +1 -1
  169. package/dist/tools/wait/message-delivery.d.ts.map +1 -1
  170. package/dist/tools/wait/message-delivery.js +2 -3
  171. package/dist/tools/wait/message-delivery.js.map +1 -1
  172. package/dist/tools/wait/poll-loop.d.ts.map +1 -1
  173. package/dist/tools/wait/poll-loop.js +8 -1
  174. package/dist/tools/wait/poll-loop.js.map +1 -1
  175. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker-client.js","sourceRoot":"","sources":["../../src/services/broker-client.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@
5
5
  import type { ThreadLifecycleService } from "./thread-lifecycle.service.js";
6
6
  import { type SpawnResult } from "./spawn-common.js";
7
7
  export declare const resolveClaudePath: () => string | null;
8
- export declare function spawnAgentProcess(claudePath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch", modelOverride?: string): SpawnResult;
8
+ export declare function spawnAgentProcess(claudePath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch", modelOverride?: string): Promise<SpawnResult>;
9
9
  //# sourceMappingURL=claude-spawn.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/claude-spawn.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAYL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,QAAO,MAAM,GAAG,IAQ7C,CAAC;AAqDF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,WAAW,CA+Hb"}
1
+ {"version":3,"file":"claude-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/claude-spawn.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAWL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,QAAO,MAAM,GAAG,IAQ7C,CAAC;AAqDF,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,WAAW,CAAC,CA4HtB"}
@@ -2,7 +2,6 @@
2
2
  * Claude-specific spawn logic: CLI-path resolution and the Claude Code process
3
3
  * launch (per-thread config dir, OAuth-token handling, git-bash discovery).
4
4
  */
5
- import { spawn } from "node:child_process";
6
5
  import { copyFileSync, existsSync, mkdirSync, unlinkSync, readFileSync, writeFileSync, } from "node:fs";
7
6
  import { homedir } from "node:os";
8
7
  import { join } from "node:path";
@@ -11,7 +10,7 @@ import { log } from "../lib/logger.js";
11
10
  import { errorMessage } from "../lib/utils.js";
12
11
  import { PROCESS_BASE_DIR, PROCESS_LOGS_DIR } from "./process.service.js";
13
12
  import { buildClaudeMcpConfig } from "./mcp-config.service.js";
14
- import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, isStartupCleanupInProgress, checkSpawnPreconditions, buildThreadLogPath, buildSessionPrompt, detachedChildOptions, launchAgentChild, stripDenylistedEnvVars, } from "./spawn-common.js";
13
+ import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, isStartupCleanupInProgress, checkSpawnPreconditions, buildThreadLogPath, buildSessionPrompt, launchAgent, stripDenylistedEnvVars, } from "./spawn-common.js";
15
14
  export const resolveClaudePath = () => {
16
15
  const envCmd = process.env.CLAUDE_CLI_CMD ?? getClaudeCliPath();
17
16
  if (envCmd)
@@ -73,7 +72,7 @@ function buildClaudeDebugArgs(threadId) {
73
72
  return [];
74
73
  }
75
74
  }
76
- export function spawnAgentProcess(claudePath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType, modelOverride) {
75
+ export async function spawnAgentProcess(claudePath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType, modelOverride) {
77
76
  if (isStartupCleanupInProgress())
78
77
  return { error: "Server startup cleanup in progress - try again in a few seconds" };
79
78
  const pre = checkSpawnPreconditions("Claude");
@@ -170,7 +169,12 @@ export function spawnAgentProcess(claudePath, name, threadId, threadLifecycle, w
170
169
  break;
171
170
  }
172
171
  }
173
- return launchAgentChild({
172
+ const claudeModel = modelOverride
173
+ ? modelOverride
174
+ : threadType === "worker"
175
+ ? process.env.CLAUDE_WORKER_MODEL || getDefaultWorkerModel()
176
+ : process.env.CLAUDE_MODEL || getDefaultThreadModel();
177
+ return launchAgent({
174
178
  threadId,
175
179
  name,
176
180
  logFilePath,
@@ -178,27 +182,23 @@ export function spawnAgentProcess(claudePath, name, threadId, threadLifecycle, w
178
182
  agentLabel: "Claude",
179
183
  memorySourceThreadId,
180
184
  threadType,
181
- spawnChild: (outFd) => {
182
- const claudeModel = modelOverride
183
- ? modelOverride
184
- : threadType === "worker"
185
- ? process.env.CLAUDE_WORKER_MODEL || getDefaultWorkerModel()
186
- : process.env.CLAUDE_MODEL || getDefaultThreadModel();
187
- return spawn(claudePath, [
188
- "--verbose",
189
- "--dangerously-skip-permissions",
190
- // DIAGNOSTIC (logging-only): agent-side api+mcp debug to a file (not stdout).
191
- ...buildClaudeDebugArgs(threadId),
192
- "--mcp-config",
193
- effectiveConfigPath,
194
- "--model",
195
- claudeModel,
196
- "-p",
197
- buildSessionPrompt(name, threadId),
198
- "--output-format",
199
- "stream-json",
200
- ], detachedChildOptions(claudePath, outFd, spawnEnv, workingDirectory));
201
- },
185
+ exe: claudePath,
186
+ args: [
187
+ "--verbose",
188
+ "--dangerously-skip-permissions",
189
+ // DIAGNOSTIC (logging-only): agent-side api+mcp debug to a file (not stdout).
190
+ ...buildClaudeDebugArgs(threadId),
191
+ "--mcp-config",
192
+ effectiveConfigPath,
193
+ "--model",
194
+ claudeModel,
195
+ "-p",
196
+ buildSessionPrompt(name, threadId),
197
+ "--output-format",
198
+ "stream-json",
199
+ ],
200
+ env: spawnEnv,
201
+ cwd: workingDirectory,
202
202
  }, threadLifecycle);
203
203
  }
204
204
  //# sourceMappingURL=claude-spawn.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-spawn.service.js","sourceRoot":"","sources":["../../src/services/claude-spawn.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-spawn.service.js","sourceRoot":"","sources":["../../src/services/claude-spawn.service.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@
5
5
  import type { ThreadLifecycleService } from "./thread-lifecycle.service.js";
6
6
  import { type SpawnResult } from "./spawn-common.js";
7
7
  export declare const resolveCodexPath: () => string | null;
8
- export declare function spawnCodexProcess(codexPath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch"): SpawnResult;
8
+ export declare function spawnCodexProcess(codexPath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch"): Promise<SpawnResult>;
9
9
  //# sourceMappingURL=codex-spawn.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/codex-spawn.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,IAC4C,CAAC;AA6E1F,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B,WAAW,CA2Eb"}
1
+ {"version":3,"file":"codex-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/codex-spawn.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAQL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,IAC4C,CAAC;AA6E1F,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B,OAAO,CAAC,WAAW,CAAC,CAqDtB"}
@@ -2,14 +2,14 @@
2
2
  * Codex-specific spawn logic: CLI/native-exe resolution (including Volta layout
3
3
  * discovery on Windows) and the Codex `exec` process launch.
4
4
  */
5
- import { spawn, spawnSync } from "node:child_process";
5
+ import { spawnSync } from "node:child_process";
6
6
  import { existsSync, readdirSync } from "node:fs";
7
7
  import { homedir } from "node:os";
8
8
  import { join } from "node:path";
9
9
  import { log } from "../lib/logger.js";
10
10
  import { PROCESS_BASE_DIR } from "./process.service.js";
11
11
  import { buildCodexMcpArgs } from "./mcp-config.service.js";
12
- import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, checkSpawnPreconditions, buildThreadLogPath, detachedChildOptions, launchAgentChild, } from "./spawn-common.js";
12
+ import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, checkSpawnPreconditions, buildThreadLogPath, launchAgent, } from "./spawn-common.js";
13
13
  const CODEX_HOME_DIR = join(PROCESS_BASE_DIR, "codex-home");
14
14
  const DEFAULT_CODEX_MODEL = "";
15
15
  export const resolveCodexPath = () => process.platform === "win32" ? resolveWindowsCliPath("codex") : resolveCliPath("codex");
@@ -58,7 +58,7 @@ const resolveCodexExe = () => {
58
58
  return null;
59
59
  }
60
60
  };
61
- export function spawnCodexProcess(codexPath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType) {
61
+ export async function spawnCodexProcess(codexPath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType) {
62
62
  const pre = checkSpawnPreconditions("Codex");
63
63
  if ("error" in pre)
64
64
  return pre;
@@ -85,7 +85,16 @@ export function spawnCodexProcess(codexPath, name, threadId, threadLifecycle, wo
85
85
  ...(pre.transport.secret ? { SENSORIUM_MCP_SECRET: pre.transport.secret } : {}),
86
86
  ...mcpEnv,
87
87
  });
88
- return launchAgentChild({
88
+ // Resolve the actual executable once, shared by the broker and local paths:
89
+ // native codex.exe when present, else node.exe + codex.js (Volta layout), else
90
+ // the .cmd shim as-is.
91
+ const nativeExe = resolveCodexExe();
92
+ const nodeExeResult = !nativeExe && process.platform === "win32" && /\.(cmd|bat)$/i.test(codexPath)
93
+ ? resolveCodexNodeExe()
94
+ : null;
95
+ const exe = nativeExe ?? nodeExeResult?.nodeExe ?? codexPath;
96
+ const args = nodeExeResult ? [nodeExeResult.codexJs, ...cliArgs] : cliArgs;
97
+ return launchAgent({
89
98
  threadId,
90
99
  name,
91
100
  logFilePath,
@@ -93,26 +102,12 @@ export function spawnCodexProcess(codexPath, name, threadId, threadLifecycle, wo
93
102
  agentLabel: "Codex",
94
103
  memorySourceThreadId,
95
104
  threadType,
96
- spawnChild: (outFd) => {
97
- const nativeExe = resolveCodexExe();
98
- const nodeExeResult = !nativeExe && process.platform === "win32" && /\.(cmd|bat)$/i.test(codexPath)
99
- ? resolveCodexNodeExe()
100
- : null;
101
- // stdin stays a pipe — the autonomous-loop prompt is delivered over it below.
102
- const child = nativeExe
103
- ? spawn(nativeExe, cliArgs, detachedChildOptions(nativeExe, outFd, spawnEnv, workingDirectory, "pipe"))
104
- : nodeExeResult
105
- ? spawn(nodeExeResult.nodeExe, [nodeExeResult.codexJs, ...cliArgs], detachedChildOptions(nodeExeResult.nodeExe, outFd, spawnEnv, workingDirectory, "pipe"))
106
- : spawn(codexPath, cliArgs, detachedChildOptions(codexPath, outFd, spawnEnv, workingDirectory, "pipe"));
107
- try {
108
- child.stdin?.write(prompt + "\n");
109
- child.stdin?.end();
110
- }
111
- catch {
112
- /* child died at spawn — the exit handler reports it */
113
- }
114
- return child;
115
- },
105
+ exe,
106
+ args,
107
+ env: spawnEnv,
108
+ cwd: workingDirectory,
109
+ // stdin is a pipe — the autonomous-loop prompt is delivered over it.
110
+ stdinData: prompt + "\n",
116
111
  }, threadLifecycle);
117
112
  }
118
113
  //# sourceMappingURL=codex-spawn.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-spawn.service.js","sourceRoot":"","sources":["../../src/services/codex-spawn.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC5D,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAkB,EAAE,CAClD,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE1F,MAAM,mBAAmB,GAAG,GAAgD,EAAE;IAC5E,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAClB,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,KAAK,EACL,UAAU,CACX,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,SAAS,CAC9B,QAAQ,EACR,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,CAAC,EAC/D,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CACxD,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAC9D,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CACP,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAkB,EAAE;IAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,IAAI,CACpB,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,wBAAwB,EACxB,OAAO,EACP,WAAW,CACZ,CAAC;QACF,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CACP,+CAA+C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC1F,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,IAAY,EACZ,QAAgB,EAChB,eAAuC,EACvC,gBAAyB,EACzB,oBAA6B,EAC7B,UAAgC;IAEhC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAC/B,gBAAgB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,0HAA0H,IAAI,eAAe,QAAQ,sCAAsC,QAAQ,0FAA0F,QAAQ,6bAA6b,CAAC;IAClvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG;QACd,MAAM;QACN,4CAA4C;QAC5C,uBAAuB;QACvB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,QAAQ;QACR,GAAG,OAAO;QACV,GAAG;KACJ,CAAC;IACF,IAAI,gBAAgB;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,GAAG,CAAC,oBAAoB,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE;YAC3D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,MAAM;KACV,CAAC,CAAC;IACH,OAAO,gBAAgB,CACrB;QACE,QAAQ;QACR,IAAI;QACJ,WAAW;QACX,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,OAAO;QACnB,oBAAoB;QACpB,UAAU;QACV,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,aAAa,GACjB,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC3E,CAAC,CAAC,mBAAmB,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAC;YACX,8EAA8E;YAC9E,MAAM,KAAK,GAAG,SAAS;gBACrB,CAAC,CAAC,KAAK,CACH,SAAS,EACT,OAAO,EACP,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAC3E;gBACH,CAAC,CAAC,aAAa;oBACb,CAAC,CAAC,KAAK,CACH,aAAa,CAAC,OAAO,EACrB,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EACnC,oBAAoB,CAClB,aAAa,CAAC,OAAO,EACrB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,MAAM,CACP,CACF;oBACH,CAAC,CAAC,KAAK,CACH,SAAS,EACT,OAAO,EACP,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAC3E,CAAC;YACR,IAAI,CAAC;gBACH,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;gBAClC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,uDAAuD;YACzD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,EACD,eAAe,CAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"codex-spawn.service.js","sourceRoot":"","sources":["../../src/services/codex-spawn.service.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,5 @@
6
6
  import type { ThreadLifecycleService } from "./thread-lifecycle.service.js";
7
7
  import { type SpawnResult } from "./spawn-common.js";
8
8
  export declare const resolveCopilotPath: () => string | null;
9
- export declare function spawnCopilotProcess(copilotPath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch"): SpawnResult;
9
+ export declare function spawnCopilotProcess(copilotPath: string, name: string, threadId: number, threadLifecycle: ThreadLifecycleService, workingDirectory?: string, memorySourceThreadId?: number, threadType?: "worker" | "branch"): Promise<SpawnResult>;
10
10
  //# sourceMappingURL=copilot-spawn.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/copilot-spawn.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAWL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAgC3B,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAGL,CAAC;AAE3C,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B,WAAW,CAuDb"}
1
+ {"version":3,"file":"copilot-spawn.service.d.ts","sourceRoot":"","sources":["../../src/services/copilot-spawn.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAUL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAsF3B,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAGL,CAAC;AAE3C,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,sBAAsB,EACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAC/B,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
@@ -3,13 +3,13 @@
3
3
  * workspace setup, and the Copilot process launch driven by dashboard settings
4
4
  * (model + optional BYOK / OpenRouter provider).
5
5
  */
6
- import { spawn } from "node:child_process";
7
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
6
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
+ import { homedir } from "node:os";
8
8
  import { join } from "node:path";
9
- import { getCopilotSpawnEnv, getCopilotCustomEnvVars } from "../config/index.js";
9
+ import { getCopilotSpawnEnv, getCopilotCustomEnvVars, getCopilotEffortLevel, getCopilotContextTier, } from "../config/index.js";
10
10
  import { PROCESS_BASE_DIR } from "./process.service.js";
11
11
  import { buildCopilotMcpConfig } from "./mcp-config.service.js";
12
- import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, checkSpawnPreconditions, buildThreadLogPath, buildSessionPrompt, detachedChildOptions, launchAgentChild, stripDenylistedEnvVars, } from "./spawn-common.js";
12
+ import { sanitizeSpawnEnv, resolveCliPath, resolveWindowsCliPath, normalizeWorkingDirectory, checkSpawnPreconditions, buildThreadLogPath, buildSessionPrompt, launchAgent, stripDenylistedEnvVars, } from "./spawn-common.js";
13
13
  const COPILOT_HOME_DIR = "copilot-home";
14
14
  // Provider env vars that BYOK controls. Listed so a spawn can explicitly unset
15
15
  // any ambient values when BYOK is disabled — keeping the dashboard settings, not
@@ -25,6 +25,51 @@ function writeCopilotInstructions(copilotHome) {
25
25
  mkdirSync(copilotHome, { recursive: true });
26
26
  writeFileSync(join(copilotHome, "copilot-instructions.md"), "You are a remote Copilot agent. Start remote session with sensorium. Pass agentType='copilot' to start_session.", "utf-8");
27
27
  }
28
+ // The spawned Copilot runs in COPILOT_HOME — shared across all Copilot threads
29
+ // (see buildCopilotMcpConfig's CAVEAT), rewritten on every spawn. That home has
30
+ // no login, so GitHub-native models ("claude-opus-4.8") are rejected as "not
31
+ // available". Mirror ONLY the host's current Copilot identity record — never the
32
+ // OAuth token, which stays in the shared OS credential store — so the home
33
+ // inherits whatever account (personal or corporate) the operator is currently
34
+ // logged into. Read live on every spawn (no caching) so switching the active
35
+ // account is picked up automatically. The mirrored content is deterministic (it
36
+ // depends only on the host config, not the spawning thread), so concurrent spawns
37
+ // racing on this write converge to identical bytes. Silent no-op for BYOK /
38
+ // not-logged-in so those paths never break.
39
+ function writeCopilotIdentity(copilotHome) {
40
+ // The Copilot CLI writes config.json as JSONC — a "// managed automatically"
41
+ // comment header sits above the object. Strip whole-line comments (never the
42
+ // "//" inside "https://…" values, which are not at line start) before parsing.
43
+ const readJson = (path) => {
44
+ try {
45
+ const raw = readFileSync(path, "utf-8").replace(/^\s*\/\/.*$/gm, "");
46
+ return JSON.parse(raw);
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ };
52
+ const hostConfig = readJson(join(homedir(), ".copilot", "config.json"));
53
+ const loggedInUsers = hostConfig?.loggedInUsers;
54
+ if (!Array.isArray(loggedInUsers) || loggedInUsers.length === 0)
55
+ return;
56
+ mkdirSync(copilotHome, { recursive: true });
57
+ const targetPath = join(copilotHome, "config.json");
58
+ const existing = readJson(targetPath) ?? {};
59
+ const merged = {
60
+ ...existing,
61
+ loggedInUsers,
62
+ lastLoggedInUser: hostConfig?.lastLoggedInUser,
63
+ };
64
+ writeFileSync(targetPath, JSON.stringify(merged, null, 2), "utf-8");
65
+ }
66
+ // The Copilot CLI reads the model + reasoning knobs from its own home settings.json.
67
+ // Writing it here (instead of passing --model) sidesteps GitHub's intermittent
68
+ // "Model not available" rejections on the flag path.
69
+ function writeCopilotSettings(copilotHome, model) {
70
+ mkdirSync(copilotHome, { recursive: true });
71
+ writeFileSync(join(copilotHome, "settings.json"), JSON.stringify({ model, effortLevel: getCopilotEffortLevel(), contextTier: getCopilotContextTier() }, null, 2), "utf-8");
72
+ }
28
73
  function ensureCopilotWorkspace(baseDir) {
29
74
  const wsDir = join(baseDir, "copilot-workspace");
30
75
  mkdirSync(wsDir, { recursive: true });
@@ -36,7 +81,7 @@ function ensureCopilotWorkspace(baseDir) {
36
81
  export const resolveCopilotPath = () => process.platform === "win32"
37
82
  ? resolveWindowsCliPath("copilot")
38
83
  : resolveCliPath("copilot", /\.exe$/i);
39
- export function spawnCopilotProcess(copilotPath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType) {
84
+ export async function spawnCopilotProcess(copilotPath, name, threadId, threadLifecycle, workingDirectory, memorySourceThreadId, threadType) {
40
85
  const pre = checkSpawnPreconditions("Copilot");
41
86
  if ("error" in pre)
42
87
  return pre;
@@ -45,8 +90,31 @@ export function spawnCopilotProcess(copilotPath, name, threadId, threadLifecycle
45
90
  const copilotHomeDir = join(PROCESS_BASE_DIR, COPILOT_HOME_DIR);
46
91
  buildCopilotMcpConfig(pre.transport, copilotHomeDir, threadId);
47
92
  writeCopilotInstructions(copilotHomeDir);
93
+ writeCopilotIdentity(copilotHomeDir);
48
94
  const logFilePath = buildThreadLogPath(name, threadId, "json");
49
- return launchAgentChild({
95
+ // Copilot model + BYOK provider config come from dashboard settings. Settings
96
+ // drive both the model and (optionally) a BYOK provider; provider vars the
97
+ // settings don't supply are explicitly unset so ambient env can't silently
98
+ // keep BYOK on.
99
+ const copilotEnv = getCopilotSpawnEnv();
100
+ const model = copilotEnv.COPILOT_MODEL;
101
+ writeCopilotSettings(copilotHomeDir, model);
102
+ const providerEnv = {};
103
+ for (const k of COPILOT_PROVIDER_ENV_KEYS)
104
+ providerEnv[k] = copilotEnv[k];
105
+ // Custom vars first so the locked built-ins/provider vars that follow win;
106
+ // denylisted keys are stripped so a custom entry can't re-inject a BYOK secret.
107
+ const customEnv = stripDenylistedEnvVars(getCopilotCustomEnvVars());
108
+ const spawnEnv = sanitizeSpawnEnv({
109
+ ...customEnv,
110
+ COPILOT_HOME: copilotHomeDir,
111
+ COPILOT_MODEL: model,
112
+ ...providerEnv,
113
+ ...(memorySourceThreadId !== undefined
114
+ ? { MEMORY_SOURCE_THREAD_ID: String(memorySourceThreadId) }
115
+ : {}),
116
+ });
117
+ return launchAgent({
50
118
  threadId,
51
119
  name,
52
120
  logFilePath,
@@ -54,37 +122,18 @@ export function spawnCopilotProcess(copilotPath, name, threadId, threadLifecycle
54
122
  agentLabel: "Copilot",
55
123
  memorySourceThreadId,
56
124
  threadType,
57
- spawnChild: (outFd) => {
58
- // Copilot model + BYOK provider config come from dashboard settings. Settings
59
- // drive both the model and (optionally) a BYOK provider; provider vars the
60
- // settings don't supply are explicitly unset so ambient env can't silently
61
- // keep BYOK on.
62
- const copilotEnv = getCopilotSpawnEnv();
63
- const model = copilotEnv.COPILOT_MODEL;
64
- const providerEnv = {};
65
- for (const k of COPILOT_PROVIDER_ENV_KEYS)
66
- providerEnv[k] = copilotEnv[k];
67
- // Custom vars first so the locked built-ins/provider vars that follow win;
68
- // denylisted keys are stripped so a custom entry can't re-inject a BYOK secret.
69
- const customEnv = stripDenylistedEnvVars(getCopilotCustomEnvVars());
70
- const spawnEnv = sanitizeSpawnEnv({
71
- ...customEnv,
72
- COPILOT_HOME: copilotHomeDir,
73
- COPILOT_MODEL: model,
74
- ...providerEnv,
75
- ...(memorySourceThreadId !== undefined
76
- ? { MEMORY_SOURCE_THREAD_ID: String(memorySourceThreadId) }
77
- : {}),
78
- });
79
- return spawn(copilotPath, [
80
- "-p",
81
- buildSessionPrompt(name, threadId),
82
- "--allow-all-tools",
83
- "--model",
84
- model,
85
- "--autopilot",
86
- ], detachedChildOptions(copilotPath, outFd, spawnEnv, workingDirectory));
87
- },
125
+ exe: copilotPath,
126
+ args: [
127
+ "-p",
128
+ buildSessionPrompt(name, threadId),
129
+ "--allow-all-tools",
130
+ "--allow-all-paths",
131
+ "--model",
132
+ model,
133
+ "--autopilot",
134
+ ],
135
+ env: spawnEnv,
136
+ cwd: workingDirectory,
88
137
  }, threadLifecycle);
89
138
  }
90
139
  //# sourceMappingURL=copilot-spawn.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-spawn.service.js","sourceRoot":"","sources":["../../src/services/copilot-spawn.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot-spawn.service.js","sourceRoot":"","sources":["../../src/services/copilot-spawn.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAExC,+EAA+E;AAC/E,iFAAiF;AACjF,8DAA8D;AAC9D,MAAM,yBAAyB,GAAG;IAChC,2BAA2B;IAC3B,uBAAuB;IACvB,0BAA0B;IAC1B,2BAA2B;IAC3B,6BAA6B;CACrB,CAAC;AAEX,SAAS,wBAAwB,CAAC,WAAmB;IACnD,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,EAC5C,iHAAiH,EACjH,OAAO,CACR,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,iFAAiF;AACjF,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,gFAAgF;AAChF,kFAAkF;AAClF,4EAA4E;AAC5E,4CAA4C;AAC5C,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,6EAA6E;IAC7E,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAkC,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,UAAU,EAAE,aAAa,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExE,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG;QACb,GAAG,QAAQ;QACX,aAAa;QACb,gBAAgB,EAAE,UAAU,EAAE,gBAAgB;KAC/C,CAAC;IACF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,qFAAqF;AACrF,+EAA+E;AAC/E,qDAAqD;AACrD,SAAS,oBAAoB,CAAC,WAAmB,EAAE,KAAa;IAC9D,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAClC,IAAI,CAAC,SAAS,CACZ,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE,EACrF,IAAI,EACJ,CAAC,CACF,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACjD,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CACpD,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC;IAClC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,IAAY,EACZ,QAAgB,EAChB,eAAuC,EACvC,gBAAyB,EACzB,oBAA6B,EAC7B,UAAgC;IAEhC,MAAM,GAAG,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAC/B,gBAAgB;QACd,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1F,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAChE,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC/D,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACzC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,gBAAgB;IAChB,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC;IACvC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAuC,EAAE,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,yBAAyB;QAAE,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1E,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,SAAS,GAAG,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,GAAG,SAAS;QACZ,YAAY,EAAE,cAAc;QAC5B,aAAa,EAAE,KAAK;QACpB,GAAG,WAAW;QACd,GAAG,CAAC,oBAAoB,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE;YAC3D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,OAAO,WAAW,CAChB;QACE,QAAQ;QACR,IAAI;QACJ,WAAW;QACX,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,SAAS;QACrB,oBAAoB;QACpB,UAAU;QACV,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE;YACJ,IAAI;YACJ,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;YAClC,mBAAmB;YACnB,mBAAmB;YACnB,SAAS;YACT,KAAK;YACL,aAAa;SACd;QACD,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,gBAAgB;KACtB,EACD,eAAe,CAChB,CAAC;AACJ,CAAC"}
@@ -18,9 +18,10 @@ export interface StoredReaction {
18
18
  export declare function writeReactionFile(reaction: StoredReaction): void;
19
19
  /**
20
20
  * Read and clear the pending reaction (if any).
21
- * When threadId is provided, reads from the per-thread file first,
22
- * falling back to the global file only when the reaction belongs to
23
- * the requesting thread (or has no known thread mapping).
21
+ * When threadId is provided, reads from the per-thread file first, then falls
22
+ * back to the global file — but only consumes a global reaction whose owner is
23
+ * known to be exactly this thread (see readGlobalReactionGuarded). Unknown-owner
24
+ * reactions are left for the general session and never stolen by a thread.
24
25
  * Returns null if no reaction is pending.
25
26
  */
26
27
  export declare function readPendingReaction(threadId?: number): StoredReaction | null;
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/services/dispatcher/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../../src/services/dispatcher/broker.ts"],"names":[],"mappings":"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"}
@@ -6,16 +6,16 @@
6
6
  * Each MCP instance reads from its own thread file — contention-free.
7
7
  */
8
8
  import { mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
9
- import { homedir } from "node:os";
10
9
  import { join } from "node:path";
11
10
  import { log } from "../../lib/logger.js";
11
+ import { dataDir } from "../../lib/paths.js";
12
12
  import { isPidAlive } from "./lock.js";
13
13
  import { initMemoryDb } from "../../data/memory/schema.js";
14
14
  import { errorMessage } from "../../lib/utils.js";
15
15
  // ---------------------------------------------------------------------------
16
16
  // Paths
17
17
  // ---------------------------------------------------------------------------
18
- const BASE_DIR = join(homedir(), ".remote-copilot-mcp");
18
+ const BASE_DIR = dataDir();
19
19
  const THREADS_DIR = join(BASE_DIR, "threads");
20
20
  export const OFFSET_FILE = join(BASE_DIR, "offset");
21
21
  // ---------------------------------------------------------------------------
@@ -110,9 +110,10 @@ export function writeReactionFile(reaction) {
110
110
  }
111
111
  /**
112
112
  * Read and clear the pending reaction (if any).
113
- * When threadId is provided, reads from the per-thread file first,
114
- * falling back to the global file only when the reaction belongs to
115
- * the requesting thread (or has no known thread mapping).
113
+ * When threadId is provided, reads from the per-thread file first, then falls
114
+ * back to the global file — but only consumes a global reaction whose owner is
115
+ * known to be exactly this thread (see readGlobalReactionGuarded). Unknown-owner
116
+ * reactions are left for the general session and never stolen by a thread.
116
117
  * Returns null if no reaction is pending.
117
118
  */
118
119
  export function readPendingReaction(threadId) {
@@ -129,9 +130,17 @@ export function readPendingReaction(threadId) {
129
130
  }
130
131
  /**
131
132
  * Read the global reaction file with thread-ownership guard.
132
- * If `requestingThreadId` is provided, the reaction is only consumed when
133
- * its messageId maps to the requesting thread or has no known mapping.
134
- * Reactions that belong to a *different* thread are left untouched.
133
+ *
134
+ * The global file only ever holds reactions whose owning thread was *unknown*
135
+ * at write time (`writeReactionFile` routes known-owner reactions straight to a
136
+ * per-thread file). A specific thread therefore cannot prove it owns anything
137
+ * found here, so when `requestingThreadId` is provided we consume the reaction
138
+ * only if its messageId maps back to exactly that thread — an unknown owner (or
139
+ * a different thread) is left untouched rather than misrouted to the first
140
+ * thread that happens to poll.
141
+ *
142
+ * When `requestingThreadId` is undefined (the general / topic-less session),
143
+ * the reaction has no thread to belong to and is consumed unconditionally.
135
144
  */
136
145
  function readGlobalReactionGuarded(requestingThreadId) {
137
146
  // Atomically consume the file by renaming first to prevent duplicate reads.
@@ -168,11 +177,14 @@ function readGlobalReactionGuarded(requestingThreadId) {
168
177
  }
169
178
  return null;
170
179
  }
171
- // When a specific thread is asking, verify the reaction belongs to it.
180
+ // When a specific thread is asking, only consume when the reaction's owner is
181
+ // KNOWN and is exactly this thread. An unknown owner (undefined) or a different
182
+ // thread must never be consumed here — otherwise the first thread to poll would
183
+ // steal a reaction that belongs to (or may belong to) another thread.
172
184
  if (requestingThreadId !== undefined) {
173
185
  const ownerThread = lookupThreadForMessage(reaction.messageId);
174
- if (ownerThread !== undefined && ownerThread !== requestingThreadId) {
175
- // Reaction belongs to a different thread — put it back.
186
+ if (ownerThread !== requestingThreadId) {
187
+ // Not provably ours — put it back untouched.
176
188
  try {
177
189
  renameSync(tmp, REACTION_FILE);
178
190
  }