@gajae-code/coding-agent 0.11.1 → 0.11.2

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 (404) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/types/cli/config-cli.d.ts +11 -1
  3. package/dist/types/cli/notify-cli.d.ts +1 -0
  4. package/dist/types/cli/session-picker.d.ts +2 -1
  5. package/dist/types/cli/setup-cli.d.ts +1 -1
  6. package/dist/types/commands/mcp-serve.d.ts +33 -0
  7. package/dist/types/commands/mcp.d.ts +1 -1
  8. package/dist/types/commands/notify.d.ts +0 -2
  9. package/dist/types/commands/sdk.d.ts +1 -1
  10. package/dist/types/config/atomic-yaml-patch.d.ts +18 -0
  11. package/dist/types/config/file-lock.d.ts +14 -4
  12. package/dist/types/config/keybindings.d.ts +42 -1
  13. package/dist/types/config/model-auth.d.ts +3 -0
  14. package/dist/types/config/model-bindings-applier.d.ts +13 -0
  15. package/dist/types/config/model-discovery-manager.d.ts +49 -0
  16. package/dist/types/config/model-equivalence.d.ts +20 -0
  17. package/dist/types/config/model-registry.d.ts +16 -15
  18. package/dist/types/config/model-resolver.d.ts +28 -18
  19. package/dist/types/config/models-config-schema.d.ts +11 -0
  20. package/dist/types/config/settings-schema.d.ts +56 -1
  21. package/dist/types/config/settings.d.ts +14 -11
  22. package/dist/types/coordinator-mcp/policy.d.ts +5 -0
  23. package/dist/types/coordinator-mcp/question-gate-codec.d.ts +129 -0
  24. package/dist/types/coordinator-mcp/question-state.d.ts +356 -0
  25. package/dist/types/coordinator-mcp/server.d.ts +4 -0
  26. package/dist/types/discovery/helpers.d.ts +0 -6
  27. package/dist/types/edit/index.d.ts +3 -0
  28. package/dist/types/eval/py/env.d.ts +9 -0
  29. package/dist/types/extensibility/extensions/loader.d.ts +2 -1
  30. package/dist/types/extensibility/extensions/runner.d.ts +2 -2
  31. package/dist/types/extensibility/extensions/types.d.ts +34 -3
  32. package/dist/types/extensibility/hooks/runner.d.ts +1 -1
  33. package/dist/types/extensibility/shared-events.d.ts +2 -0
  34. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +10 -1
  35. package/dist/types/gjc-runtime/deep-interview-state.d.ts +44 -0
  36. package/dist/types/gjc-runtime/goal-mode-request.d.ts +11 -1
  37. package/dist/types/gjc-runtime/launch-worktree.d.ts +4 -2
  38. package/dist/types/gjc-runtime/linux-proc.d.ts +29 -0
  39. package/dist/types/gjc-runtime/session-resolution.d.ts +2 -2
  40. package/dist/types/gjc-runtime/state-migrations.d.ts +1 -1
  41. package/dist/types/gjc-runtime/state-writer.d.ts +2 -1
  42. package/dist/types/gjc-runtime/team-launch.d.ts +59 -0
  43. package/dist/types/gjc-runtime/team-notify.d.ts +45 -0
  44. package/dist/types/gjc-runtime/team-runtime.d.ts +29 -121
  45. package/dist/types/gjc-runtime/team-store.d.ts +160 -0
  46. package/dist/types/gjc-runtime/team-workers.d.ts +78 -0
  47. package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +8 -0
  48. package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +13 -0
  49. package/dist/types/gjc-runtime/ultragoal-evidence.d.ts +38 -0
  50. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +7 -0
  51. package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +23 -0
  52. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +55 -33
  53. package/dist/types/gjc-runtime/workflow-cli-common.d.ts +8 -0
  54. package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -0
  55. package/dist/types/goals/continuation-timeout-guard.d.ts +22 -0
  56. package/dist/types/goals/runtime.d.ts +1 -0
  57. package/dist/types/goals/state.d.ts +8 -0
  58. package/dist/types/harness-control-plane/lifecycle-reconciliation.d.ts +17 -0
  59. package/dist/types/harness-control-plane/phase-rollup.d.ts +4 -7
  60. package/dist/types/harness-control-plane/receipt-ingest.d.ts +5 -0
  61. package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
  62. package/dist/types/hindsight/state.d.ts +11 -4
  63. package/dist/types/lsp/lspmux.d.ts +5 -3
  64. package/dist/types/lsp/path-trust.d.ts +1 -0
  65. package/dist/types/main.d.ts +3 -2
  66. package/dist/types/memories/storage.d.ts +1 -0
  67. package/dist/types/modes/action-registry.d.ts +29 -0
  68. package/dist/types/modes/components/chrome.d.ts +14 -0
  69. package/dist/types/modes/components/command-palette.d.ts +27 -0
  70. package/dist/types/modes/components/custom-provider-wizard.d.ts +1 -0
  71. package/dist/types/modes/components/index.d.ts +2 -1
  72. package/dist/types/modes/components/pet-selector.d.ts +1 -1
  73. package/dist/types/modes/components/plan-preview-overlay.d.ts +43 -0
  74. package/dist/types/modes/components/queue-mode-selector.d.ts +1 -1
  75. package/dist/types/modes/components/queue-pane.d.ts +12 -0
  76. package/dist/types/modes/components/read-tool-group.d.ts +6 -0
  77. package/dist/types/modes/components/session-observer-overlay.d.ts +3 -4
  78. package/dist/types/modes/components/sessions-dashboard.d.ts +32 -0
  79. package/dist/types/modes/components/settings-selector.d.ts +1 -1
  80. package/dist/types/modes/components/show-images-selector.d.ts +1 -1
  81. package/dist/types/modes/components/status-line/types.d.ts +1 -1
  82. package/dist/types/modes/components/status-line.d.ts +1 -94
  83. package/dist/types/modes/components/tasks-pane.d.ts +15 -0
  84. package/dist/types/modes/components/theme-selector.d.ts +1 -1
  85. package/dist/types/modes/components/tool-execution.d.ts +15 -0
  86. package/dist/types/modes/components/tool-status-header.d.ts +111 -0
  87. package/dist/types/modes/components/transcript-viewer-overlay.d.ts +42 -0
  88. package/dist/types/modes/controllers/goal-mode-controller.d.ts +62 -0
  89. package/dist/types/modes/controllers/input-controller.d.ts +8 -1
  90. package/dist/types/modes/controllers/mode-gate.d.ts +8 -0
  91. package/dist/types/modes/controllers/plan-mode-controller.d.ts +65 -0
  92. package/dist/types/modes/controllers/selector-controller.d.ts +15 -3
  93. package/dist/types/modes/controllers/stt-controller.d.ts +26 -0
  94. package/dist/types/modes/interactive-mode.d.ts +19 -17
  95. package/dist/types/modes/jobs-observer.d.ts +2 -0
  96. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -11
  97. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +20 -2
  98. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +31 -0
  99. package/dist/types/modes/tasks-aggregator.d.ts +39 -0
  100. package/dist/types/modes/transcript-item-registry.d.ts +60 -0
  101. package/dist/types/modes/types.d.ts +20 -13
  102. package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
  103. package/dist/types/runtime-mcp/manager.d.ts +1 -1
  104. package/dist/types/sdk/broker/broker.d.ts +78 -12
  105. package/dist/types/sdk/broker/lifecycle-codec.d.ts +4 -0
  106. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +15 -1
  107. package/dist/types/sdk/broker/lifecycle.d.ts +6 -2
  108. package/dist/types/sdk/broker/process-incarnation.d.ts +2 -0
  109. package/dist/types/sdk/broker/session-index.d.ts +0 -1
  110. package/dist/types/sdk/broker/state-version.d.ts +2 -0
  111. package/dist/types/sdk/bus/chat-effect-journal.d.ts +1 -0
  112. package/dist/types/sdk/bus/config-commands.d.ts +1 -1
  113. package/dist/types/sdk/bus/config.d.ts +11 -0
  114. package/dist/types/sdk/bus/daemon-paths.d.ts +1 -0
  115. package/dist/types/sdk/bus/html-format.d.ts +3 -2
  116. package/dist/types/sdk/bus/index.d.ts +27 -0
  117. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
  118. package/dist/types/sdk/bus/notification-service.d.ts +20 -0
  119. package/dist/types/sdk/bus/rate-limit-pool.d.ts +13 -2
  120. package/dist/types/sdk/bus/recent-activity.d.ts +21 -12
  121. package/dist/types/sdk/bus/rich-document.d.ts +7 -0
  122. package/dist/types/sdk/bus/rich-render.d.ts +18 -41
  123. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -4
  124. package/dist/types/sdk/bus/telegram-daemon.d.ts +46 -3
  125. package/dist/types/sdk/bus/threaded-inbound.d.ts +1 -1
  126. package/dist/types/sdk/bus/threaded-render.d.ts +13 -0
  127. package/dist/types/sdk/bus/topic-registry.d.ts +24 -2
  128. package/dist/types/sdk/host/control/operations.d.ts +1 -1
  129. package/dist/types/sdk/host/host.d.ts +2 -0
  130. package/dist/types/sdk/index.d.ts +1 -0
  131. package/dist/types/sdk/session-directory.d.ts +56 -0
  132. package/dist/types/session/agent-session.d.ts +82 -47
  133. package/dist/types/session/agent-storage.d.ts +7 -0
  134. package/dist/types/session/fallback-chain-controller.d.ts +10 -2
  135. package/dist/types/session/internal/managed-session-scope.d.ts +102 -0
  136. package/dist/types/session/internal/managed-session-storage.d.ts +38 -0
  137. package/dist/types/session/messages.d.ts +16 -0
  138. package/dist/types/session/session-manager-internal.d.ts +14 -0
  139. package/dist/types/session/session-manager.d.ts +82 -12
  140. package/dist/types/session/session-storage.d.ts +43 -3
  141. package/dist/types/session/volatile-context-pruning.d.ts +15 -0
  142. package/dist/types/skill-state/{deep-interview-mutation-guard.d.ts → workflow-mutation-guard.d.ts} +24 -8
  143. package/dist/types/skill-state/workflow-state-contract.d.ts +1 -3
  144. package/dist/types/slash-commands/builtin-registry.d.ts +4 -1
  145. package/dist/types/system-prompt.d.ts +2 -11
  146. package/dist/types/task/executor.d.ts +3 -1
  147. package/dist/types/thinking.d.ts +7 -0
  148. package/dist/types/tool-discovery/tool-index.d.ts +1 -50
  149. package/dist/types/tools/ask.d.ts +64 -2
  150. package/dist/types/tools/bash.d.ts +3 -0
  151. package/dist/types/tools/browser/dead-tab-recovery.d.ts +24 -0
  152. package/dist/types/tools/browser/tab-supervisor.d.ts +21 -0
  153. package/dist/types/tools/cron.d.ts +2 -0
  154. package/dist/types/tools/fetch.d.ts +1 -0
  155. package/dist/types/tools/index.d.ts +30 -15
  156. package/dist/types/tools/output-meta.d.ts +1 -0
  157. package/dist/types/tools/read.d.ts +3 -0
  158. package/dist/types/tools/search-tool-bm25.d.ts +3 -4
  159. package/dist/types/utils/event-bus.d.ts +1 -1
  160. package/dist/types/web/search/index.d.ts +3 -1
  161. package/package.json +21 -9
  162. package/scripts/build-sdk-package-smoke.ts +34 -1
  163. package/scripts/generate-hotkeys-docs.ts +74 -0
  164. package/scripts/generate-sdk-operation-inventory.ts +64 -20
  165. package/scripts/verify-gjc-sdk-canonicalization.ts +182 -2
  166. package/src/async/job-manager.ts +49 -6
  167. package/src/cli/config-cli.ts +75 -2
  168. package/src/cli/notify-cli.ts +92 -26
  169. package/src/cli/session-picker.ts +20 -3
  170. package/src/cli/setup-cli.ts +1 -1
  171. package/src/cli.ts +1 -1
  172. package/src/commands/config.ts +1 -1
  173. package/src/commands/harness.ts +34 -106
  174. package/src/commands/launch.ts +6 -4
  175. package/src/commands/mcp-serve.ts +85 -8
  176. package/src/commands/mcp.ts +2 -2
  177. package/src/commands/notify.ts +8 -4
  178. package/src/commands/sdk.ts +61 -40
  179. package/src/commands/ultragoal.ts +4 -1
  180. package/src/config/atomic-yaml-patch.ts +80 -13
  181. package/src/config/file-lock.ts +105 -43
  182. package/src/config/keybindings.ts +64 -20
  183. package/src/config/model-auth.ts +9 -0
  184. package/src/config/model-bindings-applier.ts +139 -0
  185. package/src/config/model-discovery-manager.ts +224 -0
  186. package/src/config/model-equivalence.ts +66 -0
  187. package/src/config/model-registry.ts +169 -302
  188. package/src/config/model-resolver.ts +361 -369
  189. package/src/config/models-config-schema.ts +5 -4
  190. package/src/config/settings-schema.ts +159 -2
  191. package/src/config/settings.ts +458 -482
  192. package/src/coordinator-mcp/policy.ts +76 -11
  193. package/src/coordinator-mcp/question-gate-codec.ts +274 -0
  194. package/src/coordinator-mcp/question-state.ts +778 -0
  195. package/src/coordinator-mcp/server.ts +1702 -238
  196. package/src/debug/index.ts +1 -1
  197. package/src/defaults/gjc/skills/deep-interview/SKILL.md +13 -1
  198. package/src/defaults/gjc/skills/team/SKILL.md +16 -0
  199. package/src/discovery/helpers.ts +1 -50
  200. package/src/edit/index.ts +64 -0
  201. package/src/eval/py/env.ts +26 -0
  202. package/src/eval/py/kernel.ts +5 -3
  203. package/src/extensibility/extensions/loader.ts +9 -1
  204. package/src/extensibility/extensions/runner.ts +12 -3
  205. package/src/extensibility/extensions/types.ts +39 -1
  206. package/src/extensibility/gjc-plugins/installer.ts +16 -16
  207. package/src/extensibility/hooks/runner.ts +2 -2
  208. package/src/extensibility/runtime-skill-discovery.ts +33 -13
  209. package/src/extensibility/shared-events.ts +2 -0
  210. package/src/gjc-runtime/deep-interview-recorder.ts +63 -3
  211. package/src/gjc-runtime/deep-interview-runtime.ts +76 -27
  212. package/src/gjc-runtime/deep-interview-state.ts +317 -5
  213. package/src/gjc-runtime/goal-mode-request.ts +55 -8
  214. package/src/gjc-runtime/launch-tmux.ts +2 -5
  215. package/src/gjc-runtime/launch-worktree.ts +5 -5
  216. package/src/gjc-runtime/linux-proc.ts +71 -0
  217. package/src/gjc-runtime/ralplan-runtime.ts +74 -90
  218. package/src/gjc-runtime/session-resolution.ts +18 -3
  219. package/src/gjc-runtime/session-state-sidecar.ts +6 -107
  220. package/src/gjc-runtime/state-migrations.ts +1 -1
  221. package/src/gjc-runtime/state-runtime.ts +320 -249
  222. package/src/gjc-runtime/state-writer.ts +36 -40
  223. package/src/gjc-runtime/team-launch.ts +319 -0
  224. package/src/gjc-runtime/team-notify.ts +326 -0
  225. package/src/gjc-runtime/team-runtime.ts +1099 -1482
  226. package/src/gjc-runtime/team-store.ts +828 -0
  227. package/src/gjc-runtime/team-workers.ts +962 -0
  228. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +2 -11
  229. package/src/gjc-runtime/tmux-owner-isolation.ts +14 -9
  230. package/src/gjc-runtime/tmux-sessions.ts +4 -21
  231. package/src/gjc-runtime/ultragoal-change-set.ts +172 -0
  232. package/src/gjc-runtime/ultragoal-evidence.ts +874 -0
  233. package/src/gjc-runtime/ultragoal-guard.ts +29 -5
  234. package/src/gjc-runtime/ultragoal-pipeline.ts +306 -0
  235. package/src/gjc-runtime/ultragoal-runtime.ts +84 -1311
  236. package/src/gjc-runtime/workflow-cli-common.ts +30 -0
  237. package/src/gjc-runtime/workflow-manifest.generated.json +58 -0
  238. package/src/gjc-runtime/workflow-manifest.ts +18 -0
  239. package/src/goals/continuation-timeout-guard.ts +79 -0
  240. package/src/goals/runtime.ts +7 -5
  241. package/src/goals/state.ts +18 -0
  242. package/src/harness-control-plane/lifecycle-reconciliation.ts +64 -0
  243. package/src/harness-control-plane/phase-rollup.ts +4 -7
  244. package/src/harness-control-plane/receipt-ingest.ts +5 -0
  245. package/src/harness-control-plane/receipt-spool.ts +51 -7
  246. package/src/harness-control-plane/session-lease.ts +12 -130
  247. package/src/hindsight/backend.ts +26 -27
  248. package/src/hindsight/state.ts +101 -32
  249. package/src/hooks/skill-state.ts +17 -11
  250. package/src/internal-urls/docs-index.generated.ts +21 -18
  251. package/src/lsp/client.ts +1 -1
  252. package/src/lsp/config.ts +145 -26
  253. package/src/lsp/index.ts +1 -1
  254. package/src/lsp/lspmux.ts +39 -10
  255. package/src/lsp/path-trust.ts +81 -0
  256. package/src/main.ts +28 -8
  257. package/src/memories/index.ts +1 -0
  258. package/src/memories/storage.ts +6 -2
  259. package/src/modes/action-registry.ts +165 -0
  260. package/src/modes/components/chrome.ts +40 -0
  261. package/src/modes/components/command-palette.ts +168 -0
  262. package/src/modes/components/custom-editor.ts +1 -1
  263. package/src/modes/components/custom-provider-wizard.ts +51 -14
  264. package/src/modes/components/index.ts +2 -1
  265. package/src/modes/components/pet-selector.ts +11 -17
  266. package/src/modes/components/plan-preview-overlay.ts +295 -0
  267. package/src/modes/components/queue-mode-selector.ts +10 -27
  268. package/src/modes/components/queue-pane.ts +79 -0
  269. package/src/modes/components/read-tool-group.ts +13 -0
  270. package/src/modes/components/session-observer-overlay.ts +207 -772
  271. package/src/modes/components/sessions-dashboard.ts +181 -0
  272. package/src/modes/components/settings-selector.ts +1 -1
  273. package/src/modes/components/show-images-selector.ts +10 -24
  274. package/src/modes/components/status-line/types.ts +1 -1
  275. package/src/modes/components/status-line.ts +1 -969
  276. package/src/modes/components/tasks-pane.ts +73 -0
  277. package/src/modes/components/theme-selector.ts +11 -31
  278. package/src/modes/components/tool-execution.ts +22 -0
  279. package/src/modes/components/tool-status-header.ts +1056 -0
  280. package/src/modes/components/transcript-viewer-overlay.ts +384 -0
  281. package/src/modes/controllers/btw-controller.ts +1 -0
  282. package/src/modes/controllers/event-controller.ts +3 -2
  283. package/src/modes/controllers/extension-ui-controller.ts +24 -1
  284. package/src/modes/controllers/goal-mode-controller.ts +474 -0
  285. package/src/modes/controllers/input-controller.ts +764 -229
  286. package/src/modes/controllers/mode-gate.ts +24 -0
  287. package/src/modes/controllers/plan-mode-controller.ts +517 -0
  288. package/src/modes/controllers/selector-controller.ts +225 -10
  289. package/src/modes/controllers/stt-controller.ts +125 -0
  290. package/src/modes/interactive-mode.ts +289 -1150
  291. package/src/modes/jobs-observer.ts +3 -0
  292. package/src/modes/runtime-init.ts +8 -0
  293. package/src/modes/shared/agent-wire/deep-interview-gate.ts +31 -106
  294. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +71 -16
  295. package/src/modes/shared/agent-wire/workflow-gate-types.ts +177 -0
  296. package/src/modes/tasks-aggregator.ts +199 -0
  297. package/src/modes/transcript-item-registry.ts +229 -0
  298. package/src/modes/types.ts +45 -18
  299. package/src/modes/utils/ui-helpers.ts +17 -9
  300. package/src/prompts/agent-fragments/ralplan-persistence.md +6 -0
  301. package/src/prompts/agent-fragments/restricted-bash.md +1 -0
  302. package/src/prompts/agents/architect.md +2 -8
  303. package/src/prompts/agents/critic.md +2 -8
  304. package/src/prompts/agents/executor.md +3 -0
  305. package/src/prompts/agents/planner.md +4 -12
  306. package/src/prompts/system/custom-system-prompt.md +1 -23
  307. package/src/prompts/system/plan-mode-approved.md +8 -0
  308. package/src/prompts/system/system-prompt.md +17 -96
  309. package/src/prompts/tools/bash.md +4 -4
  310. package/src/prompts/tools/browser.md +15 -52
  311. package/src/prompts/tools/find.md +2 -2
  312. package/src/prompts/tools/hashline.md +13 -55
  313. package/src/prompts/tools/read.md +3 -6
  314. package/src/prompts/tools/search-tool-bm25.md +0 -2
  315. package/src/prompts/tools/search.md +2 -4
  316. package/src/prompts/tools/skill-discovery.md +1 -2
  317. package/src/prompts/tools/task.md +1 -1
  318. package/src/runtime-mcp/manager.ts +1 -1
  319. package/src/sdk/broker/broker.ts +206 -78
  320. package/src/sdk/broker/discovery.ts +1 -1
  321. package/src/sdk/broker/ensure.ts +3 -1
  322. package/src/sdk/broker/lifecycle-codec.ts +11 -0
  323. package/src/sdk/broker/lifecycle-ledger.ts +371 -74
  324. package/src/sdk/broker/lifecycle.ts +1399 -142
  325. package/src/sdk/broker/process-incarnation.ts +5 -13
  326. package/src/sdk/broker/session-index.ts +145 -56
  327. package/src/sdk/broker/state-version.ts +21 -0
  328. package/src/sdk/broker/transport.ts +1 -1
  329. package/src/sdk/bus/chat-daemon-cli.ts +2 -0
  330. package/src/sdk/bus/chat-daemon-control.ts +8 -28
  331. package/src/sdk/bus/chat-effect-journal.ts +10 -2
  332. package/src/sdk/bus/config-commands.ts +5 -4
  333. package/src/sdk/bus/config.ts +98 -0
  334. package/src/sdk/bus/conversation-store.ts +5 -29
  335. package/src/sdk/bus/daemon-paths.ts +2 -0
  336. package/src/sdk/bus/html-format.ts +20 -3
  337. package/src/sdk/bus/index.ts +778 -93
  338. package/src/sdk/bus/lifecycle-control-runtime.ts +91 -33
  339. package/src/sdk/bus/natives-augment.d.ts +26 -1
  340. package/src/sdk/bus/notification-service.ts +168 -20
  341. package/src/sdk/bus/rate-limit-pool.ts +58 -14
  342. package/src/sdk/bus/recent-activity.ts +188 -74
  343. package/src/sdk/bus/rich-document.ts +258 -0
  344. package/src/sdk/bus/rich-render.ts +62 -70
  345. package/src/sdk/bus/telegram-daemon-cli.ts +15 -59
  346. package/src/sdk/bus/telegram-daemon-contract.ts +9 -4
  347. package/src/sdk/bus/telegram-daemon.ts +1389 -237
  348. package/src/sdk/bus/threaded-inbound.ts +8 -3
  349. package/src/sdk/bus/threaded-render.ts +57 -1
  350. package/src/sdk/bus/topic-registry.ts +120 -13
  351. package/src/sdk/host/control/dispatch.ts +14 -2
  352. package/src/sdk/host/control/operations.ts +6 -1
  353. package/src/sdk/host/host.ts +31 -1
  354. package/src/sdk/host/query/handlers.ts +20 -22
  355. package/src/sdk/host/query/revision-store.ts +80 -57
  356. package/src/sdk/index.ts +1 -0
  357. package/src/sdk/protocol/operation-inventory.generated.json +943 -1907
  358. package/src/sdk/session-directory.ts +141 -0
  359. package/src/sdk/session.ts +458 -479
  360. package/src/session/agent-session.ts +1700 -583
  361. package/src/session/agent-storage.ts +18 -0
  362. package/src/session/cache-economics.ts +25 -8
  363. package/src/session/fallback-chain-controller.ts +53 -3
  364. package/src/session/internal/managed-session-scope.ts +2226 -0
  365. package/src/session/internal/managed-session-storage.ts +453 -0
  366. package/src/session/messages.ts +91 -2
  367. package/src/session/session-manager-internal.ts +33 -0
  368. package/src/session/session-manager.ts +1112 -333
  369. package/src/session/session-storage.ts +444 -39
  370. package/src/session/volatile-context-pruning.ts +78 -0
  371. package/src/setup/credential-auto-import.ts +2 -1
  372. package/src/setup/hermes/templates/operator-instructions.v1.md +1 -1
  373. package/src/setup/provider-onboarding.ts +36 -61
  374. package/src/setup/provider-presets.json +5 -0
  375. package/src/skill-state/active-state.ts +3 -13
  376. package/src/skill-state/{deep-interview-mutation-guard.ts → workflow-mutation-guard.ts} +47 -29
  377. package/src/skill-state/workflow-state-contract.ts +6 -41
  378. package/src/slash-commands/builtin-registry.ts +46 -11
  379. package/src/system-prompt.ts +37 -44
  380. package/src/task/agents.ts +19 -1
  381. package/src/task/executor.ts +90 -6
  382. package/src/task/index.ts +36 -21
  383. package/src/thinking.ts +21 -6
  384. package/src/tool-discovery/tool-index.ts +2 -134
  385. package/src/tools/ask.ts +157 -21
  386. package/src/tools/ast-edit.ts +1 -1
  387. package/src/tools/bash.ts +38 -0
  388. package/src/tools/browser/dead-tab-recovery.ts +78 -0
  389. package/src/tools/browser/tab-supervisor.ts +282 -36
  390. package/src/tools/computer.ts +10 -3
  391. package/src/tools/cron.ts +30 -16
  392. package/src/tools/eval.ts +1 -2
  393. package/src/tools/fetch.ts +11 -4
  394. package/src/tools/index.ts +76 -24
  395. package/src/tools/output-meta.ts +13 -5
  396. package/src/tools/read.ts +37 -1
  397. package/src/tools/resource-gc.ts +2 -2
  398. package/src/tools/search-tool-bm25.ts +11 -74
  399. package/src/utils/event-bus.ts +9 -4
  400. package/src/web/search/index.ts +3 -3
  401. package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
  402. package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
  403. package/src/discovery/plugin-dir-roots.ts +0 -28
  404. package/src/runtime-mcp/discoverable-tool-metadata.ts +0 -25
