@gajae-code/coding-agent 0.10.2 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/CHANGELOG.md +58 -2
  2. package/dist/types/append-only-mode.d.ts +1 -1
  3. package/dist/types/async/job-manager.d.ts +46 -7
  4. package/dist/types/cli/args.d.ts +4 -5
  5. package/dist/types/cli/daemon-cli.d.ts +12 -1
  6. package/dist/types/cli/notify-cli.d.ts +21 -1
  7. package/dist/types/cli.d.ts +3 -0
  8. package/dist/types/commands/daemon.d.ts +39 -0
  9. package/dist/types/commands/launch.d.ts +3 -0
  10. package/dist/types/commands/notify.d.ts +28 -1
  11. package/dist/types/commands/sdk.d.ts +33 -0
  12. package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
  13. package/dist/types/config/model-profile-activation.d.ts +35 -15
  14. package/dist/types/config/model-profiles.d.ts +11 -5
  15. package/dist/types/config/model-registry.d.ts +3 -3
  16. package/dist/types/config/model-resolver.d.ts +39 -6
  17. package/dist/types/config/model-selector-value.d.ts +17 -0
  18. package/dist/types/config/models-config-schema.d.ts +10 -6
  19. package/dist/types/config/settings-schema.d.ts +133 -6
  20. package/dist/types/config/settings.d.ts +63 -35
  21. package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
  22. package/dist/types/coordinator-mcp/server.d.ts +6 -49
  23. package/dist/types/daemon/builtin.d.ts +6 -5
  24. package/dist/types/daemon/control-types.d.ts +1 -1
  25. package/dist/types/discovery/mcp-json.d.ts +12 -1
  26. package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
  27. package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
  28. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
  29. package/dist/types/extensibility/extensions/loader.d.ts +10 -1
  30. package/dist/types/extensibility/extensions/runner.d.ts +3 -3
  31. package/dist/types/extensibility/extensions/types.d.ts +141 -16
  32. package/dist/types/extensibility/hooks/types.d.ts +1 -1
  33. package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
  34. package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
  35. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
  36. package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
  37. package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
  38. package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
  39. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
  40. package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
  41. package/dist/types/harness-control-plane/operate.d.ts +5 -5
  42. package/dist/types/harness-control-plane/owner.d.ts +18 -4
  43. package/dist/types/harness-control-plane/receipts.d.ts +0 -1
  44. package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
  45. package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
  46. package/dist/types/harness-control-plane/types.d.ts +3 -4
  47. package/dist/types/lsp/index.d.ts +1 -1
  48. package/dist/types/main.d.ts +32 -38
  49. package/dist/types/modes/acp/acp-agent.d.ts +224 -53
  50. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
  51. package/dist/types/modes/acp/acp-mode.d.ts +6 -15
  52. package/dist/types/modes/acp/permission-mode.d.ts +4 -0
  53. package/dist/types/modes/acp/startup-options.d.ts +6 -0
  54. package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
  55. package/dist/types/modes/components/model-selector.d.ts +1 -0
  56. package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
  57. package/dist/types/modes/components/settings-selector.d.ts +6 -4
  58. package/dist/types/modes/components/welcome.d.ts +1 -1
  59. package/dist/types/modes/controllers/command-controller.d.ts +2 -2
  60. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
  61. package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
  62. package/dist/types/modes/index.d.ts +0 -4
  63. package/dist/types/modes/interactive-mode.d.ts +5 -2
  64. package/dist/types/modes/runtime-init.d.ts +2 -2
  65. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
  66. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
  67. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
  68. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
  69. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
  70. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
  71. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
  72. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
  73. package/dist/types/modes/types.d.ts +7 -2
  74. package/dist/types/runtime-mcp/client.d.ts +2 -0
  75. package/dist/types/runtime-mcp/config.d.ts +5 -1
  76. package/dist/types/runtime-mcp/manager.d.ts +8 -1
  77. package/dist/types/runtime-mcp/types.d.ts +4 -0
  78. package/dist/types/sdk/acp/adapter.d.ts +67 -0
  79. package/dist/types/sdk/acp/index.d.ts +2 -0
  80. package/dist/types/sdk/broker/broker.d.ts +53 -0
  81. package/dist/types/sdk/broker/discovery.d.ts +30 -0
  82. package/dist/types/sdk/broker/ensure.d.ts +42 -0
  83. package/dist/types/sdk/broker/identity.d.ts +3 -0
  84. package/dist/types/sdk/broker/index.d.ts +8 -0
  85. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
  86. package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
  87. package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
  88. package/dist/types/sdk/broker/runtime.d.ts +33 -0
  89. package/dist/types/sdk/broker/session-index.d.ts +57 -0
  90. package/dist/types/sdk/broker/state-version.d.ts +8 -0
  91. package/dist/types/sdk/broker/transport.d.ts +9 -0
  92. package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
  93. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
  94. package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
  95. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
  96. package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
  97. package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
  98. package/dist/types/sdk/bus/config.d.ts +274 -0
  99. package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
  100. package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
  101. package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
  102. package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
  103. package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
  104. package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
  105. package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
  106. package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
  107. package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
  108. package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
  109. package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
  110. package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
  111. package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
  112. package/dist/types/sdk/bus/session-control.d.ts +83 -0
  113. package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
  114. package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
  115. package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
  116. package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
  117. package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
  118. package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
  119. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
  120. package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
  121. package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
  122. package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
  123. package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
  124. package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
  125. package/dist/types/sdk/cli/index.d.ts +1 -0
  126. package/dist/types/sdk/cli/session-cli.d.ts +19 -0
  127. package/dist/types/sdk/client/client.d.ts +1 -0
  128. package/dist/types/sdk/client/discovery.d.ts +27 -0
  129. package/dist/types/sdk/client/index.d.ts +2 -0
  130. package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
  131. package/dist/types/sdk/host/control/index.d.ts +2 -0
  132. package/dist/types/sdk/host/control/operations.d.ts +65 -0
  133. package/dist/types/sdk/host/events.d.ts +35 -0
  134. package/dist/types/sdk/host/host.d.ts +35 -0
  135. package/dist/types/sdk/host/index.d.ts +4 -0
  136. package/dist/types/sdk/host/query/cursor.d.ts +62 -0
  137. package/dist/types/sdk/host/query/handlers.d.ts +70 -0
  138. package/dist/types/sdk/host/query/index.d.ts +3 -0
  139. package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
  140. package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
  141. package/dist/types/sdk/host/types.d.ts +32 -0
  142. package/dist/types/sdk/index.d.ts +6 -0
  143. package/dist/types/sdk/lifecycle-session.d.ts +14 -0
  144. package/dist/types/sdk/mcp/index.d.ts +1 -0
  145. package/dist/types/sdk/mcp/server.d.ts +37 -0
  146. package/dist/types/sdk/models.d.ts +44 -0
  147. package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
  148. package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
  149. package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
  150. package/dist/types/sdk/startup-capability.d.ts +50 -0
  151. package/dist/types/session/agent-session.d.ts +114 -21
  152. package/dist/types/session/default-model-selection.d.ts +25 -0
  153. package/dist/types/session/fallback-chain-controller.d.ts +52 -0
  154. package/dist/types/session/session-manager.d.ts +58 -1
  155. package/dist/types/setup/credential-auto-import.d.ts +36 -6
  156. package/dist/types/tools/ask-answer-registry.d.ts +1 -1
  157. package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
  158. package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
  159. package/dist/types/tools/browser/launch.d.ts +22 -0
  160. package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
  161. package/dist/types/tools/browser/profile-posture.d.ts +37 -0
  162. package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
  163. package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
  164. package/dist/types/tools/browser/registry.d.ts +19 -0
  165. package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
  166. package/dist/types/tools/index.d.ts +8 -8
  167. package/dist/types/tools/subagent-render.d.ts +1 -0
  168. package/dist/types/tools/subagent.d.ts +6 -1
  169. package/package.json +34 -13
  170. package/scripts/build-sdk-package-smoke.ts +99 -0
  171. package/scripts/capture-notifications-settings-showcase.ts +435 -0
  172. package/scripts/compile-args.ts +4 -2
  173. package/scripts/g005-daemon-smoke.ts +4 -5
  174. package/scripts/g011-daemon-path-smoke.ts +5 -5
  175. package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
  176. package/scripts/generate-sdk-operation-inventory.ts +867 -0
  177. package/scripts/generate-telegram-baseline-manifest.ts +128 -0
  178. package/scripts/manifest-schema.ts +124 -0
  179. package/scripts/run-test-manifest.ts +153 -0
  180. package/scripts/run-threat-model-check.ts +157 -0
  181. package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
  182. package/scripts/verify-gjc-sdk-rename.ts +90 -0
  183. package/src/append-only-mode.ts +1 -1
  184. package/src/async/job-manager.ts +406 -63
  185. package/src/cli/args.ts +43 -12
  186. package/src/cli/auth-gateway-cli.ts +2 -2
  187. package/src/cli/config-cli.ts +2 -1
  188. package/src/cli/daemon-cli.ts +63 -14
  189. package/src/cli/list-models.ts +1 -1
  190. package/src/cli/notify-cli.ts +288 -286
  191. package/src/cli.ts +21 -2
  192. package/src/commands/daemon.ts +50 -6
  193. package/src/commands/harness.ts +93 -36
  194. package/src/commands/launch.ts +5 -2
  195. package/src/commands/mcp-serve.ts +19 -12
  196. package/src/commands/notify.ts +36 -3
  197. package/src/commands/sdk.ts +426 -0
  198. package/src/commit/agentic/agent.ts +1 -0
  199. package/src/config/atomic-yaml-patch.ts +423 -0
  200. package/src/config/model-profile-activation.ts +240 -89
  201. package/src/config/model-profiles.ts +18 -15
  202. package/src/config/model-registry.ts +51 -26
  203. package/src/config/model-resolver.ts +138 -51
  204. package/src/config/model-selector-value.ts +50 -0
  205. package/src/config/models-config-schema.ts +14 -21
  206. package/src/config/settings-schema.ts +128 -10
  207. package/src/config/settings.ts +1120 -158
  208. package/src/coordinator-mcp/model-preset.ts +74 -20
  209. package/src/coordinator-mcp/server.ts +1597 -3052
  210. package/src/daemon/builtin.ts +8 -5
  211. package/src/daemon/control-types.ts +1 -1
  212. package/src/defaults/gjc/skills/team/SKILL.md +4 -4
  213. package/src/discovery/mcp-json.ts +327 -20
  214. package/src/extensibility/custom-tools/types.ts +1 -1
  215. package/src/extensibility/extensions/compact-handler.ts +3 -3
  216. package/src/extensibility/extensions/get-commands-handler.ts +2 -2
  217. package/src/extensibility/extensions/loader.ts +69 -5
  218. package/src/extensibility/extensions/runner.ts +112 -4
  219. package/src/extensibility/extensions/types.ts +176 -17
  220. package/src/extensibility/hooks/types.ts +1 -1
  221. package/src/gjc-runtime/launch-tmux.ts +170 -86
  222. package/src/gjc-runtime/psmux-detect.ts +82 -4
  223. package/src/gjc-runtime/session-state-sidecar.ts +41 -31
  224. package/src/gjc-runtime/team-runtime.ts +54 -35
  225. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
  226. package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
  227. package/src/gjc-runtime/tmux-sessions.ts +19 -13
  228. package/src/gjc-runtime/ultragoal-guard.ts +108 -14
  229. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
  230. package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
  231. package/src/gjc-runtime/windows-powershell-command.ts +58 -0
  232. package/src/harness-control-plane/operate.ts +9 -9
  233. package/src/harness-control-plane/owner.ts +283 -39
  234. package/src/harness-control-plane/receipts.ts +0 -1
  235. package/src/harness-control-plane/sdk-transport.ts +395 -0
  236. package/src/harness-control-plane/session-transport.ts +94 -0
  237. package/src/harness-control-plane/types.ts +1 -1
  238. package/src/internal-urls/docs-index.generated.ts +34 -35
  239. package/src/lsp/client.ts +42 -6
  240. package/src/lsp/index.ts +2 -2
  241. package/src/main.ts +299 -204
  242. package/src/modes/DESIGN.md +258 -0
  243. package/src/modes/acp/acp-agent.ts +1228 -2612
  244. package/src/modes/acp/acp-client-bridge.ts +2 -20
  245. package/src/modes/acp/acp-event-mapper.ts +18 -2
  246. package/src/modes/acp/acp-mode.ts +8 -36
  247. package/src/modes/acp/permission-mode.ts +25 -0
  248. package/src/modes/acp/startup-options.ts +6 -0
  249. package/src/modes/components/agent-dashboard.ts +37 -17
  250. package/src/modes/components/model-selector.ts +93 -35
  251. package/src/modes/components/notifications-settings-editor.ts +1379 -0
  252. package/src/modes/components/settings-selector.ts +60 -11
  253. package/src/modes/components/welcome.ts +4 -4
  254. package/src/modes/controllers/command-controller.ts +10 -17
  255. package/src/modes/controllers/event-controller.ts +11 -16
  256. package/src/modes/controllers/extension-ui-controller.ts +396 -28
  257. package/src/modes/controllers/selector-controller.ts +674 -36
  258. package/src/modes/index.ts +0 -22
  259. package/src/modes/interactive-mode.ts +87 -36
  260. package/src/modes/runtime-init.ts +298 -6
  261. package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
  262. package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
  263. package/src/modes/shared/agent-wire/event-contract.ts +7 -8
  264. package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
  265. package/src/modes/shared/agent-wire/event-observation.ts +16 -7
  266. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
  267. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
  268. package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
  269. package/src/modes/types.ts +7 -2
  270. package/src/runtime-mcp/client.ts +94 -19
  271. package/src/runtime-mcp/config.ts +27 -15
  272. package/src/runtime-mcp/manager.ts +343 -105
  273. package/src/runtime-mcp/oauth-flow.ts +42 -12
  274. package/src/runtime-mcp/transports/http.ts +49 -19
  275. package/src/runtime-mcp/transports/stdio.ts +47 -28
  276. package/src/runtime-mcp/types.ts +10 -0
  277. package/src/sdk/acp/adapter.ts +418 -0
  278. package/src/sdk/acp/index.ts +2 -0
  279. package/src/sdk/broker/broker.ts +642 -0
  280. package/src/sdk/broker/discovery.ts +113 -0
  281. package/src/sdk/broker/ensure.ts +307 -0
  282. package/src/sdk/broker/identity.ts +42 -0
  283. package/src/sdk/broker/index.ts +8 -0
  284. package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
  285. package/src/sdk/broker/internal-source.bunfig.toml +1 -0
  286. package/src/sdk/broker/lifecycle-ledger.ts +286 -0
  287. package/src/sdk/broker/lifecycle.ts +2157 -0
  288. package/src/sdk/broker/process-incarnation.ts +159 -0
  289. package/src/sdk/broker/runtime.ts +164 -0
  290. package/src/sdk/broker/session-index.ts +318 -0
  291. package/src/sdk/broker/state-version.ts +23 -0
  292. package/src/sdk/broker/transport.ts +125 -0
  293. package/src/sdk/bus/chat-command-policy.ts +107 -0
  294. package/src/sdk/bus/chat-daemon-cli.ts +214 -0
  295. package/src/sdk/bus/chat-daemon-control.ts +713 -0
  296. package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
  297. package/src/sdk/bus/chat-effect-journal.ts +355 -0
  298. package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
  299. package/src/sdk/bus/config.ts +433 -0
  300. package/src/sdk/bus/conversation-store.ts +391 -0
  301. package/src/sdk/bus/discord-conversation.ts +85 -0
  302. package/src/sdk/bus/discord-daemon.ts +2292 -0
  303. package/src/sdk/bus/discord-live-provider.ts +521 -0
  304. package/src/sdk/bus/discord-provider.ts +56 -0
  305. package/src/{notifications → sdk/bus}/html-format.ts +2 -2
  306. package/src/sdk/bus/index.ts +3979 -0
  307. package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
  308. package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
  309. package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
  310. package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
  311. package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
  312. package/src/sdk/bus/natives-augment.d.ts +38 -0
  313. package/src/sdk/bus/notification-orchestration.ts +535 -0
  314. package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
  315. package/src/sdk/bus/session-control.ts +333 -0
  316. package/src/sdk/bus/slack-conversation.ts +74 -0
  317. package/src/sdk/bus/slack-daemon.ts +2144 -0
  318. package/src/sdk/bus/slack-live-provider.ts +380 -0
  319. package/src/sdk/bus/slack-provider.ts +76 -0
  320. package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
  321. package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
  322. package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
  323. package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
  324. package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
  325. package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
  326. package/src/sdk/bus/telegram-setup.ts +663 -0
  327. package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
  328. package/src/sdk/cli/index.ts +1 -0
  329. package/src/sdk/cli/session-cli.ts +275 -0
  330. package/src/sdk/client/client.ts +1 -0
  331. package/src/sdk/client/discovery.ts +108 -0
  332. package/src/sdk/client/index.ts +2 -0
  333. package/src/sdk/host/control/dispatch.ts +367 -0
  334. package/src/sdk/host/control/index.ts +10 -0
  335. package/src/sdk/host/control/operations.ts +63 -0
  336. package/src/sdk/host/events.ts +91 -0
  337. package/src/sdk/host/host.ts +296 -0
  338. package/src/sdk/host/index.ts +4 -0
  339. package/src/sdk/host/query/cursor.ts +189 -0
  340. package/src/sdk/host/query/handlers.ts +533 -0
  341. package/src/sdk/host/query/index.ts +3 -0
  342. package/src/sdk/host/query/revision-store.ts +1126 -0
  343. package/src/sdk/host/reverse-leases.ts +325 -0
  344. package/src/sdk/host/types.ts +29 -0
  345. package/src/sdk/index.ts +13 -0
  346. package/src/sdk/lifecycle-session.ts +39 -0
  347. package/src/sdk/mcp/index.ts +1 -0
  348. package/src/sdk/mcp/server.ts +332 -0
  349. package/src/sdk/models.ts +168 -0
  350. package/src/sdk/protocol/adapter-validation.ts +48 -0
  351. package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
  352. package/src/sdk/protocol/operation-registry.ts +312 -0
  353. package/src/{sdk.ts → sdk/session.ts} +339 -212
  354. package/src/sdk/startup-capability.ts +189 -0
  355. package/src/session/agent-session.ts +2650 -944
  356. package/src/session/default-model-selection.ts +93 -0
  357. package/src/session/fallback-chain-controller.ts +136 -0
  358. package/src/session/session-manager.ts +438 -11
  359. package/src/session/session-storage.ts +8 -1
  360. package/src/setup/credential-auto-import.ts +290 -35
  361. package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
  362. package/src/slash-commands/builtin-registry.ts +2 -1
  363. package/src/task/executor.ts +62 -13
  364. package/src/task/index.ts +26 -16
  365. package/src/tools/ask-answer-registry.ts +1 -1
  366. package/src/tools/ask.ts +13 -8
  367. package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
  368. package/src/tools/browser/benchmark/detector-report.ts +157 -0
  369. package/src/tools/browser/benchmark/run-suite.ts +39 -0
  370. package/src/tools/browser/launch.ts +124 -19
  371. package/src/tools/browser/profile-discovery.ts +63 -0
  372. package/src/tools/browser/profile-posture.ts +59 -0
  373. package/src/tools/browser/profile-reuse.ts +102 -0
  374. package/src/tools/browser/profile-warmup.ts +109 -0
  375. package/src/tools/browser/registry.ts +87 -11
  376. package/src/tools/browser/tab-protocol.ts +1 -0
  377. package/src/tools/browser/tab-supervisor.ts +1 -0
  378. package/src/tools/browser/tab-worker.ts +1 -1
  379. package/src/tools/browser.ts +6 -0
  380. package/src/tools/index.ts +8 -8
  381. package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
  382. package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
  383. package/src/tools/subagent-render.ts +19 -8
  384. package/src/tools/subagent.ts +84 -32
  385. package/src/tools/telegram-send.ts +2 -2
  386. package/vendor/insane-search/MANIFEST.json +2 -1
  387. package/vendor/insane-search/engine/bias_check.py +4 -1
  388. package/vendor/insane-search/engine/phase0.py +26 -1
  389. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  390. package/dist/types/modes/bridge/auth.d.ts +0 -12
  391. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  392. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  393. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  394. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  395. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  396. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  397. package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
  398. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
  399. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  400. package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
  401. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  402. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  403. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  404. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  405. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  406. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  407. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  408. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  409. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  410. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  411. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  412. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  413. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  414. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  415. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
  416. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
  417. package/dist/types/notifications/config.d.ts +0 -132
  418. package/src/harness-control-plane/rpc-adapter.ts +0 -290
  419. package/src/modes/bridge/auth.ts +0 -41
  420. package/src/modes/bridge/bridge-client-bridge.ts +0 -47
  421. package/src/modes/bridge/bridge-mode.ts +0 -675
  422. package/src/modes/bridge/bridge-ui-context.ts +0 -200
  423. package/src/modes/bridge/event-stream.ts +0 -70
  424. package/src/modes/rpc/host-tools.ts +0 -1
  425. package/src/modes/rpc/host-uris.ts +0 -1
  426. package/src/modes/rpc/rpc-client.ts +0 -1166
  427. package/src/modes/rpc/rpc-mode.ts +0 -1029
  428. package/src/modes/rpc/rpc-socket-security.ts +0 -115
  429. package/src/modes/rpc/rpc-types.ts +0 -637
  430. package/src/modes/shared/agent-wire/command-contract.ts +0 -18
  431. package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
  432. package/src/modes/shared/agent-wire/command-validation.ts +0 -181
  433. package/src/modes/shared/agent-wire/handshake.ts +0 -157
  434. package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
  435. package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
  436. package/src/modes/shared/agent-wire/protocol.ts +0 -46
  437. package/src/modes/shared/agent-wire/responses.ts +0 -17
  438. package/src/modes/shared/agent-wire/scopes.ts +0 -94
  439. package/src/modes/shared/agent-wire/session-registry.ts +0 -109
  440. package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
  441. package/src/modes/shared/agent-wire/ui-result.ts +0 -48
  442. package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
  443. package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
  444. package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
  445. package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
  446. package/src/notifications/config.ts +0 -219
  447. package/src/notifications/index.ts +0 -1835
  448. package/src/notifications/telegram-daemon-cli.ts +0 -243
  449. package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
  450. /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
  451. /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
  452. /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
  453. /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
  454. /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
  455. /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
  456. /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
  457. /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
  458. /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
  459. /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
  460. /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
  461. /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
  462. /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
  463. /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
  464. /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
  465. /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
  466. /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
  467. /package/src/{notifications → sdk/bus}/engine.ts +0 -0
  468. /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
  469. /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
  470. /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
  471. /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
  472. /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
  473. /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
  474. /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
  475. /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
  476. /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
