@gajae-code/coding-agent 0.11.7 → 0.11.9

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 (213) hide show
  1. package/CHANGELOG.md +73 -1
  2. package/dist/types/cli/args.d.ts +0 -2
  3. package/dist/types/cli.d.ts +1 -0
  4. package/dist/types/config/keybindings.d.ts +33 -3
  5. package/dist/types/config/model-profile-activation.d.ts +4 -3
  6. package/dist/types/config/model-profile-contract.d.ts +38 -0
  7. package/dist/types/config/model-profiles.d.ts +2 -3
  8. package/dist/types/config/settings-schema.d.ts +15 -2
  9. package/dist/types/edit/modes/patch.d.ts +13 -0
  10. package/dist/types/edit/path-mutation-lock.d.ts +15 -0
  11. package/dist/types/eval/py/executor.d.ts +1 -1
  12. package/dist/types/eval/py/tool-bridge.d.ts +1 -2
  13. package/dist/types/gjc-runtime/deep-interview-ambiguity.d.ts +12 -5
  14. package/dist/types/gjc-runtime/deep-interview-draft.d.ts +8 -0
  15. package/dist/types/gjc-runtime/deep-interview-payload.d.ts +41 -0
  16. package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +32 -17
  17. package/dist/types/gjc-runtime/deep-interview-repair.d.ts +17 -0
  18. package/dist/types/gjc-runtime/deep-interview-state.d.ts +135 -4
  19. package/dist/types/gjc-runtime/repository-binding.d.ts +63 -0
  20. package/dist/types/gjc-runtime/state-writer.d.ts +44 -0
  21. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +1 -0
  22. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +24 -0
  23. package/dist/types/gjc-runtime/workflow-manifest.d.ts +5 -3
  24. package/dist/types/main.d.ts +8 -0
  25. package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +2 -1
  26. package/dist/types/modes/components/tool-status-header.d.ts +3 -2
  27. package/dist/types/modes/components/welcome.d.ts +4 -0
  28. package/dist/types/modes/controllers/command-controller.d.ts +2 -0
  29. package/dist/types/modes/controllers/selector-controller.d.ts +2 -1
  30. package/dist/types/modes/interactive-mode.d.ts +5 -2
  31. package/dist/types/modes/prompt-action-autocomplete.d.ts +6 -1
  32. package/dist/types/modes/prompt-suggestion-controller.d.ts +35 -0
  33. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +2 -2
  34. package/dist/types/modes/types.d.ts +3 -0
  35. package/dist/types/modes/utils/hotkeys-markdown.d.ts +2 -1
  36. package/dist/types/runtime-mcp/manager.d.ts +1 -1
  37. package/dist/types/runtime-mcp/oauth-flow.d.ts +0 -5
  38. package/dist/types/runtime-mcp/plugin-network-boundary.d.ts +14 -0
  39. package/dist/types/runtime-mcp/redaction.d.ts +2 -0
  40. package/dist/types/sdk/broker/broker.d.ts +2 -0
  41. package/dist/types/sdk/broker/lifecycle.d.ts +6 -0
  42. package/dist/types/sdk/bus/chat-daemon-control.d.ts +7 -1
  43. package/dist/types/sdk/bus/config-commands.d.ts +2 -2
  44. package/dist/types/sdk/bus/config.d.ts +2 -0
  45. package/dist/types/sdk/bus/conversation-store.d.ts +1 -0
  46. package/dist/types/sdk/bus/index.d.ts +25 -0
  47. package/dist/types/sdk/bus/notification-orchestration.d.ts +1 -0
  48. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +105 -0
  49. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +15 -3
  50. package/dist/types/sdk/bus/telegram-daemon-control.d.ts +5 -1
  51. package/dist/types/sdk/bus/telegram-daemon.d.ts +128 -1
  52. package/dist/types/sdk/bus/telegram-reference.d.ts +2 -0
  53. package/dist/types/sdk/host/control/operations.d.ts +1 -1
  54. package/dist/types/sdk/host/host.d.ts +1 -1
  55. package/dist/types/sdk/host/query/handlers.d.ts +9 -0
  56. package/dist/types/sdk/index.d.ts +2 -0
  57. package/dist/types/sdk/prompt-status.d.ts +88 -0
  58. package/dist/types/sdk/session-directory.d.ts +1 -1
  59. package/dist/types/sdk/startup-capability.d.ts +3 -0
  60. package/dist/types/session/agent-session.d.ts +2 -0
  61. package/dist/types/session/internal/managed-session-scope.d.ts +22 -3
  62. package/dist/types/session/internal/managed-session-storage.d.ts +24 -4
  63. package/dist/types/session/internal/native-publish-outcome.d.ts +48 -0
  64. package/dist/types/session/session-manager.d.ts +5 -1
  65. package/dist/types/session/session-storage.d.ts +31 -0
  66. package/dist/types/skill-state/active-state.d.ts +4 -0
  67. package/dist/types/task/index.d.ts +3 -1
  68. package/dist/types/task/receipt.d.ts +2 -0
  69. package/dist/types/task/types.d.ts +94 -0
  70. package/dist/types/tools/ask.d.ts +454 -174
  71. package/dist/types/tools/image-gen.d.ts +47 -1
  72. package/dist/types/tools/index.d.ts +4 -0
  73. package/dist/types/utils/prompt-suggestion.d.ts +33 -0
  74. package/package.json +8 -8
  75. package/scripts/capture-platform-shortcut-labels-showcase.ts +342 -0
  76. package/scripts/dogfood-repository-binding.ts +209 -0
  77. package/scripts/generate-sdk-operation-inventory.ts +2 -0
  78. package/scripts/run-test-manifest.ts +4 -4
  79. package/src/cli/args.ts +2 -92
  80. package/src/cli/mcp-cli.ts +4 -21
  81. package/src/cli/notify-cli.ts +5 -38
  82. package/src/cli.ts +50 -0
  83. package/src/commands/deep-interview.ts +9 -4
  84. package/src/commands/sdk.ts +2 -2
  85. package/src/commit/agentic/index.ts +3 -3
  86. package/src/commit/map-reduce/index.ts +2 -2
  87. package/src/config/keybindings.ts +157 -24
  88. package/src/config/model-profile-activation.ts +7 -18
  89. package/src/config/model-profile-contract.ts +161 -0
  90. package/src/config/model-profiles.ts +2 -3
  91. package/src/config/model-registry.ts +11 -1
  92. package/src/config/settings-schema.ts +17 -2
  93. package/src/coordinator-mcp/model-preset.ts +21 -74
  94. package/src/defaults/gjc/skills/deep-interview/SKILL.md +80 -165
  95. package/src/defaults/gjc/skills/ralplan/SKILL.md +3 -1
  96. package/src/edit/index.ts +3 -6
  97. package/src/edit/modes/patch.ts +38 -1
  98. package/src/edit/modes/replace.ts +42 -0
  99. package/src/edit/path-mutation-lock.ts +112 -0
  100. package/src/eval/py/executor.ts +30 -11
  101. package/src/eval/py/prelude.py +2 -2
  102. package/src/eval/py/tool-bridge.ts +34 -18
  103. package/src/extensibility/gjc-plugins/runtime-adapters.ts +2 -1
  104. package/src/gjc-runtime/deep-interview-ambiguity.ts +68 -47
  105. package/src/gjc-runtime/deep-interview-draft.ts +842 -0
  106. package/src/gjc-runtime/deep-interview-payload.ts +262 -0
  107. package/src/gjc-runtime/deep-interview-recorder.ts +294 -226
  108. package/src/gjc-runtime/deep-interview-repair.ts +1674 -0
  109. package/src/gjc-runtime/deep-interview-runtime.ts +264 -103
  110. package/src/gjc-runtime/deep-interview-state.ts +916 -4
  111. package/src/gjc-runtime/launch-tmux.ts +1 -1
  112. package/src/gjc-runtime/managed-owner-supervisor.ts +83 -4
  113. package/src/gjc-runtime/ralplan-runtime.ts +78 -4
  114. package/src/gjc-runtime/repository-binding.ts +267 -0
  115. package/src/gjc-runtime/session-state-sidecar.ts +25 -9
  116. package/src/gjc-runtime/state-writer.ts +166 -2
  117. package/src/gjc-runtime/tmux-owner-isolation.ts +2 -1
  118. package/src/gjc-runtime/tmux-sessions.ts +45 -6
  119. package/src/gjc-runtime/ultragoal-guard.ts +5 -5
  120. package/src/gjc-runtime/ultragoal-runtime.ts +181 -19
  121. package/src/gjc-runtime/workflow-manifest.generated.json +386 -1
  122. package/src/gjc-runtime/workflow-manifest.ts +191 -5
  123. package/src/internal-urls/docs-index.generated.ts +8 -6
  124. package/src/internal-urls/local-protocol.ts +33 -16
  125. package/src/internal-urls/mcp-protocol.ts +73 -11
  126. package/src/main.ts +25 -10
  127. package/src/modes/DESIGN.md +5 -0
  128. package/src/modes/acp/acp-agent.ts +50 -16
  129. package/src/modes/components/model-selector.ts +42 -8
  130. package/src/modes/components/plan-preview-overlay.ts +1 -1
  131. package/src/modes/components/runtime-mcp-add-wizard.ts +5 -0
  132. package/src/modes/components/tool-status-header.ts +20 -4
  133. package/src/modes/components/welcome.ts +32 -20
  134. package/src/modes/controllers/command-controller.ts +97 -54
  135. package/src/modes/controllers/event-controller.ts +10 -0
  136. package/src/modes/controllers/input-controller.ts +7 -2
  137. package/src/modes/controllers/runtime-mcp-command-controller.ts +29 -6
  138. package/src/modes/controllers/selector-controller.ts +46 -54
  139. package/src/modes/interactive-mode.ts +70 -36
  140. package/src/modes/prompt-action-autocomplete.ts +32 -13
  141. package/src/modes/prompt-suggestion-controller.ts +96 -0
  142. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +2 -2
  143. package/src/modes/types.ts +3 -0
  144. package/src/modes/utils/hotkeys-markdown.ts +64 -36
  145. package/src/modes/utils/ui-helpers.ts +5 -3
  146. package/src/prompts/agents/architect.md +0 -1
  147. package/src/prompts/agents/critic.md +0 -1
  148. package/src/prompts/system/prompt-suggestion-system.md +32 -0
  149. package/src/prompts/system/system-prompt.md +7 -4
  150. package/src/prompts/tools/cron.md +3 -1
  151. package/src/runtime-mcp/json-rpc.ts +7 -4
  152. package/src/runtime-mcp/manager.ts +51 -53
  153. package/src/runtime-mcp/oauth-flow.ts +0 -72
  154. package/src/runtime-mcp/plugin-network-boundary.ts +101 -0
  155. package/src/runtime-mcp/redaction.ts +30 -0
  156. package/src/runtime-mcp/transports/http.ts +13 -6
  157. package/src/sdk/broker/broker.ts +34 -20
  158. package/src/sdk/broker/lifecycle.ts +185 -36
  159. package/src/sdk/broker/session-index.ts +11 -1
  160. package/src/sdk/bus/chat-daemon-control.ts +20 -5
  161. package/src/sdk/bus/config-commands.ts +2 -2
  162. package/src/sdk/bus/config.ts +9 -1
  163. package/src/sdk/bus/conversation-store.ts +40 -6
  164. package/src/sdk/bus/index.ts +240 -65
  165. package/src/sdk/bus/lifecycle-commands.ts +47 -3
  166. package/src/sdk/bus/lifecycle-control-runtime.ts +11 -2
  167. package/src/sdk/bus/lifecycle-orchestrator.ts +32 -1
  168. package/src/sdk/bus/notification-orchestration.ts +12 -0
  169. package/src/sdk/bus/notification-service.ts +27 -2
  170. package/src/sdk/bus/prompt-reconciliation.ts +239 -0
  171. package/src/sdk/bus/recent-activity.ts +90 -26
  172. package/src/sdk/bus/telegram-daemon-contract.ts +15 -3
  173. package/src/sdk/bus/telegram-daemon-control.ts +145 -33
  174. package/src/sdk/bus/telegram-daemon.ts +853 -112
  175. package/src/sdk/bus/telegram-reference.ts +20 -2
  176. package/src/sdk/cli/session-cli.ts +15 -2
  177. package/src/sdk/host/control/dispatch.ts +1 -1
  178. package/src/sdk/host/control/operations.ts +1 -1
  179. package/src/sdk/host/host.ts +2 -6
  180. package/src/sdk/host/query/handlers.ts +70 -5
  181. package/src/sdk/index.ts +12 -0
  182. package/src/sdk/prompt-status.ts +97 -0
  183. package/src/sdk/protocol/operation-inventory.generated.json +47 -0
  184. package/src/sdk/protocol/operation-registry.ts +18 -4
  185. package/src/sdk/session-directory.ts +5 -1
  186. package/src/sdk/session.ts +2 -0
  187. package/src/sdk/startup-capability.ts +9 -1
  188. package/src/session/agent-session.ts +138 -5
  189. package/src/session/blob-store.ts +7 -2
  190. package/src/session/internal/managed-session-scope.ts +998 -133
  191. package/src/session/internal/managed-session-storage.ts +268 -203
  192. package/src/session/internal/native-publish-outcome.ts +266 -0
  193. package/src/session/session-manager.ts +406 -360
  194. package/src/session/session-storage.ts +151 -11
  195. package/src/skill-state/active-state.ts +10 -0
  196. package/src/task/executor.ts +13 -5
  197. package/src/task/gjc-command.ts +2 -2
  198. package/src/task/index.ts +121 -15
  199. package/src/task/receipt.ts +3 -0
  200. package/src/task/types.ts +34 -3
  201. package/src/tools/ask.ts +199 -88
  202. package/src/tools/ast-edit.ts +2 -2
  203. package/src/tools/bash-pty-selection.ts +2 -2
  204. package/src/tools/browser/screenshot-format.ts +6 -1
  205. package/src/tools/cron.ts +1 -1
  206. package/src/tools/image-gen.ts +178 -6
  207. package/src/tools/index.ts +4 -0
  208. package/src/tools/render-utils.ts +7 -1
  209. package/src/utils/edit-mode.ts +2 -2
  210. package/src/utils/prompt-suggestion.ts +265 -0
  211. package/src/utils/sixel.ts +3 -3
  212. package/src/web/insane/url-guard.ts +3 -1
  213. package/src/web/scrapers/docs-rs.ts +30 -5