@@ -0,0 +1,326 @@
1
+ import type { GjcTeamConfig, GjcTeamMailboxMessage } from "./team-runtime";
2
+ import type {
3
+ GjcTeamMailboxDeliveryInput,
4
+ GjcTeamMailboxDeliveryResult,
5
+ GjcTeamMailboxDeliveryTransport,
6
+ GjcTeamNotification,
7
+ GjcTeamNotificationDeliveryState,
8
+ GjcTeamNotificationSummary,
9
+ GjcTeamPaneAttemptResult,
10
+ } from "./team-store";
11
+
12
+ /** Runtime-owned filesystem and participant operations used by notification delivery. */
13
+ export interface TeamNotificationRuntime {
14
+ findTeamDir(teamName: string, cwd: string, env: NodeJS.ProcessEnv): Promise<string>;
15
+ readConfig(dir: string): Promise<GjcTeamConfig>;
16
+ assertKnownParticipant(config: GjcTeamConfig, participant: string): void;
17
+ messageId(input: {
18
+ teamName: string;
19
+ fromWorker: string;
20
+ toWorker: string;
21
+ body: string;
22
+ idempotencyKey?: string;
23
+ createdKey: string;
24
+ }): string;
25
+ messageNotificationId(teamName: string, recipient: string, messageId: string): string;
26
+ now(): string;
27
+ randomId(): string;
28
+ appendEvent(
29
+ dir: string,
30
+ event: {
31
+ type: string;
32
+ worker?: string;
33
+ message?: string;
34
+ data?: Record<string, unknown>;
35
+ },
36
+ ): Promise<void>;
37
+ readMailbox(dir: string, worker: string): Promise<{ messages: GjcTeamMailboxMessage[] }>;
38
+ writeMailboxMessage(dir: string, worker: string, message: GjcTeamMailboxMessage): Promise<GjcTeamMailboxMessage>;
39
+ listNotifications(dir: string): Promise<GjcTeamNotification[]>;
40
+ readNotification(dir: string, id: string): Promise<GjcTeamNotification>;
41
+ writeNotification(dir: string, notification: GjcTeamNotification): Promise<GjcTeamNotification>;
42
+ }
43
+
44
+ export async function deliverTeamMailboxMessage(
45
+ transport: GjcTeamMailboxDeliveryTransport | undefined,
46
+ input: GjcTeamMailboxDeliveryInput,
47
+ ): Promise<GjcTeamMailboxDeliveryResult | null> {
48
+ if (!transport) return null;
49
+ try {
50
+ return await transport.deliverMailboxMessage(input);
51
+ } catch {
52
+ return null;
53
+ }
54
+ }
55
+
56
+ export function emptyTeamNotificationSummary(): GjcTeamNotificationSummary {
57
+ return {
58
+ total: 0,
59
+ replay_eligible: 0,
60
+ by_state: {
61
+ pending: 0,
62
+ sent: 0,
63
+ queued: 0,
64
+ deferred: 0,
65
+ failed: 0,
66
+ delivered: 0,
67
+ acknowledged: 0,
68
+ },
69
+ };
70
+ }
71
+
72
+ export function isReplayEligibleTeamNotification(state: GjcTeamNotificationDeliveryState): boolean {
73
+ return state === "pending" || state === "queued" || state === "deferred" || state === "failed";
74
+ }
75
+
76
+ export function summarizeTeamNotifications(notifications: GjcTeamNotification[]): GjcTeamNotificationSummary {
77
+ const summary = emptyTeamNotificationSummary();
78
+ for (const notification of notifications) {
79
+ summary.total += 1;
80
+ summary.by_state[notification.delivery_state] += 1;
81
+ if (isReplayEligibleTeamNotification(notification.delivery_state)) summary.replay_eligible += 1;
82
+ }
83
+ return summary;
84
+ }
85
+
86
+ export async function createTeamMessageNotification(
87
+ runtime: TeamNotificationRuntime,
88
+ dir: string,
89
+ teamName: string,
90
+ message: GjcTeamMailboxMessage,
91
+ state: GjcTeamNotificationDeliveryState = "pending",
92
+ ): Promise<GjcTeamNotification> {
93
+ return runtime.writeNotification(dir, {
94
+ id: runtime.messageNotificationId(teamName, message.to_worker, message.message_id),
95
+ kind: "mailbox_message",
96
+ team_name: teamName,
97
+ recipient: message.to_worker,
98
+ source: { type: "message", id: message.message_id },
99
+ idempotency_key: message.idempotency_key,
100
+ delivery_state: state,
101
+ created_at: message.created_at,
102
+ updated_at: runtime.now(),
103
+ replay_count: 0,
104
+ });
105
+ }
106
+
107
+ export async function reconcileTeamNotifications(
108
+ runtime: TeamNotificationRuntime,
109
+ dir: string,
110
+ config: GjcTeamConfig,
111
+ ): Promise<GjcTeamNotificationSummary> {
112
+ for (const recipient of ["leader-fixed", ...config.workers.map(worker => worker.id)]) {
113
+ for (const message of (await runtime.readMailbox(dir, recipient)).messages) {
114
+ await createTeamMessageNotification(
115
+ runtime,
116
+ dir,
117
+ config.team_name,
118
+ message,
119
+ message.delivered_at ? "acknowledged" : message.notified_at ? "delivered" : "pending",
120
+ );
121
+ }
122
+ }
123
+ return summarizeTeamNotifications(await runtime.listNotifications(dir));
124
+ }
125
+
126
+ async function attemptConfiguredMailboxTransport(
127
+ runtime: TeamNotificationRuntime,
128
+ dir: string,
129
+ config: GjcTeamConfig,
130
+ notification: GjcTeamNotification,
131
+ cwd: string,
132
+ env: NodeJS.ProcessEnv,
133
+ transport?: GjcTeamMailboxDeliveryTransport,
134
+ ): Promise<GjcTeamNotification | null> {
135
+ if (notification.kind !== "mailbox_message" || notification.source.type !== "message") return null;
136
+ const message = (await runtime.readMailbox(dir, notification.recipient)).messages.find(
137
+ candidate => candidate.message_id === notification.source.id,
138
+ );
139
+ if (!message) return null;
140
+ const result = await deliverTeamMailboxMessage(transport, {
141
+ team_name: config.team_name,
142
+ state_dir: dir,
143
+ config,
144
+ notification,
145
+ message,
146
+ cwd,
147
+ env,
148
+ });
149
+ if (!result || (result.transport === "sdk" && result.state === "failed")) return null;
150
+ return runtime.writeNotification(dir, {
151
+ ...notification,
152
+ delivery_state: result.state,
153
+ pane_attempt_result: result.transport === "pane" ? result.state : undefined,
154
+ pane_attempt_reason: result.reason ?? result.transport,
155
+ pane_attempt_at: runtime.now(),
156
+ updated_at: runtime.now(),
157
+ });
158
+ }
159
+
160
+ async function attemptPaneNotification(
161
+ runtime: TeamNotificationRuntime,
162
+ dir: string,
163
+ config: GjcTeamConfig,
164
+ notification: GjcTeamNotification,
165
+ env: NodeJS.ProcessEnv,
166
+ cwd: string,
167
+ transport?: GjcTeamMailboxDeliveryTransport,
168
+ ): Promise<GjcTeamNotification> {
169
+ const transported = await attemptConfiguredMailboxTransport(runtime, dir, config, notification, cwd, env, transport);
170
+ if (transported) return transported;
171
+ const paneId =
172
+ notification.recipient === "leader-fixed"
173
+ ? config.leader.pane_id
174
+ : config.workers.find(worker => worker.id === notification.recipient)?.pane_id;
175
+ let result: GjcTeamPaneAttemptResult = "deferred";
176
+ let reason = "pane_missing";
177
+ if (paneId) {
178
+ if (config.tmux_session === "dry-run" || env.GJC_TEAM_FAKE_PANE_ATTEMPT === "sent") {
179
+ result = "sent";
180
+ reason = "dry_run_or_fake_tmux";
181
+ } else {
182
+ result = "queued";
183
+ reason = "tmux_delivery_recorded_without_injection";
184
+ }
185
+ }
186
+ return runtime.writeNotification(dir, {
187
+ ...notification,
188
+ delivery_state: result,
189
+ pane_attempt_result: result,
190
+ pane_attempt_reason: reason,
191
+ pane_attempt_at: runtime.now(),
192
+ updated_at: runtime.now(),
193
+ });
194
+ }
195
+
196
+ export async function replayTeamNotifications(
197
+ runtime: TeamNotificationRuntime,
198
+ teamName: string,
199
+ cwd: string,
200
+ env: NodeJS.ProcessEnv,
201
+ transport?: GjcTeamMailboxDeliveryTransport,
202
+ ): Promise<{
203
+ notifications: GjcTeamNotification[];
204
+ summary: GjcTeamNotificationSummary;
205
+ }> {
206
+ const dir = await runtime.findTeamDir(teamName, cwd, env);
207
+ const config = await runtime.readConfig(dir);
208
+ await reconcileTeamNotifications(runtime, dir, config);
209
+ const notifications = await Promise.all(
210
+ (await runtime.listNotifications(dir)).map(async notification =>
211
+ isReplayEligibleTeamNotification(notification.delivery_state)
212
+ ? attemptPaneNotification(
213
+ runtime,
214
+ dir,
215
+ config,
216
+ {
217
+ ...notification,
218
+ replay_count: (notification.replay_count ?? 0) + 1,
219
+ },
220
+ env,
221
+ cwd,
222
+ transport,
223
+ )
224
+ : notification,
225
+ ),
226
+ );
227
+ return { notifications, summary: summarizeTeamNotifications(notifications) };
228
+ }
229
+
230
+ export async function sendTeamMessage(
231
+ runtime: TeamNotificationRuntime,
232
+ teamName: string,
233
+ fromWorker: string,
234
+ toWorker: string,
235
+ body: string,
236
+ cwd: string,
237
+ env: NodeJS.ProcessEnv,
238
+ idempotencyKey?: string,
239
+ transport?: GjcTeamMailboxDeliveryTransport,
240
+ ): Promise<GjcTeamMailboxMessage> {
241
+ const dir = await runtime.findTeamDir(teamName, cwd, env);
242
+ const config = await runtime.readConfig(dir);
243
+ runtime.assertKnownParticipant(config, fromWorker);
244
+ runtime.assertKnownParticipant(config, toWorker);
245
+ const createdKey = idempotencyKey ?? runtime.randomId();
246
+ const message: GjcTeamMailboxMessage = {
247
+ message_id: runtime.messageId({
248
+ teamName: config.team_name,
249
+ fromWorker,
250
+ toWorker,
251
+ body,
252
+ idempotencyKey,
253
+ createdKey,
254
+ }),
255
+ from_worker: fromWorker,
256
+ to_worker: toWorker,
257
+ body,
258
+ created_at: runtime.now(),
259
+ ...(idempotencyKey ? { idempotency_key: idempotencyKey } : {}),
260
+ };
261
+ const written = await runtime.writeMailboxMessage(dir, toWorker, message);
262
+ const existing = (await runtime.listNotifications(dir)).some(
263
+ notification => notification.id === runtime.messageNotificationId(config.team_name, toWorker, written.message_id),
264
+ );
265
+ const notification = await createTeamMessageNotification(runtime, dir, config.team_name, written);
266
+ if (!existing) await attemptPaneNotification(runtime, dir, config, notification, env, cwd, transport);
267
+ await runtime.appendEvent(dir, {
268
+ type: "message_sent",
269
+ worker: fromWorker,
270
+ message: body,
271
+ data: { to_worker: toWorker, message_id: written.message_id },
272
+ });
273
+ return written;
274
+ }
275
+
276
+ export async function listTeamMailbox(
277
+ runtime: TeamNotificationRuntime,
278
+ teamName: string,
279
+ worker: string,
280
+ cwd: string,
281
+ env: NodeJS.ProcessEnv,
282
+ ): Promise<GjcTeamMailboxMessage[]> {
283
+ const dir = await runtime.findTeamDir(teamName, cwd, env);
284
+ const config = await runtime.readConfig(dir);
285
+ runtime.assertKnownParticipant(config, worker);
286
+ return (await runtime.readMailbox(dir, worker)).messages;
287
+ }
288
+
289
+ export async function markTeamMailboxMessage(
290
+ runtime: TeamNotificationRuntime,
291
+ teamName: string,
292
+ worker: string,
293
+ messageId: string,
294
+ field: "delivered_at" | "notified_at",
295
+ cwd: string,
296
+ env: NodeJS.ProcessEnv,
297
+ ): Promise<GjcTeamMailboxMessage> {
298
+ const dir = await runtime.findTeamDir(teamName, cwd, env);
299
+ const config = await runtime.readConfig(dir);
300
+ runtime.assertKnownParticipant(config, worker);
301
+ const message = (await runtime.readMailbox(dir, worker)).messages.find(
302
+ candidate => candidate.message_id === messageId,
303
+ );
304
+ if (!message) throw new Error(`message_not_found:${messageId}`);
305
+ const written = await runtime.writeMailboxMessage(dir, worker, {
306
+ ...message,
307
+ [field]: message[field] ?? runtime.now(),
308
+ });
309
+ const id = runtime.messageNotificationId(config.team_name, worker, messageId);
310
+ const existing =
311
+ (await runtime.listNotifications(dir)).find(notification => notification.id === id) ??
312
+ (await createTeamMessageNotification(runtime, dir, config.team_name, written));
313
+ const state: GjcTeamNotificationDeliveryState = field === "delivered_at" ? "acknowledged" : "delivered";
314
+ await runtime.writeNotification(dir, {
315
+ ...existing,
316
+ delivery_state: state,
317
+ updated_at: runtime.now(),
318
+ });
319
+ if (existing.delivery_state !== state)
320
+ await runtime.appendEvent(dir, {
321
+ type: `message_${field === "delivered_at" ? "acknowledged" : "notified"}`,
322
+ worker,
323
+ message: messageId,
324
+ });
325
+ return written;
326
+ }