@gajae-code/coding-agent 0.11.11 → 0.12.1

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 (344) hide show
  1. package/CHANGELOG.md +131 -4
  2. package/dist/types/async/job-manager.d.ts +17 -3
  3. package/dist/types/cli/read-cli.d.ts +1 -0
  4. package/dist/types/commands/deep-interview.d.ts +9 -0
  5. package/dist/types/commands/harness.d.ts +22 -0
  6. package/dist/types/commands/read.d.ts +6 -0
  7. package/dist/types/config/model-registry.d.ts +4 -0
  8. package/dist/types/config/provider-auth-health.d.ts +14 -0
  9. package/dist/types/config/provider-ranking.d.ts +59 -0
  10. package/dist/types/config/settings-schema.d.ts +83 -1
  11. package/dist/types/config/settings.d.ts +2 -0
  12. package/dist/types/exa/mcp-client.d.ts +10 -1
  13. package/dist/types/exec/bash-executor.d.ts +45 -12
  14. package/dist/types/extensibility/extensions/types.d.ts +38 -4
  15. package/dist/types/extensibility/gjc-plugins/index.d.ts +12 -2
  16. package/dist/types/extensibility/gjc-plugins/installer.d.ts +63 -7
  17. package/dist/types/extensibility/gjc-plugins/lifecycle-reconciliation.d.ts +55 -0
  18. package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +64 -0
  19. package/dist/types/extensibility/gjc-plugins/runtime-quarantine.d.ts +67 -0
  20. package/dist/types/extensibility/gjc-plugins/session-validation.d.ts +3 -1
  21. package/dist/types/extensibility/gjc-plugins/types.d.ts +124 -0
  22. package/dist/types/extensibility/shared-events.d.ts +6 -0
  23. package/dist/types/gjc-runtime/deep-interview-ambiguity.d.ts +5 -12
  24. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +17 -32
  25. package/dist/types/gjc-runtime/deep-interview-stage.d.ts +37 -0
  26. package/dist/types/gjc-runtime/deep-interview-state.d.ts +4 -135
  27. package/dist/types/gjc-runtime/gc-runtime.d.ts +1 -1
  28. package/dist/types/gjc-runtime/launch-tmux.d.ts +1 -0
  29. package/dist/types/gjc-runtime/memory-guard-owner-claims.d.ts +47 -0
  30. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +70 -1
  31. package/dist/types/gjc-runtime/state-writer.d.ts +5 -46
  32. package/dist/types/gjc-runtime/team-launch.d.ts +1 -1
  33. package/dist/types/gjc-runtime/team-runtime.d.ts +27 -1
  34. package/dist/types/gjc-runtime/team-store.d.ts +12 -0
  35. package/dist/types/gjc-runtime/team-worker-heartbeat.d.ts +43 -0
  36. package/dist/types/gjc-runtime/team-worker-memory-guard.d.ts +92 -0
  37. package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +17 -0
  38. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +8 -0
  39. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +31 -80
  40. package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -5
  41. package/dist/types/internal-urls/local-root-gc.d.ts +2 -0
  42. package/dist/types/main.d.ts +1 -1
  43. package/dist/types/memories/index.d.ts +2 -0
  44. package/dist/types/modes/acp/acp-agent.d.ts +10 -19
  45. package/dist/types/modes/components/assistant-message.d.ts +3 -1
  46. package/dist/types/modes/components/gjc-bundle-settings.d.ts +34 -0
  47. package/dist/types/modes/components/irc-sidebar.d.ts +41 -0
  48. package/dist/types/modes/components/notifications-settings-editor.d.ts +1 -0
  49. package/dist/types/modes/components/read-tool-group.d.ts +4 -4
  50. package/dist/types/modes/components/session-observer-overlay.d.ts +22 -0
  51. package/dist/types/modes/components/settings-selector.d.ts +11 -0
  52. package/dist/types/modes/components/status-line/gh.d.ts +5 -0
  53. package/dist/types/modes/components/tool-execution.d.ts +8 -0
  54. package/dist/types/modes/components/transcript-viewer-overlay.d.ts +18 -1
  55. package/dist/types/modes/controllers/event-controller.d.ts +3 -0
  56. package/dist/types/modes/interactive-mode.d.ts +2 -0
  57. package/dist/types/modes/irc-observation-ledger.d.ts +17 -1
  58. package/dist/types/modes/types.d.ts +2 -0
  59. package/dist/types/modes/utils/ui-helpers.d.ts +16 -0
  60. package/dist/types/reminders/star-reminder.d.ts +3 -13
  61. package/dist/types/runtime-mcp/manager.d.ts +1 -0
  62. package/dist/types/runtime-mcp/smithery-auth.d.ts +5 -0
  63. package/dist/types/sdk/acp/adapter.d.ts +3 -1
  64. package/dist/types/sdk/broker/lifecycle.d.ts +5 -0
  65. package/dist/types/sdk/broker/transport.d.ts +2 -0
  66. package/dist/types/sdk/bus/attachment-registry.d.ts +1 -0
  67. package/dist/types/sdk/bus/chat-daemon-control.d.ts +4 -1
  68. package/dist/types/sdk/bus/config.d.ts +6 -2
  69. package/dist/types/sdk/bus/control-drain-lease.d.ts +52 -0
  70. package/dist/types/sdk/bus/index.d.ts +44 -1
  71. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +44 -0
  72. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
  73. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +2 -1
  74. package/dist/types/sdk/bus/reconciliation-store.d.ts +69 -0
  75. package/dist/types/sdk/bus/rich-draft.d.ts +1 -0
  76. package/dist/types/sdk/bus/rich-render.d.ts +2 -0
  77. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +165 -0
  78. package/dist/types/sdk/bus/telegram-cli.d.ts +12 -0
  79. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +11 -4
  80. package/dist/types/sdk/bus/telegram-daemon.d.ts +25 -1
  81. package/dist/types/sdk/bus/telegram-reference.d.ts +11 -1
  82. package/dist/types/sdk/bus/threaded-render.d.ts +3 -2
  83. package/dist/types/sdk/bus/topic-registry.d.ts +11 -1
  84. package/dist/types/sdk/host/control/operations.d.ts +1 -1
  85. package/dist/types/sdk/host/host.d.ts +2 -0
  86. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  87. package/dist/types/sdk/host/query/revision-store.d.ts +2 -0
  88. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  89. package/dist/types/sdk/prompt-status.d.ts +23 -3
  90. package/dist/types/sdk/session.d.ts +6 -0
  91. package/dist/types/session/agent-session.d.ts +82 -12
  92. package/dist/types/session/artifacts.d.ts +8 -0
  93. package/dist/types/session/blob-store.d.ts +57 -4
  94. package/dist/types/session/internal/managed-session-storage.d.ts +8 -1
  95. package/dist/types/session/memory-guard-checkpoint-participant.d.ts +69 -0
  96. package/dist/types/session/session-manager.d.ts +48 -19
  97. package/dist/types/session/session-storage.d.ts +4 -0
  98. package/dist/types/session/streaming-output.d.ts +96 -12
  99. package/dist/types/setup/credential-import.d.ts +12 -0
  100. package/dist/types/skill-state/active-state.d.ts +12 -4
  101. package/dist/types/skill-state/workflow-hud.d.ts +9 -0
  102. package/dist/types/task/executor.d.ts +3 -2
  103. package/dist/types/task/index.d.ts +3 -1
  104. package/dist/types/task/provider-retry-status.d.ts +8 -0
  105. package/dist/types/task/receipt.d.ts +7 -1
  106. package/dist/types/task/types.d.ts +23 -0
  107. package/dist/types/tools/ask-answer-registry.d.ts +2 -2
  108. package/dist/types/tools/bash-interactive.d.ts +4 -1
  109. package/dist/types/tools/bash.d.ts +3 -1
  110. package/dist/types/tools/browser/launch.d.ts +7 -0
  111. package/dist/types/tools/fetch.d.ts +17 -1
  112. package/dist/types/tools/image-gen.d.ts +4 -0
  113. package/dist/types/tools/index.d.ts +4 -0
  114. package/dist/types/tools/output-meta.d.ts +44 -3
  115. package/dist/types/tools/path-utils.d.ts +1 -0
  116. package/dist/types/tools/read-internals.d.ts +12 -0
  117. package/dist/types/tools/read.d.ts +45 -7
  118. package/dist/types/tools/resource-gc.d.ts +4 -0
  119. package/dist/types/tools/review.d.ts +5 -7
  120. package/dist/types/tools/subagent.d.ts +2 -0
  121. package/dist/types/tools/tool-result.d.ts +7 -1
  122. package/dist/types/utils/gh.d.ts +13 -0
  123. package/dist/types/utils/image-resize.d.ts +1 -0
  124. package/dist/types/web/search/providers/kimi.d.ts +2 -0
  125. package/dist/types/web/search/providers/searxng.d.ts +7 -0
  126. package/dist/types/web/search/providers/xai.d.ts +2 -0
  127. package/package.json +11 -13
  128. package/scripts/acp-conformance-agent.ts +218 -0
  129. package/scripts/benchmark-sticky-viewport-pr1.ts +239 -0
  130. package/scripts/capture-gjc-bundle-settings.ts +306 -0
  131. package/scripts/capture-sticky-viewport-showcase.ts +292 -0
  132. package/scripts/generate-sdk-operation-inventory.ts +5 -0
  133. package/scripts/resident-memory-bench.ts +1341 -0
  134. package/scripts/run-acp-conformance.ts +285 -0
  135. package/scripts/verify-gjc-sdk-canonicalization.ts +122 -18
  136. package/scripts/verify-sticky-viewport-showcase.ts +611 -0
  137. package/src/async/job-manager.ts +78 -20
  138. package/src/capability/index.ts +8 -0
  139. package/src/cli/fast-help.ts +1 -1
  140. package/src/cli/plugin-cli.ts +176 -18
  141. package/src/cli/read-cli.ts +2 -1
  142. package/src/cli.ts +1 -0
  143. package/src/commands/deep-interview.ts +29 -9
  144. package/src/commands/harness.ts +35 -12
  145. package/src/commands/read.ts +11 -2
  146. package/src/commands/team.ts +20 -2
  147. package/src/config/file-lock.ts +11 -2
  148. package/src/config/model-registry.ts +21 -2
  149. package/src/config/provider-auth-health.ts +42 -0
  150. package/src/config/provider-ranking.ts +119 -0
  151. package/src/config/settings-schema.ts +74 -1
  152. package/src/config/settings.ts +246 -108
  153. package/src/coordinator-mcp/question-gate-codec.ts +1 -1
  154. package/src/coordinator-mcp/server.ts +5 -12
  155. package/src/defaults/gjc/skills/deep-interview/SKILL.md +230 -82
  156. package/src/defaults/gjc/skills/ralplan/SKILL.md +77 -41
  157. package/src/defaults/gjc/skills/team/SKILL.md +3 -1
  158. package/src/defaults/gjc/skills/ultragoal/SKILL.md +62 -39
  159. package/src/defaults/gjc/skills/ultragoal/validation-batch-contracts.md +12 -0
  160. package/src/defaults/gjc-defaults.ts +4 -4
  161. package/src/eval/py/executor.ts +7 -2
  162. package/src/exa/mcp-client.ts +12 -3
  163. package/src/exec/bash-executor.ts +144 -27
  164. package/src/extensibility/extensions/runner.ts +15 -0
  165. package/src/extensibility/extensions/types.ts +46 -5
  166. package/src/extensibility/gjc-plugins/constrained-hooks.ts +8 -2
  167. package/src/extensibility/gjc-plugins/index.ts +19 -2
  168. package/src/extensibility/gjc-plugins/installer.ts +189 -50
  169. package/src/extensibility/gjc-plugins/lifecycle-reconciliation.ts +199 -0
  170. package/src/extensibility/gjc-plugins/lifecycle.ts +626 -0
  171. package/src/extensibility/gjc-plugins/observability.ts +3 -3
  172. package/src/extensibility/gjc-plugins/prompt-appendix.ts +5 -1
  173. package/src/extensibility/gjc-plugins/runtime-adapters.ts +12 -2
  174. package/src/extensibility/gjc-plugins/runtime-quarantine.ts +121 -0
  175. package/src/extensibility/gjc-plugins/schema.ts +84 -12
  176. package/src/extensibility/gjc-plugins/session-validation.ts +9 -3
  177. package/src/extensibility/gjc-plugins/types.ts +141 -0
  178. package/src/extensibility/gjc-plugins/validation.ts +9 -0
  179. package/src/extensibility/shared-events.ts +5 -0
  180. package/src/gjc-runtime/deep-interview-ambiguity.ts +47 -82
  181. package/src/gjc-runtime/deep-interview-recorder.ts +227 -310
  182. package/src/gjc-runtime/deep-interview-runtime.ts +109 -270
  183. package/src/gjc-runtime/deep-interview-stage.ts +1016 -0
  184. package/src/gjc-runtime/deep-interview-state.ts +12 -943
  185. package/src/gjc-runtime/gc-render.ts +1 -0
  186. package/src/gjc-runtime/gc-runtime.ts +11 -1
  187. package/src/gjc-runtime/launch-tmux.ts +25 -6
  188. package/src/gjc-runtime/managed-owner-admission.ts +1 -1
  189. package/src/gjc-runtime/memory-guard-owner-claims.ts +389 -0
  190. package/src/gjc-runtime/ralplan-runtime.ts +1149 -98
  191. package/src/gjc-runtime/state-runtime.ts +2 -1
  192. package/src/gjc-runtime/state-writer.ts +70 -222
  193. package/src/gjc-runtime/team-launch.ts +42 -5
  194. package/src/gjc-runtime/team-runtime.ts +1085 -40
  195. package/src/gjc-runtime/team-store.ts +32 -0
  196. package/src/gjc-runtime/team-worker-heartbeat.ts +149 -0
  197. package/src/gjc-runtime/team-worker-memory-guard.ts +363 -0
  198. package/src/gjc-runtime/team-workers.ts +1 -0
  199. package/src/gjc-runtime/tmux-owner-isolation.ts +28 -0
  200. package/src/gjc-runtime/tmux-sessions.ts +58 -13
  201. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +20 -0
  202. package/src/gjc-runtime/ultragoal-runtime.ts +414 -618
  203. package/src/gjc-runtime/workflow-manifest.generated.json +105 -449
  204. package/src/gjc-runtime/workflow-manifest.ts +38 -247
  205. package/src/hooks/native-skill-hook.ts +17 -4
  206. package/src/hooks/skill-state.ts +1 -23
  207. package/src/internal-urls/docs-index.generated.ts +21 -22
  208. package/src/internal-urls/local-root-gc.ts +127 -0
  209. package/src/main.ts +9 -5
  210. package/src/memories/index.ts +10 -0
  211. package/src/modes/DESIGN.md +98 -0
  212. package/src/modes/acp/acp-agent.ts +339 -191
  213. package/src/modes/acp/acp-event-mapper.ts +14 -7
  214. package/src/modes/acp/acp-mode.ts +39 -3
  215. package/src/modes/components/assistant-message.ts +123 -22
  216. package/src/modes/components/gjc-bundle-settings.ts +508 -0
  217. package/src/modes/components/irc-sidebar.ts +176 -62
  218. package/src/modes/components/model-selector.ts +61 -4
  219. package/src/modes/components/notifications-settings-editor.ts +12 -1
  220. package/src/modes/components/oauth-selector.ts +96 -28
  221. package/src/modes/components/read-tool-group.ts +82 -14
  222. package/src/modes/components/session-observer-overlay.ts +457 -83
  223. package/src/modes/components/settings-selector.ts +116 -23
  224. package/src/modes/components/status-line/gh.ts +16 -0
  225. package/src/modes/components/tool-execution.ts +138 -27
  226. package/src/modes/components/tool-status-header.ts +3 -14
  227. package/src/modes/components/transcript-viewer-overlay.ts +99 -24
  228. package/src/modes/controllers/command-controller.ts +4 -0
  229. package/src/modes/controllers/event-controller.ts +109 -27
  230. package/src/modes/controllers/extension-ui-controller.ts +26 -2
  231. package/src/modes/controllers/input-controller.ts +18 -3
  232. package/src/modes/controllers/selector-controller.ts +127 -36
  233. package/src/modes/interactive-mode.ts +62 -3
  234. package/src/modes/irc-observation-ledger.ts +71 -15
  235. package/src/modes/runtime-init.ts +22 -2
  236. package/src/modes/types.ts +2 -0
  237. package/src/modes/utils/ui-helpers.ts +94 -1
  238. package/src/prompts/agent-fragments/ralplan-persistence.md +4 -3
  239. package/src/prompts/agents/architect.md +9 -1
  240. package/src/prompts/agents/critic.md +9 -0
  241. package/src/prompts/system/eager-todo.md +8 -4
  242. package/src/prompts/system/system-prompt.md +11 -5
  243. package/src/prompts/tools/bash.md +5 -5
  244. package/src/prompts/tools/read.md +4 -2
  245. package/src/prompts/tools/search-tool-bm25.md +5 -0
  246. package/src/prompts/tools/task.md +1 -1
  247. package/src/reminders/star-reminder.ts +4 -42
  248. package/src/runtime-mcp/manager.ts +19 -4
  249. package/src/runtime-mcp/smithery-auth.ts +17 -2
  250. package/src/runtime-mcp/smithery-connect.ts +11 -1
  251. package/src/sdk/acp/adapter.ts +22 -6
  252. package/src/sdk/broker/lifecycle.ts +25 -6
  253. package/src/sdk/broker/transport.ts +35 -3
  254. package/src/sdk/bus/attachment-registry.ts +5 -1
  255. package/src/sdk/bus/chat-daemon-cli.ts +4 -39
  256. package/src/sdk/bus/chat-daemon-control.ts +6 -3
  257. package/src/sdk/bus/config.ts +18 -2
  258. package/src/sdk/bus/control-drain-lease.ts +104 -0
  259. package/src/sdk/bus/index.ts +984 -146
  260. package/src/sdk/bus/kind-aware-reconciliation.ts +317 -0
  261. package/src/sdk/bus/lifecycle-commands.ts +4 -1
  262. package/src/sdk/bus/lifecycle-control-runtime.ts +403 -88
  263. package/src/sdk/bus/prompt-reconciliation.ts +2 -1
  264. package/src/sdk/bus/reconciliation-store.ts +303 -0
  265. package/src/sdk/bus/rich-draft.ts +1 -1
  266. package/src/sdk/bus/rich-render.ts +2 -2
  267. package/src/sdk/bus/telegram-adoption-intent.ts +574 -0
  268. package/src/sdk/bus/telegram-cli.ts +33 -8
  269. package/src/sdk/bus/telegram-daemon-cli.ts +1 -0
  270. package/src/sdk/bus/telegram-daemon-contract.ts +11 -4
  271. package/src/sdk/bus/telegram-daemon.ts +916 -23
  272. package/src/sdk/bus/telegram-reference.ts +40 -3
  273. package/src/sdk/bus/threaded-render.ts +48 -3
  274. package/src/sdk/bus/topic-registry.ts +20 -0
  275. package/src/sdk/host/control/dispatch.ts +5 -1
  276. package/src/sdk/host/control/operations.ts +1 -1
  277. package/src/sdk/host/host.ts +23 -1
  278. package/src/sdk/host/query/handlers.ts +55 -0
  279. package/src/sdk/host/query/revision-store.ts +36 -2
  280. package/src/sdk/host/reverse-leases.ts +44 -7
  281. package/src/sdk/mcp/server.ts +46 -18
  282. package/src/sdk/prompt-status.ts +16 -3
  283. package/src/sdk/protocol/operation-inventory.generated.json +51 -0
  284. package/src/sdk/protocol/operation-registry.ts +7 -2
  285. package/src/sdk/session.ts +101 -10
  286. package/src/session/agent-session.ts +1286 -220
  287. package/src/session/artifacts.ts +22 -0
  288. package/src/session/auth-broker-config.ts +10 -3
  289. package/src/session/blob-store.ts +915 -24
  290. package/src/session/internal/managed-session-scope.ts +44 -6
  291. package/src/session/internal/managed-session-storage.ts +48 -6
  292. package/src/session/memory-guard-checkpoint-participant.ts +131 -0
  293. package/src/session/session-manager.ts +2364 -438
  294. package/src/session/session-storage.ts +9 -1
  295. package/src/session/streaming-output.ts +500 -111
  296. package/src/setup/credential-import.ts +75 -13
  297. package/src/setup/provider-onboarding.ts +19 -4
  298. package/src/skill-state/active-state.ts +32 -10
  299. package/src/skill-state/workflow-hud.ts +42 -2
  300. package/src/skill-state/workflow-mutation-guard.ts +560 -8
  301. package/src/task/executor.ts +122 -39
  302. package/src/task/index.ts +23 -14
  303. package/src/task/provider-retry-status.ts +16 -0
  304. package/src/task/receipt.ts +23 -7
  305. package/src/task/render.ts +6 -2
  306. package/src/task/types.ts +108 -0
  307. package/src/tools/ask-answer-registry.ts +12 -6
  308. package/src/tools/ask.ts +169 -118
  309. package/src/tools/ast-edit.ts +1 -0
  310. package/src/tools/ast-grep.ts +1 -0
  311. package/src/tools/bash-interactive.ts +8 -3
  312. package/src/tools/bash.ts +503 -60
  313. package/src/tools/browser/launch.ts +41 -6
  314. package/src/tools/fetch.ts +114 -23
  315. package/src/tools/find.ts +1 -0
  316. package/src/tools/image-gen.ts +29 -5
  317. package/src/tools/index.ts +4 -0
  318. package/src/tools/output-meta.ts +281 -20
  319. package/src/tools/path-utils.ts +8 -3
  320. package/src/tools/read-internals.ts +44 -0
  321. package/src/tools/read.ts +1560 -310
  322. package/src/tools/resource-gc.ts +182 -18
  323. package/src/tools/review.ts +5 -7
  324. package/src/tools/search.ts +1 -0
  325. package/src/tools/subagent-render.ts +6 -2
  326. package/src/tools/subagent.ts +6 -0
  327. package/src/tools/telegram-send.ts +6 -3
  328. package/src/tools/tool-result.ts +14 -1
  329. package/src/utils/gh.ts +39 -0
  330. package/src/utils/image-resize.ts +3 -0
  331. package/src/web/search/providers/anthropic.ts +4 -4
  332. package/src/web/search/providers/codex.ts +1 -1
  333. package/src/web/search/providers/kimi.ts +15 -5
  334. package/src/web/search/providers/searxng.ts +47 -4
  335. package/src/web/search/providers/xai.ts +7 -2
  336. package/dist/types/gjc-runtime/deep-interview-draft.d.ts +0 -8
  337. package/dist/types/gjc-runtime/deep-interview-payload.d.ts +0 -41
  338. package/dist/types/gjc-runtime/deep-interview-repair.d.ts +0 -17
  339. package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +0 -23
  340. package/src/defaults/gjc/skills/ultragoal/pipeline-validation-contracts.md +0 -30
  341. package/src/gjc-runtime/deep-interview-draft.ts +0 -843
  342. package/src/gjc-runtime/deep-interview-payload.ts +0 -262
  343. package/src/gjc-runtime/deep-interview-repair.ts +0 -1674
  344. package/src/gjc-runtime/ultragoal-pipeline.ts +0 -306
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * TypeScript is the authoritative source of truth for GJC workflow manifests.
3
- * Keep the checked-in JSON projection synchronized manually with this module.
3
+ * Any JSON manifest projection is derived from this module and must never be
4
+ * hand-edited.
4
5
  */
