claude-flow-novice 1.3.0 → 1.3.2

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 (305) hide show
  1. package/.claude-flow-novice/preferences/generation.json +147 -0
  2. package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
  3. package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
  4. package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
  5. package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
  6. package/.claude-flow-novice/preferences/project-local.json +91 -0
  7. package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
  8. package/.claude-flow-novice/preferences/team-shared.json +195 -0
  9. package/.claude-flow-novice/preferences/user-global.json +247 -0
  10. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
  11. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
  12. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
  13. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
  14. package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
  15. package/CLAUDE.md +81 -0
  16. package/README-NPM.md +0 -0
  17. package/package.json +11 -7
  18. package/scripts/build/README.md +167 -0
  19. package/scripts/build/build-config.js +27 -0
  20. package/scripts/build/build-prompt-copier.sh +30 -0
  21. package/scripts/build/performance-monitor.js +869 -0
  22. package/scripts/build/prepare-publish.js +150 -0
  23. package/scripts/build/typescript-fixer.js +621 -0
  24. package/scripts/build/unified-builder.sh +428 -0
  25. package/scripts/build/update-bin-version.js +32 -0
  26. package/scripts/dev/README.md +264 -0
  27. package/scripts/dev/claude-flow-wrapper.sh +35 -0
  28. package/scripts/dev/claude-monitor.py +419 -0
  29. package/scripts/dev/claude-sparc.sh +562 -0
  30. package/scripts/dev/claude-wrapper.sh +17 -0
  31. package/scripts/dev/demo-phase3-compliance.js +172 -0
  32. package/scripts/dev/demo-task-system.ts +224 -0
  33. package/scripts/dev/deployment-validator.js +315 -0
  34. package/scripts/dev/spawn-claude-terminal.sh +32 -0
  35. package/scripts/dev/start-portal.sh +506 -0
  36. package/scripts/dev/start-web-ui.js +15 -0
  37. package/scripts/dev/stop-portal.sh +311 -0
  38. package/scripts/dev/validate-examples.ts +288 -0
  39. package/scripts/dev/validate-phase2.cjs +451 -0
  40. package/scripts/dev/validate-phase2.js +785 -0
  41. package/scripts/dev/validate-phase3.cjs +208 -0
  42. package/scripts/dev/validate-security-remediation.js +1 -0
  43. package/scripts/legacy/README.md +272 -0
  44. package/scripts/legacy/batch-fix-ts.sh +54 -0
  45. package/scripts/legacy/build-migration.sh +105 -0
  46. package/scripts/legacy/build-monitor.js +209 -0
  47. package/scripts/legacy/build-with-filter.sh +84 -0
  48. package/scripts/legacy/build-workaround.sh +71 -0
  49. package/scripts/legacy/fix-ts-advanced.js +358 -0
  50. package/scripts/legacy/fix-ts-final.sh +50 -0
  51. package/scripts/legacy/fix-ts-targeted.sh +49 -0
  52. package/scripts/legacy/fix-typescript-errors.js +305 -0
  53. package/scripts/legacy/force-build.sh +63 -0
  54. package/scripts/legacy/optimize-performance.js +400 -0
  55. package/scripts/legacy/performance-monitor.js +263 -0
  56. package/scripts/legacy/performance-monitoring.js +532 -0
  57. package/scripts/legacy/performance-test-runner.js +645 -0
  58. package/scripts/legacy/quick-fix-ts.js +281 -0
  59. package/scripts/legacy/safe-build.sh +63 -0
  60. package/scripts/migration/README.md +434 -0
  61. package/scripts/migration/install-arm64.js +78 -0
  62. package/scripts/migration/install.js +83 -0
  63. package/scripts/migration/migrate-hooks.js +173 -0
  64. package/scripts/migration/migration-examples.ts +318 -0
  65. package/scripts/optimization/build-optimizer.js +438 -0
  66. package/scripts/optimization/config-validator.js +761 -0
  67. package/scripts/optimization/test-optimization.js +432 -0
  68. package/scripts/optimization/unified-activation.js +839 -0
  69. package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
  70. package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
  71. package/scripts/performance/test-enhanced-backend.sh +504 -0
  72. package/scripts/performance-test-runner.js +698 -0
  73. package/scripts/security/README.md +339 -0
  74. package/scripts/security/install-git-hooks.sh +132 -0
  75. package/scripts/security/ruv-swarm-safe.js +74 -0
  76. package/scripts/test/README.md +236 -0
  77. package/scripts/test/check-links.ts +274 -0
  78. package/scripts/test/check-performance-regression.ts +168 -0
  79. package/scripts/test/coverage-report.ts +692 -0
  80. package/scripts/test/generate-swarm-tests.js +633 -0
  81. package/scripts/test/integration-test-validation.cjs +253 -0
  82. package/scripts/test/load-test-swarm.js +576 -0
  83. package/scripts/test/run-phase3-compliance-tests.js +427 -0
  84. package/scripts/test/test-batch-tasks.ts +29 -0
  85. package/scripts/test/test-byzantine-resolution.js +246 -0
  86. package/scripts/test/test-claude-spawn-options.sh +63 -0
  87. package/scripts/test/test-cli-wizard.js +331 -0
  88. package/scripts/test/test-comprehensive.js +401 -0
  89. package/scripts/test/test-coordination-features.ts +238 -0
  90. package/scripts/test/test-fallback-systems.js +276 -0
  91. package/scripts/test/test-init-command.ts +302 -0
  92. package/scripts/test/test-mcp.ts +251 -0
  93. package/scripts/test/test-runner.ts +568 -0
  94. package/scripts/test/test-swarm-integration.sh +92 -0
  95. package/scripts/test/test-swarm.ts +142 -0
  96. package/scripts/test/validation-summary.ts +408 -0
  97. package/scripts/utils/README.md +261 -0
  98. package/scripts/utils/clean-build-artifacts.sh +94 -0
  99. package/scripts/utils/cleanup-root.sh +69 -0
  100. package/scripts/utils/fix-cliffy-imports.js +307 -0
  101. package/scripts/utils/fix-duplicate-imports.js +114 -0
  102. package/scripts/utils/fix-error-handling.cjs +70 -0
  103. package/scripts/utils/fix-import-paths.js +104 -0
  104. package/scripts/utils/fix-imports.js +116 -0
  105. package/scripts/utils/fix-shebang.js +78 -0
  106. package/scripts/utils/fix-test-modules.js +27 -0
  107. package/scripts/utils/fix-timezone-issue-246.js +200 -0
  108. package/scripts/utils/fix-ts-comprehensive.py +182 -0
  109. package/scripts/utils/fix-ts-targeted-batch.js +250 -0
  110. package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
  111. package/scripts/utils/simple-test-fixer.js +190 -0
  112. package/scripts/utils/validate-metrics-structure.cjs +144 -0
  113. package/scripts/verify-mcp-server.js +86 -0
  114. package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
  115. package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
  116. package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
  117. package/src/cli/simple-commands/__tests__/task.test.js +8 -0
  118. package/src/cli/simple-commands/agent.js +216 -0
  119. package/src/cli/simple-commands/analysis.js +570 -0
  120. package/src/cli/simple-commands/automation-executor.js +1603 -0
  121. package/src/cli/simple-commands/automation.js +627 -0
  122. package/src/cli/simple-commands/batch-manager.js +338 -0
  123. package/src/cli/simple-commands/claude-telemetry.js +311 -0
  124. package/src/cli/simple-commands/claude-track.js +102 -0
  125. package/src/cli/simple-commands/concurrent-display.js +348 -0
  126. package/src/cli/simple-commands/config.js +319 -0
  127. package/src/cli/simple-commands/coordination.js +307 -0
  128. package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
  129. package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
  130. package/src/cli/simple-commands/fix-hook-variables.js +363 -0
  131. package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
  132. package/src/cli/simple-commands/github/github-api.js +624 -0
  133. package/src/cli/simple-commands/github/init.js +543 -0
  134. package/src/cli/simple-commands/github.js +377 -0
  135. package/src/cli/simple-commands/goal.js +145 -0
  136. package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
  137. package/src/cli/simple-commands/hive-mind/communication.js +740 -0
  138. package/src/cli/simple-commands/hive-mind/core.js +1031 -0
  139. package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
  140. package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
  141. package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
  142. package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
  143. package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
  144. package/src/cli/simple-commands/hive-mind/queen.js +809 -0
  145. package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
  146. package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
  147. package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
  148. package/src/cli/simple-commands/hive-mind.js +3112 -0
  149. package/src/cli/simple-commands/hive.js +140 -0
  150. package/src/cli/simple-commands/hook-safety.js +671 -0
  151. package/src/cli/simple-commands/hooks.js +1268 -0
  152. package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
  153. package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
  154. package/src/cli/simple-commands/init/README.md +106 -0
  155. package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
  156. package/src/cli/simple-commands/init/agent-copier.js +347 -0
  157. package/src/cli/simple-commands/init/batch-init.js +663 -0
  158. package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
  159. package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
  160. package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
  161. package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
  162. package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
  163. package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
  164. package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
  165. package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
  166. package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
  167. package/src/cli/simple-commands/init/help.js +110 -0
  168. package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
  169. package/src/cli/simple-commands/init/index.js +1953 -0
  170. package/src/cli/simple-commands/init/performance-monitor.js +344 -0
  171. package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
  172. package/src/cli/simple-commands/init/rollback/index.js +399 -0
  173. package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
  174. package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
  175. package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
  176. package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
  177. package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
  178. package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
  179. package/src/cli/simple-commands/init/sparc-structure.js +68 -0
  180. package/src/cli/simple-commands/init/template-copier.js +640 -0
  181. package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
  182. package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
  183. package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
  184. package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
  185. package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
  186. package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
  187. package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
  188. package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
  189. package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
  190. package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
  191. package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
  192. package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
  193. package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
  194. package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
  195. package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
  196. package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
  197. package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
  198. package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
  199. package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
  200. package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
  201. package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
  202. package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
  203. package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
  204. package/src/cli/simple-commands/init/templates/coordination.md +16 -0
  205. package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
  206. package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
  207. package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
  208. package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
  209. package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
  210. package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
  211. package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
  212. package/src/cli/simple-commands/init/templates/settings.json +109 -0
  213. package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
  214. package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
  215. package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
  216. package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
  217. package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
  218. package/src/cli/simple-commands/init/validation/index.js +388 -0
  219. package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
  220. package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
  221. package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
  222. package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
  223. package/src/cli/simple-commands/init.js +4 -0
  224. package/src/cli/simple-commands/mcp-health.js +163 -0
  225. package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
  226. package/src/cli/simple-commands/mcp.js +420 -0
  227. package/src/cli/simple-commands/memory-consolidation.js +631 -0
  228. package/src/cli/simple-commands/memory.js +345 -0
  229. package/src/cli/simple-commands/migrate-hooks.js +63 -0
  230. package/src/cli/simple-commands/monitor.js +417 -0
  231. package/src/cli/simple-commands/neural.js +148 -0
  232. package/src/cli/simple-commands/pair-autofix-only.js +755 -0
  233. package/src/cli/simple-commands/pair-basic.js +751 -0
  234. package/src/cli/simple-commands/pair-old.js +623 -0
  235. package/src/cli/simple-commands/pair-working.js +849 -0
  236. package/src/cli/simple-commands/pair.js +849 -0
  237. package/src/cli/simple-commands/performance-hooks.js +149 -0
  238. package/src/cli/simple-commands/performance-metrics.js +601 -0
  239. package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
  240. package/src/cli/simple-commands/process-ui.js +274 -0
  241. package/src/cli/simple-commands/realtime-update-system.js +659 -0
  242. package/src/cli/simple-commands/sparc/architecture.js +1750 -0
  243. package/src/cli/simple-commands/sparc/commands.js +575 -0
  244. package/src/cli/simple-commands/sparc/completion.js +1831 -0
  245. package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
  246. package/src/cli/simple-commands/sparc/index.js +321 -0
  247. package/src/cli/simple-commands/sparc/phase-base.js +430 -0
  248. package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
  249. package/src/cli/simple-commands/sparc/refinement.js +1856 -0
  250. package/src/cli/simple-commands/sparc/specification.js +736 -0
  251. package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
  252. package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
  253. package/src/cli/simple-commands/sparc-modes/code.js +148 -0
  254. package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
  255. package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
  256. package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
  257. package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
  258. package/src/cli/simple-commands/sparc-modes/index.js +201 -0
  259. package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
  260. package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
  261. package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
  262. package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
  263. package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
  264. package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
  265. package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
  266. package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
  267. package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
  268. package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
  269. package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
  270. package/src/cli/simple-commands/sparc.js +530 -0
  271. package/src/cli/simple-commands/start-ui.js +147 -0
  272. package/src/cli/simple-commands/start-wrapper.js +285 -0
  273. package/src/cli/simple-commands/start.js +2 -0
  274. package/src/cli/simple-commands/status.js +303 -0
  275. package/src/cli/simple-commands/stream-chain-clean.js +221 -0
  276. package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
  277. package/src/cli/simple-commands/stream-chain-real.js +408 -0
  278. package/src/cli/simple-commands/stream-chain-working.js +323 -0
  279. package/src/cli/simple-commands/stream-chain.js +491 -0
  280. package/src/cli/simple-commands/stream-processor.js +340 -0
  281. package/src/cli/simple-commands/swarm-executor.js +253 -0
  282. package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
  283. package/src/cli/simple-commands/swarm-ui.js +741 -0
  284. package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
  285. package/src/cli/simple-commands/swarm.js +2277 -0
  286. package/src/cli/simple-commands/task.js +228 -0
  287. package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
  288. package/src/cli/simple-commands/timestamp-fix.js +104 -0
  289. package/src/cli/simple-commands/token-tracker.js +372 -0
  290. package/src/cli/simple-commands/tool-execution-framework.js +555 -0
  291. package/src/cli/simple-commands/train-and-stream.js +354 -0
  292. package/src/cli/simple-commands/training-pipeline.js +874 -0
  293. package/src/cli/simple-commands/training.js +288 -0
  294. package/src/cli/simple-commands/verification-hooks.js +336 -0
  295. package/src/cli/simple-commands/verification-integration.js +464 -0
  296. package/src/cli/simple-commands/verification-training-integration.js +646 -0
  297. package/src/cli/simple-commands/verification.js +551 -0
  298. package/src/cli/simple-commands/web-server.js +929 -0
  299. package/src/cli/simple-commands/webui-validator.js +136 -0
  300. package/src/language/README.md +503 -0
  301. package/src/language/claude-md-generator.js +618 -0
  302. package/src/language/cli.js +422 -0
  303. package/src/language/example.js +347 -0
  304. package/src/language/integration-system.js +619 -0
  305. package/src/language/language-detector.js +581 -0
