@gajae-code/coding-agent 0.11.0 → 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 (418) hide show
  1. package/CHANGELOG.md +63 -1
  2. package/dist/types/async/job-manager.d.ts +46 -7
  3. package/dist/types/cli/config-cli.d.ts +11 -1
  4. package/dist/types/cli/notify-cli.d.ts +1 -0
  5. package/dist/types/cli/session-picker.d.ts +2 -1
  6. package/dist/types/cli/setup-cli.d.ts +1 -1
  7. package/dist/types/commands/mcp-serve.d.ts +33 -0
  8. package/dist/types/commands/mcp.d.ts +1 -1
  9. package/dist/types/commands/notify.d.ts +0 -2
  10. package/dist/types/commands/sdk.d.ts +1 -1
  11. package/dist/types/config/atomic-yaml-patch.d.ts +18 -0
  12. package/dist/types/config/file-lock.d.ts +14 -4
  13. package/dist/types/config/keybindings.d.ts +42 -1
  14. package/dist/types/config/model-auth.d.ts +3 -0
  15. package/dist/types/config/model-bindings-applier.d.ts +13 -0
  16. package/dist/types/config/model-discovery-manager.d.ts +49 -0
  17. package/dist/types/config/model-equivalence.d.ts +20 -0
  18. package/dist/types/config/model-registry.d.ts +16 -15
  19. package/dist/types/config/model-resolver.d.ts +28 -18
  20. package/dist/types/config/models-config-schema.d.ts +11 -0
  21. package/dist/types/config/settings-schema.d.ts +56 -1
  22. package/dist/types/config/settings.d.ts +14 -11
  23. package/dist/types/coordinator-mcp/policy.d.ts +5 -0
  24. package/dist/types/coordinator-mcp/question-gate-codec.d.ts +129 -0
  25. package/dist/types/coordinator-mcp/question-state.d.ts +356 -0
  26. package/dist/types/coordinator-mcp/server.d.ts +4 -0
  27. package/dist/types/discovery/helpers.d.ts +0 -6
  28. package/dist/types/edit/index.d.ts +3 -0
  29. package/dist/types/eval/py/env.d.ts +9 -0
  30. package/dist/types/extensibility/extensions/loader.d.ts +2 -1
  31. package/dist/types/extensibility/extensions/runner.d.ts +2 -2
  32. package/dist/types/extensibility/extensions/types.d.ts +34 -3
  33. package/dist/types/extensibility/hooks/runner.d.ts +1 -1
  34. package/dist/types/extensibility/shared-events.d.ts +2 -0
  35. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +10 -1
  36. package/dist/types/gjc-runtime/deep-interview-state.d.ts +44 -0
  37. package/dist/types/gjc-runtime/goal-mode-request.d.ts +11 -1
  38. package/dist/types/gjc-runtime/launch-worktree.d.ts +4 -2
  39. package/dist/types/gjc-runtime/linux-proc.d.ts +29 -0
  40. package/dist/types/gjc-runtime/session-resolution.d.ts +2 -2
  41. package/dist/types/gjc-runtime/state-migrations.d.ts +1 -1
  42. package/dist/types/gjc-runtime/state-writer.d.ts +2 -1
  43. package/dist/types/gjc-runtime/team-launch.d.ts +59 -0
  44. package/dist/types/gjc-runtime/team-notify.d.ts +45 -0
  45. package/dist/types/gjc-runtime/team-runtime.d.ts +29 -121
  46. package/dist/types/gjc-runtime/team-store.d.ts +160 -0
  47. package/dist/types/gjc-runtime/team-workers.d.ts +78 -0
  48. package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +8 -0
  49. package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +13 -0
  50. package/dist/types/gjc-runtime/ultragoal-evidence.d.ts +38 -0
  51. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +7 -0
  52. package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +23 -0
  53. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
  54. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +55 -33
  55. package/dist/types/gjc-runtime/workflow-cli-common.d.ts +8 -0
  56. package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -0
  57. package/dist/types/goals/continuation-timeout-guard.d.ts +22 -0
  58. package/dist/types/goals/runtime.d.ts +1 -0
  59. package/dist/types/goals/state.d.ts +8 -0
  60. package/dist/types/harness-control-plane/lifecycle-reconciliation.d.ts +17 -0
  61. package/dist/types/harness-control-plane/phase-rollup.d.ts +4 -7
  62. package/dist/types/harness-control-plane/receipt-ingest.d.ts +5 -0
  63. package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
  64. package/dist/types/hindsight/state.d.ts +11 -4
  65. package/dist/types/lsp/lspmux.d.ts +5 -3
  66. package/dist/types/lsp/path-trust.d.ts +1 -0
  67. package/dist/types/main.d.ts +3 -2
  68. package/dist/types/memories/storage.d.ts +1 -0
  69. package/dist/types/modes/action-registry.d.ts +29 -0
  70. package/dist/types/modes/components/chrome.d.ts +14 -0
  71. package/dist/types/modes/components/command-palette.d.ts +27 -0
  72. package/dist/types/modes/components/custom-provider-wizard.d.ts +1 -0
  73. package/dist/types/modes/components/index.d.ts +2 -1
  74. package/dist/types/modes/components/pet-selector.d.ts +1 -1
  75. package/dist/types/modes/components/plan-preview-overlay.d.ts +43 -0
  76. package/dist/types/modes/components/queue-mode-selector.d.ts +1 -1
  77. package/dist/types/modes/components/queue-pane.d.ts +12 -0
  78. package/dist/types/modes/components/read-tool-group.d.ts +6 -0
  79. package/dist/types/modes/components/session-observer-overlay.d.ts +3 -4
  80. package/dist/types/modes/components/sessions-dashboard.d.ts +32 -0
  81. package/dist/types/modes/components/settings-selector.d.ts +1 -1
  82. package/dist/types/modes/components/show-images-selector.d.ts +1 -1
  83. package/dist/types/modes/components/status-line/types.d.ts +1 -1
  84. package/dist/types/modes/components/status-line.d.ts +1 -94
  85. package/dist/types/modes/components/tasks-pane.d.ts +15 -0
  86. package/dist/types/modes/components/theme-selector.d.ts +1 -1
  87. package/dist/types/modes/components/tool-execution.d.ts +15 -0
  88. package/dist/types/modes/components/tool-status-header.d.ts +111 -0
  89. package/dist/types/modes/components/transcript-viewer-overlay.d.ts +42 -0
  90. package/dist/types/modes/controllers/command-controller.d.ts +2 -2
  91. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
  92. package/dist/types/modes/controllers/goal-mode-controller.d.ts +62 -0
  93. package/dist/types/modes/controllers/input-controller.d.ts +8 -1
  94. package/dist/types/modes/controllers/mode-gate.d.ts +8 -0
  95. package/dist/types/modes/controllers/plan-mode-controller.d.ts +65 -0
  96. package/dist/types/modes/controllers/selector-controller.d.ts +15 -3
  97. package/dist/types/modes/controllers/stt-controller.d.ts +26 -0
  98. package/dist/types/modes/interactive-mode.d.ts +21 -19
  99. package/dist/types/modes/jobs-observer.d.ts +2 -0
  100. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -11
  101. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +21 -2
  102. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +31 -0
  103. package/dist/types/modes/tasks-aggregator.d.ts +39 -0
  104. package/dist/types/modes/transcript-item-registry.d.ts +60 -0
  105. package/dist/types/modes/types.d.ts +22 -15
  106. package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
  107. package/dist/types/runtime-mcp/manager.d.ts +1 -1
  108. package/dist/types/sdk/broker/broker.d.ts +78 -12
  109. package/dist/types/sdk/broker/ensure.d.ts +9 -0
  110. package/dist/types/sdk/broker/lifecycle-codec.d.ts +4 -0
  111. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +15 -1
  112. package/dist/types/sdk/broker/lifecycle.d.ts +6 -2
  113. package/dist/types/sdk/broker/process-incarnation.d.ts +2 -0
  114. package/dist/types/sdk/broker/session-index.d.ts +0 -1
  115. package/dist/types/sdk/broker/state-version.d.ts +2 -0
  116. package/dist/types/sdk/bus/chat-effect-journal.d.ts +1 -0
  117. package/dist/types/sdk/bus/config-commands.d.ts +1 -1
  118. package/dist/types/sdk/bus/config.d.ts +11 -0
  119. package/dist/types/sdk/bus/daemon-paths.d.ts +1 -0
  120. package/dist/types/sdk/bus/discord-daemon.d.ts +5 -0
  121. package/dist/types/sdk/bus/html-format.d.ts +3 -2
  122. package/dist/types/sdk/bus/index.d.ts +27 -0
  123. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
  124. package/dist/types/sdk/bus/notification-service.d.ts +20 -0
  125. package/dist/types/sdk/bus/rate-limit-pool.d.ts +13 -2
  126. package/dist/types/sdk/bus/recent-activity.d.ts +21 -12
  127. package/dist/types/sdk/bus/rich-document.d.ts +7 -0
  128. package/dist/types/sdk/bus/rich-render.d.ts +18 -41
  129. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -4
  130. package/dist/types/sdk/bus/telegram-daemon.d.ts +69 -3
  131. package/dist/types/sdk/bus/threaded-inbound.d.ts +1 -1
  132. package/dist/types/sdk/bus/threaded-render.d.ts +13 -0
  133. package/dist/types/sdk/bus/topic-registry.d.ts +24 -2
  134. package/dist/types/sdk/host/control/operations.d.ts +1 -1
  135. package/dist/types/sdk/host/host.d.ts +2 -0
  136. package/dist/types/sdk/index.d.ts +1 -0
  137. package/dist/types/sdk/session-directory.d.ts +56 -0
  138. package/dist/types/session/agent-session.d.ts +82 -47
  139. package/dist/types/session/agent-storage.d.ts +7 -0
  140. package/dist/types/session/fallback-chain-controller.d.ts +10 -2
  141. package/dist/types/session/internal/managed-session-scope.d.ts +102 -0
  142. package/dist/types/session/internal/managed-session-storage.d.ts +38 -0
  143. package/dist/types/session/messages.d.ts +16 -0
  144. package/dist/types/session/session-manager-internal.d.ts +14 -0
  145. package/dist/types/session/session-manager.d.ts +82 -12
  146. package/dist/types/session/session-storage.d.ts +43 -3
  147. package/dist/types/session/volatile-context-pruning.d.ts +15 -0
  148. package/dist/types/skill-state/{deep-interview-mutation-guard.d.ts → workflow-mutation-guard.d.ts} +24 -8
  149. package/dist/types/skill-state/workflow-state-contract.d.ts +1 -3
  150. package/dist/types/slash-commands/builtin-registry.d.ts +4 -1
  151. package/dist/types/system-prompt.d.ts +2 -11
  152. package/dist/types/task/executor.d.ts +3 -1
  153. package/dist/types/thinking.d.ts +7 -0
  154. package/dist/types/tool-discovery/tool-index.d.ts +1 -50
  155. package/dist/types/tools/ask.d.ts +64 -2
  156. package/dist/types/tools/bash.d.ts +3 -0
  157. package/dist/types/tools/browser/dead-tab-recovery.d.ts +24 -0
  158. package/dist/types/tools/browser/tab-supervisor.d.ts +21 -0
  159. package/dist/types/tools/cron.d.ts +2 -0
  160. package/dist/types/tools/fetch.d.ts +1 -0
  161. package/dist/types/tools/index.d.ts +30 -15
  162. package/dist/types/tools/output-meta.d.ts +1 -0
  163. package/dist/types/tools/read.d.ts +3 -0
  164. package/dist/types/tools/search-tool-bm25.d.ts +3 -4
  165. package/dist/types/tools/subagent-render.d.ts +1 -0
  166. package/dist/types/tools/subagent.d.ts +6 -1
  167. package/dist/types/utils/event-bus.d.ts +1 -1
  168. package/dist/types/web/search/index.d.ts +3 -1
  169. package/package.json +21 -9
  170. package/scripts/build-sdk-package-smoke.ts +39 -1
  171. package/scripts/generate-hotkeys-docs.ts +74 -0
  172. package/scripts/generate-sdk-operation-inventory.ts +64 -20
  173. package/scripts/verify-gjc-sdk-canonicalization.ts +182 -2
  174. package/src/async/job-manager.ts +455 -69
  175. package/src/cli/config-cli.ts +75 -2
  176. package/src/cli/notify-cli.ts +92 -26
  177. package/src/cli/session-picker.ts +20 -3
  178. package/src/cli/setup-cli.ts +1 -1
  179. package/src/cli.ts +1 -1
  180. package/src/commands/config.ts +1 -1
  181. package/src/commands/harness.ts +34 -106
  182. package/src/commands/launch.ts +6 -4
  183. package/src/commands/mcp-serve.ts +85 -8
  184. package/src/commands/mcp.ts +2 -2
  185. package/src/commands/notify.ts +8 -4
  186. package/src/commands/sdk.ts +61 -40
  187. package/src/commands/ultragoal.ts +4 -1
  188. package/src/config/atomic-yaml-patch.ts +80 -13
  189. package/src/config/file-lock.ts +105 -43
  190. package/src/config/keybindings.ts +64 -20
  191. package/src/config/model-auth.ts +9 -0
  192. package/src/config/model-bindings-applier.ts +139 -0
  193. package/src/config/model-discovery-manager.ts +224 -0
  194. package/src/config/model-equivalence.ts +66 -0
  195. package/src/config/model-registry.ts +169 -302
  196. package/src/config/model-resolver.ts +361 -369
  197. package/src/config/models-config-schema.ts +5 -4
  198. package/src/config/settings-schema.ts +159 -2
  199. package/src/config/settings.ts +458 -482
  200. package/src/coordinator-mcp/policy.ts +76 -11
  201. package/src/coordinator-mcp/question-gate-codec.ts +274 -0
  202. package/src/coordinator-mcp/question-state.ts +778 -0
  203. package/src/coordinator-mcp/server.ts +1702 -238
  204. package/src/debug/index.ts +1 -1
  205. package/src/defaults/gjc/skills/deep-interview/SKILL.md +13 -1
  206. package/src/defaults/gjc/skills/team/SKILL.md +16 -0
  207. package/src/discovery/helpers.ts +1 -50
  208. package/src/edit/index.ts +64 -0
  209. package/src/eval/py/env.ts +26 -0
  210. package/src/eval/py/kernel.ts +5 -3
  211. package/src/extensibility/extensions/loader.ts +9 -1
  212. package/src/extensibility/extensions/runner.ts +12 -3
  213. package/src/extensibility/extensions/types.ts +39 -1
  214. package/src/extensibility/gjc-plugins/installer.ts +16 -16
  215. package/src/extensibility/hooks/runner.ts +2 -2
  216. package/src/extensibility/runtime-skill-discovery.ts +33 -13
  217. package/src/extensibility/shared-events.ts +2 -0
  218. package/src/gjc-runtime/deep-interview-recorder.ts +63 -3
  219. package/src/gjc-runtime/deep-interview-runtime.ts +76 -27
  220. package/src/gjc-runtime/deep-interview-state.ts +317 -5
  221. package/src/gjc-runtime/goal-mode-request.ts +55 -8
  222. package/src/gjc-runtime/launch-tmux.ts +2 -5
  223. package/src/gjc-runtime/launch-worktree.ts +5 -5
  224. package/src/gjc-runtime/linux-proc.ts +71 -0
  225. package/src/gjc-runtime/ralplan-runtime.ts +74 -90
  226. package/src/gjc-runtime/session-resolution.ts +18 -3
  227. package/src/gjc-runtime/session-state-sidecar.ts +6 -107
  228. package/src/gjc-runtime/state-migrations.ts +1 -1
  229. package/src/gjc-runtime/state-runtime.ts +320 -249
  230. package/src/gjc-runtime/state-writer.ts +36 -40
  231. package/src/gjc-runtime/team-launch.ts +319 -0
  232. package/src/gjc-runtime/team-notify.ts +326 -0
  233. package/src/gjc-runtime/team-runtime.ts +1099 -1482
  234. package/src/gjc-runtime/team-store.ts +828 -0
  235. package/src/gjc-runtime/team-workers.ts +962 -0
  236. package/src/gjc-runtime/tmux-owner-isolation-cli.ts +2 -11
  237. package/src/gjc-runtime/tmux-owner-isolation.ts +14 -9
  238. package/src/gjc-runtime/tmux-sessions.ts +4 -21
  239. package/src/gjc-runtime/ultragoal-change-set.ts +172 -0
  240. package/src/gjc-runtime/ultragoal-evidence.ts +874 -0
  241. package/src/gjc-runtime/ultragoal-guard.ts +83 -12
  242. package/src/gjc-runtime/ultragoal-pipeline.ts +306 -0
  243. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
  244. package/src/gjc-runtime/ultragoal-runtime.ts +156 -1319
  245. package/src/gjc-runtime/workflow-cli-common.ts +30 -0
  246. package/src/gjc-runtime/workflow-manifest.generated.json +58 -0
  247. package/src/gjc-runtime/workflow-manifest.ts +18 -0
  248. package/src/goals/continuation-timeout-guard.ts +79 -0
  249. package/src/goals/runtime.ts +7 -5
  250. package/src/goals/state.ts +18 -0
  251. package/src/harness-control-plane/lifecycle-reconciliation.ts +64 -0
  252. package/src/harness-control-plane/phase-rollup.ts +4 -7
  253. package/src/harness-control-plane/receipt-ingest.ts +5 -0
  254. package/src/harness-control-plane/receipt-spool.ts +51 -7
  255. package/src/harness-control-plane/session-lease.ts +12 -130
  256. package/src/hindsight/backend.ts +26 -27
  257. package/src/hindsight/state.ts +101 -32
  258. package/src/hooks/skill-state.ts +17 -11
  259. package/src/internal-urls/docs-index.generated.ts +21 -18
  260. package/src/lsp/client.ts +1 -1
  261. package/src/lsp/config.ts +145 -26
  262. package/src/lsp/index.ts +1 -1
  263. package/src/lsp/lspmux.ts +39 -10
  264. package/src/lsp/path-trust.ts +81 -0
  265. package/src/main.ts +28 -8
  266. package/src/memories/index.ts +1 -0
  267. package/src/memories/storage.ts +6 -2
  268. package/src/modes/action-registry.ts +165 -0
  269. package/src/modes/components/chrome.ts +40 -0
  270. package/src/modes/components/command-palette.ts +168 -0
  271. package/src/modes/components/custom-editor.ts +1 -1
  272. package/src/modes/components/custom-provider-wizard.ts +51 -14
  273. package/src/modes/components/index.ts +2 -1
  274. package/src/modes/components/pet-selector.ts +11 -17
  275. package/src/modes/components/plan-preview-overlay.ts +295 -0
  276. package/src/modes/components/queue-mode-selector.ts +10 -27
  277. package/src/modes/components/queue-pane.ts +79 -0
  278. package/src/modes/components/read-tool-group.ts +13 -0
  279. package/src/modes/components/session-observer-overlay.ts +207 -772
  280. package/src/modes/components/sessions-dashboard.ts +181 -0
  281. package/src/modes/components/settings-selector.ts +1 -1
  282. package/src/modes/components/show-images-selector.ts +10 -24
  283. package/src/modes/components/status-line/types.ts +1 -1
  284. package/src/modes/components/status-line.ts +1 -969
  285. package/src/modes/components/tasks-pane.ts +73 -0
  286. package/src/modes/components/theme-selector.ts +11 -31
  287. package/src/modes/components/tool-execution.ts +22 -0
  288. package/src/modes/components/tool-status-header.ts +1056 -0
  289. package/src/modes/components/transcript-viewer-overlay.ts +384 -0
  290. package/src/modes/controllers/btw-controller.ts +1 -0
  291. package/src/modes/controllers/command-controller.ts +9 -15
  292. package/src/modes/controllers/event-controller.ts +3 -2
  293. package/src/modes/controllers/extension-ui-controller.ts +72 -25
  294. package/src/modes/controllers/goal-mode-controller.ts +474 -0
  295. package/src/modes/controllers/input-controller.ts +764 -229
  296. package/src/modes/controllers/mode-gate.ts +24 -0
  297. package/src/modes/controllers/plan-mode-controller.ts +517 -0
  298. package/src/modes/controllers/selector-controller.ts +225 -10
  299. package/src/modes/controllers/stt-controller.ts +125 -0
  300. package/src/modes/interactive-mode.ts +302 -1151
  301. package/src/modes/jobs-observer.ts +3 -0
  302. package/src/modes/runtime-init.ts +8 -0
  303. package/src/modes/shared/agent-wire/deep-interview-gate.ts +31 -106
  304. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +78 -19
  305. package/src/modes/shared/agent-wire/workflow-gate-types.ts +177 -0
  306. package/src/modes/tasks-aggregator.ts +199 -0
  307. package/src/modes/transcript-item-registry.ts +229 -0
  308. package/src/modes/types.ts +47 -20
  309. package/src/modes/utils/ui-helpers.ts +17 -9
  310. package/src/prompts/agent-fragments/ralplan-persistence.md +6 -0
  311. package/src/prompts/agent-fragments/restricted-bash.md +1 -0
  312. package/src/prompts/agents/architect.md +2 -8
  313. package/src/prompts/agents/critic.md +2 -8
  314. package/src/prompts/agents/executor.md +3 -0
  315. package/src/prompts/agents/planner.md +4 -12
  316. package/src/prompts/system/custom-system-prompt.md +1 -23
  317. package/src/prompts/system/plan-mode-approved.md +8 -0
  318. package/src/prompts/system/system-prompt.md +17 -96
  319. package/src/prompts/tools/bash.md +4 -4
  320. package/src/prompts/tools/browser.md +15 -52
  321. package/src/prompts/tools/find.md +2 -2
  322. package/src/prompts/tools/hashline.md +13 -55
  323. package/src/prompts/tools/read.md +3 -6
  324. package/src/prompts/tools/search-tool-bm25.md +0 -2
  325. package/src/prompts/tools/search.md +2 -4
  326. package/src/prompts/tools/skill-discovery.md +1 -2
  327. package/src/prompts/tools/task.md +1 -1
  328. package/src/runtime-mcp/manager.ts +1 -1
  329. package/src/sdk/broker/broker.ts +206 -78
  330. package/src/sdk/broker/discovery.ts +21 -2
  331. package/src/sdk/broker/ensure.ts +85 -25
  332. package/src/sdk/broker/lifecycle-codec.ts +11 -0
  333. package/src/sdk/broker/lifecycle-ledger.ts +371 -74
  334. package/src/sdk/broker/lifecycle.ts +1399 -142
  335. package/src/sdk/broker/process-incarnation.ts +5 -13
  336. package/src/sdk/broker/session-index.ts +145 -56
  337. package/src/sdk/broker/state-version.ts +21 -0
  338. package/src/sdk/broker/transport.ts +1 -1
  339. package/src/sdk/bus/chat-daemon-cli.ts +2 -0
  340. package/src/sdk/bus/chat-daemon-control.ts +8 -28
  341. package/src/sdk/bus/chat-effect-journal.ts +14 -4
  342. package/src/sdk/bus/config-commands.ts +5 -4
  343. package/src/sdk/bus/config.ts +98 -0
  344. package/src/sdk/bus/conversation-store.ts +5 -29
  345. package/src/sdk/bus/daemon-paths.ts +2 -0
  346. package/src/sdk/bus/discord-daemon.ts +25 -8
  347. package/src/sdk/bus/html-format.ts +20 -3
  348. package/src/sdk/bus/index.ts +834 -113
  349. package/src/sdk/bus/lifecycle-control-runtime.ts +91 -33
  350. package/src/sdk/bus/native-runtime-compatibility.ts +1 -1
  351. package/src/sdk/bus/natives-augment.d.ts +26 -1
  352. package/src/sdk/bus/notification-service.ts +168 -20
  353. package/src/sdk/bus/rate-limit-pool.ts +58 -14
  354. package/src/sdk/bus/recent-activity.ts +188 -74
  355. package/src/sdk/bus/rich-document.ts +258 -0
  356. package/src/sdk/bus/rich-render.ts +62 -70
  357. package/src/sdk/bus/telegram-daemon-cli.ts +15 -59
  358. package/src/sdk/bus/telegram-daemon-contract.ts +9 -4
  359. package/src/sdk/bus/telegram-daemon.ts +1491 -247
  360. package/src/sdk/bus/threaded-inbound.ts +8 -3
  361. package/src/sdk/bus/threaded-render.ts +57 -1
  362. package/src/sdk/bus/topic-registry.ts +120 -13
  363. package/src/sdk/host/control/dispatch.ts +14 -2
  364. package/src/sdk/host/control/operations.ts +6 -1
  365. package/src/sdk/host/host.ts +31 -1
  366. package/src/sdk/host/query/handlers.ts +20 -22
  367. package/src/sdk/host/query/revision-store.ts +80 -57
  368. package/src/sdk/index.ts +1 -0
  369. package/src/sdk/protocol/operation-inventory.generated.json +943 -1907
  370. package/src/sdk/session-directory.ts +141 -0
  371. package/src/sdk/session.ts +458 -479
  372. package/src/session/agent-session.ts +1901 -637
  373. package/src/session/agent-storage.ts +18 -0
  374. package/src/session/cache-economics.ts +25 -8
  375. package/src/session/fallback-chain-controller.ts +53 -3
  376. package/src/session/internal/managed-session-scope.ts +2226 -0
  377. package/src/session/internal/managed-session-storage.ts +453 -0
  378. package/src/session/messages.ts +91 -2
  379. package/src/session/session-manager-internal.ts +33 -0
  380. package/src/session/session-manager.ts +1112 -333
  381. package/src/session/session-storage.ts +444 -39
  382. package/src/session/volatile-context-pruning.ts +78 -0
  383. package/src/setup/credential-auto-import.ts +2 -1
  384. package/src/setup/hermes/templates/operator-instructions.v1.md +1 -1
  385. package/src/setup/provider-onboarding.ts +36 -61
  386. package/src/setup/provider-presets.json +5 -0
  387. package/src/skill-state/active-state.ts +3 -13
  388. package/src/skill-state/{deep-interview-mutation-guard.ts → workflow-mutation-guard.ts} +47 -29
  389. package/src/skill-state/workflow-state-contract.ts +6 -41
  390. package/src/slash-commands/builtin-registry.ts +46 -11
  391. package/src/system-prompt.ts +37 -44
  392. package/src/task/agents.ts +19 -1
  393. package/src/task/executor.ts +90 -6
  394. package/src/task/index.ts +62 -37
  395. package/src/thinking.ts +21 -6
  396. package/src/tool-discovery/tool-index.ts +2 -134
  397. package/src/tools/ask.ts +157 -21
  398. package/src/tools/ast-edit.ts +1 -1
  399. package/src/tools/bash.ts +38 -0
  400. package/src/tools/browser/dead-tab-recovery.ts +78 -0
  401. package/src/tools/browser/tab-supervisor.ts +282 -36
  402. package/src/tools/computer.ts +10 -3
  403. package/src/tools/cron.ts +30 -16
  404. package/src/tools/eval.ts +1 -2
  405. package/src/tools/fetch.ts +11 -4
  406. package/src/tools/index.ts +76 -24
  407. package/src/tools/output-meta.ts +13 -5
  408. package/src/tools/read.ts +37 -1
  409. package/src/tools/resource-gc.ts +2 -2
  410. package/src/tools/search-tool-bm25.ts +11 -74
  411. package/src/tools/subagent-render.ts +19 -8
  412. package/src/tools/subagent.ts +84 -32
  413. package/src/utils/event-bus.ts +9 -4
  414. package/src/web/search/index.ts +3 -3
  415. package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
  416. package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
  417. package/src/discovery/plugin-dir-roots.ts +0 -28
  418. package/src/runtime-mcp/discoverable-tool-metadata.ts +0 -25
