@qduc/term2 0.22.0 → 0.23.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 (426) hide show
  1. package/dist/agent.d.ts +1 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +18 -10
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +19 -1
  7. package/dist/app.js.map +1 -1
  8. package/dist/cli.js +26 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/components/common/MenuContainer.d.ts +10 -0
  11. package/dist/components/common/MenuContainer.d.ts.map +1 -1
  12. package/dist/components/common/MenuContainer.js +53 -29
  13. package/dist/components/common/MenuContainer.js.map +1 -1
  14. package/dist/components/input/ApplicationInputSurface.js +1 -1
  15. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  16. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  17. package/dist/components/input/ModelMenuSession.js +7 -21
  18. package/dist/components/input/ModelMenuSession.js.map +1 -1
  19. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
  20. package/dist/components/input/SettingsMenuSession.js +8 -5
  21. package/dist/components/input/SettingsMenuSession.js.map +1 -1
  22. package/dist/components/input/SubagentPoolMenuSession.d.ts +9 -0
  23. package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -0
  24. package/dist/components/input/{MentorPoolMenuSession.js → SubagentPoolMenuSession.js} +21 -17
  25. package/dist/components/input/SubagentPoolMenuSession.js.map +1 -0
  26. package/dist/components/input/menu-controller.d.ts.map +1 -1
  27. package/dist/components/input/menu-controller.js +4 -3
  28. package/dist/components/input/menu-controller.js.map +1 -1
  29. package/dist/components/input/menu-registry.js +2 -2
  30. package/dist/components/input/menu-registry.js.map +1 -1
  31. package/dist/components/input/menu-types.d.ts +5 -1
  32. package/dist/components/input/menu-types.d.ts.map +1 -1
  33. package/dist/components/input/triggers.d.ts.map +1 -1
  34. package/dist/components/input/triggers.js +10 -7
  35. package/dist/components/input/triggers.js.map +1 -1
  36. package/dist/components/layout/Banner.d.ts.map +1 -1
  37. package/dist/components/layout/Banner.js +4 -1
  38. package/dist/components/layout/Banner.js.map +1 -1
  39. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  40. package/dist/components/layout/StatusBar.js +10 -17
  41. package/dist/components/layout/StatusBar.js.map +1 -1
  42. package/dist/components/menu/ModelSelectionMenu.js +2 -2
  43. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  44. package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
  45. package/dist/components/menu/ProfileSelectionMenu.js +12 -12
  46. package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
  47. package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
  48. package/dist/components/menu/ResumeSelectionMenu.js +10 -10
  49. package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
  50. package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
  51. package/dist/components/menu/SettingsSelectionMenu.js +3 -1
  52. package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
  53. package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
  54. package/dist/components/menu/SkillSelectionMenu.js +10 -10
  55. package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
  56. package/dist/components/menu/StandaloneModelPickerApp.d.ts +3 -3
  57. package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -1
  58. package/dist/components/menu/StandaloneModelPickerApp.js +9 -10
  59. package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -1
  60. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts +19 -0
  61. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -0
  62. package/dist/components/menu/{MentorPoolSelectionMenu.js → SubagentPoolSelectionMenu.js} +29 -15
  63. package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -0
  64. package/dist/components/message/MessageList.d.ts +2 -1
  65. package/dist/components/message/MessageList.d.ts.map +1 -1
  66. package/dist/components/message/MessageList.js +12 -38
  67. package/dist/components/message/MessageList.js.map +1 -1
  68. package/dist/context/InputContext.d.ts +1 -1
  69. package/dist/context/InputContext.d.ts.map +1 -1
  70. package/dist/context/InputContext.js +2 -2
  71. package/dist/context/InputContext.js.map +1 -1
  72. package/dist/contracts/conversation-items.d.ts +4 -0
  73. package/dist/contracts/conversation-items.d.ts.map +1 -1
  74. package/dist/contracts/provider-input.d.ts +2 -0
  75. package/dist/contracts/provider-input.d.ts.map +1 -1
  76. package/dist/contracts/provider-input.js.map +1 -1
  77. package/dist/gateway/assertion.d.ts +1 -1
  78. package/dist/gateway/assertion.d.ts.map +1 -1
  79. package/dist/gateway/contracts.d.ts +13 -3
  80. package/dist/gateway/contracts.d.ts.map +1 -1
  81. package/dist/gateway/contracts.js +56 -0
  82. package/dist/gateway/contracts.js.map +1 -1
  83. package/dist/gateway/gateway.d.ts +40 -1
  84. package/dist/gateway/gateway.d.ts.map +1 -1
  85. package/dist/gateway/gateway.js +1319 -76
  86. package/dist/gateway/gateway.js.map +1 -1
  87. package/dist/gateway/persistence/admission-persistence.d.ts +3 -3
  88. package/dist/gateway/persistence/admission-persistence.d.ts.map +1 -1
  89. package/dist/gateway/persistence/admission-persistence.js +25 -11
  90. package/dist/gateway/persistence/admission-persistence.js.map +1 -1
  91. package/dist/gateway/persistence/contracts.d.ts +5 -3
  92. package/dist/gateway/persistence/contracts.d.ts.map +1 -1
  93. package/dist/gateway/persistence/contracts.js +13 -0
  94. package/dist/gateway/persistence/contracts.js.map +1 -1
  95. package/dist/gateway/persistence/interaction-checkpoint.d.ts +5 -0
  96. package/dist/gateway/persistence/interaction-checkpoint.d.ts.map +1 -1
  97. package/dist/gateway/persistence/interaction-checkpoint.js +22 -0
  98. package/dist/gateway/persistence/interaction-checkpoint.js.map +1 -1
  99. package/dist/gateway/persistence/projection.d.ts.map +1 -1
  100. package/dist/gateway/persistence/projection.js +4 -1
  101. package/dist/gateway/persistence/projection.js.map +1 -1
  102. package/dist/gateway/persistence/session-index.d.ts +1 -1
  103. package/dist/gateway/persistence/session-index.d.ts.map +1 -1
  104. package/dist/gateway/persistence/session-index.js +2 -2
  105. package/dist/gateway/persistence/session-index.js.map +1 -1
  106. package/dist/gateway/persistence/session-snapshot.d.ts +32 -0
  107. package/dist/gateway/persistence/session-snapshot.d.ts.map +1 -0
  108. package/dist/gateway/persistence/session-snapshot.js +50 -0
  109. package/dist/gateway/persistence/session-snapshot.js.map +1 -0
  110. package/dist/gateway/runtime-factory.d.ts +37 -1
  111. package/dist/gateway/runtime-factory.d.ts.map +1 -1
  112. package/dist/gateway/runtime-factory.js +155 -24
  113. package/dist/gateway/runtime-factory.js.map +1 -1
  114. package/dist/gateway/safe-log.d.ts +1 -1
  115. package/dist/gateway/safe-log.d.ts.map +1 -1
  116. package/dist/gateway/safe-log.js +5 -46
  117. package/dist/gateway/safe-log.js.map +1 -1
  118. package/dist/gateway/serve-args.d.ts +53 -0
  119. package/dist/gateway/serve-args.d.ts.map +1 -0
  120. package/dist/gateway/serve-args.js +172 -0
  121. package/dist/gateway/serve-args.js.map +1 -0
  122. package/dist/gateway/serve.d.ts +79 -0
  123. package/dist/gateway/serve.d.ts.map +1 -0
  124. package/dist/gateway/serve.js +375 -0
  125. package/dist/gateway/serve.js.map +1 -0
  126. package/dist/gateway/server-session.d.ts +9 -0
  127. package/dist/gateway/server-session.d.ts.map +1 -1
  128. package/dist/gateway/server-session.js +142 -26
  129. package/dist/gateway/server-session.js.map +1 -1
  130. package/dist/gateway/server.d.ts.map +1 -1
  131. package/dist/gateway/server.js +13 -2
  132. package/dist/gateway/server.js.map +1 -1
  133. package/dist/hooks/use-slash-commands.d.ts.map +1 -1
  134. package/dist/hooks/use-slash-commands.js +19 -13
  135. package/dist/hooks/use-slash-commands.js.map +1 -1
  136. package/dist/hooks/use-subagent-pool-selection.d.ts +115 -0
  137. package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -0
  138. package/dist/hooks/{use-mentor-pool-selection.js → use-subagent-pool-selection.js} +168 -100
  139. package/dist/hooks/use-subagent-pool-selection.js.map +1 -0
  140. package/dist/lib/agent-client.d.ts +3 -0
  141. package/dist/lib/agent-client.d.ts.map +1 -1
  142. package/dist/lib/agent-client.js +7 -0
  143. package/dist/lib/agent-client.js.map +1 -1
  144. package/dist/lib/agent-configuration.d.ts +1 -0
  145. package/dist/lib/agent-configuration.d.ts.map +1 -1
  146. package/dist/lib/agent-configuration.js +3 -0
  147. package/dist/lib/agent-configuration.js.map +1 -1
  148. package/dist/lib/agent-factory.d.ts +2 -0
  149. package/dist/lib/agent-factory.d.ts.map +1 -1
  150. package/dist/lib/agent-factory.js +5 -0
  151. package/dist/lib/agent-factory.js.map +1 -1
  152. package/dist/lib/subagent-bridge.d.ts +5 -0
  153. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  154. package/dist/lib/subagent-bridge.js +5 -0
  155. package/dist/lib/subagent-bridge.js.map +1 -1
  156. package/dist/lib/tool-selection-policy.d.ts +2 -0
  157. package/dist/lib/tool-selection-policy.d.ts.map +1 -1
  158. package/dist/lib/tool-selection-policy.js +6 -1
  159. package/dist/lib/tool-selection-policy.js.map +1 -1
  160. package/dist/prompts/explorer-delegation-contract.test.ts +1 -1
  161. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  162. package/dist/prompts/prompt-constructor.js +1 -0
  163. package/dist/prompts/prompt-constructor.js.map +1 -1
  164. package/dist/prompts/prompt-constructor.test.ts +3 -0
  165. package/dist/prompts/prompt-constructor.ts +1 -0
  166. package/dist/prompts/prompt-profiles.d.ts.map +1 -1
  167. package/dist/prompts/prompt-profiles.js +3 -2
  168. package/dist/prompts/prompt-profiles.js.map +1 -1
  169. package/dist/prompts/prompt-profiles.ts +4 -2
  170. package/dist/prompts/subagent-delegation.d.ts +2 -1
  171. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  172. package/dist/prompts/subagent-delegation.js +10 -5
  173. package/dist/prompts/subagent-delegation.js.map +1 -1
  174. package/dist/prompts/subagent-delegation.test.ts +10 -3
  175. package/dist/prompts/subagent-delegation.ts +16 -4
  176. package/dist/prompts/subagents/librarian.md +26 -21
  177. package/dist/prompts/subagents/reviewer.md +33 -0
  178. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  179. package/dist/services/agent-runtime/application-run-loop.js +10 -5
  180. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  181. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +9 -0
  182. package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
  183. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +6 -0
  184. package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
  185. package/dist/services/agent-runtime/model-resolver.d.ts +6 -0
  186. package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
  187. package/dist/services/agent-runtime/model-resolver.js +18 -26
  188. package/dist/services/agent-runtime/model-resolver.js.map +1 -1
  189. package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -1
  190. package/dist/services/approval/non-interactive-approval-policy.js +2 -1
  191. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  192. package/dist/services/approval/shell-auto-approval-evaluator.js +2 -2
  193. package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
  194. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  195. package/dist/services/conversation/conversation-orchestrator.js +42 -22
  196. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  197. package/dist/services/conversation/conversation-service.d.ts +28 -0
  198. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  199. package/dist/services/conversation/conversation-service.js +95 -27
  200. package/dist/services/conversation/conversation-service.js.map +1 -1
  201. package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -1
  202. package/dist/services/conversation/run-item-normalizer.js +3 -0
  203. package/dist/services/conversation/run-item-normalizer.js.map +1 -1
  204. package/dist/services/conversation/session-browser.d.ts +5 -0
  205. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  206. package/dist/services/conversation/session-browser.js +94 -31
  207. package/dist/services/conversation/session-browser.js.map +1 -1
  208. package/dist/services/conversation/session-index/session-index-database.d.ts +1 -0
  209. package/dist/services/conversation/session-index/session-index-database.d.ts.map +1 -1
  210. package/dist/services/conversation/session-index/session-index-database.js +6 -4
  211. package/dist/services/conversation/session-index/session-index-database.js.map +1 -1
  212. package/dist/services/conversation/session-index/session-index-schema.d.ts +1 -1
  213. package/dist/services/conversation/session-index/session-index-schema.d.ts.map +1 -1
  214. package/dist/services/conversation/session-index/session-index-schema.js +2 -1
  215. package/dist/services/conversation/session-index/session-index-schema.js.map +1 -1
  216. package/dist/services/conversation-agent-client.d.ts +3 -0
  217. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  218. package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
  219. package/dist/services/memory/memory-capabilities.js +2 -5
  220. package/dist/services/memory/memory-capabilities.js.map +1 -1
  221. package/dist/services/models/model-picker-host.d.ts +4 -4
  222. package/dist/services/models/model-picker-host.d.ts.map +1 -1
  223. package/dist/services/models/model-picker-host.js +9 -6
  224. package/dist/services/models/model-picker-host.js.map +1 -1
  225. package/dist/services/plan-mode-interceptor.js +2 -2
  226. package/dist/services/plan-mode-interceptor.js.map +1 -1
  227. package/dist/services/sandboxed-code-host/host-types.d.ts +12 -1
  228. package/dist/services/sandboxed-code-host/host-types.d.ts.map +1 -1
  229. package/dist/services/sandboxed-code-host/host-types.js.map +1 -1
  230. package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -1
  231. package/dist/services/sandboxed-code-host/host-worker.js +146 -31
  232. package/dist/services/sandboxed-code-host/host-worker.js.map +1 -1
  233. package/dist/services/sandboxed-code-host/sandbox.d.ts +6 -1
  234. package/dist/services/sandboxed-code-host/sandbox.d.ts.map +1 -1
  235. package/dist/services/sandboxed-code-host/sandbox.js +5 -0
  236. package/dist/services/sandboxed-code-host/sandbox.js.map +1 -1
  237. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts +3 -3
  238. package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts.map +1 -1
  239. package/dist/services/sandboxed-code-host/sandboxed-code-host.js +173 -22
  240. package/dist/services/sandboxed-code-host/sandboxed-code-host.js.map +1 -1
  241. package/dist/services/session/session-access-state.d.ts +5 -1
  242. package/dist/services/session/session-access-state.d.ts.map +1 -1
  243. package/dist/services/session/session-access-state.js +8 -1
  244. package/dist/services/session/session-access-state.js.map +1 -1
  245. package/dist/services/session/session-client-factory.d.ts +1 -0
  246. package/dist/services/session/session-client-factory.d.ts.map +1 -1
  247. package/dist/services/session/session-client-factory.js +1 -1
  248. package/dist/services/session/session-client-factory.js.map +1 -1
  249. package/dist/services/session/session-composition.d.ts +22 -4
  250. package/dist/services/session/session-composition.d.ts.map +1 -1
  251. package/dist/services/session/session-composition.js +9 -5
  252. package/dist/services/session/session-composition.js.map +1 -1
  253. package/dist/services/settings/ancillary-settings-migration.d.ts.map +1 -1
  254. package/dist/services/settings/ancillary-settings-migration.js +8 -1
  255. package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
  256. package/dist/services/settings/settings-schema.d.ts +12 -40
  257. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  258. package/dist/services/settings/settings-schema.js +27 -53
  259. package/dist/services/settings/settings-schema.js.map +1 -1
  260. package/dist/services/settings/settings-sources.d.ts +0 -3
  261. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  262. package/dist/services/settings/settings-sources.js +0 -3
  263. package/dist/services/settings/settings-sources.js.map +1 -1
  264. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  265. package/dist/services/settings/settings-ui-metadata.js +3 -3
  266. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  267. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -1
  268. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  269. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +5 -8
  270. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  271. package/dist/services/subagents/nested-runner.d.ts +3 -0
  272. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  273. package/dist/services/subagents/nested-runner.js +31 -4
  274. package/dist/services/subagents/nested-runner.js.map +1 -1
  275. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  276. package/dist/services/subagents/role-loader.js +7 -12
  277. package/dist/services/subagents/role-loader.js.map +1 -1
  278. package/dist/services/subagents/runtime.d.ts +3 -0
  279. package/dist/services/subagents/runtime.d.ts.map +1 -1
  280. package/dist/services/subagents/runtime.js +35 -3
  281. package/dist/services/subagents/runtime.js.map +1 -1
  282. package/dist/services/subagents/subagent-async-registry.d.ts +10 -1
  283. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
  284. package/dist/services/subagents/subagent-async-registry.js +21 -4
  285. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  286. package/dist/services/subagents/subagent-manager.d.ts +3 -0
  287. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  288. package/dist/services/subagents/subagent-manager.js.map +1 -1
  289. package/dist/services/subagents/subagent-pool-config.d.ts +39 -0
  290. package/dist/services/subagents/subagent-pool-config.d.ts.map +1 -0
  291. package/dist/services/subagents/subagent-pool-config.js +84 -0
  292. package/dist/services/subagents/subagent-pool-config.js.map +1 -0
  293. package/dist/services/subagents/subagent-role-pool-selector.d.ts +29 -0
  294. package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -0
  295. package/dist/services/subagents/subagent-role-pool-selector.js +56 -0
  296. package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -0
  297. package/dist/services/subagents/tool-policy.d.ts +13 -0
  298. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  299. package/dist/services/subagents/tool-policy.js +36 -4
  300. package/dist/services/subagents/tool-policy.js.map +1 -1
  301. package/dist/services/subagents/types.d.ts +1 -1
  302. package/dist/services/subagents/types.d.ts.map +1 -1
  303. package/dist/services/subagents/types.js +1 -1
  304. package/dist/services/subagents/types.js.map +1 -1
  305. package/dist/test-helpers/outside-sandbox-temp-dir.d.ts +2 -0
  306. package/dist/test-helpers/outside-sandbox-temp-dir.d.ts.map +1 -0
  307. package/dist/test-helpers/outside-sandbox-temp-dir.js +38 -0
  308. package/dist/test-helpers/outside-sandbox-temp-dir.js.map +1 -0
  309. package/dist/tools/agent/configure-task-check-in.d.ts +2 -0
  310. package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -1
  311. package/dist/tools/agent/configure-task-check-in.js +3 -0
  312. package/dist/tools/agent/configure-task-check-in.js.map +1 -1
  313. package/dist/tools/agent/run-explorer.d.ts +6 -0
  314. package/dist/tools/agent/run-explorer.d.ts.map +1 -0
  315. package/dist/tools/agent/run-explorer.js +58 -0
  316. package/dist/tools/agent/run-explorer.js.map +1 -0
  317. package/dist/tools/agent/run-subagent-async.d.ts +2 -0
  318. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  319. package/dist/tools/agent/run-subagent-async.js +3 -3
  320. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  321. package/dist/tools/agent/run-subagent.d.ts +2 -2
  322. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  323. package/dist/tools/agent/run-subagent.js +8 -6
  324. package/dist/tools/agent/run-subagent.js.map +1 -1
  325. package/dist/tools/file/apply-patch.d.ts.map +1 -1
  326. package/dist/tools/file/apply-patch.js +7 -2
  327. package/dist/tools/file/apply-patch.js.map +1 -1
  328. package/dist/tools/file/create-file.d.ts.map +1 -1
  329. package/dist/tools/file/create-file.js +4 -0
  330. package/dist/tools/file/create-file.js.map +1 -1
  331. package/dist/tools/file/edit-healing.d.ts.map +1 -1
  332. package/dist/tools/file/edit-healing.js +1 -4
  333. package/dist/tools/file/edit-healing.js.map +1 -1
  334. package/dist/tools/file/glob.d.ts.map +1 -1
  335. package/dist/tools/file/glob.js +6 -0
  336. package/dist/tools/file/glob.js.map +1 -1
  337. package/dist/tools/file/patch-healing.d.ts.map +1 -1
  338. package/dist/tools/file/patch-healing.js +1 -4
  339. package/dist/tools/file/patch-healing.js.map +1 -1
  340. package/dist/tools/file/search-replace.d.ts.map +1 -1
  341. package/dist/tools/file/search-replace.js +7 -5
  342. package/dist/tools/file/search-replace.js.map +1 -1
  343. package/dist/tools/format-helpers.d.ts +5 -0
  344. package/dist/tools/format-helpers.d.ts.map +1 -1
  345. package/dist/tools/format-helpers.js.map +1 -1
  346. package/dist/tools/memory/memory-tools.d.ts +0 -1
  347. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  348. package/dist/tools/memory/memory-tools.js +1 -116
  349. package/dist/tools/memory/memory-tools.js.map +1 -1
  350. package/dist/tools/scripted-return-contract.d.ts +24 -0
  351. package/dist/tools/scripted-return-contract.d.ts.map +1 -0
  352. package/dist/tools/scripted-return-contract.js +36 -0
  353. package/dist/tools/scripted-return-contract.js.map +1 -0
  354. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -1
  355. package/dist/tools/session-browser/session-browser-tools.js +21 -8
  356. package/dist/tools/session-browser/session-browser-tools.js.map +1 -1
  357. package/dist/tools/system/run-code/index.d.ts +3 -0
  358. package/dist/tools/system/run-code/index.d.ts.map +1 -1
  359. package/dist/tools/system/run-code/index.js +3 -0
  360. package/dist/tools/system/run-code/index.js.map +1 -1
  361. package/dist/tools/system/run-code/run-code-execution.d.ts +56 -0
  362. package/dist/tools/system/run-code/run-code-execution.d.ts.map +1 -0
  363. package/dist/tools/system/run-code/run-code-execution.js +68 -0
  364. package/dist/tools/system/run-code/run-code-execution.js.map +1 -0
  365. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts +20 -0
  366. package/dist/tools/system/run-code/run-code-runtime-contract.d.ts.map +1 -0
  367. package/dist/tools/system/run-code/run-code-runtime-contract.js +2 -0
  368. package/dist/tools/system/run-code/run-code-runtime-contract.js.map +1 -0
  369. package/dist/tools/system/run-code/run-code-runtime.d.ts +99 -0
  370. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -0
  371. package/dist/tools/system/run-code/run-code-runtime.js +719 -0
  372. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -0
  373. package/dist/tools/system/run-code/run-code-telemetry.d.ts +12 -10
  374. package/dist/tools/system/run-code/run-code-telemetry.d.ts.map +1 -1
  375. package/dist/tools/system/run-code/run-code-telemetry.js +48 -72
  376. package/dist/tools/system/run-code/run-code-telemetry.js.map +1 -1
  377. package/dist/tools/system/run-code/run-code.d.ts +22 -59
  378. package/dist/tools/system/run-code/run-code.d.ts.map +1 -1
  379. package/dist/tools/system/run-code/run-code.js +118 -784
  380. package/dist/tools/system/run-code/run-code.js.map +1 -1
  381. package/dist/tools/system/run-code/tools-header.d.ts +16 -4
  382. package/dist/tools/system/run-code/tools-header.d.ts.map +1 -1
  383. package/dist/tools/system/run-code/tools-header.js +32 -16
  384. package/dist/tools/system/run-code/tools-header.js.map +1 -1
  385. package/dist/tools/system/shell.d.ts +3 -0
  386. package/dist/tools/system/shell.d.ts.map +1 -1
  387. package/dist/tools/system/shell.js +13 -3
  388. package/dist/tools/system/shell.js.map +1 -1
  389. package/dist/tools/types.d.ts +12 -4
  390. package/dist/tools/types.d.ts.map +1 -1
  391. package/dist/tools/types.js.map +1 -1
  392. package/dist/utils/ai/model-settings.d.ts +6 -0
  393. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  394. package/dist/utils/ai/model-settings.js +7 -1
  395. package/dist/utils/ai/model-settings.js.map +1 -1
  396. package/dist/utils/ai/token-usage.d.ts +4 -5
  397. package/dist/utils/ai/token-usage.d.ts.map +1 -1
  398. package/dist/utils/ai/token-usage.js +3 -3
  399. package/dist/utils/ai/token-usage.js.map +1 -1
  400. package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
  401. package/dist/utils/conversation/conversation-utils.js +3 -0
  402. package/dist/utils/conversation/conversation-utils.js.map +1 -1
  403. package/dist/utils/conversation/static-commit-policy.d.ts +38 -0
  404. package/dist/utils/conversation/static-commit-policy.d.ts.map +1 -0
  405. package/dist/utils/conversation/static-commit-policy.js +76 -0
  406. package/dist/utils/conversation/static-commit-policy.js.map +1 -0
  407. package/dist/utils/settings-command.d.ts.map +1 -1
  408. package/dist/utils/settings-command.js +2 -1
  409. package/dist/utils/settings-command.js.map +1 -1
  410. package/dist/utils/shell/sandbox/sandbox-policy.d.ts +2 -0
  411. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  412. package/dist/utils/shell/sandbox/sandbox-policy.js +1 -1
  413. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  414. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  415. package/dist/utils/streaming/streaming-session-factory.js +22 -22
  416. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  417. package/package.json +1 -1
  418. package/dist/components/input/MentorPoolMenuSession.d.ts +0 -9
  419. package/dist/components/input/MentorPoolMenuSession.d.ts.map +0 -1
  420. package/dist/components/input/MentorPoolMenuSession.js.map +0 -1
  421. package/dist/components/menu/MentorPoolSelectionMenu.d.ts +0 -13
  422. package/dist/components/menu/MentorPoolSelectionMenu.d.ts.map +0 -1
  423. package/dist/components/menu/MentorPoolSelectionMenu.js.map +0 -1
  424. package/dist/hooks/use-mentor-pool-selection.d.ts +0 -103
  425. package/dist/hooks/use-mentor-pool-selection.d.ts.map +0 -1
  426. package/dist/hooks/use-mentor-pool-selection.js.map +0 -1
