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.
Files changed (240) hide show
  1. package/API-BYAN-V2.md +741 -0
  2. package/BMAD-QUICK-REFERENCE.md +370 -0
  3. package/CHANGELOG-v2.1.0.md +371 -0
  4. package/LICENSE +1 -1
  5. package/MIGRATION-v2.0-to-v2.1.md +430 -0
  6. package/README-BYAN-V2.md +446 -0
  7. package/README.md +264 -201
  8. package/install/.eslintrc.js +20 -0
  9. package/install/.prettierrc +7 -0
  10. package/install/BUGFIX-CHALK.md +173 -0
  11. package/install/BUGFIX-DOCUMENTATION-INDEX.md +299 -0
  12. package/install/BUGFIX-PATH-RESOLUTION.md +293 -0
  13. package/install/BUGFIX-QUICKSTART.md +184 -0
  14. package/install/BUGFIX-SUMMARY.txt +91 -0
  15. package/install/BUGFIX-VISUAL-SUMMARY.md +253 -0
  16. package/install/DEPLOYMENT-GUIDE-V2.md +431 -0
  17. package/install/DOCS-INDEX.md +261 -0
  18. package/install/GUIDE-INSTALLATION-BYAN-SIMPLE.md +1083 -0
  19. package/install/INSTALLER-V2-CHANGES.md +472 -0
  20. package/install/LICENSE +21 -0
  21. package/install/PUBLICATION-CHECKLIST.md +265 -0
  22. package/install/PUBLISH-GUIDE.md +190 -0
  23. package/install/QUICKSTART.md +311 -0
  24. package/install/README-NPM-PUBLISH.md +298 -0
  25. package/install/README-NPM-SHORT.md +298 -0
  26. package/install/README-NPM.md +433 -0
  27. package/install/README-RACHID.md +302 -0
  28. package/install/README-V2-INDEX.md +306 -0
  29. package/install/README.md +298 -0
  30. package/install/RESUME-EXECUTIF-YAN.md +408 -0
  31. package/install/UPDATE-SUMMARY.md +205 -0
  32. package/install/__tests__/integration/detection-flow.test.js +154 -0
  33. package/install/__tests__/platforms/claude-code.test.js +175 -0
  34. package/install/__tests__/platforms/codex.test.js +80 -0
  35. package/install/__tests__/platforms/copilot-cli.test.js +118 -0
  36. package/install/__tests__/platforms/vscode.test.js +67 -0
  37. package/install/__tests__/utils/file-utils.test.js +87 -0
  38. package/install/__tests__/utils/git-detector.test.js +80 -0
  39. package/install/__tests__/utils/logger.test.js +83 -0
  40. package/install/__tests__/utils/node-detector.test.js +71 -0
  41. package/install/__tests__/utils/os-detector.test.js +63 -0
  42. package/install/__tests__/utils/yaml-utils.test.js +85 -0
  43. package/install/__tests__/yanstaller/detector.test.js +210 -0
  44. package/install/coverage/clover.xml +219 -0
  45. package/install/coverage/coverage-final.json +13 -0
  46. package/install/coverage/lcov-report/base.css +224 -0
  47. package/install/coverage/lcov-report/block-navigation.js +87 -0
  48. package/install/coverage/lcov-report/favicon.png +0 -0
  49. package/install/coverage/lcov-report/index.html +146 -0
  50. package/install/coverage/lcov-report/lib/errors.js.html +268 -0
  51. package/install/coverage/lcov-report/lib/exit-codes.js.html +247 -0
  52. package/install/coverage/lcov-report/lib/index.html +131 -0
  53. package/install/coverage/lcov-report/lib/platforms/claude-code.js.html +343 -0
  54. package/install/coverage/lcov-report/lib/platforms/codex.js.html +361 -0
  55. package/install/coverage/lcov-report/lib/platforms/copilot-cli.js.html +454 -0
  56. package/install/coverage/lcov-report/lib/platforms/index.html +176 -0
  57. package/install/coverage/lcov-report/lib/platforms/index.js.html +127 -0
  58. package/install/coverage/lcov-report/lib/platforms/vscode.js.html +238 -0
  59. package/install/coverage/lcov-report/lib/utils/config-loader.js.html +322 -0
  60. package/install/coverage/lcov-report/lib/utils/file-utils.js.html +397 -0
  61. package/install/coverage/lcov-report/lib/utils/git-detector.js.html +190 -0
  62. package/install/coverage/lcov-report/lib/utils/index.html +206 -0
  63. package/install/coverage/lcov-report/lib/utils/logger.js.html +277 -0
  64. package/install/coverage/lcov-report/lib/utils/node-detector.js.html +259 -0
  65. package/install/coverage/lcov-report/lib/utils/os-detector.js.html +307 -0
  66. package/install/coverage/lcov-report/lib/utils/yaml-utils.js.html +346 -0
  67. package/install/coverage/lcov-report/lib/yanstaller/backuper.js.html +409 -0
  68. package/install/coverage/lcov-report/lib/yanstaller/detector.js.html +508 -0
  69. package/install/coverage/lcov-report/lib/yanstaller/index.html +236 -0
  70. package/install/coverage/lcov-report/lib/yanstaller/index.js.html +364 -0
  71. package/install/coverage/lcov-report/lib/yanstaller/installer.js.html +505 -0
  72. package/install/coverage/lcov-report/lib/yanstaller/interviewer.js.html +349 -0
  73. package/install/coverage/lcov-report/lib/yanstaller/recommender.js.html +379 -0
  74. package/install/coverage/lcov-report/lib/yanstaller/troubleshooter.js.html +352 -0
  75. package/install/coverage/lcov-report/lib/yanstaller/validator.js.html +679 -0
  76. package/install/coverage/lcov-report/lib/yanstaller/wizard.js.html +412 -0
  77. package/install/coverage/lcov-report/platforms/claude-code.js.html +343 -0
  78. package/install/coverage/lcov-report/platforms/codex.js.html +361 -0
  79. package/install/coverage/lcov-report/platforms/copilot-cli.js.html +454 -0
  80. package/install/coverage/lcov-report/platforms/index.html +176 -0
  81. package/install/coverage/lcov-report/platforms/index.js.html +127 -0
  82. package/install/coverage/lcov-report/platforms/vscode.js.html +238 -0
  83. package/install/coverage/lcov-report/prettify.css +1 -0
  84. package/install/coverage/lcov-report/prettify.js +2 -0
  85. package/install/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  86. package/install/coverage/lcov-report/sorter.js +210 -0
  87. package/install/coverage/lcov-report/utils/file-utils.js.html +397 -0
  88. package/install/coverage/lcov-report/utils/git-detector.js.html +190 -0
  89. package/install/coverage/lcov-report/utils/index.html +191 -0
  90. package/install/coverage/lcov-report/utils/logger.js.html +277 -0
  91. package/install/coverage/lcov-report/utils/node-detector.js.html +259 -0
  92. package/install/coverage/lcov-report/utils/os-detector.js.html +307 -0
  93. package/install/coverage/lcov-report/utils/yaml-utils.js.html +346 -0
  94. package/install/coverage/lcov-report/yanstaller/detector.js.html +508 -0
  95. package/install/coverage/lcov-report/yanstaller/index.html +116 -0
  96. package/install/coverage/lcov.info +414 -0
  97. package/install/install.sh +239 -0
  98. package/install/jest.config.js +33 -0
  99. package/install/lib/errors.js +61 -0
  100. package/install/lib/exit-codes.js +54 -0
  101. package/install/lib/platforms/claude-code.js +86 -0
  102. package/install/lib/platforms/codex.js +92 -0
  103. package/install/lib/platforms/copilot-cli.js +123 -0
  104. package/install/lib/platforms/index.js +14 -0
  105. package/install/lib/platforms/vscode.js +51 -0
  106. package/install/lib/utils/config-loader.js +79 -0
  107. package/install/lib/utils/file-utils.js +104 -0
  108. package/install/lib/utils/git-detector.js +35 -0
  109. package/install/lib/utils/logger.js +64 -0
  110. package/install/lib/utils/node-detector.js +58 -0
  111. package/install/lib/utils/os-detector.js +74 -0
  112. package/install/lib/utils/yaml-utils.js +87 -0
  113. package/install/lib/yanstaller/backuper.js +108 -0
  114. package/install/lib/yanstaller/detector.js +141 -0
  115. package/install/lib/yanstaller/index.js +93 -0
  116. package/install/lib/yanstaller/installer.js +140 -0
  117. package/install/lib/yanstaller/interviewer.js +88 -0
  118. package/install/lib/yanstaller/recommender.js +98 -0
  119. package/install/lib/yanstaller/troubleshooter.js +89 -0
  120. package/install/lib/yanstaller/validator.js +198 -0
  121. package/install/lib/yanstaller/wizard.js +109 -0
  122. package/install/package-npm.json +55 -0
  123. package/install/package.json +63 -0
  124. package/install/src/byan-v2/context/copilot-context.js +79 -0
  125. package/install/src/byan-v2/context/session-state.js +98 -0
  126. package/install/src/byan-v2/dispatcher/complexity-scorer.js +232 -0
  127. package/install/src/byan-v2/dispatcher/local-executor.js +221 -0
  128. package/install/src/byan-v2/dispatcher/task-router.js +122 -0
  129. package/install/src/byan-v2/dispatcher/task-tool-interface-mock.js +134 -0
  130. package/install/src/byan-v2/dispatcher/task-tool-interface.js +123 -0
  131. package/install/src/byan-v2/generation/agent-profile-validator.js +113 -0
  132. package/install/src/byan-v2/generation/profile-template.js +113 -0
  133. package/install/src/byan-v2/generation/templates/default-agent.md +49 -0
  134. package/install/src/byan-v2/generation/templates/test-template.md +1 -0
  135. package/install/src/byan-v2/index.js +199 -0
  136. package/install/src/byan-v2/observability/error-tracker.js +105 -0
  137. package/install/src/byan-v2/observability/logger.js +154 -0
  138. package/install/src/byan-v2/observability/metrics-collector.js +194 -0
  139. package/install/src/byan-v2/orchestrator/analysis-state.js +268 -0
  140. package/install/src/byan-v2/orchestrator/generation-state.js +340 -0
  141. package/install/src/byan-v2/orchestrator/interview-state.js +271 -0
  142. package/install/src/byan-v2/orchestrator/state-machine.js +204 -0
  143. package/install/src/core/cache/cache.js +126 -0
  144. package/install/src/core/context/context.js +86 -0
  145. package/install/src/core/dispatcher/dispatcher.js +135 -0
  146. package/install/src/core/worker-pool/worker-pool.js +194 -0
  147. package/install/src/core/workflow/workflow-executor.js +220 -0
  148. package/install/src/index.js +139 -0
  149. package/install/src/observability/dashboard/dashboard.js +191 -0
  150. package/install/src/observability/logger/structured-logger.js +254 -0
  151. package/install/src/observability/metrics/metrics-collector.js +325 -0
  152. package/install/switch-to-v2.sh +126 -0
  153. package/install/test-chalk-fix.sh +210 -0
  154. package/install/test-installer-v2.sh +204 -0
  155. package/install/test-path-resolution.sh +200 -0
  156. package/package.json +53 -33
  157. package/src/byan-v2/context/copilot-context.js +79 -0
  158. package/src/byan-v2/context/session-state.js +98 -0
  159. package/src/byan-v2/data/mantras.json +852 -0
  160. package/src/byan-v2/dispatcher/complexity-scorer.js +232 -0
  161. package/src/byan-v2/dispatcher/five-whys-analyzer.js +310 -0
  162. package/src/byan-v2/dispatcher/local-executor.js +221 -0
  163. package/src/byan-v2/dispatcher/task-router.js +122 -0
  164. package/src/byan-v2/dispatcher/task-tool-interface-mock.js +134 -0
  165. package/src/byan-v2/dispatcher/task-tool-interface.js +123 -0
  166. package/src/byan-v2/generation/agent-profile-validator.js +113 -0
  167. package/src/byan-v2/generation/mantra-validator.js +416 -0
  168. package/src/byan-v2/generation/profile-template.js +113 -0
  169. package/src/byan-v2/generation/templates/default-agent.md +49 -0
  170. package/src/byan-v2/generation/templates/test-template.md +1 -0
  171. package/src/byan-v2/index.js +652 -0
  172. package/src/byan-v2/integration/voice-integration.js +295 -0
  173. package/src/byan-v2/observability/error-tracker.js +105 -0
  174. package/src/byan-v2/observability/logger.js +154 -0
  175. package/src/byan-v2/observability/metrics-collector.js +194 -0
  176. package/src/byan-v2/orchestrator/active-listener.js +541 -0
  177. package/src/byan-v2/orchestrator/analysis-state.js +268 -0
  178. package/src/byan-v2/orchestrator/generation-state.js +340 -0
  179. package/src/byan-v2/orchestrator/glossary-builder.js +431 -0
  180. package/src/byan-v2/orchestrator/interview-state.js +353 -0
  181. package/src/byan-v2/orchestrator/state-machine.js +253 -0
  182. package/src/core/cache/cache.js +126 -0
  183. package/src/core/context/context.js +86 -0
  184. package/src/core/dispatcher/dispatcher.js +135 -0
  185. package/src/core/worker-pool/worker-pool.js +194 -0
  186. package/src/core/workflow/workflow-executor.js +220 -0
  187. package/src/index.js +139 -0
  188. package/src/observability/dashboard/dashboard.js +191 -0
  189. package/src/observability/logger/structured-logger.js +254 -0
  190. package/src/observability/metrics/metrics-collector.js +325 -0
  191. package/templates/.github/agents/bmad-agent-test-dynamic.md +0 -21
  192. package/templates/.github/agents/franck.md +0 -379
  193. /package/{CHANGELOG.md → install/CHANGELOG.md} +0 -0
  194. /package/{bin → install/bin}/create-byan-agent-backup.js +0 -0
  195. /package/{bin → install/bin}/create-byan-agent-fixed.js +0 -0
  196. /package/{bin → install/bin}/create-byan-agent-v2.js +0 -0
  197. /package/{bin → install/bin}/create-byan-agent.js +0 -0
  198. /package/{templates → install/templates}/.github/agents/bmad-agent-bmad-master.md +0 -0
  199. /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-agent-builder.md +0 -0
  200. /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-module-builder.md +0 -0
  201. /package/{templates → install/templates}/.github/agents/bmad-agent-bmb-workflow-builder.md +0 -0
  202. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-analyst.md +0 -0
  203. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-architect.md +0 -0
  204. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-dev.md +0 -0
  205. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-pm.md +0 -0
  206. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-quick-flow-solo-dev.md +0 -0
  207. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-quinn.md +0 -0
  208. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-sm.md +0 -0
  209. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-tech-writer.md +0 -0
  210. /package/{templates → install/templates}/.github/agents/bmad-agent-bmm-ux-designer.md +0 -0
  211. /package/{templates → install/templates}/.github/agents/bmad-agent-byan-test.md +0 -0
  212. /package/{templates → install/templates}/.github/agents/bmad-agent-byan.md +0 -0
  213. /package/{templates → install/templates}/.github/agents/bmad-agent-carmack.md +0 -0
  214. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-brainstorming-coach.md +0 -0
  215. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-creative-problem-solver.md +0 -0
  216. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-design-thinking-coach.md +0 -0
  217. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-innovation-strategist.md +0 -0
  218. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-presentation-master.md +0 -0
  219. /package/{templates → install/templates}/.github/agents/bmad-agent-cis-storyteller.md +0 -0
  220. /package/{templates → install/templates}/.github/agents/bmad-agent-marc.md +0 -0
  221. /package/{templates → install/templates}/.github/agents/bmad-agent-patnote.md +0 -0
  222. /package/{templates → install/templates}/.github/agents/bmad-agent-rachid.md +0 -0
  223. /package/{templates → install/templates}/.github/agents/bmad-agent-tea-tea.md +0 -0
  224. /package/{templates → install/templates}/_bmad/bmb/agents/agent-builder.md +0 -0
  225. /package/{templates → install/templates}/_bmad/bmb/agents/byan-test.md +0 -0
  226. /package/{templates → install/templates}/_bmad/bmb/agents/byan.md +0 -0
  227. /package/{templates → install/templates}/_bmad/bmb/agents/marc.md +0 -0
  228. /package/{templates → install/templates}/_bmad/bmb/agents/module-builder.md +0 -0
  229. /package/{templates → install/templates}/_bmad/bmb/agents/patnote.md +0 -0
  230. /package/{templates → install/templates}/_bmad/bmb/agents/rachid.md +0 -0
  231. /package/{templates → install/templates}/_bmad/bmb/agents/workflow-builder.md +0 -0
  232. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/data/mantras.yaml +0 -0
  233. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/data/templates.yaml +0 -0
  234. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/delete-agent-workflow.md +0 -0
  235. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/edit-agent-workflow.md +0 -0
  236. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/interview-workflow.md +0 -0
  237. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/quick-create-workflow.md +0 -0
  238. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/templates/base-agent-template.md +0 -0
  239. /package/{templates → install/templates}/_bmad/bmb/workflows/byan/validate-agent-workflow.md +0 -0
  240. /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
+ };