@gajae-code/coding-agent 0.18.11 → 0.19.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 (462) hide show
  1. package/CHANGELOG.md +760 -0
  2. package/dist/types/async/job-manager.d.ts +7 -3
  3. package/dist/types/async/result-formatting.d.ts +2 -0
  4. package/dist/types/autoresearch/git.d.ts +1 -1
  5. package/dist/types/capability/fs.d.ts +2 -2
  6. package/dist/types/capability/rule.d.ts +7 -2
  7. package/dist/types/cli/accounts-cli.d.ts +2 -2
  8. package/dist/types/cli/append-system-prompt.d.ts +6 -0
  9. package/dist/types/cli/args.d.ts +7 -2
  10. package/dist/types/cli/customize-doctor-precedence.d.ts +16 -0
  11. package/dist/types/cli/customize-doctor.d.ts +4 -3
  12. package/dist/types/cli/doctor/install-repairs.d.ts +4 -1
  13. package/dist/types/cli/install-activation.d.ts +10 -4
  14. package/dist/types/cli/public-command-errors.d.ts +2 -0
  15. package/dist/types/cli/root-flags.d.ts +0 -12
  16. package/dist/types/cli/update-cli.d.ts +21 -3
  17. package/dist/types/cli-main.d.ts +0 -6
  18. package/dist/types/cli-ordinary.d.ts +2 -2
  19. package/dist/types/commands/accounts.d.ts +2 -1
  20. package/dist/types/commands/launch.d.ts +0 -6
  21. package/dist/types/commands/migrate.d.ts +1 -1
  22. package/dist/types/commands/sdk.d.ts +13 -0
  23. package/dist/types/commit/changelog/index.d.ts +1 -0
  24. package/dist/types/commit/map-reduce/index.d.ts +4 -4
  25. package/dist/types/config/autorouting-tier-map.d.ts +53 -1
  26. package/dist/types/config/config-hot-reload-trust.d.ts +12 -0
  27. package/dist/types/config/config-hot-reload.d.ts +44 -0
  28. package/dist/types/config/file-lock.d.ts +52 -3
  29. package/dist/types/config/model-discovery-manager.d.ts +2 -0
  30. package/dist/types/config/model-profile-activation.d.ts +79 -9
  31. package/dist/types/config/model-registry.d.ts +72 -8
  32. package/dist/types/config/model-resolver.d.ts +7 -4
  33. package/dist/types/config/models-config-schema.d.ts +10 -0
  34. package/dist/types/config/settings-schema.d.ts +57 -4
  35. package/dist/types/config/settings.d.ts +33 -1
  36. package/dist/types/coordinator-mcp/server.d.ts +4 -0
  37. package/dist/types/customization/import.d.ts +2 -0
  38. package/dist/types/customization/types.d.ts +1 -1
  39. package/dist/types/dap/config.d.ts +8 -4
  40. package/dist/types/dap/session.d.ts +11 -2
  41. package/dist/types/debug/system-info.d.ts +6 -1
  42. package/dist/types/discovery/helpers.d.ts +7 -2
  43. package/dist/types/discovery/mcp-compat.d.ts +3 -1
  44. package/dist/types/edit/index.d.ts +5 -0
  45. package/dist/types/edit/modes/patch.d.ts +14 -0
  46. package/dist/types/edit/modes/replace.d.ts +3 -0
  47. package/dist/types/eval/py/runtime.d.ts +9 -0
  48. package/dist/types/exec/bash-executor.d.ts +12 -0
  49. package/dist/types/export/ttsr.d.ts +19 -0
  50. package/dist/types/extensibility/extensions/types.d.ts +5 -1
  51. package/dist/types/extensibility/slash-commands.d.ts +1 -0
  52. package/dist/types/gjc-runtime/managed-owner-admission.d.ts +3 -0
  53. package/dist/types/gjc-runtime/ralplan-current-final.d.ts +54 -0
  54. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +5 -0
  55. package/dist/types/gjc-runtime/session-state-lock.d.ts +2 -0
  56. package/dist/types/gjc-runtime/state-runtime.d.ts +0 -2
  57. package/dist/types/gjc-runtime/tmux-sessions.d.ts +24 -0
  58. package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +6 -0
  59. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +1 -0
  60. package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
  61. package/dist/types/hindsight/content.d.ts +5 -6
  62. package/dist/types/internal-urls/types.d.ts +2 -0
  63. package/dist/types/lsp/clients/swiftlint-client.d.ts +0 -4
  64. package/dist/types/main.d.ts +23 -18
  65. package/dist/types/migrate/action-planner.d.ts +10 -1
  66. package/dist/types/migrate/adapters/codex.d.ts +2 -1
  67. package/dist/types/migrate/adapters/index.d.ts +42 -1
  68. package/dist/types/migrate/executor.d.ts +3 -1
  69. package/dist/types/migrate/hook-module.d.ts +23 -0
  70. package/dist/types/migrate/report.d.ts +2 -1
  71. package/dist/types/migrate/types.d.ts +82 -3
  72. package/dist/types/modes/components/agent-dashboard.d.ts +1 -1
  73. package/dist/types/modes/components/model-selector.d.ts +43 -0
  74. package/dist/types/modes/components/settings-selector.d.ts +6 -0
  75. package/dist/types/modes/controllers/selector-controller.d.ts +2 -0
  76. package/dist/types/modes/prompt-suggestion-controller.d.ts +1 -1
  77. package/dist/types/modes/theme/theme.d.ts +1 -0
  78. package/dist/types/modes/utils/host-status.d.ts +15 -11
  79. package/dist/types/runtime-mcp/content-limits.d.ts +4 -0
  80. package/dist/types/runtime-mcp/manager.d.ts +7 -0
  81. package/dist/types/runtime-mcp/plugin-mcp-name-filter.d.ts +22 -0
  82. package/dist/types/runtime-mcp/project-host-values.d.ts +11 -5
  83. package/dist/types/runtime-mcp/tool-bridge.d.ts +4 -0
  84. package/dist/types/sdk/broker/broker-exit.d.ts +3 -3
  85. package/dist/types/sdk/broker/broker.d.ts +29 -2
  86. package/dist/types/sdk/broker/daemon-entry.d.ts +11 -1
  87. package/dist/types/sdk/broker/doctor-restart.d.ts +1 -1
  88. package/dist/types/sdk/broker/ensure.d.ts +141 -9
  89. package/dist/types/sdk/broker/hop.d.ts +45 -0
  90. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +18 -10
  91. package/dist/types/sdk/broker/lifecycle.d.ts +22 -0
  92. package/dist/types/sdk/broker/lock-host-identity.d.ts +5 -0
  93. package/dist/types/sdk/broker/session-index.d.ts +6 -1
  94. package/dist/types/sdk/broker/transport.d.ts +2 -0
  95. package/dist/types/sdk/bus/chat-command-policy.d.ts +2 -1
  96. package/dist/types/sdk/bus/index.d.ts +44 -0
  97. package/dist/types/sdk/bus/reconciliation-store.d.ts +10 -0
  98. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -1
  99. package/dist/types/sdk/bus/telegram-daemon.d.ts +2 -0
  100. package/dist/types/sdk/bus/threaded-render.d.ts +2 -1
  101. package/dist/types/sdk/cli/session-cli.d.ts +0 -1
  102. package/dist/types/sdk/host/control/operations.d.ts +5 -1
  103. package/dist/types/sdk/host/events.d.ts +4 -0
  104. package/dist/types/sdk/host/host.d.ts +2 -1
  105. package/dist/types/sdk/host/prompt-image-upload.d.ts +43 -0
  106. package/dist/types/sdk/host/session-runtime.d.ts +40 -8
  107. package/dist/types/sdk/host/surface-policy.d.ts +2 -1
  108. package/dist/types/sdk/lifecycle/service.d.ts +12 -0
  109. package/dist/types/sdk/prompt-deadline-flush.d.ts +42 -4
  110. package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -0
  111. package/dist/types/sdk/prompt-status.d.ts +11 -4
  112. package/dist/types/sdk/protocol/adapter-validation.d.ts +10 -4
  113. package/dist/types/sdk/reconciliation-extensions.d.ts +1 -1
  114. package/dist/types/sdk/session-list.d.ts +1 -1
  115. package/dist/types/session/agent-session.d.ts +107 -9
  116. package/dist/types/session/internal/managed-session-scope.d.ts +2 -2
  117. package/dist/types/session/internal/managed-session-storage.d.ts +1 -1
  118. package/dist/types/session/internal/native-publish-outcome.d.ts +1 -1
  119. package/dist/types/session/messages.d.ts +5 -1
  120. package/dist/types/session/session-manager.d.ts +29 -3
  121. package/dist/types/session/startup-auth-config.d.ts +24 -2
  122. package/dist/types/session/streaming-output.d.ts +11 -0
  123. package/dist/types/session/terminal-abort.d.ts +3 -1
  124. package/dist/types/session-import/service.d.ts +1 -1
  125. package/dist/types/skill-state/workflow-mutation-guard.d.ts +20 -4
  126. package/dist/types/slash-commands/helpers/mcp.d.ts +5 -0
  127. package/dist/types/slash-commands/helpers/provider-auth-status.d.ts +8 -0
  128. package/dist/types/ssh/ssh-executor.d.ts +8 -1
  129. package/dist/types/system-prompt.d.ts +3 -2
  130. package/dist/types/task/executor.d.ts +19 -2
  131. package/dist/types/task/role-body.d.ts +11 -0
  132. package/dist/types/tools/ast-edit-write-path.d.ts +10 -0
  133. package/dist/types/tools/atomic-file-write.d.ts +9 -7
  134. package/dist/types/tools/awaiting-input.d.ts +28 -0
  135. package/dist/types/tools/bash-allowed-prefixes.d.ts +17 -0
  136. package/dist/types/tools/bash-skill-urls.d.ts +4 -0
  137. package/dist/types/tools/bash.d.ts +7 -0
  138. package/dist/types/tools/descriptors.d.ts +15 -2
  139. package/dist/types/tools/fetch.d.ts +7 -1
  140. package/dist/types/tools/index.d.ts +2 -0
  141. package/dist/types/tools/irc.d.ts +5 -3
  142. package/dist/types/tools/python.d.ts +1 -1
  143. package/dist/types/tools/report-issue.d.ts +41 -0
  144. package/dist/types/tools/subagent.d.ts +23 -0
  145. package/dist/types/tools/tmux-self-injection-guard.d.ts +2 -0
  146. package/dist/types/tools/ultragoal-ask-guard.d.ts +1 -1
  147. package/dist/types/tools/write.d.ts +2 -0
  148. package/dist/types/utils/file-mentions.d.ts +5 -0
  149. package/dist/types/utils/image-limits.d.ts +7 -0
  150. package/dist/types/utils/image-loading.d.ts +0 -1
  151. package/dist/types/utils/open.d.ts +0 -1
  152. package/dist/types/utils/pasted-image-loading.d.ts +1 -5
  153. package/dist/types/utils/prompt-suggestion.d.ts +2 -2
  154. package/dist/types/utils/shell-snapshot.d.ts +2 -0
  155. package/dist/types/utils/title-generator.d.ts +13 -3
  156. package/dist/types/web/scrapers/types.d.ts +8 -1
  157. package/dist/types/web/search/providers/codex.d.ts +6 -7
  158. package/dist/types/web/search/providers/insane.d.ts +7 -1
  159. package/dist/types/web/search/providers/searxng.d.ts +5 -0
  160. package/package.json +10 -9
  161. package/scripts/acp-conformance-agent.ts +12 -2
  162. package/scripts/build-binary.ts +2 -1
  163. package/scripts/capture-subagent-compact-panel-showcase.ts +105 -0
  164. package/scripts/generate-docs-index.ts +8 -1
  165. package/scripts/generate-sdk-operation-inventory.ts +38 -4
  166. package/src/async/job-manager.ts +356 -56
  167. package/src/async/result-formatting.ts +40 -0
  168. package/src/autoresearch/git.ts +9 -2
  169. package/src/autoresearch/prompts/prompt-setup.md +1 -1
  170. package/src/capability/fs.ts +58 -22
  171. package/src/capability/index.ts +2 -2
  172. package/src/capability/rule.ts +11 -2
  173. package/src/cli/accounts-cli.ts +176 -8
  174. package/src/cli/append-system-prompt.ts +12 -0
  175. package/src/cli/args.ts +11 -7
  176. package/src/cli/auth-broker-cli.ts +21 -11
  177. package/src/cli/customize-doctor-precedence.ts +31 -0
  178. package/src/cli/customize-doctor.ts +49 -39
  179. package/src/cli/doctor/install-repairs.ts +35 -5
  180. package/src/cli/fast-help.ts +1 -3
  181. package/src/cli/install-activation.ts +47 -4
  182. package/src/cli/migrate-cli.ts +19 -6
  183. package/src/cli/public-command-errors.ts +6 -0
  184. package/src/cli/root-flags.ts +2 -4
  185. package/src/cli/stats-cli.ts +9 -5
  186. package/src/cli/update-cli.ts +471 -13
  187. package/src/cli-ordinary.ts +7 -2
  188. package/src/commands/accounts.ts +10 -5
  189. package/src/commands/harness.ts +25 -15
  190. package/src/commands/migrate.ts +3 -3
  191. package/src/commands/sdk.ts +277 -50
  192. package/src/commands/ultragoal.ts +16 -8
  193. package/src/commit/agentic/agent.ts +6 -6
  194. package/src/commit/analysis/conventional.ts +14 -5
  195. package/src/commit/changelog/index.ts +39 -1
  196. package/src/commit/map-reduce/index.ts +7 -7
  197. package/src/commit/message.ts +10 -3
  198. package/src/commit/pipeline.ts +12 -12
  199. package/src/config/autorouting-tier-map.ts +50 -1
  200. package/src/config/config-file.ts +106 -3
  201. package/src/config/config-hot-reload-trust.ts +148 -0
  202. package/src/config/config-hot-reload.ts +742 -0
  203. package/src/config/file-lock.ts +1615 -328
  204. package/src/config/keybindings.ts +154 -7
  205. package/src/config/model-bindings-applier.ts +85 -47
  206. package/src/config/model-discovery-manager.ts +10 -0
  207. package/src/config/model-profile-activation.ts +889 -148
  208. package/src/config/model-registry.ts +1706 -205
  209. package/src/config/model-resolver.ts +52 -22
  210. package/src/config/models-config-schema.ts +6 -0
  211. package/src/config/settings-schema.ts +73 -4
  212. package/src/config/settings.ts +460 -24
  213. package/src/coordinator-mcp/policy.ts +26 -1
  214. package/src/coordinator-mcp/server.ts +37 -2
  215. package/src/crash/sanitize.ts +7 -1
  216. package/src/customization/import.ts +279 -8
  217. package/src/customization/inventory.ts +24 -8
  218. package/src/customization/types.ts +1 -0
  219. package/src/dap/client.ts +3 -2
  220. package/src/dap/config.ts +31 -11
  221. package/src/dap/defaults.json +1 -1
  222. package/src/dap/session.ts +161 -36
  223. package/src/debug/crash-diagnostics.ts +89 -6
  224. package/src/debug/report-bundle.ts +90 -2
  225. package/src/debug/system-info.ts +8 -3
  226. package/src/defaults/gjc/extensions/grok-cli-vendor/src/shared/base-url.ts +21 -7
  227. package/src/discovery/agents-md.ts +1 -1
  228. package/src/discovery/builtin.ts +4 -3
  229. package/src/discovery/helpers.ts +25 -16
  230. package/src/discovery/mcp-compat.ts +120 -17
  231. package/src/edit/apply-patch/index.ts +12 -1
  232. package/src/edit/index.ts +204 -22
  233. package/src/edit/modes/patch.ts +214 -8
  234. package/src/edit/modes/replace.ts +136 -0
  235. package/src/eval/js/context-manager.ts +29 -3
  236. package/src/eval/js/worker-entry.ts +51 -18
  237. package/src/eval/py/executor.ts +14 -4
  238. package/src/eval/py/runner.py +144 -5
  239. package/src/eval/py/runtime.ts +44 -4
  240. package/src/exec/bash-executor.ts +81 -4
  241. package/src/exec/bash-shell-guardian.ts +4 -1
  242. package/src/exec/bash-shell-supervisor.ts +8 -4
  243. package/src/exec/isolated-shell.ts +5 -1
  244. package/src/exec/non-interactive-env.ts +0 -1
  245. package/src/export/html/index.ts +86 -6
  246. package/src/export/ttsr.ts +176 -1
  247. package/src/extensibility/custom-tools/wrapper.ts +3 -1
  248. package/src/extensibility/extensions/loader.ts +10 -1
  249. package/src/extensibility/extensions/ouroboros-ooo-bridge.ts +63 -1
  250. package/src/extensibility/extensions/types.ts +5 -1
  251. package/src/extensibility/hooks/loader.ts +10 -2
  252. package/src/extensibility/plugins/marketplace/fetcher.ts +2 -2
  253. package/src/extensibility/plugins/marketplace/manager.ts +36 -10
  254. package/src/extensibility/slash-commands.ts +5 -0
  255. package/src/gjc-runtime/gc-runtime.ts +37 -7
  256. package/src/gjc-runtime/launch-tmux.ts +30 -15
  257. package/src/gjc-runtime/launch-worktree.test.ts +148 -0
  258. package/src/gjc-runtime/launch-worktree.ts +101 -14
  259. package/src/gjc-runtime/managed-owner-admission.ts +46 -2
  260. package/src/gjc-runtime/ralplan-current-final.ts +294 -0
  261. package/src/gjc-runtime/ralplan-runtime.ts +95 -1
  262. package/src/gjc-runtime/session-resolution.ts +38 -6
  263. package/src/gjc-runtime/session-state-lock.ts +59 -14
  264. package/src/gjc-runtime/state-runtime.ts +23 -19
  265. package/src/gjc-runtime/state-writer.ts +109 -5
  266. package/src/gjc-runtime/tmux-sessions.ts +93 -13
  267. package/src/gjc-runtime/ultragoal-change-set.ts +90 -11
  268. package/src/gjc-runtime/ultragoal-guard.ts +9 -1
  269. package/src/gjc-runtime/ultragoal-runtime.ts +15 -5
  270. package/src/harness-control-plane/finalize.ts +11 -0
  271. package/src/harness-control-plane/receipt-spool.ts +105 -28
  272. package/src/harness-control-plane/storage.ts +124 -6
  273. package/src/hindsight/content.ts +116 -16
  274. package/src/hindsight/mental-models.ts +22 -10
  275. package/src/hindsight/state.ts +7 -4
  276. package/src/hooks/native-skill-hook.ts +17 -12
  277. package/src/internal-urls/artifact-protocol.ts +3 -1
  278. package/src/internal-urls/docs-index.generated.ts +23 -22
  279. package/src/internal-urls/local-protocol.ts +167 -8
  280. package/src/internal-urls/types.ts +2 -0
  281. package/src/lsp/client.ts +2 -1
  282. package/src/lsp/clients/biome-client.ts +2 -0
  283. package/src/lsp/clients/swiftlint-client.ts +2 -0
  284. package/src/lsp/index.ts +29 -0
  285. package/src/lsp/workspace-path.ts +23 -0
  286. package/src/main.ts +330 -92
  287. package/src/memories/index.ts +25 -2
  288. package/src/migrate/action-planner.ts +574 -2
  289. package/src/migrate/adapters/claude-code.ts +162 -5
  290. package/src/migrate/adapters/codex.ts +77 -7
  291. package/src/migrate/adapters/index.ts +258 -5
  292. package/src/migrate/adapters/opencode.ts +10 -1
  293. package/src/migrate/executor.ts +222 -7
  294. package/src/migrate/hook-module.ts +193 -0
  295. package/src/migrate/report.ts +63 -2
  296. package/src/migrate/types.ts +84 -4
  297. package/src/modes/DESIGN.md +51 -0
  298. package/src/modes/acp/acp-agent.ts +10 -1
  299. package/src/modes/acp/permission-mode.ts +18 -1
  300. package/src/modes/components/agent-dashboard.ts +20 -4
  301. package/src/modes/components/assistant-message.ts +55 -1
  302. package/src/modes/components/customization/customization-dashboard.ts +7 -0
  303. package/src/modes/components/customization/import-wizard.ts +29 -3
  304. package/src/modes/components/model-selector.ts +157 -103
  305. package/src/modes/components/settings-selector.ts +103 -37
  306. package/src/modes/components/welcome.ts +3 -1
  307. package/src/modes/controllers/command-controller.ts +300 -9
  308. package/src/modes/controllers/event-controller.ts +1 -1
  309. package/src/modes/controllers/extension-ui-controller.ts +31 -1
  310. package/src/modes/controllers/goal-mode-controller.ts +79 -10
  311. package/src/modes/controllers/input-controller.ts +2 -0
  312. package/src/modes/controllers/plan-mode-controller.ts +66 -11
  313. package/src/modes/controllers/runtime-mcp-command-controller.ts +7 -6
  314. package/src/modes/controllers/selector-controller.ts +76 -7
  315. package/src/modes/interactive-mode.ts +123 -4
  316. package/src/modes/prompt-suggestion-controller.ts +1 -1
  317. package/src/modes/runtime-init.ts +5 -1
  318. package/src/modes/theme/theme.ts +15 -0
  319. package/src/modes/utils/host-status.ts +21 -10
  320. package/src/prompts/agent-fragments/browser-aside.md +2 -2
  321. package/src/prompts/system/irc-incoming.md +3 -1
  322. package/src/prompts/tools/debug.md +1 -1
  323. package/src/prompts/tools/irc.md +1 -1
  324. package/src/prompts/tools/read.md +1 -1
  325. package/src/prompts/tools/report-issue.md +13 -0
  326. package/src/prompts/tools/task.md +1 -1
  327. package/src/runtime-credential-selector.ts +2 -2
  328. package/src/runtime-mcp/content-limits.ts +7 -0
  329. package/src/runtime-mcp/manager-pool.test.ts +5 -4
  330. package/src/runtime-mcp/manager.ts +40 -3
  331. package/src/runtime-mcp/oauth-flow.ts +32 -6
  332. package/src/runtime-mcp/plugin-mcp-name-filter.ts +62 -0
  333. package/src/runtime-mcp/project-host-values.ts +12 -8
  334. package/src/runtime-mcp/render.ts +16 -1
  335. package/src/runtime-mcp/tool-bridge.ts +194 -21
  336. package/src/runtime-mcp/transports/stdio.ts +2 -1
  337. package/src/sdk/broker/broker-exit.ts +10 -5
  338. package/src/sdk/broker/broker.ts +484 -85
  339. package/src/sdk/broker/daemon-entry.ts +338 -116
  340. package/src/sdk/broker/doctor-restart.ts +2 -1
  341. package/src/sdk/broker/ensure.ts +1214 -268
  342. package/src/sdk/broker/hop.ts +286 -0
  343. package/src/sdk/broker/lifecycle-ledger.ts +38 -11
  344. package/src/sdk/broker/lifecycle.ts +102 -6
  345. package/src/sdk/broker/lock-host-identity.ts +29 -0
  346. package/src/sdk/broker/session-index.ts +91 -16
  347. package/src/sdk/broker/transport.ts +17 -1
  348. package/src/sdk/bus/chat-command-policy.ts +16 -3
  349. package/src/sdk/bus/chat-daemon-control.ts +2 -2
  350. package/src/sdk/bus/index.ts +460 -35
  351. package/src/sdk/bus/reconciliation-store.ts +201 -8
  352. package/src/sdk/bus/session-control.ts +2 -0
  353. package/src/sdk/bus/slack-daemon.ts +105 -9
  354. package/src/sdk/bus/telegram-daemon-contract.ts +9 -1
  355. package/src/sdk/bus/telegram-daemon.ts +10 -2
  356. package/src/sdk/bus/threaded-render.ts +20 -1
  357. package/src/sdk/cli/session-cli.ts +23 -6
  358. package/src/sdk/host/control/dispatch.ts +13 -1
  359. package/src/sdk/host/control/operations.ts +10 -1
  360. package/src/sdk/host/events.ts +67 -4
  361. package/src/sdk/host/host.ts +8 -2
  362. package/src/sdk/host/prompt-image-upload.ts +438 -0
  363. package/src/sdk/host/sdk-surface-parity.test.ts +15 -0
  364. package/src/sdk/host/session-runtime.test.ts +1737 -129
  365. package/src/sdk/host/session-runtime.ts +684 -83
  366. package/src/sdk/host/surface-policy.ts +4 -0
  367. package/src/sdk/host/websocket-transport.lifecycle.test.ts +90 -2
  368. package/src/sdk/host/websocket-transport.ts +19 -7
  369. package/src/sdk/lifecycle/service.ts +15 -1
  370. package/src/sdk/prompt-deadline-flush.ts +78 -5
  371. package/src/sdk/prompt-deadline-manager.ts +68 -14
  372. package/src/sdk/prompt-status.ts +6 -4
  373. package/src/sdk/protocol/adapter-validation.ts +81 -12
  374. package/src/sdk/protocol/operation-inventory.generated.json +261 -2
  375. package/src/sdk/protocol/operation-registry.ts +33 -3
  376. package/src/sdk/reconciliation-extensions.ts +1 -0
  377. package/src/sdk/session-list.ts +1 -0
  378. package/src/sdk/session.ts +237 -97
  379. package/src/session/agent-session.ts +2726 -479
  380. package/src/session/history-storage.ts +182 -12
  381. package/src/session/internal/managed-session-scope.ts +173 -57
  382. package/src/session/internal/managed-session-storage.ts +85 -12
  383. package/src/session/internal/native-publish-outcome.ts +5 -1
  384. package/src/session/messages.ts +47 -6
  385. package/src/session/session-manager.ts +326 -19
  386. package/src/session/startup-auth-config.ts +116 -8
  387. package/src/session/streaming-output.ts +262 -4
  388. package/src/session/terminal-abort.ts +14 -2
  389. package/src/session-import/redact.ts +53 -2
  390. package/src/session-import/service.ts +1 -0
  391. package/src/skill-state/workflow-mutation-guard.ts +2145 -206
  392. package/src/slash-commands/builtin-registry.ts +21 -6
  393. package/src/slash-commands/helpers/credential-switch.ts +10 -5
  394. package/src/slash-commands/helpers/mcp.ts +11 -3
  395. package/src/slash-commands/helpers/provider-auth-status.ts +456 -0
  396. package/src/ssh/ssh-executor.ts +9 -2
  397. package/src/stt/recorder.ts +26 -9
  398. package/src/system-prompt.ts +61 -16
  399. package/src/task/executor.ts +115 -20
  400. package/src/task/index.ts +389 -175
  401. package/src/task/role-body.ts +84 -0
  402. package/src/task/token-log-mode.test.ts +162 -0
  403. package/src/task/token-log.ts +91 -2
  404. package/src/tools/archive-reader.ts +650 -37
  405. package/src/tools/ask.ts +1 -0
  406. package/src/tools/ast-edit-write-path.ts +64 -0
  407. package/src/tools/ast-edit.ts +18 -1
  408. package/src/tools/ast-grep.ts +7 -2
  409. package/src/tools/atomic-file-write.ts +46 -15
  410. package/src/tools/auto-generated-guard.ts +15 -3
  411. package/src/tools/awaiting-input.ts +114 -0
  412. package/src/tools/bash-allowed-prefixes.ts +214 -6
  413. package/src/tools/bash-interactive.ts +14 -2
  414. package/src/tools/bash-skill-urls.ts +58 -5
  415. package/src/tools/bash.ts +113 -26
  416. package/src/tools/browser/tab-worker.ts +39 -13
  417. package/src/tools/browser.ts +17 -7
  418. package/src/tools/cron.ts +10 -1
  419. package/src/tools/debug.ts +16 -8
  420. package/src/tools/descriptors.test.ts +44 -0
  421. package/src/tools/descriptors.ts +50 -6
  422. package/src/tools/eval.ts +15 -0
  423. package/src/tools/fetch.ts +93 -4
  424. package/src/tools/gh.ts +27 -12
  425. package/src/tools/image-gen.ts +20 -6
  426. package/src/tools/index.ts +2 -0
  427. package/src/tools/irc.ts +5 -3
  428. package/src/tools/monitor.ts +9 -1
  429. package/src/tools/output-meta.ts +74 -5
  430. package/src/tools/python.ts +1 -1
  431. package/src/tools/read.ts +26 -37
  432. package/src/tools/recipe/runner.ts +23 -12
  433. package/src/tools/render-utils.ts +2 -2
  434. package/src/tools/report-issue.ts +184 -0
  435. package/src/tools/search.ts +3 -2
  436. package/src/tools/ssh.ts +274 -8
  437. package/src/tools/subagent-render.ts +114 -12
  438. package/src/tools/subagent.ts +118 -5
  439. package/src/tools/tmux-self-injection-guard.ts +3301 -122
  440. package/src/tools/todo-write.ts +41 -3
  441. package/src/tools/tool-catalog.generated.ts +32 -4
  442. package/src/tools/ultragoal-ask-guard.ts +13 -1
  443. package/src/tools/write.ts +42 -3
  444. package/src/tui/tree-list.ts +15 -1
  445. package/src/utils/commit-message-generator.ts +12 -4
  446. package/src/utils/external-editor.ts +21 -7
  447. package/src/utils/file-mentions.ts +75 -7
  448. package/src/utils/git.ts +38 -7
  449. package/src/utils/image-limits.ts +8 -0
  450. package/src/utils/image-loading.ts +1 -1
  451. package/src/utils/open.ts +73 -4
  452. package/src/utils/pasted-image-loading.ts +9 -8
  453. package/src/utils/prompt-suggestion.ts +5 -4
  454. package/src/utils/shell-snapshot.ts +9 -1
  455. package/src/utils/title-generator.ts +72 -22
  456. package/src/web/scrapers/index.ts +3 -1
  457. package/src/web/scrapers/types.ts +8 -0
  458. package/src/web/scrapers/youtube.ts +3 -2
  459. package/src/web/search/index.ts +2 -1
  460. package/src/web/search/providers/codex.ts +29 -32
  461. package/src/web/search/providers/insane.ts +91 -28
  462. package/src/web/search/providers/searxng.ts +62 -10