@@ -33,6 +33,25 @@ export interface PurgeQueuedCustomMessagesResult {
33
33
  displayFollowUp: number;
34
34
  totalExecutable: number;
35
35
  }
36
+ export type AbortOutcome = {
37
+ kind: "settled";
38
+ } | {
39
+ kind: "timeout";
40
+ } | {
41
+ kind: "error";
42
+ cause: unknown;
43
+ };
44
+ export type CancelAndSubmitOutcome = {
45
+ kind: "submitted";
46
+ } | {
47
+ kind: "refused";
48
+ reason: "duplicate" | "compaction";
49
+ } | {
50
+ kind: "rolled_back";
51
+ outcome: Extract<AbortOutcome, {
52
+ kind: "timeout" | "error";
53
+ }>;
54
+ };
36
55
  export interface ForkContextSeed {
37
56
  messages: Message[];
38
57
  agentMessages: AgentMessage[];
@@ -43,6 +62,7 @@ export interface ForkContextSeed {
43
62
  export interface ForkContextSeedOptions {
44
63
  maxMessages: number;
45
64
  maxTokens: number;
65
+ preserveLatestUser?: boolean;
46
66
  cacheIdentity?: string;
47
67
  signal?: AbortSignal;
48
68
  }
@@ -68,7 +88,6 @@ import type { HindsightSessionState } from "../hindsight/state";
68
88
  import { type WorkflowGateEmitter } from "../modes/shared/agent-wire/workflow-gate-broker";
69
89
  import type { PlanModeState } from "../plan-mode/state";
70
90
  import { type AgentRegistry } from "../registry/agent-registry";
71
- import { type DiscoverableMCPSearchIndex, type DiscoverableMCPTool } from "../runtime-mcp/discoverable-tool-metadata";
72
91
  import { MCPManager } from "../runtime-mcp/manager";
73
92
  import type { NotificationSessionController } from "../sdk/bus/session-control";
74
93
  import { type SecretObfuscator } from "../secrets/obfuscator";
@@ -181,6 +200,10 @@ export interface AgentSessionConfig {
181
200
  slashCommands?: FileSlashCommand[];
182
201
  /** Extension runner (created in main.ts with wrapped tools) */
183
202
  extensionRunner?: ExtensionRunner;
203
+ /** Override first-party worker integration dispatch for embedded hosts and deterministic lifecycle tests. */
204
+ workerIntegrationRequest?: (signal: AbortSignal) => Promise<void>;
205
+ /** Bound terminal worker-integration settlement for embedded hosts and deterministic lifecycle tests. */
206
+ workerIntegrationTimeoutMs?: number;
184
207
  /** Loaded skills (already discovered by SDK) */
185
208
  skills?: Skill[];
186
209
  /** Skill loading warnings (already captured by SDK) */
@@ -219,15 +242,12 @@ export interface AgentSessionConfig {
219
242
  requestedToolNames?: ReadonlySet<string>;
220
243
  /** Optional per-session allowlist for tools exposed through search_tool_bm25. */
221
244
  discoverableToolAllowedNames?: readonly string[];
222
- /**
223
- * Optional accessor for live MCP server instructions. Read by the session's
224
- * `rebuildSystemPrompt`-skip optimization to detect server-side instruction
225
- * changes (e.g. an MCP server upgrade) that would otherwise pass the tool-set
226
- * signature comparison and silently keep a stale prompt cached.
227
- */
245
+ /** Optional accessor for live MCP server instructions, injected as untrusted user-role request data. */
228
246
  getMcpServerInstructions?: () => Map<string, string> | undefined;
229
247
  /** Enable hidden-by-default MCP tool discovery for this session. */
230
248
  mcpDiscoveryEnabled?: boolean;
249
+ /** Effective discovery mode normalized by the session factory. */
250
+ discoveryMode?: "off" | "mcp-only" | "all";
231
251
  /** MCP tool names to activate for the current session when discovery mode is enabled. */
232
252
  initialSelectedMCPToolNames?: string[];
233
253
  /** Whether constructor-provided MCP defaults should be persisted immediately. */
@@ -348,6 +368,36 @@ export interface SessionStats {
348
368
  cost: number;
349
369
  costBreakdown?: Usage["cost"];
350
370
  }
371
+ export type EphemeralTurnPurpose = "btw" | "background";
372
+ interface EphemeralTurnBaseArgs {
373
+ promptText: string;
374
+ onTextDelta?: (delta: string) => void;
375
+ signal?: AbortSignal;
376
+ }
377
+ export type EphemeralTurnArgs = (EphemeralTurnBaseArgs & {
378
+ purpose: "btw";
379
+ }) | (EphemeralTurnBaseArgs & {
380
+ purpose?: "background";
381
+ /** Internal caller-supplied, non-persistent context such as the IRC roster. */
382
+ prependMessages?: AgentMessage[];
383
+ /** Revalidates optional caller context after asynchronous boundaries. */
384
+ prependMessagesValid?: () => boolean;
385
+ /**
386
+ * An existing IRC roster claim owned by the caller. `undefined` makes this
387
+ * turn claim and commit its own roster candidate; `null` opts out.
388
+ */
389
+ ircRosterClaim?: IrcRosterClaim | null;
390
+ });
391
+ interface EphemeralTurnResult {
392
+ replyText: string;
393
+ assistantMessage: AssistantMessage;
394
+ }
395
+ type IrcRosterClaim = {
396
+ token: symbol;
397
+ signature: string;
398
+ epoch: number;
399
+ message: CustomMessage;
400
+ };
351
401
  export type QueuedMessageEditMode = "steer" | "followUp";
352
402
  export interface QueuedMessageEditEntry {
353
403
  id: string;
@@ -369,8 +419,9 @@ export type BeforeAgentStartContributor = (event: {
369
419
  }) => Promise<BeforeAgentStartInternalMessage | undefined>;
370
420
  export declare class WorkerIntegrationRequestScheduler {
371
421
  #private;
372
- readonly request: () => Promise<void>;
373
- constructor(request: () => Promise<void>);
422
+ readonly request: (signal: AbortSignal) => Promise<void>;
423
+ readonly timeoutMs: number;
424
+ constructor(request: (signal: AbortSignal) => Promise<void>, timeoutMs?: number);
374
425
  enqueue(): void;
375
426
  flush(): Promise<void>;
376
427
  }
@@ -448,6 +499,7 @@ export declare class AgentSession {
448
499
  peekQueueInvoker(): ((input: unknown) => Promise<unknown> | unknown) | undefined;
449
500
  peekStandingResolveHandler(): ((input: unknown) => Promise<unknown> | unknown) | undefined;
450
501
  setStandingResolveHandler(handler: ((input: unknown) => Promise<unknown> | unknown) | null): void;
502
+ setSdkPlanModeHandler(handler: ((on: boolean) => Promise<PlanModeState | undefined>) | null): void;
451
503
  /** Provider-scoped mutable state store for transport/session caches. */
452
504
  get providerSessionState(): Map<string, ProviderSessionState>;
453
505
  /** Suspend provider state without closing it while a temporary model is active. */
@@ -499,6 +551,8 @@ export declare class AgentSession {
499
551
  * react to (e.g. background queue flush failures).
500
552
  */
501
553
  emitNotice(level: "info" | "warning" | "error", message: string, source?: string): void;
554
+ /** Await all transformations queued by externally emitted tool results. */
555
+ awaitPendingContextTransformations(): Promise<void>;
502
556
  /**
503
557
  * Subscribe to agent events.
504
558
  * Session persistence is handled internally (saves messages on message_end).
@@ -541,7 +595,7 @@ export declare class AgentSession {
541
595
  get serviceTier(): ServiceTier | undefined;
542
596
  /** Whether agent is currently streaming a response */
543
597
  get isStreaming(): boolean;
544
- /** Wait until streaming and deferred recovery work are fully settled. */
598
+ /** Wait until streaming and session settlement work are fully settled. */
545
599
  waitForIdle(): Promise<void>;
546
600
  drainAsyncJobDeliveriesForAcp(options?: {
547
601
  timeoutMs?: number;
@@ -603,15 +657,7 @@ export declare class AgentSession {
603
657
  * Get all configured tool names (built-in via --tools or default, plus custom tools).
604
658
  */
605
659
  getAllToolNames(): string[];
606
- isMCPDiscoveryEnabled(): boolean;
607
- /** @deprecated Use {@link getDiscoverableTools} with `{ source: "mcp" }` instead.
608
- * Preserves the legacy `description`-bearing MCP shape for back-compat callers. */
609
- getDiscoverableMCPTools(): DiscoverableMCPTool[];
610
- /** @deprecated Use {@link getDiscoverableToolSearchIndex} instead.
611
- * Returns the legacy MCP search index whose documents expose `tool.description`. */
612
- getDiscoverableMCPSearchIndex(): DiscoverableMCPSearchIndex;
613
660
  getSelectedMCPToolNames(): string[];
614
- activateDiscoveredMCPTools(toolNames: string[]): Promise<string[]>;
615
661
  isToolDiscoveryEnabled(): boolean;
616
662
  getDiscoverableTools(filter?: {
617
663
  source?: DiscoverableTool["source"];
@@ -657,6 +703,7 @@ export declare class AgentSession {
657
703
  get hasPostPromptWork(): boolean;
658
704
  /** All messages including custom types like BashExecutionMessage */
659
705
  get messages(): AgentMessage[];
706
+ get transcriptPromptGeneration(): number;
660
707
  /** Main startup calls this exactly once, after a strict open returned `kind: "opened"`. */
661
708
  continuePersistedHistory(): Promise<void>;
662
709
  buildDisplaySessionContext(): SessionContext;
@@ -689,7 +736,7 @@ export declare class AgentSession {
689
736
  args?: string;
690
737
  lineCount?: number;
691
738
  }>;
692
- setSdkPlanMode(on: boolean): PlanModeState | undefined;
739
+ setSdkPlanMode(on: boolean): Promise<PlanModeState | undefined>;
693
740
  operateGoal(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
694
741
  getTranscript(): Array<{
695
742
  id: string;
@@ -755,6 +802,10 @@ export declare class AgentSession {
755
802
  followUp(text: string, images?: ImageContent[], options?: Pick<PromptOptions, "followUpQueuePolicy">): Promise<void>;
756
803
  queueDeferredMessage(message: CustomMessage): void;
757
804
  queueDeferredMessageForTests(message: CustomMessage, triggerTurn?: boolean): void;
805
+ /** Read-only test seam for the hidden next-turn context queue. */
806
+ getPendingNextTurnMessagesForTests(): readonly CustomMessage[];
807
+ /** Test-only abort outcome override; undefined retains the production abort race. */
808
+ setCancelAndSubmitAbortOutcomeProviderForTests(provider: (() => Promise<AbortOutcome>) | undefined): void;
758
809
  /**
759
810
  * Send a custom message to the session. Creates a CustomMessageEntry.
760
811
  *
@@ -835,19 +886,17 @@ export declare class AgentSession {
835
886
  runMidRunMaintenanceForTests(context: AgentContext, lifecycle?: MidRunMaintenanceLifecycle): Promise<MidRunMaintenanceOutcome>;
836
887
  /** Test seam: estimate mid-run context tokens for a given context view. */
837
888
  estimateMidRunContextTokensForTests(messages: readonly AgentMessage[]): number;
838
- /**
839
- * Abort current operation and wait for agent to become idle.
840
- */
889
+ /** Abort current operation and preserve the established void/rethrow contract. */
841
890
  abort(options?: {
842
891
  goalReason?: "interrupted" | "internal";
843
892
  timeoutMs?: number;
844
893
  cause?: "user_interrupt" | "new_session" | "session_switch" | "compaction" | "handoff" | "tool_abort" | "internal";
845
- /** Suppress the "Operation aborted" line on the resulting aborted message
846
- * by stamping `SILENT_ABORT_MARKER`. Used when Esc consumes a queued steer
847
- * and resumes via steer-on-interrupt, so the interrupt reads as a quiet
848
- * hand-off rather than a failure. */
849
894
  silent?: boolean;
850
895
  }): Promise<void>;
896
+ /** Atomically interrupt the active run and make text the next prompt. */
897
+ cancelAndSubmit(text: string, options?: {
898
+ queuedEntryId?: string;
899
+ }): Promise<CancelAndSubmitOutcome>;
851
900
  /**
852
901
  * Start a new session, optionally with initial messages and parent tracking.
853
902
  * Clears all messages and starts a new session.
@@ -948,6 +997,8 @@ export declare class AgentSession {
948
997
  * @returns The new model info, or undefined if only one model available
949
998
  */
950
999
  cycleModel(direction?: "forward" | "backward"): Promise<ModelCycleResult | undefined>;
1000
+ /** Number of configured role-model candidates that can be cycled. */
1001
+ getRoleModelCycleCandidateCount(roleOrder?: readonly string[]): number;
951
1002
  /**
952
1003
  * Cycle through configured role models in a fixed order.
953
1004
  * Skips missing roles.
@@ -1193,27 +1244,11 @@ export declare class AgentSession {
1193
1244
  emitSubagentSteerRelayObservation(record: CustomMessage): void;
1194
1245
  /**
1195
1246
  * Run a single ephemeral side-channel turn against this session's current
1196
- * model + system prompt + history. No tools are used; the side request
1197
- * does not block on, or interfere with, any in-flight main turn. The
1198
- * session's history and persisted state are NOT modified by this call.
1199
- *
1200
- * Used by `respondAsBackground` (IRC) and `BtwController` (`/btw`) to share
1201
- * the snapshot + stream pipeline. The snapshot includes any in-flight
1202
- * streaming assistant text so the model sees the half-finished response
1203
- * rather than missing context.
1204
- */
1205
- runEphemeralTurn(args: {
1206
- promptText: string;
1207
- onTextDelta?: (delta: string) => void;
1208
- signal?: AbortSignal;
1209
- /** Defer the successful roster-claim commit until the caller accepts its exchange. */
1210
- deferRosterCommit?: boolean;
1211
- }): Promise<{
1212
- replyText: string;
1213
- assistantMessage: AssistantMessage;
1214
- commitRosterClaim?: () => void;
1215
- releaseRosterClaim?: () => void;
1216
- }>;
1247
+ * model + system prompt + history. No tools are used and session history is
1248
+ * not modified. Background turns retain the IRC/session behavior used by
1249
+ * autoreplies; `/btw` turns use an isolated committed-context policy.
1250
+ */
1251
+ runEphemeralTurn(args: EphemeralTurnArgs): Promise<EphemeralTurnResult>;
1217
1252
  /**
1218
1253
  * Reload the current session from disk.
1219
1254
  *
@@ -98,4 +98,11 @@ export declare class AgentStorage {
98
98
  * Deletes expired cache entries. Call periodically for cleanup.
99
99
  */
100
100
  cleanExpiredCache(): void;
101
+ /**
102
+ * Release prepared statements and the shared SQLite handle.
103
+ *
104
+ * AgentStorage instances are cached by path, so closing also evicts this
105
+ * instance and allows a later open() to create a fresh handle.
106
+ */
107
+ close(): void;
101
108
  }
@@ -1,4 +1,4 @@
1
- export type FallbackTriggerClass = "rate_limit" | "quota" | "auth" | "server" | "other";
1
+ import type { FallbackTriggerClass } from "@gajae-code/ai/utils/fallback-transport";
2
2
  /** Immutable configured fallback intent. Transient attempt state never belongs here. */
3
3
  export interface ConfiguredFallbackChain {
4
4
  role: string;
@@ -30,11 +30,14 @@ export declare class FallbackChainController {
30
30
  }>;
31
31
  exhaustedForTurn: boolean;
32
32
  constructor(chain: ConfiguredFallbackChain, maxAttempts: number);
33
+ get totalAttemptsUsed(): number;
33
34
  currentSelector(): string | undefined;
34
35
  onResolutionSkip(reason: string): boolean;
35
36
  /** Charge an upstream request at its concrete transport boundary. */
36
37
  onAttemptStarted(): void;
37
- /** Start a logically new request without losing its sticky selected entry. */
38
+ /** Remove the current started request from fallback-policy accounting without erasing prior failures. */
39
+ discardStartedAttempt(): void;
40
+ /** Start a logically new request with a fresh fallback-chain budget. */
38
41
  resetAttemptBudget(): void;
39
42
  /** Seed a controller from auth-aware resolution without charging requests. */
40
43
  seedResolution(activeIndex: number, skips: Array<{
@@ -43,6 +46,11 @@ export declare class FallbackChainController {
43
46
  }>): void;
44
47
  onAttemptFailure(triggerClass: FallbackTriggerClass, reason: string): FallbackFailureResult;
45
48
  advance(): boolean;
49
+ /**
50
+ * Restore the entry that just advanced when credential rotation permits a retry.
51
+ * The chain-wide budget and failure history remain charged.
52
+ */
53
+ restorePreviousEntryForRetry(): boolean;
46
54
  isExhausted(): boolean;
47
55
  resetForNewTurn(): void;
48
56
  resetSticky(): void;
@@ -0,0 +1,102 @@
1
+ import type { ResumeSessionIdentity } from "../session-manager";
2
+ export declare const MANAGED_SESSION_LAYOUT_VERSION: 2;
3
+ export declare const MANAGED_SESSION_IDENTITY_VERSION: 1;
4
+ export declare const MANAGED_SESSION_BINDING_FILE = ".gjc-managed-session-scope.v2.json";
5
+ export interface ManagedScope {
6
+ apiVersion: 1;
7
+ layoutVersion: 2;
8
+ identityVersion: 1;
9
+ agentDir: string;
10
+ sessionsRoot: string;
11
+ canonicalCwd: string;
12
+ legacyLexicalCwd: string;
13
+ directoryName: string;
14
+ directoryPath: string;
15
+ platform: "posix" | "win32";
16
+ }
17
+ export type ManagedMigrationPolicy = "copy-retain" | "disabled";
18
+ export type ManagedScopeErrorCode = "cwd_missing" | "cwd_not_directory" | "identity_unavailable" | "network_unsupported" | "sessions_root_unavailable" | "binding_conflict" | "binding_invalid";
19
+ export type ManagedScopeResolution = {
20
+ kind: "resolved";
21
+ scope: ManagedScope;
22
+ } | {
23
+ kind: "error";
24
+ code: ManagedScopeErrorCode;
25
+ message: string;
26
+ };
27
+ export interface ManagedCandidate {
28
+ sessionId: string;
29
+ path: string;
30
+ cwd: string;
31
+ provenance: "v2" | "legacy";
32
+ identity: ResumeSessionIdentity;
33
+ migrationState: "native_v2" | "legacy_unmigrated" | "migrated_v2";
34
+ }
35
+ export type ManagedCandidateListing = {
36
+ kind: "complete";
37
+ scope: ManagedScope;
38
+ owned: readonly ManagedCandidate[];
39
+ foreignCount: number;
40
+ invalid: readonly {
41
+ code: string;
42
+ }[];
43
+ } | {
44
+ kind: "error";
45
+ code: "scan_failed" | "unsafe_root" | "invalid_candidate";
46
+ message: string;
47
+ };
48
+ export type ManagedOpenFailure = "migration_busy" | "binding_conflict" | "binding_invalid" | "destination_conflict" | "source_changed" | "unsafe_artifacts" | "durability_failed" | "migration_retired" | "legacy_migration_disabled" | "managed_storage_unsupported";
49
+ export type ManagedOpenCandidateResult = {
50
+ kind: "opened";
51
+ path: string;
52
+ candidate: ManagedCandidate;
53
+ migrated: boolean;
54
+ } | {
55
+ kind: "error";
56
+ code: ManagedOpenFailure;
57
+ message: string;
58
+ };
59
+ export type ManagedDeleteCandidateResult = {
60
+ kind: "deleted";
61
+ tombstonePath: string;
62
+ } | {
63
+ kind: "already_deleted";
64
+ tombstonePath: string;
65
+ } | {
66
+ kind: "error";
67
+ code: ManagedOpenFailure;
68
+ message: string;
69
+ };
70
+ declare function scopeDigest(platform: "posix" | "win32", canonicalPath: string): string;
71
+ export declare const computeManagedScopeDigest: typeof scopeDigest;
72
+ /**
73
+ * Resolve benign symlinks in the deepest existing ancestor of a trusted storage
74
+ * root (e.g. macOS `/var -> /private/var`, or a symlinked `$HOME`) while keeping
75
+ * any not-yet-created tail verbatim. The native owner-only primitive and the
76
+ * session-storage reparse guard traverse with `O_NOFOLLOW` and reject every
77
+ * symlink component, so the trusted root must be canonical before it reaches
78
+ * them; canonicalizing only the existing prefix never follows an
79
+ * attacker-plantable component below the root.
80
+ */
81
+ export declare function canonicalizeTrustedPath(target: string): string;
82
+ export declare function resolveManagedScope(input: {
83
+ cwd: string;
84
+ agentDir: string;
85
+ sessionsRoot: string;
86
+ }): ManagedScopeResolution;
87
+ export declare function ensureManagedScope(scope: ManagedScope): Promise<ManagedScopeResolution>;
88
+ /** Synchronously create and validate the v2 binding before a default session writer exists. */
89
+ export declare function prepareManagedSessionScopeForWriteSync(scope: ManagedScope): ManagedScopeResolution;
90
+ export declare function listManagedCandidates(scope: ManagedScope): ManagedCandidateListing;
91
+ /** Resume tombstoned cleanup under its original operation lease without restoring retired candidates. */
92
+ export declare function reconcileManagedTombstones(scope: ManagedScope): Promise<void>;
93
+ /** Create the v2 binding and private write protocol directories before managed writes. */
94
+ export declare function prepareManagedSessionScopeForWrite(scope: ManagedScope): Promise<ManagedScopeResolution>;
95
+ /**
96
+ * Open a validated candidate for mutation. Legacy transcripts are copied exactly once
97
+ * into v2 and retained at their original location; no transcript data is merged.
98
+ */
99
+ export declare function openManagedCandidateForWrite(scope: ManagedScope, candidate: ManagedCandidate, migrationPolicy?: ManagedMigrationPolicy): Promise<ManagedOpenCandidateResult>;
100
+ /** Tombstone a verified managed candidate before exact-identity deletion. */
101
+ export declare function deleteManagedSessionCandidate(scope: ManagedScope, candidate: ManagedCandidate): Promise<ManagedDeleteCandidateResult>;
102
+ export {};
@@ -0,0 +1,38 @@
1
+ export declare const MANAGED_ARTIFACT_MAX_DEPTH = 32;
2
+ export declare const MANAGED_ARTIFACT_MAX_FILES = 10000;
3
+ export declare const MANAGED_ARTIFACT_MAX_FILE_BYTES: number;
4
+ export declare const MANAGED_ARTIFACT_MAX_TOTAL_BYTES: number;
5
+ export type ManagedStorageFailure = "migration_busy" | "binding_conflict" | "binding_invalid" | "destination_conflict" | "source_changed" | "unsafe_artifacts" | "durability_failed" | "migration_retired" | "managed_storage_unsupported";
6
+ export interface ManagedStorageLock {
7
+ path: string;
8
+ attemptId: string;
9
+ assertOwned(): void;
10
+ release(): Promise<void>;
11
+ }
12
+ export interface ManagedFileSnapshot {
13
+ bytes: Buffer;
14
+ identity: {
15
+ dev: bigint;
16
+ ino: bigint;
17
+ size: number;
18
+ mtimeNs: bigint;
19
+ };
20
+ }
21
+ export declare function shouldFsyncManagedDirectory(platform?: NodeJS.Platform): boolean;
22
+ /** Create a managed directory and fail closed unless its owner-only mode/ACL verifies. */
23
+ export declare function ensureManagedDirectory(pathname: string): void;
24
+ /** Captures header/hash/copy input from one no-follow descriptor and rechecks the pathname before use. */
25
+ export declare function captureManagedFileNoFollow(pathname: string): ManagedFileSnapshot;
26
+ /** Atomically publishes bytes without replacing an existing destination. */
27
+ export declare function publishManagedFileNoReplace(destination: string, bytes: Uint8Array, assertOwned?: () => void): Promise<void>;
28
+ export declare function publishManagedFileNoReplaceSync(destination: string, bytes: Uint8Array): void;
29
+ /** Copy the exact bytes captured from one no-follow source descriptor. */
30
+ export declare function copyManagedFileNoReplace(source: string, destination: string, snapshot?: ManagedFileSnapshot): Promise<void>;
31
+ /** Acquire a lease lock with bounded wait, heartbeats, conservative stale reclaim, and fencing. */
32
+ export declare function acquireManagedLock(locksDirectory: string, name: string): Promise<ManagedStorageLock>;
33
+ /** Bounds a no-follow artifact tree before it can be copied or deleted. */
34
+ export declare function validateManagedArtifactTree(root: string): void;
35
+ /** Flush a copied managed artifact tree, including empty directories, before publishing its receipt. */
36
+ export declare function fsyncManagedArtifactTree(root: string): void;
37
+ export declare function publishManagedTombstone(destination: string, record: Record<string, unknown>, assertOwned?: () => void): Promise<void>;
38
+ export declare function unlinkManagedFileVerified(pathname: string, expected: ManagedFileSnapshot["identity"]): Promise<void>;
@@ -10,6 +10,14 @@ import type { AssistantMessage, ImageContent, Message, MessageAttribution, TextC
10
10
  export { type BranchSummaryMessage, type CompactionSummaryMessage, createBranchSummaryMessage, createCompactionSummaryMessage, } from "@gajae-code/agent-core/compaction/messages";
11
11
  import type { LoadedSubskillActivation } from "../extensibility/gjc-plugins";
12
12
  import type { OutputMeta } from "../tools/output-meta";
13
+ /**
14
+ * Encode untrusted values embedded in prompt markup. Control and bidi characters become visible
15
+ * escape sequences so they cannot alter markup structure or display. Isolated UTF-16 surrogates
16
+ * are also escaped; valid Unicode pairs remain intact.
17
+ */
18
+ export declare function escapePromptMetadata(value: string, options?: {
19
+ preserveNewlines?: boolean;
20
+ }): string;
13
21
  export declare const SKILL_PROMPT_MESSAGE_TYPE = "skill-prompt";
14
22
  export interface SkillPromptDetails {
15
23
  name: string;
@@ -58,6 +66,14 @@ export declare const INTERNAL_DETAILS_FIELDS: readonly ["__pendingDisplayTag"];
58
66
  * (null/non-object, or no listed fields present) so callers don't pay a
59
67
  * clone cost on the common path. */
60
68
  export declare function stripInternalDetailsFields<T>(details: T | undefined): T | undefined;
69
+ export declare const PRE_ADMISSION_ARTIFACT_SPILL_HEAD_BYTES = 4096;
70
+ export declare const PRE_ADMISSION_ARTIFACT_SPILL_TAIL_BYTES = 4096;
71
+ /**
72
+ * Build the deterministic inline receipt for a tool result saved before the
73
+ * next provider context is constructed. Byte boundaries never split UTF-8
74
+ * code points, so head/tail recovery remains readable for emoji and CJK text.
75
+ */
76
+ export declare function createPreAdmissionArtifactSpillPreview(fullText: string, artifactId: string, digest: string): string;
61
77
  /**
62
78
  * Message type for bash executions via the ! command.
63
79
  */
@@ -0,0 +1,14 @@
1
+ import type { SessionContext, SessionEntry, SessionManager, SessionTreeNode } from "./session-manager";
2
+ /**
3
+ * Opaque capability for zero-copy session snapshots. This module is deliberately
4
+ * excluded from package exports; only trusted in-package readers may use it.
5
+ */
6
+ export declare const sessionManagerReadCapability: unique symbol;
7
+ export interface SessionManagerReadAccess {
8
+ getEntries(): readonly SessionEntry[];
9
+ getSessionContext(): Readonly<SessionContext>;
10
+ getTree(): SessionTreeNode[];
11
+ }
12
+ export declare function getEntriesForInternalRead(manager: SessionManager): readonly SessionEntry[];
13
+ export declare function getSessionContextForInternalRead(manager: SessionManager): Readonly<SessionContext>;
14
+ export declare function getTreeForInternalRead(manager: SessionManager): SessionTreeNode[];