5
6
 
6
7
  import { CANONICAL_GJC_WORKFLOW_SKILLS, type CanonicalGjcWorkflowSkill } from "../skill-state/canonical-skills";
@@ -22,9 +23,7 @@ export interface WorkflowVerb {
22
23
  name: string;
23
24
  planned?: boolean;
24
25
  /** Invocation surface that exposes this verb in the real CLI parser. */
25
- surface?: "state-action" | "command-positional" | "command-flag" | "draft-action";
26
- /** Legacy surface retained for callers that have not migrated to normal typed commands. */
27
- compatibilityOnly?: boolean;
26
+ surface?: "state-action" | "command-positional" | "command-flag";
28
27
  }
29
28
 
30
29
  export interface TypedArgSpec {
@@ -33,7 +32,6 @@ export interface TypedArgSpec {
33
32
  enumValues?: string[];
34
33
  required?: boolean;
35
34
  appliesToVerbs?: string[];
36
- compatibilityOnly?: boolean;
37
35
  planned?: boolean;
38
36
  }
39
37
 
@@ -74,7 +72,22 @@ const PLANNED_ADMIN_VERBS = ["graph", "prune", "migrate", "force-overwrite"] as
74
72
  const COMMON_TYPED_ARGS: TypedArgSpec[] = [
75
73
  { name: "input", type: "string", appliesToVerbs: ["write", "api"] },
76
74
  { name: "mode", type: "enum", enumValues: [...CANONICAL_GJC_WORKFLOW_SKILLS], appliesToVerbs: [...STATE_VERBS] },
77
- { name: "session-id", type: "string", appliesToVerbs: [...STATE_VERBS, "kickoff", "write-spec", "write-artifact"] },
75
+ {
76
+ name: "session-id",
77
+ type: "string",
78
+ appliesToVerbs: [
79
+ ...STATE_VERBS,
80
+ "kickoff",
81
+ "write-spec",
82
+ "write-artifact",
83
+ "stage",
84
+ "check",
85
+ "apply",
86
+ "discard",
87
+ "read",
88
+ "write",
89
+ ],
90
+ },
78
91
  { name: "thread-id", type: "string", appliesToVerbs: ["write", "clear", "handoff"] },
79
92
  { name: "turn-id", type: "string", appliesToVerbs: ["write", "clear", "handoff"] },
80
93
  { name: "to", type: "string", required: true, appliesToVerbs: ["handoff"] },
@@ -95,9 +108,6 @@ function stateVerbs(): WorkflowVerb[] {
95
108
  function positionalVerbs(names: readonly string[]): WorkflowVerb[] {
96
109
  return names.map(name => verb(name, "command-positional"));
97
110
  }
98
- function draftVerbs(names: readonly string[]): WorkflowVerb[] {
99
- return names.map(name => verb(name, "draft-action"));
100
- }
101
111
 
102
112
  function flagVerbs(names: readonly string[]): WorkflowVerb[] {
103
113
  return names.map(name => verb(name, "command-flag"));
@@ -168,15 +178,7 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
168
178
  verbs: [
169
179
  ...stateVerbs(),
170
180
  ...flagVerbs(["kickoff", "write-spec"]),
171
- ...draftVerbs(["draft create", "draft edit", "draft show", "draft check", "draft rebase", "draft discard"]),
172
- ...positionalVerbs([
173
- "initialize-context",
174
- "confirm-topology",
175
- "record-answer",
176
- "apply-round-result",
177
- "inspect",
178
- "sanity-check",
179
- ]),
181
+ ...positionalVerbs(["stage", "check", "apply", "discard", "read", "write", "clear", "handoff"]),
180
182
  ...plannedVerbs(PLANNED_ADMIN_VERBS),
181
183
  ],
182
184
  typedArgs: [
@@ -185,180 +187,25 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
185
187
  { name: "deep", type: "boolean", appliesToVerbs: ["kickoff"] },
186
188
  { name: "threshold", type: "number", appliesToVerbs: ["kickoff"] },
187
189
  { name: "threshold-source", type: "string", appliesToVerbs: ["kickoff"] },
188
- { name: "trace", type: "boolean", appliesToVerbs: ["kickoff"] },
189
- { name: "json", type: "boolean", appliesToVerbs: ["kickoff", "write-spec"] },
190
190
  { name: "stage", type: "enum", enumValues: ["final"], appliesToVerbs: ["write-spec"] },
191
191
  { name: "slug", type: "string", appliesToVerbs: ["write-spec"] },
192
192
  { name: "spec", type: "string", required: true, appliesToVerbs: ["write-spec"] },
193
193
  { name: "handoff", type: "enum", enumValues: ["ralplan"], appliesToVerbs: ["write-spec"] },
194
194
  { name: "deliberate", type: "boolean", appliesToVerbs: ["write-spec"] },
195
- {
196
- name: "session-id",
197
- type: "string",
198
- required: true,
199
- appliesToVerbs: ["draft create"],
200
- },
201
- {
202
- name: "for",
203
- type: "enum",
204
- enumValues: ["initialize-context", "confirm-topology", "record-answer", "apply-round-result"],
205
- required: true,
206
- appliesToVerbs: ["draft create"],
207
- },
208
- { name: "round-key", type: "string", appliesToVerbs: ["draft create"] },
209
- { name: "round", type: "number", appliesToVerbs: ["draft create"] },
210
- { name: "question-id", type: "string", appliesToVerbs: ["draft create"] },
211
- { name: "round-id", type: "string", appliesToVerbs: ["draft create"] },
212
- { name: "component-id", type: "string", appliesToVerbs: ["draft create"] },
213
- { name: "dimension", type: "string", appliesToVerbs: ["draft create"] },
214
- {
215
- name: "draft-id",
216
- type: "string",
217
- required: true,
218
- appliesToVerbs: [
219
- "draft edit",
220
- "draft show",
221
- "draft check",
222
- "draft rebase",
223
- "draft discard",
224
- "initialize-context",
225
- "confirm-topology",
226
- "record-answer",
227
- "apply-round-result",
228
- ],
229
- },
230
- {
231
- name: "expected-draft-revision",
232
- type: "number",
233
- required: true,
234
- appliesToVerbs: [
235
- "draft edit",
236
- "draft rebase",
237
- "draft discard",
238
- "initialize-context",
239
- "confirm-topology",
240
- "record-answer",
241
- "apply-round-result",
242
- ],
243
- },
244
- {
245
- name: "op",
246
- type: "enum",
247
- enumValues: ["set", "append", "remove"],
248
- required: true,
249
- appliesToVerbs: ["draft edit"],
250
- },
251
- { name: "path", type: "string", required: true, appliesToVerbs: ["draft edit"] },
252
- { name: "value", type: "string", appliesToVerbs: ["draft edit"] },
253
- { name: "value-file", type: "string", appliesToVerbs: ["draft edit"] },
254
- { name: "null", type: "boolean", appliesToVerbs: ["draft edit"] },
255
- { name: "to-state-revision", type: "number", required: true, appliesToVerbs: ["draft rebase"] },
256
195
  {
257
196
  name: "json",
258
197
  type: "boolean",
259
- required: true,
260
- appliesToVerbs: [
261
- "draft create",
262
- "draft edit",
263
- "draft show",
264
- "draft check",
265
- "draft rebase",
266
- "draft discard",
267
- "initialize-context",
268
- "confirm-topology",
269
- "record-answer",
270
- "apply-round-result",
271
- "inspect",
272
- "sanity-check",
273
- ],
274
- },
275
- {
276
- name: "session-id",
277
- type: "string",
278
- required: true,
279
- appliesToVerbs: ["inspect", "sanity-check"],
280
- },
281
- {
282
- name: "session-id",
283
- type: "string",
284
- required: true,
285
- compatibilityOnly: true,
286
- appliesToVerbs: ["initialize-context", "confirm-topology", "record-answer", "apply-round-result"],
287
- },
288
- {
289
- name: "schema-version",
290
- type: "number",
291
- required: true,
292
- compatibilityOnly: true,
293
- appliesToVerbs: ["initialize-context", "confirm-topology", "record-answer", "apply-round-result"],
294
- },
295
- {
296
- name: "expected-revision",
297
- type: "number",
298
- required: true,
299
- compatibilityOnly: true,
300
- appliesToVerbs: ["initialize-context", "confirm-topology", "record-answer", "apply-round-result"],
301
- },
302
- {
303
- name: "input-json",
304
- type: "object",
305
- required: true,
306
- compatibilityOnly: true,
307
- appliesToVerbs: ["initialize-context", "confirm-topology"],
308
- },
309
- {
310
- name: "round",
311
- type: "number",
312
- required: true,
313
- compatibilityOnly: true,
314
- appliesToVerbs: ["record-answer", "apply-round-result"],
315
- },
316
- {
317
- name: "question-id",
318
- type: "string",
319
- required: true,
320
- compatibilityOnly: true,
321
- appliesToVerbs: ["record-answer", "apply-round-result"],
198
+ appliesToVerbs: ["write-spec", "stage", "check", "apply", "discard", "read", "write", "clear", "handoff"],
322
199
  },
200
+ { name: "input", type: "string", required: true, appliesToVerbs: ["stage", "write"] },
201
+ { name: "reset", type: "boolean", appliesToVerbs: ["write"] },
323
202
  {
324
- name: "round-id",
325
- type: "string",
326
- compatibilityOnly: true,
327
- appliesToVerbs: ["record-answer", "apply-round-result"],
328
- },
329
- { name: "component-id", type: "string", compatibilityOnly: true, appliesToVerbs: ["record-answer"] },
330
- { name: "dimension", type: "string", compatibilityOnly: true, appliesToVerbs: ["record-answer"] },
331
- {
332
- name: "answer-json",
333
- type: "object",
334
- required: true,
335
- compatibilityOnly: true,
336
- appliesToVerbs: ["record-answer"],
337
- },
338
- {
339
- name: "question-json",
340
- type: "string",
341
- required: true,
342
- compatibilityOnly: true,
343
- appliesToVerbs: ["record-answer"],
344
- },
345
- {
346
- name: "result-json",
347
- type: "object",
348
- required: true,
349
- compatibilityOnly: true,
350
- appliesToVerbs: ["apply-round-result"],
351
- },
352
- {
353
- name: "selector",
203
+ name: "for",
354
204
  type: "enum",
355
- enumValues: ["summary", "recent-scored", "pending", "round", "topology", "facts", "triggers", "floor"],
205
+ enumValues: ["initialize-context", "record-round", "update-facts", "merge-state"],
356
206
  required: true,
357
- appliesToVerbs: ["inspect"],
207
+ appliesToVerbs: ["stage"],
358
208
  },
359
- { name: "round-key", type: "string", appliesToVerbs: ["inspect"] },
360
- { name: "cursor", type: "string", appliesToVerbs: ["inspect"] },
361
- { name: "limit", type: "number", appliesToVerbs: ["inspect"] },
362
209
  { name: "args", type: "string", planned: true },
363
210
  { name: "metadata-json", type: "string", planned: true },
364
211
  ],
@@ -443,9 +290,7 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
443
290
  "classify-blocker",
444
291
  "record-critic-verdict",
445
292
  "record-critic-gate-override",
446
- "start-pipeline-overlap",
447
- "join-pipeline-overlap",
448
- "rebaseline-pipeline-overlap",
293
+ "quality-gate",
449
294
  ]),
450
295
  ...plannedVerbs(PLANNED_ADMIN_VERBS),
451
296
  ],
@@ -480,7 +325,7 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
480
325
  "classify-blocker",
481
326
  "record-critic-verdict",
482
327
  "record-critic-gate-override",
483
- "rebaseline-pipeline-overlap",
328
+ "quality-gate",
484
329
  ],
