@gajae-code/coding-agent 0.13.3 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (599) hide show
  1. package/CHANGELOG.md +184 -2
  2. package/README.md +2 -0
  3. package/bin/gajaessi.js +4 -0
  4. package/dist/types/async/job-manager.d.ts +55 -2
  5. package/dist/types/async/support.d.ts +14 -0
  6. package/dist/types/capability/mcp.d.ts +6 -0
  7. package/dist/types/capability/types.d.ts +6 -0
  8. package/dist/types/cli/accounts-cli.d.ts +19 -0
  9. package/dist/types/cli/args.d.ts +3 -0
  10. package/dist/types/cli/config-cli.d.ts +6 -0
  11. package/dist/types/cli/crash-cli.d.ts +10 -0
  12. package/dist/types/cli/customize-doctor.d.ts +145 -0
  13. package/dist/types/cli/daemon-cli.d.ts +3 -1
  14. package/dist/types/cli/mcp-cli.d.ts +11 -0
  15. package/dist/types/cli/notify-cli.d.ts +1 -1
  16. package/dist/types/cli/root-flags.d.ts +12 -0
  17. package/dist/types/cli/setup-cli.d.ts +3 -1
  18. package/dist/types/cli/skills-cli.d.ts +2 -1
  19. package/dist/types/cli/update-cli.d.ts +19 -1
  20. package/dist/types/cli.d.ts +6 -0
  21. package/dist/types/commands/accounts.d.ts +40 -0
  22. package/dist/types/commands/crash.d.ts +24 -0
  23. package/dist/types/commands/customize.d.ts +22 -0
  24. package/dist/types/commands/daemon.d.ts +1 -1
  25. package/dist/types/commands/launch.d.ts +6 -0
  26. package/dist/types/commands/setup.d.ts +6 -0
  27. package/dist/types/commands/skills.d.ts +6 -1
  28. package/dist/types/commands/update.d.ts +7 -0
  29. package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
  30. package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
  31. package/dist/types/config/config-schema-version.d.ts +10 -0
  32. package/dist/types/config/file-lock.d.ts +18 -0
  33. package/dist/types/config/model-profile-activation.d.ts +3 -1
  34. package/dist/types/config/model-registry.d.ts +9 -1
  35. package/dist/types/config/models-config-schema.d.ts +2 -0
  36. package/dist/types/config/settings-schema.d.ts +70 -6
  37. package/dist/types/config/settings.d.ts +63 -0
  38. package/dist/types/config/skill-settings-defaults.d.ts +26 -0
  39. package/dist/types/config/task-delegation.d.ts +39 -0
  40. package/dist/types/config/update-channel.d.ts +10 -0
  41. package/dist/types/coordinator-mcp/server.d.ts +5 -1
  42. package/dist/types/crash/index-store.d.ts +87 -0
  43. package/dist/types/crash/nudge.d.ts +50 -0
  44. package/dist/types/crash/record-loader.d.ts +17 -0
  45. package/dist/types/crash/report.d.ts +134 -0
  46. package/dist/types/crash/sanitize.d.ts +25 -0
  47. package/dist/types/cursor.d.ts +13 -2
  48. package/dist/types/customization/import.d.ts +37 -0
  49. package/dist/types/customization/index.d.ts +4 -0
  50. package/dist/types/customization/inventory.d.ts +25 -0
  51. package/dist/types/customization/mutations.d.ts +32 -0
  52. package/dist/types/customization/types.d.ts +115 -0
  53. package/dist/types/daemon/control-types.d.ts +8 -1
  54. package/dist/types/daemon/operator-contract.d.ts +4 -4
  55. package/dist/types/discovery/claude.d.ts +39 -1
  56. package/dist/types/discovery/codex.d.ts +39 -1
  57. package/dist/types/discovery/index.d.ts +2 -0
  58. package/dist/types/discovery/mcp-compat.d.ts +30 -0
  59. package/dist/types/edit/renderer.d.ts +23 -0
  60. package/dist/types/extensibility/extensions/runner.d.ts +3 -0
  61. package/dist/types/extensibility/extensions/types.d.ts +21 -4
  62. package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
  63. package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
  64. package/dist/types/extensibility/hooks/loader.d.ts +19 -5
  65. package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
  66. package/dist/types/extensibility/skill-management.d.ts +107 -0
  67. package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
  68. package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
  69. package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
  70. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
  71. package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
  72. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
  73. package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
  74. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
  75. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
  76. package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
  77. package/dist/types/hooks/events.d.ts +60 -0
  78. package/dist/types/hooks/normalize.d.ts +83 -0
  79. package/dist/types/hooks/skill-state.d.ts +9 -2
  80. package/dist/types/main.d.ts +1 -1
  81. package/dist/types/modes/acp/abort-scope.d.ts +13 -0
  82. package/dist/types/modes/acp/acp-agent.d.ts +7 -4
  83. package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
  84. package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
  85. package/dist/types/modes/components/customization/index.d.ts +1 -0
  86. package/dist/types/modes/components/gajae-pet-widget.d.ts +8 -30
  87. package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
  88. package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
  89. package/dist/types/modes/components/oauth-selector.d.ts +10 -4
  90. package/dist/types/modes/components/pet-capability.d.ts +11 -25
  91. package/dist/types/modes/components/status-line/gh.d.ts +6 -2
  92. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
  93. package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
  94. package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
  95. package/dist/types/modes/interactive-mode.d.ts +1 -0
  96. package/dist/types/modes/types.d.ts +1 -0
  97. package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
  98. package/dist/types/runtime-mcp/config.d.ts +9 -0
  99. package/dist/types/runtime-mcp/manager.d.ts +26 -1
  100. package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
  101. package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
  102. package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
  103. package/dist/types/runtime-mcp/protocol.d.ts +278 -0
  104. package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
  105. package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
  106. package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
  107. package/dist/types/runtime-mcp/types.d.ts +102 -10
  108. package/dist/types/sdk/acp/adapter.d.ts +26 -5
  109. package/dist/types/sdk/broker/broker.d.ts +3 -55
  110. package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
  111. package/dist/types/sdk/broker/session-index.d.ts +14 -5
  112. package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
  113. package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
  114. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
  115. package/dist/types/sdk/bus/config.d.ts +11 -0
  116. package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
  117. package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
  118. package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
  119. package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
  120. package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
  121. package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
  122. package/dist/types/sdk/bus/index.d.ts +85 -99
  123. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
  124. package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
  125. package/dist/types/sdk/bus/notification-service.d.ts +52 -0
  126. package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
  127. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
  128. package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
  129. package/dist/types/sdk/bus/session-control.d.ts +25 -1
  130. package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
  131. package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
  132. package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
  133. package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
  134. package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
  135. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
  136. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
  137. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
  138. package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
  139. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
  140. package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
  141. package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
  142. package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
  143. package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
  144. package/dist/types/sdk/cli/rows.d.ts +2 -11
  145. package/dist/types/sdk/cli/session-cli.d.ts +15 -25
  146. package/dist/types/sdk/client/client.d.ts +97 -1
  147. package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
  148. package/dist/types/sdk/host/control/index.d.ts +1 -1
  149. package/dist/types/sdk/host/control/operations.d.ts +18 -5
  150. package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
  151. package/dist/types/sdk/host/host.d.ts +15 -1
  152. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  153. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  154. package/dist/types/sdk/host/session-runtime.d.ts +127 -7
  155. package/dist/types/sdk/host/types.d.ts +1 -1
  156. package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
  157. package/dist/types/sdk/index.d.ts +2 -1
  158. package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
  159. package/dist/types/sdk/lifecycle/client.d.ts +59 -0
  160. package/dist/types/sdk/lifecycle/index.d.ts +3 -0
  161. package/dist/types/sdk/lifecycle/service.d.ts +232 -0
  162. package/dist/types/sdk/mcp/server.d.ts +9 -6
  163. package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
  164. package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
  165. package/dist/types/sdk/prompt-status.d.ts +10 -3
  166. package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
  167. package/dist/types/sdk/receipt-state.d.ts +17 -0
  168. package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
  169. package/dist/types/sdk/router/index.d.ts +1 -0
  170. package/dist/types/sdk/router/session-router.d.ts +152 -0
  171. package/dist/types/sdk/session-list.d.ts +22 -0
  172. package/dist/types/sdk/session-reconnect.d.ts +43 -1
  173. package/dist/types/sdk/session.d.ts +34 -1
  174. package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
  175. package/dist/types/session/account-inventory.d.ts +86 -0
  176. package/dist/types/session/agent-session.d.ts +145 -6
  177. package/dist/types/session/agent-storage.d.ts +10 -0
  178. package/dist/types/session/coordinator-tool-label.d.ts +28 -0
  179. package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
  180. package/dist/types/session/messages.d.ts +1 -1
  181. package/dist/types/session/secure-token-file.d.ts +3 -0
  182. package/dist/types/session/session-manager.d.ts +40 -1
  183. package/dist/types/session/startup-auth-config.d.ts +44 -0
  184. package/dist/types/session/terminal-abort.d.ts +378 -0
  185. package/dist/types/session/yield-queue.d.ts +7 -0
  186. package/dist/types/session-import/claude.d.ts +26 -0
  187. package/dist/types/session-import/codex.d.ts +88 -0
  188. package/dist/types/session-import/command.d.ts +35 -0
  189. package/dist/types/session-import/detect.d.ts +22 -0
  190. package/dist/types/session-import/index.d.ts +7 -0
  191. package/dist/types/session-import/provider-codex.d.ts +22 -0
  192. package/dist/types/session-import/provider-service.d.ts +38 -0
  193. package/dist/types/session-import/redact.d.ts +23 -0
  194. package/dist/types/session-import/service.d.ts +47 -0
  195. package/dist/types/session-import/types.d.ts +120 -0
  196. package/dist/types/setup/paseo/check.d.ts +16 -0
  197. package/dist/types/setup/paseo/install-saga.d.ts +115 -0
  198. package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
  199. package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
  200. package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
  201. package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
  202. package/dist/types/setup/paseo/provider-config.d.ts +35 -0
  203. package/dist/types/setup/paseo/remove.d.ts +14 -0
  204. package/dist/types/setup/paseo/result-types.d.ts +59 -0
  205. package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
  206. package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
  207. package/dist/types/skill-state/active-state.d.ts +5 -1
  208. package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
  209. package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
  210. package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
  211. package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
  212. package/dist/types/slash-commands/types.d.ts +7 -1
  213. package/dist/types/task/executor.d.ts +10 -0
  214. package/dist/types/task/index.d.ts +3 -1
  215. package/dist/types/tools/ask-answer-registry.d.ts +6 -3
  216. package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
  217. package/dist/types/tools/bash.d.ts +2 -6
  218. package/dist/types/tools/browser/attach.d.ts +11 -0
  219. package/dist/types/tools/browser/launch.d.ts +20 -0
  220. package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
  221. package/dist/types/tools/browser/render.d.ts +1 -0
  222. package/dist/types/tools/browser.d.ts +3 -1
  223. package/dist/types/tools/image-gen.d.ts +9 -2
  224. package/dist/types/tools/index.d.ts +8 -0
  225. package/dist/types/tools/monitor.d.ts +1 -1
  226. package/dist/types/tools/skill-discovery.d.ts +8 -1
  227. package/dist/types/tools/subagent.d.ts +2 -0
  228. package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
  229. package/dist/types/utils/herdr-pane.d.ts +76 -0
  230. package/package.json +19 -9
  231. package/scripts/build-binary.ts +2 -1
  232. package/scripts/build-sdk-package-smoke.ts +2 -13
  233. package/scripts/capture-sticky-viewport-showcase.ts +0 -1
  234. package/scripts/compile-args.ts +2 -0
  235. package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
  236. package/scripts/generate-sdk-operation-inventory.ts +28 -0
  237. package/scripts/generate-telegram-baseline-manifest.ts +1 -0
  238. package/scripts/generate-tool-catalog.ts +6 -4
  239. package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
  240. package/src/async/job-manager.ts +352 -17
  241. package/src/async/support.ts +25 -0
  242. package/src/autoresearch/dashboard.ts +28 -13
  243. package/src/capability/index.ts +3 -1
  244. package/src/capability/mcp.ts +6 -0
  245. package/src/capability/types.ts +6 -0
  246. package/src/cli/accounts-cli.ts +395 -0
  247. package/src/cli/args.ts +23 -0
  248. package/src/cli/auth-broker-cli.ts +136 -66
  249. package/src/cli/auth-gateway-cli.ts +94 -70
  250. package/src/cli/config-cli.ts +27 -2
  251. package/src/cli/crash-cli.ts +78 -0
  252. package/src/cli/customize-doctor.ts +1605 -0
  253. package/src/cli/daemon-cli.ts +12 -3
  254. package/src/cli/fast-help.ts +1 -0
  255. package/src/cli/mcp-cli.ts +128 -60
  256. package/src/cli/notify-cli.ts +8 -14
  257. package/src/cli/root-flags.ts +8 -0
  258. package/src/cli/setup-cli.ts +145 -0
  259. package/src/cli/skills-cli.ts +38 -2
  260. package/src/cli/update-cli.ts +167 -12
  261. package/src/cli.ts +4 -0
  262. package/src/commands/accounts.ts +71 -0
  263. package/src/commands/crash.ts +35 -0
  264. package/src/commands/customize.ts +84 -0
  265. package/src/commands/daemon.ts +2 -2
  266. package/src/commands/deep-interview.ts +2 -0
  267. package/src/commands/launch.ts +1 -0
  268. package/src/commands/mcp.ts +12 -7
  269. package/src/commands/ralplan.ts +2 -0
  270. package/src/commands/sdk.ts +65 -32
  271. package/src/commands/setup.ts +5 -0
  272. package/src/commands/skills.ts +14 -4
  273. package/src/commands/ultragoal.ts +10 -1
  274. package/src/commands/update.ts +26 -15
  275. package/src/config/atomic-yaml-patch-worker.ts +57 -0
  276. package/src/config/atomic-yaml-patch.ts +769 -29
  277. package/src/config/config-schema-version.ts +10 -0
  278. package/src/config/file-lock.ts +70 -1
  279. package/src/config/mcp-schema.json +52 -14
  280. package/src/config/model-profile-activation.ts +20 -1
  281. package/src/config/model-profiles.ts +29 -19
  282. package/src/config/model-registry.ts +132 -21
  283. package/src/config/models-config-schema.ts +1 -1
  284. package/src/config/settings-schema.ts +76 -6
  285. package/src/config/settings.ts +4038 -199
  286. package/src/config/skill-settings-defaults.ts +41 -3
  287. package/src/config/task-delegation.ts +87 -0
  288. package/src/config/update-channel.ts +23 -0
  289. package/src/coordinator-mcp/server.ts +377 -308
  290. package/src/crash/index-store.ts +723 -0
  291. package/src/crash/nudge.ts +89 -0
  292. package/src/crash/record-loader.ts +149 -0
  293. package/src/crash/report.ts +551 -0
  294. package/src/crash/sanitize.ts +129 -0
  295. package/src/cursor.ts +36 -10
  296. package/src/customization/import.ts +946 -0
  297. package/src/customization/index.ts +4 -0
  298. package/src/customization/inventory.ts +335 -0
  299. package/src/customization/mutations.ts +141 -0
  300. package/src/customization/types.ts +223 -0
  301. package/src/daemon/control-types.ts +8 -1
  302. package/src/daemon/operator-contract.ts +6 -6
  303. package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
  304. package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
  305. package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
  306. package/src/discovery/claude-hooks.ts +38 -0
  307. package/src/discovery/claude.ts +142 -209
  308. package/src/discovery/codex-hooks.ts +38 -0
  309. package/src/discovery/codex.ts +132 -198
  310. package/src/discovery/helpers.ts +8 -1
  311. package/src/discovery/index.ts +2 -0
  312. package/src/discovery/mcp-compat.ts +234 -0
  313. package/src/discovery/mcp-json.ts +6 -0
  314. package/src/edit/renderer.ts +40 -0
  315. package/src/edit/streaming.ts +4 -2
  316. package/src/exec/bash-executor.ts +24 -20
  317. package/src/export/html/index.ts +51 -2
  318. package/src/extensibility/extensions/loader.ts +9 -1
  319. package/src/extensibility/extensions/runner.ts +17 -4
  320. package/src/extensibility/extensions/types.ts +31 -6
  321. package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
  322. package/src/extensibility/gjc-plugins/installer.ts +9 -5
  323. package/src/extensibility/gjc-plugins/observability.ts +8 -2
  324. package/src/extensibility/gjc-plugins/registry.ts +13 -2
  325. package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
  326. package/src/extensibility/gjc-plugins/schema.ts +222 -39
  327. package/src/extensibility/hooks/loader.ts +154 -10
  328. package/src/extensibility/runtime-skill-discovery.ts +257 -60
  329. package/src/extensibility/skill-management.ts +368 -0
  330. package/src/extensibility/skills.ts +52 -16
  331. package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
  332. package/src/gjc-runtime/launch-worktree.ts +56 -2
  333. package/src/gjc-runtime/linux-proc.ts +7 -1
  334. package/src/gjc-runtime/ralplan-runtime.ts +100 -164
  335. package/src/gjc-runtime/session-state-lock.ts +992 -0
  336. package/src/gjc-runtime/session-state-sidecar.ts +644 -142
  337. package/src/gjc-runtime/state-writer.ts +39 -14
  338. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
  339. package/src/gjc-runtime/ultragoal-guard.ts +11 -4
  340. package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
  341. package/src/gjc-runtime/workflow-settings.ts +596 -0
  342. package/src/goals/tools/goal-tool.ts +6 -1
  343. package/src/hooks/events.ts +291 -0
  344. package/src/hooks/native-skill-hook.ts +4 -0
  345. package/src/hooks/normalize.ts +369 -0
  346. package/src/hooks/skill-state.ts +165 -46
  347. package/src/internal-urls/docs-index.generated.ts +40 -32
  348. package/src/main.ts +32 -5
  349. package/src/migrate/mcp-mapper.ts +25 -2
  350. package/src/modes/acp/abort-scope.ts +29 -0
  351. package/src/modes/acp/acp-agent.ts +423 -98
  352. package/src/modes/components/assistant-message.ts +6 -1
  353. package/src/modes/components/customization/customization-dashboard.ts +443 -0
  354. package/src/modes/components/customization/import-wizard.ts +372 -0
  355. package/src/modes/components/customization/index.ts +1 -0
  356. package/src/modes/components/gajae-pet-widget.ts +539 -213
  357. package/src/modes/components/irc-sidebar.ts +11 -0
  358. package/src/modes/components/iterm-pet-transport.ts +585 -0
  359. package/src/modes/components/oauth-selector.ts +277 -86
  360. package/src/modes/components/pet-capability.ts +39 -40
  361. package/src/modes/components/settings-selector.ts +9 -0
  362. package/src/modes/components/status-line/gh.ts +45 -1
  363. package/src/modes/components/status-line/segments.ts +16 -1
  364. package/src/modes/components/tool-status-header.ts +13 -3
  365. package/src/modes/controllers/command-controller.ts +20 -8
  366. package/src/modes/controllers/extension-ui-controller.ts +56 -257
  367. package/src/modes/controllers/input-controller.ts +10 -0
  368. package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
  369. package/src/modes/controllers/selector-controller.ts +177 -72
  370. package/src/modes/controllers/stt-controller.ts +3 -3
  371. package/src/modes/interactive-mode.ts +88 -16
  372. package/src/modes/print-mode.ts +35 -6
  373. package/src/modes/runtime-init.ts +21 -68
  374. package/src/modes/types.ts +1 -0
  375. package/src/modes/utils/injected-user-submission.ts +25 -0
  376. package/src/modes/utils/terminal-bell.ts +15 -1
  377. package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
  378. package/src/prompts/agent-fragments/restricted-bash.md +1 -1
  379. package/src/prompts/agents/critic.md +1 -1
  380. package/src/prompts/system/rlm-research.md +1 -1
  381. package/src/prompts/system/system-prompt.md +0 -2
  382. package/src/prompts/tools/bash.md +7 -1
  383. package/src/prompts/tools/browser.md +1 -1
  384. package/src/prompts/tools/cron.md +6 -6
  385. package/src/prompts/tools/read.md +0 -2
  386. package/src/prompts/tools/skill-discovery.md +4 -2
  387. package/src/runtime-mcp/client.ts +427 -23
  388. package/src/runtime-mcp/config.ts +37 -5
  389. package/src/runtime-mcp/manager-pool.test.ts +56 -0
  390. package/src/runtime-mcp/manager.ts +52 -2
  391. package/src/runtime-mcp/oauth-discovery.ts +13 -0
  392. package/src/runtime-mcp/oauth-flow.ts +46 -1
  393. package/src/runtime-mcp/pool-key.ts +5 -1
  394. package/src/runtime-mcp/pool.test.ts +9 -0
  395. package/src/runtime-mcp/protocol.test.ts +353 -0
  396. package/src/runtime-mcp/protocol.ts +624 -0
  397. package/src/runtime-mcp/scope-config.ts +78 -0
  398. package/src/runtime-mcp/tool-bridge.ts +44 -10
  399. package/src/runtime-mcp/transports/http.ts +84 -13
  400. package/src/runtime-mcp/types.ts +123 -12
  401. package/src/sdk/acp/adapter.ts +328 -97
  402. package/src/sdk/broker/broker.ts +160 -741
  403. package/src/sdk/broker/ensure.ts +9 -1
  404. package/src/sdk/broker/lifecycle.ts +510 -116
  405. package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
  406. package/src/sdk/broker/process-incarnation.ts +19 -0
  407. package/src/sdk/broker/session-index.ts +516 -117
  408. package/src/sdk/broker/startup-failure.ts +28 -5
  409. package/src/sdk/broker/transport.ts +1 -13
  410. package/src/sdk/bus/chat-daemon-cli.ts +4 -2
  411. package/src/sdk/bus/chat-daemon-control.ts +67 -6
  412. package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
  413. package/src/sdk/bus/config.ts +13 -0
  414. package/src/sdk/bus/conversation-store.ts +59 -171
  415. package/src/sdk/bus/daemon-paths.ts +20 -0
  416. package/src/sdk/bus/discord-conversation.ts +2 -0
  417. package/src/sdk/bus/discord-daemon.ts +524 -126
  418. package/src/sdk/bus/discord-live-provider.ts +206 -79
  419. package/src/sdk/bus/existing-thread-readiness.ts +4 -97
  420. package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
  421. package/src/sdk/bus/index.ts +2480 -456
  422. package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
  423. package/src/sdk/bus/lifecycle-commands.ts +2 -2
  424. package/src/sdk/bus/managed-daemon.ts +2 -145
  425. package/src/sdk/bus/notification-service.ts +196 -0
  426. package/src/sdk/bus/operator-runtime.ts +1 -1
  427. package/src/sdk/bus/prompt-reconciliation.ts +24 -15
  428. package/src/sdk/bus/reconciliation-store.ts +553 -24
  429. package/src/sdk/bus/session-control.ts +49 -3
  430. package/src/sdk/bus/slack-conversation.ts +4 -0
  431. package/src/sdk/bus/slack-daemon.ts +733 -134
  432. package/src/sdk/bus/slack-live-provider.ts +65 -15
  433. package/src/sdk/bus/slack-provider.ts +4 -0
  434. package/src/sdk/bus/slack-thread-binding.ts +9 -104
  435. package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
  436. package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
  437. package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
  438. package/src/sdk/bus/telegram-daemon-control.ts +3 -13
  439. package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
  440. package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
  441. package/src/sdk/bus/telegram-daemon.ts +2552 -2280
  442. package/src/sdk/bus/telegram-reference.ts +1 -226
  443. package/src/sdk/bus/telegram-setup.ts +2 -2
  444. package/src/sdk/bus/threaded-render.ts +1 -0
  445. package/src/sdk/bus/topic-registry.ts +279 -146
  446. package/src/sdk/cli/rows.ts +2 -35
  447. package/src/sdk/cli/session-cli.ts +776 -700
  448. package/src/sdk/client/client.ts +892 -1
  449. package/src/sdk/host/control/dispatch.ts +93 -58
  450. package/src/sdk/host/control/index.ts +1 -1
  451. package/src/sdk/host/control/operations.ts +18 -10
  452. package/src/sdk/host/control/runtime-gate.ts +40 -0
  453. package/src/sdk/host/host.ts +63 -12
  454. package/src/sdk/host/query/handlers.ts +66 -7
  455. package/src/sdk/host/reverse-leases.ts +2 -2
  456. package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
  457. package/src/sdk/host/session-runtime.test.ts +2787 -34
  458. package/src/sdk/host/session-runtime.ts +1489 -101
  459. package/src/sdk/host/surface-policy.ts +12 -8
  460. package/src/sdk/host/types.ts +1 -1
  461. package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
  462. package/src/sdk/host/websocket-transport.ts +85 -50
  463. package/src/sdk/index.ts +2 -1
  464. package/src/sdk/lifecycle/broker-client.ts +53 -0
  465. package/src/sdk/lifecycle/client.ts +234 -0
  466. package/src/sdk/lifecycle/index.ts +3 -0
  467. package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
  468. package/src/sdk/lifecycle/service.ts +720 -0
  469. package/src/sdk/mcp/server.ts +226 -188
  470. package/src/sdk/prompt-deadline-lease.ts +55 -0
  471. package/src/sdk/prompt-deadline-manager.ts +148 -0
  472. package/src/sdk/prompt-status.ts +11 -3
  473. package/src/sdk/protocol/operation-inventory.generated.json +272 -129
  474. package/src/sdk/protocol/operation-registry.ts +71 -8
  475. package/src/sdk/receipt-state.ts +43 -0
  476. package/src/sdk/reconciliation-extensions.ts +14 -0
  477. package/src/sdk/router/index.ts +1 -0
  478. package/src/sdk/router/session-router.ts +1658 -0
  479. package/src/sdk/session-list.ts +93 -0
  480. package/src/sdk/session-reconnect.ts +45 -1
  481. package/src/sdk/session.ts +716 -120
  482. package/src/sdk/transport/serve-cli.ts +18 -34
  483. package/src/session/account-inventory.ts +603 -0
  484. package/src/session/agent-session.ts +2857 -582
  485. package/src/session/agent-storage.ts +35 -0
  486. package/src/session/blob-store.ts +32 -1
  487. package/src/session/coordinator-tool-label.ts +40 -0
  488. package/src/session/internal/managed-session-scope.ts +4 -0
  489. package/src/session/internal/managed-session-storage.ts +173 -12
  490. package/src/session/messages.ts +1 -1
  491. package/src/session/secure-token-file.ts +80 -0
  492. package/src/session/session-manager.ts +730 -58
  493. package/src/session/session-storage.ts +25 -16
  494. package/src/session/startup-auth-config.ts +297 -0
  495. package/src/session/terminal-abort.ts +1253 -0
  496. package/src/session/yield-queue.ts +57 -15
  497. package/src/session-import/claude.ts +334 -0
  498. package/src/session-import/codex.ts +1033 -0
  499. package/src/session-import/command.ts +77 -0
  500. package/src/session-import/detect.ts +133 -0
  501. package/src/session-import/index.ts +7 -0
  502. package/src/session-import/provider-codex.ts +327 -0
  503. package/src/session-import/provider-service.ts +457 -0
  504. package/src/session-import/redact.ts +128 -0
  505. package/src/session-import/service.ts +1264 -0
  506. package/src/session-import/types.ts +148 -0
  507. package/src/setup/paseo/check.ts +213 -0
  508. package/src/setup/paseo/install-saga.ts +293 -0
  509. package/src/setup/paseo/json-publisher.ts +263 -0
  510. package/src/setup/paseo/orchestration-preferences.ts +86 -0
  511. package/src/setup/paseo/paseo-ownership.ts +224 -0
  512. package/src/setup/paseo/paseo-setup.ts +253 -0
  513. package/src/setup/paseo/provider-config.ts +139 -0
  514. package/src/setup/paseo/remove.ts +183 -0
  515. package/src/setup/paseo/result-types.ts +79 -0
  516. package/src/setup/paseo/setup-deps.ts +175 -0
  517. package/src/setup/paseo/skills-bridge.ts +260 -0
  518. package/src/skill-state/active-state.ts +21 -11
  519. package/src/slash-commands/acp-builtins.ts +9 -1
  520. package/src/slash-commands/builtin-registry.ts +98 -16
  521. package/src/slash-commands/helpers/credential-switch.ts +143 -0
  522. package/src/slash-commands/helpers/mcp.ts +9 -3
  523. package/src/slash-commands/helpers/usage-report.ts +61 -56
  524. package/src/slash-commands/types.ts +7 -2
  525. package/src/task/executor.ts +30 -11
  526. package/src/task/index.ts +66 -7
  527. package/src/task/render.ts +23 -9
  528. package/src/tools/ask-answer-registry.ts +23 -7
  529. package/src/tools/ask.ts +8 -4
  530. package/src/tools/bash-sleep-advisory.ts +115 -0
  531. package/src/tools/bash.ts +98 -18
  532. package/src/tools/browser/attach.ts +71 -3
  533. package/src/tools/browser/launch.ts +86 -13
  534. package/src/tools/browser/profile-discovery.ts +57 -7
  535. package/src/tools/browser/render.ts +8 -1
  536. package/src/tools/browser.ts +130 -21
  537. package/src/tools/computer.enforcement.test.ts +1 -1
  538. package/src/tools/computer.ts +3 -2
  539. package/src/tools/cron.ts +12 -1
  540. package/src/tools/image-gen.ts +27 -16
  541. package/src/tools/index.ts +8 -0
  542. package/src/tools/job.ts +33 -6
  543. package/src/tools/monitor.ts +41 -2
  544. package/src/tools/skill-discovery.ts +21 -29
  545. package/src/tools/subagent.ts +142 -24
  546. package/src/tools/tool-catalog.generated.ts +6 -6
  547. package/src/tools/ultragoal-ask-guard.ts +10 -3
  548. package/src/utils/herdr-pane.ts +345 -0
  549. package/src/utils/title-generator.ts +2 -0
  550. package/src/web/scrapers/index.ts +6 -4
  551. package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
  552. package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
  553. package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
  554. package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
  555. package/dist/types/runtime/lazy-service.test.d.ts +0 -1
  556. package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
  557. package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
  558. package/dist/types/runtime-mcp/config.test.d.ts +0 -1
  559. package/dist/types/runtime-mcp/http.test.d.ts +0 -1
  560. package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
  561. package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
  562. package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
  563. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
  564. package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
  565. package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
  566. package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
  567. package/dist/types/sdk/elevation/audit.d.ts +0 -93
  568. package/dist/types/sdk/elevation/capability.d.ts +0 -3
  569. package/dist/types/sdk/elevation/digest.d.ts +0 -72
  570. package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
  571. package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
  572. package/dist/types/sdk/elevation/owner.d.ts +0 -48
  573. package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
  574. package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
  575. package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
  576. package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
  577. package/dist/types/session/auth-broker-config.d.ts +0 -13
  578. package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
  579. package/dist/types/skills/skills.test.d.ts +0 -1
  580. package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
  581. package/dist/types/task/token-log.test.d.ts +0 -1
  582. package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
  583. package/dist/types/tools/descriptors.test.d.ts +0 -1
  584. package/scripts/g005-daemon-smoke.ts +0 -180
  585. package/scripts/g011-daemon-path-smoke.ts +0 -153
  586. package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
  587. package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
  588. package/src/sdk/bus/telegram-cli.ts +0 -212
  589. package/src/sdk/elevation/allowlist.ts +0 -54
  590. package/src/sdk/elevation/audit.ts +0 -208
  591. package/src/sdk/elevation/capability.ts +0 -41
  592. package/src/sdk/elevation/digest.ts +0 -129
  593. package/src/sdk/elevation/dispatch-receipt.ts +0 -184
  594. package/src/sdk/elevation/grant-ledger.ts +0 -1142
  595. package/src/sdk/elevation/owner.ts +0 -109
  596. package/src/session/auth-broker-config.ts +0 -109
  597. /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
  598. /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
  599. /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
