@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
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-index-query
|
|
3
|
-
description: Query a generated .planning/code-index machine index to answer code structure questions. Use when the OMP development agent needs callers, callees, entrypoint flows, imports, resource reads/writes, tested_by links, or symbol locations before reading source evidence.
|
|
3
|
+
description: Query a generated .devflow/planning/code-index machine index to answer code structure questions. Use when the OMP development agent needs callers, callees, entrypoint flows, imports, resource reads/writes, tested_by links, or symbol locations before reading source evidence.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Code Index Query
|
|
7
7
|
|
|
8
|
-
Use this skill to answer source-structure questions from `.planning/code-index/`.
|
|
8
|
+
Use this skill to answer source-structure questions from `.devflow/planning/code-index/`.
|
|
9
9
|
|
|
10
10
|
## Project-root resolution
|
|
11
11
|
|
|
12
12
|
The runtime directory may be a nested codebase such as `drama-ad/backend`. Before checking the index, resolve the project root from the runtime directory using the same rule as project initialization:
|
|
13
13
|
|
|
14
14
|
1. Walk upward from the runtime directory and select the nearest ancestor containing `.devflow/project.json`.
|
|
15
|
-
2. If no manifest exists, select the nearest ancestor containing `.planning/code-index/index.sqlite` or `.planning/PROJECT.md`.
|
|
15
|
+
2. If no manifest exists, select the nearest ancestor containing `.devflow/planning/code-index/index.sqlite` or `.devflow/planning/PROJECT.md`.
|
|
16
16
|
3. Only if neither exists, use the runtime directory and report that the project root is uninitialized.
|
|
17
17
|
|
|
18
|
-
All index checks and `devflow_code_index` calls must run with that resolved root as the working directory. Source paths remain relative to the resolved root, so a source file may be `drama-ad/backend/...` while the index remains `.planning/code-index/...`. Never append `.planning` to a selected source/codebase directory.
|
|
18
|
+
All index checks and `devflow_code_index` calls must run with that resolved root as the working directory. Source paths remain relative to the resolved root, so a source file may be `drama-ad/backend/...` while the index remains `.devflow/planning/code-index/...`. Never append `.devflow/planning` to a selected source/codebase directory.
|
|
19
19
|
|
|
20
|
-
The tool returns the resolved `projectRoot` in its details. If the root cannot be resolved, stop and report the exact check command/path instead of probing `<source-dir>/.planning`.
|
|
20
|
+
The tool returns the resolved `projectRoot` in its details. If the root cannot be resolved, stop and report the exact check command/path instead of probing `<source-dir>/.devflow/planning`.
|
|
21
21
|
|
|
22
22
|
If the index is missing, stale, fails validation, or returns no useful hit, do not block the source question. Record the machine failure and use a bounded `rg`/`grep` or LSP search within the registered codebase roots. Mark the result `degraded_index_coverage` and include the exact fallback scope; do not claim index-derived relations or complete impact coverage.
|
|
23
23
|
|
|
24
24
|
## Required Flow
|
|
25
25
|
|
|
26
|
-
1. Check that `.planning/code-index/index.sqlite` or JSONL sidecars exist.
|
|
26
|
+
1. Check that `.devflow/planning/code-index/index.sqlite` or JSONL sidecars exist.
|
|
27
27
|
2. Search symbols or relations using the machine index.
|
|
28
28
|
3. Expand relation edges as needed.
|
|
29
29
|
4. Read source files at `evidence_path`.
|
|
@@ -11,17 +11,17 @@ Build a generic code intelligence index for the current project. This skill is p
|
|
|
11
11
|
|
|
12
12
|
Write generated artifacts to the target project:
|
|
13
13
|
|
|
14
|
-
- `.planning/code-index/files.jsonl`
|
|
15
|
-
- `.planning/code-index/symbols.jsonl`
|
|
16
|
-
- `.planning/code-index/relations.jsonl`
|
|
17
|
-
- `.planning/code-index/diagnostics.jsonl`
|
|
18
|
-
- `.planning/code-index/index.sqlite`
|
|
19
|
-
- `.planning/code-index/INDEX.md`
|
|
20
|
-
- `.planning/code-index/SYMBOLS.md`
|
|
21
|
-
- `.planning/code-index/RELATIONS.md`
|
|
22
|
-
- `.planning/code-index/ENTRYPOINTS.md`
|
|
23
|
-
- `.planning/code-index/DATAFLOW.md`
|
|
24
|
-
- `.planning/code-index/AUDIT.md` when auditing
|
|
14
|
+
- `.devflow/planning/code-index/files.jsonl`
|
|
15
|
+
- `.devflow/planning/code-index/symbols.jsonl`
|
|
16
|
+
- `.devflow/planning/code-index/relations.jsonl`
|
|
17
|
+
- `.devflow/planning/code-index/diagnostics.jsonl`
|
|
18
|
+
- `.devflow/planning/code-index/index.sqlite`
|
|
19
|
+
- `.devflow/planning/code-index/INDEX.md`
|
|
20
|
+
- `.devflow/planning/code-index/SYMBOLS.md`
|
|
21
|
+
- `.devflow/planning/code-index/RELATIONS.md`
|
|
22
|
+
- `.devflow/planning/code-index/ENTRYPOINTS.md`
|
|
23
|
+
- `.devflow/planning/code-index/DATAFLOW.md`
|
|
24
|
+
- `.devflow/planning/code-index/AUDIT.md` when auditing
|
|
25
25
|
|
|
26
26
|
Markdown is a display layer only. JSONL/SQLite is the machine fact layer.
|
|
27
27
|
|
|
@@ -69,7 +69,7 @@ devflow_code_index(action="scan", changedFiles=["path/to/file.ext"])
|
|
|
69
69
|
|
|
70
70
|
## Audit Gate
|
|
71
71
|
|
|
72
|
-
`audit` is part of this skill's normal lifecycle, not a separate workflow. Run `validate` before `audit` whenever index files were edited or refreshed, then review `.planning/code-index/AUDIT.md` against `references/audit-checklist.md`.
|
|
72
|
+
`audit` is part of this skill's normal lifecycle, not a separate workflow. Run `validate` before `audit` whenever index files were edited or refreshed, then review `.devflow/planning/code-index/AUDIT.md` against `references/audit-checklist.md`.
|
|
73
73
|
|
|
74
74
|
Blocking findings are stale file hashes, missing indexed files, dangling `to_id` relations, missing relation evidence, and invalid schema. Unresolved heuristic calls, low-confidence diagnostics, and possible project-bound examples in generic skills are non-blocking but must be reported.
|
|
75
75
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Discover codebases in this order:
|
|
4
4
|
|
|
5
5
|
1. Explicit CLI arguments: `--codebase name:path[:type]`.
|
|
6
|
-
2. `.planning/navigation/INDEX.md` Codebase Registry.
|
|
7
|
-
3. `.context/spec/index.md` codebase mapping.
|
|
6
|
+
2. `.devflow/planning/navigation/INDEX.md` Codebase Registry.
|
|
7
|
+
3. `.devflow/context/spec/index.md` codebase mapping.
|
|
8
8
|
4. Current working directory fallback.
|
|
9
9
|
|
|
10
10
|
Normalize each codebase to:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Query flow:
|
|
4
4
|
|
|
5
5
|
1. Load project rules and navigation if present.
|
|
6
|
-
2. Check `.planning/code-index/index.sqlite` or JSONL sidecars.
|
|
6
|
+
2. Check `.devflow/planning/code-index/index.sqlite` or JSONL sidecars.
|
|
7
7
|
3. Search symbols using exact name, qualified name, path, or FTS.
|
|
8
8
|
4. Expand relations by type and depth.
|
|
9
9
|
5. Read source files at `evidence_path`.
|
|
@@ -150,7 +150,7 @@ def _worktree_signature(root: Path) -> str:
|
|
|
150
150
|
kept = []
|
|
151
151
|
for line in proc.stdout.splitlines():
|
|
152
152
|
path = line[3:].strip() if len(line) > 3 else ""
|
|
153
|
-
if path.startswith(".planning/code-index/"):
|
|
153
|
+
if path.startswith(".devflow/planning/code-index/"):
|
|
154
154
|
continue
|
|
155
155
|
kept.append(line)
|
|
156
156
|
return "\n".join(kept)
|
|
@@ -198,7 +198,7 @@ def main(argv=None) -> int:
|
|
|
198
198
|
|
|
199
199
|
scan = sub.add_parser("scan", help="Build or refresh the code index.")
|
|
200
200
|
scan.add_argument("--root", default=".", help="Project root. Defaults to current directory.")
|
|
201
|
-
scan.add_argument("--output", default=".planning/code-index", help="Index output directory.")
|
|
201
|
+
scan.add_argument("--output", default=".devflow/planning/code-index", help="Index output directory.")
|
|
202
202
|
scan.add_argument("--codebase", action="append", default=[], help="Explicit codebase: name:path[:type]. Can repeat.")
|
|
203
203
|
scan.add_argument("--changed-files", nargs="*", default=[], help="Optional changed files for incremental refresh.")
|
|
204
204
|
scan.add_argument("--include", action="append", default=[], help="Repository-relative include glob. Can repeat.")
|
|
@@ -206,7 +206,7 @@ def main(argv=None) -> int:
|
|
|
206
206
|
scan.add_argument("--exclude", action="append", default=[], help="Additional directory names to exclude.")
|
|
207
207
|
|
|
208
208
|
validate = sub.add_parser("validate", help="Validate an index in staged levels.")
|
|
209
|
-
validate.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
209
|
+
validate.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
210
210
|
validate.add_argument("--snapshot", help="Immutable generation id.")
|
|
211
211
|
validate.add_argument(
|
|
212
212
|
"--level",
|
|
@@ -217,19 +217,19 @@ def main(argv=None) -> int:
|
|
|
217
217
|
|
|
218
218
|
audit = sub.add_parser("audit", help="Audit stale files and relation integrity.")
|
|
219
219
|
audit.add_argument("--root", default=".", help="Project root.")
|
|
220
|
-
audit.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
220
|
+
audit.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
221
221
|
audit.add_argument("--skill-root", default=".skills", help="Optional skill root for project-binding checks.")
|
|
222
222
|
audit.add_argument("--snapshot", help="Immutable generation id.")
|
|
223
223
|
audit.add_argument("--level", choices=("publish", "full"), default="publish")
|
|
224
224
|
|
|
225
225
|
query = sub.add_parser("query", help="Search symbols using SQLite FTS or LIKE fallback.")
|
|
226
|
-
query.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
226
|
+
query.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
227
227
|
query.add_argument("--term", required=True, help="Search term.")
|
|
228
228
|
query.add_argument("--limit", type=int, default=20)
|
|
229
229
|
query.add_argument("--snapshot", help="Immutable generation id. Historical queries do not require current workspace freshness.")
|
|
230
230
|
|
|
231
231
|
relations = sub.add_parser("relations", help="Traverse resolved relations in a fixed snapshot.")
|
|
232
|
-
relations.add_argument("--index", default=".planning/code-index")
|
|
232
|
+
relations.add_argument("--index", default=".devflow/planning/code-index")
|
|
233
233
|
relations.add_argument("--object", required=True, help="Source symbol id.")
|
|
234
234
|
relations.add_argument("--depth", type=int, default=3)
|
|
235
235
|
relations.add_argument("--limit", type=int, default=100)
|
|
@@ -238,7 +238,7 @@ def main(argv=None) -> int:
|
|
|
238
238
|
relations.add_argument("--direction", choices=["incoming", "outgoing", "both"], default="outgoing")
|
|
239
239
|
|
|
240
240
|
impact = sub.add_parser("impact", help="Traverse cross-layer semantic facts in a fixed snapshot.")
|
|
241
|
-
impact.add_argument("--index", default=".planning/code-index")
|
|
241
|
+
impact.add_argument("--index", default=".devflow/planning/code-index")
|
|
242
242
|
impact.add_argument("--entity", required=True, help="Logical entity id, feature id, API id, or symbol id.")
|
|
243
243
|
impact.add_argument("--depth", type=int, default=5)
|
|
244
244
|
impact.add_argument("--limit", type=int, default=200)
|
|
@@ -247,7 +247,7 @@ def main(argv=None) -> int:
|
|
|
247
247
|
|
|
248
248
|
for action in ("search-content", "resolve-domain", "query-plan", "domain-import"):
|
|
249
249
|
operation = sub.add_parser(action)
|
|
250
|
-
operation.add_argument("--index", default=".planning/code-index")
|
|
250
|
+
operation.add_argument("--index", default=".devflow/planning/code-index")
|
|
251
251
|
operation.add_argument("--snapshot")
|
|
252
252
|
operation.add_argument("--project-id", default="")
|
|
253
253
|
operation.add_argument("--limit", type=int, default=20)
|
|
@@ -615,7 +615,7 @@ def command_structured(args) -> int:
|
|
|
615
615
|
errors = _validate_snapshot_bundle(selected, snapshot)
|
|
616
616
|
if errors:
|
|
617
617
|
raise ValueError(errors[0])
|
|
618
|
-
if not requested and not
|
|
618
|
+
if not requested and not _snapshot_is_fresh(snapshot, read_jsonl(selected / INDEX_FILES["files"])):
|
|
619
619
|
print(json.dumps({"_meta": {"status": "stale_index", "snapshot": snapshot.get("generation")}}))
|
|
620
620
|
return 1
|
|
621
621
|
conn = read_connection(selected / "index.sqlite")
|
|
@@ -662,7 +662,7 @@ def command_query(args) -> int:
|
|
|
662
662
|
return 1
|
|
663
663
|
limit = _bounded_limit(getattr(args, "limit", 20), 1000)
|
|
664
664
|
files = read_jsonl(selected / INDEX_FILES["files"])
|
|
665
|
-
if not getattr(args, "snapshot", None) and not
|
|
665
|
+
if not getattr(args, "snapshot", None) and not _snapshot_is_fresh(snapshot, files):
|
|
666
666
|
print("Stale code index: refresh required before query.", file=sys.stderr)
|
|
667
667
|
return 1
|
|
668
668
|
conn = read_connection(index)
|
|
@@ -717,7 +717,7 @@ def command_relations(args) -> int:
|
|
|
717
717
|
bundle_errors = _validate_snapshot_bundle(selected, snapshot)
|
|
718
718
|
if bundle_errors:
|
|
719
719
|
print(bundle_errors[0], file=sys.stderr); return 1
|
|
720
|
-
if not getattr(args, "snapshot", None) and not
|
|
720
|
+
if not getattr(args, "snapshot", None) and not _snapshot_is_fresh(snapshot, files):
|
|
721
721
|
print("Stale code index: refresh required before query.", file=sys.stderr); return 1
|
|
722
722
|
conn = read_connection(selected / "index.sqlite")
|
|
723
723
|
try:
|
|
@@ -785,7 +785,7 @@ def command_impact(args) -> int:
|
|
|
785
785
|
print(bundle_errors[0], file=sys.stderr); return 1
|
|
786
786
|
if not getattr(args, "snapshot", None):
|
|
787
787
|
files = read_jsonl(selected / INDEX_FILES["files"])
|
|
788
|
-
if not
|
|
788
|
+
if not _snapshot_is_fresh(snapshot, files):
|
|
789
789
|
print("Stale code index: refresh required before impact query.", file=sys.stderr)
|
|
790
790
|
return 1
|
|
791
791
|
conn = read_connection(selected / "index.sqlite")
|
|
@@ -905,6 +905,25 @@ def _validate_snapshot_bundle(selected: Path, snapshot: Dict[str, object]) -> Li
|
|
|
905
905
|
return errors
|
|
906
906
|
|
|
907
907
|
|
|
908
|
+
def _snapshot_workspace_root(snapshot: Dict[str, object]) -> Path | None:
|
|
909
|
+
"""The scan root recorded by command_scan, or None when the snapshot has no usable workspace.root.
|
|
910
|
+
|
|
911
|
+
Never guessed from the index location: a missing, non-string, blank, relative or non-directory root
|
|
912
|
+
means freshness cannot be verified, so callers must treat the snapshot as stale.
|
|
913
|
+
"""
|
|
914
|
+
workspace = snapshot.get("workspace") if isinstance(snapshot, dict) else None
|
|
915
|
+
raw = workspace.get("root") if isinstance(workspace, dict) else None
|
|
916
|
+
if not isinstance(raw, str) or not raw.strip() or "\x00" in raw:
|
|
917
|
+
return None
|
|
918
|
+
root = Path(raw)
|
|
919
|
+
return root if root.is_absolute() and root.is_dir() else None
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
def _snapshot_is_fresh(snapshot: Dict[str, object], files: List[dict]) -> bool:
|
|
923
|
+
root = _snapshot_workspace_root(snapshot)
|
|
924
|
+
return root is not None and _query_is_fresh(root, snapshot, files)
|
|
925
|
+
|
|
926
|
+
|
|
908
927
|
def _query_is_fresh(root: Path, snapshot: Dict[str, object], files: List[dict]) -> bool:
|
|
909
928
|
workspace = snapshot.get("workspace") if isinstance(snapshot, dict) else None
|
|
910
929
|
if not isinstance(workspace, dict):
|
|
@@ -45,7 +45,7 @@ def _parse_explicit(root: Path, value: str) -> Optional[Codebase]:
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def _from_navigation(root: Path) -> List[Codebase]:
|
|
48
|
-
index = root / ".planning/navigation/INDEX.md"
|
|
48
|
+
index = root / ".devflow/planning/navigation/INDEX.md"
|
|
49
49
|
if not index.exists():
|
|
50
50
|
return []
|
|
51
51
|
rows = _read_markdown_table(index)
|
|
@@ -72,7 +72,7 @@ def _from_navigation(root: Path) -> List[Codebase]:
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
def _from_spec_index(root: Path) -> List[Codebase]:
|
|
75
|
-
index = root / ".context/spec/index.md"
|
|
75
|
+
index = root / ".devflow/context/spec/index.md"
|
|
76
76
|
if not index.exists():
|
|
77
77
|
return []
|
|
78
78
|
rows = _read_markdown_table(index)
|
|
@@ -7,7 +7,11 @@ from typing import Iterable, List, Sequence
|
|
|
7
7
|
|
|
8
8
|
DEFAULT_EXCLUDES = {
|
|
9
9
|
".git",
|
|
10
|
+
".devflow",
|
|
11
|
+
# Old protocol directories are excluded as source even after the new
|
|
12
|
+
# namespaced layout becomes authoritative.
|
|
10
13
|
".planning",
|
|
14
|
+
".context",
|
|
11
15
|
"node_modules",
|
|
12
16
|
"vendor",
|
|
13
17
|
"dist",
|
|
@@ -139,4 +143,3 @@ def _is_excluded(path: Path, root: Path, excluded: Sequence[str]) -> bool:
|
|
|
139
143
|
if any(fnmatch.fnmatch(relative, pattern) or fnmatch.fnmatch(relative + "/", pattern.rstrip("/") + "/") for pattern in excluded):
|
|
140
144
|
return True
|
|
141
145
|
return any(part in excluded for part in parts) or any("/" in pattern and ("/" + "/".join(parts) + "/").find("/" + pattern.strip("/") + "/") >= 0 for pattern in excluded)
|
|
142
|
-
|
package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py
CHANGED
|
@@ -5,8 +5,8 @@ from pathlib import Path
|
|
|
5
5
|
PLACEHOLDER_OK = re.compile(r"\{[A-Za-z0-9_:-]+\}")
|
|
6
6
|
|
|
7
7
|
GENERIC_TOKENS = (
|
|
8
|
-
".planning/",
|
|
9
|
-
".context/",
|
|
8
|
+
".devflow/planning/",
|
|
9
|
+
".devflow/context/",
|
|
10
10
|
".skills/",
|
|
11
11
|
"references/",
|
|
12
12
|
"scripts/",
|
|
@@ -40,8 +40,8 @@ def audit_project_binding(paths):
|
|
|
40
40
|
stripped = PLACEHOLDER_OK.sub("", line)
|
|
41
41
|
if (
|
|
42
42
|
path_like.search(stripped)
|
|
43
|
-
and ".planning/" not in stripped
|
|
44
|
-
and ".context/" not in stripped
|
|
43
|
+
and ".devflow/planning/" not in stripped
|
|
44
|
+
and ".devflow/context/" not in stripped
|
|
45
45
|
and ".skills/" not in stripped
|
|
46
46
|
):
|
|
47
47
|
findings.append(
|
|
@@ -28,7 +28,7 @@ code facts changed -> project context must remain trustworthy
|
|
|
28
28
|
|
|
29
29
|
Preserve these properties:
|
|
30
30
|
|
|
31
|
-
- **Freshness**: `.planning/code-index/`, `.planning/navigation/`, and `.context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
|
|
31
|
+
- **Freshness**: `.devflow/planning/code-index/`, `.devflow/planning/navigation/`, and `.devflow/context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
|
|
32
32
|
- **Minimality**: do not run a full project initialization when changed-file indexing is enough.
|
|
33
33
|
- **Evidence**: do not update navigation/spec from memory or inference alone; read the changed source or manifest evidence first.
|
|
34
34
|
- **Non-destruction**: do not overwrite user-authored business context; append logs or update machine-derived sections only.
|
|
@@ -40,7 +40,7 @@ Preserve these properties:
|
|
|
40
40
|
|---|---|---|
|
|
41
41
|
| project indexes | Accelerate rule/spec/navigation discovery; fall back to LSP/search/source when stale | Advisory evidence, never a source-read blocker |
|
|
42
42
|
| `workflow-code-index` | Refresh, validate, and audit machine facts | Light, Medium, Full; audit/staleness problems |
|
|
43
|
-
| `workflow-update-navigation` | Update `.planning/navigation/*.md` | Medium route/API/page/service/command changes |
|
|
43
|
+
| `workflow-update-navigation` | Update `.devflow/planning/navigation/*.md` | Medium route/API/page/service/command changes |
|
|
44
44
|
| `workflow-project-context` | Full reinitialization | Full only |
|
|
45
45
|
| `workflow-bug-fix` | Bug-fix main workflow | Must call this skill after verification and lesson capture |
|
|
46
46
|
| `workflow-execute-phase` | Feature implementation workflow | Must call this skill after implementation verification |
|
|
@@ -63,9 +63,9 @@ If no flag is provided, default to `--dry-run` and infer changed files from git.
|
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
65
|
workflow-context-sync
|
|
66
|
-
-> read .planning/rules/INDEX.md
|
|
67
|
-
-> read .context/spec/index.md
|
|
68
|
-
-> read .planning/navigation/INDEX.md
|
|
66
|
+
-> read .devflow/planning/rules/INDEX.md
|
|
67
|
+
-> read .devflow/context/spec/index.md
|
|
68
|
+
-> read .devflow/planning/navigation/INDEX.md
|
|
69
69
|
-> collect changed files with per-repo cursor
|
|
70
70
|
-> classify files and affected codebases
|
|
71
71
|
-> choose Light / Medium / Full
|
|
@@ -81,7 +81,7 @@ workflow-context-sync
|
|
|
81
81
|
Maintain pull synchronization state in:
|
|
82
82
|
|
|
83
83
|
```text
|
|
84
|
-
.planning/context-sync-state.json
|
|
84
|
+
.devflow/planning/context-sync-state.json
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
This file is workflow-owned machine state. It stores one cursor per independently discovered Git repository:
|
|
@@ -104,7 +104,7 @@ This file is workflow-owned machine state. It stores one cursor per independentl
|
|
|
104
104
|
|
|
105
105
|
Rules:
|
|
106
106
|
|
|
107
|
-
- Discover repositories from `.planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
|
|
107
|
+
- Discover repositories from `.devflow/planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
|
|
108
108
|
- For `--after-pull`, diff `last_synced_head..HEAD` per repo.
|
|
109
109
|
- If a repo has no cursor yet, fall back to `ORIG_HEAD..HEAD` for that repo.
|
|
110
110
|
- If the stored cursor is unavailable or not an ancestor of `HEAD`, use the script-reported fallback/warning and prefer a broader sync level.
|
|
@@ -150,7 +150,7 @@ Map paths to codebases:
|
|
|
150
150
|
| skit-admin | `skit/frontend/admin/**` |
|
|
151
151
|
| skit-h5 | `skit/frontend/h5/**` |
|
|
152
152
|
| skit-backend | `skit/internal/**`, `skit/ioc/**`, `skit/pkg/**`, `skit/backend/migrations/**`, `skit/go.mod`, `skit/Makefile`, `skit/main.go` |
|
|
153
|
-
| project context | `.planning/**`, `.context/spec/**`, `.omp/**`, `AGENTS.md` |
|
|
153
|
+
| project context | `.devflow/planning/**`, `.devflow/context/spec/**`, `.omp/**`, `AGENTS.md` |
|
|
154
154
|
|
|
155
155
|
Classify impact:
|
|
156
156
|
|
|
@@ -162,7 +162,7 @@ Classify impact:
|
|
|
162
162
|
| backend boundary | `internal/web/*handler.go`, `ioc/web.go`, `internal/job/**`, public service interfaces | Medium |
|
|
163
163
|
| toolchain/manifest | `package.json`, `go.mod`, `Makefile`, vite/router config | Medium or Full |
|
|
164
164
|
| structure | codebase roots, large directory moves, new top-level/second-level directories | Full |
|
|
165
|
-
| context docs | `.planning/**`, `.context/spec/**` | validate consistency; avoid blind overwrite |
|
|
165
|
+
| context docs | `.devflow/planning/**`, `.devflow/context/spec/**` | validate consistency; avoid blind overwrite |
|
|
166
166
|
|
|
167
167
|
## Sync Levels
|
|
168
168
|
|
|
@@ -178,7 +178,7 @@ devflow_code_index(action="validate")
|
|
|
178
178
|
devflow_code_index(action="audit")
|
|
179
179
|
```
|
|
180
180
|
|
|
181
|
-
Then append a concise `.planning/STATE.md` change-log line if this skill modified files.
|
|
181
|
+
Then append a concise `.devflow/planning/STATE.md` change-log line if this skill modified files.
|
|
182
182
|
|
|
183
183
|
### Medium
|
|
184
184
|
|
|
@@ -190,10 +190,10 @@ Actions:
|
|
|
190
190
|
2. Read relevant changed source files.
|
|
191
191
|
3. Read matching navigation/spec entry for each affected codebase.
|
|
192
192
|
4. Update only stale sections, usually:
|
|
193
|
-
- `.planning/navigation/{codebase}.md`
|
|
194
|
-
- `.context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
|
|
195
|
-
- `.planning/toolchain.md` only when commands/manifests changed
|
|
196
|
-
- `.planning/STATE.md` change log
|
|
193
|
+
- `.devflow/planning/navigation/{codebase}.md`
|
|
194
|
+
- `.devflow/context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
|
|
195
|
+
- `.devflow/planning/toolchain.md` only when commands/manifests changed
|
|
196
|
+
- `.devflow/planning/STATE.md` change log
|
|
197
197
|
5. Validate and audit code-index again if navigation/spec edits introduce new files or references.
|
|
198
198
|
|
|
199
199
|
### Full
|
|
@@ -13,8 +13,8 @@ from pathlib import Path
|
|
|
13
13
|
from typing import Any
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
DEFAULT_STATE = ".planning/context-sync-state.json"
|
|
17
|
-
NAVIGATION_INDEX = ".planning/navigation/INDEX.md"
|
|
16
|
+
DEFAULT_STATE = ".devflow/planning/context-sync-state.json"
|
|
17
|
+
NAVIGATION_INDEX = ".devflow/planning/navigation/INDEX.md"
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def run_git(repo: Path, args: list[str], check: bool = True) -> subprocess.CompletedProcess[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-update-navigation
|
|
3
|
-
description: "Use when code changes require incremental updates to .planning/navigation files before audit, archive, or future workflow steps."
|
|
3
|
+
description: "Use when code changes require incremental updates to .devflow/planning/navigation files before audit, archive, or future workflow steps."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Legacy Command Metadata
|
|
@@ -11,9 +11,9 @@ Original slash-command metadata retained only as workflow invocation guidance.
|
|
|
11
11
|
user-invocable: true
|
|
12
12
|
pattern: generator+reviewer
|
|
13
13
|
inputs:
|
|
14
|
-
- .planning/features/{功能名}/变更清单.md
|
|
15
|
-
- .planning/navigation/
|
|
16
|
-
output: .planning/navigation/{name}.md (updated)
|
|
14
|
+
- .devflow/planning/features/{功能名}/变更清单.md
|
|
15
|
+
- .devflow/planning/navigation/
|
|
16
|
+
output: .devflow/planning/navigation/{name}.md (updated)
|
|
17
17
|
phase-gate:
|
|
18
18
|
step1: 加载变更清单和当前 navigation
|
|
19
19
|
step2: 识别受影响的代码库和模块
|
|
@@ -36,22 +36,22 @@ Incrementally update navigation files after code changes. Do not re-scan the ent
|
|
|
36
36
|
|
|
37
37
|
Always update:
|
|
38
38
|
|
|
39
|
-
- `.planning/navigation/{name}.md` — affected codebase navigation files
|
|
40
|
-
- `.planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
|
|
39
|
+
- `.devflow/planning/navigation/{name}.md` — affected codebase navigation files
|
|
40
|
+
- `.devflow/planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
|
|
41
41
|
|
|
42
|
-
When `.planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
|
|
42
|
+
When `.devflow/planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
|
|
43
43
|
|
|
44
|
-
- `.planning/code-index/files.jsonl`
|
|
45
|
-
- `.planning/code-index/symbols.jsonl`
|
|
46
|
-
- `.planning/code-index/relations.jsonl`
|
|
47
|
-
- `.planning/code-index/diagnostics.jsonl`
|
|
48
|
-
- `.planning/code-index/index.sqlite`
|
|
49
|
-
- `.planning/code-index/AUDIT.md`
|
|
44
|
+
- `.devflow/planning/code-index/files.jsonl`
|
|
45
|
+
- `.devflow/planning/code-index/symbols.jsonl`
|
|
46
|
+
- `.devflow/planning/code-index/relations.jsonl`
|
|
47
|
+
- `.devflow/planning/code-index/diagnostics.jsonl`
|
|
48
|
+
- `.devflow/planning/code-index/index.sqlite`
|
|
49
|
+
- `.devflow/planning/code-index/AUDIT.md`
|
|
50
50
|
|
|
51
51
|
Do not create by default:
|
|
52
52
|
|
|
53
53
|
- New navigation files (only update existing ones)
|
|
54
|
-
- New `.planning/` directories
|
|
54
|
+
- New `.devflow/planning/` directories
|
|
55
55
|
|
|
56
56
|
## Resource Loading
|
|
57
57
|
|
|
@@ -59,10 +59,10 @@ Do not create by default:
|
|
|
59
59
|
|
|
60
60
|
## Phase 1 — Load Change List And Current Navigation
|
|
61
61
|
|
|
62
|
-
1. Read `.planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
|
|
63
|
-
2. Read `.planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
|
|
64
|
-
3. For each affected codebase, read its `.planning/navigation/{name}.md`.
|
|
65
|
-
4. If `.planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
|
|
62
|
+
1. Read `.devflow/planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
|
|
63
|
+
2. Read `.devflow/planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
|
|
64
|
+
3. For each affected codebase, read its `.devflow/planning/navigation/{name}.md`.
|
|
65
|
+
4. If `.devflow/planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
|
|
66
66
|
|
|
67
67
|
```text
|
|
68
68
|
devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
|
|
@@ -130,7 +130,7 @@ For affected handlers, routes, components, jobs, or integrations identified in P
|
|
|
130
130
|
|
|
131
131
|
Use the same call chain tracing method as `workflow-project-context` Step 3b, but limited to changed modules only.
|
|
132
132
|
|
|
133
|
-
If code-index is available, use `.planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
|
|
133
|
+
If code-index is available, use `.devflow/planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
|
|
134
134
|
|
|
135
135
|
Gate: every changed handler/route/component/job from the change list has its corresponding row updated in the navigation file.
|
|
136
136
|
|
|
@@ -150,7 +150,7 @@ If conventions haven't changed, skip this phase.
|
|
|
150
150
|
1. For each updated codebase navigation file:
|
|
151
151
|
- Update `Identity → Scan Status` to the current date
|
|
152
152
|
- Add a note: "Updated after 变更清单 execution, {日期}"
|
|
153
|
-
2. Update `.planning/navigation/INDEX.md`:
|
|
153
|
+
2. Update `.devflow/planning/navigation/INDEX.md`:
|
|
154
154
|
- Sync the `Scan Status` column in the Codebase Registry for affected codebases
|
|
155
155
|
3. Run the review checklist:
|
|
156
156
|
|
|
@@ -169,18 +169,18 @@ Fix gaps before reporting completion.
|
|
|
169
169
|
Run these commands after all navigation edits. Replace `<affected-navigation-file>` with every navigation file selected in Phase 1.
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
|
-
test -s .planning/navigation/INDEX.md
|
|
173
|
-
test -s .planning/navigation/<affected-navigation-file>
|
|
174
|
-
test -s .planning/code-index/AUDIT.md # when the code index exists
|
|
172
|
+
test -s .devflow/planning/navigation/INDEX.md
|
|
173
|
+
test -s .devflow/planning/navigation/<affected-navigation-file>
|
|
174
|
+
test -s .devflow/planning/code-index/AUDIT.md # when the code index exists
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
When `.planning/code-index/` exists, call `devflow_code_index(action="validate")` and
|
|
177
|
+
When `.devflow/planning/code-index/` exists, call `devflow_code_index(action="validate")` and
|
|
178
178
|
`devflow_code_index(action="audit")` before the shell artifact checks.
|
|
179
179
|
|
|
180
|
-
The code-index commands are required only when `.planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
|
|
180
|
+
The code-index commands are required only when `.devflow/planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
|
|
181
181
|
|
|
182
182
|
## Downstream Read Contract
|
|
183
183
|
|
|
184
184
|
- `workflow-release-closeout` should verify that navigation `Scan Status` is not older than the last commit before archiving.
|
|
185
185
|
- Future `workflow-requirement-baseline` invocations will read the updated navigation for conflict and reuse detection.
|
|
186
|
-
- Future source-tracing tasks should use `.planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
|
|
186
|
+
- Future source-tracing tasks should use `.devflow/planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
只重新扫描变更清单中涉及的模块。变更清单外的代码库和模块不做任何扫描或写入。
|
|
6
6
|
|
|
7
|
-
如果项目存在 `.planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
|
|
7
|
+
如果项目存在 `.devflow/planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
|
|
8
8
|
|
|
9
9
|
```text
|
|
10
10
|
devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
|
|
@@ -34,7 +34,7 @@ devflow_code_index(action="audit")
|
|
|
34
34
|
|
|
35
35
|
当 code-index 可用时:
|
|
36
36
|
|
|
37
|
-
1. 先从 `.planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
|
|
37
|
+
1. 先从 `.devflow/planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
|
|
38
38
|
2. 按 `routes_to`、`calls`、`imports`、`reads`、`writes` 扩展相关边。
|
|
39
39
|
3. 回读 `evidence_path` 源码。
|
|
40
40
|
4. 只把已确认且适合人读摘要的链路写入 navigation。
|