@deksden-com/dd-flow-cli 0.6.0 → 0.8.0-beta.135

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 (78) hide show
  1. package/CHANGELOG.md +636 -0
  2. package/README.md +13 -1
  3. package/dist/build-info.json +10 -10
  4. package/dist/cli/help.js +108 -18
  5. package/dist/cli/run-cli.js +626 -49
  6. package/dist/domain/flow-contract.js +11 -0
  7. package/dist/domain/stage-catalog.js +22 -0
  8. package/dist/runtime/context.js +8 -2
  9. package/dist/schemas/code-review-decision.schema.json +26 -0
  10. package/dist/schemas/code-review-result.schema.json +14 -0
  11. package/dist/schemas/code-stage-report.schema.json +7 -2
  12. package/dist/schemas/code-verification.schema.json +14 -0
  13. package/dist/schemas/code-work-batch.schema.json +24 -0
  14. package/dist/schemas/code-work-result.schema.json +16 -0
  15. package/dist/schemas/engine-manifest.schema.json +22 -0
  16. package/dist/schemas/flow-contract.schema.json +6 -3
  17. package/dist/schemas/flow-run.schema.json +16 -122
  18. package/dist/schemas/mb-upgrade-migration-report.schema.json +3 -1
  19. package/dist/schemas/merge-stage-report-legacy-0.4.2.schema.json +24 -0
  20. package/dist/schemas/plan-aspect-map.schema.json +22 -0
  21. package/dist/schemas/plan-review-decision.schema.json +14 -0
  22. package/dist/schemas/plan-review-result.schema.json +42 -0
  23. package/dist/schemas/protocol-plan.schema.json +15 -182
  24. package/dist/schemas/run-engine-binding.schema.json +37 -0
  25. package/dist/schemas/stage-finish-input.schema.json +16 -2
  26. package/dist/schemas/stage-prompt.schema.json +4 -4
  27. package/dist/schemas/stage-report.schema.json +8 -7
  28. package/dist/schemas/vnext-protocol-plan.schema.json +37 -0
  29. package/dist/schemas/vnext-protocolize-result.schema.json +29 -0
  30. package/dist/schemas/vnext-specify.schema.json +45 -0
  31. package/dist/services/branch-context.js +1 -1
  32. package/dist/services/canon.js +15 -1
  33. package/dist/services/cleanup.js +8 -8
  34. package/dist/services/cli-operation-classifier.js +60 -8
  35. package/dist/services/code-checks.js +244 -0
  36. package/dist/services/compatibility-preflight.js +1 -1
  37. package/dist/services/config.js +7 -1
  38. package/dist/services/dashboard.js +14 -14
  39. package/dist/services/engines.js +408 -30
  40. package/dist/services/eval-snapshots.js +404 -0
  41. package/dist/services/hooks.js +775 -23
  42. package/dist/services/ids.js +16 -6
  43. package/dist/services/lanes.js +1 -5
  44. package/dist/services/merge-queue.js +53 -5
  45. package/dist/services/merge-worker.js +5 -6
  46. package/dist/services/migrations.js +307 -44
  47. package/dist/services/plan-runtime.js +5 -5
  48. package/dist/services/plans.js +5 -3
  49. package/dist/services/projects.js +4 -4
  50. package/dist/services/prompts.js +1 -1
  51. package/dist/services/protocols.js +31 -10
  52. package/dist/services/run-engine-bindings.js +157 -0
  53. package/dist/services/run-projection.js +49 -13
  54. package/dist/services/runs.js +525 -58
  55. package/dist/services/schema-validation.js +116 -2
  56. package/dist/services/sessions.js +51 -12
  57. package/dist/services/stage-blocker.js +57 -0
  58. package/dist/services/stage-context.js +90 -0
  59. package/dist/services/stage-lifecycle.js +288 -77
  60. package/dist/services/stage-pause.js +175 -0
  61. package/dist/services/stage-report-renderer.js +65 -0
  62. package/dist/services/status.js +8 -3
  63. package/dist/services/usage.js +526 -18
  64. package/dist/services/vnext-code-review.js +308 -0
  65. package/dist/services/vnext-code.js +616 -0
  66. package/dist/services/vnext-contracts.js +1 -0
  67. package/dist/services/vnext-execution-profile.js +27 -0
  68. package/dist/services/vnext-fanout.js +79 -0
  69. package/dist/services/vnext-plan-review.js +499 -0
  70. package/dist/services/vnext-plan.js +576 -0
  71. package/dist/services/vnext-protocolize.js +542 -0
  72. package/dist/services/vnext-specify.js +595 -0
  73. package/dist/services/vnext-workspace-policy.js +87 -0
  74. package/dist/services/work-registry.js +499 -0
  75. package/dist/services/worktrees.js +58 -37
  76. package/dist/storage/database.js +292 -42
  77. package/dist/storage/paths.js +47 -1
  78. package/package.json +12 -12
