@codemcp/workflows 5.3.0 → 6.0.2
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 +78 -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/cli/resources/agents/architect.yaml +61 -0
- package/packages/cli/resources/agents/business-analyst.yaml +60 -0
- package/packages/cli/resources/agents/developer.yaml +61 -0
- package/packages/cli/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
- package/packages/cli/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
- package/packages/cli/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
- package/packages/cli/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
- package/packages/cli/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
- package/packages/cli/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
- package/packages/cli/resources/templates/architecture/c4.md +224 -0
- package/packages/cli/resources/templates/architecture/freestyle.md +53 -0
- package/packages/cli/resources/templates/architecture/game.md +250 -0
- package/packages/cli/resources/templates/architecture/none.md +17 -0
- package/packages/cli/resources/templates/design/comprehensive.md +207 -0
- package/packages/cli/resources/templates/design/freestyle.md +37 -0
- package/packages/cli/resources/templates/design/game.md +66 -0
- package/packages/cli/resources/templates/design/none.md +17 -0
- package/packages/cli/resources/templates/requirements/ears.md +90 -0
- package/packages/cli/resources/templates/requirements/freestyle.md +42 -0
- package/packages/cli/resources/templates/requirements/game.md +162 -0
- package/packages/cli/resources/templates/requirements/none.md +17 -0
- package/packages/cli/resources/templates/skills/POWER.md +23 -0
- package/packages/cli/resources/templates/skills/SKILL.md +19 -0
- package/packages/cli/resources/workflows/adr.yaml +157 -0
- package/packages/cli/resources/workflows/big-bang-conversion.yaml +592 -0
- package/packages/cli/resources/workflows/boundary-testing.yaml +376 -0
- package/packages/cli/resources/workflows/bugfix.yaml +177 -0
- package/packages/cli/resources/workflows/business-analysis.yaml +597 -0
- package/packages/cli/resources/workflows/c4-analysis.yaml +471 -0
- package/packages/cli/resources/workflows/epcc.yaml +183 -0
- package/packages/cli/resources/workflows/game-beginner.yaml +434 -0
- package/packages/cli/resources/workflows/greenfield.yaml +201 -0
- package/packages/cli/resources/workflows/minor.yaml +138 -0
- package/packages/cli/resources/workflows/posts.yaml +193 -0
- package/packages/cli/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
- package/packages/cli/resources/workflows/sdd-bugfix.yaml +381 -0
- package/packages/cli/resources/workflows/sdd-feature-crowd.yaml +713 -0
- package/packages/cli/resources/workflows/sdd-feature.yaml +471 -0
- package/packages/cli/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
- package/packages/cli/resources/workflows/sdd-greenfield.yaml +463 -0
- package/packages/cli/resources/workflows/slides.yaml +237 -0
- package/packages/cli/resources/workflows/tdd.yaml +160 -0
- package/packages/cli/resources/workflows/waterfall.yaml +209 -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/core/resources/agents/architect.yaml +61 -0
- package/packages/core/resources/agents/business-analyst.yaml +60 -0
- package/packages/core/resources/agents/developer.yaml +61 -0
- package/packages/core/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
- package/packages/core/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
- package/packages/core/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
- package/packages/core/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
- package/packages/core/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
- package/packages/core/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
- package/packages/core/resources/templates/architecture/c4.md +224 -0
- package/packages/core/resources/templates/architecture/freestyle.md +53 -0
- package/packages/core/resources/templates/architecture/game.md +250 -0
- package/packages/core/resources/templates/architecture/none.md +17 -0
- package/packages/core/resources/templates/design/comprehensive.md +207 -0
- package/packages/core/resources/templates/design/freestyle.md +37 -0
- package/packages/core/resources/templates/design/game.md +66 -0
- package/packages/core/resources/templates/design/none.md +17 -0
- package/packages/core/resources/templates/requirements/ears.md +90 -0
- package/packages/core/resources/templates/requirements/freestyle.md +42 -0
- package/packages/core/resources/templates/requirements/game.md +162 -0
- package/packages/core/resources/templates/requirements/none.md +17 -0
- package/packages/core/resources/templates/skills/POWER.md +23 -0
- package/packages/core/resources/templates/skills/SKILL.md +19 -0
- package/packages/core/resources/workflows/adr.yaml +157 -0
- package/packages/core/resources/workflows/big-bang-conversion.yaml +592 -0
- package/packages/core/resources/workflows/boundary-testing.yaml +376 -0
- package/packages/core/resources/workflows/bugfix.yaml +177 -0
- package/packages/core/resources/workflows/business-analysis.yaml +597 -0
- package/packages/core/resources/workflows/c4-analysis.yaml +471 -0
- package/packages/core/resources/workflows/epcc.yaml +183 -0
- package/packages/core/resources/workflows/game-beginner.yaml +434 -0
- package/packages/core/resources/workflows/greenfield.yaml +201 -0
- package/packages/core/resources/workflows/minor.yaml +138 -0
- package/packages/core/resources/workflows/posts.yaml +193 -0
- package/packages/core/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
- package/packages/core/resources/workflows/sdd-bugfix.yaml +381 -0
- package/packages/core/resources/workflows/sdd-feature-crowd.yaml +713 -0
- package/packages/core/resources/workflows/sdd-feature.yaml +471 -0
- package/packages/core/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
- package/packages/core/resources/workflows/sdd-greenfield.yaml +463 -0
- package/packages/core/resources/workflows/slides.yaml +237 -0
- package/packages/core/resources/workflows/tdd.yaml +160 -0
- package/packages/core/resources/workflows/waterfall.yaml +209 -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/mcp-server/resources/agents/architect.yaml +61 -0
- package/packages/mcp-server/resources/agents/business-analyst.yaml +60 -0
- package/packages/mcp-server/resources/agents/developer.yaml +61 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/arc42-template-EN.md +1077 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio-2023.png +0 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/images/01_2_iso-25010-topics-EN.drawio.png +0 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/images/05_building_blocks-EN.png +0 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/images/08-concepts-EN.drawio.png +0 -0
- package/packages/mcp-server/resources/templates/architecture/arc42/images/arc42-logo.png +0 -0
- package/packages/mcp-server/resources/templates/architecture/c4.md +224 -0
- package/packages/mcp-server/resources/templates/architecture/freestyle.md +53 -0
- package/packages/mcp-server/resources/templates/architecture/game.md +250 -0
- package/packages/mcp-server/resources/templates/architecture/none.md +17 -0
- package/packages/mcp-server/resources/templates/design/comprehensive.md +207 -0
- package/packages/mcp-server/resources/templates/design/freestyle.md +37 -0
- package/packages/mcp-server/resources/templates/design/game.md +66 -0
- package/packages/mcp-server/resources/templates/design/none.md +17 -0
- package/packages/mcp-server/resources/templates/requirements/ears.md +90 -0
- package/packages/mcp-server/resources/templates/requirements/freestyle.md +42 -0
- package/packages/mcp-server/resources/templates/requirements/game.md +162 -0
- package/packages/mcp-server/resources/templates/requirements/none.md +17 -0
- package/packages/mcp-server/resources/templates/skills/POWER.md +23 -0
- package/packages/mcp-server/resources/templates/skills/SKILL.md +19 -0
- package/packages/mcp-server/resources/workflows/adr.yaml +157 -0
- package/packages/mcp-server/resources/workflows/big-bang-conversion.yaml +592 -0
- package/packages/mcp-server/resources/workflows/boundary-testing.yaml +376 -0
- package/packages/mcp-server/resources/workflows/bugfix.yaml +177 -0
- package/packages/mcp-server/resources/workflows/business-analysis.yaml +597 -0
- package/packages/mcp-server/resources/workflows/c4-analysis.yaml +471 -0
- package/packages/mcp-server/resources/workflows/epcc.yaml +183 -0
- package/packages/mcp-server/resources/workflows/game-beginner.yaml +434 -0
- package/packages/mcp-server/resources/workflows/greenfield.yaml +201 -0
- package/packages/mcp-server/resources/workflows/minor.yaml +138 -0
- package/packages/mcp-server/resources/workflows/posts.yaml +193 -0
- package/packages/mcp-server/resources/workflows/sdd-bugfix-crowd.yaml +608 -0
- package/packages/mcp-server/resources/workflows/sdd-bugfix.yaml +381 -0
- package/packages/mcp-server/resources/workflows/sdd-feature-crowd.yaml +713 -0
- package/packages/mcp-server/resources/workflows/sdd-feature.yaml +471 -0
- package/packages/mcp-server/resources/workflows/sdd-greenfield-crowd.yaml +336 -0
- package/packages/mcp-server/resources/workflows/sdd-greenfield.yaml +463 -0
- package/packages/mcp-server/resources/workflows/slides.yaml +237 -0
- package/packages/mcp-server/resources/workflows/tdd.yaml +160 -0
- package/packages/mcp-server/resources/workflows/waterfall.yaml +209 -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,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Detection Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles pattern-based file discovery and suggestions for existing documentation files.
|
|
5
|
+
* Supports auto-detection of common documentation patterns in projects.
|
|
6
|
+
*/
|
|
7
|
+
import { readdir, access } from 'node:fs/promises';
|
|
8
|
+
import { join, basename } from 'node:path';
|
|
9
|
+
import { createLogger } from './logger.js';
|
|
10
|
+
import { PathValidationUtils } from './path-validation-utils.js';
|
|
11
|
+
const logger = createLogger('FileDetectionManager');
|
|
12
|
+
export class FileDetectionManager {
|
|
13
|
+
projectPath;
|
|
14
|
+
constructor(projectPath) {
|
|
15
|
+
this.projectPath = projectPath;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Detect existing documentation files in the project
|
|
19
|
+
*/
|
|
20
|
+
async detectDocumentationFiles() {
|
|
21
|
+
logger.debug('Starting documentation file detection', {
|
|
22
|
+
projectPath: this.projectPath,
|
|
23
|
+
});
|
|
24
|
+
const searchLocations = this.getSearchLocations();
|
|
25
|
+
const patterns = PathValidationUtils.getCommonDocumentationPatterns();
|
|
26
|
+
const result = {
|
|
27
|
+
architecture: [],
|
|
28
|
+
requirements: [],
|
|
29
|
+
design: [],
|
|
30
|
+
};
|
|
31
|
+
// Search in each location
|
|
32
|
+
for (const location of searchLocations) {
|
|
33
|
+
try {
|
|
34
|
+
await access(location);
|
|
35
|
+
const files = await this.scanLocation(location);
|
|
36
|
+
// Match files against patterns
|
|
37
|
+
for (const file of files) {
|
|
38
|
+
const matches = this.matchFileToPatterns(file, patterns);
|
|
39
|
+
for (const match of matches) {
|
|
40
|
+
result[match.type].push({
|
|
41
|
+
path: file.path,
|
|
42
|
+
relativePath: file.relativePath,
|
|
43
|
+
type: match.type,
|
|
44
|
+
confidence: match.confidence,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
logger.debug('Search location not accessible', {
|
|
51
|
+
location,
|
|
52
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Sort by confidence and remove duplicates
|
|
57
|
+
result.architecture = this.sortAndDeduplicate(result.architecture);
|
|
58
|
+
result.requirements = this.sortAndDeduplicate(result.requirements);
|
|
59
|
+
result.design = this.sortAndDeduplicate(result.design);
|
|
60
|
+
logger.info('Documentation file detection completed', {
|
|
61
|
+
found: {
|
|
62
|
+
architecture: result.architecture.length,
|
|
63
|
+
requirements: result.requirements.length,
|
|
64
|
+
design: result.design.length,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get search locations for documentation files
|
|
71
|
+
*/
|
|
72
|
+
getSearchLocations() {
|
|
73
|
+
return [
|
|
74
|
+
this.projectPath, // Project root
|
|
75
|
+
join(this.projectPath, 'docs'), // docs/ folder
|
|
76
|
+
join(this.projectPath, 'doc'), // doc/ folder
|
|
77
|
+
join(this.projectPath, '.vibe', 'docs'), // .vibe/docs/ folder
|
|
78
|
+
join(this.projectPath, 'documentation'), // documentation/ folder
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Scan a location for files
|
|
83
|
+
*/
|
|
84
|
+
async scanLocation(location) {
|
|
85
|
+
try {
|
|
86
|
+
const entries = await readdir(location, { withFileTypes: true });
|
|
87
|
+
const files = [];
|
|
88
|
+
for (const entry of entries) {
|
|
89
|
+
if (entry.isFile()) {
|
|
90
|
+
const fullPath = join(location, entry.name);
|
|
91
|
+
const relativePath = fullPath.replace(this.projectPath + '/', '');
|
|
92
|
+
files.push({
|
|
93
|
+
path: fullPath,
|
|
94
|
+
relativePath,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return files;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
logger.debug('Failed to scan location', {
|
|
102
|
+
location,
|
|
103
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
104
|
+
});
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Match a file against documentation patterns
|
|
110
|
+
*/
|
|
111
|
+
matchFileToPatterns(file, patterns) {
|
|
112
|
+
const fileName = basename(file.path).toLowerCase();
|
|
113
|
+
const relativePath = file.relativePath.toLowerCase();
|
|
114
|
+
const matches = [];
|
|
115
|
+
// Check architecture patterns
|
|
116
|
+
if (this.matchesPatterns(fileName, relativePath, patterns.architecture)) {
|
|
117
|
+
const confidence = this.getConfidence(fileName, 'architecture');
|
|
118
|
+
matches.push({ type: 'architecture', confidence });
|
|
119
|
+
}
|
|
120
|
+
// Check requirements patterns
|
|
121
|
+
if (this.matchesPatterns(fileName, relativePath, patterns.requirements)) {
|
|
122
|
+
const confidence = this.getConfidence(fileName, 'requirements');
|
|
123
|
+
matches.push({ type: 'requirements', confidence });
|
|
124
|
+
}
|
|
125
|
+
// Check design patterns
|
|
126
|
+
if (this.matchesPatterns(fileName, relativePath, patterns.design)) {
|
|
127
|
+
const confidence = this.getConfidence(fileName, 'design');
|
|
128
|
+
matches.push({ type: 'design', confidence });
|
|
129
|
+
}
|
|
130
|
+
return matches;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if file matches any of the patterns
|
|
134
|
+
*/
|
|
135
|
+
matchesPatterns(fileName, relativePath, patterns) {
|
|
136
|
+
return patterns.some(pattern => {
|
|
137
|
+
const normalizedPattern = pattern.toLowerCase();
|
|
138
|
+
// Exact filename match
|
|
139
|
+
if (fileName === normalizedPattern) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
// Relative path match
|
|
143
|
+
if (relativePath === normalizedPattern) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
// Pattern matching with wildcards
|
|
147
|
+
if (normalizedPattern.includes('*')) {
|
|
148
|
+
const regex = new RegExp(normalizedPattern.replace(/\*/g, '.*'));
|
|
149
|
+
return regex.test(fileName) || regex.test(relativePath);
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Determine confidence level for a match
|
|
156
|
+
*/
|
|
157
|
+
getConfidence(fileName, type) {
|
|
158
|
+
// High confidence for exact type matches
|
|
159
|
+
if (fileName.includes(type.toLowerCase())) {
|
|
160
|
+
return 'high';
|
|
161
|
+
}
|
|
162
|
+
// Medium confidence for README files (could contain any type)
|
|
163
|
+
if (fileName.includes('readme')) {
|
|
164
|
+
return 'medium';
|
|
165
|
+
}
|
|
166
|
+
// Low confidence for other matches
|
|
167
|
+
return 'low';
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Sort by confidence and remove duplicates
|
|
171
|
+
*/
|
|
172
|
+
sortAndDeduplicate(files) {
|
|
173
|
+
// Remove duplicates by path
|
|
174
|
+
const unique = files.filter((file, index, array) => array.findIndex(f => f.path === file.path) === index);
|
|
175
|
+
// Sort by confidence (high first) and then by path length (shorter first)
|
|
176
|
+
return unique.sort((a, b) => {
|
|
177
|
+
const confidenceOrder = { high: 0, medium: 1, low: 2 };
|
|
178
|
+
const confidenceDiff = confidenceOrder[a.confidence] - confidenceOrder[b.confidence];
|
|
179
|
+
if (confidenceDiff !== 0) {
|
|
180
|
+
return confidenceDiff;
|
|
181
|
+
}
|
|
182
|
+
return a.relativePath.length - b.relativePath.length;
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Format file suggestions for LLM responses
|
|
187
|
+
*/
|
|
188
|
+
formatSuggestions(detectionResult) {
|
|
189
|
+
const suggestions = [];
|
|
190
|
+
if (detectionResult.architecture.length > 0) {
|
|
191
|
+
suggestions.push(`**Architecture files found:**`);
|
|
192
|
+
for (const file of detectionResult.architecture.slice(0, 3)) {
|
|
193
|
+
suggestions.push(` - ${file.relativePath} (${file.confidence} confidence)`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (detectionResult.requirements.length > 0) {
|
|
197
|
+
suggestions.push(`**Requirements files found:**`);
|
|
198
|
+
for (const file of detectionResult.requirements.slice(0, 3)) {
|
|
199
|
+
suggestions.push(` - ${file.relativePath} (${file.confidence} confidence)`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (detectionResult.design.length > 0) {
|
|
203
|
+
suggestions.push(`**Design files found:**`);
|
|
204
|
+
for (const file of detectionResult.design.slice(0, 3)) {
|
|
205
|
+
suggestions.push(` - ${file.relativePath} (${file.confidence} confidence)`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (suggestions.length === 0) {
|
|
209
|
+
return 'No existing documentation files detected.';
|
|
210
|
+
}
|
|
211
|
+
return [
|
|
212
|
+
'Existing documentation files detected:',
|
|
213
|
+
'',
|
|
214
|
+
...suggestions,
|
|
215
|
+
'',
|
|
216
|
+
'You can use these files with `setup_project_docs` by providing the file paths instead of template names.',
|
|
217
|
+
'Example: `setup_project_docs({ architecture: "README.md", requirements: "docs/requirements.md", design: "freestyle" })`',
|
|
218
|
+
].join('\n');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=file-detection-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-detection-manager.js","sourceRoot":"","sources":["../src/file-detection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-Based Storage Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements the IPersistence interface using a file-based approach with
|
|
5
|
+
* directory-per-conversation structure. Provides transparent, human-readable
|
|
6
|
+
* persistence.
|
|
7
|
+
*
|
|
8
|
+
* Directory Structure:
|
|
9
|
+
* .vibe/conversations/{conversationId}/
|
|
10
|
+
* state.json - ConversationState data
|
|
11
|
+
* interactions.jsonl - Append-only interaction logs (one JSON per line)
|
|
12
|
+
*/
|
|
13
|
+
import type { IPersistence } from './persistence-interface.js';
|
|
14
|
+
import type { ConversationState, InteractionLog } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* File-based persistence implementation
|
|
17
|
+
*/
|
|
18
|
+
export declare class FileStorage implements IPersistence {
|
|
19
|
+
private conversationsDir;
|
|
20
|
+
private basePath;
|
|
21
|
+
/**
|
|
22
|
+
* @param basePath - Path to the storage location (e.g., .vibe/conversations)
|
|
23
|
+
*/
|
|
24
|
+
constructor(basePath: string);
|
|
25
|
+
/**
|
|
26
|
+
* Initialize file-based storage
|
|
27
|
+
* Creates the conversations directory if it doesn't exist
|
|
28
|
+
*/
|
|
29
|
+
initialize(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the directory path for a conversation
|
|
32
|
+
*/
|
|
33
|
+
private getConversationDir;
|
|
34
|
+
/**
|
|
35
|
+
* Get the state file path for a conversation
|
|
36
|
+
*/
|
|
37
|
+
private getStateFilePath;
|
|
38
|
+
/**
|
|
39
|
+
* Get the interactions file path for a conversation
|
|
40
|
+
*/
|
|
41
|
+
private getInteractionsFilePath;
|
|
42
|
+
/**
|
|
43
|
+
* Write data atomically using temp file + rename
|
|
44
|
+
* Uses unique temp file names to prevent concurrent write collisions
|
|
45
|
+
*/
|
|
46
|
+
private writeAtomic;
|
|
47
|
+
/**
|
|
48
|
+
* Save or update a conversation state
|
|
49
|
+
*/
|
|
50
|
+
saveConversationState(state: ConversationState): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get a conversation state by ID
|
|
53
|
+
* Returns null if not found or corrupted
|
|
54
|
+
*/
|
|
55
|
+
getConversationState(conversationId: string): Promise<ConversationState | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all conversation states
|
|
58
|
+
* Skips corrupted state files
|
|
59
|
+
*/
|
|
60
|
+
getAllConversationStates(): Promise<ConversationState[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Delete a conversation state
|
|
63
|
+
* Returns true if deleted, false if not found
|
|
64
|
+
*/
|
|
65
|
+
deleteConversationState(conversationId: string): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Log an interaction
|
|
68
|
+
* Appends to interactions.jsonl file
|
|
69
|
+
*/
|
|
70
|
+
logInteraction(log: InteractionLog): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Get interaction logs for a conversation
|
|
73
|
+
* Skips corrupted JSONL lines, returns empty array if file doesn't exist
|
|
74
|
+
*/
|
|
75
|
+
getInteractionLogs(conversationId: string): Promise<InteractionLog[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get interaction logs by conversation ID (alias for compatibility)
|
|
78
|
+
*/
|
|
79
|
+
getInteractionsByConversationId(conversationId: string): Promise<InteractionLog[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Soft delete interaction logs
|
|
82
|
+
* Actually performs hard delete (removes interactions.jsonl file)
|
|
83
|
+
*/
|
|
84
|
+
softDeleteInteractionLogs(conversationId: string): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Reset conversation state (update timestamp)
|
|
87
|
+
*/
|
|
88
|
+
resetConversationState(conversationId: string): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Close file storage (no-op for file-based storage)
|
|
91
|
+
*/
|
|
92
|
+
close(): Promise<void>;
|
|
93
|
+
}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-Based Storage Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements the IPersistence interface using a file-based approach with
|
|
5
|
+
* directory-per-conversation structure. Provides transparent, human-readable
|
|
6
|
+
* persistence.
|
|
7
|
+
*
|
|
8
|
+
* Directory Structure:
|
|
9
|
+
* .vibe/conversations/{conversationId}/
|
|
10
|
+
* state.json - ConversationState data
|
|
11
|
+
* interactions.jsonl - Append-only interaction logs (one JSON per line)
|
|
12
|
+
*/
|
|
13
|
+
import { promises as fs } from 'node:fs';
|
|
14
|
+
import { join, dirname } from 'node:path';
|
|
15
|
+
import { createLogger } from './logger.js';
|
|
16
|
+
const logger = createLogger('FileStorage');
|
|
17
|
+
/**
|
|
18
|
+
* File-based persistence implementation
|
|
19
|
+
*/
|
|
20
|
+
export class FileStorage {
|
|
21
|
+
conversationsDir;
|
|
22
|
+
basePath;
|
|
23
|
+
/**
|
|
24
|
+
* @param basePath - Path to the storage location (e.g., .vibe/conversations)
|
|
25
|
+
*/
|
|
26
|
+
constructor(basePath) {
|
|
27
|
+
this.basePath = basePath;
|
|
28
|
+
this.conversationsDir = join(dirname(basePath), 'conversations');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize file-based storage
|
|
32
|
+
* Creates the conversations directory if it doesn't exist
|
|
33
|
+
*/
|
|
34
|
+
async initialize() {
|
|
35
|
+
try {
|
|
36
|
+
// Create conversations directory
|
|
37
|
+
await fs.mkdir(this.conversationsDir, { recursive: true });
|
|
38
|
+
logger.debug('FileStorage initialized', {
|
|
39
|
+
conversationsDir: this.conversationsDir,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
logger.error('Failed to initialize FileStorage', error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the directory path for a conversation
|
|
49
|
+
*/
|
|
50
|
+
getConversationDir(conversationId) {
|
|
51
|
+
return join(this.conversationsDir, conversationId);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the state file path for a conversation
|
|
55
|
+
*/
|
|
56
|
+
getStateFilePath(conversationId) {
|
|
57
|
+
return join(this.getConversationDir(conversationId), 'state.json');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the interactions file path for a conversation
|
|
61
|
+
*/
|
|
62
|
+
getInteractionsFilePath(conversationId) {
|
|
63
|
+
return join(this.getConversationDir(conversationId), 'interactions.jsonl');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Write data atomically using temp file + rename
|
|
67
|
+
* Uses unique temp file names to prevent concurrent write collisions
|
|
68
|
+
*/
|
|
69
|
+
async writeAtomic(filePath, data) {
|
|
70
|
+
// Use timestamp + random suffix to ensure unique temp file names for concurrent operations
|
|
71
|
+
const uniqueSuffix = `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
72
|
+
const tempPath = `${filePath}.tmp.${uniqueSuffix}`;
|
|
73
|
+
try {
|
|
74
|
+
await fs.writeFile(tempPath, data, 'utf-8');
|
|
75
|
+
await fs.rename(tempPath, filePath);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// Clean up temp file if it exists
|
|
79
|
+
try {
|
|
80
|
+
await fs.unlink(tempPath);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore cleanup errors
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Save or update a conversation state
|
|
90
|
+
*/
|
|
91
|
+
async saveConversationState(state) {
|
|
92
|
+
const conversationDir = this.getConversationDir(state.conversationId);
|
|
93
|
+
const stateFilePath = this.getStateFilePath(state.conversationId);
|
|
94
|
+
try {
|
|
95
|
+
// Ensure conversation directory exists
|
|
96
|
+
await fs.mkdir(conversationDir, { recursive: true });
|
|
97
|
+
// Write state atomically
|
|
98
|
+
const stateJson = JSON.stringify(state, null, 2);
|
|
99
|
+
await this.writeAtomic(stateFilePath, stateJson);
|
|
100
|
+
logger.debug('Conversation state saved', {
|
|
101
|
+
conversationId: state.conversationId,
|
|
102
|
+
currentPhase: state.currentPhase,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logger.error('Failed to save conversation state', error, {
|
|
107
|
+
conversationId: state.conversationId,
|
|
108
|
+
});
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get a conversation state by ID
|
|
114
|
+
* Returns null if not found or corrupted
|
|
115
|
+
*/
|
|
116
|
+
async getConversationState(conversationId) {
|
|
117
|
+
const stateFilePath = this.getStateFilePath(conversationId);
|
|
118
|
+
try {
|
|
119
|
+
const stateJson = await fs.readFile(stateFilePath, 'utf-8');
|
|
120
|
+
const state = JSON.parse(stateJson);
|
|
121
|
+
return state;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (error.code === 'ENOENT') {
|
|
125
|
+
// File doesn't exist - return null (expected for non-existent conversations)
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
// JSON parse error or other error - log warning and return null
|
|
129
|
+
logger.warn('Failed to read conversation state, returning null', {
|
|
130
|
+
conversationId,
|
|
131
|
+
error: error.message,
|
|
132
|
+
});
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get all conversation states
|
|
138
|
+
* Skips corrupted state files
|
|
139
|
+
*/
|
|
140
|
+
async getAllConversationStates() {
|
|
141
|
+
try {
|
|
142
|
+
const entries = await fs.readdir(this.conversationsDir, {
|
|
143
|
+
withFileTypes: true,
|
|
144
|
+
});
|
|
145
|
+
const states = [];
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
if (entry.isDirectory()) {
|
|
148
|
+
const conversationId = entry.name;
|
|
149
|
+
const state = await this.getConversationState(conversationId);
|
|
150
|
+
if (state) {
|
|
151
|
+
states.push(state);
|
|
152
|
+
}
|
|
153
|
+
// Corrupted states are already logged and skipped by getConversationState
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Sort by updatedAt DESC (most recent first)
|
|
157
|
+
states.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
158
|
+
return states;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error.code === 'ENOENT') {
|
|
162
|
+
// Conversations directory doesn't exist yet - return empty array
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
logger.error('Failed to get all conversation states', error);
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Delete a conversation state
|
|
171
|
+
* Returns true if deleted, false if not found
|
|
172
|
+
*/
|
|
173
|
+
async deleteConversationState(conversationId) {
|
|
174
|
+
const conversationDir = this.getConversationDir(conversationId);
|
|
175
|
+
try {
|
|
176
|
+
await fs.rm(conversationDir, { recursive: true, force: true });
|
|
177
|
+
logger.debug('Conversation state deleted', { conversationId });
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error.code === 'ENOENT') {
|
|
182
|
+
// Directory doesn't exist - return false
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
logger.error('Failed to delete conversation state', error, {
|
|
186
|
+
conversationId,
|
|
187
|
+
});
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Log an interaction
|
|
193
|
+
* Appends to interactions.jsonl file
|
|
194
|
+
*/
|
|
195
|
+
async logInteraction(log) {
|
|
196
|
+
const interactionsFilePath = this.getInteractionsFilePath(log.conversationId);
|
|
197
|
+
const conversationDir = this.getConversationDir(log.conversationId);
|
|
198
|
+
try {
|
|
199
|
+
// Ensure conversation directory exists
|
|
200
|
+
await fs.mkdir(conversationDir, { recursive: true });
|
|
201
|
+
// Append to JSONL file (one JSON per line)
|
|
202
|
+
const logLine = JSON.stringify(log) + '\n';
|
|
203
|
+
await fs.appendFile(interactionsFilePath, logLine, 'utf-8');
|
|
204
|
+
logger.debug('Interaction logged', {
|
|
205
|
+
conversationId: log.conversationId,
|
|
206
|
+
toolName: log.toolName,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
logger.error('Failed to log interaction', error, {
|
|
211
|
+
conversationId: log.conversationId,
|
|
212
|
+
toolName: log.toolName,
|
|
213
|
+
});
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get interaction logs for a conversation
|
|
219
|
+
* Skips corrupted JSONL lines, returns empty array if file doesn't exist
|
|
220
|
+
*/
|
|
221
|
+
async getInteractionLogs(conversationId) {
|
|
222
|
+
const interactionsFilePath = this.getInteractionsFilePath(conversationId);
|
|
223
|
+
try {
|
|
224
|
+
const content = await fs.readFile(interactionsFilePath, 'utf-8');
|
|
225
|
+
const lines = content.split('\n').filter(line => line.trim());
|
|
226
|
+
const logs = [];
|
|
227
|
+
for (const line of lines) {
|
|
228
|
+
try {
|
|
229
|
+
const log = JSON.parse(line);
|
|
230
|
+
logs.push(log);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
// Skip corrupted line, log warning
|
|
234
|
+
logger.warn('Skipping corrupted interaction log line', {
|
|
235
|
+
conversationId,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return logs;
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error.code === 'ENOENT') {
|
|
243
|
+
// File doesn't exist - return empty array
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
logger.error('Failed to get interaction logs', error, {
|
|
247
|
+
conversationId,
|
|
248
|
+
});
|
|
249
|
+
throw error;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get interaction logs by conversation ID (alias for compatibility)
|
|
254
|
+
*/
|
|
255
|
+
async getInteractionsByConversationId(conversationId) {
|
|
256
|
+
return this.getInteractionLogs(conversationId);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Soft delete interaction logs
|
|
260
|
+
* Actually performs hard delete (removes interactions.jsonl file)
|
|
261
|
+
*/
|
|
262
|
+
async softDeleteInteractionLogs(conversationId) {
|
|
263
|
+
const interactionsFilePath = this.getInteractionsFilePath(conversationId);
|
|
264
|
+
try {
|
|
265
|
+
await fs.unlink(interactionsFilePath);
|
|
266
|
+
logger.debug('Interaction logs deleted', { conversationId });
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
if (error.code === 'ENOENT') {
|
|
270
|
+
// File doesn't exist - nothing to delete
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
logger.warn('Failed to delete interaction logs', {
|
|
274
|
+
conversationId,
|
|
275
|
+
error: error.message,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Reset conversation state (update timestamp)
|
|
281
|
+
*/
|
|
282
|
+
async resetConversationState(conversationId) {
|
|
283
|
+
const state = await this.getConversationState(conversationId);
|
|
284
|
+
if (!state) {
|
|
285
|
+
throw new Error(`Conversation state not found for ID: ${conversationId}`);
|
|
286
|
+
}
|
|
287
|
+
const updatedState = {
|
|
288
|
+
...state,
|
|
289
|
+
updatedAt: new Date().toISOString(),
|
|
290
|
+
};
|
|
291
|
+
await this.saveConversationState(updatedState);
|
|
292
|
+
logger.debug('Conversation state reset', { conversationId });
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Close file storage (no-op for file-based storage)
|
|
296
|
+
*/
|
|
297
|
+
async close() {
|
|
298
|
+
logger.debug('FileStorage closed');
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=file-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class GitManager {
|
|
2
|
+
/**
|
|
3
|
+
* Check if a directory is a git repository
|
|
4
|
+
*/
|
|
5
|
+
static isGitRepository(projectPath: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Get the current git branch for a project
|
|
8
|
+
*/
|
|
9
|
+
static getCurrentBranch(projectPath: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Get the current HEAD commit hash (for tracking start of development)
|
|
12
|
+
*/
|
|
13
|
+
static getCurrentCommitHash(projectPath: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Create a commit with the given message
|
|
16
|
+
*/
|
|
17
|
+
static createCommit(message: string, projectPath: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if there are uncommitted changes
|
|
20
|
+
*/
|
|
21
|
+
static hasUncommittedChanges(projectPath: string): boolean;
|
|
22
|
+
}
|