@gajae-code/coding-agent 0.13.2 → 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 (610) hide show
  1. package/CHANGELOG.md +215 -8
  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 +10 -1
  35. package/dist/types/config/models-config-schema.d.ts +2 -0
  36. package/dist/types/config/settings-schema.d.ts +73 -9
  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 +2 -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/dynamic-theme-text.d.ts +9 -0
  87. package/dist/types/modes/components/gajae-pet-widget.d.ts +6 -28
  88. package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
  89. package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
  90. package/dist/types/modes/components/oauth-selector.d.ts +10 -4
  91. package/dist/types/modes/components/pet-capability.d.ts +7 -21
  92. package/dist/types/modes/components/settings-selector.d.ts +5 -0
  93. package/dist/types/modes/components/status-line/gh.d.ts +6 -2
  94. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
  95. package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
  96. package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
  97. package/dist/types/modes/interactive-mode.d.ts +1 -0
  98. package/dist/types/modes/theme/defaults/index.d.ts +118 -0
  99. package/dist/types/modes/types.d.ts +1 -0
  100. package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
  101. package/dist/types/runtime-mcp/config.d.ts +9 -0
  102. package/dist/types/runtime-mcp/manager.d.ts +26 -1
  103. package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
  104. package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
  105. package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
  106. package/dist/types/runtime-mcp/protocol.d.ts +278 -0
  107. package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
  108. package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
  109. package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
  110. package/dist/types/runtime-mcp/types.d.ts +102 -10
  111. package/dist/types/sdk/acp/adapter.d.ts +26 -5
  112. package/dist/types/sdk/broker/broker.d.ts +3 -55
  113. package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
  114. package/dist/types/sdk/broker/session-index.d.ts +14 -5
  115. package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
  116. package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
  117. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
  118. package/dist/types/sdk/bus/config.d.ts +11 -0
  119. package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
  120. package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
  121. package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
  122. package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
  123. package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
  124. package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
  125. package/dist/types/sdk/bus/index.d.ts +85 -99
  126. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
  127. package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
  128. package/dist/types/sdk/bus/notification-service.d.ts +52 -0
  129. package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
  130. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
  131. package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
  132. package/dist/types/sdk/bus/session-control.d.ts +25 -1
  133. package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
  134. package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
  135. package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
  136. package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
  137. package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
  138. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
  139. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
  140. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
  141. package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
  142. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
  143. package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
  144. package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
  145. package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
  146. package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
  147. package/dist/types/sdk/cli/rows.d.ts +2 -11
  148. package/dist/types/sdk/cli/session-cli.d.ts +15 -25
  149. package/dist/types/sdk/client/client.d.ts +97 -1
  150. package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
  151. package/dist/types/sdk/host/control/index.d.ts +1 -1
  152. package/dist/types/sdk/host/control/operations.d.ts +18 -5
  153. package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
  154. package/dist/types/sdk/host/host.d.ts +15 -1
  155. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  156. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  157. package/dist/types/sdk/host/session-runtime.d.ts +127 -7
  158. package/dist/types/sdk/host/types.d.ts +1 -1
  159. package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
  160. package/dist/types/sdk/index.d.ts +2 -1
  161. package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
  162. package/dist/types/sdk/lifecycle/client.d.ts +59 -0
  163. package/dist/types/sdk/lifecycle/index.d.ts +3 -0
  164. package/dist/types/sdk/lifecycle/service.d.ts +232 -0
  165. package/dist/types/sdk/mcp/server.d.ts +9 -6
  166. package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
  167. package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
  168. package/dist/types/sdk/prompt-status.d.ts +10 -3
  169. package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
  170. package/dist/types/sdk/receipt-state.d.ts +17 -0
  171. package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
  172. package/dist/types/sdk/router/index.d.ts +1 -0
  173. package/dist/types/sdk/router/session-router.d.ts +152 -0
  174. package/dist/types/sdk/session-list.d.ts +22 -0
  175. package/dist/types/sdk/session-reconnect.d.ts +43 -1
  176. package/dist/types/sdk/session.d.ts +34 -1
  177. package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
  178. package/dist/types/session/account-inventory.d.ts +86 -0
  179. package/dist/types/session/agent-session.d.ts +145 -6
  180. package/dist/types/session/agent-storage.d.ts +10 -0
  181. package/dist/types/session/coordinator-tool-label.d.ts +28 -0
  182. package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
  183. package/dist/types/session/messages.d.ts +1 -1
  184. package/dist/types/session/secure-token-file.d.ts +3 -0
  185. package/dist/types/session/session-manager.d.ts +47 -1
  186. package/dist/types/session/startup-auth-config.d.ts +44 -0
  187. package/dist/types/session/terminal-abort.d.ts +378 -0
  188. package/dist/types/session/yield-queue.d.ts +7 -0
  189. package/dist/types/session-import/claude.d.ts +26 -0
  190. package/dist/types/session-import/codex.d.ts +88 -0
  191. package/dist/types/session-import/command.d.ts +35 -0
  192. package/dist/types/session-import/detect.d.ts +22 -0
  193. package/dist/types/session-import/index.d.ts +7 -0
  194. package/dist/types/session-import/provider-codex.d.ts +22 -0
  195. package/dist/types/session-import/provider-service.d.ts +38 -0
  196. package/dist/types/session-import/redact.d.ts +23 -0
  197. package/dist/types/session-import/service.d.ts +47 -0
  198. package/dist/types/session-import/types.d.ts +120 -0
  199. package/dist/types/setup/paseo/check.d.ts +16 -0
  200. package/dist/types/setup/paseo/install-saga.d.ts +115 -0
  201. package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
  202. package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
  203. package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
  204. package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
  205. package/dist/types/setup/paseo/provider-config.d.ts +35 -0
  206. package/dist/types/setup/paseo/remove.d.ts +14 -0
  207. package/dist/types/setup/paseo/result-types.d.ts +59 -0
  208. package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
  209. package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
  210. package/dist/types/skill-state/active-state.d.ts +5 -1
  211. package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
  212. package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
  213. package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
  214. package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
  215. package/dist/types/slash-commands/types.d.ts +7 -1
  216. package/dist/types/task/executor.d.ts +10 -0
  217. package/dist/types/task/index.d.ts +3 -1
  218. package/dist/types/tools/ask-answer-registry.d.ts +6 -3
  219. package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
  220. package/dist/types/tools/bash.d.ts +2 -6
  221. package/dist/types/tools/browser/attach.d.ts +11 -0
  222. package/dist/types/tools/browser/launch.d.ts +20 -0
  223. package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
  224. package/dist/types/tools/browser/render.d.ts +1 -0
  225. package/dist/types/tools/browser.d.ts +3 -1
  226. package/dist/types/tools/image-gen.d.ts +10 -2
  227. package/dist/types/tools/index.d.ts +8 -0
  228. package/dist/types/tools/monitor.d.ts +1 -1
  229. package/dist/types/tools/skill-discovery.d.ts +8 -1
  230. package/dist/types/tools/subagent.d.ts +2 -0
  231. package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
  232. package/dist/types/utils/herdr-pane.d.ts +76 -0
  233. package/package.json +19 -9
  234. package/scripts/build-binary.ts +2 -1
  235. package/scripts/build-sdk-package-smoke.ts +2 -13
  236. package/scripts/capture-sticky-viewport-showcase.ts +0 -1
  237. package/scripts/compile-args.ts +2 -0
  238. package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
  239. package/scripts/generate-sdk-operation-inventory.ts +28 -0
  240. package/scripts/generate-telegram-baseline-manifest.ts +1 -0
  241. package/scripts/generate-tool-catalog.ts +6 -4
  242. package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
  243. package/src/async/job-manager.ts +352 -17
  244. package/src/async/support.ts +25 -0
  245. package/src/autoresearch/dashboard.ts +28 -13
  246. package/src/capability/index.ts +3 -1
  247. package/src/capability/mcp.ts +6 -0
  248. package/src/capability/types.ts +6 -0
  249. package/src/cli/accounts-cli.ts +395 -0
  250. package/src/cli/args.ts +23 -0
  251. package/src/cli/auth-broker-cli.ts +136 -66
  252. package/src/cli/auth-gateway-cli.ts +94 -70
  253. package/src/cli/config-cli.ts +27 -2
  254. package/src/cli/crash-cli.ts +78 -0
  255. package/src/cli/customize-doctor.ts +1605 -0
  256. package/src/cli/daemon-cli.ts +12 -3
  257. package/src/cli/fast-help.ts +1 -0
  258. package/src/cli/mcp-cli.ts +128 -60
  259. package/src/cli/notify-cli.ts +8 -14
  260. package/src/cli/root-flags.ts +8 -0
  261. package/src/cli/setup-cli.ts +145 -0
  262. package/src/cli/skills-cli.ts +38 -2
  263. package/src/cli/update-cli.ts +167 -12
  264. package/src/cli.ts +4 -0
  265. package/src/commands/accounts.ts +71 -0
  266. package/src/commands/crash.ts +35 -0
  267. package/src/commands/customize.ts +84 -0
  268. package/src/commands/daemon.ts +2 -2
  269. package/src/commands/deep-interview.ts +2 -0
  270. package/src/commands/launch.ts +1 -0
  271. package/src/commands/mcp.ts +12 -7
  272. package/src/commands/ralplan.ts +2 -0
  273. package/src/commands/sdk.ts +65 -32
  274. package/src/commands/setup.ts +5 -0
  275. package/src/commands/skills.ts +14 -4
  276. package/src/commands/ultragoal.ts +10 -1
  277. package/src/commands/update.ts +26 -15
  278. package/src/config/atomic-yaml-patch-worker.ts +57 -0
  279. package/src/config/atomic-yaml-patch.ts +769 -29
  280. package/src/config/config-schema-version.ts +10 -0
  281. package/src/config/file-lock.ts +70 -1
  282. package/src/config/mcp-schema.json +52 -14
  283. package/src/config/model-profile-activation.ts +23 -2
  284. package/src/config/model-profiles.ts +88 -21
  285. package/src/config/model-registry.ts +147 -21
  286. package/src/config/models-config-schema.ts +1 -1
  287. package/src/config/settings-schema.ts +77 -7
  288. package/src/config/settings.ts +4038 -199
  289. package/src/config/skill-settings-defaults.ts +41 -3
  290. package/src/config/task-delegation.ts +87 -0
  291. package/src/config/update-channel.ts +23 -0
  292. package/src/coordinator-mcp/server.ts +377 -308
  293. package/src/crash/index-store.ts +723 -0
  294. package/src/crash/nudge.ts +89 -0
  295. package/src/crash/record-loader.ts +149 -0
  296. package/src/crash/report.ts +551 -0
  297. package/src/crash/sanitize.ts +129 -0
  298. package/src/cursor.ts +36 -10
  299. package/src/customization/import.ts +946 -0
  300. package/src/customization/index.ts +4 -0
  301. package/src/customization/inventory.ts +335 -0
  302. package/src/customization/mutations.ts +141 -0
  303. package/src/customization/types.ts +223 -0
  304. package/src/daemon/control-types.ts +8 -1
  305. package/src/daemon/operator-contract.ts +6 -6
  306. package/src/defaults/gjc/extensions/grok-cli-vendor/src/models/catalog.ts +31 -6
  307. package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
  308. package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
  309. package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
  310. package/src/discovery/claude-hooks.ts +38 -0
  311. package/src/discovery/claude.ts +142 -209
  312. package/src/discovery/codex-hooks.ts +38 -0
  313. package/src/discovery/codex.ts +132 -198
  314. package/src/discovery/helpers.ts +8 -1
  315. package/src/discovery/index.ts +2 -0
  316. package/src/discovery/mcp-compat.ts +234 -0
  317. package/src/discovery/mcp-json.ts +6 -0
  318. package/src/edit/renderer.ts +40 -0
  319. package/src/edit/streaming.ts +4 -2
  320. package/src/exec/bash-executor.ts +24 -20
  321. package/src/export/html/index.ts +51 -2
  322. package/src/extensibility/extensions/loader.ts +9 -1
  323. package/src/extensibility/extensions/runner.ts +17 -4
  324. package/src/extensibility/extensions/types.ts +31 -6
  325. package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
  326. package/src/extensibility/gjc-plugins/installer.ts +9 -5
  327. package/src/extensibility/gjc-plugins/observability.ts +8 -2
  328. package/src/extensibility/gjc-plugins/registry.ts +13 -2
  329. package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
  330. package/src/extensibility/gjc-plugins/schema.ts +222 -39
  331. package/src/extensibility/hooks/loader.ts +154 -10
  332. package/src/extensibility/runtime-skill-discovery.ts +257 -60
  333. package/src/extensibility/skill-management.ts +368 -0
  334. package/src/extensibility/skills.ts +52 -16
  335. package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
  336. package/src/gjc-runtime/launch-worktree.ts +56 -2
  337. package/src/gjc-runtime/linux-proc.ts +7 -1
  338. package/src/gjc-runtime/ralplan-runtime.ts +100 -164
  339. package/src/gjc-runtime/session-state-lock.ts +992 -0
  340. package/src/gjc-runtime/session-state-sidecar.ts +644 -142
  341. package/src/gjc-runtime/state-writer.ts +39 -14
  342. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
  343. package/src/gjc-runtime/ultragoal-guard.ts +11 -4
  344. package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
  345. package/src/gjc-runtime/workflow-settings.ts +596 -0
  346. package/src/goals/tools/goal-tool.ts +6 -1
  347. package/src/hooks/events.ts +291 -0
  348. package/src/hooks/native-skill-hook.ts +4 -0
  349. package/src/hooks/normalize.ts +369 -0
  350. package/src/hooks/skill-state.ts +165 -46
  351. package/src/internal-urls/docs-index.generated.ts +41 -32
  352. package/src/main.ts +36 -5
  353. package/src/migrate/mcp-mapper.ts +25 -2
  354. package/src/modes/acp/abort-scope.ts +29 -0
  355. package/src/modes/acp/acp-agent.ts +423 -98
  356. package/src/modes/components/assistant-message.ts +6 -1
  357. package/src/modes/components/chrome.ts +4 -3
  358. package/src/modes/components/customization/customization-dashboard.ts +443 -0
  359. package/src/modes/components/customization/import-wizard.ts +372 -0
  360. package/src/modes/components/customization/index.ts +1 -0
  361. package/src/modes/components/dynamic-theme-text.ts +22 -0
  362. package/src/modes/components/gajae-pet-widget.ts +607 -193
  363. package/src/modes/components/irc-sidebar.ts +11 -0
  364. package/src/modes/components/iterm-pet-transport.ts +585 -0
  365. package/src/modes/components/model-selector.ts +1 -6
  366. package/src/modes/components/oauth-selector.ts +277 -86
  367. package/src/modes/components/pet-capability.ts +35 -31
  368. package/src/modes/components/settings-selector.ts +29 -5
  369. package/src/modes/components/status-line/gh.ts +45 -1
  370. package/src/modes/components/status-line/segments.ts +19 -4
  371. package/src/modes/components/tool-status-header.ts +13 -3
  372. package/src/modes/controllers/command-controller.ts +20 -8
  373. package/src/modes/controllers/extension-ui-controller.ts +56 -257
  374. package/src/modes/controllers/input-controller.ts +10 -0
  375. package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
  376. package/src/modes/controllers/selector-controller.ts +238 -77
  377. package/src/modes/controllers/stt-controller.ts +3 -3
  378. package/src/modes/interactive-mode.ts +88 -16
  379. package/src/modes/print-mode.ts +35 -6
  380. package/src/modes/runtime-init.ts +21 -68
  381. package/src/modes/theme/defaults/index.ts +2 -0
  382. package/src/modes/theme/defaults/ouroboros.json +118 -0
  383. package/src/modes/types.ts +1 -0
  384. package/src/modes/utils/injected-user-submission.ts +25 -0
  385. package/src/modes/utils/terminal-bell.ts +15 -1
  386. package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
  387. package/src/prompts/agent-fragments/restricted-bash.md +1 -1
  388. package/src/prompts/agents/critic.md +1 -1
  389. package/src/prompts/system/rlm-research.md +1 -1
  390. package/src/prompts/system/system-prompt.md +0 -2
  391. package/src/prompts/tools/bash.md +7 -1
  392. package/src/prompts/tools/browser.md +1 -1
  393. package/src/prompts/tools/cron.md +6 -6
  394. package/src/prompts/tools/read.md +0 -2
  395. package/src/prompts/tools/skill-discovery.md +4 -2
  396. package/src/runtime-mcp/client.ts +427 -23
  397. package/src/runtime-mcp/config.ts +37 -5
  398. package/src/runtime-mcp/manager-pool.test.ts +56 -0
  399. package/src/runtime-mcp/manager.ts +52 -2
  400. package/src/runtime-mcp/oauth-discovery.ts +13 -0
  401. package/src/runtime-mcp/oauth-flow.ts +46 -1
  402. package/src/runtime-mcp/pool-key.ts +5 -1
  403. package/src/runtime-mcp/pool.test.ts +9 -0
  404. package/src/runtime-mcp/protocol.test.ts +353 -0
  405. package/src/runtime-mcp/protocol.ts +624 -0
  406. package/src/runtime-mcp/scope-config.ts +78 -0
  407. package/src/runtime-mcp/tool-bridge.ts +44 -10
  408. package/src/runtime-mcp/transports/http.ts +84 -13
  409. package/src/runtime-mcp/types.ts +123 -12
  410. package/src/sdk/acp/adapter.ts +328 -97
  411. package/src/sdk/broker/broker.ts +160 -741
  412. package/src/sdk/broker/ensure.ts +9 -1
  413. package/src/sdk/broker/lifecycle.ts +510 -116
  414. package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
  415. package/src/sdk/broker/process-incarnation.ts +19 -0
  416. package/src/sdk/broker/session-index.ts +516 -117
  417. package/src/sdk/broker/startup-failure.ts +28 -5
  418. package/src/sdk/broker/transport.ts +1 -13
  419. package/src/sdk/bus/chat-daemon-cli.ts +4 -2
  420. package/src/sdk/bus/chat-daemon-control.ts +67 -6
  421. package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
  422. package/src/sdk/bus/config.ts +13 -0
  423. package/src/sdk/bus/conversation-store.ts +59 -171
  424. package/src/sdk/bus/daemon-paths.ts +20 -0
  425. package/src/sdk/bus/discord-conversation.ts +2 -0
  426. package/src/sdk/bus/discord-daemon.ts +524 -126
  427. package/src/sdk/bus/discord-live-provider.ts +206 -79
  428. package/src/sdk/bus/existing-thread-readiness.ts +4 -97
  429. package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
  430. package/src/sdk/bus/index.ts +2480 -456
  431. package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
  432. package/src/sdk/bus/lifecycle-commands.ts +2 -2
  433. package/src/sdk/bus/managed-daemon.ts +2 -145
  434. package/src/sdk/bus/notification-service.ts +196 -0
  435. package/src/sdk/bus/operator-runtime.ts +1 -1
  436. package/src/sdk/bus/prompt-reconciliation.ts +24 -15
  437. package/src/sdk/bus/reconciliation-store.ts +553 -24
  438. package/src/sdk/bus/session-control.ts +49 -3
  439. package/src/sdk/bus/slack-conversation.ts +4 -0
  440. package/src/sdk/bus/slack-daemon.ts +733 -134
  441. package/src/sdk/bus/slack-live-provider.ts +65 -15
  442. package/src/sdk/bus/slack-provider.ts +4 -0
  443. package/src/sdk/bus/slack-thread-binding.ts +9 -104
  444. package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
  445. package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
  446. package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
  447. package/src/sdk/bus/telegram-daemon-control.ts +3 -13
  448. package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
  449. package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
  450. package/src/sdk/bus/telegram-daemon.ts +2552 -2280
  451. package/src/sdk/bus/telegram-reference.ts +1 -226
  452. package/src/sdk/bus/telegram-setup.ts +2 -2
  453. package/src/sdk/bus/threaded-render.ts +1 -0
  454. package/src/sdk/bus/topic-registry.ts +279 -146
  455. package/src/sdk/cli/rows.ts +2 -35
  456. package/src/sdk/cli/session-cli.ts +776 -700
  457. package/src/sdk/client/client.ts +892 -1
  458. package/src/sdk/host/control/dispatch.ts +93 -58
  459. package/src/sdk/host/control/index.ts +1 -1
  460. package/src/sdk/host/control/operations.ts +18 -10
  461. package/src/sdk/host/control/runtime-gate.ts +40 -0
  462. package/src/sdk/host/host.ts +63 -12
  463. package/src/sdk/host/query/handlers.ts +66 -7
  464. package/src/sdk/host/reverse-leases.ts +2 -2
  465. package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
  466. package/src/sdk/host/session-runtime.test.ts +2787 -34
  467. package/src/sdk/host/session-runtime.ts +1489 -101
  468. package/src/sdk/host/surface-policy.ts +12 -8
  469. package/src/sdk/host/types.ts +1 -1
  470. package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
  471. package/src/sdk/host/websocket-transport.ts +85 -50
  472. package/src/sdk/index.ts +2 -1
  473. package/src/sdk/lifecycle/broker-client.ts +53 -0
  474. package/src/sdk/lifecycle/client.ts +234 -0
  475. package/src/sdk/lifecycle/index.ts +3 -0
  476. package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
  477. package/src/sdk/lifecycle/service.ts +720 -0
  478. package/src/sdk/mcp/server.ts +226 -188
  479. package/src/sdk/prompt-deadline-lease.ts +55 -0
  480. package/src/sdk/prompt-deadline-manager.ts +148 -0
  481. package/src/sdk/prompt-status.ts +11 -3
  482. package/src/sdk/protocol/operation-inventory.generated.json +272 -129
  483. package/src/sdk/protocol/operation-registry.ts +71 -8
  484. package/src/sdk/receipt-state.ts +43 -0
  485. package/src/sdk/reconciliation-extensions.ts +14 -0
  486. package/src/sdk/router/index.ts +1 -0
  487. package/src/sdk/router/session-router.ts +1658 -0
  488. package/src/sdk/session-list.ts +93 -0
  489. package/src/sdk/session-reconnect.ts +45 -1
  490. package/src/sdk/session.ts +716 -120
  491. package/src/sdk/transport/serve-cli.ts +18 -34
  492. package/src/session/account-inventory.ts +603 -0
  493. package/src/session/agent-session.ts +2873 -559
  494. package/src/session/agent-storage.ts +35 -0
  495. package/src/session/blob-store.ts +32 -1
  496. package/src/session/coordinator-tool-label.ts +40 -0
  497. package/src/session/internal/managed-session-scope.ts +4 -0
  498. package/src/session/internal/managed-session-storage.ts +199 -31
  499. package/src/session/messages.ts +1 -1
  500. package/src/session/secure-token-file.ts +80 -0
  501. package/src/session/session-manager.ts +757 -57
  502. package/src/session/session-storage.ts +25 -16
  503. package/src/session/startup-auth-config.ts +297 -0
  504. package/src/session/terminal-abort.ts +1253 -0
  505. package/src/session/yield-queue.ts +57 -15
  506. package/src/session-import/claude.ts +334 -0
  507. package/src/session-import/codex.ts +1033 -0
  508. package/src/session-import/command.ts +77 -0
  509. package/src/session-import/detect.ts +133 -0
  510. package/src/session-import/index.ts +7 -0
  511. package/src/session-import/provider-codex.ts +327 -0
  512. package/src/session-import/provider-service.ts +457 -0
  513. package/src/session-import/redact.ts +128 -0
  514. package/src/session-import/service.ts +1264 -0
  515. package/src/session-import/types.ts +148 -0
  516. package/src/setup/paseo/check.ts +213 -0
  517. package/src/setup/paseo/install-saga.ts +293 -0
  518. package/src/setup/paseo/json-publisher.ts +263 -0
  519. package/src/setup/paseo/orchestration-preferences.ts +86 -0
  520. package/src/setup/paseo/paseo-ownership.ts +224 -0
  521. package/src/setup/paseo/paseo-setup.ts +253 -0
  522. package/src/setup/paseo/provider-config.ts +139 -0
  523. package/src/setup/paseo/remove.ts +183 -0
  524. package/src/setup/paseo/result-types.ts +79 -0
  525. package/src/setup/paseo/setup-deps.ts +175 -0
  526. package/src/setup/paseo/skills-bridge.ts +260 -0
  527. package/src/skill-state/active-state.ts +21 -11
  528. package/src/slash-commands/acp-builtins.ts +9 -1
  529. package/src/slash-commands/builtin-registry.ts +117 -19
  530. package/src/slash-commands/helpers/credential-switch.ts +143 -0
  531. package/src/slash-commands/helpers/mcp.ts +9 -3
  532. package/src/slash-commands/helpers/usage-report.ts +61 -56
  533. package/src/slash-commands/types.ts +7 -2
  534. package/src/task/executor.ts +30 -11
  535. package/src/task/index.ts +66 -7
  536. package/src/task/render.ts +23 -9
  537. package/src/tools/ask-answer-registry.ts +23 -7
  538. package/src/tools/ask.ts +8 -4
  539. package/src/tools/bash-sleep-advisory.ts +115 -0
  540. package/src/tools/bash.ts +98 -18
  541. package/src/tools/browser/attach.ts +71 -3
  542. package/src/tools/browser/launch.ts +86 -13
  543. package/src/tools/browser/profile-discovery.ts +57 -7
  544. package/src/tools/browser/render.ts +8 -1
  545. package/src/tools/browser.ts +130 -21
  546. package/src/tools/computer.enforcement.test.ts +1 -1
  547. package/src/tools/computer.ts +3 -2
  548. package/src/tools/cron.ts +12 -1
  549. package/src/tools/image-gen.ts +349 -142
  550. package/src/tools/index.ts +8 -0
  551. package/src/tools/job.ts +33 -6
  552. package/src/tools/monitor.ts +41 -2
  553. package/src/tools/skill-discovery.ts +21 -29
  554. package/src/tools/subagent.ts +142 -24
  555. package/src/tools/todo-contract.ts +55 -3
  556. package/src/tools/todo-write.ts +4 -3
  557. package/src/tools/tool-catalog.generated.ts +6 -6
  558. package/src/tools/ultragoal-ask-guard.ts +10 -3
  559. package/src/utils/herdr-pane.ts +345 -0
  560. package/src/utils/title-generator.ts +2 -0
  561. package/src/web/scrapers/index.ts +6 -4
  562. package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
  563. package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
  564. package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
  565. package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
  566. package/dist/types/runtime/lazy-service.test.d.ts +0 -1
  567. package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
  568. package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
  569. package/dist/types/runtime-mcp/config.test.d.ts +0 -1
  570. package/dist/types/runtime-mcp/http.test.d.ts +0 -1
  571. package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
  572. package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
  573. package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
  574. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
  575. package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
  576. package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
  577. package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
  578. package/dist/types/sdk/elevation/audit.d.ts +0 -93
  579. package/dist/types/sdk/elevation/capability.d.ts +0 -3
  580. package/dist/types/sdk/elevation/digest.d.ts +0 -72
  581. package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
  582. package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
  583. package/dist/types/sdk/elevation/owner.d.ts +0 -48
  584. package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
  585. package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
  586. package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
  587. package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
  588. package/dist/types/session/auth-broker-config.d.ts +0 -13
  589. package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
  590. package/dist/types/skills/skills.test.d.ts +0 -1
  591. package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
  592. package/dist/types/task/token-log.test.d.ts +0 -1
  593. package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
  594. package/dist/types/tools/descriptors.test.d.ts +0 -1
  595. package/scripts/g005-daemon-smoke.ts +0 -180
  596. package/scripts/g011-daemon-path-smoke.ts +0 -153
  597. package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
  598. package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
  599. package/src/sdk/bus/telegram-cli.ts +0 -212
  600. package/src/sdk/elevation/allowlist.ts +0 -54
  601. package/src/sdk/elevation/audit.ts +0 -208
  602. package/src/sdk/elevation/capability.ts +0 -41
  603. package/src/sdk/elevation/digest.ts +0 -129
  604. package/src/sdk/elevation/dispatch-receipt.ts +0 -184
  605. package/src/sdk/elevation/grant-ledger.ts +0 -1142
  606. package/src/sdk/elevation/owner.ts +0 -109
  607. package/src/session/auth-broker-config.ts +0 -109
  608. /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
  609. /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
  610. /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Public DTO contract for Q26 `turn.prompt_status` and the `clientRef`
