@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
@@ -1,30 +1,30 @@
1
- import { type AgentTelemetryConfig, type ThinkingLevel } from "@gajae-code/agent-core";
1
+ import { type AgentTelemetryConfig, ThinkingLevel } from "@gajae-code/agent-core";
2
2
  import { type AuthCredentialSelector, type Model, type ProviderSessionState } from "@gajae-code/ai";
3
- import { createAppendOnlyContextManager, providerSupportsAppendOnlyAuto, resolveAppendOnlyMode } from "./append-only-mode";
4
- import { type Rule } from "./capability/rule";
5
- import { ModelRegistry } from "./config/model-registry";
6
- import { type ScopedModelSelection } from "./config/model-resolver";
7
- import { type PromptTemplate } from "./config/prompt-templates";
8
- import { Settings, type SkillsSettings } from "./config/settings";
9
- import type { BashRestrictionProfile } from "./tools/bash-allowed-prefixes";
10
- import "./discovery";
11
- import type { CustomCommandsLoadResult } from "./extensibility/custom-commands";
12
- import type { CustomTool } from "./extensibility/custom-tools/types";
13
- import { type ExtensionFactory, type ExtensionUIContext, type LoadExtensionsResult, type ToolDefinition } from "./extensibility/extensions";
14
- import { type ConstrainedPluginHook } from "./extensibility/gjc-plugins/constrained-hooks";
15
- import { type Skill, type SkillWarning } from "./extensibility/skills";
16
- import type { FileSlashCommand } from "./extensibility/slash-commands";
17
- import type { HindsightSessionState } from "./hindsight/state";
18
- import { type LocalProtocolOptions } from "./internal-urls";
19
- import { AgentRegistry } from "./registry/agent-registry";
20
- import { MCPManager } from "./runtime-mcp";
21
- import { AgentSession, type ForkContextSeed } from "./session/agent-session";
22
- import { AuthStorage } from "./session/auth-storage";
23
- import { SessionManager } from "./session/session-manager";
24
- import { type BuildSystemPromptResult } from "./system-prompt";
25
- import { BashTool, BUILTIN_TOOLS, createTools, EditTool, EvalTool, FindTool, HIDDEN_TOOLS, type LspStartupServerInfo, loadSshTool, ReadTool, ResolveTool, SearchTool, type Tool, type ToolSession, WebSearchTool, WriteTool } from "./tools";
26
- import { EventBus } from "./utils/event-bus";
27
- import { type WorkspaceTree } from "./workspace-tree";
3
+ import { createAppendOnlyContextManager, providerSupportsAppendOnlyAuto, resolveAppendOnlyMode } from "../append-only-mode";
4
+ import { type Rule } from "../capability/rule";
5
+ import { ModelRegistry } from "../config/model-registry";
6
+ import { type ScopedModelSelection } from "../config/model-resolver";
7
+ import { type PromptTemplate } from "../config/prompt-templates";
8
+ import { Settings, type SkillsSettings } from "../config/settings";
9
+ import type { BashRestrictionProfile } from "../tools/bash-allowed-prefixes";
10
+ import "../discovery";
11
+ import type { CustomCommandsLoadResult } from "../extensibility/custom-commands";
12
+ import type { CustomTool } from "../extensibility/custom-tools/types";
13
+ import { type ExtensionFactory, type ExtensionUIContext, type LoadExtensionsResult, type ToolDefinition } from "../extensibility/extensions";
14
+ import { type ConstrainedPluginHook } from "../extensibility/gjc-plugins/constrained-hooks";
15
+ import { type Skill, type SkillWarning } from "../extensibility/skills";
16
+ import type { FileSlashCommand } from "../extensibility/slash-commands";
17
+ import type { HindsightSessionState } from "../hindsight/state";
18
+ import { type LocalProtocolOptions } from "../internal-urls";
19
+ import { AgentRegistry } from "../registry/agent-registry";
20
+ import { MCPManager } from "../runtime-mcp";
21
+ import { AgentSession, type ForkContextSeed } from "../session/agent-session";
22
+ import { AuthStorage } from "../session/auth-storage";
23
+ import { SessionManager } from "../session/session-manager";
24
+ import { type BuildSystemPromptResult } from "../system-prompt";
25
+ import { BashTool, BUILTIN_TOOLS, createTools, EditTool, EvalTool, FindTool, HIDDEN_TOOLS, type LspStartupServerInfo, loadSshTool, ReadTool, ResolveTool, SearchTool, type Tool, type ToolSession, WebSearchTool, WriteTool } from "../tools";
26
+ import { EventBus } from "../utils/event-bus";
27
+ import { type WorkspaceTree } from "../workspace-tree";
28
28
  export interface CreateAgentSessionOptions {
29
29
  /** Working directory for project-local discovery. Default: getProjectDir() */
30
30
  cwd?: string;
@@ -100,8 +100,12 @@ export interface CreateAgentSessionOptions {
100
100
  slashCommands?: FileSlashCommand[];
101
101
  /** @deprecated MCP runtime discovery is quarantined and ignored. */
102
102
  enableMCP?: boolean;
103
- /** Existing MCP manager to reuse (skips discovery, propagates to toolSession). */
103
+ /** Existing MCP manager to reuse (skips discovery, propagates to toolSession).
104
+ * Mutually exclusive with mcpConfigPath. */
104
105
  mcpManager?: MCPManager;
106
+ /** Load MCP tools for a top-level session only from this caller-owned absolute config file path.
107
+ * Mutually exclusive with mcpManager. */
108
+ mcpConfigPath?: string;
105
109
  /** Enable LSP integration (tool, formatting, diagnostics, warmup). Default: true */
106
110
  enableLsp?: boolean;
107
111
  /** Skip Python kernel availability check and prelude warmup */
@@ -144,6 +148,8 @@ export interface CreateAgentSessionOptions {
144
148
  settings?: Settings;
145
149
  /** Whether UI is available (enables interactive tools like ask). Default: false */
146
150
  hasUI?: boolean;
151
+ /** Whether this host mode can own a notification session endpoint. Default: true. */
152
+ notificationHostModeSupported?: boolean;
147
153
  /**
148
154
  * Opt-in OpenTelemetry instrumentation forwarded to the underlying Agent.
149
155
  * Passing `{}` enables the loop's GenAI-semantic-convention spans. See
@@ -169,24 +175,24 @@ export interface CreateAgentSessionResult {
169
175
  extensionsResult: LoadExtensionsResult;
170
176
  /** Update tool UI context (interactive mode) */
171
177
  setToolUIContext: (uiContext: ExtensionUIContext, hasUI: boolean) => void;
172
- /** MCP manager for server lifecycle management (undefined if MCP disabled) */
178
+ /** MCP manager for server lifecycle management (undefined if MCP disabled or an exact tools-only config is session-owned) */
173
179
  mcpManager?: MCPManager;
174
180
  /** Warning if session was restored with a different model than saved */
175
181
  modelFallbackMessage?: string;
176
- /** LSP servers detected for startup; warmup may continue in the background */
182
+ /** LSP servers configured for lazy startup in interactive mode */
177
183
  lspServers?: LspStartupServerInfo[];
178
184
  /** Shared event bus for tool/extension communication */
179
185
  eventBus: EventBus;
180
186
  }
181
- export type { PromptTemplate } from "./config/prompt-templates";
182
- export { Settings, type SkillsSettings } from "./config/settings";
183
- export type { CustomCommand, CustomCommandFactory } from "./extensibility/custom-commands/types";
184
- export type { CustomTool, CustomToolFactory } from "./extensibility/custom-tools/types";
185
- export type * from "./extensibility/extensions";
186
- export type { Skill } from "./extensibility/skills";
187
- export type { FileSlashCommand } from "./extensibility/slash-commands";
188
- export type { Tool } from "./tools";
189
- export { buildDirectoryTree, buildWorkspaceTree, type DirectoryTree, type WorkspaceTree } from "./workspace-tree";
187
+ export type { PromptTemplate } from "../config/prompt-templates";
188
+ export { Settings, type SkillsSettings } from "../config/settings";
189
+ export type { CustomCommand, CustomCommandFactory } from "../extensibility/custom-commands/types";
190
+ export type { CustomTool, CustomToolFactory } from "../extensibility/custom-tools/types";
191
+ export type * from "../extensibility/extensions";
192
+ export type { Skill } from "../extensibility/skills";
193
+ export type { FileSlashCommand } from "../extensibility/slash-commands";
194
+ export type { Tool } from "../tools";
195
+ export { buildDirectoryTree, buildWorkspaceTree, type DirectoryTree, type WorkspaceTree } from "../workspace-tree";
190
196
  export { BashTool, BUILTIN_TOOLS, createTools, EditTool, EvalTool, FindTool, HIDDEN_TOOLS, loadSshTool, ReadTool, ResolveTool, SearchTool, type ToolSession, WebSearchTool, WriteTool, };
191
197
  /**
192
198
  * Create an AuthStorage instance.
@@ -0,0 +1,50 @@
1
+ export type SdkStartupPhase = "registration" | "startup";
2
+ export type SdkStartupReason = "disabled" | "ineligible" | "factory_absent" | "runner_absent" | "pending" | "failed";
3
+ export interface SdkStartupFailure {
4
+ phase: SdkStartupPhase;
5
+ reason: SdkStartupReason;
6
+ message: string;
7
+ }
8
+ export type SdkStartupResult = {
9
+ status: "started";
10
+ } | {
11
+ status: "failed";
12
+ failure: SdkStartupFailure;
13
+ };
14
+ /** Internal symbols for lifecycle-only SDK startup construction and bus wiring. */
15
+ export declare const lifecycleStartupCapabilityOption: unique symbol;
16
+ export declare function attachLifecycleStartupCapability(api: object, capability: SdkStartupCapability): void;
17
+ export declare function lifecycleStartupCapabilityForApi(api: object): SdkStartupCapability | undefined;
18
+ export interface SdkStartupRollbackResult {
19
+ endpointGeneration: number | null;
20
+ fenced: boolean;
21
+ runtimeRemoved: boolean;
22
+ hostStopped: boolean;
23
+ brokerRegistrationReleased: boolean;
24
+ }
25
+ /** Internal lifecycle-only proof recorder. Fields become true only after their operation completes. */
26
+ export declare class SdkStartupRollbackTracker {
27
+ #private;
28
+ get generation(): number | undefined;
29
+ get result(): SdkStartupRollbackResult;
30
+ recordGeneration(generation: number): void;
31
+ recordAbsent(): void;
32
+ recordStop(generation: number, result: Pick<SdkStartupRollbackResult, "runtimeRemoved" | "hostStopped" | "brokerRegistrationReleased">): void;
33
+ }
34
+ /** Redact untrusted startup errors before they cross the lifecycle boundary. */
35
+ export declare function sanitizeSdkStartupMessage(value: unknown, knownSecrets?: Iterable<unknown>): string;
36
+ /** Convert every lifecycle bootstrap outcome to the public, bounded failure shape. */
37
+ export declare function normalizeSdkStartupFailure(phase: SdkStartupPhase, reason: SdkStartupReason, error?: unknown, knownSecrets?: Iterable<unknown>): SdkStartupFailure;
38
+ /** Session-owned, exactly-once lifecycle bootstrap completion. */
39
+ export declare class SdkStartupCapability {
40
+ #private;
41
+ readonly rollback?: SdkStartupRollbackTracker | undefined;
42
+ get cancelled(): boolean;
43
+ cancel(): void;
44
+ constructor(rollback?: SdkStartupRollbackTracker | undefined);
45
+ normalizeFailure(phase: SdkStartupPhase, reason: SdkStartupReason, error?: unknown): SdkStartupFailure;
46
+ get result(): SdkStartupResult | undefined;
47
+ get promise(): Promise<SdkStartupResult>;
48
+ settleStarted(): SdkStartupResult;
49
+ settleFailure(failure: SdkStartupFailure): SdkStartupResult;
50
+ }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AgentSession - Core abstraction for agent lifecycle and session management.
3
3
  *
4
- * This class is shared between all run modes (interactive, print, rpc).
4
+ * This class is shared by interactive, print, ACP, and SDK-hosted session callers.
5
5
  * It encapsulates:
6
6
  * - Agent state access
7
7
  * - Event subscription with automatic session persistence
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * Modes use this class and add their own I/O layer on top.
14
14
  */
15
- import { type Agent, type AgentEvent, type AgentMessage, type AgentState, type AgentTool, type ResolvedThinkingLevel, type StablePrefixSnapshot, ThinkingLevel } from "@gajae-code/agent-core";
15
+ import { type Agent, type AgentContext, type AgentEvent, type AgentLoopConfig, type AgentMessage, type AgentState, type AgentTool, type MidRunMaintenanceOutcome, type StablePrefixSnapshot, ThinkingLevel } from "@gajae-code/agent-core";
16
16
  import { type CompactionResult, type EmergencyCompactionSample } from "@gajae-code/agent-core/compaction";
17
17
  import type { AssistantMessage, Effort, ImageContent, Message, MessageAttribution, Model, ProviderSessionState, ServiceTier, SimpleStreamOptions, TextContent, ToolCall, ToolChoice, Usage, UsageReport } from "@gajae-code/ai";
18
18
  export interface ForkContextSeedMetadata {
@@ -60,23 +60,26 @@ import type { LoadedCustomCommand } from "../extensibility/custom-commands";
60
60
  import type { CustomTool } from "../extensibility/custom-tools/types";
61
61
  import type { ExtensionRunner } from "../extensibility/extensions";
62
62
  import type { CompactOptions, ContextUsage } from "../extensibility/extensions/types";
63
- import type { Skill, SkillWarning } from "../extensibility/skills";
63
+ import { type Skill, type SkillWarning } from "../extensibility/skills";
64
64
  import { type FileSlashCommand } from "../extensibility/slash-commands";
65
65
  import { GoalRuntime } from "../goals/runtime";
66
66
  import type { Goal, GoalModeState } from "../goals/state";
67
67
  import type { HindsightSessionState } from "../hindsight/state";
68
- import type { WorkflowGateEmitter } from "../modes/shared/agent-wire/unattended-session";
68
+ import { type WorkflowGateEmitter } from "../modes/shared/agent-wire/workflow-gate-broker";
69
69
  import type { PlanModeState } from "../plan-mode/state";
70
70
  import { type AgentRegistry } from "../registry/agent-registry";
71
71
  import { type DiscoverableMCPSearchIndex, type DiscoverableMCPTool } from "../runtime-mcp/discoverable-tool-metadata";
72
72
  import { MCPManager } from "../runtime-mcp/manager";
73
+ import type { NotificationSessionController } from "../sdk/bus/session-control";
73
74
  import { type SecretObfuscator } from "../secrets/obfuscator";
74
75
  import { type DiscoverableTool, type DiscoverableToolSearchIndex } from "../tool-discovery/tool-index";
75
76
  import type { AskAnswerSource, ToolSession } from "../tools";
76
77
  import type { CheckpointState } from "../tools/checkpoint";
77
78
  import { type TodoItem, type TodoPhase } from "../tools/todo-write";
78
79
  import { type WorkspaceTree } from "../workspace-tree";
79
- import type { ClientBridge } from "./client-bridge";
80
+ import { type DefaultModelSelectionResult } from "./default-model-selection";
81
+ export { DefaultModelSelectionRecoveryError } from "./default-model-selection";
82
+ import type { ClientBridge, ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "./client-bridge";
80
83
  import { type ContributionPrepOptions, type ContributionPrepResult } from "./contribution-prep";
81
84
  import { type CustomMessage } from "./messages";
82
85
  import type { BranchSummaryEntry, CompactionEntry, NewSessionOptions, SessionContext, SessionManager, SessionManagerCloseOutcome } from "./session-manager";
@@ -111,14 +114,16 @@ export type AgentSessionEvent = AgentEvent | {
111
114
  attempt: number;
112
115
  finalError?: string;
113
116
  } | {
114
- type: "retry_fallback_applied";
117
+ type: "model_fallback_switched";
118
+ eventId: string;
115
119
  from: string;
116
120
  to: string;
121
+ reason: string;
117
122
  role: string;
118
- } | {
119
- type: "retry_fallback_succeeded";
120
- model: string;
121
- role: string;
123
+ scope: string;
124
+ activeIndex: number;
125
+ chainLength: number;
126
+ attemptsUsed: number;
122
127
  } | {
123
128
  type: "ttsr_triggered";
124
129
  rules: Rule[];
@@ -164,6 +169,8 @@ export interface AgentSessionConfig {
164
169
  agent: Agent;
165
170
  sessionManager: SessionManager;
166
171
  settings: Settings;
172
+ /** Shared Gate-A-eligible notification session controller, when this host supports it. */
173
+ notificationSessionController?: NotificationSessionController;
167
174
  /** Models to cycle through with Alt+N (from --models flag) */
168
175
  scopedModels?: ScopedModelSelection[];
169
176
  /** Initial session thinking selector. */
@@ -202,7 +209,7 @@ export interface AgentSessionConfig {
202
209
  /** Current session message-to-LLM conversion pipeline */
203
210
  convertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
204
211
  /** System prompt builder that can consider tool availability. Returns ordered provider-facing blocks. */
205
- rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool>) => Promise<{
212
+ rebuildSystemPrompt?: (toolNames: string[], tools: Map<string, AgentTool>, candidateModel?: Model) => Promise<{
206
213
  systemPrompt: string[];
207
214
  }>;
208
215
  /** Initial workspace tree snapshot used for the first volatile per-turn context message. */
@@ -268,6 +275,7 @@ export interface AgentSessionConfig {
268
275
  /** Optional provider-facing cache identity, distinct from logical session identity. */
269
276
  providerCacheSessionId?: string;
270
277
  }
278
+ type MidRunMaintenanceLifecycle = Parameters<NonNullable<AgentLoopConfig["maintainContext"]>>[1];
271
279
  /** Options for AgentSession.prompt() */
272
280
  export interface PromptOptions {
273
281
  /** Whether to expand file-based prompt templates (default: true) */
@@ -286,6 +294,11 @@ export interface PromptOptions {
286
294
  attribution?: MessageAttribution;
287
295
  /** Skip pre-send compaction checks for this prompt (internal use for maintenance flows). */
288
296
  skipCompactionCheck?: boolean;
297
+ /**
298
+ * Invoked after all prompt preflight checks pass and immediately before agent execution begins.
299
+ * Cancellation before this callback rejects the prompt.
300
+ */
301
+ onPreflightAccepted?: () => void;
289
302
  }
290
303
  /** Result from a handoff operation. */
291
304
  export interface HandoffResult {
@@ -303,17 +316,18 @@ export interface ModelCycleResult {
303
316
  /** Whether cycling through scoped models (--models flag) or all available */
304
317
  isScoped: boolean;
305
318
  }
319
+ export type ModelChangeCause = "user-selection" | "profile-activation" | "fallback-switch" | "restore" | "rollback" | "startup-override" | "temporary-operation";
320
+ export type TemporaryModelReason = "plan-mode" | "context-promotion" | "temporary-cycle" | "profile-preview" | "extension-temporary" | "other";
321
+ /** Opaque handle for a non-destructive temporary provider-session scope. */
322
+ export interface TemporaryProviderSessionScope {
323
+ readonly reason: TemporaryModelReason;
324
+ }
306
325
  /** Result from cycleRoleModels() */
307
326
  export interface RoleModelCycleResult {
308
327
  model: Model;
309
328
  thinkingLevel: ThinkingLevel | undefined;
310
329
  role: string;
311
330
  }
312
- export interface DefaultModelSelectionResult {
313
- readonly provider: string;
314
- readonly modelId: string;
315
- readonly thinkingLevel: ResolvedThinkingLevel;
316
- }
317
331
  /** Session statistics for /session command */
318
332
  export interface SessionStats {
319
333
  sessionFile: string | undefined;
@@ -394,6 +408,7 @@ export declare class AgentSession {
394
408
  readonly agent: Agent;
395
409
  readonly sessionManager: SessionManager;
396
410
  readonly settings: Settings;
411
+ readonly notificationSessionController: NotificationSessionController | undefined;
397
412
  readonly taskDepth: number;
398
413
  readonly yieldQueue: YieldQueue;
399
414
  readonly configWarnings: string[];
@@ -435,6 +450,12 @@ export declare class AgentSession {
435
450
  setStandingResolveHandler(handler: ((input: unknown) => Promise<unknown> | unknown) | null): void;
436
451
  /** Provider-scoped mutable state store for transport/session caches. */
437
452
  get providerSessionState(): Map<string, ProviderSessionState>;
453
+ /** Suspend provider state without closing it while a temporary model is active. */
454
+ beginTemporaryProviderSessionScope(reason: TemporaryModelReason): TemporaryProviderSessionScope;
455
+ /** Restore a temporary scope, unwinding any auto-owned scopes above it. */
456
+ restoreTemporaryProviderSessionScope(token: TemporaryProviderSessionScope): boolean;
457
+ /** Promote a temporary scope. The suspended provider state is permanently closed. */
458
+ commitTemporaryProviderSessionScope(token: TemporaryProviderSessionScope): boolean;
438
459
  buildForkContextSeed(options: ForkContextSeedOptions): Promise<ForkContextSeed>;
439
460
  getHindsightSessionState(): HindsightSessionState | undefined;
440
461
  setHindsightSessionState(state: HindsightSessionState | undefined): HindsightSessionState | undefined;
@@ -567,6 +588,12 @@ export declare class AgentSession {
567
588
  * no fold target exists.
568
589
  */
569
590
  hasForegroundBashBackgroundRequestHandler(): boolean;
591
+ /** Set the SDK permission policy used by guarded ACP tool execution. */
592
+ setSdkPermissionMode(mode: "prompt" | "allow" | "deny"): void;
593
+ /** Current SDK permission policy for guarded ACP tool execution. */
594
+ get sdkPermissionMode(): "prompt" | "allow" | "deny";
595
+ /** Register or clear the SDK reverse permission provider for this session. */
596
+ setSdkPermissionProvider(provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined): void;
570
597
  /**
571
598
  * Ask the active managed foreground bash call to return as a background job.
572
599
  * Returns false when no supported foreground tool is currently backgroundable.
@@ -613,10 +640,6 @@ export declare class AgentSession {
613
640
  * This allows /mcp add/remove/reauth to take effect without restarting the session.
614
641
  */
615
642
  refreshMCPTools(mcpTools: CustomTool[]): Promise<void>;
616
- /**
617
- * Replace RPC host-owned tools and refresh the active tool set before the next model call.
618
- */
619
- refreshRpcHostTools(rpcTools: AgentTool[]): Promise<void>;
620
643
  /**
621
644
  * Refresh plugin sub-skill tools after workflow/sub-skill activation or phase changes.
622
645
  */
@@ -657,7 +680,25 @@ export declare class AgentSession {
657
680
  get scopedModels(): ReadonlyArray<ScopedModelSelection>;
658
681
  /** Prompt templates */
659
682
  getPlanModeState(): PlanModeState | undefined;
683
+ /** Live SDK configuration values exposed through the session query surface. */
684
+ getSdkConfigItems(): Record<string, string>;
660
685
  setPlanModeState(state: PlanModeState | undefined): void;
686
+ invokeSkill(name: string, args?: string): Promise<{
687
+ name: string;
688
+ path: string;
689
+ args?: string;
690
+ lineCount?: number;
691
+ }>;
692
+ setSdkPlanMode(on: boolean): PlanModeState | undefined;
693
+ operateGoal(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
694
+ getTranscript(): Array<{
695
+ id: string;
696
+ role: string;
697
+ textSummary: string;
698
+ ts: string;
699
+ body: string;
700
+ }>;
701
+ getTranscriptBody(entryId: string): string | undefined;
661
702
  getGoalModeState(): GoalModeState | undefined;
662
703
  setGoalModeState(state: GoalModeState | undefined): void;
663
704
  getWorkflowGateEmitter(): WorkflowGateEmitter | undefined;
@@ -738,6 +779,7 @@ export declare class AgentSession {
738
779
  */
739
780
  sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
740
781
  deliverAs?: "steer" | "followUp";
782
+ onPreflightAccepted?: () => void;
741
783
  }): Promise<void>;
742
784
  /**
743
785
  * Clear queued messages and return them.
@@ -749,6 +791,12 @@ export declare class AgentSession {
749
791
  };
750
792
  /** Number of pending messages (includes steering, follow-up, and next-turn messages) */
751
793
  get queuedMessageCount(): number;
794
+ /** Typed pending-message counts per queue (steering, follow-up, next-turn). */
795
+ get pendingMessageCounts(): {
796
+ steering: number;
797
+ followUp: number;
798
+ nextTurn: number;
799
+ };
752
800
  /** Whether the agent has queued steering messages that a `user_interrupt`
753
801
  * abort would resume into (steer-on-interrupt). Drives the Esc-on-steer UX:
754
802
  * the first Esc consumes the steer and auto-continues, a second Esc aborts. */
@@ -779,6 +827,14 @@ export declare class AgentSession {
779
827
  getTodoPhases(): TodoPhase[];
780
828
  setTodoPhases(phases: TodoPhase[]): void;
781
829
  applyCompactionPostAppendForTests(compactionEntryId: string, firstKeptEntryId: string, fromExtension?: boolean): Promise<CompactionEntry | undefined>;
830
+ /** Read-only test seam for active mid-run EventStream drain barriers. */
831
+ get activeMidRunBarrierCountForTests(): number;
832
+ /** Read-only test seam for active mid-run maintenance invocations. */
833
+ get activeMidRunMaintenanceCountForTests(): number;
834
+ /** Test seam: drive the cooperative mid-run maintenance checkpoint directly. */
835
+ runMidRunMaintenanceForTests(context: AgentContext, lifecycle?: MidRunMaintenanceLifecycle): Promise<MidRunMaintenanceOutcome>;
836
+ /** Test seam: estimate mid-run context tokens for a given context view. */
837
+ estimateMidRunContextTokensForTests(messages: readonly AgentMessage[]): number;
782
838
  /**
783
839
  * Abort current operation and wait for agent to become idle.
784
840
  */
@@ -824,9 +880,28 @@ export declare class AgentSession {
824
880
  setModel(model: Model, role?: string, options?: {
825
881
  selector?: string;
826
882
  thinkingLevel?: ThinkingLevel;
883
+ cause?: ModelChangeCause;
827
884
  }): Promise<void>;
828
885
  setActiveModelProfile(name: string | undefined): void;
829
886
  getActiveModelProfile(): string | undefined;
887
+ /** Return the persisted configured fallback selectors for a model role. */
888
+ getConfiguredModelChain(role: string): readonly string[] | undefined;
889
+ /** Persist the configured fallback selectors for a model role. */
890
+ setConfiguredModelChain(role: string, entries: readonly string[], origin: string, identity?: string, explicitHead?: boolean): void;
891
+ /**
892
+ * Replace only the in-memory default fallback controller. Used when startup
893
+ * falls through an unavailable persisted chain to the global default, which
894
+ * must not mutate the persisted configured intent.
895
+ */
896
+ setDefaultFallbackRuntimeModel(selector: string): void;
897
+ /**
898
+ * Seed default fallback state after guarded auth-aware model resolution skips chain entries.
899
+ * The configured chain's role, origin, and identity are retained by the controller.
900
+ */
901
+ seedDefaultFallbackResolution(activeIndex: number, skips: Array<{
902
+ selector: string;
903
+ reason: string;
904
+ }>): void;
830
905
  /**
831
906
  * The model selector ("provider/id") that resume restores as the session
832
907
  * default — the latest session-log `model_change` with role="default".
@@ -858,7 +933,13 @@ export declare class AgentSession {
858
933
  */
859
934
  setModelTemporary(model: Model, thinkingLevel?: ThinkingLevel, options?: {
860
935
  persistAsSessionDefault?: boolean;
861
- }): Promise<void>;
936
+ cause?: ModelChangeCause;
937
+ reason?: TemporaryModelReason;
938
+ providerSessionScope?: TemporaryProviderSessionScope;
939
+ signal?: AbortSignal;
940
+ }): Promise<TemporaryProviderSessionScope | void>;
941
+ /** Set a durable per-session model from a control surface without exposing credential errors. */
942
+ setModelTemporaryForControl(model: Model, expectedSessionId?: string): Promise<boolean>;
862
943
  setDefaultModelSelection(model: Model, thinkingLevel: ThinkingLevel | undefined): Promise<DefaultModelSelectionResult>;
863
944
  /**
864
945
  * Cycle to next/previous model.
@@ -885,6 +966,17 @@ export declare class AgentSession {
885
966
  * Saves the effective metadata-clamped level to the session, and to settings when requested.
886
967
  */
887
968
  setThinkingLevel(level: ThinkingLevel | undefined, persist?: boolean): void;
969
+ /**
970
+ * Set thinking level from a control surface. Global changes are durable or rolled back.
971
+ */
972
+ setThinkingLevelForControl(level: ThinkingLevel, persist: boolean): Promise<void>;
973
+ getThinkingScopeForControl(): "session" | "global config";
974
+ getThinkingVisibility(): "visible" | "hidden";
975
+ setThinkingVisibility(visibility: "visible" | "hidden", persist?: boolean): void;
976
+ /**
977
+ * Set thinking visibility from a control surface. Global changes are durable or rolled back.
978
+ */
979
+ setThinkingVisibilityForControl(visibility: "visible" | "hidden", persist: boolean): Promise<void>;
888
980
  /**
889
981
  * Cycle to next thinking level.
890
982
  * @returns New level, or undefined if model doesn't support thinking
@@ -1190,6 +1282,7 @@ export declare class AgentSession {
1190
1282
  estimateCount: number;
1191
1283
  };
1192
1284
  fetchUsageReports(signal?: AbortSignal): Promise<UsageReport[] | null>;
1285
+ fetchUsageReportsForControl(): Promise<UsageReport[] | null>;
1193
1286
  /**
1194
1287
  * Export session to HTML.
1195
1288
  * @param outputPath Optional output path (defaults to session directory)
@@ -0,0 +1,25 @@
1
+ import type { ResolvedThinkingLevel } from "@gajae-code/agent-core";
2
+ export type DefaultModelSelectionRollbackStage = "durable" | "session" | "live";
3
+ export declare const DEFAULT_MODEL_SELECTION_RECOVERY_MESSAGE = "Default model selection could not be completed after durable selection.";
4
+ export type DefaultModelSelectionRecovery = {
5
+ readonly message: string;
6
+ readonly rollback: {
7
+ readonly disposition: "restored" | "partial" | "unknown";
8
+ readonly failures: readonly {
9
+ readonly stage: DefaultModelSelectionRollbackStage;
10
+ readonly message: string;
11
+ }[];
12
+ };
13
+ };
14
+ export interface DefaultModelSelectionResult {
15
+ readonly provider: string;
16
+ readonly modelId: string;
17
+ readonly thinkingLevel: ResolvedThinkingLevel;
18
+ }
19
+ export declare function parseDefaultModelSelectionRecovery(value: unknown): DefaultModelSelectionRecovery | undefined;
20
+ export declare class DefaultModelSelectionRecoveryError extends Error {
21
+ readonly name = "DefaultModelSelectionRecoveryError";
22
+ readonly code = "default_model_selection_recovery";
23
+ readonly recovery: DefaultModelSelectionRecovery;
24
+ constructor(_message: string, recovery: DefaultModelSelectionRecovery);
25
+ }
@@ -0,0 +1,52 @@
1
+ export type FallbackTriggerClass = "rate_limit" | "quota" | "auth" | "server" | "other";
2
+ /** Immutable configured fallback intent. Transient attempt state never belongs here. */
3
+ export interface ConfiguredFallbackChain {
4
+ role: string;
5
+ entries: readonly string[];
6
+ origin: string;
7
+ identity?: string;
8
+ explicitHead: boolean;
9
+ }
10
+ export interface FallbackFailure {
11
+ selector: string;
12
+ triggerClass: FallbackTriggerClass;
13
+ reason: string;
14
+ }
15
+ export type FallbackFailureResult = "retry" | "advance" | "exhausted";
16
+ /**
17
+ * In-memory policy state for one fallback-chain scope. A controller is deliberately
18
+ * not serializable: configured chain intent is durable, current position is not.
19
+ */
20
+ export declare class FallbackChainController {
21
+ #private;
22
+ readonly chain: ConfiguredFallbackChain;
23
+ readonly maxAttempts: number;
24
+ activeIndex: number;
25
+ attemptsUsed: number;
26
+ tried: FallbackFailure[];
27
+ skips: Array<{
28
+ selector: string;
29
+ reason: string;
30
+ }>;
31
+ exhaustedForTurn: boolean;
32
+ constructor(chain: ConfiguredFallbackChain, maxAttempts: number);
33
+ currentSelector(): string | undefined;
34
+ onResolutionSkip(reason: string): boolean;
35
+ /** Charge an upstream request at its concrete transport boundary. */
36
+ onAttemptStarted(): void;
37
+ /** Start a logically new request without losing its sticky selected entry. */
38
+ resetAttemptBudget(): void;
39
+ /** Seed a controller from auth-aware resolution without charging requests. */
40
+ seedResolution(activeIndex: number, skips: Array<{
41
+ selector: string;
42
+ reason: string;
43
+ }>): void;
44
+ onAttemptFailure(triggerClass: FallbackTriggerClass, reason: string): FallbackFailureResult;
45
+ advance(): boolean;
46
+ isExhausted(): boolean;
47
+ resetForNewTurn(): void;
48
+ resetSticky(): void;
49
+ }
50
+ export declare function cappedExponentialWithFullJitter(baseDelayMs: number, maxDelayMs: number, attemptK: number, random?: () => number): number;
51
+ /** Retry-After is intentionally uncapped. */
52
+ export declare function effectiveFallbackDelay(baseDelayMs: number, maxDelayMs: number, attemptK: number, retryAfterMs: number | undefined, random?: () => number): number;