@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
|
@@ -13,6 +13,8 @@ import { doctorFindingId } from "../../domain/doctor/model.js";
|
|
|
13
13
|
* a directory that is not a workspace has not misconfigured anything.
|
|
14
14
|
*/
|
|
15
15
|
import { harnessForMcpHost } from "../../domain/harnesses.js";
|
|
16
|
+
import { isWorkingBranch, resolveSourceBranches } from "../branch-resolver.js";
|
|
17
|
+
import { readWorkspaceBlock } from "../parsers/project-block.js";
|
|
16
18
|
import { runVisibilityDoctor } from "../visibility-doctor-service.js";
|
|
17
19
|
import { coverage } from "./types.js";
|
|
18
20
|
const CATEGORY = "workspace-visibility";
|
|
@@ -66,9 +68,54 @@ export const visibilityProvider = {
|
|
|
66
68
|
const uncovered = input.hosts
|
|
67
69
|
.filter((host) => !covered.has(host.host))
|
|
68
70
|
.map((host) => coverage(CATEGORY, host.host, "not-applicable", `la visibilidad multiroot no se declara para ${host.label}: sólo Claude Code, Codex y Warp registran rutas del workspace`));
|
|
71
|
+
findings.push(...(await prodUpstreamFindings(input)));
|
|
69
72
|
return { coverage: [...dedupe(coverages), ...uncovered], findings };
|
|
70
73
|
},
|
|
71
74
|
};
|
|
75
|
+
/** Each local work branch tracking PROD is a warning, never an automatic git edit. */
|
|
76
|
+
async function prodUpstreamFindings(input) {
|
|
77
|
+
const block = await readWorkspaceBlock(input.ctx.fs, input.workspaceDir, input.ctx.paths.blockMarkers());
|
|
78
|
+
if (block === null)
|
|
79
|
+
return [];
|
|
80
|
+
const findings = [];
|
|
81
|
+
for (const source of block.fuentes) {
|
|
82
|
+
// Portable sources without a resolved local path cannot have local branch data.
|
|
83
|
+
const path = source.path;
|
|
84
|
+
if (path === null || !(await input.ctx.git.isGitRepo(path)))
|
|
85
|
+
continue;
|
|
86
|
+
const roles = resolveSourceBranches(source, block);
|
|
87
|
+
for (const branch of await input.ctx.git.localBranches(path)) {
|
|
88
|
+
if (!isWorkingBranch(branch, roles))
|
|
89
|
+
continue;
|
|
90
|
+
const upstream = await input.ctx.git.upstreamBranch(path, branch);
|
|
91
|
+
if (!upstream?.startsWith("refs/remotes/"))
|
|
92
|
+
continue;
|
|
93
|
+
const [, ...tracked] = upstream.slice("refs/remotes/".length).split("/");
|
|
94
|
+
if (tracked.join("/") !== roles.prod)
|
|
95
|
+
continue;
|
|
96
|
+
findings.push({
|
|
97
|
+
id: doctorFindingId("workspace", CATEGORY, `upstream:${source.alias}:${branch}`),
|
|
98
|
+
host: "workspace",
|
|
99
|
+
category: CATEGORY,
|
|
100
|
+
resource: { kind: "rama", name: `${source.alias}/${branch}`, locator: path },
|
|
101
|
+
state: "warning",
|
|
102
|
+
summary: `${source.alias}: la rama ${branch} rastrea PROD (${upstream})`,
|
|
103
|
+
impact: "un git pull sin argumentos puede traer PROD a la rama de trabajo",
|
|
104
|
+
evidence: [`rama de PROD: ${roles.prod}`, `upstream de ${branch}: ${upstream}`],
|
|
105
|
+
ownership: "n/a",
|
|
106
|
+
remediation: {
|
|
107
|
+
kind: "manual",
|
|
108
|
+
action: null,
|
|
109
|
+
guidance: [`git -C ${shellQuote(path)} branch --unset-upstream ${shellQuote(branch)}`],
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return findings;
|
|
115
|
+
}
|
|
116
|
+
function shellQuote(value) {
|
|
117
|
+
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
118
|
+
}
|
|
72
119
|
function driftFindings(report) {
|
|
73
120
|
const resource = `${report.scope}:visibilidad`;
|
|
74
121
|
const host = catalogHost(report.host);
|
|
@@ -83,6 +130,19 @@ function driftFindings(report) {
|
|
|
83
130
|
ownership: "ours",
|
|
84
131
|
};
|
|
85
132
|
const findings = [];
|
|
133
|
+
if (report.status === "source-path-missing") {
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
...base,
|
|
137
|
+
id: doctorFindingId(host, CATEGORY, `${resource}:fuente-sin-ruta`),
|
|
138
|
+
state: "warning",
|
|
139
|
+
summary: `${host} no puede verificar la visibilidad: falta una ruta de fuente en este host`,
|
|
140
|
+
impact: "la comparación de rutas es incompleta; ninguna ruta registrada se considera sobrante",
|
|
141
|
+
evidence: [report.detail ?? "ruta de fuente ausente"],
|
|
142
|
+
remediation: { kind: "manual", action: null, guidance: ["aw add-source <alias>:<ruta>"] },
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
}
|
|
86
146
|
if (report.missing.length > 0) {
|
|
87
147
|
findings.push({
|
|
88
148
|
...base,
|
|
@@ -92,7 +152,10 @@ function driftFindings(report) {
|
|
|
92
152
|
impact: "el host no ve esas fuentes: sus lecturas y ediciones ahí fallan",
|
|
93
153
|
evidence: report.missing.map((path) => `falta: ${path}`),
|
|
94
154
|
remediation: { kind: "manual", action: null, guidance: ["aw attach-multiroot"] },
|
|
95
|
-
proposal: {
|
|
155
|
+
proposal: {
|
|
156
|
+
op: "multiroot.attach",
|
|
157
|
+
args: { scope: report.scope, host: report.host, paths: JSON.stringify(report.missing) },
|
|
158
|
+
},
|
|
96
159
|
});
|
|
97
160
|
}
|
|
98
161
|
if (report.extra.length > 0) {
|
|
@@ -104,7 +167,10 @@ function driftFindings(report) {
|
|
|
104
167
|
impact: "el host ve directorios fuera del workspace declarado",
|
|
105
168
|
evidence: report.extra.map((path) => `sobra: ${path}`),
|
|
106
169
|
remediation: { kind: "manual", action: null, guidance: ["aw detach-multiroot"] },
|
|
107
|
-
proposal: {
|
|
170
|
+
proposal: {
|
|
171
|
+
op: "multiroot.detach",
|
|
172
|
+
args: { scope: report.scope, host: report.host, paths: JSON.stringify(report.extra) },
|
|
173
|
+
},
|
|
108
174
|
});
|
|
109
175
|
}
|
|
110
176
|
if (report.status === "no-settings") {
|
|
@@ -116,7 +182,14 @@ function driftFindings(report) {
|
|
|
116
182
|
impact: "el host no ve ninguna fuente declarada del workspace",
|
|
117
183
|
evidence: [`archivo esperado: ${report.target}`],
|
|
118
184
|
remediation: { kind: "manual", action: null, guidance: ["aw attach-multiroot"] },
|
|
119
|
-
proposal: {
|
|
185
|
+
proposal: {
|
|
186
|
+
op: "multiroot.attach",
|
|
187
|
+
args: {
|
|
188
|
+
scope: report.scope,
|
|
189
|
+
host: report.host,
|
|
190
|
+
paths: JSON.stringify(report.declared_paths),
|
|
191
|
+
},
|
|
192
|
+
},
|
|
120
193
|
});
|
|
121
194
|
}
|
|
122
195
|
if (findings.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-visibility.js","sourceRoot":"","sources":["../../../src/application/doctor/provider-visibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,QAAQ,GAAG,sBAA+B,CAAC;AAEjD;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,iBAAiB,CAAC,IAA+C,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,QAAQ,EAAE,QAAQ;IAClB,KAAK,CAAC,GAAG,CAAC,KAA0B;QAClC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;YACrF,SAAS,EAAE,KAAK,CAAC,YAAY;YAC7B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAkC,EAAE,CAAC;QACpD,4EAA4E;QAC5E,6EAA6E;QAC7E,4EAA4E;QAC5E,6EAA6E;QAC7E,4EAA4E;QAC5E,2EAA2E;QAC3E,YAAY;QACZ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtC,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;gBACzC,SAAS,CAAC,IAAI,CACZ,QAAQ,CACN,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,kCAAkC,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC,YAAY,EAAE,CACzE,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,sEAAsE;QACtE,mEAAmE;QACnE,4EAA4E;QAC5E,sEAAsE;QACtE,wEAAwE;QACxE,4EAA4E;QAC5E,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,QAAQ,CACN,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,gBAAgB,EAChB,+CAA+C,IAAI,CAAC,KAAK,gEAAgE,CAC1H,CACF,CAAC;QAEJ,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtE,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,MAA4B;IACjD,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,KAAK,cAAc,CAAC;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG;QACX,IAAI;QACJ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,YAAqB;YAC3B,IAAI,EAAE,GAAG,IAAI,KAAK,MAAM,CAAC,KAAK,GAAG;YACjC,OAAO,EAAE,MAAM,CAAC,MAAM;SACvB;QACD,SAAS,EAAE,MAAe;KAC3B,CAAC;IACF,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,IAAI;YACP,EAAE,EAAE,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,YAAY,CAAC;YAC5D,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,GAAG,IAAI,yBAAyB,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB;YACrF,MAAM,EAAE,iEAAiE;YACzE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;YACxD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,qBAAqB,CAAC,EAAE;YAChF,QAAQ,EAAE,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-visibility.js","sourceRoot":"","sources":["../../../src/application/doctor/provider-visibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { readdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { doctorFindingId } from "../../domain/doctor/model.js";
|
|
4
|
+
import { RETIRED_SKILL_IDENTITIES, RETIRED_WORKLINE_SKILLS } from "../../domain/skills.js";
|
|
5
|
+
import { resolveBundledSkillPath } from "../self/install-skill.js";
|
|
6
|
+
import { coverage } from "./types.js";
|
|
7
|
+
const CATEGORY = "workspace-visibility";
|
|
8
|
+
const MIRRORS = ["CLAUDE.md", "AGENTS.md"];
|
|
9
|
+
const OWNED_SECTIONS = new Set(["proyecto", "fuentes", "stack", "status", "pipeline"]);
|
|
10
|
+
async function knownCommands() {
|
|
11
|
+
// Loaded after command registration: importing index statically from a doctor
|
|
12
|
+
// provider would form a cycle through the `doctor` command itself.
|
|
13
|
+
const { ALL_COMMANDS } = await import("../../cli/commands/index.js");
|
|
14
|
+
const bundle = await resolveBundledSkillPath();
|
|
15
|
+
let w = null;
|
|
16
|
+
if (bundle !== null) {
|
|
17
|
+
try {
|
|
18
|
+
w = new Set((await readdir(join(bundle, "commands")))
|
|
19
|
+
.filter((file) => file.endsWith(".md") && file !== "README.md")
|
|
20
|
+
.map((file) => file.slice(0, -3)));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Cannot assert that an unknown /w: command is retired without its bundle.
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return { aw: new Set(ALL_COMMANDS.map((command) => command.name)), w };
|
|
27
|
+
}
|
|
28
|
+
function retiredReference(body, known) {
|
|
29
|
+
for (const [, command] of body.matchAll(/\baw\s+([a-z][a-z0-9-]*)\b/g)) {
|
|
30
|
+
if (command !== undefined && !known.aw.has(command))
|
|
31
|
+
return `aw ${command}`;
|
|
32
|
+
}
|
|
33
|
+
if (known.w !== null) {
|
|
34
|
+
for (const [, command] of body.matchAll(/\/w:([a-z][a-z0-9-]*)\b/g)) {
|
|
35
|
+
if (command !== undefined && !known.w.has(command))
|
|
36
|
+
return `/w:${command}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const [, skill] of body.matchAll(/\b(agent-workflow:[a-z][a-z0-9-]*|ui-design|ui-spec)\b/g)) {
|
|
40
|
+
if (skill !== undefined &&
|
|
41
|
+
(RETIRED_WORKLINE_SKILLS.has(skill) || RETIRED_SKILL_IDENTITIES.has(skill)))
|
|
42
|
+
return skill;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/** Sections stop at the next heading or project marker; only whole sections are removed. */
|
|
47
|
+
export function retiredSections(text, markers, known) {
|
|
48
|
+
const lines = text.split("\n");
|
|
49
|
+
const boundaries = lines.flatMap((line, index) => /^#{2,6}\s+\S/.test(line) || line.includes(markers.start) || line.includes(markers.end)
|
|
50
|
+
? [index]
|
|
51
|
+
: []);
|
|
52
|
+
const sections = [];
|
|
53
|
+
for (let i = 0; i < boundaries.length; i += 1) {
|
|
54
|
+
const from = boundaries[i] ?? 0;
|
|
55
|
+
const heading = /^#{2,6}\s+(.+)$/.exec(lines[from] ?? "")?.[1]?.trim();
|
|
56
|
+
if (heading === undefined || OWNED_SECTIONS.has(heading.toLowerCase()))
|
|
57
|
+
continue;
|
|
58
|
+
const to = boundaries[i + 1] ?? lines.length;
|
|
59
|
+
const reference = retiredReference(lines.slice(from, to).join("\n"), known);
|
|
60
|
+
if (reference !== null)
|
|
61
|
+
sections.push({ from, to, heading, reference });
|
|
62
|
+
}
|
|
63
|
+
return sections;
|
|
64
|
+
}
|
|
65
|
+
export function withoutRetiredSections(text, markers, known) {
|
|
66
|
+
const removed = retiredSections(text, markers, known);
|
|
67
|
+
if (removed.length === 0)
|
|
68
|
+
return text;
|
|
69
|
+
return text
|
|
70
|
+
.split("\n")
|
|
71
|
+
.filter((_, index) => !removed.some((section) => index >= section.from && index < section.to))
|
|
72
|
+
.join("\n");
|
|
73
|
+
}
|
|
74
|
+
export async function applyRetiredSectionRemoval(fs, path, markers) {
|
|
75
|
+
const before = await fs.readText(path);
|
|
76
|
+
const after = withoutRetiredSections(before, markers, await knownCommands());
|
|
77
|
+
if (after === before)
|
|
78
|
+
return false;
|
|
79
|
+
await fs.writeText(path, after);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
export const workspaceBlockProvider = {
|
|
83
|
+
category: CATEGORY,
|
|
84
|
+
async run(input) {
|
|
85
|
+
const fs = input.ctx.fs;
|
|
86
|
+
const markers = input.ctx.paths.blockMarkers();
|
|
87
|
+
const files = await Promise.all(MIRRORS.map(async (file) => {
|
|
88
|
+
const path = join(input.workspaceDir, file);
|
|
89
|
+
return { file, path, text: (await fs.exists(path)) ? await fs.readText(path) : null };
|
|
90
|
+
}));
|
|
91
|
+
if (files.every((file) => file.text === null))
|
|
92
|
+
return {
|
|
93
|
+
coverage: [coverage(CATEGORY, "workspace", "not-applicable", "sin archivos de proyecto")],
|
|
94
|
+
findings: [],
|
|
95
|
+
};
|
|
96
|
+
const findings = [];
|
|
97
|
+
const block = (text) => {
|
|
98
|
+
if (text === null)
|
|
99
|
+
return null;
|
|
100
|
+
const start = text.indexOf(markers.start);
|
|
101
|
+
const end = text.indexOf(markers.end, start + markers.start.length);
|
|
102
|
+
return start < 0 || end < 0 ? null : text.slice(start, end + markers.end.length);
|
|
103
|
+
};
|
|
104
|
+
const left = block(files[0]?.text ?? null);
|
|
105
|
+
const right = block(files[1]?.text ?? null);
|
|
106
|
+
if (left !== right && (left !== null || right !== null)) {
|
|
107
|
+
findings.push({
|
|
108
|
+
id: doctorFindingId("workspace", CATEGORY, "bloques-divergentes"),
|
|
109
|
+
host: "workspace",
|
|
110
|
+
category: CATEGORY,
|
|
111
|
+
resource: {
|
|
112
|
+
kind: "project-block",
|
|
113
|
+
name: "CLAUDE.md / AGENTS.md",
|
|
114
|
+
locator: input.workspaceDir,
|
|
115
|
+
},
|
|
116
|
+
state: "warning",
|
|
117
|
+
summary: "los bloques de proyecto de CLAUDE.md y AGENTS.md divergen",
|
|
118
|
+
impact: "dos hosts leen declaraciones distintas del mismo workspace",
|
|
119
|
+
evidence: ["los contenidos entre marcadores no coinciden"],
|
|
120
|
+
ownership: "ours",
|
|
121
|
+
remediation: {
|
|
122
|
+
kind: "manual",
|
|
123
|
+
action: null,
|
|
124
|
+
guidance: ["aw project-md-upsert --init reescribe el par tras revisar ambas versiones"],
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const known = await knownCommands();
|
|
129
|
+
for (const file of files) {
|
|
130
|
+
if (file.text === null)
|
|
131
|
+
continue;
|
|
132
|
+
const sections = retiredSections(file.text, markers, known);
|
|
133
|
+
if (sections.length === 0)
|
|
134
|
+
continue;
|
|
135
|
+
findings.push({
|
|
136
|
+
id: doctorFindingId("workspace", CATEGORY, `${file.file}:secciones-retiradas`),
|
|
137
|
+
host: "workspace",
|
|
138
|
+
category: CATEGORY,
|
|
139
|
+
resource: { kind: "project-file", name: file.file, locator: file.path },
|
|
140
|
+
state: "warning",
|
|
141
|
+
summary: `${file.file} cita comandos o skills retirados en ${sections.length} sección(es)`,
|
|
142
|
+
impact: "sus instrucciones pueden dirigir a herramientas que ya no existen",
|
|
143
|
+
evidence: sections.map((section) => `${section.heading}: ${section.reference}`),
|
|
144
|
+
ownership: "ours",
|
|
145
|
+
remediation: {
|
|
146
|
+
kind: "manual",
|
|
147
|
+
action: null,
|
|
148
|
+
guidance: ["aw doctor prepare --select <id> y aw doctor apply --approval <digest>"],
|
|
149
|
+
},
|
|
150
|
+
proposal: { op: "workspace.remove-retired-section", args: { file: file.file } },
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return { coverage: [coverage(CATEGORY, "workspace", "checked")], findings };
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=provider-workspace-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-workspace-block.js","sourceRoot":"","sources":["../../../src/application/doctor/provider-workspace-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ import { applySkillChange } from "../self/skills-apply.js";
|
|
|
10
10
|
import { prepareSkillChange } from "../self/skills-change.js";
|
|
11
11
|
import { selfUninstall } from "../self/uninstall.js";
|
|
12
12
|
import { runDoctorAuthFlow } from "./auth-flow.js";
|
|
13
|
+
import { applyRetiredSectionRemoval } from "./provider-workspace-block.js";
|
|
14
|
+
import { applySkillsTomlMigration } from "./skills-toml-migrate.js";
|
|
13
15
|
/** Un `ParsedArgs` explícito: sin comando, sin positional y con los flags que la operación pide. */
|
|
14
16
|
function argsOf(values, flags = []) {
|
|
15
17
|
return {
|
|
@@ -87,11 +89,50 @@ export async function runDoctorRepair(action, ctx) {
|
|
|
87
89
|
case "auth.flow":
|
|
88
90
|
return runDoctorAuthFlow(action, ctx);
|
|
89
91
|
case "multiroot.attach":
|
|
90
|
-
case "multiroot.detach":
|
|
92
|
+
case "multiroot.detach": {
|
|
93
|
+
if (!action.args.paths || !["claude", "codex"].includes(action.args.host ?? ""))
|
|
94
|
+
return { status: "failed", detail: "propuesta de rutas sin host ni rutas selladas" };
|
|
95
|
+
let exact;
|
|
96
|
+
try {
|
|
97
|
+
exact = JSON.parse(action.args.paths);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return { status: "failed", detail: "lista de rutas selladas ilegible" };
|
|
101
|
+
}
|
|
102
|
+
if (!Array.isArray(exact) ||
|
|
103
|
+
exact.length === 0 ||
|
|
104
|
+
!exact.every((value) => typeof value === "string" && value.startsWith("/")))
|
|
105
|
+
return { status: "failed", detail: "lista de rutas selladas inválida" };
|
|
91
106
|
return multirootOutcome(await runMultiroot(ctx.fs, ctx.env, ctx.paths, action.op === "multiroot.attach" ? "attach" : "detach", {
|
|
92
|
-
|
|
107
|
+
paths: exact,
|
|
93
108
|
useGlobal: action.args.scope === "global",
|
|
109
|
+
skipClaude: action.args.host !== "claude",
|
|
110
|
+
skipCodex: action.args.host !== "codex",
|
|
111
|
+
skipWarp: true,
|
|
112
|
+
skipOz: true,
|
|
94
113
|
}));
|
|
114
|
+
}
|
|
115
|
+
case "workspace.remove-retired-section": {
|
|
116
|
+
const path = action.locator;
|
|
117
|
+
if (path === null ||
|
|
118
|
+
!["CLAUDE.md", "AGENTS.md"].some((file) => path === `${ctx.paths.workspaceDir()}/${file}`))
|
|
119
|
+
return { status: "failed", detail: "archivo de proyecto fuera del workspace" };
|
|
120
|
+
const removed = await applyRetiredSectionRemoval(ctx.fs, path, ctx.paths.blockMarkers());
|
|
121
|
+
return {
|
|
122
|
+
status: removed ? "applied" : "failed",
|
|
123
|
+
detail: removed ? "secciones retiradas quitadas" : "sin secciones retiradas",
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case "skills.migrate-template": {
|
|
127
|
+
const path = action.locator;
|
|
128
|
+
if (path === null || ![ctx.paths.cwdSkillsToml(), ctx.paths.userSkillsToml()].includes(path))
|
|
129
|
+
return { status: "failed", detail: "skills.toml fuera de la cascada" };
|
|
130
|
+
const migrated = await applySkillsTomlMigration(ctx.fs, path);
|
|
131
|
+
return {
|
|
132
|
+
status: migrated ? "applied" : "failed",
|
|
133
|
+
detail: migrated ? "plantilla migrada" : "sin cambios de plantilla",
|
|
134
|
+
};
|
|
135
|
+
}
|
|
95
136
|
default:
|
|
96
137
|
// Una operación que el catálogo declara y este adaptador no sabe correr es
|
|
97
138
|
// un fallo declarado, no un `applied` optimista: el recurso queda como
|
|
@@ -197,6 +238,9 @@ function multirootOutcome(result) {
|
|
|
197
238
|
: null;
|
|
198
239
|
return error === null
|
|
199
240
|
? { status: "applied", detail: "visibilidad multiroot: aplicada" }
|
|
200
|
-
: {
|
|
241
|
+
: {
|
|
242
|
+
status: "failed",
|
|
243
|
+
detail: `visibilidad multiroot: ${error}${result && typeof result === "object" && "hint" in result ? ` — ${String(result.hint)}` : ""}`,
|
|
244
|
+
};
|
|
201
245
|
}
|
|
202
246
|
//# sourceMappingURL=repair-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-runner.js","sourceRoot":"","sources":["../../../src/application/doctor/repair-runner.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"repair-runner.js","sourceRoot":"","sources":["../../../src/application/doctor/repair-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,21 +12,23 @@ import { redactSensitiveValue } from "../../domain/redaction.js";
|
|
|
12
12
|
import { readPackageVersion } from "../../runtime/version.js";
|
|
13
13
|
import { annotateRepairs } from "./actions.js";
|
|
14
14
|
import { DOCTOR_HOST_ORDER, selectDoctorHosts } from "./hosts.js";
|
|
15
|
-
import {
|
|
15
|
+
import { createInstallationProvider } from "./provider-installation.js";
|
|
16
16
|
import { createMcpsProvider } from "./provider-mcps.js";
|
|
17
17
|
import { pluginsHooksProvider } from "./provider-plugins-hooks.js";
|
|
18
18
|
import { skillsProvider } from "./provider-skills.js";
|
|
19
19
|
import { toolsAuthProvider } from "./provider-tools-auth.js";
|
|
20
20
|
import { visibilityProvider } from "./provider-visibility.js";
|
|
21
|
+
import { workspaceBlockProvider } from "./provider-workspace-block.js";
|
|
21
22
|
import { coverage } from "./types.js";
|
|
22
|
-
export function defaultDoctorProviders(deps = {}) {
|
|
23
|
+
export function defaultDoctorProviders(deps = {}, distRoot) {
|
|
23
24
|
return [
|
|
24
|
-
|
|
25
|
+
createInstallationProvider(distRoot),
|
|
25
26
|
createMcpsProvider(deps),
|
|
26
27
|
skillsProvider,
|
|
27
28
|
toolsAuthProvider,
|
|
28
29
|
pluginsHooksProvider,
|
|
29
30
|
visibilityProvider,
|
|
31
|
+
workspaceBlockProvider,
|
|
30
32
|
];
|
|
31
33
|
}
|
|
32
34
|
export async function runDoctor(ctx, options = {}, deps = {}) {
|
|
@@ -46,8 +48,26 @@ export async function runDoctor(ctx, options = {}, deps = {}) {
|
|
|
46
48
|
// Un `--only` mal escrito se denuncia ANTES de mirar nada: es lo único que
|
|
47
49
|
// explica por qué la corrida no cubrió lo que la persona creía haber pedido.
|
|
48
50
|
const findings = selection.unknownOnly.map(unknownOnlyFinding);
|
|
51
|
+
if (!selection.states.some((state) => state.workline.installed)) {
|
|
52
|
+
findings.push({
|
|
53
|
+
id: doctorFindingId("workspace", "installation-hosts", "sin-workline"),
|
|
54
|
+
host: "workspace",
|
|
55
|
+
category: "installation-hosts",
|
|
56
|
+
resource: { kind: "instalación", name: "Workline en hosts", locator: null },
|
|
57
|
+
state: "blocking",
|
|
58
|
+
summary: "Workline no está instalado en ningún host",
|
|
59
|
+
impact: "ningún host de esta máquina puede iniciar los recorridos de Workline",
|
|
60
|
+
evidence: ["el catálogo no encontró ninguna instalación de Workline"],
|
|
61
|
+
ownership: "ours",
|
|
62
|
+
remediation: {
|
|
63
|
+
kind: "manual",
|
|
64
|
+
action: null,
|
|
65
|
+
guidance: ["aw self install-skill --target <host>"],
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
49
69
|
const coverages = [];
|
|
50
|
-
for (const provider of deps.providers ?? defaultDoctorProviders(deps.mcps)) {
|
|
70
|
+
for (const provider of deps.providers ?? defaultDoctorProviders(deps.mcps, deps.distRoot)) {
|
|
51
71
|
try {
|
|
52
72
|
const output = await provider.run(input);
|
|
53
73
|
findings.push(...output.findings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/application/doctor/report.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,OAAO,EACL,qBAAqB,EAIrB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAA4B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/application/doctor/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { BUILTIN_DEFAULT_SKILLS } from "../../domain/skills.js";
|
|
2
|
+
/** Migrate only active legacy template lines; comments and user bindings keep their bytes. */
|
|
3
|
+
export function migrateSkillsToml(text) {
|
|
4
|
+
const lines = text.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
5
|
+
const hasDesign = hasActiveDesign(lines);
|
|
6
|
+
const output = [];
|
|
7
|
+
let section = "";
|
|
8
|
+
let changed = false;
|
|
9
|
+
for (const line of lines) {
|
|
10
|
+
const heading = /^\s*\[([^\]]+)\]\s*(?:#.*)?(?:\r?\n)?$/.exec(line);
|
|
11
|
+
if (heading !== null) {
|
|
12
|
+
section = heading[1]?.trim() ?? "";
|
|
13
|
+
if (section === "compaction") {
|
|
14
|
+
changed = true;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
output.push(line);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (section === "compaction") {
|
|
21
|
+
if (line.trim().startsWith("#") || line.trim().length === 0)
|
|
22
|
+
output.push(line);
|
|
23
|
+
else
|
|
24
|
+
changed = true;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (section !== "skills" || line.trim().startsWith("#")) {
|
|
28
|
+
output.push(line);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const rewritten = rewriteBinding(line, hasDesign);
|
|
32
|
+
if (rewritten !== line)
|
|
33
|
+
changed = true;
|
|
34
|
+
if (rewritten.length > 0)
|
|
35
|
+
output.push(rewritten);
|
|
36
|
+
}
|
|
37
|
+
return { text: changed ? output.join("") : text, changed };
|
|
38
|
+
}
|
|
39
|
+
function hasActiveDesign(lines) {
|
|
40
|
+
let skills = false;
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
const heading = /^\s*\[([^\]]+)\]/.exec(line);
|
|
43
|
+
if (heading !== null)
|
|
44
|
+
skills = heading[1] === "skills";
|
|
45
|
+
else if (skills && /^\s*design\s*=/.test(line))
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
function rewriteBinding(line, hasDesign) {
|
|
51
|
+
const binding = /^(\s*)([a-z][a-z-]*)(\s*=\s*)(["'])([^"']+)\4(\s*(?:#.*)?(?:\r?\n)?)$/.exec(line);
|
|
52
|
+
if (binding === null)
|
|
53
|
+
return line;
|
|
54
|
+
const [, indent, role, equals, quote, value, suffix] = binding;
|
|
55
|
+
if (["coding-standards", "writing", "testing", "tools"].includes(role ?? "")) {
|
|
56
|
+
const comment = /(#.*?)(\r?\n)?$/.exec(suffix ?? "");
|
|
57
|
+
return comment === null ? "" : `${indent}${comment[1]}${comment[2] ?? ""}`;
|
|
58
|
+
}
|
|
59
|
+
if (role === "ui-design" && hasDesign)
|
|
60
|
+
return "";
|
|
61
|
+
const currentRole = role === "ui-design" ? BUILTIN_DEFAULT_SKILLS.design : role;
|
|
62
|
+
const currentValue = value === "ui-spec" && currentRole === BUILTIN_DEFAULT_SKILLS.design
|
|
63
|
+
? BUILTIN_DEFAULT_SKILLS.design
|
|
64
|
+
: value === "workflow" && currentRole === "overview"
|
|
65
|
+
? BUILTIN_DEFAULT_SKILLS.overview
|
|
66
|
+
: value;
|
|
67
|
+
return `${indent}${currentRole}${equals}${quote}${currentValue}${quote}${suffix}`;
|
|
68
|
+
}
|
|
69
|
+
export async function applySkillsTomlMigration(fs, path) {
|
|
70
|
+
const migration = migrateSkillsToml(await fs.readText(path));
|
|
71
|
+
if (!migration.changed)
|
|
72
|
+
return false;
|
|
73
|
+
await fs.writeText(path, migration.text);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=skills-toml-migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-toml-migrate.js","sourceRoot":"","sources":["../../../src/application/doctor/skills-toml-migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAC1E,OAAO,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,GAAG,IAAI,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;aAClD,IAAI,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,SAAkB;IACtD,MAAM,OAAO,GAAG,uEAAuE,CAAC,IAAI,CAC1F,IAAI,CACL,CAAC;IACF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,SAAS;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,MAAM,YAAY,GAChB,KAAK,KAAK,SAAS,IAAI,WAAW,KAAK,sBAAsB,CAAC,MAAM;QAClE,CAAC,CAAC,sBAAsB,CAAC,MAAM;QAC/B,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,WAAW,KAAK,UAAU;YAClD,CAAC,CAAC,sBAAsB,CAAC,QAAQ;YACjC,CAAC,CAAC,KAAK,CAAC;IACd,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAAkB,EAAE,IAAY;IAC7E,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
|