485
330
  },
486
331
  {
@@ -500,69 +345,10 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
500
345
  { name: "blockers-json", type: "string", appliesToVerbs: ["record-critic-verdict"] },
501
346
  { name: "goal-id", type: "string", appliesToVerbs: ["record-critic-verdict"] },
502
347
  { name: "classification-event-id", type: "string", appliesToVerbs: ["record-critic-verdict"] },
503
- {
504
- name: "goal-metadata-json",
505
- type: "string",
506
- appliesToVerbs: ["create-goals"],
507
- },
508
- {
509
- name: "prior-goal-id",
510
- type: "string",
511
- required: true,
512
- appliesToVerbs: ["start-pipeline-overlap"],
513
- },
514
- {
515
- name: "next-goal-id",
516
- type: "string",
517
- required: true,
518
- appliesToVerbs: ["start-pipeline-overlap"],
519
- },
520
- {
521
- name: "review-handles-json",
522
- type: "string",
523
- required: true,
524
- appliesToVerbs: ["start-pipeline-overlap"],
525
- },
526
- {
527
- name: "qa-handles-json",
528
- type: "string",
529
- required: true,
530
- appliesToVerbs: ["start-pipeline-overlap"],
531
- },
532
- {
533
- name: "implementation-handle-json",
534
- type: "string",
535
- required: true,
536
- appliesToVerbs: ["start-pipeline-overlap"],
537
- },
538
- {
539
- name: "overlap-id",
540
- type: "string",
541
- required: true,
542
- appliesToVerbs: ["join-pipeline-overlap", "rebaseline-pipeline-overlap"],
543
- },
544
- {
545
- name: "review-result-json",
546
- type: "string",
547
- required: true,
548
- appliesToVerbs: ["join-pipeline-overlap"],
549
- },
550
- {
551
- name: "qa-result-json",
552
- type: "string",
553
- required: true,
554
- appliesToVerbs: ["join-pipeline-overlap"],
555
- },
556
- {
557
- name: "target-state-json",
558
- type: "string",
559
- required: true,
560
- appliesToVerbs: ["rebaseline-pipeline-overlap"],
561
- },
562
- { name: "quality-gate-json", type: "string", appliesToVerbs: ["checkpoint"] },
348
+ { name: "quality-gate-json", type: "string", appliesToVerbs: ["checkpoint", "quality-gate"] },
349
+ { name: "goal-id", type: "string", appliesToVerbs: ["quality-gate"] },
563
350
  { name: "goal-id", type: "string", appliesToVerbs: ["steer"] },
564
351
  { name: "goal-id", type: "string", appliesToVerbs: ["classify-blocker"] },
565
- { name: "goal-id", type: "string", required: true, appliesToVerbs: ["rebaseline-pipeline-overlap"] },
566
352
  {
567
353
  name: "classification",
568
354
  type: "enum",
@@ -612,9 +398,6 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
612
398
  "classify-blocker",
613
399
  "record-critic-verdict",
614
400
  "record-critic-gate-override",
615
- "start-pipeline-overlap",
616
- "join-pipeline-overlap",
617
- "rebaseline-pipeline-overlap",
618
401
  ],
619
402
  },