@@ -212,6 +212,21 @@
212
212
  "name": "threshold-source",
213
213
  "type": "string"
214
214
  },
215
+ {
216
+ "appliesToVerbs": [
217
+ "kickoff"
218
+ ],
219
+ "name": "trace",
220
+ "type": "boolean"
221
+ },
222
+ {
223
+ "appliesToVerbs": [
224
+ "kickoff",
225
+ "write-spec"
226
+ ],
227
+ "name": "json",
228
+ "type": "boolean"
229
+ },
215
230
  {
216
231
  "appliesToVerbs": [
217
232
  "write-spec"
@@ -256,11 +271,333 @@
256
271
  },
257
272
  {
258
273
  "appliesToVerbs": [
259
- "write-spec"
274
+ "draft create"
275
+ ],
276
+ "name": "session-id",
277
+ "required": true,
278
+ "type": "string"
279
+ },
280
+ {
281
+ "appliesToVerbs": [
282
+ "draft create"
283
+ ],
284
+ "enumValues": [
285
+ "initialize-context",
286
+ "confirm-topology",
287
+ "record-answer",
288
+ "apply-round-result"
289
+ ],
290
+ "name": "for",
291
+ "required": true,
292
+ "type": "enum"
293
+ },
294
+ {
295
+ "appliesToVerbs": [
296
+ "draft create"
297
+ ],
298
+ "name": "round-key",
299
+ "type": "string"
300
+ },
301
+ {
302
+ "appliesToVerbs": [
303
+ "draft create"
304
+ ],
305
+ "name": "round",
306
+ "type": "number"
307
+ },
308
+ {
309
+ "appliesToVerbs": [
310
+ "draft create"
311
+ ],
312
+ "name": "question-id",
313
+ "type": "string"
314
+ },
315
+ {
316
+ "appliesToVerbs": [
317
+ "draft create"
318
+ ],
319
+ "name": "round-id",
320
+ "type": "string"
321
+ },
322
+ {
323
+ "appliesToVerbs": [
324
+ "draft create"
325
+ ],
326
+ "name": "component-id",
327
+ "type": "string"
328
+ },
329
+ {
330
+ "appliesToVerbs": [
331
+ "draft create"
332
+ ],
333
+ "name": "dimension",
334
+ "type": "string"
335
+ },
336
+ {
337
+ "appliesToVerbs": [
338
+ "draft edit",
339
+ "draft show",
340
+ "draft check",
341
+ "draft rebase",
342
+ "draft discard",
343
+ "initialize-context",
344
+ "confirm-topology",
345
+ "record-answer",
346
+ "apply-round-result"
347
+ ],
348
+ "name": "draft-id",
349
+ "required": true,
350
+ "type": "string"
351
+ },
352
+ {
353
+ "appliesToVerbs": [
354
+ "draft edit",
355
+ "draft rebase",
356
+ "draft discard",
357
+ "initialize-context",
358
+ "confirm-topology",
359
+ "record-answer",
360
+ "apply-round-result"
361
+ ],
362
+ "name": "expected-draft-revision",
363
+ "required": true,
364
+ "type": "number"
365
+ },
366
+ {
367
+ "appliesToVerbs": [
368
+ "draft edit"
369
+ ],
370
+ "enumValues": [
371
+ "set",
372
+ "append",
373
+ "remove"
374
+ ],
375
+ "name": "op",
376
+ "required": true,
377
+ "type": "enum"
378
+ },
379
+ {
380
+ "appliesToVerbs": [
381
+ "draft edit"
382
+ ],
383
+ "name": "path",
384
+ "required": true,
385
+ "type": "string"
386
+ },
387
+ {
388
+ "appliesToVerbs": [
389
+ "draft edit"
390
+ ],
391
+ "name": "value",
392
+ "type": "string"
393
+ },
394
+ {
395
+ "appliesToVerbs": [
396
+ "draft edit"
397
+ ],
398
+ "name": "value-file",
399
+ "type": "string"
400
+ },
401
+ {
402
+ "appliesToVerbs": [
403
+ "draft edit"
404
+ ],
405
+ "name": "null",
406
+ "type": "boolean"
407
+ },
408
+ {
409
+ "appliesToVerbs": [
410
+ "draft rebase"
411
+ ],
412
+ "name": "to-state-revision",
413
+ "required": true,
414
+ "type": "number"
415
+ },
416
+ {
417
+ "appliesToVerbs": [
418
+ "draft create",
419
+ "draft edit",
420
+ "draft show",
421
+ "draft check",
422
+ "draft rebase",
423
+ "draft discard",
424
+ "initialize-context",
425
+ "confirm-topology",
426
+ "record-answer",
427
+ "apply-round-result",
428
+ "inspect",
429
+ "sanity-check"
260
430
  ],
261
431
  "name": "json",
432
+ "required": true,
262
433
  "type": "boolean"
263
434
  },
435
+ {
436
+ "appliesToVerbs": [
437
+ "inspect",
438
+ "sanity-check"
439
+ ],
440
+ "name": "session-id",
441
+ "required": true,
442
+ "type": "string"
443
+ },
444
+ {
445
+ "appliesToVerbs": [
446
+ "initialize-context",
447
+ "confirm-topology",
448
+ "record-answer",
449
+ "apply-round-result"
450
+ ],
451
+ "compatibilityOnly": true,
452
+ "name": "session-id",
453
+ "required": true,
454
+ "type": "string"
455
+ },
456
+ {
457
+ "appliesToVerbs": [
458
+ "initialize-context",
459
+ "confirm-topology",
460
+ "record-answer",
461
+ "apply-round-result"
462
+ ],
463
+ "compatibilityOnly": true,
464
+ "name": "schema-version",
465
+ "required": true,
466
+ "type": "number"
467
+ },
468
+ {
469
+ "appliesToVerbs": [
470
+ "initialize-context",
471
+ "confirm-topology",
472
+ "record-answer",
473
+ "apply-round-result"
474
+ ],
475
+ "compatibilityOnly": true,
476
+ "name": "expected-revision",
477
+ "required": true,
478
+ "type": "number"
479
+ },
480
+ {
481
+ "appliesToVerbs": [
482
+ "initialize-context",
483
+ "confirm-topology"
484
+ ],
485
+ "compatibilityOnly": true,
486
+ "name": "input-json",
487
+ "required": true,
488
+ "type": "object"
489
+ },
490
+ {
491
+ "appliesToVerbs": [
492
+ "record-answer",
493
+ "apply-round-result"
494
+ ],
495
+ "compatibilityOnly": true,
496
+ "name": "round",
497
+ "required": true,
498
+ "type": "number"
499
+ },
500
+ {
501
+ "appliesToVerbs": [
502
+ "record-answer",
503
+ "apply-round-result"
504
+ ],
505
+ "compatibilityOnly": true,
506
+ "name": "question-id",
507
+ "required": true,
508
+ "type": "string"
509
+ },
510
+ {
511
+ "appliesToVerbs": [
512
+ "record-answer",
513
+ "apply-round-result"
514
+ ],
515
+ "compatibilityOnly": true,
516
+ "name": "round-id",
517
+ "type": "string"
518
+ },
519
+ {
520
+ "appliesToVerbs": [
521
+ "record-answer"
522
+ ],
523
+ "compatibilityOnly": true,
524
+ "name": "component-id",
525
+ "type": "string"
526
+ },
527
+ {
528
+ "appliesToVerbs": [
529
+ "record-answer"
530
+ ],
531
+ "compatibilityOnly": true,
532
+ "name": "dimension",
533
+ "type": "string"
534
+ },
535
+ {
536
+ "appliesToVerbs": [
537
+ "record-answer"
538
+ ],
539
+ "compatibilityOnly": true,
540
+ "name": "answer-json",
541
+ "required": true,
542
+ "type": "object"
543
+ },
544
+ {
545
+ "appliesToVerbs": [
546
+ "record-answer"
547
+ ],
548
+ "compatibilityOnly": true,
549
+ "name": "question-json",
550
+ "required": true,
551
+ "type": "string"
552
+ },
553
+ {
554
+ "appliesToVerbs": [
555
+ "apply-round-result"
556
+ ],
557
+ "compatibilityOnly": true,
558
+ "name": "result-json",
559
+ "required": true,
560
+ "type": "object"
561
+ },
562
+ {
563
+ "appliesToVerbs": [
564
+ "inspect"
565
+ ],
566
+ "enumValues": [
567
+ "summary",
568
+ "recent-scored",
569
+ "pending",
570
+ "round",
571
+ "topology",
572
+ "facts",
573
+ "triggers",
574
+ "floor"
575
+ ],
576
+ "name": "selector",
577
+ "required": true,
578
+ "type": "enum"
579
+ },
580
+ {
581
+ "appliesToVerbs": [
582
+ "inspect"
583
+ ],
584
+ "name": "round-key",
585
+ "type": "string"
586
+ },
587
+ {
588
+ "appliesToVerbs": [
589
+ "inspect"
590
+ ],
591
+ "name": "cursor",
592
+ "type": "string"
593
+ },
594
+ {
595
+ "appliesToVerbs": [
596
+ "inspect"
597
+ ],
598
+ "name": "limit",
599
+ "type": "number"
600
+ },
264
601
  {
265
602
  "name": "args",
266
603
  "planned": true,
@@ -305,6 +642,54 @@
305
642
  "name": "write-spec",
306
643
  "surface": "command-flag"
307
644
  },
645
+ {
646
+ "name": "draft create",
647
+ "surface": "draft-action"
648
+ },
649
+ {
650
+ "name": "draft edit",
651
+ "surface": "draft-action"
652
+ },
653
+ {
654
+ "name": "draft show",
655
+ "surface": "draft-action"
656
+ },
657
+ {
658
+ "name": "draft check",
659
+ "surface": "draft-action"
660
+ },
661
+ {
662
+ "name": "draft rebase",
663
+ "surface": "draft-action"
664
+ },
665
+ {
666
+ "name": "draft discard",
667
+ "surface": "draft-action"
668
+ },
669
+ {
670
+ "name": "initialize-context",
671
+ "surface": "command-positional"
672
+ },
673
+ {
674
+ "name": "confirm-topology",
675
+ "surface": "command-positional"
676
+ },
677
+ {
678
+ "name": "record-answer",
679
+ "surface": "command-positional"
680
+ },
681
+ {
682
+ "name": "apply-round-result",
683
+ "surface": "command-positional"
684
+ },
685
+ {
686
+ "name": "inspect",
687
+ "surface": "command-positional"
688
+ },
689
+ {
690
+ "name": "sanity-check",
691
+ "surface": "command-positional"
692
+ },
308
693
  {
309
694
  "name": "graph",
310
695
  "planned": true,
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * TypeScript is the authoritative source of truth for GJC workflow manifests.
3
- * Any JSON manifest projection is derived from this module and must never be
4
- * hand-edited.
3
+ * Keep the checked-in JSON projection synchronized manually with this module.
5
4
  */
6
5
 
7
6
  import { CANONICAL_GJC_WORKFLOW_SKILLS, type CanonicalGjcWorkflowSkill } from "../skill-state/canonical-skills";
@@ -23,7 +22,9 @@ export interface WorkflowVerb {
23
22
  name: string;
24
23
  planned?: boolean;
25
24
  /** Invocation surface that exposes this verb in the real CLI parser. */
26
- surface?: "state-action" | "command-positional" | "command-flag";
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;
27
28
  }
28
29
 
29
30
  export interface TypedArgSpec {
@@ -32,6 +33,7 @@ export interface TypedArgSpec {
32
33
  enumValues?: string[];
33
34
  required?: boolean;
34
35
  appliesToVerbs?: string[];
36
+ compatibilityOnly?: boolean;
35
37
  planned?: boolean;
36
38
  }
37
39
 
@@ -93,6 +95,9 @@ function stateVerbs(): WorkflowVerb[] {
93
95
  function positionalVerbs(names: readonly string[]): WorkflowVerb[] {
94
96
  return names.map(name => verb(name, "command-positional"));
95
97
  }
98
+ function draftVerbs(names: readonly string[]): WorkflowVerb[] {
99
+ return names.map(name => verb(name, "draft-action"));
100
+ }
96
101
 
97
102
  function flagVerbs(names: readonly string[]): WorkflowVerb[] {
98
103
  return names.map(name => verb(name, "command-flag"));
@@ -160,19 +165,200 @@ export const WORKFLOW_MANIFEST: Record<CanonicalGjcWorkflowSkill, SkillManifest>
160
165
  { from: "handoff", to: "complete", verb: "clear" },
161
166
  { from: "interviewing", to: "complete", verb: "clear" },
162
167
  ],
163
- verbs: [...stateVerbs(), ...flagVerbs(["kickoff", "write-spec"]), ...plannedVerbs(PLANNED_ADMIN_VERBS)],
168
+ verbs: [
169
+ ...stateVerbs(),
170
+ ...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
+ ]),
180
+ ...plannedVerbs(PLANNED_ADMIN_VERBS),
181
+ ],
164
182
  typedArgs: [
165
183
  { name: "quick", type: "boolean", appliesToVerbs: ["kickoff"] },
166
184
  { name: "standard", type: "boolean", appliesToVerbs: ["kickoff"] },
167
185
  { name: "deep", type: "boolean", appliesToVerbs: ["kickoff"] },
168
186
  { name: "threshold", type: "number", appliesToVerbs: ["kickoff"] },
169
187
  { name: "threshold-source", type: "string", appliesToVerbs: ["kickoff"] },
188
+ { name: "trace", type: "boolean", appliesToVerbs: ["kickoff"] },
189
+ { name: "json", type: "boolean", appliesToVerbs: ["kickoff", "write-spec"] },
170
190
  { name: "stage", type: "enum", enumValues: ["final"], appliesToVerbs: ["write-spec"] },
171
191
  { name: "slug", type: "string", appliesToVerbs: ["write-spec"] },
172
192
  { name: "spec", type: "string", required: true, appliesToVerbs: ["write-spec"] },
173
193
  { name: "handoff", type: "enum", enumValues: ["ralplan"], appliesToVerbs: ["write-spec"] },
174
194
  { name: "deliberate", type: "boolean", appliesToVerbs: ["write-spec"] },
175
- { name: "json", 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
+ {
257
+ name: "json",
258
+ 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"],
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",
354
+ type: "enum",
355
+ enumValues: ["summary", "recent-scored", "pending", "round", "topology", "facts", "triggers", "floor"],
356
+ required: true,
357
+ appliesToVerbs: ["inspect"],
358
+ },
359
+ { name: "round-key", type: "string", appliesToVerbs: ["inspect"] },
360
+ { name: "cursor", type: "string", appliesToVerbs: ["inspect"] },
361
+ { name: "limit", type: "number", appliesToVerbs: ["inspect"] },
176
362
  { name: "args", type: "string", planned: true },
177
363
  { name: "metadata-json", type: "string", planned: true },
178
364
  ],