@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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@gajae-code/coding-agent",
4
- "version": "0.18.11",
4
+ "version": "0.19.0",
5
5
  "description": "Gajae Code CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://gajae-code.com",
7
7
  "author": "Yeachan-Heo and Gajae Code Contributors",
@@ -32,7 +32,7 @@
32
32
  "build": "bun run verify:markit-vendor && bun scripts/build-binary.ts",
33
33
  "check": "bun run verify:markit-vendor && biome check . && bun run check:types",
34
34
  "check:runtime": "bun run generate-hotkeys-docs --check && bun run verify:sdk-canonicalization",
35
- "check:types": "tsc -p tsconfig.json --noEmit",
35
+ "check:types": "bun run generate-docs-index && tsc -p tsconfig.json --noEmit",
36
36
  "check:autorouting-map": "bun scripts/check-autorouting-tier-map.ts",
37
37
  "lint": "biome lint .",
38
38
  "test": "bun test",
@@ -57,12 +57,12 @@
57
57
  "@agentclientprotocol/sdk": "1.3.0",
58
58
  "@babel/parser": "^7.29.3",
59
59
  "@mozilla/readability": "^0.6.0",
60
- "@gajae-code/stats": "0.18.11",
61
- "@gajae-code/agent-core": "0.18.11",
62
- "@gajae-code/ai": "0.18.11",
63
- "@gajae-code/natives": "0.18.11",
64
- "@gajae-code/tui": "0.18.11",
65
- "@gajae-code/utils": "0.18.11",
60
+ "@gajae-code/stats": "0.19.0",
61
+ "@gajae-code/agent-core": "0.19.0",
62
+ "@gajae-code/ai": "0.19.0",
63
+ "@gajae-code/natives": "0.19.0",
64
+ "@gajae-code/tui": "0.19.0",
65
+ "@gajae-code/utils": "0.19.0",
66
66
  "@puppeteer/browsers": "^2.13.0",
67
67
  "@types/turndown": "5.0.6",
68
68
  "@xterm/headless": "^6.0.0",
@@ -91,7 +91,8 @@
91
91
  "@babel/types": "^7.29.0",
92
92
  "@types/babel__traverse": "^7.28.0",
93
93
  "@types/bun": "^1.3.14",
94
- "@types/ws": "^8.5.13"
94
+ "@types/ws": "^8.5.13",
95
+ "fast-check": "4.10.2"
95
96
  },