620
403
  { name: "directive-json", type: "string", appliesToVerbs: ["steer"], planned: true },
@@ -679,6 +462,9 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
679
462
  "read-worker-status",
680
463
  "read-worker-heartbeat",
681
464
  "update-worker-heartbeat",
465
+ "read-worker-memory-guard",
466
+ "update-worker-memory-guard",
467
+ "apply-worker-memory-guard",
682
468
  "write-worker-inbox",
683
469
  "write-worker-identity",
684
470
  "append-event",
@@ -705,6 +491,11 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
705
491
  },
706
492
  { name: "completion_evidence", type: "object", appliesToVerbs: ["api"] },
707
493
  { name: "completionEvidence", type: "object", appliesToVerbs: ["api"] },
494
+ { name: "platform", type: "string", appliesToVerbs: ["api"] },
495
+ { name: "automatic-action-allowed", type: "boolean", appliesToVerbs: ["api"] },
496
+ { name: "incident-id", type: "string", appliesToVerbs: ["api"] },
497
+ { name: "pid-probe", type: "object", appliesToVerbs: ["api"] },
498
+ { name: "candidates", type: "object", appliesToVerbs: ["api"] },
708
499
  { name: "args", type: "string", planned: true },
709
500
  { name: "metadata-json", type: "string", planned: true },