package/dist/cli/help.js CHANGED
@@ -12,29 +12,35 @@ Core commands:
12
12
  version Print the installed dd-flow CLI package version.
13
13
  status Inspect dd-flow runtime, project and canon roots.
14
14
  engine install/list/info Manage locally installed dd-flow engine snapshots.
15
- engine resolve/doctor Inspect router engine selection and health.
15
+ engine resolve/doctor/bind-run Inspect router selection, health, and recover a legacy RUN binding.
16
16
  canon register/status/resolve Register and resolve the canonical Memory Bank.
17
17
  project register/status/summary Register a project, inspect state, and publish project summaries.
18
18
  project resolve/archive Resolve typed ids and archive stale project roots.
19
19
  project migrate-ids Migrate old project ids.
20
20
  protocol register/status/transition Register, inspect, transition and repair protocol state.
21
- migration impact/plan/report/verify Assess release impact and prepare mb-upgrade migration evidence.
21
+ migration impact/plan/report/verify/apply Assess release impact and explicitly apply mb-upgrade migration evidence.
22
22
  cleanup scan/apply Detect and repair stale local runtime state.
23
- run start/status/list/timeline/usage/flags Track concrete flow executions, timing, source-aware usage and RUN-local flow flags.
24
- stage start/finish Run the canonical two-command stage lifecycle and generate evidence.
23
+ run start/status/list/timeline/usage/flags/vars Track concrete flow executions, timing, source-aware usage and RUN context.
24
+ stat usage/run sessions ls Refresh source-backed usage and reconcile settled Sessions, or list RUN Sessions.
25
+ stage start/pause/resume/finish Run a stage lifecycle, including in-stage user interaction.
26
+ work status|add-batch|ls|show|deps|delete|start|finish|fail|retry|cancel Manage vNext Work.
25
27
  id next Preview next typed ids for protocol or run allocation.
26
- plan status/item Inspect canonical plans and update SQLite progress.
28
+ plan status/item/reviews Inspect plans, update SQLite progress, or dispatch vNext grouped reviews.
27
29
  prompt render Render one bounded, RUN-local worker launch prompt.
28
30
  lane workspace/lock/status Manage shared workspace lanes and leases.
29
31
  merge status/one-shot/bundle Inspect, claim, or complete merge work from the current session.
30
32
  merge-worker status/start/stop Manage long-lived project merge workers.
31
- merge-queue status/next Claim, wait for, complete, or fail merge jobs.
33
+ merge-queue status/claim/next Claim, wait for, complete, or fail merge jobs.
32
34
  session register/status/stop Register flow sessions and stop workers.
33
35
  dashboard data/render/open/refresh Render, refresh, open, and inspect project/global dashboards.
34
36
  schema validate Validate canonical dd-flow JSON data contracts.
35
37
  memory permissions preflight Check Memory Bank write/read permissions.
36
38
  integration cmux status Inspect optional cmux integration.
37
39
  codex home/hooks/hook Manage Codex homes, hooks, and hook events.
40
+ zcode event/usage Ingest trusted zcode-acp lifecycle and usage evidence.
41
+ grok event/usage Ingest trusted Grok Build lifecycle and usage evidence.
42
+ opencode event/usage Ingest trusted OpenCode lifecycle and usage evidence.
43
+ agy event/usage Ingest trusted Antigravity CLI lifecycle and usage evidence.
38
44
  worktree plan/create/status Record Worktrunk-backed feature worktrees.
39
45
 
40
46
  Examples:
@@ -86,6 +92,7 @@ Usage:
86
92
  dd-flow engine info [--package <name>] [--version <version>] --json