@@ -0,0 +1,79 @@
1
+ import { LoggingService } from '../services/logging/logging-service.js';
2
+ import type { WorkspaceGrant } from './contracts.js';
3
+ import { SessionContextService } from '../services/session/session-context-service.js';
4
+ import type { ISessionContextService } from '../services/service-interfaces.js';
5
+ /**
6
+ * `term2 serve` entry point: compose the real settings authority, the
7
+ * production runtime factory, and the gateway control plane, then block until
8
+ * SIGINT/SIGTERM triggers the existing bounded shutdown.
9
+ *
10
+ * State layout under --state-dir (0700): manifest.json + manifest.sha256,
11
+ * replay.sqlite, trusted-clients.json (0600, written by TrustedClientsStore),
12
+ * dynamic-workspaces.json (0600, durable browser-selected grants),
13
+ * gateway-data/ (persistence coordinator), runtime-tmp/ + sandbox/
14
+ * (per-session scratch), gateway-audit.jsonl.
15
+ */
16
+ /** A launcher precondition failed; runServe turns this into a stderr message and exit 1. */
17
+ export declare class ServeStartupError extends Error {
18
+ }
19
+ /**
20
+ * Per-session logger for gateway sessions, pointed at term2's standard log
21
+ * destination — the same XDG log directory the CLI writes, so gateway session
22
+ * diagnostics (e.g. a failed compaction's typed reason or the codex native
23
+ * compaction error) are visible next to CLI session logs. Console output stays
24
+ * suppressed (the LoggingService default) so serve's stdio contract is intact,
25
+ * and record contents follow the app log's sanitization rules.
26
+ */
27
+ export declare function createServeSessionLogger(context: ISessionContextService, logDir?: string): LoggingService;
28
+ /**
29
+ * Session-logger wiring for the whole serve process: one LoggingService and one
30
+ * SessionContextService, handed to every session the runtime factory composes.
31
+ *
32
+ * One instance, not one per session: each per-session LoggingService would
33
+ * construct its own winston-daily-rotate-file transport against the same
34
+ * rotation audit file (term2-audit.json), and concurrent rotation bookkeeping
35
+ * on a shared audit file is not something the transport guarantees. The
36
+ * per-session traffic attribution is unaffected by sharing, because
37
+ * SessionContextService is an AsyncLocalStorage cell — sessions still run
38
+ * their provider traffic inside their own context, and the shared logger's
39
+ * provider-traffic store reads whichever context is current.
40
+ */
41
+ export declare function createServeSessionLogWiring(logDir?: string): {
42
+ createSessionContext: () => SessionContextService;
43
+ createLogger: (sessionId: string, context: ISessionContextService) => LoggingService;
44
+ };
45
+ /**
46
+ * Derive the gateway manifest for a state dir. A state dir with no manifest
47
+ * (or an empty-grant manifest) gets the canonical empty manifest this launcher
48
+ * runs: workspace admission is extended at runtime by the browser-owned
49
+ * candidate registry, and that state is durable in dynamic-workspaces.json,
50
+ * not in the manifest. A manifest that already carries curated grants is
51
+ * preserved untouched; only its sha256 sidecar is refreshed.
52
+ */
53
+ export declare function prepareGatewayManifest(stateDir: string): {
54
+ manifestPath: string;
55
+ manifestSha256: string;
56
+ };
57
+ /**
58
+ * Load durable browser-selected grants. A missing file means no prior grants;
59
+ * a damaged (unparseable) file is quarantined as <file>.corrupt.<timestamp>
60
+ * with a warning so the evidence survives (the unique suffix keeps a second
61
+ * incident from destroying the first) and the launcher starts empty; a file
62
+ * that parses but carries an invalid grant list fails closed.
63
+ */
64
+ export declare function loadDynamicWorkspaceGrants(stateDir: string): readonly WorkspaceGrant[];
65
+ /** Write the durable grant list atomically (temp file, then rename). */
66
+ export declare function saveDynamicWorkspaceGrants(stateDir: string, grants: readonly WorkspaceGrant[]): void;
67
+ /** Canonicalize one --workspace-root; the registry requires real directories. */
68
+ export declare function canonicalizeWorkspaceRoot(root: string): string;
69
+ /**
70
+ * Startup sandbox availability never gates readiness and no consumer may read
71
+ * workerSandboxAvailable as proof of a usable sandbox. This warning tells the
72
+ * operator up front when every shell tool call will be refused.
73
+ */
74
+ export declare function sandboxStartupWarning(availability: {
75
+ type: string;
76
+ reason?: string;
77
+ }): string | undefined;
78
+ export declare function runServe(argv: readonly string[]): Promise<void>;
79
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../source/gateway/serve.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAIxE,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAa7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF;;;;;;;;;;GAUG;AAEH,4FAA4F;AAC5F,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAEzG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG;IAC5D,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;IAClD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,cAAc,CAAC;CACtF,CAOA;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAsBzG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAiCtF;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAKpG;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAIzG;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoNrE"}
@@ -0,0 +1,375 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { appendFile } from 'node:fs/promises';
3
+ import { chmodSync, existsSync, mkdirSync, readFileSync, realpathSync, renameSync, statSync, writeFileSync, } from 'node:fs';
4
+ import path from 'node:path';
5
+ import { buildEnvOverrides, SettingsService } from '../services/settings/settings-service.js';
6
+ import { LoggingService } from '../services/logging/logging-service.js';
7
+ import { getDefaultShellSandboxRunner } from '../utils/shell/sandbox/shell-sandbox-runner.js';
8
+ import { launchGateway } from './launcher.js';
9
+ import { createProductionRuntimeFactory } from './runtime-factory.js';
10
+ import { createGatewayStorageLayout } from './persistence/storage.js';
11
+ import { GatewayPersistenceCoordinator } from './persistence/coordinator.js';
12
+ import { loadGatewayManifest, validateDynamicGrant, validateGatewayManifest, WorkspaceAdmission, } from './workspace-admission.js';
13
+ import { DynamicWorkspaceRegistry } from './dynamic-workspace-registry.js';
14
+ import { createRealWorkspaceBoundaryProbe } from './workspace-boundary-probe.js';
15
+ import { parseServeArgs } from './serve-args.js';
16
+ import { SessionContextService } from '../services/session/session-context-service.js';
17
+ /**
18
+ * `term2 serve` entry point: compose the real settings authority, the
19
+ * production runtime factory, and the gateway control plane, then block until
20
+ * SIGINT/SIGTERM triggers the existing bounded shutdown.
21
+ *
22
+ * State layout under --state-dir (0700): manifest.json + manifest.sha256,
23
+ * replay.sqlite, trusted-clients.json (0600, written by TrustedClientsStore),
24
+ * dynamic-workspaces.json (0600, durable browser-selected grants),
25
+ * gateway-data/ (persistence coordinator), runtime-tmp/ + sandbox/
26
+ * (per-session scratch), gateway-audit.jsonl.
27
+ */
28
+ /** A launcher precondition failed; runServe turns this into a stderr message and exit 1. */
29
+ export class ServeStartupError extends Error {
30
+ }
31
+ /**
32
+ * Per-session logger for gateway sessions, pointed at term2's standard log
33
+ * destination — the same XDG log directory the CLI writes, so gateway session
34
+ * diagnostics (e.g. a failed compaction's typed reason or the codex native
35
+ * compaction error) are visible next to CLI session logs. Console output stays
36
+ * suppressed (the LoggingService default) so serve's stdio contract is intact,
37
+ * and record contents follow the app log's sanitization rules.
38
+ */
39
+ export function createServeSessionLogger(context, logDir) {
40
+ return new LoggingService({ sessionContextService: context, ...(logDir !== undefined ? { logDir } : {}) });
41
+ }
42
+ /**
43
+ * Session-logger wiring for the whole serve process: one LoggingService and one
44
+ * SessionContextService, handed to every session the runtime factory composes.
45
+ *
46
+ * One instance, not one per session: each per-session LoggingService would
47
+ * construct its own winston-daily-rotate-file transport against the same
48
+ * rotation audit file (term2-audit.json), and concurrent rotation bookkeeping
49
+ * on a shared audit file is not something the transport guarantees. The
50
+ * per-session traffic attribution is unaffected by sharing, because
51
+ * SessionContextService is an AsyncLocalStorage cell — sessions still run
52
+ * their provider traffic inside their own context, and the shared logger's
53
+ * provider-traffic store reads whichever context is current.
54
+ */
55
+ export function createServeSessionLogWiring(logDir) {
56
+ const context = new SessionContextService();
57
+ const logger = createServeSessionLogger(context, logDir);
58
+ return {
59
+ createSessionContext: () => context,
60
+ createLogger: () => logger,
61
+ };
62
+ }
63
+ /**
64
+ * Derive the gateway manifest for a state dir. A state dir with no manifest
65
+ * (or an empty-grant manifest) gets the canonical empty manifest this launcher
66
+ * runs: workspace admission is extended at runtime by the browser-owned
67
+ * candidate registry, and that state is durable in dynamic-workspaces.json,
68
+ * not in the manifest. A manifest that already carries curated grants is
69
+ * preserved untouched; only its sha256 sidecar is refreshed.
70
+ */
71
+ export function prepareGatewayManifest(stateDir) {
72
+ const manifestPath = path.join(stateDir, 'manifest.json');
73
+ const emptyManifest = `${JSON.stringify({ version: 1, grants: [], sshTargets: [] }, null, 2)}\n`;
74
+ let manifestJson = emptyManifest;
75
+ if (existsSync(manifestPath)) {
76
+ const existingRaw = readFileSync(manifestPath, 'utf8');
77
+ let existingGrants = 0;
78
+ try {
79
+ existingGrants = validateGatewayManifest(JSON.parse(existingRaw)).grants.length;
80
+ }
81
+ catch (error) {
82
+ throw new ServeStartupError(`refusing to overwrite an unreadable gateway manifest at ${manifestPath}: ${messageOf(error)}`);
83
+ }
84
+ if (existingGrants > 0)
85
+ manifestJson = existingRaw;
86
+ }
87
+ const manifestSha256 = createHash('sha256').update(manifestJson).digest('hex');
88
+ writeFileSync(manifestPath, manifestJson, { mode: 0o600 });
89
+ writeFileSync(path.join(stateDir, 'manifest.sha256'), `${manifestSha256}\n`, { mode: 0o600 });
90
+ // Prove the artifact the startup assertion will re-read actually parses.
91
+ loadGatewayManifest(manifestPath, manifestSha256);
92
+ return { manifestPath, manifestSha256 };
93
+ }
94
+ /**
95
+ * Load durable browser-selected grants. A missing file means no prior grants;
96
+ * a damaged (unparseable) file is quarantined as <file>.corrupt.<timestamp>
97
+ * with a warning so the evidence survives (the unique suffix keeps a second
98
+ * incident from destroying the first) and the launcher starts empty; a file
99
+ * that parses but carries an invalid grant list fails closed.
100
+ */
101
+ export function loadDynamicWorkspaceGrants(stateDir) {
102
+ const grantsFile = path.join(stateDir, 'dynamic-workspaces.json');
103
+ let raw;
104
+ try {
105
+ raw = readFileSync(grantsFile, 'utf8');
106
+ }
107
+ catch {
108
+ return [];
109
+ }
110
+ let parsed;
111
+ try {
112
+ parsed = JSON.parse(raw);
113
+ }
114
+ catch {
115
+ // rename(2) replaces an existing destination, so the quarantine name
116
+ // carries a timestamp: a second incident must not destroy the first.
117
+ const quarantinePath = `${grantsFile}.corrupt.${Date.now()}`;
118
+ let moved = false;
119
+ try {
120
+ renameSync(grantsFile, quarantinePath);
121
+ moved = true;
122
+ }
123
+ catch {
124
+ // Keep the damaged file in place rather than lose the evidence.
125
+ }
126
+ console.error(moved
127
+ ? `term2 serve: ${grantsFile} is damaged; moved to ${quarantinePath}, starting with no dynamic grants`
128
+ : `term2 serve: ${grantsFile} is damaged and could not be moved aside; leaving it in place — repair or delete it before the next start`);
129
+ return [];
130
+ }
131
+ if (!Array.isArray(parsed) || !parsed.every((entry) => validateDynamicGrant(entry))) {
132
+ throw new ServeStartupError(`${grantsFile} contains an invalid dynamic grant; refusing to start`);
133
+ }
134
+ return parsed;
135
+ }
136
+ /** Write the durable grant list atomically (temp file, then rename). */
137
+ export function saveDynamicWorkspaceGrants(stateDir, grants) {
138
+ const grantsFile = path.join(stateDir, 'dynamic-workspaces.json');
139
+ const tempPath = `${grantsFile}.tmp`;
140
+ writeFileSync(tempPath, `${JSON.stringify(grants, null, 2)}\n`, { mode: 0o600 });
141
+ renameSync(tempPath, grantsFile);
142
+ }
143
+ /** Canonicalize one --workspace-root; the registry requires real directories. */
144
+ export function canonicalizeWorkspaceRoot(root) {
145
+ let canonical;
146
+ try {
147
+ canonical = realpathSync(root);
148
+ if (!statSync(canonical).isDirectory())
149
+ throw new Error('not a directory');
150
+ }
151
+ catch (error) {
152
+ throw new ServeStartupError(`--workspace-root ${root} is unusable: ${messageOf(error)}`);
153
+ }
154
+ return canonical;
155
+ }
156
+ /**
157
+ * Startup sandbox availability never gates readiness and no consumer may read
158
+ * workerSandboxAvailable as proof of a usable sandbox. This warning tells the
159
+ * operator up front when every shell tool call will be refused.
160
+ */
161
+ export function sandboxStartupWarning(availability) {
162
+ if (availability.type === 'available')
163
+ return undefined;
164
+ const detail = availability.reason ? ` (${availability.reason})` : '';
165
+ return `term2 serve: warning: shell sandbox unavailable: ${availability.type}${detail}; shell tool calls will be refused`;
166
+ }
167
+ export async function runServe(argv) {
168
+ const parsed = parseServeArgs(argv);
169
+ if (!parsed.ok) {
170
+ console.error(`term2 serve: ${parsed.error}`);
171
+ process.exit(1);
172
+ }
173
+ const args = parsed.args;
174
+ let stateDir;
175
+ try {
176
+ mkdirSync(args.stateDir, { recursive: true, mode: 0o700 });
177
+ chmodSync(args.stateDir, 0o700);
178
+ stateDir = realpathSync(args.stateDir);
179
+ }
180
+ catch (error) {
181
+ console.error(`term2 serve: cannot create state directory ${args.stateDir}: ${messageOf(error)}`);
182
+ process.exit(1);
183
+ }
184
+ let manifest;
185
+ try {
186
+ manifest = prepareGatewayManifest(stateDir);
187
+ }
188
+ catch (error) {
189
+ console.error(`term2 serve: ${messageOf(error)}`);
190
+ process.exit(1);
191
+ }
192
+ const { manifestPath, manifestSha256 } = manifest;
193
+ const publicKeys = new Map();
194
+ for (const { kid, pemPath } of args.bffKeys) {
195
+ try {
196
+ publicKeys.set(kid, readFileSync(pemPath, 'utf8'));
197
+ }
198
+ catch (error) {
199
+ console.error(`term2 serve: cannot read BFF public key "${kid}" at ${pemPath}: ${messageOf(error)}`);
200
+ process.exit(1);
201
+ }
202
+ }
203
+ if (publicKeys.size === 0 && !args.pairing) {
204
+ console.error('term2 serve: provide at least one --bff-key <kid>=<pem path> or enable --pairing');
205
+ process.exit(1);
206
+ }
207
+ if (args.transport.kind === 'tls') {
208
+ for (const label of ['tls-cert', 'tls-key']) {
209
+ const filePath = label === 'tls-cert' ? args.transport.certPath : args.transport.keyPath;
210
+ try {
211
+ readFileSync(filePath);
212
+ }
213
+ catch (error) {
214
+ console.error(`term2 serve: cannot read --${label} at ${filePath}: ${messageOf(error)}`);
215
+ process.exit(1);
216
+ }
217
+ }
218
+ }
219
+ let workspaceRoots;
220
+ try {
221
+ workspaceRoots = args.workspaceRoots.map((root) => canonicalizeWorkspaceRoot(root));
222
+ }
223
+ catch (error) {
224
+ console.error(`term2 serve: ${messageOf(error)}`);
225
+ process.exit(1);
226
+ }
227
+ // Probe once for the operator-visible warning. This does not gate readiness:
228
+ // the shell tool refuses the unsandboxed fallback per command when the
229
+ // sandbox runtime is unusable, so sessions still start and every other tool
230
+ // keeps working. The probe is advisory only: a throw from the optional
231
+ // sandbox subsystem becomes a probe_failed warning, never a stack trace.
232
+ let sandboxWarning;
233
+ try {
234
+ sandboxWarning = sandboxStartupWarning(await getDefaultShellSandboxRunner().availability());
235
+ }
236
+ catch (error) {
237
+ sandboxWarning = sandboxStartupWarning({ type: 'probe_failed', reason: messageOf(error) });
238
+ }
239
+ // The launcher process is the credential owner: this is the operator's real
240
+ // settings service (loaded with the same env precedence as the CLI), not a
241
+ // per-session overlay. Sessions receive only the M1 allowlist.
242
+ const settingsAuthority = new SettingsService({
243
+ env: buildEnvOverrides(),
244
+ loggingService: new LoggingService({ disableLogging: true, suppressConsoleOutput: true }),
245
+ });
246
+ const runtimeFactory = createProductionRuntimeFactory({
247
+ settingsAuthority,
248
+ tmpDir: ensureDir(stateDir, 'runtime-tmp'),
249
+ sandboxAvailable: true,
250
+ allowWrite: args.allowWrite,
251
+ ...createServeSessionLogWiring(),
252
+ });
253
+ const persistence = new GatewayPersistenceCoordinator(createGatewayStorageLayout(ensureDir(stateDir, 'gateway-data')));
254
+ let initialDynamicGrants;
255
+ try {
256
+ initialDynamicGrants = loadDynamicWorkspaceGrants(stateDir);
257
+ }
258
+ catch (error) {
259
+ console.error(`term2 serve: ${messageOf(error)}`);
260
+ process.exit(1);
261
+ }
262
+ const boundaryProbe = createRealWorkspaceBoundaryProbe({ allowWrite: args.allowWrite });
263
+ const admission = new WorkspaceAdmission(loadGatewayManifest(manifestPath, manifestSha256), {
264
+ allowWrite: args.allowWrite,
265
+ boundaryProbe,
266
+ initialDynamicGrants,
267
+ onDynamicGrantChange: (grants) => {
268
+ mkdirSync(stateDir, { recursive: true, mode: 0o700 });
269
+ saveDynamicWorkspaceGrants(stateDir, grants);
270
+ },
271
+ });
272
+ const workspaceRegistry = new DynamicWorkspaceRegistry({
273
+ admission,
274
+ allowedRoots: workspaceRoots,
275
+ });
276
+ const auditPath = path.join(stateDir, 'gateway-audit.jsonl');
277
+ const auditWriter = async (record) => {
278
+ await appendFile(auditPath, `${JSON.stringify(record)}\n`, { mode: 0o600 });
279
+ };
280
+ const config = {
281
+ enabled: true,
282
+ ...(args.transport.kind === 'socket'
283
+ ? { socketPath: args.transport.socketPath }
284
+ : {
285
+ host: args.transport.host,
286
+ port: args.transport.port,
287
+ tls: { certPath: args.transport.certPath, keyPath: args.transport.keyPath, requireClientCert: false },
288
+ }),
289
+ manifestPath,
290
+ manifestSha256,
291
+ replayDbPath: path.join(stateDir, 'replay.sqlite'),
292
+ issuer: args.issuer,
293
+ audience: args.audience,
294
+ publicKeys,
295
+ localOwnerUserId: args.localOwnerUserId,
296
+ workspaceRegistry,
297
+ workspaceBoundaryProbe: boundaryProbe,
298
+ // Launch-config claim only: the startup assertion requires this literal,
299
+ // and no consumer may read it as proof of a usable sandbox. Real shell
300
+ // execution probes the runner per call and refuses the unsandboxed
301
+ // fallback; the startup warning tells the operator when that will happen.
302
+ workerSandboxAvailable: true,
303
+ tmpDir: ensureDir(stateDir, 'sandbox'),
304
+ sshEnabled: false,
305
+ allowWrite: args.allowWrite,
306
+ autoApprove: false,
307
+ allowUnsandboxed: false,
308
+ auditWriter,
309
+ // The launcher owns the diagnostics destination; the gateway only decides what is
310
+ // worth reporting. Without this the gateway would have nowhere to report a degraded
311
+ // shutdown audit.
312
+ logger: new LoggingService(),
313
+ runtimeFactory,
314
+ // Always wired: without it session_create answers with the legacy body
315
+ // shape, which the ChatForge BFF rejects as gateway_unavailable.
316
+ persistence,
317
+ ...(args.pairing
318
+ ? {
319
+ pairing: {
320
+ enabled: true,
321
+ trustFilePath: path.join(stateDir, 'trusted-clients.json'),
322
+ // The OTP is the operator's out-of-band secret: stderr only, so it
323
+ // can never interleave with a machine-readable stdout stream.
324
+ printOtp: (otp) => console.error(`PAIRING OTP: ${otp}`),
325
+ },
326
+ }
327
+ : {}),
328
+ };
329
+ // The CLI module registers global SIGINT/SIGTERM handlers that force-exit
330
+ // for interactive sessions. A gateway shutdown is bounded and must be given
331
+ // the chance to finish, so those listeners are replaced here.
332
+ process.removeAllListeners('SIGINT');
333
+ process.removeAllListeners('SIGTERM');
334
+ let gateway;
335
+ try {
336
+ gateway = await launchGateway(config);
337
+ }
338
+ catch (error) {
339
+ console.error(`term2 serve: gateway failed to start: ${messageOf(error)}`);
340
+ process.exit(1);
341
+ }
342
+ if (sandboxWarning)
343
+ console.error(sandboxWarning);
344
+ const endpoint = args.transport.kind === 'socket'
345
+ ? `transport=socket path=${args.transport.socketPath}`
346
+ : `transport=tls host=${args.transport.host} port=${args.transport.port}`;
347
+ console.error(`GATEWAY_READY pid=${process.pid} ${endpoint} pairing=${args.pairing ? 'on' : 'off'} workspaceRoots=${workspaceRoots.join(',')}`);
348
+ // launchGateway's own handlers start the bounded shutdown; this once-handler
349
+ // awaits the same idempotent shutdown and then exits deterministically even
350
+ // if a library keeps the event loop alive. runServe stays pending until that
351
+ // shutdown finishes, so a caller cannot fall through and exit the process
352
+ // while the gateway is still serving.
353
+ let settleShutdown = () => undefined;
354
+ const shutdownComplete = new Promise((resolve) => {
355
+ settleShutdown = resolve;
356
+ });
357
+ const shutdownAndExit = () => {
358
+ void gateway.shutdown().finally(() => {
359
+ settleShutdown();
360
+ process.exit(0);
361
+ });
362
+ };
363
+ process.once('SIGINT', shutdownAndExit);
364
+ process.once('SIGTERM', shutdownAndExit);
365
+ await shutdownComplete;
366
+ }
367
+ function ensureDir(stateDir, leaf) {
368
+ const dir = path.join(stateDir, leaf);
369
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
370
+ return dir;
371
+ }
372
+ function messageOf(error) {
373
+ return error instanceof Error ? error.message : String(error);
374
+ }
375
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../source/gateway/serve.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import type { UserTurn } from '../types/user-turn.js';
5
5
  import type { GatewaySessionComposition, SecretFreeWorkerSettings, SessionBinding } from './contracts.js';
