@zeyue0329/xiaoma-cli 1.0.48 → 6.0.0-alpha.13
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.
Potentially problematic release.
This version of @zeyue0329/xiaoma-cli might be problematic. Click here for more details.
- 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 -114
- 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 -3911
- package/dist/agents/automation-orchestrator.txt +0 -396
- package/dist/agents/dev.txt +0 -576
- package/dist/agents/full-requirement-orchestrator.txt +0 -505
- package/dist/agents/pm.txt +0 -2224
- package/dist/agents/po.txt +0 -1358
- package/dist/agents/qa.txt +0 -2002
- package/dist/agents/sm.txt +0 -2061
- 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 -19525
- package/dist/teams/team-fullstack-with-database.txt +0 -21500
- package/dist/teams/team-fullstack.txt +0 -13831
- package/dist/teams/team-ide-minimal.txt +0 -6698
- package/dist/teams/team-no-ui.txt +0 -12379
- 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 -85
- 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 -79
- 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 -82
- 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 -67
- 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-next-story.md +0 -114
- 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/market-research-tmpl.yaml +0 -252
- package/xiaoma-core/templates/maven-lombok-template.xml +0 -111
- 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/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,751 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
3
|
+
const yaml = require('js-yaml');
|
|
4
|
+
const chalk = require('chalk');
|
|
5
|
+
const { XmlHandler } = require('../../../lib/xml-handler');
|
|
6
|
+
const { getProjectRoot, getSourcePath, getModulePath } = require('../../../lib/project-root');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Manages the installation, updating, and removal of XIAOMA modules.
|
|
10
|
+
* Handles module discovery, dependency resolution, configuration processing,
|
|
11
|
+
* and agent file management including XML activation block injection.
|
|
12
|
+
*
|
|
13
|
+
* @class ModuleManager
|
|
14
|
+
* @requires fs-extra
|
|
15
|
+
* @requires js-yaml
|
|
16
|
+
* @requires chalk
|
|
17
|
+
* @requires XmlHandler
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const manager = new ModuleManager();
|
|
21
|
+
* const modules = await manager.listAvailable();
|
|
22
|
+
* await manager.install('core-module', '/path/to/xiaoma');
|
|
23
|
+
*/
|
|
24
|
+
class ModuleManager {
|
|
25
|
+
constructor() {
|
|
26
|
+
// Path to source modules directory
|
|
27
|
+
this.modulesSourcePath = getSourcePath('modules');
|
|
28
|
+
this.xmlHandler = new XmlHandler();
|
|
29
|
+
this.xiaomaFolderName = 'xiaoma'; // Default, can be overridden
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Set the xiaoma folder name for placeholder replacement
|
|
34
|
+
* @param {string} xiaomaFolderName - The xiaoma folder name
|
|
35
|
+
*/
|
|
36
|
+
setBmadFolderName(xiaomaFolderName) {
|
|
37
|
+
this.xiaomaFolderName = xiaomaFolderName;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Copy a file and replace {xiaoma_folder} placeholder with actual folder name
|
|
42
|
+
* @param {string} sourcePath - Source file path
|
|
43
|
+
* @param {string} targetPath - Target file path
|
|
44
|
+
*/
|
|
45
|
+
async copyFileWithPlaceholderReplacement(sourcePath, targetPath) {
|
|
46
|
+
// List of text file extensions that should have placeholder replacement
|
|
47
|
+
const textExtensions = ['.md', '.yaml', '.yml', '.txt', '.json', '.js', '.ts', '.html', '.css', '.sh', '.bat', '.csv'];
|
|
48
|
+
const ext = path.extname(sourcePath).toLowerCase();
|
|
49
|
+
|
|
50
|
+
// Check if this is a text file that might contain placeholders
|
|
51
|
+
if (textExtensions.includes(ext)) {
|
|
52
|
+
try {
|
|
53
|
+
// Read the file content
|
|
54
|
+
let content = await fs.readFile(sourcePath, 'utf8');
|
|
55
|
+
|
|
56
|
+
// Replace {xiaoma_folder} placeholder with actual folder name
|
|
57
|
+
if (content.includes('{xiaoma_folder}')) {
|
|
58
|
+
content = content.replaceAll('{xiaoma_folder}', this.xiaomaFolderName);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Write to target with replaced content
|
|
62
|
+
await fs.ensureDir(path.dirname(targetPath));
|
|
63
|
+
await fs.writeFile(targetPath, content, 'utf8');
|
|
64
|
+
} catch {
|
|
65
|
+
// If reading as text fails (might be binary despite extension), fall back to regular copy
|
|
66
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
// Binary file or other file type - just copy directly
|
|
70
|
+
await fs.copy(sourcePath, targetPath, { overwrite: true });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Copy a directory recursively with placeholder replacement
|
|
76
|
+
* @param {string} sourceDir - Source directory path
|
|
77
|
+
* @param {string} targetDir - Target directory path
|
|
78
|
+
*/
|
|
79
|
+
async copyDirectoryWithPlaceholderReplacement(sourceDir, targetDir) {
|
|
80
|
+
await fs.ensureDir(targetDir);
|
|
81
|
+
const entries = await fs.readdir(sourceDir, { withFileTypes: true });
|
|
82
|
+
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
const sourcePath = path.join(sourceDir, entry.name);
|
|
85
|
+
const targetPath = path.join(targetDir, entry.name);
|
|
86
|
+
|
|
87
|
+
if (entry.isDirectory()) {
|
|
88
|
+
await this.copyDirectoryWithPlaceholderReplacement(sourcePath, targetPath);
|
|
89
|
+
} else {
|
|
90
|
+
await this.copyFileWithPlaceholderReplacement(sourcePath, targetPath);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* List all available modules
|
|
97
|
+
* @returns {Array} List of available modules with metadata
|
|
98
|
+
*/
|
|
99
|
+
async listAvailable() {
|
|
100
|
+
const modules = [];
|
|
101
|
+
|
|
102
|
+
if (!(await fs.pathExists(this.modulesSourcePath))) {
|
|
103
|
+
console.warn(chalk.yellow('Warning: src/modules directory not found'));
|
|
104
|
+
return modules;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const entries = await fs.readdir(this.modulesSourcePath, { withFileTypes: true });
|
|
108
|
+
|
|
109
|
+
for (const entry of entries) {
|
|
110
|
+
if (entry.isDirectory()) {
|
|
111
|
+
const modulePath = path.join(this.modulesSourcePath, entry.name);
|
|
112
|
+
// Check for new structure first
|
|
113
|
+
const installerConfigPath = path.join(modulePath, '_module-installer', 'install-config.yaml');
|
|
114
|
+
// Fallback to old structure
|
|
115
|
+
const configPath = path.join(modulePath, 'config.yaml');
|
|
116
|
+
|
|
117
|
+
const moduleInfo = {
|
|
118
|
+
id: entry.name,
|
|
119
|
+
path: modulePath,
|
|
120
|
+
name: entry.name.toUpperCase(),
|
|
121
|
+
description: 'XIAOMA Module',
|
|
122
|
+
version: '5.0.0',
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// Try to read module config for metadata (prefer new location)
|
|
126
|
+
const configToRead = (await fs.pathExists(installerConfigPath)) ? installerConfigPath : configPath;
|
|
127
|
+
if (await fs.pathExists(configToRead)) {
|
|
128
|
+
try {
|
|
129
|
+
const configContent = await fs.readFile(configToRead, 'utf8');
|
|
130
|
+
const config = yaml.load(configContent);
|
|
131
|
+
|
|
132
|
+
// Use the code property as the id if available
|
|
133
|
+
if (config.code) {
|
|
134
|
+
moduleInfo.id = config.code;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
moduleInfo.name = config.name || moduleInfo.name;
|
|
138
|
+
moduleInfo.description = config.description || moduleInfo.description;
|
|
139
|
+
moduleInfo.version = config.version || moduleInfo.version;
|
|
140
|
+
moduleInfo.dependencies = config.dependencies || [];
|
|
141
|
+
moduleInfo.defaultSelected = config.default_selected === undefined ? false : config.default_selected;
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.warn(`Failed to read config for ${entry.name}:`, error.message);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
modules.push(moduleInfo);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return modules;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Install a module
|
|
156
|
+
* @param {string} moduleName - Name of the module to install
|
|
157
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
158
|
+
* @param {Function} fileTrackingCallback - Optional callback to track installed files
|
|
159
|
+
* @param {Object} options - Additional installation options
|
|
160
|
+
* @param {Array<string>} options.installedIDEs - Array of IDE codes that were installed
|
|
161
|
+
* @param {Object} options.moduleConfig - Module configuration from config collector
|
|
162
|
+
* @param {Object} options.logger - Logger instance for output
|
|
163
|
+
*/
|
|
164
|
+
async install(moduleName, xiaomaDir, fileTrackingCallback = null, options = {}) {
|
|
165
|
+
const sourcePath = path.join(this.modulesSourcePath, moduleName);
|
|
166
|
+
const targetPath = path.join(xiaomaDir, moduleName);
|
|
167
|
+
|
|
168
|
+
// Check if source module exists
|
|
169
|
+
if (!(await fs.pathExists(sourcePath))) {
|
|
170
|
+
throw new Error(`Module '${moduleName}' not found in ${this.modulesSourcePath}`);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Check if already installed
|
|
174
|
+
if (await fs.pathExists(targetPath)) {
|
|
175
|
+
console.log(chalk.yellow(`Module '${moduleName}' already installed, updating...`));
|
|
176
|
+
await fs.remove(targetPath);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Vendor cross-module workflows BEFORE copying
|
|
180
|
+
// This reads source agent.yaml files and copies referenced workflows
|
|
181
|
+
await this.vendorCrossModuleWorkflows(sourcePath, targetPath, moduleName);
|
|
182
|
+
|
|
183
|
+
// Copy module files with filtering
|
|
184
|
+
await this.copyModuleWithFiltering(sourcePath, targetPath, fileTrackingCallback, options.moduleConfig);
|
|
185
|
+
|
|
186
|
+
// Process agent files to inject activation block
|
|
187
|
+
await this.processAgentFiles(targetPath, moduleName);
|
|
188
|
+
|
|
189
|
+
// Call module-specific installer if it exists (unless explicitly skipped)
|
|
190
|
+
if (!options.skipModuleInstaller) {
|
|
191
|
+
await this.runModuleInstaller(moduleName, xiaomaDir, options);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
success: true,
|
|
196
|
+
module: moduleName,
|
|
197
|
+
path: targetPath,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Update an existing module
|
|
203
|
+
* @param {string} moduleName - Name of the module to update
|
|
204
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
205
|
+
* @param {boolean} force - Force update (overwrite modifications)
|
|
206
|
+
*/
|
|
207
|
+
async update(moduleName, xiaomaDir, force = false) {
|
|
208
|
+
const sourcePath = path.join(this.modulesSourcePath, moduleName);
|
|
209
|
+
const targetPath = path.join(xiaomaDir, moduleName);
|
|
210
|
+
|
|
211
|
+
// Check if source module exists
|
|
212
|
+
if (!(await fs.pathExists(sourcePath))) {
|
|
213
|
+
throw new Error(`Module '${moduleName}' not found in source`);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Check if module is installed
|
|
217
|
+
if (!(await fs.pathExists(targetPath))) {
|
|
218
|
+
throw new Error(`Module '${moduleName}' is not installed`);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (force) {
|
|
222
|
+
// Force update - remove and reinstall
|
|
223
|
+
await fs.remove(targetPath);
|
|
224
|
+
return await this.install(moduleName, xiaomaDir);
|
|
225
|
+
} else {
|
|
226
|
+
// Selective update - preserve user modifications
|
|
227
|
+
await this.syncModule(sourcePath, targetPath);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return {
|
|
231
|
+
success: true,
|
|
232
|
+
module: moduleName,
|
|
233
|
+
path: targetPath,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Remove a module
|
|
239
|
+
* @param {string} moduleName - Name of the module to remove
|
|
240
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
241
|
+
*/
|
|
242
|
+
async remove(moduleName, xiaomaDir) {
|
|
243
|
+
const targetPath = path.join(xiaomaDir, moduleName);
|
|
244
|
+
|
|
245
|
+
if (!(await fs.pathExists(targetPath))) {
|
|
246
|
+
throw new Error(`Module '${moduleName}' is not installed`);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
await fs.remove(targetPath);
|
|
250
|
+
|
|
251
|
+
return {
|
|
252
|
+
success: true,
|
|
253
|
+
module: moduleName,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Check if a module is installed
|
|
259
|
+
* @param {string} moduleName - Name of the module
|
|
260
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
261
|
+
* @returns {boolean} True if module is installed
|
|
262
|
+
*/
|
|
263
|
+
async isInstalled(moduleName, xiaomaDir) {
|
|
264
|
+
const targetPath = path.join(xiaomaDir, moduleName);
|
|
265
|
+
return await fs.pathExists(targetPath);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Get installed module info
|
|
270
|
+
* @param {string} moduleName - Name of the module
|
|
271
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
272
|
+
* @returns {Object|null} Module info or null if not installed
|
|
273
|
+
*/
|
|
274
|
+
async getInstalledInfo(moduleName, xiaomaDir) {
|
|
275
|
+
const targetPath = path.join(xiaomaDir, moduleName);
|
|
276
|
+
|
|
277
|
+
if (!(await fs.pathExists(targetPath))) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const configPath = path.join(targetPath, 'config.yaml');
|
|
282
|
+
const moduleInfo = {
|
|
283
|
+
id: moduleName,
|
|
284
|
+
path: targetPath,
|
|
285
|
+
installed: true,
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
if (await fs.pathExists(configPath)) {
|
|
289
|
+
try {
|
|
290
|
+
const configContent = await fs.readFile(configPath, 'utf8');
|
|
291
|
+
const config = yaml.load(configContent);
|
|
292
|
+
Object.assign(moduleInfo, config);
|
|
293
|
+
} catch (error) {
|
|
294
|
+
console.warn(`Failed to read installed module config:`, error.message);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return moduleInfo;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Copy module with filtering for localskip agents and conditional content
|
|
303
|
+
* @param {string} sourcePath - Source module path
|
|
304
|
+
* @param {string} targetPath - Target module path
|
|
305
|
+
* @param {Function} fileTrackingCallback - Optional callback to track installed files
|
|
306
|
+
* @param {Object} moduleConfig - Module configuration with conditional flags
|
|
307
|
+
*/
|
|
308
|
+
async copyModuleWithFiltering(sourcePath, targetPath, fileTrackingCallback = null, moduleConfig = {}) {
|
|
309
|
+
// Get all files in source
|
|
310
|
+
const sourceFiles = await this.getFileList(sourcePath);
|
|
311
|
+
|
|
312
|
+
for (const file of sourceFiles) {
|
|
313
|
+
// Skip sub-modules directory - these are IDE-specific and handled separately
|
|
314
|
+
if (file.startsWith('sub-modules/')) {
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Skip _module-installer directory - it's only needed at install time
|
|
319
|
+
if (file.startsWith('_module-installer/')) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// Skip config.yaml templates - we'll generate clean ones with actual values
|
|
324
|
+
if (file === 'config.yaml' || file.endsWith('/config.yaml')) {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// Skip user documentation if install_user_docs is false
|
|
329
|
+
if (moduleConfig.install_user_docs === false && (file.startsWith('docs/') || file.startsWith('docs\\'))) {
|
|
330
|
+
console.log(chalk.dim(` Skipping user documentation: ${file}`));
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const sourceFile = path.join(sourcePath, file);
|
|
335
|
+
const targetFile = path.join(targetPath, file);
|
|
336
|
+
|
|
337
|
+
// Check if this is an agent file
|
|
338
|
+
if (file.startsWith('agents/') && file.endsWith('.md')) {
|
|
339
|
+
// Read the file to check for localskip
|
|
340
|
+
const content = await fs.readFile(sourceFile, 'utf8');
|
|
341
|
+
|
|
342
|
+
// Check for localskip="true" in the agent tag
|
|
343
|
+
const agentMatch = content.match(/<agent[^>]*\slocalskip="true"[^>]*>/);
|
|
344
|
+
if (agentMatch) {
|
|
345
|
+
console.log(chalk.dim(` Skipping web-only agent: ${path.basename(file)}`));
|
|
346
|
+
continue; // Skip this agent
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Check if this is a workflow.yaml file
|
|
351
|
+
if (file.endsWith('workflow.yaml')) {
|
|
352
|
+
await fs.ensureDir(path.dirname(targetFile));
|
|
353
|
+
await this.copyWorkflowYamlStripped(sourceFile, targetFile);
|
|
354
|
+
} else {
|
|
355
|
+
// Copy the file with placeholder replacement
|
|
356
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Track the file if callback provided
|
|
360
|
+
if (fileTrackingCallback) {
|
|
361
|
+
fileTrackingCallback(targetFile);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Copy workflow.yaml file with web_bundle section stripped
|
|
368
|
+
* Preserves comments, formatting, and line breaks
|
|
369
|
+
* @param {string} sourceFile - Source workflow.yaml file path
|
|
370
|
+
* @param {string} targetFile - Target workflow.yaml file path
|
|
371
|
+
*/
|
|
372
|
+
async copyWorkflowYamlStripped(sourceFile, targetFile) {
|
|
373
|
+
// Read the source YAML file
|
|
374
|
+
let yamlContent = await fs.readFile(sourceFile, 'utf8');
|
|
375
|
+
|
|
376
|
+
// IMPORTANT: Replace {xiaoma_folder} BEFORE parsing YAML
|
|
377
|
+
// Otherwise parsing will fail on the placeholder
|
|
378
|
+
yamlContent = yamlContent.replaceAll('{xiaoma_folder}', this.xiaomaFolderName);
|
|
379
|
+
|
|
380
|
+
try {
|
|
381
|
+
// First check if web_bundle exists by parsing
|
|
382
|
+
const workflowConfig = yaml.load(yamlContent);
|
|
383
|
+
|
|
384
|
+
if (workflowConfig.web_bundle === undefined) {
|
|
385
|
+
// No web_bundle section, just write (placeholders already replaced above)
|
|
386
|
+
await fs.writeFile(targetFile, yamlContent, 'utf8');
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
// Remove web_bundle section using regex to preserve formatting
|
|
391
|
+
// Match the web_bundle key and all its content (including nested items)
|
|
392
|
+
// This handles both web_bundle: false and web_bundle: {...}
|
|
393
|
+
|
|
394
|
+
// Find the line that starts web_bundle
|
|
395
|
+
const lines = yamlContent.split('\n');
|
|
396
|
+
let startIdx = -1;
|
|
397
|
+
let endIdx = -1;
|
|
398
|
+
let baseIndent = 0;
|
|
399
|
+
|
|
400
|
+
// Find the start of web_bundle section
|
|
401
|
+
for (const [i, line] of lines.entries()) {
|
|
402
|
+
const match = line.match(/^(\s*)web_bundle:/);
|
|
403
|
+
if (match) {
|
|
404
|
+
startIdx = i;
|
|
405
|
+
baseIndent = match[1].length;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
if (startIdx === -1) {
|
|
411
|
+
// web_bundle not found in text (shouldn't happen), copy as-is
|
|
412
|
+
await fs.writeFile(targetFile, yamlContent, 'utf8');
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Find the end of web_bundle section
|
|
417
|
+
// It ends when we find a line with same or less indentation that's not empty/comment
|
|
418
|
+
endIdx = startIdx;
|
|
419
|
+
for (let i = startIdx + 1; i < lines.length; i++) {
|
|
420
|
+
const line = lines[i];
|
|
421
|
+
|
|
422
|
+
// Skip empty lines and comments
|
|
423
|
+
if (line.trim() === '' || line.trim().startsWith('#')) {
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Check indentation
|
|
428
|
+
const indent = line.match(/^(\s*)/)[1].length;
|
|
429
|
+
if (indent <= baseIndent) {
|
|
430
|
+
// Found next section at same or lower indentation
|
|
431
|
+
endIdx = i - 1;
|
|
432
|
+
break;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// If we didn't find an end, it goes to end of file
|
|
437
|
+
if (endIdx === startIdx) {
|
|
438
|
+
endIdx = lines.length - 1;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// Remove the web_bundle section (including the line before if it's just a blank line)
|
|
442
|
+
const newLines = [...lines.slice(0, startIdx), ...lines.slice(endIdx + 1)];
|
|
443
|
+
|
|
444
|
+
// Clean up any double blank lines that might result
|
|
445
|
+
const strippedYaml = newLines.join('\n').replaceAll(/\n\n\n+/g, '\n\n');
|
|
446
|
+
|
|
447
|
+
// Placeholders already replaced at the beginning of this function
|
|
448
|
+
await fs.writeFile(targetFile, strippedYaml, 'utf8');
|
|
449
|
+
} catch {
|
|
450
|
+
// If anything fails, just copy the file as-is
|
|
451
|
+
console.warn(chalk.yellow(` Warning: Could not process ${path.basename(sourceFile)}, copying as-is`));
|
|
452
|
+
await fs.copy(sourceFile, targetFile, { overwrite: true });
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Process agent files to inject activation block
|
|
458
|
+
* @param {string} modulePath - Path to installed module
|
|
459
|
+
* @param {string} moduleName - Module name
|
|
460
|
+
*/
|
|
461
|
+
async processAgentFiles(modulePath, moduleName) {
|
|
462
|
+
const agentsPath = path.join(modulePath, 'agents');
|
|
463
|
+
|
|
464
|
+
// Check if agents directory exists
|
|
465
|
+
if (!(await fs.pathExists(agentsPath))) {
|
|
466
|
+
return; // No agents to process
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// Get all agent files
|
|
470
|
+
const agentFiles = await fs.readdir(agentsPath);
|
|
471
|
+
|
|
472
|
+
for (const agentFile of agentFiles) {
|
|
473
|
+
if (!agentFile.endsWith('.md')) continue;
|
|
474
|
+
|
|
475
|
+
const agentPath = path.join(agentsPath, agentFile);
|
|
476
|
+
let content = await fs.readFile(agentPath, 'utf8');
|
|
477
|
+
|
|
478
|
+
// Check if content has agent XML and no activation block
|
|
479
|
+
if (content.includes('<agent') && !content.includes('<activation')) {
|
|
480
|
+
// Inject the activation block using XML handler
|
|
481
|
+
content = this.xmlHandler.injectActivationSimple(content);
|
|
482
|
+
await fs.writeFile(agentPath, content, 'utf8');
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Vendor cross-module workflows referenced in agent files
|
|
489
|
+
* Scans SOURCE agent.yaml files for workflow-install and copies workflows to destination
|
|
490
|
+
* @param {string} sourcePath - Source module path
|
|
491
|
+
* @param {string} targetPath - Target module path (destination)
|
|
492
|
+
* @param {string} moduleName - Module name being installed
|
|
493
|
+
*/
|
|
494
|
+
async vendorCrossModuleWorkflows(sourcePath, targetPath, moduleName) {
|
|
495
|
+
const sourceAgentsPath = path.join(sourcePath, 'agents');
|
|
496
|
+
|
|
497
|
+
// Check if source agents directory exists
|
|
498
|
+
if (!(await fs.pathExists(sourceAgentsPath))) {
|
|
499
|
+
return; // No agents to process
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// Get all agent YAML files from source
|
|
503
|
+
const agentFiles = await fs.readdir(sourceAgentsPath);
|
|
504
|
+
const yamlFiles = agentFiles.filter((f) => f.endsWith('.agent.yaml') || f.endsWith('.yaml'));
|
|
505
|
+
|
|
506
|
+
if (yamlFiles.length === 0) {
|
|
507
|
+
return; // No YAML agent files
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
let workflowsVendored = false;
|
|
511
|
+
|
|
512
|
+
for (const agentFile of yamlFiles) {
|
|
513
|
+
const agentPath = path.join(sourceAgentsPath, agentFile);
|
|
514
|
+
const agentYaml = yaml.load(await fs.readFile(agentPath, 'utf8'));
|
|
515
|
+
|
|
516
|
+
// Check if agent has menu items with workflow-install
|
|
517
|
+
const menuItems = agentYaml?.agent?.menu || [];
|
|
518
|
+
const workflowInstallItems = menuItems.filter((item) => item['workflow-install']);
|
|
519
|
+
|
|
520
|
+
if (workflowInstallItems.length === 0) {
|
|
521
|
+
continue; // No workflow-install in this agent
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if (!workflowsVendored) {
|
|
525
|
+
console.log(chalk.cyan(`\n Vendoring cross-module workflows for ${moduleName}...`));
|
|
526
|
+
workflowsVendored = true;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
console.log(chalk.dim(` Processing: ${agentFile}`));
|
|
530
|
+
|
|
531
|
+
for (const item of workflowInstallItems) {
|
|
532
|
+
const sourceWorkflowPath = item.workflow; // Where to copy FROM
|
|
533
|
+
const installWorkflowPath = item['workflow-install']; // Where to copy TO
|
|
534
|
+
|
|
535
|
+
// Parse SOURCE workflow path
|
|
536
|
+
// Handle both {xiaoma_folder} placeholder and hardcoded 'xiaoma'
|
|
537
|
+
// Example: {project-root}/{xiaoma_folder}/xmc/workflows/4-implementation/create-story/workflow.yaml
|
|
538
|
+
// Or: {project-root}/xiaoma/xmc/workflows/4-implementation/create-story/workflow.yaml
|
|
539
|
+
const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\{xiaoma_folder\}|xiaoma)\/([^/]+)\/workflows\/(.+)/);
|
|
540
|
+
if (!sourceMatch) {
|
|
541
|
+
console.warn(chalk.yellow(` Could not parse workflow path: ${sourceWorkflowPath}`));
|
|
542
|
+
continue;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
const [, sourceModule, sourceWorkflowSubPath] = sourceMatch;
|
|
546
|
+
|
|
547
|
+
// Parse INSTALL workflow path
|
|
548
|
+
// Handle both {xiaoma_folder} placeholder and hardcoded 'xiaoma'
|
|
549
|
+
// Example: {project-root}/{xiaoma_folder}/xmc/workflows/4-implementation/create-story/workflow.yaml
|
|
550
|
+
const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\{xiaoma_folder\}|xiaoma)\/([^/]+)\/workflows\/(.+)/);
|
|
551
|
+
if (!installMatch) {
|
|
552
|
+
console.warn(chalk.yellow(` Could not parse workflow-install path: ${installWorkflowPath}`));
|
|
553
|
+
continue;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const installWorkflowSubPath = installMatch[2];
|
|
557
|
+
|
|
558
|
+
// Determine actual filesystem paths
|
|
559
|
+
const sourceModulePath = path.join(this.modulesSourcePath, sourceModule);
|
|
560
|
+
const actualSourceWorkflowPath = path.join(sourceModulePath, 'workflows', sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, ''));
|
|
561
|
+
|
|
562
|
+
const actualDestWorkflowPath = path.join(targetPath, 'workflows', installWorkflowSubPath.replace(/\/workflow\.yaml$/, ''));
|
|
563
|
+
|
|
564
|
+
// Check if source workflow exists
|
|
565
|
+
if (!(await fs.pathExists(actualSourceWorkflowPath))) {
|
|
566
|
+
console.warn(chalk.yellow(` Source workflow not found: ${actualSourceWorkflowPath}`));
|
|
567
|
+
continue;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// Copy the entire workflow folder
|
|
571
|
+
console.log(
|
|
572
|
+
chalk.dim(
|
|
573
|
+
` Vendoring: ${sourceModule}/workflows/${sourceWorkflowSubPath.replace(/\/workflow\.yaml$/, '')} → ${moduleName}/workflows/${installWorkflowSubPath.replace(/\/workflow\.yaml$/, '')}`,
|
|
574
|
+
),
|
|
575
|
+
);
|
|
576
|
+
|
|
577
|
+
await fs.ensureDir(path.dirname(actualDestWorkflowPath));
|
|
578
|
+
// Copy the workflow directory recursively with placeholder replacement
|
|
579
|
+
await this.copyDirectoryWithPlaceholderReplacement(actualSourceWorkflowPath, actualDestWorkflowPath);
|
|
580
|
+
|
|
581
|
+
// Update the workflow.yaml config_source reference
|
|
582
|
+
const workflowYamlPath = path.join(actualDestWorkflowPath, 'workflow.yaml');
|
|
583
|
+
if (await fs.pathExists(workflowYamlPath)) {
|
|
584
|
+
await this.updateWorkflowConfigSource(workflowYamlPath, moduleName);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
if (workflowsVendored) {
|
|
590
|
+
console.log(chalk.green(` ✓ Workflow vendoring complete\n`));
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Update workflow.yaml config_source to point to new module
|
|
596
|
+
* @param {string} workflowYamlPath - Path to workflow.yaml file
|
|
597
|
+
* @param {string} newModuleName - New module name to reference
|
|
598
|
+
*/
|
|
599
|
+
async updateWorkflowConfigSource(workflowYamlPath, newModuleName) {
|
|
600
|
+
let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
|
|
601
|
+
|
|
602
|
+
// Replace config_source: "{project-root}/{xiaoma_folder}/OLD_MODULE/config.yaml"
|
|
603
|
+
// with config_source: "{project-root}/{xiaoma_folder}/NEW_MODULE/config.yaml"
|
|
604
|
+
// Note: At this point {xiaoma_folder} has already been replaced with actual folder name
|
|
605
|
+
const configSourcePattern = /config_source:\s*["']?\{project-root\}\/[^/]+\/[^/]+\/config\.yaml["']?/g;
|
|
606
|
+
const newConfigSource = `config_source: "{project-root}/${this.xiaomaFolderName}/${newModuleName}/config.yaml"`;
|
|
607
|
+
|
|
608
|
+
const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
|
|
609
|
+
|
|
610
|
+
if (updatedYaml !== yamlContent) {
|
|
611
|
+
await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
|
|
612
|
+
console.log(chalk.dim(` Updated config_source to: ${this.xiaomaFolderName}/${newModuleName}/config.yaml`));
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Run module-specific installer if it exists
|
|
618
|
+
* @param {string} moduleName - Name of the module
|
|
619
|
+
* @param {string} xiaomaDir - Target xiaoma directory
|
|
620
|
+
* @param {Object} options - Installation options
|
|
621
|
+
*/
|
|
622
|
+
async runModuleInstaller(moduleName, xiaomaDir, options = {}) {
|
|
623
|
+
// Special handling for core module - it's in src/core not src/modules
|
|
624
|
+
let sourcePath;
|
|
625
|
+
if (moduleName === 'core') {
|
|
626
|
+
sourcePath = getSourcePath('core');
|
|
627
|
+
} else {
|
|
628
|
+
sourcePath = path.join(this.modulesSourcePath, moduleName);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
const installerPath = path.join(sourcePath, '_module-installer', 'installer.js');
|
|
632
|
+
|
|
633
|
+
// Check if module has a custom installer
|
|
634
|
+
if (!(await fs.pathExists(installerPath))) {
|
|
635
|
+
return; // No custom installer
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
try {
|
|
639
|
+
// Load the module installer
|
|
640
|
+
const moduleInstaller = require(installerPath);
|
|
641
|
+
|
|
642
|
+
if (typeof moduleInstaller.install === 'function') {
|
|
643
|
+
// Get project root (parent of xiaoma directory)
|
|
644
|
+
const projectRoot = path.dirname(xiaomaDir);
|
|
645
|
+
|
|
646
|
+
// Prepare logger (use console if not provided)
|
|
647
|
+
const logger = options.logger || {
|
|
648
|
+
log: console.log,
|
|
649
|
+
error: console.error,
|
|
650
|
+
warn: console.warn,
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
// Call the module installer
|
|
654
|
+
const result = await moduleInstaller.install({
|
|
655
|
+
projectRoot,
|
|
656
|
+
config: options.moduleConfig || {},
|
|
657
|
+
installedIDEs: options.installedIDEs || [],
|
|
658
|
+
logger,
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
if (!result) {
|
|
662
|
+
console.warn(chalk.yellow(`Module installer for ${moduleName} returned false`));
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
} catch (error) {
|
|
666
|
+
console.error(chalk.red(`Error running module installer for ${moduleName}: ${error.message}`));
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* Private: Process module configuration
|
|
672
|
+
* @param {string} modulePath - Path to installed module
|
|
673
|
+
* @param {string} moduleName - Module name
|
|
674
|
+
*/
|
|
675
|
+
async processModuleConfig(modulePath, moduleName) {
|
|
676
|
+
const configPath = path.join(modulePath, 'config.yaml');
|
|
677
|
+
|
|
678
|
+
if (await fs.pathExists(configPath)) {
|
|
679
|
+
try {
|
|
680
|
+
let configContent = await fs.readFile(configPath, 'utf8');
|
|
681
|
+
|
|
682
|
+
// Replace path placeholders
|
|
683
|
+
configContent = configContent.replaceAll('{project-root}', `xiaoma/${moduleName}`);
|
|
684
|
+
configContent = configContent.replaceAll('{module}', moduleName);
|
|
685
|
+
|
|
686
|
+
await fs.writeFile(configPath, configContent, 'utf8');
|
|
687
|
+
} catch (error) {
|
|
688
|
+
console.warn(`Failed to process module config:`, error.message);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Private: Sync module files (preserving user modifications)
|
|
695
|
+
* @param {string} sourcePath - Source module path
|
|
696
|
+
* @param {string} targetPath - Target module path
|
|
697
|
+
*/
|
|
698
|
+
async syncModule(sourcePath, targetPath) {
|
|
699
|
+
// Get list of all source files
|
|
700
|
+
const sourceFiles = await this.getFileList(sourcePath);
|
|
701
|
+
|
|
702
|
+
for (const file of sourceFiles) {
|
|
703
|
+
const sourceFile = path.join(sourcePath, file);
|
|
704
|
+
const targetFile = path.join(targetPath, file);
|
|
705
|
+
|
|
706
|
+
// Check if target file exists and has been modified
|
|
707
|
+
if (await fs.pathExists(targetFile)) {
|
|
708
|
+
const sourceStats = await fs.stat(sourceFile);
|
|
709
|
+
const targetStats = await fs.stat(targetFile);
|
|
710
|
+
|
|
711
|
+
// Skip if target is newer (user modified)
|
|
712
|
+
if (targetStats.mtime > sourceStats.mtime) {
|
|
713
|
+
continue;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// Copy file with placeholder replacement
|
|
718
|
+
await this.copyFileWithPlaceholderReplacement(sourceFile, targetFile);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* Private: Get list of all files in a directory
|
|
724
|
+
* @param {string} dir - Directory path
|
|
725
|
+
* @param {string} baseDir - Base directory for relative paths
|
|
726
|
+
* @returns {Array} List of relative file paths
|
|
727
|
+
*/
|
|
728
|
+
async getFileList(dir, baseDir = dir) {
|
|
729
|
+
const files = [];
|
|
730
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
731
|
+
|
|
732
|
+
for (const entry of entries) {
|
|
733
|
+
const fullPath = path.join(dir, entry.name);
|
|
734
|
+
|
|
735
|
+
if (entry.isDirectory()) {
|
|
736
|
+
// Skip _module-installer directories
|
|
737
|
+
if (entry.name === '_module-installer') {
|
|
738
|
+
continue;
|
|
739
|
+
}
|
|
740
|
+
const subFiles = await this.getFileList(fullPath, baseDir);
|
|
741
|
+
files.push(...subFiles);
|
|
742
|
+
} else {
|
|
743
|
+
files.push(path.relative(baseDir, fullPath));
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
return files;
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
module.exports = { ModuleManager };
|