710
501
  ],
@@ -1,6 +1,6 @@
1
1
  import { appendFile, mkdir, stat } from "node:fs/promises";
2
- import * as os from "node:os";
3
2
  import * as path from "node:path";
3
+ import { getAgentDir, getConfigDirName } from "@gajae-code/utils";
4
4
  import { YAML } from "bun";
5
5
  import type { SkillDiscoverySettings } from "../config/skill-settings-defaults";
6
6
  import { DEFAULT_DISABLED_EXTENSIONS, DEFAULT_SKILL_DISCOVERY_SETTINGS } from "../config/skill-settings-defaults";
@@ -153,11 +153,24 @@ async function readRawConfig(filePath: string): Promise<Record<string, unknown>
153
153
  }
154
154
  }
155
155
 
156
+ /**
157
+ * Config files that decide skill discovery, resolved through the trusted helpers.
158
+ *
159
+ * These paths pick the `config.yml` whose `skills.customDirectories` the agent
160
+ * then loads skills from, so the directory they are built from is a trust
161
+ * boundary. Bun loads `cwd/.env` into `process.env` before any module runs, so
162
+ * reading `GJC_CODING_AGENT_DIR` / `GJC_CONFIG_DIR` directly let a repository
163
+ * point this at a directory it ships and inject its own skill directories.
164
+ *
165
+ * `getAgentDir()` and `getConfigDirName()` apply the escalation guards that
166
+ * already exist for exactly this (`trustedAgentDirOverride`,
167
+ * `trustedConfigDirName`), and resolve to the same locations this used to build
168
+ * by hand: `dirs.agentDir` is `path.join(os.homedir(), getConfigDirName(), "agent")`
169
+ * when no trusted override is present.
170
+ */
156
171
  function resolveConfigPaths(cwd: string, override?: string[]): string[] {
157
172
  if (override) return override;
158
- const configDirName = process.env.GJC_CONFIG_DIR ?? process.env.PI_CONFIG_DIR ?? ".gjc";
159
- const userAgentDir = process.env.GJC_CODING_AGENT_DIR ?? path.join(os.homedir(), configDirName, "agent");
160
- return [path.join(userAgentDir, "config.yml"), path.join(cwd, configDirName, "config.yml")];
173
+ return [path.join(getAgentDir(), "config.yml"), path.join(cwd, getConfigDirName(), "config.yml")];
161
174
  }