2
+ * Public prompt-result DTO contract for canonical Q26 `turn.result` with
3
+ * `kind: "prompt"`, plus the legacy `turn.prompt_status` alias and the `clientRef`
3
4
  * correlation field on `turn.prompt`.
4
5
  *
5
6
  * Semantics:
@@ -13,14 +14,14 @@
13
14
  * - The clientRef index is scoped to one live session runtime: identical refs
14
15
  * may coexist in different sessions, lookups never cross sessions, a ref
15
16
  * conflicts only while its record is retained (`client_ref_conflict`), and
16
- * after terminal TTL/capacity eviction a ref may be admitted again with the
17
+ * after terminal capacity eviction a ref may be admitted again with the
17
18
  * prior outcome unknown — callers MUST NOT reuse a clientRef as a retry
18
19
  * mechanism and MUST treat `unknown` as uncertainty, not proof of
19
20
  * non-execution.
20
21
  * - Prompt records survive process restart: an active prompt is finalized from its
21
22
  * durable pending outcome, or as `prompt_failed` when it has none. Only skill
22
23
  * records settle as `process_restart`, and a lookup reports `unknown` only after
23
- * retained-record TTL/capacity eviction.
24
+ * retained-record capacity eviction.
24
25
  * - Q26 tracks prompts accepted through the SDK control surface (which always
25
26
  * carries a requesting connection); submissions without a delivery owner are
