@guanlin4924/devflow-pi 0.1.93 → 0.1.95
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 +10 -10
- package/node_modules/@playwright/test/LICENSE +202 -0
- package/node_modules/@playwright/test/NOTICE +5 -0
- package/node_modules/@playwright/test/README.md +318 -0
- package/node_modules/@playwright/test/cli.js +19 -0
- package/node_modules/@playwright/test/index.d.ts +18 -0
- package/node_modules/@playwright/test/index.js +17 -0
- package/node_modules/@playwright/test/index.mjs +18 -0
- package/node_modules/@playwright/test/package.json +35 -0
- package/node_modules/@playwright/test/reporter.d.ts +17 -0
- package/node_modules/@playwright/test/reporter.js +17 -0
- package/node_modules/@playwright/test/reporter.mjs +17 -0
- package/node_modules/playwright/LICENSE +202 -0
- package/node_modules/playwright/NOTICE +5 -0
- package/node_modules/playwright/README.md +318 -0
- package/node_modules/playwright/ThirdPartyNotices.txt +14 -0
- package/node_modules/playwright/cli.js +19 -0
- package/node_modules/playwright/index.d.ts +17 -0
- package/node_modules/playwright/index.js +17 -0
- package/node_modules/playwright/index.mjs +18 -0
- package/node_modules/playwright/jsx-runtime.js +42 -0
- package/node_modules/playwright/jsx-runtime.mjs +21 -0
- package/node_modules/playwright/lib/agents/agentParser.js +89 -0
- package/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
- package/node_modules/playwright/lib/agents/generateAgents.js +395 -0
- package/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
- package/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
- package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
- package/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
- package/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +56 -0
- package/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
- package/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +74 -0
- package/node_modules/playwright/lib/cli/reportActions.js +78 -0
- package/node_modules/playwright/lib/cli/testActions.js +214 -0
- package/node_modules/playwright/lib/common/index.js +2923 -0
- package/node_modules/playwright/lib/common/index.js.txt +34 -0
- package/node_modules/playwright/lib/errorContext.js +129 -0
- package/node_modules/playwright/lib/globals.js +58 -0
- package/node_modules/playwright/lib/index.js +815 -0
- package/node_modules/playwright/lib/isomorphic.js +260 -0
- package/node_modules/playwright/lib/isomorphic.js.txt +9 -0
- package/node_modules/playwright/lib/loader/loaderProcessEntry.js +34 -0
- package/node_modules/playwright/lib/loader/loaderProcessEntry.js.txt +9 -0
- package/node_modules/playwright/lib/matchers/expect.js +13490 -0
- package/node_modules/playwright/lib/matchers/expect.js.LICENSE +640 -0
- package/node_modules/playwright/lib/matchers/expect.js.txt +67 -0
- package/node_modules/playwright/lib/mcp/test/browserBackend.js +135 -0
- package/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
- package/node_modules/playwright/lib/mcp/test/plannerTools.js +150 -0
- package/node_modules/playwright/lib/mcp/test/seed.js +82 -0
- package/node_modules/playwright/lib/mcp/test/streams.js +44 -0
- package/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
- package/node_modules/playwright/lib/mcp/test/testContext.js +306 -0
- package/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
- package/node_modules/playwright/lib/mcp/test/testTools.js +98 -0
- package/node_modules/playwright/lib/package.js +47 -0
- package/node_modules/playwright/lib/program.js +241 -0
- package/node_modules/playwright/lib/runner/index.js +8527 -0
- package/node_modules/playwright/lib/runner/index.js.txt +61 -0
- package/node_modules/playwright/lib/transform/babelBundle.js +72274 -0
- package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +2384 -0
- package/node_modules/playwright/lib/transform/babelBundle.js.txt +325 -0
- package/node_modules/playwright/lib/transform/esmLoader.js +8054 -0
- package/node_modules/playwright/lib/transform/esmLoader.js.LICENSE +355 -0
- package/node_modules/playwright/lib/transform/esmLoader.js.txt +60 -0
- package/node_modules/playwright/lib/util.js +373 -0
- package/node_modules/playwright/lib/worker/workerProcessEntry.js +1861 -0
- package/node_modules/playwright/lib/worker/workerProcessEntry.js.txt +19 -0
- package/node_modules/playwright/package.json +55 -0
- package/node_modules/playwright/test.d.ts +18 -0
- package/node_modules/playwright/test.js +24 -0
- package/node_modules/playwright/test.mjs +35 -0
- package/node_modules/playwright/types/test.d.ts +11074 -0
- package/node_modules/playwright/types/testReporter.d.ts +950 -0
- package/node_modules/playwright-core/LICENSE +202 -0
- package/node_modules/playwright-core/NOTICE +5 -0
- package/node_modules/playwright-core/README.md +3 -0
- package/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
- package/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
- package/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/node_modules/playwright-core/browsers.json +52 -0
- package/node_modules/playwright-core/cli.js +21 -0
- package/node_modules/playwright-core/index.d.ts +17 -0
- package/node_modules/playwright-core/index.js +17 -0
- package/node_modules/playwright-core/index.mjs +28 -0
- package/node_modules/playwright-core/lib/bootstrap.js +88 -0
- package/node_modules/playwright-core/lib/coreBundle.js +75813 -0
- package/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
- package/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
- package/node_modules/playwright-core/lib/entry/mcp.js +10 -0
- package/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
- package/node_modules/playwright-core/lib/package.js +50 -0
- package/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
- package/node_modules/playwright-core/lib/server/electron/loader.js +116 -0
- package/node_modules/playwright-core/lib/serverRegistry.js +1939 -0
- package/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +65 -0
- package/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
- package/node_modules/playwright-core/lib/tools/cli-client/cli.js +6 -0
- package/node_modules/playwright-core/lib/tools/cli-client/help.json +721 -0
- package/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
- package/node_modules/playwright-core/lib/tools/cli-client/output.js +351 -0
- package/node_modules/playwright-core/lib/tools/cli-client/program.js +418 -0
- package/node_modules/playwright-core/lib/tools/cli-client/registry.js +180 -0
- package/node_modules/playwright-core/lib/tools/cli-client/session.js +259 -0
- package/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +425 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +241 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +225 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +143 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +174 -0
- package/node_modules/playwright-core/lib/tools/utils/extension.js +112 -0
- package/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
- package/node_modules/playwright-core/lib/utilsBundle.js +85357 -0
- package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +1890 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
- package/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
- package/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
- package/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/report.css +2 -0
- package/node_modules/playwright-core/lib/vite/htmlReport/report.js +32 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js +32 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +129 -0
- package/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
- package/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BbkfBe3n.js +32 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +182 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-DywYcAf8.js +7 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Bqk9acqE.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.B4cLoZK3.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CU5KtEkS.js +5 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
- package/node_modules/playwright-core/lib/webp_codec.LICENSE +173 -0
- package/node_modules/playwright-core/lib/webp_codec.wasm +0 -0
- package/node_modules/playwright-core/lib/xdg-open +1267 -0
- package/node_modules/playwright-core/package.json +34 -0
- package/node_modules/playwright-core/types/protocol.d.ts +24645 -0
- package/node_modules/playwright-core/types/structs.d.ts +52 -0
- package/node_modules/playwright-core/types/types.d.ts +26632 -0
- package/package.json +12 -2
- package/plugins/devflow-core/extensions/devflow-core.ts +518 -40
- package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +3 -3
- package/plugins/devflow-core/runtime/hooks/hook_common.py +334 -11
- package/plugins/devflow-core/runtime/hooks/index_gate.py +29 -16
- package/plugins/devflow-core/runtime/hooks/start.py +13 -13
- package/plugins/devflow-core/skills/wireframe-proposal/SKILL.md +2 -2
- package/plugins/devflow-core/skills/wireframe-validate/SKILL.md +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +19 -19
- package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_runner.py +412 -76
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +60 -9
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/api_test_matrix.py +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_pins.py +433 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/approval_store.py +137 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_assessment.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_brief.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_feasibility.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_invalidation.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_commit.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_source_resolver.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/checker_adapter.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +51 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/cross_track_consistency_check.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_coverage.py +87 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_v1.py +318 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/environment_profile.py +134 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_contract.rb +7 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_surface.py +138 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/gate_runtime.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +13 -13
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/machine_evidence.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_recover.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_run.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/phase_ownership.rb +6 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/playwright_adapter.py +515 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/repair_control_plane.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_coverage.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_graph.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_preflight.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_run.py +18 -18
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/runtime_context_collector.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/session_rollover.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/static_runtime_context_collector.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tc_hash.py +132 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tdd_evidence.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_command_policy.py +104 -10
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_task_binding_check.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +19 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_commit.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml +12 -12
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +201 -222
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +6 -4
- package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +68 -140
- package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +14 -14
- package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +1 -1
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +10 -10
- package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +2 -2
- package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +18 -18
- package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +32 -32
- package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +30 -30
- package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +37 -37
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +16 -16
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization_database.py +1 -1
- package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +4 -4
- package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +5 -5
- package/plugins/devflow-design/skills/workflow-architecture-feasibility/SKILL.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +39 -39
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +10 -10
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +20 -20
- package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +3 -3
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +6 -6
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +12 -12
- package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +2 -2
- package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +30 -30
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +41 -41
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +15 -15
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +25 -25
- package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +13 -13
- package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +23 -23
- package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +3 -3
- package/plugins/devflow-implementation/agents/implementation-worker.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +9 -9
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +17 -17
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +3 -3
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +16 -16
- package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +38 -38
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +4 -2
- package/plugins/devflow-intel/agents/project-scout.md +1 -1
- package/plugins/devflow-intel/extensions/devflow-intel.ts +20 -19
- package/plugins/devflow-intel/skills/code-index-query/SKILL.md +6 -6
- package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +12 -12
- package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +1 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +31 -12
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +4 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +4 -4
- package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +14 -14
- package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +2 -2
- package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +26 -26
- package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +2 -2
- package/plugins/devflow-quality/runtime/playwright/devflow-test-dsl-v1.schema.json +872 -0
- package/plugins/devflow-quality/runtime/playwright/playwright.config.mjs +46 -0
- package/plugins/devflow-quality/runtime/playwright/reporter.mjs +311 -0
- package/plugins/devflow-quality/runtime/playwright/runner.spec.mjs +1308 -0
- package/plugins/devflow-quality/runtime/playwright/runtime-manifest.json +11 -0
- package/plugins/devflow-quality/skills/code-review/SKILL.md +12 -12
- package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +1 -1
- package/plugins/devflow-quality/skills/workflow-acceptance-test-design/SKILL.md +11 -8
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/SKILL.md +6 -6
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/legacy/SKILL.md +14 -14
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +82 -69
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/api-mainflow-rules.md +20 -15
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +12 -10
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +115 -192
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/mainflow-selection.md +27 -23
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +78 -153
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +36 -83
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +497 -556
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +2 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/export_legacy_testagent.py +647 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/normalize_case_payloads.py +10 -3
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/validate_case_payloads.py +165 -275
- package/plugins/devflow-quality/skills/workflow-human-acceptance/SKILL.md +61 -0
- package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +18 -18
- package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +20 -14
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +10 -10
- package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +25 -25
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +49 -49
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +22 -22
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +11 -11
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +4 -4
- package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +16 -16
- package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +6 -6
- package/src/approval-store.ts +340 -0
- package/src/cli.ts +15 -0
- package/src/constants.ts +1 -1
- package/src/doctor.ts +259 -2
- package/src/initialization-store.ts +51 -3
- package/src/paths.ts +12 -1
- package/src/project-context.ts +60 -15
- package/src/project-documents.ts +61 -61
- package/src/project-initializer.ts +9 -8
- package/src/project-layout.ts +217 -0
- package/src/runtime.ts +3 -3
- package/templates/commands/start.md +4 -4
- package/templates/omp/AGENTS.md +1 -1
- package/templates/omp/hook-config.json +13 -7
- package/templates/omp/index-policy.json +8 -8
|
@@ -17,7 +17,7 @@ options = {
|
|
|
17
17
|
step: nil,
|
|
18
18
|
status: "not_started",
|
|
19
19
|
track: nil,
|
|
20
|
-
state: ".planning/STATE.md",
|
|
20
|
+
state: ".devflow/planning/STATE.md",
|
|
21
21
|
write: false,
|
|
22
22
|
force: false,
|
|
23
23
|
json: false
|
|
@@ -58,7 +58,7 @@ unless PhaseOwnership.valid_slug?(phase)
|
|
|
58
58
|
puts JSON.pretty_generate({ "ok" => false, "reason" => "invalid_phase", "message" => "phase must be a safe non-empty slug" })
|
|
59
59
|
exit 0
|
|
60
60
|
end
|
|
61
|
-
workflow_config = ".planning/workflows/#{options[:flow]}.yaml"
|
|
61
|
+
workflow_config = ".devflow/planning/workflows/#{options[:flow]}.yaml"
|
|
62
62
|
workflow_path = File.expand_path(workflow_config, root)
|
|
63
63
|
unless options[:flow].is_a?(String) && options[:flow].match?(/\A[A-Za-z0-9][A-Za-z0-9_-]*\z/)
|
|
64
64
|
puts JSON.pretty_generate({
|
|
@@ -120,9 +120,9 @@ state = {
|
|
|
120
120
|
"completed_steps" => [],
|
|
121
121
|
"pending_steps" => pending_steps,
|
|
122
122
|
"active_outputs" => {
|
|
123
|
-
"requirement_baseline" => ".planning/requirements/baseline.md",
|
|
124
|
-
"feature_dir" => ".planning/features/#{feature}/",
|
|
125
|
-
"phase_dir" => ".planning/phases/#{phase}/"
|
|
123
|
+
"requirement_baseline" => ".devflow/planning/requirements/baseline.md",
|
|
124
|
+
"feature_dir" => ".devflow/planning/features/#{feature}/",
|
|
125
|
+
"phase_dir" => ".devflow/planning/phases/#{phase}/"
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
@@ -19,7 +19,7 @@ end.parse!
|
|
|
19
19
|
root = Dir.pwd
|
|
20
20
|
skill_root = File.expand_path("..", __dir__)
|
|
21
21
|
template_dir = File.join(skill_root, "templates")
|
|
22
|
-
state_path = File.join(root, ".planning", "STATE.md")
|
|
22
|
+
state_path = File.join(root, ".devflow/planning", "STATE.md")
|
|
23
23
|
|
|
24
24
|
def front_matter(markdown)
|
|
25
25
|
match = markdown.match(/\A---\n(.*?)\n---\n/m)
|
|
@@ -42,7 +42,7 @@ end
|
|
|
42
42
|
def active_workflow_target?(state, target_path)
|
|
43
43
|
return false unless state
|
|
44
44
|
|
|
45
|
-
active = state["workflow_config"] || ".planning/workflows/#{state["current_flow"]}.yaml"
|
|
45
|
+
active = state["workflow_config"] || ".devflow/planning/workflows/#{state["current_flow"]}.yaml"
|
|
46
46
|
active == target_path
|
|
47
47
|
end
|
|
48
48
|
|
|
@@ -57,9 +57,9 @@ def state_step_mismatch?(state, template_path)
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
targets = {
|
|
60
|
-
"feature-development.yaml" => ".planning/workflows/feature-development.yaml",
|
|
61
|
-
"acceptance-remediation.yaml" => ".planning/workflows/acceptance-remediation.yaml",
|
|
62
|
-
"workflows-README.md" => ".planning/workflows/README.md"
|
|
60
|
+
"feature-development.yaml" => ".devflow/planning/workflows/feature-development.yaml",
|
|
61
|
+
"acceptance-remediation.yaml" => ".devflow/planning/workflows/acceptance-remediation.yaml",
|
|
62
|
+
"workflows-README.md" => ".devflow/planning/workflows/README.md"
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
blocked_target_paths = if options[:force] && options[:write] && !options[:allow_state_mismatch]
|
|
@@ -15,7 +15,7 @@ OptionParser.new do |opts|
|
|
|
15
15
|
end.parse!
|
|
16
16
|
|
|
17
17
|
root = Dir.pwd
|
|
18
|
-
state_path = options[:state] ? File.expand_path(options[:state], root) : File.join(root, ".planning", "STATE.md")
|
|
18
|
+
state_path = options[:state] ? File.expand_path(options[:state], root) : File.join(root, ".devflow/planning", "STATE.md")
|
|
19
19
|
|
|
20
20
|
def fail_result(reason, details = {})
|
|
21
21
|
{
|
|
@@ -64,9 +64,9 @@ end
|
|
|
64
64
|
|
|
65
65
|
def project_context_missing?(root)
|
|
66
66
|
required_paths = [
|
|
67
|
-
File.join(root, ".planning", "PROJECT.md"),
|
|
68
|
-
File.join(root, ".planning", "navigation", "INDEX.md"),
|
|
69
|
-
File.join(root, ".context", "spec", "index.md")
|
|
67
|
+
File.join(root, ".devflow/planning", "PROJECT.md"),
|
|
68
|
+
File.join(root, ".devflow/planning", "navigation", "INDEX.md"),
|
|
69
|
+
File.join(root, ".devflow/context", "spec", "index.md")
|
|
70
70
|
]
|
|
71
71
|
|
|
72
72
|
required_paths.any? { |path| !File.exist?(path) }
|
|
@@ -325,10 +325,10 @@ result =
|
|
|
325
325
|
"missing_project_context",
|
|
326
326
|
path: state_path,
|
|
327
327
|
missing: [
|
|
328
|
-
".planning/STATE.md",
|
|
329
|
-
".planning/PROJECT.md",
|
|
330
|
-
".planning/navigation/INDEX.md",
|
|
331
|
-
".context/spec/index.md"
|
|
328
|
+
".devflow/planning/STATE.md",
|
|
329
|
+
".devflow/planning/PROJECT.md",
|
|
330
|
+
".devflow/planning/navigation/INDEX.md",
|
|
331
|
+
".devflow/context/spec/index.md"
|
|
332
332
|
]
|
|
333
333
|
)
|
|
334
334
|
else
|
|
@@ -367,9 +367,9 @@ result =
|
|
|
367
367
|
project_context_result(
|
|
368
368
|
"incomplete_project_context",
|
|
369
369
|
missing: [
|
|
370
|
-
".planning/PROJECT.md",
|
|
371
|
-
".planning/navigation/INDEX.md",
|
|
372
|
-
".context/spec/index.md"
|
|
370
|
+
".devflow/planning/PROJECT.md",
|
|
371
|
+
".devflow/planning/navigation/INDEX.md",
|
|
372
|
+
".devflow/context/spec/index.md"
|
|
373
373
|
]
|
|
374
374
|
)
|
|
375
375
|
else
|
|
@@ -385,7 +385,7 @@ result =
|
|
|
385
385
|
)
|
|
386
386
|
else
|
|
387
387
|
workflow_path = state["workflow_config"] ||
|
|
388
|
-
File.join(".planning", "workflows", "#{state["current_flow"]}.yaml")
|
|
388
|
+
File.join(".devflow/planning", "workflows", "#{state["current_flow"]}.yaml")
|
|
389
389
|
abs_workflow_path = File.join(root, workflow_path)
|
|
390
390
|
|
|
391
391
|
if !File.exist?(abs_workflow_path)
|
|
@@ -641,7 +641,7 @@ result =
|
|
|
641
641
|
missing_outputs: missing_outputs,
|
|
642
642
|
checkpoint_meta_errors: checkpoint_meta_errors,
|
|
643
643
|
resume_behavior: checkpoint && checkpoint["resume_behavior"],
|
|
644
|
-
next_intent: ".planning/.next-intent"
|
|
644
|
+
next_intent: ".devflow/planning/.next-intent"
|
|
645
645
|
)
|
|
646
646
|
elsif parallel_window
|
|
647
647
|
base.merge(action: "run_parallel_window")
|
|
@@ -30,7 +30,7 @@ abort "feature, step and --write are required" unless options[:feature] && optio
|
|
|
30
30
|
abort "invalid feature" unless RequirementGraph.valid_feature?(options[:feature])
|
|
31
31
|
|
|
32
32
|
def state_front_matter(root)
|
|
33
|
-
document = File.read(File.join(root, ".planning/STATE.md"))
|
|
33
|
+
document = File.read(File.join(root, ".devflow/planning/STATE.md"))
|
|
34
34
|
front = document.match(/\A---\n(.*?)\n---/m)&.[](1)
|
|
35
35
|
raise "STATE.md has no YAML front matter" unless front
|
|
36
36
|
YAML.safe_load(front, permitted_classes: [], aliases: false)
|
|
@@ -62,7 +62,7 @@ def independent_evidence(root, feature, step, state, workflow, graph, files, che
|
|
|
62
62
|
# cannot manufacture proof that an engine did not invoke AI.
|
|
63
63
|
binding_attempt = binding && binding["attempt"]
|
|
64
64
|
event_name = binding_attempt.nil? ? "#{step}.engine-events.jsonl" : "#{step}.attempt-#{binding_attempt}.engine-events.jsonl"
|
|
65
|
-
event_path = File.join(".planning", "evidence", feature, event_name)
|
|
65
|
+
event_path = File.join(".devflow/planning", "evidence", feature, event_name)
|
|
66
66
|
event_absolute, = DevflowControlIO.resolve_control_path(root, event_path, :artifact)
|
|
67
67
|
events = if File.file?(event_absolute)
|
|
68
68
|
File.foreach(event_absolute).first(10_000).each_with_object([]) do |line, parsed|
|
|
@@ -259,7 +259,7 @@ begin
|
|
|
259
259
|
"gate_mode" => gate.empty? ? "observe" : gate
|
|
260
260
|
}.compact
|
|
261
261
|
suffix = binding ? ".attempt-#{binding["attempt"]}.branch-#{Digest::SHA256.hexdigest(binding["branch_id"].to_s)[0, 12]}" : ""
|
|
262
|
-
destination = File.join(root, ".planning/evidence", options[:feature], "#{options[:step]}#{suffix}.machine.json")
|
|
262
|
+
destination = File.join(root, ".devflow/planning/evidence", options[:feature], "#{options[:step]}#{suffix}.machine.json")
|
|
263
263
|
DevflowControlIO.atomic_write(destination, JSON.pretty_generate(pack) + "\n")
|
|
264
264
|
result = { "ok" => true, "path" => destination.sub("#{root}/", ""), "complete" => pack["complete"], "state_revision" => pack["state_revision"], "graph_revision" => pack["graph_revision"], "checkers" => checker_results, "checkpoint_meta_errors" => checkpoint_meta_errors, "parallel_binding" => binding }
|
|
265
265
|
rescue StandardError => error
|
|
@@ -31,7 +31,7 @@ OptionParser.new do |opts|
|
|
|
31
31
|
end.parse!
|
|
32
32
|
|
|
33
33
|
root = Dir.pwd
|
|
34
|
-
state_path = options[:state] ? File.expand_path(options[:state], root) : File.join(root, ".planning", "STATE.md")
|
|
34
|
+
state_path = options[:state] ? File.expand_path(options[:state], root) : File.join(root, ".devflow/planning", "STATE.md")
|
|
35
35
|
|
|
36
36
|
def front_matter(markdown)
|
|
37
37
|
match = markdown.match(/\A---\n(.*?)\n---\n/m)
|
|
@@ -51,19 +51,19 @@ def load_state(path)
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def workflow_path_for(state)
|
|
54
|
-
state["workflow_config"] || File.join(".planning", "workflows", "#{state.fetch("current_flow")}.yaml")
|
|
54
|
+
state["workflow_config"] || File.join(".devflow/planning", "workflows", "#{state.fetch("current_flow")}.yaml")
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def configured_policy(workflow)
|
|
58
58
|
workflow["lessons_policy"] || {
|
|
59
59
|
"sources" => [
|
|
60
|
-
{ "path" => ".context/lessons/README.md", "required" => false },
|
|
61
|
-
{ "path" => ".planning/lessons/README.md", "required" => false }
|
|
60
|
+
{ "path" => ".devflow/context/lessons/README.md", "required" => false },
|
|
61
|
+
{ "path" => ".devflow/planning/lessons/README.md", "required" => false }
|
|
62
62
|
],
|
|
63
63
|
"selection" => { "max_candidates" => 5, "min_score" => 1 },
|
|
64
64
|
"write" => {
|
|
65
|
-
"default_dir" => ".context/lessons",
|
|
66
|
-
"index_path" => ".context/lessons/README.md"
|
|
65
|
+
"default_dir" => ".devflow/context/lessons",
|
|
66
|
+
"index_path" => ".devflow/context/lessons/README.md"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
end
|
|
@@ -167,7 +167,7 @@ end
|
|
|
167
167
|
|
|
168
168
|
def write_template(root, policy, state, title, source, write)
|
|
169
169
|
write_config = policy["write"] || {}
|
|
170
|
-
dir = write_config["default_dir"] || ".context/lessons"
|
|
170
|
+
dir = write_config["default_dir"] || ".devflow/context/lessons"
|
|
171
171
|
index_path = write_config["index_path"] || File.join(dir, "README.md")
|
|
172
172
|
file_name = "#{Date.today}-#{slug_for(title)}.md"
|
|
173
173
|
rel_path = File.join(dir, file_name)
|
|
@@ -159,7 +159,7 @@ rescue JSON::ParserError => error
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
def audit_path(root, feature)
|
|
162
|
-
DevflowControlIO.resolve_control_path(root, ".planning/evidence/#{feature}/parallel-recovery.jsonl", :artifact).first
|
|
162
|
+
DevflowControlIO.resolve_control_path(root, ".devflow/planning/evidence/#{feature}/parallel-recovery.jsonl", :artifact).first
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
def append_audit(root, feature, payload, lock: nil)
|
|
@@ -233,7 +233,7 @@ begin
|
|
|
233
233
|
validation_records = []
|
|
234
234
|
project_lock = DevflowControlIO.acquire_project_lock(root)
|
|
235
235
|
begin
|
|
236
|
-
state_path, = DevflowControlIO.resolve_control_path(root, ".planning/STATE.md", :state)
|
|
236
|
+
state_path, = DevflowControlIO.resolve_control_path(root, ".devflow/planning/STATE.md", :state)
|
|
237
237
|
state_yaml = front_matter(File.read(state_path))
|
|
238
238
|
raise ArgumentError, "STATE.md has no YAML front matter" unless state_yaml
|
|
239
239
|
state = YAML.safe_load(state_yaml, permitted_classes: [Date, Time], aliases: false)
|
|
@@ -29,7 +29,7 @@ module ParallelRun
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def path(root, feature)
|
|
32
|
-
File.join(root, ".planning", "parallel", safe_feature(feature), "branches.yaml")
|
|
32
|
+
File.join(root, ".devflow/planning", "parallel", safe_feature(feature), "branches.yaml")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def load(root, feature)
|
|
@@ -94,7 +94,7 @@ module ParallelRun
|
|
|
94
94
|
state
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
def prepare(root:, feature:, workflow_window:, state_revision:, branches:, task_ids: {}, state_path: ".planning/STATE.md")
|
|
97
|
+
def prepare(root:, feature:, workflow_window:, state_revision:, branches:, task_ids: {}, state_path: ".devflow/planning/STATE.md")
|
|
98
98
|
lock = DevflowControlIO.acquire_project_lock(root)
|
|
99
99
|
begin
|
|
100
100
|
raise ArgumentError, "parallel run already exists" if load(root, feature)
|
|
@@ -204,7 +204,7 @@ end
|
|
|
204
204
|
|
|
205
205
|
if $PROGRAM_NAME == __FILE__
|
|
206
206
|
begin
|
|
207
|
-
options = { action: nil, feature: nil, state_revision: nil, run_revision: nil, branch_id: nil, status: nil, workflow_window: nil, branches: [], state_path: ".planning/STATE.md", json: false }
|
|
207
|
+
options = { action: nil, feature: nil, state_revision: nil, run_revision: nil, branch_id: nil, status: nil, workflow_window: nil, branches: [], state_path: ".devflow/planning/STATE.md", json: false }
|
|
208
208
|
OptionParser.new do |opts|
|
|
209
209
|
opts.on("--action ACTION", %w[inspect prepare update retry rebase serial-fallback]) { |value| options[:action] = value }
|
|
210
210
|
opts.on("--feature FEATURE") { |value| options[:feature] = value }
|
|
@@ -11,7 +11,7 @@ require "yaml"
|
|
|
11
11
|
require_relative "control_io"
|
|
12
12
|
|
|
13
13
|
module PhaseOwnership
|
|
14
|
-
REGISTRY_PATH = ".planning/phase-ownership.yaml"
|
|
14
|
+
REGISTRY_PATH = ".devflow/planning/phase-ownership.yaml"
|
|
15
15
|
PHASE_SLUG = /\A[A-Za-z0-9][A-Za-z0-9_-]*\z/
|
|
16
16
|
module_function
|
|
17
17
|
|
|
@@ -45,11 +45,11 @@ module PhaseOwnership
|
|
|
45
45
|
def valid_owner?(owner, phase: nil)
|
|
46
46
|
owner.is_a?(Hash) && valid_slug?(owner["phase"]) && (phase.nil? || owner["phase"] == phase) &&
|
|
47
47
|
valid_feature?(owner["feature"]) && owner["flow"].is_a?(String) && !owner["flow"].empty? &&
|
|
48
|
-
owner["state_path"] == ".planning/STATE.md" && %w[active completed].include?(owner["status"])
|
|
48
|
+
owner["state_path"] == ".devflow/planning/STATE.md" && %w[active completed].include?(owner["status"])
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def nonempty_phase_dirs(root)
|
|
52
|
-
Dir.glob(File.join(root, ".planning", "phases", "*")).select do |path|
|
|
52
|
+
Dir.glob(File.join(root, ".devflow/planning", "phases", "*")).select do |path|
|
|
53
53
|
File.directory?(path) && !Dir.children(path).empty?
|
|
54
54
|
end.map { |path| File.basename(path) }
|
|
55
55
|
end
|
|
@@ -84,8 +84,8 @@ module PhaseOwnership
|
|
|
84
84
|
return failure("phase_owned_by_another_feature", "requested phase is already owned by another feature", owner: current)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
owner = current || { "phase" => phase, "feature" => feature, "flow" => flow, "state_path" => ".planning/STATE.md", "scope" => "global", "status" => "active" }
|
|
88
|
-
owner = owner.merge("phase" => phase, "feature" => feature, "flow" => flow, "state_path" => ".planning/STATE.md", "scope" => "global", "status" => "active")
|
|
87
|
+
owner = current || { "phase" => phase, "feature" => feature, "flow" => flow, "state_path" => ".devflow/planning/STATE.md", "scope" => "global", "status" => "active" }
|
|
88
|
+
owner = owner.merge("phase" => phase, "feature" => feature, "flow" => flow, "state_path" => ".devflow/planning/STATE.md", "scope" => "global", "status" => "active")
|
|
89
89
|
registry["owners"][phase] = owner
|
|
90
90
|
registry["updated_at"] = Date.today.to_s
|
|
91
91
|
DevflowControlIO.atomic_write(registry_path(root), registry.to_yaml) if write
|
|
@@ -114,7 +114,7 @@ module PhaseOwnership
|
|
|
114
114
|
return failure("invalid_phase", "STATE.md current_phase must be a safe non-empty slug") unless valid_slug?(phase)
|
|
115
115
|
owner = owner_override || registry["owners"][phase]
|
|
116
116
|
return failure("missing_phase_owner", "STATE.md phase has no ownership record", phase: phase) unless valid_owner?(owner, phase: phase)
|
|
117
|
-
unless owner["feature"] == feature && owner["flow"] == flow && owner["state_path"] == ".planning/STATE.md"
|
|
117
|
+
unless owner["feature"] == feature && owner["flow"] == flow && owner["state_path"] == ".devflow/planning/STATE.md"
|
|
118
118
|
return failure("phase_owner_mismatch", "STATE.md does not match phase ownership record", owner: owner)
|
|
119
119
|
end
|
|
120
120
|
conflicting = registry["owners"].values.find { |entry| valid_owner?(entry) && entry["status"] == "active" && entry["phase"] != phase }
|