162
175
 
163
176
  async function resolveEffectiveSkillConfig(
@@ -3,7 +3,6 @@ import * as path from "node:path";
3
3
  import { logger } from "@gajae-code/utils";
4
4
  import type { SkillDiscoverySettings } from "../config/skill-settings-defaults";
5
5
  import { detectDeepInterviewPlaintextAskLeak } from "../deep-interview/plaintext-gate-guard";
6
- import { scoreToUnits } from "../gjc-runtime/deep-interview-ambiguity";
7
6
  import { activeSnapshotPath, modeStatePath as sessionModeStatePath } from "../gjc-runtime/session-layout";
8
7
  import { resolveGjcSessionForRead } from "../gjc-runtime/session-resolution";
9
8
  import { ModeStateSchema, SkillActiveStateSchema } from "../gjc-runtime/state-schema";
@@ -411,29 +410,8 @@ async function seedSkillActivationState(
411
410
  ...(input.turnId ? { turn_id: input.turnId } : {}),
412
411
  };
413
412
  if (skill === "deep-interview") {
414
- const threshold = DEFAULT_DEEP_INTERVIEW_AMBIGUITY_THRESHOLD;
415
- const thresholdUnits = scoreToUnits(threshold);
416
- modeState.schema_version = 1;
417
- modeState.resolution = "standard";
418
- modeState.threshold = threshold;
419
- modeState.threshold_units = thresholdUnits;
413
+ modeState.threshold = DEFAULT_DEEP_INTERVIEW_AMBIGUITY_THRESHOLD;
420
414
  modeState.threshold_source = "default";
421
- modeState.state = {
422
- setup: { status: "unresolved" },
423
- type: "greenfield",
424
- intent_contract_required: true,
425
- rounds: [],
426
- established_facts: [],
427
- topology: { status: "pending", components: [], deferred_components: [] },
428
- ontology_snapshots: [],
429
- auto_researched_rounds: [],
430
- auto_answered_rounds: [],
431
- architect_failures: 0,
432
- current_ambiguity: 1.0,
433
- threshold,
434
- threshold_units: thresholdUnits,
435
- threshold_source: "default",
436
- };
437
415
  }
438
416
 
439
417
  await readExistingStateForMutation(initializedStatePath);