96
97
  "engines": {
97
98
  "bun": ">=1.4.0"
@@ -102,21 +102,31 @@ server = Bun.serve({
102
102
  if (prompt.includes("sleep")) {
103
103
  const requested = Number(/\bsleep\s+(\d+)/.exec(prompt)?.[1] ?? 0);
104
104
  const delay = Math.min(Math.max(requested, 0), 30_000);
105
+ let closed = false;
106
+ let close = (): void => {};
105
107
  const stream = new ReadableStream<Uint8Array>({
106
108
  start(controller) {
107
- let closed = false;
108
- const close = () => {
109
+ close = () => {
109
110
  if (closed) return;
110
111
  closed = true;
112
+ request.signal.removeEventListener("abort", close);
111
113
  controller.close();
112
114
  };
113
115
  request.signal.addEventListener("abort", close, { once: true });
116
+ // The body parse above may yield long enough for the client to abort before
117
+ // this response stream installs its listener. Signals do not replay abort
118
+ // events to late listeners, so close immediately when that already happened.
119
+ if (request.signal.aborted) close();
114
120
  void Bun.sleep(delay).then(() => {
115
121
  if (closed) return;
116
122
  controller.enqueue(new TextEncoder().encode(textCompletion("slept")));
117
123
  close();
118
124
  });
119
125
  },
126
+ cancel() {
127
+ closed = true;
128
+ request.signal.removeEventListener("abort", close);
129
+ },
120
130
  });
121
131
  return new Response(stream, { headers: { "content-type": "text/event-stream" } });
122
132
  }
@@ -13,7 +13,8 @@ function shouldAdhocSignDarwinBinary(): boolean {
13
13
  }
14
14
 
15
15
  async function runCommand(command: string[], env: NodeJS.ProcessEnv = Bun.env): Promise<void> {
16
- const proc = Bun.spawn(command, {
16
+ const argv = command[0] === "bun" ? [process.execPath, ...command.slice(1)] : command;
17
+ const proc = Bun.spawn(argv, {
17
18
  cwd: packageDir,
18
19
  env,
19
20
  stdout: "inherit",
@@ -0,0 +1,105 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import {
4
+ renderSubagentCompactPanelShowcase,
5
+ SUBAGENT_COMPACT_PANEL_FIXED_NOW_MS,
6
+ SUBAGENT_COMPACT_PANEL_SHOWCASE_ENTRIES,
7
+ type SubagentCompactPanelShowcaseEntry,
8
+ } from "../test/fixtures/tui/subagent-compact-panel-showcase";
9
+ import { ansiToHtml } from "./capture-sticky-viewport-showcase";
10
+
11
+ const CANONICAL_COMMAND =
12
+ "bun packages/coding-agent/scripts/capture-subagent-compact-panel-showcase.ts --out .gjc/qa/subagent-compact-panel-<run>";
13
+ const CAPTURE_TOOL_VERSION = "subagent-compact-panel-showcase-v1";
14
+
15
+ interface ArtifactFile {
16
+ path: string;
17
+ sha256: string;
18
+ byteLength: number;
19
+ }
20
+
21
+ function usage(): never {
22
+ throw new Error(`Usage: ${CANONICAL_COMMAND}`);
23
+ }
24
+
25
+ function outputPath(args: string[]): string {
26
+ if (args.length !== 2 || args[0] !== "--out" || !args[1]) usage();
27
+ return path.resolve(args[1]);
28
+ }
29
+
30
+ function json(value: unknown): string {
31
+ return `${JSON.stringify(value, null, 2)}\n`;
32
+ }
33
+
34
+ function sha256(value: string): string {
35
+ return new Bun.CryptoHasher("sha256").update(value).digest("hex");
36
+ }
37
+
38
+ function entryKey(entry: SubagentCompactPanelShowcaseEntry): string {
39
+ return `${entry.stateId}/${entry.columns}x${entry.rows}/${entry.renderMode}`;
40
+ }
41
+
42
+ async function writeArtifact(root: string, relativePath: string, content: string): Promise<ArtifactFile> {
43
+ const target = path.join(root, relativePath);
44
+ await fs.mkdir(path.dirname(target), { recursive: true });
45
+ await Bun.write(target, content);
46
+ return { path: relativePath, sha256: sha256(content), byteLength: Buffer.byteLength(content, "utf8") };
47
+ }
48
+
49
+ async function main(): Promise<void> {
50
+ const root = outputPath(process.argv.slice(2));
51
+ await fs.mkdir(root, { recursive: true });
52
+ const entries = [];
53
+ const capturedAt = new Date().toISOString();
54
+ for (const entry of SUBAGENT_COMPACT_PANEL_SHOWCASE_ENTRIES) {
55
+ const key = entryKey(entry);
56
+ const rendered = await renderSubagentCompactPanelShowcase(entry);
57
+ for (const viewport of rendered.viewports) {
58
+ const viewportKey = `${key}/${viewport.scroll}`;
59
+ const metadata = json({
60
+ entryKey: viewportKey,
61
+ commandOrReplaySource: CANONICAL_COMMAND,
62
+ fixtureSource: "packages/coding-agent/test/fixtures/tui/subagent-compact-panel-showcase.ts",
63
+ toolVersion: CAPTURE_TOOL_VERSION,
64
+ captureMode: "fixture",
65
+ capturedAt,
66
+ terminal: { columns: entry.columns, rows: entry.rows },
67
+ renderMode: entry.renderMode,
68
+ fontRenderingAssumptions: "red-claw truecolor theme; HTML uses a monospace terminal fallback stack.",
69
+ wrappingPolicy:
70
+ "Real subagentToolRenderer output at the recorded terminal-cell width; lines are truncated by the renderer, never wrapped.",
71
+ fixtureClockTimestamp: new Date(SUBAGENT_COMPACT_PANEL_FIXED_NOW_MS).toISOString(),
72
+ panelLines: rendered.panelLines,
73
+ viewportOverflowRows: rendered.viewportOverflowRows,
74
+ scroll: { position: viewport.scroll, firstRow: viewport.firstRow },
75
+ });
76
+ const files = [
77
+ await writeArtifact(root, `${viewportKey}/terminal.txt`, viewport.terminalText),
78
+ await writeArtifact(root, `${viewportKey}/terminal-ansi.txt`, viewport.terminalAnsiText),
79
+ await writeArtifact(root, `${viewportKey}/terminal.html`, ansiToHtml(viewport.terminalAnsiText)),
80
+ await writeArtifact(root, `${viewportKey}/metadata.json`, metadata),
81
+ ];
82
+ entries.push({
83
+ key: viewportKey,
84
+ stateId: entry.stateId,
85
+ viewport: { columns: entry.columns, rows: entry.rows },
86
+ renderMode: entry.renderMode,
87
+ scroll: viewport.scroll,
88
+ panelLines: rendered.panelLines,
89
+ viewportOverflowRows: rendered.viewportOverflowRows,
90
+ files,
91
+ });
92
+ }
93
+ }
94
+ await writeArtifact(
95
+ root,
96
+ "manifest.json",
97
+ json({ tool: CAPTURE_TOOL_VERSION, command: CANONICAL_COMMAND, capturedAt, entryCount: entries.length, entries }),
98
+ );
99
+ process.stdout.write(`Captured ${entries.length} subagent compact panel showcase entries at ${root}\n`);
100
+ }
101
+
102
+ void main().catch(error => {
103
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
104
+ process.exit(1);
105
+ });
@@ -68,5 +68,12 @@ const output = [
68
68
  "",
69
69
  ].join("\n");
70
70
 
71
- await Bun.write(outputPath, output);
71
+ // Workspace checks run concurrently; publish only complete modules to readers.
72
+ const temporaryPath = `${outputPath}.${process.pid}.tmp`;
73
+ try {
74
+ await Bun.write(temporaryPath, output);
75
+ await fs.rename(temporaryPath, outputPath);
76
+ } finally {
77
+ await fs.rm(temporaryPath, { force: true });
78
+ }
72
79
  process.stderr.write(`Generated ${path.relative(process.cwd(), outputPath)} (${entries.length} docs)\n`);
@@ -25,6 +25,12 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
25
25
  "internal terminal-abort fencing seam, threaded via terminalAbortSeams; not a user-facing SDK control seam",
26
26
  "agent_session:pendingToolExecutions":
27
27
  "internal read-only run-resource-ledger view, threaded via terminalAbortSeams so the prompt deadline can find a tool-call boundary; not a user-facing SDK control seam",
28
+ "agent_session:markProfileRoleOverrideManual":
29
+ "internal profile role-layer ownership tracking after explicit user assignments; not a user-facing SDK control seam",
30
+ "agent_session:notifySessionIdentityChanged":
31
+ "internal session-identity listener fan-out for in-process session surfaces; not a user-facing SDK control seam",
32
+ "agent_session:subscribeSessionIdentityChanges":
33
+ "internal session-identity subscription used by in-process adapters to follow session replacement; not a user-facing SDK control seam",
28
34
  "slash_command:routing":
29
35
  "visual/local-only autorouting settings toggle and smart-routing panel entry, not a user-facing SDK control seam",
30
36
  "slash_command:mcp":
@@ -79,6 +85,28 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
79
85
  "internal terminal-abort steering snapshot cleanup, not a user-facing SDK control seam",
80
86
  "agent_session:getConfiguredModelChainState":
81
87
  "internal model-profile transaction snapshot, not a user-facing SDK control seam",
88
+ "agent_session:setUnavailableModelProfile":
89
+ "internal session-scoped startup-profile recovery marker, not a user-facing SDK control seam",
90
+ "agent_session:getUnavailableModelProfile":
91
+ "internal session-scoped startup-profile recovery status for UI rendering, not a public SDK operation",
92
+ "agent_session:getActivatedModelProfile":
93
+ "internal model-profile activation provenance used to gate role-only materialization, not a user-facing SDK control seam",
94
+ "agent_session:getConfigurationPaths":
95
+ "internal config hot-reload path identity projection, not a user-facing SDK control seam",
96
+ "agent_session:validateConfiguration":
97
+ "internal read-only config hot-reload preflight, not an independent SDK operation",
98
+ "agent_session:reloadConfiguration":
99
+ "internal transactional config hot-reload publication, not a user-facing SDK control seam",
100
+ "agent_session:getProfileInstalledOverrideState":
101
+ "internal model-profile activation rollback snapshot, not a user-facing SDK control seam",
102
+ "agent_session:restoreProfileInstalledOverrideState":
103
+ "internal model-profile activation rollback restoration, not a user-facing SDK control seam",
104
+ "agent_session:prepareModelSelectionForProfileActivation":
105
+ "internal staged model-selection preparation for profile activation, not a user-facing SDK control seam",
106
+ "agent_session:commitPreparedProfileModelSelection":
107
+ "internal model-selection commit for profile activation, not a user-facing SDK control seam",
108
+ "agent_session:finishPreparedProfileModelSelection":
109
+ "internal post-commit model-selection refresh for profile activation, not a user-facing SDK control seam",
82
110
  "agent_session:getDefaultFallbackRuntimeState":
83
111
  "internal model-profile transaction snapshot, not a user-facing SDK control seam",
84
112
  "agent_session:restoreDefaultFallbackRuntimeState":
@@ -99,6 +127,8 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
99
127
  "internal tool-selection predicate used to preserve the --no-tools boundary, not a user-facing SDK control seam",
100
128
  "agent_session:getEffectiveActiveWorkflowSkillState":
101
129
  "internal restored-or-live workflow guard for session rescope, not a user-facing SDK control seam",
130
+ "agent_session:refreshEffectiveActiveWorkflowSkillState":
131
+ "internal durable workflow identity refresh before session safety checks, not an independent public SDK operation",
102
132
  "agent_session:replaceOwnedMcpManager":
103
133
  "internal cwd-rebinding helper for owned MCP authority after move_session, not a user-facing SDK control seam",
104
134
  "agent_session:replaceNamedCustomTools":
@@ -137,6 +167,8 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
137
167
  "test-only parked terminal persistence seam, not a user-facing SDK control seam",
138
168
  "agent_session:flushParkedAgentEndForCoordinatorPersistForTests":
139
169
  "test-only parked terminal flush seam, not a user-facing SDK control seam",
170
+ "agent_session:waitForAgentEndHandlingForTests":
171
+ "test-only SDK terminal-event handler completion barrier, not a user-facing SDK control seam",
140
172
  "agent_session:setCancelAndSubmitAbortOutcomeProviderForTests":
141
173
  "test-only cancellation seam, not a user-facing SDK control seam",
142
174
  "agent_session:awaitDisposeCompletion": "test-only disposal completion seam, not a user-facing SDK control seam",
@@ -171,6 +203,12 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
171
203
  "agent_session:onJobFold": "internal fold-event plumbing feeding the bash_folded event frame, not a control seam",
172
204
 
173
205
  "agent_session:getSelectedMCPToolNames": "internal accessor/plumbing, not a user-facing control seam",
206
+ "agent_session:getActiveMCPToolNames":
207
+ "internal MCP bridge subset used by mode controllers to preserve live selections across tool swaps; not a user-facing SDK control seam",
208
+ "agent_session:hasMCPToolSelectionAuthority":
209
+ "internal MCP-selection authority predicate used by catalog and mode-transition reconciliation; not a user-facing SDK control seam",
210
+ "agent_session:hasCommittedMCPToolSelectionAuthority":
211
+ "internal committed MCP-selection authority predicate used by catalog reconciliation; not a user-facing SDK control seam",
174
212
  "agent_session:isToolDiscoveryEnabled": "internal accessor/plumbing, not a user-facing control seam",
175
213
  "agent_session:getDiscoverableToolSearchIndex": "internal accessor/plumbing, not a user-facing control seam",
176
214
  "agent_session:getSelectedDiscoveredToolNames": "internal accessor/plumbing, not a user-facing control seam",
@@ -327,10 +365,6 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
327
365
  "internal profile-derived eager delegation synchronization, not a user-facing SDK control seam",
328
366
  "agent_session:submitUserMessage":
329
367
  "public in-process embedder lifecycle API; direct handle surface, not an SDK transport operation",
330
- "agent_session:setUnavailableModelProfile":
331
- "internal session-scoped unavailable profile tracking; mutated by the session lifecycle on model-load failure, not a public SDK control seam",
332
- "agent_session:getUnavailableModelProfile":
333
- "internal session-scoped unavailable profile query for UI status rendering; not a public SDK operation",
334
368
  };
335
369
  /** Maps reviewed source seams to registry SDK operation IDs. */
336
370
  const SEAM_TO_SDK: Readonly<Record<string, string>> = {