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,204 @@
1
+ #!/bin/bash
2
+ # Test script for BYAN v2.0 installer
3
+ # Tests the installer in a clean temporary directory
4
+
5
+ set -e
6
+
7
+ RED='\033[0;31m'
8
+ GREEN='\033[0;32m'
9
+ YELLOW='\033[1;33m'
10
+ BLUE='\033[0;34m'
11
+ NC='\033[0m'
12
+
13
+ echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
14
+ echo -e "${BLUE}║ BYAN v2.0 Installer Test Suite ║${NC}"
15
+ echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
16
+ echo ""
17
+
18
+ # Get script directory
19
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
+ PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
21
+
22
+ echo -e "${BLUE}[1/5] Setup test environment${NC}"
23
+ TEST_DIR="/tmp/test-byan-v2-$(date +%s)"
24
+ mkdir -p "${TEST_DIR}"
25
+ cd "${TEST_DIR}"
26
+ git init > /dev/null 2>&1
27
+ echo "Test Project" > README.md
28
+ echo -e "${GREEN}✓ Test directory: ${TEST_DIR}${NC}"
29
+
30
+ echo ""
31
+ echo -e "${BLUE}[2/5] Check installer prerequisites${NC}"
32
+
33
+ # Check if src/ exists in project root
34
+ if [ -d "${PROJECT_ROOT}/src" ]; then
35
+ echo -e "${GREEN}✓ Found src/ directory${NC}"
36
+ SRC_FILES=$(find "${PROJECT_ROOT}/src" -type f -name "*.js" | wc -l)
37
+ echo -e " ${SRC_FILES} JavaScript files"
38
+ else
39
+ echo -e "${RED}✗ src/ directory not found${NC}"
40
+ exit 1
41
+ fi
42
+
43
+ # Check if __tests__ exists
44
+ if [ -d "${PROJECT_ROOT}/__tests__" ]; then
45
+ echo -e "${GREEN}✓ Found __tests__/ directory${NC}"
46
+ TEST_FILES=$(find "${PROJECT_ROOT}/__tests__" -type f -name "*.test.js" | wc -l)
47
+ echo -e " ${TEST_FILES} test files"
48
+ else
49
+ echo -e "${RED}✗ __tests__/ directory not found${NC}"
50
+ exit 1
51
+ fi
52
+
53
+ # Check entry point
54
+ if [ -f "${PROJECT_ROOT}/src/index.js" ]; then
55
+ echo -e "${GREEN}✓ Found src/index.js${NC}"
56
+ else
57
+ echo -e "${RED}✗ src/index.js not found${NC}"
58
+ exit 1
59
+ fi
60
+
61
+ # Check package.json
62
+ if [ -f "${PROJECT_ROOT}/package.json" ]; then
63
+ echo -e "${GREEN}✓ Found package.json${NC}"
64
+ else
65
+ echo -e "${RED}✗ package.json not found${NC}"
66
+ exit 1
67
+ fi
68
+
69
+ echo ""
70
+ echo -e "${BLUE}[3/5] Dry-run installer (structure check)${NC}"
71
+
72
+ # Simulate what installer would do
73
+ EXPECTED_DIRS=(
74
+ "_bmad/bmb/agents"
75
+ "_bmad/bmb/workflows/byan"
76
+ "_bmad/core"
77
+ "_bmad/_config"
78
+ "_bmad/_memory"
79
+ "_bmad/_output"
80
+ ".github/agents"
81
+ "src/core/context"
82
+ "src/core/cache"
83
+ "src/core/dispatcher"
84
+ "src/core/worker-pool"
85
+ "src/core/workflow"
86
+ "src/observability/logger"
87
+ "src/observability/metrics"
88
+ "src/observability/dashboard"
89
+ "__tests__"
90
+ )
91
+
92
+ echo -e "${YELLOW}Expected directories to be created:${NC}"
93
+ for dir in "${EXPECTED_DIRS[@]}"; do
94
+ echo " - ${dir}"
95
+ done
96
+
97
+ EXPECTED_FILES=(
98
+ "src/index.js"
99
+ "package.json"
100
+ "_bmad/bmb/config.yaml"
101
+ )
102
+
103
+ echo ""
104
+ echo -e "${YELLOW}Expected files to be copied/created:${NC}"
105
+ for file in "${EXPECTED_FILES[@]}"; do
106
+ echo " - ${file}"
107
+ done
108
+
109
+ echo ""
110
+ echo -e "${BLUE}[4/5] Validate source files exist in template${NC}"
111
+
112
+ VALIDATION_PASSED=0
113
+ VALIDATION_TOTAL=0
114
+
115
+ # Check critical source files
116
+ CRITICAL_FILES=(
117
+ "${PROJECT_ROOT}/src/index.js"
118
+ "${PROJECT_ROOT}/src/core/context/context.js"
119
+ "${PROJECT_ROOT}/src/core/cache/cache.js"
120
+ "${PROJECT_ROOT}/src/core/dispatcher/dispatcher.js"
121
+ "${PROJECT_ROOT}/src/core/worker-pool/worker-pool.js"
122
+ "${PROJECT_ROOT}/src/core/workflow/workflow-executor.js"
123
+ "${PROJECT_ROOT}/src/observability/logger/structured-logger.js"
124
+ "${PROJECT_ROOT}/src/observability/metrics/metrics-collector.js"
125
+ "${PROJECT_ROOT}/src/observability/dashboard/dashboard.js"
126
+ "${PROJECT_ROOT}/__tests__/context.test.js"
127
+ "${PROJECT_ROOT}/__tests__/integration.test.js"
128
+ "${PROJECT_ROOT}/package.json"
129
+ )
130
+
131
+ for file in "${CRITICAL_FILES[@]}"; do
132
+ ((VALIDATION_TOTAL++))
133
+ if [ -f "${file}" ]; then
134
+ echo -e "${GREEN}✓ ${file#${PROJECT_ROOT}/}${NC}"
135
+ ((VALIDATION_PASSED++))
136
+ else
137
+ echo -e "${RED}✗ ${file#${PROJECT_ROOT}/}${NC}"
138
+ fi
139
+ done
140
+
141
+ echo ""
142
+ echo -e "${BLUE}Validation: ${VALIDATION_PASSED}/${VALIDATION_TOTAL} files found${NC}"
143
+
144
+ if [ ${VALIDATION_PASSED} -eq ${VALIDATION_TOTAL} ]; then
145
+ echo -e "${GREEN}✅ All critical v2.0 files present${NC}"
146
+ else
147
+ echo -e "${RED}❌ Some v2.0 files missing${NC}"
148
+ exit 1
149
+ fi
150
+
151
+ echo ""
152
+ echo -e "${BLUE}[5/5] Check package.json structure${NC}"
153
+
154
+ # Parse package.json
155
+ PKG_JSON="${PROJECT_ROOT}/package.json"
156
+
157
+ if command -v jq &> /dev/null; then
158
+ echo -e "${YELLOW}Main entry point:${NC}"
159
+ jq -r '.main // "not set"' "${PKG_JSON}"
160
+
161
+ echo ""
162
+ echo -e "${YELLOW}Test scripts:${NC}"
163
+ jq -r '.scripts.test // "not set"' "${PKG_JSON}"
164
+ jq -r '.scripts["test:coverage"] // "not set"' "${PKG_JSON}"
165
+
166
+ echo ""
167
+ echo -e "${YELLOW}Dev dependencies:${NC}"
168
+ jq -r '.devDependencies // {} | keys[]' "${PKG_JSON}" | head -5
169
+
170
+ HAS_JEST=$(jq -r '.devDependencies.jest // "not found"' "${PKG_JSON}")
171
+ if [ "${HAS_JEST}" != "not found" ]; then
172
+ echo -e "${GREEN}✓ Jest found: ${HAS_JEST}${NC}"
173
+ else
174
+ echo -e "${YELLOW}⚠ Jest not found in devDependencies${NC}"
175
+ fi
176
+ else
177
+ echo -e "${YELLOW}jq not installed, skipping JSON parsing${NC}"
178
+ echo -e "${GREEN}✓ package.json exists${NC}"
179
+ fi
180
+
181
+ # Cleanup
182
+ echo ""
183
+ echo -e "${BLUE}Cleaning up test directory...${NC}"
184
+ cd /tmp
185
+ rm -rf "${TEST_DIR}"
186
+ echo -e "${GREEN}✓ Cleanup complete${NC}"
187
+
188
+ echo ""
189
+ echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${NC}"
190
+ echo -e "${GREEN}║ ✅ INSTALLER VALIDATION COMPLETE ║${NC}"
191
+ echo -e "${GREEN}╚════════════════════════════════════════════════════════════╝${NC}"
192
+ echo ""
193
+
194
+ echo -e "${BLUE}Summary:${NC}"
195
+ echo " • v2.0 source files: ${GREEN}PRESENT${NC}"
196
+ echo " • Critical components: ${GREEN}${VALIDATION_PASSED}/${VALIDATION_TOTAL}${NC}"
197
+ echo " • Structure: ${GREEN}READY FOR INSTALL${NC}"
198
+ echo ""
199
+
200
+ echo -e "${YELLOW}To actually test the installer:${NC}"
201
+ echo " cd /tmp/test-project && npm init -y"
202
+ echo " node ${SCRIPT_DIR}/bin/create-byan-agent-v2.js"
203
+ echo ""
204
+ echo -e "${GREEN}Installer is ready to deploy! 🚀${NC}"
@@ -0,0 +1,200 @@
1
+ #!/bin/bash
2
+ # Test script for BYAN installer bugfix validation
3
+ # Tests that all paths resolve correctly after the fix
4
+
5
+ set -e # Exit on error
6
+
7
+ echo "╔════════════════════════════════════════════════════════════╗"
8
+ echo "║ ║"
9
+ echo "║ 🧪 BYAN INSTALLER - PATH RESOLUTION TEST ║"
10
+ echo "║ Validation des corrections de chemins ║"
11
+ echo "║ ║"
12
+ echo "╚════════════════════════════════════════════════════════════╝"
13
+ echo ""
14
+
15
+ # Colors
16
+ RED='\033[0;31m'
17
+ GREEN='\033[0;32m'
18
+ YELLOW='\033[1;33m'
19
+ BLUE='\033[0;34m'
20
+ NC='\033[0m' # No Color
21
+
22
+ # Test counter
23
+ TESTS_PASSED=0
24
+ TESTS_FAILED=0
25
+
26
+ # Test function
27
+ test_path() {
28
+ local name="$1"
29
+ local path="$2"
30
+
31
+ if [ -e "$path" ]; then
32
+ echo -e "${GREEN}✓${NC} $name"
33
+ ((TESTS_PASSED++))
34
+ return 0
35
+ else
36
+ echo -e "${RED}✗${NC} $name: NOT FOUND - $path"
37
+ ((TESTS_FAILED++))
38
+ return 1
39
+ fi
40
+ }
41
+
42
+ # Base directory
43
+ BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
44
+ TEMPLATE_DIR="$BASE_DIR/templates"
45
+
46
+ echo -e "${BLUE}Base directory:${NC} $BASE_DIR"
47
+ echo -e "${BLUE}Template directory:${NC} $TEMPLATE_DIR"
48
+ echo ""
49
+
50
+ # Test 1: Template directory exists
51
+ echo -e "${YELLOW}[TEST 1]${NC} Template Directory Structure"
52
+ test_path "templates/" "$TEMPLATE_DIR"
53
+ test_path "templates/_bmad/" "$TEMPLATE_DIR/_bmad"
54
+ test_path "templates/_bmad/bmb/" "$TEMPLATE_DIR/_bmad/bmb"
55
+ test_path "templates/.github/" "$TEMPLATE_DIR/.github"
56
+ echo ""
57
+
58
+ # Test 2: Agent files exist
59
+ echo -e "${YELLOW}[TEST 2]${NC} Agent Files (_bmad/bmb/agents/)"
60
+ test_path "byan.md" "$TEMPLATE_DIR/_bmad/bmb/agents/byan.md"
61
+ test_path "rachid.md" "$TEMPLATE_DIR/_bmad/bmb/agents/rachid.md"
62
+ test_path "marc.md" "$TEMPLATE_DIR/_bmad/bmb/agents/marc.md"
63
+ test_path "patnote.md" "$TEMPLATE_DIR/_bmad/bmb/agents/patnote.md"
64
+ test_path "agent-builder.md" "$TEMPLATE_DIR/_bmad/bmb/agents/agent-builder.md"
65
+ echo ""
66
+
67
+ # Test 3: Workflow files exist
68
+ echo -e "${YELLOW}[TEST 3]${NC} Workflow Files (_bmad/bmb/workflows/byan/)"
69
+ WORKFLOW_DIR="$TEMPLATE_DIR/_bmad/bmb/workflows/byan"
70
+ test_path "workflows/byan/" "$WORKFLOW_DIR"
71
+ test_path "workflows/byan/data/" "$WORKFLOW_DIR/data"
72
+ test_path "workflows/byan/steps/" "$WORKFLOW_DIR/steps"
73
+ test_path "workflows/byan/templates/" "$WORKFLOW_DIR/templates"
74
+
75
+ # Count workflow files
76
+ if [ -d "$WORKFLOW_DIR" ]; then
77
+ WORKFLOW_COUNT=$(find "$WORKFLOW_DIR" -type f -name "*.md" | wc -l)
78
+ echo -e "${GREEN}✓${NC} Found $WORKFLOW_COUNT workflow files"
79
+ ((TESTS_PASSED++))
80
+ else
81
+ echo -e "${RED}✗${NC} Workflow directory not found"
82
+ ((TESTS_FAILED++))
83
+ fi
84
+ echo ""
85
+
86
+ # Test 4: GitHub agent stubs exist
87
+ echo -e "${YELLOW}[TEST 4]${NC} GitHub Agent Stubs (.github/agents/)"
88
+ GITHUB_AGENTS_DIR="$TEMPLATE_DIR/.github/agents"
89
+ test_path ".github/agents/" "$GITHUB_AGENTS_DIR"
90
+ test_path "bmad-agent-byan.md" "$GITHUB_AGENTS_DIR/bmad-agent-byan.md"
91
+ test_path "bmad-agent-rachid.md" "$GITHUB_AGENTS_DIR/bmad-agent-rachid.md"
92
+ test_path "bmad-agent-marc.md" "$GITHUB_AGENTS_DIR/bmad-agent-marc.md"
93
+
94
+ # Count stub files
95
+ if [ -d "$GITHUB_AGENTS_DIR" ]; then
96
+ STUB_COUNT=$(find "$GITHUB_AGENTS_DIR" -type f -name "*.md" | wc -l)
97
+ echo -e "${GREEN}✓${NC} Found $STUB_COUNT agent stub files"
98
+ ((TESTS_PASSED++))
99
+ else
100
+ echo -e "${RED}✗${NC} GitHub agents directory not found"
101
+ ((TESTS_FAILED++))
102
+ fi
103
+ echo ""
104
+
105
+ # Test 5: Verify old paths DON'T exist (they were wrong)
106
+ echo -e "${YELLOW}[TEST 5]${NC} Verify Old (Incorrect) Paths Are Absent"
107
+ OLD_PATH_1="$TEMPLATE_DIR/bmb/agents"
108
+ OLD_PATH_2="$BASE_DIR/../.github/agents"
109
+
110
+ if [ ! -e "$OLD_PATH_1" ]; then
111
+ echo -e "${GREEN}✓${NC} Old path NOT found (expected): templates/bmb/agents"
112
+ ((TESTS_PASSED++))
113
+ else
114
+ echo -e "${RED}✗${NC} Old path still exists: $OLD_PATH_1"
115
+ ((TESTS_FAILED++))
116
+ fi
117
+
118
+ if [ ! -e "$OLD_PATH_2" ]; then
119
+ echo -e "${GREEN}✓${NC} Old path NOT found (expected): ../.github/agents"
120
+ ((TESTS_PASSED++))
121
+ else
122
+ echo -e "${RED}✗${NC} Old path still exists: $OLD_PATH_2"
123
+ ((TESTS_FAILED++))
124
+ fi
125
+ echo ""
126
+
127
+ # Test 6: Node.js path resolution simulation
128
+ echo -e "${YELLOW}[TEST 6]${NC} Node.js Path Resolution Simulation"
129
+ node -e "
130
+ const path = require('path');
131
+ const fs = require('fs');
132
+
133
+ const binDir = path.join('$BASE_DIR', 'bin');
134
+ const templateDir = path.join(binDir, '..', 'templates');
135
+ const agentsPath = path.join(templateDir, '_bmad', 'bmb', 'agents');
136
+ const workflowsPath = path.join(templateDir, '_bmad', 'bmb', 'workflows', 'byan');
137
+ const githubPath = path.join(templateDir, '.github', 'agents');
138
+
139
+ console.log('Simulated __dirname:', binDir);
140
+ console.log('Resolved templateDir:', path.resolve(templateDir));
141
+ console.log('');
142
+
143
+ const checks = [
144
+ { name: 'Template dir', path: templateDir },
145
+ { name: 'Agents path', path: agentsPath },
146
+ { name: 'Workflows path', path: workflowsPath },
147
+ { name: 'GitHub agents path', path: githubPath }
148
+ ];
149
+
150
+ let passed = 0;
151
+ checks.forEach(check => {
152
+ const exists = fs.existsSync(check.path);
153
+ const symbol = exists ? '\u001b[32m✓\u001b[0m' : '\u001b[31m✗\u001b[0m';
154
+ console.log(symbol, check.name + ':', exists ? 'OK' : 'NOT FOUND');
155
+ if (exists) passed++;
156
+ });
157
+
158
+ console.log('');
159
+ console.log('Node.js resolution:', passed + '/' + checks.length, 'paths valid');
160
+ process.exit(passed === checks.length ? 0 : 1);
161
+ "
162
+ NODE_TEST_RESULT=$?
163
+ if [ $NODE_TEST_RESULT -eq 0 ]; then
164
+ echo -e "${GREEN}✓${NC} Node.js path resolution test passed"
165
+ ((TESTS_PASSED++))
166
+ else
167
+ echo -e "${RED}✗${NC} Node.js path resolution test failed"
168
+ ((TESTS_FAILED++))
169
+ fi
170
+ echo ""
171
+
172
+ # Summary
173
+ echo "╔════════════════════════════════════════════════════════════╗"
174
+ echo "║ TEST SUMMARY ║"
175
+ echo "╚════════════════════════════════════════════════════════════╝"
176
+ echo ""
177
+ echo -e "${GREEN}Tests Passed:${NC} $TESTS_PASSED"
178
+ echo -e "${RED}Tests Failed:${NC} $TESTS_FAILED"
179
+ echo ""
180
+
181
+ TOTAL=$((TESTS_PASSED + TESTS_FAILED))
182
+ PERCENT=$((TESTS_PASSED * 100 / TOTAL))
183
+
184
+ if [ $TESTS_FAILED -eq 0 ]; then
185
+ echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${NC}"
186
+ echo -e "${GREEN}║ ║${NC}"
187
+ echo -e "${GREEN}║ ✅ ALL TESTS PASSED! ($PERCENT%) ║${NC}"
188
+ echo -e "${GREEN}║ Path resolution is CORRECT ║${NC}"
189
+ echo -e "${GREEN}║ ║${NC}"
190
+ echo -e "${GREEN}╚════════════════════════════════════════════════════════════╝${NC}"
191
+ exit 0
192
+ else
193
+ echo -e "${RED}╔════════════════════════════════════════════════════════════╗${NC}"
194
+ echo -e "${RED}║ ║${NC}"
195
+ echo -e "${RED}║ ❌ TESTS FAILED ($PERCENT%) ║${NC}"
196
+ echo -e "${RED}║ Some paths are incorrect ║${NC}"
197
+ echo -e "${RED}║ ║${NC}"
198
+ echo -e "${RED}╚════════════════════════════════════════════════════════════╝${NC}"
199
+ exit 1
200
+ fi
package/package.json CHANGED
@@ -1,62 +1,82 @@
1
1
  {
2
2
  "name": "create-byan-agent",
3
- "version": "2.0.1",
4
- "description": "Create custom AI agents in 15 minutes through intelligent interviews. GitHub Copilot CLI, VSCode, Claude Code compatible. 64 quality mantras applied automatically.",
3
+ "version": "2.1.1",
4
+ "description": "BYAN v2.1.0 - Intelligent AI agent creator with BMAD features (Glossary, Five Whys, Active Listener, Mantras Validator)",
5
+ "main": "src/index.js",
5
6
  "bin": {
6
- "create-byan-agent": "bin/create-byan-agent-v2.js"
7
+ "create-byan-agent": "./install/bin/create-byan-agent-v2.js",
8
+ "byan-v2": "./install/bin/create-byan-agent-v2.js"
7
9
  },
8
10
  "scripts": {
9
- "start": "node bin/create-byan-agent-v2.js",
10
11
  "test": "jest",
11
- "test:watch": "jest --watch",
12
- "test:coverage": "jest --coverage"
12
+ "test:coverage": "jest --coverage",
13
+ "test:watch": "jest --watch"
13
14
  },
14
15
  "keywords": [
15
- "ai-agent",
16
- "agent-creator",
17
- "intelligent-interview",
16
+ "byan",
17
+ "ai",
18
+ "multi-agent",
19
+ "workflow",
18
20
  "github-copilot",
19
- "copilot-cli",
20
- "vscode-extension",
21
- "claude-code",
22
- "code-generation",
23
- "developer-tools",
24
- "automation",
25
- "merise-agile",
26
- "tdd",
27
- "quality-mantras",
28
21
  "agent-builder",
29
- "conversational-ai"
22
+ "bmad",
23
+ "merise-agile",
24
+ "tdd"
30
25
  ],
31
26
  "author": "Yan",
32
27
  "license": "MIT",
33
28
  "repository": {
34
29
  "type": "git",
35
- "url": "git+https://github.com/Yan-Acadenice/BYAN.git"
30
+ "url": "https://github.com/yannsix/byan-v2.git"
36
31
  },
37
32
  "bugs": {
38
- "url": "https://github.com/Yan-Acadenice/BYAN/issues"
39
- },
40
- "homepage": "https://github.com/Yan-Acadenice/BYAN#readme",
41
- "dependencies": {
42
- "chalk": "^4.1.2",
43
- "commander": "^11.1.0",
44
- "fs-extra": "^11.2.0",
45
- "inquirer": "^8.2.5",
46
- "js-yaml": "^4.1.0",
47
- "ora": "^5.4.1"
33
+ "url": "https://github.com/yannsix/byan-v2/issues"
48
34
  },
35
+ "homepage": "https://github.com/yannsix/byan-v2#readme",
49
36
  "engines": {
50
37
  "node": ">=18.0.0"
51
38
  },
52
39
  "files": [
53
- "bin/",
54
- "templates/",
40
+ "src/",
41
+ "install/",
55
42
  "README.md",
56
- "CHANGELOG.md",
43
+ "CHANGELOG-v2.1.0.md",
44
+ "MIGRATION-v2.0-to-v2.1.md",
45
+ "README-BYAN-V2.md",
46
+ "API-BYAN-V2.md",
47
+ "BMAD-QUICK-REFERENCE.md",
57
48
  "LICENSE"
58
49
  ],
50
+ "dependencies": {
51
+ "chalk": "^4.1.2",
52
+ "commander": "^11.1.0",
53
+ "fs-extra": "^11.2.0",
54
+ "inquirer": "^8.2.5",
55
+ "js-yaml": "^4.1.0",
56
+ "ora": "^5.4.1",
57
+ "uuid": "^13.0.0",
58
+ "winston": "^3.19.0"
59
+ },
59
60
  "devDependencies": {
60
61
  "jest": "^29.7.0"
62
+ },
63
+ "jest": {
64
+ "testEnvironment": "node",
65
+ "coverageDirectory": "coverage",
66
+ "collectCoverageFrom": [
67
+ "src/**/*.js",
68
+ "!src/index.js"
69
+ ],
70
+ "testMatch": [
71
+ "**/__tests__/**/*.test.js"
72
+ ],
73
+ "coverageThreshold": {
74
+ "global": {
75
+ "branches": 80,
76
+ "functions": 80,
77
+ "lines": 80,
78
+ "statements": 80
79
+ }
80
+ }
61
81
  }
62
82
  }