87
93
  dd-flow engine resolve [--project-root <root>] --json
88
94
  dd-flow engine doctor [--project-root <root>] --json
95
+ dd-flow engine bind-run <RUN-ID> --project-root <root> --engine-version <version> --reason <text> [--integrity-checksum <sha256>] --json
89
96
 
90
97
  The globally invoked dd-flow command is the stable router surface. Engine snapshots live under DD_FLOW_HOME/engines and are selected by project Memory Bank compatibility data. Running an old package through npx can install that package's own engine without replacing the global router:
91
98
 
@@ -93,11 +100,14 @@ The globally invoked dd-flow command is the stable router surface. Engine snapsh
93
100
 
94
101
  Router-native engine commands never mutate project runtime data. Normal project commands are routed to a compatible engine or fail closed with a missing-engine diagnostic.
95
102
 
103
+ engine bind-run is the one recovery command for a legacy RUN without an engine-binding sidecar. It probes the requested installed snapshot with run status before atomically writing an immutable binding; later RUN commands route through that snapshot.
104
+
96
105
  Examples:
97
106
  dd-flow engine install --json
98
107
  dd-flow engine list --json
99
108
  dd-flow engine resolve --project-root "$PWD" --json
100
- dd-flow engine doctor --project-root "$PWD" --json`
109
+ dd-flow engine doctor --project-root "$PWD" --json
110
+ dd-flow engine bind-run RUN-193 --project-root "$PWD" --engine-version 0.4.2 --reason "legacy flow-run@1" --json`
101
111
  ],