@@ -0,0 +1,338 @@
1
+ // batch-manager.js - Batch configuration management utility
2
+ import { printSuccess, printError, printInfo, printWarning } from '../utils.js';
3
+ import { promises as fs } from 'fs';
4
+ import { PROJECT_TEMPLATES, ENVIRONMENT_CONFIGS } from './init/batch-init.js';
5
+ import { cwd, exit, existsSync } from '../node-compat.js';
6
+
7
+ export async function batchManagerCommand(subArgs, flags) {
8
+ const command = subArgs[0];
9
+
10
+ switch (command) {
11
+ case 'create-config':
12
+ return await createBatchConfig(subArgs.slice(1), flags);
13
+ case 'validate-config':
14
+ return await validateBatchConfig(subArgs.slice(1), flags);
15
+ case 'list-templates':
16
+ return listTemplates();
17
+ case 'list-environments':
18
+ return listEnvironments();
19
+ case 'estimate':
20
+ return await estimateBatchOperation(subArgs.slice(1), flags);
21
+ case 'help':
22
+ default:
23
+ return showBatchManagerHelp();
24
+ }
25
+ }
26
+
27
+ async function createBatchConfig(args, flags) {
28
+ const outputFile = args[0] || 'batch-config.json';
29
+ const interactive = flags.interactive || flags.i;
30
+
31
+ if (interactive) {
32
+ return await createInteractiveConfig(outputFile);
33
+ }
34
+
35
+ // Create basic template
36
+ const config = {
37
+ projects: ['project1', 'project2', 'project3'],
38
+ baseOptions: {
39
+ sparc: true,
40
+ parallel: true,
41
+ maxConcurrency: 5,
42
+ template: 'web-api',
43
+ environments: ['dev'],
44
+ },
45
+ };
46
+
47
+ try {
48
+ await fs.writeFile(outputFile, JSON.stringify(config, null, 2, 'utf8'));
49
+ printSuccess(`Created batch configuration template: ${outputFile}`);
50
+ console.log('Edit the file to customize your batch initialization setup.');
51
+ } catch (error) {
52
+ printError(`Failed to create config file: ${error.message}`);
53
+ }
54
+ }
55
+
56
+ async function createInteractiveConfig(outputFile) {
57
+ console.log('šŸš€ Interactive Batch Configuration Creator');
58
+ console.log('==========================================\n');
59
+
60
+ // This would require a proper CLI prompt library in a real implementation
61
+ // For now, we'll create a comprehensive template with comments
62
+ const config = {
63
+ _comment: 'Batch initialization configuration',
64
+ _templates: Object.keys(PROJECT_TEMPLATES),
65
+ _environments: Object.keys(ENVIRONMENT_CONFIGS),
66
+
67
+ baseOptions: {
68
+ sparc: true,
69
+ parallel: true,
70
+ maxConcurrency: 5,
71
+ force: false,
72
+ minimal: false,
73
+ progressTracking: true,
74
+ },
75
+
76
+ projects: {
77
+ _simple_list: ['project1', 'project2', 'project3'],
78
+ _or_use_projectConfigs_below: 'for individual customization',
79
+ },
80
+
81
+ projectConfigs: {
82
+ 'example-api': {
83
+ template: 'web-api',
84
+ environment: 'dev',
85
+ customConfig: {
86
+ database: 'postgresql',
87
+ auth: 'jwt',
88
+ },
89
+ },
90
+ 'example-frontend': {
91
+ template: 'react-app',
92
+ environment: 'dev',
93
+ customConfig: {
94
+ ui: 'material-ui',
95
+ state: 'redux',
96
+ },
97
+ },
98
+ },
99
+ };
100
+
101
+ try {
102
+ await fs.writeFile(outputFile, JSON.stringify(config, null, 2, 'utf8'));
103
+ printSuccess(`Created interactive batch configuration: ${outputFile}`);
104
+ console.log('\nNext steps:');
105
+ console.log('1. Edit the configuration file to match your needs');
106
+ console.log('2. Remove the "_comment" and example entries');
107
+ console.log('3. Use either "projects" array OR "projectConfigs" object');
108
+ console.log(`4. Run: claude-flow init --config ${outputFile}`);
109
+ } catch (error) {
110
+ printError(`Failed to create interactive config: ${error.message}`);
111
+ }
112
+ }
113
+
114
+ async function validateBatchConfig(args, flags) {
115
+ const configFile = args[0];
116
+
117
+ if (!configFile) {
118
+ printError('Please specify a configuration file to validate');
119
+ return;
120
+ }
121
+
122
+ try {
123
+ const content = await fs.readFile(configFile, 'utf8');
124
+ const config = JSON.parse(content);
125
+
126
+ console.log(`šŸ“‹ Validating batch configuration: ${configFile}`);
127
+ console.log('================================================\n');
128
+
129
+ const issues = [];
130
+ const warnings = [];
131
+
132
+ // Validate structure
133
+ if (!config.projects && !config.projectConfigs) {
134
+ issues.push('Missing "projects" array or "projectConfigs" object');
135
+ }
136
+
137
+ if (config.projects && config.projectConfigs) {
138
+ warnings.push(
139
+ 'Both "projects" and "projectConfigs" specified. "projectConfigs" will take precedence.',
140
+ );
141
+ }
142
+
143
+ // Validate base options
144
+ if (config.baseOptions) {
145
+ const { maxConcurrency, template, environments } = config.baseOptions;
146
+
147
+ if (maxConcurrency && (maxConcurrency < 1 || maxConcurrency > 20)) {
148
+ issues.push('maxConcurrency must be between 1 and 20');
149
+ }
150
+
151
+ if (template && !PROJECT_TEMPLATES[template]) {
152
+ issues.push(
153
+ `Unknown template: ${template}. Available: ${Object.keys(PROJECT_TEMPLATES).join(', ')}`,
154
+ );
155
+ }
156
+
157
+ if (environments) {
158
+ for (const env of environments) {
159
+ if (!ENVIRONMENT_CONFIGS[env]) {
160
+ issues.push(
161
+ `Unknown environment: ${env}. Available: ${Object.keys(ENVIRONMENT_CONFIGS).join(', ')}`,
162
+ );
163
+ }
164
+ }
165
+ }
166
+ }
167
+
168
+ // Validate project configs
169
+ if (config.projectConfigs) {
170
+ for (const [projectName, projectConfig] of Object.entries(config.projectConfigs)) {
171
+ if (projectConfig.template && !PROJECT_TEMPLATES[projectConfig.template]) {
172
+ issues.push(`Project ${projectName}: Unknown template ${projectConfig.template}`);
173
+ }
174
+
175
+ if (projectConfig.environment && !ENVIRONMENT_CONFIGS[projectConfig.environment]) {
176
+ issues.push(`Project ${projectName}: Unknown environment ${projectConfig.environment}`);
177
+ }
178
+ }
179
+ }
180
+
181
+ // Report results
182
+ if (issues.length === 0) {
183
+ printSuccess('āœ… Configuration is valid!');
184
+
185
+ if (warnings.length > 0) {
186
+ console.log('\nāš ļø Warnings:');
187
+ warnings.forEach((warning) => console.log(` - ${warning}`));
188
+ }
189
+
190
+ // Summary
191
+ console.log('\nšŸ“Š Configuration Summary:');
192
+ const projectCount = config.projects
193
+ ? config.projects.length
194
+ : config.projectConfigs
195
+ ? Object.keys(config.projectConfigs).length
196
+ : 0;
197
+ console.log(` Projects: ${projectCount}`);
198
+
199
+ if (config.baseOptions) {
200
+ console.log(` Parallel: ${config.baseOptions.parallel ? 'Yes' : 'No'}`);
201
+ console.log(` Max Concurrency: ${config.baseOptions.maxConcurrency || 5}`);
202
+ console.log(` SPARC: ${config.baseOptions.sparc ? 'Enabled' : 'Disabled'}`);
203
+ console.log(` Template: ${config.baseOptions.template || 'default'}`);
204
+ }
205
+ } else {
206
+ printError('āŒ Configuration has issues:');
207
+ issues.forEach((issue) => console.error(` - ${issue}`));
208
+
209
+ if (warnings.length > 0) {
210
+ console.log('\nāš ļø Warnings:');
211
+ warnings.forEach((warning) => console.log(` - ${warning}`));
212
+ }
213
+ }
214
+ } catch (error) {
215
+ if (error instanceof Deno.errors.NotFound) {
216
+ printError(`Configuration file not found: ${configFile}`);
217
+ } else if (error instanceof SyntaxError) {
218
+ printError(`Invalid JSON in configuration file: ${error.message}`);
219
+ } else {
220
+ printError(`Failed to validate configuration: ${error.message}`);
221
+ }
222
+ }
223
+ }
224
+
225
+ function listTemplates() {
226
+ console.log('šŸ“‹ Available Project Templates');
227
+ console.log('==============================\n');
228
+
229
+ for (const [key, template] of Object.entries(PROJECT_TEMPLATES)) {
230
+ console.log(`šŸ—ļø ${key}`);
231
+ console.log(` Name: ${template.name}`);
232
+ console.log(` Description: ${template.description}`);
233
+ console.log(` Extra Directories: ${template.extraDirs ? template.extraDirs.length : 0}`);
234
+ console.log(
235
+ ` Extra Files: ${template.extraFiles ? Object.keys(template.extraFiles).length : 0}`,
236
+ );
237
+ console.log();
238
+ }
239
+ }
240
+
241
+ function listEnvironments() {
242
+ console.log('šŸŒ Available Environment Configurations');
243
+ console.log('=======================================\n');
244
+
245
+ for (const [key, env] of Object.entries(ENVIRONMENT_CONFIGS)) {
246
+ console.log(`āš™ļø ${key}`);
247
+ console.log(` Name: ${env.name}`);
248
+ console.log(` Features: ${env.features.join(', ')}`);
249
+ console.log(` Config Variables: ${Object.keys(env.config).length}`);
250
+ console.log();
251
+ }
252
+ }
253
+
254
+ async function estimateBatchOperation(args, flags) {
255
+ const configFile = args[0];
256
+
257
+ if (!configFile) {
258
+ printError('Please specify a configuration file to estimate');
259
+ return;
260
+ }
261
+
262
+ try {
263
+ const content = await fs.readFile(configFile, 'utf8');
264
+ const config = JSON.parse(content);
265
+
266
+ console.log('ā±ļø Batch Operation Estimation');
267
+ console.log('=============================\n');
268
+
269
+ let projectCount = 0;
270
+ let totalEnvironments = 0;
271
+
272
+ if (config.projects) {
273
+ projectCount = config.projects.length;
274
+ const environments = config.baseOptions?.environments || ['dev'];
275
+ totalEnvironments = projectCount * environments.length;
276
+ } else if (config.projectConfigs) {
277
+ projectCount = Object.keys(config.projectConfigs).length;
278
+ totalEnvironments = projectCount; // Each project has its own environment
279
+ }
280
+
281
+ const parallel = config.baseOptions?.parallel !== false;
282
+ const maxConcurrency = config.baseOptions?.maxConcurrency || 5;
283
+ const avgTimePerProject = 15; // seconds estimate
284
+
285
+ const sequentialTime = totalEnvironments * avgTimePerProject;
286
+ const parallelTime = parallel
287
+ ? Math.ceil(totalEnvironments / maxConcurrency) * avgTimePerProject
288
+ : sequentialTime;
289
+
290
+ console.log(`šŸ“Š Project Count: ${projectCount}`);
291
+ console.log(`šŸŒ Total Environments: ${totalEnvironments}`);
292
+ console.log(`⚔ Parallel Processing: ${parallel ? 'Enabled' : 'Disabled'}`);
293
+ console.log(`šŸ”„ Max Concurrency: ${maxConcurrency}`);
294
+ console.log();
295
+ console.log(`ā±ļø Estimated Time:`);
296
+ console.log(` Sequential: ~${Math.ceil(sequentialTime / 60)} minutes`);
297
+ console.log(` Parallel: ~${Math.ceil(parallelTime / 60)} minutes`);
298
+ console.log(` Time Savings: ${Math.ceil((sequentialTime - parallelTime) / 60)} minutes`);
299
+ console.log();
300
+ console.log(`šŸ’¾ Estimated Disk Usage:`);
301
+ console.log(` Per Project: ~50-200 MB`);
302
+ console.log(` Total: ~${Math.ceil((totalEnvironments * 125) / 1024)} GB`);
303
+ } catch (error) {
304
+ printError(`Failed to estimate batch operation: ${error.message}`);
305
+ }
306
+ }
307
+
308
+ function showBatchManagerHelp() {
309
+ console.log('šŸ› ļø Batch Manager - Configuration and Estimation Tools');
310
+ console.log('====================================================\n');
311
+
312
+ console.log('USAGE:');
313
+ console.log(' claude-flow batch <command> [options]\n');
314
+
315
+ console.log('COMMANDS:');
316
+ console.log(' create-config [file] Create batch configuration template');
317
+ console.log(' validate-config <file> Validate batch configuration file');
318
+ console.log(' list-templates Show available project templates');
319
+ console.log(' list-environments Show available environment configs');
320
+ console.log(' estimate <config> Estimate time and resources for batch operation');
321
+ console.log(' help Show this help message\n');
322
+
323
+ console.log('OPTIONS:');
324
+ console.log(' --interactive, -i Create interactive configuration');
325
+ console.log(' --help, -h Show command help\n');
326
+
327
+ console.log('EXAMPLES:');
328
+ console.log(' claude-flow batch create-config my-batch.json');
329
+ console.log(' claude-flow batch create-config --interactive');
330
+ console.log(' claude-flow batch validate-config my-batch.json');
331
+ console.log(' claude-flow batch estimate my-batch.json');
332
+ console.log(' claude-flow batch list-templates');
333
+ console.log(' claude-flow batch list-environments\n');
334
+
335
+ console.log('INTEGRATION:');
336
+ console.log(' Use created configs with: claude-flow init --config <file>');
337
+ console.log(' Or batch init directly: claude-flow init --batch-init project1,project2');
338
+ }
@@ -0,0 +1,311 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Claude Code Telemetry Integration
5
+ * Captures real token usage from Claude Code CLI
6
+ */
7
+
8
+ import { spawn } from 'child_process';
9
+ import fs from 'fs/promises';
10
+ import path from 'path';
11
+ import os from 'os';
12
+ import readline from 'readline';
13
+ import { trackTokens } from './token-tracker.js';
14
+
15
+ // Claude session data locations (platform-specific)
16
+ const CLAUDE_DATA_PATHS = [
17
+ path.join(os.homedir(), '.claude', 'sessions'),
18
+ path.join(os.homedir(), '.config', 'claude', 'sessions'),
19
+ path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'sessions'),
20
+ ];
21
+
22
+ /**
23
+ * Parse Claude session JSONL files for token usage
24
+ */
25
+ async function parseClaudeSessionData(sessionId) {
26
+ for (const dataPath of CLAUDE_DATA_PATHS) {
27
+ try {
28
+ const sessionFile = path.join(dataPath, `${sessionId}.jsonl`);
29
+ const exists = await fs
30
+ .access(sessionFile)
31
+ .then(() => true)
32
+ .catch(() => false);
33
+
34
+ if (!exists) continue;
35
+
36
+ const content = await fs.readFile(sessionFile, 'utf-8');
37
+ const lines = content.trim().split('\n');
38
+
39
+ let totalInput = 0;
40
+ let totalOutput = 0;
41
+
42
+ for (const line of lines) {
43
+ try {
44
+ const data = JSON.parse(line);
45
+ if (data.usage) {
46
+ totalInput += data.usage.input_tokens || 0;
47
+ totalOutput += data.usage.output_tokens || 0;
48
+ }
49
+ } catch (e) {
50
+ // Skip invalid JSON lines
51
+ }
52
+ }
53
+
54
+ return { inputTokens: totalInput, outputTokens: totalOutput };
55
+ } catch (error) {
56
+ // Continue to next path
57
+ }
58
+ }
59
+
60
+ return null;
61
+ }
62
+
63
+ /**
64
+ * Extract token usage from Claude CLI output
65
+ */
66
+ function parseClaudeOutput(output) {
67
+ const tokenRegex = /(\d+)\s+tokens?\s+\((input|output|total)\)/gi;
68
+ const costRegex = /\$(\d+\.\d+)/g;
69
+
70
+ const tokens = { input: 0, output: 0, total: 0 };
71
+ const costs = [];
72
+
73
+ let match;
74
+ while ((match = tokenRegex.exec(output)) !== null) {
75
+ const count = parseInt(match[1]);
76
+ const type = match[2].toLowerCase();
77
+ tokens[type] = count;
78
+ }
79
+
80
+ while ((match = costRegex.exec(output)) !== null) {
81
+ costs.push(parseFloat(match[1]));
82
+ }
83
+
84
+ return { tokens, costs };
85
+ }
86
+
87
+ /**
88
+ * Wrap Claude CLI execution with telemetry
89
+ */
90
+ export async function runClaudeWithTelemetry(args, options = {}) {
91
+ const sessionId = options.sessionId || `claude-${Date.now()}`;
92
+ const agentType = options.agentType || 'claude-cli';
93
+ const command = args.join(' ');
94
+
95
+ // Enable telemetry environment variables
96
+ const env = {
97
+ ...process.env,
98
+ CLAUDE_CODE_ENABLE_TELEMETRY: '1',
99
+ OTEL_METRICS_EXPORTER: process.env.OTEL_METRICS_EXPORTER || 'console',
100
+ OTEL_LOGS_EXPORTER: process.env.OTEL_LOGS_EXPORTER || 'console',
101
+ };
102
+
103
+ return new Promise((resolve, reject) => {
104
+ const claude = spawn('claude', args, {
105
+ env,
106
+ stdio: ['inherit', 'pipe', 'pipe'],
107
+ });
108
+
109
+ let stdout = '';
110
+ let stderr = '';
111
+
112
+ // Create readline interface for real-time output
113
+ const rlOut = readline.createInterface({
114
+ input: claude.stdout,
115
+ terminal: false,
116
+ });
117
+
118
+ const rlErr = readline.createInterface({
119
+ input: claude.stderr,
120
+ terminal: false,
121
+ });
122
+
123
+ rlOut.on('line', (line) => {
124
+ console.log(line);
125
+ stdout += line + '\n';
126
+
127
+ // Look for token usage in real-time
128
+ const usage = parseClaudeOutput(line);
129
+ if (usage.tokens.input > 0 || usage.tokens.output > 0) {
130
+ trackTokens({
131
+ sessionId,
132
+ agentType,
133
+ command,
134
+ inputTokens: usage.tokens.input,
135
+ outputTokens: usage.tokens.output,
136
+ metadata: { costs: usage.costs },
137
+ }).catch(console.error);
138
+ }
139
+ });
140
+
141
+ rlErr.on('line', (line) => {
142
+ console.error(line);
143
+ stderr += line + '\n';
144
+ });
145
+
146
+ claude.on('exit', async (code) => {
147
+ // Try to parse session data after completion
148
+ const sessionData = await parseClaudeSessionData(sessionId);
149
+ if (sessionData) {
150
+ await trackTokens({
151
+ sessionId,
152
+ agentType,
153
+ command,
154
+ inputTokens: sessionData.inputTokens,
155
+ outputTokens: sessionData.outputTokens,
156
+ metadata: { source: 'session_file' },
157
+ });
158
+ }
159
+
160
+ // Also parse full output for any missed tokens
161
+ const fullUsage = parseClaudeOutput(stdout + stderr);
162
+ if (fullUsage.tokens.input > 0 || fullUsage.tokens.output > 0) {
163
+ await trackTokens({
164
+ sessionId,
165
+ agentType,
166
+ command,
167
+ inputTokens: fullUsage.tokens.input,
168
+ outputTokens: fullUsage.tokens.output,
169
+ metadata: { source: 'output_parse', costs: fullUsage.costs },
170
+ });
171
+ }
172
+
173
+ resolve({ code, stdout, stderr });
174
+ });
175
+
176
+ claude.on('error', reject);
177
+ });
178
+ }
179
+
180
+ /**
181
+ * Monitor Claude session for token usage
182
+ */
183
+ export async function monitorClaudeSession(sessionId, interval = 5000) {
184
+ console.log(`šŸ“Š Monitoring Claude session: ${sessionId}`);
185
+ console.log(` Checking every ${interval / 1000} seconds for token updates...\n`);
186
+
187
+ let lastTokens = { input: 0, output: 0 };
188
+
189
+ const monitor = setInterval(async () => {
190
+ const data = await parseClaudeSessionData(sessionId);
191
+
192
+ if (data) {
193
+ const inputDiff = data.inputTokens - lastTokens.input;
194
+ const outputDiff = data.outputTokens - lastTokens.output;
195
+
196
+ if (inputDiff > 0 || outputDiff > 0) {
197
+ console.log(`šŸ”„ Token Update Detected:`);
198
+ console.log(` Input: +${inputDiff} (Total: ${data.inputTokens})`);
199
+ console.log(` Output: +${outputDiff} (Total: ${data.outputTokens})`);
200
+
201
+ await trackTokens({
202
+ sessionId,
203
+ agentType: 'claude-monitor',
204
+ command: 'session_monitor',
205
+ inputTokens: inputDiff,
206
+ outputTokens: outputDiff,
207
+ metadata: {
208
+ totalInput: data.inputTokens,
209
+ totalOutput: data.outputTokens,
210
+ },
211
+ });
212
+
213
+ lastTokens = data;
214
+ }
215
+ }
216
+ }, interval);
217
+
218
+ // Return stop function
219
+ return () => {
220
+ clearInterval(monitor);
221
+ console.log(`\nāœ… Stopped monitoring session: ${sessionId}`);
222
+ };
223
+ }
224
+
225
+ /**
226
+ * Extract token usage from /cost command
227
+ */
228
+ export async function extractCostCommand() {
229
+ return new Promise((resolve, reject) => {
230
+ const claude = spawn('claude', ['/cost'], {
231
+ stdio: ['pipe', 'pipe', 'pipe'],
232
+ });
233
+
234
+ claude.stdin.write('\n');
235
+ claude.stdin.end();
236
+
237
+ let output = '';
238
+
239
+ claude.stdout.on('data', (data) => {
240
+ output += data.toString();
241
+ });
242
+
243
+ claude.stderr.on('data', (data) => {
244
+ output += data.toString();
245
+ });
246
+
247
+ claude.on('exit', () => {
248
+ const usage = parseClaudeOutput(output);
249
+ resolve(usage);
250
+ });
251
+
252
+ claude.on('error', reject);
253
+ });
254
+ }
255
+
256
+ // CLI interface
257
+ if (import.meta.url === `file://${process.argv[1]}`) {
258
+ const command = process.argv[2];
259
+
260
+ switch (command) {
261
+ case 'wrap':
262
+ // Wrap Claude command with telemetry
263
+ const claudeArgs = process.argv.slice(3);
264
+ runClaudeWithTelemetry(claudeArgs)
265
+ .then((result) => process.exit(result.code))
266
+ .catch((error) => {
267
+ console.error('Error:', error);
268
+ process.exit(1);
269
+ });
270
+ break;
271
+
272
+ case 'monitor':
273
+ // Monitor a session
274
+ const sessionId = process.argv[3] || 'current';
275
+ const stopMonitor = await monitorClaudeSession(sessionId);
276
+
277
+ // Handle graceful shutdown
278
+ process.on('SIGINT', () => {
279
+ stopMonitor();
280
+ process.exit(0);
281
+ });
282
+ break;
283
+
284
+ case 'cost':
285
+ // Extract current session cost
286
+ const costData = await extractCostCommand();
287
+ console.log('\nšŸ“Š Current Session Usage:');
288
+ console.log(` Input Tokens: ${costData.tokens.input || 0}`);
289
+ console.log(` Output Tokens: ${costData.tokens.output || 0}`);
290
+ console.log(` Total Tokens: ${costData.tokens.total || 0}`);
291
+ if (costData.costs.length > 0) {
292
+ console.log(` Estimated Cost: $${costData.costs[0]}`);
293
+ }
294
+ break;
295
+
296
+ default:
297
+ console.log(`
298
+ Claude Telemetry Integration
299
+
300
+ Usage:
301
+ claude-telemetry wrap <claude-args> Run Claude with telemetry
302
+ claude-telemetry monitor [session-id] Monitor session for tokens
303
+ claude-telemetry cost Get current session cost
304
+
305
+ Examples:
306
+ claude-telemetry wrap chat "Hello"
307
+ claude-telemetry monitor claude-123456
308
+ claude-telemetry cost
309
+ `);
310
+ }
311
+ }