create-byan-agent 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API-BYAN-V2.md +741 -0
- package/BMAD-QUICK-REFERENCE.md +370 -0
- package/CHANGELOG-v2.1.0.md +371 -0
- package/LICENSE +1 -1
- package/MIGRATION-v2.0-to-v2.1.md +430 -0
- package/README-BYAN-V2.md +446 -0
- package/README.md +264 -201
- package/install/.eslintrc.js +20 -0
- package/install/.prettierrc +7 -0
- package/install/BUGFIX-CHALK.md +173 -0
- package/install/BUGFIX-DOCUMENTATION-INDEX.md +299 -0
- package/install/BUGFIX-PATH-RESOLUTION.md +293 -0
- package/install/BUGFIX-QUICKSTART.md +184 -0
- package/install/BUGFIX-SUMMARY.txt +91 -0
- package/install/BUGFIX-VISUAL-SUMMARY.md +253 -0
- package/install/DEPLOYMENT-GUIDE-V2.md +431 -0
- package/install/DOCS-INDEX.md +261 -0
- package/install/GUIDE-INSTALLATION-BYAN-SIMPLE.md +1083 -0
- package/install/INSTALLER-V2-CHANGES.md +472 -0
- package/install/LICENSE +21 -0
- package/install/PUBLICATION-CHECKLIST.md +265 -0
- package/install/PUBLISH-GUIDE.md +190 -0
- package/install/QUICKSTART.md +311 -0
- package/install/README-NPM-PUBLISH.md +298 -0
- package/install/README-NPM-SHORT.md +298 -0
- package/install/README-NPM.md +433 -0
- package/install/README-RACHID.md +302 -0
- package/install/README-V2-INDEX.md +306 -0
- package/install/README.md +298 -0
- package/install/RESUME-EXECUTIF-YAN.md +408 -0
- package/install/UPDATE-SUMMARY.md +205 -0
- package/install/__tests__/integration/detection-flow.test.js +154 -0
- package/install/__tests__/platforms/claude-code.test.js +175 -0
- package/install/__tests__/platforms/codex.test.js +80 -0
- package/install/__tests__/platforms/copilot-cli.test.js +118 -0
- package/install/__tests__/platforms/vscode.test.js +67 -0
- package/install/__tests__/utils/file-utils.test.js +87 -0
- package/install/__tests__/utils/git-detector.test.js +80 -0
- package/install/__tests__/utils/logger.test.js +83 -0
- package/install/__tests__/utils/node-detector.test.js +71 -0
- package/install/__tests__/utils/os-detector.test.js +63 -0
- package/install/__tests__/utils/yaml-utils.test.js +85 -0
- package/install/__tests__/yanstaller/detector.test.js +210 -0
- package/install/coverage/clover.xml +219 -0
- package/install/coverage/coverage-final.json +13 -0
- package/install/coverage/lcov-report/base.css +224 -0
- package/install/coverage/lcov-report/block-navigation.js +87 -0
- package/install/coverage/lcov-report/favicon.png +0 -0
- package/install/coverage/lcov-report/index.html +146 -0
- package/install/coverage/lcov-report/lib/errors.js.html +268 -0
- package/install/coverage/lcov-report/lib/exit-codes.js.html +247 -0
- package/install/coverage/lcov-report/lib/index.html +131 -0
- package/install/coverage/lcov-report/lib/platforms/claude-code.js.html +343 -0
- package/install/coverage/lcov-report/lib/platforms/codex.js.html +361 -0
- package/install/coverage/lcov-report/lib/platforms/copilot-cli.js.html +454 -0
- package/install/coverage/lcov-report/lib/platforms/index.html +176 -0
- package/install/coverage/lcov-report/lib/platforms/index.js.html +127 -0
- package/install/coverage/lcov-report/lib/platforms/vscode.js.html +238 -0
- package/install/coverage/lcov-report/lib/utils/config-loader.js.html +322 -0
- package/install/coverage/lcov-report/lib/utils/file-utils.js.html +397 -0
- package/install/coverage/lcov-report/lib/utils/git-detector.js.html +190 -0
- package/install/coverage/lcov-report/lib/utils/index.html +206 -0
- package/install/coverage/lcov-report/lib/utils/logger.js.html +277 -0
- package/install/coverage/lcov-report/lib/utils/node-detector.js.html +259 -0
- package/install/coverage/lcov-report/lib/utils/os-detector.js.html +307 -0
- package/install/coverage/lcov-report/lib/utils/yaml-utils.js.html +346 -0
- package/install/coverage/lcov-report/lib/yanstaller/backuper.js.html +409 -0
- package/install/coverage/lcov-report/lib/yanstaller/detector.js.html +508 -0
- package/install/coverage/lcov-report/lib/yanstaller/index.html +236 -0
- package/install/coverage/lcov-report/lib/yanstaller/index.js.html +364 -0
- package/install/coverage/lcov-report/lib/yanstaller/installer.js.html +505 -0
- package/install/coverage/lcov-report/lib/yanstaller/interviewer.js.html +349 -0
- package/install/coverage/lcov-report/lib/yanstaller/recommender.js.html +379 -0
- package/install/coverage/lcov-report/lib/yanstaller/troubleshooter.js.html +352 -0
- package/install/coverage/lcov-report/lib/yanstaller/validator.js.html +679 -0
- package/install/coverage/lcov-report/lib/yanstaller/wizard.js.html +412 -0
- package/install/coverage/lcov-report/platforms/claude-code.js.html +343 -0
- package/install/coverage/lcov-report/platforms/codex.js.html +361 -0
- package/install/coverage/lcov-report/platforms/copilot-cli.js.html +454 -0
- package/install/coverage/lcov-report/platforms/index.html +176 -0
- package/install/coverage/lcov-report/platforms/index.js.html +127 -0
- package/install/coverage/lcov-report/platforms/vscode.js.html +238 -0
- package/install/coverage/lcov-report/prettify.css +1 -0
- package/install/coverage/lcov-report/prettify.js +2 -0
- package/install/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/install/coverage/lcov-report/sorter.js +210 -0
- package/install/coverage/lcov-report/utils/file-utils.js.html +397 -0
- package/install/coverage/lcov-report/utils/git-detector.js.html +190 -0
- package/install/coverage/lcov-report/utils/index.html +191 -0
- package/install/coverage/lcov-report/utils/logger.js.html +277 -0
- package/install/coverage/lcov-report/utils/node-detector.js.html +259 -0
- package/install/coverage/lcov-report/utils/os-detector.js.html +307 -0
- package/install/coverage/lcov-report/utils/yaml-utils.js.html +346 -0
- package/install/coverage/lcov-report/yanstaller/detector.js.html +508 -0
- package/install/coverage/lcov-report/yanstaller/index.html +116 -0
- package/install/coverage/lcov.info +414 -0
- package/install/install.sh +239 -0
- package/install/jest.config.js +33 -0
- package/install/lib/errors.js +61 -0
- package/install/lib/exit-codes.js +54 -0
- package/install/lib/platforms/claude-code.js +86 -0
- package/install/lib/platforms/codex.js +92 -0
- package/install/lib/platforms/copilot-cli.js +123 -0
- package/install/lib/platforms/index.js +14 -0
- package/install/lib/platforms/vscode.js +51 -0
- package/install/lib/utils/config-loader.js +79 -0
- package/install/lib/utils/file-utils.js +104 -0
- package/install/lib/utils/git-detector.js +35 -0
- package/install/lib/utils/logger.js +64 -0
- package/install/lib/utils/node-detector.js +58 -0
- package/install/lib/utils/os-detector.js +74 -0
- package/install/lib/utils/yaml-utils.js +87 -0
- package/install/lib/yanstaller/backuper.js +108 -0
- package/install/lib/yanstaller/detector.js +141 -0
- package/install/lib/yanstaller/index.js +93 -0
- package/install/lib/yanstaller/installer.js +140 -0
- package/install/lib/yanstaller/interviewer.js +88 -0
- package/install/lib/yanstaller/recommender.js +98 -0
- package/install/lib/yanstaller/troubleshooter.js +89 -0
- package/install/lib/yanstaller/validator.js +198 -0
- package/install/lib/yanstaller/wizard.js +109 -0
- package/install/package-npm.json +55 -0
- package/install/package.json +63 -0
- package/install/src/byan-v2/context/copilot-context.js +79 -0
- package/install/src/byan-v2/context/session-state.js +98 -0
- package/install/src/byan-v2/dispatcher/complexity-scorer.js +232 -0
- package/install/src/byan-v2/dispatcher/local-executor.js +221 -0
- package/install/src/byan-v2/dispatcher/task-router.js +122 -0
- package/install/src/byan-v2/dispatcher/task-tool-interface-mock.js +134 -0
- package/install/src/byan-v2/dispatcher/task-tool-interface.js +123 -0
- package/install/src/byan-v2/generation/agent-profile-validator.js +113 -0
- package/install/src/byan-v2/generation/profile-template.js +113 -0
- package/install/src/byan-v2/generation/templates/default-agent.md +49 -0
- package/install/src/byan-v2/generation/templates/test-template.md +1 -0
- package/install/src/byan-v2/index.js +199 -0
- package/install/src/byan-v2/observability/error-tracker.js +105 -0
- package/install/src/byan-v2/observability/logger.js +154 -0
- package/install/src/byan-v2/observability/metrics-collector.js +194 -0
- package/install/src/byan-v2/orchestrator/analysis-state.js +268 -0
- package/install/src/byan-v2/orchestrator/generation-state.js +340 -0
- package/install/src/byan-v2/orchestrator/interview-state.js +271 -0
- package/install/src/byan-v2/orchestrator/state-machine.js +204 -0
- package/install/src/core/cache/cache.js +126 -0
- package/install/src/core/context/context.js +86 -0
- package/install/src/core/dispatcher/dispatcher.js +135 -0
- package/install/src/core/worker-pool/worker-pool.js +194 -0
- package/install/src/core/workflow/workflow-executor.js +220 -0
- package/install/src/index.js +139 -0
- package/install/src/observability/dashboard/dashboard.js +191 -0
- package/install/src/observability/logger/structured-logger.js +254 -0
- package/install/src/observability/metrics/metrics-collector.js +325 -0
- package/install/switch-to-v2.sh +126 -0
- package/install/test-chalk-fix.sh +210 -0
- package/install/test-installer-v2.sh +204 -0
- package/install/test-path-resolution.sh +200 -0
- package/package.json +53 -33
- package/src/byan-v2/context/copilot-context.js +79 -0
- package/src/byan-v2/context/session-state.js +98 -0
- package/src/byan-v2/data/mantras.json +852 -0
- package/src/byan-v2/dispatcher/complexity-scorer.js +232 -0
- package/src/byan-v2/dispatcher/five-whys-analyzer.js +310 -0
- package/src/byan-v2/dispatcher/local-executor.js +221 -0
- package/src/byan-v2/dispatcher/task-router.js +122 -0
- package/src/byan-v2/dispatcher/task-tool-interface-mock.js +134 -0
- package/src/byan-v2/dispatcher/task-tool-interface.js +123 -0
- package/src/byan-v2/generation/agent-profile-validator.js +113 -0
- package/src/byan-v2/generation/mantra-validator.js +416 -0
- package/src/byan-v2/generation/profile-template.js +113 -0
- package/src/byan-v2/generation/templates/default-agent.md +49 -0
- package/src/byan-v2/generation/templates/test-template.md +1 -0
- package/src/byan-v2/index.js +652 -0
- package/src/byan-v2/integration/voice-integration.js +295 -0
- package/src/byan-v2/observability/error-tracker.js +105 -0
- package/src/byan-v2/observability/logger.js +154 -0
- package/src/byan-v2/observability/metrics-collector.js +194 -0
- package/src/byan-v2/orchestrator/active-listener.js +541 -0
- package/src/byan-v2/orchestrator/analysis-state.js +268 -0
- package/src/byan-v2/orchestrator/generation-state.js +340 -0
- package/src/byan-v2/orchestrator/glossary-builder.js +431 -0
- package/src/byan-v2/orchestrator/interview-state.js +353 -0
- package/src/byan-v2/orchestrator/state-machine.js +253 -0
- package/src/core/cache/cache.js +126 -0
- package/src/core/context/context.js +86 -0
- package/src/core/dispatcher/dispatcher.js +135 -0
- package/src/core/worker-pool/worker-pool.js +194 -0
- package/src/core/workflow/workflow-executor.js +220 -0
- package/src/index.js +139 -0
- package/src/observability/dashboard/dashboard.js +191 -0
- package/src/observability/logger/structured-logger.js +254 -0
- package/src/observability/metrics/metrics-collector.js +325 -0
- package/templates/.github/agents/bmad-agent-test-dynamic.md +0 -21
- package/templates/.github/agents/franck.md +0 -379
- /package/{CHANGELOG.md → install/CHANGELOG.md} +0 -0
- /package/{bin → install/bin}/create-byan-agent-backup.js +0 -0
- /package/{bin → install/bin}/create-byan-agent-fixed.js +0 -0
- /package/{bin → install/bin}/create-byan-agent-v2.js +0 -0
- /package/{bin → install/bin}/create-byan-agent.js +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmad-master.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-agent-builder.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-module-builder.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-analyst.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-architect.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-dev.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-pm.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-quinn.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-sm.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-tech-writer.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-ux-designer.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-byan-test.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-byan.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-carmack.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-presentation-master.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-cis-storyteller.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-marc.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-patnote.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-rachid.md +0 -0
- /package/{templates → install/templates}/.github/agents/bmad-agent-tea-tea.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/agent-builder.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/byan-test.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/byan.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/marc.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/module-builder.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/patnote.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/rachid.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/agents/workflow-builder.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/data/mantras.yaml +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/data/templates.yaml +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/delete-agent-workflow.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/edit-agent-workflow.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/interview-workflow.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/quick-create-workflow.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/templates/base-agent-template.md +0 -0
- /package/{templates → install/templates}/_bmad/bmb/workflows/byan/validate-agent-workflow.md +0 -0
- /package/{templates → install/templates}/_bmad/core/agents/carmack.md +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* INSTALLER Module
|
|
3
|
+
*
|
|
4
|
+
* Installs BYAN agents across multiple platforms.
|
|
5
|
+
* Most complex module: 56h development.
|
|
6
|
+
*
|
|
7
|
+
* Phase 3: 56h development
|
|
8
|
+
*
|
|
9
|
+
* @module yanstaller/installer
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const fileUtils = require('../utils/file-utils');
|
|
14
|
+
const logger = require('../utils/logger');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {Object} InstallConfig
|
|
18
|
+
* @property {string} mode - 'full' | 'minimal' | 'custom'
|
|
19
|
+
* @property {string[]} agents - Agent names to install
|
|
20
|
+
* @property {string} userName - User's name
|
|
21
|
+
* @property {string} language - 'Francais' | 'English'
|
|
22
|
+
* @property {string[]} targetPlatforms - Platforms to install on
|
|
23
|
+
* @property {string} outputFolder - Output folder path
|
|
24
|
+
* @property {string} projectRoot - Project root directory
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {Object} InstallResult
|
|
29
|
+
* @property {boolean} success
|
|
30
|
+
* @property {number} agentsInstalled - Number of agents installed
|
|
31
|
+
* @property {string[]} platforms - Platforms installed on
|
|
32
|
+
* @property {string[]} errors - Installation errors
|
|
33
|
+
* @property {number} duration - Duration in ms
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Install BYAN agents
|
|
38
|
+
*
|
|
39
|
+
* @param {InstallConfig} config - Installation configuration
|
|
40
|
+
* @returns {Promise<InstallResult>}
|
|
41
|
+
*/
|
|
42
|
+
async function install(config) {
|
|
43
|
+
const startTime = Date.now();
|
|
44
|
+
const errors = [];
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
// TODO: Implement installation
|
|
48
|
+
// 1. Create _bmad/ structure
|
|
49
|
+
// 2. Copy agent files from templates/
|
|
50
|
+
// 3. Generate platform-specific stubs
|
|
51
|
+
// 4. Create config files
|
|
52
|
+
|
|
53
|
+
logger.info(`Installing ${config.agents.length} agents...`);
|
|
54
|
+
|
|
55
|
+
// Placeholder
|
|
56
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
success: true,
|
|
60
|
+
agentsInstalled: config.agents.length,
|
|
61
|
+
platforms: config.targetPlatforms,
|
|
62
|
+
errors,
|
|
63
|
+
duration: Date.now() - startTime
|
|
64
|
+
};
|
|
65
|
+
} catch (error) {
|
|
66
|
+
errors.push(error.message);
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
agentsInstalled: 0,
|
|
70
|
+
platforms: [],
|
|
71
|
+
errors,
|
|
72
|
+
duration: Date.now() - startTime
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Create _bmad/ directory structure
|
|
79
|
+
*
|
|
80
|
+
* @param {string} projectRoot - Project root directory
|
|
81
|
+
* @returns {Promise<void>}
|
|
82
|
+
*/
|
|
83
|
+
async function createBmadStructure(projectRoot) {
|
|
84
|
+
// TODO: Create directories
|
|
85
|
+
// _bmad/
|
|
86
|
+
// ├── _config/
|
|
87
|
+
// ├── _memory/
|
|
88
|
+
// ├── core/
|
|
89
|
+
// ├── bmm/
|
|
90
|
+
// ├── bmb/
|
|
91
|
+
// ├── tea/
|
|
92
|
+
// └── cis/
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Copy agent file from template
|
|
97
|
+
*
|
|
98
|
+
* @param {string} agentName - Agent name
|
|
99
|
+
* @param {string} targetPath - Target directory
|
|
100
|
+
* @returns {Promise<void>}
|
|
101
|
+
*/
|
|
102
|
+
async function copyAgentFile(agentName, targetPath) {
|
|
103
|
+
// TODO: Copy from lib/templates/agents/{agentName}.md
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Generate platform-specific stub
|
|
108
|
+
*
|
|
109
|
+
* @param {string} agentName - Agent name
|
|
110
|
+
* @param {string} platform - Platform name
|
|
111
|
+
* @param {string} targetPath - Target directory
|
|
112
|
+
* @returns {Promise<void>}
|
|
113
|
+
*/
|
|
114
|
+
async function generateStub(agentName, platform, targetPath) {
|
|
115
|
+
// TODO: Generate stub based on platform
|
|
116
|
+
// - Copilot CLI: .github/agents/{agentName}.md with YAML frontmatter
|
|
117
|
+
// - VSCode: Same as Copilot CLI
|
|
118
|
+
// - Claude Code: MCP config JSON
|
|
119
|
+
// - Codex: .codex/prompts/{agentName}.md
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Create module config file
|
|
124
|
+
*
|
|
125
|
+
* @param {string} moduleName - Module name (core, bmm, bmb, tea, cis)
|
|
126
|
+
* @param {InstallConfig} config - Installation config
|
|
127
|
+
* @param {string} targetPath - Target directory
|
|
128
|
+
* @returns {Promise<void>}
|
|
129
|
+
*/
|
|
130
|
+
async function createModuleConfig(moduleName, config, targetPath) {
|
|
131
|
+
// TODO: Generate config.yaml with user settings
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
module.exports = {
|
|
135
|
+
install,
|
|
136
|
+
createBmadStructure,
|
|
137
|
+
copyAgentFile,
|
|
138
|
+
generateStub,
|
|
139
|
+
createModuleConfig
|
|
140
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* INTERVIEWER Module
|
|
3
|
+
*
|
|
4
|
+
* Conducts quick interview (5-7 questions, <5 min) to personalize installation.
|
|
5
|
+
*
|
|
6
|
+
* Phase 6 (part of 7): 16h development
|
|
7
|
+
*
|
|
8
|
+
* @module yanstaller/interviewer
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const inquirer = require('inquirer');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {Object} InterviewResult
|
|
15
|
+
* @property {string} userName
|
|
16
|
+
* @property {string} language - 'Francais' | 'English'
|
|
17
|
+
* @property {string} mode - 'full' | 'minimal' | 'custom'
|
|
18
|
+
* @property {string[]} agents - Selected agents (if custom mode)
|
|
19
|
+
* @property {string[]} targetPlatforms - Platforms to install on
|
|
20
|
+
* @property {boolean} createSampleAgent - Whether to create sample agent after install
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Run quick interview
|
|
25
|
+
*
|
|
26
|
+
* @param {import('./recommender').Recommendation} recommendation - Recommended config
|
|
27
|
+
* @returns {Promise<InterviewResult>}
|
|
28
|
+
*/
|
|
29
|
+
async function ask(recommendation) {
|
|
30
|
+
// TODO: Implement inquirer prompts
|
|
31
|
+
// Q1: Your name?
|
|
32
|
+
// Q2: Preferred language?
|
|
33
|
+
// Q3: Installation mode? (with recommendation)
|
|
34
|
+
// Q4: (if custom) Which agents?
|
|
35
|
+
// Q5: Which platforms to install on?
|
|
36
|
+
// Q6: Create sample agent after install?
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
userName: 'User',
|
|
40
|
+
language: 'English',
|
|
41
|
+
mode: recommendation.mode,
|
|
42
|
+
agents: recommendation.agents,
|
|
43
|
+
targetPlatforms: ['copilot-cli'],
|
|
44
|
+
createSampleAgent: false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Ask single question
|
|
50
|
+
*
|
|
51
|
+
* @param {string} question - Question text
|
|
52
|
+
* @param {string} type - 'input' | 'list' | 'confirm' | 'checkbox'
|
|
53
|
+
* @param {Array} [choices] - Choices for list/checkbox
|
|
54
|
+
* @returns {Promise<any>}
|
|
55
|
+
*/
|
|
56
|
+
async function askQuestion(question, type, choices = []) {
|
|
57
|
+
// TODO: Use inquirer
|
|
58
|
+
const answer = await inquirer.prompt([
|
|
59
|
+
{
|
|
60
|
+
type,
|
|
61
|
+
name: 'answer',
|
|
62
|
+
message: question,
|
|
63
|
+
choices
|
|
64
|
+
}
|
|
65
|
+
]);
|
|
66
|
+
|
|
67
|
+
return answer.answer;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get available agents list for custom selection
|
|
72
|
+
*
|
|
73
|
+
* @returns {Array<{name: string, value: string, checked: boolean}>}
|
|
74
|
+
*/
|
|
75
|
+
function getAgentChoices() {
|
|
76
|
+
// TODO: Return all 29 agents with descriptions
|
|
77
|
+
return [
|
|
78
|
+
{ name: 'BYAN - Agent Creator', value: 'byan', checked: true },
|
|
79
|
+
{ name: 'RACHID - NPM Deployment', value: 'rachid', checked: true },
|
|
80
|
+
// ... 27 more
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
module.exports = {
|
|
85
|
+
ask,
|
|
86
|
+
askQuestion,
|
|
87
|
+
getAgentChoices
|
|
88
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RECOMMENDER Module
|
|
3
|
+
*
|
|
4
|
+
* Analyzes project and recommends optimal BYAN configuration.
|
|
5
|
+
*
|
|
6
|
+
* Phase 2: 24h development
|
|
7
|
+
*
|
|
8
|
+
* @module yanstaller/recommender
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} Recommendation
|
|
13
|
+
* @property {string} mode - 'full' | 'minimal' | 'custom'
|
|
14
|
+
* @property {string[]} agents - Recommended agent names
|
|
15
|
+
* @property {string} reason - Why this recommendation
|
|
16
|
+
* @property {string} projectType - 'frontend' | 'backend' | 'fullstack' | 'library' | 'unknown'
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Analyze project and recommend configuration
|
|
21
|
+
*
|
|
22
|
+
* @param {import('./detector').DetectionResult} detection - Detection results
|
|
23
|
+
* @returns {Promise<Recommendation>}
|
|
24
|
+
*/
|
|
25
|
+
async function recommend(detection) {
|
|
26
|
+
// TODO: Implement recommendation logic
|
|
27
|
+
// - Analyze package.json, requirements.txt, go.mod, etc.
|
|
28
|
+
// - Detect project type (frontend/backend/fullstack)
|
|
29
|
+
// - Recommend agents based on stack
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
mode: 'minimal',
|
|
33
|
+
agents: ['byan', 'rachid', 'marc', 'patnote', 'carmack'],
|
|
34
|
+
reason: 'Default minimal installation for new users',
|
|
35
|
+
projectType: 'unknown'
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Analyze package.json to detect stack
|
|
41
|
+
*
|
|
42
|
+
* @param {string} packageJsonPath - Path to package.json
|
|
43
|
+
* @returns {Promise<{isFrontend: boolean, isBackend: boolean, framework: string}>}
|
|
44
|
+
*/
|
|
45
|
+
async function analyzePackageJson(packageJsonPath) {
|
|
46
|
+
// TODO: Read package.json, check dependencies
|
|
47
|
+
// - React/Vue/Angular → frontend
|
|
48
|
+
// - Express/Fastify/Nest → backend
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
isFrontend: false,
|
|
52
|
+
isBackend: false,
|
|
53
|
+
framework: 'unknown'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get agent list for installation mode
|
|
59
|
+
*
|
|
60
|
+
* @param {string} mode - 'full' | 'minimal' | 'custom'
|
|
61
|
+
* @param {string[]} [customAgents] - Custom agent selection
|
|
62
|
+
* @returns {string[]}
|
|
63
|
+
*/
|
|
64
|
+
function getAgentList(mode, customAgents = []) {
|
|
65
|
+
const MINIMAL_AGENTS = ['byan', 'rachid', 'marc', 'patnote', 'carmack'];
|
|
66
|
+
const FULL_AGENTS = [
|
|
67
|
+
// Core (5)
|
|
68
|
+
'byan', 'rachid', 'marc', 'patnote', 'carmack',
|
|
69
|
+
// BMM (9)
|
|
70
|
+
'analyst', 'pm', 'architect', 'dev', 'sm', 'quinn', 'ux-designer', 'tech-writer', 'quick-flow-solo-dev',
|
|
71
|
+
// BMB (3)
|
|
72
|
+
'agent-builder', 'module-builder', 'workflow-builder',
|
|
73
|
+
// TEA (1)
|
|
74
|
+
'tea',
|
|
75
|
+
// CIS (6)
|
|
76
|
+
'brainstorming-coach', 'creative-problem-solver', 'design-thinking-coach',
|
|
77
|
+
'innovation-strategist', 'presentation-master', 'storyteller',
|
|
78
|
+
// BYAN Test (1)
|
|
79
|
+
'byan-test'
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
switch (mode) {
|
|
83
|
+
case 'full':
|
|
84
|
+
return FULL_AGENTS;
|
|
85
|
+
case 'minimal':
|
|
86
|
+
return MINIMAL_AGENTS;
|
|
87
|
+
case 'custom':
|
|
88
|
+
return customAgents;
|
|
89
|
+
default:
|
|
90
|
+
return MINIMAL_AGENTS;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
module.exports = {
|
|
95
|
+
recommend,
|
|
96
|
+
analyzePackageJson,
|
|
97
|
+
getAgentList
|
|
98
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TROUBLESHOOTER Module
|
|
3
|
+
*
|
|
4
|
+
* Diagnoses and fixes common installation errors.
|
|
5
|
+
*
|
|
6
|
+
* Phase 5: 40h development
|
|
7
|
+
*
|
|
8
|
+
* @module yanstaller/troubleshooter
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} DiagnosticResult
|
|
13
|
+
* @property {string} error - Error type
|
|
14
|
+
* @property {string} cause - Root cause
|
|
15
|
+
* @property {string} solution - Recommended solution
|
|
16
|
+
* @property {boolean} canAutoFix - Whether auto-fix is available
|
|
17
|
+
* @property {Function} [autoFix] - Auto-fix function
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Diagnose installation error
|
|
22
|
+
*
|
|
23
|
+
* @param {Error} error - Installation error
|
|
24
|
+
* @param {Object} context - Installation context
|
|
25
|
+
* @returns {Promise<DiagnosticResult>}
|
|
26
|
+
*/
|
|
27
|
+
async function diagnose(error, context) {
|
|
28
|
+
// TODO: Pattern match error and return diagnostic
|
|
29
|
+
// Common errors:
|
|
30
|
+
// - Node version too old
|
|
31
|
+
// - Permission denied
|
|
32
|
+
// - Git not found
|
|
33
|
+
// - Platform not detected
|
|
34
|
+
// - Network error (template download)
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
error: error.message,
|
|
38
|
+
cause: 'Unknown',
|
|
39
|
+
solution: 'Please check logs',
|
|
40
|
+
canAutoFix: false
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Auto-fix permission error
|
|
46
|
+
*
|
|
47
|
+
* @param {string} path - File path with permission issue
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
async function fixPermissions(path) {
|
|
51
|
+
// TODO: chmod/chown on Unix, icacls on Windows
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Suggest Node.js upgrade
|
|
56
|
+
*
|
|
57
|
+
* @param {string} currentVersion - Current Node version
|
|
58
|
+
* @param {string} requiredVersion - Required Node version
|
|
59
|
+
* @returns {string} - Upgrade instructions
|
|
60
|
+
*/
|
|
61
|
+
function suggestNodeUpgrade(currentVersion, requiredVersion) {
|
|
62
|
+
// TODO: OS-specific instructions
|
|
63
|
+
return `Please upgrade Node.js from ${currentVersion} to ${requiredVersion}+`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Check common issues
|
|
68
|
+
*
|
|
69
|
+
* @returns {Promise<string[]>} - List of detected issues
|
|
70
|
+
*/
|
|
71
|
+
async function checkCommonIssues() {
|
|
72
|
+
const issues = [];
|
|
73
|
+
|
|
74
|
+
// TODO: Check for:
|
|
75
|
+
// - Old Node version
|
|
76
|
+
// - Missing Git
|
|
77
|
+
// - Write permission in project root
|
|
78
|
+
// - Disk space
|
|
79
|
+
// - Network connectivity
|
|
80
|
+
|
|
81
|
+
return issues;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
module.exports = {
|
|
85
|
+
diagnose,
|
|
86
|
+
fixPermissions,
|
|
87
|
+
suggestNodeUpgrade,
|
|
88
|
+
checkCommonIssues
|
|
89
|
+
};
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VALIDATOR Module
|
|
3
|
+
*
|
|
4
|
+
* Validates BYAN installation with 10 automated checks.
|
|
5
|
+
*
|
|
6
|
+
* Phase 4: 32h development
|
|
7
|
+
*
|
|
8
|
+
* @module yanstaller/validator
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} ValidationResult
|
|
13
|
+
* @property {boolean} success - All checks passed
|
|
14
|
+
* @property {CheckResult[]} checks - Individual check results
|
|
15
|
+
* @property {string[]} errors - Critical errors
|
|
16
|
+
* @property {string[]} warnings - Non-critical issues
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {Object} CheckResult
|
|
21
|
+
* @property {string} id - Check identifier
|
|
22
|
+
* @property {string} name - Human-readable check name
|
|
23
|
+
* @property {boolean} passed
|
|
24
|
+
* @property {string} [message] - Error/warning message if failed
|
|
25
|
+
* @property {string} severity - 'critical' | 'warning'
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Validate BYAN installation
|
|
30
|
+
*
|
|
31
|
+
* @param {import('./installer').InstallConfig} config - Installation config
|
|
32
|
+
* @returns {Promise<ValidationResult>}
|
|
33
|
+
*/
|
|
34
|
+
async function validate(config) {
|
|
35
|
+
const checks = [];
|
|
36
|
+
const errors = [];
|
|
37
|
+
const warnings = [];
|
|
38
|
+
|
|
39
|
+
// TODO: Run all 10 checks
|
|
40
|
+
checks.push(await checkBmadStructure(config));
|
|
41
|
+
checks.push(await checkAgentFiles(config));
|
|
42
|
+
checks.push(await checkStubsYamlFrontmatter(config));
|
|
43
|
+
checks.push(await checkConfigFiles(config));
|
|
44
|
+
checks.push(await checkPlatformDetection(config));
|
|
45
|
+
checks.push(await checkFilePermissions(config));
|
|
46
|
+
checks.push(await checkManifests(config));
|
|
47
|
+
checks.push(await checkWorkflows(config));
|
|
48
|
+
checks.push(await checkTemplates(config));
|
|
49
|
+
checks.push(await checkDependencies(config));
|
|
50
|
+
|
|
51
|
+
const allPassed = checks.every(c => c.passed || c.severity === 'warning');
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
success: allPassed,
|
|
55
|
+
checks,
|
|
56
|
+
errors,
|
|
57
|
+
warnings
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Check 1: _bmad/ structure exists
|
|
63
|
+
*/
|
|
64
|
+
async function checkBmadStructure(config) {
|
|
65
|
+
// TODO: Verify directories exist
|
|
66
|
+
return {
|
|
67
|
+
id: 'bmad-structure',
|
|
68
|
+
name: '_bmad/ structure',
|
|
69
|
+
passed: true,
|
|
70
|
+
severity: 'critical'
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Check 2: Agent files copied correctly
|
|
76
|
+
*/
|
|
77
|
+
async function checkAgentFiles(config) {
|
|
78
|
+
// TODO: Verify all agent .md files exist
|
|
79
|
+
return {
|
|
80
|
+
id: 'agent-files',
|
|
81
|
+
name: 'Agent files',
|
|
82
|
+
passed: true,
|
|
83
|
+
severity: 'critical'
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Check 3: Platform stubs have valid YAML frontmatter
|
|
89
|
+
*/
|
|
90
|
+
async function checkStubsYamlFrontmatter(config) {
|
|
91
|
+
// TODO: Parse YAML frontmatter in .github/agents/*.md
|
|
92
|
+
return {
|
|
93
|
+
id: 'yaml-frontmatter',
|
|
94
|
+
name: 'YAML frontmatter',
|
|
95
|
+
passed: true,
|
|
96
|
+
severity: 'critical'
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Check 4: Module config files valid
|
|
102
|
+
*/
|
|
103
|
+
async function checkConfigFiles(config) {
|
|
104
|
+
// TODO: Verify config.yaml files
|
|
105
|
+
return {
|
|
106
|
+
id: 'config-files',
|
|
107
|
+
name: 'Config files',
|
|
108
|
+
passed: true,
|
|
109
|
+
severity: 'critical'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Check 5: Platform detection works
|
|
115
|
+
*/
|
|
116
|
+
async function checkPlatformDetection(config) {
|
|
117
|
+
// TODO: Test agent detection on each platform
|
|
118
|
+
return {
|
|
119
|
+
id: 'platform-detection',
|
|
120
|
+
name: 'Platform detection',
|
|
121
|
+
passed: true,
|
|
122
|
+
severity: 'critical'
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Check 6: File permissions correct
|
|
128
|
+
*/
|
|
129
|
+
async function checkFilePermissions(config) {
|
|
130
|
+
// TODO: Verify read/write permissions
|
|
131
|
+
return {
|
|
132
|
+
id: 'file-permissions',
|
|
133
|
+
name: 'File permissions',
|
|
134
|
+
passed: true,
|
|
135
|
+
severity: 'warning'
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Check 7: Manifest files valid
|
|
141
|
+
*/
|
|
142
|
+
async function checkManifests(config) {
|
|
143
|
+
// TODO: Verify agent-manifest.csv, workflow-manifest.csv
|
|
144
|
+
return {
|
|
145
|
+
id: 'manifests',
|
|
146
|
+
name: 'Manifest files',
|
|
147
|
+
passed: true,
|
|
148
|
+
severity: 'warning'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Check 8: Workflows accessible
|
|
154
|
+
*/
|
|
155
|
+
async function checkWorkflows(config) {
|
|
156
|
+
// TODO: Verify workflow files exist
|
|
157
|
+
return {
|
|
158
|
+
id: 'workflows',
|
|
159
|
+
name: 'Workflow files',
|
|
160
|
+
passed: true,
|
|
161
|
+
severity: 'warning'
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Check 9: Templates valid
|
|
167
|
+
*/
|
|
168
|
+
async function checkTemplates(config) {
|
|
169
|
+
// TODO: Verify templates/ structure
|
|
170
|
+
return {
|
|
171
|
+
id: 'templates',
|
|
172
|
+
name: 'Template files',
|
|
173
|
+
passed: true,
|
|
174
|
+
severity: 'warning'
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Check 10: Dependencies installed
|
|
180
|
+
*/
|
|
181
|
+
async function checkDependencies(config) {
|
|
182
|
+
// TODO: Verify npm dependencies
|
|
183
|
+
return {
|
|
184
|
+
id: 'dependencies',
|
|
185
|
+
name: 'Dependencies',
|
|
186
|
+
passed: true,
|
|
187
|
+
severity: 'critical'
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
module.exports = {
|
|
192
|
+
validate,
|
|
193
|
+
checkBmadStructure,
|
|
194
|
+
checkAgentFiles,
|
|
195
|
+
checkStubsYamlFrontmatter,
|
|
196
|
+
checkConfigFiles,
|
|
197
|
+
checkPlatformDetection
|
|
198
|
+
};
|