ai-delivery-workflow 0.2.2 → 0.4.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/README.md +45 -14
- package/bin/ai-delivery.mjs +181 -6
- package/bin/benchmark-autonomy.mjs +217 -0
- package/bin/release-check.mjs +382 -0
- package/docs/CLI-PARAMETER-REFERENCE.zh-CN.md +346 -0
- package/docs/CODEGRAPH-INTEGRATION.zh-CN.md +89 -0
- package/docs/DUAL-REPOSITORY-WORKSPACE.zh-CN.md +2 -2
- package/docs/EVOLUTION-MAINTENANCE.zh-CN.md +7 -7
- package/docs/EVOLUTION-USER-GUIDE.zh-CN.md +2 -2
- package/docs/FILE-REFERENCE.zh-CN.md +120 -39
- package/docs/MAINTENANCE-VERIFICATION.zh-CN.md +51 -0
- package/docs/MOCK-SYSTEM.zh-CN.md +141 -0
- package/docs/NPM-RELEASE-MANAGEMENT.zh-CN.md +106 -0
- package/docs/PROJECT-MANUAL.zh-CN.md +154 -95
- package/docs/PROTOTYPE-MIGRATION.zh-CN.md +164 -0
- package/docs/STATE-CLI-MAINTENANCE.zh-CN.md +35 -17
- package/docs/STATE-CLI-USER-GUIDE.zh-CN.md +115 -39
- package/docs/VIEWER-MAINTENANCE.zh-CN.md +101 -324
- package/docs/VIEWER-USER-GUIDE.zh-CN.md +68 -190
- package/docs/adr/0001-prototype-first-ui-governance.md +3 -0
- package/docs/adr/0002-microcks-as-default-mock-system.md +3 -0
- package/docs/adr/0003-workflow-manager-governed-control-surface.md +46 -0
- package/docs/adr/0004-operational-carbon-visual-standard.md +9 -0
- package/docs/adr/0005-prototype-management-as-routed-pages.md +7 -0
- package/docs/agents/domain.md +12 -0
- package/docs/agents/issue-tracker.md +27 -0
- package/docs/agents/triage-labels.md +11 -0
- package/docs/agents/workflow-manager-acceptance-matrix.md +93 -0
- package/docs/agents/workflow-manager-agent-interface.md +145 -0
- package/docs/agents/workflow-manager-current-state.md +205 -0
- package/lib/artifact-files.mjs +47 -0
- package/lib/codegraph.mjs +405 -0
- package/lib/delivery-state.mjs +3079 -198
- package/lib/frontend-guard.mjs +288 -0
- package/lib/fs-utils.mjs +53 -0
- package/lib/history-anchor.mjs +98 -0
- package/lib/mock-scenario-pack.mjs +687 -0
- package/lib/mock-system.mjs +897 -0
- package/lib/npm-package-result.mjs +11 -0
- package/lib/png-evidence.mjs +149 -0
- package/lib/project-bootstrap.mjs +96 -55
- package/lib/project-installer.mjs +1484 -164
- package/lib/project-migration.mjs +1193 -0
- package/lib/prototype-migration.mjs +713 -0
- package/lib/prototype-page-review.mjs +384 -0
- package/lib/prototype-review-target.mjs +334 -0
- package/lib/prototype-revision.mjs +812 -0
- package/lib/stable-value.mjs +15 -0
- package/lib/toml-hooks.mjs +69 -0
- package/lib/ui-acceptance.mjs +565 -0
- package/lib/visual-standard.mjs +232 -0
- package/lib/workflow-manager-contracts.mjs +367 -0
- package/lib/workflow-manager-facts.mjs +778 -0
- package/lib/workflow-manager-governance.mjs +514 -0
- package/lib/workflow-manager-mock.mjs +183 -0
- package/lib/workflow-manager-prototypes.mjs +1847 -0
- package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/lib/workflow-manager-public/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/lib/workflow-manager-public/assets/index-Chlg6r8f.css +1 -0
- package/lib/workflow-manager-public/assets/index-E-hGB5ZD.js +13 -0
- package/lib/workflow-manager-public/fonts/OFL-1.1.txt +90 -0
- package/lib/workflow-manager-public/index.html +14 -0
- package/lib/workflow-manager-systems.mjs +519 -0
- package/lib/workflow-manager-transaction.mjs +397 -0
- package/lib/workflow-manager.mjs +745 -0
- package/package.json +8 -2
- package/skills/ai-delivery-assemble-release/agents/openai.yaml +3 -3
- package/skills/ai-delivery-assemble-release/assets/release-material-index.csv +1 -1
- package/skills/ai-delivery-assemble-release/assets/version-inclusion.csv +1 -1
- package/skills/ai-delivery-bootstrap/SKILL.md +4 -4
- package/skills/ai-delivery-bootstrap/agents/openai.yaml +3 -3
- package/skills/ai-delivery-bootstrap/references/bootstrap-contract.md +4 -2
- package/skills/ai-delivery-checkpoint-task/SKILL.md +17 -3
- package/skills/ai-delivery-checkpoint-task/agents/openai.yaml +3 -3
- package/skills/ai-delivery-checkpoint-task/assets/runtime-template/task.json +7 -1
- package/skills/ai-delivery-checkpoint-task/references/checkpoint-contract.md +22 -8
- package/skills/ai-delivery-checkpoint-task/scripts/hook-event.mjs +91 -0
- package/skills/ai-delivery-checkpoint-task/scripts/task-state.mjs +1086 -51
- package/skills/ai-delivery-close-version/SKILL.md +9 -8
- package/skills/ai-delivery-close-version/agents/openai.yaml +3 -3
- package/skills/ai-delivery-close-version/assets/version-lineage.yaml +1 -1
- package/skills/ai-delivery-close-version/references/version-closeout-contract.md +2 -2
- package/skills/ai-delivery-define-product/SKILL.md +8 -4
- package/skills/ai-delivery-define-product/agents/openai.yaml +4 -4
- package/skills/ai-delivery-define-product/references/product-contract.md +2 -2
- package/skills/ai-delivery-deploy-production/agents/openai.yaml +3 -3
- package/skills/ai-delivery-design-architecture/SKILL.md +9 -5
- package/skills/ai-delivery-design-architecture/assets/architecture-template/prototype-architecture-validation.yaml +16 -16
- package/skills/ai-delivery-design-architecture/references/architecture-contract.md +1 -1
- package/skills/ai-delivery-design-experience/SKILL.md +36 -30
- package/skills/ai-delivery-design-experience/agents/openai.yaml +4 -4
- package/skills/ai-delivery-design-experience/assets/experience-template/LEGACY-COMPATIBILITY.md +16 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/design-reference-selection.yaml +32 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/experience-baseline.yaml +2 -2
- package/skills/ai-delivery-design-experience/assets/experience-template/formal-ui-confirmation.yaml +16 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/frontend-change-scope.yaml +30 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/interaction-contract.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-admin-export.yaml +8 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-mappings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/mock-scenario-pack-request.yaml +24 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/product-prototype-reconciliation.yaml +2 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-adjustment-log.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-bindings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-component-candidates.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-components.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-confirmation.yaml +18 -18
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-data-contracts.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-impact-assessment.yaml +5 -5
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-implementation-bindings.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-manifest.yaml +2 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-pages.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-product-coverage.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-comments.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-decision.yaml +13 -12
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-scenes.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-sessions.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-unit-pages.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-review-units.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-revision.yaml +88 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-routes.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-set.yaml +2 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-source-inspection-snapshots.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-terminals.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-candidates.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-tool-selection.yaml +2 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-traceability.csv +1 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype-trigger-conditions.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/prototype.yaml +6 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-framework-selection.yaml +17 -1
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-handoff.yaml +6 -5
- package/skills/ai-delivery-design-experience/assets/experience-template/ui-mapping.csv +1 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-direction.yaml +4 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference-manifest.yaml +23 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-reference.html +163 -0
- package/skills/ai-delivery-design-experience/assets/experience-template/visual-system-confirmation.yaml +11 -0
- package/skills/ai-delivery-design-experience/references/experience-contract.md +26 -27
- package/skills/ai-delivery-design-experience/references/prototype-management-contract.md +42 -21
- package/skills/ai-delivery-design-tests/SKILL.md +13 -7
- package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-scope.csv +1 -1
- package/skills/ai-delivery-design-tests/assets/test-design-template/prototype-test-validation.yaml +17 -16
- package/skills/ai-delivery-design-tests/references/test-design-contract.md +7 -5
- package/skills/ai-delivery-develop-iteration/SKILL.md +18 -11
- package/skills/ai-delivery-develop-iteration/agents/openai.yaml +3 -3
- package/skills/ai-delivery-develop-iteration/assets/development-template/candidate-manifest.yaml +36 -0
- package/skills/ai-delivery-develop-iteration/assets/development-template/task-prototype-traceability.csv +1 -1
- package/skills/ai-delivery-develop-iteration/references/development-contract.md +5 -3
- package/skills/ai-delivery-evolve-workflow/agents/openai.yaml +3 -3
- package/skills/ai-delivery-execute-test/SKILL.md +6 -2
- package/skills/ai-delivery-execute-test/agents/openai.yaml +4 -4
- package/skills/ai-delivery-execute-work-package/SKILL.md +10 -3
- package/skills/ai-delivery-execute-work-package/agents/openai.yaml +4 -4
- package/skills/ai-delivery-execute-work-package/references/work-package-contract.md +1 -1
- package/skills/ai-delivery-manage-git/agents/openai.yaml +3 -3
- package/skills/ai-delivery-manage-standards/agents/openai.yaml +4 -4
- package/skills/ai-delivery-orchestrate/SKILL.md +47 -29
- package/skills/ai-delivery-orchestrate/agents/openai.yaml +3 -3
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/migrations/.gitkeep +0 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/repairs/.gitkeep +0 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/project.yaml +1 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/delivery/workflow-state.yaml +2 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/frontend-guard/frontend-guard.mjs +50 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs +91 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/manager.mjs +64 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.cmd +4 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/start.ps1 +2 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/{viewer → manager}/start.sh +1 -1
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/mock/mock.mjs +50 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/ui-acceptance/ui-acceptance.mjs +37 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/AGENTS.md +32 -6
- package/skills/ai-delivery-orchestrate/assets/project-template/gitignore.template +1 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/CONTRIBUTING.md +25 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/LICENSE +21 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/README.md +250 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/UPSTREAM.yaml +19 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/DESIGN.md +545 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airbnb/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/DESIGN.md +554 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/airtable/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/DESIGN.md +562 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/apple/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/DESIGN.md +634 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/binance/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/DESIGN.md +503 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bmw-m/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/DESIGN.md +454 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/bugatti/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/DESIGN.md +542 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cal/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/DESIGN.md +589 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/claude/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/DESIGN.md +541 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clay/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/clickhouse/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/DESIGN.md +451 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cohere/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/DESIGN.md +570 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/coinbase/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/DESIGN.md +506 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/composio/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/DESIGN.md +537 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/cursor/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/DESIGN.md +632 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/dell-1996/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/DESIGN.md +504 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/elevenlabs/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/DESIGN.md +526 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/expo/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/DESIGN.md +531 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ferrari/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/DESIGN.md +578 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/figma/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/framer/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/DESIGN.md +575 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hashicorp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/DESIGN.md +670 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/hp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/DESIGN.md +550 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ibm/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/DESIGN.md +546 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/intercom/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/DESIGN.md +125 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/kraken/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/DESIGN.md +288 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lamborghini/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/DESIGN.md +548 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/linear.app/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/DESIGN.md +298 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/lovable/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/DESIGN.md +365 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mastercard/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/DESIGN.md +683 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/meta/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/DESIGN.md +746 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/minimax/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/DESIGN.md +852 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mintlify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/DESIGN.md +825 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/miro/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/DESIGN.md +773 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mistral.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/DESIGN.md +767 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/mongodb/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/DESIGN.md +575 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nike/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/DESIGN.md +649 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nintendo-2001/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/DESIGN.md +821 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/notion/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/DESIGN.md +640 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/nvidia/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/DESIGN.md +539 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/ollama/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/DESIGN.md +521 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/opencode.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/DESIGN.md +597 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/pinterest/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/DESIGN.md +661 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/playstation/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/DESIGN.md +690 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/posthog/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/DESIGN.md +669 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/raycast/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/DESIGN.md +589 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/renault/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/DESIGN.md +616 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/replicate/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/DESIGN.md +585 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/resend/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/DESIGN.md +636 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/revolut/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/DESIGN.md +244 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/runwayml/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/DESIGN.md +357 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sanity/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/DESIGN.md +551 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/sentry/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/DESIGN.md +516 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/shopify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/slack/DESIGN.md +482 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/DESIGN.md +363 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spacex/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/DESIGN.md +246 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/spotify/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/DESIGN.md +580 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/starbucks/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/DESIGN.md +487 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/stripe/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/DESIGN.md +462 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/supabase/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/DESIGN.md +448 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/superhuman/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/DESIGN.md +286 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/tesla/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/DESIGN.md +339 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/theverge/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/DESIGN.md +633 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/together.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/DESIGN.md +636 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/uber/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/DESIGN.md +736 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vercel/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/DESIGN.md +538 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/vodafone/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/DESIGN.md +521 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/voltagent/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/DESIGN.md +526 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/warp/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/DESIGN.md +588 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/webflow/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/DESIGN.md +497 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wired/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/DESIGN.md +544 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/wise/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/DESIGN.md +465 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/x.ai/README.md +5 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/DESIGN.md +537 -0
- package/skills/ai-delivery-orchestrate/assets/project-template/ref/ui/design-md/zapier/README.md +5 -0
- package/skills/ai-delivery-orchestrate/references/formal-state-contract.md +65 -20
- package/skills/ai-delivery-orchestrate/references/workflow-model.md +7 -5
- package/skills/ai-delivery-orchestrate-release/SKILL.md +2 -2
- package/skills/ai-delivery-orchestrate-release/agents/openai.yaml +4 -4
- package/skills/ai-delivery-orchestrate-release/references/release-workflow-contract.md +1 -1
- package/skills/ai-delivery-plan-iteration/SKILL.md +11 -4
- package/skills/ai-delivery-plan-iteration/agents/openai.yaml +4 -4
- package/skills/ai-delivery-plan-iteration/assets/planning-template/scope-manifest.yaml +17 -0
- package/skills/ai-delivery-plan-iteration/assets/planning-template/slice-prototype-traceability.csv +1 -1
- package/skills/ai-delivery-plan-iteration/references/planning-contract.md +8 -2
- package/skills/ai-delivery-prepare-platform/SKILL.md +5 -1
- package/skills/ai-delivery-prepare-platform/agents/openai.yaml +4 -4
- package/skills/ai-delivery-prepare-release/agents/openai.yaml +4 -4
- package/skills/ai-delivery-review-change/SKILL.md +14 -4
- package/skills/ai-delivery-review-change/agents/openai.yaml +4 -4
- package/skills/ai-delivery-review-change/references/review-contract.md +6 -0
- package/skills/ai-delivery-triage-failure/SKILL.md +5 -1
- package/skills/ai-delivery-triage-failure/agents/openai.yaml +4 -4
- package/skills/ai-delivery-validate-artifacts/SKILL.md +6 -3
- package/skills/ai-delivery-validate-artifacts/agents/openai.yaml +4 -4
- package/skills/ai-delivery-validate-artifacts/references/artifact-contract.md +13 -13
- package/skills/ai-delivery-verify-candidate/SKILL.md +13 -6
- package/skills/ai-delivery-verify-candidate/agents/openai.yaml +3 -3
- package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-request.yaml +19 -0
- package/skills/ai-delivery-verify-candidate/assets/verification-template/ui-acceptance-results.yaml +53 -0
- package/skills/ai-delivery-verify-candidate/references/candidate-verification-contract.md +10 -2
- package/skills/ai-delivery-verify-production/agents/openai.yaml +3 -3
- package/skills/ai-delivery-design-experience/assets/experience-template/low-fidelity-confirmation.yaml +0 -32
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/app.js +0 -546
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/index.html +0 -199
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/public/styles.css +0 -529
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/server.mjs +0 -780
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.cmd +0 -4
- package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/viewer/start.ps1 +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "自进化工作流"
|
|
3
|
-
short_description: "持续记录反馈、评估信号并安全演进项目级交付工作流扩展能力"
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "自进化工作流"
|
|
3
|
+
short_description: "持续记录反馈、评估信号并安全演进项目级交付工作流扩展能力"
|
|
4
4
|
default_prompt: "使用 $ai-delivery-evolve-workflow 记录当前意见并在安全点评估可验证的项目级扩展。"
|
|
@@ -9,7 +9,11 @@ Observe and report. Do not repair the candidate, change test expectations to mak
|
|
|
9
9
|
|
|
10
10
|
## Artifact Location
|
|
11
11
|
|
|
12
|
-
Write every test report, log index, evidence manifest, and workflow document produced by this skill under project `.workflow
|
|
12
|
+
Write every test report, log index, evidence manifest, and workflow document produced by this skill under project `.workflow/`. Iteration candidate tests stay in `.workflow/iterations/<iteration-id>/05-candidate-assurance/`; release tests stay in `.workflow/releases/<release-id>/R05-release-verification/`. Raw external logs may remain in controlled systems only when their immutable references and checksums are recorded in `.workflow/`.
|
|
13
|
+
|
|
14
|
+
## Development Node
|
|
15
|
+
|
|
16
|
+
For iteration scope, this Skill executes an independent test phase inside `05-candidate-assurance` against the node attempt's bound candidate and cannot mutate it. Test rounds do not create formal nodes. Any candidate-changing correction returns through `04-implementation` before a new assurance attempt. Release scope remains part of `R05-release-verification`.
|
|
13
17
|
|
|
14
18
|
## Task State
|
|
15
19
|
|
|
@@ -19,7 +23,7 @@ Write every test report, log index, evidence manifest, and workflow document pro
|
|
|
19
23
|
|
|
20
24
|
## Workflow
|
|
21
25
|
|
|
22
|
-
1. Read the work package, approved source artifacts, candidate identity, environment identity, applicable standards, evidence requirements, and
|
|
26
|
+
1. Read the work package, approved source artifacts, candidate identity, environment identity, applicable standards, evidence requirements, exact Prototype revision and UI Mapping checksums, and terminal/Page/Review Scene/prototype-element/UI component/frontend-source/acceptance references for UI or prototype-conformance scope. Reject missing or conflicting references and never infer relationships from file names or row order.
|
|
23
27
|
2. Confirm prerequisites and isolate test data.
|
|
24
28
|
3. Derive additional cases from independent requirements and risk sources when allowed.
|
|
25
29
|
4. Execute through public interfaces and retain reproducible commands, inputs, outputs, timestamps, and environment references.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Execute Test Work"
|
|
3
|
-
short_description: "Execute one risk-based independent test work package"
|
|
4
|
-
default_prompt: "Use $ai-delivery-execute-test to execute the assigned independent test work package."
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Execute Test Work"
|
|
3
|
+
short_description: "Execute one risk-based independent test work package"
|
|
4
|
+
default_prompt: "Use $ai-delivery-execute-test to execute the assigned independent test work package."
|
|
@@ -9,7 +9,11 @@ Implement only the assigned package. Do not broaden scope, choose a different st
|
|
|
9
9
|
|
|
10
10
|
## Artifact Location
|
|
11
11
|
|
|
12
|
-
Write every work-package document, TDD record, evidence manifest, and handoff record produced by this skill under project `.workflow/`, defaulting version-scoped outputs to `.workflow/iterations/<iteration-id
|
|
12
|
+
Write every work-package document, TDD record, evidence manifest, and handoff record produced by this skill under project `.workflow/`, defaulting version-scoped outputs to `.workflow/iterations/<iteration-id>/04-implementation/`. Source code, automated test source, and non-document build artifacts remain in their declared modification scopes.
|
|
13
|
+
|
|
14
|
+
## Development Node
|
|
15
|
+
|
|
16
|
+
This Skill executes implementation and approved repair phases for a stable logical task inside `04-implementation`. It never creates a separate formal node for a work package, review round, fix round, or retry. Preserve the task ID across attempts and apply only the approved `change_set_id` when repairing review findings.
|
|
13
17
|
|
|
14
18
|
## Task State
|
|
15
19
|
|
|
@@ -19,15 +23,17 @@ Write every work-package document, TDD record, evidence manifest, and handoff re
|
|
|
19
23
|
|
|
20
24
|
## Preflight
|
|
21
25
|
|
|
22
|
-
1. Read the work package, source baselines, applicable standards, confirmed test seam, repository instructions, and exact UI handoff, product
|
|
26
|
+
1. Read the work package, source baselines, applicable standards, confirmed test seam, repository instructions, and exact UI handoff, `product-prototype-reconciliation.yaml`, experience-change mapping, Prototype revision/checksum, frontend scope checksum, UI Mapping checksum, normalized catalog and review/impact checksums, and terminal/Page/Review Scene/prototype-element/UI component/frontend-source/acceptance mappings when the package is UI-bearing. Require every mapped change to be `ready-for-development` and its action to be one of `create|update|remove|migrate|no-code`.
|
|
23
27
|
2. Verify the current branch and worktree with `$ai-delivery-manage-git`.
|
|
24
28
|
3. Inspect the current code and tests before planning edits.
|
|
25
|
-
4. Stop on missing dependencies,
|
|
29
|
+
4. Stop on missing dependencies, missing or conflicting Prototype revision or UI Mapping references, overlapping ownership, ambiguous acceptance behavior, or an infeasible architecture. Never infer relationships from file names or row order. Return evidence to the orchestrator.
|
|
26
30
|
|
|
27
31
|
## TDD Loop
|
|
28
32
|
|
|
29
33
|
For one vertical behavior at a time:
|
|
30
34
|
|
|
35
|
+
Before the first write to each production UI file in a behavior or approved repair, run `ai-delivery frontend-guard check-file <workspace> --path <exact-path>`. Proceed only when the current Prototype approval and UI Mapping or revision-bound ownership covers that path. This applies equally to copy, style, responsive, accessibility, Page/route addition or removal, and defect correction.
|
|
36
|
+
|
|
31
37
|
1. Write a behavior test through the confirmed public interface.
|
|
32
38
|
2. Run it and retain evidence that it fails for the expected reason.
|
|
33
39
|
3. Implement the minimum behavior needed to pass.
|
|
@@ -42,6 +48,7 @@ Perform cleanup or refactoring only from a Green checkpoint and expose it to ind
|
|
|
42
48
|
## Finish
|
|
43
49
|
|
|
44
50
|
- Run architecture-specified format, lint, type, build, test, migration, and security commands.
|
|
51
|
+
- Run `ai-delivery frontend-guard verify-diff <workspace> --base <fixed-base> --head <candidate-head>` for a UI-bearing package and retain the independent Git diff report; local Hook success is not evidence.
|
|
45
52
|
- Update task-to-experience-change traceability and advance implemented rows through the state CLI; update technical documentation, configuration catalogs, and migration/rollback notes when affected.
|
|
46
53
|
- Record deviations and TDD exceptions explicitly.
|
|
47
54
|
- Commit only files in the allowed scope and produce a review packet with commands and evidence.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Execute Technical Work"
|
|
3
|
-
short_description: "Implement one architecture-constrained technical work package"
|
|
4
|
-
default_prompt: "Use $ai-delivery-execute-work-package to implement the assigned technical work package."
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Execute Technical Work"
|
|
3
|
+
short_description: "Implement one architecture-constrained technical work package"
|
|
4
|
+
default_prompt: "Use $ai-delivery-execute-work-package to implement the assigned technical work package."
|
|
@@ -5,7 +5,7 @@ A package is executable only when it declares:
|
|
|
5
5
|
- stable task, iteration, and slice IDs;
|
|
6
6
|
- objective and observable completion behavior;
|
|
7
7
|
- approved source and standards references;
|
|
8
|
-
- exact ready UI handoff, aligned product
|
|
8
|
+
- exact ready UI handoff, aligned `product-prototype-reconciliation.yaml`, actionable experience-change IDs with create/update/remove/migrate/no-code actions, Prototype revision/checksum, source and review-bundle checksums, UI Mapping and normalized catalog checksums, review/impact checksums, and terminal/Page/Review Scene/prototype-element/UI component/frontend-source/acceptance IDs when UI-bearing;
|
|
9
9
|
- required capability role;
|
|
10
10
|
- allowed and forbidden modification scope;
|
|
11
11
|
- predecessor outputs;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Manage Delivery Git"
|
|
3
|
-
short_description: "Manage iteration branches, worktrees, tags, and release locks"
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Manage Delivery Git"
|
|
3
|
+
short_description: "Manage iteration branches, worktrees, tags, and release locks"
|
|
4
4
|
default_prompt: "Use $ai-delivery-manage-git to perform the required transition in the correct workflow or code repository."
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Manage Standards"
|
|
3
|
-
short_description: "Capture, approve, version, and resolve applicable standards"
|
|
4
|
-
default_prompt: "Use $ai-delivery-manage-standards to capture or resolve project standards."
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Manage Standards"
|
|
3
|
+
short_description: "Capture, approve, version, and resolve applicable standards"
|
|
4
|
+
default_prompt: "Use $ai-delivery-manage-standards to capture or resolve project standards."
|
|
@@ -11,6 +11,20 @@ Coordinate state and handoffs. Do not produce specialist product, architecture,
|
|
|
11
11
|
|
|
12
12
|
Read `.workflow/config/workspace.yaml` before any Git or source operation. The workspace root is the workflow repository; the configured direct child is the only code repository. Workflow facts, approvals, manifests, and checkpoints are committed in the workflow repository. Source, tests, code branches, code Tags, and application commits exist only in the code repository. Every code reference in a workflow artifact must carry `repo_id`, `code_commit`, optional `code_tag`, `source_path`, and SHA-256.
|
|
13
13
|
|
|
14
|
+
## Code Intelligence
|
|
15
|
+
|
|
16
|
+
For source discovery and change-impact analysis, resolve `code_repository.path` from the authoritative workspace configuration. Prefer `codegraph_explore` with the absolute code repository as `projectPath`; when MCP is unavailable but the indexed CLI is ready, use `codegraph explore "<query>" --path <code-repository>`. When CodeGraph is unavailable, uninitialized, unsupported, or fails, fall back to Semble, then `rg` and direct source reads. Treat `codegraph affected` as test recommendations only; it never narrows required tests or a formal Gate. Keep CodeGraph indexes local and outside formal state, artifacts, events, checkpoints, manifests, and archives.
|
|
17
|
+
|
|
18
|
+
## Mock System
|
|
19
|
+
|
|
20
|
+
Use the standalone project Microcks Mock System when a Prototype or UI Acceptance scope needs protocol exchanges. Run `ai-delivery mock setup <workspace>` and `ai-delivery mock start <workspace>`, and register every entry with explicit External Dependency Mock or Product Backend Mock kind, owner, approved contract, replacement condition, operation/channel, and stable scenario identity in its isolated catalog. Review `ai-delivery mock sync <workspace> --dry-run`; that dry-run must validate every named scenario and dispatcher input before `ai-delivery mock sync <workspace>` may run. Export each actual managed UI OpenAPI/AsyncAPI definition into `mock-admin-exports/`, bind its kind, Mock ID, protocol, relative path, and SHA-256 in `mock-admin-export.yaml`, and require freeze to protocol-validate every mapped scenario against those bytes. Prohibit production traffic recording/credentials/unsanitized personal data, require sanitization evidence for explicit imports, and map every active Review Scene exactly once. Run `ai-delivery mock freeze ... --dry-run`, obtain explicit human confirmation of the candidate checksum, freeze, and formally register the exact immutable Mock Scenario Pack before treating it as authoritative. A Product Backend Mock may drive UI scenes, but the real backend is not proven and end-to-end acceptance is not satisfied by mock success. Runtime databases, logs, traffic, and port state are disposable and never enter formal state.
|
|
21
|
+
|
|
22
|
+
## Prototype-First Frontend Guard
|
|
23
|
+
|
|
24
|
+
For any production frontend change, keep the sequence fixed: update the isolated Prototype, obtain the user's Page approval through Workflow Manager P12/P13, freeze the revision with checksummed `frontend-change-scope.yaml` and UI Mapping, then modify production code. Require `ai-delivery frontend-guard check-file` immediately before each UI path is written. Before merge, Candidate Assurance, or another formal handoff, require `ai-delivery frontend-guard verify-diff` from a fixed base to candidate head so an independent Git diff rechecks the revision, receipts, and mapping without trusting the local Hook. A business-logic reason to add or remove a Page returns to experience design and user confirmation first; there is no emergency, copy-only, style-only, accessibility, responsive, or defect-fix exception.
|
|
25
|
+
|
|
26
|
+
Inside `05-candidate-assurance`, every UI-bearing immutable candidate runs `ai-delivery ui-acceptance plan` and `verify` against its pinned Prototype revision, current Page receipts, UI Mapping, Scenario Pack, approved test strategy, and exact Playwright environment. UI Acceptance is part of Candidate Assurance, not a new formal node. Reject incomplete Scene/viewport coverage, visual ratios above policy, interaction/accessibility/responsive/recovery/protocol failures, stale bindings, or Product Backend Mock presented as real backend evidence. A candidate checksum change always returns to `04-implementation` and starts a new assurance attempt.
|
|
27
|
+
|
|
14
28
|
## Artifact Location
|
|
15
29
|
|
|
16
30
|
Require every workflow document to be written under project `.workflow/`. Use `.workflow/delivery/` for workflow control, `.workflow/standards/` for standards, `.workflow/product/`, `.workflow/architecture/`, and `.workflow/experience/` for reusable baselines, and `.workflow/iterations/<iteration-id>/<node-id>/` for version-scoped node outputs. Keep source code, automated test source, repository configuration, and non-document build artifacts in their native locations.
|
|
@@ -18,22 +32,28 @@ Require every workflow document to be written under project `.workflow/`. Use `.
|
|
|
18
32
|
## Task State
|
|
19
33
|
|
|
20
34
|
1. Invoke `$ai-delivery-bootstrap` in read-only inspect mode when the current session has not classified project state. Do this before checkpoint recovery because an empty or partially initialized project may not have a valid runtime store.
|
|
21
|
-
2. After iteration planning, persist the ordered known-task plan and initialize every known task snapshot as `queued` with `sequence` and
|
|
22
|
-
3. For a complete workflow, first read Bootstrap's `next_action_owner`. Only for `agent`, invoke `$ai-delivery-checkpoint-task recover --iteration-id <iteration-id>` before preflight. Recovery must rebuild local state from the latest Git-tracked shared checkpoint when local runtime is absent. Continue the returned `recommended_task_id`;
|
|
23
|
-
4.
|
|
24
|
-
5. Checkpoint after every meaningful artifact, gate, validation, merge, deployment action, or other external milestone, and before compaction or interruption.
|
|
25
|
-
6. Before returning, finish the snapshot as `completed`, `blocked`, `failed`, or `interrupted`, with actual outputs, evidence, blockers, and one idempotent next action. A Hook event alone never proves completion.
|
|
35
|
+
2. After iteration planning, persist the ordered known-task plan and initialize every known task snapshot as `queued` with `sequence`, `depends_on`, `--scope`, `--acceptance`, and `--responsibility`. Keep one task ID while iteration, node, skill, goal, scope, responsibility, dependencies, and acceptance remain unchanged; the CLI rejects the same contract under another ID. A material contract change requires a new task ID linked with `--derived-from` or `--supersedes`; planning, review, triage, repair, test, and version rounds are not new tasks. When a node derives dynamic tasks, append and register the complete derived group before executing its first task.
|
|
36
|
+
3. For a complete workflow, first read Bootstrap's `next_action_owner`. Only for `agent`, invoke `$ai-delivery-checkpoint-task recover --iteration-id <iteration-id>` before preflight. Recovery must rebuild local state from the latest Git-tracked shared checkpoint when local runtime is absent. Continue the returned `recommended_task_id`; when its status is `failed`, explicitly activate it with `--new-attempt --phase repair`. Never choose the next task from chat memory. For `user` or `external`, stop at the zero-mutation wait boundary in step 7.
|
|
37
|
+
4. Run `task-state.mjs inspect --task-id <task-id>` for read-only diagnosis, then activate the recommended task with its structured `--phase` before project mutation, checkpoint, or finish. Initialize new tasks only as queued; activation is the only path that starts an attempt and checks dependencies. Never override derived phase status with `--phase-status`. If no task is recommended, reconcile missing or unsatisfied task-plan entries before continuing.
|
|
38
|
+
5. Checkpoint after every meaningful artifact, gate, validation, merge, deployment action, or other external milestone, and before compaction or interruption. Finding history is append-only. Record resolution only for an existing open finding, in repair/test/verification, with evidence and one approved `change_set_id`; record paired time categories when measured.
|
|
39
|
+
6. Before returning, finish the snapshot as `completed`, `blocked`, `failed`, or `interrupted`, with actual outputs, evidence, blockers, and one idempotent next action. Completion is refused while a task-level current blocking finding remains open. A failed task remains retryable work and never satisfies dependencies; retry an unchanged logical task only with explicit `activate --new-attempt --phase repair`. A Hook event alone never proves completion.
|
|
26
40
|
7. Persist `next_action_owner` as `agent`, `user`, or `external`. A user- or external-owned next action is a zero-mutation wait state: on restart or a generic “continue”, return only the recorded question or wait condition. Do not recover, activate, checkpoint, mutate artifacts, or change Git state until the required input arrives and ownership is explicitly transferred to `agent` with a new idempotent next action through the task CLI.
|
|
27
41
|
|
|
28
42
|
## Formal State
|
|
29
43
|
|
|
44
|
+
The installed producer route is `development-seven-node`: `00-bootstrap -> 01-product-shaping -> 02-solution-design -> 03-delivery-readiness -> 04-implementation -> 05-candidate-assurance -> 06-version-closeout`. Producer Skills and installed guidance use only these development node IDs. `development-legacy-13` is read-only compatibility: inspect, verify, rebuild, and explicit migration may consume historical state, while every new legacy task, artifact, transition, candidate, closeout, or Gate write is rejected. Release nodes `R00-release-request` through `R10-release-archive` remain writable.
|
|
45
|
+
|
|
46
|
+
When Bootstrap reports legacy compatibility or a premature archive, use the packaged top-level CLI before normal orchestration. Run `ai-delivery migrate <project> --dry-run` and require a reviewed report with schemas, semantic task groups, ambiguities, conflicts, verified anchors, and exact file changes. A legacy root migration copies workflow material into `.workflow/`; flat task shards gain explicit attempts without changing their lifecycle status or scope. Resolve every ambiguity through a source-checksum-bound `--decisions` document with a `human:` actor and rationale, then rerun dry-run. Apply migration only when `can_apply` is true; its manifest and backups must preserve source bytes, task lifecycle facts, scope, formal views, and legacy event bytes. Resolve an incorrect archive only through `ai-delivery repair <project> --invalidate-archive <iteration-id>` with an explicit human actor, reason, RCA evidence, and recovery evidence. The resulting forward transaction invalidates current eligibility while the original archive remains byte-identical. Use rollback only before any post-migration schema 2 transaction or migrated-byte drift; afterward use forward repair. Compaction is never part of migration: run `ai-delivery compact <project> --dry-run` only after a trusted anchor exists, review its exact coverage and byte report, and apply only on explicit operator intent.
|
|
47
|
+
|
|
30
48
|
1. Use `node .workflow/tools/state/state.mjs inspect` to read schema 2 formal state: independent `development_state` and `release_state` scopes, the top-level workflow audit revision, and the artifact-registry revision.
|
|
31
|
-
2.
|
|
49
|
+
2. Keep `draft` and `review-draft` files mutable and outside the formal registry. Register only immutable semantic revisions such as `submitted`, `rejected`, `approved`, `frozen`, or `failed`; every later decision uses a new artifact ID and `--supersedes`. `artifact status` exists only to migrate a legacy registered working draft once and must not mutate a formal revision.
|
|
32
50
|
3. Start development with `iteration-started`; start release only after explicit user intent with `release-started`. Record node, candidate, closeout, and archive changes with `transition`. Record human or contract Gates with `gate request` and `gate decide`.
|
|
33
|
-
4.
|
|
34
|
-
5.
|
|
35
|
-
6.
|
|
36
|
-
7.
|
|
51
|
+
4. At Delivery Readiness, run `scope freeze` to enable `scope_contract_version: 1` and bind approved Slices, requirements, acceptance, tasks, and artifacts. Afterward, only a human-approved `scope amend` may change scope. Use `scope warn` for a budget overrun; it must remain `warn-only` with `reslice_performed: false` and must not automatically replan or reslice.
|
|
52
|
+
5. Read `inspect.derived_node_states` instead of assigning formal node status from narration. The projection uses task facts and blocking findings, Gates, artifacts, candidate identity, the current scope manifest, and completion receipts. A governed node may complete only from `ready-to-complete`; completion writes a receipt bound to those facts. Historical scopes without `scope_contract_version` retain legacy compatibility.
|
|
53
|
+
6. Pass `artifact_registry.revision` through `--expected-revision` for artifact mutations. For scope, transition, and Gate mutations, pass the owning `development_state.revision` or `release_state.revision` through `--expected-scope-revision`; the top-level workflow revision form remains compatibility-only. A transition or Gate that consumes evidence records an artifact handoff in the same transaction and advances the artifact-registry revision, so inspect again before the next artifact mutation. On a conflict, inspect again and reconcile; never retry blindly.
|
|
54
|
+
7. Run routine `verify` before handoff, node completion, and after recovery. It validates current formal views without traversing historical shards or decompressing archives. At ordinary task safe points, run `snapshot create --reason configured-interval`; the command is a no-op until the configured event interval is reached. Run `verify --history --since-anchor` after an anchor exists. `artifact compact` and `artifact prune` default to zero-write plans. Compact preserves original legacy shards in a checksummed gzip bundle and removes loose files only after full replay reproduces the anchored registry checksum; afterward `verify --history` reports `compacted-history`. Only explicit `artifact prune --apply` may replace covered shards with a retention receipt; afterward verification reports `retained-history` and does not claim deleted bytes were re-audited. Let the CLI enforce graph prerequisites, successful completion evidence, current-attempt mandatory Gates, and scope identity. Release nodes independently require routine verification at every release handoff. Stop on checksum, schema, audit, identity, or state-invariant failure.
|
|
55
|
+
8. Never directly edit controlled formal state, shared task/checkpoint shards, or runtime task state. Treat global workflow and artifact indexes as deterministic views over authoritative shards where available. If either state script fails, repair the input or script problem rather than bypassing it.
|
|
56
|
+
9. When the user clearly expresses a workflow improvement, invoke `$ai-delivery-evolve-workflow feedback record` and report the feedback ID. Do not save ordinary discussion, full conversation text, secrets, or AI reasoning. Evaluate pending evidence only after a task, version closeout, or explicit evolution review.
|
|
37
57
|
|
|
38
58
|
## Preflight
|
|
39
59
|
|
|
@@ -47,22 +67,16 @@ Require every workflow document to be written under project `.workflow/`. Use `.
|
|
|
47
67
|
|
|
48
68
|
## Route The Workflow
|
|
49
69
|
|
|
50
|
-
Use this
|
|
51
|
-
|
|
52
|
-
1. `$ai-delivery-bootstrap
|
|
53
|
-
2. `$ai-delivery-define-product
|
|
54
|
-
3. `$ai-delivery-design-architecture
|
|
55
|
-
4.
|
|
56
|
-
5. `$ai-delivery-
|
|
57
|
-
6. `$ai-delivery-
|
|
58
|
-
7. `$ai-delivery-
|
|
59
|
-
8.
|
|
60
|
-
9. `$ai-delivery-design-tests`: prototype test receipt and public test contract.
|
|
61
|
-
10. `$ai-delivery-develop-iteration`, including independent change review.
|
|
62
|
-
11. Join the candidate and delivery-platform streams in a reproducible test environment.
|
|
63
|
-
12. `$ai-delivery-verify-candidate` with `scope: iteration`; route failures upstream.
|
|
64
|
-
13. `$ai-delivery-close-version`; create the immutable `version-ready` tag, advance `line/<product-id>`, mark the version `release-ready`, move closed shared task/checkpoint shards to `.workflow/control/archives/versions/<version-id>/`, and remove them from active recovery collections.
|
|
65
|
-
14. Stop. Continue the next cumulative planned version from the latest line head, or wait for explicit user intent.
|
|
70
|
+
Use this producer order:
|
|
71
|
+
|
|
72
|
+
1. `00-bootstrap`: `$ai-delivery-bootstrap` classifies state, initializes missing project context, or routes checkpoint recovery.
|
|
73
|
+
2. `01-product-shaping`: `$ai-delivery-define-product` owns discovery `GATE-A`, product-baseline `GATE-B`, and prototype reconciliation. Reuse an unaffected approved product baseline by exact artifact identity and checksum instead of replaying its interviews or Gates.
|
|
74
|
+
3. `02-solution-design`: `$ai-delivery-design-architecture` and `$ai-delivery-design-experience` coordinate initial architecture, `UX-VS`, `UX-UI`, product reconciliation, and final architecture. Reuse unaffected approved architecture or experience baselines by exact identity and checksum.
|
|
75
|
+
4. `03-delivery-readiness`: `$ai-delivery-prepare-platform`, `$ai-delivery-plan-iteration`, and `$ai-delivery-design-tests` converge on one approved Slice, dependency, acceptance, task, artifact, environment, and public-test contract; then freeze it with `scope freeze`.
|
|
76
|
+
5. `04-implementation`: `$ai-delivery-develop-iteration` coordinates stable logical-task attempts for implementation, package review, triage, repair, and developer tests. It completes only after selecting and retaining one immutable candidate as evidence.
|
|
77
|
+
6. `05-candidate-assurance`: `$ai-delivery-review-change` and `$ai-delivery-verify-candidate` collect review feedback and independently verify the candidate bound when the node attempt starts. Findings are applied only as an approved `change_set_id`; any candidate-changing repair returns through `04-implementation` and creates a new candidate and assurance attempt.
|
|
78
|
+
7. `06-version-closeout`: `$ai-delivery-close-version` creates the immutable `version-ready` tag, advances `line/<product-id>`, marks the version `release-ready`, archives closed task/checkpoint shards, and removes them from active recovery collections.
|
|
79
|
+
8. Stop. Continue the next cumulative planned version from the latest line head, or wait for explicit user intent.
|
|
66
80
|
|
|
67
81
|
At every task and version safe point, route eligible feedback and trial observations through `$ai-delivery-evolve-workflow`. Extension behavior begins with the next task or version and never mutates an in-progress execution.
|
|
68
82
|
|
|
@@ -76,19 +90,23 @@ Pause for humans at:
|
|
|
76
90
|
|
|
77
91
|
- discovery Gate A and product baseline Gate B;
|
|
78
92
|
- major architecture decisions;
|
|
79
|
-
-
|
|
80
|
-
- each visual or interactive
|
|
93
|
+
- the Prototype's authoring-tool selection before prototype authoring;
|
|
94
|
+
- each visual or interactive Page revision's `UX-VS` and `UX-UI` decisions, repeated until the latest round is approved and every comment is terminal;
|
|
81
95
|
- production deployment approval;
|
|
82
96
|
- every proposed standard creation, update, deprecation, or exception.
|
|
83
97
|
|
|
84
98
|
Allow downstream contract validation instead of human approval at ordinary intermediate handoffs.
|
|
85
99
|
|
|
100
|
+
At either experience Gate, start or reuse `ai-delivery manager serve <workspace>`, report its loopback URL, and route the user to P11 for Visual Standard or P12/P13 for the exact Prototype revision. The Manager must bind the displayed content and every decision to the current checksummed target. A mismatched target, non-loopback origin, or target drift keeps ownership with the agent for repair and must never be presented for human approval.
|
|
101
|
+
|
|
102
|
+
During `UX-UI`, route each human Page decision through Workflow Manager P13 and report the Page IDs in `pending-review`, `changes-requested`, or `stale`. Do not replace or re-slice the planned work automatically. Only an identical checksum may carry the latest approved Page decision forward; a later changes-requested decision blocks inheritance. When the user approves the final pending Page, require one atomic transaction to write both its immutable Page receipt and the `UX-UI` Gate decision before advancing the formal node. After that Gate is approved, reject further Page writes until a new immutable Prototype revision has a new pending `UX-UI` request.
|
|
103
|
+
|
|
86
104
|
## Maintain State
|
|
87
105
|
|
|
88
106
|
- Give every project, iteration, artifact, feature, story, acceptance criterion, slice, task, test, defect, release item, and deployment a stable ID.
|
|
89
107
|
- Record artifact input IDs and versions; never infer dependencies from filenames.
|
|
90
108
|
- Treat approved baselines and release versions as immutable. Create a new version for changes.
|
|
91
|
-
- Carry the same immutable UI handoff, aligned product reconciliation, experience-change set,
|
|
109
|
+
- Carry the same immutable UI handoff, aligned product reconciliation, experience-change set, exact Prototype revision/checksum, source revision/checksum, review-bundle checksum, UI Mapping and normalized catalog checksums, review/adjustment checksums, and impact-assessment checksum through architecture, planning, test design, development, and verification. Reject missing or conflicting references and never infer relationships from file names or catalog order.
|
|
92
110
|
- Mark downstream artifacts stale after an upstream change and route only the impacted work.
|
|
93
111
|
- Record the standards baseline used by every artifact.
|
|
94
112
|
- Keep one production release transition locked at a time while allowing later cumulative iteration work in parallel.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "AI Delivery Orchestrator"
|
|
3
|
-
short_description: "Coordinate AI delivery stages, gates, artifacts, and routing"
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "AI Delivery Orchestrator"
|
|
3
|
+
short_description: "Coordinate AI delivery stages, gates, artifacts, and routing"
|
|
4
4
|
default_prompt: "Use $ai-delivery-orchestrate to start or continue the current workflow using the configured workflow and code repositories."
|
package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/migrations/.gitkeep
ADDED
|
File without changes
|
package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/control/repairs/.gitkeep
ADDED
|
File without changes
|
|
@@ -9,6 +9,7 @@ development_state:
|
|
|
9
9
|
completed_nodes: []
|
|
10
10
|
pending_gates: []
|
|
11
11
|
gate_decisions: []
|
|
12
|
+
contract_retirement_receipts: []
|
|
12
13
|
node_attempts: {}
|
|
13
14
|
latest_candidate_id: null
|
|
14
15
|
latest_release_id: null
|
|
@@ -22,6 +23,7 @@ release_state:
|
|
|
22
23
|
completed_nodes: []
|
|
23
24
|
pending_gates: []
|
|
24
25
|
gate_decisions: []
|
|
26
|
+
contract_retirement_receipts: []
|
|
25
27
|
node_attempts: {}
|
|
26
28
|
latest_candidate_id: null
|
|
27
29
|
latest_release_id: null
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { runFrontendGuardCommand } from "./frontend-guard-runtime.mjs";
|
|
5
|
+
|
|
6
|
+
function usage() {
|
|
7
|
+
return [
|
|
8
|
+
"Usage:",
|
|
9
|
+
" frontend-guard <check-file|verify-diff> [project] [--path <file>] [--base <git-ref>] [--head <git-ref>] [--experience <relative-directory>] [--revision <relative-yaml>]",
|
|
10
|
+
].join("\n");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function parseArgs(args) {
|
|
14
|
+
const options = new Map();
|
|
15
|
+
const positionals = [];
|
|
16
|
+
const valueOptions = new Set(["--path", "--base", "--head", "--experience", "--revision"]);
|
|
17
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
18
|
+
const value = args[index];
|
|
19
|
+
if (valueOptions.has(value)) {
|
|
20
|
+
const optionValue = args[index + 1];
|
|
21
|
+
if (!optionValue || optionValue.startsWith("--")) throw new Error(`Missing value for ${value}`);
|
|
22
|
+
options.set(value, optionValue);
|
|
23
|
+
index += 1;
|
|
24
|
+
} else if (value.startsWith("--")) throw new Error(`Unknown option: ${value}`);
|
|
25
|
+
else positionals.push(value);
|
|
26
|
+
}
|
|
27
|
+
return { options, positionals };
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
const args = process.argv.slice(2);
|
|
32
|
+
const action = args[0];
|
|
33
|
+
if (!action || action === "--help" || action === "help") {
|
|
34
|
+
process.stdout.write(`${usage()}\n`);
|
|
35
|
+
} else {
|
|
36
|
+
const { options, positionals } = parseArgs(args);
|
|
37
|
+
const target = path.resolve(positionals[0] || process.cwd());
|
|
38
|
+
const report = runFrontendGuardCommand(target, action, {
|
|
39
|
+
path: options.get("--path"),
|
|
40
|
+
base: options.get("--base"),
|
|
41
|
+
head: options.get("--head"),
|
|
42
|
+
experience: options.get("--experience"),
|
|
43
|
+
revision: options.get("--revision"),
|
|
44
|
+
});
|
|
45
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
46
|
+
}
|
|
47
|
+
} catch (error) {
|
|
48
|
+
process.stderr.write(`ai-delivery-frontend-guard: ${error.message}\n`);
|
|
49
|
+
process.exitCode = 1;
|
|
50
|
+
}
|
package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/hooks/hook-event.mjs
CHANGED
|
@@ -53,6 +53,96 @@ async function readStdin() {
|
|
|
53
53
|
return Buffer.concat(chunks).toString("utf8");
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
function preToolUsePaths(input) {
|
|
57
|
+
const eventName = String(input.hook_event_name || input.hookEventName || "").toLowerCase();
|
|
58
|
+
if (eventName !== "pretooluse") return [];
|
|
59
|
+
const toolName = String(input.tool_name || input.toolName || "")
|
|
60
|
+
.toLowerCase()
|
|
61
|
+
.replace(/[^a-z0-9]/g, "");
|
|
62
|
+
const mutatingFileTools = [
|
|
63
|
+
"applypatch", "edit", "editfile", "multiedit", "write", "writefile",
|
|
64
|
+
"createfile", "deletefile", "movefile", "renamefile", "replacefile",
|
|
65
|
+
];
|
|
66
|
+
if (!mutatingFileTools.some((name) => toolName === name || toolName.endsWith(name))) return [];
|
|
67
|
+
const toolInput = input.tool_input && typeof input.tool_input === "object"
|
|
68
|
+
? input.tool_input
|
|
69
|
+
: {};
|
|
70
|
+
const candidates = [];
|
|
71
|
+
for (const field of ["file_path", "path", "target_file"]) {
|
|
72
|
+
if (typeof toolInput[field] === "string") candidates.push(toolInput[field]);
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(toolInput.edits)) {
|
|
75
|
+
for (const edit of toolInput.edits) {
|
|
76
|
+
if (!edit || typeof edit !== "object") continue;
|
|
77
|
+
for (const field of ["file_path", "path", "target_file"]) {
|
|
78
|
+
if (typeof edit[field] === "string") candidates.push(edit[field]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
for (const field of ["patch", "input"]) {
|
|
83
|
+
if (typeof toolInput[field] !== "string") continue;
|
|
84
|
+
for (const line of toolInput[field].split(/\r?\n/)) {
|
|
85
|
+
const match = line.match(/^\*\*\* (?:Add|Update|Delete) File: (.+)$/)
|
|
86
|
+
|| line.match(/^\*\*\* Move to: (.+)$/);
|
|
87
|
+
if (match) candidates.push(match[1]);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return [...new Set(candidates.map((item) => item.trim()).filter(Boolean))];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function owningGitRoot(file) {
|
|
94
|
+
let current = fs.existsSync(file) && fs.statSync(file).isDirectory() ? file : path.dirname(file);
|
|
95
|
+
while (!fs.existsSync(current)) {
|
|
96
|
+
const parent = path.dirname(current);
|
|
97
|
+
if (parent === current) return null;
|
|
98
|
+
current = parent;
|
|
99
|
+
}
|
|
100
|
+
const result = spawnSync("git", ["-C", current, "rev-parse", "--show-toplevel"], {
|
|
101
|
+
encoding: "utf8",
|
|
102
|
+
timeout: 5_000,
|
|
103
|
+
windowsHide: true,
|
|
104
|
+
});
|
|
105
|
+
return result.status === 0 ? path.resolve(result.stdout.trim()) : null;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function samePath(left, right) {
|
|
109
|
+
const normalize = (value) => process.platform === "win32"
|
|
110
|
+
? path.resolve(value).toLowerCase()
|
|
111
|
+
: path.resolve(value);
|
|
112
|
+
return normalize(left) === normalize(right);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function enforceFrontendGuard(projectRoot, input) {
|
|
116
|
+
const changedPaths = preToolUsePaths(input);
|
|
117
|
+
if (!changedPaths.length) return;
|
|
118
|
+
const guardCli = path.join(projectRoot, ".workflow", "tools", "frontend-guard", "frontend-guard.mjs");
|
|
119
|
+
if (!fs.existsSync(guardCli)) {
|
|
120
|
+
throw new Error(`Frontend guard runtime is missing: ${guardCli}`);
|
|
121
|
+
}
|
|
122
|
+
for (const changedPath of changedPaths) {
|
|
123
|
+
const resolvedChangedPath = path.isAbsolute(changedPath)
|
|
124
|
+
? changedPath
|
|
125
|
+
: path.resolve(process.cwd(), changedPath);
|
|
126
|
+
const gitRoot = owningGitRoot(resolvedChangedPath);
|
|
127
|
+
if (gitRoot && samePath(gitRoot, projectRoot)) continue;
|
|
128
|
+
const guarded = spawnSync(process.execPath, [
|
|
129
|
+
guardCli, "check-file", projectRoot, "--path", resolvedChangedPath,
|
|
130
|
+
], {
|
|
131
|
+
cwd: projectRoot,
|
|
132
|
+
encoding: "utf8",
|
|
133
|
+
timeout: 15_000,
|
|
134
|
+
windowsHide: true,
|
|
135
|
+
});
|
|
136
|
+
if (guarded.error || guarded.status !== 0) {
|
|
137
|
+
throw new Error(
|
|
138
|
+
guarded.error?.message
|
|
139
|
+
|| guarded.stderr.trim()
|
|
140
|
+
|| `Frontend guard rejected ${resolvedChangedPath}.`,
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
56
146
|
try {
|
|
57
147
|
const currentProjectFile = findUp(process.cwd(), path.join(".workflow", "delivery", "project.yaml"));
|
|
58
148
|
const legacyProjectFile = currentProjectFile
|
|
@@ -67,6 +157,7 @@ try {
|
|
|
67
157
|
const marker = fs.existsSync(markerFile) ? JSON.parse(fs.readFileSync(markerFile, "utf8")) : null;
|
|
68
158
|
const raw = await readStdin();
|
|
69
159
|
const input = raw.trim() ? JSON.parse(raw) : {};
|
|
160
|
+
enforceFrontendGuard(projectRoot, input);
|
|
70
161
|
const taskId = safeId(process.env.AI_DELIVERY_TASK_ID || marker?.task_id || input.turn_id || input.session_id);
|
|
71
162
|
const stateRoot = path.resolve(process.env.AI_DELIVERY_STATE_ROOT || marker?.state_root || projectRoot);
|
|
72
163
|
const workflowRoot = fs.existsSync(path.join(stateRoot, ".workflow", "delivery", "project.yaml"))
|
package/skills/ai-delivery-orchestrate/assets/project-template/.workflow/tools/manager/manager.mjs
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import {
|
|
7
|
+
WorkflowManagerError,
|
|
8
|
+
renderWorkflowManagerCommandHelp,
|
|
9
|
+
runWorkflowManagerCommand,
|
|
10
|
+
} from "./workflow-manager-runtime.mjs";
|
|
11
|
+
|
|
12
|
+
const runtimeRoot = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const defaultProjectRoot = path.resolve(runtimeRoot, "..", "..", "..");
|
|
14
|
+
|
|
15
|
+
function option(args, name) {
|
|
16
|
+
const index = args.indexOf(name);
|
|
17
|
+
if (index === -1) return null;
|
|
18
|
+
const value = args[index + 1];
|
|
19
|
+
if (!value || value.startsWith("--")) throw new Error(`Missing value for ${name}`);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const args = process.argv.slice(2);
|
|
25
|
+
const action = args[0];
|
|
26
|
+
if (!action || action === "help" || action === "--help") {
|
|
27
|
+
process.stdout.write(`${renderWorkflowManagerCommandHelp(null, { command: "manager" })}\n`);
|
|
28
|
+
} else if (action === "action" && args.includes("--help")) {
|
|
29
|
+
process.stdout.write(`${renderWorkflowManagerCommandHelp(args[1], { command: "manager" })}\n`);
|
|
30
|
+
} else {
|
|
31
|
+
const actionName = action === "action" ? args[1] : null;
|
|
32
|
+
const projectIndex = action === "action" ? 2 : 1;
|
|
33
|
+
const projectArg = args[projectIndex] && !args[projectIndex].startsWith("--")
|
|
34
|
+
? args[projectIndex]
|
|
35
|
+
: defaultProjectRoot;
|
|
36
|
+
const inputFile = option(args, "--input");
|
|
37
|
+
const result = await runWorkflowManagerCommand(runtimeRoot, path.resolve(projectArg), action, {
|
|
38
|
+
port: option(args, "--port"),
|
|
39
|
+
open: !args.includes("--no-open"),
|
|
40
|
+
resource: option(args, "--resource"),
|
|
41
|
+
experience: option(args, "--experience"),
|
|
42
|
+
revision: option(args, "--revision"),
|
|
43
|
+
branch: option(args, "--branch"),
|
|
44
|
+
attachmentId: option(args, "--attachment-id"),
|
|
45
|
+
expectedChecksum: option(args, "--expected-checksum"),
|
|
46
|
+
terminalId: option(args, "--terminal-id"),
|
|
47
|
+
sourceSnapshotId: option(args, "--source-snapshot-id"),
|
|
48
|
+
sourceRef: option(args, "--source-ref"),
|
|
49
|
+
pageId: option(args, "--page-id"),
|
|
50
|
+
reviewSceneId: option(args, "--review-scene-id"),
|
|
51
|
+
actionName,
|
|
52
|
+
input: inputFile ? JSON.parse(fs.readFileSync(path.resolve(inputFile), "utf8")) : undefined,
|
|
53
|
+
});
|
|
54
|
+
process.stdout.write(`${JSON.stringify(result?.report || result, null, 2)}\n`);
|
|
55
|
+
}
|
|
56
|
+
} catch (error) {
|
|
57
|
+
process.stderr.write(`${JSON.stringify({
|
|
58
|
+
error: {
|
|
59
|
+
code: error instanceof WorkflowManagerError ? error.code : "invalid-request",
|
|
60
|
+
message: error?.message || "Workflow Manager request failed",
|
|
61
|
+
},
|
|
62
|
+
})}\n`);
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { runMockSystemAction } from "./mock-system.mjs";
|
|
5
|
+
|
|
6
|
+
function usage() {
|
|
7
|
+
return [
|
|
8
|
+
"Usage:",
|
|
9
|
+
" mock <setup|start|stop|status|sync> [project] [--dry-run]",
|
|
10
|
+
" mock freeze [project] --experience <relative-directory> --scenario-pack <relative-yaml> [--dry-run]",
|
|
11
|
+
].join("\n");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function parseArgs(args) {
|
|
15
|
+
const options = new Map();
|
|
16
|
+
const positionals = [];
|
|
17
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
18
|
+
const value = args[index];
|
|
19
|
+
if (value === "--dry-run") continue;
|
|
20
|
+
if (value === "--experience" || value === "--scenario-pack") {
|
|
21
|
+
const optionValue = args[index + 1];
|
|
22
|
+
if (!optionValue || optionValue.startsWith("--")) throw new Error(`Missing value for ${value}`);
|
|
23
|
+
options.set(value, optionValue);
|
|
24
|
+
index += 1;
|
|
25
|
+
} else if (value.startsWith("--")) throw new Error(`Unknown option: ${value}`);
|
|
26
|
+
else positionals.push(value);
|
|
27
|
+
}
|
|
28
|
+
return { options, positionals };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
const args = process.argv.slice(2);
|
|
33
|
+
const action = args[0];
|
|
34
|
+
if (!action || action === "--help" || action === "help") {
|
|
35
|
+
process.stdout.write(`${usage()}\n`);
|
|
36
|
+
} else {
|
|
37
|
+
const { options, positionals } = parseArgs(args);
|
|
38
|
+
const projectArg = positionals[0];
|
|
39
|
+
const target = path.resolve(projectArg || process.cwd());
|
|
40
|
+
const result = await runMockSystemAction(target, action, {
|
|
41
|
+
dryRun: args.includes("--dry-run"),
|
|
42
|
+
experience: options.get("--experience"),
|
|
43
|
+
scenarioPack: options.get("--scenario-pack"),
|
|
44
|
+
});
|
|
45
|
+
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
46
|
+
}
|
|
47
|
+
} catch (error) {
|
|
48
|
+
process.stderr.write(`ai-delivery-mock: ${error.message}\n`);
|
|
49
|
+
process.exitCode = 1;
|
|
50
|
+
}
|