102
112
  [
103
113
  "status",
@@ -143,15 +153,23 @@ Usage:
143
153
  dd-flow id next --type protocol|run --project-root <root> --slug <slug> --json
144
154
  dd-flow run status <RUN-ID|RUN-short-id> --project-root <root> --json
145
155
  dd-flow run list --project-root <root> --json
156
+ dd-flow run prepare-vnext-specify --project-root <root> --slug <slug> --json
157
+ dd-flow run snapshot create <RUN-ID|RUN-short-id> (--stage-entry <stage>|--candidate) --project-root <root> --output <directory> --json
158
+ dd-flow run snapshot restore --snapshot <directory> --project-root <prepared-root> --json
159
+ dd-flow run snapshot bootstrap create --project-root <root> --output <directory> --json
160
+ dd-flow run snapshot bootstrap restore --snapshot <directory> --project-root <prepared-root> --json
146
161
  dd-flow run timeline <RUN-ID|RUN-short-id> --project-root <root> --json
147
- dd-flow run usage <RUN-ID|RUN-short-id> --project-root <root> [--group-by session|role|stage|aspect|plan-item] --json
162
+ dd-flow stat usage --run <RUN-ID|RUN-short-id> --project-root <root> [--stage <stage[,stage...]>] [--session <session-id>] --json
163
+ dd-flow stat run sessions ls --run <RUN-ID|RUN-short-id> --project-root <root> --json
148
164
  dd-flow run flags status <RUN-ID|RUN-short-id> --project-root <root> --json
149
165
  dd-flow run flags revise <RUN-ID|RUN-short-id> --project-root <root> --expected-revision <n> --idempotency-key <key> [--preset <name>] [--flag key=value] [--flag key=value] [--allow-downgrade --reason <text>] --json
150
166
  dd-flow run attach-stage <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --dir <NN-stage-slug> --status <status> [--data-schema-id <id>] --json
151
167
  dd-flow run complete-stage <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --status <status> [--stage-report <path>] [--data <path>] [--data-schema-id <id>] [--report <path>] [--alias <path>] --json
152
- dd-flow run complete <RUN-ID|RUN-short-id> --project-root <root> --status done|blocked|cancelled|failed [--verdict <text>] [--next-action <text>] --json
168
+ dd-flow run override <RUN-ID|RUN-short-id> --project-root <root> --status cancelled|failed --reason <text> [--verdict <text>] [--next-action <text>] --json
169
+
170
+ RUN-* is the execution envelope for one concrete flow launch. Semantic truth remains in protocol, experiment, DEF, scenario, evidence, and Memory Bank documents. New run artifacts are stored under DD_FLOW_HOME/projects/<PRJ-ID-slug>/runs/<RUN-ID-slug>/ with one run.json projection and an append-only timeline.jsonl. Timeline is the compact full run report: summary is always present, while --hide may suppress bulky sections. Use \`dd-flow stat usage --run …\` to reread registered local Codex transcript counters and tool-call facts and refresh the current usage projection; unavailable data is explicit rather than zero.
153
171
 
154
- RUN-* is the execution envelope for one concrete flow launch. Semantic truth remains in protocol, experiment, DEF, scenario, evidence, and Memory Bank documents. New run artifacts are stored under DD_FLOW_HOME/projects/<PRJ-ID-slug>/runs/<RUN-ID-slug>/ with one run.json projection and an append-only timeline.jsonl. Timeline is the compact full run report: summary is always present, while --hide may suppress bulky sections. The run usage command reconciles registered local Codex transcript counters before reporting; unavailable data is explicit rather than zero.
172
+ run prepare-vnext-specify allocates an otherwise unstarted vNext RUN for the canonical SPECIFY entry checkpoint. run snapshot is the eval-only checkpoint boundary: it snapshots one quiescent RUN, its dedicated DD_FLOW_HOME, and the exact project tree including its Git repository, then restores them into a fresh dedicated runtime. It is not a general runtime backup command and fails closed for a shared runtime.
155
173
 
156
174
  Examples:
157
175
  dd-flow run start --project-root "$PWD" --flow-kind mb_sdlc --subject-type protocol --subject-id PRT-001-demo --slug demo --json
@@ -164,11 +182,31 @@ Examples:
164
182
  `dd-flow stage - execute one bounded stage lifecycle
165
183
 
166
184
  Usage:
167
- dd-flow stage start <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--dir <NN-stage-slug>] --json
168
- dd-flow stage start --bootstrap --project-root <root> --stage specify --subject <safe-subject> [--intake-file <path>] --json
169
- dd-flow stage finish <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--outcome done|blocked|failed] [--semantic-file <RUN-local-json>] --json
185
+ dd-flow stage start <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--dir <NN-stage-slug>] [--require-session-binding] --json
186
+ dd-flow stage start --bootstrap --project-root <root> --stage specify --subject <safe-subject> (--intake-file <path>|--intake-stdin) [--require-session-binding] --json
187
+ dd-flow stage pause <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --question-stdin --json
188
+ dd-flow stage resume <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --answer-stdin --json
189
+ dd-flow stage block <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --kind engine|harness|environment --code <code> --summary-stdin [--retryable] --json
190
+ dd-flow stage unblock <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --json
191
+ dd-flow stage fanout status <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --json
192
+ dd-flow stage fanout dispatch <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --json
193
+ dd-flow stage finish <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--semantic-file <RUN-local-json>] --json
194
+ dd-flow stage finish <RUN-ID|RUN-short-id> --project-root <root> --stage specify (--result-file <RUN-local-specify.json>|--result-stdin) --outcome <specified|failed|cancelled> --json
195
+
196
+ stage start is the worker's first practical flow command. It performs deterministic setup and returns a ready-to-use, stage-specific work packet with trusted runtime facts, compatibility and permission preflight, aliases, write boundary and exact lifecycle commands. A material user question uses stage pause, not stage finish: pause leaves the same stage, Work, Session and attempt open and returns the exact resume command. Engine, harness and environment failures use stage block and never create HITL. On the next Turn, pass a complete user answer to stage resume, or repair an external blocker and call its returned stage unblock command. stage fanout is read-only orchestration state plus the stage's deterministic Work materialization action for an external runner; it never makes product decisions. stage finish is reserved for actual stage completion and generates the final deterministic reports. Generated lifecycle commands include DD_FLOW_HOME when the RUN uses a non-default runtime.`
197
+ ],
198
+ [
199
+ "work",
200
+ `dd-flow work - inspect or advance a beta vNext Work
201
+
202
+ Usage:
203
+ dd-flow work ls (--run <RUN-ID>|--parent <WORK-ID>) [--ready] --json
204
+ dd-flow work show <WORK-ID> --json
205
+ dd-flow work start <WORK-ID> --project-root <root> --json
206
+ dd-flow work finish <WORK-ID> (--result-file <path>|--result-stdin) --project-root <root> --json
207
+ dd-flow work repair add --run <RUN-ID> --from-check <CHECK-ID> --origin-work <WORK-ID>... [--write-scope <path>...] --task-stdin --project-root <root> --json
170
208
 
