@gajae-code/coding-agent 0.10.2 → 0.11.1

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 (476) hide show
  1. package/CHANGELOG.md +58 -2
  2. package/dist/types/append-only-mode.d.ts +1 -1
  3. package/dist/types/async/job-manager.d.ts +46 -7
  4. package/dist/types/cli/args.d.ts +4 -5
  5. package/dist/types/cli/daemon-cli.d.ts +12 -1
  6. package/dist/types/cli/notify-cli.d.ts +21 -1
  7. package/dist/types/cli.d.ts +3 -0
  8. package/dist/types/commands/daemon.d.ts +39 -0
  9. package/dist/types/commands/launch.d.ts +3 -0
  10. package/dist/types/commands/notify.d.ts +28 -1
  11. package/dist/types/commands/sdk.d.ts +33 -0
  12. package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
  13. package/dist/types/config/model-profile-activation.d.ts +35 -15
  14. package/dist/types/config/model-profiles.d.ts +11 -5
  15. package/dist/types/config/model-registry.d.ts +3 -3
  16. package/dist/types/config/model-resolver.d.ts +39 -6
  17. package/dist/types/config/model-selector-value.d.ts +17 -0
  18. package/dist/types/config/models-config-schema.d.ts +10 -6
  19. package/dist/types/config/settings-schema.d.ts +133 -6
  20. package/dist/types/config/settings.d.ts +63 -35
  21. package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
  22. package/dist/types/coordinator-mcp/server.d.ts +6 -49
  23. package/dist/types/daemon/builtin.d.ts +6 -5
  24. package/dist/types/daemon/control-types.d.ts +1 -1
  25. package/dist/types/discovery/mcp-json.d.ts +12 -1
  26. package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
  27. package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
  28. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
  29. package/dist/types/extensibility/extensions/loader.d.ts +10 -1
  30. package/dist/types/extensibility/extensions/runner.d.ts +3 -3
  31. package/dist/types/extensibility/extensions/types.d.ts +141 -16
  32. package/dist/types/extensibility/hooks/types.d.ts +1 -1
  33. package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
  34. package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
  35. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
  36. package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
  37. package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
  38. package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
  39. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
  40. package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
  41. package/dist/types/harness-control-plane/operate.d.ts +5 -5
  42. package/dist/types/harness-control-plane/owner.d.ts +18 -4
  43. package/dist/types/harness-control-plane/receipts.d.ts +0 -1
  44. package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
  45. package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
  46. package/dist/types/harness-control-plane/types.d.ts +3 -4
  47. package/dist/types/lsp/index.d.ts +1 -1
  48. package/dist/types/main.d.ts +32 -38
  49. package/dist/types/modes/acp/acp-agent.d.ts +224 -53
  50. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
  51. package/dist/types/modes/acp/acp-mode.d.ts +6 -15
  52. package/dist/types/modes/acp/permission-mode.d.ts +4 -0
  53. package/dist/types/modes/acp/startup-options.d.ts +6 -0
  54. package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
  55. package/dist/types/modes/components/model-selector.d.ts +1 -0
  56. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  57. package/dist/types/modes/components/settings-selector.d.ts +6 -4
  58. package/dist/types/modes/components/welcome.d.ts +1 -1
  59. package/dist/types/modes/controllers/command-controller.d.ts +2 -2
  60. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
  61. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  62. package/dist/types/modes/index.d.ts +0 -4
  63. package/dist/types/modes/interactive-mode.d.ts +5 -2
  64. package/dist/types/modes/runtime-init.d.ts +2 -2
  65. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  66. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  67. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  68. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  69. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  70. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
  71. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  72. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  73. package/dist/types/modes/types.d.ts +7 -2
  74. package/dist/types/runtime-mcp/client.d.ts +2 -0
  75. package/dist/types/runtime-mcp/config.d.ts +5 -1
  76. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  77. package/dist/types/runtime-mcp/types.d.ts +4 -0
  78. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  79. package/dist/types/sdk/acp/index.d.ts +2 -0
  80. package/dist/types/sdk/broker/broker.d.ts +53 -0
  81. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  82. package/dist/types/sdk/broker/ensure.d.ts +42 -0
  83. package/dist/types/sdk/broker/identity.d.ts +3 -0
  84. package/dist/types/sdk/broker/index.d.ts +8 -0
  85. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  86. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  87. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  88. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  89. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  90. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  91. package/dist/types/sdk/broker/transport.d.ts +9 -0
  92. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  93. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  94. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  95. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  96. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  97. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  98. package/dist/types/sdk/bus/config.d.ts +274 -0
  99. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  100. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  101. package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
  102. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  103. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  104. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  105. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  106. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  107. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  108. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  109. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  110. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  111. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  112. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  113. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  114. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  115. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  116. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  117. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  118. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  119. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  120. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  121. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
  122. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  123. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  124. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  125. package/dist/types/sdk/cli/index.d.ts +1 -0
  126. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  127. package/dist/types/sdk/client/client.d.ts +1 -0
  128. package/dist/types/sdk/client/discovery.d.ts +27 -0
  129. package/dist/types/sdk/client/index.d.ts +2 -0
  130. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  131. package/dist/types/sdk/host/control/index.d.ts +2 -0
  132. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  133. package/dist/types/sdk/host/events.d.ts +35 -0
  134. package/dist/types/sdk/host/host.d.ts +35 -0
  135. package/dist/types/sdk/host/index.d.ts +4 -0
  136. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  137. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  138. package/dist/types/sdk/host/query/index.d.ts +3 -0
  139. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  140. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  141. package/dist/types/sdk/host/types.d.ts +32 -0
  142. package/dist/types/sdk/index.d.ts +6 -0
  143. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  144. package/dist/types/sdk/mcp/index.d.ts +1 -0
  145. package/dist/types/sdk/mcp/server.d.ts +37 -0
  146. package/dist/types/sdk/models.d.ts +44 -0
  147. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  148. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  149. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  150. package/dist/types/sdk/startup-capability.d.ts +50 -0
  151. package/dist/types/session/agent-session.d.ts +114 -21
  152. package/dist/types/session/default-model-selection.d.ts +25 -0
  153. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  154. package/dist/types/session/session-manager.d.ts +58 -1
  155. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  156. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  157. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  158. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  159. package/dist/types/tools/browser/launch.d.ts +22 -0
  160. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  161. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  162. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  163. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  164. package/dist/types/tools/browser/registry.d.ts +19 -0
  165. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  166. package/dist/types/tools/index.d.ts +8 -8
  167. package/dist/types/tools/subagent-render.d.ts +1 -0
  168. package/dist/types/tools/subagent.d.ts +6 -1
  169. package/package.json +34 -13
  170. package/scripts/build-sdk-package-smoke.ts +99 -0
  171. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  172. package/scripts/compile-args.ts +4 -2
  173. package/scripts/g005-daemon-smoke.ts +4 -5
  174. package/scripts/g011-daemon-path-smoke.ts +5 -5
  175. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  176. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  177. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  178. package/scripts/manifest-schema.ts +124 -0
  179. package/scripts/run-test-manifest.ts +153 -0
  180. package/scripts/run-threat-model-check.ts +157 -0
  181. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  182. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  183. package/src/append-only-mode.ts +1 -1
  184. package/src/async/job-manager.ts +406 -63
  185. package/src/cli/args.ts +43 -12
  186. package/src/cli/auth-gateway-cli.ts +2 -2
  187. package/src/cli/config-cli.ts +2 -1
  188. package/src/cli/daemon-cli.ts +63 -14
  189. package/src/cli/list-models.ts +1 -1
  190. package/src/cli/notify-cli.ts +288 -286
  191. package/src/cli.ts +21 -2
  192. package/src/commands/daemon.ts +50 -6
  193. package/src/commands/harness.ts +93 -36
  194. package/src/commands/launch.ts +5 -2
  195. package/src/commands/mcp-serve.ts +19 -12
  196. package/src/commands/notify.ts +36 -3
  197. package/src/commands/sdk.ts +426 -0
  198. package/src/commit/agentic/agent.ts +1 -0
  199. package/src/config/atomic-yaml-patch.ts +423 -0
  200. package/src/config/model-profile-activation.ts +240 -89
  201. package/src/config/model-profiles.ts +18 -15
  202. package/src/config/model-registry.ts +51 -26
  203. package/src/config/model-resolver.ts +138 -51
  204. package/src/config/model-selector-value.ts +50 -0
  205. package/src/config/models-config-schema.ts +14 -21
  206. package/src/config/settings-schema.ts +128 -10
  207. package/src/config/settings.ts +1120 -158
  208. package/src/coordinator-mcp/model-preset.ts +74 -20
  209. package/src/coordinator-mcp/server.ts +1597 -3052
  210. package/src/daemon/builtin.ts +8 -5
  211. package/src/daemon/control-types.ts +1 -1
  212. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  213. package/src/discovery/mcp-json.ts +327 -20
  214. package/src/extensibility/custom-tools/types.ts +1 -1
  215. package/src/extensibility/extensions/compact-handler.ts +3 -3
  216. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  217. package/src/extensibility/extensions/loader.ts +69 -5
  218. package/src/extensibility/extensions/runner.ts +112 -4
  219. package/src/extensibility/extensions/types.ts +176 -17
  220. package/src/extensibility/hooks/types.ts +1 -1
  221. package/src/gjc-runtime/launch-tmux.ts +170 -86
  222. package/src/gjc-runtime/psmux-detect.ts +82 -4
  223. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  224. package/src/gjc-runtime/team-runtime.ts +54 -35
  225. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  226. package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
  227. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  228. package/src/gjc-runtime/ultragoal-guard.ts +108 -14
  229. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
  230. package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
  231. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  232. package/src/harness-control-plane/operate.ts +9 -9
  233. package/src/harness-control-plane/owner.ts +283 -39
  234. package/src/harness-control-plane/receipts.ts +0 -1
  235. package/src/harness-control-plane/sdk-transport.ts +395 -0
  236. package/src/harness-control-plane/session-transport.ts +94 -0
  237. package/src/harness-control-plane/types.ts +1 -1
  238. package/src/internal-urls/docs-index.generated.ts +34 -35
  239. package/src/lsp/client.ts +42 -6
  240. package/src/lsp/index.ts +2 -2
  241. package/src/main.ts +299 -204
  242. package/src/modes/DESIGN.md +258 -0
  243. package/src/modes/acp/acp-agent.ts +1228 -2612
  244. package/src/modes/acp/acp-client-bridge.ts +2 -20
  245. package/src/modes/acp/acp-event-mapper.ts +18 -2
  246. package/src/modes/acp/acp-mode.ts +8 -36
  247. package/src/modes/acp/permission-mode.ts +25 -0
  248. package/src/modes/acp/startup-options.ts +6 -0
  249. package/src/modes/components/agent-dashboard.ts +37 -17
  250. package/src/modes/components/model-selector.ts +93 -35
  251. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  252. package/src/modes/components/settings-selector.ts +60 -11
  253. package/src/modes/components/welcome.ts +4 -4
  254. package/src/modes/controllers/command-controller.ts +10 -17
  255. package/src/modes/controllers/event-controller.ts +11 -16
  256. package/src/modes/controllers/extension-ui-controller.ts +396 -28
  257. package/src/modes/controllers/selector-controller.ts +674 -36
  258. package/src/modes/index.ts +0 -22
  259. package/src/modes/interactive-mode.ts +87 -36
  260. package/src/modes/runtime-init.ts +298 -6
  261. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  262. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  263. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  264. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  265. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  266. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
  267. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  268. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  269. package/src/modes/types.ts +7 -2
  270. package/src/runtime-mcp/client.ts +94 -19
  271. package/src/runtime-mcp/config.ts +27 -15
  272. package/src/runtime-mcp/manager.ts +343 -105
  273. package/src/runtime-mcp/oauth-flow.ts +42 -12
  274. package/src/runtime-mcp/transports/http.ts +49 -19
  275. package/src/runtime-mcp/transports/stdio.ts +47 -28
  276. package/src/runtime-mcp/types.ts +10 -0
  277. package/src/sdk/acp/adapter.ts +418 -0
  278. package/src/sdk/acp/index.ts +2 -0
  279. package/src/sdk/broker/broker.ts +642 -0
  280. package/src/sdk/broker/discovery.ts +113 -0
  281. package/src/sdk/broker/ensure.ts +307 -0
  282. package/src/sdk/broker/identity.ts +42 -0
  283. package/src/sdk/broker/index.ts +8 -0
  284. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  285. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  286. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  287. package/src/sdk/broker/lifecycle.ts +2157 -0
  288. package/src/sdk/broker/process-incarnation.ts +159 -0
  289. package/src/sdk/broker/runtime.ts +164 -0
  290. package/src/sdk/broker/session-index.ts +318 -0
  291. package/src/sdk/broker/state-version.ts +23 -0
  292. package/src/sdk/broker/transport.ts +125 -0
  293. package/src/sdk/bus/chat-command-policy.ts +107 -0
  294. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  295. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  296. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  297. package/src/sdk/bus/chat-effect-journal.ts +355 -0
  298. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  299. package/src/sdk/bus/config.ts +433 -0
  300. package/src/sdk/bus/conversation-store.ts +391 -0
  301. package/src/sdk/bus/discord-conversation.ts +85 -0
  302. package/src/sdk/bus/discord-daemon.ts +2292 -0
  303. package/src/sdk/bus/discord-live-provider.ts +521 -0
  304. package/src/sdk/bus/discord-provider.ts +56 -0
  305. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  306. package/src/sdk/bus/index.ts +3979 -0
  307. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  308. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  309. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  310. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  311. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  312. package/src/sdk/bus/natives-augment.d.ts +38 -0
  313. package/src/sdk/bus/notification-orchestration.ts +535 -0
  314. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  315. package/src/sdk/bus/session-control.ts +333 -0
  316. package/src/sdk/bus/slack-conversation.ts +74 -0
  317. package/src/sdk/bus/slack-daemon.ts +2144 -0
  318. package/src/sdk/bus/slack-live-provider.ts +380 -0
  319. package/src/sdk/bus/slack-provider.ts +76 -0
  320. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  321. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  322. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  323. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  324. package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
  325. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  326. package/src/sdk/bus/telegram-setup.ts +663 -0
  327. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  328. package/src/sdk/cli/index.ts +1 -0
  329. package/src/sdk/cli/session-cli.ts +275 -0
  330. package/src/sdk/client/client.ts +1 -0
  331. package/src/sdk/client/discovery.ts +108 -0
  332. package/src/sdk/client/index.ts +2 -0
  333. package/src/sdk/host/control/dispatch.ts +367 -0
  334. package/src/sdk/host/control/index.ts +10 -0
  335. package/src/sdk/host/control/operations.ts +63 -0
  336. package/src/sdk/host/events.ts +91 -0
  337. package/src/sdk/host/host.ts +296 -0
  338. package/src/sdk/host/index.ts +4 -0
  339. package/src/sdk/host/query/cursor.ts +189 -0
  340. package/src/sdk/host/query/handlers.ts +533 -0
  341. package/src/sdk/host/query/index.ts +3 -0
  342. package/src/sdk/host/query/revision-store.ts +1126 -0
  343. package/src/sdk/host/reverse-leases.ts +325 -0
  344. package/src/sdk/host/types.ts +29 -0
  345. package/src/sdk/index.ts +13 -0
  346. package/src/sdk/lifecycle-session.ts +39 -0
  347. package/src/sdk/mcp/index.ts +1 -0
  348. package/src/sdk/mcp/server.ts +332 -0
  349. package/src/sdk/models.ts +168 -0
  350. package/src/sdk/protocol/adapter-validation.ts +48 -0
  351. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  352. package/src/sdk/protocol/operation-registry.ts +312 -0
  353. package/src/{sdk.ts → sdk/session.ts} +339 -212
  354. package/src/sdk/startup-capability.ts +189 -0
  355. package/src/session/agent-session.ts +2650 -944
  356. package/src/session/default-model-selection.ts +93 -0
  357. package/src/session/fallback-chain-controller.ts +136 -0
  358. package/src/session/session-manager.ts +438 -11
  359. package/src/session/session-storage.ts +8 -1
  360. package/src/setup/credential-auto-import.ts +290 -35
  361. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  362. package/src/slash-commands/builtin-registry.ts +2 -1
  363. package/src/task/executor.ts +62 -13
  364. package/src/task/index.ts +26 -16
  365. package/src/tools/ask-answer-registry.ts +1 -1
  366. package/src/tools/ask.ts +13 -8
  367. package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
  368. package/src/tools/browser/benchmark/detector-report.ts +157 -0
  369. package/src/tools/browser/benchmark/run-suite.ts +39 -0
  370. package/src/tools/browser/launch.ts +124 -19
  371. package/src/tools/browser/profile-discovery.ts +63 -0
  372. package/src/tools/browser/profile-posture.ts +59 -0
  373. package/src/tools/browser/profile-reuse.ts +102 -0
  374. package/src/tools/browser/profile-warmup.ts +109 -0
  375. package/src/tools/browser/registry.ts +87 -11
  376. package/src/tools/browser/tab-protocol.ts +1 -0
  377. package/src/tools/browser/tab-supervisor.ts +1 -0
  378. package/src/tools/browser/tab-worker.ts +1 -1
  379. package/src/tools/browser.ts +6 -0
  380. package/src/tools/index.ts +8 -8
  381. package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
  382. package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
  383. package/src/tools/subagent-render.ts +19 -8
  384. package/src/tools/subagent.ts +84 -32
  385. package/src/tools/telegram-send.ts +2 -2
  386. package/vendor/insane-search/MANIFEST.json +2 -1
  387. package/vendor/insane-search/engine/bias_check.py +4 -1
  388. package/vendor/insane-search/engine/phase0.py +26 -1
  389. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  390. package/dist/types/modes/bridge/auth.d.ts +0 -12
  391. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  392. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  393. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  394. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  395. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  396. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  397. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  398. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  399. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  400. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  401. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  402. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  403. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  404. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  405. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  406. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  407. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  408. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  409. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  410. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  411. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  412. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  413. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  414. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  415. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  416. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  417. package/dist/types/notifications/config.d.ts +0 -132
  418. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  419. package/src/modes/bridge/auth.ts +0 -41
  420. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  421. package/src/modes/bridge/bridge-mode.ts +0 -675
  422. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  423. package/src/modes/bridge/event-stream.ts +0 -70
  424. package/src/modes/rpc/host-tools.ts +0 -1
  425. package/src/modes/rpc/host-uris.ts +0 -1
  426. package/src/modes/rpc/rpc-client.ts +0 -1166
  427. package/src/modes/rpc/rpc-mode.ts +0 -1029
  428. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  429. package/src/modes/rpc/rpc-types.ts +0 -637
  430. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  431. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  432. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  433. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  434. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  435. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  436. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  437. package/src/modes/shared/agent-wire/responses.ts +0 -17
  438. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  439. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  440. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  441. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  442. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  443. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  444. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  445. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  446. package/src/notifications/config.ts +0 -219
  447. package/src/notifications/index.ts +0 -1835
  448. package/src/notifications/telegram-daemon-cli.ts +0 -243
  449. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  450. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  453. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  454. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  455. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  456. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  457. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  458. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  459. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  460. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  461. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  462. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  463. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  466. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  467. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  468. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  469. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  470. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  471. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  472. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  473. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  474. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  475. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  476. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -0,0 +1,105 @@