@@ -0,0 +1,57 @@
1
+ import { SDK_STATE_VERSION } from "./state-version";
2
+ export type SessionIndexEventType = "host_registered" | "host_heartbeat" | "host_unregistered" | "lifecycle_started" | "lifecycle_terminal" | "session_closed" | "record_reconciled";
3
+ export interface SessionIndexEvent {
4
+ version: typeof SDK_STATE_VERSION;
5
+ indexSeq: number;
6
+ type: SessionIndexEventType;
7
+ sessionId: string;
8
+ locator: {
9
+ repo: string;
10
+ stateRoot: string;
11
+ };
12
+ endpointGeneration: number;
13
+ pid: number;
14
+ endpointMtimeMs?: number;
15
+ lifecycleRequestId?: string;
16
+ terminalUncertain?: boolean;
17
+ ts: number;
18
+ checksum: string;
19
+ }
20
+ export interface IndexedSession {
21
+ sessionId: string;
22
+ locator: {
23
+ repo: string;
24
+ stateRoot: string;
25
+ };
26
+ endpointGeneration: number;
27
+ pid: number;
28
+ endpointMtimeMs?: number;
29
+ live: boolean;
30
+ indexSeq: number;
31
+ lifecycleRequestId?: string;
32
+ terminalUncertain?: boolean;
33
+ }
34
+ export interface SessionList {
35
+ indexSeq: number;
36
+ sessions: IndexedSession[];
37
+ warnings: string[];
38
+ }
39
+ export declare const sessionIndexChecksum: (event: Omit<SessionIndexEvent, "checksum">) => string;
40
+ export declare class SessionIndex {
41
+ #private;
42
+ constructor(agentDir: string);
43
+ open(): Promise<this>;
44
+ replay(): Promise<void>;
45
+ refresh(): Promise<void>;
46
+ get indexSeq(): number;
47
+ append(input: Omit<SessionIndexEvent, "version" | "indexSeq" | "checksum" | "ts"> & Partial<Pick<SessionIndexEvent, "ts">>): Promise<SessionIndexEvent>;
48
+ snapshot(): Promise<void>;
49
+ assertSupportedStateVersions(): Promise<void>;
50
+ listSessions(): SessionList;
51
+ hostUnregisteredAfter(registration: Pick<IndexedSession, "sessionId" | "endpointGeneration" | "pid" | "indexSeq" | "lifecycleRequestId">): {
52
+ indexSeq: number;
53
+ lifecycleRequestId?: string;
54
+ } | undefined;
55
+ findHostRegistration(sessionId: string, endpointGeneration: number, pid: number, lifecycleRequestId?: string): IndexedSession | undefined;
56
+ hasHostRegistrationForLifecycle(sessionId: string, pid: number, lifecycleRequestId: string): boolean;
57
+ }
@@ -0,0 +1,8 @@
1
+ export declare const SDK_STATE_VERSION = 1;
2
+ export declare class UnsupportedStateVersionError extends Error {
3
+ readonly file: string;
4
+ readonly version: number;
5
+ readonly code = "unsupported_state_version";
6
+ constructor(file: string, version: number);
7
+ }
8
+ export declare function assertSupportedStateVersion(file: string, value: unknown): void;
@@ -0,0 +1,9 @@
1
+ import type { Broker } from "./broker";
2
+ /** Loopback-only WebSocket transport for the agent-global SDK broker. */
3
+ export declare class BrokerTransport {
4
+ #private;
5
+ constructor(broker: Broker, token: string, port?: number);
6
+ get port(): number;
7
+ start(): Promise<number>;
8
+ stop(): Promise<void>;
9
+ }
@@ -0,0 +1,49 @@
1
+ import { type Adapter, type OperationKind } from "../protocol/operation-registry";
2
+ export type ChatTransport = Extract<Adapter, "telegram" | "discord" | "slack">;
3
+ export type ChatOperationDisposition = "allowed" | "unsupported_on_chat";
4
+ export interface ChatCommandError {
5
+ code: "unsupported_on_chat" | "secret_input_forbidden";
6
+ message: string;
7
+ }
8
+ export type ChatCommandDecision = {
9
+ ok: true;
10
+ } | {
11
+ ok: false;
12
+ error: ChatCommandError;
13
+ };
14
+ export interface ChatOperationRequest {
15
+ kind: OperationKind;
16
+ operation: string;
17
+ input?: unknown;
18
+ }
19
+ /**
20
+ * Chat authorization follows each transport's canonical registry disposition.
21
+ * Explicit policy prohibitions remain as defense in depth for shell execution,
22
+ * callback-provider registration, and endpoint credentials.
23
+ */
24
+ export declare const CHAT_OPERATION_POLICY: Readonly<Record<ChatTransport, Readonly<Record<string, ChatOperationDisposition>>>>;
25
+ /** Reject unsafe or unknown commands before their SDK request can be sent. */
26
+ export declare function authorizeChatOperation(transport: ChatTransport, request: ChatOperationRequest): ChatCommandDecision;
27
+ /** Execute only an authorized command, ensuring rejected payloads produce no SDK send. */
28
+ export declare function sendAuthorizedChatOperation<T>(transport: ChatTransport, request: ChatOperationRequest, send: () => Promise<T>): Promise<{
29
+ ok: true;
30
+ result: T;
31
+ } | {
32
+ ok: false;
33
+ error: ChatCommandError;
34
+ }>;
35
+ export type ChatCommandOutcome = {
36
+ ok: true;
37
+ result: unknown;
38
+ } | {
39
+ ok: false;
40
+ error: {
41
+ code: string;
42
+ message: string;
43
+ };
44
+ };
45
+ /**
46
+ * The chat transport is an untrusted presentation surface, not a general SDK
47
+ * result renderer. Never serialize SDK result bodies or provider error text.
48
+ */
49
+ export declare function projectChatCommandOutcome(request: Pick<ChatOperationRequest, "kind" | "operation">, outcome: ChatCommandOutcome): Record<string, unknown>;
@@ -0,0 +1,21 @@
1
+ import { type ChatDaemonKind } from "./chat-daemon-control";
2
+ import { type ChatDaemonRuntimeConfig } from "./chat-daemon-runtime";
3
+ export interface ChatDaemonRuntimeHandle {
4
+ start(): Promise<void>;
5
+ stop(): Promise<void>;
6
+ transportHealthy?(): boolean;
7
+ }
8
+ export interface RunChatDaemonInternalDeps {
9
+ processPid?: number;
10
+ pidAlive?: (pid: number) => boolean;
11
+ createRuntime?: (input: {
12
+ kind: ChatDaemonKind;
13
+ agentDir: string;
14
+ config: ChatDaemonConfig;
15
+ }) => Promise<ChatDaemonRuntimeHandle> | ChatDaemonRuntimeHandle;
16
+ setInterval?: typeof setInterval;
17
+ clearInterval?: typeof clearInterval;
18
+ }
19
+ export type ChatDaemonConfig = ChatDaemonRuntimeConfig;
20
+ /** Hidden worker entrypoint. It owns only lock/state/control lifecycle; transport creation remains injectable. */
21
+ export declare function runChatDaemonInternal(kind: ChatDaemonKind, argv: string[], deps?: RunChatDaemonInternalDeps): Promise<void>;
@@ -0,0 +1,111 @@
1
+ import type { Settings } from "../../config/settings";
2
+ import type { BuiltInDaemonController, DaemonOperationOptions, DaemonOperationResult, DaemonRuntimeInfo, DaemonStatus } from "../../daemon/control-types";
3
+ export type ChatDaemonKind = "discord" | "slack";
4
+ export type ChatDaemonAction = "stop" | "reload";
5
+ export interface ChatDaemonState {
6
+ version: 1;
7
+ kind: ChatDaemonKind;
8
+ pid: number;
9
+ ownerId: string;
10
+ identity: string;
11
+ incarnation: string;
12
+ startedAt: number;
13
+ heartbeatAt: number;
14
+ transportHealthy: boolean;
15
+ stoppedAt?: number;
16
+ }
17
+ export interface ChatDaemonControlRequest {
18
+ version: 1;
19
+ requestId: string;
20
+ action: ChatDaemonAction;
21
+ ownerId: string;
22
+ pid: number;
23
+ createdAt: number;
24
+ incarnation: string;
25
+ }
26
+ export interface ChatDaemonControlDeps {
27
+ pidAlive?: (pid: number) => boolean;
28
+ sendSignal?: (pid: number, signal: NodeJS.Signals) => void;
29
+ spawn?: (command: string, args: string[], opts: {
30
+ detached: boolean;
31
+ stdio: "ignore";
32
+ }) => {
33
+ unref?: () => void;
34
+ };
35
+ execPath?: string;
36
+ ownerPid?: number;
37
+ randomId?: () => string;
38
+ pidIncarnation?: (pid: number) => string | undefined;
39
+ sleep?: (ms: number) => Promise<void>;
40
+ }
41
+ export declare function chatDaemonPaths(agentDir: string, kind: ChatDaemonKind): {
42
+ dir: string;
43
+ lock: string;
44
+ state: string;
45
+ control: string;
46
+ };
47
+ export declare function readChatDaemonState(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonState | undefined>;
48
+ export declare function readChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonControlRequest | undefined>;
49
+ export declare function writeChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, request: ChatDaemonControlRequest): Promise<void>;
50
+ export declare function clearChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, requestId?: string): Promise<void>;
51
+ export declare function buildChatDaemonSpawnArgs(input: {
52
+ kind: ChatDaemonKind;
53
+ ownerId: string;
54
+ agentDir: string;
55
+ execPath?: string;
56
+ }): {
57
+ command: string;
58
+ args: string[];
59
+ runtime: DaemonRuntimeInfo;
60
+ };
61
+ export declare class ChatDaemonController implements BuiltInDaemonController {
62
+ private readonly settings;
63
+ private readonly deps;
64
+ readonly kind: ChatDaemonKind;
65
+ constructor(settings: Settings, kind: ChatDaemonKind, deps?: ChatDaemonControlDeps);
66
+ private identity;
67
+ private alive;
68
+ status(): Promise<DaemonStatus>;
69
+ stop(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
70
+ reload(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
71
+ ensure(): Promise<EnsureChatDaemonResult>;
72
+ private operate;
73
+ private incarnation;
74
+ private isLiveState;
75
+ private stopForReplacement;
76
+ private ownsCapturedState;
77
+ private signalIfOwner;
78
+ private ownerChanged;
79
+ private result;
80
+ private waitForDeath;
81
+ private sleep;
82
+ private spawn;
83
+ }
84
+ export type EnsureChatDaemonResult = "disabled" | "owner_spawned" | "attached";
85
+ export declare function ensureDiscordDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
86
+ export declare function ensureSlackDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
87
+ export declare function acquireChatDaemonOwnership(input: {
88
+ agentDir: string;
89
+ kind: ChatDaemonKind;
90
+ ownerId: string;
91
+ pid?: number;
92
+ identity: string;
93
+ incarnation?: string;
94
+ pidAlive?: (pid: number) => boolean;
95
+ pidIncarnation?: (pid: number) => string | undefined;
96
+ }): Promise<boolean>;
97
+ export declare function renewChatDaemonHeartbeat(input: {
98
+ agentDir: string;
99
+ kind: ChatDaemonKind;
100
+ ownerId: string;
101
+ pid?: number;
102
+ incarnation?: string;
103
+ transportHealthy: boolean;
104
+ }): Promise<boolean>;
105
+ export declare function releaseChatDaemonOwnership(input: {
106
+ agentDir: string;
107
+ kind: ChatDaemonKind;
108
+ ownerId: string;
109
+ pid?: number;
110
+ incarnation?: string;
111
+ }): Promise<void>;
@@ -0,0 +1,77 @@
1
+ import { SessionIndex } from "../broker/session-index";
2
+ import { type SdkSessionEndpoint } from "../client/discovery";
3
+ import type { ChatDaemonKind } from "./chat-daemon-control";
4
+ import type { DiscordProvider } from "./discord-provider";
5
+ import { type SlackProviderClient } from "./slack-provider";
6
+ export interface ChatDaemonRuntimeConfig {
7
+ identity: string;
8
+ notifications: {
9
+ discord?: {
10
+ botToken: string;
11
+ applicationId: string;
12
+ guildId: string;
13
+ parentChannelId: string;
14
+ };
15
+ slack?: {
16
+ botToken: string;
17
+ appToken: string;
18
+ workspaceId: string;
19
+ channelId: string;
20
+ authorizedUserId?: string;
21
+ };
22
+ };
23
+ presentation?: {
24
+ redact: boolean;
25
+ verbosity: "lean" | "verbose";
26
+ };
27
+ }
28
+ export interface ChatDaemonSdkClient {
29
+ onFrame(handler: (frame: Record<string, unknown>) => void): () => void;
30
+ request(frame: Record<string, unknown>): Promise<Record<string, unknown>>;
31
+ close(): Promise<void>;
32
+ send(frame: Record<string, unknown>): void;
33
+ }
34
+ export type ChatDeliveryPhase = "pre_send" | "ambiguous";
35
+ /** An authorized SDK command could not be conclusively delivered. */
36
+ export declare class ChatDeliveryError extends Error {
37
+ readonly phase: ChatDeliveryPhase;
38
+ constructor(phase: ChatDeliveryPhase);
39
+ }
40
+ export interface ChatDaemonRuntimeDeps {
41
+ createDiscordProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["discord"]>) => DiscordProvider;
42
+ createSlackProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["slack"]>) => SlackProviderClient;
43
+ createClient?: (endpoint: SdkSessionEndpoint) => Promise<ChatDaemonSdkClient>;
44
+ createIndex?: (agentDir: string) => SessionIndex;
45
+ createBrokerClient?: (endpoint: {
46
+ url: string;
47
+ token: string;
48
+ }) => Promise<ChatDaemonSdkClient>;
49
+ onReconciled?: () => void;
50
+ setInterval?: typeof setInterval;
51
+ clearInterval?: typeof clearInterval;
52
+ }
53
+ /**
54
+ * Worker-owned session discovery and event fanout. It connects only through the
55
+ * public SDK transport and retains endpoint tokens solely in live client objects.
56
+ */
57
+ export declare class ChatDaemonRuntime {
58
+ #private;
59
+ private readonly input;
60
+ private readonly deps;
61
+ constructor(input: {
62
+ kind: ChatDaemonKind;
63
+ agentDir: string;
64
+ config: ChatDaemonRuntimeConfig;
65
+ }, deps?: ChatDaemonRuntimeDeps);
66
+ start(): Promise<void>;
67
+ transportHealthy(): boolean;
68
+ stop(): Promise<void>;
69
+ private reconcile;
70
+ private attach;
71
+ private resolveEndpoint;
72
+ private schedule;
73
+ private enqueueFrame;
74
+ private handleFrame;
75
+ private close;
76
+ private resume;
77
+ }
@@ -0,0 +1,84 @@
1
+ import { type ConversationRecord, type ConversationStoreFs } from "./conversation-store";
2
+ export declare const CHAT_EFFECT_JOURNAL_VERSION = 1;
3
+ export declare const MAX_TERMINAL_CHAT_EFFECTS = 128;
4
+ export declare function chatEffectJournalPath(agentDir: string, transport: "discord" | "slack"): string;
5
+ export type ChatEffectState = "pending" | "leased" | "accepted" | "uncertain" | "terminal";
6
+ /** Provider receipts are identifiers/status only. Never put request or response bodies here. */
7
+ export interface ChatEffectReceipt {
8
+ provider?: string;
9
+ messageId?: string;
10
+ channelId?: string;
11
+ threadId?: string;
12
+ timestamp?: string;
13
+ status?: string;
14
+ }
15
+ /**
16
+ * A protected, generation-bound provider-visible effect. Payload is deliberately
17
+ * owned by this journal; conversation mappings may retain only `effectId`.
18
+ */
19
+ export interface ChatEffect<TPayload = unknown> extends ConversationRecord {
20
+ id: string;
21
+ kind: string;
22
+ transport: "discord" | "slack";
23
+ sessionId?: string;
24
+ endpointGeneration: number;
25
+ payload: TPayload;
26
+ state: ChatEffectState;
27
+ owner?: string;
28
+ leaseExpiresAt?: number;
29
+ epoch: number;
30
+ createdAt: number;
31
+ updatedAt: number;
32
+ receipt?: ChatEffectReceipt;
33
+ }
34
+ export interface EnqueueChatEffect<TPayload> {
35
+ id: string;
36
+ kind: string;
37
+ transport: "discord" | "slack";
38
+ sessionId?: string;
39
+ endpointGeneration: number;
40
+ payload: TPayload;
41
+ receipt?: ChatEffectReceipt;
42
+ }
43
+ export interface ChatEffectLease {
44
+ owner: string;
45
+ epoch: number;
46
+ }
47
+ /**
48
+ * One journal per transport. It uses the same 0600, fsynced atomic persistence
49
+ * and cross-process exclusive locking as mappings, but stores payloads in a
50
+ * separate protected file (`effects.json`). Terminal history is compacted only
51
+ * after terminal state is durably recorded; nonterminal effects are never evicted.
52
+ */
53
+ export declare class ChatEffectJournal {
54
+ #private;
55
+ constructor(input: {
56
+ agentDir: string;
57
+ transport: "discord" | "slack";
58
+ fs?: ConversationStoreFs;
59
+ now?: () => number;
60
+ pid?: number;
61
+ pidAlive?: (pid: number) => boolean;
62
+ pidIncarnation?: (pid: number) => string | undefined;
63
+ sleep?: (ms: number) => Promise<void>;
64
+ lockTimeoutMs?: number;
65
+ });
66
+ get filePath(): string;
67
+ read<TPayload = unknown>(id: string): Promise<ChatEffect<TPayload> | undefined>;
68
+ list(): Promise<ChatEffect[]>;
69
+ replayable(transport: "discord" | "slack", endpointGeneration: number): Promise<ChatEffect[]>;
70
+ enqueue<TPayload>(input: EnqueueChatEffect<TPayload>): Promise<ChatEffect<TPayload>>;
71
+ /**
72
+ * Inserts an effect directly into a live lease. Recovery can never observe a
73
+ * newly persisted effect as claimable before its owner has authority to act.
74
+ * Existing effects are left untouched and report no acquired lease.
75
+ */
76
+ enqueueAndClaim<TPayload>(input: EnqueueChatEffect<TPayload>, owner: string, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
77
+ claim<TPayload = unknown>(id: string, owner: string, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
78
+ renew<TPayload = unknown>(id: string, lease: ChatEffectLease, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
79
+ /** Persists provider progress without releasing the owner/epoch fence. */
80
+ recordReceipt<TPayload = unknown>(id: string, lease: ChatEffectLease, receipt: ChatEffectReceipt): Promise<ChatEffect<TPayload> | undefined>;
81
+ record<TPayload = unknown>(id: string, lease: ChatEffectLease, state: Exclude<ChatEffectState, "pending" | "leased">, receipt?: ChatEffectReceipt): Promise<ChatEffect<TPayload> | undefined>;
82
+ /** Irreversibly rejects an effect whose mapping never accepted its authority. */
83
+ terminalize(id: string, receipt: ChatEffectReceipt, lease?: ChatEffectLease): Promise<ChatEffect | undefined>;
84
+ }
@@ -18,11 +18,12 @@ export interface ConfigCommandChange {
18
18
  verbosity?: "lean" | "verbose";
19
19
  redact?: boolean;
20
20
  }
21
- export type TelegramControlCommandName = "reasoning" | "usage" | "context" | "compact";
21
+ export type TelegramControlCommandName = "reasoning" | "usage" | "context" | "compact" | "model";
22
22
  export type TelegramControlCommand = {
23
23
  name: "reasoning";
24
- action: "cycle" | "status" | "set";
24
+ action: "cycle" | "status" | "set" | "show" | "hide";
25
25
  level?: string;
26
+ global?: boolean;
26
27
  } | {
27
28
  name: "usage";
28
29
  } | {
@@ -30,6 +31,10 @@ export type TelegramControlCommand = {
30
31
  } | {
31
32
  name: "compact";
32
33
  instructions?: string;
34
+ } | {
35
+ name: "model";
36
+ action: "list" | "set";
37
+ selector?: string;
33
38
  };
34
39
  export type TelegramControlCommandParseResult = {
35
40
  kind: "none";