@tacuchi/agent-workflow-cli 25.8.0 → 25.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -0
- package/README.md +5 -1
- package/dist/adapters/git-cli.js +225 -17
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/adapters/node-file-system.js +48 -0
- package/dist/adapters/node-file-system.js.map +1 -1
- package/dist/application/amend-service.js +51 -14
- package/dist/application/amend-service.js.map +1 -1
- package/dist/application/branch-resolver.js +6 -3
- package/dist/application/branch-resolver.js.map +1 -1
- package/dist/application/capability/design-handler.js +124 -43
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +4 -1
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js +3 -0
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/check-branch-service.js +158 -19
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint/markdown.js +2 -2
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint/state-reader.js +12 -0
- package/dist/application/checkpoint/state-reader.js.map +1 -1
- package/dist/application/checkpoint-service.js +12 -4
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.js +91 -17
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/claims-ledger.js +137 -11
- package/dist/application/claims-ledger.js.map +1 -1
- package/dist/application/claims-recovery.js +85 -44
- package/dist/application/claims-recovery.js.map +1 -1
- package/dist/application/database-tool-catalog.js +33 -0
- package/dist/application/database-tool-catalog.js.map +1 -1
- package/dist/application/design/consumer-document.js +2 -2
- package/dist/application/design/consumer-document.js.map +1 -1
- package/dist/application/design/design-content-gate-service.js +20 -2
- package/dist/application/design/design-content-gate-service.js.map +1 -1
- package/dist/application/design/design-gate-service.js +2 -0
- package/dist/application/design/design-gate-service.js.map +1 -1
- package/dist/application/design/design-index-service.js +4 -0
- package/dist/application/design/design-index-service.js.map +1 -1
- package/dist/application/design/design-publish-service.js +1 -4
- package/dist/application/design/design-publish-service.js.map +1 -1
- package/dist/application/design/design-record-service.js +13 -7
- package/dist/application/design/design-record-service.js.map +1 -1
- package/dist/application/design/design-resolver-service.js +22 -3
- package/dist/application/design/design-resolver-service.js.map +1 -1
- package/dist/application/design/design-simple-service.js +24 -5
- package/dist/application/design/design-simple-service.js.map +1 -1
- package/dist/application/design/digest.js +41 -0
- package/dist/application/design/digest.js.map +1 -0
- package/dist/application/dev-only-services.js +166 -20
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/doc-branch-ledger.js +145 -0
- package/dist/application/doc-branch-ledger.js.map +1 -0
- package/dist/application/docs-canon-service.js +1 -1
- package/dist/application/docs-canon-service.js.map +1 -1
- package/dist/application/doctor/dist-integrity.js +113 -0
- package/dist/application/doctor/dist-integrity.js.map +1 -0
- package/dist/application/doctor/hosts.js +5 -2
- package/dist/application/doctor/hosts.js.map +1 -1
- package/dist/application/doctor/prepare.js +4 -1
- package/dist/application/doctor/prepare.js.map +1 -1
- package/dist/application/doctor/provider-installation.js +39 -19
- package/dist/application/doctor/provider-installation.js.map +1 -1
- package/dist/application/doctor/provider-mcps.js +9 -1
- package/dist/application/doctor/provider-mcps.js.map +1 -1
- package/dist/application/doctor/provider-skills.js +25 -0
- package/dist/application/doctor/provider-skills.js.map +1 -1
- package/dist/application/doctor/provider-visibility.js +76 -3
- package/dist/application/doctor/provider-visibility.js.map +1 -1
- package/dist/application/doctor/provider-workspace-block.js +156 -0
- package/dist/application/doctor/provider-workspace-block.js.map +1 -0
- package/dist/application/doctor/repair-runner.js +47 -3
- package/dist/application/doctor/repair-runner.js.map +1 -1
- package/dist/application/doctor/report.js +24 -4
- package/dist/application/doctor/report.js.map +1 -1
- package/dist/application/doctor/skills-toml-migrate.js +76 -0
- package/dist/application/doctor/skills-toml-migrate.js.map +1 -0
- package/dist/application/export-catalog-check.js +200 -0
- package/dist/application/export-catalog-check.js.map +1 -0
- package/dist/application/export-service.js +716 -79
- package/dist/application/export-service.js.map +1 -1
- package/dist/application/fix-git-service.js +285 -64
- package/dist/application/fix-git-service.js.map +1 -1
- package/dist/application/flow/advance.js +202 -25
- package/dist/application/flow/advance.js.map +1 -1
- package/dist/application/flow/annul-service.js +3 -1
- package/dist/application/flow/annul-service.js.map +1 -1
- package/dist/application/flow/batch-commit.js +189 -0
- package/dist/application/flow/batch-commit.js.map +1 -0
- package/dist/application/flow/checkout-observation.js +63 -10
- package/dist/application/flow/checkout-observation.js.map +1 -1
- package/dist/application/flow/close-artifacts.js +105 -0
- package/dist/application/flow/close-artifacts.js.map +1 -0
- package/dist/application/flow/close-at-boundary.js +25 -14
- package/dist/application/flow/close-at-boundary.js.map +1 -1
- package/dist/application/flow/close-document-guidance.js +70 -0
- package/dist/application/flow/close-document-guidance.js.map +1 -0
- package/dist/application/flow/flow-service.js +46 -3
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +300 -82
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/internal-drive.js +24 -1
- package/dist/application/flow/internal-drive.js.map +1 -1
- package/dist/application/flow/plan-entry.js +82 -0
- package/dist/application/flow/plan-entry.js.map +1 -0
- package/dist/application/flow/prove.js +32 -1
- package/dist/application/flow/prove.js.map +1 -1
- package/dist/application/flow/quick-checkouts.js +48 -0
- package/dist/application/flow/quick-checkouts.js.map +1 -0
- package/dist/application/flow/reinfer-batch.js +177 -0
- package/dist/application/flow/reinfer-batch.js.map +1 -0
- package/dist/application/flow/reopen-run.js +12 -5
- package/dist/application/flow/reopen-run.js.map +1 -1
- package/dist/application/flow/run-state-service.js +2 -0
- package/dist/application/flow/run-state-service.js.map +1 -1
- package/dist/application/flow/submit.js +583 -116
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/generate-launch-service.js +16 -6
- package/dist/application/generate-launch-service.js.map +1 -1
- package/dist/application/git-flow-service.js +34 -3
- package/dist/application/git-flow-service.js.map +1 -1
- package/dist/application/history-publications.js +24 -0
- package/dist/application/history-publications.js.map +1 -1
- package/dist/application/history-reconcile-service.js +45 -0
- package/dist/application/history-reconcile-service.js.map +1 -0
- package/dist/application/history-table.js +61 -12
- package/dist/application/history-table.js.map +1 -1
- package/dist/application/history-update-service.js +25 -4
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-branch-check.js +25 -3
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +3 -4
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/hook-turn-start.js +51 -0
- package/dist/application/hook-turn-start.js.map +1 -0
- package/dist/application/host-memory/codex.js +1 -1
- package/dist/application/host-memory/codex.js.map +1 -1
- package/dist/application/hub-registry.js +135 -0
- package/dist/application/hub-registry.js.map +1 -0
- package/dist/application/local-proposal.js +72 -19
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/mcp-host-reader.js +1 -1
- package/dist/application/mcp-host-reader.js.map +1 -1
- package/dist/application/mcp-host-writer.js +16 -10
- package/dist/application/mcp-host-writer.js.map +1 -1
- package/dist/application/merge-state-service.js +150 -34
- package/dist/application/merge-state-service.js.map +1 -1
- package/dist/application/multiroot/claude.js +17 -10
- package/dist/application/multiroot/claude.js.map +1 -1
- package/dist/application/multiroot/codex.js +17 -11
- package/dist/application/multiroot/codex.js.map +1 -1
- package/dist/application/multiroot-service.js +52 -28
- package/dist/application/multiroot-service.js.map +1 -1
- package/dist/application/parsers/execution-batches.js +64 -0
- package/dist/application/parsers/execution-batches.js.map +1 -0
- package/dist/application/parsers/phases.js +23 -2
- package/dist/application/parsers/phases.js.map +1 -1
- package/dist/application/parsers/project-block.js +146 -17
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/parsers/tasks.js +16 -2
- package/dist/application/parsers/tasks.js.map +1 -1
- package/dist/application/parsers/toml.js +19 -0
- package/dist/application/parsers/toml.js.map +1 -0
- package/dist/application/paths-service.js +13 -16
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/persist-service.js +118 -5
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/plan-exec-batch-service.js +162 -22
- package/dist/application/plan-exec-batch-service.js.map +1 -1
- package/dist/application/plan-exec-decision-service.js +61 -12
- package/dist/application/plan-exec-decision-service.js.map +1 -1
- package/dist/application/plan-exec-plan-diff.js +105 -0
- package/dist/application/plan-exec-plan-diff.js.map +1 -0
- package/dist/application/plan-lint-service.js +2 -0
- package/dist/application/plan-lint-service.js.map +1 -1
- package/dist/application/plan-passes.js +41 -0
- package/dist/application/plan-passes.js.map +1 -0
- package/dist/application/preparation-receipts.js +58 -0
- package/dist/application/preparation-receipts.js.map +1 -0
- package/dist/application/project-md-upsert-service.js +191 -52
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.js +40 -10
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/artifacts.js +15 -7
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/bundles.js +52 -6
- package/dist/application/release-data/bundles.js.map +1 -1
- package/dist/application/release-data/common.js +2 -2
- package/dist/application/release-data/common.js.map +1 -1
- package/dist/application/release-data/rollback.js +7 -0
- package/dist/application/release-data/rollback.js.map +1 -0
- package/dist/application/release-data/sessions.js +2 -2
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/release-pass-ledger.js +1 -1
- package/dist/application/render/history-row.js +2 -0
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/render/project-block.js +28 -11
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/reseal-service.js +1 -0
- package/dist/application/reseal-service.js.map +1 -1
- package/dist/application/resume-service.js +55 -8
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/retirement/apply.js +25 -7
- package/dist/application/retirement/apply.js.map +1 -1
- package/dist/application/retirement/attribution.js +121 -48
- package/dist/application/retirement/attribution.js.map +1 -1
- package/dist/application/retirement/prepare.js +17 -11
- package/dist/application/retirement/prepare.js.map +1 -1
- package/dist/application/retirement/preview.js +2 -1
- package/dist/application/retirement/preview.js.map +1 -1
- package/dist/application/self/codex-plugin.js +1 -1
- package/dist/application/self/codex-plugin.js.map +1 -1
- package/dist/application/self/host-states.js +3 -3
- package/dist/application/self/host-states.js.map +1 -1
- package/dist/application/self/install-hooks.js +1 -1
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/mcp-config.js +19 -11
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/application/self/opencode-plugin.js +1 -0
- package/dist/application/self/opencode-plugin.js.map +1 -1
- package/dist/application/self/uninstall.js +1 -1
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/semantic-operation/protocol.js +66 -5
- package/dist/application/semantic-operation/protocol.js.map +1 -1
- package/dist/application/session-archive-service.js +113 -0
- package/dist/application/session-archive-service.js.map +1 -0
- package/dist/application/session-binding-service.js +35 -0
- package/dist/application/session-binding-service.js.map +1 -1
- package/dist/application/session-close-service.js +390 -54
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.js +97 -5
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-custody-recorder.js +15 -12
- package/dist/application/session-custody-recorder.js.map +1 -1
- package/dist/application/session-custody-service.js +1 -0
- package/dist/application/session-custody-service.js.map +1 -1
- package/dist/application/session-narrative.js +42 -12
- package/dist/application/session-narrative.js.map +1 -1
- package/dist/application/session-pause-service.js +46 -0
- package/dist/application/session-pause-service.js.map +1 -0
- package/dist/application/session-resolver.js +36 -11
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.js +134 -13
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/sessions-service.js +4 -0
- package/dist/application/sessions-service.js.map +1 -1
- package/dist/application/sessions-sweep-service.js +77 -0
- package/dist/application/sessions-sweep-service.js.map +1 -0
- package/dist/application/settle-service.js +3 -1
- package/dist/application/settle-service.js.map +1 -1
- package/dist/application/skills-resolver-service.js +1 -1
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/source-add-service.js +37 -0
- package/dist/application/source-add-service.js.map +1 -0
- package/dist/application/source-boundary-policy.js +97 -8
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/application/source-pipeline.js +68 -0
- package/dist/application/source-pipeline.js.map +1 -0
- package/dist/application/source-remove-service.js +15 -3
- package/dist/application/source-remove-service.js.map +1 -1
- package/dist/application/sources-service.js +71 -16
- package/dist/application/sources-service.js.map +1 -1
- package/dist/application/status-service.js +55 -5
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/unit-dependencies.js +100 -0
- package/dist/application/unit-dependencies.js.map +1 -0
- package/dist/application/unit-membership.js +37 -0
- package/dist/application/unit-membership.js.map +1 -0
- package/dist/application/unit-residue.js +72 -0
- package/dist/application/unit-residue.js.map +1 -0
- package/dist/application/visibility-doctor-service.js +66 -4
- package/dist/application/visibility-doctor-service.js.map +1 -1
- package/dist/application/working-branch-service.js +6 -0
- package/dist/application/working-branch-service.js.map +1 -1
- package/dist/application/workline-graph.js +1 -1
- package/dist/application/workline-graph.js.map +1 -1
- package/dist/application/workline-index-service.js +118 -17
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/workspace-commit-service.js +218 -0
- package/dist/application/workspace-commit-service.js.map +1 -0
- package/dist/application/workspace-init-service.js +64 -34
- package/dist/application/workspace-init-service.js.map +1 -1
- package/dist/application/workspace-local-config.js +90 -0
- package/dist/application/workspace-local-config.js.map +1 -0
- package/dist/application/workspace-materialization-service.js +52 -3
- package/dist/application/workspace-materialization-service.js.map +1 -1
- package/dist/application/workspace-migrate/apply.js +525 -4
- package/dist/application/workspace-migrate/apply.js.map +1 -1
- package/dist/application/workspace-migrate/markers.js +9 -6
- package/dist/application/workspace-migrate/markers.js.map +1 -1
- package/dist/application/workspace-migrate/plan.js +97 -5
- package/dist/application/workspace-migrate/plan.js.map +1 -1
- package/dist/application/workspace-move-service.js +270 -0
- package/dist/application/workspace-move-service.js.map +1 -0
- package/dist/application/workspace-untrack-service.js +28 -0
- package/dist/application/workspace-untrack-service.js.map +1 -0
- package/dist/application/worktree-service.js +654 -105
- package/dist/application/worktree-service.js.map +1 -1
- package/dist/cli/ascii.js +2 -0
- package/dist/cli/ascii.js.map +1 -1
- package/dist/cli/commands/add-source.js +38 -0
- package/dist/cli/commands/add-source.js.map +1 -0
- package/dist/cli/commands/amend.js +14 -3
- package/dist/cli/commands/amend.js.map +1 -1
- package/dist/cli/commands/capability.js +11 -0
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/designs.js +14 -5
- package/dist/cli/commands/designs.js.map +1 -1
- package/dist/cli/commands/dev-only.js +19 -6
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/doc-branch.js +184 -0
- package/dist/cli/commands/doc-branch.js.map +1 -0
- package/dist/cli/commands/doctor.js +5 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/export.js +78 -18
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/fix-git.js +89 -14
- package/dist/cli/commands/fix-git.js.map +1 -1
- package/dist/cli/commands/flow.js +120 -15
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/generate-launch.js +14 -2
- package/dist/cli/commands/generate-launch.js.map +1 -1
- package/dist/cli/commands/history-update.js +1 -1
- package/dist/cli/commands/history-update.js.map +1 -1
- package/dist/cli/commands/history.js +14 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/hook.js +15 -2
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/index.js +18 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/merge-state.js +2 -2
- package/dist/cli/commands/merge-state.js.map +1 -1
- package/dist/cli/commands/persist.js +6 -5
- package/dist/cli/commands/persist.js.map +1 -1
- package/dist/cli/commands/project-md-upsert.js +5 -3
- package/dist/cli/commands/project-md-upsert.js.map +1 -1
- package/dist/cli/commands/release-pass.js +3 -3
- package/dist/cli/commands/release-pass.js.map +1 -1
- package/dist/cli/commands/resume.js +12 -3
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/self.js +7 -2
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/session-close.js +64 -9
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.js +4 -2
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/session-pause.js +14 -0
- package/dist/cli/commands/session-pause.js.map +1 -0
- package/dist/cli/commands/sessions.js +16 -3
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/commands/set-branch.js +28 -4
- package/dist/cli/commands/set-branch.js.map +1 -1
- package/dist/cli/commands/set-edit-mode.js +20 -0
- package/dist/cli/commands/set-edit-mode.js.map +1 -0
- package/dist/cli/commands/set-pipeline.js +35 -0
- package/dist/cli/commands/set-pipeline.js.map +1 -0
- package/dist/cli/commands/sources.js +4 -0
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/status.js +35 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/unknown-flags.js +1 -0
- package/dist/cli/commands/unknown-flags.js.map +1 -1
- package/dist/cli/commands/visibility.js +1 -0
- package/dist/cli/commands/visibility.js.map +1 -1
- package/dist/cli/commands/workspace-commit.js +62 -0
- package/dist/cli/commands/workspace-commit.js.map +1 -0
- package/dist/cli/commands/workspace-init.js +39 -2
- package/dist/cli/commands/workspace-init.js.map +1 -1
- package/dist/cli/commands/workspace-migrate.js +31 -3
- package/dist/cli/commands/workspace-migrate.js.map +1 -1
- package/dist/cli/commands/workspace-move.js +42 -0
- package/dist/cli/commands/workspace-move.js.map +1 -0
- package/dist/cli/commands/worktree.js +4 -4
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/context-id.js +6 -0
- package/dist/cli/context-id.js.map +1 -1
- package/dist/cli/full-cli.js +555 -0
- package/dist/cli/full-cli.js.map +1 -0
- package/dist/cli/help-groups.js +75 -16
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/hook-stdin-cache.js +12 -0
- package/dist/cli/hook-stdin-cache.js.map +1 -0
- package/dist/cli/main.js +47 -453
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.js +4 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/app.js +1 -1
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/workspace-init-form.js +4 -1
- package/dist/cli/tui/components/workspace-init-form.js.map +1 -1
- package/dist/cli/tui/data/recommended-skills.js +2 -2
- package/dist/cli/tui/data/recommended-skills.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +6 -1
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +4 -3
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +7 -2
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/dist-manifest.json +4117 -0
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/decision-note.js +13 -0
- package/dist/domain/decision-note.js.map +1 -1
- package/dist/domain/design/artifact.js +22 -3
- package/dist/domain/design/artifact.js.map +1 -1
- package/dist/domain/design/capability.js +1 -0
- package/dist/domain/design/capability.js.map +1 -1
- package/dist/domain/design/expansion.js +1 -1
- package/dist/domain/design/expansion.js.map +1 -1
- package/dist/domain/design/maturity.js +16 -0
- package/dist/domain/design/maturity.js.map +1 -1
- package/dist/domain/design/reference.js +5 -0
- package/dist/domain/design/reference.js.map +1 -1
- package/dist/domain/doctor/operations.js +28 -2
- package/dist/domain/doctor/operations.js.map +1 -1
- package/dist/domain/effective-contract.js +3 -1
- package/dist/domain/effective-contract.js.map +1 -1
- package/dist/domain/elicitation.js +1 -1
- package/dist/domain/flow/answer.js +265 -130
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +193 -34
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/batch-review.js +65 -0
- package/dist/domain/flow/batch-review.js.map +1 -0
- package/dist/domain/flow/decision-schema.js +47 -0
- package/dist/domain/flow/decision-schema.js.map +1 -0
- package/dist/domain/flow/directive.js +16 -0
- package/dist/domain/flow/directive.js.map +1 -1
- package/dist/domain/flow/execution-result.js +91 -2
- package/dist/domain/flow/execution-result.js.map +1 -1
- package/dist/domain/flow/run-state.js +352 -24
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/flow/test-run-evidence.js +285 -0
- package/dist/domain/flow/test-run-evidence.js.map +1 -0
- package/dist/domain/flow/unchanged-phase.js +15 -0
- package/dist/domain/flow/unchanged-phase.js.map +1 -0
- package/dist/domain/harnesses.js +14 -5
- package/dist/domain/harnesses.js.map +1 -1
- package/dist/domain/isolation-unit.js +2 -2
- package/dist/domain/isolation-unit.js.map +1 -1
- package/dist/domain/lineage.js +7 -2
- package/dist/domain/lineage.js.map +1 -1
- package/dist/domain/obligation-correspondence.js +4 -2
- package/dist/domain/obligation-correspondence.js.map +1 -1
- package/dist/domain/plan-handoff.js +5 -0
- package/dist/domain/plan-handoff.js.map +1 -0
- package/dist/domain/proposal.js +18 -7
- package/dist/domain/proposal.js.map +1 -1
- package/dist/domain/reservation.js +5 -3
- package/dist/domain/reservation.js.map +1 -1
- package/dist/domain/retirement/proposal.js +1 -0
- package/dist/domain/retirement/proposal.js.map +1 -1
- package/dist/domain/session/custody.js +10 -6
- package/dist/domain/session/custody.js.map +1 -1
- package/dist/domain/session/narrative.js +4 -1
- package/dist/domain/session/narrative.js.map +1 -1
- package/dist/domain/skills.js +2 -0
- package/dist/domain/skills.js.map +1 -1
- package/dist/domain/sql-lexer.js +1 -1
- package/dist/domain/sql-lexer.js.map +1 -1
- package/dist/runtime/namespace-resolver.js +4 -0
- package/dist/runtime/namespace-resolver.js.map +1 -1
- package/dist/runtime/workline-marker.js +35 -8
- package/dist/runtime/workline-marker.js.map +1 -1
- package/dist/runtime/workspace-resolution.js +123 -0
- package/dist/runtime/workspace-resolution.js.map +1 -0
- package/package.json +5 -4
- package/skills/w/SKILL.md +3 -1
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +1 -1
- package/skills/w/artifacts/artifacts-core/SCRIPTS.rollback.sql +8 -0
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +4 -8
- package/skills/w/commands/export-diagrams.md +3 -3
- package/skills/w/commands/export-manuals.md +6 -6
- package/skills/w/commands/export-reports.md +3 -3
- package/skills/w/commands/export-scripts.md +5 -5
- package/skills/w/commands/fix-git.md +12 -13
- package/skills/w/commands/persist.md +2 -2
- package/skills/w/commands/plan-exec.md +4 -2
- package/skills/w/commands/spec-new.md +1 -1
- package/skills/w/commands/workspace-init.md +2 -0
- package/skills/w/context/MANIFEST.json +1 -1
- package/skills/w/exports/export-diagrams/EXPORT.md +3 -3
- package/skills/w/exports/export-manuals/EXPORT.md +14 -16
- package/skills/w/exports/export-reports/EXPORT.md +3 -3
- package/skills/w/exports/export-scripts/EXPORT.md +45 -21
- package/skills/w/harness/HARNESS.md +2 -2
- package/skills/w/hooks/hooks.template.json +6 -4
- package/skills/w/loops/CHASSIS.md +11 -5
- package/skills/w/loops/CODE-POLICIES.md +7 -4
- package/skills/w/loops/plan-exec-loop/LOOP.md +23 -22
- package/skills/w/loops/plan-new-loop/LOOP.md +23 -31
- package/skills/w/loops/plan-refine-loop/LOOP.md +8 -2
- package/skills/w/loops/quick-loop/LOOP.md +6 -5
- package/skills/w/modules/DESIGN-REFERENCES.md +9 -11
- package/skills/w/modules/PLAN-EXECUTION-BATCHES.md +4 -4
- package/skills/w/modules/SESSION-NUMBERING.md +2 -0
- package/skills/w/roles/design/CONTRACT.md +6 -4
- package/skills/w/roles/design/ROLE.md +4 -2
- package/skills/w/roles/git/ROLE.md +16 -9
- package/skills/w/roles/research/ROLE.md +1 -1
- package/skills/w/roles/sql/ROLE.md +16 -14
- package/skills/w/schemas/design/ui-screen.v1.schema.json +9 -0
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
import { GitCliAdapter } from "../adapters/git-cli.js";
|
|
2
|
+
import { NodeEnv } from "../adapters/node-env.js";
|
|
3
|
+
import { NodeFileSystem } from "../adapters/node-file-system.js";
|
|
4
|
+
import { NodeProcess } from "../adapters/node-process.js";
|
|
5
|
+
import { formatCommandError, formatCommandInvocation, formatCommandOutcome, formatTuiEvent, } from "../application/logging/log-events.js";
|
|
6
|
+
import { Logger } from "../application/logging/logger.js";
|
|
7
|
+
import { PathsService } from "../application/paths-service.js";
|
|
8
|
+
import { preparationMismatch, recordPreparation } from "../application/preparation-receipts.js";
|
|
9
|
+
import { resolveSkills } from "../application/skills-resolver-service.js";
|
|
10
|
+
import { MaterializingWorkspaceFileSystem } from "../application/workspace-materialization-service.js";
|
|
11
|
+
import { encodeToolResponse, toolFailure } from "../domain/database-tools.js";
|
|
12
|
+
import { redactSensitiveText, redactSensitiveValue } from "../domain/redaction.js";
|
|
13
|
+
import { RuntimeConfigService } from "../runtime/config-service.js";
|
|
14
|
+
import { DEFAULT_NAMESPACE, NamespaceResolver, WorklineDirectoryError, } from "../runtime/namespace-resolver.js";
|
|
15
|
+
import { DEFAULT_RUNTIME_CONFIG } from "../runtime/types.js";
|
|
16
|
+
import { readPackageVersion } from "../runtime/version.js";
|
|
17
|
+
import { WorkspaceResolutionError, registerResolvedWorkspace, resolveWorkspaceDirectory, } from "../runtime/workspace-resolution.js";
|
|
18
|
+
import { ALL_COMMANDS, commandDescribes } from "./commands/index.js";
|
|
19
|
+
import { gateFlags } from "./commands/unknown-flags.js";
|
|
20
|
+
import { planDispatch, resolveGlobalAlias } from "./dispatch-plan.js";
|
|
21
|
+
import { commandHelpText, globalHelpText } from "./help-groups.js";
|
|
22
|
+
import { ASCII_ENV, resolveOutputMode } from "./output-mode.js";
|
|
23
|
+
import { parseArgv } from "./parser.js";
|
|
24
|
+
import { CommandRegistry } from "./registry.js";
|
|
25
|
+
import { emitError, fail, forPerson, formatArgvError, formatUnknownCommand, redactErrorEnvelope, renderHumanProjection, renderRaw, useAsciiStderr, writeStderr, writeStdout, } from "./render.js";
|
|
26
|
+
import { runTui } from "./tui/run.js";
|
|
27
|
+
async function run(argv) {
|
|
28
|
+
const fs = new NodeFileSystem();
|
|
29
|
+
const env = new NodeEnv();
|
|
30
|
+
const proc = new NodeProcess();
|
|
31
|
+
const git = new GitCliAdapter(proc);
|
|
32
|
+
const prepared = prepareInvocation(argv);
|
|
33
|
+
if (typeof prepared === "number")
|
|
34
|
+
return prepared;
|
|
35
|
+
const initialized = await initializeCliContext(prepared.parsed, fs, env, proc, git);
|
|
36
|
+
if (initialized === null)
|
|
37
|
+
return prepared.parsed.command === "hook" ? 0 : transportExitCode(prepared.parsed);
|
|
38
|
+
const exit = await dispatchParsedCommand({
|
|
39
|
+
...prepared,
|
|
40
|
+
ctx: initialized.ctx,
|
|
41
|
+
registry: commandRegistry(),
|
|
42
|
+
workspaceFs: initialized.workspaceFs,
|
|
43
|
+
});
|
|
44
|
+
const warning = initialized.ctx.directory
|
|
45
|
+
? await registerResolvedWorkspace(fs, env.homeDir(), initialized.ctx.directory)
|
|
46
|
+
: null;
|
|
47
|
+
if (warning)
|
|
48
|
+
writeStderr(warning);
|
|
49
|
+
return exit;
|
|
50
|
+
}
|
|
51
|
+
function prepareInvocation(argv) {
|
|
52
|
+
const parsed = parseCli(argv);
|
|
53
|
+
if (parsed === null)
|
|
54
|
+
return rawTransportExitCode(argv);
|
|
55
|
+
const hasHelp = parsed.flags.has("--help") || parsed.flags.has("-h");
|
|
56
|
+
if (isMcpStdioInvocation(parsed) && (parsed.flags.has("--version") || hasHelp)) {
|
|
57
|
+
process.stderr.write("aw mcp: --version y --help no son válidos para un servidor stdio\n");
|
|
58
|
+
return 2;
|
|
59
|
+
}
|
|
60
|
+
// Global ONLY when nothing else was asked. With a command present `--version`
|
|
61
|
+
// belongs to that command — `release-pass` names one on every verb — and
|
|
62
|
+
// answering with the CLI's own version would silently swallow the invocation.
|
|
63
|
+
if (parsed.command === undefined && parsed.flags.has("--version")) {
|
|
64
|
+
writeStdout(`${readPackageVersion()}\n`);
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
const isTTY = process.stdout.isTTY === true;
|
|
68
|
+
const output = resolveOutputMode(parsed, isTTY, process.env[ASCII_ENV]);
|
|
69
|
+
if (output.ok) {
|
|
70
|
+
useAsciiStderr(output.mode.ascii);
|
|
71
|
+
return { parsed, isTTY, hasHelp, output: output.mode };
|
|
72
|
+
}
|
|
73
|
+
return outputModeFailure(parsed, output.message);
|
|
74
|
+
}
|
|
75
|
+
function rawTransportExitCode(argv) {
|
|
76
|
+
return looksLikeMcpStdioInvocation(argv) || looksLikeToolInvocation(argv) ? 2 : 1;
|
|
77
|
+
}
|
|
78
|
+
function outputModeFailure(parsed, message) {
|
|
79
|
+
if (parsed.command === "tool") {
|
|
80
|
+
emitToolEarlyFailure("INVALID_INPUT", message);
|
|
81
|
+
return 2;
|
|
82
|
+
}
|
|
83
|
+
if (isMcpStdioInvocation(parsed)) {
|
|
84
|
+
process.stderr.write("aw mcp: argumentos de salida inválidos para un servidor stdio\n");
|
|
85
|
+
return 2;
|
|
86
|
+
}
|
|
87
|
+
emitError(formatArgvError(message));
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
function commandRegistry() {
|
|
91
|
+
// ALL_COMMANDS (commands/index.ts) is the single source of truth for which
|
|
92
|
+
// commands exist; its order drives the grouped `--help` listing.
|
|
93
|
+
const registry = new CommandRegistry();
|
|
94
|
+
for (const command of ALL_COMMANDS)
|
|
95
|
+
registry.register(command);
|
|
96
|
+
return registry;
|
|
97
|
+
}
|
|
98
|
+
async function initializeCliContext(parsed, fs, env, proc, git) {
|
|
99
|
+
const directory = await resolveWorklineDirectory(new NamespaceResolver(fs, env), parsed, fs, env);
|
|
100
|
+
if (directory === null)
|
|
101
|
+
return null;
|
|
102
|
+
const warning = await registerResolvedWorkspace(fs, env.homeDir(), directory);
|
|
103
|
+
if (warning)
|
|
104
|
+
writeStderr(warning);
|
|
105
|
+
const namespace = { namespace: directory.namespace, source: directory.namespaceSource };
|
|
106
|
+
const paths = new PathsService(namespace.namespace, env.homeDir(), directory.root);
|
|
107
|
+
const workspaceFs = new MaterializingWorkspaceFileSystem(fs, paths);
|
|
108
|
+
const standaloneTransport = parsed.command === "tool" || isMcpStdioInvocation(parsed);
|
|
109
|
+
const runtime = standaloneTransport
|
|
110
|
+
? defaultStandaloneRuntime()
|
|
111
|
+
: await new RuntimeConfigService(fs, env, paths).resolveRuntime();
|
|
112
|
+
const skills = standaloneTransport
|
|
113
|
+
? {}
|
|
114
|
+
: (await resolveSkills(fs, paths)).skills;
|
|
115
|
+
return {
|
|
116
|
+
workspaceFs,
|
|
117
|
+
ctx: {
|
|
118
|
+
fs: workspaceFs,
|
|
119
|
+
rawFs: fs,
|
|
120
|
+
env,
|
|
121
|
+
git,
|
|
122
|
+
process: proc,
|
|
123
|
+
runtime,
|
|
124
|
+
namespace,
|
|
125
|
+
directory,
|
|
126
|
+
paths,
|
|
127
|
+
skills,
|
|
128
|
+
logger: new Logger({
|
|
129
|
+
fs,
|
|
130
|
+
paths,
|
|
131
|
+
enabled: !isStrictReadCommand(parsed),
|
|
132
|
+
}),
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function defaultStandaloneRuntime() {
|
|
137
|
+
return {
|
|
138
|
+
packageName: DEFAULT_RUNTIME_CONFIG.packageName,
|
|
139
|
+
binName: DEFAULT_RUNTIME_CONFIG.binName,
|
|
140
|
+
source: "default",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function transportExitCode(parsed) {
|
|
144
|
+
return parsed.command === "tool" || isMcpStdioInvocation(parsed) ? 2 : 1;
|
|
145
|
+
}
|
|
146
|
+
function parseCli(argv) {
|
|
147
|
+
try {
|
|
148
|
+
return parseArgv(argv);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
if (looksLikeMcpStdioInvocation(argv)) {
|
|
152
|
+
process.stderr.write("aw mcp: argumentos del servidor stdio no son válidos\n");
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
if (looksLikeToolInvocation(argv)) {
|
|
156
|
+
emitToolEarlyFailure("INVALID_INPUT", "Los argumentos de tool no son válidos.");
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
emitError(formatArgvError(err.message));
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async function resolveWorklineDirectory(resolver, parsed, fs, env) {
|
|
164
|
+
try {
|
|
165
|
+
const directory = await resolver.resolveDirectory(parsed.values.get("namespace"));
|
|
166
|
+
if (parsed.command === "workspace-init")
|
|
167
|
+
return directory;
|
|
168
|
+
const bypass = parsed.command === "tool" ||
|
|
169
|
+
parsed.command === "self" ||
|
|
170
|
+
parsed.command === "context-budget" ||
|
|
171
|
+
isMcpStdioInvocation(parsed) ||
|
|
172
|
+
parsed.flags.has("--help") ||
|
|
173
|
+
parsed.flags.has("-h") ||
|
|
174
|
+
parsed.command === undefined;
|
|
175
|
+
try {
|
|
176
|
+
return await resolveWorkspaceDirectory(fs, directory, env.cwd(), env.homeDir(), parsed.values.get("workspace"));
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof WorkspaceResolutionError && (bypass || parsed.command === "hook")) {
|
|
180
|
+
if (parsed.command === "hook") {
|
|
181
|
+
writeStderr(error.message);
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
return { ...directory, root: env.cwd(), materialized: false };
|
|
185
|
+
}
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
if (err instanceof WorkspaceResolutionError) {
|
|
191
|
+
if (parsed.command === "hook") {
|
|
192
|
+
writeStderr(err.message);
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
emitError({ code: err.code, message: err.message, details: { roots: err.roots } });
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
if (!(err instanceof WorklineDirectoryError)) {
|
|
199
|
+
if (parsed.command === "tool") {
|
|
200
|
+
emitToolEarlyFailure("TOOL_RUNTIME_FAILED", "La tool no pudo preparar su entorno.");
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
if (isMcpStdioInvocation(parsed)) {
|
|
204
|
+
process.stderr.write("aw mcp: no se pudo preparar el servidor stdio\n");
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
throw err;
|
|
208
|
+
}
|
|
209
|
+
if (parsed.command === "tool") {
|
|
210
|
+
emitToolEarlyFailure("WORKLINE_NAMESPACE_AMBIGUOUS", "No se pudo resolver el namespace de la tool.");
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
if (isMcpStdioInvocation(parsed)) {
|
|
214
|
+
process.stderr.write("aw mcp: no se pudo resolver el namespace del servidor stdio\n");
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
emitError({
|
|
218
|
+
code: err.code,
|
|
219
|
+
message: err.message,
|
|
220
|
+
details: { root: err.root, namespaces: err.namespaces },
|
|
221
|
+
});
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function emitToolEarlyFailure(code, message) {
|
|
226
|
+
writeStdout(encodeToolResponse(toolFailure(code, message)));
|
|
227
|
+
}
|
|
228
|
+
function looksLikeToolInvocation(argv) {
|
|
229
|
+
return !looksLikeMcpStdioInvocation(argv) && firstCommandToken(argv) === "tool";
|
|
230
|
+
}
|
|
231
|
+
function looksLikeMcpStdioInvocation(argv) {
|
|
232
|
+
const index = argv.indexOf("mcp");
|
|
233
|
+
if (index < 0)
|
|
234
|
+
return false;
|
|
235
|
+
const subcommand = argv[index + 1];
|
|
236
|
+
return subcommand === "serve" || subcommand === "serve-db" || subcommand === "dbhub";
|
|
237
|
+
}
|
|
238
|
+
function firstCommandToken(argv) {
|
|
239
|
+
const globalOptionsWithValue = new Set([
|
|
240
|
+
"--namespace",
|
|
241
|
+
"--plugin-root",
|
|
242
|
+
"--plugin-version",
|
|
243
|
+
"--compat",
|
|
244
|
+
// `tool` always renders its own raw JSON, but this global projection flag
|
|
245
|
+
// can precede it. Skip its value while detecting a parse-time tool error so
|
|
246
|
+
// the CLI never falls back to the generic `{ ok, error }` envelope.
|
|
247
|
+
"--format",
|
|
248
|
+
"--workspace",
|
|
249
|
+
]);
|
|
250
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
251
|
+
const token = argv[index];
|
|
252
|
+
if (token === undefined)
|
|
253
|
+
return undefined;
|
|
254
|
+
if (globalOptionsWithValue.has(token)) {
|
|
255
|
+
index += 1;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (token.startsWith("--namespace=") ||
|
|
259
|
+
token.startsWith("--workspace=") ||
|
|
260
|
+
token.startsWith("--plugin-"))
|
|
261
|
+
continue;
|
|
262
|
+
if (token.startsWith("-"))
|
|
263
|
+
continue;
|
|
264
|
+
return token;
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
function isMcpStdioInvocation(parsed) {
|
|
269
|
+
return (parsed.command === "mcp" &&
|
|
270
|
+
(parsed.rest[0] === "serve" || parsed.rest[0] === "serve-db" || parsed.rest[0] === "dbhub"));
|
|
271
|
+
}
|
|
272
|
+
async function dispatchParsedCommand(input) {
|
|
273
|
+
const { parsed, ctx, registry, isTTY, hasHelp, output, workspaceFs } = input;
|
|
274
|
+
// The decision — menu, help or which command, alias included — belongs to
|
|
275
|
+
// `planDispatch`, which is importable and therefore testable. What is left
|
|
276
|
+
// here is carrying it out: no ordering and no command name of its own.
|
|
277
|
+
const plan = planDispatch({ command: parsed.command, flags: parsed.flags, isTTY, hasHelp });
|
|
278
|
+
if (plan.kind === "menu")
|
|
279
|
+
return await runInteractiveMenu(ctx, registry, output);
|
|
280
|
+
if (plan.kind === "global-help") {
|
|
281
|
+
printHelp(registry.list(), output);
|
|
282
|
+
return 0;
|
|
283
|
+
}
|
|
284
|
+
const command = registry.resolve(plan.name);
|
|
285
|
+
if (command === undefined) {
|
|
286
|
+
emitError(formatUnknownCommand(plan.name, registry.list()));
|
|
287
|
+
return 1;
|
|
288
|
+
}
|
|
289
|
+
// `<command> --help` shows the subcommand's help (its describe), not the global help.
|
|
290
|
+
if (plan.help) {
|
|
291
|
+
printCommandHelp(command, output, parsed.rest[0]);
|
|
292
|
+
return 0;
|
|
293
|
+
}
|
|
294
|
+
return await executeCommand(parsed, ctx, command, output, workspaceFs);
|
|
295
|
+
}
|
|
296
|
+
async function runInteractiveMenu(ctx, registry, output) {
|
|
297
|
+
await ctx.logger?.info(formatTuiEvent("open"));
|
|
298
|
+
const tuiResult = await runTui(readPackageVersion(), ctx);
|
|
299
|
+
return tuiResult.kind === "menu-action"
|
|
300
|
+
? await dispatchMenuAction(tuiResult.action, registry, output)
|
|
301
|
+
: tuiResult.exitCode;
|
|
302
|
+
}
|
|
303
|
+
async function executeCommand(parsed, ctx, command, output, workspaceFs) {
|
|
304
|
+
await ctx.logger?.info(formatCommandInvocation(parsed));
|
|
305
|
+
// Before `execute`, so a flag the command would ignore can never leave it
|
|
306
|
+
// waiting on a stdin its caller meant to replace.
|
|
307
|
+
const gate = gateFlags(command, parsed);
|
|
308
|
+
if (gate.kind === "refuse") {
|
|
309
|
+
await ctx.logger?.error(formatCommandOutcome(command.name, gate.result.exitCode));
|
|
310
|
+
emit(gate.result, command, output);
|
|
311
|
+
return gate.result.exitCode;
|
|
312
|
+
}
|
|
313
|
+
if (gate.notice !== undefined)
|
|
314
|
+
writeStderr(gate.notice);
|
|
315
|
+
try {
|
|
316
|
+
const approval = parsed.values.get("approval");
|
|
317
|
+
if (approval && WORKSPACE_SEALED_COMMANDS.has(command.name)) {
|
|
318
|
+
const mismatch = await preparationMismatch(ctx.paths, command.name, approval);
|
|
319
|
+
if (mismatch) {
|
|
320
|
+
const refused = fail("WORKSPACE_MISMATCH", mismatch);
|
|
321
|
+
emit(refused, command, output);
|
|
322
|
+
return refused.exitCode;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const commandCtx = commandOwnsMaterializationReceipt(command.name)
|
|
326
|
+
? { ...ctx, fs: ctx.rawFs ?? ctx.fs }
|
|
327
|
+
: ctx;
|
|
328
|
+
const result = attachMaterializationReceipt(await command.execute(parsed, commandCtx), workspaceFs);
|
|
329
|
+
if (result.ok &&
|
|
330
|
+
WORKSPACE_SEALED_COMMANDS.has(command.name) &&
|
|
331
|
+
result.data &&
|
|
332
|
+
typeof result.data === "object") {
|
|
333
|
+
const data = result.data;
|
|
334
|
+
const digest = data.approval_digest ??
|
|
335
|
+
data.digest ??
|
|
336
|
+
(data.proposal && typeof data.proposal === "object"
|
|
337
|
+
? data.proposal.digest
|
|
338
|
+
: undefined);
|
|
339
|
+
if (typeof digest === "string" && digest.length > 0 && parsed.rest[0] !== "apply") {
|
|
340
|
+
try {
|
|
341
|
+
await recordPreparation(ctx.rawFs ?? ctx.fs, ctx.paths, command.name, digest);
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
writeStderr(`No se pudo guardar el recibo de preparación: ${String(error)}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
await ctx.logger?.log(result.ok ? "info" : "error", formatCommandOutcome(command.name, result.exitCode));
|
|
349
|
+
emit(result, command, output, adoptionNotice(command, workspaceFs));
|
|
350
|
+
return result.exitCode;
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
await ctx.logger?.error(formatCommandError(command.name, err));
|
|
354
|
+
if (isMcpStdioInvocation(parsed)) {
|
|
355
|
+
process.stderr.write("aw mcp: el servidor stdio no pudo iniciar\n");
|
|
356
|
+
return 1;
|
|
357
|
+
}
|
|
358
|
+
const message = redactSensitiveText(err instanceof Error ? err.message : String(err));
|
|
359
|
+
emit(fail("UNHANDLED", message), command, output, adoptionNotice(command, workspaceFs));
|
|
360
|
+
return 1;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const WORKSPACE_SEALED_COMMANDS = new Set([
|
|
364
|
+
"persist",
|
|
365
|
+
"export-scripts",
|
|
366
|
+
"export-diagrams",
|
|
367
|
+
"export-reports",
|
|
368
|
+
"export-manuals",
|
|
369
|
+
"capability",
|
|
370
|
+
"reseal",
|
|
371
|
+
"settle",
|
|
372
|
+
"claims",
|
|
373
|
+
"flow",
|
|
374
|
+
"discard",
|
|
375
|
+
"reset",
|
|
376
|
+
"doctor",
|
|
377
|
+
"fix-git",
|
|
378
|
+
]);
|
|
379
|
+
/** Services whose public output already declares the exact first-write effects. */
|
|
380
|
+
function commandOwnsMaterializationReceipt(command) {
|
|
381
|
+
return command === "workspace-init" || command === "session-create";
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* The line that says out loud which path Workline just adopted, or `undefined`.
|
|
385
|
+
*
|
|
386
|
+
* The receipt already travelled in `result.data`, and in a terminal nobody reads
|
|
387
|
+
* that: the human projection is each command's own `renderHuman`, and the only
|
|
388
|
+
* one that printed the adoption was `workspace-init` — the command nobody needs
|
|
389
|
+
* to be told by. So adopting a directory was silent exactly where it matters,
|
|
390
|
+
* and a command launched one folder down from a real workspace could found a
|
|
391
|
+
* second one inside it without a word. It is emitted once, by the dispatcher, so
|
|
392
|
+
* no command has to remember; the two that declare it themselves are skipped.
|
|
393
|
+
*/
|
|
394
|
+
function adoptionNotice(command, fs) {
|
|
395
|
+
if (commandOwnsMaterializationReceipt(command.name))
|
|
396
|
+
return undefined;
|
|
397
|
+
const materialization = fs.materialization();
|
|
398
|
+
if (materialization === undefined || !materialization.materialized)
|
|
399
|
+
return undefined;
|
|
400
|
+
return `Workline adoptó ${materialization.root} como workspace (namespace ${materialization.namespace}).`;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* A generic workspace writer still needs to tell its caller that it created the
|
|
404
|
+
* runtime marker. Preserve every typed command payload and add the forward
|
|
405
|
+
* receipt only when the payload is an object and does not already own that key.
|
|
406
|
+
*/
|
|
407
|
+
function attachMaterializationReceipt(result, fs) {
|
|
408
|
+
const materialization = fs.materialization();
|
|
409
|
+
if (materialization === undefined ||
|
|
410
|
+
!materialization.materialized ||
|
|
411
|
+
result.data === undefined ||
|
|
412
|
+
result.data === null ||
|
|
413
|
+
Array.isArray(result.data) ||
|
|
414
|
+
typeof result.data !== "object" ||
|
|
415
|
+
"materialization" in result.data) {
|
|
416
|
+
return result;
|
|
417
|
+
}
|
|
418
|
+
return { ...result, data: { ...result.data, materialization } };
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* El comando que la invocación va a correr de verdad: el explícito, o el que
|
|
422
|
+
* resuelve un alias global.
|
|
423
|
+
*
|
|
424
|
+
* `aw --doctor` no lleva comando —el alias lo resuelve `planDispatch` más
|
|
425
|
+
* tarde—, así que juzgar sólo `parsed.command` dejaba justo a esa superficie
|
|
426
|
+
* (la que la spec pinta como «corrélo a ciegas») fuera de la exención de sólo
|
|
427
|
+
* lectura y con la bitácora habilitada.
|
|
428
|
+
*/
|
|
429
|
+
function effectiveCommandName(parsed) {
|
|
430
|
+
if (parsed.command !== undefined)
|
|
431
|
+
return parsed.command;
|
|
432
|
+
return resolveGlobalAlias({
|
|
433
|
+
command: parsed.command,
|
|
434
|
+
flags: parsed.flags,
|
|
435
|
+
isTTY: false,
|
|
436
|
+
hasHelp: false,
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Comandos que prometen NO tocar el disco de la persona, ni siquiera su bitácora.
|
|
441
|
+
*
|
|
442
|
+
* `doctor` está acá porque su contrato es exactamente ese: la fase diagnóstica se
|
|
443
|
+
* corre a ciegas y no deja rastro. Con el logger habilitado, cada `aw doctor`
|
|
444
|
+
* creaba `~/.workflow/logs/` y le anexaba la invocación y el resultado, así que
|
|
445
|
+
* la promesa era falsa en la superficie real aunque ningún proveedor escribiera.
|
|
446
|
+
*
|
|
447
|
+
* Pero la exención es del INFORME, no del comando: `doctor apply` reescribe la
|
|
448
|
+
* configuración de los hosts y corre programas, y `doctor prepare` es el paso que
|
|
449
|
+
* produce el digest que autoriza eso. Eximirlos por compartir el nombre dejaba sin
|
|
450
|
+
* rastro justamente las dos invocaciones que hay que poder auditar después. Por
|
|
451
|
+
* eso el subverbo cuenta: exento cuando `aw doctor` se corre a secas, registrado
|
|
452
|
+
* en cuanto hay uno.
|
|
453
|
+
*/
|
|
454
|
+
function isStrictReadCommand(parsed) {
|
|
455
|
+
const command = effectiveCommandName(parsed);
|
|
456
|
+
// `host-memory` reads other hosts' private memory: its trace stays out of the log too.
|
|
457
|
+
if (command === "status" || command === "resume" || command === "host-memory")
|
|
458
|
+
return true;
|
|
459
|
+
return command === "doctor" && parsed.rest.length === 0;
|
|
460
|
+
}
|
|
461
|
+
function emit(result, command, mode, adopted) {
|
|
462
|
+
if (result.suppressOutput)
|
|
463
|
+
return;
|
|
464
|
+
// Before anything the command prints: the adoption is the frame its output
|
|
465
|
+
// happened in, and it reads as an afterthought underneath a JSON blob.
|
|
466
|
+
if (adopted !== undefined && mode.format === "human" && command.renderRawJson === undefined) {
|
|
467
|
+
writeStdout(forPerson(`${adopted}\n`, mode));
|
|
468
|
+
}
|
|
469
|
+
if (command.renderRawJson !== undefined) {
|
|
470
|
+
writeStdout(command.renderRawJson(result));
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
if (result.ok && result.data === undefined) {
|
|
474
|
+
// Command already wrote stdout itself (custom rendering); nothing more to emit.
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
if (mode.format === "human") {
|
|
478
|
+
const rendered = renderHumanProjection(result, command, mode);
|
|
479
|
+
if (rendered !== undefined) {
|
|
480
|
+
writeStdout(rendered);
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
emitJson(result);
|
|
485
|
+
}
|
|
486
|
+
function emitJson(result) {
|
|
487
|
+
if (result.ok) {
|
|
488
|
+
writeStdout(renderRaw(result.data));
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
const payload = {
|
|
492
|
+
ok: result.ok,
|
|
493
|
+
error: redactErrorEnvelope(result.error ?? { code: "UNKNOWN", message: "el comando falló sin detallar la causa" }),
|
|
494
|
+
};
|
|
495
|
+
if (result.data !== undefined)
|
|
496
|
+
payload.data = redactSensitiveValue(result.data);
|
|
497
|
+
writeStdout(renderRaw(payload));
|
|
498
|
+
}
|
|
499
|
+
async function dispatchMenuAction(action, registry, output) {
|
|
500
|
+
// Each action re-enters `run` with a fresh argv, which resolves the output
|
|
501
|
+
// mode again: the mark the menu was opened with has to travel with it.
|
|
502
|
+
const mark = output.ascii ? ["--ascii"] : [];
|
|
503
|
+
switch (action) {
|
|
504
|
+
case "doctor":
|
|
505
|
+
return await run(["self", "doctor", ...mark]);
|
|
506
|
+
case "install-skill":
|
|
507
|
+
return await run(["self", "install-skill", "--force", ...mark]);
|
|
508
|
+
case "mcp":
|
|
509
|
+
return await run(["self", "mcp", ...mark]);
|
|
510
|
+
case "update":
|
|
511
|
+
// The TUI menu selection is already the confirmation; --yes
|
|
512
|
+
// suppresses the redundant inquirer prompt (which also races with
|
|
513
|
+
// ink's stdin teardown and can phantom-cancel).
|
|
514
|
+
return await run(["self", "update", "--yes", ...mark]);
|
|
515
|
+
case "workspace-init": {
|
|
516
|
+
// The fallback pre-materializes the current implicit root. Source
|
|
517
|
+
// configuration remains the Project tab's explicit secondary action.
|
|
518
|
+
return await run(["workspace-init", ...mark]);
|
|
519
|
+
}
|
|
520
|
+
case "help":
|
|
521
|
+
printHelp(registry.list(), output);
|
|
522
|
+
return 0;
|
|
523
|
+
case "exit":
|
|
524
|
+
return 0;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
function printHelp(commands, mode) {
|
|
528
|
+
writeStdout(forPerson(globalHelpText(commands, commandDescribes(), DEFAULT_NAMESPACE), mode));
|
|
529
|
+
}
|
|
530
|
+
function printCommandHelp(command, mode, action) {
|
|
531
|
+
writeStdout(forPerson(`${commandHelpText(command, action)}\n`, mode));
|
|
532
|
+
}
|
|
533
|
+
// Do not force-exit after writing JSON: a piped 4 MiB tool response may still
|
|
534
|
+
// be draining under stdout backpressure. `exitCode` preserves the contract
|
|
535
|
+
// while allowing Node to flush stdio naturally.
|
|
536
|
+
void run(process.argv.slice(2))
|
|
537
|
+
.then((code) => {
|
|
538
|
+
process.exitCode = code;
|
|
539
|
+
})
|
|
540
|
+
.catch(() => {
|
|
541
|
+
const argv = process.argv.slice(2);
|
|
542
|
+
if (looksLikeMcpStdioInvocation(argv)) {
|
|
543
|
+
process.stderr.write("aw mcp: el servidor stdio no pudo iniciar\n");
|
|
544
|
+
process.exitCode = 2;
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
if (looksLikeToolInvocation(argv)) {
|
|
548
|
+
emitToolEarlyFailure("TOOL_RUNTIME_FAILED", "La tool no pudo preparar su entorno.");
|
|
549
|
+
process.exitCode = 1;
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
process.stderr.write("agent-workflow: fallo fatal no recuperable\n");
|
|
553
|
+
process.exitCode = 1;
|
|
554
|
+
});
|
|
555
|
+
//# sourceMappingURL=full-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-cli.js","sourceRoot":"","sources":["../../src/cli/full-cli.ts"],"names":[],"mappings":"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"}
|