@codemcp/workflows 5.3.0 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -0
- package/package.json +77 -17
- package/packages/cli/dist/chunk-R5U7XKVJ.js +16 -0
- package/packages/cli/dist/chunk-RTDQR2KY.js +6718 -0
- package/packages/cli/dist/cli-CZ4FMSWR.js +1421 -0
- package/packages/cli/dist/dist-KZOA4GL5.js +65 -0
- package/packages/cli/dist/dist-UGVUJIDN.js +14475 -0
- package/packages/cli/dist/index.js +21 -0
- package/packages/cli/package.json +28 -0
- package/packages/core/dist/beads-integration.d.ts +50 -0
- package/packages/core/dist/beads-integration.js +387 -0
- package/packages/core/dist/beads-integration.js.map +1 -0
- package/packages/core/dist/beads-state-manager.d.ts +58 -0
- package/packages/core/dist/beads-state-manager.js +212 -0
- package/packages/core/dist/beads-state-manager.js.map +1 -0
- package/packages/core/dist/config-manager.d.ts +24 -0
- package/packages/core/dist/config-manager.js +68 -0
- package/packages/core/dist/config-manager.js.map +1 -0
- package/packages/core/dist/conversation-manager.d.ts +98 -0
- package/packages/core/dist/conversation-manager.js +382 -0
- package/packages/core/dist/conversation-manager.js.map +1 -0
- package/packages/core/dist/file-detection-manager.d.ts +53 -0
- package/packages/core/dist/file-detection-manager.js +221 -0
- package/packages/core/dist/file-detection-manager.js.map +1 -0
- package/packages/core/dist/file-storage.d.ts +93 -0
- package/packages/core/dist/file-storage.js +301 -0
- package/packages/core/dist/file-storage.js.map +1 -0
- package/packages/core/dist/git-manager.d.ts +22 -0
- package/packages/core/dist/git-manager.js +123 -0
- package/packages/core/dist/git-manager.js.map +1 -0
- package/packages/core/dist/index.d.ts +24 -0
- package/packages/core/dist/index.js +31 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/instruction-generator.d.ts +40 -0
- package/packages/core/dist/instruction-generator.js +89 -0
- package/packages/core/dist/instruction-generator.js.map +1 -0
- package/packages/core/dist/interaction-logger.d.ts +37 -0
- package/packages/core/dist/interaction-logger.js +87 -0
- package/packages/core/dist/interaction-logger.js.map +1 -0
- package/packages/core/dist/interfaces/index.d.ts +9 -0
- package/packages/core/dist/interfaces/index.js +10 -0
- package/packages/core/dist/interfaces/index.js.map +1 -0
- package/packages/core/dist/interfaces/instruction-generator.interface.d.ts +41 -0
- package/packages/core/dist/interfaces/instruction-generator.interface.js +8 -0
- package/packages/core/dist/interfaces/instruction-generator.interface.js.map +1 -0
- package/packages/core/dist/interfaces/plan-manager.interface.d.ts +55 -0
- package/packages/core/dist/interfaces/plan-manager.interface.js +8 -0
- package/packages/core/dist/interfaces/plan-manager.interface.js.map +1 -0
- package/packages/core/dist/interfaces/task-backend-client.interface.d.ts +52 -0
- package/packages/core/dist/interfaces/task-backend-client.interface.js +8 -0
- package/packages/core/dist/interfaces/task-backend-client.interface.js.map +1 -0
- package/packages/core/dist/logger.d.ts +64 -0
- package/packages/core/dist/logger.js +283 -0
- package/packages/core/dist/logger.js.map +1 -0
- package/packages/core/dist/path-validation-utils.d.ts +75 -0
- package/packages/core/dist/path-validation-utils.js +238 -0
- package/packages/core/dist/path-validation-utils.js.map +1 -0
- package/packages/core/dist/persistence-interface.d.ts +91 -0
- package/packages/core/dist/persistence-interface.js +9 -0
- package/packages/core/dist/persistence-interface.js.map +1 -0
- package/{dist/components/beads/beads-plan-manager.d.ts → packages/core/dist/plan-manager.d.ts} +15 -15
- package/{dist/components/beads/beads-plan-manager.js → packages/core/dist/plan-manager.js} +66 -50
- package/packages/core/dist/plan-manager.js.map +1 -0
- package/packages/core/dist/project-docs-manager.d.ts +119 -0
- package/packages/core/dist/project-docs-manager.js +366 -0
- package/packages/core/dist/project-docs-manager.js.map +1 -0
- package/packages/core/dist/state-machine-loader.d.ts +61 -0
- package/packages/core/dist/state-machine-loader.js +273 -0
- package/packages/core/dist/state-machine-loader.js.map +1 -0
- package/packages/core/dist/state-machine-types.d.ts +64 -0
- package/packages/core/dist/state-machine-types.js +7 -0
- package/packages/core/dist/state-machine-types.js.map +1 -0
- package/packages/core/dist/state-machine.d.ts +52 -0
- package/packages/core/dist/state-machine.js +256 -0
- package/packages/core/dist/state-machine.js.map +1 -0
- package/packages/core/dist/system-prompt-generator.d.ts +14 -0
- package/packages/core/dist/system-prompt-generator.js +42 -0
- package/packages/core/dist/system-prompt-generator.js.map +1 -0
- package/packages/core/dist/task-backend.d.ts +45 -0
- package/packages/core/dist/task-backend.js +176 -0
- package/packages/core/dist/task-backend.js.map +1 -0
- package/packages/core/dist/template-manager.d.ts +61 -0
- package/packages/core/dist/template-manager.js +231 -0
- package/packages/core/dist/template-manager.js.map +1 -0
- package/packages/core/dist/transition-engine.d.ts +77 -0
- package/packages/core/dist/transition-engine.js +244 -0
- package/packages/core/dist/transition-engine.js.map +1 -0
- package/packages/core/dist/types.d.ts +54 -0
- package/packages/core/dist/types.js +5 -0
- package/packages/core/dist/workflow-manager.d.ts +89 -0
- package/packages/core/dist/workflow-manager.js +468 -0
- package/packages/core/dist/workflow-manager.js.map +1 -0
- package/packages/core/package.json +33 -0
- package/packages/docs/.vitepress/dist/.gitignore +2 -0
- package/packages/docs/.vitepress/dist/404.html +23 -0
- package/packages/docs/.vitepress/dist/assets/app.Dz3lZH3M.js +1 -0
- package/packages/docs/.vitepress/dist/assets/chunks/framework.DZS7lpav.js +19 -0
- package/packages/docs/.vitepress/dist/assets/chunks/theme.q5Ewb3F1.js +206 -0
- package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.js +130 -0
- package/packages/docs/.vitepress/dist/assets/dev_ARCHITECTURE.md.da_vFDwM.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.js +72 -0
- package/packages/docs/.vitepress/dist/assets/dev_DEVELOPMENT.md.DWl9cccE.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.js +34 -0
- package/packages/docs/.vitepress/dist/assets/dev_LOGGING.md.BebvbW7z.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.js +1 -0
- package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.js +2 -0
- package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/packages/docs/.vitepress/dist/assets/mcp-interaction-pattern.VdvOPuTt.png +0 -0
- package/packages/docs/.vitepress/dist/assets/placeholder-demo-greenfield.B8lG_tBI.png +0 -0
- package/packages/docs/.vitepress/dist/assets/style.CAgdBzOq.css +1 -0
- package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.js +50 -0
- package/packages/docs/.vitepress/dist/assets/user_advanced-engineering.md.MkETYNtq.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.js +24 -0
- package/packages/docs/.vitepress/dist/assets/user_agent-setup.md.B54OLL2H.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.js +15 -0
- package/packages/docs/.vitepress/dist/assets/user_beads-integration.md.BzdR5Fif.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.js +157 -0
- package/packages/docs/.vitepress/dist/assets/user_crowd-mcp-integration.md.C15kSdIJ.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.js +143 -0
- package/packages/docs/.vitepress/dist/assets/user_custom-workflows.md.Cz4IYCXa.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_git-commit-feature.md.UcTvDR-O.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.js +23 -0
- package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.js +43 -0
- package/packages/docs/.vitepress/dist/assets/user_long-term-memory.md.DZh0tjNa.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.js +2 -0
- package/packages/docs/.vitepress/dist/assets/user_packaged-workflows.md.s1HT89ZU.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.js +3 -0
- package/packages/docs/.vitepress/dist/assets/user_tutorial.md.Dmj8zLB2.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.js +7 -0
- package/packages/docs/.vitepress/dist/assets/user_workflow-selection.md.CrPGw9Hr.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows.md.Bm5sGt3u.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_adr.md.DEaXkbRp.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_big-bang-conversion.md.BA5R1LxZ.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_boundary-testing.md.DBcYnMhx.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_bugfix.md.CZRCL0Hp.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_business-analysis.md.fGLml8Hw.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_c4-analysis.md.Dnssqzuf.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_epcc.md.M6DnIhpp.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_game-beginner.md.CNxzWLtd.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_greenfield.md.vx_g-WOe.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_minor.md.DdnfwMf4.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_posts.md.SOldXvq7.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix-crowd.md.-lSf42gJ.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-bugfix.md.oRAsEVbc.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature-crowd.md.DAtnfCAd.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-feature.md.Ce3-H_g3.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield-crowd.md.8DUvcmLe.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_sdd-greenfield.md.eEN6U0J4.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_slides.md.Cqt-19_1.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_tdd.md.BjVC69tu.lean.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.js +1 -0
- package/packages/docs/.vitepress/dist/assets/workflows_waterfall.md.CL6jTZP9.lean.js +1 -0
- package/packages/docs/.vitepress/dist/dev/ARCHITECTURE.html +155 -0
- package/packages/docs/.vitepress/dist/dev/DEVELOPMENT.html +97 -0
- package/packages/docs/.vitepress/dist/dev/LOGGING.html +59 -0
- package/packages/docs/.vitepress/dist/dev/PUBLISHING.html +30 -0
- package/packages/docs/.vitepress/dist/hashmap.json +1 -0
- package/packages/docs/.vitepress/dist/index.html +27 -0
- package/packages/docs/.vitepress/dist/user/advanced-engineering.html +75 -0
- package/packages/docs/.vitepress/dist/user/agent-setup.html +49 -0
- package/packages/docs/.vitepress/dist/user/beads-integration.html +40 -0
- package/packages/docs/.vitepress/dist/user/crowd-mcp-integration.html +182 -0
- package/packages/docs/.vitepress/dist/user/custom-workflows.html +168 -0
- package/packages/docs/.vitepress/dist/user/git-commit-feature.html +30 -0
- package/packages/docs/.vitepress/dist/user/how-it-works.html +48 -0
- package/packages/docs/.vitepress/dist/user/long-term-memory.html +68 -0
- package/packages/docs/.vitepress/dist/user/packaged-workflows.html +27 -0
- package/packages/docs/.vitepress/dist/user/tutorial.html +28 -0
- package/packages/docs/.vitepress/dist/user/workflow-selection.html +32 -0
- package/packages/docs/.vitepress/dist/vp-icons.css +0 -0
- package/packages/docs/.vitepress/dist/workflows/adr.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/adr.yaml +157 -0
- package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.yaml +592 -0
- package/packages/docs/.vitepress/dist/workflows/boundary-testing.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/boundary-testing.yaml +376 -0
- package/packages/docs/.vitepress/dist/workflows/bugfix.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/bugfix.yaml +177 -0
- package/packages/docs/.vitepress/dist/workflows/business-analysis.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/business-analysis.yaml +597 -0
- package/packages/docs/.vitepress/dist/workflows/c4-analysis.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/c4-analysis.yaml +471 -0
- package/packages/docs/.vitepress/dist/workflows/epcc.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/epcc.yaml +183 -0
- package/packages/docs/.vitepress/dist/workflows/game-beginner.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/game-beginner.yaml +434 -0
- package/packages/docs/.vitepress/dist/workflows/greenfield.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/greenfield.yaml +201 -0
- package/packages/docs/.vitepress/dist/workflows/minor.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/minor.yaml +138 -0
- package/packages/docs/.vitepress/dist/workflows/posts.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/posts.yaml +193 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.yaml +608 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.yaml +381 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.yaml +713 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-feature.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-feature.yaml +471 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.yaml +336 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.yaml +463 -0
- package/packages/docs/.vitepress/dist/workflows/slides.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/slides.yaml +237 -0
- package/packages/docs/.vitepress/dist/workflows/tdd.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/tdd.yaml +160 -0
- package/packages/docs/.vitepress/dist/workflows/waterfall.html +26 -0
- package/packages/docs/.vitepress/dist/workflows/waterfall.yaml +209 -0
- package/packages/docs/.vitepress/dist/workflows.html +26 -0
- package/packages/docs/package.json +32 -0
- package/packages/mcp-server/dist/index.js +10546 -0
- package/packages/mcp-server/package.json +41 -0
- package/packages/visualizer/dist/WorkflowVisualizer.vue +1147 -0
- package/packages/visualizer/dist/index.ts +17 -0
- package/packages/visualizer/dist/main.ts +673 -0
- package/packages/visualizer/dist/services/BundledWorkflows.ts +35 -0
- package/packages/visualizer/dist/services/FileUploadHandler.ts +166 -0
- package/packages/visualizer/dist/services/WorkflowLoader.ts +198 -0
- package/packages/visualizer/dist/services/YamlParser.ts +248 -0
- package/packages/visualizer/dist/services/workflow-list.ts +23 -0
- package/packages/visualizer/dist/types/ui-types.ts +84 -0
- package/packages/visualizer/dist/types/visualization-types.ts +95 -0
- package/packages/visualizer/dist/types/vite-env.d.ts +12 -0
- package/packages/visualizer/dist/utils/DomHelpers.ts +206 -0
- package/packages/visualizer/dist/utils/ErrorHandler.ts +170 -0
- package/packages/visualizer/dist/utils/PlantUMLEncoder.ts +121 -0
- package/packages/visualizer/dist/visualization/DiagramRenderer.ts +430 -0
- package/packages/visualizer/dist/visualization/LayoutEngine.ts +339 -0
- package/packages/visualizer/dist/visualization/PlantUMLRenderer.ts +507 -0
- package/packages/visualizer/dist/visualization/StateRenderer.ts +339 -0
- package/packages/visualizer/dist/visualization/TransitionRenderer.ts +432 -0
- package/packages/visualizer/package.json +39 -0
- package/resources/.DS_Store +0 -0
- package/resources/agents/architect.yaml +61 -0
- package/resources/agents/business-analyst.yaml +60 -0
- package/resources/agents/developer.yaml +61 -0
- package/resources/state-machine-schema.json +114 -0
- package/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
- package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
- package/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
- package/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
- package/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
- package/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
- package/resources/templates/architecture/c4.md +224 -0
- package/resources/templates/architecture/freestyle.md +53 -0
- package/resources/templates/architecture/game.md +250 -0
- package/resources/templates/architecture/none.md +17 -0
- package/resources/templates/design/comprehensive.md +207 -0
- package/resources/templates/design/freestyle.md +37 -0
- package/resources/templates/design/game.md +66 -0
- package/resources/templates/design/none.md +17 -0
- package/resources/templates/requirements/ears.md +90 -0
- package/resources/templates/requirements/freestyle.md +42 -0
- package/resources/templates/requirements/game.md +162 -0
- package/resources/templates/requirements/none.md +17 -0
- package/resources/templates/skills/POWER.md +23 -0
- package/resources/templates/skills/SKILL.md +19 -0
- package/resources/workflows/adr.yaml +157 -0
- package/resources/workflows/big-bang-conversion.yaml +592 -0
- package/resources/workflows/boundary-testing.yaml +376 -0
- package/resources/workflows/bugfix.yaml +177 -0
- package/resources/workflows/business-analysis.yaml +597 -0
- package/resources/workflows/c4-analysis.yaml +471 -0
- package/resources/workflows/epcc.yaml +183 -0
- package/resources/workflows/game-beginner.yaml +434 -0
- package/resources/workflows/greenfield.yaml +201 -0
- package/resources/workflows/minor.yaml +138 -0
- package/resources/workflows/posts.yaml +193 -0
- package/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
- package/resources/workflows/sdd-bugfix.yaml +381 -0
- package/resources/workflows/sdd-feature-crowd.yaml +713 -0
- package/resources/workflows/sdd-feature.yaml +471 -0
- package/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
- package/resources/workflows/sdd-greenfield.yaml +463 -0
- package/resources/workflows/slides.yaml +237 -0
- package/resources/workflows/tdd.yaml +160 -0
- package/resources/workflows/waterfall.yaml +209 -0
- package/dist/components/beads/beads-instruction-generator.d.ts +0 -44
- package/dist/components/beads/beads-instruction-generator.d.ts.map +0 -1
- package/dist/components/beads/beads-instruction-generator.js +0 -160
- package/dist/components/beads/beads-instruction-generator.js.map +0 -1
- package/dist/components/beads/beads-plan-manager.d.ts.map +0 -1
- package/dist/components/beads/beads-plan-manager.js.map +0 -1
- package/dist/components/beads/beads-task-backend-client.d.ts +0 -43
- package/dist/components/beads/beads-task-backend-client.d.ts.map +0 -1
- package/dist/components/beads/beads-task-backend-client.js +0 -175
- package/dist/components/beads/beads-task-backend-client.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -74
- package/dist/index.js.map +0 -1
- package/dist/notification-service.d.ts +0 -14
- package/dist/notification-service.d.ts.map +0 -1
- package/dist/notification-service.js +0 -18
- package/dist/notification-service.js.map +0 -1
- package/dist/plugin-system/beads-plugin.d.ts +0 -71
- package/dist/plugin-system/beads-plugin.d.ts.map +0 -1
- package/dist/plugin-system/beads-plugin.js +0 -465
- package/dist/plugin-system/beads-plugin.js.map +0 -1
- package/dist/plugin-system/commit-plugin.d.ts +0 -40
- package/dist/plugin-system/commit-plugin.d.ts.map +0 -1
- package/dist/plugin-system/commit-plugin.js +0 -204
- package/dist/plugin-system/commit-plugin.js.map +0 -1
- package/dist/plugin-system/index.d.ts +0 -9
- package/dist/plugin-system/index.d.ts.map +0 -1
- package/dist/plugin-system/index.js +0 -9
- package/dist/plugin-system/index.js.map +0 -1
- package/dist/plugin-system/plugin-interfaces.d.ts +0 -98
- package/dist/plugin-system/plugin-interfaces.d.ts.map +0 -1
- package/dist/plugin-system/plugin-interfaces.js +0 -9
- package/dist/plugin-system/plugin-interfaces.js.map +0 -1
- package/dist/plugin-system/plugin-registry.d.ts +0 -44
- package/dist/plugin-system/plugin-registry.d.ts.map +0 -1
- package/dist/plugin-system/plugin-registry.js +0 -132
- package/dist/plugin-system/plugin-registry.js.map +0 -1
- package/dist/resource-handlers/conversation-state.d.ts +0 -15
- package/dist/resource-handlers/conversation-state.d.ts.map +0 -1
- package/dist/resource-handlers/conversation-state.js +0 -40
- package/dist/resource-handlers/conversation-state.js.map +0 -1
- package/dist/resource-handlers/development-plan.d.ts +0 -14
- package/dist/resource-handlers/development-plan.d.ts.map +0 -1
- package/dist/resource-handlers/development-plan.js +0 -31
- package/dist/resource-handlers/development-plan.js.map +0 -1
- package/dist/resource-handlers/index.d.ts +0 -24
- package/dist/resource-handlers/index.d.ts.map +0 -1
- package/dist/resource-handlers/index.js +0 -62
- package/dist/resource-handlers/index.js.map +0 -1
- package/dist/resource-handlers/system-prompt.d.ts +0 -15
- package/dist/resource-handlers/system-prompt.d.ts.map +0 -1
- package/dist/resource-handlers/system-prompt.js +0 -40
- package/dist/resource-handlers/system-prompt.js.map +0 -1
- package/dist/resource-handlers/workflow-resource.d.ts +0 -15
- package/dist/resource-handlers/workflow-resource.d.ts.map +0 -1
- package/dist/resource-handlers/workflow-resource.js +0 -85
- package/dist/resource-handlers/workflow-resource.js.map +0 -1
- package/dist/response-renderer.d.ts +0 -30
- package/dist/response-renderer.d.ts.map +0 -1
- package/dist/response-renderer.js +0 -94
- package/dist/response-renderer.js.map +0 -1
- package/dist/server-config.d.ts +0 -34
- package/dist/server-config.d.ts.map +0 -1
- package/dist/server-config.js +0 -503
- package/dist/server-config.js.map +0 -1
- package/dist/server-helpers.d.ts +0 -70
- package/dist/server-helpers.d.ts.map +0 -1
- package/dist/server-helpers.js +0 -171
- package/dist/server-helpers.js.map +0 -1
- package/dist/server-implementation.d.ts +0 -74
- package/dist/server-implementation.d.ts.map +0 -1
- package/dist/server-implementation.js +0 -201
- package/dist/server-implementation.js.map +0 -1
- package/dist/server.d.ts +0 -6
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -5
- package/dist/server.js.map +0 -1
- package/dist/tool-handlers/base-tool-handler.d.ts +0 -50
- package/dist/tool-handlers/base-tool-handler.d.ts.map +0 -1
- package/dist/tool-handlers/base-tool-handler.js +0 -81
- package/dist/tool-handlers/base-tool-handler.js.map +0 -1
- package/dist/tool-handlers/conduct-review.d.ts +0 -49
- package/dist/tool-handlers/conduct-review.d.ts.map +0 -1
- package/dist/tool-handlers/conduct-review.js +0 -104
- package/dist/tool-handlers/conduct-review.js.map +0 -1
- package/dist/tool-handlers/get-tool-info.d.ts +0 -75
- package/dist/tool-handlers/get-tool-info.d.ts.map +0 -1
- package/dist/tool-handlers/get-tool-info.js +0 -168
- package/dist/tool-handlers/get-tool-info.js.map +0 -1
- package/dist/tool-handlers/index.d.ts +0 -41
- package/dist/tool-handlers/index.d.ts.map +0 -1
- package/dist/tool-handlers/index.js +0 -71
- package/dist/tool-handlers/index.js.map +0 -1
- package/dist/tool-handlers/list-workflows.d.ts +0 -35
- package/dist/tool-handlers/list-workflows.d.ts.map +0 -1
- package/dist/tool-handlers/list-workflows.js +0 -43
- package/dist/tool-handlers/list-workflows.js.map +0 -1
- package/dist/tool-handlers/no-idea.d.ts +0 -41
- package/dist/tool-handlers/no-idea.d.ts.map +0 -1
- package/dist/tool-handlers/no-idea.js +0 -29
- package/dist/tool-handlers/no-idea.js.map +0 -1
- package/dist/tool-handlers/proceed-to-phase.d.ts +0 -41
- package/dist/tool-handlers/proceed-to-phase.d.ts.map +0 -1
- package/dist/tool-handlers/proceed-to-phase.js +0 -165
- package/dist/tool-handlers/proceed-to-phase.js.map +0 -1
- package/dist/tool-handlers/reset-development.d.ts +0 -31
- package/dist/tool-handlers/reset-development.d.ts.map +0 -1
- package/dist/tool-handlers/reset-development.js +0 -48
- package/dist/tool-handlers/reset-development.js.map +0 -1
- package/dist/tool-handlers/resume-workflow.d.ts +0 -87
- package/dist/tool-handlers/resume-workflow.d.ts.map +0 -1
- package/dist/tool-handlers/resume-workflow.js +0 -212
- package/dist/tool-handlers/resume-workflow.js.map +0 -1
- package/dist/tool-handlers/setup-project-docs.d.ts +0 -37
- package/dist/tool-handlers/setup-project-docs.d.ts.map +0 -1
- package/dist/tool-handlers/setup-project-docs.js +0 -138
- package/dist/tool-handlers/setup-project-docs.js.map +0 -1
- package/dist/tool-handlers/start-development.d.ts +0 -79
- package/dist/tool-handlers/start-development.d.ts.map +0 -1
- package/dist/tool-handlers/start-development.js +0 -484
- package/dist/tool-handlers/start-development.js.map +0 -1
- package/dist/tool-handlers/whats-next.d.ts +0 -41
- package/dist/tool-handlers/whats-next.d.ts.map +0 -1
- package/dist/tool-handlers/whats-next.js +0 -123
- package/dist/tool-handlers/whats-next.js.map +0 -1
- package/dist/types.d.ts +0 -119
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/version-info.d.ts +0 -30
- package/dist/version-info.d.ts.map +0 -1
- package/dist/version-info.js +0 -178
- package/dist/version-info.js.map +0 -1
- package/skill/SKILL.md +0 -28
- /package/{dist → packages/core/dist}/types.js.map +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
5
|
+
import { dirname, join } from "path";
|
|
6
|
+
import { existsSync } from "fs";
|
|
7
|
+
var __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
var __dirname = dirname(__filename);
|
|
9
|
+
var args = process.argv.slice(2);
|
|
10
|
+
if (args.length === 0) {
|
|
11
|
+
const isLocal = existsSync(join(__dirname, "../../mcp-server/dist/index.js"));
|
|
12
|
+
if (isLocal) {
|
|
13
|
+
import("./dist-UGVUJIDN.js");
|
|
14
|
+
} else {
|
|
15
|
+
const mcpServerModule = "@codemcp/workflows-server";
|
|
16
|
+
import(mcpServerModule);
|
|
17
|
+
}
|
|
18
|
+
} else {
|
|
19
|
+
const { runCli } = await import("./cli-CZ4FMSWR.js");
|
|
20
|
+
await runCli();
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@codemcp/workflows-cli",
|
|
3
|
+
"version": "6.0.1",
|
|
4
|
+
"description": "CLI tools for responsible-vibe development workflows",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsup && pnpm copy-resources",
|
|
8
|
+
"copy-resources": "rm -rf resources && cp -r ../core/resources .",
|
|
9
|
+
"build:tsc": "tsc -p tsconfig.build.json",
|
|
10
|
+
"test": "vitest --run",
|
|
11
|
+
"clean:build": "rimraf ./dist",
|
|
12
|
+
"lint": "oxlint .",
|
|
13
|
+
"lint:fix": "oxlint --fix .",
|
|
14
|
+
"format:check": "prettier --check .",
|
|
15
|
+
"format": "prettier --write ."
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@codemcp/workflows-core": "workspace:*",
|
|
20
|
+
"@codemcp/workflows-server": "workspace:*",
|
|
21
|
+
"@types/node": "^22.0.0",
|
|
22
|
+
"rimraf": "^5.0.10",
|
|
23
|
+
"tsup": "^8.0.0",
|
|
24
|
+
"typescript": "^5.9.3",
|
|
25
|
+
"vitest": "4.0.18"
|
|
26
|
+
},
|
|
27
|
+
"private": true
|
|
28
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Integration Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for integrating with beads distributed issue tracker:
|
|
5
|
+
* - Project epic creation
|
|
6
|
+
* - Phase task management
|
|
7
|
+
* - Task hierarchy setup
|
|
8
|
+
*/
|
|
9
|
+
import { YamlState } from './state-machine-types.js';
|
|
10
|
+
export interface BeadsPhaseTask {
|
|
11
|
+
phaseId: string;
|
|
12
|
+
phaseName: string;
|
|
13
|
+
taskId: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Beads integration manager for the workflows server
|
|
17
|
+
*/
|
|
18
|
+
export declare class BeadsIntegration {
|
|
19
|
+
private projectPath;
|
|
20
|
+
constructor(projectPath: string);
|
|
21
|
+
/**
|
|
22
|
+
* Ensure beads is initialized in the project directory
|
|
23
|
+
*/
|
|
24
|
+
private ensureBeadsInitialized;
|
|
25
|
+
/**
|
|
26
|
+
* Create a project epic in beads for the development session
|
|
27
|
+
*/
|
|
28
|
+
createProjectEpic(projectName: string, workflowName: string, description?: string, planFilename?: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Create phase tasks for all workflow phases under the project epic
|
|
31
|
+
*/
|
|
32
|
+
createPhaseTasks(epicId: string, phases: Record<string, YamlState>, workflowName: string): Promise<BeadsPhaseTask[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Create sequential dependencies between workflow phase tasks
|
|
35
|
+
* Implements graceful error handling: logs warnings for failed dependencies but continues
|
|
36
|
+
*/
|
|
37
|
+
createPhaseDependencies(phaseTasks: BeadsPhaseTask[]): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Capitalize phase name for display
|
|
40
|
+
*/
|
|
41
|
+
private capitalizePhase;
|
|
42
|
+
/**
|
|
43
|
+
* Validate parameters for epic creation
|
|
44
|
+
*/
|
|
45
|
+
private validateCreateEpicParameters;
|
|
46
|
+
/**
|
|
47
|
+
* Validate parameters for phase task creation
|
|
48
|
+
*/
|
|
49
|
+
private validateCreatePhaseParameters;
|
|
50
|
+
}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Integration Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for integrating with beads distributed issue tracker:
|
|
5
|
+
* - Project epic creation
|
|
6
|
+
* - Phase task management
|
|
7
|
+
* - Task hierarchy setup
|
|
8
|
+
*/
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import { createLogger } from './logger.js';
|
|
11
|
+
const logger = createLogger('BeadsIntegration');
|
|
12
|
+
/**
|
|
13
|
+
* Beads integration manager for the workflows server
|
|
14
|
+
*/
|
|
15
|
+
export class BeadsIntegration {
|
|
16
|
+
projectPath;
|
|
17
|
+
constructor(projectPath) {
|
|
18
|
+
this.projectPath = projectPath;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Ensure beads is initialized in the project directory
|
|
22
|
+
*/
|
|
23
|
+
async ensureBeadsInitialized() {
|
|
24
|
+
try {
|
|
25
|
+
// Check if beads is already initialized by running a simple command
|
|
26
|
+
execSync('bd list --limit 1', {
|
|
27
|
+
cwd: this.projectPath,
|
|
28
|
+
encoding: 'utf-8',
|
|
29
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
30
|
+
});
|
|
31
|
+
// If we get here, beads is already initialized
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
36
|
+
// Check if the error suggests beads is not initialized
|
|
37
|
+
if (errorMessage.includes('not initialized') ||
|
|
38
|
+
errorMessage.includes('no database') ||
|
|
39
|
+
errorMessage.includes('init')) {
|
|
40
|
+
logger.info('Beads not initialized, running bd init --no-db', {
|
|
41
|
+
projectPath: this.projectPath,
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
// Initialize beads without database
|
|
45
|
+
execSync('bd init --no-db', {
|
|
46
|
+
cwd: this.projectPath,
|
|
47
|
+
encoding: 'utf-8',
|
|
48
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
49
|
+
});
|
|
50
|
+
logger.info('Successfully initialized beads in project', {
|
|
51
|
+
projectPath: this.projectPath,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (initError) {
|
|
55
|
+
const initErrorMessage = initError instanceof Error ? initError.message : String(initError);
|
|
56
|
+
logger.error('Failed to initialize beads', initError instanceof Error
|
|
57
|
+
? initError
|
|
58
|
+
: new Error(initErrorMessage), { projectPath: this.projectPath });
|
|
59
|
+
throw new Error(`Failed to initialize beads: ${initErrorMessage}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Some other beads error, re-throw
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a project epic in beads for the development session
|
|
70
|
+
*/
|
|
71
|
+
async createProjectEpic(projectName, workflowName, description, planFilename) {
|
|
72
|
+
// Validate parameters first
|
|
73
|
+
this.validateCreateEpicParameters(projectName, workflowName, description, planFilename);
|
|
74
|
+
// Ensure beads is initialized
|
|
75
|
+
await this.ensureBeadsInitialized();
|
|
76
|
+
const epicTitle = planFilename
|
|
77
|
+
? `${projectName}: ${workflowName} (${planFilename})`
|
|
78
|
+
: `${projectName}: ${workflowName}`;
|
|
79
|
+
const epicDescription = description ||
|
|
80
|
+
`Responsible vibe engineering session using ${workflowName} workflow for ${projectName}`;
|
|
81
|
+
const priority = 2;
|
|
82
|
+
const command = `bd create "${epicTitle}" --description "${epicDescription}" --priority ${priority}`;
|
|
83
|
+
logger.debug('Creating beads project epic', {
|
|
84
|
+
command,
|
|
85
|
+
projectName,
|
|
86
|
+
workflowName,
|
|
87
|
+
projectPath: this.projectPath,
|
|
88
|
+
});
|
|
89
|
+
try {
|
|
90
|
+
const output = execSync(command, {
|
|
91
|
+
cwd: this.projectPath,
|
|
92
|
+
encoding: 'utf-8',
|
|
93
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
94
|
+
});
|
|
95
|
+
// Extract task ID from beads output
|
|
96
|
+
// Support both new format (v0.47.1+): "✓ Created issue: project-name-123"
|
|
97
|
+
// and legacy format: "Created bd-a1b2c3"
|
|
98
|
+
const match = output.match(/✓ Created issue: ([\w\d.-]+)/) ||
|
|
99
|
+
output.match(/Created issue: ([\w\d.-]+)/) ||
|
|
100
|
+
output.match(/Created (bd-[\w\d.]+)/);
|
|
101
|
+
if (!match) {
|
|
102
|
+
logger.warn('Failed to extract task ID from beads output', {
|
|
103
|
+
command: `bd create "${epicTitle}" --description "${epicDescription}" --priority 2`,
|
|
104
|
+
output: output.slice(0, 200), // Truncated for logging
|
|
105
|
+
});
|
|
106
|
+
throw new Error(`Failed to extract task ID from beads output: ${output.slice(0, 100)}...`);
|
|
107
|
+
}
|
|
108
|
+
const epicId = match[1] || '';
|
|
109
|
+
logger.info('Created beads project epic', {
|
|
110
|
+
epicId,
|
|
111
|
+
epicTitle,
|
|
112
|
+
projectPath: this.projectPath,
|
|
113
|
+
});
|
|
114
|
+
return epicId;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
118
|
+
const commandInfo = {
|
|
119
|
+
command,
|
|
120
|
+
projectName,
|
|
121
|
+
workflowName,
|
|
122
|
+
projectPath: this.projectPath,
|
|
123
|
+
};
|
|
124
|
+
logger.error('Failed to create beads project epic', error instanceof Error ? error : new Error(errorMessage), commandInfo);
|
|
125
|
+
// Include stderr if available for better debugging
|
|
126
|
+
const execError = error;
|
|
127
|
+
if (execError?.stderr) {
|
|
128
|
+
logger.error('Beads command stderr output', new Error('Command stderr'), {
|
|
129
|
+
stderr: execError.stderr.toString(),
|
|
130
|
+
...commandInfo,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
throw new Error(`Failed to create beads project epic: ${errorMessage}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create phase tasks for all workflow phases under the project epic
|
|
138
|
+
*/
|
|
139
|
+
async createPhaseTasks(epicId, phases, workflowName) {
|
|
140
|
+
// Validate parameters
|
|
141
|
+
this.validateCreatePhaseParameters(epicId, phases, workflowName);
|
|
142
|
+
const phaseTasks = [];
|
|
143
|
+
const phaseNames = Object.keys(phases);
|
|
144
|
+
for (const phase of phaseNames) {
|
|
145
|
+
const phaseTitle = `${this.capitalizePhase(phase)}`;
|
|
146
|
+
const priority = 3;
|
|
147
|
+
const stateDefinition = phases[phase];
|
|
148
|
+
// Escape the description to prevent shell injection and handle special characters
|
|
149
|
+
const description = (stateDefinition?.default_instructions ||
|
|
150
|
+
`${workflowName} workflow ${phase} phase tasks`)
|
|
151
|
+
.replace(/"/g, '\\"') // Escape double quotes
|
|
152
|
+
.replace(/\n/g, ' ') // Replace newlines with spaces
|
|
153
|
+
.replace(/\r/g, '') // Remove carriage returns
|
|
154
|
+
.trim();
|
|
155
|
+
const command = `bd create "${phaseTitle}" --description "${description}" --parent ${epicId} --priority ${priority}`;
|
|
156
|
+
logger.debug('Creating beads phase task', {
|
|
157
|
+
command,
|
|
158
|
+
phase,
|
|
159
|
+
epicId,
|
|
160
|
+
projectPath: this.projectPath,
|
|
161
|
+
});
|
|
162
|
+
try {
|
|
163
|
+
const output = execSync(command, {
|
|
164
|
+
cwd: this.projectPath,
|
|
165
|
+
encoding: 'utf-8',
|
|
166
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
167
|
+
});
|
|
168
|
+
// Extract task ID from beads output
|
|
169
|
+
// Support both new format (v0.47.1+): "✓ Created issue: project-name-123"
|
|
170
|
+
// and legacy format: "Created bd-a1b2c3"
|
|
171
|
+
const match = output.match(/✓ Created issue: ([\w\d.-]+)/) ||
|
|
172
|
+
output.match(/Created issue: ([\w\d.-]+)/) ||
|
|
173
|
+
output.match(/Created (bd-[\w\d.]+)/);
|
|
174
|
+
if (!match) {
|
|
175
|
+
logger.warn('Failed to extract phase task ID from beads output', {
|
|
176
|
+
command,
|
|
177
|
+
output: output.slice(0, 200), // Truncated for logging
|
|
178
|
+
});
|
|
179
|
+
throw new Error(`Failed to extract task ID from beads output: ${output.slice(0, 100)}...`);
|
|
180
|
+
}
|
|
181
|
+
const phaseTaskId = match[1] || '';
|
|
182
|
+
phaseTasks.push({
|
|
183
|
+
phaseId: phase,
|
|
184
|
+
phaseName: phaseTitle,
|
|
185
|
+
taskId: phaseTaskId,
|
|
186
|
+
});
|
|
187
|
+
logger.debug('Created beads phase task', {
|
|
188
|
+
phase,
|
|
189
|
+
phaseTaskId,
|
|
190
|
+
epicId,
|
|
191
|
+
projectPath: this.projectPath,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
196
|
+
const commandInfo = {
|
|
197
|
+
command,
|
|
198
|
+
phase,
|
|
199
|
+
epicId,
|
|
200
|
+
projectPath: this.projectPath,
|
|
201
|
+
};
|
|
202
|
+
logger.error('Failed to create beads phase task', error instanceof Error ? error : new Error(errorMessage), commandInfo);
|
|
203
|
+
// Include stderr if available for better debugging
|
|
204
|
+
const execError = error;
|
|
205
|
+
if (execError?.stderr) {
|
|
206
|
+
logger.error('Beads phase command stderr output', new Error('Command stderr'), {
|
|
207
|
+
stderr: execError.stderr.toString(),
|
|
208
|
+
...commandInfo,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
throw new Error(`Failed to create beads phase task for ${phase}: ${errorMessage}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
logger.info('Created all beads phase tasks', {
|
|
215
|
+
count: phaseTasks.length,
|
|
216
|
+
epicId,
|
|
217
|
+
projectPath: this.projectPath,
|
|
218
|
+
});
|
|
219
|
+
return phaseTasks;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create sequential dependencies between workflow phase tasks
|
|
223
|
+
* Implements graceful error handling: logs warnings for failed dependencies but continues
|
|
224
|
+
*/
|
|
225
|
+
async createPhaseDependencies(phaseTasks) {
|
|
226
|
+
if (phaseTasks.length < 2) {
|
|
227
|
+
logger.debug('Skipping phase dependencies - less than 2 phases', {
|
|
228
|
+
phaseCount: phaseTasks.length,
|
|
229
|
+
projectPath: this.projectPath,
|
|
230
|
+
});
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
logger.info('Creating sequential phase dependencies', {
|
|
234
|
+
phaseCount: phaseTasks.length,
|
|
235
|
+
projectPath: this.projectPath,
|
|
236
|
+
});
|
|
237
|
+
// Track failed dependencies for logging
|
|
238
|
+
const failedDependencies = [];
|
|
239
|
+
// Create dependencies in sequence: each phase blocks the next one
|
|
240
|
+
for (let i = 0; i < phaseTasks.length - 1; i++) {
|
|
241
|
+
const currentPhase = phaseTasks[i];
|
|
242
|
+
const nextPhase = phaseTasks[i + 1];
|
|
243
|
+
if (!currentPhase || !nextPhase) {
|
|
244
|
+
logger.warn('Skipping phase dependency - missing phase data', {
|
|
245
|
+
currentPhaseIndex: i,
|
|
246
|
+
nextPhaseIndex: i + 1,
|
|
247
|
+
totalPhases: phaseTasks.length,
|
|
248
|
+
projectPath: this.projectPath,
|
|
249
|
+
});
|
|
250
|
+
failedDependencies.push({
|
|
251
|
+
from: `Phase ${i}`,
|
|
252
|
+
to: `Phase ${i + 1}`,
|
|
253
|
+
error: 'Missing phase data',
|
|
254
|
+
});
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
const command = `bd dep ${currentPhase.taskId} --blocks ${nextPhase.taskId}`;
|
|
258
|
+
logger.debug('Creating phase dependency', {
|
|
259
|
+
command,
|
|
260
|
+
currentPhase: currentPhase.phaseName,
|
|
261
|
+
nextPhase: nextPhase.phaseName,
|
|
262
|
+
currentTaskId: currentPhase.taskId,
|
|
263
|
+
nextTaskId: nextPhase.taskId,
|
|
264
|
+
projectPath: this.projectPath,
|
|
265
|
+
});
|
|
266
|
+
try {
|
|
267
|
+
execSync(command, {
|
|
268
|
+
cwd: this.projectPath,
|
|
269
|
+
encoding: 'utf-8',
|
|
270
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
271
|
+
});
|
|
272
|
+
logger.debug('Successfully created phase dependency', {
|
|
273
|
+
currentPhase: currentPhase.phaseName,
|
|
274
|
+
nextPhase: nextPhase.phaseName,
|
|
275
|
+
projectPath: this.projectPath,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// Log as warning but don't fail the entire setup
|
|
280
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
281
|
+
logger.warn('Failed to create phase dependency - continuing anyway', {
|
|
282
|
+
error: errorMessage,
|
|
283
|
+
command,
|
|
284
|
+
currentPhase: currentPhase.phaseName,
|
|
285
|
+
nextPhase: nextPhase.phaseName,
|
|
286
|
+
projectPath: this.projectPath,
|
|
287
|
+
});
|
|
288
|
+
// Include stderr if available for better debugging
|
|
289
|
+
const execError = error;
|
|
290
|
+
if (execError?.stderr) {
|
|
291
|
+
logger.debug('Beads dependency command stderr', {
|
|
292
|
+
stderr: execError.stderr.toString(),
|
|
293
|
+
command,
|
|
294
|
+
projectPath: this.projectPath,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
// Track failed dependency but continue
|
|
298
|
+
failedDependencies.push({
|
|
299
|
+
from: currentPhase.phaseName,
|
|
300
|
+
to: nextPhase.phaseName,
|
|
301
|
+
error: errorMessage,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (failedDependencies.length > 0) {
|
|
306
|
+
logger.warn('Some phase dependencies could not be created - app continues without these dependencies', {
|
|
307
|
+
failedCount: failedDependencies.length,
|
|
308
|
+
failedDependencies,
|
|
309
|
+
projectPath: this.projectPath,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
logger.info('Completed phase dependency creation', {
|
|
313
|
+
dependencyCount: phaseTasks.length - 1,
|
|
314
|
+
successCount: phaseTasks.length - 1 - failedDependencies.length,
|
|
315
|
+
failedCount: failedDependencies.length,
|
|
316
|
+
projectPath: this.projectPath,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Capitalize phase name for display
|
|
321
|
+
*/
|
|
322
|
+
capitalizePhase(phase) {
|
|
323
|
+
return phase
|
|
324
|
+
.split('_')
|
|
325
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
326
|
+
.join(' ');
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Validate parameters for epic creation
|
|
330
|
+
*/
|
|
331
|
+
validateCreateEpicParameters(projectName, workflowName, description, planFilename) {
|
|
332
|
+
if (!projectName ||
|
|
333
|
+
typeof projectName !== 'string' ||
|
|
334
|
+
projectName.trim() === '') {
|
|
335
|
+
throw new Error('Project name is required and cannot be empty');
|
|
336
|
+
}
|
|
337
|
+
if (!workflowName ||
|
|
338
|
+
typeof workflowName !== 'string' ||
|
|
339
|
+
workflowName.trim() === '') {
|
|
340
|
+
throw new Error('Workflow name is required and cannot be empty');
|
|
341
|
+
}
|
|
342
|
+
// Optional description validation - if provided, must be a valid string
|
|
343
|
+
if (description !== undefined &&
|
|
344
|
+
(typeof description !== 'string' || description.trim() === '')) {
|
|
345
|
+
throw new Error('Description, if provided, must be a non-empty string');
|
|
346
|
+
}
|
|
347
|
+
// Optional plan filename validation - if provided, must be a valid string
|
|
348
|
+
if (planFilename !== undefined &&
|
|
349
|
+
(typeof planFilename !== 'string' || planFilename.trim() === '')) {
|
|
350
|
+
throw new Error('Plan filename, if provided, must be a non-empty string');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Validate parameters for phase task creation
|
|
355
|
+
*/
|
|
356
|
+
validateCreatePhaseParameters(epicId, phases, workflowName) {
|
|
357
|
+
if (!epicId || typeof epicId !== 'string' || epicId.trim() === '') {
|
|
358
|
+
throw new Error('Epic ID is required and cannot be empty');
|
|
359
|
+
}
|
|
360
|
+
if (!phases ||
|
|
361
|
+
typeof phases !== 'object' ||
|
|
362
|
+
Object.keys(phases).length === 0) {
|
|
363
|
+
throw new Error('Phases object is required and cannot be empty');
|
|
364
|
+
}
|
|
365
|
+
if (!workflowName ||
|
|
366
|
+
typeof workflowName !== 'string' ||
|
|
367
|
+
workflowName.trim() === '') {
|
|
368
|
+
throw new Error('Workflow name is required and cannot be empty');
|
|
369
|
+
}
|
|
370
|
+
// Validate each phase
|
|
371
|
+
for (const [phaseName, phaseState] of Object.entries(phases)) {
|
|
372
|
+
if (!phaseName ||
|
|
373
|
+
typeof phaseName !== 'string' ||
|
|
374
|
+
phaseName.trim() === '') {
|
|
375
|
+
throw new Error(`Invalid phase name: "${phaseName}" - phase names must be non-empty strings`);
|
|
376
|
+
}
|
|
377
|
+
if (!phaseState || typeof phaseState !== 'object') {
|
|
378
|
+
throw new Error(`Invalid phase state for "${phaseName}" - phase states must be objects`);
|
|
379
|
+
}
|
|
380
|
+
if (!phaseState.default_instructions ||
|
|
381
|
+
typeof phaseState.default_instructions !== 'string') {
|
|
382
|
+
throw new Error(`Invalid phase state for "${phaseName}" - default_instructions must be a non-empty string`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=beads-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-integration.js","sourceRoot":"","sources":["../src/beads-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BeadsStateManager
|
|
3
|
+
*
|
|
4
|
+
* Manages beads-specific conversation state including phase task mappings
|
|
5
|
+
* and epic information. Provides persistent storage for beads integration
|
|
6
|
+
* data with proper separation of concerns from conversation management.
|
|
7
|
+
*/
|
|
8
|
+
import type { BeadsPhaseTask } from './beads-integration.js';
|
|
9
|
+
/**
|
|
10
|
+
* Beads-specific conversation state
|
|
11
|
+
*/
|
|
12
|
+
export interface BeadsConversationState {
|
|
13
|
+
conversationId: string;
|
|
14
|
+
projectPath: string;
|
|
15
|
+
epicId: string;
|
|
16
|
+
phaseTasks: BeadsPhaseTask[];
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Manager for beads conversation state persistence
|
|
22
|
+
*/
|
|
23
|
+
export declare class BeadsStateManager {
|
|
24
|
+
private projectPath;
|
|
25
|
+
constructor(projectPath: string);
|
|
26
|
+
/**
|
|
27
|
+
* Get the path to the beads state file for a conversation
|
|
28
|
+
*/
|
|
29
|
+
private getBeadsStatePath;
|
|
30
|
+
/**
|
|
31
|
+
* Create beads state for a conversation
|
|
32
|
+
*/
|
|
33
|
+
createState(conversationId: string, epicId: string, phaseTasks: BeadsPhaseTask[]): Promise<BeadsConversationState>;
|
|
34
|
+
/**
|
|
35
|
+
* Get beads state for a conversation
|
|
36
|
+
*/
|
|
37
|
+
getState(conversationId: string): Promise<BeadsConversationState | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Get phase task ID for a specific phase
|
|
40
|
+
*/
|
|
41
|
+
getPhaseTaskId(conversationId: string, phase: string): Promise<string | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Update beads state for a conversation
|
|
44
|
+
*/
|
|
45
|
+
updateState(conversationId: string, updates: Partial<Omit<BeadsConversationState, 'conversationId' | 'createdAt'>>): Promise<BeadsConversationState | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Clean up beads state for a conversation
|
|
48
|
+
*/
|
|
49
|
+
cleanup(conversationId: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Check if beads state exists for a conversation
|
|
52
|
+
*/
|
|
53
|
+
hasState(conversationId: string): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Save beads state to file
|
|
56
|
+
*/
|
|
57
|
+
private saveState;
|
|
58
|
+
}
|