26
27
  * outside the reconciliation contract and hold no reservation.
@@ -47,6 +48,7 @@ export interface TurnPromptInput {
47
48
  * prompt that is active at process restart is finalized from its durable pending
48
49
  * outcome (or `prompt_failed` when it has none), so it never reports as unknown.
49
50
  */
51
+ import type { ReceiptState } from "./receipt-state";
50
52
  export type PromptReconciliationStatus = "accepted" | "in_flight" | "terminal_ok" | "failed";
51
53
  export type SdkPromptStopReason = "end_turn" | "max_tokens" | "max_turn_requests" | "refusal" | "cancelled";
52
54
  export type SdkPromptFailureCode = "prompt_failed" | "prompt_deadline_exceeded";
@@ -76,14 +78,17 @@ interface TurnPromptReconciliationIdentity {
76
78
  }
77
79
  export interface TurnPromptReconciliationAccepted extends TurnPromptReconciliationIdentity {
78
80
  status: "accepted";
81
+ receiptState: Extract<ReceiptState, "absent">;
79
82
  }
80
83
  export interface TurnPromptReconciliationInFlight extends TurnPromptReconciliationIdentity {
81
84
  status: "in_flight";
85
+ receiptState: Extract<ReceiptState, "absent">;
82
86
  /** Epoch milliseconds of the agent_start transition. */
83
87
  startedAt: number;
84
88
  }
85
89
  export interface TurnPromptReconciliationTerminalOk extends TurnPromptReconciliationIdentity {
86
90
  status: "terminal_ok";
91
+ receiptState: Exclude<ReceiptState, "absent">;
87
92
  startedAt?: number;
88
93
  /** Epoch milliseconds of the terminal transition. */
89
94
  terminalAt: number;
@@ -96,6 +101,7 @@ export interface TurnPromptReconciliationTerminalOk extends TurnPromptReconcilia
96
101
  }
97
102
  export interface TurnPromptReconciliationFailed extends TurnPromptReconciliationIdentity {
98
103
  status: "failed";
104
+ receiptState: Exclude<ReceiptState, "absent">;
99
105
  startedAt?: number;
100
106
  terminalAt: number;
101
107
  /** Bounded, sanitized failure detail (code safe-token ≤64, message ≤512). */
@@ -107,6 +113,7 @@ export interface TurnPromptReconciliationFailed extends TurnPromptReconciliation
107
113
  }
108
114
  export interface TurnPromptReconciliationUnknown {
109
115
  status: "unknown";
116
+ receiptState: Extract<ReceiptState, "unknown">;
110
117
  }
111
118
  export type TurnPromptReconciliation = TurnPromptReconciliationAccepted | TurnPromptReconciliationInFlight | TurnPromptReconciliationTerminalOk | TurnPromptReconciliationFailed | TurnPromptReconciliationUnknown;
112
119
  /** Result of a successful `turn.prompt` preflight acknowledgement. */
@@ -4,6 +4,9 @@ export type AdapterDisposition = "native_alias" | "generic_safe" | "machine_only
4
4
  export type OperationKind = "control" | "global" | "query" | "reverse";
5
5
  export type Idempotency = "idempotent" | "ordered" | "fast_lane";
6
6
  export type QueryContinuityClass = "stable_prefix" | "retained_revision" | "scalar_snapshot" | "content_addressed";
7
+ /** Legacy kind-specific selectors for canonical Q26 `turn.result`. */
8
+ export declare const TURN_RESULT_PROMPT_ALIAS = "turn.prompt_status";
9
+ export declare const TURN_RESULT_SKILL_ALIAS = "skill.invoke_status";
7
10
  export interface Operation {
8
11
  id: string;
9
12
  sdkId: string;
@@ -13,6 +16,8 @@ export interface Operation {
13
16
  errorCodes: string[];
14
17
  revisionResource?: string;
15
18
  continuityClass?: QueryContinuityClass;
19
+ /** Non-canonical request IDs that resolve to this operation's contract. */
20
+ aliases?: readonly string[];
16
21
  adapterDispositions: Record<Adapter, AdapterDisposition>;
17
22
  testIds: string[];
18
23
  }
@@ -0,0 +1,17 @@
1
+ export type ReceiptState = "absent" | "present" | "missing" | "unknown";
2
+ export type ExecutionState = "accepted" | "in_flight" | "terminal_ok" | "failed" | "cancelled" | "unknown";
3
+ export interface ReceiptSource {
4
+ text?: string | null;
5
+ artifactPath?: string | null;
6
+ }
7
+ export interface TerminalReceiptInput {
8
+ execution: "accepted" | "in_flight" | "completed" | "failed" | "cancelled" | "unknown";
9
+ reportable: boolean;
10
+ }
11
+ export interface TerminalReceiptState {
12
+ execution: ExecutionState;
13
+ receipt: ReceiptState;
14
+ }
15
+ export declare function reportableReceipt({ text, artifactPath }: ReceiptSource): boolean;
16
+ export declare function receiptStateForTerminal(source: ReceiptSource): Extract<ReceiptState, "present" | "missing">;
17
+ export declare function reduceTerminalReceiptState(input: TerminalReceiptInput): TerminalReceiptState;
@@ -0,0 +1,2 @@
1
+ export { createKindAwareReconciliation, type KindAwareReconciliation, type ReconciliationKind, type SteerReconciliationResult, } from "./bus/kind-aware-reconciliation";
2
+ export { createReconciliationStore, type DurableExecutionReconciliationRecord, type DurableReconciliationRecord, type DurableSteerReconciliationRecord, type ReconciliationStore, resolveReconciliationSessionFile, } from "./bus/reconciliation-store";
@@ -0,0 +1 @@
1
+ export * from "./session-router";
@@ -0,0 +1,152 @@
1
+ import { type SessionIndex } from "../broker/session-index";
2
+ import { type ActivatedPreparedSession } from "../session-activation";
3
+ /**
4
+ * Exact identity of one attached SDK session endpoint. Providers persist it next to
5
+ * their conversation state and re-prove it before every resume, so it must be derived
6
+ * in exactly one place: a caller that recomputes the digest by hand silently stops
7
+ * matching the moment the bound fields change.
8
+ */
9
+ export declare function sessionAttachmentAuthorityId(input: {
10
+ sessionId: string;
11
+ generation: number;
12
+ pid: number;
13
+ endpointMtimeMs: number | undefined;
14
+ url: string;
15
+ token: string;
16
+ }): string;
17
+ /** The only capability a provider may retain for an attached SDK session. */
18
+ export interface SessionAttachment {
19
+ readonly sessionId: string;
20
+ readonly authorityId?: string;
21
+ /** Current Router-owned transport identity for this exact attachment's reverse leases. */
22
+ readonly connectionId?: string;
23
+ readonly generation: number;
24
+ isCurrent(): boolean;
25
+ send(frame: Record<string, unknown>): unknown;
26
+ /** Revoke this exact capability after provider admission or replay fails closed. */
27
+ retire?(): Promise<void>;
28
+ }
29
+ /**
30
+ * Provider-local notification capability. This is deliberately not an
31
+ * attachment lease: it carries no endpoint, connection, generation, or
32
+ * authority identity and its cancellation can only stop this subscription.
33
+ */
34
+ export interface NotificationSubscription {
35
+ readonly sessionId: string;
36
+ readonly subscriptionId: string;
37
+ readonly cursor: {
38
+ readonly generation: number;
39
+ readonly seq: number;
40
+ };
41
+ readonly isActive: () => boolean;
42
+ readonly send: (frame: Record<string, unknown>) => unknown;
43
+ readonly advanceCursor: (generation: number, seq: number) => void;
44
+ readonly cancel: (reason?: string) => void;
45
+ }
46
+ export type NotificationCleanupState = "pending" | "failed" | "completed";
47
+ export interface NotificationCleanupReceipt {
48
+ readonly subscriptionId: string;
49
+ readonly sessionId: string;
50
+ readonly state: NotificationCleanupState;
51
+ readonly reason?: string;
52
+ }
53
+ /** The transport surface Router keeps private behind its attachment capabilities. */
54
+ export interface SessionRouterClient {
55
+ onFrame(handler: (frame: Record<string, unknown>) => void): () => void;
56
+ onReconnect?(handler: () => void): () => void;
57
+ connect?(): Promise<void>;
58
+ request(frame: Record<string, unknown>, options?: {
59
+ timeoutMs?: number;
60
+ }): Promise<Record<string, unknown>>;
61
+ /** Current private transport connection identity, surfaced only through its exact attachment. */
62
+ readonly connectionId?: string;
63
+ close(): Promise<void>;
64
+ send(frame: Record<string, unknown>): void;
65
+ }
66
+ /** One frame after the caller's envelope/payload identity correlation. */
67
+ export interface SessionRouterFrame {
68
+ readonly body: Record<string, unknown>;
69
+ readonly name: string | undefined;
70
+ readonly sessionId: string | undefined;
71
+ readonly generation: number | undefined;
72
+ readonly commandId?: string;
73
+ readonly turnId?: string;
74
+ readonly publicationId?: string;
75
+ readonly seq?: number;
76
+ }
77
+ export type SessionRouterFrameCorrelator = (frame: Record<string, unknown>) => SessionRouterFrame | undefined;
78
+ export interface SessionRouterDeps {
79
+ createClient?: (authority: {
80
+ readonly sessionId: string;
81
+ readonly generation: number;
82
+ readonly pid: number;
83
+ readonly endpointMtimeMs: number;
84
+ }) => Promise<SessionRouterClient>;
85
+ createIndex?: (agentDir: string) => SessionIndex;
86
+ createBrokerClient?: () => Promise<SessionRouterClient>;
87
+ /** Receives only an opaque capability and correlated provider-neutral frames. */
88
+ onFrame?: (attachment: SessionAttachment, frame: SessionRouterFrame) => Promise<void> | void;
89
+ onAttachment?: (attachment: SessionAttachment) => Promise<void> | void;
90
+ /** Called only after the opaque capability becomes externally current. */
91
+ onAttachmentReady?: (attachment: SessionAttachment) => Promise<void> | void;
92
+ /** Called when the Broker index no longer reports an attached session as live. */
93
+ onSessionRemoved?: (attachment: SessionAttachment, reason?: "removed" | "replaced" | "replaced_same_generation") => Promise<void> | void;
94
+ /** Narrow provider surface for notification consumers such as Telegram. */
95
+ onNotificationSubscription?: (subscription: NotificationSubscription) => Promise<void> | void;
96
+ onNotificationSubscriptionReady?: (subscription: NotificationSubscription) => Promise<void> | void;
97
+ onNotificationFrame?: (subscription: NotificationSubscription, frame: SessionRouterFrame) => Promise<void> | void;
98
+ onNotificationSubscriptionRemoved?: (subscription: NotificationSubscription, reason?: "removed" | "replaced" | "replaced_same_generation" | "cancelled") => Promise<void> | void;
99
+ onReconciled?: () => void;
100
+ setInterval?: typeof setInterval;
101
+ clearInterval?: typeof clearInterval;
102
+ setTimeout?: typeof setTimeout;
103
+ clearTimeout?: typeof clearTimeout;
104
+ }
105
+ export type SessionRouterProviderDeps = Pick<SessionRouterDeps, "createClient" | "createIndex" | "createBrokerClient" | "setInterval" | "clearInterval" | "setTimeout" | "clearTimeout" | "onReconciled">;
106
+ export interface SessionRouterOptions {
107
+ agentDir: string;
108
+ deps?: SessionRouterDeps;
109
+ /** Runtime-specific identity validation; Router supplies a conservative fallback. */
110
+ correlateFrame?: SessionRouterFrameCorrelator;
111
+ }
112
+ export type SessionRouterErrorPhase = "pre_send" | "ambiguous";
113
+ export declare class SessionRouterError extends Error {
114
+ readonly phase: SessionRouterErrorPhase;
115
+ constructor(phase: SessionRouterErrorPhase, message?: string);
116
+ }
117
+ /**
118
+ * Broker-index-backed SDK attachment authority. Providers receive only opaque
119
+ * attachment capabilities; endpoint records and SDK clients remain here.
120
+ */
121
+ export declare class SessionRouter {
122
+ #private;
123
+ constructor(options: SessionRouterOptions);
124
+ /** Provider-local cleanup outcomes; core authority never depends on these. */
125
+ notificationCleanupReceipts(): NotificationCleanupReceipt[];
126
+ isReady(): boolean;
127
+ /** Starts reconciliation and the index watcher. */
128
+ start(): Promise<void>;
129
+ /** Exposed for deterministic callers and reconciliation tests. */
130
+ reconcile(): Promise<void>;
131
+ /** Ingests a credential-bearing Broker lifecycle result directly into Router custody. */
132
+ adoptLifecycleResult(value: unknown, fallback: {
133
+ sessionId: string;
134
+ cwd: string;
135
+ }): Promise<SessionAttachment>;
136
+ stop(): Promise<void>;
137
+ /** Returns an opaque lease only while the exact attachment generation is live. */
138
+ attachment(sessionId: string, expectedGeneration?: number): SessionAttachment | null;
139
+ /** Sends an SDK command through the current attachment without exposing its client. */
140
+ request(sessionId: string, frame: Record<string, unknown>, expectedGeneration?: number, expectedAttachment?: SessionAttachment, options?: {
141
+ timeoutMs?: number;
142
+ }): Promise<Record<string, unknown>>;
143
+ /** Resolves the exact provider-neutral binding authority for operator adoption. */
144
+ bindingAuthority(sessionId: string): Promise<{
145
+ sessionId: string;
146
+ endpointGeneration: number;
147
+ } | undefined>;
148
+ /** Activates a prepared session through one Router-owned, one-shot SDK client. */
149
+ activatePreparedSession(sessionId: string): Promise<ActivatedPreparedSession>;
150
+ /** Lists saved sessions through Router-owned Broker discovery without exposing credentials or mutation authority. */
151
+ listBrokerSessions(input: Record<string, unknown>, idempotencyKey: string): Promise<Record<string, unknown>>;
152
+ }
@@ -0,0 +1,22 @@
1
+ export type SessionListPageRecord = Record<string, unknown>;
2
+ export type SessionListTraversalErrorKind = "malformed_page" | "repeated_cursor" | "page_budget_exceeded";
3
+ export declare class SessionListTraversalError extends Error {
4
+ #private;
5
+ constructor(kind: SessionListTraversalErrorKind);
6
+ get kind(): SessionListTraversalErrorKind;
7
+ }
8
+ export interface SessionListTraversalInputPage {
9
+ readonly sessions: readonly unknown[];
10
+ readonly continuationCursor?: unknown;
11
+ }
12
+ export interface SessionListTraversalPage<TResponse, TPage extends SessionListTraversalInputPage> {
13
+ readonly response: TResponse;
14
+ readonly page: TPage;
15
+ readonly sessions: readonly unknown[];
16
+ readonly continuationCursor?: string;
17
+ }
18
+ export type SessionListPage = SessionListPageRecord & SessionListTraversalInputPage;
19
+ /** Returns a strict session.list page from either a Broker envelope or a direct result record. */
20
+ export declare function sessionListPageFromResponse(value: unknown): SessionListPage | undefined;
21
+ /** Drains bounded Broker session.list pages while rejecting malformed or cyclic continuations. */
22
+ export declare function traverseSessionList<TInput extends Record<string, unknown>, TResponse, TPage extends SessionListTraversalInputPage>(input: TInput, request: (input: TInput) => Promise<TResponse>, pageFromResponse: (response: TResponse) => TPage | undefined): Promise<readonly SessionListTraversalPage<TResponse, TPage>[]>;
@@ -1,4 +1,4 @@
1
- import type { SdkClientOptions } from "./client";
1
+ import { type SdkClientOptions } from "./client";
2
2
  type SessionReconnectOptions = Required<Pick<SdkClientOptions, "reconnectAttempts" | "reconnectBackoffMs" | "reconnectMaxBackoffMs">>;
3
3
  /**
4
4
  * Reconnect budget for every long-lived SDK session client: ACP sessions and the
@@ -17,4 +17,46 @@ type SessionReconnectOptions = Required<Pick<SdkClientOptions, "reconnectAttempt
17
17
  * sleeps stay short and recovery is prompt once the host answers again.
18
18
  */
19
19
  export declare const ACP_SESSION_RECONNECT: SessionReconnectOptions;
20
+ /**
21
+ * Post-connect response budget for session-scoped SDK commands dispatched
22
+ * through the Router. It bounds the wait for a reply on an already-connected
23
+ * transport; connecting, reconnecting, and lifecycle work keep their own
24
+ * separate deadlines.
25
+ *
26
+ * The transport default (10s) is sized for one-shot broker requests and is too
27
+ * short for the first query a cold session host answers: Q10
28
+ * (`models.list/current`) collects credentials for every configured profile
29
+ * provider, which on a multi-OAuth setup takes longer than 10s once and
30
+ * milliseconds afterwards. Abandoning that request loses far more than the
31
+ * query — the reply lands after the deadline, so the outcome can only be
32
+ * reported as uncertain after the frame was sent, and ACP discards the session
33
+ * it just created (#4258).
34
+ *
35
+ * The size is the SDK's existing model of what one healthy round trip may cost
36
+ * while the producer is still working: an owner heartbeat window plus a second
37
+ * window for recovery ({@link ACP_SESSION_RECONNECT}, and `SDK_RECONNECT_BUDGET_MS`
38
+ * in `./prompt-watchdog`, both `2 * HEARTBEAT_TTL_MS`). A response budget shorter
39
+ * than the recovery budget would abandon replies the rest of the stack is still
40
+ * waiting to deliver.
41
+ *
42
+ * Session commands are acknowledgement-shaped (`turn.prompt` returns an accepted
43
+ * receipt, not the turn's result), so no legitimate session request needs longer.
44
+ * The tradeoff is that a connected but wedged host is reported after this budget
45
+ * rather than after 10s, including `turn.abort`: ACP awaits that acknowledgement
46
+ * before arming its own settlement grace (`CANCEL_SETTLEMENT_GRACE_MS`), which
47
+ * bounds only the terminal that follows an acknowledged abort.
48
+ */
49
+ export declare const SESSION_REQUEST_TIMEOUT_MS: number;
50
+ /**
51
+ * Reply budget for `turn.abort`, which cannot use {@link SESSION_REQUEST_TIMEOUT_MS}.
52
+ *
53
+ * A cancel is the user asking for the turn to stop now, and the caller waits for
54
+ * its acknowledgement before anything else can bound the turn: ACP arms its own
55
+ * settlement grace only after `aborted: true` comes back, so an abort that waits
56
+ * the full session budget delays cancellation by that budget and, if it finally
57
+ * rejects, leaves the prompt for the inactivity watchdog instead of the cancel
58
+ * path. Aborting therefore keeps the ordinary one-shot request deadline: the
59
+ * abort is not the query whose cold first answer needed a wider budget (#4258).
60
+ */
61
+ export declare const SESSION_ABORT_TIMEOUT_MS = 10000;
20
62
  export {};
@@ -1,6 +1,7 @@
1
1
  import { type AgentMessage, type AgentTelemetryConfig, ThinkingLevel } from "@gajae-code/agent-core";
2
2
  import { type AuthCredentialSelector, type Model, type ProviderSessionState } from "@gajae-code/ai/core";
3
3
  import { createAppendOnlyContextManager, providerSupportsAppendOnlyAuto, resolveAppendOnlyMode } from "../append-only-mode";
4
+ import { AsyncJobManager } from "../async";
4
5
  import { type Rule } from "../capability/rule";
5
6
  import { ModelRegistry } from "../config/model-registry";
6
7
  import { type ScopedModelSelection } from "../config/model-resolver";
@@ -24,6 +25,7 @@ import { MCPManager } from "../runtime-mcp";
24
25
  import { AgentSession, type ForkContextSeed } from "../session/agent-session";
25
26
  import { AuthStorage } from "../session/auth-storage";
26
27
  import { SessionManager } from "../session/session-manager";
28
+ import { type StartupAuthConfigSnapshot } from "../session/startup-auth-config";
27
29
  import { type BuildSystemPromptResult } from "../system-prompt";
28
30
  import { BUILTIN_TOOLS, createTools, HIDDEN_TOOLS, type Tool, type ToolSession } from "../tools";
29
31
  import { EventBus } from "../utils/event-bus";
@@ -40,6 +42,16 @@ import type { WorkspaceTree } from "../workspace-tree";
40
42
  * result for any such trailing unpaired tool call so a resumed session always
41
43
  * starts from a valid, paired history. No-op for well-formed transcripts.
42
44
  */
45
+ /** Whether the cached SDK-only reconciliation store still matches the current
46
+ * session identity. session_switch/session_branch can move to a DIFFERENT
47
+ * transcript that retains the same copied session id, so the cache is keyed
48
+ * by BOTH the session id and the session-file path (including a null-to-file
49
+ * transition); a mismatch means the store must be recreated or the successor
50
+ * reads/writes the predecessor's reconciliation file (review thread P2). */
51
+ export declare function sdkOnlyStoreMatches(cached: {
52
+ sessionId: string;
53
+ sessionFile: string | undefined;
54
+ } | undefined, sessionId: string, sessionFile: string | undefined): boolean;
43
55
  export declare function reconcileTrailingToolCalls(messages: AgentMessage[]): AgentMessage[];
44
56
  export interface CreateAgentSessionOptions {
45
57
  /** Working directory for project-local discovery. Default: getProjectDir() */
@@ -81,6 +93,14 @@ export interface CreateAgentSessionOptions {
81
93
  selector: AuthCredentialSelector;
82
94
  raw: string;
83
95
  };
96
+ /** Soft runtime credential preference; quota/rate-limit failures may rotate away from it. */
97
+ preferredCredentialSelector?: {
98
+ provider?: string;
99
+ selector: AuthCredentialSelector;
100
+ raw: string;
101
+ };
102
+ /** Durable global pin intent loaded from startup-auth config; session bootstrap resolves it without mutating shared storage. */
103
+ startupAuthConfig?: StartupAuthConfigSnapshot;
84
104
  /** Custom tools to register (in addition to built-in tools). Accepts both CustomTool and ToolDefinition. */
85
105
  customTools?: (CustomTool | ToolDefinition)[];
86
106
  /** Explicit parent/phase used to load active GJC sub-skill tools for this session. */
@@ -94,6 +114,8 @@ export interface CreateAgentSessionOptions {
94
114
  extensions?: ExtensionFactory[];
95
115
  /** Additional extension paths to load (merged with discovery). */
96
116
  additionalExtensionPaths?: string[];
117
+ /** Explicit hook module paths to load in addition to native discovery. */
118
+ hookPaths?: string[];
97
119
  /** Disable extension discovery (explicit paths still load). */
98
120
  disableExtensionDiscovery?: boolean;
99
121
  /**
@@ -126,6 +148,14 @@ export interface CreateAgentSessionOptions {
126
148
  /** Load MCP tools for a top-level session only from this caller-owned absolute config file path.
127
149
  * Mutually exclusive with mcpManager. */
128
150
  mcpConfigPath?: string;
151
+ /**
152
+ * Whether conventional MCP autoload is enabled for a top-level standalone
153
+ * session (default: true). When false, native user `~/.gjc/agent/mcp.json`
154
+ * and project `.gjc/mcp.json` registrations are not discovered or connected
155
+ * at startup. Plugin-bundle MCPs and `mcpConfigPath` exact-file sessions
156
+ * are unaffected. CLI: `--no-mcp`.
157
+ */
158
+ enableMcpAutoload?: boolean;
129
159
  /**
130
160
  * Defer connecting an exact MCP config until the interactive UI is ready.
131
161
  * @internal CLI-only startup optimization; SDK callers retain synchronous loading by default.
@@ -177,6 +207,8 @@ export interface CreateAgentSessionOptions {
177
207
  agentRegistry?: AgentRegistry;
178
208
  /** Parent task ID prefix for nested artifact naming (e.g., "6-Extensions") */
179
209
  parentTaskPrefix?: string;
210
+ /** Parent manager borrowed by a child session; never disposed by the child. */
211
+ inheritedAsyncJobManager?: AsyncJobManager;
180
212
  /**
181
213
  * W6b: the parent's scope-held MCP facade, handed to a canonical sub-session so
182
214
  * it can inherit always-on MCP tools without owning the manager. Replaces the
@@ -269,7 +301,8 @@ export declare function loadSshTool(session: ToolSession): Promise<import("../to
269
301
  * back into the broker through the {@link AuthStorageOptions.refreshOAuthCredential}
270
302
  * override to re-mint access tokens when needed.
271
303
  */
272
- export declare function discoverAuthStorage(agentDir?: string): Promise<AuthStorage>;
304
+ export declare function discoverAuthStorage(agentDir?: string, startupAuth?: StartupAuthConfigSnapshot): Promise<AuthStorage>;
305
+ /** Ranking is resolved as part of the typed startup-auth snapshot. */
273
306
  /**
274
307
  * Discover extensions from cwd.
275
308
  */
@@ -6,10 +6,7 @@ type BrokerSessionRow = {
6
6
  live: boolean;
7
7
  ambiguous: boolean;
8
8
  };
9
- /**
10
- * Exhausts broker `session.list` cursor pagination (default page limit 100) to
11
- * one full snapshot; exported for tests.
12
- */
9
+ /** Exhausts strict broker `session.list` pages into one full session snapshot. */
13
10
  export declare function listBrokerSessions(broker: SdkClient): Promise<BrokerSessionRow[]>;
14
11
  /** Selects the session to serve through broker `session.list` truth (C10); exported for tests. */
15
12
  export declare function selectBrokerSession(sessions: BrokerSessionRow[], explicitSessionId: string | undefined): string;
@@ -0,0 +1,86 @@
1
+ import { type AuthStorage, type CachedCredentialHealth, type CachedUsageReport, type CredentialInventoryRecord } from "@gajae-code/ai/core";
2
+ import type { Settings } from "../config/settings";
3
+ /** A redacted usage observation attached to an account row. */
4
+ export interface AccountUsageCache extends CachedUsageReport {
5
+ }
6
+ /** Safe account health state used by presentation surfaces. */
7
+ export interface AccountHealthCache extends CachedCredentialHealth {
8
+ }
9
+ export type AccountInventorySource = "stored" | "env" | "config" | "runtime";
10
+ /** Fixed presentation classification for a persisted disabled credential. */
11
+ export type AccountInventoryDisabledCause = "auth_failure" | "user_removed" | "duplicate" | "replaced" | "unknown";
12
+ export interface AccountInventoryCapabilities {
13
+ canCheck: boolean;
14
+ canPin: boolean;
15
+ canRemove: boolean;
16
+ hasCachedUsage: boolean;
17
+ }
18
+ export interface AccountInventoryRouting {
19
+ /** True when this row is the session's last recorded stored credential. */
20
+ active: boolean;
21
+ /** True when this source is the effective source for the provider/session. */
22
+ selected: boolean;
23
+ marker: "active" | "selected" | "available";
24
+ }
25
+ /**
26
+ * Payload-free account row for renderers. This type deliberately has no
27
+ * AuthCredential, API-key bytes, access token, refresh token, or raw usage.
28
+ */
29
+ export interface AccountInventoryRow {
30
+ /** Stable, non-secret presentation id. */
31
+ id: string;
32
+ /** Numeric storage id when this is a persisted row. */
33
+ credentialId?: number;
34
+ provider: string;
35
+ credentialKind: "oauth" | "api_key";
36
+ source: AccountInventorySource;
37
+ sourceLabel: string;
38
+ identityLabel: string | null;
39
+ /** OAuth identity is intentionally limited to safe labels from inventory. */
40
+ oauthIdentity?: {
41
+ label: string;
42
+ };
43
+ disabled: boolean;
44
+ disabledCause: AccountInventoryDisabledCause | null;
45
+ health: AccountHealthCache;
46
+ usage?: AccountUsageCache;
47
+ capabilities: AccountInventoryCapabilities;
48
+ routing: AccountInventoryRouting;
49
+ }
50
+ export interface AccountInventorySnapshot {
51
+ generatedAt: number;
52
+ generation: number;
53
+ rows: AccountInventoryRow[];
54
+ }
55
+ export interface AccountInventoryInput {
56
+ authStorage: AuthStorage;
57
+ modelRegistry?: {
58
+ getAvailable?: () => Array<{
59
+ provider: string;
60
+ }>;
61
+ getProviderBaseUrl?: (provider: string) => string | undefined;
62
+ };
63
+ sessionId?: string;
64
+ provider?: string;
65
+ nowMs?: number;
66
+ }
67
+ export interface AccountInventoryCheckResult {
68
+ rowId: string;
69
+ provider: string;
70
+ credentialId?: number;
71
+ ok: boolean | null;
72
+ reason?: string;
73
+ }
74
+ /** Build a redacted, cache-only account snapshot. This function never probes. */
75
+ export declare function buildAccountInventorySnapshot(input: AccountInventoryInput): AccountInventorySnapshot;
76
+ /** Short alias used by command/report callers. */
77
+ export declare const buildAccountInventory: typeof buildAccountInventorySnapshot;
78
+ /**
79
+ * Run the explicit sequential checker and return a fresh redacted snapshot.
80
+ * AuthStorage.checkCredentials performs stored-row probes sequentially; the
81
+ * synthetic API-key probes below are also intentionally sequential.
82
+ */
83
+ export declare function checkAccountInventory(input: AccountInventoryInput): Promise<AccountInventorySnapshot>;
84
+ export declare const checkAccountInventorySnapshot: typeof checkAccountInventory;
85
+ /** Clear a global persistent pin only after its selected credential was removed. */
86
+ export declare function clearPersistentPinForRemovedRows(settings: Pick<Settings, "commitAtomicBatchWithCurrent">, provider: string, inventory: readonly CredentialInventoryRecord[], removedIds: readonly number[]): Promise<boolean>;