171
- stage start is the worker's first practical flow command. It performs deterministic setup and returns a ready-to-use, stage-specific work packet with trusted runtime facts, compatibility and permission preflight, aliases, write boundary and exact finish command. The same packet is written to RUN-local stage-prompt.md and stage-prompt.json. --bootstrap creates the initial protocol/RUN envelope and copies the supplied intake into the RUN home before starting specify. stage finish defaults to @stage/stage-input.json, accepts semantic --outcome and always generates validated JSON, Markdown, template-backed HTML and a durable protocol-summary projection. Raw intake and telemetry remain RUN-local.`
209
+ CODE workers receive their full accepted packet from work start. work finish validates the result and executes the packet's focused checks before completion. A failed aggregate CODE gate returns the exact failed receipt and repair command; repair add creates a new Work from the selected completed origin context plus that failure evidence. Exact existing project files named by the retained receipt output are added to its repair scope deterministically; repeat --write-scope only for an additional path not named there.`
172
210
  ],
173
211
  [
174
212
  "id",
@@ -234,11 +272,12 @@ New registrations use full typed ids such as PRJ-001-dd-flow-playground and shor
234
272
  `dd-flow migration - plan and verify mb-upgrade runtime/home data migrations
235
273
 
236
274
  Usage:
237
- dd-flow migration plan --project-root <root> [--source-version <version>] [--target-version <version>] [--run <RUN-ID>] [--backup-path <path>] [--backup-created-at <iso>] [--allow-active true|false] --json
238
- dd-flow migration report --project-root <root> [--source-version <version>] [--target-version <version>] [--run <RUN-ID>] [--backup-path <path>] [--backup-created-at <iso>] [--allow-active true|false] --json
275
+ dd-flow migration plan --project-root <root> [--source-version <version>] [--target-version <version>] [--run <RUN-ID>] [--backup-path <path>] [--backup-created-at <iso>] --json
276
+ dd-flow migration report --project-root <root> [--source-version <version>] [--target-version <version>] [--run <RUN-ID>] [--backup-path <path>] [--backup-created-at <iso>] --json
239
277
  dd-flow migration verify --file <mb-upgrade-migration-report.json> --json
278
+ dd-flow migration apply --project-root <root> --file <mb-upgrade-migration-report.json> --json
240
279
 
241
- Migration commands are evidence and guardrail helpers for canonical mb-upgrade. They do not silently migrate runtime/home data during ordinary CLI use. Applying migrations remains an explicit mb-upgrade contour with backup, adjacent migration chain, active-state handling, derived artifact regeneration and post-upgrade verification.
280
+ Migration commands are evidence and guardrail helpers for canonical mb-upgrade. They do not silently migrate runtime/home data during ordinary CLI use. Applying migrations is an explicit contour requiring a real verified backup, adjacent migration chain, quiescent shared home, recovery evidence and idempotent rerun.
242
281
 
243
282
  Related commands:
244
283
  dd-flow status --project-root <root> --json
@@ -354,13 +393,14 @@ start is idempotent: if a worker, claimed job, or active merge lock already exis
354
393
  Usage:
355
394
  dd-flow merge-queue status --project-root <root> --json
356
395
  dd-flow merge-queue next --project-root <root> --worker-id <id> [--path <workspace>] --json
396
+ dd-flow merge-queue claim <protocol-id> [--project-root <root>] --worker-id <id> [--path <workspace>] --json
357
397
  dd-flow merge-queue wait-next --project-root <root> --worker-id <id> [--path <workspace>] --timeout <seconds> --poll-interval <seconds> [--acquire-lock true] --json
358
398
  dd-flow merge-queue complete <protocol-id> [--project-root <root>] --worker-id <id> [--path <workspace>] --summary <text> --json
359
399
  dd-flow merge-queue note <protocol-id> [--project-root <root>] --worker-id <id> --summary <text> --json
360
400
  dd-flow merge-queue fail <protocol-id> [--project-root <root>] --worker-id <id> [--path <workspace>] --reason <text> --requeue true|false --json
361
401
  dd-flow merge-queue cancel <protocol-id> [--project-root <root>] --reason <text> [--worker-id <id>] [--path <workspace>] [--force] --json
362
402
 
363
- The worker must own the merge lane from the registered merge workspace before claiming, completing, or failing queued protocols. Outputs use queue_item/protocol/claim as the primary contract and retain job as a compatibility alias. note updates the final completion summary after post-complete cleanup and does not require a lane lock. --path defaults to the current working directory. Use --worker-id as the owner identity.
403
+ The worker must own the merge lane from the registered merge workspace before claiming, completing, or failing queued protocols. next remains FIFO; claim <protocol-id> atomically claims only that ready/requeued job. Outputs use queue_item/protocol/claim as the primary contract and retain job as a compatibility alias. note updates the final completion summary after post-complete cleanup and does not require a lane lock. --path defaults to the current working directory. Use --worker-id as the owner identity.
364
404
 
365
405
  For branch-level integration prefer:
366
406
  dd-flow merge bundle status --project-root "$PWD" --path "$PWD" --json
@@ -406,6 +446,16 @@ Usage:
406
446
  dd-flow session stop-worker --project-root <root> --worker-id <id> --reason <text> --json
407
447
 
408
448
  Session registration is the durable contract used by Stop hooks. Prompts register flow_kind, continuation_policy, protocol_id, worker_id, and workspace_path explicitly. Prefer --payload-file in Codex prompts because PreToolUse hooks see the raw shell command before variable expansion.`
449
+ ],
450
+ [
451
+ "run config",
452
+ `dd-flow run config - inspect and set RUN-scoped flow choices
453
+
454
+ Usage:
455
+ dd-flow run config status <RUN-ID> --project-root <root> --json
456
+ dd-flow run config set <RUN-ID> --project-root <root> --key plan_review.mode --value auto|off|standard|deep --reason <text> --json
457
+
458
+ PLAN review policy belongs to the RUN. It defaults to auto and is frozen once PLAN-REVIEW starts. The CLI never infers this choice from intake prose.`
409
459
  ],
