@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.
Files changed (403) hide show
  1. package/dist/bin/openflow.d.ts +2 -0
  2. package/dist/bin/openflow.js +8 -0
  3. package/dist/bin/openflow.js.map +1 -0
  4. package/dist/commands/config.d.ts +2 -0
  5. package/dist/commands/config.js +38 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/flow.d.ts +1 -0
  8. package/dist/commands/flow.js +119 -0
  9. package/dist/commands/flow.js.map +1 -0
  10. package/dist/commands/init.d.ts +2 -0
  11. package/dist/commands/init.js +1082 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/commands/iteration.d.ts +1 -0
  14. package/dist/commands/iteration.js +131 -0
  15. package/dist/commands/iteration.js.map +1 -0
  16. package/dist/commands/mcp.d.ts +1 -0
  17. package/dist/commands/mcp.js +12 -0
  18. package/dist/commands/mcp.js.map +1 -0
  19. package/dist/commands/module.d.ts +1 -0
  20. package/dist/commands/module.js +137 -0
  21. package/dist/commands/module.js.map +1 -0
  22. package/dist/commands/plan.d.ts +1 -0
  23. package/dist/commands/plan.js +111 -0
  24. package/dist/commands/plan.js.map +1 -0
  25. package/dist/commands/plugin.d.ts +1 -0
  26. package/dist/commands/plugin.js +246 -0
  27. package/dist/commands/plugin.js.map +1 -0
  28. package/dist/commands/preflight.d.ts +8 -0
  29. package/dist/commands/preflight.js +57 -0
  30. package/dist/commands/preflight.js.map +1 -0
  31. package/dist/commands/review.d.ts +1 -0
  32. package/dist/commands/review.js +145 -0
  33. package/dist/commands/review.js.map +1 -0
  34. package/dist/commands/state.d.ts +1 -0
  35. package/dist/commands/state.js +28 -0
  36. package/dist/commands/state.js.map +1 -0
  37. package/dist/commands/validate.d.ts +1 -0
  38. package/dist/commands/validate.js +310 -0
  39. package/dist/commands/validate.js.map +1 -0
  40. package/dist/core/artifacts.d.ts +140 -0
  41. package/dist/core/artifacts.js +809 -0
  42. package/dist/core/artifacts.js.map +1 -0
  43. package/dist/core/index.d.ts +12 -0
  44. package/dist/core/index.js +27 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/core-artifacts/marketplace.json +14 -0
  47. package/dist/core-artifacts/modules.json +20 -0
  48. package/dist/core-artifacts/openflow/.claude-plugin/plugin.json +8 -0
  49. package/dist/core-artifacts/openflow/.mcp.json +9 -0
  50. package/dist/core-artifacts/openflow/agents/openflow-artifact-reviewer.md +308 -0
  51. package/dist/core-artifacts/openflow/agents/openflow-code-reviewer.md +177 -0
  52. package/dist/core-artifacts/openflow/agents/openflow-executor-deep.md +119 -0
  53. package/dist/core-artifacts/openflow/agents/openflow-executor-general.md +104 -0
  54. package/dist/core-artifacts/openflow/agents/openflow-executor-quick.md +93 -0
  55. package/dist/core-artifacts/openflow/agents/openflow-explorer.md +69 -0
  56. package/dist/core-artifacts/openflow/agents/openflow-knowledge-curator.md +89 -0
  57. package/dist/core-artifacts/openflow/commands/knowledge.md +102 -0
  58. package/dist/core-artifacts/openflow/hooks/hooks.json +33 -0
  59. package/dist/core-artifacts/openflow/scripts/openflow-drift-guard.cjs +54 -0
  60. package/dist/core-artifacts/openflow/scripts/openflow-evidence-reminder.cjs +64 -0
  61. package/dist/core-artifacts/openflow/scripts/openflow-mcp-review.cjs +27 -0
  62. package/dist/core-artifacts/openflow/scripts/openflow-write-guard.cjs +27 -0
  63. package/dist/core-artifacts/openflow/scripts/session-start.cjs +12 -0
  64. package/dist/core-artifacts/openflow/skills/brainstorm/SKILL.md +131 -0
  65. package/dist/core-artifacts/openflow/skills/cli-reference/SKILL.md +196 -0
  66. package/dist/core-artifacts/openflow/skills/finalize/SKILL.md +109 -0
  67. package/dist/core-artifacts/openflow/skills/finalize/references/summary-template.md +39 -0
  68. package/dist/core-artifacts/openflow/skills/implement/SKILL.md +296 -0
  69. package/dist/core-artifacts/openflow/skills/implement/references/working-memory.md +49 -0
  70. package/dist/core-artifacts/openflow/skills/knowledge-retrieval/SKILL.md +78 -0
  71. package/dist/core-artifacts/openflow/skills/prd/SKILL.md +173 -0
  72. package/dist/core-artifacts/openflow/skills/prd/references/level-routing.md +94 -0
  73. package/dist/core-artifacts/openflow/skills/prd/references/prd-template.md +187 -0
  74. package/dist/core-artifacts/openflow/skills/prd/references/wireframe-template.html +122 -0
  75. package/dist/core-artifacts/openflow/skills/spec/SKILL.md +341 -0
  76. package/dist/core-artifacts/openflow/skills/spec/references/context-template.md +38 -0
  77. package/dist/core-artifacts/openflow/skills/spec/references/plan-template.md +61 -0
  78. package/dist/core-artifacts/openflow/skills/spec/references/spec-template.md +187 -0
  79. package/dist/core-artifacts/openflow/skills/spec/references/tasks-template.md +99 -0
  80. package/dist/core-artifacts/openflow/skills/workflow-governance/SKILL.md +384 -0
  81. package/dist/core-artifacts/openflow/skills/workflow-governance/references/knowledge-schema.md +241 -0
  82. package/dist/core-artifacts/openflow/skills/workflow-governance/references/state-files.md +148 -0
  83. package/dist/core-artifacts/openflow/skills/workflow-governance/references/workflow.md +119 -0
  84. package/dist/core-artifacts/templates/.gitkeep +0 -0
  85. package/dist/index.d.ts +4 -0
  86. package/dist/index.js +5 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/mcp/review-mcp-server.d.ts +1 -0
  89. package/dist/mcp/review-mcp-server.js +191 -0
  90. package/dist/mcp/review-mcp-server.js.map +1 -0
  91. package/dist/mcp/review-server.d.ts +33 -0
  92. package/dist/mcp/review-server.js +340 -0
  93. package/dist/mcp/review-server.js.map +1 -0
  94. package/dist/mcp/review-ui/assets/arc-DH58vMfF.js +1 -0
  95. package/dist/mcp/review-ui/assets/architecture-YZFGNWBL-CW8o5JQi.js +1 -0
  96. package/dist/mcp/review-ui/assets/architectureDiagram-Q4EWVU46-CH35GquJ.js +36 -0
  97. package/dist/mcp/review-ui/assets/array-BCJ35G43.js +1 -0
  98. package/dist/mcp/review-ui/assets/blockDiagram-DXYQGD6D-B1JZnKG_.js +132 -0
  99. package/dist/mcp/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  100. package/dist/mcp/review-ui/assets/channel-BgHR4NPf.js +1 -0
  101. package/dist/mcp/review-ui/assets/chunk-2KRD3SAO-BkEfK915.js +1 -0
  102. package/dist/mcp/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  103. package/dist/mcp/review-ui/assets/chunk-4TB4RGXK-DbeI3ZO6.js +206 -0
  104. package/dist/mcp/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  105. package/dist/mcp/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  106. package/dist/mcp/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  107. package/dist/mcp/review-ui/assets/chunk-67CJDMHE-BKQ4iYAM.js +1 -0
  108. package/dist/mcp/review-ui/assets/chunk-7N4EOEYR-CUngSlME.js +1 -0
  109. package/dist/mcp/review-ui/assets/chunk-AA7GKIK3-BClDbXxt.js +1 -0
  110. package/dist/mcp/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  111. package/dist/mcp/review-ui/assets/chunk-CIAEETIT-THpBXcoN.js +1 -0
  112. package/dist/mcp/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
  113. package/dist/mcp/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  114. package/dist/mcp/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  115. package/dist/mcp/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  116. package/dist/mcp/review-ui/assets/chunk-FOC6F5B3-BtR_JW_A.js +1 -0
  117. package/dist/mcp/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  118. package/dist/mcp/review-ui/assets/chunk-K5T4RW27-vtP3ehR7.js +94 -0
  119. package/dist/mcp/review-ui/assets/chunk-KGLVRYIC-Di2tkB7O.js +1 -0
  120. package/dist/mcp/review-ui/assets/chunk-LIHQZDEY-DoHl9hYE.js +1 -0
  121. package/dist/mcp/review-ui/assets/chunk-ORNJ4GCN-Bff-Vc2X.js +1 -0
  122. package/dist/mcp/review-ui/assets/chunk-OYMX7WX6-Djey8TrX.js +231 -0
  123. package/dist/mcp/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  124. package/dist/mcp/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  125. package/dist/mcp/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  126. package/dist/mcp/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  127. package/dist/mcp/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  128. package/dist/mcp/review-ui/assets/classDiagram-6PBFFD2Q-DHrSK7zx.js +1 -0
  129. package/dist/mcp/review-ui/assets/classDiagram-v2-HSJHXN6E-ftN8ECVk.js +1 -0
  130. package/dist/mcp/review-ui/assets/clone-C3rjhi9V.js +1 -0
  131. package/dist/mcp/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  132. package/dist/mcp/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  133. package/dist/mcp/review-ui/assets/dagre-B4oIQbi5.js +1 -0
  134. package/dist/mcp/review-ui/assets/dagre-KV5264BT-zDsxU5-B.js +4 -0
  135. package/dist/mcp/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
  136. package/dist/mcp/review-ui/assets/diagram-5BDNPKRD-UgfFjZ4o.js +10 -0
  137. package/dist/mcp/review-ui/assets/diagram-G4DWMVQ6-Wh9VCn50.js +24 -0
  138. package/dist/mcp/review-ui/assets/diagram-MMDJMWI5-xVD3G7_9.js +43 -0
  139. package/dist/mcp/review-ui/assets/diagram-TYMM5635-AUD291P2.js +24 -0
  140. package/dist/mcp/review-ui/assets/dist-B51l2n-9.js +1 -0
  141. package/dist/mcp/review-ui/assets/erDiagram-SMLLAGMA-B83D6NXm.js +85 -0
  142. package/dist/mcp/review-ui/assets/flatten-B80WBwOJ.js +1 -0
  143. package/dist/mcp/review-ui/assets/flowDiagram-DWJPFMVM-D3lXOeHD.js +162 -0
  144. package/dist/mcp/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  145. package/dist/mcp/review-ui/assets/gitGraph-7Q5UKJZL-BfgkNWmC.js +1 -0
  146. package/dist/mcp/review-ui/assets/gitGraphDiagram-UUTBAWPF-DxqTOi4I.js +106 -0
  147. package/dist/mcp/review-ui/assets/graphlib-De-foo_H.js +1 -0
  148. package/dist/mcp/review-ui/assets/identity-CWMh0UL-.js +1 -0
  149. package/dist/mcp/review-ui/assets/index-Do0fBEfH.css +2 -0
  150. package/dist/mcp/review-ui/assets/index-uPMLqduV.js +123 -0
  151. package/dist/mcp/review-ui/assets/info-OMHHGYJF-DE18zZ5Z.js +1 -0
  152. package/dist/mcp/review-ui/assets/infoDiagram-42DDH7IO-Bnco1OGr.js +2 -0
  153. package/dist/mcp/review-ui/assets/init-BMBYmmUa.js +1 -0
  154. package/dist/mcp/review-ui/assets/ishikawaDiagram-UXIWVN3A-B89fugr9.js +70 -0
  155. package/dist/mcp/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  156. package/dist/mcp/review-ui/assets/kanban-definition-6JOO6SKY-YvTOD1Vd.js +89 -0
  157. package/dist/mcp/review-ui/assets/katex-8mXVa4k3.js +257 -0
  158. package/dist/mcp/review-ui/assets/line-BCdBO-oK.js +1 -0
  159. package/dist/mcp/review-ui/assets/linear-d7UHSQqm.js +1 -0
  160. package/dist/mcp/review-ui/assets/mermaid-parser.core-DI1-3xL2.js +4 -0
  161. package/dist/mcp/review-ui/assets/mindmap-definition-QFDTVHPH-E_mV-_Fs.js +96 -0
  162. package/dist/mcp/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
  163. package/dist/mcp/review-ui/assets/packet-4T2RLAQJ-BLPGKWDX.js +1 -0
  164. package/dist/mcp/review-ui/assets/path-CIRGLb_6.js +1 -0
  165. package/dist/mcp/review-ui/assets/pie-ZZUOXDRM-DVV6Yua9.js +1 -0
  166. package/dist/mcp/review-ui/assets/pieDiagram-DEJITSTG-Ct4JvywP.js +30 -0
  167. package/dist/mcp/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  168. package/dist/mcp/review-ui/assets/radar-PYXPWWZC-BMkQDLKp.js +1 -0
  169. package/dist/mcp/review-ui/assets/reduce-C80XcylQ.js +1 -0
  170. package/dist/mcp/review-ui/assets/requirementDiagram-MS252O5E-Bp7uSYEK.js +84 -0
  171. package/dist/mcp/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
  172. package/dist/mcp/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  173. package/dist/mcp/review-ui/assets/sequenceDiagram-FGHM5R23-BXN9jl1N.js +157 -0
  174. package/dist/mcp/review-ui/assets/src-Cxc1bu7b.js +1 -0
  175. package/dist/mcp/review-ui/assets/stateDiagram-FHFEXIEX-DZduDkIw.js +1 -0
  176. package/dist/mcp/review-ui/assets/stateDiagram-v2-QKLJ7IA2-xAWOcxSi.js +1 -0
  177. package/dist/mcp/review-ui/assets/timeline-definition-GMOUNBTQ-CLqXzNm8.js +120 -0
  178. package/dist/mcp/review-ui/assets/treeView-SZITEDCU-tPcANHUc.js +1 -0
  179. package/dist/mcp/review-ui/assets/treemap-W4RFUUIX-BGbXISSk.js +1 -0
  180. package/dist/mcp/review-ui/assets/vennDiagram-DHZGUBPP-gCnd0IYN.js +34 -0
  181. package/dist/mcp/review-ui/assets/wardley-RL74JXVD-CK3EfklM.js +1 -0
  182. package/dist/mcp/review-ui/assets/wardleyDiagram-NUSXRM2D-Dd7qMlPS.js +20 -0
  183. package/dist/mcp/review-ui/assets/xychartDiagram-5P7HB3ND-DXHXO8Zm.js +7 -0
  184. package/dist/mcp/review-ui/index.html +29 -0
  185. package/dist/mcp/studio/assets/arc-DH58vMfF.js +1 -0
  186. package/dist/mcp/studio/assets/architecture-YZFGNWBL-8xrwD39F.js +1 -0
  187. package/dist/mcp/studio/assets/architectureDiagram-Q4EWVU46-VmcLZTJf.js +36 -0
  188. package/dist/mcp/studio/assets/array-BCJ35G43.js +1 -0
  189. package/dist/mcp/studio/assets/blockDiagram-DXYQGD6D-D-1mlLYy.js +132 -0
  190. package/dist/mcp/studio/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  191. package/dist/mcp/studio/assets/channel-BgHR4NPf.js +1 -0
  192. package/dist/mcp/studio/assets/chunk-2KRD3SAO-CMDQx2WD.js +1 -0
  193. package/dist/mcp/studio/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  194. package/dist/mcp/studio/assets/chunk-4TB4RGXK-aFEYGDkJ.js +206 -0
  195. package/dist/mcp/studio/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  196. package/dist/mcp/studio/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  197. package/dist/mcp/studio/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  198. package/dist/mcp/studio/assets/chunk-67CJDMHE-DnkyJt7A.js +1 -0
  199. package/dist/mcp/studio/assets/chunk-7N4EOEYR-cnJ9dWSC.js +1 -0
  200. package/dist/mcp/studio/assets/chunk-AA7GKIK3-DjCZnyrT.js +1 -0
  201. package/dist/mcp/studio/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  202. package/dist/mcp/studio/assets/chunk-CIAEETIT-CtvXSBsf.js +1 -0
  203. package/dist/mcp/studio/assets/chunk-Dlc7tRH4.js +1 -0
  204. package/dist/mcp/studio/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  205. package/dist/mcp/studio/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  206. package/dist/mcp/studio/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  207. package/dist/mcp/studio/assets/chunk-FOC6F5B3-Ca28VADd.js +1 -0
  208. package/dist/mcp/studio/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  209. package/dist/mcp/studio/assets/chunk-K5T4RW27-pqiOLnBn.js +94 -0
  210. package/dist/mcp/studio/assets/chunk-KGLVRYIC-DZfGlR-G.js +1 -0
  211. package/dist/mcp/studio/assets/chunk-LIHQZDEY-6Ygb8Kwt.js +1 -0
  212. package/dist/mcp/studio/assets/chunk-ORNJ4GCN-DSlr7oSO.js +1 -0
  213. package/dist/mcp/studio/assets/chunk-OYMX7WX6-8z_2lCb3.js +231 -0
  214. package/dist/mcp/studio/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  215. package/dist/mcp/studio/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  216. package/dist/mcp/studio/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  217. package/dist/mcp/studio/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  218. package/dist/mcp/studio/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  219. package/dist/mcp/studio/assets/classDiagram-6PBFFD2Q-IZXxqxqM.js +1 -0
  220. package/dist/mcp/studio/assets/classDiagram-v2-HSJHXN6E-BiJKwTXT.js +1 -0
  221. package/dist/mcp/studio/assets/clone-g4CuF1Hf.js +1 -0
  222. package/dist/mcp/studio/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  223. package/dist/mcp/studio/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  224. package/dist/mcp/studio/assets/dagre-Be9o0OzC.js +1 -0
  225. package/dist/mcp/studio/assets/dagre-KV5264BT-iB6PnHLr.js +4 -0
  226. package/dist/mcp/studio/assets/defaultLocale-CIS5GEjP.js +1 -0
  227. package/dist/mcp/studio/assets/diagram-5BDNPKRD-BLfWbiEB.js +10 -0
  228. package/dist/mcp/studio/assets/diagram-G4DWMVQ6-CgcnwgVO.js +24 -0
  229. package/dist/mcp/studio/assets/diagram-MMDJMWI5-CpkXvs2p.js +43 -0
  230. package/dist/mcp/studio/assets/diagram-TYMM5635-guxqmxjJ.js +24 -0
  231. package/dist/mcp/studio/assets/dist-B51l2n-9.js +1 -0
  232. package/dist/mcp/studio/assets/erDiagram-SMLLAGMA-Lwv-cC2Y.js +85 -0
  233. package/dist/mcp/studio/assets/flatten-Dv3Z_7XJ.js +1 -0
  234. package/dist/mcp/studio/assets/flowDiagram-DWJPFMVM-BKnaFfFR.js +162 -0
  235. package/dist/mcp/studio/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  236. package/dist/mcp/studio/assets/gitGraph-7Q5UKJZL-BSdEZNVc.js +1 -0
  237. package/dist/mcp/studio/assets/gitGraphDiagram-UUTBAWPF-D4z4QWni.js +106 -0
  238. package/dist/mcp/studio/assets/graphlib-C1IZi4Cg.js +1 -0
  239. package/dist/mcp/studio/assets/identity-CWMh0UL-.js +1 -0
  240. package/dist/mcp/studio/assets/index-CyBqHDpB.js +109 -0
  241. package/dist/mcp/studio/assets/index-Dn_Ujmba.css +2 -0
  242. package/dist/mcp/studio/assets/info-OMHHGYJF-CoTx64p3.js +1 -0
  243. package/dist/mcp/studio/assets/infoDiagram-42DDH7IO-QEji23sQ.js +2 -0
  244. package/dist/mcp/studio/assets/init-BMBYmmUa.js +1 -0
  245. package/dist/mcp/studio/assets/ishikawaDiagram-UXIWVN3A-lMurmqul.js +70 -0
  246. package/dist/mcp/studio/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  247. package/dist/mcp/studio/assets/kanban-definition-6JOO6SKY-DsOybLrS.js +89 -0
  248. package/dist/mcp/studio/assets/katex-8mXVa4k3.js +257 -0
  249. package/dist/mcp/studio/assets/line-BCdBO-oK.js +1 -0
  250. package/dist/mcp/studio/assets/linear-d7UHSQqm.js +1 -0
  251. package/dist/mcp/studio/assets/mermaid-parser.core-BZtTt4qJ.js +4 -0
  252. package/dist/mcp/studio/assets/mindmap-definition-QFDTVHPH-B2yfABR9.js +96 -0
  253. package/dist/mcp/studio/assets/ordinal-BDTCIhXR.js +1 -0
  254. package/dist/mcp/studio/assets/packet-4T2RLAQJ-Bi4IG7s8.js +1 -0
  255. package/dist/mcp/studio/assets/path-CIRGLb_6.js +1 -0
  256. package/dist/mcp/studio/assets/pie-ZZUOXDRM-DsJRjVcu.js +1 -0
  257. package/dist/mcp/studio/assets/pieDiagram-DEJITSTG-JeKGFs3r.js +30 -0
  258. package/dist/mcp/studio/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  259. package/dist/mcp/studio/assets/radar-PYXPWWZC-cUDYP2Ic.js +1 -0
  260. package/dist/mcp/studio/assets/reduce-x-wchVXY.js +1 -0
  261. package/dist/mcp/studio/assets/requirementDiagram-MS252O5E-CGeLKQyn.js +84 -0
  262. package/dist/mcp/studio/assets/rough.esm-DtEqI08j.js +1 -0
  263. package/dist/mcp/studio/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  264. package/dist/mcp/studio/assets/sequenceDiagram-FGHM5R23-BbHPv3l1.js +157 -0
  265. package/dist/mcp/studio/assets/src-Cxc1bu7b.js +1 -0
  266. package/dist/mcp/studio/assets/stateDiagram-FHFEXIEX-BuBuguzn.js +1 -0
  267. package/dist/mcp/studio/assets/stateDiagram-v2-QKLJ7IA2-PQA-rl9o.js +1 -0
  268. package/dist/mcp/studio/assets/timeline-definition-GMOUNBTQ-D5xtyNE9.js +120 -0
  269. package/dist/mcp/studio/assets/treeView-SZITEDCU-DhRx0eaI.js +1 -0
  270. package/dist/mcp/studio/assets/treemap-W4RFUUIX-Btsj9DUH.js +1 -0
  271. package/dist/mcp/studio/assets/vennDiagram-DHZGUBPP-W4g15SMY.js +34 -0
  272. package/dist/mcp/studio/assets/wardley-RL74JXVD-BTpKsgl7.js +1 -0
  273. package/dist/mcp/studio/assets/wardleyDiagram-NUSXRM2D-f7wgXdwe.js +20 -0
  274. package/dist/mcp/studio/assets/xychartDiagram-5P7HB3ND-BWx9swPf.js +7 -0
  275. package/dist/mcp/studio/index.html +29 -0
  276. package/dist/review-mcp-server.d.ts +1 -0
  277. package/dist/review-mcp-server.js +178 -0
  278. package/dist/review-mcp-server.js.map +1 -0
  279. package/dist/review-server.d.ts +17 -0
  280. package/dist/review-server.js +223 -0
  281. package/dist/review-server.js.map +1 -0
  282. package/dist/review-ui/assets/arc-DH58vMfF.js +1 -0
  283. package/dist/review-ui/assets/architecture-YZFGNWBL-ChakYgFO.js +1 -0
  284. package/dist/review-ui/assets/architectureDiagram-Q4EWVU46-CcJOZCOb.js +36 -0
  285. package/dist/review-ui/assets/array-BCJ35G43.js +1 -0
  286. package/dist/review-ui/assets/blockDiagram-DXYQGD6D-H7mMv5Tv.js +132 -0
  287. package/dist/review-ui/assets/c4Diagram-AHTNJAMY-DCAtnxWd.js +10 -0
  288. package/dist/review-ui/assets/channel-BgHR4NPf.js +1 -0
  289. package/dist/review-ui/assets/chunk-2KRD3SAO-BfA3IkPQ.js +1 -0
  290. package/dist/review-ui/assets/chunk-4BX2VUAB-Dn9kswJO.js +1 -0
  291. package/dist/review-ui/assets/chunk-4TB4RGXK-CvTeZi33.js +206 -0
  292. package/dist/review-ui/assets/chunk-55IACEB6-CLBoivXU.js +1 -0
  293. package/dist/review-ui/assets/chunk-5FUZZQ4R-DU7La6QA.js +62 -0
  294. package/dist/review-ui/assets/chunk-5PVQY5BW-Dy3eUu9a.js +2 -0
  295. package/dist/review-ui/assets/chunk-67CJDMHE-BQ1xNHFx.js +1 -0
  296. package/dist/review-ui/assets/chunk-7N4EOEYR-B1ORNLQP.js +1 -0
  297. package/dist/review-ui/assets/chunk-AA7GKIK3-D3pS3mnx.js +1 -0
  298. package/dist/review-ui/assets/chunk-BSJP7CBP-BlpmbHL-.js +1 -0
  299. package/dist/review-ui/assets/chunk-CIAEETIT-BDZkAY47.js +1 -0
  300. package/dist/review-ui/assets/chunk-Dlc7tRH4.js +1 -0
  301. package/dist/review-ui/assets/chunk-EDXVE4YY-DNUlHz7M.js +1 -0
  302. package/dist/review-ui/assets/chunk-ENJZ2VHE-fwEKj0pQ.js +10 -0
  303. package/dist/review-ui/assets/chunk-FMBD7UC4-Cj8B2TLo.js +15 -0
  304. package/dist/review-ui/assets/chunk-FOC6F5B3-DGtCX5Ra.js +1 -0
  305. package/dist/review-ui/assets/chunk-ICPOFSXX-WTr3HDYE.js +122 -0
  306. package/dist/review-ui/assets/chunk-K5T4RW27-CWpdECLF.js +94 -0
  307. package/dist/review-ui/assets/chunk-KGLVRYIC-oI2XKaPz.js +1 -0
  308. package/dist/review-ui/assets/chunk-LIHQZDEY-Dzp3G35O.js +1 -0
  309. package/dist/review-ui/assets/chunk-ORNJ4GCN-DsHuVbPU.js +1 -0
  310. package/dist/review-ui/assets/chunk-OYMX7WX6-fgjoXAXJ.js +231 -0
  311. package/dist/review-ui/assets/chunk-QZHKN3VN-C4w1Z4n9.js +1 -0
  312. package/dist/review-ui/assets/chunk-U2HBQHQK-D8HUikvJ.js +70 -0
  313. package/dist/review-ui/assets/chunk-X2U36JSP-CuZ-SN2r.js +1 -0
  314. package/dist/review-ui/assets/chunk-YZCP3GAM-D0-dHF3G.js +1 -0
  315. package/dist/review-ui/assets/chunk-ZZ45TVLE-C1aIZGDA.js +1 -0
  316. package/dist/review-ui/assets/classDiagram-6PBFFD2Q-D_3LhkJc.js +1 -0
  317. package/dist/review-ui/assets/classDiagram-v2-HSJHXN6E-DQRUREh5.js +1 -0
  318. package/dist/review-ui/assets/clone-BZMtGzbS.js +1 -0
  319. package/dist/review-ui/assets/cose-bilkent-S5V4N54A-szpqu_3d.js +1 -0
  320. package/dist/review-ui/assets/cytoscape.esm-DZ22BVwz.js +321 -0
  321. package/dist/review-ui/assets/dagre-BfNtd34y.js +1 -0
  322. package/dist/review-ui/assets/dagre-KV5264BT-D6PbxORW.js +4 -0
  323. package/dist/review-ui/assets/defaultLocale-CIS5GEjP.js +1 -0
  324. package/dist/review-ui/assets/diagram-5BDNPKRD-BNAXBDig.js +10 -0
  325. package/dist/review-ui/assets/diagram-G4DWMVQ6-CIGS_5yQ.js +24 -0
  326. package/dist/review-ui/assets/diagram-MMDJMWI5-DJmcU2xZ.js +43 -0
  327. package/dist/review-ui/assets/diagram-TYMM5635-DW8XzrAz.js +24 -0
  328. package/dist/review-ui/assets/dist-B51l2n-9.js +1 -0
  329. package/dist/review-ui/assets/erDiagram-SMLLAGMA-BfUNH8zz.js +85 -0
  330. package/dist/review-ui/assets/flatten-BHh95bpO.js +1 -0
  331. package/dist/review-ui/assets/flowDiagram-DWJPFMVM-qgnlSvEC.js +162 -0
  332. package/dist/review-ui/assets/ganttDiagram-T4ZO3ILL-CFAN903o.js +292 -0
  333. package/dist/review-ui/assets/gitGraph-7Q5UKJZL-Dn47XunR.js +1 -0
  334. package/dist/review-ui/assets/gitGraphDiagram-UUTBAWPF-BcG6fDsE.js +106 -0
  335. package/dist/review-ui/assets/graphlib-Cie4kcbC.js +1 -0
  336. package/dist/review-ui/assets/identity-CWMh0UL-.js +1 -0
  337. package/dist/review-ui/assets/index-ByplNhhd.css +2 -0
  338. package/dist/review-ui/assets/index-S7nbpFp2.js +123 -0
  339. package/dist/review-ui/assets/info-OMHHGYJF-hAukP1xW.js +1 -0
  340. package/dist/review-ui/assets/infoDiagram-42DDH7IO-FblTAfC3.js +2 -0
  341. package/dist/review-ui/assets/init-BMBYmmUa.js +1 -0
  342. package/dist/review-ui/assets/ishikawaDiagram-UXIWVN3A-BA7dJd-J.js +70 -0
  343. package/dist/review-ui/assets/journeyDiagram-VCZTEJTY-CMx2w_is.js +139 -0
  344. package/dist/review-ui/assets/kanban-definition-6JOO6SKY-CFiOZCrT.js +89 -0
  345. package/dist/review-ui/assets/katex-8mXVa4k3.js +257 -0
  346. package/dist/review-ui/assets/line-BCdBO-oK.js +1 -0
  347. package/dist/review-ui/assets/linear-d7UHSQqm.js +1 -0
  348. package/dist/review-ui/assets/mermaid-parser.core-BHMXLuNx.js +4 -0
  349. package/dist/review-ui/assets/mindmap-definition-QFDTVHPH-CWO7vDqu.js +96 -0
  350. package/dist/review-ui/assets/ordinal-BDTCIhXR.js +1 -0
  351. package/dist/review-ui/assets/packet-4T2RLAQJ-Btz3ryW7.js +1 -0
  352. package/dist/review-ui/assets/path-CIRGLb_6.js +1 -0
  353. package/dist/review-ui/assets/pie-ZZUOXDRM-CreBtuDj.js +1 -0
  354. package/dist/review-ui/assets/pieDiagram-DEJITSTG-X2mFk5I3.js +30 -0
  355. package/dist/review-ui/assets/quadrantDiagram-34T5L4WZ-BSFYvc1U.js +7 -0
  356. package/dist/review-ui/assets/radar-PYXPWWZC-BcAPYMpV.js +1 -0
  357. package/dist/review-ui/assets/reduce-14YNCNxn.js +1 -0
  358. package/dist/review-ui/assets/requirementDiagram-MS252O5E-CDv1lxdq.js +84 -0
  359. package/dist/review-ui/assets/rough.esm-DtEqI08j.js +1 -0
  360. package/dist/review-ui/assets/sankeyDiagram-XADWPNL6-CV38ZpSv.js +10 -0
  361. package/dist/review-ui/assets/sequenceDiagram-FGHM5R23-DCuV_bhx.js +157 -0
  362. package/dist/review-ui/assets/src-Cxc1bu7b.js +1 -0
  363. package/dist/review-ui/assets/stateDiagram-FHFEXIEX-BfE_bGUQ.js +1 -0
  364. package/dist/review-ui/assets/stateDiagram-v2-QKLJ7IA2-u1yKXWoz.js +1 -0
  365. package/dist/review-ui/assets/timeline-definition-GMOUNBTQ-Ci0uFxaT.js +120 -0
  366. package/dist/review-ui/assets/treeView-SZITEDCU-BXg6-7zY.js +1 -0
  367. package/dist/review-ui/assets/treemap-W4RFUUIX-BToYbgol.js +1 -0
  368. package/dist/review-ui/assets/vennDiagram-DHZGUBPP-DvOuThac.js +34 -0
  369. package/dist/review-ui/assets/wardley-RL74JXVD-BAYzkcK-.js +1 -0
  370. package/dist/review-ui/assets/wardleyDiagram-NUSXRM2D-YxTu6WZw.js +20 -0
  371. package/dist/review-ui/assets/xychartDiagram-5P7HB3ND-V9j-Dl7t.js +7 -0
  372. package/dist/review-ui/index.html +29 -0
  373. package/dist/run-openflow-cli.d.ts +1 -0
  374. package/dist/run-openflow-cli.js +41 -0
  375. package/dist/run-openflow-cli.js.map +1 -0
  376. package/dist/shared/args.d.ts +3 -0
  377. package/dist/shared/args.js +27 -0
  378. package/dist/shared/args.js.map +1 -0
  379. package/dist/shared/browser.d.ts +4 -0
  380. package/dist/shared/browser.js +17 -0
  381. package/dist/shared/browser.js.map +1 -0
  382. package/dist/shared/fs.d.ts +15 -0
  383. package/dist/shared/fs.js +48 -0
  384. package/dist/shared/fs.js.map +1 -0
  385. package/dist/shared/i18n.d.ts +5 -0
  386. package/dist/shared/i18n.js +65 -0
  387. package/dist/shared/i18n.js.map +1 -0
  388. package/dist/shared/locales/en-US.json +88 -0
  389. package/dist/shared/locales/zh-CN.json +88 -0
  390. package/dist/shared/plugin-registry.d.ts +36 -0
  391. package/dist/shared/plugin-registry.js +51 -0
  392. package/dist/shared/plugin-registry.js.map +1 -0
  393. package/dist/shared/project-state.d.ts +17 -0
  394. package/dist/shared/project-state.js +75 -0
  395. package/dist/shared/project-state.js.map +1 -0
  396. package/dist/shared/terminal.d.ts +10 -0
  397. package/dist/shared/terminal.js +110 -0
  398. package/dist/shared/terminal.js.map +1 -0
  399. package/package.json +28 -0
  400. package/templates/archive/.gitkeep +1 -0
  401. package/templates/config.json +11 -0
  402. package/templates/current.json +3 -0
  403. package/templates/iterations/.gitkeep +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/shared/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAExJ,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,OAA8C,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;;IAEzC,CAAC,CAAC,WAAW,CAAC;IACd,CAAC,CAAC,aAAa,CAAC;IAChB,CAAC,CAAC,aAAa,CAAC;IAChB,CAAC,CAAC,eAAe,CAAC;4BACM,CAAC,CAAC,UAAU,CAAC;CACxC,CAAC,CAAC;IAED,cAAc,EAAE,CAAC;IAEjB,OAAO,CAAC,GAAG,CAAC;IACV,CAAC,CAAC,uBAAuB,CAAC;;;IAG1B,CAAC,CAAC,mBAAmB,CAAC;;;IAGtB,CAAC,CAAC,mBAAmB,CAAC;CACzB,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function openBrowserUrl(url: string): {
2
+ opened: boolean;
3
+ reason?: string;
4
+ };
@@ -0,0 +1,17 @@
1
+ import { spawn } from "node:child_process";
2
+ import { errorMessage } from "./fs.js";
3
+ export function openBrowserUrl(url) {
4
+ try {
5
+ const child = process.platform === "win32"
6
+ ? spawn("cmd", ["/c", "start", "", url], { detached: true, stdio: "ignore" })
7
+ : process.platform === "darwin"
8
+ ? spawn("open", [url], { detached: true, stdio: "ignore" })
9
+ : spawn("xdg-open", [url], { detached: true, stdio: "ignore" });
10
+ child.unref();
11
+ return { opened: true };
12
+ }
13
+ catch (error) {
14
+ return { opened: false, reason: errorMessage(error) };
15
+ }
16
+ }
17
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/shared/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GACT,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC1B,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC7E,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAC7B,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IACxD,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function writeJsonAtomic(path: string, value: unknown): Promise<void>;
2
+ export declare function collectFiles(directory: string): Promise<string[]>;
3
+ export declare function sha256File(path: string): Promise<string>;
4
+ export declare function readJsonObjectIfExists(path: string): Promise<{
5
+ exists: false;
6
+ } | {
7
+ exists: true;
8
+ valid: true;
9
+ value: Record<string, unknown>;
10
+ } | {
11
+ exists: true;
12
+ valid: false;
13
+ }>;
14
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
15
+ export declare function errorMessage(error: unknown): string;
@@ -0,0 +1,48 @@
1
+ import { existsSync } from "node:fs";
2
+ import { mkdir, readdir, readFile, rename, writeFile } from "node:fs/promises";
3
+ import { createHash } from "node:crypto";
4
+ import { dirname, join } from "node:path";
5
+ export async function writeJsonAtomic(path, value) {
6
+ await mkdir(dirname(path), { recursive: true });
7
+ const tempPath = `${path}.${process.pid}.${Date.now()}.tmp`;
8
+ await writeFile(tempPath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
9
+ await rename(tempPath, path);
10
+ }
11
+ export async function collectFiles(directory) {
12
+ const entries = await readdir(directory, { withFileTypes: true });
13
+ const files = [];
14
+ for (const entry of entries) {
15
+ const entryPath = join(directory, entry.name);
16
+ if (entry.isDirectory()) {
17
+ files.push(...(await collectFiles(entryPath)));
18
+ }
19
+ else if (entry.isFile()) {
20
+ files.push(entryPath);
21
+ }
22
+ }
23
+ return files;
24
+ }
25
+ export async function sha256File(path) {
26
+ const hash = createHash("sha256");
27
+ hash.update(await readFile(path));
28
+ return hash.digest("hex");
29
+ }
30
+ export async function readJsonObjectIfExists(path) {
31
+ if (!existsSync(path)) {
32
+ return { exists: false };
33
+ }
34
+ try {
35
+ const value = JSON.parse(await readFile(path, "utf8"));
36
+ return isRecord(value) ? { exists: true, valid: true, value } : { exists: true, valid: false };
37
+ }
38
+ catch {
39
+ return { exists: true, valid: false };
40
+ }
41
+ }
42
+ export function isRecord(value) {
43
+ return typeof value === "object" && value !== null && !Array.isArray(value);
44
+ }
45
+ export function errorMessage(error) {
46
+ return error instanceof Error ? error.message : String(error);
47
+ }
48
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/shared/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type Locale = "zh-CN" | "en-US";
2
+ export declare function setLocale(locale: Locale): void;
3
+ export declare function getLocale(): Locale;
4
+ export declare function t(key: string, params?: Record<string, string>): string;
5
+ export declare function initLocaleFromConfig(targetPath?: string): Promise<void>;
@@ -0,0 +1,65 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { join, dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { isRecord } from "./fs.js";
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ let currentLocale = "zh-CN";
8
+ let strings = {};
9
+ function loadLocaleFile(locale) {
10
+ const path = join(__dirname, "locales", `${locale}.json`);
11
+ const raw = JSON.parse(readFileSync(path, "utf8"));
12
+ if (!isRecord(raw))
13
+ return {};
14
+ return flatten(raw);
15
+ }
16
+ function flatten(obj, prefix = "") {
17
+ const result = {};
18
+ for (const [key, value] of Object.entries(obj)) {
19
+ const fullKey = prefix ? `${prefix}.${key}` : key;
20
+ if (isRecord(value)) {
21
+ Object.assign(result, flatten(value, fullKey));
22
+ }
23
+ else if (typeof value === "string") {
24
+ result[fullKey] = value;
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+ export function setLocale(locale) {
30
+ currentLocale = locale;
31
+ strings = loadLocaleFile(locale);
32
+ }
33
+ export function getLocale() {
34
+ return currentLocale;
35
+ }
36
+ export function t(key, params) {
37
+ let value = strings[key] ?? key;
38
+ if (params) {
39
+ for (const [k, v] of Object.entries(params)) {
40
+ value = value.replace(new RegExp(`\\{\\{${k}\\}\\}`, "g"), v);
41
+ }
42
+ }
43
+ return value;
44
+ }
45
+ export async function initLocaleFromConfig(targetPath) {
46
+ const cwd = targetPath ?? process.cwd();
47
+ const configPath = join(cwd, ".openflow", "config.json");
48
+ if (!existsSync(configPath)) {
49
+ setLocale("zh-CN");
50
+ return;
51
+ }
52
+ try {
53
+ const config = JSON.parse(await readFile(configPath, "utf8"));
54
+ if (isRecord(config) && typeof config.language === "string") {
55
+ const lang = config.language.trim();
56
+ if (lang === "en-US" || lang === "zh-CN") {
57
+ setLocale(lang);
58
+ return;
59
+ }
60
+ }
61
+ }
62
+ catch { /* ignore */ }
63
+ setLocale("zh-CN");
64
+ }
65
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/shared/i18n.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ {
2
+ "init": {
3
+ "title": "OpenFlow Init",
4
+ "adapterType": "Adapter type",
5
+ "adapterCopy": "Claude Code (copy mode)",
6
+ "adapterPlugin": "Plugin (self-contained)",
7
+ "adapterOpencode": "OpenCode (coming soon)",
8
+ "installLocation": "Install location",
9
+ "installLocal": "Local (current project)",
10
+ "installGlobal": "Global (~/.claude)",
11
+ "interfaceLanguage": "Interface language",
12
+ "langZh": "Chinese (zh-CN)",
13
+ "langEn": "English (en-US)",
14
+ "promptHint": "Use Up/Down arrows and Enter. Press Esc to cancel.",
15
+ "panelAdapter": "adapter",
16
+ "panelTarget": "target",
17
+ "panelSummary": "summary",
18
+ "panelState": "state",
19
+ "panelPlugin": "Plugin installed",
20
+ "panelMarketplace": "marketplace",
21
+ "panelScope": "scope",
22
+ "panelPath": "path",
23
+ "panelFiles": "files",
24
+ "panelVersion": "version",
25
+ "cancelled": "Init cancelled.",
26
+ "errorCombineGlobalTarget": "openflow init cannot combine --global with --target. Use --target for project installs or --global for user-level installs.",
27
+ "errorOpencode": "OpenCode adapter is not implemented yet.",
28
+ "errorAdapterValue": "openflow init --adapter must be claude-code or opencode.",
29
+ "errorTargetPath": "openflow init --target requires a path.",
30
+ "errorScopeValue": "openflow init --scope must be project or global.",
31
+ "errorFormatValue": "openflow init --format must be copy or plugin.",
32
+ "errorLanguageValue": "openflow init --language must be zh-CN or en-US.",
33
+ "errorUnknownOption": "unknown init option \"{{option}}\". Supported options: --adapter, --target, --global, --scope, --format, --language, --module, --force",
34
+ "errorClaudeCliMissing": "Claude Code CLI was not found. Install Claude Code and make sure the `claude` command is available on PATH, or run `openflow init --format copy`.",
35
+ "errorMarketplaceAdd": "Failed to add OpenFlow marketplace: {{message}}",
36
+ "errorPluginInstall": "Failed to install OpenFlow plugin: {{message}}",
37
+ "errorPluginVerify": "OpenFlow plugin install could not be verified: {{message}}",
38
+ "errorPluginOutput": "Claude CLI returned non-JSON output (plugin subcommand may not be recognized). Try openflow init --format copy.",
39
+ "stepMarketplace": "Marketplace",
40
+ "stepPluginInstall": "Plugin",
41
+ "stepVerify": "Verify",
42
+ "stepLanguage": "Language",
43
+ "stepAdapter": "Adapter",
44
+ "stepLocation": "Location",
45
+ "stepModules": "Modules",
46
+ "moduleCore": "Core module",
47
+ "moduleCoreDesc": "Spec-driven AI coding workflow (default)",
48
+ "moduleBrainstormPrd": "Brainstorm + PRD",
49
+ "moduleBrainstormPrdDesc": "Brainstorming and requirements doc generation",
50
+ "moduleRequired": "(required)",
51
+ "moduleCheckboxHint": "Arrow keys to navigate, Space to toggle, Enter to confirm. Esc to cancel.",
52
+ "filesInstalled": "{{count}} files installed",
53
+ "ready": "Ready!",
54
+ "nextStep": "Use /openflow-spec in Claude Code to start planning."
55
+ },
56
+ "update": {
57
+ "title": "OpenFlow Update",
58
+ "errorAdapterValue": "openflow update --adapter currently supports only claude-code.",
59
+ "errorTargetPath": "openflow update --target requires a path.",
60
+ "errorUnknownOption": "unknown update option. Supported options: --adapter, --target, --dry-run, --force"
61
+ },
62
+ "help": {
63
+ "title": "OpenFlow auxiliary CLI",
64
+ "userCommands": "User Commands",
65
+ "workflowInternal": "Workflow commands (used internally by AI):",
66
+ "mainWorkflow": "Main workflow:",
67
+ "init": "Initialize OpenFlow in your project",
68
+ "update": "Update OpenFlow files to latest version",
69
+ "review": "Launch review UI for spec/archive review",
70
+ "validate": "Validate iteration files",
71
+ "mcp": "Run MCP review server",
72
+ "languageNote": "Language: en-US or zh-CN (set via openflow init)"
73
+ },
74
+ "module": {
75
+ "title": "OpenFlow Module Management",
76
+ "installed": "Installed modules",
77
+ "available": "Available modules",
78
+ "addHint": "Use openflow module add <module-id> to add a module",
79
+ "addSuccess": "Module {{module}} installed ({{count}} files)",
80
+ "alreadyInstalled": "Module {{module}} is already installed.",
81
+ "notFound": "Module {{module}} not found. Check modules.json for available modules.",
82
+ "noConfig": "No OpenFlow config in current directory. Run openflow init first."
83
+ },
84
+ "common": {
85
+ "ok": "[ok]",
86
+ "failed": "[failed]"
87
+ }
88
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "init": {
3
+ "title": "OpenFlow 初始化",
4
+ "adapterType": "适配器类型",
5
+ "adapterCopy": "Claude Code (复制模式)",
6
+ "adapterPlugin": "插件 (独立安装)",
7
+ "adapterOpencode": "OpenCode (即将支持)",
8
+ "installLocation": "安装位置",
9
+ "installLocal": "本地 (当前项目)",
10
+ "installGlobal": "全局 (~/.claude)",
11
+ "interfaceLanguage": "界面语言",
12
+ "langZh": "中文 (zh-CN)",
13
+ "langEn": "英文 (en-US)",
14
+ "promptHint": "使用 上/下 方向键选择,Enter 确认。按 Esc 取消。",
15
+ "panelAdapter": "适配器",
16
+ "panelTarget": "目标",
17
+ "panelSummary": "概要",
18
+ "panelState": "状态",
19
+ "panelPlugin": "插件已安装",
20
+ "panelMarketplace": "市场",
21
+ "panelScope": "范围",
22
+ "panelPath": "路径",
23
+ "panelFiles": "文件数",
24
+ "panelVersion": "版本",
25
+ "cancelled": "初始化已取消。",
26
+ "errorCombineGlobalTarget": "openflow init 不能同时使用 --global 和 --target。使用 --target 安装到项目,或使用 --global 安装到用户级别。",
27
+ "errorOpencode": "OpenCode 适配器尚未实现。",
28
+ "errorAdapterValue": "openflow init --adapter 必须是 claude-code 或 opencode。",
29
+ "errorTargetPath": "openflow init --target 需要一个路径参数。",
30
+ "errorScopeValue": "openflow init --scope 必须是 project 或 global。",
31
+ "errorFormatValue": "openflow init --format 必须是 copy 或 plugin。",
32
+ "errorLanguageValue": "openflow init --language 必须是 zh-CN 或 en-US。",
33
+ "errorUnknownOption": "未知的 init 选项 \"{{option}}\"。支持的选项: --adapter, --target, --global, --scope, --format, --language, --module, --force",
34
+ "errorClaudeCliMissing": "未找到 Claude Code CLI。请先安装 Claude Code,并确保 `claude` 命令可在 PATH 中使用;或改用 `openflow init --format copy`。",
35
+ "errorMarketplaceAdd": "添加 OpenFlow 市场失败: {{message}}",
36
+ "errorPluginInstall": "安装 OpenFlow 插件失败: {{message}}",
37
+ "errorPluginVerify": "无法验证 OpenFlow 插件安装结果: {{message}}",
38
+ "errorPluginOutput": "Claude CLI 返回了非 JSON 输出(可能未正确识别 plugin 子命令)。请尝试 openflow init --format copy。",
39
+ "stepMarketplace": "注册市场",
40
+ "stepPluginInstall": "安装插件",
41
+ "stepVerify": "验证安装",
42
+ "stepLanguage": "语言",
43
+ "stepAdapter": "适配器",
44
+ "stepLocation": "安装位置",
45
+ "stepModules": "模块选择",
46
+ "moduleCore": "核心模块",
47
+ "moduleCoreDesc": "Spec 驱动的 AI 编码工作流(默认)",
48
+ "moduleBrainstormPrd": "需求讨论 + PRD",
49
+ "moduleBrainstormPrdDesc": "头脑风暴与需求文档生成",
50
+ "moduleRequired": "(必选)",
51
+ "moduleCheckboxHint": "使用 上/下 方向键移动,Space 切换选中,Enter 确认。按 Esc 取消。",
52
+ "filesInstalled": "{{count}} 个文件已安装",
53
+ "ready": "准备就绪!",
54
+ "nextStep": "在 Claude Code 中使用 /openflow-spec 开始规划。"
55
+ },
56
+ "update": {
57
+ "title": "OpenFlow 更新",
58
+ "errorAdapterValue": "openflow update --adapter 目前仅支持 claude-code。",
59
+ "errorTargetPath": "openflow update --target 需要一个路径参数。",
60
+ "errorUnknownOption": "未知的 update 选项。支持的选项: --adapter, --target, --dry-run, --force"
61
+ },
62
+ "help": {
63
+ "title": "OpenFlow 辅助命令行工具",
64
+ "userCommands": "用户命令",
65
+ "workflowInternal": "工作流命令(AI 工具内部使用):",
66
+ "mainWorkflow": "主要工作流:",
67
+ "init": "在项目中初始化 OpenFlow",
68
+ "update": "更新 OpenFlow 文件到最新版本",
69
+ "review": "启动规范/归档审查界面",
70
+ "validate": "验证迭代文件",
71
+ "mcp": "运行 MCP 审查服务器",
72
+ "languageNote": "语言: zh-CN 或 en-US(通过 openflow init 设置)"
73
+ },
74
+ "module": {
75
+ "title": "OpenFlow 模块管理",
76
+ "installed": "已安装模块",
77
+ "available": "可添加模块",
78
+ "addHint": "使用 openflow module add <module-id> 添加模块",
79
+ "addSuccess": "模块 {{module}} 已安装 ({{count}} 个文件)",
80
+ "alreadyInstalled": "模块 {{module}} 已安装。",
81
+ "notFound": "模块 {{module}} 不存在。可用的模块请查看 modules.json。",
82
+ "noConfig": "当前目录没有 OpenFlow 配置。请先运行 openflow init。"
83
+ },
84
+ "common": {
85
+ "ok": "[成功]",
86
+ "failed": "[失败]"
87
+ }
88
+ }
@@ -0,0 +1,36 @@
1
+ export interface MarketplaceManifest {
2
+ name: string;
3
+ description: string;
4
+ plugins: MarketplacePluginEntry[];
5
+ }
6
+ export interface MarketplacePluginEntry {
7
+ name: string;
8
+ version: string;
9
+ source: string;
10
+ description: string;
11
+ author?: {
12
+ name?: string;
13
+ email?: string;
14
+ };
15
+ }
16
+ export interface PluginRegistry {
17
+ version: 1;
18
+ plugins: Record<string, PluginRegistryEntry>;
19
+ }
20
+ export interface PluginRegistryEntry {
21
+ version: string;
22
+ installedAt: string;
23
+ installPath: string;
24
+ source: string;
25
+ files: Record<string, {
26
+ sha256: string;
27
+ }>;
28
+ }
29
+ export declare function getCoreDistRoot(): string;
30
+ export declare function getMarketplaceManifest(): Promise<MarketplaceManifest>;
31
+ export declare function resolvePluginSourceDir(entry: MarketplacePluginEntry): string;
32
+ export declare function readPluginRegistry(targetPath: string): Promise<PluginRegistry | undefined>;
33
+ export declare function writePluginRegistry(targetPath: string, registry: PluginRegistry): Promise<void>;
34
+ export declare function collectPluginFileHashes(installDir: string): Promise<Record<string, {
35
+ sha256: string;
36
+ }>>;
@@ -0,0 +1,51 @@
1
+ import { existsSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { createRequire } from "node:module";
4
+ import { readFile } from "node:fs/promises";
5
+ import { writeJsonAtomic, collectFiles, sha256File, isRecord } from "./fs.js";
6
+ const require = createRequire(import.meta.url);
7
+ export function getCoreDistRoot() {
8
+ const packageJsonPath = require.resolve("@openflow/core/package.json");
9
+ return join(dirname(packageJsonPath), "dist");
10
+ }
11
+ export async function getMarketplaceManifest() {
12
+ const manifestPath = join(getCoreDistRoot(), "marketplace.json");
13
+ const raw = JSON.parse(await readFile(manifestPath, "utf8"));
14
+ if (!isRecord(raw) || !Array.isArray(raw.plugins)) {
15
+ throw new Error("Invalid marketplace.json: missing plugins array.");
16
+ }
17
+ return raw;
18
+ }
19
+ export function resolvePluginSourceDir(entry) {
20
+ return join(getCoreDistRoot(), entry.source);
21
+ }
22
+ const PLUGIN_REGISTRY_PATH = ".openflow/plugins.json";
23
+ export async function readPluginRegistry(targetPath) {
24
+ const registryPath = join(targetPath, PLUGIN_REGISTRY_PATH);
25
+ if (!existsSync(registryPath)) {
26
+ return undefined;
27
+ }
28
+ const raw = JSON.parse(await readFile(registryPath, "utf8"));
29
+ if (!isRecord(raw) || raw.version !== 1 || !isRecord(raw.plugins)) {
30
+ return undefined;
31
+ }
32
+ return raw;
33
+ }
34
+ export async function writePluginRegistry(targetPath, registry) {
35
+ await writeJsonAtomic(join(targetPath, PLUGIN_REGISTRY_PATH), registry);
36
+ }
37
+ export async function collectPluginFileHashes(installDir) {
38
+ const files = {};
39
+ if (!existsSync(installDir)) {
40
+ return files;
41
+ }
42
+ const allFiles = await collectFiles(installDir);
43
+ const installDirNormalized = installDir.replace(/\\/g, "/").replace(/\/$/, "");
44
+ for (const file of allFiles) {
45
+ const normalized = file.replace(/\\/g, "/");
46
+ const relativePath = normalized.slice(installDirNormalized.length + 1);
47
+ files[relativePath] = { sha256: await sha256File(file) };
48
+ }
49
+ return files;
50
+ }
51
+ //# sourceMappingURL=plugin-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registry.js","sourceRoot":"","sources":["../../src/shared/plugin-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type OpenFlowStage, type OpenFlowLevel, type FlowGate } from "../core/index.js";
2
+ export interface ProjectState {
3
+ found: boolean;
4
+ language: string;
5
+ defaultLevel: OpenFlowLevel;
6
+ activeIteration: string | null;
7
+ iterationPath: string | null;
8
+ stage: OpenFlowStage | null;
9
+ level: OpenFlowLevel | null;
10
+ gate: FlowGate | null;
11
+ revision: number | null;
12
+ activeTask: string | null;
13
+ }
14
+ export declare function readProjectState(): Promise<ProjectState>;
15
+ export declare function isOpenFlowStageValue(value: unknown): value is OpenFlowStage;
16
+ export declare function isOpenFlowLevelValue(value: unknown): value is OpenFlowLevel;
17
+ export declare function isFlowGateValue(value: unknown): value is FlowGate;
@@ -0,0 +1,75 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { isRecord } from "./fs.js";
5
+ import { OPENFLOW_STAGES, OPENFLOW_LEVELS, FLOW_GATES, normalizeOpenFlowStage } from "../core/index.js";
6
+ export async function readProjectState() {
7
+ const cwd = process.cwd();
8
+ const configPath = join(cwd, ".openflow", "config.json");
9
+ const currentPath = join(cwd, ".openflow", "current.json");
10
+ let language = "en-US";
11
+ let defaultLevel = "2";
12
+ if (existsSync(configPath)) {
13
+ try {
14
+ const config = JSON.parse(await readFile(configPath, "utf8"));
15
+ if (isRecord(config)) {
16
+ if (typeof config.language === "string" && config.language.trim())
17
+ language = config.language;
18
+ if (isOpenFlowLevelValue(config.defaultLevel))
19
+ defaultLevel = config.defaultLevel;
20
+ }
21
+ }
22
+ catch { /* ignore */ }
23
+ }
24
+ const empty = {
25
+ found: false, language, defaultLevel,
26
+ activeIteration: null, iterationPath: null,
27
+ stage: null, level: null, gate: null, revision: null, activeTask: null,
28
+ };
29
+ if (!existsSync(currentPath))
30
+ return empty;
31
+ let activeIteration;
32
+ try {
33
+ const current = JSON.parse(await readFile(currentPath, "utf8"));
34
+ if (!isRecord(current) || typeof current.activeIteration !== "string" || !current.activeIteration.trim())
35
+ return empty;
36
+ activeIteration = current.activeIteration.trim();
37
+ }
38
+ catch {
39
+ return empty;
40
+ }
41
+ const iterationPath = join(".openflow", "iterations", activeIteration);
42
+ const flowPath = join(cwd, iterationPath, "flow.json");
43
+ if (!existsSync(flowPath))
44
+ return { ...empty, activeIteration, iterationPath };
45
+ try {
46
+ const flow = JSON.parse(await readFile(flowPath, "utf8"));
47
+ const flowStage = isRecord(flow) ? normalizeOpenFlowStage(flow.stage) : null;
48
+ if (!isRecord(flow) || !flowStage) {
49
+ return { ...empty, activeIteration, iterationPath };
50
+ }
51
+ const flowLevel = isOpenFlowLevelValue(flow.level) ? flow.level : null;
52
+ const flowGate = isFlowGateValue(flow.gate) ? flow.gate : null;
53
+ return {
54
+ found: true, language, defaultLevel, activeIteration, iterationPath,
55
+ stage: flowStage,
56
+ level: flowLevel ?? null,
57
+ gate: flowGate,
58
+ revision: typeof flow.revision === "number" ? flow.revision : null,
59
+ activeTask: flow.activeTask === null ? null : typeof flow.activeTask === "string" ? flow.activeTask : null,
60
+ };
61
+ }
62
+ catch {
63
+ return { ...empty, activeIteration, iterationPath };
64
+ }
65
+ }
66
+ export function isOpenFlowStageValue(value) {
67
+ return typeof value === "string" && OPENFLOW_STAGES.includes(value);
68
+ }
69
+ export function isOpenFlowLevelValue(value) {
70
+ return typeof value === "string" && OPENFLOW_LEVELS.includes(value);
71
+ }
72
+ export function isFlowGateValue(value) {
73
+ return typeof value === "string" && FLOW_GATES.includes(value);
74
+ }
75
+ //# sourceMappingURL=project-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-state.js","sourceRoot":"","sources":["../../src/shared/project-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function printPanel(title: string, rows: Array<[string, string]>): void;
2
+ export declare function printKeyValue(label: string, value: string): void;
3
+ export declare function printFileStatus(status: string, target: string): void;
4
+ export declare function printSuccess(message: string): void;
5
+ export declare function printFailure(message: string): void;
6
+ export declare function formatTitle(title: string): string;
7
+ export declare function printLogo(): void;
8
+ export declare function printStep(current: number, total: number, label: string): void;
9
+ export declare function printSeparator(): void;
10
+ export declare function colorText(style: "bold" | "green" | "red" | "yellow" | "cyan" | "muted", text: string): string;