@codemcp/workflows 5.2.4 → 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,432 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transition link renderer
|
|
3
|
+
* Handles rendering of transition arrows and labels between states
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import * as d3 from 'd3';
|
|
7
|
+
import {
|
|
8
|
+
DiagramLink,
|
|
9
|
+
DiagramStyle,
|
|
10
|
+
InteractionEvent,
|
|
11
|
+
} from '../types/visualization-types';
|
|
12
|
+
|
|
13
|
+
export class TransitionRenderer {
|
|
14
|
+
private style: DiagramStyle;
|
|
15
|
+
|
|
16
|
+
constructor(style: DiagramStyle) {
|
|
17
|
+
this.style = style;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Render transition links in the diagram
|
|
22
|
+
*/
|
|
23
|
+
public render(
|
|
24
|
+
container: d3.Selection<SVGGElement, unknown, null, undefined>,
|
|
25
|
+
links: DiagramLink[],
|
|
26
|
+
onInteraction: (event: InteractionEvent) => void
|
|
27
|
+
): void {
|
|
28
|
+
console.log(`Rendering ${links.length} transition links`);
|
|
29
|
+
|
|
30
|
+
// Bind data to transition link groups
|
|
31
|
+
const linkGroups = container
|
|
32
|
+
.selectAll<SVGGElement, DiagramLink>('.transition-link')
|
|
33
|
+
.data(links, d => d.id);
|
|
34
|
+
|
|
35
|
+
// Remove old links
|
|
36
|
+
linkGroups.exit().remove();
|
|
37
|
+
|
|
38
|
+
// Create new link groups
|
|
39
|
+
const linkEnter = linkGroups
|
|
40
|
+
.enter()
|
|
41
|
+
.append('g')
|
|
42
|
+
.attr('class', d => `transition-link ${d.isSelfLoop ? 'self-loop' : ''}`)
|
|
43
|
+
.attr('data-id', d => d.id);
|
|
44
|
+
|
|
45
|
+
// Add paths for transitions
|
|
46
|
+
linkEnter
|
|
47
|
+
.append('path')
|
|
48
|
+
.attr('marker-end', 'url(#arrow)')
|
|
49
|
+
.style('fill', 'none')
|
|
50
|
+
.style('stroke', this.style.link.stroke)
|
|
51
|
+
.style('stroke-width', this.style.link.strokeWidth);
|
|
52
|
+
|
|
53
|
+
// Add labels for transitions
|
|
54
|
+
linkEnter
|
|
55
|
+
.append('text')
|
|
56
|
+
.attr('class', 'transition-label')
|
|
57
|
+
.attr('text-anchor', 'middle')
|
|
58
|
+
.attr('dominant-baseline', 'central')
|
|
59
|
+
.style('font-size', this.style.text.fontSize)
|
|
60
|
+
.style('font-family', this.style.text.fontFamily)
|
|
61
|
+
.style('fill', this.style.text.fill)
|
|
62
|
+
.text(d => this.formatLabel(d.label));
|
|
63
|
+
|
|
64
|
+
// Merge enter and update selections
|
|
65
|
+
const linkUpdate = linkEnter.merge(linkGroups);
|
|
66
|
+
|
|
67
|
+
// Update paths
|
|
68
|
+
linkUpdate
|
|
69
|
+
.select('path')
|
|
70
|
+
.attr('d', d => this.createPath(d))
|
|
71
|
+
.style('stroke', d => this.getLinkStroke(d))
|
|
72
|
+
.style('stroke-width', d => this.getLinkStrokeWidth(d))
|
|
73
|
+
.attr('marker-end', d => this.getMarkerEnd(d));
|
|
74
|
+
|
|
75
|
+
// Update labels
|
|
76
|
+
linkUpdate
|
|
77
|
+
.select('.transition-label')
|
|
78
|
+
.attr('transform', d => this.getLabelTransform(d))
|
|
79
|
+
.style('fill', d => this.getLabelFill(d))
|
|
80
|
+
.style('font-weight', d => this.getLabelWeight(d));
|
|
81
|
+
|
|
82
|
+
// Add event listeners
|
|
83
|
+
this.addEventListeners(linkUpdate, onInteraction);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Create SVG path for a transition link
|
|
88
|
+
*/
|
|
89
|
+
private createPath(link: DiagramLink): string {
|
|
90
|
+
const source =
|
|
91
|
+
typeof link.source === 'object' ? link.source : { x: 0, y: 0 };
|
|
92
|
+
const target =
|
|
93
|
+
typeof link.target === 'object' ? link.target : { x: 0, y: 0 };
|
|
94
|
+
|
|
95
|
+
if (link.isSelfLoop) {
|
|
96
|
+
return this.createSelfLoopPath(source);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return this.createRegularPath(source, target);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Create path for self-loop transitions
|
|
104
|
+
*/
|
|
105
|
+
private createSelfLoopPath(node: { x?: number; y?: number }): string {
|
|
106
|
+
const x = node.x || 0;
|
|
107
|
+
const y = node.y || 0;
|
|
108
|
+
const radius = 25;
|
|
109
|
+
const offset = 45;
|
|
110
|
+
|
|
111
|
+
// Create a circular arc above the node
|
|
112
|
+
const startX = x - radius;
|
|
113
|
+
const startY = y - offset;
|
|
114
|
+
const endX = x + radius;
|
|
115
|
+
const endY = y - offset;
|
|
116
|
+
|
|
117
|
+
return `M ${startX} ${startY}
|
|
118
|
+
A ${radius} ${radius} 0 1 1 ${endX} ${endY}
|
|
119
|
+
L ${x} ${y - 40}`;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Create path for regular transitions between different states
|
|
124
|
+
*/
|
|
125
|
+
private createRegularPath(
|
|
126
|
+
source: { x?: number; y?: number },
|
|
127
|
+
target: { x?: number; y?: number }
|
|
128
|
+
): string {
|
|
129
|
+
const sx = source.x || 0;
|
|
130
|
+
const sy = source.y || 0;
|
|
131
|
+
const tx = target.x || 0;
|
|
132
|
+
const ty = target.y || 0;
|
|
133
|
+
|
|
134
|
+
// Calculate the angle and distance
|
|
135
|
+
const dx = tx - sx;
|
|
136
|
+
const dy = ty - sy;
|
|
137
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
138
|
+
|
|
139
|
+
if (distance === 0) {
|
|
140
|
+
return `M ${sx} ${sy} L ${tx} ${ty}`;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Calculate node edge points (accounting for node radius)
|
|
144
|
+
const nodeRadius = 40;
|
|
145
|
+
const sourceEdgeX = sx + (dx / distance) * nodeRadius;
|
|
146
|
+
const sourceEdgeY = sy + (dy / distance) * nodeRadius;
|
|
147
|
+
const targetEdgeX = tx - (dx / distance) * nodeRadius;
|
|
148
|
+
const targetEdgeY = ty - (dy / distance) * nodeRadius;
|
|
149
|
+
|
|
150
|
+
// For curved paths, add some curvature for better visual separation
|
|
151
|
+
if (this.shouldUseCurvedPath(source, target)) {
|
|
152
|
+
return this.createCurvedPath(
|
|
153
|
+
{ x: sourceEdgeX, y: sourceEdgeY },
|
|
154
|
+
{ x: targetEdgeX, y: targetEdgeY }
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Straight line
|
|
159
|
+
return `M ${sourceEdgeX} ${sourceEdgeY} L ${targetEdgeX} ${targetEdgeY}`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Determine if a curved path should be used
|
|
164
|
+
*/
|
|
165
|
+
private shouldUseCurvedPath(
|
|
166
|
+
source: { x?: number; y?: number },
|
|
167
|
+
target: { x?: number; y?: number }
|
|
168
|
+
): boolean {
|
|
169
|
+
const dx = (target.x || 0) - (source.x || 0);
|
|
170
|
+
const dy = (target.y || 0) - (source.y || 0);
|
|
171
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
172
|
+
|
|
173
|
+
// Use curved paths for longer connections
|
|
174
|
+
return distance > 150;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Create a curved path between two points
|
|
179
|
+
*/
|
|
180
|
+
private createCurvedPath(
|
|
181
|
+
source: { x: number; y: number },
|
|
182
|
+
target: { x: number; y: number }
|
|
183
|
+
): string {
|
|
184
|
+
const dx = target.x - source.x;
|
|
185
|
+
const dy = target.y - source.y;
|
|
186
|
+
|
|
187
|
+
// Calculate control point for quadratic curve
|
|
188
|
+
const midX = (source.x + target.x) / 2;
|
|
189
|
+
const midY = (source.y + target.y) / 2;
|
|
190
|
+
|
|
191
|
+
// Offset control point perpendicular to the line
|
|
192
|
+
const perpX = -dy * 0.2;
|
|
193
|
+
const perpY = dx * 0.2;
|
|
194
|
+
|
|
195
|
+
const controlX = midX + perpX;
|
|
196
|
+
const controlY = midY + perpY;
|
|
197
|
+
|
|
198
|
+
return `M ${source.x} ${source.y} Q ${controlX} ${controlY} ${target.x} ${target.y}`;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Get label transform for positioning
|
|
203
|
+
*/
|
|
204
|
+
private getLabelTransform(link: DiagramLink): string {
|
|
205
|
+
if (link.isSelfLoop) {
|
|
206
|
+
const source =
|
|
207
|
+
typeof link.source === 'object' ? link.source : { x: 0, y: 0 };
|
|
208
|
+
const x = source.x || 0;
|
|
209
|
+
const y = (source.y || 0) - 60;
|
|
210
|
+
return `translate(${x}, ${y})`;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const source =
|
|
214
|
+
typeof link.source === 'object' ? link.source : { x: 0, y: 0 };
|
|
215
|
+
const target =
|
|
216
|
+
typeof link.target === 'object' ? link.target : { x: 0, y: 0 };
|
|
217
|
+
|
|
218
|
+
const midX = ((source.x || 0) + (target.x || 0)) / 2;
|
|
219
|
+
const midY = ((source.y || 0) + (target.y || 0)) / 2;
|
|
220
|
+
|
|
221
|
+
return `translate(${midX}, ${midY})`;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Get link stroke color based on state
|
|
226
|
+
*/
|
|
227
|
+
private getLinkStroke(link: DiagramLink): string {
|
|
228
|
+
const element = d3.select(`[data-id="${link.id}"]`);
|
|
229
|
+
|
|
230
|
+
// Check if element exists and has classList
|
|
231
|
+
if (element.empty() || !element.node()) {
|
|
232
|
+
return this.style.link.stroke;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (element.classed('highlighted')) {
|
|
236
|
+
return '#d97706'; // warning color
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (element.classed('selected')) {
|
|
240
|
+
return this.style.link.selectedStroke;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return this.style.link.stroke;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Get link stroke width based on state
|
|
248
|
+
*/
|
|
249
|
+
private getLinkStrokeWidth(link: DiagramLink): number {
|
|
250
|
+
const element = d3.select(`[data-id="${link.id}"]`);
|
|
251
|
+
|
|
252
|
+
// Check if element exists and has classList
|
|
253
|
+
if (element.empty() || !element.node()) {
|
|
254
|
+
return this.style.link.strokeWidth;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (element.classed('highlighted')) {
|
|
258
|
+
return 4;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (element.classed('selected')) {
|
|
262
|
+
return this.style.link.selectedStrokeWidth;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return this.style.link.strokeWidth;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Get marker end for arrow
|
|
270
|
+
*/
|
|
271
|
+
private getMarkerEnd(link: DiagramLink): string {
|
|
272
|
+
const element = d3.select(`[data-id="${link.id}"]`);
|
|
273
|
+
|
|
274
|
+
// Check if element exists and has classList
|
|
275
|
+
if (element.empty() || !element.node()) {
|
|
276
|
+
return 'url(#arrow)';
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (element.classed('highlighted') || element.classed('selected')) {
|
|
280
|
+
return 'url(#arrow-highlighted)';
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return 'url(#arrow)';
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Get label fill color based on link state
|
|
288
|
+
*/
|
|
289
|
+
private getLabelFill(link: DiagramLink): string {
|
|
290
|
+
const element = d3.select(`[data-id="${link.id}"]`);
|
|
291
|
+
|
|
292
|
+
// Check if element exists and has classList
|
|
293
|
+
if (element.empty() || !element.node()) {
|
|
294
|
+
return this.style.text.fill;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
if (element.classed('highlighted')) {
|
|
298
|
+
return '#d97706'; // warning color
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (element.classed('selected')) {
|
|
302
|
+
return this.style.link.selectedStroke;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return this.style.text.fill;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Get label font weight based on link state
|
|
310
|
+
*/
|
|
311
|
+
private getLabelWeight(link: DiagramLink): string {
|
|
312
|
+
const element = d3.select(`[data-id="${link.id}"]`);
|
|
313
|
+
|
|
314
|
+
// Check if element exists and has classList
|
|
315
|
+
if (element.empty() || !element.node()) {
|
|
316
|
+
return '400';
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (element.classed('highlighted') || element.classed('selected')) {
|
|
320
|
+
return '600';
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return '400';
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Format label text to fit
|
|
328
|
+
*/
|
|
329
|
+
private formatLabel(label: string): string {
|
|
330
|
+
// Truncate long labels
|
|
331
|
+
if (label.length > 15) {
|
|
332
|
+
return label.substring(0, 13) + '...';
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return label;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Add event listeners to link groups
|
|
340
|
+
*/
|
|
341
|
+
private addEventListeners(
|
|
342
|
+
linkGroups: d3.Selection<SVGGElement, DiagramLink, SVGGElement, unknown>,
|
|
343
|
+
onInteraction: (event: InteractionEvent) => void
|
|
344
|
+
): void {
|
|
345
|
+
linkGroups
|
|
346
|
+
.style('cursor', 'pointer')
|
|
347
|
+
.on('click', (event: MouseEvent, d: DiagramLink) => {
|
|
348
|
+
event.stopPropagation();
|
|
349
|
+
onInteraction({
|
|
350
|
+
type: 'click',
|
|
351
|
+
elementType: 'link',
|
|
352
|
+
elementId: d.id,
|
|
353
|
+
data: d,
|
|
354
|
+
originalEvent: event,
|
|
355
|
+
});
|
|
356
|
+
})
|
|
357
|
+
.on('mouseenter', (event: MouseEvent, d: DiagramLink) => {
|
|
358
|
+
onInteraction({
|
|
359
|
+
type: 'hover',
|
|
360
|
+
elementType: 'link',
|
|
361
|
+
elementId: d.id,
|
|
362
|
+
data: d,
|
|
363
|
+
originalEvent: event,
|
|
364
|
+
});
|
|
365
|
+
})
|
|
366
|
+
.on('mouseleave', (event: MouseEvent, d: DiagramLink) => {
|
|
367
|
+
onInteraction({
|
|
368
|
+
type: 'unhover',
|
|
369
|
+
elementType: 'link',
|
|
370
|
+
elementId: d.id,
|
|
371
|
+
data: d,
|
|
372
|
+
originalEvent: event,
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Update link selection state
|
|
379
|
+
*/
|
|
380
|
+
public updateSelection(selectedLinkId: string | null): void {
|
|
381
|
+
// Clear all selections
|
|
382
|
+
d3.selectAll('.transition-link').classed('selected', false);
|
|
383
|
+
|
|
384
|
+
// Set new selection
|
|
385
|
+
if (selectedLinkId) {
|
|
386
|
+
d3.select(`[data-id="${selectedLinkId}"]`).classed('selected', true);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Update link highlight state
|
|
392
|
+
*/
|
|
393
|
+
public updateHighlights(highlightedLinkIds: string[]): void {
|
|
394
|
+
// Clear all highlights
|
|
395
|
+
d3.selectAll('.transition-link').classed('highlighted', false);
|
|
396
|
+
|
|
397
|
+
// Set new highlights
|
|
398
|
+
for (const linkId of highlightedLinkIds) {
|
|
399
|
+
d3.select(`[data-id="${linkId}"]`).classed('highlighted', true);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Animate link entrance
|
|
405
|
+
*/
|
|
406
|
+
public animateEntrance(
|
|
407
|
+
linkGroups: d3.Selection<SVGGElement, DiagramLink, SVGGElement, unknown>
|
|
408
|
+
): void {
|
|
409
|
+
linkGroups
|
|
410
|
+
.select('path')
|
|
411
|
+
.style('opacity', 0)
|
|
412
|
+
.transition()
|
|
413
|
+
.duration(750)
|
|
414
|
+
.delay((_d, i) => i * 50)
|
|
415
|
+
.style('opacity', 1);
|
|
416
|
+
|
|
417
|
+
linkGroups
|
|
418
|
+
.select('.transition-label')
|
|
419
|
+
.style('opacity', 0)
|
|
420
|
+
.transition()
|
|
421
|
+
.duration(500)
|
|
422
|
+
.delay((_d, i) => i * 50 + 250)
|
|
423
|
+
.style('opacity', 1);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Update style configuration
|
|
428
|
+
*/
|
|
429
|
+
public updateStyle(style: DiagramStyle): void {
|
|
430
|
+
this.style = style;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@codemcp/workflows-visualizer",
|
|
3
|
+
"version": "6.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.ts",
|
|
6
|
+
"module": "dist/index.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/index.ts",
|
|
9
|
+
"./dist/*": "./dist/*"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"prebuild": "node ../../scripts/generate-workflow-list.js",
|
|
16
|
+
"build": "mkdir -p dist && cp -r src/* dist/",
|
|
17
|
+
"dev": "npm run prebuild && nodemon --watch src --ext ts,vue,js --ignore 'src/services/workflow-list.ts' --ignore 'dist/**/*' --exec 'npm run build'",
|
|
18
|
+
"clean:build": "rimraf ./dist",
|
|
19
|
+
"lint": "oxlint .",
|
|
20
|
+
"lint:fix": "oxlint --fix .",
|
|
21
|
+
"format:check": "prettier --check .",
|
|
22
|
+
"format": "prettier --write ."
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"d3": "^7.9.0",
|
|
26
|
+
"js-yaml": "^4.1.0",
|
|
27
|
+
"marked": "^16.4.1",
|
|
28
|
+
"vue": "^3.5.22"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^20.19.23",
|
|
32
|
+
"nodemon": "^3.1.10",
|
|
33
|
+
"rimraf": "^5.0.10",
|
|
34
|
+
"typescript": "^5.9.3"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"vue": "^3.4.0"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: architect
|
|
2
|
+
displayName: Software Architect
|
|
3
|
+
systemPrompt: |
|
|
4
|
+
You are working as an architect in a collaborative software development team.
|
|
5
|
+
|
|
6
|
+
Your team consists of:
|
|
7
|
+
- Business Analyst: Requirements and specifications
|
|
8
|
+
- Architect (you): System design and planning
|
|
9
|
+
- Developer: Implementation
|
|
10
|
+
|
|
11
|
+
## How Collaboration Works
|
|
12
|
+
|
|
13
|
+
You follow structured workflows that guide you through development phases. In each phase:
|
|
14
|
+
- You may be RESPONSIBLE (driving the work), CONSULTED (available for questions), or INFORMED (monitoring progress)
|
|
15
|
+
- The workflow instructions will tell you your role and what to do
|
|
16
|
+
|
|
17
|
+
## Available Tools
|
|
18
|
+
|
|
19
|
+
**Workflow Navigation (responsible-vibe-mcp):**
|
|
20
|
+
- `whats_next()`: Call this after EVERY user message to get phase-specific guidance
|
|
21
|
+
- `proceed_to_phase()`: Move to the next phase when your work is complete (only when responsible)
|
|
22
|
+
|
|
23
|
+
**Team Communication (crowd-mcp):**
|
|
24
|
+
- `send_message_to_operator(content)`: Report to the human operator (completion, questions, blockers)
|
|
25
|
+
- `send_message(to, content)`: Send message to another agent (business-analyst or developer)
|
|
26
|
+
- `get_my_messages()`: Check for messages from other team members
|
|
27
|
+
- `discover_agents()`: See which team members are active
|
|
28
|
+
|
|
29
|
+
## Important Rules
|
|
30
|
+
|
|
31
|
+
1. **Always call `whats_next()` after each user message** to stay on track
|
|
32
|
+
2. **Follow your role**: Only edit plan files and proceed when you're RESPONSIBLE. Always mention your name as author after each line you modify.
|
|
33
|
+
3. **Communicate proactively**: Use `send_message` to collaborate with team members
|
|
34
|
+
4. **Keep operator informed**: Use `send_message_to_operator` for status updates
|
|
35
|
+
5. **Respond to messages**: Monitor `get_my_messages()` and respond when consulted
|
|
36
|
+
|
|
37
|
+
The workflow will provide detailed instructions for each phase. Trust the workflow and use your tools effectively.
|
|
38
|
+
|
|
39
|
+
preferredModels:
|
|
40
|
+
- claude-sonnet-4.5-20250929
|
|
41
|
+
- claude-sonnet-3.7-20250219
|
|
42
|
+
|
|
43
|
+
llmSettings:
|
|
44
|
+
temperature: 0.3
|
|
45
|
+
reasoningEffort: medium
|
|
46
|
+
|
|
47
|
+
mcpServers:
|
|
48
|
+
workflows:
|
|
49
|
+
type: stdio
|
|
50
|
+
command: npx
|
|
51
|
+
args:
|
|
52
|
+
- '@codemcp/workflows-server@latest'
|
|
53
|
+
env:
|
|
54
|
+
VIBE_ROLE: architect
|
|
55
|
+
VIBE_WORKFLOW_DOMAINS: sdd-crowd
|
|
56
|
+
|
|
57
|
+
capabilities:
|
|
58
|
+
- system-design
|
|
59
|
+
- api-design
|
|
60
|
+
- architecture-documentation
|
|
61
|
+
- technical-planning
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: business-analyst
|
|
2
|
+
displayName: Business Analyst
|
|
3
|
+
systemPrompt: |
|
|
4
|
+
You are working as a business-analyst in a collaborative software development team.
|
|
5
|
+
|
|
6
|
+
Your team consists of:
|
|
7
|
+
- Business Analyst (you): Requirements and specifications
|
|
8
|
+
- Architect: System design and planning
|
|
9
|
+
- Developer: Implementation
|
|
10
|
+
|
|
11
|
+
## How Collaboration Works
|
|
12
|
+
|
|
13
|
+
You follow structured workflows that guide you through development phases. In each phase:
|
|
14
|
+
- You may be RESPONSIBLE (driving the work), CONSULTED (available for questions), or INFORMED (monitoring progress)
|
|
15
|
+
- The workflow instructions will tell you your role and what to do
|
|
16
|
+
|
|
17
|
+
## Available Tools
|
|
18
|
+
|
|
19
|
+
**Workflow Navigation (responsible-vibe-mcp):**
|
|
20
|
+
- `whats_next()`: Call this after EVERY user message to get phase-specific guidance
|
|
21
|
+
- `proceed_to_phase()`: Move to the next phase when your work is complete (only when responsible)
|
|
22
|
+
|
|
23
|
+
**Team Communication (crowd-mcp):**
|
|
24
|
+
- `send_message_to_operator(content)`: Report to the human operator (completion, questions, blockers)
|
|
25
|
+
- `send_message(to, content)`: Send message to another agent (architect or developer)
|
|
26
|
+
- `get_my_messages()`: Check for messages from other team members
|
|
27
|
+
- `discover_agents()`: See which team members are active
|
|
28
|
+
|
|
29
|
+
## Important Rules
|
|
30
|
+
|
|
31
|
+
1. **Always call `whats_next()` after each user message** to stay on track
|
|
32
|
+
2. **Follow your role**: Only edit plan files and proceed when you're RESPONSIBLE. Always mention your name as author after each line you modify.
|
|
33
|
+
3. **Communicate proactively**: Use `send_message` to collaborate with team members
|
|
34
|
+
4. **Keep operator informed**: Use `send_message_to_operator` for status updates
|
|
35
|
+
5. **Respond to messages**: Monitor `get_my_messages()` and respond when consulted
|
|
36
|
+
|
|
37
|
+
The workflow will provide detailed instructions for each phase. Trust the workflow and use your tools effectively.
|
|
38
|
+
|
|
39
|
+
preferredModels:
|
|
40
|
+
- claude-sonnet-4.5-20250929
|
|
41
|
+
- claude-sonnet-3.7-20250219
|
|
42
|
+
|
|
43
|
+
llmSettings:
|
|
44
|
+
temperature: 0.3
|
|
45
|
+
reasoningEffort: medium
|
|
46
|
+
|
|
47
|
+
mcpServers:
|
|
48
|
+
workflows:
|
|
49
|
+
type: stdio
|
|
50
|
+
command: npx
|
|
51
|
+
args:
|
|
52
|
+
- '@codemcp/workflows-server@latest'
|
|
53
|
+
env:
|
|
54
|
+
VIBE_ROLE: business-analyst
|
|
55
|
+
VIBE_WORKFLOW_DOMAINS: sdd-crowd
|
|
56
|
+
|
|
57
|
+
capabilities:
|
|
58
|
+
- requirements-gathering
|
|
59
|
+
- specification-writing
|
|
60
|
+
- user-story-creation
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: developer
|
|
2
|
+
displayName: Software Developer
|
|
3
|
+
systemPrompt: |
|
|
4
|
+
You are working as a developer in a collaborative software development team.
|
|
5
|
+
|
|
6
|
+
Your team consists of:
|
|
7
|
+
- Business Analyst: Requirements and specifications
|
|
8
|
+
- Architect: System design and planning
|
|
9
|
+
- Developer (you): Implementation
|
|
10
|
+
|
|
11
|
+
## How Collaboration Works
|
|
12
|
+
|
|
13
|
+
You follow structured workflows that guide you through development phases. In each phase:
|
|
14
|
+
- You may be RESPONSIBLE (driving the work), CONSULTED (available for questions), or INFORMED (monitoring progress)
|
|
15
|
+
- The workflow instructions will tell you your role and what to do
|
|
16
|
+
|
|
17
|
+
## Available Tools
|
|
18
|
+
|
|
19
|
+
**Workflow Navigation (responsible-vibe-mcp):**
|
|
20
|
+
- `whats_next()`: Call this after EVERY user message to get phase-specific guidance
|
|
21
|
+
- `proceed_to_phase()`: Move to the next phase when your work is complete (only when responsible)
|
|
22
|
+
|
|
23
|
+
**Team Communication (crowd-mcp):**
|
|
24
|
+
- `send_message_to_operator(content)`: Report to the human operator (completion, questions, blockers)
|
|
25
|
+
- `send_message(to, content)`: Send message to another agent (business-analyst or architect)
|
|
26
|
+
- `get_my_messages()`: Check for messages from other team members
|
|
27
|
+
- `discover_agents()`: See which team members are active
|
|
28
|
+
|
|
29
|
+
## Important Rules
|
|
30
|
+
|
|
31
|
+
1. **Always call `whats_next()` after each user message** to stay on track
|
|
32
|
+
2. **Follow your role**: Only edit plan files and proceed when you're RESPONSIBLE. Always mention your name as author after each line you modify.
|
|
33
|
+
3. **Communicate proactively**: Use `send_message` to collaborate with team members
|
|
34
|
+
4. **Keep operator informed**: Use `send_message_to_operator` for status updates
|
|
35
|
+
5. **Respond to messages**: Monitor `get_my_messages()` and respond when consulted
|
|
36
|
+
|
|
37
|
+
The workflow will provide detailed instructions for each phase. Trust the workflow and use your tools effectively.
|
|
38
|
+
|
|
39
|
+
preferredModels:
|
|
40
|
+
- claude-sonnet-4.5-20250929
|
|
41
|
+
- claude-sonnet-3.7-20250219
|
|
42
|
+
|
|
43
|
+
llmSettings:
|
|
44
|
+
temperature: 0.2
|
|
45
|
+
reasoningEffort: low
|
|
46
|
+
|
|
47
|
+
mcpServers:
|
|
48
|
+
workflows:
|
|
49
|
+
type: stdio
|
|
50
|
+
command: npx
|
|
51
|
+
args:
|
|
52
|
+
- '@codemcp/workflows-server@latest'
|
|
53
|
+
env:
|
|
54
|
+
VIBE_ROLE: developer
|
|
55
|
+
VIBE_WORKFLOW_DOMAINS: sdd-crowd
|
|
56
|
+
|
|
57
|
+
capabilities:
|
|
58
|
+
- implementation
|
|
59
|
+
- testing
|
|
60
|
+
- refactoring
|
|
61
|
+
- debugging
|