1
+ /** Transport-neutral workflow gate contract used by SDK workflow coordination. */
2
+ /** Lifecycle stages that emit machine-addressable SDK workflow gates. */
3
+ export type WorkflowStage = "deep-interview" | "ralplan" | "ultragoal";
4
+ /** Reserved stage names that are explicitly not part of the v1 contract. */
5
+ export declare const RESERVED_WORKFLOW_STAGES: readonly string[];
6
+ export type WorkflowGateKind = "question" | "approval" | "execution";
7
+ /** The documented JSON Schema 2020-12 subset supported by the gate validator. */
8
+ export interface JsonSchema {
9
+ type?: "string" | "number" | "integer" | "boolean" | "object" | "array" | "null";
10
+ enum?: unknown[];
11
+ const?: unknown;
12
+ properties?: Record<string, JsonSchema>;
13
+ required?: string[];
14
+ additionalProperties?: boolean | JsonSchema;
15
+ items?: JsonSchema;
16
+ minLength?: number;
17
+ maxLength?: number;
18
+ pattern?: string;
19
+ minItems?: number;
20
+ maxItems?: number;
21
+ uniqueItems?: boolean;
22
+ minimum?: number;
23
+ maximum?: number;
24
+ title?: string;
25
+ description?: string;
26
+ oneOf?: JsonSchema[];
27
+ anyOf?: JsonSchema[];
28
+ }
29
+ export interface WorkflowGateOption {
30
+ value: unknown;
31
+ label: string;
32
+ description?: string;
33
+ }
34
+ export interface WorkflowGateContext {
35
+ title?: string;
36
+ plan?: string;
37
+ source?: string;
38
+ prompt?: string;
39
+ summary?: string;
40
+ stage_state?: Record<string, unknown>;
41
+ artifact_refs?: Array<{
42
+ kind: string;
43
+ path?: string;
44
+ sha256?: string;
45
+ }>;
46
+ language?: string;
47
+ }
48
+ /** Outbound event: a machine-addressable workflow gate awaiting an answer. */
49
+ export interface WorkflowGate {
50
+ type: "workflow_gate";
51
+ gate_id: string;
52
+ stage: WorkflowStage;
53
+ kind: WorkflowGateKind;
54
+ schema: JsonSchema;
55
+ schema_hash: string;
56
+ options?: WorkflowGateOption[];
57
+ context: WorkflowGateContext;
58
+ created_at: string;
59
+ required: true;
60
+ }
61
+ /** Non-actionable durable-gate state retained for restart diagnostics. */
62
+ export interface WorkflowGateLifecycle {
63
+ state: "quarantined";
64
+ reason: "orphaned_after_process_restart" | "accepted_unadvanced_after_process_restart" | "continuation_owner_lost" | "opened_without_continuation" | "finalization_failed" | "advance_failed";
65
+ quarantinedAt: string;
66
+ supersededByGateId?: string;
67
+ }
68
+ /** A quarantined gate is diagnostic-only and must never be presented or answered. */
69
+ export interface WorkflowGateDiagnostic extends WorkflowGate {
70
+ id: string;
71
+ tag: "quarantined";
72
+ lifecycle: WorkflowGateLifecycle;
73
+ }
74
+ /** Stable Q12 row preserving the root WorkflowGate shape. */
75
+ export type WorkflowGateQueryRecord = (WorkflowGate & {
76
+ id: string;
77
+ tag: "pending";
78
+ lifecycle?: undefined;
79
+ }) | WorkflowGateDiagnostic;
80
+ /** Inbound: the agent's answer to a workflow gate. */
81
+ export interface WorkflowGateResponse {
82
+ gate_id: string;
83
+ answer: unknown;
84
+ idempotency_key?: string;
85
+ }
86
+ /** Outcome of resolving a gate, surfaced back to the answering client. */
87
+ export interface WorkflowGateResolution {
88
+ gate_id: string;
89
+ status: "accepted" | "rejected";
90
+ answer_hash: string;
91
+ resolved_at: string;
92
+ error?: WorkflowGateValidationError;
93
+ }
94
+ /** Typed error shape for schema validation failures. */
95
+ export interface WorkflowGateValidationError {
96
+ code: "invalid_workflow_gate_answer";
97
+ gate_id: string;
98
+ schema_hash: string;
99
+ errors: Array<{
100
+ path: string;
101
+ keyword: string;
102
+ message: string;
103
+ expected?: unknown;
104
+ }>;
105
+ }
@@ -9,6 +9,7 @@ import type { CompactOptions } from "../extensibility/extensions/types";
9
9
  import type { Skill } from "../extensibility/skills";