@@ -29,13 +29,30 @@ import type { AskAnswerSource, AskAnswerSourceResult, AskRemoteControl } from ".
29
29
  import { type SessionHostRuntimePublication } from "../broker/lifecycle";
30
30
  import { type SessionSdkHost } from "../host";
31
31
  import { CursorRegistry, RevisionStore } from "../host/query";
32
+ import type { SdkFrame } from "../host/types";
32
33
  import { type SdkPromptTerminalOutcome } from "../prompt-status";
33
34
  import { type SdkStartupFailure } from "../startup-capability";
34
35
  import { type NotificationConfig } from "./config";
35
36
  import { NotificationSessionController } from "./session-control";
36
- import { type EnsureDaemonResult, type RegisterNotificationRootResult } from "./telegram-daemon";
37
+ import { type EnsureDaemonResult } from "./telegram-daemon";
37
38
  export type { IdentityControlSuccessPathInput, IdentityControlTerminalPathInput, TerminalSendOutcome, } from "./control-drain-lease";
38
39
  export { isNativeControlDrainAvailable, runIdentityControlSuccessPath, runIdentityControlTerminalPath, } from "./control-drain-lease";
40
+ export type NotificationInboundAdmission = {
41
+ outcome: "accept";
42
+ } | {
43
+ outcome: "drop";
44
+ reason: "inbound_fenced" | "policy_suspended";
45
+ } | {
46
+ outcome: "defer";
47
+ reason: "policy_suspended";
48
+ };
49
+ /** Exact production admission decision for daemon-originated session inbound. */
50
+ export declare function notificationInboundAdmission(input: {
51
+ inboundFenced: boolean;
52
+ policySuspended: boolean;
53
+ notificationOrigin: boolean;
54
+ controlCommand: boolean;
55
+ }): NotificationInboundAdmission;
39
56
  type PromptTerminalDiagnostic = {
40
57
  reason?: unknown;
41
58
  loopStopReason?: string;
@@ -70,10 +87,6 @@ export type SessionCreateTarget = {
70
87
  /** Identifies the session a `session_close` targets. */
71
88
  export interface SessionCloseTarget {
72
89
  sessionId: string;
73
- /** Expected GJC-managed tmux session name (defense-in-depth match). */
74
- tmuxSession?: string;
75
- /** Expected `@gjc-session-state-file` tag (defense-in-depth match). */
76
- sessionStateFile?: string;
77
90
  }
78
91
  /** Identifies the session a `session_resume` targets. */
79
92
  export interface SessionResumeTarget {
@@ -81,107 +94,34 @@ export interface SessionResumeTarget {
81
94
  /** Optional repo/working-dir hint to disambiguate matches. */
82
95
  path?: string;
83
96
  }
84
- /** Create a new session. */
85
- export interface SessionCreateFrame {
86
- type: "session_create";
87
- requestId: string;
88
- /** Deterministic lifecycle marker preallocated by the daemon before spawn. */
89
- lifecycleRequestId: string;
90
- /** Session id the daemon preallocated and propagates to the child. */
91
- intendedSessionId: string;
92
- /** Telegram update id (idempotency key on the daemon side). */
93
- updateId: number;
94
- chatId: string;
95
- /** Control-endpoint token authorizing this frame. */
96
- token: string;
97
- target: SessionCreateTarget;
98
- /** Reserved for a future capability transport; any supplied value is rejected before lifecycle acceptance. */
99
- startupPromptRef?: string;
100
- /** Model profile preset to activate for the spawned session (--mpreset). */
101
- modelPreset?: string;
102
- }
103
- /** Close (hard-kill, history preserved) a session. */
104
- export interface SessionCloseFrame {
105
- type: "session_close";
106
- requestId: string;
107
- updateId: number;
108
- chatId: string;
109
- token: string;
110
- target: SessionCloseTarget;
111
- /** Required force-only close flag; false/omitted is rejected by daemon policy. */
112
- force?: boolean;
113
- }
114
- /** Resume a session (reattach if alive, else cold-restart from history). */
115
- export interface SessionResumeFrame {
116
- type: "session_resume";
117
- requestId: string;
118
- updateId: number;
119
- chatId: string;
120
- token: string;
121
- target: SessionResumeTarget;
122
- /** Reserved for a future capability transport; any supplied value is rejected before lifecycle acceptance. */
123
- startupPromptRef?: string;
124
- }
125
- /** Any client -> ingress lifecycle request frame. */
126
- export type SessionLifecycleRequest = SessionCreateFrame | SessionCloseFrame | SessionResumeFrame;
127
- /** Terminal status of a lifecycle request. */
128
97
  export type LifecycleStatus = "ok" | "error";
129
- /** A connected session's per-session endpoint, returned to the control client. */
130
- export interface LifecycleEndpoint {
131
- url: string;
132
- token: string;
133
- }
134
- /** The Telegram topic/thread a session is surfaced in. */
135
- export interface LifecycleTopic {
136
- chatId: string;
137
- threadId: string;
138
- }
139
- /** How a create request was correlated to its spawned session. */
140
- export type MatchedBy = "spawn_marker" | "session_ready";
141
- /** Response to a successful `session_create`. */
142
98
  export interface SessionCreateResponseFrame {
143
99
  type: "session_create_response";
144
100
  requestId: string;
145
101
  status: LifecycleStatus;
146
- lifecycleRequestId: string;
147
102
  sessionId: string;
148
- matchedBy: MatchedBy;
149
- endpoint: LifecycleEndpoint;
150
- topic: LifecycleTopic;
151
103
  target: SessionCreateTarget;
152
104
  }
153
- /** Response to a successful `session_close`. */
154
105
  export interface SessionCloseResponseFrame {
155
106
  type: "session_close_response";
156
107
  requestId: string;
157
108
  status: LifecycleStatus;
158
109
  sessionId: string;
159
- processGone: boolean;
160
- historyPreserved: boolean;
161
- endpointStale: boolean;
162
110
  }
163
- /** Whether a resume reattached to a live session or cold-restarted a dead one. */
164
111
  export type ResumeMode = "reattached" | "cold_restarted";
165
- /** Response to a successful `session_resume`. */
166
112
  export interface SessionResumeResponseFrame {
167
113
  type: "session_resume_response";
168
114
  requestId: string;
169
115
  status: LifecycleStatus;
170
116
  sessionId: string;
171
117
  mode: ResumeMode;
172
- endpoint: LifecycleEndpoint;
173
- topic: LifecycleTopic;
174
118
  }
175
- /** Machine-readable reason a lifecycle request failed. */
176
119
  export type LifecycleErrorReason = "unauthorized" | "rate_limited" | "duplicate_conflict" | "invalid_target" | "ambiguous_target" | "spawn_failed" | "discovery_timeout" | "readiness_timeout" | "close_refused" | "not_found" | "terminal_uncertain" | "unsupported_platform";
177
- /** A candidate returned with an `ambiguous_target` resume error. */
178
120
  export interface ResumeCandidate {
179
121
  sessionId: string;
180
122
  path?: string;
181
- /** Last-activity epoch-millis (session history file mtime), if known. */
182
123
  mtimeMs?: number;
183
124
  }
184
- /** A structured lifecycle error frame. */
185
125
  export interface SessionLifecycleErrorFrame {
186
126
  type: "session_lifecycle_error";
187
127
  requestId: string;
@@ -190,7 +130,6 @@ export interface SessionLifecycleErrorFrame {
190
130
  message: string;
191
131
  candidates?: ResumeCandidate[];
192
132
  }
193
- /** Any ingress -> client lifecycle response frame. */
194
133
  export type SessionLifecycleResponse = SessionCreateResponseFrame | SessionCloseResponseFrame | SessionResumeResponseFrame | SessionLifecycleErrorFrame;
195
134
  /**
196
135
  * Replayable per-session readiness signal (mirror of the Rust `session_ready`
@@ -327,6 +266,9 @@ export declare class PresentationArbiter {
327
266
  interface SessionRuntime {
328
267
  server: NotificationServer;
329
268
  host: SessionSdkHost;
269
+ /** Delivers one ring-positioned event envelope to every attached subscriber
270
+ * connection, applying the same capability gate as event replay. */
271
+ broadcastEventFrame: (event: SdkFrame) => void;
330
272
  /** Owns stateRoot-backed revisions and removes their spills on terminal shutdown. */
331
273
  revisions: RevisionStore;
332
274
  /** Releases all snapshot pins before the revision store is closed. */
@@ -336,6 +278,8 @@ interface SessionRuntime {
336
278
  /** Discovery scope is fixed before publication; a live default endpoint is never rotated in place. */
337
279
  endpointScope: "default" | "chat";
338
280
  idleSeq: number;
281
+ /** Stops delayed session-name observation when this runtime loses authority. */
282
+ stopSessionNameObserver: () => void;
339
283
  /** Interactive asks awaiting a remote answer, by action id. */
340
284
  pendingInteractive: Map<string, PendingInteractiveAsk>;
341
285
  /** Deregisters this session's ask answer source. */
@@ -348,6 +292,12 @@ interface SessionRuntime {
348
292
  notificationsActive: boolean;
349
293
  /** Provider ownership state is independent from the already-published core SDK runtime. */
350
294
  notificationOwnerState: "ready" | "retry" | "blocked";
295
+ /**
296
+ * Ownership-relevant configuration identity this runtime's owner state was
297
+ * proved under. A settled outcome may only be applied while it still matches,
298
+ * so a credential/destination/enablement change forces a re-proof.
299
+ */
300
+ notificationOwnerKey?: string;
351
301
  /** Rejects new SDK frames while a leased terminal response drains. */
352
302
  inboundFenced: boolean;
353
303
  /** Set as soon as terminal teardown is requested, before startup settles. */
@@ -381,12 +331,6 @@ interface SessionRuntime {
381
331
  /** This runtime's own host-liveness publication; only its teardown may retract it. */
382
332
  evidencePublication?: SessionHostRuntimePublication;
383
333
  brokerRegistrationReleased: boolean;
384
- /** Managed Telegram root registration released during terminal teardown. */
385
- notificationRootRegistration?: {
386
- settings: Settings;
387
- cwd: string;
388
- registrationToken: string;
389
- };
390
334
  verbosity: "lean" | "verbose";
391
335
  sessionTag: string;
392
336
  /** Whether the agent loop is currently running (drives the typing indicator). */
@@ -396,6 +340,11 @@ interface SessionRuntime {
396
340
  commandId: string;
397
341
  turnId: string;
398
342
  }>;
343
+ /** SDK run tokens bind an accepted queued follow-up to only its matching agent_start. */
344
+ pendingPromptCorrelationsBySdkRunToken: Map<string, {
345
+ commandId: string;
346
+ turnId: string;
347
+ }>;
399
348
  /** Identity bound to the agent lifecycle currently in flight. */
400
349
  activePromptCorrelation?: {
401
350
  commandId: string;
@@ -425,7 +374,7 @@ interface SessionRuntime {
425
374
  } | {
426
375
  type: "agent_failed";
427
376
  error: unknown;
428
- }) => void;
377
+ }) => void | Promise<void>;
429
378
  /** Settles and emits one sanitized correlated prompt failure. */
430
379
  emitPromptFailure: (correlation: {
431
380
  commandId: string;
@@ -473,17 +422,33 @@ interface SessionRuntime {
473
422
  turnClosed?: boolean;
474
423
  /** Finalized while provisional policy was held; flush exactly once on stable activation. */
475
424
  pendingFinal?: {
476
- text?: string;
477
- messageRef?: string;
425
+ window: number;
426
+ receipts: Array<{
427
+ text: string;
428
+ messageRef?: string;
429
+ origin: "user" | "autonomous" | "continuation";
430
+ }>;
478
431
  };
432
+ /** Monotonic user-request boundary for deferred lean delivery. */
433
+ settlementWindow: number;
434
+ /** Provenance of the currently executing assistant turn. */
435
+ currentTurnSettlementOrigin?: "user" | "autonomous" | "continuation";
436
+ /** Immutable settlement boundary captured when the current turn begins. */
437
+ currentTurnSettlementWindow?: number;
479
438
  /**
480
- * Lean-mode deferred final answer: latest assistant text observed at `turn_end`,
481
- * emitted once at `agent_end` so intermediate tool-turn narration does not flood
482
- * remote clients. Cleared after flush or when replaced by a newer turn.
439
+ * Lean-mode deferred receipts for the current user-request settlement window.
440
+ * Ordinary tool-loop turns retain latest-turn-wins behaviour. An autonomous
441
+ * continuation has no new user request, so it appends instead of erasing the
442
+ * prior receipt. The small fixed receipt bound prevents an unbounded idle wait
443
+ * from retaining the full transcript.
483
444
  */
484
445
  pendingSettled?: {
485
- text: string;
486
- messageRef?: string;
446
+ window: number;
447
+ receipts: Array<{
448
+ text: string;
449
+ messageRef?: string;
450
+ origin: "user" | "autonomous" | "continuation";
451
+ }>;
487
452
  };
488
453
  /** SDK control frames received during provisional ownership; replayed only after stable activation. */
489
454
  deferredInboundControls: Array<() => void>;
@@ -594,9 +559,13 @@ export declare class EphemeralTurnHost {
594
559
  evictTerminalEvents(): void;
595
560
  }
596
561
  /**
597
- * Ensures every configured chat-provider daemon is ready before the SDK
598
- * publishes session identity. A rejected ensure is startup-fatal: presenting
599
- * an identity for a transport that never became available is false success.
562
+ * Ensures every configured chat-provider daemon is ready.
563
+ *
564
+ * This runs strictly AFTER the SDK publishes session identity and its core
565
+ * endpoint, through the detached ownership coordinator: chat providers are
566
+ * optional notification adapters, never session authority. A rejected ensure
567
+ * therefore degrades notification delivery only — the coordinator records it
568
+ * as `failed`, adapters stay withheld, and a later reconcile re-attempts.
600
569
  */
601
570
  export declare function ensureConfiguredProviderDaemons(settings: Settings, cfg: NotificationConfig, ensureProviderDaemon?: (provider: "discord" | "slack", settings: Settings) => Promise<unknown>): Promise<void>;
602
571
  /**
@@ -614,9 +583,6 @@ export declare function createNotificationsExtension(api: ExtensionAPI, options?
614
583
  settings?: Settings;
615
584
  ensureTelegramDaemon?: (input: {
616
585
  settings: Settings;
617
- cwd: string;
618
- sessionId: string;
619
- onRegistered?: (registration: RegisterNotificationRootResult) => void;
620
586
  }) => Promise<EnsureDaemonResult>;
621
587
  ensureProviderDaemon?: (provider: "discord" | "slack", settings: Settings) => Promise<unknown>;
622
588
  /** Suppress auto-delivery for a GJC-spawned child under `sessionScope=primary`. */
@@ -635,4 +601,24 @@ export declare function createNotificationsExtension(api: ExtensionAPI, options?
635
601
  }) => void;
636
602
  readNotificationFile?: (path: string) => Promise<Buffer>;
637
603
  readNotificationDiffStat?: (cwd: string) => Promise<string | undefined>;
604
+ /**
605
+ * INTERNAL terminal-abort session seams, threaded directly from the owning
606
+ * session — deliberately NOT on the public ExtensionContext so third-party
607
+ * extensions cannot observe attempt epochs or cancel the session-global
608
+ * preflight outside the durable admission path (review thread P2).
609
+ */
610
+ terminalAbortSeams?: {
611
+ getTerminalTurnEpoch: () => number | undefined;
612
+ cancelPendingPreflightForTerminalAbort: () => void;
613
+ captureTerminalAbortSteeringSnapshot?: () => void;
614
+ discardTerminalAbortSteeringSnapshot?: (token: number) => void;
615
+ rebindTerminalAbortSteeringSnapshot?: (token: number) => void;
616
+ abortPromptAndWaitWithTerminal: (handle: string, options: {
617
+ graceMs: number;
618
+ terminal?: {
619
+ scope: "turn" | "owned";
620
+ expectedEpoch?: number;
621
+ };
622
+ }) => Promise<RunSettlementProof>;
623
+ };
638
624
  }): void;
@@ -1,8 +1,5 @@
1
- /**
2
- * Kind-aware invocation reconciliation (prompt | skill) with optional durable store.
3
- * Preserves Q26 admit/first-terminal/capacity/TTL semantics; indexes and caps are per-kind.
4
- */
5
1
  import type { PromptReconciliationStatus, SdkPromptTerminalOutcome, TurnPromptReconciliation } from "../prompt-status";
2
+ import type { ReceiptState } from "../receipt-state";
6
3
  import { type TurnResultContent, type TurnResultPage } from "../turn-result";
7
4
  import { type PromptCorrelation } from "./prompt-reconciliation";
8
5
  import type { ReconciliationKind, ReconciliationStore } from "./reconciliation-store";
@@ -11,6 +8,18 @@ export interface KindCorrelation extends PromptCorrelation {
11
8
  kind: ReconciliationKind;
12
9
  content?: TurnResultContent;
13
10
  }
11
+ export interface SteerReconciliationResult {
12
+ commandId: string;
13
+ turnId: string;
14
+ clientRef: string;
15
+ status: "accepted" | "rejected" | "uncertain";
16
+ acceptedAt: number;
17
+ terminalAt?: number;
18
+ error?: {
19
+ code: string;
20
+ message: string;
21
+ };
22
+ }
14
23
  export interface KindAwareReconciliation {
15
24
  admit(kind: ReconciliationKind, clientRef?: string): void;
16
25
  releaseAdmission(kind: ReconciliationKind, clientRef?: string): void;
@@ -25,12 +34,12 @@ export interface KindAwareReconciliation {
25
34
  error: unknown;
26
35
  content?: TurnResultContent;
27
36
  }): Promise<void>;
28
- claimPendingOutcome(correlation: PromptCorrelation, outcome: SdkPromptTerminalOutcome): Promise<SdkPromptTerminalOutcome>;
29
- finalizePromptOutcome(correlation: PromptCorrelation, outcome?: SdkPromptTerminalOutcome, recordError?: {
37
+ claimPendingOutcome(kind: ReconciliationKind, correlation: PromptCorrelation, outcome: SdkPromptTerminalOutcome, receiptState?: Extract<ReceiptState, "present" | "missing">): Promise<SdkPromptTerminalOutcome>;
38
+ finalizeOutcome(kind: ReconciliationKind, correlation: PromptCorrelation, outcome?: SdkPromptTerminalOutcome, recordError?: {
30
39
  code: string;
31
40
  message: string;
32
41
  }, content?: unknown): Promise<void>;
33
- peekPendingOutcome(correlation: PromptCorrelation): SdkPromptTerminalOutcome | undefined;
42
+ peekPendingOutcome(kind: ReconciliationKind, correlation: PromptCorrelation): SdkPromptTerminalOutcome | undefined;
34
43
  lookup(kind: ReconciliationKind, selector: {
35
44
  commandId?: string;
36
45
  turnId?: string;
@@ -41,6 +50,19 @@ export interface KindAwareReconciliation {
41
50
  turnId?: string;
42
51
  clientRef?: string;
43
52
  }): TurnResultPage;
53
+ reserveSteer(clientRef: string, text: string): Promise<{
54
+ replay: boolean;
55
+ result: SteerReconciliationResult;
56
+ }>;
57
+ settleSteer(clientRef: string, status: "accepted" | "rejected" | "uncertain", error?: unknown): Promise<SteerReconciliationResult>;
58
+ lookupSteer(selector: string | {
59
+ commandId?: string;
60
+ turnId?: string;
61
+ clientRef?: string;
62
+ }): SteerReconciliationResult | {
63
+ clientRef?: string;
64
+ status: "unknown";
65
+ };
44
66
  cleanup(): void;
45
67
  activeCount(kind: ReconciliationKind): number;
46
68
  /** Hydrate from durable store (call once at session host start). */
@@ -1,48 +1,18 @@
1
- import type { Settings } from "../../config/settings";
2
1
  import { RateLimitPool } from "./rate-limit-pool";
3
2
  import { type ThreadedSend } from "./threaded-render";
4
- export interface ManagedNotificationDaemonFs {
5
- readdir(path: string): Promise<string[]>;
6
- }
7
- export interface ManagedSessionSocket {
8
- sessionId: string;
9
- token: string;
10
- ws: WebSocket;
11
- pending: Map<string, {
12
- sessionId: string;
13
- actionId: string;
14
- }>;
15
- capable: boolean;
16
- lastPongAt: number;
17
- awaitingNonce: string | undefined;
18
- pingTimer: ReturnType<typeof setInterval> | undefined;
19
- }
3
+ /** Shared presentation engine for managed notification providers. */
20
4
  export interface ManagedNotificationDaemonOptions {
21
- settings: Settings;
22
- fs: ManagedNotificationDaemonFs;
23
- WebSocketImpl?: typeof WebSocket;
24
5
  now?: () => number;
25
- setIntervalImpl?: typeof setInterval;
26
- clearIntervalImpl?: typeof clearInterval;
27
6
  rateLimitPool?: RateLimitPool<{
28
7
  send: ThreadedSend;
29
8
  topicId?: string;
30
9
  }>;
31
10
  }
32
11
  export declare abstract class ManagedNotificationDaemon {
33
- protected readonly opts: ManagedNotificationDaemonOptions;
34
- readonly sessions: Map<string, ManagedSessionSocket>;
35
12
  readonly pool: RateLimitPool<{
36
13
  send: ThreadedSend;
37
14
  topicId?: string;
38
15
  }>;
39
- protected constructor(opts: ManagedNotificationDaemonOptions);
40
- scanRoots(): Promise<void>;
41
- connectSession(sessionId: string, url: string, token: string): ManagedSessionSocket;
42
- protected handleSessionMessage(session: ManagedSessionSocket, msg: Record<string, unknown>): Promise<boolean>;
16
+ protected constructor(opts?: ManagedNotificationDaemonOptions);
43
17
  protected renderFrame(frame: Record<string, unknown>): ThreadedSend | undefined;
44
- protected dropSession(session: ManagedSessionSocket): void;
45
- protected abstract readRoots(): Promise<string[]>;
46
- private sendHello;
47
- private startLiveness;
48
18
  }
@@ -251,6 +251,14 @@ export interface NotificationRecoveryReport {
251
251
  endpointsRetainedPlaceholders?: string[];
252
252
  /** Cleanup entries retained with unverified or mismatching identity. */
253
253
  endpointsRetainedUnknown?: string[];
254
+ /** Stale quarantine/staging debris removed from the endpoint and daemon dirs. */
255
+ debrisRemoved?: string[];
256
+ /** Debris candidates retained by policy (young, live writer). */
257
+ debrisKept?: number;
258
+ /** Debris removals attempted without conclusive success (identity/unlink). */
259
+ debrisFailures?: number;
260
+ /** At least one debris directory listing failed; the sweep was not exhaustive. */
261
+ debrisScanFailed?: boolean;
254
262
  daemon: {
255
263
  action: DaemonRecoveryAction;
256
264
  detail: string;
@@ -317,6 +325,50 @@ export declare function acquireDaemonTransitionLock(input: {
317
325
  retryDelayMs?: number;
318
326
  randomToken?: () => string;
319
327
  }): Promise<DaemonTransitionLock | undefined>;
328
+ /**
329
+ * Minimum age before age-based debris removal. Quarantine artifacts are inert
330
+ * the moment they are detached, but the age bound keeps the sweep clear of any
331
+ * recovery pass still holding a `detachedPath` reference in its report.
332
+ */
333
+ export declare const NOTIFICATION_DEBRIS_MIN_AGE_MS: number;
334
+ export interface NotificationDebrisSweepReport {
335
+ /** Basenames removed from the swept directory. */
336
+ removed: string[];
337
+ /** Debris candidates retained (young, live writer, or identity/unlink refusal). */
338
+ kept: number;
339
+ /**
340
+ * Candidates whose removal was ATTEMPTED and did not conclusively succeed
341
+ * (identity mismatch, unreadable candidate, unlink error). Distinct from
342
+ * `kept`-by-policy so a caller can see that a sweep was not fully effective.
343
+ */
344
+ failures: number;
345
+ /** The directory listing itself failed; nothing could be inspected. */
346
+ scanFailed?: boolean;
347
+ }
348
+ /**
349
+ * Remove inert filesystem debris from a notification/state directory:
350
+ * quarantine targets of already-detached markers and endpoints, exact-unlink
351
+ * exchange placeholders, and leaked atomic-write staging files.
352
+ *
353
+ * Removal requires positive staleness proof — a dead recorded writer pid for
354
+ * staging files, or an mtime older than {@link NOTIFICATION_DEBRIS_MIN_AGE_MS}
355
+ * for everything else. Canonical files can never match the debris patterns, and
356
+ * a young staging file with a live writer is kept.
357
+ *
358
+ * Age, terminal-scrub proof, and the delete identity all come from ONE
359
+ * no-follow snapshot of the candidate. Judging age from a separate `stat` would
360
+ * prove one pathname stale and then bind the delete to whatever occupied that
361
+ * pathname afterwards, so a live successor could be removed on a predecessor's
362
+ * staleness. A candidate replaced after the snapshot fails the identity match
363
+ * and is retained; a symlinked, non-regular, or unreadable candidate is refused
364
+ * outright. Every inconclusive attempt is counted in `failures` rather than
365
+ * silently folded into `kept`.
366
+ */
367
+ export declare function sweepNotificationDebris(input: {
368
+ dir: string;
369
+ deps?: NotificationServiceDeps;
370
+ minAgeMs?: number;
371
+ }): Promise<NotificationDebrisSweepReport>;
320
372
  /**
321
373
  * Ownership-protected cleanup. Removes only DEAD-owner artifacts:
322
374
  * per-session endpoint files with positive proof of death (a stale tombstone or
@@ -1,6 +1,6 @@
1
1
  export interface NotificationOperatorTimerDeps {
2
2
  now?: () => number;
3
- setTimeoutImpl?: typeof setTimeout;
3
+ setTimeoutImpl?: (callback: () => void, ms?: number) => Timer | NodeJS.Timeout;
4
4
  clearTimeoutImpl?: typeof clearTimeout;
5
5
  setIntervalImpl?: typeof setInterval;
6
6
  clearIntervalImpl?: typeof clearInterval;
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Bounded authoritative reconciliation state for Q26 `turn.prompt_status`.
2
+ * Bounded prompt reconciliation state for canonical Q26 `turn.result` with
3
+ * `kind: "prompt"`, plus the legacy `turn.prompt_status` alias.
3
4
  *
4
5
  * Separate from the lifecycle delivery buffers (promptSubmissions /
5
6
  * promptTerminalTombstones), which exist to deliver frames and intentionally
@@ -9,8 +10,8 @@
9
10
  *
10
11
  * Semantics (public contract, mirrored in sdk/prompt-status.ts):
11
12
  * - Active records are NEVER converted to terminal by age or capacity.
12
- * - Terminal records are retained for TERMINAL_TTL_MS and bounded to
13
- * TERMINAL_CAPACITY, evicted oldest-terminal-first by terminalAt; only then
13
+ * - Terminal records are bounded to TERMINAL_CAPACITY and evicted
14
+ * oldest-terminal-first by terminalAt; only then
14
15
  * does a lookup honestly report `unknown`.
15
16
  * - Process-local durability floor is the live session process: restart means `unknown`.
16
17
  * Session-scoped durable retention (kind-aware store) is provided by reconciliation-store.ts (#3032).
@@ -21,10 +22,10 @@
21
22
  * record that has none, but never changes status, terminalAt, or retention.
22
23
  */
23
24
  import { PROMPT_FAILURE_CODE_MAX, sanitizePromptFailure } from "../prompt-failure";
25
+ import type { ReceiptState } from "../receipt-state";
24
26
  export { PROMPT_FAILURE_CODE_MAX, sanitizePromptFailure };
25
27
  export declare const PROMPT_RECONCILIATION_ACTIVE_CAPACITY = 128;
26
28
  export declare const PROMPT_RECONCILIATION_TERMINAL_CAPACITY = 256;
27
- export declare const PROMPT_RECONCILIATION_TERMINAL_TTL_MS: number;
28
29
  export type PromptReconciliationStatus = "accepted" | "in_flight" | "terminal_ok" | "failed";
29
30
  export interface PromptCorrelation {
30
31
  commandId: string;
@@ -40,15 +41,18 @@ export interface PromptReconciliationRecord extends PromptCorrelation {
40
41
  acceptedAt: number;
41
42
  startedAt?: number;
42
43
  terminalAt?: number;
44
+ receiptState?: Exclude<ReceiptState, "absent">;
43
45
  }
44
46
  export type TurnPromptReconciliation = {
45
47
  status: "accepted";
48
+ receiptState: "absent";
46
49
  commandId: string;
47
50
  turnId: string;
48
51
  clientRef?: string;
49
52
  acceptedAt: number;
50
53
  } | {
51
54
  status: "in_flight";
55
+ receiptState: "absent";
52
56
  commandId: string;
53
57
  turnId: string;
54
58
  clientRef?: string;
@@ -56,6 +60,7 @@ export type TurnPromptReconciliation = {
56
60
  startedAt: number;
57
61
  } | {
58
62
  status: "terminal_ok";
63
+ receiptState: Exclude<ReceiptState, "absent">;
59
64
  commandId: string;
60
65
  turnId: string;
61
66
  clientRef?: string;
@@ -69,6 +74,7 @@ export type TurnPromptReconciliation = {
69
74
  };
70
75
  } | {
71
76
  status: "failed";
77
+ receiptState: Exclude<ReceiptState, "absent">;
72
78
  commandId: string;
73
79
  turnId: string;
74
80
  clientRef?: string;
@@ -81,6 +87,7 @@ export type TurnPromptReconciliation = {
81
87
  };
82
88
  } | {
83
89
  status: "unknown";
90
+ receiptState: "unknown";
84
91
  };
85
92
  export interface PromptReconciliation {
86
93
  /** Fail-closed admission BEFORE any execution; holds an identity-bound reservation. */
@@ -91,10 +98,14 @@ export interface PromptReconciliation {
91
98
  noteAccepted(correlation: PromptCorrelation, clientRef?: string): void;
92
99
  /** Lifecycle transition; terminal outcomes settle exactly once. */
93
100
  noteTransition(correlation: PromptCorrelation | undefined, frame: {
94
- type: "agent_start" | "agent_end";
101
+ type: "agent_start";
102
+ } | {
103
+ type: "agent_end";
104
+ finalText?: string;
95
105
  } | {
96
106
  type: "agent_failed";
97
107
  error: unknown;
108
+ finalText?: string;
98
109
  }): void;
99
110
  lookup(selector: {
100
111
  commandId?: string;