@@ -1,4 +1,5 @@
1
1
  import type { Effort } from "@gajae-code/ai/model-thinking";
2
+ import { type CredentialPreferenceEntryValue } from "../session/startup-auth-config";
2
3
  import { type EditMode } from "../utils/edit-mode";
3
4
  import { type AutoroutingLocalIssue, type AutoroutingProvenance, type AutoroutingSetup, type AutoroutingTierMapInput } from "./autorouting-contract";
4
5
  import { type DurableModelProfileOwnership } from "./model-profile-ownership";
@@ -122,7 +123,11 @@ type RecordValueDef = {
122
123
  values: readonly string[];
123
124
  } | {
124
125
  type: "credential-selector";
126
+ } | {
127
+ type: "credential-preference-list";
125
128
  };
129
+ /** A provider's `auth.credentialPreferences` value: one account or a non-empty ordered list of entries. */
130
+ export type CredentialPreferenceSettingValue = string | CredentialPreferenceEntryValue[];
126
131
  interface ConstrainedRecordValueDef {
127
132
  type: "autorouting-selector-value";
128
133
  pattern: string;
@@ -198,6 +203,13 @@ export declare const SETTINGS_SCHEMA: {
198
203
  readonly type: "string";
199
204
  readonly default: undefined;
200
205
  };
206
+ readonly "auth.credentialPreferences": {
207
+ readonly type: "record";
208
+ readonly default: Record<string, CredentialPreferenceSettingValue>;
209
+ readonly valueSchema: {
210
+ readonly type: "credential-preference-list";
211
+ };
212
+ };
201
213
  readonly "session.directoryMigration": {
202
214
  readonly type: "enum";
203
215
  readonly values: readonly ["copy-retain", "disabled"];
@@ -237,6 +249,12 @@ export declare const SETTINGS_SCHEMA: {
237
249
  readonly description: "Grace period before a master-spawned child orphaned by confirmed master loss is closed.";
238
250
  readonly validate: (value: number) => boolean;
239
251
  };
252
+ readonly "sdk.brokerAbandonedGraceMs": {
253
+ readonly type: "number";
254
+ readonly default: 120000;
255
+ readonly description: "Grace before a detached broker with no client connection, no live session host, and no open spawn authority exits on its own. A supervised `gjc sdk broker run` service never reaps itself.";
256
+ readonly validate: (value: number) => boolean;
257
+ };
240
258
  readonly "notifications.enabled": {
241
259
  readonly type: "boolean";
242
260
  readonly default: false;
@@ -1565,12 +1583,12 @@ export declare const SETTINGS_SCHEMA: {
1565
1583
  };
1566
1584
  readonly serviceTier: {
1567
1585
  readonly type: "enum";
1568
- readonly values: readonly ["none", "auto", "default", "flex", "scale", "priority", "openai-only", "claude-only"];
1586
+ readonly values: readonly ["none", "auto", "default", "flex", "scale", "priority", "ultrafast", "openai-only", "claude-only"];
1569
1587
  readonly default: "none";
1570
1588
  readonly ui: {
1571
1589
  readonly tab: "model";
1572
1590
  readonly label: "Service Tier";
1573
- readonly description: 'Processing priority hint (none = omit). OpenAI accepts the tier values directly; Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.';
1591
+ readonly description: 'Processing priority hint (none = omit). OpenAI accepts the tier values directly; ultrafast is a 6x premium tier. Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.';
1574
1592
  readonly options: readonly [{
1575
1593
  readonly value: "none";
1576
1594
  readonly label: "None";
@@ -1591,6 +1609,10 @@ export declare const SETTINGS_SCHEMA: {
1591
1609
  readonly value: "scale";
1592
1610
  readonly label: "Scale";
1593
1611
  readonly description: "Scale Tier credits when available (OpenAI)";
1612
+ }, {
1613
+ readonly value: "ultrafast";
1614
+ readonly label: "Ultrafast";
1615
+ readonly description: "Ultrafast processing at a 6x premium (OpenAI)";
1594
1616
  }, {
1595
1617
  readonly value: "priority";
1596
1618
  readonly label: "Priority";
@@ -1608,7 +1630,7 @@ export declare const SETTINGS_SCHEMA: {
1608
1630
  };
1609
1631
  readonly "task.serviceTier": {
1610
1632
  readonly type: "enum";
1611
- readonly values: readonly ["inherit", "none", "auto", "default", "flex", "scale", "priority", "openai-only", "claude-only"];
1633
+ readonly values: readonly ["inherit", "none", "auto", "default", "flex", "scale", "priority", "ultrafast", "openai-only", "claude-only"];
1612
1634
  readonly default: "inherit";
1613
1635
  readonly ui: {
1614
1636
  readonly tab: "tasks";
@@ -1638,6 +1660,10 @@ export declare const SETTINGS_SCHEMA: {
1638
1660
  readonly value: "scale";
1639
1661
  readonly label: "Scale";
1640
1662
  readonly description: "Scale Tier credits when available (OpenAI)";
1663
+ }, {
1664
+ readonly value: "ultrafast";
1665
+ readonly label: "Ultrafast";
1666
+ readonly description: "Ultrafast processing at a 6x premium (OpenAI)";
1641
1667
  }, {
1642
1668
  readonly value: "priority";
1643
1669
  readonly label: "Priority";
@@ -1882,7 +1908,7 @@ export declare const SETTINGS_SCHEMA: {
1882
1908
  readonly ui: {
1883
1909
  readonly tab: "interaction";
1884
1910
  readonly label: "Prompt Suggestions";
1885
- readonly description: "Predict your likely next prompt after each turn (smol-model call) and show it as ghost text; Tab accepts";
1911
+ readonly description: "Predict your likely next prompt after each turn (one extra default-role model call) and show it as ghost text; Tab accepts";
1886
1912
  };
1887
1913
  };
1888
1914
  readonly "startup.quiet": {
@@ -3143,6 +3169,10 @@ export declare const SETTINGS_SCHEMA: {
3143
3169
  readonly type: "string";
3144
3170
  readonly default: undefined;
3145
3171
  };
3172
+ readonly "shellMinimizer.settingsHash": {
3173
+ readonly type: "string";
3174
+ readonly default: undefined;
3175
+ };
3146
3176
  readonly "shellMinimizer.only": {
3147
3177
  readonly type: "array";
3148
3178
  readonly default: string[];
@@ -3348,6 +3378,15 @@ export declare const SETTINGS_SCHEMA: {
3348
3378
  readonly description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering";
3349
3379
  };
3350
3380
  };
3381
+ readonly "reportIssue.enabled": {
3382
+ readonly type: "boolean";
3383
+ readonly default: false;
3384
+ readonly ui: {
3385
+ readonly tab: "tools";
3386
+ readonly label: "Tool issue reporting";
3387
+ readonly description: "Enable the report_issue tool: the model records tool behavior that contradicts the tool's description into the local ~/.gjc/tool-issues.db. Nothing is sent anywhere.";
3388
+ };
3389
+ };
3351
3390
  readonly "debug.enabled": {
3352
3391
  readonly type: "boolean";
3353
3392
  readonly default: true;
@@ -3870,6 +3909,10 @@ export declare const SETTINGS_SCHEMA: {
3870
3909
  readonly type: "array";
3871
3910
  readonly default: string[];
3872
3911
  };
3912
+ readonly "mcp.discoveryDeferAutoload": {
3913
+ readonly type: "boolean";
3914
+ readonly default: false;
3915
+ };
3873
3916
  readonly "mcp.notifications": {
3874
3917
  readonly type: "boolean";
3875
3918
  readonly default: false;
@@ -4101,6 +4144,15 @@ export declare const SETTINGS_SCHEMA: {
4101
4144
  }];
4102
4145
  };
4103
4146
  };
4147
+ readonly "task.compactSubagentPanel": {
4148
+ readonly type: "boolean";
4149
+ readonly default: false;
4150
+ readonly ui: {
4151
+ readonly tab: "tasks";
4152
+ readonly label: "Compact Subagent Panel";
4153
+ readonly description: "Collapse awaited subagents into one summary line (expand tool output to see each one) and refresh only when the summary changes";
4154
+ };
4155
+ };
4104
4156
  readonly "task.enableLsp": {
4105
4157
  readonly type: "boolean";
4106
4158
  readonly default: false;
@@ -4800,6 +4852,7 @@ export interface BashInterceptorRule {
4800
4852
  export interface ShellMinimizerSettings {
4801
4853
  enabled: boolean;
4802
4854
  settingsPath: string | undefined;
4855
+ settingsHash: string | undefined;
4803
4856
  only: string[];
4804
4857
  except: string[];
4805
4858
  maxCaptureBytes: number;
@@ -16,6 +16,7 @@ import { AgentStorage } from "../session/agent-storage";
16
16
  import { type EditMode, type EditVariantMatch } from "../utils/edit-mode";
17
17
  import { type CasReceipt } from "./atomic-yaml-patch";
18
18
  import { type AutoroutingEffective } from "./autorouting-contract";
19
+ import type { ConfigHotReloadFileSnapshot } from "./config-hot-reload";
19
20
  import { type ModelSelectorValue } from "./model-selector-value";
20
21
  import { type BashInterceptorRule, type GroupPrefix, type GroupTypeMap, type SettingPath, type SettingsSchemaReport, type SettingValue } from "./settings-schema";
21
22
  export type * from "./settings-schema";
@@ -24,6 +25,23 @@ export * from "./settings-schema";
24
25
  export interface RawSettings {
25
26
  [key: string]: unknown;
26
27
  }
28
+ /** Validated candidate view. `get` includes local patches and effective overlays. */
29
+ export interface SettingsGlobalConfigCandidate {
30
+ readonly configPath: string;
31
+ readonly diagnostics: SettingsSchemaReport;
32
+ get<P extends SettingPath>(settingPath: P): SettingValue<P>;
33
+ /** Candidate global values include pending local patches, but exclude other layers. */
34
+ getGlobal<P extends SettingPath>(settingPath: P): SettingValue<P> | undefined;
35
+ }
36
+ export interface SettingsConfigReloadPublication {
37
+ finalize(): void;
38
+ rollback(): void;
39
+ }
40
+ export declare class SettingsGlobalConfigReloadError extends Error {
41
+ readonly configPath: string | null;
42
+ readonly diagnostics?: SettingsSchemaReport | undefined;
43
+ constructor(message: string, configPath: string | null, diagnostics?: SettingsSchemaReport | undefined);
44
+ }
27
45
  /**
28
46
  * Test-only seams for the config-root workflow migration. Production code
29
47
  * never sets these; tests use them to interleave external filesystem changes
@@ -143,6 +161,18 @@ export declare class Settings implements NotificationSettingsReader {
143
161
  /** Effective merged autorouting state shared by settings diagnostics and routing policy. */
144
162
  getEffectiveAutorouting(): AutoroutingEffective;
145
163
  onChanged(listener: (path: SettingPath) => void): () => void;
164
+ /** The resolved global config.yml path, or null for in-memory settings. */
165
+ getGlobalConfigPath(): string | null;
166
+ /**
167
+ * Validate the watcher's exact snapshot without writing or rereading it.
168
+ * Rebase pending local patches after prior durable operations settle.
169
+ */
170
+ stageGlobalConfigReload(snapshot: ConfigHotReloadFileSnapshot): Promise<SettingsGlobalConfigCandidate>;
171
+ /**
172
+ * Publish a staged global config and its dependent synchronous model commit as
173
+ * one in-memory transaction. A thrown commit restores settings without hooks.
174
+ */
175
+ publishGlobalConfigReload(candidate: SettingsGlobalConfigCandidate, commitSync?: () => void): SettingsConfigReloadPublication;
146
176
  /** Whether durable settings mutations are permitted for the loaded configuration. */
147
177
  canWriteDurableConfig(): boolean;
148
178
  /** Whether this instance can publish a mutation to a durable config file. */
@@ -191,7 +221,9 @@ export declare class Settings implements NotificationSettingsReader {
191
221
  getAgentDir(): string;
192
222
  getPlansDirectory(): string;
193
223
  /**
194
- * Get shell configuration based on settings.
224
+ * Shell configuration for bash and the Python executor.
225
+ * `shellPath` comes from the user/global config only, so a project
226
+ * `.gjc/settings.json` cannot select the binary those executors run.
195
227
  */
196
228
  getShellConfig(): import("@gajae-code/utils/shell-config").ShellConfig;
197
229
  /**
@@ -125,6 +125,10 @@ interface CoordinatorEventInput {
125
125
  payloadRef?: string | null;
126
126
  metadata?: Record<string, unknown>;
127
127
  }
128
+ /** Test-only access for generated normalization and truncation properties. */
129
+ export declare function webhookEventDiagnosticTokenForTest(eventId: string, maxLength: number): string;
130
+ /** Test-only access for diagnostic record boundary coverage. */
131
+ export declare function appendEventWebhookDiagnosticForTest(namespaceDir: string, eventId: string, error: unknown): Promise<void>;
128
132
  /** Test-only helper that waits for startup replay and queued deliveries in a namespace. */
129
133
  export declare function awaitEventWebhookDeliveriesForTest(namespaceDir: string): Promise<void>;
130
134
  /** Test-only helper that waits for queued Codex wake publishes in a namespace. */
@@ -14,6 +14,8 @@ export interface BuildImportPreviewOptions {
14
14
  * plan. Pure reads only — nothing is written until `applyImport`.
15
15
  */
16
16
  export declare function buildImportPreview(options: BuildImportPreviewOptions): Promise<ImportPlan>;
17
+ /** Lexical shape of an import destination. Symlink checks are separate. */
18
+ export declare function importDestinationShapeAllowed(root: string, target: string): boolean;
17
19
  /**
18
20
  * Apply a confirmed plan. The transaction contract:
19
21
  *
@@ -24,7 +24,7 @@ export declare const IMPORT_SOURCE_SCOPES: readonly ImportSourceScope[];
24
24
  export declare function productLabel(product: ImportProduct): string;
25
25
  export declare function sourceScopeLabel(scope: ImportSourceScope): string;
26
26
  export declare function sourceConfigDir(product: ImportProduct, sourceScope: ImportSourceScope, projectCwd: string, homeDir: string): string;
27
- export type InventoryStatus = "enabled" | "disabled" | "invalid" | "shadowed" | "quarantined" | "imported" | "restart-required";
27
+ export type InventoryStatus = "enabled" | "stored-only" | "disabled" | "invalid" | "shadowed" | "quarantined" | "imported" | "restart-required";
28
28
  export interface InventoryRow {
29
29
  /** Stable row identity: `<surface>:<scope>:<path>` */
30
30
  id: string;
@@ -1,6 +1,10 @@
1
1
  import type { DapAdapterConfig, DapResolvedAdapter } from "./types";
2
2
  export declare function getAdapterConfigs(): Record<string, DapAdapterConfig>;
3
- export declare function resolveAdapter(adapterName: string, cwd: string): DapResolvedAdapter | null;
4
- export declare function getAvailableAdapters(cwd: string): DapResolvedAdapter[];
5
- export declare function selectLaunchAdapter(program: string, cwd: string, adapterName?: string): DapResolvedAdapter | null;
6
- export declare function selectAttachAdapter(cwd: string, adapterName?: string, port?: number): DapResolvedAdapter | null;
3
+ /**
4
+ * `trustCwds` are extra trust roots, such as the session workspace when the command
5
+ * cwd is a different directory. A command controlled by any of them is refused.
6
+ */
7
+ export declare function resolveAdapter(adapterName: string, cwd: string, trustCwds?: readonly string[]): DapResolvedAdapter | null;
8
+ export declare function getAvailableAdapters(cwd: string, trustCwds?: readonly string[]): DapResolvedAdapter[];
9
+ export declare function selectLaunchAdapter(program: string, cwd: string, adapterName?: string, trustCwds?: readonly string[]): DapResolvedAdapter | null;
10
+ export declare function selectAttachAdapter(cwd: string, adapterName?: string, port?: number, trustCwds?: readonly string[]): DapResolvedAdapter | null;
@@ -1,16 +1,25 @@
1
1
  import type { DapAttachSessionOptions, DapBreakpointRecord, DapCapabilities, DapContinueOutcome, DapDataBreakpointInfoResponse, DapDataBreakpointRecord, DapDisassembledInstruction, DapEvaluateArguments, DapEvaluateResponse, DapFunctionBreakpointRecord, DapInstructionBreakpointRecord, DapLaunchSessionOptions, DapModule, DapSessionSummary, DapSource, DapStackFrame, DapThread } from "./types";
2
+ /** Test seam: pauses after cwd containment and before the debuggee spawn. */
3
+ export declare const runInTerminalTestHooks: {
4
+ beforeSpawn?: () => Promise<void>;
5
+ };
2
6
  export interface DapOutputSnapshot {
3
7
  snapshot: DapSessionSummary;
4
8
  output: string;
5
9
  }
10
+ export declare function cwdEscapesWorkspace(root: string, candidate: string): boolean;
6
11
  export declare class DapSessionManager {
7
12
  #private;
8
13
  constructor();
9
14
  getActiveSession(): DapSessionSummary | null;
10
15
  listSessions(): DapSessionSummary[];
11
16
  getCapabilities(): DapCapabilities | null;
12
- launch(options: DapLaunchSessionOptions, signal?: AbortSignal, timeoutMs?: number): Promise<DapSessionSummary>;
13
- attach(options: DapAttachSessionOptions, signal?: AbortSignal, timeoutMs?: number): Promise<DapSessionSummary>;
17
+ launch(options: DapLaunchSessionOptions & {
18
+ workspace?: string;
19
+ }, signal?: AbortSignal, timeoutMs?: number): Promise<DapSessionSummary>;
20
+ attach(options: DapAttachSessionOptions & {
21
+ workspace?: string;
22
+ }, signal?: AbortSignal, timeoutMs?: number): Promise<DapSessionSummary>;
14
23
  setBreakpoint(file: string, line: number, condition?: string, signal?: AbortSignal, timeoutMs?: number): Promise<{
15
24
  snapshot: DapSessionSummary;
16
25
  breakpoints: DapBreakpointRecord[];
@@ -22,5 +22,10 @@ export interface SystemInfo {
22
22
  export declare function collectSystemInfo(): Promise<SystemInfo>;
23
23
  /** Format system info for display */
24
24
  export declare function formatSystemInfo(info: SystemInfo): string;
25
- /** Sanitize environment variables by redacting sensitive values */
25
+ /**
26
+ * Sanitize environment variables for a debug report.
27
+ * Sensitive names stay fully replaced. Other values keep their text, with the
28
+ * same credential shapes removed that crash records already scrub before they
29
+ * are written to disk.
30
+ */
26
31
  export declare function sanitizeEnv(env: Record<string, string | undefined>): Record<string, string>;
@@ -93,8 +93,12 @@ export declare function getUserSkillScanDirs(home: string, userAgentDir?: string
93
93
  */
94
94
  export declare function getProjectPath(ctx: LoadContext, source: SourceId, subpath: string): string | null;
95
95
  /** Build the filesystem authority for a provider read. */
96
- export declare function getReadOptions(ctx: Pick<LoadContext, "home" | "isolatedHome" | "userAgentDir" | "homeIdentity" | "userAgentIdentity" | "bypassCache">, scope: ReadScope): ReadFileOptions | undefined;
97
- export declare function getReadOptionsForContainment(ctx: Pick<LoadContext, "home" | "isolatedHome" | "userAgentDir" | "homeIdentity" | "userAgentIdentity" | "bypassCache">, scope: ReadScope, containmentRoot?: string): Promise<ReadFileOptions | undefined>;
96
+ type DiscoveryReadContext = Pick<LoadContext, "home" | "isolatedHome" | "userAgentDir" | "homeIdentity" | "userAgentIdentity" | "bypassCache"> & {
97
+ repoRoot?: string | null;
98
+ cwd?: string;
99
+ };
100
+ export declare function getReadOptions(ctx: DiscoveryReadContext, scope: ReadScope): ReadFileOptions | undefined;
101
+ export declare function getReadOptionsForContainment(ctx: DiscoveryReadContext, scope: ReadScope, containmentRoot?: string): Promise<ReadFileOptions | undefined>;
98
102
  /**
99
103
  * Create source metadata for an item.
100
104
  */
@@ -336,3 +340,4 @@ export declare function preloadPluginRoots(home: string, cwd?: string): Promise<
336
340
  * Returns empty array if preloadPluginRoots() hasn't been called.
337
341
  */
338
342
  export declare function getPreloadedPluginRoots(): readonly ClaudePluginRoot[];
343
+ export {};
@@ -20,7 +20,9 @@ export declare function normalizeClaudeMcpJson(content: string, sourcePath: stri
20
20
  * Normalize a Codex `config.toml` file body into the internal MCP contract.
21
21
  * Only the `[mcp_servers.*]` sections are read; everything else is ignored.
22
22
  */
23
- export declare function normalizeCodexMcpToml(content: string, sourcePath: string, level?: "project" | "user"): MCPCompatNormalizeResult;
23
+ export declare function normalizeCodexMcpToml(content: string, sourcePath: string, level?: "project" | "user", options?: {
24
+ omitEnvReferences?: boolean;
25
+ }): MCPCompatNormalizeResult;
24
26
  /**
25
27
  * Validate a normalized server against the internal MCP contract. Returns an
26
28
  * error message, or undefined when the definition is importable. Callers use
@@ -41,6 +41,11 @@ export declare class EditTool implements AgentTool<TInput> {
41
41
  get mode(): EditMode;
42
42
  get description(): string;
43
43
  get parameters(): TInput;
44
+ matcherDigest(args: unknown): string | undefined;
45
+ matcherEntries(args: unknown): readonly {
46
+ path: string;
47
+ digest: string;
48
+ }[] | undefined;
44
49
  /**
45
50
  * When in `apply_patch` mode, expose the OpenAI code backend Lark grammar so providers
46
51
  * that support OpenAI-style custom tools can emit a grammar-constrained
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { AgentToolResult } from "@gajae-code/agent-core";
8
8
  import * as z from "zod/v4";
9
+ import type { Settings } from "../../config/settings";
9
10
  import { type WritethroughCallback, type WritethroughDeferredHandle } from "../../lsp";
10
11
  import type { ToolSession } from "../../tools";
11
12
  import type { EditToolDetails, LspBatchRequest } from "../renderer";
@@ -50,6 +51,17 @@ export interface ApplyPatchOptions {
50
51
  * object identity is not a durable-lock capability probe.
51
52
  */
52
53
  crossProcessLock?: boolean;
54
+ /** Explicit artifacts `local` root for this call. The caller session owns it. */
55
+ localRoot?: string;
56
+ signal?: AbortSignal;
57
+ /**
58
+ * Recheck a rename destination while this call holds the path mutation lock.
59
+ * The request preflight runs before that lock.
60
+ */
61
+ destinationGuard?: {
62
+ settings: Pick<Settings, "get">;
63
+ displayPath: string;
64
+ };
53
65
  }
54
66
  /** Default filesystem implementation using Bun APIs */
55
67
  export declare const defaultFileSystem: FileSystem;
@@ -61,6 +73,8 @@ export declare const defaultFileSystem: FileSystem;
61
73
  * edits cannot silently overwrite each other (#2900).
62
74
  */
63
75
  export declare function applyPatch(input: PatchInput, options: ApplyPatchOptions): Promise<ApplyPatchResult>;
76
+ /** Read-only mkdir check for one patch hunk. Does not create directories. */
77
+ export declare function preflightPatchMkdir(input: PatchInput, options: ApplyPatchOptions): Promise<void>;
64
78
  /**
65
79
  * Preview what changes a patch would make without applying it.
66
80
  */
@@ -121,3 +121,6 @@ export interface ExecuteReplaceSingleOptions {
121
121
  beginDeferredDiagnosticsForPath: (path: string) => WritethroughDeferredHandle;
122
122
  }
123
123
  export declare function executeReplaceSingle(options: ExecuteReplaceSingleOptions): Promise<AgentToolResult<EditToolDetails, typeof replaceEditEntrySchema>>;
124
+ export declare function executeReplaceEntries(options: Omit<ExecuteReplaceSingleOptions, "params"> & {
125
+ edits: ReplaceEditEntry[];
126
+ }): Promise<AgentToolResult<EditToolDetails, typeof replaceEditSchema>>;
@@ -9,6 +9,15 @@ export interface PythonRuntimeLifecycleOptions {
9
9
  signal?: AbortSignal;
10
10
  deadlineMs?: number;
11
11
  }
12
+ /**
13
+ * A workspace `.venv` or `venv` directory is repository content. Use it only when
14
+ * it is a real virtualenv (`pyvenv.cfg`) whose interpreter file resolves outside
15
+ * the project. An in-tree script or binary is not an interpreter.
16
+ *
17
+ * True when `candidate` is `root` or a descendant after `path.resolve`.
18
+ * A name such as `..payload` stays inside. Only `..` and a parent segment escape.
19
+ */
20
+ export declare function workspacePathContained(root: string, candidate: string): boolean;
12
21
  export interface PythonRuntime {
13
22
  /** Path to python executable */
14
23
  pythonPath: string;
@@ -111,6 +111,18 @@ export declare function getShellSessionCount(): number;
111
111
  * shell resources, and is also callable directly (e.g. on owner teardown).
112
112
  */
113
113
  export declare function disposeAllShellSessions(): Promise<void>;
114
+ type ShellMinimizerSource = {
115
+ getGroup(prefix: "shellMinimizer"): ShellMinimizerSettings;
116
+ getGlobal?(path: "shellMinimizer.settingsPath" | "shellMinimizer.settingsHash"): unknown;
117
+ getOverride?(path: "shellMinimizer.settingsPath"): unknown;
118
+ };
119
+ /**
120
+ * A repo `.gjc/settings.json` must not point the minimizer at a TOML file.
121
+ * The native gate loads that file only when `settingsHash` matches, and the
122
+ * pin is the user/global value. A user path or a runtime override is still
123
+ * passed through. A project path is passed only together with that pin.
124
+ */
125
+ export declare function resolveTrustedShellMinimizer(settings: ShellMinimizerSource): ShellMinimizerSettings;
114
126
  /** Translate `ShellMinimizerSettings` into native `MinimizerOptions`, or `undefined` when disabled. */
115
127
  export declare function buildMinimizerOptions(group: ShellMinimizerSettings): MinimizerOptions | undefined;
116
128
  export declare function executeBash(command: string, options?: BashExecutorOptions): Promise<BashResult>;
@@ -11,6 +11,13 @@ export interface TtsrMatchContext {
11
11
  /** Stable key to isolate buffering (for example a tool call ID). */
12
12
  streamKey?: string;
13
13
  }
14
+ /** An astCondition pattern parse issue observed while checking a target language. */
15
+ export interface TtsrAstConditionDiagnostic {
16
+ ruleName: string;
17
+ lang: string;
18
+ patterns: string[];
19
+ parseErrors: string[];
20
+ }
14
21
  /** Tracks when a rule was last injected (for repeat gating). */
15
22
  export interface TtsrInjectionRecord {
16
23
  name: string;
@@ -36,6 +43,12 @@ export declare class TtsrManager {
36
43
  markInjectedByNames(ruleNames: string[]): void;
37
44
  /** Get names of all injected rules (for persistence). */
38
45
  getInjectedRuleNames(): string[];
46
+ /**
47
+ * Undo a provisional claim whose reminder was never delivered: restore the
48
+ * record the rule had before the claim, or forget it when it had none, so the
49
+ * rule is eligible again exactly as before.
50
+ */
51
+ releaseInjected(ruleName: string, previous: TtsrInjectionRecord | undefined): void;
39
52
  /** Get full injected rule records (for persistence). */
40
53
  getInjectedRecords(): TtsrInjectionRecord[];
41
54
  /** Restore injected state from legacy rule names or persisted records. */
@@ -52,4 +65,10 @@ export declare class TtsrManager {
52
65
  restoreMessageCount(messageCount: number): void;
53
66
  /** Get settings. */
54
67
  getSettings(): Required<TtsrSettings>;
68
+ /** Check if any registered rule carries an `astCondition`. */
69
+ hasAstRules(): boolean;
70
+ /** Get observed astCondition pattern parse issues for rule diagnostics. */
71
+ getAstConditionDiagnostics(): TtsrAstConditionDiagnostic[];
72
+ /** Match the source introduced by finalized tool arguments, before execution. */
73
+ checkAstSnapshot(snapshot: string, context: TtsrMatchContext, signal?: AbortSignal): Promise<Rule[]>;
55
74
  }
@@ -28,7 +28,7 @@ import type { CustomEditor } from "../../modes/components/custom-editor";
28
28
  import type { WorkflowGateEmitter } from "../../modes/shared/agent-wire/workflow-gate-broker";
29
29
  import type { Theme } from "../../modes/theme/theme";
30
30
  import type { ProjectProgressSnapshot } from "../../progress/progress-contract";
31
- import type { AgentSessionEventListener } from "../../session/agent-session";
31
+ import type { AgentSessionEventListener, QueuedRunStartFailure } from "../../session/agent-session";
32
32
  import type { ClientBridge, ClientBridgePermissionOption, ClientBridgePermissionOutcome, ClientBridgePermissionToolCall } from "../../session/client-bridge";
33
33
  import type { CustomMessage } from "../../session/messages";
34
34
  import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
@@ -864,6 +864,8 @@ export interface ExtensionAPI {
864
864
  startsOwnRun?: boolean;
865
865
  removed?: boolean;
866
866
  }) => void;
867
+ /** Internal positive refusal before an exact queued invocation can start. */
868
+ onQueuedRunStartFailed?: (failure: QueuedRunStartFailure) => void;
867
869
  onDispatchDisposition?: (promotion: {
868
870
  startsOwnRun: boolean;
869
871
  }) => void;
@@ -1052,6 +1054,8 @@ export type SendUserMessageHandler = (content: string | (TextContent | ImageCont
1052
1054
  startsOwnRun?: boolean;
1053
1055
  removed?: boolean;
1054
1056
  }) => void;
1057
+ /** Internal positive refusal, not an inference from a dispatch error or missing event. */
1058
+ onQueuedRunStartFailed?: (failure: QueuedRunStartFailure) => void;
1055
1059
  /**
1056
1060
  * Fired synchronously when a plain prompt's dispatch resolves at queue
1057
1061
  * time instead of run end (diverted into an in-flight run's steering).
@@ -18,6 +18,7 @@ export declare const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand &
18
18
  getArgumentCompletions?: (prefix: string) => AutocompleteItem[] | null;
19
19
  getInlineHint?: (argumentText: string) => string | null;
20
20
  }>;
21
+ export declare function getBuiltinSlashCommandsForSession(hasExactMcpControls: boolean): typeof BUILTIN_SLASH_COMMANDS;
21
22
  /**
22
23
  * Represents a custom slash command loaded from a file
23
24
  */
@@ -5,6 +5,9 @@ export declare const MANAGED_OWNER_PREDECESSOR_GENERATION_ENV = "GJC_MANAGED_OWN
5
5
  export declare const MANAGED_OWNER_PREDECESSOR_RUN_ID_ENV = "GJC_MANAGED_OWNER_PREDECESSOR_RUN_ID";
6
6
  export declare const MANAGED_OWNER_PREDECESSOR_INCARNATION_ENV = "GJC_MANAGED_OWNER_PREDECESSOR_INCARNATION";
7
7
  export declare const MANAGED_OWNER_TRANSCRIPT_PATH_ENV = "GJC_MANAGED_OWNER_TRANSCRIPT_PATH";
8
+ export declare function trustedManagedOwnerTranscriptPath(env?: NodeJS.ProcessEnv, cwd?: string): string;
9
+ /** Session file forwarded to a replacement child. Same provenance rule. */
10
+ export declare function trustedManagedOwnerLaunchSessionFile(env: NodeJS.ProcessEnv, cwd: string): string;
8
11
  export interface ManagedOwnerRecoveryContext {
9
12
  root: string;
10
13
  binding: ManagedOwnerBinding;
@@ -0,0 +1,54 @@
1
+ export interface RalplanIndexRow {
2
+ stage: string;
3
+ stageN: number;
4
+ path: string;
5
+ sha256: string;
6
+ }
7
+ export interface RalplanCurrentFinalDescriptor {
8
+ /** Run id the final belongs to. */
9
+ runId: string;
10
+ /** Absolute path of the final artifact. */
11
+ finalPath: string;
12
+ /** sha256 recorded for the final and re-verified against its bytes. */
13
+ finalSha256: string;
14
+ /** sha256 of the iteration-opening planner (or revision) artifact. */
15
+ plannerSha256: string;
16
+ /** Reviewer verdict hashes that joined this iteration. */
17
+ reviewerSha256: Record<string, string>;
18
+ /** Session that owns the run; a foreign session can never be granted. */
19
+ sessionId: string;
20
+ }
21
+ export type RalplanCurrentFinalRefusalCode = "missing_state" | "run_not_final" | "auto_handoff_enabled" | "missing_index" | "malformed_index" | "no_iteration_opener" | "final_not_last" | "missing_reviewers" | "artifact_missing" | "artifact_outside_run" | "hash_mismatch";
22
+ export interface RalplanCurrentFinalRefusal {
23
+ code: RalplanCurrentFinalRefusalCode;
24
+ /** Human-readable reason suitable for a guard error message. */
25
+ reason: string;
26
+ }
27
+ export type RalplanCurrentFinalResolution = {
28
+ ok: true;
29
+ descriptor: RalplanCurrentFinalDescriptor;
30
+ } | {
31
+ ok: false;
32
+ refusal: RalplanCurrentFinalRefusal;
33
+ };
34
+ export interface RalplanCurrentFinalInput {
35
+ cwd: string;
36
+ /** Caller session id; the run must belong to it. */
37
+ sessionId: string;
38
+ /** Optional agent dir for settings resolution. */
39
+ agentDir?: string;
40
+ }
41
+ /**
42
+ * Whether the pending `ask` payload selects the ralplan execution-approval gate.
43
+ *
44
+ * This is a selector, not authority: it only decides which validation runs. The
45
+ * descriptor it leads to is the proof.
46
+ */
47
+ export declare function selectsRalplanApprovalGate(pendingQuestions: unknown): boolean;
48
+ /**
49
+ * Resolve and verify the current ralplan final for `sessionId`.
50
+ *
51
+ * Fails closed: every check returns a refusal instead of degrading to a weaker
52
+ * proof, because the caller uses a success to lift the Ultragoal ask guard.
53
+ */
54
+ export declare function resolveRalplanCurrentFinal(input: RalplanCurrentFinalInput): Promise<RalplanCurrentFinalResolution>;
@@ -160,6 +160,11 @@ interface RalplanTargetRoot {
160
160
  }
161
161
  export declare function resolveRalplanTargetRoot(args: readonly string[], invocationCwd: string): Promise<RalplanTargetRoot>;
162
162
  export declare function assertExplicitTargetGjcNotSymlinked(root: string): Promise<void>;
163
+ /**
164
+ * Credential scrub for a ralplan stage body. The result is what
165
+ * `gjc ralplan --write` hashes and stores.
166
+ */
167
+ export declare function scrubRalplanPersistedBody(stage: string, content: string): string;
163
168
  export declare function runNativeRalplanCommand(args: string[], cwd?: string, options?: {
164
169
  agentDir?: string;
165
170
  }): Promise<RalplanCommandResult>;
@@ -72,6 +72,8 @@ export declare const SessionStateLockTestHooks: {
72
72
  afterCurrentOwnerValidation?: (file: string) => void | Promise<void>;
73
73
  /** @internal Fault seam immediately before a held owner record rewrite mutates bytes. */
74
74
  beforeOwnerRecordRewrite?: (file: string) => void | Promise<void>;
75
+ /** @internal Fault seam immediately before the pre-rewrite fstat on the owner record handle. */
76
+ beforeOwnerRecordPrewriteStat?: (file: string) => void | Promise<void>;
75
77
  /** @internal Fault seam immediately before final transition-generation validation. */
76
78
  beforeTransitionReleaseLstat?: (transitionDir: string) => void | Promise<void>;
77
79
  /** @internal Fault seam immediately before setup generation capture. */
@@ -47,8 +47,6 @@ export declare const DEEP_INTERVIEW_EXECUTION_APPROVAL_RECORD_FILE = "deep-inter
47
47
  export declare const DEEP_INTERVIEW_EXECUTION_APPROVAL_MAX_AGE_MS: number;
48
48
  export interface ExecutionApprovalTranscriptBoundary {
49
49
  byte_length: number;
50
- device: string;
51
- inode: string;
52
50
  leaf_id: string | null;
53
51
  approval_tool_call_id: string;
54
52
  }