10
10
  import type { PlanApprovalDetails } from "../plan-mode/approved-plan";
11
11
  import type { MCPManager } from "../runtime-mcp";
12
+ import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../sdk/bus/session-control";
12
13
  import type { AgentSession, AgentSessionEvent } from "../session/agent-session";
13
14
  import type { HistoryStorage } from "../session/history-storage";
14
15
  import type { SessionContext, SessionManager } from "../session/session-manager";
@@ -80,6 +81,10 @@ export interface InteractiveModeContext {
80
81
  historyStorage?: HistoryStorage;
81
82
  mcpManager?: MCPManager;
82
83
  lspServers?: LspStartupServerInfo[];
84
+ /** Shared controller query; absent in ACP/lightweight test contexts. */
85
+ getCurrentSessionNotificationStatus?(): NotificationSessionStatus | undefined;
86
+ /** Toggle only the current session; absent in ACP/lightweight test contexts. */
87
+ setCurrentSessionNotificationsEnabled?(enabled: boolean): Promise<NotificationSessionReconcileResult | undefined>;
83
88
  readonly ircLedger: IrcObservationLedger;
84
89
  isInitialized: boolean;
85
90
  isBackgrounded: boolean;
@@ -234,9 +239,9 @@ export interface InteractiveModeContext {
234
239
  handleContextCommand(): void;
235
240
  handleDumpCommand(): void;
236
241
  handleDebugTranscriptCommand(): Promise<void>;
237
- handleClearCommand(): Promise<void>;
242
+ handleClearCommand(): Promise<boolean>;
238
243
  handleContextClearCommand(): Promise<void>;
239
- handleDropCommand(): Promise<void>;
244
+ handleDropCommand(): Promise<boolean>;
240
245
  handleForkCommand(): Promise<void>;
241
246
  handleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;
242
247
  handlePythonCommand(code: string, excludeFromContext?: boolean): Promise<void>;
@@ -5,6 +5,8 @@ import type { MCPGetPromptResult, MCPPrompt, MCPRequestOptions, MCPResource, MCP
5
5
  */
6
6
  export declare function connectToServer(name: string, config: MCPServerConfig, options?: {
7
7
  signal?: AbortSignal;
8
+ /** Whether to advertise the roots/list capability (default: true). */
9
+ advertiseRoots?: boolean;
8
10
  onNotification?: (method: string, params: unknown) => void;
9
11
  onRequest?: (method: string, params: unknown) => Promise<unknown>;
10
12
  }): Promise<MCPServerConnection>;
@@ -13,8 +13,10 @@ export interface LoadMCPConfigsOptions {
13
13
  filterExa?: boolean;
14
14
  /** Whether to filter out browser MCP servers when builtin browser tool is enabled (default: false) */
15
15
  filterBrowser?: boolean;
16
- /** Only include servers eligible for startup connection, i.e. autoload !== false (default: false) */
16
+ /** Only include startup-eligible servers; exact-config sessions always enforce autoload !== false. */
17
17
  autoloadOnly?: boolean;
18
+ /** Load only this explicit MCP config file. */
19
+ configPath?: string;
18
20
  }
19
21
  /** Result of loading MCP configs */
20
22
  export interface LoadMCPConfigsResult {
@@ -24,6 +26,8 @@ export interface LoadMCPConfigsResult {
24
26
  exaApiKeys: string[];
25
27
  /** Source metadata for each server */
26
28
  sources: Record<string, SourceMeta>;
29
+ /** Whether the explicit configuration was unavailable or contained invalid entries. */
30
+ configurationWarning: boolean;
27
31
  }
28
32
  /**
29
33
  * Load all MCP server configs from standard locations.
@@ -42,6 +42,12 @@ export interface MCPDiscoverOptions {
42
42
  autoloadOnly?: boolean;
43
43
  /** Called when starting to connect to servers */
44
44
  onConnecting?: (serverNames: string[]) => void;
45
+ /** Load only this explicit MCP config file. */
46
+ configPath?: string;
47
+ }
48
+ export interface MCPManagerOptions {
49
+ /** Restrict this instance to tools from an explicit MCP config. */
50
+ toolsOnly?: boolean;
45
51
  }
46
52
  /**
47
53
  * MCP Server Manager.
@@ -58,7 +64,8 @@ export declare class MCPManager {
58
64
  static setInstance(value: MCPManager | undefined): void;
59
65
  /** Reset the process-global instance. Test-only. */
60
66
  static resetForTests(): void;
61
- constructor(cwd: string, toolCache?: MCPToolCache | null);
67
+ constructor(cwd: string, toolCache?: MCPToolCache | null, options?: MCPManagerOptions);
68
+ isToolsOnly(): boolean;
62
69
  /**
63
70
  * Set a callback to receive all server notifications.
64
71
  */
@@ -187,6 +187,10 @@ export interface MCPToolCallResult {
187
187
  content: MCPContent[];
188
188
  isError?: boolean;
189
189
  }
190
+ /** Expected configured-server transport or protocol failure. */
191
+ export declare class MCPExpectedFailure extends Error {
192
+ constructor(cause?: unknown);
193
+ }
190
194
  export interface MCPRequestOptions {
191
195
  /** Abort signal (e.g. Escape-to-interrupt) */
192
196
  signal?: AbortSignal;
@@ -0,0 +1,67 @@
1
+ import { SdkClient, SdkClientError, type SdkFrame } from "../client";
2
+ type JsonObject = Record<string, unknown>;
3
+ /** The small agent-side ACP surface used for reverse requests. */
4
+ export interface AcpReverseConnection {
5
+ request?(method: string, params: JsonObject): Promise<unknown>;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface AcpProviderRegistration {
9
+ capability: string;
10
+ definitions: unknown;
11
+ }
12
+ export interface AcpSdkAdapterOptions {
13
+ url: string;
14
+ token: string;
15
+ client?: SdkClient;
16
+ connection?: AcpReverseConnection;
17
+ providers?: AcpProviderRegistration[];
18
+ /** Lease IDs persisted by the ACP host across a WebSocket reconnect. */
19
+ expectedLeaseIds?: Record<string, string>;
20
+ heartbeatMs?: number;
21
+ reverseCancelTtlMs?: number;
22
+ }
23
+ export declare class AcpSdkAdapterError extends Error {
24
+ readonly code: string;
25
+ constructor(code: string, message?: string);
26
+ }
27
+ export type AcpReconnectFailedHandler = (error: SdkClientError) => void;
28
+ export type AcpFrameHandler = (frame: SdkFrame) => void;
29
+ /**
30
+ * Pure ACP-to-SDK adapter. It deliberately owns neither an AgentSession nor an
31
+ * ACP bridge: all session work is performed through authenticated v3 frames.
32
+ */
33
+ export declare class AcpSdkAdapter {
34
+ #private;
35
+ constructor(options: AcpSdkAdapterOptions);
36
+ static connect(options: AcpSdkAdapterOptions): Promise<AcpSdkAdapter>;
37
+ get leaseIds(): ReadonlyMap<string, string>;
38
+ get connectionId(): string | undefined;
39
+ onReconnectFailed(handler: AcpReconnectFailedHandler): () => void;
40
+ onFrame(handler: AcpFrameHandler): () => void;
41
+ start(): Promise<void>;
42
+ close(): Promise<void>;
43
+ prompt(params: JsonObject | string): Promise<unknown>;
44
+ cancel(): Promise<unknown>;
45
+ setModel(params: JsonObject | string): Promise<unknown>;
46
+ control(operation: string, input?: JsonObject): Promise<unknown>;
47
+ query(query: string, input?: JsonObject, cursor?: string): Promise<unknown>;
48
+ global(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
49
+ sdkControl(params: {
50
+ operation: string;
51
+ input?: JsonObject;
52
+ }): Promise<unknown>;
53
+ sdkQuery(params: {
54
+ query: string;
55
+ input?: JsonObject;
56
+ cursor?: string;
57
+ }): Promise<unknown>;
58
+ sdkGlobal(params: {
59
+ operation: string;
60
+ input?: JsonObject;
61
+ idempotencyKey?: string;
62
+ }): Promise<unknown>;
63
+ /** Dispatches the ACP extension method names without exposing endpoint credentials. */
64
+ handle(method: string, params?: JsonObject): Promise<unknown>;
65
+ registerProvider(provider: AcpProviderRegistration): Promise<void>;
66
+ }
67
+ export {};
@@ -0,0 +1,2 @@
1
+ export type { AcpProviderRegistration, AcpReverseConnection, AcpSdkAdapterOptions } from "./adapter";
2
+ export { AcpSdkAdapter, AcpSdkAdapterError } from "./adapter";
@@ -0,0 +1,53 @@
1
+ import { type BrokerDiscovery, redactBrokerDiscovery } from "./discovery";
2
+ import { type LifecycleDurableEffectsReceipt, LifecycleLedger, type LifecycleStartupFailureReceipt } from "./lifecycle-ledger";
3
+ import { SessionIndex } from "./session-index";
4
+ export interface BrokerSettings {
5
+ agentDir: string;
6
+ packageGeneration?: string;
7
+ port?: number;
8
+ heartbeatTtlMs?: number;
9
+ }
10
+ export type BrokerErrorCode = "idempotency_conflict" | "terminal_uncertain" | "broker_restarting" | "unavailable" | "endpoint_stale" | "resource_gone" | "invalid_input" | "spawn_failed" | "readiness_timeout" | "close_refused" | "not_found" | "live_session" | "cleanup_pending" | (string & {});
11
+ export type BrokerCleanupEvidence = {
12
+ phase: "artifacts" | "transcript" | "metadata";
13
+ artifactsIdentity?: {
14
+ dev: string;
15
+ ino: string;
16
+ };
17
+ transcriptIdentity?: {
18
+ dev: string;
19
+ ino: string;
20
+ };
21
+ };
22
+ export type BrokerResponse = {
23
+ ok: true;
24
+ result?: unknown;
25
+ indexSeq?: number;
26
+ } | {
27
+ ok: false;
28
+ error: {
29
+ code: BrokerErrorCode;
30
+ message: string;
31
+ endpoint?: "unavailable";
32
+ cleanup?: BrokerCleanupEvidence;
33
+ };
34
+ indexSeq?: number;
35
+ durableEffects?: LifecycleDurableEffectsReceipt;
36
+ startupFailure?: LifecycleStartupFailureReceipt;
37
+ };
38
+ export declare class Broker {
39
+ #private;
40
+ readonly settings: Required<BrokerSettings>;
41
+ readonly index: SessionIndex;
42
+ readonly ledger: LifecycleLedger;
43
+ discovery: BrokerDiscovery | null;
44
+ constructor(settings: BrokerSettings);
45
+ start(): Promise<BrokerDiscovery>;
46
+ get ownsDiscovery(): boolean;
47
+ status(): ReturnType<typeof redactBrokerDiscovery> | null;
48
+ heartbeat(): Promise<void>;
49
+ stop(): Promise<void>;
50
+ handleRequest(operation: string, input: Record<string, unknown>, idempotencyKey?: string): Promise<BrokerResponse>;
51
+ }
52
+ /** Test-only hook for simulating a process crash after terminal persistence verification. */
53
+ export declare function setTerminalPersistenceHookForTest(broker: Broker, hook: (() => void) | undefined): void;
@@ -0,0 +1,30 @@
1
+ import { processIncarnation } from "./process-incarnation";
2
+ import { SDK_STATE_VERSION } from "./state-version";
3
+ export declare const BROKER_HEARTBEAT_TTL_MS = 15000;
4
+ export interface BrokerDiscovery {
5
+ version: typeof SDK_STATE_VERSION;
6
+ protocolVersion: 3;
7
+ packageGeneration: string;
8
+ ownerId: string;
9
+ pid: number;
10
+ incarnation: string;
11
+ host: "127.0.0.1";
12
+ port: number;
13
+ url: string;
14
+ token: string;
15
+ startedAt: number;
16
+ heartbeatAt: number;
17
+ }
18
+ export type RedactedBrokerDiscovery = Omit<BrokerDiscovery, "token"> & {
19
+ token: "[redacted]";
20
+ };
21
+ export type BrokerDiscoveryWrite = Omit<BrokerDiscovery, "incarnation"> & {
22
+ incarnation?: string;
23
+ };
24
+ export declare const brokerDiscoveryPath: (agentDir: string) => string;
25
+ export declare const newBrokerToken: () => string;
26
+ export declare const brokerProcessIncarnation: typeof processIncarnation;
27
+ export declare function isPidAlive(pid: number): boolean;
28
+ export declare function writeBrokerDiscovery(agentDir: string, discovery: BrokerDiscoveryWrite): Promise<void>;
29
+ export declare function readBrokerDiscovery(agentDir: string, ttlMs?: number): Promise<BrokerDiscovery | null>;
30
+ export declare function redactBrokerDiscovery(discovery: BrokerDiscovery): RedactedBrokerDiscovery;
@@ -0,0 +1,42 @@
1
+ import { type ChildProcess } from "node:child_process";
2
+ import { type BrokerDiscovery } from "./discovery";
3
+ import { type SdkInternalSpawnCommand } from "./runtime";
4
+ export interface EnsureBrokerSettings {
5
+ agentDir: string;
6
+ heartbeatTtlMs?: number;
7
+ /**
8
+ * Environment for the spawned detached broker. Defaults to `process.env`; tests
9
+ * that pre-start an isolated broker pass the same sanitized child env so the
10
+ * broker and the child that attaches to it share one owned root.
11
+ */
12
+ env?: NodeJS.ProcessEnv;
13
+ }
14
+ export interface FixtureBrokerLease {
15
+ close(): Promise<void>;
16
+ }
17
+ export interface StartedFixtureBroker {
18
+ discovery: BrokerDiscovery;
19
+ lease: FixtureBrokerLease;
20
+ }
21
+ interface BrokerOwner {
22
+ stop(): Promise<void>;
23
+ canReuse(discovery: BrokerDiscovery | null): boolean;
24
+ markReady(discovery: BrokerDiscovery): boolean;
25
+ }
26
+ interface ReapTiming {
27
+ gracefulMs: number;
28
+ killVerifyMs: number;
29
+ }
30
+ /** Starts the detached broker entrypoint when discovery has no live owner. */
31
+ export declare function ensureBroker(settings: EnsureBrokerSettings): Promise<BrokerDiscovery>;
32
+ /** Starts one fresh fixture broker and returns its sole exact-child close lease. */
33
+ export declare function startFixtureBrokerWithLeaseForTest(settings: EnsureBrokerSettings): Promise<StartedFixtureBroker>;
34
+ /** Test hook: returns a stop handle for the detached broker this process spawned. */
35
+ export declare function brokerOwnerForTest(agentDir: string): BrokerOwner | undefined;
36
+ /** Test hook: drives the detached-broker reap on a controllable child surface. */
37
+ export declare function reapSpawnedBrokerForTest(child: ChildProcess, timing?: ReapTiming): Promise<void>;
38
+ /** Test hook: resolves the complete broker environment without spawning. */
39
+ export declare function brokerSpawnEnvironmentForTest(command: SdkInternalSpawnCommand, override?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
40
+ /** Test hook: installs an exact controllable owner to exercise replacement fencing. */
41
+ export declare function registerBrokerOwnerForTest(agentDir: string, child: ChildProcess, timing?: ReapTiming): BrokerOwner;
42
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function brokerIdentityPath(agentDir: string): string;
2
+ export declare function getBrokerIdentityKey(agentDir: string): Promise<string>;
3
+ export declare function deriveIdempotencyIdentity(agentDir: string, operation: string, callerKey: string, canonicalTargetHash: string): Promise<string>;
@@ -0,0 +1,8 @@
1
+ export * from "./broker";
2
+ export * from "./discovery";
3
+ export * from "./ensure";
4
+ export * from "./identity";
5
+ export * from "./lifecycle";
6
+ export * from "./lifecycle-ledger";
7
+ export * from "./session-index";
8
+ export * from "./transport";
@@ -0,0 +1,95 @@
1
+ import type { SdkStartupFailure, SdkStartupRollbackResult } from "../startup-capability";
2
+ import { SDK_STATE_VERSION } from "./state-version";
3
+ export type LifecycleState = "accepted" | "effect_started" | "awaiting_ready" | "terminal_ok" | "terminal_error" | "terminal_uncertain";
4
+ export interface LifecycleWorktreeIntent {
5
+ repoRoot: string;
6
+ worktreePath: string;
7
+ detached: boolean;
8
+ baseRef: string;
9
+ branchName?: string;
10
+ }
11
+ export interface LifecycleEffectIntent {
12
+ sessionId: string;
13
+ stateRoot: string;
14
+ childOwnershipEstablished?: boolean;
15
+ worktree?: LifecycleWorktreeIntent;
16
+ }
17
+ /** Durable lifecycle effects retained for exact replay; never implies rollback authority. */
18
+ export interface LifecycleCleanupProof {
19
+ processExited: true;
20
+ endpointRemoved: true;
21
+ hostUnregistered: {
22
+ state: "unregistered";
23
+ indexSeq: number;
24
+ lifecycleRequestId?: string;
25
+ } | {
26
+ state: "not_registered";
27
+ };
28
+ rollback: {
29
+ endpointGeneration: number | null;
30
+ fenced: true;
31
+ runtimeRemoved: true;
32
+ hostStopped: true;
33
+ brokerRegistrationReleased: true;
34
+ };
35
+ }
36
+ export interface LifecycleStartupFailureReceipt extends SdkStartupFailure {
37
+ artifactDigest: string;
38
+ rollback: SdkStartupRollbackResult;
39
+ cleanupProof?: LifecycleCleanupProof;
40
+ }
41
+ export interface LifecycleDurableEffectsReceipt {
42
+ worktree?: {
43
+ cwdDigest: string;
44
+ created: boolean;
45
+ reused: boolean;
46
+ branchDigest?: string;
47
+ };
48
+ transcript?: {
49
+ identityDigest: string;
50
+ contentDigest: string;
51
+ };
52
+ startup?: LifecycleStartupFailureReceipt;
53
+ digest?: string;
54
+ }
55
+ export interface LifecycleLedgerEntry {
56
+ version: typeof SDK_STATE_VERSION;
57
+ identity: string;
58
+ requestHash: string;
59
+ state: LifecycleState;
60
+ intendedSessionId?: string;
61
+ resultSessionId?: string;
62
+ effectMarker?: string;
63
+ effectIntent?: LifecycleEffectIntent;
64
+ durableEffects?: LifecycleDurableEffectsReceipt;
65
+ startupFailure?: LifecycleStartupFailureReceipt;
66
+ endpointGeneration?: number;
67
+ responseDigest?: string;
68
+ response?: unknown;
69
+ ts: number;
70
+ }
71
+ export type BeginResult = {
72
+ kind: "new";
73
+ entry: LifecycleLedgerEntry;
74
+ } | {
75
+ kind: "replay";
76
+ entry: LifecycleLedgerEntry;
77
+ } | {
78
+ kind: "idempotency_conflict";
79
+ } | {
80
+ kind: "terminal_uncertain";
81
+ entry: LifecycleLedgerEntry;
82
+ } | {
83
+ kind: "in_progress";
84
+ entry: LifecycleLedgerEntry;
85
+ };
86
+ export declare class LifecycleLedger {
87
+ #private;
88
+ constructor(agentDir: string);
89
+ open(): Promise<this>;
90
+ get warnings(): readonly string[];
91
+ begin(identity: string, requestHash: string): Promise<BeginResult>;
92
+ transition(identity: string, state: LifecycleState, fields?: Omit<Partial<LifecycleLedgerEntry>, "identity" | "requestHash" | "state" | "ts">): Promise<LifecycleLedgerEntry>;
93
+ assertSupportedStateVersions(): Promise<void>;
94
+ get(identity: string): LifecycleLedgerEntry | undefined;
95
+ }
@@ -0,0 +1,85 @@
1
+ import type { SdkStartupFailure, SdkStartupRollbackResult } from "../startup-capability";
2
+ import type { Broker, BrokerResponse } from "./broker";
3
+ import type { LifecycleDurableEffectsReceipt, LifecycleStartupFailureReceipt } from "./lifecycle-ledger";
4
+ import { type ProcessIncarnationCommandRunner, type ProcessIncarnationOptions, parseDarwinProcessIncarnation, processIncarnation } from "./process-incarnation";
5
+ import { type SdkInternalSpawnCommand } from "./runtime";
6
+ export { type ProcessIncarnationCommandRunner, type ProcessIncarnationOptions, parseDarwinProcessIncarnation, processIncarnation, };
7
+ export interface LifecycleDeadlines {
8
+ receivedAt: number;
9
+ requestedReadinessTimeoutMs: number;
10
+ semanticReadyDeadlineAt: number;
11
+ terminationStartDeadlineAt: number;
12
+ lifecycleCleanupDeadlineAt: number;
13
+ }
14
+ export declare function deriveLifecycleDeadlines(receivedAt: number, requestedReadinessTimeoutMs: number): LifecycleDeadlines;
15
+ export interface LifecycleTiming {
16
+ now(): number;
17
+ sleep(ms: number): Promise<void>;
18
+ }
19
+ type LifecycleCommand = SdkInternalSpawnCommand | {
20
+ file: string;
21
+ args: string[];
22
+ };
23
+ type LifecycleCommandResolver = () => LifecycleCommand;
24
+ export declare function setLifecycleCommandResolverForTest(broker: Broker, resolver: LifecycleCommandResolver | undefined): void;
25
+ export declare function setLifecycleTimingForTest(broker: Broker, timing: LifecycleTiming | undefined): void;
26
+ export declare function hasValidLifecycleDeadlines(value: LifecycleDeadlines, now?: number): boolean;
27
+ type Input = Record<string, unknown>;
28
+ export declare const isCanonicalSessionId: (value: string) => boolean;
29
+ export interface SessionLifecycleWorktreeTarget {
30
+ enabled: true;
31
+ name?: string;
32
+ }
33
+ export interface SessionLifecycleWorktreeReceipt {
34
+ enabled: true;
35
+ cwd: string;
36
+ created: boolean;
37
+ reused: boolean;
38
+ branch?: string;
39
+ }
40
+ export interface SessionLifecycleTranscriptIdentity {
41
+ dev: string;
42
+ ino: string;
43
+ size: number;
44
+ mtimeMs: number;
45
+ mtimeNs: string;
46
+ }
47
+ export interface SessionLifecycleLaunchRequest {
48
+ operation: "session.create" | "session.fork" | "session.resume";
49
+ sessionId: string;
50
+ cwd: string;
51
+ stateRoot: string;
52
+ sourceSessionId?: string;
53
+ sourceSessionPath?: string;
54
+ sourceSessionIdentity?: SessionLifecycleTranscriptIdentity;
55
+ sourceCwd?: string;
56
+ sessionPath?: string;
57
+ sessionIdentity?: SessionLifecycleTranscriptIdentity;
58
+ /** Broker-issued effect marker which the child echoes only after host readiness. */
59
+ effectMarker?: string;
60
+ modelPreset?: string;
61
+ worktree?: SessionLifecycleWorktreeTarget;
62
+ receivedAt: number;
63
+ requestedReadinessTimeoutMs: number;
64
+ semanticReadyDeadlineAt: number;
65
+ terminationStartDeadlineAt: number;
66
+ lifecycleCleanupDeadlineAt: number;
67
+ }
68
+ export declare function readSessionLifecycleLaunchRequest(value: string | undefined, now?: number): SessionLifecycleLaunchRequest;
69
+ export declare function setProcessIncarnationForTest(broker: Broker, value: ((pid: number) => string | undefined) | undefined): void;
70
+ /** The child writes this only after its endpoint and semantic ready event are both live. */
71
+ export declare function writeSessionLifecycleReady(root: string, id: string, effectMarker: string): Promise<void>;
72
+ export interface LifecycleTranscriptEvidence {
73
+ digest: string;
74
+ identity: SessionLifecycleTranscriptIdentity;
75
+ }
76
+ /** The child writes bounded startup diagnostics before exiting without readiness. */
77
+ export declare function writeSessionLifecycleFailure(root: string, id: string, effectMarker: string, failure: SdkStartupFailure, rollback: SdkStartupRollbackResult, transcript?: LifecycleTranscriptEvidence, ownerIncarnation?: string): Promise<void>;
78
+ export interface LifecycleExecutionOutcome {
79
+ response: BrokerResponse;
80
+ durableEffects?: LifecycleDurableEffectsReceipt;
81
+ startupFailure?: LifecycleStartupFailureReceipt;
82
+ deferredArtifactCleanup?: () => Promise<void>;
83
+ }
84
+ /** Returns the response together with every durable lifecycle fact needed for truthful replay. */
85
+ export declare function executeLifecycle(broker: Broker, operation: string, input: Input, identity: string): Promise<LifecycleExecutionOutcome>;
@@ -0,0 +1,14 @@
1
+ type ProcessIncarnationCommandResult = {
2
+ exitCode: number | null;
3
+ stdout: string;
4
+ } | undefined;
5
+ export type ProcessIncarnationCommandRunner = (command: string, args: readonly string[]) => ProcessIncarnationCommandResult;
6
+ export interface ProcessIncarnationOptions {
7
+ platform?: typeof process.platform;
8
+ runCommand?: ProcessIncarnationCommandRunner;
9
+ }
10
+ /** Parse the microsecond-resolution start timestamp returned by Darwin proc_pidinfo. */
11
+ export declare function parseDarwinProcessIncarnation(info: Uint8Array): string | undefined;
12
+ /** A PID is reusable; bind it to the strongest OS-provided process start incarnation available. */
13
+ export declare function processIncarnation(pid: number, options?: ProcessIncarnationOptions): string | undefined;
14
+ export {};
@@ -0,0 +1,33 @@
1
+ export type SdkInternalAction = "broker-internal" | "session-host-internal";
2
+ export type SdkInternalSpawnCommand = {
3
+ kind: "bun-source";
4
+ file: string;
5
+ args: string[];
6
+ env: NodeJS.ProcessEnv;
7
+ cwd: string;
8
+ } | {
9
+ kind: "compiled";
10
+ file: string;
11
+ args: string[];
12
+ env: NodeJS.ProcessEnv;
13
+ cwd?: undefined;
14
+ };
15
+ type EmbeddedFile = Blob | {
16
+ name: string;
17
+ };
18
+ /** Test-only injectable inputs for hostile evidence and platform grammar coverage. */
19
+ export interface SdkInternalRuntimeDescriptorTestOptions {
20
+ execPath?: string;
21
+ environment?: NodeJS.ProcessEnv;
22
+ embeddedFiles?: readonly EmbeddedFile[];
23
+ markerPath?: string;
24
+ brokerDirectory?: string;
25
+ cliPath?: string;
26
+ configPath?: string;
27
+ bunAvailable?: boolean;
28
+ }
29
+ /** Resolve the production descriptor from the statically imported marker and current Bun runtime evidence. */
30
+ export declare function resolveSdkInternalSpawnCommand(action: SdkInternalAction): SdkInternalSpawnCommand;
31
+ /** Test hook: injects runtime evidence without weakening the production marker authority. */
32
+ export declare function resolveSdkInternalSpawnCommandForTest(action: SdkInternalAction, options: SdkInternalRuntimeDescriptorTestOptions): SdkInternalSpawnCommand;
33
+ export {};