@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
@@ -9,20 +9,20 @@ import type { Args } from "./cli/args";
9
9
  import { ModelRegistry } from "./config/model-registry";
10
10
  import { Settings } from "./config/settings";
11
11
  import type { ExtensionUIContext } from "./extensibility/extensions/types";
12
+ import type { AcpStartupOptions } from "./modes/acp/startup-options";
12
13
  import type { SessionSelectionResult } from "./modes/components/session-selector";
13
14
  import type { InteractiveMode } from "./modes/interactive-mode";
14
15
  import type { PrintModeOptions } from "./modes/print-mode";
15
16
  import { initTheme } from "./modes/theme/theme";
16
17
  import type { SubmittedUserInput } from "./modes/types";
17
18
  import type { MCPManager } from "./runtime-mcp";
18
- import { type CreateAgentSessionOptions, type CreateAgentSessionResult, createAgentSession, discoverAuthStorage } from "./sdk";
19
+ import { type CreateAgentSessionOptions, createAgentSession, discoverAuthStorage } from "./sdk";
19
20
  import type { AgentSession } from "./session/agent-session";
20
- import type { AuthStorage } from "./session/auth-storage";
21
21
  import { type ResumeSessionIdentity, type SessionInfo, SessionManager, type StrictSessionOpenResult } from "./session/session-manager";
22
22
  import { runStartupCredentialAutoImportIfNeeded } from "./setup/credential-auto-import";
23
23
  import type { LspStartupServerInfo } from "./tools";
24
24
  import type { EventBus } from "./utils/event-bus";
25
- export type StartupUpdateRoute = "interactive" | "print" | "text" | "json" | "rpc" | "rpc-ui" | "acp" | "bridge";
25
+ export type StartupUpdateRoute = "interactive" | "print" | "text" | "json" | "acp";
26
26
  export declare function classifyStartupUpdateRoute(parsed: Pick<Args, "print" | "mode">, autoPrint: boolean): StartupUpdateRoute;
27
27
  /** Coordinates the non-blocking update check around the interactive UI lifecycle. */
