@zeyue0329/xiaoma-cli 1.0.49 → 6.0.0-alpha.14
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 +0 -2
- package/custom/src/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/custom/src/agents/commit-poet/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +160 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/custom/src/agents/toolsmith/toolsmith.agent.yaml +108 -0
- package/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
- package/docs/agent-customization-guide.md +208 -0
- package/docs/custom-agent-installation.md +183 -0
- package/docs/document-sharding-guide.md +449 -0
- package/docs/ide-info/auggie.md +31 -0
- package/docs/ide-info/claude-code.md +25 -0
- package/docs/ide-info/cline.md +31 -0
- package/docs/ide-info/codex.md +21 -0
- package/docs/ide-info/crush.md +30 -0
- package/docs/ide-info/cursor.md +25 -0
- package/docs/ide-info/gemini.md +25 -0
- package/docs/ide-info/github-copilot.md +26 -0
- package/docs/ide-info/iflow.md +33 -0
- package/docs/ide-info/kilo.md +24 -0
- package/docs/ide-info/opencode.md +24 -0
- package/docs/ide-info/qwen.md +25 -0
- package/docs/ide-info/roo.md +27 -0
- package/docs/ide-info/rovo-dev.md +388 -0
- package/docs/ide-info/trae.md +25 -0
- package/docs/ide-info/windsurf.md +22 -0
- package/docs/index.md +144 -0
- package/docs/installers-bundlers/ide-injections.md +186 -0
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +379 -0
- package/docs/rag/rag.md +812 -0
- package/docs/v4-to-v6-upgrade.md +220 -0
- package/docs/v6-open-items.md +17 -0
- package/docs/web-bundles-gemini-gpt-guide.md +468 -0
- package/eslint.config.mjs +133 -0
- package/package.json +41 -51
- package/prettier.config.mjs +32 -0
- package/src/core/_module-installer/install-config.yaml +29 -0
- package/src/core/_module-installer/installer.js +60 -0
- package/src/core/agents/xiaoma-master.agent.yaml +39 -0
- package/src/core/agents/xiaoma-web-orchestrator.agent.xml +113 -0
- package/src/core/resources/excalidraw/README.md +160 -0
- package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/src/core/resources/excalidraw/library-loader.md +50 -0
- package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -0
- package/src/core/tasks/advanced-elicitation.xml +116 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/validate-workflow.xml +89 -0
- package/src/core/tasks/workflow.xml +235 -0
- package/src/core/tools/shard-doc.xml +109 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
- package/src/core/workflows/brainstorming/template.md +15 -0
- package/src/core/workflows/brainstorming/workflow.md +51 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +203 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -0
- package/src/core/workflows/party-mode/workflow.md +207 -0
- package/src/modules/cis/_module-installer/install-config.yaml +16 -0
- package/src/modules/cis/_module-installer/installer.js +92 -0
- package/src/modules/cis/agents/README.md +104 -0
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +29 -0
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +29 -0
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +29 -0
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +29 -0
- package/src/modules/cis/agents/presentation-master.agent.yaml +61 -0
- package/src/modules/cis/agents/storyteller.agent.yaml +29 -0
- package/src/modules/cis/readme.md +153 -0
- package/src/modules/cis/teams/creative-squad.yaml +7 -0
- package/src/modules/cis/teams/default-party.csv +12 -0
- package/src/modules/cis/workflows/README.md +139 -0
- package/src/modules/cis/workflows/design-thinking/README.md +56 -0
- package/src/modules/cis/workflows/design-thinking/design-methods.csv +31 -0
- package/src/modules/cis/workflows/design-thinking/instructions.md +202 -0
- package/src/modules/cis/workflows/design-thinking/template.md +111 -0
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +38 -0
- package/src/modules/cis/workflows/innovation-strategy/README.md +56 -0
- package/src/modules/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +276 -0
- package/src/modules/cis/workflows/innovation-strategy/template.md +189 -0
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +38 -0
- package/src/modules/cis/workflows/problem-solving/README.md +56 -0
- package/src/modules/cis/workflows/problem-solving/instructions.md +252 -0
- package/src/modules/cis/workflows/problem-solving/solving-methods.csv +31 -0
- package/src/modules/cis/workflows/problem-solving/template.md +165 -0
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +38 -0
- package/src/modules/cis/workflows/storytelling/README.md +58 -0
- package/src/modules/cis/workflows/storytelling/instructions.md +293 -0
- package/src/modules/cis/workflows/storytelling/story-types.csv +26 -0
- package/src/modules/cis/workflows/storytelling/template.md +113 -0
- package/src/modules/cis/workflows/storytelling/workflow.yaml +38 -0
- package/src/modules/xmb/README.md +261 -0
- package/src/modules/xmb/_module-installer/install-config.yaml +28 -0
- package/src/modules/xmb/agents/xiaoma-builder.agent.yaml +71 -0
- package/src/modules/xmb/docs/agents/agent-compilation.md +340 -0
- package/src/modules/xmb/docs/agents/agent-menu-patterns.md +524 -0
- package/src/modules/xmb/docs/agents/expert-agent-architecture.md +364 -0
- package/src/modules/xmb/docs/agents/index.md +55 -0
- package/src/modules/xmb/docs/agents/kb.csv +0 -0
- package/src/modules/xmb/docs/agents/module-agent-architecture.md +367 -0
- package/src/modules/xmb/docs/agents/simple-agent-architecture.md +288 -0
- package/src/modules/xmb/docs/agents/understanding-agent-types.md +184 -0
- package/src/modules/xmb/docs/workflows/architecture.md +220 -0
- package/src/modules/xmb/docs/workflows/common-workflow-tools.csv +19 -0
- package/src/modules/xmb/docs/workflows/csv-data-file-standards.md +206 -0
- package/src/modules/xmb/docs/workflows/index.md +45 -0
- package/src/modules/xmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
- package/src/modules/xmb/docs/workflows/kb.csv +0 -0
- package/src/modules/xmb/docs/workflows/step-template.md +283 -0
- package/src/modules/xmb/docs/workflows/terms.md +97 -0
- package/src/modules/xmb/docs/workflows/workflow-template.md +152 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/xmb/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/xmb/reference/agents/module-examples/README.md +50 -0
- package/src/modules/xmb/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/xmb/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/xmb/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/xmb/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/xmb/reference/readme.md +3 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/xmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/xmb/workflows/create-agent/data/agent-validation-checklist.md +174 -0
- package/src/modules/xmb/workflows/create-agent/data/brainstorm-context.md +153 -0
- package/src/modules/xmb/workflows/create-agent/data/communication-presets.csv +61 -0
- package/src/modules/xmb/workflows/create-agent/data/info-and-installation-guide.md +17 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/README.md +3 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/xmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/xmb/workflows/create-agent/data/validation-complete.md +305 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-02-discover.md +210 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-03-persona.md +260 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-04-commands.md +237 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-05-name.md +231 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-06-build.md +224 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-07-validate.md +234 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-08-setup.md +179 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-09-customize.md +197 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
- package/src/modules/xmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
- package/src/modules/xmb/workflows/create-agent/templates/agent_commands.md +21 -0
- package/src/modules/xmb/workflows/create-agent/templates/agent_persona.md +25 -0
- package/src/modules/xmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
- package/src/modules/xmb/workflows/create-agent/workflow.md +91 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-01-init.md +168 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-02-gather.md +233 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-03-tools-overview.md +127 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-04-core-tools.md +145 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-05-memory-requirements.md +136 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-06-external-tools.md +154 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-07-installation-guidance.md +159 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-08-tools-summary.md +167 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-09-design.md +239 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-10-plan-review.md +215 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-11-build.md +262 -0
- package/src/modules/xmb/workflows/create-workflow/steps/step-12-review.md +270 -0
- package/src/modules/xmb/workflows/create-workflow/templates/build-summary.md +36 -0
- package/src/modules/xmb/workflows/create-workflow/templates/completion-section.md +39 -0
- package/src/modules/xmb/workflows/create-workflow/templates/content-template.md +21 -0
- package/src/modules/xmb/workflows/create-workflow/templates/design-section.md +53 -0
- package/src/modules/xmb/workflows/create-workflow/templates/project-info.md +18 -0
- package/src/modules/xmb/workflows/create-workflow/templates/requirements-section.md +47 -0
- package/src/modules/xmb/workflows/create-workflow/templates/review-section.md +56 -0
- package/src/modules/xmb/workflows/create-workflow/templates/step-file.md +139 -0
- package/src/modules/xmb/workflows/create-workflow/templates/workflow-plan.md +54 -0
- package/src/modules/xmb/workflows/create-workflow/templates/workflow.md +58 -0
- package/src/modules/xmb/workflows/create-workflow/workflow.md +58 -0
- package/src/modules/xmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
- package/src/modules/xmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
- package/src/modules/xmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
- package/src/modules/xmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
- package/src/modules/xmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
- package/src/modules/xmb/workflows/edit-agent/workflow.md +58 -0
- package/src/modules/xmb/workflows/edit-workflow/steps/step-01-analyze.md +221 -0
- package/src/modules/xmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
- package/src/modules/xmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
- package/src/modules/xmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
- package/src/modules/xmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
- package/src/modules/xmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
- package/src/modules/xmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
- package/src/modules/xmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
- package/src/modules/xmb/workflows/edit-workflow/templates/validation-results.md +51 -0
- package/src/modules/xmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
- package/src/modules/xmb/workflows/edit-workflow/workflow.md +58 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
- package/src/modules/xmb/workflows/workflow-compliance-check/workflow.md +58 -0
- package/src/modules/xmb/workflows-legacy/create-module/README.md +229 -0
- package/src/modules/xmb/workflows-legacy/create-module/brainstorm-context.md +137 -0
- package/src/modules/xmb/workflows-legacy/create-module/checklist.md +235 -0
- package/src/modules/xmb/workflows-legacy/create-module/installer-templates/install-config.yaml +92 -0
- package/src/modules/xmb/workflows-legacy/create-module/installer-templates/installer.js +231 -0
- package/src/modules/xmb/workflows-legacy/create-module/instructions.md +577 -0
- package/src/modules/xmb/workflows-legacy/create-module/module-structure.md +400 -0
- package/src/modules/xmb/workflows-legacy/create-module/workflow.yaml +52 -0
- package/src/modules/xmb/workflows-legacy/edit-module/README.md +187 -0
- package/src/modules/xmb/workflows-legacy/edit-module/checklist.md +165 -0
- package/src/modules/xmb/workflows-legacy/edit-module/instructions.md +341 -0
- package/src/modules/xmb/workflows-legacy/edit-module/workflow.yaml +34 -0
- package/src/modules/xmb/workflows-legacy/module-brief/README.md +264 -0
- package/src/modules/xmb/workflows-legacy/module-brief/checklist.md +116 -0
- package/src/modules/xmb/workflows-legacy/module-brief/instructions.md +268 -0
- package/src/modules/xmb/workflows-legacy/module-brief/template.md +275 -0
- package/src/modules/xmb/workflows-legacy/module-brief/workflow.yaml +36 -0
- package/src/modules/xmc/README.md +128 -0
- package/src/modules/xmc/_module-installer/install-config.yaml +53 -0
- package/src/modules/xmc/_module-installer/installer.js +131 -0
- package/src/modules/xmc/_module-installer/platform-specifics/claude-code.js +35 -0
- package/src/modules/xmc/_module-installer/platform-specifics/windsurf.js +32 -0
- package/src/modules/xmc/agents/analyst.agent.yaml +49 -0
- package/src/modules/xmc/agents/architect.agent.yaml +52 -0
- package/src/modules/xmc/agents/auto-iteration-orchestrator.agent.yaml +115 -0
- package/src/modules/xmc/agents/dev.agent.yaml +44 -0
- package/src/modules/xmc/agents/pm.agent.yaml +50 -0
- package/src/modules/xmc/agents/quick-flow-solo-dev.agent.yaml +36 -0
- package/src/modules/xmc/agents/sm.agent.yaml +55 -0
- package/src/modules/xmc/agents/tea.agent.yaml +70 -0
- package/src/modules/xmc/agents/tech-writer.agent.yaml +67 -0
- package/src/modules/xmc/agents/ux-designer.agent.yaml +45 -0
- package/src/modules/xmc/data/README.md +29 -0
- package/src/modules/xmc/data/documentation-standards.md +262 -0
- package/src/modules/xmc/data/project-context-template.md +40 -0
- package/src/modules/xmc/docs/README.md +252 -0
- package/src/modules/xmc/docs/agents-guide.md +952 -0
- package/src/modules/xmc/docs/brownfield-guide.md +750 -0
- package/src/modules/xmc/docs/enterprise-agentic-development.md +686 -0
- package/src/modules/xmc/docs/faq.md +561 -0
- package/src/modules/xmc/docs/glossary.md +303 -0
- package/src/modules/xmc/docs/images/workflow-method-greenfield.excalidraw +5174 -0
- package/src/modules/xmc/docs/images/workflow-method-greenfield.svg +2 -0
- package/src/modules/xmc/docs/iteration-development-guide.md +752 -0
- package/src/modules/xmc/docs/party-mode.md +224 -0
- package/src/modules/xmc/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/xmc/docs/quick-start.md +367 -0
- package/src/modules/xmc/docs/scale-adaptive-system.md +618 -0
- package/src/modules/xmc/docs/test-architecture.md +462 -0
- package/src/modules/xmc/docs/workflow-architecture-reference.md +366 -0
- package/src/modules/xmc/docs/workflow-document-project-reference.md +489 -0
- package/src/modules/xmc/docs/workflows-analysis.md +266 -0
- package/src/modules/xmc/docs/workflows-implementation.md +171 -0
- package/src/modules/xmc/docs/workflows-planning.md +451 -0
- package/src/modules/xmc/docs/workflows-solutioning.md +509 -0
- package/src/modules/xmc/docs/xiaoma-quick-flow.md +528 -0
- package/src/modules/xmc/sub-modules/claude-code/config.yaml +5 -0
- package/src/modules/xmc/sub-modules/claude-code/injections.yaml +242 -0
- package/src/modules/xmc/sub-modules/claude-code/readme.md +87 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-analysis/api-documenter.md +102 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-analysis/codebase-analyzer.md +82 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-analysis/data-analyst.md +101 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-analysis/pattern-detector.md +84 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/dependency-mapper.md +83 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/epic-optimizer.md +81 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/requirements-analyst.md +61 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/technical-decisions-curator.md +168 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/trend-spotter.md +115 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/user-journey-mapper.md +123 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-planning/user-researcher.md +72 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-research/market-researcher.md +51 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-research/tech-debt-auditor.md +106 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-review/document-reviewer.md +102 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-review/technical-evaluator.md +68 -0
- package/src/modules/xmc/sub-modules/claude-code/sub-agents/bmad-review/test-coverage-analyzer.md +108 -0
- package/src/modules/xmc/teams/default-party.csv +21 -0
- package/src/modules/xmc/teams/team-fullstack.yaml +12 -0
- package/src/modules/xmc/testarch/knowledge/api-request.md +303 -0
- package/src/modules/xmc/testarch/knowledge/auth-session.md +356 -0
- package/src/modules/xmc/testarch/knowledge/burn-in.md +273 -0
- package/src/modules/xmc/testarch/knowledge/ci-burn-in.md +675 -0
- package/src/modules/xmc/testarch/knowledge/component-tdd.md +486 -0
- package/src/modules/xmc/testarch/knowledge/contract-testing.md +957 -0
- package/src/modules/xmc/testarch/knowledge/data-factories.md +500 -0
- package/src/modules/xmc/testarch/knowledge/email-auth.md +721 -0
- package/src/modules/xmc/testarch/knowledge/error-handling.md +725 -0
- package/src/modules/xmc/testarch/knowledge/feature-flags.md +750 -0
- package/src/modules/xmc/testarch/knowledge/file-utils.md +260 -0
- package/src/modules/xmc/testarch/knowledge/fixture-architecture.md +401 -0
- package/src/modules/xmc/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/modules/xmc/testarch/knowledge/intercept-network-call.md +280 -0
- package/src/modules/xmc/testarch/knowledge/log.md +294 -0
- package/src/modules/xmc/testarch/knowledge/network-error-monitor.md +272 -0
- package/src/modules/xmc/testarch/knowledge/network-first.md +486 -0
- package/src/modules/xmc/testarch/knowledge/network-recorder.md +265 -0
- package/src/modules/xmc/testarch/knowledge/nfr-criteria.md +670 -0
- package/src/modules/xmc/testarch/knowledge/overview.md +284 -0
- package/src/modules/xmc/testarch/knowledge/playwright-config.md +730 -0
- package/src/modules/xmc/testarch/knowledge/probability-impact.md +601 -0
- package/src/modules/xmc/testarch/knowledge/recurse.md +296 -0
- package/src/modules/xmc/testarch/knowledge/risk-governance.md +615 -0
- package/src/modules/xmc/testarch/knowledge/selective-testing.md +732 -0
- package/src/modules/xmc/testarch/knowledge/selector-resilience.md +527 -0
- package/src/modules/xmc/testarch/knowledge/test-healing-patterns.md +644 -0
- package/src/modules/xmc/testarch/knowledge/test-levels-framework.md +473 -0
- package/src/modules/xmc/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/src/modules/xmc/testarch/knowledge/test-quality.md +664 -0
- package/src/modules/xmc/testarch/knowledge/timing-debugging.md +372 -0
- package/src/modules/xmc/testarch/knowledge/visual-debugging.md +524 -0
- package/src/modules/xmc/testarch/tea-index.csv +33 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
- package/src/modules/xmc/workflows/1-analysis/product-brief/workflow.md +58 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
- package/src/modules/xmc/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +235 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +198 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +247 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +257 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +175 -0
- package/src/modules/xmc/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/modules/xmc/workflows/1-analysis/research/research.template.md +16 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +237 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +246 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +200 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +237 -0
- package/src/modules/xmc/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/modules/xmc/workflows/1-analysis/research/workflow.md +198 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/modules/xmc/workflows/2-plan-workflows/create-ux-design/workflow.md +53 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/domain-complexity.csv +13 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/prd-template.md +9 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/project-types.csv +11 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-01-init.md +161 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +123 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +275 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-03-success.md +271 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +272 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-05-domain.md +249 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +240 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +236 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +280 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-09-functional.md +251 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +275 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/steps/step-11-complete.md +210 -0
- package/src/modules/xmc/workflows/2-plan-workflows/prd/workflow.md +61 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
- package/src/modules/xmc/workflows/3-solutioning/architecture/workflow.md +48 -0
- package/src/modules/xmc/workflows/3-solutioning/create-epics-and-stories/epics-template.md +80 -0
- package/src/modules/xmc/workflows/3-solutioning/create-epics-and-stories/instructions.md +387 -0
- package/src/modules/xmc/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +53 -0
- package/src/modules/xmc/workflows/3-solutioning/implementation-readiness/checklist.md +169 -0
- package/src/modules/xmc/workflows/3-solutioning/implementation-readiness/instructions.md +332 -0
- package/src/modules/xmc/workflows/3-solutioning/implementation-readiness/template.md +146 -0
- package/src/modules/xmc/workflows/3-solutioning/implementation-readiness/workflow.yaml +64 -0
- package/src/modules/xmc/workflows/4-implementation/code-review/instructions.xml +176 -0
- package/src/modules/xmc/workflows/4-implementation/code-review/workflow.yaml +54 -0
- package/src/modules/xmc/workflows/4-implementation/correct-course/checklist.md +279 -0
- package/src/modules/xmc/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/src/modules/xmc/workflows/4-implementation/correct-course/workflow.yaml +58 -0
- package/src/modules/xmc/workflows/4-implementation/create-story/checklist.md +358 -0
- package/src/modules/xmc/workflows/4-implementation/create-story/instructions.xml +354 -0
- package/src/modules/xmc/workflows/4-implementation/create-story/template.md +51 -0
- package/src/modules/xmc/workflows/4-implementation/create-story/workflow.yaml +60 -0
- package/src/modules/xmc/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/modules/xmc/workflows/4-implementation/dev-story/instructions.xml +406 -0
- package/src/modules/xmc/workflows/4-implementation/dev-story/workflow.yaml +27 -0
- package/src/modules/xmc/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/src/modules/xmc/workflows/4-implementation/retrospective/workflow.yaml +57 -0
- package/src/modules/xmc/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/modules/xmc/workflows/4-implementation/sprint-planning/instructions.md +232 -0
- package/src/modules/xmc/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +56 -0
- package/src/modules/xmc/workflows/4-implementation/sprint-planning/workflow.yaml +53 -0
- package/src/modules/xmc/workflows/auto-iteration/full-auto-workflow.md +692 -0
- package/src/modules/xmc/workflows/auto-iteration/knowledge-base/kb-call-points.md +595 -0
- package/src/modules/xmc/workflows/auto-iteration/knowledge-base/kb-interface.md +347 -0
- package/src/modules/xmc/workflows/auto-iteration/knowledge-base/kb-query.md +368 -0
- package/src/modules/xmc/workflows/auto-iteration/knowledge-base/kb-setup.md +343 -0
- package/src/modules/xmc/workflows/auto-iteration/phases/phase-1-analyze.md +406 -0
- package/src/modules/xmc/workflows/auto-iteration/phases/phase-2-plan.md +574 -0
- package/src/modules/xmc/workflows/auto-iteration/phases/phase-3-design.md +628 -0
- package/src/modules/xmc/workflows/auto-iteration/phases/phase-4-develop.md +622 -0
- package/src/modules/xmc/workflows/auto-iteration/phases/phase-5-test.md +538 -0
- package/src/modules/xmc/workflows/auto-iteration/resume.md +254 -0
- package/src/modules/xmc/workflows/auto-iteration/status.md +194 -0
- package/src/modules/xmc/workflows/auto-iteration/templates/auto-iteration-status.template.yaml +142 -0
- package/src/modules/xmc/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
- package/src/modules/xmc/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
- package/src/modules/xmc/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
- package/src/modules/xmc/workflows/bmad-quick-flow/quick-dev/instructions.md +105 -0
- package/src/modules/xmc/workflows/bmad-quick-flow/quick-dev/workflow.yaml +29 -0
- package/src/modules/xmc/workflows/diagrams/_shared/excalidraw-library.json +90 -0
- package/src/modules/xmc/workflows/diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/src/modules/xmc/workflows/diagrams/create-dataflow/checklist.md +39 -0
- package/src/modules/xmc/workflows/diagrams/create-dataflow/instructions.md +130 -0
- package/src/modules/xmc/workflows/diagrams/create-dataflow/workflow.yaml +27 -0
- package/src/modules/xmc/workflows/diagrams/create-diagram/checklist.md +43 -0
- package/src/modules/xmc/workflows/diagrams/create-diagram/instructions.md +141 -0
- package/src/modules/xmc/workflows/diagrams/create-diagram/workflow.yaml +27 -0
- package/src/modules/xmc/workflows/diagrams/create-flowchart/checklist.md +49 -0
- package/src/modules/xmc/workflows/diagrams/create-flowchart/instructions.md +241 -0
- package/src/modules/xmc/workflows/diagrams/create-flowchart/workflow.yaml +27 -0
- package/src/modules/xmc/workflows/diagrams/create-wireframe/checklist.md +38 -0
- package/src/modules/xmc/workflows/diagrams/create-wireframe/instructions.md +133 -0
- package/src/modules/xmc/workflows/diagrams/create-wireframe/workflow.yaml +27 -0
- package/src/modules/xmc/workflows/document-project/checklist.md +245 -0
- package/src/modules/xmc/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/modules/xmc/workflows/document-project/instructions.md +222 -0
- package/src/modules/xmc/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/modules/xmc/workflows/document-project/templates/index-template.md +169 -0
- package/src/modules/xmc/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/modules/xmc/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/modules/xmc/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/modules/xmc/workflows/document-project/workflow.yaml +31 -0
- package/src/modules/xmc/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/modules/xmc/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/modules/xmc/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/modules/xmc/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/modules/xmc/workflows/generate-project-context/project-context-template.md +20 -0
- package/src/modules/xmc/workflows/generate-project-context/steps/step-01-discover.md +193 -0
- package/src/modules/xmc/workflows/generate-project-context/steps/step-02-generate.md +317 -0
- package/src/modules/xmc/workflows/generate-project-context/steps/step-03-complete.md +277 -0
- package/src/modules/xmc/workflows/generate-project-context/workflow.md +48 -0
- package/src/modules/xmc/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/src/modules/xmc/workflows/testarch/atdd/checklist.md +373 -0
- package/src/modules/xmc/workflows/testarch/atdd/instructions.md +805 -0
- package/src/modules/xmc/workflows/testarch/atdd/workflow.yaml +47 -0
- package/src/modules/xmc/workflows/testarch/automate/checklist.md +580 -0
- package/src/modules/xmc/workflows/testarch/automate/instructions.md +1324 -0
- package/src/modules/xmc/workflows/testarch/automate/workflow.yaml +54 -0
- package/src/modules/xmc/workflows/testarch/ci/checklist.md +246 -0
- package/src/modules/xmc/workflows/testarch/ci/github-actions-template.yaml +165 -0
- package/src/modules/xmc/workflows/testarch/ci/gitlab-ci-template.yaml +128 -0
- package/src/modules/xmc/workflows/testarch/ci/instructions.md +534 -0
- package/src/modules/xmc/workflows/testarch/ci/workflow.yaml +47 -0
- package/src/modules/xmc/workflows/testarch/framework/checklist.md +321 -0
- package/src/modules/xmc/workflows/testarch/framework/instructions.md +481 -0
- package/src/modules/xmc/workflows/testarch/framework/workflow.yaml +49 -0
- package/src/modules/xmc/workflows/testarch/nfr-assess/checklist.md +405 -0
- package/src/modules/xmc/workflows/testarch/nfr-assess/instructions.md +722 -0
- package/src/modules/xmc/workflows/testarch/nfr-assess/nfr-report-template.md +443 -0
- package/src/modules/xmc/workflows/testarch/nfr-assess/workflow.yaml +49 -0
- package/src/modules/xmc/workflows/testarch/test-design/checklist.md +234 -0
- package/src/modules/xmc/workflows/testarch/test-design/instructions.md +788 -0
- package/src/modules/xmc/workflows/testarch/test-design/test-design-template.md +285 -0
- package/src/modules/xmc/workflows/testarch/test-design/workflow.yaml +50 -0
- package/src/modules/xmc/workflows/testarch/test-review/checklist.md +470 -0
- package/src/modules/xmc/workflows/testarch/test-review/instructions.md +628 -0
- package/src/modules/xmc/workflows/testarch/test-review/test-review-template.md +388 -0
- package/src/modules/xmc/workflows/testarch/test-review/workflow.yaml +48 -0
- package/src/modules/xmc/workflows/testarch/trace/checklist.md +654 -0
- package/src/modules/xmc/workflows/testarch/trace/instructions.md +1045 -0
- package/src/modules/xmc/workflows/testarch/trace/trace-template.md +673 -0
- package/src/modules/xmc/workflows/testarch/trace/workflow.yaml +57 -0
- package/src/modules/xmc/workflows/workflow-status/init/instructions.md +331 -0
- package/src/modules/xmc/workflows/workflow-status/init/workflow.yaml +29 -0
- package/src/modules/xmc/workflows/workflow-status/instructions.md +395 -0
- package/src/modules/xmc/workflows/workflow-status/paths/enterprise-brownfield.yaml +127 -0
- package/src/modules/xmc/workflows/workflow-status/paths/enterprise-greenfield.yaml +115 -0
- package/src/modules/xmc/workflows/workflow-status/paths/method-brownfield.yaml +111 -0
- package/src/modules/xmc/workflows/workflow-status/paths/method-greenfield.yaml +102 -0
- package/src/modules/xmc/workflows/workflow-status/project-levels.yaml +59 -0
- package/src/modules/xmc/workflows/workflow-status/workflow-status-template.yaml +24 -0
- package/src/modules/xmc/workflows/workflow-status/workflow.yaml +30 -0
- package/src/utility/models/action-command-header.md +0 -0
- package/src/utility/models/agent-activation-ide.xml +51 -0
- package/src/utility/models/agent-activation-web.xml +50 -0
- package/src/utility/models/agent-command-header.md +1 -0
- package/src/utility/models/agent-config-template.md +23 -0
- package/src/utility/models/agent-in-team-activation.xml +3 -0
- package/src/utility/models/fragments/activation-rules.xml +7 -0
- package/src/utility/models/fragments/activation-steps.xml +16 -0
- package/src/utility/models/fragments/handler-action.xml +4 -0
- package/src/utility/models/fragments/handler-data.xml +5 -0
- package/src/utility/models/fragments/handler-exec.xml +6 -0
- package/src/utility/models/fragments/handler-multi.xml +14 -0
- package/src/utility/models/fragments/handler-tmpl.xml +5 -0
- package/src/utility/models/fragments/handler-validate-workflow.xml +7 -0
- package/src/utility/models/fragments/handler-workflow.xml +9 -0
- package/src/utility/models/fragments/menu-handlers.xml +6 -0
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +32 -0
- package/src/utility/templates/agent.customize.template.yaml +42 -0
- package/test/README.md +295 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +21 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/core-agent-with-module.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/metadata/module-agent-missing-module.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/wrong-module-value.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +26 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +37 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +33 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +21 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +29 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +23 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/test-installation-components.js +214 -0
- package/test/unit-test-schema.js +133 -0
- package/tools/cli/README.md +609 -0
- package/tools/cli/bundlers/bundle-web.js +179 -0
- package/tools/cli/bundlers/test-analyst.js +28 -0
- package/tools/cli/bundlers/test-bundler.js +119 -0
- package/tools/cli/bundlers/web-bundler.js +1764 -0
- package/tools/cli/commands/agent-install.js +409 -0
- package/tools/cli/commands/build.js +458 -0
- package/tools/cli/commands/cleanup.js +141 -0
- package/tools/cli/commands/install.js +124 -0
- package/tools/cli/commands/list.js +28 -0
- package/tools/cli/commands/status.js +47 -0
- package/tools/cli/commands/uninstall.js +44 -0
- package/tools/cli/commands/update.js +28 -0
- package/tools/cli/installers/lib/core/config-collector.js +876 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +725 -0
- package/tools/cli/installers/lib/core/detector.js +329 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +154 -0
- package/tools/cli/installers/lib/core/installer.js +2956 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +692 -0
- package/tools/cli/installers/lib/core/manifest.js +540 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +651 -0
- package/tools/cli/installers/lib/ide/antigravity.js +510 -0
- package/tools/cli/installers/lib/ide/auggie.js +232 -0
- package/tools/cli/installers/lib/ide/claude-code.js +512 -0
- package/tools/cli/installers/lib/ide/cline.js +269 -0
- package/tools/cli/installers/lib/ide/codex.js +388 -0
- package/tools/cli/installers/lib/ide/crush.js +287 -0
- package/tools/cli/installers/lib/ide/cursor.js +400 -0
- package/tools/cli/installers/lib/ide/gemini.js +253 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +387 -0
- package/tools/cli/installers/lib/ide/iflow.js +172 -0
- package/tools/cli/installers/lib/ide/kilo.js +249 -0
- package/tools/cli/installers/lib/ide/manager.js +245 -0
- package/tools/cli/installers/lib/ide/opencode.js +257 -0
- package/tools/cli/installers/lib/ide/qwen.js +372 -0
- package/tools/cli/installers/lib/ide/roo.js +324 -0
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +90 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +133 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +119 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +237 -0
- package/tools/cli/installers/lib/ide/shared/xiaoma-artifacts.js +143 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +12 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
- package/tools/cli/installers/lib/ide/trae.js +313 -0
- package/tools/cli/installers/lib/ide/windsurf.js +258 -0
- package/tools/cli/installers/lib/modules/manager.js +751 -0
- package/tools/cli/lib/activation-builder.js +168 -0
- package/tools/cli/lib/agent/compiler.js +524 -0
- package/tools/cli/lib/agent/installer.js +735 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +109 -0
- package/tools/cli/lib/agent-party-generator.js +206 -0
- package/tools/cli/lib/cli-utils.js +210 -0
- package/tools/cli/lib/config.js +212 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +71 -0
- package/tools/cli/lib/replace-project-root.js +239 -0
- package/tools/cli/lib/ui.js +769 -0
- package/tools/cli/lib/xml-handler.js +229 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/{yaml-format.js → cli/lib/yaml-format.js} +36 -66
- package/tools/cli/lib/yaml-xml-builder.js +606 -0
- package/tools/cli/regenerate-manifests.js +28 -0
- package/tools/cli/test-yaml-builder.js +43 -0
- package/tools/cli/xiaoma-cli.js +40 -0
- package/tools/flattener/aggregate.js +12 -30
- package/tools/flattener/binary.js +43 -46
- package/tools/flattener/discovery.js +15 -23
- package/tools/flattener/files.js +6 -6
- package/tools/flattener/ignoreRules.js +122 -127
- package/tools/flattener/main.js +140 -330
- package/tools/flattener/projectRoot.js +71 -81
- package/tools/flattener/prompts.js +10 -12
- package/tools/flattener/stats.helpers.js +63 -119
- package/tools/flattener/stats.js +2 -7
- package/tools/flattener/test-matrix.js +169 -228
- package/tools/flattener/xml.js +23 -31
- package/tools/format-workflow-md.js +263 -0
- package/tools/platform-codes.yaml +145 -0
- package/tools/schema/agent.js +389 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-bundles.js +87 -0
- package/tools/xiaoma-npx-wrapper.js +18 -24
- package/.claude/agents/tech-translator.md +0 -124
- package/.claude/settings.local.json +0 -37
- package/.idea/XiaoMa-Cli.iml +0 -9
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -6
- package/.idea/vcs.xml +0 -7
- package/.idea/workspace.xml +0 -117
- package/.xiaoma-core/.coordinator-state.json +0 -19
- package/CLAUDE.md +0 -283
- package/JAVA-BACKEND-COMMANDS-REFERENCE.md +0 -300
- package/JAVA-BACKEND-ITERATION-GUIDE.md +0 -2116
- package/common/tasks/create-doc.md +0 -103
- package/common/tasks/execute-checklist.md +0 -88
- package/common/utils/bmad-doc-template.md +0 -327
- package/common/utils/workflow-management.md +0 -71
- package/dist/agents/analyst.txt +0 -6308
- package/dist/agents/architect.txt +0 -5046
- package/dist/agents/automation-orchestrator.txt +0 -396
- package/dist/agents/dev.txt +0 -1180
- package/dist/agents/full-requirement-orchestrator.txt +0 -505
- package/dist/agents/pm.txt +0 -3078
- package/dist/agents/po.txt +0 -1358
- package/dist/agents/qa.txt +0 -2002
- package/dist/agents/sm.txt +0 -3044
- package/dist/agents/ux-expert.txt +0 -707
- package/dist/agents/workflow-executor.txt +0 -1029
- package/dist/agents/workflow-helper.txt +0 -93
- package/dist/agents/xiaoma-master.txt +0 -9008
- package/dist/agents/xiaoma-orchestrator.txt +0 -1523
- package/dist/teams/team-all.txt +0 -23101
- package/dist/teams/team-fullstack-with-database.txt +0 -25076
- package/dist/teams/team-fullstack.txt +0 -15820
- package/dist/teams/team-ide-minimal.txt +0 -8285
- package/dist/teams/team-no-ui.txt +0 -14368
- package/docs/GUIDING-PRINCIPLES.md +0 -91
- package/docs/architecture/workflow-coordinator-implementation.md +0 -1188
- package/docs/architecture-sharding-modification.md +0 -623
- package/docs/automated-requirements-analysis-outputs.md +0 -896
- package/docs/core-architecture.md +0 -219
- package/docs/enhanced-ide-development-workflow.md +0 -248
- package/docs/prd/workflow-coordinator-prd.md +0 -1214
- package/docs/user-guide.md +0 -530
- package/docs/versioning-and-releases.md +0 -155
- package/docs/versions.md +0 -48
- package/docs/working-in-the-brownfield.md +0 -597
- package/tools/api-server.js +0 -367
- package/tools/builders/web-builder.js +0 -830
- package/tools/bump-all-versions.js +0 -133
- package/tools/cli.js +0 -157
- package/tools/installer/README.md +0 -8
- package/tools/installer/bin/xiaoma.js +0 -477
- package/tools/installer/config/ide-agent-config.yaml +0 -58
- package/tools/installer/config/install.config.yaml +0 -164
- package/tools/installer/lib/config-loader.js +0 -286
- package/tools/installer/lib/file-manager.js +0 -446
- package/tools/installer/lib/ide-base-setup.js +0 -238
- package/tools/installer/lib/ide-setup.js +0 -2027
- package/tools/installer/lib/installer.js +0 -2333
- package/tools/installer/lib/memory-profiler.js +0 -235
- package/tools/installer/lib/module-manager.js +0 -116
- package/tools/installer/lib/resource-locator.js +0 -334
- package/tools/installer/package-lock.json +0 -715
- package/tools/installer/package.json +0 -44
- package/tools/lib/dependency-resolver.js +0 -186
- package/tools/lib/yaml-utils.js +0 -34
- package/tools/md-assets/web-agent-startup-instructions.md +0 -39
- package/tools/preview-release-notes.js +0 -74
- package/tools/setup-hooks.sh +0 -37
- package/tools/shared/bannerArt.js +0 -105
- package/tools/sync-installer-version.js +0 -41
- package/tools/sync-version.sh +0 -23
- package/tools/upgraders/v3-to-v4-upgrader.js +0 -753
- package/tools/version-bump.js +0 -100
- package/tools/workflow-coordinator/README.md +0 -38
- package/tools/workflow-coordinator/USAGE.md +0 -548
- package/tools/workflow-coordinator/package-lock.json +0 -4868
- package/tools/workflow-coordinator/package.json +0 -35
- package/tools/workflow-coordinator/src/api/server.js +0 -207
- package/tools/workflow-coordinator/src/controller/workflow-controller.js +0 -263
- package/tools/workflow-coordinator/src/index.js +0 -113
- package/tools/workflow-coordinator/src/parser/workflow-parser.js +0 -144
- package/tools/workflow-coordinator/src/utils/state-manager.js +0 -59
- package/tools/workflow-coordinator/src/utils/validator.js +0 -86
- package/tools/workflow-coordinator/test/integration-test.js +0 -266
- package/tools/workflow-coordinator/test/quick-test.js +0 -127
- package/xiaoma-core/agent-teams/team-all.yaml +0 -15
- package/xiaoma-core/agent-teams/team-fullstack-with-database.yaml +0 -27
- package/xiaoma-core/agent-teams/team-fullstack.yaml +0 -19
- package/xiaoma-core/agent-teams/team-ide-minimal.yaml +0 -11
- package/xiaoma-core/agent-teams/team-no-ui.yaml +0 -14
- package/xiaoma-core/agents/analyst.md +0 -91
- package/xiaoma-core/agents/architect.md +0 -88
- package/xiaoma-core/agents/automated-fix-validator.yaml +0 -579
- package/xiaoma-core/agents/automated-quality-validator.yaml +0 -549
- package/xiaoma-core/agents/automation-orchestrator.md +0 -353
- package/xiaoma-core/agents/dev.md +0 -144
- package/xiaoma-core/agents/enhanced-workflow-orchestrator.yaml +0 -304
- package/xiaoma-core/agents/full-requirement-orchestrator.md +0 -462
- package/xiaoma-core/agents/global-requirements-auditor.yaml +0 -520
- package/xiaoma-core/agents/intelligent-template-adapter.yaml +0 -389
- package/xiaoma-core/agents/issue-dispatcher.yaml +0 -627
- package/xiaoma-core/agents/master-execution-engine.yaml +0 -543
- package/xiaoma-core/agents/pm.md +0 -85
- package/xiaoma-core/agents/po.md +0 -77
- package/xiaoma-core/agents/qa.md +0 -88
- package/xiaoma-core/agents/requirements-coverage-auditor.yaml +0 -373
- package/xiaoma-core/agents/sm.md +0 -125
- package/xiaoma-core/agents/ux-expert.md +0 -67
- package/xiaoma-core/agents/workflow-executor.md +0 -1031
- package/xiaoma-core/agents/workflow-helper.md +0 -481
- package/xiaoma-core/agents/xiaoma-master.md +0 -108
- package/xiaoma-core/agents/xiaoma-orchestrator.md +0 -145
- package/xiaoma-core/checklists/architect-checklist.md +0 -440
- package/xiaoma-core/checklists/change-checklist.md +0 -184
- package/xiaoma-core/checklists/dev-completion-checklist.md +0 -324
- package/xiaoma-core/checklists/pm-checklist.md +0 -372
- package/xiaoma-core/checklists/po-master-checklist.md +0 -434
- package/xiaoma-core/checklists/po-story-validation-checklist.md +0 -219
- package/xiaoma-core/checklists/qa-approval-checklist.md +0 -393
- package/xiaoma-core/checklists/story-dod-checklist.md +0 -96
- package/xiaoma-core/checklists/story-draft-checklist.md +0 -155
- package/xiaoma-core/core-config.yaml +0 -23
- package/xiaoma-core/data/bmad-kb.md +0 -809
- package/xiaoma-core/data/brainstorming-techniques.md +0 -38
- package/xiaoma-core/data/elicitation-methods.md +0 -156
- package/xiaoma-core/data/technical-preferences.md +0 -5
- package/xiaoma-core/data/test-levels-framework.md +0 -148
- package/xiaoma-core/data/test-priorities-matrix.md +0 -174
- package/xiaoma-core/scripts/build-validation/pre-dev-validation.sh +0 -71
- package/xiaoma-core/scripts/build-validation/progressive-validation.sh +0 -88
- package/xiaoma-core/scripts/build-validation/quick-check.sh +0 -69
- package/xiaoma-core/tasks/advanced-elicitation.md +0 -119
- package/xiaoma-core/tasks/analyze-existing-database.md +0 -155
- package/xiaoma-core/tasks/apply-qa-fixes.md +0 -150
- package/xiaoma-core/tasks/automated-story-cycle.md +0 -370
- package/xiaoma-core/tasks/batch-story-generation.md +0 -354
- package/xiaoma-core/tasks/brownfield-create-epic.md +0 -162
- package/xiaoma-core/tasks/brownfield-create-story.md +0 -149
- package/xiaoma-core/tasks/correct-course.md +0 -72
- package/xiaoma-core/tasks/create-brownfield-story.md +0 -314
- package/xiaoma-core/tasks/create-database-design.md +0 -161
- package/xiaoma-core/tasks/create-deep-research-prompt.md +0 -280
- package/xiaoma-core/tasks/create-enhanced-story-with-database.md +0 -250
- package/xiaoma-core/tasks/create-incremental-architecture.md +0 -525
- package/xiaoma-core/tasks/create-next-story.md +0 -114
- package/xiaoma-core/tasks/create-prd-from-rag.md +0 -435
- package/xiaoma-core/tasks/create-story-with-rag.md +0 -559
- package/xiaoma-core/tasks/develop-story-with-rag.md +0 -536
- package/xiaoma-core/tasks/document-project.md +0 -345
- package/xiaoma-core/tasks/facilitate-brainstorming-session.md +0 -138
- package/xiaoma-core/tasks/generate-ai-frontend-prompt.md +0 -53
- package/xiaoma-core/tasks/generate-database-ddl.md +0 -240
- package/xiaoma-core/tasks/generate-database-entities.md +0 -501
- package/xiaoma-core/tasks/generate-rag-questions.md +0 -312
- package/xiaoma-core/tasks/index-docs.md +0 -175
- package/xiaoma-core/tasks/kb-mode-interaction.md +0 -77
- package/xiaoma-core/tasks/nfr-assess.md +0 -345
- package/xiaoma-core/tasks/project-integration-testing.md +0 -477
- package/xiaoma-core/tasks/qa-gate.md +0 -163
- package/xiaoma-core/tasks/requirement-analysis-with-rag.md +0 -1318
- package/xiaoma-core/tasks/requirements-coverage-audit.md +0 -198
- package/xiaoma-core/tasks/review-story.md +0 -316
- package/xiaoma-core/tasks/risk-profile.md +0 -355
- package/xiaoma-core/tasks/serial-development-orchestration.md +0 -426
- package/xiaoma-core/tasks/shard-doc.md +0 -187
- package/xiaoma-core/tasks/test-design.md +0 -176
- package/xiaoma-core/tasks/trace-requirements.md +0 -266
- package/xiaoma-core/tasks/validate-next-story.md +0 -136
- package/xiaoma-core/templates/api-design-tmpl.yaml +0 -704
- package/xiaoma-core/templates/architecture-tmpl.yaml +0 -650
- package/xiaoma-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/xiaoma-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/xiaoma-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/xiaoma-core/templates/competitor-analysis-tmpl.yaml +0 -336
- package/xiaoma-core/templates/database-design-tmpl.yaml +0 -266
- package/xiaoma-core/templates/enhanced-story-with-database-tmpl.yaml +0 -428
- package/xiaoma-core/templates/front-end-architecture-tmpl.yaml +0 -272
- package/xiaoma-core/templates/front-end-spec-tmpl.yaml +0 -354
- package/xiaoma-core/templates/fullstack-architecture-tmpl.yaml +0 -925
- package/xiaoma-core/templates/global-qa-monitoring-tmpl.yaml +0 -443
- package/xiaoma-core/templates/incremental-architecture-tmpl.yaml +0 -601
- package/xiaoma-core/templates/market-research-tmpl.yaml +0 -252
- package/xiaoma-core/templates/maven-lombok-template.xml +0 -111
- package/xiaoma-core/templates/prd-from-rag-tmpl.yaml +0 -410
- package/xiaoma-core/templates/prd-tmpl.yaml +0 -202
- package/xiaoma-core/templates/project-brief-tmpl.yaml +0 -221
- package/xiaoma-core/templates/qa-gate-tmpl.yaml +0 -102
- package/xiaoma-core/templates/rag-knowledge-tmpl.yaml +0 -569
- package/xiaoma-core/templates/rag-questions-tmpl.yaml +0 -949
- package/xiaoma-core/templates/requirements-coverage-audit.yaml +0 -330
- package/xiaoma-core/templates/start-enhanced-workflow.yaml +0 -347
- package/xiaoma-core/templates/story-tmpl.yaml +0 -137
- package/xiaoma-core/templates/story-with-rag-tmpl.yaml +0 -360
- package/xiaoma-core/workflows/automated-requirements-analysis.yaml +0 -2149
- package/xiaoma-core/workflows/automated-requirements-development.yaml +0 -739
- package/xiaoma-core/workflows/automated-story-development.yaml +0 -1264
- package/xiaoma-core/workflows/brownfield-fullstack.yaml +0 -298
- package/xiaoma-core/workflows/brownfield-service.yaml +0 -188
- package/xiaoma-core/workflows/brownfield-ui.yaml +0 -198
- package/xiaoma-core/workflows/enhanced-fullstack-with-database.yaml +0 -427
- package/xiaoma-core/workflows/enhanced-fullstack-with-qa-loop.yaml +0 -766
- package/xiaoma-core/workflows/full-requirement-automation.yaml +0 -1305
- package/xiaoma-core/workflows/greenfield-fullstack.yaml +0 -241
- package/xiaoma-core/workflows/greenfield-service.yaml +0 -207
- package/xiaoma-core/workflows/greenfield-ui.yaml +0 -236
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: tools/cli/lib/ui.js
|
|
3
|
+
*
|
|
4
|
+
* XIAOMA Method - Business Model Agile Development Method
|
|
5
|
+
* Repository: https://github.com/paulpreibisch/XIAOMA-CLI
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 Paul Preibisch
|
|
8
|
+
* Licensed under the Apache License, Version 2.0
|
|
9
|
+
*
|
|
10
|
+
* ---
|
|
11
|
+
*
|
|
12
|
+
* @fileoverview Interactive installation prompts and user input collection for XIAOMA CLI
|
|
13
|
+
* @context Guides users through installation configuration including core settings, modules, IDEs, and optional AgentVibes TTS
|
|
14
|
+
* @architecture Facade pattern - presents unified installation flow, delegates to Detector/ConfigCollector/IdeManager for specifics
|
|
15
|
+
* @dependencies inquirer (prompts), chalk (formatting), detector.js (existing installation detection)
|
|
16
|
+
* @entrypoints Called by install.js command via ui.promptInstall(), returns complete configuration object
|
|
17
|
+
* @patterns Progressive disclosure (prompts in order), early IDE selection (Windows compat), AgentVibes auto-detection
|
|
18
|
+
* @related installer.js (consumes config), AgentVibes#34 (TTS integration), promptAgentVibes()
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const chalk = require('chalk');
|
|
22
|
+
const inquirer = require('inquirer');
|
|
23
|
+
const path = require('node:path');
|
|
24
|
+
const os = require('node:os');
|
|
25
|
+
const fs = require('fs-extra');
|
|
26
|
+
const { CLIUtils } = require('./cli-utils');
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* UI utilities for the installer
|
|
30
|
+
*/
|
|
31
|
+
class UI {
|
|
32
|
+
constructor() {}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Prompt for installation configuration
|
|
36
|
+
* @returns {Object} Installation configuration
|
|
37
|
+
*/
|
|
38
|
+
async promptInstall() {
|
|
39
|
+
CLIUtils.displayLogo();
|
|
40
|
+
CLIUtils.displaySection('XiaoMa™ Setup', 'AI-Driven Agile Development');
|
|
41
|
+
|
|
42
|
+
const confirmedDirectory = await this.getConfirmedDirectory();
|
|
43
|
+
|
|
44
|
+
// Preflight: Check for legacy XIAOMA v4 footprints immediately after getting directory
|
|
45
|
+
const { Detector } = require('../installers/lib/core/detector');
|
|
46
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
47
|
+
const detector = new Detector();
|
|
48
|
+
const installer = new Installer();
|
|
49
|
+
const legacyV4 = await detector.detectLegacyV4(confirmedDirectory);
|
|
50
|
+
if (legacyV4.hasLegacyV4) {
|
|
51
|
+
await installer.handleLegacyV4Migration(confirmedDirectory, legacyV4);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Check if there's an existing XIAOMA installation
|
|
55
|
+
const fs = require('fs-extra');
|
|
56
|
+
const path = require('node:path');
|
|
57
|
+
// Use findBmadDir to detect any custom folder names (V6+)
|
|
58
|
+
const xiaomaDir = await installer.findBmadDir(confirmedDirectory);
|
|
59
|
+
const hasExistingInstall = await fs.pathExists(xiaomaDir);
|
|
60
|
+
|
|
61
|
+
// Track action type (only set if there's an existing installation)
|
|
62
|
+
let actionType;
|
|
63
|
+
|
|
64
|
+
// Only show action menu if there's an existing installation
|
|
65
|
+
if (hasExistingInstall) {
|
|
66
|
+
const promptResult = await inquirer.prompt([
|
|
67
|
+
{
|
|
68
|
+
type: 'list',
|
|
69
|
+
name: 'actionType',
|
|
70
|
+
message: 'What would you like to do?',
|
|
71
|
+
choices: [
|
|
72
|
+
{ name: 'Quick Update (Settings Preserved)', value: 'quick-update' },
|
|
73
|
+
{ name: 'Modify XIAOMA Installation (Confirm or change each setting)', value: 'update' },
|
|
74
|
+
{ name: 'Remove XiaoMa Folder and Reinstall (Full clean install - XiaoMa Customization Will Be Lost)', value: 'reinstall' },
|
|
75
|
+
{ name: 'Compile Agents (Quick rebuild of all agent .md files)', value: 'compile' },
|
|
76
|
+
{ name: 'Cancel', value: 'cancel' },
|
|
77
|
+
],
|
|
78
|
+
default: 'quick-update',
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
|
|
82
|
+
// Extract actionType from prompt result
|
|
83
|
+
actionType = promptResult.actionType;
|
|
84
|
+
|
|
85
|
+
// Handle quick update separately
|
|
86
|
+
if (actionType === 'quick-update') {
|
|
87
|
+
return {
|
|
88
|
+
actionType: 'quick-update',
|
|
89
|
+
directory: confirmedDirectory,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Handle agent compilation separately
|
|
94
|
+
if (actionType === 'compile') {
|
|
95
|
+
return {
|
|
96
|
+
actionType: 'compile',
|
|
97
|
+
directory: confirmedDirectory,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Handle cancel
|
|
102
|
+
if (actionType === 'cancel') {
|
|
103
|
+
return {
|
|
104
|
+
actionType: 'cancel',
|
|
105
|
+
directory: confirmedDirectory,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Handle reinstall - DON'T return early, let it flow through configuration collection
|
|
110
|
+
// The installer will handle deletion when it sees actionType === 'reinstall'
|
|
111
|
+
// For now, just note that we're in reinstall mode and continue below
|
|
112
|
+
|
|
113
|
+
// If actionType === 'update' or 'reinstall', continue with normal flow below
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
|
|
117
|
+
const coreConfig = await this.collectCoreConfig(confirmedDirectory);
|
|
118
|
+
const moduleChoices = await this.getModuleChoices(installedModuleIds);
|
|
119
|
+
const selectedModules = await this.selectModules(moduleChoices);
|
|
120
|
+
|
|
121
|
+
// Prompt for AgentVibes TTS integration
|
|
122
|
+
const agentVibesConfig = await this.promptAgentVibes(confirmedDirectory);
|
|
123
|
+
|
|
124
|
+
// Collect IDE tool selection AFTER configuration prompts (fixes Windows/PowerShell hang)
|
|
125
|
+
// This allows text-based prompts to complete before the checkbox prompt
|
|
126
|
+
const toolSelection = await this.promptToolSelection(confirmedDirectory, selectedModules);
|
|
127
|
+
|
|
128
|
+
// No more screen clearing - keep output flowing
|
|
129
|
+
|
|
130
|
+
return {
|
|
131
|
+
actionType: actionType || 'update', // Preserve reinstall or update action
|
|
132
|
+
directory: confirmedDirectory,
|
|
133
|
+
installCore: true, // Always install core
|
|
134
|
+
modules: selectedModules,
|
|
135
|
+
// IDE selection collected after config, will be configured later
|
|
136
|
+
ides: toolSelection.ides,
|
|
137
|
+
skipIde: toolSelection.skipIde,
|
|
138
|
+
coreConfig: coreConfig, // Pass collected core config to installer
|
|
139
|
+
enableAgentVibes: agentVibesConfig.enabled, // AgentVibes TTS integration
|
|
140
|
+
agentVibesInstalled: agentVibesConfig.alreadyInstalled,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Prompt for tool/IDE selection (called after module configuration)
|
|
146
|
+
* @param {string} projectDir - Project directory to check for existing IDEs
|
|
147
|
+
* @param {Array} selectedModules - Selected modules from configuration
|
|
148
|
+
* @returns {Object} Tool configuration
|
|
149
|
+
*/
|
|
150
|
+
async promptToolSelection(projectDir, selectedModules) {
|
|
151
|
+
// Check for existing configured IDEs - use findBmadDir to detect custom folder names
|
|
152
|
+
const { Detector } = require('../installers/lib/core/detector');
|
|
153
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
154
|
+
const detector = new Detector();
|
|
155
|
+
const installer = new Installer();
|
|
156
|
+
const xiaomaDir = await installer.findBmadDir(projectDir || process.cwd());
|
|
157
|
+
const existingInstall = await detector.detect(xiaomaDir);
|
|
158
|
+
const configuredIdes = existingInstall.ides || [];
|
|
159
|
+
|
|
160
|
+
// Get IDE manager to fetch available IDEs dynamically
|
|
161
|
+
const { IdeManager } = require('../installers/lib/ide/manager');
|
|
162
|
+
const ideManager = new IdeManager();
|
|
163
|
+
|
|
164
|
+
const preferredIdes = ideManager.getPreferredIdes();
|
|
165
|
+
const otherIdes = ideManager.getOtherIdes();
|
|
166
|
+
|
|
167
|
+
// Build IDE choices array with separators
|
|
168
|
+
const ideChoices = [];
|
|
169
|
+
const processedIdes = new Set();
|
|
170
|
+
|
|
171
|
+
// First, add previously configured IDEs at the top, marked with ✅
|
|
172
|
+
if (configuredIdes.length > 0) {
|
|
173
|
+
ideChoices.push(new inquirer.Separator('── Previously Configured ──'));
|
|
174
|
+
for (const ideValue of configuredIdes) {
|
|
175
|
+
// Skip empty or invalid IDE values
|
|
176
|
+
if (!ideValue || typeof ideValue !== 'string') {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Find the IDE in either preferred or other lists
|
|
181
|
+
const preferredIde = preferredIdes.find((ide) => ide.value === ideValue);
|
|
182
|
+
const otherIde = otherIdes.find((ide) => ide.value === ideValue);
|
|
183
|
+
const ide = preferredIde || otherIde;
|
|
184
|
+
|
|
185
|
+
if (ide) {
|
|
186
|
+
ideChoices.push({
|
|
187
|
+
name: `${ide.name} ✅`,
|
|
188
|
+
value: ide.value,
|
|
189
|
+
checked: true, // Previously configured IDEs are checked by default
|
|
190
|
+
});
|
|
191
|
+
processedIdes.add(ide.value);
|
|
192
|
+
} else {
|
|
193
|
+
// Warn about unrecognized IDE (but don't fail)
|
|
194
|
+
console.log(chalk.yellow(`⚠️ Previously configured IDE '${ideValue}' is no longer available`));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Add preferred tools (excluding already processed)
|
|
200
|
+
const remainingPreferred = preferredIdes.filter((ide) => !processedIdes.has(ide.value));
|
|
201
|
+
if (remainingPreferred.length > 0) {
|
|
202
|
+
ideChoices.push(new inquirer.Separator('── Recommended Tools ──'));
|
|
203
|
+
for (const ide of remainingPreferred) {
|
|
204
|
+
ideChoices.push({
|
|
205
|
+
name: `${ide.name} ⭐`,
|
|
206
|
+
value: ide.value,
|
|
207
|
+
checked: false,
|
|
208
|
+
});
|
|
209
|
+
processedIdes.add(ide.value);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Add other tools (excluding already processed)
|
|
214
|
+
const remainingOther = otherIdes.filter((ide) => !processedIdes.has(ide.value));
|
|
215
|
+
if (remainingOther.length > 0) {
|
|
216
|
+
ideChoices.push(new inquirer.Separator('── Additional Tools ──'));
|
|
217
|
+
for (const ide of remainingOther) {
|
|
218
|
+
ideChoices.push({
|
|
219
|
+
name: ide.name,
|
|
220
|
+
value: ide.value,
|
|
221
|
+
checked: false,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
|
|
227
|
+
|
|
228
|
+
let answers;
|
|
229
|
+
let userConfirmedNoTools = false;
|
|
230
|
+
|
|
231
|
+
// Loop until user selects at least one tool OR explicitly confirms no tools
|
|
232
|
+
while (!userConfirmedNoTools) {
|
|
233
|
+
answers = await inquirer.prompt([
|
|
234
|
+
{
|
|
235
|
+
type: 'checkbox',
|
|
236
|
+
name: 'ides',
|
|
237
|
+
message: 'Select tools to configure:',
|
|
238
|
+
choices: ideChoices,
|
|
239
|
+
pageSize: 15,
|
|
240
|
+
},
|
|
241
|
+
]);
|
|
242
|
+
|
|
243
|
+
// If tools were selected, we're done
|
|
244
|
+
if (answers.ides && answers.ides.length > 0) {
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Warn that no tools were selected - users often miss the spacebar requirement
|
|
249
|
+
console.log();
|
|
250
|
+
console.log(chalk.red.bold('⚠️ WARNING: No tools were selected!'));
|
|
251
|
+
console.log(chalk.red(' You must press SPACEBAR to select items, then ENTER to confirm.'));
|
|
252
|
+
console.log(chalk.red(' Simply highlighting an item does NOT select it.'));
|
|
253
|
+
console.log();
|
|
254
|
+
|
|
255
|
+
const { goBack } = await inquirer.prompt([
|
|
256
|
+
{
|
|
257
|
+
type: 'confirm',
|
|
258
|
+
name: 'goBack',
|
|
259
|
+
message: chalk.yellow('Would you like to go back and select at least one tool?'),
|
|
260
|
+
default: true,
|
|
261
|
+
},
|
|
262
|
+
]);
|
|
263
|
+
|
|
264
|
+
if (goBack) {
|
|
265
|
+
// Re-display the section header before looping back
|
|
266
|
+
console.log();
|
|
267
|
+
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
|
|
268
|
+
} else {
|
|
269
|
+
// User explicitly chose to proceed without tools
|
|
270
|
+
userConfirmedNoTools = true;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
ides: answers.ides || [],
|
|
276
|
+
skipIde: !answers.ides || answers.ides.length === 0,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Prompt for update configuration
|
|
282
|
+
* @returns {Object} Update configuration
|
|
283
|
+
*/
|
|
284
|
+
async promptUpdate() {
|
|
285
|
+
const answers = await inquirer.prompt([
|
|
286
|
+
{
|
|
287
|
+
type: 'confirm',
|
|
288
|
+
name: 'backupFirst',
|
|
289
|
+
message: 'Create backup before updating?',
|
|
290
|
+
default: true,
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
type: 'confirm',
|
|
294
|
+
name: 'preserveCustomizations',
|
|
295
|
+
message: 'Preserve local customizations?',
|
|
296
|
+
default: true,
|
|
297
|
+
},
|
|
298
|
+
]);
|
|
299
|
+
|
|
300
|
+
return answers;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Prompt for module selection
|
|
305
|
+
* @param {Array} modules - Available modules
|
|
306
|
+
* @returns {Array} Selected modules
|
|
307
|
+
*/
|
|
308
|
+
async promptModules(modules) {
|
|
309
|
+
const choices = modules.map((mod) => ({
|
|
310
|
+
name: `${mod.name} - ${mod.description}`,
|
|
311
|
+
value: mod.id,
|
|
312
|
+
checked: false,
|
|
313
|
+
}));
|
|
314
|
+
|
|
315
|
+
const { selectedModules } = await inquirer.prompt([
|
|
316
|
+
{
|
|
317
|
+
type: 'checkbox',
|
|
318
|
+
name: 'selectedModules',
|
|
319
|
+
message: 'Select modules to add:',
|
|
320
|
+
choices,
|
|
321
|
+
validate: (answer) => {
|
|
322
|
+
if (answer.length === 0) {
|
|
323
|
+
return 'You must choose at least one module.';
|
|
324
|
+
}
|
|
325
|
+
return true;
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
]);
|
|
329
|
+
|
|
330
|
+
return selectedModules;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Confirm action
|
|
335
|
+
* @param {string} message - Confirmation message
|
|
336
|
+
* @param {boolean} defaultValue - Default value
|
|
337
|
+
* @returns {boolean} User confirmation
|
|
338
|
+
*/
|
|
339
|
+
async confirm(message, defaultValue = false) {
|
|
340
|
+
const { confirmed } = await inquirer.prompt([
|
|
341
|
+
{
|
|
342
|
+
type: 'confirm',
|
|
343
|
+
name: 'confirmed',
|
|
344
|
+
message,
|
|
345
|
+
default: defaultValue,
|
|
346
|
+
},
|
|
347
|
+
]);
|
|
348
|
+
|
|
349
|
+
return confirmed;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Display installation summary
|
|
354
|
+
* @param {Object} result - Installation result
|
|
355
|
+
*/
|
|
356
|
+
showInstallSummary(result) {
|
|
357
|
+
CLIUtils.displaySection('Installation Complete', 'XIAOMA™ has been successfully installed');
|
|
358
|
+
|
|
359
|
+
const summary = [
|
|
360
|
+
`📁 Installation Path: ${result.path}`,
|
|
361
|
+
`📦 Modules Installed: ${result.modules?.length > 0 ? result.modules.join(', ') : 'core only'}`,
|
|
362
|
+
`🔧 Tools Configured: ${result.ides?.length > 0 ? result.ides.join(', ') : 'none'}`,
|
|
363
|
+
];
|
|
364
|
+
|
|
365
|
+
CLIUtils.displayBox(summary.join('\n\n'), {
|
|
366
|
+
borderColor: 'green',
|
|
367
|
+
borderStyle: 'round',
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
console.log('\n' + chalk.green.bold('✨ XIAOMA is ready to use!'));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Get confirmed directory from user
|
|
375
|
+
* @returns {string} Confirmed directory path
|
|
376
|
+
*/
|
|
377
|
+
async getConfirmedDirectory() {
|
|
378
|
+
let confirmedDirectory = null;
|
|
379
|
+
while (!confirmedDirectory) {
|
|
380
|
+
const directoryAnswer = await this.promptForDirectory();
|
|
381
|
+
await this.displayDirectoryInfo(directoryAnswer.directory);
|
|
382
|
+
|
|
383
|
+
if (await this.confirmDirectory(directoryAnswer.directory)) {
|
|
384
|
+
confirmedDirectory = directoryAnswer.directory;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return confirmedDirectory;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Get existing installation info and installed modules
|
|
392
|
+
* @param {string} directory - Installation directory
|
|
393
|
+
* @returns {Object} Object with existingInstall and installedModuleIds
|
|
394
|
+
*/
|
|
395
|
+
async getExistingInstallation(directory) {
|
|
396
|
+
const { Detector } = require('../installers/lib/core/detector');
|
|
397
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
398
|
+
const detector = new Detector();
|
|
399
|
+
const installer = new Installer();
|
|
400
|
+
const xiaomaDir = await installer.findBmadDir(directory);
|
|
401
|
+
const existingInstall = await detector.detect(xiaomaDir);
|
|
402
|
+
const installedModuleIds = new Set(existingInstall.modules.map((mod) => mod.id));
|
|
403
|
+
|
|
404
|
+
return { existingInstall, installedModuleIds };
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Collect core configuration
|
|
409
|
+
* @param {string} directory - Installation directory
|
|
410
|
+
* @returns {Object} Core configuration
|
|
411
|
+
*/
|
|
412
|
+
async collectCoreConfig(directory) {
|
|
413
|
+
const { ConfigCollector } = require('../installers/lib/core/config-collector');
|
|
414
|
+
const configCollector = new ConfigCollector();
|
|
415
|
+
// Load existing configs first if they exist
|
|
416
|
+
await configCollector.loadExistingConfig(directory);
|
|
417
|
+
// Now collect with existing values as defaults (false = don't skip loading, true = skip completion message)
|
|
418
|
+
await configCollector.collectModuleConfig('core', directory, false, true);
|
|
419
|
+
|
|
420
|
+
return configCollector.collectedConfig.core;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Get module choices for selection
|
|
425
|
+
* @param {Set} installedModuleIds - Currently installed module IDs
|
|
426
|
+
* @returns {Array} Module choices for inquirer
|
|
427
|
+
*/
|
|
428
|
+
async getModuleChoices(installedModuleIds) {
|
|
429
|
+
const { ModuleManager } = require('../installers/lib/modules/manager');
|
|
430
|
+
const moduleManager = new ModuleManager();
|
|
431
|
+
const availableModules = await moduleManager.listAvailable();
|
|
432
|
+
|
|
433
|
+
const isNewInstallation = installedModuleIds.size === 0;
|
|
434
|
+
return availableModules.map((mod) => ({
|
|
435
|
+
name: mod.name,
|
|
436
|
+
value: mod.id,
|
|
437
|
+
checked: isNewInstallation ? mod.defaultSelected || false : installedModuleIds.has(mod.id),
|
|
438
|
+
}));
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Prompt for module selection
|
|
443
|
+
* @param {Array} moduleChoices - Available module choices
|
|
444
|
+
* @returns {Array} Selected module IDs
|
|
445
|
+
*/
|
|
446
|
+
async selectModules(moduleChoices) {
|
|
447
|
+
// Auto-select all modules without prompting
|
|
448
|
+
return moduleChoices.map((choice) => choice.value);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Prompt for directory selection
|
|
453
|
+
* @returns {Object} Directory answer from inquirer
|
|
454
|
+
*/
|
|
455
|
+
async promptForDirectory() {
|
|
456
|
+
return await inquirer.prompt([
|
|
457
|
+
{
|
|
458
|
+
type: 'input',
|
|
459
|
+
name: 'directory',
|
|
460
|
+
message: `Installation directory:`,
|
|
461
|
+
default: process.cwd(),
|
|
462
|
+
validate: async (input) => this.validateDirectory(input),
|
|
463
|
+
filter: (input) => {
|
|
464
|
+
// If empty, use the default
|
|
465
|
+
if (!input || input.trim() === '') {
|
|
466
|
+
return process.cwd();
|
|
467
|
+
}
|
|
468
|
+
return this.expandUserPath(input);
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
]);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Display directory information
|
|
476
|
+
* @param {string} directory - The directory path
|
|
477
|
+
*/
|
|
478
|
+
async displayDirectoryInfo(directory) {
|
|
479
|
+
console.log(chalk.cyan('\nResolved installation path:'), chalk.bold(directory));
|
|
480
|
+
|
|
481
|
+
const dirExists = await fs.pathExists(directory);
|
|
482
|
+
if (dirExists) {
|
|
483
|
+
// Show helpful context about the existing path
|
|
484
|
+
const stats = await fs.stat(directory);
|
|
485
|
+
if (stats.isDirectory()) {
|
|
486
|
+
const files = await fs.readdir(directory);
|
|
487
|
+
if (files.length > 0) {
|
|
488
|
+
// Check for any xiaoma installation (any folder with _cfg/manifest.yaml)
|
|
489
|
+
const { Installer } = require('../installers/lib/core/installer');
|
|
490
|
+
const installer = new Installer();
|
|
491
|
+
const xiaomaDir = await installer.findBmadDir(directory);
|
|
492
|
+
const hasBmadInstall = (await fs.pathExists(xiaomaDir)) && (await fs.pathExists(path.join(xiaomaDir, '_cfg', 'manifest.yaml')));
|
|
493
|
+
|
|
494
|
+
console.log(
|
|
495
|
+
chalk.gray(`Directory exists and contains ${files.length} item(s)`) +
|
|
496
|
+
(hasBmadInstall ? chalk.yellow(` including existing XIAOMA installation (${path.basename(xiaomaDir)})`) : ''),
|
|
497
|
+
);
|
|
498
|
+
} else {
|
|
499
|
+
console.log(chalk.gray('Directory exists and is empty'));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Confirm directory selection
|
|
507
|
+
* @param {string} directory - The directory path
|
|
508
|
+
* @returns {boolean} Whether user confirmed
|
|
509
|
+
*/
|
|
510
|
+
async confirmDirectory(directory) {
|
|
511
|
+
const dirExists = await fs.pathExists(directory);
|
|
512
|
+
|
|
513
|
+
if (dirExists) {
|
|
514
|
+
const confirmAnswer = await inquirer.prompt([
|
|
515
|
+
{
|
|
516
|
+
type: 'confirm',
|
|
517
|
+
name: 'proceed',
|
|
518
|
+
message: `Install to this directory?`,
|
|
519
|
+
default: true,
|
|
520
|
+
},
|
|
521
|
+
]);
|
|
522
|
+
|
|
523
|
+
if (!confirmAnswer.proceed) {
|
|
524
|
+
console.log(chalk.yellow("\nLet's try again with a different path.\n"));
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
return confirmAnswer.proceed;
|
|
528
|
+
} else {
|
|
529
|
+
// Ask for confirmation to create the directory
|
|
530
|
+
const createConfirm = await inquirer.prompt([
|
|
531
|
+
{
|
|
532
|
+
type: 'confirm',
|
|
533
|
+
name: 'create',
|
|
534
|
+
message: `The directory '${directory}' doesn't exist. Would you like to create it?`,
|
|
535
|
+
default: false,
|
|
536
|
+
},
|
|
537
|
+
]);
|
|
538
|
+
|
|
539
|
+
if (!createConfirm.create) {
|
|
540
|
+
console.log(chalk.yellow("\nLet's try again with a different path.\n"));
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
return createConfirm.create;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Validate directory path for installation
|
|
549
|
+
* @param {string} input - User input path
|
|
550
|
+
* @returns {string|true} Error message or true if valid
|
|
551
|
+
*/
|
|
552
|
+
async validateDirectory(input) {
|
|
553
|
+
// Allow empty input to use the default
|
|
554
|
+
if (!input || input.trim() === '') {
|
|
555
|
+
return true; // Empty means use default
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
let expandedPath;
|
|
559
|
+
try {
|
|
560
|
+
expandedPath = this.expandUserPath(input.trim());
|
|
561
|
+
} catch (error) {
|
|
562
|
+
return error.message;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// Check if the path exists
|
|
566
|
+
const pathExists = await fs.pathExists(expandedPath);
|
|
567
|
+
|
|
568
|
+
if (!pathExists) {
|
|
569
|
+
// Find the first existing parent directory
|
|
570
|
+
const existingParent = await this.findExistingParent(expandedPath);
|
|
571
|
+
|
|
572
|
+
if (!existingParent) {
|
|
573
|
+
return 'Cannot create directory: no existing parent directory found';
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
// Check if the existing parent is writable
|
|
577
|
+
try {
|
|
578
|
+
await fs.access(existingParent, fs.constants.W_OK);
|
|
579
|
+
// Path doesn't exist but can be created - will prompt for confirmation later
|
|
580
|
+
return true;
|
|
581
|
+
} catch {
|
|
582
|
+
// Provide a detailed error message explaining both issues
|
|
583
|
+
return `Directory '${expandedPath}' does not exist and cannot be created: parent directory '${existingParent}' is not writable`;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
// If it exists, validate it's a directory and writable
|
|
588
|
+
const stat = await fs.stat(expandedPath);
|
|
589
|
+
if (!stat.isDirectory()) {
|
|
590
|
+
return `Path exists but is not a directory: ${expandedPath}`;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// Check write permissions
|
|
594
|
+
try {
|
|
595
|
+
await fs.access(expandedPath, fs.constants.W_OK);
|
|
596
|
+
} catch {
|
|
597
|
+
return `Directory is not writable: ${expandedPath}`;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
return true;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Find the first existing parent directory
|
|
605
|
+
* @param {string} targetPath - The path to check
|
|
606
|
+
* @returns {string|null} The first existing parent directory, or null if none found
|
|
607
|
+
*/
|
|
608
|
+
async findExistingParent(targetPath) {
|
|
609
|
+
let currentPath = path.resolve(targetPath);
|
|
610
|
+
|
|
611
|
+
// Walk up the directory tree until we find an existing directory
|
|
612
|
+
while (currentPath !== path.dirname(currentPath)) {
|
|
613
|
+
// Stop at root
|
|
614
|
+
const parent = path.dirname(currentPath);
|
|
615
|
+
if (await fs.pathExists(parent)) {
|
|
616
|
+
return parent;
|
|
617
|
+
}
|
|
618
|
+
currentPath = parent;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
return null; // No existing parent found (shouldn't happen in practice)
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* Expands the user-provided path: handles ~ and resolves to absolute.
|
|
626
|
+
* @param {string} inputPath - User input path.
|
|
627
|
+
* @returns {string} Absolute expanded path.
|
|
628
|
+
*/
|
|
629
|
+
expandUserPath(inputPath) {
|
|
630
|
+
if (typeof inputPath !== 'string') {
|
|
631
|
+
throw new TypeError('Path must be a string.');
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
let expanded = inputPath.trim();
|
|
635
|
+
|
|
636
|
+
// Handle tilde expansion
|
|
637
|
+
if (expanded.startsWith('~')) {
|
|
638
|
+
if (expanded === '~') {
|
|
639
|
+
expanded = os.homedir();
|
|
640
|
+
} else if (expanded.startsWith('~' + path.sep)) {
|
|
641
|
+
const pathAfterHome = expanded.slice(2); // Remove ~/ or ~\
|
|
642
|
+
expanded = path.join(os.homedir(), pathAfterHome);
|
|
643
|
+
} else {
|
|
644
|
+
const restOfPath = expanded.slice(1);
|
|
645
|
+
const separatorIndex = restOfPath.indexOf(path.sep);
|
|
646
|
+
const username = separatorIndex === -1 ? restOfPath : restOfPath.slice(0, separatorIndex);
|
|
647
|
+
if (username) {
|
|
648
|
+
throw new Error(`Path expansion for ~${username} is not supported. Please use an absolute path or ~${path.sep}`);
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
// Resolve to the absolute path relative to the current working directory
|
|
654
|
+
return path.resolve(expanded);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* @function promptAgentVibes
|
|
659
|
+
* @intent Ask user if they want AgentVibes TTS integration during XIAOMA installation
|
|
660
|
+
* @why Enables optional voice features without forcing TTS on users who don't want it
|
|
661
|
+
* @param {string} projectDir - Absolute path to user's project directory
|
|
662
|
+
* @returns {Promise<Object>} Configuration object: { enabled: boolean, alreadyInstalled: boolean }
|
|
663
|
+
* @sideeffects None - pure user input collection, no files written
|
|
664
|
+
* @edgecases Shows warning if user enables TTS but AgentVibes not detected
|
|
665
|
+
* @calledby promptInstall() during installation flow, after core config, before IDE selection
|
|
666
|
+
* @calls checkAgentVibesInstalled(), inquirer.prompt(), chalk.green/yellow/dim()
|
|
667
|
+
*
|
|
668
|
+
* AI NOTE: This prompt is strategically positioned in installation flow:
|
|
669
|
+
* - AFTER core config (xiaoma_folder, user_name, etc)
|
|
670
|
+
* - BEFORE IDE selection (which can hang on Windows/PowerShell)
|
|
671
|
+
*
|
|
672
|
+
* Flow Logic:
|
|
673
|
+
* 1. Auto-detect if AgentVibes already installed (checks for hook files)
|
|
674
|
+
* 2. Show detection status to user (green checkmark or gray "not detected")
|
|
675
|
+
* 3. Prompt: "Enable AgentVibes TTS?" (defaults to true if detected)
|
|
676
|
+
* 4. If user says YES but AgentVibes NOT installed:
|
|
677
|
+
* → Show warning with installation link (graceful degradation)
|
|
678
|
+
* 5. Return config to promptInstall(), which passes to installer.install()
|
|
679
|
+
*
|
|
680
|
+
* State Flow:
|
|
681
|
+
* promptAgentVibes() → { enabled, alreadyInstalled }
|
|
682
|
+
* ↓
|
|
683
|
+
* promptInstall() → config.enableAgentVibes
|
|
684
|
+
* ↓
|
|
685
|
+
* installer.install() → this.enableAgentVibes
|
|
686
|
+
* ↓
|
|
687
|
+
* processTTSInjectionPoints() → injects OR strips markers
|
|
688
|
+
*
|
|
689
|
+
* RELATED:
|
|
690
|
+
* ========
|
|
691
|
+
* - Detection: checkAgentVibesInstalled() - looks for xiaoma-speak.sh and play-tts.sh
|
|
692
|
+
* - Processing: installer.js::processTTSInjectionPoints()
|
|
693
|
+
* - Markers: src/core/workflows/party-mode/instructions.md:101, src/modules/xmc/agents/*.md
|
|
694
|
+
* - GitHub Issue: paulpreibisch/AgentVibes#36
|
|
695
|
+
*/
|
|
696
|
+
async promptAgentVibes(projectDir) {
|
|
697
|
+
// Auto-disable AgentVibes without prompting
|
|
698
|
+
const agentVibesInstalled = await this.checkAgentVibesInstalled(projectDir);
|
|
699
|
+
|
|
700
|
+
return {
|
|
701
|
+
enabled: false,
|
|
702
|
+
alreadyInstalled: agentVibesInstalled,
|
|
703
|
+
};
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/**
|
|
707
|
+
* @function checkAgentVibesInstalled
|
|
708
|
+
* @intent Detect if AgentVibes TTS hooks are present in user's project
|
|
709
|
+
* @why Allows auto-enabling TTS and showing helpful installation guidance
|
|
710
|
+
* @param {string} projectDir - Absolute path to user's project directory
|
|
711
|
+
* @returns {Promise<boolean>} true if both required AgentVibes hooks exist, false otherwise
|
|
712
|
+
* @sideeffects None - read-only file existence checks
|
|
713
|
+
* @edgecases Returns false if either hook missing (both required for functional TTS)
|
|
714
|
+
* @calledby promptAgentVibes() to determine default value and show detection status
|
|
715
|
+
* @calls fs.pathExists() twice (xiaoma-speak.sh, play-tts.sh)
|
|
716
|
+
*
|
|
717
|
+
* AI NOTE: This checks for the MINIMUM viable AgentVibes installation.
|
|
718
|
+
*
|
|
719
|
+
* Required Files:
|
|
720
|
+
* ===============
|
|
721
|
+
* 1. .claude/hooks/xiaoma-speak.sh
|
|
722
|
+
* - Maps agent display names → agent IDs → voice profiles
|
|
723
|
+
* - Calls play-tts.sh with agent's assigned voice
|
|
724
|
+
* - Created by AgentVibes installer
|
|
725
|
+
*
|
|
726
|
+
* 2. .claude/hooks/play-tts.sh
|
|
727
|
+
* - Core TTS router (ElevenLabs or Piper)
|
|
728
|
+
* - Provider-agnostic interface
|
|
729
|
+
* - Required by xiaoma-speak.sh
|
|
730
|
+
*
|
|
731
|
+
* Why Both Required:
|
|
732
|
+
* ==================
|
|
733
|
+
* - xiaoma-speak.sh alone: No TTS backend
|
|
734
|
+
* - play-tts.sh alone: No XIAOMA agent voice mapping
|
|
735
|
+
* - Both together: Full party mode TTS integration
|
|
736
|
+
*
|
|
737
|
+
* Detection Strategy:
|
|
738
|
+
* ===================
|
|
739
|
+
* We use simple file existence (not version checks) because:
|
|
740
|
+
* - Fast and reliable
|
|
741
|
+
* - Works across all AgentVibes versions
|
|
742
|
+
* - User will discover version issues when TTS runs (fail-fast)
|
|
743
|
+
*
|
|
744
|
+
* PATTERN: Adding New Detection Criteria
|
|
745
|
+
* =======================================
|
|
746
|
+
* If future AgentVibes features require additional files:
|
|
747
|
+
* 1. Add new pathExists check to this function
|
|
748
|
+
* 2. Update documentation in promptAgentVibes()
|
|
749
|
+
* 3. Consider: should missing file prevent detection or just log warning?
|
|
750
|
+
*
|
|
751
|
+
* RELATED:
|
|
752
|
+
* ========
|
|
753
|
+
* - AgentVibes Installer: creates these hooks
|
|
754
|
+
* - xiaoma-speak.sh: calls play-tts.sh with agent voices
|
|
755
|
+
* - Party Mode: uses xiaoma-speak.sh for agent dialogue
|
|
756
|
+
*/
|
|
757
|
+
async checkAgentVibesInstalled(projectDir) {
|
|
758
|
+
const fs = require('fs-extra');
|
|
759
|
+
const path = require('node:path');
|
|
760
|
+
|
|
761
|
+
// Check for AgentVibes hook files
|
|
762
|
+
const hookPath = path.join(projectDir, '.claude', 'hooks', 'xiaoma-speak.sh');
|
|
763
|
+
const playTtsPath = path.join(projectDir, '.claude', 'hooks', 'play-tts.sh');
|
|
764
|
+
|
|
765
|
+
return (await fs.pathExists(hookPath)) && (await fs.pathExists(playTtsPath));
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
module.exports = { UI };
|