@gajae-code/coding-agent 0.11.10 → 0.12.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 (249) hide show
  1. package/CHANGELOG.md +86 -2
  2. package/dist/types/cli/read-cli.d.ts +1 -0
  3. package/dist/types/cli.d.ts +8 -1
  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-profile-activation.d.ts +1 -0
  8. package/dist/types/config/model-profile-contract.d.ts +2 -0
  9. package/dist/types/config/model-registry.d.ts +4 -0
  10. package/dist/types/config/provider-auth-health.d.ts +14 -0
  11. package/dist/types/config/provider-ranking.d.ts +59 -0
  12. package/dist/types/config/settings-schema.d.ts +86 -3
  13. package/dist/types/config/settings.d.ts +3 -0
  14. package/dist/types/extensibility/extensions/types.d.ts +43 -2
  15. package/dist/types/extensibility/shared-events.d.ts +6 -0
  16. package/dist/types/gjc-runtime/deep-interview-ambiguity.d.ts +5 -12
  17. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +17 -32
  18. package/dist/types/gjc-runtime/deep-interview-stage.d.ts +37 -0
  19. package/dist/types/gjc-runtime/deep-interview-state.d.ts +4 -135
  20. package/dist/types/gjc-runtime/gc-runtime.d.ts +1 -1
  21. package/dist/types/gjc-runtime/linux-proc.d.ts +22 -14
  22. package/dist/types/gjc-runtime/memory-guard-owner-claims.d.ts +47 -0
  23. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +112 -1
  24. package/dist/types/gjc-runtime/state-runtime.d.ts +3 -1
  25. package/dist/types/gjc-runtime/state-writer.d.ts +5 -46
  26. package/dist/types/gjc-runtime/team-launch.d.ts +1 -1
  27. package/dist/types/gjc-runtime/team-runtime.d.ts +2 -1
  28. package/dist/types/gjc-runtime/team-store.d.ts +12 -0
  29. package/dist/types/gjc-runtime/team-worker-memory-guard.d.ts +92 -0
  30. package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +7 -0
  31. package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +8 -0
  32. package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -5
  33. package/dist/types/internal-urls/local-root-gc.d.ts +2 -0
  34. package/dist/types/main.d.ts +1 -1
  35. package/dist/types/memories/index.d.ts +2 -0
  36. package/dist/types/modes/acp/acp-agent.d.ts +22 -9
  37. package/dist/types/modes/components/assistant-message.d.ts +3 -1
  38. package/dist/types/modes/components/irc-sidebar.d.ts +41 -0
  39. package/dist/types/modes/components/queue-pane.d.ts +8 -0
  40. package/dist/types/modes/components/queued-message-selector.d.ts +6 -0
  41. package/dist/types/modes/components/read-tool-group.d.ts +4 -4
  42. package/dist/types/modes/components/session-observer-overlay.d.ts +4 -0
  43. package/dist/types/modes/components/settings-selector.d.ts +2 -0
  44. package/dist/types/modes/components/tool-execution.d.ts +8 -0
  45. package/dist/types/modes/components/welcome.d.ts +1 -0
  46. package/dist/types/modes/controllers/event-controller.d.ts +3 -0
  47. package/dist/types/modes/interactive-mode.d.ts +7 -1
  48. package/dist/types/modes/irc-observation-ledger.d.ts +17 -1
  49. package/dist/types/modes/types.d.ts +2 -0
  50. package/dist/types/modes/utils/ui-helpers.d.ts +16 -0
  51. package/dist/types/runtime/memory-domain.d.ts +9 -0
  52. package/dist/types/runtime/memory-guard-contract.d.ts +71 -0
  53. package/dist/types/runtime/memory-guard.d.ts +39 -0
  54. package/dist/types/runtime/memory-limit.d.ts +11 -0
  55. package/dist/types/runtime-mcp/manager.d.ts +8 -0
  56. package/dist/types/runtime-mcp/smithery-auth.d.ts +5 -0
  57. package/dist/types/sdk/acp/final-text.d.ts +19 -0
  58. package/dist/types/sdk/acp/mcp.d.ts +23 -0
  59. package/dist/types/sdk/broker/lifecycle.d.ts +7 -0
  60. package/dist/types/sdk/bus/chat-daemon-control.d.ts +2 -1
  61. package/dist/types/sdk/bus/control-drain-lease.d.ts +52 -0
  62. package/dist/types/sdk/bus/index.d.ts +18 -2
  63. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +37 -0
  64. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +2 -1
  65. package/dist/types/sdk/bus/rate-limit-pool.d.ts +2 -0
  66. package/dist/types/sdk/bus/reconciliation-store.d.ts +65 -0
  67. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +6 -4
  68. package/dist/types/sdk/bus/telegram-daemon.d.ts +23 -3
  69. package/dist/types/sdk/host/control/operations.d.ts +2 -1
  70. package/dist/types/sdk/host/host.d.ts +2 -0
  71. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  72. package/dist/types/sdk/lifecycle-session.d.ts +10 -1
  73. package/dist/types/sdk/startup-capability.d.ts +6 -0
  74. package/dist/types/session/agent-session.d.ts +51 -19
  75. package/dist/types/session/fallback-chain-controller.d.ts +18 -2
  76. package/dist/types/session/internal/managed-session-scope.d.ts +27 -0
  77. package/dist/types/session/memory-guard-checkpoint-participant.d.ts +69 -0
  78. package/dist/types/session/session-manager.d.ts +59 -13
  79. package/dist/types/session/streaming-output.d.ts +60 -5
  80. package/dist/types/skill-state/active-state.d.ts +0 -4
  81. package/dist/types/skill-state/workflow-hud.d.ts +3 -0
  82. package/dist/types/task/executor.d.ts +6 -0
  83. package/dist/types/task/types.d.ts +36 -0
  84. package/dist/types/task/ultragoal-redteam-activation.d.ts +33 -0
  85. package/dist/types/tools/browser/launch.d.ts +7 -0
  86. package/dist/types/tools/fetch.d.ts +17 -1
  87. package/dist/types/tools/output-meta.d.ts +21 -1
  88. package/dist/types/tools/read-internals.d.ts +12 -0
  89. package/dist/types/tools/read.d.ts +45 -1
  90. package/dist/types/tools/resource-gc.d.ts +23 -0
  91. package/dist/types/tools/tool-result.d.ts +7 -1
  92. package/package.json +9 -13
  93. package/scripts/benchmark-sticky-viewport-pr1.ts +239 -0
  94. package/scripts/capture-sticky-viewport-showcase.ts +292 -0
  95. package/scripts/generate-sdk-operation-inventory.ts +4 -0
  96. package/scripts/run-test-manifest.ts +6 -4
  97. package/scripts/verify-gjc-sdk-canonicalization.ts +122 -18
  98. package/scripts/verify-sticky-viewport-showcase.ts +611 -0
  99. package/src/capability/index.ts +8 -0
  100. package/src/cli/args.ts +14 -8
  101. package/src/cli/fast-help.ts +1 -1
  102. package/src/cli/read-cli.ts +2 -1
  103. package/src/cli.ts +49 -2
  104. package/src/commands/deep-interview.ts +29 -9
  105. package/src/commands/harness.ts +35 -12
  106. package/src/commands/read.ts +11 -2
  107. package/src/commands/sdk.ts +91 -7
  108. package/src/commands/team.ts +1 -1
  109. package/src/config/model-profile-activation.ts +1 -0
  110. package/src/config/model-profile-contract.ts +13 -0
  111. package/src/config/model-profiles.ts +24 -0
  112. package/src/config/model-registry.ts +21 -2
  113. package/src/config/provider-auth-health.ts +42 -0
  114. package/src/config/provider-ranking.ts +119 -0
  115. package/src/config/settings-schema.ts +84 -3
  116. package/src/config/settings.ts +254 -108
  117. package/src/defaults/gjc/skills/deep-interview/SKILL.md +229 -82
  118. package/src/defaults/gjc/skills/ralplan/SKILL.md +78 -26
  119. package/src/defaults/gjc/skills/team/SKILL.md +1 -1
  120. package/src/defaults/gjc/skills/ultragoal/SKILL.md +26 -16
  121. package/src/eval/py/executor.ts +7 -2
  122. package/src/extensibility/extensions/runner.ts +4 -0
  123. package/src/extensibility/extensions/types.ts +42 -4
  124. package/src/extensibility/shared-events.ts +5 -0
  125. package/src/gjc-runtime/deep-interview-ambiguity.ts +47 -68
  126. package/src/gjc-runtime/deep-interview-recorder.ts +227 -310
  127. package/src/gjc-runtime/deep-interview-runtime.ts +109 -270
  128. package/src/gjc-runtime/deep-interview-stage.ts +1016 -0
  129. package/src/gjc-runtime/deep-interview-state.ts +12 -921
  130. package/src/gjc-runtime/gc-render.ts +1 -0
  131. package/src/gjc-runtime/gc-runtime.ts +11 -1
  132. package/src/gjc-runtime/linux-proc.ts +70 -36
  133. package/src/gjc-runtime/memory-guard-owner-claims.ts +389 -0
  134. package/src/gjc-runtime/ralplan-runtime.ts +979 -71
  135. package/src/gjc-runtime/state-runtime.ts +50 -12
  136. package/src/gjc-runtime/state-writer.ts +70 -222
  137. package/src/gjc-runtime/team-launch.ts +34 -5
  138. package/src/gjc-runtime/team-runtime.ts +970 -33
  139. package/src/gjc-runtime/team-store.ts +32 -0
  140. package/src/gjc-runtime/team-worker-memory-guard.ts +363 -0
  141. package/src/gjc-runtime/team-workers.ts +1 -0
  142. package/src/gjc-runtime/tmux-owner-isolation.ts +18 -0
  143. package/src/gjc-runtime/ultragoal-receipt-freshness.ts +20 -0
  144. package/src/gjc-runtime/ultragoal-runtime.ts +13 -7
  145. package/src/gjc-runtime/workflow-manifest.generated.json +97 -350
  146. package/src/gjc-runtime/workflow-manifest.ts +34 -179
  147. package/src/hooks/native-skill-hook.ts +17 -4
  148. package/src/hooks/skill-state.ts +1 -23
  149. package/src/internal-urls/docs-index.generated.ts +10 -11
  150. package/src/internal-urls/local-protocol.ts +23 -4
  151. package/src/internal-urls/local-root-gc.ts +127 -0
  152. package/src/main.ts +9 -5
  153. package/src/memories/index.ts +10 -0
  154. package/src/modes/DESIGN.md +47 -0
  155. package/src/modes/acp/acp-agent.ts +597 -67
  156. package/src/modes/acp/acp-event-mapper.ts +106 -12
  157. package/src/modes/acp/acp-mode.ts +39 -3
  158. package/src/modes/components/assistant-message.ts +123 -22
  159. package/src/modes/components/irc-sidebar.ts +176 -62
  160. package/src/modes/components/model-selector.ts +76 -5
  161. package/src/modes/components/notifications-settings-editor.ts +1 -1
  162. package/src/modes/components/oauth-selector.ts +42 -12
  163. package/src/modes/components/queue-pane.ts +55 -9
  164. package/src/modes/components/queued-message-selector.ts +53 -10
  165. package/src/modes/components/read-tool-group.ts +82 -14
  166. package/src/modes/components/session-observer-overlay.ts +187 -32
  167. package/src/modes/components/settings-selector.ts +60 -18
  168. package/src/modes/components/tool-execution.ts +138 -27
  169. package/src/modes/components/tool-status-header.ts +1 -4
  170. package/src/modes/components/welcome.ts +18 -3
  171. package/src/modes/controllers/command-controller.ts +4 -0
  172. package/src/modes/controllers/event-controller.ts +109 -27
  173. package/src/modes/controllers/extension-ui-controller.ts +23 -12
  174. package/src/modes/controllers/input-controller.ts +62 -6
  175. package/src/modes/controllers/selector-controller.ts +83 -37
  176. package/src/modes/interactive-mode.ts +127 -29
  177. package/src/modes/irc-observation-ledger.ts +71 -15
  178. package/src/modes/runtime-init.ts +20 -2
  179. package/src/modes/types.ts +2 -0
  180. package/src/modes/utils/ui-helpers.ts +94 -1
  181. package/src/prompts/agents/architect.md +9 -1
  182. package/src/prompts/agents/critic.md +9 -0
  183. package/src/prompts/agents/executor.md +1 -1
  184. package/src/prompts/system/system-prompt.md +0 -1
  185. package/src/prompts/tools/read.md +4 -2
  186. package/src/runtime/memory-domain.ts +66 -0
  187. package/src/runtime/memory-guard-contract.ts +73 -0
  188. package/src/runtime/memory-guard.ts +292 -0
  189. package/src/runtime/memory-limit.ts +50 -0
  190. package/src/runtime-mcp/manager.ts +26 -6
  191. package/src/runtime-mcp/smithery-auth.ts +17 -2
  192. package/src/runtime-mcp/smithery-connect.ts +11 -1
  193. package/src/sdk/acp/adapter.ts +8 -1
  194. package/src/sdk/acp/final-text.ts +40 -0
  195. package/src/sdk/acp/mcp.ts +26 -0
  196. package/src/sdk/broker/lifecycle.ts +107 -7
  197. package/src/sdk/bus/chat-daemon-cli.ts +2 -2
  198. package/src/sdk/bus/chat-daemon-control.ts +4 -3
  199. package/src/sdk/bus/config.ts +1 -1
  200. package/src/sdk/bus/control-drain-lease.ts +104 -0
  201. package/src/sdk/bus/index.ts +503 -60
  202. package/src/sdk/bus/kind-aware-reconciliation.ts +242 -0
  203. package/src/sdk/bus/prompt-reconciliation.ts +2 -1
  204. package/src/sdk/bus/rate-limit-pool.ts +8 -0
  205. package/src/sdk/bus/reconciliation-store.ts +224 -0
  206. package/src/sdk/bus/telegram-daemon-contract.ts +6 -4
  207. package/src/sdk/bus/telegram-daemon.ts +531 -53
  208. package/src/sdk/host/control/dispatch.ts +7 -1
  209. package/src/sdk/host/control/operations.ts +2 -1
  210. package/src/sdk/host/host.ts +25 -3
  211. package/src/sdk/host/query/handlers.ts +55 -0
  212. package/src/sdk/lifecycle-session.ts +19 -3
  213. package/src/sdk/mcp/server.ts +46 -18
  214. package/src/sdk/protocol/operation-inventory.generated.json +76 -0
  215. package/src/sdk/protocol/operation-registry.ts +8 -2
  216. package/src/sdk/session.ts +25 -2
  217. package/src/sdk/startup-capability.ts +6 -0
  218. package/src/session/agent-session.ts +720 -190
  219. package/src/session/fallback-chain-controller.ts +47 -8
  220. package/src/session/internal/managed-session-scope.ts +40 -10
  221. package/src/session/internal/native-publish-outcome.ts +8 -3
  222. package/src/session/memory-guard-checkpoint-participant.ts +131 -0
  223. package/src/session/session-manager.ts +1372 -42
  224. package/src/session/streaming-output.ts +262 -43
  225. package/src/setup/provider-onboarding.ts +19 -4
  226. package/src/skill-state/active-state.ts +0 -10
  227. package/src/skill-state/workflow-hud.ts +25 -2
  228. package/src/skill-state/workflow-mutation-guard.ts +65 -7
  229. package/src/task/executor.ts +11 -3
  230. package/src/task/index.ts +2 -0
  231. package/src/task/types.ts +22 -11
  232. package/src/task/ultragoal-redteam-activation.ts +75 -0
  233. package/src/tools/ask.ts +89 -69
  234. package/src/tools/browser/launch.ts +41 -6
  235. package/src/tools/fetch.ts +114 -23
  236. package/src/tools/output-meta.ts +176 -9
  237. package/src/tools/path-utils.ts +5 -1
  238. package/src/tools/read-internals.ts +44 -0
  239. package/src/tools/read.ts +1542 -310
  240. package/src/tools/resource-gc.ts +665 -125
  241. package/src/tools/tool-result.ts +14 -1
  242. package/src/web/search/providers/codex.ts +1 -1
  243. package/src/workflow/workflow-intent-diff.ts +4 -1
  244. package/dist/types/gjc-runtime/deep-interview-draft.d.ts +0 -8
  245. package/dist/types/gjc-runtime/deep-interview-payload.d.ts +0 -41
  246. package/dist/types/gjc-runtime/deep-interview-repair.d.ts +0 -17
  247. package/src/gjc-runtime/deep-interview-draft.ts +0 -843
  248. package/src/gjc-runtime/deep-interview-payload.ts +0 -262
  249. package/src/gjc-runtime/deep-interview-repair.ts +0 -1674