28
28
  export declare class StartupUpdateOrchestrator {
@@ -36,46 +36,44 @@ export interface StartupUpdateInteractiveMode {
36
36
  showNewVersionNotification: (version: string) => void;
37
37
  }
38
38
  export declare function initializeInteractiveModeWithStartupUpdate(mode: StartupUpdateInteractiveMode, startupUpdate: StartupUpdateOrchestrator): Promise<void>;
39
+ /**
40
+ * Translate only ACP startup settings with a canonical SDK control carrier.
41
+ * Every other local-session flag is rejected so the broker-backed ACP host
42
+ * never appears to accept options it cannot apply to its remote session.
43
+ */
44
+ export declare function resolveAcpStartupOptions(parsed: Pick<Args, "allowHome" | "apiKey" | "appendSystemPrompt" | "credential" | "continue" | "default" | "cwd" | "fileArgs" | "fork" | "hooks" | "messages" | "mpreset" | "mcpConfig" | "model" | "models" | "noLsp" | "noPty" | "noRules" | "noSession" | "noSkills" | "noTitle" | "noTools" | "pluginDirs" | "print" | "provider" | "providerSessionId" | "resume" | "sessionDir" | "skills" | "slow" | "smol" | "plan" | "systemPrompt" | "thinking" | "tmux" | "tools" | "extensions" | "unknownFlags">, sessionOptions: Pick<CreateAgentSessionOptions, "model" | "modelPattern" | "thinkingLevel">): AcpStartupOptions;
39
45
  declare function readPipedInput(): Promise<string | undefined>;
40
46
  export interface InteractiveModeNotify {
41
47
  kind: "warn" | "error" | "info";
42
48
  message: string;
43
49
  }
44
50
  export declare function submitInteractiveInput(mode: Pick<InteractiveMode, "markPendingSubmissionStarted" | "finishPendingSubmission" | "showError" | "checkShutdownRequested">, session: Pick<AgentSession, "prompt" | "promptCustomMessage">, input: SubmittedUserInput): Promise<void>;
45
- type CreateSessionForMain = (options: CreateAgentSessionOptions, context?: {
46
- skipPostCreateModelRefresh?: boolean;
47
- }) => Promise<CreateAgentSessionResult>;
48
- type AcpSessionFactory = (cwd: string) => Promise<AgentSession>;
49
- export interface AcpSessionFactoryOptions {
50
- baseOptions: CreateAgentSessionOptions;
51
- settings: Settings;
52
- sessionDir?: string;
53
- authStorage: AuthStorage;
54
- modelRegistry: ModelRegistry;
55
- parsedArgs: Pick<Args, "apiKey" | "default" | "model" | "mpreset" | "thinking">;
56
- rawArgs: string[];
57
- createSession: CreateSessionForMain;
58
- }
59
- export declare function applyStartupModelProfiles(args: {
51
+ type StartupModelProfileArgs = {
60
52
  session: AgentSession;
61
53
  settings: Settings;
62
54
  modelRegistry: ModelRegistry;
63
55
  parsedArgs: Pick<Args, "default" | "model" | "mpreset" | "thinking">;
64
56
  startupModel?: CreateAgentSessionOptions["model"];
65
57
  startupThinkingLevel?: CreateAgentSessionOptions["thinkingLevel"];
66
- }): Promise<void>;
67
- export declare function applyStartupModelProfilesOrExit(args: Parameters<typeof applyStartupModelProfiles>[0]): Promise<void>;
68
- /**
69
- * Build the per-`session/new` factory used by ACP mode.
70
- *
71
- * MCP servers in ACP sessions are owned exclusively by the ACP client, which
72
- * supplies them through `session/new.mcpServers` and re-applies them via
73
- * {@link AcpAgent#configureMcpServers}. We therefore force `enableMCP: false`
74
- * on every session created here so {@link createAgentSession} skips the on-disk
75
- * `.mcp.json` discovery path — otherwise host MCP tools land in the session's
76
- * tool registry and shadow the client-supplied servers (issue #1234).
77
- */
78
- export declare function createAcpSessionFactory(args: AcpSessionFactoryOptions): AcpSessionFactory;
58
+ };
59
+ export declare function applyStartupModelProfiles(args: StartupModelProfileArgs): Promise<void>;
60
+ export declare function applyStartupModelProfilesOrExit(args: StartupModelProfileArgs): Promise<void>;
61
+ export declare function isStartupModelProfileCredentialRecoveryEligible(options: {
62
+ isInteractive: boolean;
63
+ hasInteractiveTerminal: boolean;
64
+ initialMessage: string | undefined;
65
+ initialMessages: readonly string[];
66
+ resumeAction: "continue-tail" | "open-idle" | undefined;
67
+ }): boolean;
68
+ export declare function applyStartupModelProfilesForRoot(args: StartupModelProfileArgs & {
69
+ isInteractive: boolean;
70
+ hasInteractiveTerminal: boolean;
71
+ initialMessage: string | undefined;
72
+ initialMessages: readonly string[];
73
+ resumeAction: "continue-tail" | "open-idle" | undefined;
74
+ }): Promise<{
75
+ recoverableErrors: string[];
76
+ }>;
79
77
  interface InteractiveModeFactoryOptions {
80
78
  session: AgentSession;
81
79
  version: string;
@@ -105,15 +103,13 @@ export interface RlmPreset {
105
103
  applyOptions: (options: CreateAgentSessionOptions, settings: Settings) => void;
106
104
  onSessionCreated?: (session: AgentSession) => void | Promise<void>;
107
105
  }
108
- type RunRpcMode = (session: AgentSession, setToolUIContext?: CreateAgentSessionResult["setToolUIContext"], options?: {
109
- listen?: string;
110
- }) => Promise<void>;
111
- type RunBridgeMode = (session: AgentSession, setToolUIContext?: CreateAgentSessionResult["setToolUIContext"]) => Promise<void>;
112
106
  type RunPrintMode = (session: AgentSession, options: PrintModeOptions) => Promise<void>;
113
107
  export interface RunRootCommandDependencies {
114
108
  createAgentSession?: typeof createAgentSession;
115
109
  discoverAuthStorage?: typeof discoverAuthStorage;
116
- runAcpMode?: (createSession: AcpSessionFactory) => Promise<void>;
110
+ runAcpMode?: (options?: {
111
+ agentDir?: string;
112
+ }) => Promise<void>;
117
113
  settings?: Settings;
118
114
  rlmPreset?: RlmPreset;
119
115
  suppressProcessExit?: boolean;
@@ -124,8 +120,6 @@ export interface RunRootCommandDependencies {
124
120
  readPipedInput?: typeof readPipedInput;
125
121
  runStartupCredentialAutoImportIfNeeded?: typeof runStartupCredentialAutoImportIfNeeded;
126
122
  getChangelogForDisplay?: typeof getChangelogForDisplay;
127
- runRpcMode?: RunRpcMode;
128
- runBridgeMode?: RunBridgeMode;
129
123
  createInteractiveMode?: CreateInteractiveMode;
130
124
  runPrintMode?: RunPrintMode;
131
125
  isResumePickerTerminal?: ResumePickerTerminalCheck;
@@ -1,56 +1,239 @@
1
1
  import { type Agent, type AgentSideConnection, type AuthenticateRequest, type AuthenticateResponse, type ClientCapabilities, type CloseSessionRequest, type CloseSessionResponse, type DeleteSessionRequest, type DeleteSessionResponse, type ForkSessionRequest, type ForkSessionResponse, type InitializeRequest, type InitializeResponse, type ListSessionsRequest, type ListSessionsResponse, type LoadSessionRequest, type LoadSessionResponse, type NewSessionRequest, type NewSessionResponse, type PromptRequest, type PromptResponse, type ResumeSessionRequest, type ResumeSessionResponse, type SetSessionConfigOptionRequest, type SetSessionConfigOptionResponse, type SetSessionModeRequest, type SetSessionModeResponse } from "@agentclientprotocol/sdk";
2
- import type { ExtensionUIContext } from "../../extensibility/extensions";
3
- import type { AgentSession } from "../../session/agent-session";
2
+ import { type AcpProviderRegistration, AcpSdkAdapter } from "../../sdk/acp";
3
+ import type { AcpStartupOptions } from "./startup-options";
4
+ export declare const ACP_BOOTSTRAP_RACE_GUARD_MS = 50;
5
+ type JsonObject = Record<string, unknown>;
6
+ /** Applies ACP's offset cursor after narrowing the broker listing to the requested cwd. */
7
+ export declare function paginateAcpSessions(listed: unknown[], cwd: string | undefined, offset: number): ListSessionsResponse;
8
+ export type TranscriptReplayBlock = {
9
+ type: "text";
10
+ text: string;
11
+ } | {
12
+ type: "image";
13
+ data: string;
14
+ mimeType: string;
15
+ };
4
16
  /**
5
- * Delay between `session/new` (or `session/load` / `session/resume` /
6
- * `unstable_session/fork`) returning and the agent firing the first
7
- * notifications against the new session id. Mitigates Zed's
8
- * `Received session notification for unknown session` race — see
9
- * `#scheduleBootstrapUpdates`. Exported so the ACP test harness can
10
- * wait past this guard without hard-coding the literal.
17
+ * The production transcript query exposes durable `{ body, textSummary }`
18
+ * entries, not an ACP-shaped `content` array. Historical session JSONL has no
19
+ * recoverable image bytes, so replay exposes that boundary rather than
20
+ * pretending images were restored.
11
21
  */
12
- export declare const ACP_BOOTSTRAP_RACE_GUARD_MS = 50;
13
- type CreateAcpSession = (cwd: string) => Promise<AgentSession>;
22
+ export interface TranscriptReplayContent {
23
+ blocks: TranscriptReplayBlock[];
24
+ images: {
25
+ available: false;
26
+ reason: "historical_transcript_images_unavailable";
27
+ };
28
+ }
29
+ export declare function transcriptReplayContent(entry: unknown): TranscriptReplayContent;
30
+ /** Maps live canonical SDK config and model queries into the ACP 1.2.1 session state surface. */
31
+ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?: unknown): {
32
+ configOptions: ({
33
+ id: string;
34
+ name: string;
35
+ type: "select";
36
+ currentValue: string;
37
+ options: {
38
+ value: string;
39
+ name: string;
40
+ }[];
41
+ } | {
42
+ id: "model";
43
+ name: "Model";
44
+ type: "select";
45
+ currentValue: string;
46
+ options: {
47
+ value: string;
48
+ name: string;
49
+ }[] | ({
50
+ readonly value: "all";
51
+ readonly name: "All";
52
+ } | {
53
+ readonly value: "one-at-a-time";
54
+ readonly name: "One at a time";
55
+ } | {
56
+ readonly value: "all";
57
+ readonly name: "All";
58
+ } | {
59
+ readonly value: "one-at-a-time";
60
+ readonly name: "One at a time";
61
+ } | {
62
+ readonly value: "immediate";
63
+ readonly name: "Immediate";
64
+ } | {
65
+ readonly value: "wait";
66
+ readonly name: "Wait";
67
+ })[];
68
+ } | {
69
+ id: "thinking";
70
+ name: "Thinking";
71
+ type: "select";
72
+ currentValue: string;
73
+ options: {
74
+ value: string;
75
+ name: string;
76
+ }[] | ({
77
+ readonly value: "all";
78
+ readonly name: "All";
79
+ } | {
80
+ readonly value: "one-at-a-time";
81
+ readonly name: "One at a time";
82
+ } | {
83
+ readonly value: "all";
84
+ readonly name: "All";
85
+ } | {
86
+ readonly value: "one-at-a-time";
87
+ readonly name: "One at a time";
88
+ } | {
89
+ readonly value: "immediate";
90
+ readonly name: "Immediate";
91
+ } | {
92
+ readonly value: "wait";
93
+ readonly name: "Wait";
94
+ })[];
95
+ } | {
96
+ id: "steeringMode";
97
+ name: "Steering queue";
98
+ type: "select";
99
+ currentValue: string;
100
+ options: {
101
+ value: string;
102
+ name: string;
103
+ }[] | ({
104
+ readonly value: "all";
105
+ readonly name: "All";
106
+ } | {
107
+ readonly value: "one-at-a-time";
108
+ readonly name: "One at a time";
109
+ } | {
110
+ readonly value: "all";
111
+ readonly name: "All";
112
+ } | {
113
+ readonly value: "one-at-a-time";
114
+ readonly name: "One at a time";
115
+ } | {
116
+ readonly value: "immediate";
117
+ readonly name: "Immediate";
118
+ } | {
119
+ readonly value: "wait";
120
+ readonly name: "Wait";
121
+ })[];
122
+ } | {
123
+ id: "followUpMode";
124
+ name: "Follow-up queue";
125
+ type: "select";
126
+ currentValue: string;
127
+ options: {
128
+ value: string;
129
+ name: string;
130
+ }[] | ({
131
+ readonly value: "all";
132
+ readonly name: "All";
133
+ } | {
134
+ readonly value: "one-at-a-time";
135
+ readonly name: "One at a time";
136
+ } | {
137
+ readonly value: "all";
138
+ readonly name: "All";
139
+ } | {
140
+ readonly value: "one-at-a-time";
141
+ readonly name: "One at a time";
142
+ } | {
143
+ readonly value: "immediate";
144
+ readonly name: "Immediate";
145
+ } | {
146
+ readonly value: "wait";
147
+ readonly name: "Wait";
148
+ })[];
149
+ } | {
150
+ id: "interruptMode";
151
+ name: "Interrupt mode";
152
+ type: "select";
153
+ currentValue: string;
154
+ options: {
155
+ value: string;
156
+ name: string;
157
+ }[] | ({
158
+ readonly value: "all";
159
+ readonly name: "All";
160
+ } | {
161
+ readonly value: "one-at-a-time";
162
+ readonly name: "One at a time";
163
+ } | {
164
+ readonly value: "all";
165
+ readonly name: "All";
166
+ } | {
167
+ readonly value: "one-at-a-time";
168
+ readonly name: "One at a time";
169
+ } | {
170
+ readonly value: "immediate";
171
+ readonly name: "Immediate";
172
+ } | {
173
+ readonly value: "wait";
174
+ readonly name: "Wait";
175
+ })[];
176
+ })[];
177
+ modes: {
178
+ availableModes: {
179
+ id: string;
180
+ name: string;
181
+ }[];
182
+ currentModeId: string;
183
+ };
184
+ };
185
+ /** Convert every ACP prompt block the agent advertises without silently discarding context. */
186
+ export declare function acpPromptPayload(blocks: PromptRequest["prompt"]): {
187
+ text: string;
188
+ images: Array<{
189
+ data: string;
190
+ mimeType: string;
191
+ }>;
192
+ };
193
+ /** Registers a permission provider only when the ACP client requires prompts. */
194
+ export declare function acpProviderRegistrations(capabilities: ClientCapabilities | undefined, env?: NodeJS.ProcessEnv): AcpProviderRegistration[];
195
+ /** Maps ACP permission handling to the session's canonical SDK policy. */
196
+ export declare function applyAcpPermissionMode(adapter: Pick<AcpSdkAdapter, "control">, capabilities: ClientCapabilities | undefined, env?: NodeJS.ProcessEnv): Promise<void>;
197
+ /** Applies CLI-provided ACP startup settings through SDK controls before session exposure. */
198
+ export declare function applyAcpStartupOptions(adapter: Pick<AcpSdkAdapter, "setModel" | "control">, options: AcpStartupOptions | undefined): Promise<void>;
199
+ /** ACP form elicitation uses the client-facing reverse surface without owning a session runtime. */
200
+ export declare function createAcpExtensionUiContext(connection: AgentSideConnection, getSessionId: () => string, capabilities: ClientCapabilities | undefined): {
201
+ select: (message: string, options: string[], dialog?: {
202
+ signal?: AbortSignal;
203
+ timeout?: number;
204
+ onTimeout?: () => void;
205
+ }) => Promise<string | undefined>;
206
+ confirm: (message: string, detail?: string, dialog?: {
207
+ signal?: AbortSignal;
208
+ timeout?: number;
209
+ onTimeout?: () => void;
210
+ }) => Promise<boolean>;
211
+ input: (message: string, placeholder?: string, dialog?: {
212
+ signal?: AbortSignal;
213
+ timeout?: number;
214
+ onTimeout?: () => void;
215
+ }) => Promise<string | undefined>;
216
+ };
14
217
  /**
15
- * Build an {@link ExtensionUIContext} that translates skill/extension UI
16
- * requests into ACP elicitations against `connection` for the session
17
- * returned by `getSessionId()`. The id is read lazily at each elicitation
18
- * because `AgentSession.sessionId` is a getter over `sessionManager` state
19
- * that mutates when an extension command calls `ctx.newSession` /
20
- * `ctx.switchSession` — snapshotting it once at factory time would route
21
- * later elicitations to the pre-switch id. Live reads keep the bridge
22
- * symmetric with every other `sessionUpdate` call in this file
23
- * (`record.session.sessionId` is always evaluated at emit time).
24
- *
25
- * The non-elicitation surface (custom components, editor, theming,
26
- * terminal input) remains stubbed — ACP clients render those themselves
27
- * or not at all. Capability gating respects the client's `initialize`
28
- * advertisement.
218
+ * ACP is a pure SDK client. Session processes are created and resumed by the
219
+ * broker, while all per-session operations use that session's authenticated SDK
220
+ * endpoint. This class deliberately imports neither AgentSession nor any local
221
+ * runtime host component.
29
222
  */
30
- export declare function createAcpExtensionUiContext(connection: AgentSideConnection, getSessionId: () => string, clientCapabilities: ClientCapabilities | undefined): ExtensionUIContext;
31
223
  export declare class AcpAgent implements Agent {
32
224
  #private;
33
- constructor(connection: AgentSideConnection, createSession: CreateAcpSession, initialSession?: AgentSession);
34
- setCancelCleanupTimeoutForTesting(timeoutMs: number): void;
225
+ constructor(connection: AgentSideConnection, options?: {
226
+ agentDir?: string;
227
+ startupOptions?: AcpStartupOptions;
228
+ } | unknown);
35
229
  initialize(params: InitializeRequest): Promise<InitializeResponse>;
36
230
  authenticate(params: AuthenticateRequest): Promise<AuthenticateResponse>;
37
231
  newSession(params: NewSessionRequest): Promise<NewSessionResponse>;
38
232
  loadSession(params: LoadSessionRequest): Promise<LoadSessionResponse>;
39
- listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse>;
40
233
  resumeSession(params: ResumeSessionRequest): Promise<ResumeSessionResponse>;
41
234
  unstable_forkSession(params: ForkSessionRequest): Promise<ForkSessionResponse>;
235
+ listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse>;
42
236
  closeSession(params: CloseSessionRequest): Promise<CloseSessionResponse>;
43
- /**
44
- * Hard delete an ACP session. `DeleteSessionRequest` carries only `sessionId`;
45
- * the server owns authorization through the immutable canonical cwd scope and
46
- * the complete strict scoped inventory snapshot.
47
- *
48
- * - No scope / unknown / already-deleted id → lookup-free `{}`.
49
- * - Duplicate/conflict id → visible error; neither transcript nor artifacts change.
50
- * - Active session → reserve `deleting`, drain/cancel prompt, flush, strict
51
- * dispose/close, recheck identity/state, then verified artifact-first deletion.
52
- * - Concurrent delete callers join the terminal promise.
53
- */
54
237
  deleteSession(params: DeleteSessionRequest): Promise<DeleteSessionResponse>;
55
238
  setSessionMode(params: SetSessionModeRequest): Promise<SetSessionModeResponse>;
56
239
  setSessionConfigOption(params: SetSessionConfigOptionRequest): Promise<SetSessionConfigOptionResponse>;
@@ -58,21 +241,9 @@ export declare class AcpAgent implements Agent {
58
241
  cancel(params: {
59
242
  sessionId: string;
60
243
  }): Promise<void>;
61
- extMethod(method: string, params: {
62
- [key: string]: unknown;
63
- }): Promise<{
64
- [key: string]: unknown;
65
- }>;
66
- extNotification(_method: string, _params: {
67
- [key: string]: unknown;
68
- }): Promise<void>;
244
+ extMethod(method: string, params: JsonObject): Promise<JsonObject>;
245
+ extNotification(_method: string, _params: JsonObject): Promise<void>;
69
246
  get signal(): AbortSignal;
70
247
  get closed(): Promise<void>;
71
- /**
72
- * Connection-local shutdown promise. Resolves once all terminal work (dispose,
73
- * active deletes, abort cleanup) has settled. `acp-mode.ts` awaits this after
74
- * transport closure so `process.exit` never kills in-flight deletion/disposal.
75
- */
76
- get shutdownPromise(): Promise<void>;
77
248
  }
78
249
  export {};
@@ -6,4 +6,5 @@
6
6
  */
7
7
  import type { AgentSideConnection, ClientCapabilities } from "@agentclientprotocol/sdk";
8
8
  import type { ClientBridge } from "../../session/client-bridge";
9
+ export { type AcpPermissionMode, resolveAcpPermissionMode } from "./permission-mode";
9
10
  export declare function createAcpClientBridge(connection: AgentSideConnection, sessionId: string, clientCapabilities: ClientCapabilities | undefined): ClientBridge;
@@ -1,17 +1,8 @@
1
1
  import { AgentSideConnection, type Stream } from "@agentclientprotocol/sdk";
2
- import type { AgentSession } from "../../session/agent-session";
3
- import { AcpAgent } from "./acp-agent";
4
- export type AcpSessionFactory = (cwd: string) => Promise<AgentSession>;
5
- export interface AcpConnectionHandle {
6
- connection: AgentSideConnection;
7
- agent: AcpAgent;
2
+ import type { AcpStartupOptions } from "./startup-options";
3
+ export interface AcpModeOptions {
4
+ agentDir?: string;
5
+ startupOptions?: AcpStartupOptions;
8
6
  }
9
- export declare function createAcpConnection(transport: Stream, createSession: AcpSessionFactory, initialSession?: AgentSession): AgentSideConnection;
10
- /**
11
- * Create an ACP connection and return both the {@link AgentSideConnection} and the
12
- * underlying {@link AcpAgent}. Callers that need to await agent shutdown (terminal
13
- * delete/dispose work) after transport closure should use this instead of
14
- * {@link createAcpConnection}.
15
- */
16
- export declare function createAcpConnectionWithAgent(transport: Stream, createSession: AcpSessionFactory, initialSession?: AgentSession): AcpConnectionHandle;
17
- export declare function runAcpMode(createSession: AcpSessionFactory, initialSession?: AgentSession): Promise<never>;
7
+ export declare function createAcpConnection(transport: Stream, options?: AcpModeOptions): AgentSideConnection;
8
+ export declare function runAcpMode(options?: AcpModeOptions): Promise<never>;
@@ -0,0 +1,4 @@
1
+ import type { ClientCapabilities } from "@agentclientprotocol/sdk";
2
+ export type AcpPermissionMode = "auto" | "prompt" | "always-allow";
3
+ /** Client metadata is authoritative; the process environment is only a fallback when that field is absent. */
4
+ export declare function resolveAcpPermissionMode(clientCapabilities: ClientCapabilities | undefined, env?: NodeJS.ProcessEnv): AcpPermissionMode;
@@ -0,0 +1,6 @@
1
+ /** Startup settings that ACP can apply through the canonical SDK control surface. */
2
+ export interface AcpStartupOptions {
3
+ modelId?: string;
4
+ modelPreset?: string;
5
+ thinkingLevel?: string;
6
+ }
@@ -1,11 +1,14 @@
1
1
  import { Container } from "@gajae-code/tui";
2
2
  import type { ModelRegistry } from "../../config/model-registry";
3
+ import { type ModelSelectorValue } from "../../config/model-selector-value";
3
4
  import { Settings } from "../../config/settings";
4
5
  interface AgentDashboardModelContext {
5
6
  modelRegistry?: ModelRegistry;
6
7
  activeModelPattern?: string;
7
8
  defaultModelPattern?: string;
8
9
  }
10
+ export declare function resolveAgentCreationModel(modelPatterns: string[], modelRegistry: ModelRegistry, settings: Settings | undefined): import("@gajae-code/ai").Model<import("@gajae-code/ai").Api>;
11
+ export declare function updateAgentModelOverride(overrides: Record<string, ModelSelectorValue>, agentName: string, rawValue: string): Record<string, ModelSelectorValue>;
9
12
  export declare class AgentDashboard extends Container {
10
13
  #private;
11
14
  private readonly cwd;
@@ -47,6 +47,7 @@ export declare class ModelSelectorComponent extends Container {
47
47
  isCurrentModelFastModeActive?: () => boolean;
48
48
  currentThinkingLevel?: ThinkingLevel;
49
49
  activeModelProfile?: string;
50
+ configuredDefaultChain?: readonly string[];
50
51
  });
51
52
  refreshRoleAssignments(options?: {
52
53
  currentModel?: Model;
@@ -0,0 +1,135 @@
1
+ import { type Component, type Focusable, type SecretValue } from "@gajae-code/tui";
2
+ import type { CasReceipt } from "../../config/atomic-yaml-patch";
3
+ import type { BlockedTelegramRestoreResult, ProposedTelegramIdentity, TelegramDaemonReconnectOutcome } from "../../sdk/bus/notification-orchestration";
4
+ import type { NotificationHealthReport, NotificationRecoveryReport, NotificationStatusReport, NotificationTestResult } from "../../sdk/bus/notification-service";
5
+ import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../../sdk/bus/session-control";
6
+ /** Safe scalar notification preferences. Credentials and destination IDs are deliberately absent. */
7
+ export interface NotificationsEditorPreferences {
8
+ redact: boolean;
9
+ verbosity: "lean" | "verbose";
10
+ sessionScope: "all" | "primary";
11
+ richEnabled: boolean;
12
+ richDraftEnabled: boolean;
13
+ }
14
+ /** Secret-safe snapshot used to render the Notifications tab. */
15
+ export interface NotificationsEditorState {
16
+ status: NotificationStatusReport;
17
+ session: NotificationSessionStatus;
18
+ preferences: NotificationsEditorPreferences;
19
+ health?: NotificationHealthReport;
20
+ }
21
+ /**
22
+ * A one-way setup value accepted from the masked input. The operation adapter
23
+ * consumes the secret and returns a safe-to-render prepared draft.
24
+ */
25
+ export interface NotificationsEditorSetupInput {
26
+ token: SecretValue;
27
+ /** Optional: omit to use daemon-aware private-chat discovery when polling is safe. */
28
+ chatId?: string;
29
+ richEnabled: boolean;
30
+ richDraftEnabled: boolean;
31
+ }
32
+ /**
33
+ * Secret-safe setup draft. The adapter may retain its private credential while
34
+ * this object is live, but no raw token is exposed through this contract.
35
+ */
36
+ export interface PreparedTelegramConfiguration {
37
+ chatId: string;
38
+ tokenMask: string;
39
+ tokenFingerprint?: string;
40
+ richEnabled: boolean;
41
+ richDraftEnabled: boolean;
42
+ }
43
+ export interface NotificationsPreflightResult {
44
+ status: "ready" | "aborted" | "cancelled" | "error";
45
+ identity: ProposedTelegramIdentity;
46
+ message: string;
47
+ pairingSource?: "discovered" | "provided" | "reused";
48
+ draft?: PreparedTelegramConfiguration;
49
+ }
50
+ /** A successful configuration save always carries an opaque CAS receipt. */
51
+ export type NotificationsConfigureCommitResult = {
52
+ status: "saved";
53
+ receipt: CasReceipt;
54
+ message: string;
55
+ } | {
56
+ status: "blocked_identity";
57
+ receipt: CasReceipt;
58
+ message: string;
59
+ restore(): Promise<BlockedTelegramRestoreResult>;
60
+ retainCommitted(): void;
61
+ };
62
+ export interface NotificationsMutationResult {
63
+ message: string;
64
+ receipt?: CasReceipt;
65
+ }
66
+ export type NotificationsSaveInactiveResult = {
67
+ status: "saved_inactive";
68
+ receipt: CasReceipt;
69
+ message: string;
70
+ } | {
71
+ status: "unavailable";
72
+ guidance: string;
73
+ };
74
+ /**
75
+ * Controller-injected boundary for the direct Notifications editor.
76
+ *
77
+ * The component only renders this contract and sends user intent through it:
78
+ * it never reads Settings, starts a daemon, or calls notification services.
79
+ */
80
+ export interface NotificationsEditorOperations {
81
+ /** Combines a buildNotificationStatusReport-shaped status snapshot with the current session-control query. */
82
+ loadState(): Promise<NotificationsEditorState>;
83
+ /** Performs offline health refreshes and a non-cancellable reachability probe when requested. */
84
+ refreshHealth(input: {
85
+ probe: boolean;
86
+ signal?: AbortSignal;
87
+ }): Promise<NotificationHealthReport>;
88
+ sendTest(): Promise<NotificationTestResult>;
89
+ recover(): Promise<NotificationRecoveryReport>;
90
+ reconnect(): Promise<TelegramDaemonReconnectOutcome>;
91
+ /** Validates/discovers a Telegram destination and returns a secret-safe prepared draft. */
92
+ preflightProposedIdentity(input: NotificationsEditorSetupInput, signal: AbortSignal): Promise<NotificationsPreflightResult>;
93
+ /** Atomically persists a prepared Telegram configuration and returns its CAS-backed receipt. */
94
+ commitConfigure(draft: PreparedTelegramConfiguration): Promise<NotificationsConfigureCommitResult>;
95
+ /** Stores a prepared Telegram configuration inactive when the mixed-adapter rule permits it. */
96
+ saveInactive(draft: PreparedTelegramConfiguration): Promise<NotificationsSaveInactiveResult>;
97
+ /** Clears adapter-local ephemeral credential material for a prepared setup draft. Idempotent. */
98
+ discardConfigureDraft(draft: PreparedTelegramConfiguration): void;
99
+ /** Enables globally without requesting or exposing a credential. */
100
+ enableGlobally(): Promise<NotificationsMutationResult>;
101
+ disableGlobally(): Promise<NotificationsMutationResult>;
102
+ /** Removes only Telegram configuration; the adapter preserves Discord/Slack when configured. */
103
+ removeTelegram(): Promise<NotificationsMutationResult & {
104
+ globallyDisabled?: boolean;
105
+ }>;
106
+ setSessionLocal(enabled: boolean): Promise<NotificationSessionReconcileResult>;
107
+ /** Atomically persists the scalar preference draft. */
108
+ commitPreferences(preferences: NotificationsEditorPreferences): Promise<NotificationsMutationResult>;
109
+ /** Reconciles the current session after durable global configuration changes. */
110
+ reconcileCurrentSession(): Promise<NotificationSessionReconcileResult>;
111
+ }
112
+ export interface NotificationsSettingsEditorCallbacks {
113
+ onCancel?: () => void;
114
+ }
115
+ type EditorMode = "home" | "provider-selection" | "chat-entry" | "token-entry" | "pairing" | "review" | "preferences" | "confirmation";
116
+ /**
117
+ * Direct tab content for notification setup and operations. It is deliberately
118
+ * independent of Settings and notification services; WI7b injects the adapter.
119
+ */
120
+ export declare class NotificationsSettingsEditorComponent implements Component, Focusable {
121
+ #private;
122
+ private readonly operations;
123
+ private readonly callbacks;
124
+ focused: boolean;
125
+ constructor(operations: NotificationsEditorOperations, callbacks?: NotificationsSettingsEditorCallbacks);
126
+ /** True while a guarded operation or blocked restore/retain decision owns the editor. */
127
+ get navigationLocked(): boolean;
128
+ /** Current state is exposed for selector lifecycle coordination and focused tests. */
129
+ get mode(): EditorMode;
130
+ invalidate(): void;
131
+ dispose(): void;
132
+ render(width: number): string[];
133
+ handleInput(data: string): void;
134
+ }
135
+ export {};