6
6
  import type { RuntimeResourcePolicy } from './runtime-factory.js';
7
7
  import type { PreparedMessageResult, PreparedMessageIds } from '../services/conversation/conversation-adapter.js';
8
+ import type { GatewayMessageAdmissionRuntime } from './persistence/admission-persistence.js';
8
9
  export type ServerSessionStatus = 'idle' | 'running' | 'awaiting_interaction' | 'interrupted' | 'closed';
9
10
  export type AbortOutcome = {
10
11
  readonly kind: 'aborted';
@@ -45,6 +46,13 @@ export declare class ServerSession {
45
46
  readonly binding: Readonly<SessionBinding>;
46
47
  readonly service: ConversationService;
47
48
  constructor(options: ServerSessionOptions);
49
+ /**
50
+ * Attribute the events raised by `run` to `turnId`. Compact is the only
51
+ * command that publishes conversation events, and it runs outside a turn, so
52
+ * without this the gateway sees no turn and drops `context_compaction_*`
53
+ * before it reaches the journal.
54
+ */
55
+ withCommandTurn<T>(turnId: string, run: () => Promise<T>): Promise<T>;
48
56
  get sessionId(): string;
49
57
  get status(): ServerSessionStatus;
50
58
  get activeTurnId(): string | null;
@@ -57,6 +65,7 @@ export declare class ServerSession {
57
65
  prepareMessage(input: UserTurn | string, ids: PreparedMessageIds): Promise<PreparedMessageResult>;
58
66
  commitMessage(leaseId: string): Promise<void>;
59
67
  cancelPreparedMessage(leaseId: string): Promise<void>;
68
+ createRetryRuntime(command: 'retry-tool' | 'retry-turn'): GatewayMessageAdmissionRuntime;
60
69
  resolvePendingInteraction(request: ResolvePendingInteractionRequest): PendingInteractionResolution;
61
70
  abort(turnId: string): Promise<AbortOutcome>;
62
71
  dispose(reason?: 'closed' | 'shutdown' | 'interrupted'): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server-session.d.ts","sourceRoot":"","sources":["../../source/gateway/server-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-session.d.ts","sourceRoot":"","sources":["../../source/gateway/server-session.ts"],"names":[],"mappings":"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"}