@@ -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"],
198
+ appliesToVerbs: ["write-spec", "stage", "check", "apply", "discard", "read", "write", "clear", "handoff"],
280
199
  },
200
+ { name: "input", type: "string", required: true, appliesToVerbs: ["stage", "write"] },
201
+ { name: "reset", type: "boolean", appliesToVerbs: ["write"] },
281
202
  {
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"],
322
- },
323
- {
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
  ],
@@ -679,6 +526,9 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
679
526
  "read-worker-status",
680
527
  "read-worker-heartbeat",
681
528
  "update-worker-heartbeat",
529
+ "read-worker-memory-guard",
530
+ "update-worker-memory-guard",
531
+ "apply-worker-memory-guard",
682
532
  "write-worker-inbox",
683
533
  "write-worker-identity",
684
534
  "append-event",
@@ -705,6 +555,11 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
705
555
  },
706
556
  { name: "completion_evidence", type: "object", appliesToVerbs: ["api"] },
707
557
  { name: "completionEvidence", type: "object", appliesToVerbs: ["api"] },
558
+ { name: "platform", type: "string", appliesToVerbs: ["api"] },
559
+ { name: "automatic-action-allowed", type: "boolean", appliesToVerbs: ["api"] },
560
+ { name: "incident-id", type: "string", appliesToVerbs: ["api"] },
561
+ { name: "pid-probe", type: "object", appliesToVerbs: ["api"] },
562
+ { name: "candidates", type: "object", appliesToVerbs: ["api"] },
708
563
  { name: "args", type: "string", planned: true },
709
564
  { name: "metadata-json", type: "string", planned: true },
710
565
  ],
@@ -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);