410
460
  [
411
461
  "project config",
@@ -527,7 +577,47 @@ Usage:
527
577
  dd-flow codex home print-env --project-root <root> [--profile <name>] --json
528
578
  dd-flow codex home remove --project-root <root> [--profile <name>] --mode keep-shared|remove-owned --json
529
579
 
580
+ dd-flow codex hook handle --event <HookEventName> [--project-root <root>] --json
581
+
582
+ Managed hooks omit --project-root. Codex supplies cwd in the stdin payload; the
583
+ handler resolves the registered project from cwd. The option is only a manual
584
+ override.
585
+
530
586
  Managed homes isolate dd-flow hooks while sharing selected Codex state from the source home.`
587
+ ],
588
+ [
589
+ "zcode event",
590
+ `dd-flow zcode event - ingest a zcode-acp session/update notification
591
+
592
+ Usage:
593
+ dd-flow zcode event handle --project-root <root> --json
594
+ dd-flow zcode usage ingest --project-root <root> --json
595
+
596
+ Both payloads are read from stdin. The event adapter retains lifecycle identity;
597
+ the usage adapter retains cumulative provider counters for RUN accounting.`
598
+ ],
599
+ [
600
+ "opencode event",
601
+ `dd-flow opencode event - ingest a controlled OpenCode tool hook
602
+
603
+ Usage:
604
+ dd-flow opencode event handle --project-root <root> --json
605
+ dd-flow opencode usage ingest --project-root <root> --json
606
+
607
+ Both payloads are read from stdin. The event adapter reuses the trusted
608
+ lifecycle receipt; the usage adapter retains cumulative OpenCode Session and
609
+ tool counters for RUN accounting.`
610
+ ],
611
+ [
612
+ "agy event",
613
+ `dd-flow agy event - ingest a controlled Antigravity CLI tool hook
614
+
615
+ Usage:
616
+ dd-flow agy event handle --project-root <root> --json
617
+ dd-flow agy usage ingest --project-root <root> --json
618
+
619
+ Both payloads are read from stdin. The event adapter records lifecycle identity;
620
+ the usage adapter retains cumulative conversation and tool counters.`
531
621
  ],
532
622
  [
533
623
  "worktree",