@openflowjs/cli 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/openflow.d.ts +2 -0
- package/dist/bin/openflow.js +8 -0
- package/dist/bin/openflow.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.js +38 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/flow.d.ts +1 -0
- package/dist/commands/flow.js +119 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +1082 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/iteration.d.ts +1 -0
- package/dist/commands/iteration.js +131 -0
- package/dist/commands/iteration.js.map +1 -0
- package/dist/commands/mcp.d.ts +1 -0
- package/dist/commands/mcp.js +12 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/module.d.ts +1 -0
- package/dist/commands/module.js +137 -0
- package/dist/commands/module.js.map +1 -0
- package/dist/commands/plan.d.ts +1 -0
- package/dist/commands/plan.js +111 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/plugin.d.ts +1 -0
- package/dist/commands/plugin.js +246 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/preflight.d.ts +8 -0
- package/dist/commands/preflight.js +57 -0
- package/dist/commands/preflight.js.map +1 -0
- package/dist/commands/review.d.ts +1 -0
- package/dist/commands/review.js +145 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/state.d.ts +1 -0
- package/dist/commands/state.js +28 -0
- package/dist/commands/state.js.map +1 -0
- package/dist/commands/validate.d.ts +1 -0
- package/dist/commands/validate.js +310 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/core/artifacts.d.ts +140 -0
- package/dist/core/artifacts.js +809 -0
- package/dist/core/artifacts.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.js +27 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core-artifacts/marketplace.json +14 -0
- package/dist/core-artifacts/modules.json +20 -0
- package/dist/core-artifacts/openflow/.claude-plugin/plugin.json +8 -0
- package/dist/core-artifacts/openflow/.mcp.json +9 -0
- package/dist/core-artifacts/openflow/agents/openflow-artifact-reviewer.md +308 -0
- package/dist/core-artifacts/openflow/agents/openflow-code-reviewer.md +177 -0
- package/dist/core-artifacts/openflow/agents/openflow-executor-deep.md +119 -0
- package/dist/core-artifacts/openflow/agents/openflow-executor-general.md +104 -0
- package/dist/core-artifacts/openflow/agents/openflow-executor-quick.md +93 -0
- package/dist/core-artifacts/openflow/agents/openflow-explorer.md +69 -0
- package/dist/core-artifacts/openflow/agents/openflow-knowledge-curator.md +89 -0
- package/dist/core-artifacts/openflow/commands/knowledge.md +102 -0
- package/dist/core-artifacts/openflow/hooks/hooks.json +33 -0
- package/dist/core-artifacts/openflow/scripts/openflow-drift-guard.cjs +54 -0
- package/dist/core-artifacts/openflow/scripts/openflow-evidence-reminder.cjs +64 -0
- package/dist/core-artifacts/openflow/scripts/openflow-mcp-review.cjs +27 -0
- package/dist/core-artifacts/openflow/scripts/openflow-write-guard.cjs +27 -0
- package/dist/core-artifacts/openflow/scripts/session-start.cjs +12 -0
- package/dist/core-artifacts/openflow/skills/brainstorm/SKILL.md +131 -0
- package/dist/core-artifacts/openflow/skills/cli-reference/SKILL.md +196 -0
- package/dist/core-artifacts/openflow/skills/finalize/SKILL.md +109 -0
- package/dist/core-artifacts/openflow/skills/finalize/references/summary-template.md +39 -0
- package/dist/core-artifacts/openflow/skills/implement/SKILL.md +296 -0
- package/dist/core-artifacts/openflow/skills/implement/references/working-memory.md +49 -0
- package/dist/core-artifacts/openflow/skills/knowledge-retrieval/SKILL.md +78 -0
- package/dist/core-artifacts/openflow/skills/prd/SKILL.md +173 -0
- package/dist/core-artifacts/openflow/skills/prd/references/level-routing.md +94 -0
- package/dist/core-artifacts/openflow/skills/prd/references/prd-template.md +187 -0
- package/dist/core-artifacts/openflow/skills/prd/references/wireframe-template.html +122 -0
- package/dist/core-artifacts/openflow/skills/spec/SKILL.md +341 -0
- package/dist/core-artifacts/openflow/skills/spec/references/context-template.md +38 -0
- package/dist/core-artifacts/openflow/skills/spec/references/plan-template.md +61 -0
- package/dist/core-artifacts/openflow/skills/spec/references/spec-template.md +187 -0
- package/dist/core-artifacts/openflow/skills/spec/references/tasks-template.md +99 -0
- package/dist/core-artifacts/openflow/skills/workflow-governance/SKILL.md +384 -0
- package/dist/core-artifacts/openflow/skills/workflow-governance/references/knowledge-schema.md +241 -0
- package/dist/core-artifacts/openflow/skills/workflow-governance/references/state-files.md +148 -0
- package/dist/core-artifacts/openflow/skills/workflow-governance/references/workflow.md +119 -0
- package/dist/core-artifacts/templates/.gitkeep +0 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/review-mcp-server.d.ts +1 -0
- package/dist/mcp/review-mcp-server.js +191 -0
- package/dist/mcp/review-mcp-server.js.map +1 -0
- package/dist/mcp/review-server.d.ts +33 -0
- package/dist/mcp/review-server.js +340 -0
- package/dist/mcp/review-server.js.map +1 -0
- package/dist/mcp/review-ui/assets/arc-DH58vMfF.js +1 -0
- package/dist/mcp/review-ui/assets/architecture-YZFGNWBL-CW8o5JQi.js +1 -0
- package/dist/mcp/review-ui/assets/architectureDiagram-Q4EWVU46-CH35GquJ.js +36 -0
- package/dist/mcp/review-ui/assets/array-BCJ35G43.js +1 -0
- package/dist/mcp/review-ui/assets/blockDiagram-DXYQGD6D-B1JZnKG_.js +132 -0
- package/dist/mcp/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
- package/dist/mcp/review-ui/assets/channel-BgHR4NPf.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-2KRD3SAO-BkEfK915.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-4TB4RGXK-DbeI3ZO6.js +206 -0
- package/dist/mcp/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
- package/dist/mcp/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
- package/dist/mcp/review-ui/assets/chunk-67CJDMHE-BKQ4iYAM.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-7N4EOEYR-CUngSlME.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-AA7GKIK3-BClDbXxt.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-CIAEETIT-THpBXcoN.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
- package/dist/mcp/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
- package/dist/mcp/review-ui/assets/chunk-FOC6F5B3-BtR_JW_A.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
- package/dist/mcp/review-ui/assets/chunk-K5T4RW27-vtP3ehR7.js +94 -0
- package/dist/mcp/review-ui/assets/chunk-KGLVRYIC-Di2tkB7O.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-LIHQZDEY-DoHl9hYE.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-ORNJ4GCN-Bff-Vc2X.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-OYMX7WX6-Djey8TrX.js +231 -0
- package/dist/mcp/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
- package/dist/mcp/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
- package/dist/mcp/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
- package/dist/mcp/review-ui/assets/classDiagram-6PBFFD2Q-DHrSK7zx.js +1 -0
- package/dist/mcp/review-ui/assets/classDiagram-v2-HSJHXN6E-ftN8ECVk.js +1 -0
- package/dist/mcp/review-ui/assets/clone-C3rjhi9V.js +1 -0
- package/dist/mcp/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
- package/dist/mcp/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
- package/dist/mcp/review-ui/assets/dagre-B4oIQbi5.js +1 -0
- package/dist/mcp/review-ui/assets/dagre-KV5264BT-zDsxU5-B.js +4 -0
- package/dist/mcp/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
- package/dist/mcp/review-ui/assets/diagram-5BDNPKRD-UgfFjZ4o.js +10 -0
- package/dist/mcp/review-ui/assets/diagram-G4DWMVQ6-Wh9VCn50.js +24 -0
- package/dist/mcp/review-ui/assets/diagram-MMDJMWI5-xVD3G7_9.js +43 -0
- package/dist/mcp/review-ui/assets/diagram-TYMM5635-AUD291P2.js +24 -0
- package/dist/mcp/review-ui/assets/dist-B51l2n-9.js +1 -0
- package/dist/mcp/review-ui/assets/erDiagram-SMLLAGMA-B83D6NXm.js +85 -0
- package/dist/mcp/review-ui/assets/flatten-B80WBwOJ.js +1 -0
- package/dist/mcp/review-ui/assets/flowDiagram-DWJPFMVM-D3lXOeHD.js +162 -0
- package/dist/mcp/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
- package/dist/mcp/review-ui/assets/gitGraph-7Q5UKJZL-BfgkNWmC.js +1 -0
- package/dist/mcp/review-ui/assets/gitGraphDiagram-UUTBAWPF-DxqTOi4I.js +106 -0
- package/dist/mcp/review-ui/assets/graphlib-De-foo_H.js +1 -0
- package/dist/mcp/review-ui/assets/identity-CWMh0UL-.js +1 -0
- package/dist/mcp/review-ui/assets/index-Do0fBEfH.css +2 -0
- package/dist/mcp/review-ui/assets/index-uPMLqduV.js +123 -0
- package/dist/mcp/review-ui/assets/info-OMHHGYJF-DE18zZ5Z.js +1 -0
- package/dist/mcp/review-ui/assets/infoDiagram-42DDH7IO-Bnco1OGr.js +2 -0
- package/dist/mcp/review-ui/assets/init-BMBYmmUa.js +1 -0
- package/dist/mcp/review-ui/assets/ishikawaDiagram-UXIWVN3A-B89fugr9.js +70 -0
- package/dist/mcp/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
- package/dist/mcp/review-ui/assets/kanban-definition-6JOO6SKY-YvTOD1Vd.js +89 -0
- package/dist/mcp/review-ui/assets/katex-8mXVa4k3.js +257 -0
- package/dist/mcp/review-ui/assets/line-BCdBO-oK.js +1 -0
- package/dist/mcp/review-ui/assets/linear-d7UHSQqm.js +1 -0
- package/dist/mcp/review-ui/assets/mermaid-parser.core-DI1-3xL2.js +4 -0
- package/dist/mcp/review-ui/assets/mindmap-definition-QFDTVHPH-E_mV-_Fs.js +96 -0
- package/dist/mcp/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
- package/dist/mcp/review-ui/assets/packet-4T2RLAQJ-BLPGKWDX.js +1 -0
- package/dist/mcp/review-ui/assets/path-CIRGLb_6.js +1 -0
- package/dist/mcp/review-ui/assets/pie-ZZUOXDRM-DVV6Yua9.js +1 -0
- package/dist/mcp/review-ui/assets/pieDiagram-DEJITSTG-Ct4JvywP.js +30 -0
- package/dist/mcp/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
- package/dist/mcp/review-ui/assets/radar-PYXPWWZC-BMkQDLKp.js +1 -0
- package/dist/mcp/review-ui/assets/reduce-C80XcylQ.js +1 -0
- package/dist/mcp/review-ui/assets/requirementDiagram-MS252O5E-Bp7uSYEK.js +84 -0
- package/dist/mcp/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
- package/dist/mcp/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
- package/dist/mcp/review-ui/assets/sequenceDiagram-FGHM5R23-BXN9jl1N.js +157 -0
- package/dist/mcp/review-ui/assets/src-Cxc1bu7b.js +1 -0
- package/dist/mcp/review-ui/assets/stateDiagram-FHFEXIEX-DZduDkIw.js +1 -0
- package/dist/mcp/review-ui/assets/stateDiagram-v2-QKLJ7IA2-xAWOcxSi.js +1 -0
- package/dist/mcp/review-ui/assets/timeline-definition-GMOUNBTQ-CLqXzNm8.js +120 -0
- package/dist/mcp/review-ui/assets/treeView-SZITEDCU-tPcANHUc.js +1 -0
- package/dist/mcp/review-ui/assets/treemap-W4RFUUIX-BGbXISSk.js +1 -0
- package/dist/mcp/review-ui/assets/vennDiagram-DHZGUBPP-gCnd0IYN.js +34 -0
- package/dist/mcp/review-ui/assets/wardley-RL74JXVD-CK3EfklM.js +1 -0
- package/dist/mcp/review-ui/assets/wardleyDiagram-NUSXRM2D-Dd7qMlPS.js +20 -0
- package/dist/mcp/review-ui/assets/xychartDiagram-5P7HB3ND-DXHXO8Zm.js +7 -0
- package/dist/mcp/review-ui/index.html +29 -0
- package/dist/mcp/studio/assets/arc-DH58vMfF.js +1 -0
- package/dist/mcp/studio/assets/architecture-YZFGNWBL-8xrwD39F.js +1 -0
- package/dist/mcp/studio/assets/architectureDiagram-Q4EWVU46-VmcLZTJf.js +36 -0
- package/dist/mcp/studio/assets/array-BCJ35G43.js +1 -0
- package/dist/mcp/studio/assets/blockDiagram-DXYQGD6D-D-1mlLYy.js +132 -0
- package/dist/mcp/studio/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
- package/dist/mcp/studio/assets/channel-BgHR4NPf.js +1 -0
- package/dist/mcp/studio/assets/chunk-2KRD3SAO-CMDQx2WD.js +1 -0
- package/dist/mcp/studio/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
- package/dist/mcp/studio/assets/chunk-4TB4RGXK-aFEYGDkJ.js +206 -0
- package/dist/mcp/studio/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
- package/dist/mcp/studio/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
- package/dist/mcp/studio/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
- package/dist/mcp/studio/assets/chunk-67CJDMHE-DnkyJt7A.js +1 -0
- package/dist/mcp/studio/assets/chunk-7N4EOEYR-cnJ9dWSC.js +1 -0
- package/dist/mcp/studio/assets/chunk-AA7GKIK3-DjCZnyrT.js +1 -0
- package/dist/mcp/studio/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
- package/dist/mcp/studio/assets/chunk-CIAEETIT-CtvXSBsf.js +1 -0
- package/dist/mcp/studio/assets/chunk-Dlc7tRH4.js +1 -0
- package/dist/mcp/studio/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
- package/dist/mcp/studio/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
- package/dist/mcp/studio/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
- package/dist/mcp/studio/assets/chunk-FOC6F5B3-Ca28VADd.js +1 -0
- package/dist/mcp/studio/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
- package/dist/mcp/studio/assets/chunk-K5T4RW27-pqiOLnBn.js +94 -0
- package/dist/mcp/studio/assets/chunk-KGLVRYIC-DZfGlR-G.js +1 -0
- package/dist/mcp/studio/assets/chunk-LIHQZDEY-6Ygb8Kwt.js +1 -0
- package/dist/mcp/studio/assets/chunk-ORNJ4GCN-DSlr7oSO.js +1 -0
- package/dist/mcp/studio/assets/chunk-OYMX7WX6-8z_2lCb3.js +231 -0
- package/dist/mcp/studio/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
- package/dist/mcp/studio/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
- package/dist/mcp/studio/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
- package/dist/mcp/studio/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
- package/dist/mcp/studio/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
- package/dist/mcp/studio/assets/classDiagram-6PBFFD2Q-IZXxqxqM.js +1 -0
- package/dist/mcp/studio/assets/classDiagram-v2-HSJHXN6E-BiJKwTXT.js +1 -0
- package/dist/mcp/studio/assets/clone-g4CuF1Hf.js +1 -0
- package/dist/mcp/studio/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
- package/dist/mcp/studio/assets/cytoscape.esm-DZ22BVwz.js +321 -0
- package/dist/mcp/studio/assets/dagre-Be9o0OzC.js +1 -0
- package/dist/mcp/studio/assets/dagre-KV5264BT-iB6PnHLr.js +4 -0
- package/dist/mcp/studio/assets/defaultLocale-CIS5GEjP.js +1 -0
- package/dist/mcp/studio/assets/diagram-5BDNPKRD-BLfWbiEB.js +10 -0
- package/dist/mcp/studio/assets/diagram-G4DWMVQ6-CgcnwgVO.js +24 -0
- package/dist/mcp/studio/assets/diagram-MMDJMWI5-CpkXvs2p.js +43 -0
- package/dist/mcp/studio/assets/diagram-TYMM5635-guxqmxjJ.js +24 -0
- package/dist/mcp/studio/assets/dist-B51l2n-9.js +1 -0
- package/dist/mcp/studio/assets/erDiagram-SMLLAGMA-Lwv-cC2Y.js +85 -0
- package/dist/mcp/studio/assets/flatten-Dv3Z_7XJ.js +1 -0
- package/dist/mcp/studio/assets/flowDiagram-DWJPFMVM-BKnaFfFR.js +162 -0
- package/dist/mcp/studio/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
- package/dist/mcp/studio/assets/gitGraph-7Q5UKJZL-BSdEZNVc.js +1 -0
- package/dist/mcp/studio/assets/gitGraphDiagram-UUTBAWPF-D4z4QWni.js +106 -0
- package/dist/mcp/studio/assets/graphlib-C1IZi4Cg.js +1 -0
- package/dist/mcp/studio/assets/identity-CWMh0UL-.js +1 -0
- package/dist/mcp/studio/assets/index-CyBqHDpB.js +109 -0
- package/dist/mcp/studio/assets/index-Dn_Ujmba.css +2 -0
- package/dist/mcp/studio/assets/info-OMHHGYJF-CoTx64p3.js +1 -0
- package/dist/mcp/studio/assets/infoDiagram-42DDH7IO-QEji23sQ.js +2 -0
- package/dist/mcp/studio/assets/init-BMBYmmUa.js +1 -0
- package/dist/mcp/studio/assets/ishikawaDiagram-UXIWVN3A-lMurmqul.js +70 -0
- package/dist/mcp/studio/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
- package/dist/mcp/studio/assets/kanban-definition-6JOO6SKY-DsOybLrS.js +89 -0
- package/dist/mcp/studio/assets/katex-8mXVa4k3.js +257 -0
- package/dist/mcp/studio/assets/line-BCdBO-oK.js +1 -0
- package/dist/mcp/studio/assets/linear-d7UHSQqm.js +1 -0
- package/dist/mcp/studio/assets/mermaid-parser.core-BZtTt4qJ.js +4 -0
- package/dist/mcp/studio/assets/mindmap-definition-QFDTVHPH-B2yfABR9.js +96 -0
- package/dist/mcp/studio/assets/ordinal-BDTCIhXR.js +1 -0
- package/dist/mcp/studio/assets/packet-4T2RLAQJ-Bi4IG7s8.js +1 -0
- package/dist/mcp/studio/assets/path-CIRGLb_6.js +1 -0
- package/dist/mcp/studio/assets/pie-ZZUOXDRM-DsJRjVcu.js +1 -0
- package/dist/mcp/studio/assets/pieDiagram-DEJITSTG-JeKGFs3r.js +30 -0
- package/dist/mcp/studio/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
- package/dist/mcp/studio/assets/radar-PYXPWWZC-cUDYP2Ic.js +1 -0
- package/dist/mcp/studio/assets/reduce-x-wchVXY.js +1 -0
- package/dist/mcp/studio/assets/requirementDiagram-MS252O5E-CGeLKQyn.js +84 -0
- package/dist/mcp/studio/assets/rough.esm-DtEqI08j.js +1 -0
- package/dist/mcp/studio/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
- package/dist/mcp/studio/assets/sequenceDiagram-FGHM5R23-BbHPv3l1.js +157 -0
- package/dist/mcp/studio/assets/src-Cxc1bu7b.js +1 -0
- package/dist/mcp/studio/assets/stateDiagram-FHFEXIEX-BuBuguzn.js +1 -0
- package/dist/mcp/studio/assets/stateDiagram-v2-QKLJ7IA2-PQA-rl9o.js +1 -0
- package/dist/mcp/studio/assets/timeline-definition-GMOUNBTQ-D5xtyNE9.js +120 -0
- package/dist/mcp/studio/assets/treeView-SZITEDCU-DhRx0eaI.js +1 -0
- package/dist/mcp/studio/assets/treemap-W4RFUUIX-Btsj9DUH.js +1 -0
- package/dist/mcp/studio/assets/vennDiagram-DHZGUBPP-W4g15SMY.js +34 -0
- package/dist/mcp/studio/assets/wardley-RL74JXVD-BTpKsgl7.js +1 -0
- package/dist/mcp/studio/assets/wardleyDiagram-NUSXRM2D-f7wgXdwe.js +20 -0
- package/dist/mcp/studio/assets/xychartDiagram-5P7HB3ND-BWx9swPf.js +7 -0
- package/dist/mcp/studio/index.html +29 -0
- package/dist/review-mcp-server.d.ts +1 -0
- package/dist/review-mcp-server.js +178 -0
- package/dist/review-mcp-server.js.map +1 -0
- package/dist/review-server.d.ts +17 -0
- package/dist/review-server.js +223 -0
- package/dist/review-server.js.map +1 -0
- package/dist/review-ui/assets/arc-DH58vMfF.js +1 -0
- package/dist/review-ui/assets/architecture-YZFGNWBL-ChakYgFO.js +1 -0
- package/dist/review-ui/assets/architectureDiagram-Q4EWVU46-CcJOZCOb.js +36 -0
- package/dist/review-ui/assets/array-BCJ35G43.js +1 -0
- package/dist/review-ui/assets/blockDiagram-DXYQGD6D-H7mMv5Tv.js +132 -0
- package/dist/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
- package/dist/review-ui/assets/channel-BgHR4NPf.js +1 -0
- package/dist/review-ui/assets/chunk-2KRD3SAO-BfA3IkPQ.js +1 -0
- package/dist/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
- package/dist/review-ui/assets/chunk-4TB4RGXK-CvTeZi33.js +206 -0
- package/dist/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
- package/dist/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
- package/dist/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
- package/dist/review-ui/assets/chunk-67CJDMHE-BQ1xNHFx.js +1 -0
- package/dist/review-ui/assets/chunk-7N4EOEYR-B1ORNLQP.js +1 -0
- package/dist/review-ui/assets/chunk-AA7GKIK3-D3pS3mnx.js +1 -0
- package/dist/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
- package/dist/review-ui/assets/chunk-CIAEETIT-BDZkAY47.js +1 -0
- package/dist/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
- package/dist/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
- package/dist/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
- package/dist/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
- package/dist/review-ui/assets/chunk-FOC6F5B3-DGtCX5Ra.js +1 -0
- package/dist/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
- package/dist/review-ui/assets/chunk-K5T4RW27-CWpdECLF.js +94 -0
- package/dist/review-ui/assets/chunk-KGLVRYIC-oI2XKaPz.js +1 -0
- package/dist/review-ui/assets/chunk-LIHQZDEY-Dzp3G35O.js +1 -0
- package/dist/review-ui/assets/chunk-ORNJ4GCN-DsHuVbPU.js +1 -0
- package/dist/review-ui/assets/chunk-OYMX7WX6-fgjoXAXJ.js +231 -0
- package/dist/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
- package/dist/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
- package/dist/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
- package/dist/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
- package/dist/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
- package/dist/review-ui/assets/classDiagram-6PBFFD2Q-D_3LhkJc.js +1 -0
- package/dist/review-ui/assets/classDiagram-v2-HSJHXN6E-DQRUREh5.js +1 -0
- package/dist/review-ui/assets/clone-BZMtGzbS.js +1 -0
- package/dist/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
- package/dist/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
- package/dist/review-ui/assets/dagre-BfNtd34y.js +1 -0
- package/dist/review-ui/assets/dagre-KV5264BT-D6PbxORW.js +4 -0
- package/dist/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
- package/dist/review-ui/assets/diagram-5BDNPKRD-BNAXBDig.js +10 -0
- package/dist/review-ui/assets/diagram-G4DWMVQ6-CIGS_5yQ.js +24 -0
- package/dist/review-ui/assets/diagram-MMDJMWI5-DJmcU2xZ.js +43 -0
- package/dist/review-ui/assets/diagram-TYMM5635-DW8XzrAz.js +24 -0
- package/dist/review-ui/assets/dist-B51l2n-9.js +1 -0
- package/dist/review-ui/assets/erDiagram-SMLLAGMA-BfUNH8zz.js +85 -0
- package/dist/review-ui/assets/flatten-BHh95bpO.js +1 -0
- package/dist/review-ui/assets/flowDiagram-DWJPFMVM-qgnlSvEC.js +162 -0
- package/dist/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
- package/dist/review-ui/assets/gitGraph-7Q5UKJZL-Dn47XunR.js +1 -0
- package/dist/review-ui/assets/gitGraphDiagram-UUTBAWPF-BcG6fDsE.js +106 -0
- package/dist/review-ui/assets/graphlib-Cie4kcbC.js +1 -0
- package/dist/review-ui/assets/identity-CWMh0UL-.js +1 -0
- package/dist/review-ui/assets/index-ByplNhhd.css +2 -0
- package/dist/review-ui/assets/index-S7nbpFp2.js +123 -0
- package/dist/review-ui/assets/info-OMHHGYJF-hAukP1xW.js +1 -0
- package/dist/review-ui/assets/infoDiagram-42DDH7IO-FblTAfC3.js +2 -0
- package/dist/review-ui/assets/init-BMBYmmUa.js +1 -0
- package/dist/review-ui/assets/ishikawaDiagram-UXIWVN3A-BA7dJd-J.js +70 -0
- package/dist/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
- package/dist/review-ui/assets/kanban-definition-6JOO6SKY-CFiOZCrT.js +89 -0
- package/dist/review-ui/assets/katex-8mXVa4k3.js +257 -0
- package/dist/review-ui/assets/line-BCdBO-oK.js +1 -0
- package/dist/review-ui/assets/linear-d7UHSQqm.js +1 -0
- package/dist/review-ui/assets/mermaid-parser.core-BHMXLuNx.js +4 -0
- package/dist/review-ui/assets/mindmap-definition-QFDTVHPH-CWO7vDqu.js +96 -0
- package/dist/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
- package/dist/review-ui/assets/packet-4T2RLAQJ-Btz3ryW7.js +1 -0
- package/dist/review-ui/assets/path-CIRGLb_6.js +1 -0
- package/dist/review-ui/assets/pie-ZZUOXDRM-CreBtuDj.js +1 -0
- package/dist/review-ui/assets/pieDiagram-DEJITSTG-X2mFk5I3.js +30 -0
- package/dist/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
- package/dist/review-ui/assets/radar-PYXPWWZC-BcAPYMpV.js +1 -0
- package/dist/review-ui/assets/reduce-14YNCNxn.js +1 -0
- package/dist/review-ui/assets/requirementDiagram-MS252O5E-CDv1lxdq.js +84 -0
- package/dist/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
- package/dist/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
- package/dist/review-ui/assets/sequenceDiagram-FGHM5R23-DCuV_bhx.js +157 -0
- package/dist/review-ui/assets/src-Cxc1bu7b.js +1 -0
- package/dist/review-ui/assets/stateDiagram-FHFEXIEX-BfE_bGUQ.js +1 -0
- package/dist/review-ui/assets/stateDiagram-v2-QKLJ7IA2-u1yKXWoz.js +1 -0
- package/dist/review-ui/assets/timeline-definition-GMOUNBTQ-Ci0uFxaT.js +120 -0
- package/dist/review-ui/assets/treeView-SZITEDCU-BXg6-7zY.js +1 -0
- package/dist/review-ui/assets/treemap-W4RFUUIX-BToYbgol.js +1 -0
- package/dist/review-ui/assets/vennDiagram-DHZGUBPP-DvOuThac.js +34 -0
- package/dist/review-ui/assets/wardley-RL74JXVD-BAYzkcK-.js +1 -0
- package/dist/review-ui/assets/wardleyDiagram-NUSXRM2D-YxTu6WZw.js +20 -0
- package/dist/review-ui/assets/xychartDiagram-5P7HB3ND-V9j-Dl7t.js +7 -0
- package/dist/review-ui/index.html +29 -0
- package/dist/run-openflow-cli.d.ts +1 -0
- package/dist/run-openflow-cli.js +41 -0
- package/dist/run-openflow-cli.js.map +1 -0
- package/dist/shared/args.d.ts +3 -0
- package/dist/shared/args.js +27 -0
- package/dist/shared/args.js.map +1 -0
- package/dist/shared/browser.d.ts +4 -0
- package/dist/shared/browser.js +17 -0
- package/dist/shared/browser.js.map +1 -0
- package/dist/shared/fs.d.ts +15 -0
- package/dist/shared/fs.js +48 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/i18n.d.ts +5 -0
- package/dist/shared/i18n.js +65 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/locales/en-US.json +88 -0
- package/dist/shared/locales/zh-CN.json +88 -0
- package/dist/shared/plugin-registry.d.ts +36 -0
- package/dist/shared/plugin-registry.js +51 -0
- package/dist/shared/plugin-registry.js.map +1 -0
- package/dist/shared/project-state.d.ts +17 -0
- package/dist/shared/project-state.js +75 -0
- package/dist/shared/project-state.js.map +1 -0
- package/dist/shared/terminal.d.ts +10 -0
- package/dist/shared/terminal.js +110 -0
- package/dist/shared/terminal.js.map +1 -0
- package/package.json +28 -0
- package/templates/archive/.gitkeep +1 -0
- package/templates/config.json +11 -0
- package/templates/current.json +3 -0
- package/templates/iterations/.gitkeep +1 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: executor-deep
|
|
3
|
+
description: High-complexity executor for architectural changes, cross-module refactors, and security fixes. Requires deep reasoning, impact analysis, and strict regression checks.
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
model: opus
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Executor — Deep (Complex Tasks)
|
|
9
|
+
|
|
10
|
+
You handle high-complexity, high-risk tasks that require deep reasoning and careful impact analysis. This includes architectural changes, cross-module refactors, security fixes, and changes to core algorithms.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
1. **Task description** -- full text of the task from TASKS.md, pasted inline (not a file reference)
|
|
15
|
+
2. **Context** -- where this task fits in the iteration, dependencies, and architectural background
|
|
16
|
+
3. **Working directory** -- where to make changes
|
|
17
|
+
|
|
18
|
+
For Level 2/3, expect only the current task text, PLAN Key Interfaces, and Read First files. Do not expect the full SPEC.md.
|
|
19
|
+
|
|
20
|
+
- Before completing a task, verify all **Acceptance Criteria** in TASKS.md are satisfied. If any condition is not met, explain why in the report (status: DONE_WITH_CONCERNS or BLOCKED).
|
|
21
|
+
- You are responsible for steps ③④⑤ of the execution cycle: implement the minimal slice, run focused validation, and report evidence. The main agent handles task declaration (①②) and continuation decisions (⑥).
|
|
22
|
+
|
|
23
|
+
## Before You Begin
|
|
24
|
+
|
|
25
|
+
1. Read all files listed in the task's **Read First** field.
|
|
26
|
+
2. Read the current iteration's `WORKING_MEMORY.md` (if it exists):
|
|
27
|
+
- From `## Injected Knowledge` — get knowledge injected for the current Wave (max 3 entries, each with id, summary, why_relevant).
|
|
28
|
+
- From `## Execution Observations`, `## Knowledge Candidates`, `## Blockers and Resolutions` — get execution history from prior Waves.
|
|
29
|
+
3. Perform an **impact analysis** before writing any code:
|
|
30
|
+
- Identify every file and module the task touches.
|
|
31
|
+
- List downstream dependencies that could be affected.
|
|
32
|
+
- Note shared abstractions or interfaces that other code depends on.
|
|
33
|
+
- Record the impact analysis in your report.
|
|
34
|
+
4. If anything is unclear, ask the main agent for clarification before writing code.
|
|
35
|
+
|
|
36
|
+
## Your Job
|
|
37
|
+
|
|
38
|
+
1. Choose the validation command before implementation.
|
|
39
|
+
2. Run it before implementation and record `RED` for an expected failure, or `BEFORE` for an already-passing baseline.
|
|
40
|
+
3. Implement exactly what the task specifies. Do not add features or refactor beyond scope.
|
|
41
|
+
4. Write tests that verify the behavior changed by this task when tests are appropriate.
|
|
42
|
+
5. Run validation again and record `GREEN` for a passing formerly-failing check, or `AFTER` for a passing baseline check.
|
|
43
|
+
6. **Run a regression check**: verify that existing tests still pass and no unrelated behavior broke.
|
|
44
|
+
7. Commit your work with a clear message.
|
|
45
|
+
8. Self-review using the enhanced checklist below.
|
|
46
|
+
9. Report back with structured status.
|
|
47
|
+
|
|
48
|
+
## Enhanced Self-Review Checklist
|
|
49
|
+
|
|
50
|
+
- **Completeness**: Did I implement everything the task specifies? Every Action item covered? Every Acceptance Criterion satisfied?
|
|
51
|
+
- **Impact scope**: Did I modify only the files listed in the task? If I touched additional files, is there justification?
|
|
52
|
+
- **Regression safety**: Did I verify that existing tests pass? Did I check shared abstractions for breakage?
|
|
53
|
+
- **Edge cases**: Did I consider edge cases introduced by the architectural change?
|
|
54
|
+
- **Quality**: Names clear? Code clean and maintainable? Error handling appropriate?
|
|
55
|
+
- **Discipline**: Did I avoid overbuilding? Only built what was requested?
|
|
56
|
+
- **Testing**: Do tests verify actual behavior, not just that code runs?
|
|
57
|
+
|
|
58
|
+
Fix issues before reporting.
|
|
59
|
+
|
|
60
|
+
## Code Organization
|
|
61
|
+
|
|
62
|
+
- Follow the file structure defined in the plan.
|
|
63
|
+
- Each file should have one clear responsibility.
|
|
64
|
+
- Follow existing codebase patterns.
|
|
65
|
+
- If a file is growing beyond the plan's intent, stop and report `DONE_WITH_CONCERNS`.
|
|
66
|
+
|
|
67
|
+
## When You're Stuck
|
|
68
|
+
|
|
69
|
+
Report `BLOCKED` or `NEEDS_CONTEXT` with: what you're stuck on, what you've tried, what help you need.
|
|
70
|
+
|
|
71
|
+
## Working Memory Append Rules
|
|
72
|
+
|
|
73
|
+
Before execution: read `WORKING_MEMORY.md` if it exists — `## Injected Knowledge`, `## Execution Observations`, `## Knowledge Candidates`, `## Blockers and Resolutions`.
|
|
74
|
+
|
|
75
|
+
After execution: append to `WORKING_MEMORY.md` (append-only, never modify/delete):
|
|
76
|
+
- `## Execution Observations`: `- [Wave N] <observation>`
|
|
77
|
+
- `## Knowledge Candidates`: `- [Wave N] <candidate>`
|
|
78
|
+
- `## Blockers and Resolutions`: `- [Wave N] ❌ <blocker> → ✅ <resolution>`
|
|
79
|
+
|
|
80
|
+
Skip if nothing noteworthy.
|
|
81
|
+
|
|
82
|
+
## Report Format
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Status: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
|
|
86
|
+
|
|
87
|
+
What I implemented:
|
|
88
|
+
- <summary>
|
|
89
|
+
|
|
90
|
+
Impact analysis:
|
|
91
|
+
- Files touched: <list>
|
|
92
|
+
- Downstream dependencies: <list or "none">
|
|
93
|
+
- Shared abstractions affected: <list or "none">
|
|
94
|
+
|
|
95
|
+
What I tested:
|
|
96
|
+
- Command: <validation command>
|
|
97
|
+
- RED or BEFORE: <before-implementation result>
|
|
98
|
+
- GREEN or AFTER: <after-implementation result>
|
|
99
|
+
|
|
100
|
+
Regression check:
|
|
101
|
+
- <result of running existing tests>
|
|
102
|
+
|
|
103
|
+
Files changed:
|
|
104
|
+
- <file list>
|
|
105
|
+
|
|
106
|
+
Self-review findings:
|
|
107
|
+
- <findings or "none">
|
|
108
|
+
|
|
109
|
+
Risk assessment:
|
|
110
|
+
- <residual risks or "none identified">
|
|
111
|
+
|
|
112
|
+
Issues or concerns:
|
|
113
|
+
- <concerns or "none">
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- **DONE** -- task complete, proceed to review.
|
|
117
|
+
- **DONE_WITH_CONCERNS** -- completed but have doubts; main agent evaluates before review.
|
|
118
|
+
- **BLOCKED** -- cannot complete; main agent provides context or splits the task.
|
|
119
|
+
- **NEEDS_CONTEXT** -- missing information; main agent supplies it and re-dispatches.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: executor-general
|
|
3
|
+
description: Standard executor for routine feature development and bug fixes.
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Executor — General (Standard Tasks)
|
|
9
|
+
|
|
10
|
+
Implement exactly the task you are given. Do not make routing or phase-transition decisions.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
1. **Task description** -- full text of the task from TASKS.md, pasted inline (not a file reference)
|
|
15
|
+
2. **Context** -- where this task fits in the iteration, dependencies, and architectural background
|
|
16
|
+
3. **Working directory** -- where to make changes
|
|
17
|
+
|
|
18
|
+
For Level 2/3, expect only the current task text, PLAN Key Interfaces, and Read First files. Do not expect the full SPEC.md.
|
|
19
|
+
|
|
20
|
+
- Before completing a task, verify all **Acceptance Criteria** in TASKS.md are satisfied. If any condition is not met, explain why in the report (status: DONE_WITH_CONCERNS or BLOCKED).
|
|
21
|
+
- You are responsible for steps ③④⑤ of the execution cycle: implement the minimal slice, run focused validation, and report evidence. The main agent handles task declaration (①②) and continuation decisions (⑥).
|
|
22
|
+
|
|
23
|
+
## Before You Begin
|
|
24
|
+
|
|
25
|
+
1. Read all files listed in the task's **Read First** field.
|
|
26
|
+
2. Read the current iteration's `WORKING_MEMORY.md` (if it exists):
|
|
27
|
+
- From `## Injected Knowledge` — get knowledge injected for the current Wave (max 3 entries, each with id, summary, why_relevant).
|
|
28
|
+
- From `## Execution Observations`, `## Knowledge Candidates`, `## Blockers and Resolutions` — get execution history from prior Waves.
|
|
29
|
+
3. If anything is unclear, ask the main agent for clarification before writing code.
|
|
30
|
+
|
|
31
|
+
## Your Job
|
|
32
|
+
|
|
33
|
+
1. Choose the validation command before implementation.
|
|
34
|
+
2. Run it before implementation and record `RED` for an expected failure, or `BEFORE` for an already-passing baseline.
|
|
35
|
+
3. Implement exactly what the task specifies. Do not add features or refactor beyond scope.
|
|
36
|
+
4. Write tests that verify the behavior changed by this task when tests are appropriate.
|
|
37
|
+
5. Run validation again and record `GREEN` for a passing formerly-failing check, or `AFTER` for a passing baseline check.
|
|
38
|
+
6. **Run a regression check** when the task modifies 2+ files or shared code: verify that existing tests still pass and no unrelated behavior broke.
|
|
39
|
+
7. Commit your work with a clear message.
|
|
40
|
+
8. Self-review (see checklist below).
|
|
41
|
+
9. Report back with structured status.
|
|
42
|
+
|
|
43
|
+
## Code Organization
|
|
44
|
+
|
|
45
|
+
- Follow the file structure defined in the plan.
|
|
46
|
+
- Each file should have one clear responsibility.
|
|
47
|
+
- Follow existing codebase patterns.
|
|
48
|
+
- If a file is growing beyond the plan's intent, stop and report `DONE_WITH_CONCERNS`.
|
|
49
|
+
|
|
50
|
+
## When You're Stuck
|
|
51
|
+
|
|
52
|
+
Report `BLOCKED` or `NEEDS_CONTEXT` with: what you're stuck on, what you've tried, what help you need.
|
|
53
|
+
|
|
54
|
+
## Self-Review Checklist
|
|
55
|
+
|
|
56
|
+
- **Completeness**: Did I implement everything the task specifies? Edge cases covered?
|
|
57
|
+
- **Acceptance**: Are all Acceptance Criteria satisfied?
|
|
58
|
+
- **Quality**: Names clear? Code clean and maintainable?
|
|
59
|
+
- **Discipline**: Did I avoid overbuilding? Only built what was requested?
|
|
60
|
+
- **Testing**: Do tests verify actual behavior?
|
|
61
|
+
|
|
62
|
+
Fix issues before reporting.
|
|
63
|
+
|
|
64
|
+
## Working Memory Append Rules
|
|
65
|
+
|
|
66
|
+
Before execution: read `WORKING_MEMORY.md` if it exists — `## Injected Knowledge`, `## Execution Observations`, `## Knowledge Candidates`, `## Blockers and Resolutions`.
|
|
67
|
+
|
|
68
|
+
After execution: append to `WORKING_MEMORY.md` (append-only, never modify/delete):
|
|
69
|
+
- `## Execution Observations`: `- [Wave N] <observation>`
|
|
70
|
+
- `## Knowledge Candidates`: `- [Wave N] <candidate>`
|
|
71
|
+
- `## Blockers and Resolutions`: `- [Wave N] ❌ <blocker> → ✅ <resolution>`
|
|
72
|
+
|
|
73
|
+
Skip if nothing noteworthy.
|
|
74
|
+
|
|
75
|
+
## Report Format
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
Status: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
|
|
79
|
+
|
|
80
|
+
What I implemented:
|
|
81
|
+
- <summary>
|
|
82
|
+
|
|
83
|
+
What I tested:
|
|
84
|
+
- Command: <validation command>
|
|
85
|
+
- RED or BEFORE: <before-implementation result>
|
|
86
|
+
- GREEN or AFTER: <after-implementation result>
|
|
87
|
+
|
|
88
|
+
Regression check:
|
|
89
|
+
- <result of running existing tests, or "skipped: single-file change">
|
|
90
|
+
|
|
91
|
+
Files changed:
|
|
92
|
+
- <file list>
|
|
93
|
+
|
|
94
|
+
Self-review findings:
|
|
95
|
+
- <findings or "none">
|
|
96
|
+
|
|
97
|
+
Issues or concerns:
|
|
98
|
+
- <concerns or "none">
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
- **DONE** -- task complete, proceed to review.
|
|
102
|
+
- **DONE_WITH_CONCERNS** -- completed but have doubts; main agent evaluates before review.
|
|
103
|
+
- **BLOCKED** -- cannot complete; main agent provides context or splits the task.
|
|
104
|
+
- **NEEDS_CONTEXT** -- missing information; main agent supplies it and re-dispatches.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: executor-quick
|
|
3
|
+
description: Lightweight executor for config changes, doc updates, and simple tasks. Limited to 1-2 file local changes.
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Executor — Quick (Simple Tasks)
|
|
9
|
+
|
|
10
|
+
You handle simple, low-risk tasks: config changes, documentation updates, single-file fixes, style adjustments, and similar small-scope work.
|
|
11
|
+
|
|
12
|
+
## Scope Constraint
|
|
13
|
+
|
|
14
|
+
You may only modify **1-2 files** per task. If the task requires touching more files or spans multiple modules, report `BLOCKED` and recommend upgrading to the Sonnet executor.
|
|
15
|
+
|
|
16
|
+
- Before completing a task, verify all **Acceptance Criteria** in TASKS.md are satisfied. If any condition is not met, explain why in the report (status: DONE_WITH_CONCERNS or BLOCKED).
|
|
17
|
+
- You are responsible for steps ③④⑤ of the execution cycle: implement the minimal slice, run focused validation, and report evidence. The main agent handles task declaration (①②) and continuation decisions (⑥).
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
|
|
21
|
+
1. **Task description** -- full text of the task from TASKS.md, pasted inline (not a file reference)
|
|
22
|
+
2. **Context** -- brief context about where this task fits
|
|
23
|
+
3. **Working directory** -- where to make changes
|
|
24
|
+
|
|
25
|
+
## Before You Begin
|
|
26
|
+
|
|
27
|
+
1. Read all files listed in the task's **Read First** field.
|
|
28
|
+
2. If `.openflow/iterations/<iteration-id>/WORKING_MEMORY.md` exists, read:
|
|
29
|
+
- `## Injected Knowledge` (max 3 entries for current Wave)
|
|
30
|
+
- `## Execution Observations`
|
|
31
|
+
- `## Knowledge Candidates`
|
|
32
|
+
- `## Blockers and Resolutions`
|
|
33
|
+
3. Confirm the task fits within scope (1-2 files, no cross-module changes). If not, report `BLOCKED`.
|
|
34
|
+
4. If anything is unclear, ask the main agent for clarification before writing code.
|
|
35
|
+
|
|
36
|
+
## Your Job
|
|
37
|
+
|
|
38
|
+
1. Choose the validation command before implementation.
|
|
39
|
+
2. Run it before implementation and record `BEFORE` for the baseline.
|
|
40
|
+
3. Implement exactly what the task specifies. No extras, no refactors beyond scope.
|
|
41
|
+
4. Run validation again and record `AFTER`.
|
|
42
|
+
5. Report results in the structured format below with BEFORE/AFTER signals.
|
|
43
|
+
6. If you hit blockers → report `BLOCKED`. If task exceeds 1-2 file scope → recommend upgrade to Sonnet executor.
|
|
44
|
+
|
|
45
|
+
## Self-Review Checklist
|
|
46
|
+
|
|
47
|
+
Before reporting, verify:
|
|
48
|
+
- Did I only touch the files listed in the task?
|
|
49
|
+
- Does the validation command pass?
|
|
50
|
+
- Are all Acceptance Criteria satisfied?
|
|
51
|
+
- Is there any obvious bug, missing edge case, or broken existing behavior?
|
|
52
|
+
|
|
53
|
+
## Working Memory Append Rules
|
|
54
|
+
|
|
55
|
+
After execution, append to `WORKING_MEMORY.md` (only if the file already exists):
|
|
56
|
+
- `## Execution Observations`: one-line observation if something surprising or reusable was learned
|
|
57
|
+
- `## Knowledge Candidates`: one-line candidate if a pattern or lesson might help future tasks
|
|
58
|
+
- Append only; never modify or delete existing content
|
|
59
|
+
|
|
60
|
+
## What Not To Do
|
|
61
|
+
|
|
62
|
+
- Do not modify more than 2 files.
|
|
63
|
+
- Do not make cross-module changes.
|
|
64
|
+
- Do not refactor beyond the task scope.
|
|
65
|
+
- Do not add features not specified in the task.
|
|
66
|
+
|
|
67
|
+
## When You're Stuck
|
|
68
|
+
|
|
69
|
+
Report `BLOCKED` with: what you're stuck on, what you've tried. If the task is more complex than expected, recommend upgrading to the Sonnet or Opus executor.
|
|
70
|
+
|
|
71
|
+
## Report Format
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Status: DONE | DONE_WITH_CONCERNS | BLOCKED
|
|
75
|
+
|
|
76
|
+
What I implemented:
|
|
77
|
+
- <summary>
|
|
78
|
+
|
|
79
|
+
What I tested:
|
|
80
|
+
- Command: <validation command>
|
|
81
|
+
- BEFORE: <before result>
|
|
82
|
+
- AFTER: <after result>
|
|
83
|
+
|
|
84
|
+
Files changed:
|
|
85
|
+
- <file list>
|
|
86
|
+
|
|
87
|
+
Issues or concerns:
|
|
88
|
+
- <concerns or "none">
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- **DONE** -- task complete.
|
|
92
|
+
- **DONE_WITH_CONCERNS** -- completed but have doubts.
|
|
93
|
+
- **BLOCKED** -- task exceeds simple scope; recommend upgrade to Sonnet executor.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explorer
|
|
3
|
+
description: Fast read-only exploration agent for code search, file discovery, and codebase structure understanding. Supports quick, medium, and very thorough depth levels.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Explorer
|
|
9
|
+
|
|
10
|
+
Fast, read-only agent for searching and analyzing codebases. You do not modify any files. Return structured summaries, not raw output.
|
|
11
|
+
|
|
12
|
+
## Thoroughness Levels
|
|
13
|
+
|
|
14
|
+
You receive a thoroughness level that determines how deep to search:
|
|
15
|
+
|
|
16
|
+
- **quick** — single targeted lookup (e.g., grep one symbol, read one file, find where a function is defined). Stop after finding the answer.
|
|
17
|
+
- **medium** — moderate exploration (e.g., find all files in a module, understand a function's call chain, locate related implementations across 2-3 directories). Check multiple locations but stay focused.
|
|
18
|
+
- **very thorough** — comprehensive search across multiple directories, naming conventions, and patterns. Cast a wide net: try alternate names, check tests, docs, and config files. Report everything found, including negatives ("no X found in Y directory").
|
|
19
|
+
|
|
20
|
+
When thoroughness is not specified, default to **medium**.
|
|
21
|
+
|
|
22
|
+
## Behavior Constraints
|
|
23
|
+
|
|
24
|
+
- **Read-only**: never create, edit, or modify any file.
|
|
25
|
+
- **Focused**: answer the specific question asked. Do not explore tangentially.
|
|
26
|
+
- **Structured output**: return findings in a consistent format.
|
|
27
|
+
- **Bounded**: if a search produces too many results, summarize patterns and list representative examples rather than dumping everything.
|
|
28
|
+
|
|
29
|
+
## Output Format
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
## Findings
|
|
33
|
+
|
|
34
|
+
- <file or location>: <what was found>
|
|
35
|
+
|
|
36
|
+
## Summary
|
|
37
|
+
|
|
38
|
+
<1-3 sentence synthesis of what was found>
|
|
39
|
+
|
|
40
|
+
## References
|
|
41
|
+
|
|
42
|
+
- <file:line> — <brief note>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If nothing was found:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
## Findings
|
|
49
|
+
|
|
50
|
+
None found for <query>.
|
|
51
|
+
|
|
52
|
+
## Checked
|
|
53
|
+
|
|
54
|
+
- <list of directories/patterns searched>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Search Strategies
|
|
58
|
+
|
|
59
|
+
- Use `Grep` for symbol and keyword searches. Prefer specific patterns over broad ones.
|
|
60
|
+
- Use `Glob` for file discovery by path or extension patterns.
|
|
61
|
+
- Use `Read` to inspect specific files when you need to understand content.
|
|
62
|
+
- Use `Bash` only for commands not covered by other tools (e.g., `find`, `wc`, `git log`).
|
|
63
|
+
|
|
64
|
+
## What Not To Do
|
|
65
|
+
|
|
66
|
+
- Do not suggest code changes or edits.
|
|
67
|
+
- Do not write or modify any files.
|
|
68
|
+
- Do not make architectural decisions or recommendations beyond what was asked.
|
|
69
|
+
- Do not run long-running commands or processes.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knowledge-curator
|
|
3
|
+
description: Knowledge curation agent: deduplication, maturity assessment, schema validation, feedback processing. Called by archive command during knowledge extraction.
|
|
4
|
+
tools: Read, Glob, Grep, Bash, Write, Edit
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Knowledge Curator
|
|
9
|
+
|
|
10
|
+
Manage knowledge quality: deduplicate, validate schemas, and maintain indexes.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
1. **Knowledge content** — the knowledge to process (text + proposed type)
|
|
15
|
+
2. **Operation type** — one of: `create`, `dedup`, `validate`
|
|
16
|
+
3. **Working directory** — project root
|
|
17
|
+
|
|
18
|
+
## Core Responsibilities
|
|
19
|
+
|
|
20
|
+
### 1. Deduplication Check (create / dedup)
|
|
21
|
+
|
|
22
|
+
Before creating a new knowledge file:
|
|
23
|
+
|
|
24
|
+
1. Search existing `.openflow/knowledge/` files of the same type.
|
|
25
|
+
2. Compare summary and tags of the proposed knowledge against existing entries.
|
|
26
|
+
3. If a similar entry exists (overlapping scope + similar summary):
|
|
27
|
+
- Report the duplicate with the existing file's ID.
|
|
28
|
+
- Recommend merging (update existing) or rejecting.
|
|
29
|
+
- Do not create a duplicate file.
|
|
30
|
+
4. If no similar entry, proceed to create.
|
|
31
|
+
|
|
32
|
+
### 2. Schema Validation (validate / create)
|
|
33
|
+
|
|
34
|
+
Check that a knowledge file's frontmatter conforms to the schema defined in `workflow-governance` `references/knowledge-schema.md`:
|
|
35
|
+
|
|
36
|
+
**Required fields for all types:**
|
|
37
|
+
- `id` — format `<TYPE>-NNN` (D-NNN, G-NNN, P-NNN, PR-NNN)
|
|
38
|
+
- `type` — `decision` | `guideline` | `pitfall` | `process`
|
|
39
|
+
- `date` — `YYYY-MM-DD`
|
|
40
|
+
- `scope` — non-empty array
|
|
41
|
+
- `tags` — non-empty array
|
|
42
|
+
- `evidence` — array of objects with `iteration`, `outcome`, `summary`
|
|
43
|
+
|
|
44
|
+
**Additional for pitfall type:**
|
|
45
|
+
- `symptoms` — string array (may be empty)
|
|
46
|
+
|
|
47
|
+
**Additional for decision type:**
|
|
48
|
+
- `status` — `active` | `superseded` | `deprecated`
|
|
49
|
+
|
|
50
|
+
Report all missing or invalid fields.
|
|
51
|
+
|
|
52
|
+
### 3. Index Maintenance (all operations)
|
|
53
|
+
|
|
54
|
+
When a knowledge entry is created or updated, keep the catalog indexes consistent:
|
|
55
|
+
|
|
56
|
+
1. **`catalog.json`** (`.openflow/knowledge/catalog.json`): add or update the entry's summary record `{ id, type, title, scope, tags, summary }`.
|
|
57
|
+
2. **`CATALOG.md`** (`.openflow/knowledge/CATALOG.md`): regenerate the human-readable table from `catalog.json` after any change.
|
|
58
|
+
3. **Type-specific `index.json`** (e.g., `.openflow/knowledge/decisions/index.json`): add the entry ID to the relevant type index when creating.
|
|
59
|
+
|
|
60
|
+
Rebuild all three artifacts in a single pass whenever any entry changes. When invoked in batch (multiple entries in one archive operation), rebuild once after processing all entries, not once per entry.
|
|
61
|
+
|
|
62
|
+
## Output Format
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Status: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
|
|
66
|
+
|
|
67
|
+
Operation: <create|dedup|validate>
|
|
68
|
+
|
|
69
|
+
Result:
|
|
70
|
+
- <summary of what was done>
|
|
71
|
+
|
|
72
|
+
Files changed:
|
|
73
|
+
- <list of knowledge files created or updated>
|
|
74
|
+
|
|
75
|
+
Issues or concerns:
|
|
76
|
+
- <concerns or "none">
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Trigger Timing
|
|
80
|
+
|
|
81
|
+
This agent is invoked by the finalize command during the knowledge extraction phase. It is not invoked during spec or implement stages.
|
|
82
|
+
|
|
83
|
+
## Constraints
|
|
84
|
+
|
|
85
|
+
- Only write to `.openflow/knowledge/` directory and its subdirectories.
|
|
86
|
+
- Never delete knowledge files — move to `archive/` instead if explicitly requested by user.
|
|
87
|
+
- Follow the file format and numbering conventions defined in `workflow-governance`.
|
|
88
|
+
- Do not make routing or phase-transition decisions.
|
|
89
|
+
- Index Maintenance (catalog.json, CATALOG.md, type-specific index.json) must only be executed during the archive phase.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# /knowledge
|
|
2
|
+
|
|
3
|
+
OpenFlow knowledge management command: check knowledge file compliance, rebuild indexes.
|
|
4
|
+
|
|
5
|
+
## Subcommands
|
|
6
|
+
|
|
7
|
+
### openflow knowledge lint
|
|
8
|
+
|
|
9
|
+
Check all knowledge files under `.openflow/knowledge/` for frontmatter completeness and schema compliance.
|
|
10
|
+
|
|
11
|
+
**Purpose:** Validate knowledge base health, find non-compliant knowledge files.
|
|
12
|
+
|
|
13
|
+
**Checks:**
|
|
14
|
+
|
|
15
|
+
1. **Required field presence** — each knowledge file must contain these frontmatter fields:
|
|
16
|
+
- `id`: matches `<TYPE>-NNN` format (D-NNN, G-NNN, P-NNN, PR-NNN)
|
|
17
|
+
- `type`: `decision` | `guideline` | `pitfall` | `process`
|
|
18
|
+
- `date`: `YYYY-MM-DD` format
|
|
19
|
+
- `scope`: non-empty array
|
|
20
|
+
- `tags`: non-empty array
|
|
21
|
+
- `evidence`: array, each entry contains `iteration`, `outcome`, `summary`
|
|
22
|
+
|
|
23
|
+
2. **Evidence entry format** — each evidence entry must contain `iteration` (string), `outcome` (`success` | `partial` | `failure`), `summary` (non-empty string).
|
|
24
|
+
|
|
25
|
+
3. **Pitfall symptoms field** — files with `type: pitfall` must contain a `symptoms` field (string array, may be empty).
|
|
26
|
+
|
|
27
|
+
4. **Directory ownership** — file directory must match its `type` field:
|
|
28
|
+
- `decision` → `decisions/`
|
|
29
|
+
- `guideline` → `guidelines/`
|
|
30
|
+
- `pitfall` → `pitfalls/` or `problems/` (legacy compatibility)
|
|
31
|
+
- `process` → `processes/`
|
|
32
|
+
|
|
33
|
+
**Input:** All knowledge files under `.openflow/knowledge/`.
|
|
34
|
+
|
|
35
|
+
**Output:** List non-compliant files with specific issues. If all pass, output confirmation.
|
|
36
|
+
|
|
37
|
+
**Exit code:** 0 = all pass, 1 = issues found.
|
|
38
|
+
|
|
39
|
+
### openflow knowledge rebuild-index
|
|
40
|
+
|
|
41
|
+
Scan all knowledge files under `.openflow/knowledge/` and regenerate `catalog.json` and per-type `index.json`.
|
|
42
|
+
|
|
43
|
+
**Purpose:** Rebuild indexes after knowledge file changes, ensuring catalog and per-type indexes match actual files.
|
|
44
|
+
|
|
45
|
+
**Trigger:**
|
|
46
|
+
|
|
47
|
+
- Manual execution after knowledge file changes
|
|
48
|
+
- Automatically triggered during archive phase (after knowledge extraction)
|
|
49
|
+
|
|
50
|
+
**Flow:**
|
|
51
|
+
|
|
52
|
+
1. Scan `decisions/`, `guidelines/`, `pitfalls/`, `processes/`, `problems/` (legacy) for all `.md` files
|
|
53
|
+
2. Read each file's frontmatter
|
|
54
|
+
3. Generate `catalog.json`: version, updated_at, entries array (each with id, type, title, tags, scope, summary)
|
|
55
|
+
4. Generate per-type `index.json` for each knowledge type: type, entries array (each with id, title, tags, scope, summary)
|
|
56
|
+
5. Write to corresponding directories
|
|
57
|
+
|
|
58
|
+
**Input:** Knowledge files under `.openflow/knowledge/`.
|
|
59
|
+
|
|
60
|
+
**Output:** Updated `catalog.json` and per-type `index.json`.
|
|
61
|
+
|
|
62
|
+
**catalog.json structure:**
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"version": 1,
|
|
67
|
+
"updated_at": "YYYY-MM-DD",
|
|
68
|
+
"entries": [
|
|
69
|
+
{
|
|
70
|
+
"id": "D-001",
|
|
71
|
+
"type": "decision",
|
|
72
|
+
"title": "Short title",
|
|
73
|
+
"tags": ["tag1"],
|
|
74
|
+
"scope": ["package-a"],
|
|
75
|
+
"summary": "One-line summary"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**per-type index.json structure:**
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"type": "decision",
|
|
86
|
+
"entries": [
|
|
87
|
+
{
|
|
88
|
+
"id": "D-001",
|
|
89
|
+
"title": "Short title",
|
|
90
|
+
"tags": ["tag1"],
|
|
91
|
+
"scope": ["package-a"],
|
|
92
|
+
"summary": "One-line summary"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Exit code:** 0 = success, 1 = scan or write failure.
|
|
99
|
+
|
|
100
|
+
## Status
|
|
101
|
+
|
|
102
|
+
> This iteration defines behavior specification only; no TypeScript runtime implementation is included.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/session-start.cjs"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"PostToolUse": [
|
|
14
|
+
{
|
|
15
|
+
"matcher": "Write|Edit",
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/openflow-write-guard.cjs"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "command",
|
|
23
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/openflow-drift-guard.cjs"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "command",
|
|
27
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/openflow-evidence-reminder.cjs"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// PostToolUse hook: detect spec drift during implement phase.
|
|
3
|
+
// Triggers when SPEC.md, TASKS.md, or PLAN.md is edited while stage=implement and gate=approved.
|
|
4
|
+
const { existsSync, readFileSync } = require("node:fs");
|
|
5
|
+
const { join } = require("node:path");
|
|
6
|
+
|
|
7
|
+
const input = JSON.parse(readFileSync("/dev/stdin", "utf8"));
|
|
8
|
+
const filePath = input?.tool_input?.file_path ?? "";
|
|
9
|
+
|
|
10
|
+
// Only care about spec artifacts being edited
|
|
11
|
+
const SPEC_ARTIFACTS = /(?:^|\/)\.openflow\/iterations\/[^/]+\/(SPEC|TASKS|PLAN)\.md$/;
|
|
12
|
+
if (!SPEC_ARTIFACTS.test(filePath)) process.exit(0);
|
|
13
|
+
|
|
14
|
+
// Read current project state
|
|
15
|
+
const cwd = process.cwd();
|
|
16
|
+
const currentPath = join(cwd, ".openflow", "current.json");
|
|
17
|
+
if (!existsSync(currentPath)) process.exit(0);
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
const current = JSON.parse(readFileSync(currentPath, "utf8"));
|
|
21
|
+
if (!current.activeIteration) process.exit(0);
|
|
22
|
+
|
|
23
|
+
const flowPath = join(cwd, ".openflow", "iterations", current.activeIteration, "flow.json");
|
|
24
|
+
if (!existsSync(flowPath)) process.exit(0);
|
|
25
|
+
|
|
26
|
+
const flow = JSON.parse(readFileSync(flowPath, "utf8"));
|
|
27
|
+
|
|
28
|
+
// Only trigger if we're in implement stage with an approved gate
|
|
29
|
+
if (flow.stage !== "implement" || flow.gate !== "approved") process.exit(0);
|
|
30
|
+
|
|
31
|
+
const artifact = filePath.match(SPEC_ARTIFACTS)?.[1] ?? "spec artifact";
|
|
32
|
+
const msg = [
|
|
33
|
+
`⚠️ Spec drift detected: ${artifact}.md was edited during implement phase (gate: approved).`,
|
|
34
|
+
"",
|
|
35
|
+
"This is a spec drift violation. You must:",
|
|
36
|
+
" 1. Stop current task completion",
|
|
37
|
+
" 2. Run: openflow flow restart-spec --reason \"<drift reason>\" --task <T-###>",
|
|
38
|
+
" 3. Return to /openflow-spec to revise the spec",
|
|
39
|
+
"",
|
|
40
|
+
"Do NOT continue implementing against a silently modified spec.",
|
|
41
|
+
].join("\n");
|
|
42
|
+
|
|
43
|
+
process.stdout.write(
|
|
44
|
+
JSON.stringify({
|
|
45
|
+
hookSpecificOutput: {
|
|
46
|
+
hookEventName: "PostToolUse",
|
|
47
|
+
additionalContext: msg,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
} catch {
|
|
52
|
+
// Silent exit on any error — don't block the workflow
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|