@deksden-com/dd-flow-cli 0.9.0-beta.14 → 0.9.0-beta.141
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.
- package/CHANGELOG.md +740 -0
- package/README.md +143 -1
- package/dist/build-info.json +8 -8
- package/dist/cli/argument-values.js +38 -0
- package/dist/cli/command-inputs.js +376 -0
- package/dist/cli/command-metadata.js +197 -0
- package/dist/cli/command-option-descriptions.js +191 -0
- package/dist/cli/completion-cli.js +70 -0
- package/dist/cli/completion.js +57 -0
- package/dist/cli/error-output.js +52 -0
- package/dist/cli/executor-onboarding.js +76 -0
- package/dist/cli/flows.js +29 -0
- package/dist/cli/harnesses.js +84 -0
- package/dist/cli/help.js +328 -18
- package/dist/cli/hook-ingress.js +78 -0
- package/dist/cli/input-preparation.js +165 -0
- package/dist/cli/memory-flow-admission.js +44 -0
- package/dist/cli/memory-init-invocation.js +78 -0
- package/dist/cli/memory-init.js +240 -0
- package/dist/cli/memory-storage-admission.js +53 -0
- package/dist/cli/models.js +39 -0
- package/dist/cli/native-hook-ingress.js +80 -0
- package/dist/cli/operator-profiles.js +61 -0
- package/dist/cli/output-options.js +35 -0
- package/dist/cli/response-file.js +71 -0
- package/dist/cli/run-cli.js +1689 -545
- package/dist/cli/runtime-maintenance-diagnostics.js +46 -0
- package/dist/cli/runtime-maintenance-ingress.js +52 -0
- package/dist/cli/runtime-process.js +153 -0
- package/dist/cli/setup.js +149 -0
- package/dist/cli.js +71 -2
- package/dist/domain/stage-catalog.js +1 -1
- package/dist/domain/stage-handler-identities.js +20 -0
- package/dist/harness-runtime/DD-ZCODE.md +112 -0
- package/dist/harness-runtime/OPENCODE-LICENSE.txt +24 -0
- package/dist/harness-runtime/bin/dd-agy.mjs +56 -0
- package/dist/harness-runtime/bin/dd-codex.mjs +27 -0
- package/dist/harness-runtime/bin/dd-droid.mjs +34 -0
- package/dist/harness-runtime/bin/dd-grok.mjs +40 -0
- package/dist/harness-runtime/bin/dd-opencode.mjs +22 -0
- package/dist/harness-runtime/bin/dd-zcode.mjs +87 -0
- package/dist/harness-runtime/lib/adapter-timeouts.d.mts +5 -0
- package/dist/harness-runtime/lib/adapter-timeouts.mjs +34 -0
- package/dist/harness-runtime/lib/agy-hooks.d.mts +1 -0
- package/dist/harness-runtime/lib/agy-hooks.mjs +9 -0
- package/dist/harness-runtime/lib/daemon-observation.d.mts +2 -0
- package/dist/harness-runtime/lib/daemon-observation.mjs +163 -0
- package/dist/harness-runtime/lib/daemon-operations.d.mts +1 -0
- package/dist/harness-runtime/lib/daemon-operations.mjs +371 -0
- package/dist/harness-runtime/lib/dd-agy-daemon.d.mts +6 -0
- package/dist/harness-runtime/lib/dd-agy-daemon.mjs +728 -0
- package/dist/harness-runtime/lib/dd-agy.mjs +70 -0
- package/dist/harness-runtime/lib/dd-codex-daemon.d.mts +1 -0
- package/dist/harness-runtime/lib/dd-codex-daemon.mjs +196 -0
- package/dist/harness-runtime/lib/dd-codex.d.mts +1 -0
- package/dist/harness-runtime/lib/dd-codex.mjs +817 -0
- package/dist/harness-runtime/lib/dd-droid-daemon.mjs +140 -0
- package/dist/harness-runtime/lib/dd-droid.mjs +584 -0
- package/dist/harness-runtime/lib/dd-grok-daemon.mjs +498 -0
- package/dist/harness-runtime/lib/dd-grok.mjs +177 -0
- package/dist/harness-runtime/lib/dd-opencode-daemon.mjs +557 -0
- package/dist/harness-runtime/lib/dd-opencode.mjs +363 -0
- package/dist/harness-runtime/lib/dd-zcode-daemon.mjs +751 -0
- package/dist/harness-runtime/lib/dd-zcode.mjs +1145 -0
- package/dist/harness-runtime/lib/delegation-instructions.d.mts +14 -0
- package/dist/harness-runtime/lib/delegation-instructions.mjs +157 -0
- package/dist/harness-runtime/lib/dispatch-fence.mjs +14 -0
- package/dist/harness-runtime/lib/driver-recovery.mjs +139 -0
- package/dist/harness-runtime/lib/droid-observation.mjs +66 -0
- package/dist/harness-runtime/lib/lease-renewal.d.mts +8 -0
- package/dist/harness-runtime/lib/lease-renewal.mjs +37 -0
- package/dist/harness-runtime/lib/lifecycle-command.d.mts +20 -0
- package/dist/harness-runtime/lib/lifecycle-command.mjs +273 -0
- package/dist/harness-runtime/lib/lifecycle-contract.d.mts +10 -0
- package/dist/harness-runtime/lib/lifecycle-contract.mjs +19 -0
- package/dist/harness-runtime/lib/managed-daemon.d.mts +16 -0
- package/dist/harness-runtime/lib/managed-daemon.mjs +683 -0
- package/dist/harness-runtime/lib/managed-flow-env.mjs +15 -0
- package/dist/harness-runtime/lib/model-observations.mjs +101 -0
- package/dist/harness-runtime/lib/native-children.d.mts +16 -0
- package/dist/harness-runtime/lib/native-children.mjs +113 -0
- package/dist/harness-runtime/lib/native-hook-command.d.mts +7 -0
- package/dist/harness-runtime/lib/native-hook-command.mjs +251 -0
- package/dist/harness-runtime/lib/native-request-proof.d.mts +2 -0
- package/dist/harness-runtime/lib/native-request-proof.mjs +65 -0
- package/dist/harness-runtime/lib/native-streams.mjs +45 -0
- package/dist/harness-runtime/lib/observation-clock.d.mts +18 -0
- package/dist/harness-runtime/lib/observation-clock.mjs +92 -0
- package/dist/harness-runtime/lib/opencode-plugin.mjs +85 -0
- package/dist/harness-runtime/lib/operation-context.mjs +5 -0
- package/dist/harness-runtime/lib/operation-errors.d.mts +16 -0
- package/dist/harness-runtime/lib/operation-errors.mjs +127 -0
- package/dist/harness-runtime/lib/operation-progress.d.mts +7 -0
- package/dist/harness-runtime/lib/operation-progress.mjs +114 -0
- package/dist/harness-runtime/lib/process-json.d.mts +5 -0
- package/dist/harness-runtime/lib/process-json.mjs +201 -0
- package/dist/harness-runtime/lib/process-snapshot.mjs +10 -0
- package/dist/harness-runtime/lib/provider-overload-policy.d.mts +13 -0
- package/dist/harness-runtime/lib/provider-overload-policy.mjs +138 -0
- package/dist/harness-runtime/lib/runner-events.mjs +200 -0
- package/dist/harness-runtime/lib/runner-lock.mjs +42 -0
- package/dist/harness-runtime/lib/session-settlement.mjs +30 -0
- package/dist/harness-runtime/lib/setup-progress.d.mts +9 -0
- package/dist/harness-runtime/lib/setup-progress.mjs +51 -0
- package/dist/harness-runtime/lib/tool-observations.d.mts +21 -0
- package/dist/harness-runtime/lib/tool-observations.mjs +228 -0
- package/dist/harness-runtime/lib/zcode-usage.mjs +55 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-1y4a697q.js +81 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-2ny4vxct.js +92 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-6mptkzbc.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-7x67cf1q.js +52 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-9rqn6x4v.js +16 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-9vdz0zwn.js +1661 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-ecs5ftka.js +1466 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-frbwqjmf.js +145 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-gne7h7mq.js +50 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-gx9wnkzr.js +105 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-m2eywc8w.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-nwcpakzx.js +12 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-q4g3afnw.js +623 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-qav6mfdz.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-sxt88q69.js +12 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-t1xa31vm.js +39 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-ve4aws36.js +103 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-vmytr4q8.js +4 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-vt9jbch8.js +36 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-vyas3vgt.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-wjyeq25y.js +30 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-xgnj2w4v.js +20 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-y2etg5bs.js +9 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-ydhz1zrh.js +238 -0
- package/dist/harness-runtime/vendor/opencode-client/chunks/service-probe-z6qdwcsf.js +62 -0
- package/dist/harness-runtime/vendor/opencode-client/contract.d.ts +1 -0
- package/dist/harness-runtime/vendor/opencode-client/contract.js +12 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/api/api.d.ts +2806 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/api/api.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/api.d.ts +4 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/api.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/client.d.ts +2530 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/client.js +15 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/client-error.d.ts +7 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/client-error.js +6 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/client.d.ts +2529 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/client.js +8 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/index.d.ts +2 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/generated/index.js +12 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/index.d.ts +35 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/index.js +75 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/rpc.d.ts +20 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/rpc.js +11 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/service.d.ts +90 -0
- package/dist/harness-runtime/vendor/opencode-client/effect/service.js +187 -0
- package/dist/harness-runtime/vendor/opencode-client/package.json +84 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/api.d.ts +21 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/api.js +0 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/client.d.ts +252 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/client.js +14 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/client-error.d.ts +8 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/client-error.js +6 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/client.d.ts +259 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/client.js +7 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/index.d.ts +3 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/index.js +79 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/types.d.ts +8932 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/generated/types.js +70 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/index.d.ts +6 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/index.js +83 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/rpc.d.ts +32 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/rpc.js +7 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/service.d.ts +24 -0
- package/dist/harness-runtime/vendor/opencode-client/promise/service.js +187 -0
- package/dist/harness-runtime/vendor/opencode-client/pty-handoff.d.ts +12 -0
- package/dist/harness-runtime/vendor/opencode-client/pty-handoff.js +14 -0
- package/dist/harness-runtime/vendor/opencode-client/rpc-runtime.d.ts +20 -0
- package/dist/harness-runtime/vendor/opencode-client/rpc-runtime.js +14 -0
- package/dist/harness-runtime/vendor/opencode-client/service-contender.d.ts +37 -0
- package/dist/harness-runtime/vendor/opencode-client/service-contender.js +10 -0
- package/dist/harness-runtime/vendor/opencode-client/service-probe.d.ts +70 -0
- package/dist/harness-runtime/vendor/opencode-client/service-probe.js +16 -0
- package/dist/harness-runtime/vendor/opencode-client/service-timing.d.ts +12 -0
- package/dist/harness-runtime/vendor/opencode-client/service-timing.js +10 -0
- package/dist/harness-runtime/vendor/opencode-client/service-version.d.ts +2 -0
- package/dist/harness-runtime/vendor/opencode-client/service-version.js +6 -0
- package/dist/harness-runtime/vendor/opencode-client/service.d.ts +52 -0
- package/dist/harness-runtime/vendor/opencode-client/service.js +1 -0
- package/dist/harness-runtime/vendor/opencode-client/shared-events.d.ts +11 -0
- package/dist/harness-runtime/vendor/opencode-client/shared-events.js +8 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/connection.d.ts +37 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/connection.js +10 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/data.d.ts +211 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/data.js +18 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/index.d.ts +3 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/index.js +32 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/pty.d.ts +22 -0
- package/dist/harness-runtime/vendor/opencode-client/solid/pty.js +8 -0
- package/dist/harness-runtime/vendor/opencode-plugin.mjs +3 -0
- package/dist/protocol/local-files.js +18 -9
- package/dist/runtime/context.js +8 -4
- package/dist/schemas/agent-profile.schema.json +1 -1
- package/dist/schemas/code-review-result.schema.json +1 -1
- package/dist/schemas/code-verification.schema.json +7 -5
- package/dist/schemas/code-work-batch.schema.json +2 -2
- package/dist/schemas/discovery-result.schema.json +184 -0
- package/dist/schemas/execution-bundle.schema.json +205 -0
- package/dist/schemas/execution-settings.schema.json +162 -0
- package/dist/schemas/flow-descriptor.schema.json +54 -0
- package/dist/schemas/flow-run.schema.json +28 -0
- package/dist/schemas/harness-catalog.schema.json +80 -0
- package/dist/schemas/mb-init-compose-result.schema.json +457 -0
- package/dist/schemas/mb-init-discover-result.schema.json +500 -0
- package/dist/schemas/mb-init-finish-result.schema.json +422 -0
- package/dist/schemas/mb-init-preflight-result.schema.json +367 -0
- package/dist/schemas/mb-init-review-result.schema.json +396 -0
- package/dist/schemas/mb-init-verify-result.schema.json +391 -0
- package/dist/schemas/memory-bootstrap-receipt-v2.schema.json +67 -0
- package/dist/schemas/memory-bootstrap-receipt.schema.json +354 -0
- package/dist/schemas/memory-composition-work-result.schema.json +38 -0
- package/dist/schemas/memory-repair-work-result.schema.json +49 -0
- package/dist/schemas/memory-review-correction-plan.schema.json +30 -0
- package/dist/schemas/memory-review-work-result.schema.json +43 -0
- package/dist/schemas/model-catalog.schema.json +153 -0
- package/dist/schemas/plan-review-decision.schema.json +3 -3
- package/dist/schemas/plan-review-result.schema.json +2 -2
- package/dist/schemas/profile-settings.schema.json +122 -0
- package/dist/schemas/release-manifest.schema.json +291 -0
- package/dist/schemas/run-control-receipt.schema.json +118 -0
- package/dist/schemas/run-control-request.schema.json +36 -0
- package/dist/schemas/run-engine-binding.schema.json +1 -1
- package/dist/schemas/vnext-protocol-plan.schema.json +2 -2
- package/dist/services/branch-context.js +3 -3
- package/dist/services/canon.js +11 -8
- package/dist/services/check-runner-evidence.js +250 -0
- package/dist/services/cleanup.js +133 -40
- package/dist/services/cli-operation-classifier.js +25 -62
- package/dist/services/cli-upgrade-allowlist.js +27 -0
- package/dist/services/code-checks.js +1168 -107
- package/dist/services/codex-hook-delivery.js +32 -0
- package/dist/services/command-context.js +80 -0
- package/dist/services/compatibility-preflight.js +13 -3
- package/dist/services/config.js +11 -8
- package/dist/services/continuation-outcome.js +20 -0
- package/dist/services/controller-child-capacity.js +13 -0
- package/dist/services/controller-child-observer.js +115 -0
- package/dist/services/controller-execution.js +88 -0
- package/dist/services/controller-fanout.js +202 -0
- package/dist/services/dashboard.js +143 -58
- package/dist/services/descriptor-coordinator-session.js +35 -0
- package/dist/services/descriptor-root-work.js +53 -0
- package/dist/services/descriptor-run-settlement.js +105 -0
- package/dist/services/descriptor-run-start.js +449 -0
- package/dist/services/descriptor-stage-coordinator.js +197 -0
- package/dist/services/descriptor-stage-settlement.js +222 -0
- package/dist/services/descriptor-stage-start.js +139 -0
- package/dist/services/discovery/agy-discovery.js +2 -0
- package/dist/services/discovery/codex-discovery.js +2 -0
- package/dist/services/discovery/droid-discovery.js +2 -0
- package/dist/services/discovery/grok-discovery.js +2 -0
- package/dist/services/discovery/opencode-discovery.js +2 -0
- package/dist/services/discovery/static.js +31 -0
- package/dist/services/discovery/zcode-discovery.js +2 -0
- package/dist/services/engines.js +294 -153
- package/dist/services/eval-snapshots.js +1215 -116
- package/dist/services/execution-bundles.js +263 -0
- package/dist/services/execution-policy.js +185 -0
- package/dist/services/executor-onboarding.js +56 -0
- package/dist/services/external-work-launch.js +308 -0
- package/dist/services/flow-catalog.js +21 -0
- package/dist/services/flow-descriptors.js +82 -0
- package/dist/services/frozen-engine.js +250 -0
- package/dist/services/generic-execution.js +164 -0
- package/dist/services/harness-adapter.js +355 -36
- package/dist/services/harness-config.js +2 -0
- package/dist/services/harness-discovery.js +29 -0
- package/dist/services/harness-doctor.js +75 -0
- package/dist/services/harness-probe-effects.js +51 -0
- package/dist/services/harness-version-probe.js +100 -0
- package/dist/services/hooks.js +771 -325
- package/dist/services/hybrid-contracts.js +483 -0
- package/dist/services/ids.js +29 -1
- package/dist/services/installation-lock.js +95 -0
- package/dist/services/installed-flow-source.js +183 -0
- package/dist/services/lanes.js +78 -65
- package/dist/services/lifecycle-command.js +1 -288
- package/dist/services/lifecycle-contract.js +1 -0
- package/dist/services/lifecycle-invocations.js +2007 -0
- package/dist/services/managed-daemon-binding.js +38 -0
- package/dist/services/managed-lease-monitor.js +133 -0
- package/dist/services/managed-processes.js +475 -55
- package/dist/services/memory-accepted-composition.js +77 -0
- package/dist/services/memory-baseline-preservation.js +65 -0
- package/dist/services/memory-completed-correction-wave.js +320 -0
- package/dist/services/memory-compose-handler.js +258 -0
- package/dist/services/memory-composition-acceptance.js +199 -0
- package/dist/services/memory-composition-graph.js +134 -0
- package/dist/services/memory-composition-registration.js +146 -0
- package/dist/services/memory-composition-work-custody.js +151 -0
- package/dist/services/memory-composition-work-results.js +96 -0
- package/dist/services/memory-corrected-review-acceptance.js +129 -0
- package/dist/services/memory-corrected-review-batch.js +30 -0
- package/dist/services/memory-corrected-review-findings.js +106 -0
- package/dist/services/memory-corrected-review-inputs.js +210 -0
- package/dist/services/memory-corrected-review-projection.js +78 -0
- package/dist/services/memory-corrected-review-receipt.js +170 -0
- package/dist/services/memory-corrected-review-registration.js +191 -0
- package/dist/services/memory-correction-check-receipt.js +219 -0
- package/dist/services/memory-correction-input-owner.js +6 -0
- package/dist/services/memory-discover-handler.js +104 -0
- package/dist/services/memory-finish-evidence.js +435 -0
- package/dist/services/memory-finish-handler.js +215 -0
- package/dist/services/memory-finish-integration.js +280 -0
- package/dist/services/memory-finish-readiness.js +122 -0
- package/dist/services/memory-git-integration.js +151 -0
- package/dist/services/memory-historical-corrected-review.js +206 -0
- package/dist/services/memory-historical-original-review.js +130 -0
- package/dist/services/memory-historical-repair-registration.js +99 -0
- package/dist/services/memory-historical-second-review.js +128 -0
- package/dist/services/memory-init-bootstrap-readiness.js +210 -0
- package/dist/services/memory-init-contexts.js +89 -0
- package/dist/services/memory-init-controller-start.js +84 -0
- package/dist/services/memory-init-engine-release.js +223 -0
- package/dist/services/memory-init-git-policy.js +136 -0
- package/dist/services/memory-init-lint-capability.js +185 -0
- package/dist/services/memory-init-native-capacity.js +296 -0
- package/dist/services/memory-init-preflight.js +330 -0
- package/dist/services/memory-init-project-bootstrap.js +599 -0
- package/dist/services/memory-init-request-candidate.js +157 -0
- package/dist/services/memory-init-request-input.js +66 -0
- package/dist/services/memory-init-resource-storage.js +125 -0
- package/dist/services/memory-init-run-allocation.js +81 -0
- package/dist/services/memory-init-run-bundle.js +98 -0
- package/dist/services/memory-init-start.js +181 -0
- package/dist/services/memory-init-startup-custody.js +80 -0
- package/dist/services/memory-init-startup-input.js +240 -0
- package/dist/services/memory-init-storage.js +81 -0
- package/dist/services/memory-init-stores.js +359 -0
- package/dist/services/memory-init-worktrunk-capability.js +178 -0
- package/dist/services/memory-layer-publication.js +611 -0
- package/dist/services/memory-layer.js +156 -0
- package/dist/services/memory-lint-config.js +85 -0
- package/dist/services/memory-native-review-copy.js +165 -0
- package/dist/services/memory-normal-flow-entry.js +75 -0
- package/dist/services/memory-ordinary-defaults.js +112 -0
- package/dist/services/memory-preflight-bootstrap-custody.js +115 -0
- package/dist/services/memory-preflight-handler.js +259 -0
- package/dist/services/memory-repair-current-view.js +299 -0
- package/dist/services/memory-repair-document-delta.js +451 -0
- package/dist/services/memory-repair-history.js +491 -0
- package/dist/services/memory-repair-physical-binding.js +312 -0
- package/dist/services/memory-repair-publication-files.js +152 -0
- package/dist/services/memory-repair-publication-intent.js +27 -0
- package/dist/services/memory-repair-publication-plan.js +160 -0
- package/dist/services/memory-repair-publication-source.js +225 -0
- package/dist/services/memory-repair-publication.js +794 -0
- package/dist/services/memory-repair-registration.js +239 -0
- package/dist/services/memory-repair-work-baseline.js +413 -0
- package/dist/services/memory-repair-work-completion.js +97 -0
- package/dist/services/memory-repair-work-custody.js +73 -0
- package/dist/services/memory-repair-work-results.js +89 -0
- package/dist/services/memory-repair-workspace.js +252 -0
- package/dist/services/memory-repair-writer-copy.js +735 -0
- package/dist/services/memory-result-binding.js +173 -0
- package/dist/services/memory-retained-review-authority.js +129 -0
- package/dist/services/memory-retained-review-results.js +70 -0
- package/dist/services/memory-retained-second-baseline.js +102 -0
- package/dist/services/memory-retained-second-repairs.js +156 -0
- package/dist/services/memory-review-acceptance.js +214 -0
- package/dist/services/memory-review-correction-plan.js +171 -0
- package/dist/services/memory-review-handler.js +585 -0
- package/dist/services/memory-review-inputs.js +200 -0
- package/dist/services/memory-review-receipt.js +180 -0
- package/dist/services/memory-review-registration.js +108 -0
- package/dist/services/memory-review-work-custody.js +124 -0
- package/dist/services/memory-review-work-input.js +72 -0
- package/dist/services/memory-review-work-results.js +73 -0
- package/dist/services/memory-second-corrected-review-inputs.js +165 -0
- package/dist/services/memory-second-correction-plan.js +76 -0
- package/dist/services/memory-second-repair-baseline.js +91 -0
- package/dist/services/memory-second-repair-launch.js +614 -0
- package/dist/services/memory-second-repair-registration.js +88 -0
- package/dist/services/memory-second-repair-source.js +187 -0
- package/dist/services/memory-second-review-acceptance.js +115 -0
- package/dist/services/memory-source-observations.js +117 -0
- package/dist/services/memory-stage-dispatch.js +28 -0
- package/dist/services/memory-stage-results.js +199 -0
- package/dist/services/memory-verification-acceptance.js +135 -0
- package/dist/services/memory-verification-checks.js +252 -0
- package/dist/services/memory-verification-receipt.js +159 -0
- package/dist/services/memory-verify-handler.js +135 -0
- package/dist/services/memory-work-result-preparation.js +63 -0
- package/dist/services/merge-queue.js +228 -149
- package/dist/services/merge-server.js +161 -35
- package/dist/services/migrations.js +37 -16
- package/dist/services/model-catalog.js +109 -0
- package/dist/services/model-discovery.js +46 -0
- package/dist/services/native-daemon-history.js +49 -0
- package/dist/services/native-session-control.js +39 -0
- package/dist/services/operator-profiles.js +236 -0
- package/dist/services/plan-runtime.js +26 -11
- package/dist/services/plans.js +28 -25
- package/dist/services/projects.js +37 -17
- package/dist/services/prompts.js +28 -17
- package/dist/services/protocols.js +163 -87
- package/dist/services/provider-capacity.js +385 -0
- package/dist/services/recovery-observation-budget.js +121 -0
- package/dist/services/recovery-snapshot-database.js +560 -0
- package/dist/services/release-archive-producer.js +52 -0
- package/dist/services/release-archive.js +143 -0
- package/dist/services/release-cache.js +142 -0
- package/dist/services/release-compatibility.js +18 -0
- package/dist/services/release-download.js +67 -0
- package/dist/services/release-envelope.js +104 -0
- package/dist/services/release-manifest.js +45 -0
- package/dist/services/release-payload.js +114 -0
- package/dist/services/release-producer.js +63 -0
- package/dist/services/release-provenance.js +160 -0
- package/dist/services/release-registry.js +66 -0
- package/dist/services/release-source.js +194 -0
- package/dist/services/repair-intents.js +42 -0
- package/dist/services/review-copy.js +165 -0
- package/dist/services/review-deferral.js +23 -0
- package/dist/services/run-control-receipt.js +56 -0
- package/dist/services/run-control-worker.js +411 -0
- package/dist/services/run-control.js +1056 -0
- package/dist/services/run-controller-adapter.js +399 -0
- package/dist/services/run-controller-capture.js +186 -0
- package/dist/services/run-controller-process.js +208 -0
- package/dist/services/run-controller-recovery.js +289 -0
- package/dist/services/run-controller-state.js +97 -0
- package/dist/services/run-controller.js +1205 -0
- package/dist/services/run-engine-bindings.js +1 -1
- package/dist/services/run-fork.js +147 -0
- package/dist/services/run-health.js +149 -0
- package/dist/services/run-observations.js +152 -0
- package/dist/services/run-projection.js +22 -64
- package/dist/services/run-recovery-guard.js +77 -0
- package/dist/services/run-recovery-runtime.js +112 -0
- package/dist/services/run-recovery.js +489 -0
- package/dist/services/run-start-custody.js +177 -0
- package/dist/services/runs.js +1019 -247
- package/dist/services/runtime-budget.js +430 -0
- package/dist/services/runtime-command.js +43 -0
- package/dist/services/runtime-scope-capture.js +52 -0
- package/dist/services/runtime-scope-control.js +468 -0
- package/dist/services/runtime-scope-resume.js +599 -0
- package/dist/services/runtime-scope-stop.js +210 -0
- package/dist/services/runtime-scope-worker.js +287 -0
- package/dist/services/runtime-service.js +96 -0
- package/dist/services/schema-validation.js +10 -8
- package/dist/services/scope-writer-cleanup.js +27 -0
- package/dist/services/sessions.js +35 -69
- package/dist/services/setup.js +377 -0
- package/dist/services/stage-blocker.js +17 -7
- package/dist/services/stage-context.js +193 -19
- package/dist/services/stage-handlers.js +74 -0
- package/dist/services/stage-lifecycle.js +152 -116
- package/dist/services/stage-pause.js +89 -75
- package/dist/services/stage-report-renderer.js +234 -6
- package/dist/services/stage-work-graph.js +52 -0
- package/dist/services/tooling.js +41 -30
- package/dist/services/usage.js +49 -101
- package/dist/services/verification-matrix.js +375 -0
- package/dist/services/vnext-code-review.js +223 -88
- package/dist/services/vnext-code.js +327 -226
- package/dist/services/vnext-contracts.js +10 -1
- package/dist/services/vnext-execution-profile.js +80 -5
- package/dist/services/vnext-fanout.js +311 -19
- package/dist/services/vnext-merge.js +332 -111
- package/dist/services/vnext-plan-review.js +279 -127
- package/dist/services/vnext-plan.js +228 -104
- package/dist/services/vnext-protocolize.js +531 -95
- package/dist/services/vnext-specify.js +119 -81
- package/dist/services/vnext-workspace-policy.js +7 -2
- package/dist/services/work-registry.js +1627 -199
- package/dist/services/workspace-bootstrap.js +52 -15
- package/dist/services/workspace-files.js +85 -0
- package/dist/services/worktrees.js +105 -48
- package/dist/shared/entity-references.js +8 -0
- package/dist/shared/errors.js +27 -0
- package/dist/storage/agent-output.js +26 -0
- package/dist/storage/database.js +891 -39
- package/dist/storage/foreign-key-transaction.js +39 -0
- package/dist/storage/immutable-input.js +45 -0
- package/dist/storage/import-guard.js +102 -0
- package/dist/storage/native-cleanup.js +52 -0
- package/dist/storage/paths.js +17 -4
- package/dist/storage/projection-lock.js +73 -0
- package/dist/storage/work-references.js +23 -0
- package/dist/storage/writer-contract.js +89 -0
- package/dist/storage/writer-migration.js +85 -0
- package/package.json +43 -13
- package/tools/create-canon-release.mjs +33 -0
- package/tools/produce-hybrid-release.mjs +41 -0
- package/tools/repair-paused-run-status.mjs +84 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
import { AppError } from "../shared/errors.js";
|
|
3
|
+
import { prepareOperatorProfile, prepareProfileCreation, readOperatorProfileInput } from "../services/operator-profiles.js";
|
|
4
|
+
/** One explicit choice; prompts go to stderr so stdout remains machine-readable. */
|
|
5
|
+
export async function askExecutorChoice(settings, io, policy = {}) {
|
|
6
|
+
const ids = settings.profiles.map(entry => entry.id);
|
|
7
|
+
io.stderr.write(`Executor profiles: ${ids.length ? ids.join(", ") : "none configured"}\n`);
|
|
8
|
+
io.stderr.write(`Choose a profile ID/alias, file:/absolute/profile.json, create${policy.allowSkip === false ? "" : ", or skip"}. No model is selected automatically.\n`);
|
|
9
|
+
const terminal = createInterface({ input: io.stdin, output: io.stderr });
|
|
10
|
+
const lines = terminal[Symbol.asyncIterator]();
|
|
11
|
+
const cancelled = () => new AppError("onboarding_cancelled", "Executor onboarding was cancelled", 1, { effect: "no_effect" });
|
|
12
|
+
terminal.on("SIGINT", () => terminal.close());
|
|
13
|
+
const ask = async (prompt) => {
|
|
14
|
+
io.stderr.write(prompt);
|
|
15
|
+
const line = await lines.next();
|
|
16
|
+
if (line.done)
|
|
17
|
+
throw cancelled();
|
|
18
|
+
const answer = line.value.trim();
|
|
19
|
+
if (answer.length > 4096)
|
|
20
|
+
throw new AppError("usage", "Executor choice exceeds the input limit", 2, { effect: "no_effect" });
|
|
21
|
+
return answer;
|
|
22
|
+
};
|
|
23
|
+
try {
|
|
24
|
+
const answer = await ask("Executor: ");
|
|
25
|
+
if (answer === "skip") {
|
|
26
|
+
if (policy.allowSkip === false)
|
|
27
|
+
throw new AppError("agent_profile_missing", "This flow requires an executor profile", 1, { effect: "no_effect" });
|
|
28
|
+
return { skip: true };
|
|
29
|
+
}
|
|
30
|
+
if (answer === "create") {
|
|
31
|
+
io.stderr.write("Enter explicit profile settings; this does not probe providers or verify model access. Nothing is saved by this dialog.\n");
|
|
32
|
+
const input = { schema_id: "dd-flow/agent-profile@1" };
|
|
33
|
+
for (const [key, prompt] of [
|
|
34
|
+
["id", "Profile ID: "], ["harness", "Harness (codex/zcode/agy/opencode/grok/droid): "],
|
|
35
|
+
["provider", "Provider ID: "], ["model", "Model ID: "], ["reasoning", "Reasoning setting: "],
|
|
36
|
+
["mode", "Mode setting: "], ["permission", "Permission (allow/deny): "]
|
|
37
|
+
])
|
|
38
|
+
input[key] = await ask(prompt);
|
|
39
|
+
const profile = prepareOperatorProfile(input);
|
|
40
|
+
if (settings.profiles.some(entry => entry.id === profile.id) || Object.hasOwn(settings.aliases, profile.id)) {
|
|
41
|
+
throw new AppError("profile_id_conflict", "New profile ID collides with an existing profile or alias", 2, { effect: "no_effect" });
|
|
42
|
+
}
|
|
43
|
+
if (await ask("Use this profile for this operation? Type yes: ") !== "yes")
|
|
44
|
+
throw cancelled();
|
|
45
|
+
if (policy.allowSave === false)
|
|
46
|
+
return { profile };
|
|
47
|
+
const save = await ask("Save this profile globally during installation? Type yes or no: ");
|
|
48
|
+
if (save !== "yes" && save !== "no")
|
|
49
|
+
throw cancelled();
|
|
50
|
+
if (save === "yes") {
|
|
51
|
+
const defaultChoice = await ask("Set it as global default? Type yes or no: ");
|
|
52
|
+
if (defaultChoice !== "yes" && defaultChoice !== "no")
|
|
53
|
+
throw cancelled();
|
|
54
|
+
return { profile, profileCreation: prepareProfileCreation(settings, profile, defaultChoice === "yes") };
|
|
55
|
+
}
|
|
56
|
+
return { profile };
|
|
57
|
+
}
|
|
58
|
+
if (answer.startsWith("file:")) {
|
|
59
|
+
const file = answer.slice(5);
|
|
60
|
+
if (!file.startsWith("/") && !/^[A-Za-z]:[\\/]/.test(file))
|
|
61
|
+
throw new AppError("usage", "Profile file must be an absolute path", 2, { effect: "no_effect" });
|
|
62
|
+
return { profile: readOperatorProfileInput(file) };
|
|
63
|
+
}
|
|
64
|
+
if (!answer)
|
|
65
|
+
throw new AppError("agent_profile_missing", "An explicit executor choice is required", 1, { effect: "no_effect" });
|
|
66
|
+
return { profileId: answer };
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error instanceof AppError)
|
|
70
|
+
throw error;
|
|
71
|
+
throw cancelled();
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
terminal.close();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { prepareCommandRoute } from "./command-inputs.js";
|
|
2
|
+
import { parseOutputOptions } from "./output-options.js";
|
|
3
|
+
import { prepareResponseDestination, writeResponseFile } from "./response-file.js";
|
|
4
|
+
import { listBundledFlows, showBundledFlow } from "../services/flow-catalog.js";
|
|
5
|
+
import { AppError, errorRecord } from "../shared/errors.js";
|
|
6
|
+
import { writePreparationError } from "./error-output.js";
|
|
7
|
+
/** Catalog inspection never creates an AppContext or executes a flow. */
|
|
8
|
+
export function runFlowCatalogCli(args, io = process) {
|
|
9
|
+
try {
|
|
10
|
+
const output = parseOutputOptions(args);
|
|
11
|
+
const route = prepareCommandRoute(output.args);
|
|
12
|
+
let result;
|
|
13
|
+
if (route.key === "flow list")
|
|
14
|
+
result = { flows: listBundledFlows() };
|
|
15
|
+
else if (route.key === "flow show")
|
|
16
|
+
result = { flow: showBundledFlow(route.parsed.positional[0]) };
|
|
17
|
+
else
|
|
18
|
+
throw new AppError("usage", "Use dd-flow flow list or flow show <id>", 2, { effect: "no_effect" });
|
|
19
|
+
if (output.responseFile)
|
|
20
|
+
prepareResponseDestination(output.responseFile);
|
|
21
|
+
io.stdout.write(`${JSON.stringify(writeResponseFile({ ok: true, action: route.key.replaceAll(" ", "_"), ...result }, output), null, output.json ? undefined : 2)}\n`);
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const record = errorRecord(error);
|
|
26
|
+
writePreparationError(io, args, record);
|
|
27
|
+
return record.exitCode;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { prepareCommandRoute } from "./command-inputs.js";
|
|
2
|
+
import { writePreparationError } from "./error-output.js";
|
|
3
|
+
import { parseOutputOptions } from "./output-options.js";
|
|
4
|
+
import { optionalOption, optionalPositiveNumber } from "./argument-values.js";
|
|
5
|
+
import { discoverHarnesses, harnessCatalog } from "../services/harness-discovery.js";
|
|
6
|
+
import { AppError, errorRecord } from "../shared/errors.js";
|
|
7
|
+
import { probeHarnessVersion } from "../services/harness-version-probe.js";
|
|
8
|
+
import { probeHarnessDoctor } from "../services/harness-doctor.js";
|
|
9
|
+
import { prepareResponseDestination, writeResponseFile } from "./response-file.js";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { validateModelScope } from "../services/model-discovery.js";
|
|
12
|
+
/** Home-free ingress: process diagnostics require explicit effect admission. */
|
|
13
|
+
export async function runHarnessesCli(args, env, io = { stdout: process.stdout, stderr: process.stderr }) {
|
|
14
|
+
let json = false;
|
|
15
|
+
try {
|
|
16
|
+
const output = parseOutputOptions(args);
|
|
17
|
+
json = output.json;
|
|
18
|
+
if (output.responseFile)
|
|
19
|
+
prepareResponseDestination(output.responseFile);
|
|
20
|
+
const route = prepareCommandRoute(output.args);
|
|
21
|
+
const family = route.key === "harnesses show" ? route.parsed.positional[0] : optionalOption(route.parsed, "harness");
|
|
22
|
+
if (family && !harnessCatalog.entries.some(entry => entry.id === family))
|
|
23
|
+
throw new AppError("usage", "Unknown harness; see dd-flow harnesses --help", 2, { effect: "no_effect" });
|
|
24
|
+
const provider = optionalOption(route.parsed, "provider"), account = optionalOption(route.parsed, "account-sha256");
|
|
25
|
+
const observationFile = optionalOption(route.parsed, "model-observation-file");
|
|
26
|
+
let modelScope;
|
|
27
|
+
if (provider !== undefined || account !== undefined || observationFile !== undefined) {
|
|
28
|
+
if (!provider || !account)
|
|
29
|
+
throw new AppError("usage", "Doctor model observations require both --provider and --account-sha256", 2, { effect: "no_effect", help: "harnesses doctor" });
|
|
30
|
+
modelScope = { harness: family, provider, account_sha256: account };
|
|
31
|
+
validateModelScope(modelScope);
|
|
32
|
+
if (observationFile) {
|
|
33
|
+
if (output.responseFile && path.resolve(observationFile) === path.resolve(output.responseFile))
|
|
34
|
+
throw new AppError("usage", "Model observation and command response destinations must differ", 2, { effect: "no_effect" });
|
|
35
|
+
prepareResponseDestination(observationFile);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const discovery = discoverHarnesses({ env, ...(family ? { harness: family } : {}),
|
|
39
|
+
...(optionalOption(route.parsed, "executable") ? { executable: optionalOption(route.parsed, "executable") } : {}) });
|
|
40
|
+
let probe;
|
|
41
|
+
let modelObservation;
|
|
42
|
+
let observationPublication;
|
|
43
|
+
if (route.key === "harnesses doctor") {
|
|
44
|
+
const selected = discovery.entries[0]?.candidates.find(candidate => candidate.selected);
|
|
45
|
+
if (!selected)
|
|
46
|
+
throw new AppError("harness_selection_required", "Doctor requires one installed executable; use --executable for ambiguous installations", 1, { effect: "no_effect" });
|
|
47
|
+
const stateDir = optionalOption(route.parsed, "state-dir"), nativeExecutable = optionalOption(route.parsed, "native-executable");
|
|
48
|
+
const timeoutMs = optionalPositiveNumber(route.parsed, "timeout-ms", true);
|
|
49
|
+
probe = await probeHarnessDoctor({ harness: family, executable: selected.path, env,
|
|
50
|
+
...(stateDir !== undefined ? { stateDir } : {}), ...(nativeExecutable !== undefined ? { nativeExecutable } : {}),
|
|
51
|
+
...(timeoutMs !== undefined ? { timeoutMs } : {}),
|
|
52
|
+
scope: { processes: route.parsed.options.has("allow-processes"), services: route.parsed.options.has("allow-services"),
|
|
53
|
+
credentials: route.parsed.options.has("allow-credentials"), writes: route.parsed.options.has("allow-writes") } });
|
|
54
|
+
if (modelScope) {
|
|
55
|
+
modelObservation = { scope: modelScope, observed_at: new Date().toISOString(),
|
|
56
|
+
status: probe.reported_models.length ? "listed" : "unavailable", complete: false, models: [...probe.reported_models] };
|
|
57
|
+
if (observationFile) {
|
|
58
|
+
const published = writeResponseFile(modelObservation, { responseFile: observationFile });
|
|
59
|
+
observationPublication = { path: observationFile, status: published.response_file_error ? "unknown" : "published",
|
|
60
|
+
...(published.response_file_error ? { error: published.response_file_error } : {}) };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (route.key === "harnesses probe-version") {
|
|
65
|
+
const selected = discovery.entries[0]?.candidates.find(candidate => candidate.selected);
|
|
66
|
+
if (!selected)
|
|
67
|
+
throw new AppError("harness_selection_required", "Version probe requires one installed executable; use --executable for ambiguous installations", 1, { effect: "no_effect" });
|
|
68
|
+
probe = await probeHarnessVersion({ harness: family, executable: selected.path, env,
|
|
69
|
+
...(optionalPositiveNumber(route.parsed, "timeout-ms", true) === undefined ? {} : { timeoutMs: optionalPositiveNumber(route.parsed, "timeout-ms", true) }),
|
|
70
|
+
scope: { processes: route.parsed.options.has("allow-processes"), services: false,
|
|
71
|
+
credentials: route.parsed.options.has("allow-credentials"), writes: route.parsed.options.has("allow-writes") } });
|
|
72
|
+
}
|
|
73
|
+
const result = { ok: true, action: route.key.replaceAll(" ", "_"), catalog: harnessCatalog, discovery, ...(probe ? { probe } : {}),
|
|
74
|
+
...(modelObservation ? { model_observation: modelObservation, observation_scope_binding: "operator_declared_unverified" } : {}),
|
|
75
|
+
...(observationPublication ? { model_observation_publication: observationPublication } : {}) };
|
|
76
|
+
io.stdout.write(`${JSON.stringify(writeResponseFile(result, output), null, json ? undefined : 2)}\n`);
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const record = errorRecord(error);
|
|
81
|
+
writePreparationError(io, args, record);
|
|
82
|
+
return record.exitCode;
|
|
83
|
+
}
|
|
84
|
+
}
|
package/dist/cli/help.js
CHANGED
|
@@ -1,4 +1,204 @@
|
|
|
1
|
+
import { AppError } from "../shared/errors.js";
|
|
2
|
+
import { commandInputs, commandAliases } from "./command-inputs.js";
|
|
3
|
+
import { commandKeyForPositions, globalOptionDocumentation, optionsForCommandTree, routerNativeRoute } from "./command-metadata.js";
|
|
1
4
|
const helpPages = new Map([
|
|
5
|
+
["flow mb-init", `dd-flow init / flow mb-init - managed project Memory Bank initialization
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
dd-flow init --project-root /absolute/project --workspace-root /absolute/workspace --request-id ID --intake-file /absolute/intake.txt --intake-sha256 SHA256 --git-route integration_branch_direct --integration-branch main [--profile ID-or-alias] [--detach] --json
|
|
9
|
+
dd-flow flow mb-init --project-root /absolute/project --workspace-root /absolute/workspace --request-id ID [--detach] --json
|
|
10
|
+
|
|
11
|
+
Both spellings share one command definition and dispatcher. Fresh execution
|
|
12
|
+
requires the original bounded UTF-8 intake bytes and explicit Git policy.
|
|
13
|
+
setup installs the computer-level canon; init initializes the specified project.
|
|
14
|
+
Missing executor defaults or prerequisites refuse before project publication.
|
|
15
|
+
Profiles, descriptor, engine and original request are frozen before dispatch.
|
|
16
|
+
|
|
17
|
+
Replay uses the exact retained request, not current defaults, aliases or canon.
|
|
18
|
+
Omitted selectors reuse original choices; supplied selectors must match them.
|
|
19
|
+
The original intake file need not survive replay: its supplied hash must match
|
|
20
|
+
the retained bytes. --stage-profile stage=profile and --work-profile profile
|
|
21
|
+
are repeatable approved overrides, frozen before launch.
|
|
22
|
+
|
|
23
|
+
--profile-file /absolute/profile.json is exclusive with --profile and supplies
|
|
24
|
+
one complete validated operation-only profile. It never saves a global profile
|
|
25
|
+
or changes defaults; a conflicting saved ID/alias refuses. Replay may omit this
|
|
26
|
+
file after removal; if supplied, its admitted profile must match the original.
|
|
27
|
+
When no default or explicit profile exists, an interactive terminal uses the
|
|
28
|
+
shared executor dialog. Creation is operation-only here; skip is not allowed.
|
|
29
|
+
--non-interactive, JSON and non-terminal input never ask and missing choices
|
|
30
|
+
refuse before project effects. Use profiles commands for explicit global saves.
|
|
31
|
+
|
|
32
|
+
The existing managed controller owns Sessions and execution. The default waits
|
|
33
|
+
for completion, recovery or a user/context boundary; --detach returns its
|
|
34
|
+
accepted receipt. Observer disconnection does not stop the controller.
|
|
35
|
+
--prepare-only publishes the normal project bootstrap and frozen RUN, but does
|
|
36
|
+
not launch a controller or provider Session. It is not a dry run and is exclusive
|
|
37
|
+
with --detach. A runner may then use run drive launch with its own context and
|
|
38
|
+
bounded stop/capture policy. Exact preparation replay never stops or replaces
|
|
39
|
+
an existing controller.
|
|
40
|
+
Use existing scoped run drive status / run control commands to observe,
|
|
41
|
+
answer, pause, stop or reconcile the retained RUN. Native/attached public
|
|
42
|
+
selection is not yet exposed; no failed route silently becomes native.`],
|
|
43
|
+
["flow", `dd-flow flow - engine-owned workflow catalog
|
|
44
|
+
|
|
45
|
+
Usage:
|
|
46
|
+
dd-flow flow list --json
|
|
47
|
+
dd-flow flow show <id> --json
|
|
48
|
+
|
|
49
|
+
Inspection never opens a runtime database, initializes a home or runs agents.
|
|
50
|
+
The catalog reports handler registration separately from RUN readiness. A
|
|
51
|
+
pending handler set cannot execute; registered handlers still require selected
|
|
52
|
+
canon, frozen descriptor/schema admission, workspace and execution readiness.
|
|
53
|
+
These inspection commands do not start init or qualify an installed route.`],
|
|
54
|
+
["models", `dd-flow models - reviewed seed and scoped offline observations
|
|
55
|
+
|
|
56
|
+
Usage:
|
|
57
|
+
dd-flow models list --json
|
|
58
|
+
dd-flow models show <model> --harness family --provider provider --json
|
|
59
|
+
dd-flow models list --harness family --provider provider --account-sha256 <digest> --observation-file /absolute/listing.json --json
|
|
60
|
+
|
|
61
|
+
No database, credentials, network, executable discovery or provider process is
|
|
62
|
+
opened. --seed-file selects reviewed seed-only catalog data; otherwise the
|
|
63
|
+
bundled adapter-derived seed is used. Families not yet curated are explicit.
|
|
64
|
+
Unknown seed settings are not profile defaults or model recommendations.
|
|
65
|
+
|
|
66
|
+
Observations require an exact harness/provider/account scope. A matching listed
|
|
67
|
+
model remains unknown for account access and flow qualification. Missing or
|
|
68
|
+
unavailable listing retains seed entries; a foreign scope is ignored. show
|
|
69
|
+
refuses an absent model rather than inventing availability. Exit 2 is invalid
|
|
70
|
+
input; exit 1 is missing/unreadable input or an absent selected model.`],
|
|
71
|
+
["completion", `dd-flow completion - shell completion from the accepted command grammar
|
|
72
|
+
|
|
73
|
+
Usage:
|
|
74
|
+
dd-flow completion bash
|
|
75
|
+
dd-flow completion zsh
|
|
76
|
+
dd-flow completion fish
|
|
77
|
+
|
|
78
|
+
Prints a shell script to stdout; it does not modify shell configuration. Load
|
|
79
|
+
the script in your shell after reviewing it. Zsh requires compinit first.
|
|
80
|
+
Scripts query completion candidates with literal argv; they do not initialize
|
|
81
|
+
a home, open a database, inspect profiles or invoke harness processes.`],
|
|
82
|
+
["harnesses", `dd-flow harnesses - static installation discovery
|
|
83
|
+
|
|
84
|
+
Usage:
|
|
85
|
+
dd-flow harnesses list --json
|
|
86
|
+
dd-flow harnesses show <family> --json
|
|
87
|
+
dd-flow harnesses discover [--harness family --executable /absolute/path] --json
|
|
88
|
+
dd-flow harnesses probe-version --harness family --allow-processes --allow-credentials --allow-writes [--executable /absolute/path --timeout-ms 3000] --json
|
|
89
|
+
dd-flow harnesses doctor --harness family --allow-processes --allow-credentials [--allow-services --allow-writes --executable /absolute/path] --json
|
|
90
|
+
|
|
91
|
+
Lists all six supported families, including missing installations. Multiple
|
|
92
|
+
installations require explicit selection. Presence does not establish version,
|
|
93
|
+
protocol, auth, model access or qualification. list/show/discover never launch a
|
|
94
|
+
process, inspect credentials, create a home or open a runtime database.
|
|
95
|
+
probe-version is an explicit diagnostic exception: it runs installed code only
|
|
96
|
+
after all three effect permissions are supplied. It bounds time/output and does
|
|
97
|
+
not establish protocol compatibility, account access or flow qualification.
|
|
98
|
+
doctor invokes the existing bundled adapter only after its classified effects
|
|
99
|
+
are admitted: Codex/OpenCode/Droid require services and writes; Agy requires
|
|
100
|
+
writes; ZCode/Grok require processes and credentials. ZCode also requires
|
|
101
|
+
--native-executable. OpenCode requires --state-dir for an existing daemon whose
|
|
102
|
+
executable binding matches; doctor never starts or stops that daemon.
|
|
103
|
+
For Droid, the OS ps utility must be available on PATH before doctor starts;
|
|
104
|
+
missing physical-settlement tooling refuses without launching a provider.
|
|
105
|
+
Reports are bounded/redacted observations, not native qualification or account access.
|
|
106
|
+
Use --timeout-ms 1..60000 to bound the diagnostic, not productive work.
|
|
107
|
+
Optional --provider and --account-sha256 must be supplied together. They bind
|
|
108
|
+
reported model names to an operator-declared, unverified scope, not an observed
|
|
109
|
+
credential identity. --model-observation-file explicitly publishes a standalone
|
|
110
|
+
snapshot usable by models list --observation-file. Listings are incomplete;
|
|
111
|
+
an absent adapter list is unavailable, never an empty verified inventory. No
|
|
112
|
+
account access or qualification is inferred; publication failure does not rerun
|
|
113
|
+
the admitted diagnostic. The destination must differ from --response-file.`],
|
|
114
|
+
["setup", `dd-flow setup - global installation readiness
|
|
115
|
+
|
|
116
|
+
Usage:
|
|
117
|
+
dd-flow setup --canon-source /path/to/release-bundle --trust-file operator-trust.json --request-id ID --skip-agent-setup --non-interactive --json
|
|
118
|
+
dd-flow setup update --canon-source /path/to/release-bundle --trust-file operator-trust.json --request-id ID --skip-agent-setup --json
|
|
119
|
+
dd-flow setup status --json
|
|
120
|
+
|
|
121
|
+
The local bundle contains release-envelope.json, canon.tgz and engine.tgz.
|
|
122
|
+
Trust uses dd-flow/release-trust@1 and must be selected independently of the
|
|
123
|
+
envelope. Stable is the default channel; preview/development require --channel.
|
|
124
|
+
Without --skip-agent-setup, select --profile or an existing global default.
|
|
125
|
+
--profile-file supplies a complete validated profile for headless onboarding;
|
|
126
|
+
it is mutually exclusive with --profile and --skip-agent-setup. Profile files
|
|
127
|
+
never import credentials or silently change operator defaults.
|
|
128
|
+
No missing profile is replaced by an automatically selected model.
|
|
129
|
+
In an interactive terminal, a missing profile opens an explicit executor choice
|
|
130
|
+
only after the authenticated installation is committed:
|
|
131
|
+
profile ID/alias, file:/absolute/profile.json, create or skip. create asks for
|
|
132
|
+
every profile field and explicit confirmation, without probing providers.
|
|
133
|
+
Separate yes/no questions authorize saving and global default selection; no
|
|
134
|
+
settings are written by the dialog itself. JSON/JSONL output,
|
|
135
|
+
--non-interactive and non-terminal input never prompt. Cancellation leaves the
|
|
136
|
+
installation committed and onboarding pending; replay the same request to resume
|
|
137
|
+
or explicitly skip onboarding. The separate onboarding receipt freezes the
|
|
138
|
+
selected profile and save/default consent before profile effects. A completed
|
|
139
|
+
onboarding replay never restores later settings. Existing request-bound profile
|
|
140
|
+
choices keep their original identity and recovery semantics.
|
|
141
|
+
--save-profile-intent supplies explicit frozen profile creation/default consent
|
|
142
|
+
for persistence. The selected profile must match; skip conflicts. Setup retains
|
|
143
|
+
the complete intent in its request and uses a profiles_saved checkpoint. A
|
|
144
|
+
committed replay never restores settings changed after the original installation.
|
|
145
|
+
Without a new explicit executor choice, an exact request retry reuses its retained
|
|
146
|
+
executor and save/default consent rather than asking again or choosing a new default.
|
|
147
|
+
Status inspects the selected installation and retained cache without opening or
|
|
148
|
+
migrating SQLite, registering a project, discovering providers or running agents.
|
|
149
|
+
Installation readiness and runtime qualification are separate facts.
|
|
150
|
+
`],
|
|
151
|
+
["profiles", `dd-flow profiles - home-only executor settings
|
|
152
|
+
|
|
153
|
+
Usage:
|
|
154
|
+
dd-flow profiles list --json
|
|
155
|
+
dd-flow profiles show <ID-or-alias> --json
|
|
156
|
+
dd-flow profiles create --file profile.json --expected-revision SHA256 [--set-default] --json
|
|
157
|
+
dd-flow profiles edit --file profile.json --expected-revision SHA256 --json
|
|
158
|
+
dd-flow profiles remove <ID> --expected-revision SHA256 --json
|
|
159
|
+
dd-flow profiles alias <alias> (--target ID | --remove) --expected-revision SHA256 --json
|
|
160
|
+
dd-flow profiles set-default [ID-or-alias | --clear] --expected-revision SHA256 --json
|
|
161
|
+
|
|
162
|
+
Read the current revision with profiles list before changing settings. Writes
|
|
163
|
+
are atomic and reject concurrent/stale changes. Aliases point directly to IDs,
|
|
164
|
+
not other aliases. Profile files use dd-flow/agent-profile@1 and reject secret
|
|
165
|
+
fields. Existing legacy IDs are imported on the first successful write without
|
|
166
|
+
editing their files. Thereafter profile-settings.json is the sole owner.
|
|
167
|
+
Existing RUNs use frozen snapshots, not mutable profile settings. This command
|
|
168
|
+
never registers a project, selects a model automatically or creates a runtime DB.`],
|
|
169
|
+
["runtime scope", `Usage:
|
|
170
|
+
dd-flow runtime scope fence --scope-id EVAL_ID --request-id ID --json
|
|
171
|
+
dd-flow runtime scope status --scope-id EVAL_ID --json
|
|
172
|
+
dd-flow runtime scope stop --scope-id EVAL_ID --request-id ID --json
|
|
173
|
+
dd-flow runtime scope control --scope-id EVAL_ID --request-id ID --mode pause|stop [--manifest-json JSON] --json
|
|
174
|
+
dd-flow runtime scope resume --scope-id EVAL_ID --request-id ID --generation N --capture-key SHA256 --json
|
|
175
|
+
dd-flow runtime scope reconcile --scope-id EVAL_ID --generation N --request-id ID --json
|
|
176
|
+
|
|
177
|
+
Use the EVAL manifest's retained DD_FLOW_RESOURCE_HOME. Commands select exactly
|
|
178
|
+
one scope across its registered runtime homes; neighboring scopes are untouched.
|
|
179
|
+
fence durably blocks new provider turns and owned baseline checks. It does not
|
|
180
|
+
stop existing work. status reports retained ownership, not proof of settlement.
|
|
181
|
+
stop fences first and requests owned daemon-tree and baseline-process cleanup.
|
|
182
|
+
Inspect settled and each node's evidence: ok alone does not prove cleanup.
|
|
183
|
+
Unproven ownership or cleanup remains pending; repeat stop to observe settlement.
|
|
184
|
+
The fence/stop route is terminal cancellation and has no resume command.
|
|
185
|
+
control records recoverable scope intent and starts a detached drain owner.
|
|
186
|
+
The EVAL resolver supplies a runtime-scope-manifest@1 declaration with the source
|
|
187
|
+
manifest path, SHA-256 and execution IDs, including queued executions. Declaration
|
|
188
|
+
changes are rejected. resume accepts the exact captured generation and starts
|
|
189
|
+
detached recovery preparation. It does not yet release scope admission: inspect
|
|
190
|
+
dispatch_blocked and pending reasons; accepted preparation is not resumed work.
|
|
191
|
+
RUN pause/stop/resume uses dd-flow run control.`],
|
|
192
|
+
["storage", `Usage:
|
|
193
|
+
dd-flow storage migrate-writer --database ABSOLUTE_DB --backup NEW_ABSOLUTE_FILE --offline --json
|
|
194
|
+
|
|
195
|
+
Drain all local and external runtime owners before using --offline. This command
|
|
196
|
+
migrates one existing database, not a whole runtime or retained provider Session.
|
|
197
|
+
It refuses unresolved ownership rows, preserves a verified WAL-safe backup, and
|
|
198
|
+
fences unaware old writers. It does not initialize the default DD_FLOW_HOME.
|
|
199
|
+
The backup path must be new; existing backups are never overwritten. An exact
|
|
200
|
+
retry of a committed migration returns its receipt after verifying the backup.
|
|
201
|
+
If no committed receipt exists, retain the failed backup and choose a new path.`],
|
|
2
202
|
[
|
|
3
203
|
"",
|
|
4
204
|
`dd-flow - mechanical control layer for dd-flow workflows
|
|
@@ -33,11 +233,14 @@ Core commands:
|
|
|
33
233
|
session register/status/stop Register flow sessions and stop workers.
|
|
34
234
|
dashboard data/render/open/refresh Render, refresh, open, and inspect project/global dashboards.
|
|
35
235
|
schema validate Validate canonical dd-flow JSON data contracts.
|
|
236
|
+
storage migrate-writer Explicitly back up and fence a drained SQLite store.
|
|
237
|
+
runtime scope fence/status/stop Fence, inspect, or cancel one retained EVAL scope.
|
|
36
238
|
memory permissions preflight Check Memory Bank write/read permissions.
|
|
37
239
|
integration cmux status Inspect optional cmux integration.
|
|
38
240
|
codex home/hooks/hook Manage Codex homes, hooks, and hook events.
|
|
39
241
|
zcode event/usage Ingest trusted zcode-acp lifecycle and usage evidence.
|
|
40
242
|
grok event/usage Ingest trusted Grok Build lifecycle and usage evidence.
|
|
243
|
+
droid event/usage Ingest trusted Factory Droid lifecycle and physical usage evidence.
|
|
41
244
|
opencode event/usage Ingest trusted OpenCode lifecycle and usage evidence.
|
|
42
245
|
agy event/usage Ingest trusted Antigravity CLI lifecycle and usage evidence.
|
|
43
246
|
worktree plan/create/status Record Worktrunk-backed feature worktrees.
|
|
@@ -152,12 +355,18 @@ Usage:
|
|
|
152
355
|
dd-flow run start --project-root <root> [--workspace-root <checkout>] --flow-kind <kind> --subject-type <type> --subject-id <id> --slug <slug> [--preset compact|normal|full] [--task-profile-file <file>] [--protocol-override-file <file>] [--flag key=value] [--next-action <text>] --json
|
|
153
356
|
dd-flow id next --type protocol|run --project-root <root> --slug <slug> --json
|
|
154
357
|
dd-flow run status <RUN-ID|RUN-short-id> --project-root <root> --json
|
|
358
|
+
dd-flow run control status --run <RUN-ID> --project-root <root> --json
|
|
359
|
+
dd-flow run control reconcile --run <RUN-ID> --project-root <root> --control-id <ID> --request-id <ID> --json
|
|
360
|
+
dd-flow run drive launch --run <RUN-ID> --project-root <root> --request-id <id> --context-file <file> --context-sha256 <sha256> [--stop-after <stage>] [--capture-root <directory>] --json
|
|
361
|
+
dd-flow run drive status --run <RUN-ID> --project-root <root> [--after <sequence>] --json
|
|
155
362
|
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
|
|
158
|
-
dd-flow run snapshot
|
|
159
|
-
dd-flow run snapshot
|
|
363
|
+
dd-flow run prepare-vnext-specify --project-root <root> --slug <slug> [--execution-routing-file <file>] --json
|
|
364
|
+
dd-flow run recovery inspect|begin|seal|capture|resume <RUN-ID|RUN-short-id> --project-root <root> --json
|
|
365
|
+
dd-flow run snapshot create <RUN-ID|RUN-short-id> (--stage-entry <stage>|--candidate|--incomplete|--recovery-id <RCV-ID>) --project-root <root> --output <directory> --json
|
|
366
|
+
dd-flow run snapshot restore --snapshot <directory> --project-root <prepared-root> [--recovery-id <RCV-ID>] --json
|
|
367
|
+
dd-flow run snapshot bootstrap create --project-root <root> --output <directory> [--flow sdlc|mb-init] --json
|
|
160
368
|
dd-flow run snapshot bootstrap restore --snapshot <directory> --project-root <prepared-root> --json
|
|
369
|
+
dd-flow run fork --from <sealed-stage-entry-snapshot> --output <empty-directory> --engine-version <exact-version> --request-id <id> [--integrity-checksum <sha256>] --json
|
|
161
370
|
dd-flow run timeline <RUN-ID|RUN-short-id> --project-root <root> --json
|
|
162
371
|
dd-flow stat usage --run <RUN-ID|RUN-short-id> --project-root <root> [--stage <stage[,stage...]>] [--session <session-id>] --json
|
|
163
372
|
dd-flow stat run sessions ls --run <RUN-ID|RUN-short-id> --project-root <root> --json
|
|
@@ -169,7 +378,13 @@ Usage:
|
|
|
169
378
|
|
|
170
379
|
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.
|
|
171
380
|
|
|
172
|
-
run prepare-vnext-specify
|
|
381
|
+
run start and prepare-vnext-specify accept --execution-routing-file for vNext RUNs: dd-flow/execution-routing@1 with an execution object selects the complete routing policy from existing agent-profiles. RUN creation freezes the input and selected profiles without changing project settings.
|
|
382
|
+
run snapshot restore also accepts --execution-routing-file for a new stage-entry experiment. Its fresh DD_FLOW_HOME may contain only agent-profiles and the empty database; selected profiles are read before import, previous RUN policy is archived, and existing Work overrides must resolve against the selected frozen profiles. Recovery imports reject this option.
|
|
383
|
+
run snapshot restore and run fork accept --operational-decision-file for an explicitly accepted decision bound to the new stage-entry experiment. Store the input outside fork output; its bytes are bound to the idempotent request. A snapshot with a scoped decision cannot grant it to another execution implicitly. Recovery retains the original decision and rejects replacement.
|
|
384
|
+
run fork restores one sealed stage-entry snapshot to an isolated project and DD_FLOW_HOME, archives source authority, then binds an exact engine only in that copy. It is idempotent by request ID and output receipt; it never resumes a provider session or changes its source RUN.
|
|
385
|
+
run prepare-vnext-specify allocates an otherwise unstarted vNext RUN for the canonical SPECIFY entry checkpoint. run recovery makes an interrupted RUN read-only, requires an explicit settled-tree receipt, captures immutable recovery evidence, then explicitly returns delegated Work to the ready graph. 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.
|
|
386
|
+
|
|
387
|
+
Managed drive is not yet native-provider qualified. With --capture-root, its detached controller fences RUN writers and captures each completed Stage before dispatching its successor. The capture root must be outside the runtime, project and workspace. Status events expose boundary_captured receipts; capturing means writers are still fenced, and capture_failed retains the fence for operator reconciliation. External snapshot creation is rejected while a managed controller owns a live RUN.
|
|
173
388
|
|
|
174
389
|
Examples:
|
|
175
390
|
dd-flow run start --project-root "$PWD" --flow-kind mb_sdlc --subject-type protocol --subject-id PRT-001-demo --slug demo --json
|
|
@@ -184,16 +399,22 @@ Examples:
|
|
|
184
399
|
Usage:
|
|
185
400
|
dd-flow stage start <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--dir <NN-stage-slug>] [--require-session-binding] --json
|
|
186
401
|
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
|
-
|
|
402
|
+
dd-flow stage pause <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> (--question-file <path>|--question-stdin) --json
|
|
403
|
+
dd-flow stage resume <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> (--answer-file <path>|--answer-stdin) --json
|
|
404
|
+
|
|
405
|
+
Managed resume commands restore the accepted answer file from runtime state. Execute the returned command without adding an answer path or recreating the answer. The explicit answer flags above are for unmanaged calls.
|
|
406
|
+
Path aliases @project, @workspace and @run are supported only in declared CLI path parameters and require a uniquely bound context. File-writing tools use physical paths. Both --option value and --option=value are accepted; quoted or escaped aliases are normalized identically. Pre-RUN bootstrap paths and external schema directories require physical paths.
|
|
407
|
+
An aggregate CODE/CODE-REVIEW failure may return continuation.kind=repair_required: its repair Work is already registered. End the coordinator turn and let the controller dispatch the fresh child; do not recreate the repair. A recovery retry uses --retry-check <receipt> --reason-file <recovery.json>, containing only {"reason":"actual environment recovery evidence"}. Legacy --reason remains accepted, but cannot be combined with --reason-file. A needs_input continuation is not yet executable: write its requested file first, then use command_after_input.
|
|
408
|
+
dd-flow stage block <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --kind engine|harness|environment --code <code> (--summary-file <path>|--summary-stdin) [--retryable] --json
|
|
190
409
|
dd-flow stage unblock <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --work <WORK-ID> --json
|
|
191
410
|
dd-flow stage fanout status <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --json
|
|
192
411
|
dd-flow stage fanout dispatch <RUN-ID|RUN-short-id> --project-root <root> --stage <name> --json
|
|
412
|
+
dd-flow stage fanout reconcile <RUN-ID> --project-root <root> --stage <name> --observations-file <native-observations.json> --json
|
|
413
|
+
dd-flow stage native observe <RUN-ID> --project-root <root> --stage <name> --observations-file <native-observations.json> --json
|
|
193
414
|
dd-flow stage finish <RUN-ID|RUN-short-id> --project-root <root> --stage <name> [--semantic-file <RUN-local-json>] --json
|
|
194
415
|
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
416
|
|
|
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.
|
|
417
|
+
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. Managed commands use scoped RUN/Work aliases and @project; their internal invocation UUID is bound by the native hook and is intentionally not model-facing. @ aliases apply only to declared dd-flow path arguments, not to shell tools. 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. Unmanaged operator calls retain explicit project and runtime selection.`
|
|
197
418
|
],
|
|
198
419
|
[
|
|
199
420
|
"work",
|
|
@@ -203,8 +424,9 @@ Usage:
|
|
|
203
424
|
dd-flow work ls (--run <RUN-ID>|--parent <WORK-ID>) [--ready] --json
|
|
204
425
|
dd-flow work show <WORK-ID> --json
|
|
205
426
|
dd-flow work start <WORK-ID> --project-root <root> --json
|
|
427
|
+
dd-flow work launch <WORK-ID> [--stage <name>] --json
|
|
206
428
|
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>|--from-unresolved <gap> --verification-file <file>) --origin-work <WORK-ID>... --task-stdin --project-root <root> --json
|
|
429
|
+
dd-flow work repair add --run <RUN-ID> (--from-check <CHECK-ID>|--from-unresolved <gap> --verification-file <file>) --origin-work <WORK-ID>... (--task-file <path>|--task-stdin) --project-root <root> --json
|
|
208
430
|
|
|
209
431
|
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 or unresolved semantic verification creates a repair Work from the selected completed origin context and retained evidence. Its planned write areas are coordination hints only; the repair may change any necessary project file inside its RUN workspace.`
|
|
210
432
|
],
|
|
@@ -504,8 +726,12 @@ Examples:
|
|
|
504
726
|
|
|
505
727
|
Usage:
|
|
506
728
|
dd-flow memory permissions preflight --root <project-root> --memory-bank <path> [--tasks <path>] --flow <flow> --mode <mode> --json
|
|
729
|
+
dd-flow memory finish integrate --run <run-id> --project-root <project-root> --json
|
|
730
|
+
dd-flow memory finish evidence --run <run-id> --project-root <project-root> --json
|
|
507
731
|
|
|
508
|
-
permissions preflight checks project, Memory Bank, and optional .tasks read/write permissions before memory flows mutate files. It never runs privileged repair commands. A completed assessment returns JSON on stdout with exit_code 0 when the flow can continue and exit_code 1 when permission blockers are found. Runtime/configuration mistakes exit 2 as structured errors
|
|
732
|
+
permissions preflight checks project, Memory Bank, and optional .tasks read/write permissions before memory flows mutate files. It never runs privileged repair commands. A completed assessment returns JSON on stdout with exit_code 0 when the flow can continue and exit_code 1 when permission blockers are found. Runtime/configuration mistakes exit 2 as structured errors.
|
|
733
|
+
|
|
734
|
+
finish integrate commits only the accepted Memory Bank and owned lint configuration, then performs the retained local integration route. It preserves unrelated files and never pushes or changes Git identity/configuration. An uncertain original Git effect must be observed, not blindly repeated. finish evidence then publishes actual coverage, integration and ordinary-entry preparation references; neither command accepts the finish result or completes the RUN.`
|
|
509
735
|
],
|
|
510
736
|
[
|
|
511
737
|
"memory permissions",
|
|
@@ -537,17 +763,38 @@ handler resolves the registered project from cwd. The option is only a manual
|
|
|
537
763
|
override.
|
|
538
764
|
|
|
539
765
|
Managed homes isolate dd-flow hooks while sharing selected Codex state from the source home.`
|
|
766
|
+
],
|
|
767
|
+
[
|
|
768
|
+
"zcode hook",
|
|
769
|
+
`dd-flow zcode hook - handle a synchronous native ZCode PreToolUse callback
|
|
770
|
+
|
|
771
|
+
Usage:
|
|
772
|
+
dd-flow zcode hook handle --project-root <root> --json
|
|
773
|
+
|
|
774
|
+
The managed ZCode native hook supplies the callback on stdin. It records the
|
|
775
|
+
receipt before returning a rewritten tool input with --hook-event-id.`
|
|
540
776
|
],
|
|
541
777
|
[
|
|
542
778
|
"zcode event",
|
|
543
|
-
`dd-flow zcode event - ingest a zcode-acp session/update notification
|
|
779
|
+
`dd-flow zcode event - ingest a zcode-acp session/update notification as evidence
|
|
544
780
|
|
|
545
781
|
Usage:
|
|
546
782
|
dd-flow zcode event handle --project-root <root> --json
|
|
547
783
|
dd-flow zcode usage ingest --project-root <root> --json
|
|
548
784
|
|
|
549
|
-
Both payloads are read from stdin.
|
|
550
|
-
|
|
785
|
+
Both payloads are read from stdin. Native hooks own lifecycle admission; ACP
|
|
786
|
+
events and usage retain secondary evidence for RUN accounting.`
|
|
787
|
+
],
|
|
788
|
+
[
|
|
789
|
+
"droid event",
|
|
790
|
+
`dd-flow droid event - ingest a controlled Factory Droid Execute hook
|
|
791
|
+
|
|
792
|
+
Usage:
|
|
793
|
+
dd-flow droid event handle --project-root <root> --json
|
|
794
|
+
dd-flow droid usage ingest --project-root <root> --json
|
|
795
|
+
|
|
796
|
+
Reads trusted adapter JSON from stdin. Usage requires physical_session scope and explicit completeness.
|
|
797
|
+
`
|
|
551
798
|
],
|
|
552
799
|
[
|
|
553
800
|
"opencode event",
|
|
@@ -587,10 +834,73 @@ worktree plan suggests a project-scoped service checkout under DD_FLOW_HOME/proj
|
|
|
587
834
|
]
|
|
588
835
|
]);
|
|
589
836
|
export function helpForArgs(args) {
|
|
590
|
-
|
|
591
|
-
|
|
837
|
+
return resolveHelp(args)?.text;
|
|
838
|
+
}
|
|
839
|
+
export function hasHelpIntent(args) {
|
|
840
|
+
const end = args.indexOf("--");
|
|
841
|
+
return args.slice(0, end < 0 ? args.length : end).some(arg => arg === "--help" || arg === "-h");
|
|
842
|
+
}
|
|
843
|
+
/** Pure early resolver: no filesystem, runtime context, process dispatch or output-file access. */
|
|
844
|
+
export function resolveHelp(args) {
|
|
845
|
+
if (!hasHelpIntent(args))
|
|
592
846
|
return undefined;
|
|
847
|
+
const end = args.indexOf("--"), tokens = args.slice(0, end < 0 ? args.length : end);
|
|
848
|
+
const positions = [], selectors = [], supplied = [];
|
|
849
|
+
let json = false;
|
|
850
|
+
const switches = new Set([...globalOptionDocumentation.filter(o => o.kind === "switch").map(o => o.name),
|
|
851
|
+
...Object.values(commandInputs).flatMap(input => input.switches)]);
|
|
852
|
+
for (let index = 0; index < tokens.length; index++) {
|
|
853
|
+
const token = tokens[index];
|
|
854
|
+
if (token === "--help" || token === "-h")
|
|
855
|
+
continue;
|
|
856
|
+
if (token === "--option" || token.startsWith("--option=")) {
|
|
857
|
+
const value = token.startsWith("--option=") ? token.slice(9) : tokens[++index];
|
|
858
|
+
if (!value || value === "--help" || value === "-h")
|
|
859
|
+
throw helpUsage("--option requires one option selector");
|
|
860
|
+
selectors.push(value.replace(/^--/, ""));
|
|
861
|
+
continue;
|
|
862
|
+
}
|
|
863
|
+
if (token.startsWith("--")) {
|
|
864
|
+
const name = token.slice(2).split("=", 1)[0];
|
|
865
|
+
supplied.push(name);
|
|
866
|
+
if (token === "--json")
|
|
867
|
+
json = true;
|
|
868
|
+
if (!token.includes("=") && !switches.has(name) && tokens[index + 1] && !tokens[index + 1].startsWith("-"))
|
|
869
|
+
index++;
|
|
870
|
+
}
|
|
871
|
+
else if (token.startsWith("-"))
|
|
872
|
+
throw helpUsage(`Unknown short option: ${token}`);
|
|
873
|
+
else
|
|
874
|
+
positions.push(token);
|
|
593
875
|
}
|
|
594
|
-
|
|
595
|
-
|
|
876
|
+
if (selectors.length > 1)
|
|
877
|
+
throw helpUsage("--option must occur once");
|
|
878
|
+
const selected = commandKeyForPositions(positions);
|
|
879
|
+
const command = selected ?? positions.join(" ");
|
|
880
|
+
const commands = Object.keys(commandInputs).filter(key => !command || key === command || key.startsWith(`${command} `));
|
|
881
|
+
if (command && commands.length === 0)
|
|
882
|
+
throw helpUsage(`Unknown help command: ${command}`);
|
|
883
|
+
const optionMap = new Map(optionsForCommandTree(command).map(option => [option.name, option]));
|
|
884
|
+
// Invalid response transport is intentionally irrelevant to help, including missing/repeated values.
|
|
885
|
+
for (const name of supplied)
|
|
886
|
+
if (!optionMap.has(name))
|
|
887
|
+
throw helpUsage(`Unknown option --${name} for ${command || "root"}`);
|
|
888
|
+
const option = selectors.length ? optionMap.get(selectors[0]) : null;
|
|
889
|
+
if (selectors.length && !option)
|
|
890
|
+
throw helpUsage(`Unknown option selector: ${selectors[0]}`);
|
|
891
|
+
const options = [...optionMap.values()].sort((a, b) => a.name.localeCompare(b.name, "en"));
|
|
892
|
+
const input = selected ? commandInputs[selected] : undefined;
|
|
893
|
+
const canonical = commandAliases[command] ?? command;
|
|
894
|
+
const pageKey = [...helpPages.keys()].filter(key => key && (canonical === key || canonical.startsWith(`${key} `)))
|
|
895
|
+
.sort((a, b) => b.length - a.length)[0] ?? "";
|
|
896
|
+
const detail = (value) => `--${value.name}${value.kind === "value" ? " <value>" : ""}${value.required ? " (required)" : ""}${value.repeatable ? " (repeatable)" : ""}\n ${value.description}${value.choices.length ? `\n Allowed: ${value.choices.join(", ")}` : ""}`;
|
|
897
|
+
const usage = input ? `\nExact command: dd-flow ${command}${input.positions[0] ? ` <argument>${input.positions[0] > 1 ? ` × ${input.positions[0]}` : ""}` : ""}\n` : "";
|
|
898
|
+
return { json,
|
|
899
|
+
text: option ? `dd-flow ${command} --option ${option.name} --help\n\n${detail(option)}`
|
|
900
|
+
: `${helpPages.get(pageKey)}${usage}\n${input?.retired ? `Retired: ${input.retired}\n` : ""}\n${command ? "" : "Command paths:\n"}${input ? "" : commands.map(key => ` ${key}`).join("\n")}\n\nOptions:\n${options.map(detail).join("\n")}`,
|
|
901
|
+
data: { schema_id: "dd-flow/cli-help@1", command, alias_of: commandAliases[command] ?? null, commands, options, option: option ?? null,
|
|
902
|
+
router_native: selected ? routerNativeRoute(selected) : true, retired: input?.retired ?? null } };
|
|
903
|
+
}
|
|
904
|
+
function helpUsage(message) {
|
|
905
|
+
return new AppError("usage", `${message}; use dd-flow --help`, 2, { phase: "help", effect: "no_effect", recoverable: true, help_topic: "dd-flow --help" });
|
|
596
906
|
}
|