@@ -0,0 +1,79 @@
1
+ const fs = require('fs');
2
+ const os = require('os');
3
+ const path = require('path');
4
+
5
+ function getCopilotContext() {
6
+ const context = {
7
+ projectRoot: getProjectRoot(),
8
+ userName: getUserName(),
9
+ workingDir: getWorkingDir(),
10
+ gitBranch: getGitBranch()
11
+ };
12
+
13
+ return context;
14
+ }
15
+
16
+ function getProjectRoot() {
17
+ if (process.env.GITHUB_WORKSPACE) {
18
+ return process.env.GITHUB_WORKSPACE;
19
+ }
20
+
21
+ if (process.env.PWD) {
22
+ return process.env.PWD;
23
+ }
24
+
25
+ return process.cwd();
26
+ }
27
+
28
+ function getUserName() {
29
+ if (process.env.COPILOT_USER_NAME) {
30
+ return process.env.COPILOT_USER_NAME;
31
+ }
32
+
33
+ const projectRoot = getProjectRoot();
34
+ const configPath = path.join(projectRoot, '.github', 'copilot', 'config.yaml');
35
+
36
+ if (fs.existsSync(configPath)) {
37
+ try {
38
+ const configContent = fs.readFileSync(configPath, 'utf8');
39
+ const userNameMatch = configContent.match(/user_name:\s*(.+)/);
40
+ if (userNameMatch && userNameMatch[1]) {
41
+ return userNameMatch[1].trim();
42
+ }
43
+ } catch (error) {
44
+ // Fallback to next option
45
+ }
46
+ }
47
+
48
+ if (process.env.USER) {
49
+ return process.env.USER;
50
+ }
51
+
52
+ try {
53
+ return os.userInfo().username;
54
+ } catch (error) {
55
+ return 'unknown';
56
+ }
57
+ }
58
+
59
+ function getWorkingDir() {
60
+ if (process.env.PWD) {
61
+ return process.env.PWD;
62
+ }
63
+
64
+ return process.cwd();
65
+ }
66
+
67
+ function getGitBranch() {
68
+ if (process.env.GITHUB_REF_NAME) {
69
+ return process.env.GITHUB_REF_NAME;
70
+ }
71
+
72
+ if (process.env.GIT_BRANCH) {
73
+ return process.env.GIT_BRANCH;
74
+ }
75
+
76
+ return '';
77
+ }
78
+
79
+ module.exports = getCopilotContext;