claude-flow-novice 2.0.3 → 2.0.4

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 (272) hide show
  1. package/dist/src/cli/commands/guidance.js +487 -668
  2. package/dist/src/cli/commands/index-validate.js +18 -29
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
  4. package/dist/src/cli/commands/neural-goal-init.js +92 -125
  5. package/dist/src/cli/commands/swarm-exec.js +317 -393
  6. package/dist/src/cli/commands/swarm.js +1 -1
  7. package/dist/src/cli/commands/validate-framework.js +983 -1100
  8. package/dist/src/cli/commands/validate.js +144 -223
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
  13. package/dist/src/cli/simple-commands/agent.js +157 -193
  14. package/dist/src/cli/simple-commands/analysis.js +336 -446
  15. package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
  16. package/dist/src/cli/simple-commands/automation.js +481 -469
  17. package/dist/src/cli/simple-commands/batch-manager.js +261 -313
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
  19. package/dist/src/cli/simple-commands/claude-track.js +68 -90
  20. package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
  21. package/dist/src/cli/simple-commands/config.js +245 -290
  22. package/dist/src/cli/simple-commands/coordination.js +182 -234
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
  27. package/dist/src/cli/simple-commands/github/github-api.js +535 -574
  28. package/dist/src/cli/simple-commands/github/init.js +276 -303
  29. package/dist/src/cli/simple-commands/github.js +222 -247
  30. package/dist/src/cli/simple-commands/goal.js +51 -63
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
  43. package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
  44. package/dist/src/cli/simple-commands/hive.js +90 -79
  45. package/dist/src/cli/simple-commands/hook-safety.js +431 -521
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
  47. package/dist/src/cli/simple-commands/hooks.js +1064 -1204
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
  49. package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
  59. package/dist/src/cli/simple-commands/init/help.js +104 -107
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
  61. package/dist/src/cli/simple-commands/init/index.js +1510 -1759
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
  72. package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
  84. package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
  89. package/dist/src/cli/simple-commands/init.js +1 -2
  90. package/dist/src/cli/simple-commands/mcp-health.js +131 -158
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
  92. package/dist/src/cli/simple-commands/mcp.js +345 -400
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
  94. package/dist/src/cli/simple-commands/memory.js +247 -311
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
  96. package/dist/src/cli/simple-commands/monitor.js +294 -363
  97. package/dist/src/cli/simple-commands/neural.js +51 -65
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
  99. package/dist/src/cli/simple-commands/pair-basic.js +528 -656
  100. package/dist/src/cli/simple-commands/pair-old.js +430 -543
  101. package/dist/src/cli/simple-commands/pair-working.js +615 -751
  102. package/dist/src/cli/simple-commands/pair.js +615 -751
  103. package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
  104. package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
  106. package/dist/src/cli/simple-commands/process-ui.js +230 -254
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
  109. package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
  112. package/dist/src/cli/simple-commands/sparc/index.js +241 -298
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
  116. package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +465 -493
  137. package/dist/src/cli/simple-commands/start-ui.js +108 -132
  138. package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +254 -275
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
  145. package/dist/src/cli/simple-commands/stream-chain.js +260 -318
  146. package/dist/src/cli/simple-commands/stream-processor.js +290 -315
  147. package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
  149. package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
  151. package/dist/src/cli/simple-commands/swarm.js +887 -1082
  152. package/dist/src/cli/simple-commands/task.js +161 -206
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
  154. package/dist/src/cli/simple-commands/token-tracker.js +258 -316
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
  156. package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
  157. package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
  158. package/dist/src/cli/simple-commands/training.js +170 -227
  159. package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
  160. package/dist/src/cli/simple-commands/verification-integration.js +389 -417
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
  162. package/dist/src/cli/simple-commands/verification.js +493 -513
  163. package/dist/src/cli/simple-commands/web-server.js +766 -836
  164. package/dist/src/cli/simple-commands/webui-validator.js +106 -124
  165. package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
  166. package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
  167. package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
  168. package/dist/src/coordination/iteration-tracker.js +363 -454
  169. package/dist/src/enterprise/analytics-manager.js +1135 -0
  170. package/dist/src/enterprise/audit-manager.js +1115 -0
  171. package/dist/src/enterprise/cloud-manager.js +891 -0
  172. package/dist/src/enterprise/deployment-manager.js +966 -0
  173. package/dist/src/enterprise/index.js +6 -0
  174. package/dist/src/enterprise/project-manager.js +584 -0
  175. package/dist/src/enterprise/security-manager.js +991 -0
  176. package/dist/src/index.js +1 -1
  177. package/dist/src/mcp/DEPRECATED.js +46 -60
  178. package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
  179. package/dist/src/mcp/implementations/agent-tracker.js +114 -128
  180. package/dist/src/mcp/implementations/daa-tools.js +292 -350
  181. package/dist/src/mcp/implementations/workflow-tools.js +329 -361
  182. package/dist/src/mcp/mcp-config-manager.js +1183 -1331
  183. package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
  184. package/dist/src/mcp/mcp-server-novice.js +11 -17
  185. package/dist/src/mcp/mcp-server-sdk.js +11 -17
  186. package/dist/src/mcp/mcp-server.js +1620 -1484
  187. package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
  188. package/dist/src/memory/advanced-serializer.js +609 -589
  189. package/dist/src/memory/enhanced-examples.js +220 -305
  190. package/dist/src/memory/enhanced-memory.js +295 -336
  191. package/dist/src/memory/enhanced-session-serializer.js +408 -492
  192. package/dist/src/memory/fallback-memory-system.js +900 -1021
  193. package/dist/src/memory/fallback-store.js +93 -131
  194. package/dist/src/memory/high-performance-serialization.js +592 -730
  195. package/dist/src/memory/in-memory-store.js +161 -213
  196. package/dist/src/memory/index.js +123 -157
  197. package/dist/src/memory/lock-free-structures.js +578 -764
  198. package/dist/src/memory/memory-mapped-persistence.js +585 -766
  199. package/dist/src/memory/memory-pressure-manager.js +569 -707
  200. package/dist/src/memory/migration.js +358 -445
  201. package/dist/src/memory/shared-memory.js +641 -768
  202. package/dist/src/memory/sqlite-store.js +245 -325
  203. package/dist/src/memory/sqlite-wrapper.js +122 -151
  204. package/dist/src/memory/swarm-memory.js +470 -603
  205. package/dist/src/memory/test-example.js +126 -134
  206. package/dist/src/memory/ultra-fast-memory-store.js +622 -821
  207. package/dist/src/memory/unified-memory-manager.js +356 -437
  208. package/dist/src/migration/index.js +92 -0
  209. package/dist/src/migration/logger.js +121 -0
  210. package/dist/src/migration/migration-analyzer.js +268 -0
  211. package/dist/src/migration/migration-runner.js +522 -0
  212. package/dist/src/migration/migration-validator.js +285 -0
  213. package/dist/src/migration/progress-reporter.js +150 -0
  214. package/dist/src/migration/rollback-manager.js +321 -0
  215. package/dist/src/migration/tests/migration-system.test.js +7 -0
  216. package/dist/src/migration/types.js +3 -0
  217. package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
  218. package/dist/src/swarm/__tests__/integration.test.js +227 -0
  219. package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
  220. package/dist/src/swarm/advanced-orchestrator.js +1095 -0
  221. package/dist/src/swarm/claude-code-interface.js +961 -0
  222. package/dist/src/swarm/claude-flow-executor.js +229 -0
  223. package/dist/src/swarm/consensus-coordinator.js +475 -0
  224. package/dist/src/swarm/coordinator.js +2993 -0
  225. package/dist/src/swarm/direct-executor.js +1180 -0
  226. package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
  227. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
  228. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
  229. package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
  230. package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
  231. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
  232. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
  233. package/dist/src/swarm/executor-v2.js +322 -0
  234. package/dist/src/swarm/executor.js +815 -0
  235. package/dist/src/swarm/hive-mind-integration.js +703 -0
  236. package/dist/src/swarm/index.js +41 -0
  237. package/dist/src/swarm/json-output-aggregator.js +267 -0
  238. package/dist/src/swarm/large-scale-coordinator.js +542 -0
  239. package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
  240. package/dist/src/swarm/memory.js +1117 -0
  241. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
  242. package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
  243. package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
  244. package/dist/src/swarm/optimizations/connection-pool.js +244 -0
  245. package/dist/src/swarm/optimizations/index.js +28 -0
  246. package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
  247. package/dist/src/swarm/optimizations/ttl-map.js +234 -0
  248. package/dist/src/swarm/prompt-cli.js +200 -0
  249. package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
  250. package/dist/src/swarm/prompt-copier.js +381 -0
  251. package/dist/src/swarm/prompt-manager.js +295 -0
  252. package/dist/src/swarm/prompt-utils.js +310 -0
  253. package/dist/src/swarm/result-aggregator.js +718 -0
  254. package/dist/src/swarm/sparc-executor.js +1568 -0
  255. package/dist/src/swarm/strategies/auto.js +758 -0
  256. package/dist/src/swarm/strategies/base.js +128 -0
  257. package/dist/src/swarm/strategies/research.js +914 -0
  258. package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
  259. package/dist/src/swarm/types.js +52 -0
  260. package/dist/src/swarm/workers/copy-worker.js +56 -0
  261. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
  262. package/dist/src/utils/github-cli-safe.js +56 -64
  263. package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
  264. package/dist/src/utils/npx-isolated-cache.js +104 -119
  265. package/dist/src/utils/preference-manager.js +622 -652
  266. package/dist/src/utils/timezone-utils.js +86 -105
  267. package/dist/src/validators/epic-config-schema.js +214 -0
  268. package/dist/src/validators/index.js +10 -0
  269. package/dist/src/validators/swarm-init-validator.js +259 -0
  270. package/dist/src/validators/todowrite-batching-validator.js +215 -0
  271. package/dist/src/validators/todowrite-integration.js +187 -0
  272. package/package.json +2 -2
@@ -2,276 +2,217 @@
2
2
  /**
3
3
  * GitHub Coordinator Command
4
4
  * Provides GitHub workflow orchestration and coordination capabilities
5
- */
6
-
7
- import { printSuccess, printError, printWarning, printInfo } from '../utils.js';
8
- import { githubAPI } from './github-api.js';
9
- import { execSync } from 'child_process';
10
-
11
- class GitHubCoordinator {
12
- constructor() {
13
- this.api = githubAPI;
14
- this.workflows = new Map();
15
- this.activeCoordinations = new Map();
16
- }
17
-
18
- /**
5
+ */ import { printSuccess, printError, printWarning, printInfo } from "../utils.js";
6
+ import { githubAPI } from "./github-api.js";
7
+ import { execSync } from "child_process";
8
+ let GitHubCoordinator = class GitHubCoordinator {
9
+ /**
19
10
  * Initialize GitHub coordination
20
- */
21
- async initialize(options = {}) {
22
- printInfo('🚀 Initializing GitHub Coordinator...');
23
-
24
- // Authenticate with GitHub
25
- const authenticated = await this.api.authenticate(options.token);
26
- if (!authenticated) {
27
- throw new Error('Failed to authenticate with GitHub');
11
+ */ async initialize(options = {}) {
12
+ printInfo('🚀 Initializing GitHub Coordinator...');
13
+ // Authenticate with GitHub
14
+ const authenticated = await this.api.authenticate(options.token);
15
+ if (!authenticated) {
16
+ throw new Error('Failed to authenticate with GitHub');
17
+ }
18
+ // Check if we're in a git repository
19
+ try {
20
+ const remoteUrl = execSync('git config --get remote.origin.url', {
21
+ encoding: 'utf8'
22
+ }).trim();
23
+ const repoMatch = remoteUrl.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);
24
+ if (repoMatch) {
25
+ this.currentRepo = {
26
+ owner: repoMatch[1],
27
+ repo: repoMatch[2]
28
+ };
29
+ printSuccess(`Connected to repository: ${this.currentRepo.owner}/${this.currentRepo.repo}`);
30
+ }
31
+ } catch (error) {
32
+ printWarning('Not in a git repository or no GitHub remote found');
33
+ }
34
+ // Initialize swarm integration
35
+ await this.initializeSwarmIntegration();
36
+ printSuccess('✅ GitHub Coordinator initialized successfully');
28
37
  }
29
-
30
- // Check if we're in a git repository
31
- try {
32
- const remoteUrl = execSync('git config --get remote.origin.url', { encoding: 'utf8' }).trim();
33
- const repoMatch = remoteUrl.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);
34
-
35
- if (repoMatch) {
36
- this.currentRepo = { owner: repoMatch[1], repo: repoMatch[2] };
37
- printSuccess(`Connected to repository: ${this.currentRepo.owner}/${this.currentRepo.repo}`);
38
- }
39
- } catch (error) {
40
- printWarning('Not in a git repository or no GitHub remote found');
41
- }
42
-
43
- // Initialize swarm integration
44
- await this.initializeSwarmIntegration();
45
-
46
- printSuccess('✅ GitHub Coordinator initialized successfully');
47
- }
48
-
49
- /**
38
+ /**
50
39
  * Initialize swarm integration for coordination
51
- */
52
- async initializeSwarmIntegration() {
53
- try {
54
- // Check if ruv-swarm is available
55
- execSync('npx ruv-swarm --version', { stdio: 'pipe' });
56
-
57
- // Initialize swarm for GitHub coordination
58
- const swarmInit = execSync(
59
- 'npx ruv-swarm hook pre-task --description "GitHub workflow coordination"',
60
- { encoding: 'utf8' },
61
- );
62
-
63
- if (swarmInit.includes('continue')) {
64
- printSuccess('🐝 Swarm integration initialized for GitHub coordination');
65
- this.swarmEnabled = true;
66
- }
67
- } catch (error) {
68
- printWarning('Swarm integration not available - continuing without swarm features');
69
- this.swarmEnabled = false;
40
+ */ async initializeSwarmIntegration() {
41
+ try {
42
+ // Check if ruv-swarm is available
43
+ execSync('npx ruv-swarm --version', {
44
+ stdio: 'pipe'
45
+ });
46
+ // Initialize swarm for GitHub coordination
47
+ const swarmInit = execSync('npx ruv-swarm hook pre-task --description "GitHub workflow coordination"', {
48
+ encoding: 'utf8'
49
+ });
50
+ if (swarmInit.includes('continue')) {
51
+ printSuccess('🐝 Swarm integration initialized for GitHub coordination');
52
+ this.swarmEnabled = true;
53
+ }
54
+ } catch (error) {
55
+ printWarning('Swarm integration not available - continuing without swarm features');
56
+ this.swarmEnabled = false;
57
+ }
70
58
  }
71
- }
72
-
73
- /**
59
+ /**
74
60
  * Coordinate CI/CD pipeline setup
75
- */
76
- async coordinateCIPipeline(options = {}) {
77
- printInfo('🔄 Coordinating CI/CD pipeline setup...');
78
-
79
- if (!this.currentRepo) {
80
- throw new Error('No GitHub repository context available');
61
+ */ async coordinateCIPipeline(options = {}) {
62
+ printInfo('🔄 Coordinating CI/CD pipeline setup...');
63
+ if (!this.currentRepo) {
64
+ throw new Error('No GitHub repository context available');
65
+ }
66
+ const { owner, repo } = this.currentRepo;
67
+ const pipeline = options.pipeline || 'nodejs';
68
+ const autoApprove = options.autoApprove || false;
69
+ // Create workflow coordination plan
70
+ const coordinationPlan = {
71
+ id: `ci-setup-${Date.now()}`,
72
+ type: 'ci_pipeline_setup',
73
+ repository: `${owner}/${repo}`,
74
+ pipeline,
75
+ steps: [
76
+ 'analyze_repository_structure',
77
+ 'create_workflow_files',
78
+ 'setup_environment_secrets',
79
+ 'configure_branch_protection',
80
+ 'test_pipeline_execution',
81
+ 'setup_notifications'
82
+ ],
83
+ status: 'planning'
84
+ };
85
+ this.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
86
+ // Execute coordination with swarm if available
87
+ if (this.swarmEnabled) {
88
+ await this.executeWithSwarm(coordinationPlan);
89
+ } else {
90
+ await this.executeCoordination(coordinationPlan);
91
+ }
92
+ return coordinationPlan;
81
93
  }
82
-
83
- const { owner, repo } = this.currentRepo;
84
- const pipeline = options.pipeline || 'nodejs';
85
- const autoApprove = options.autoApprove || false;
86
-
87
- // Create workflow coordination plan
88
- const coordinationPlan = {
89
- id: `ci-setup-${Date.now()}`,
90
- type: 'ci_pipeline_setup',
91
- repository: `${owner}/${repo}`,
92
- pipeline,
93
- steps: [
94
- 'analyze_repository_structure',
95
- 'create_workflow_files',
96
- 'setup_environment_secrets',
97
- 'configure_branch_protection',
98
- 'test_pipeline_execution',
99
- 'setup_notifications',
100
- ],
101
- status: 'planning',
102
- };
103
-
104
- this.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
105
-
106
- // Execute coordination with swarm if available
107
- if (this.swarmEnabled) {
108
- await this.executeWithSwarm(coordinationPlan);
109
- } else {
110
- await this.executeCoordination(coordinationPlan);
111
- }
112
-
113
- return coordinationPlan;
114
- }
115
-
116
- /**
94
+ /**
117
95
  * Execute coordination with swarm integration
118
- */
119
- async executeWithSwarm(coordinationPlan) {
120
- printInfo('🐝 Executing coordination with swarm...');
121
-
122
- // Store coordination plan in swarm memory
123
- const memoryKey = `github-coordination/${coordinationPlan.id}`;
124
- execSync(
125
- `npx ruv-swarm hook notification --message "GitHub Coordination: ${coordinationPlan.type} started" --telemetry true`,
126
- );
127
-
128
- // Execute each step with swarm coordination
129
- for (const step of coordinationPlan.steps) {
130
- printInfo(`Executing step: ${step}`);
131
-
132
- // Pre-step hook
133
- execSync(`npx ruv-swarm hook pre-task --description "GitHub step: ${step}"`);
134
-
135
- // Execute step
136
- await this.executeCoordinationStep(coordinationPlan, step);
137
-
138
- // Post-step hook
139
- execSync(
140
- `npx ruv-swarm hook post-edit --file "github-coordination" --memory-key "${memoryKey}/${step}"`,
141
- );
96
+ */ async executeWithSwarm(coordinationPlan) {
97
+ printInfo('🐝 Executing coordination with swarm...');
98
+ // Store coordination plan in swarm memory
99
+ const memoryKey = `github-coordination/${coordinationPlan.id}`;
100
+ execSync(`npx ruv-swarm hook notification --message "GitHub Coordination: ${coordinationPlan.type} started" --telemetry true`);
101
+ // Execute each step with swarm coordination
102
+ for (const step of coordinationPlan.steps){
103
+ printInfo(`Executing step: ${step}`);
104
+ // Pre-step hook
105
+ execSync(`npx ruv-swarm hook pre-task --description "GitHub step: ${step}"`);
106
+ // Execute step
107
+ await this.executeCoordinationStep(coordinationPlan, step);
108
+ // Post-step hook
109
+ execSync(`npx ruv-swarm hook post-edit --file "github-coordination" --memory-key "${memoryKey}/${step}"`);
110
+ }
111
+ // Final coordination notification
112
+ execSync(`npx ruv-swarm hook notification --message "GitHub Coordination: ${coordinationPlan.type} completed" --telemetry true`);
142
113
  }
143
-
144
- // Final coordination notification
145
- execSync(
146
- `npx ruv-swarm hook notification --message "GitHub Coordination: ${coordinationPlan.type} completed" --telemetry true`,
147
- );
148
- }
149
-
150
- /**
114
+ /**
151
115
  * Execute coordination without swarm
152
- */
153
- async executeCoordination(coordinationPlan) {
154
- printInfo('⚡ Executing coordination...');
155
-
156
- for (const step of coordinationPlan.steps) {
157
- printInfo(`Executing step: ${step}`);
158
- await this.executeCoordinationStep(coordinationPlan, step);
116
+ */ async executeCoordination(coordinationPlan) {
117
+ printInfo('⚡ Executing coordination...');
118
+ for (const step of coordinationPlan.steps){
119
+ printInfo(`Executing step: ${step}`);
120
+ await this.executeCoordinationStep(coordinationPlan, step);
121
+ }
159
122
  }
160
- }
161
-
162
- /**
123
+ /**
163
124
  * Execute individual coordination step
164
- */
165
- async executeCoordinationStep(coordinationPlan, step) {
166
- const { owner, repo } = this.currentRepo;
167
-
168
- switch (step) {
169
- case 'analyze_repository_structure':
170
- await this.analyzeRepositoryStructure(owner, repo);
171
- break;
172
- case 'create_workflow_files':
173
- await this.createWorkflowFiles(owner, repo, coordinationPlan.pipeline);
174
- break;
175
- case 'setup_environment_secrets':
176
- await this.setupEnvironmentSecrets(owner, repo);
177
- break;
178
- case 'configure_branch_protection':
179
- await this.configureBranchProtection(owner, repo);
180
- break;
181
- case 'test_pipeline_execution':
182
- await this.testPipelineExecution(owner, repo);
183
- break;
184
- case 'setup_notifications':
185
- await this.setupNotifications(owner, repo);
186
- break;
187
- default:
188
- printWarning(`Unknown coordination step: ${step}`);
125
+ */ async executeCoordinationStep(coordinationPlan, step) {
126
+ const { owner, repo } = this.currentRepo;
127
+ switch(step){
128
+ case 'analyze_repository_structure':
129
+ await this.analyzeRepositoryStructure(owner, repo);
130
+ break;
131
+ case 'create_workflow_files':
132
+ await this.createWorkflowFiles(owner, repo, coordinationPlan.pipeline);
133
+ break;
134
+ case 'setup_environment_secrets':
135
+ await this.setupEnvironmentSecrets(owner, repo);
136
+ break;
137
+ case 'configure_branch_protection':
138
+ await this.configureBranchProtection(owner, repo);
139
+ break;
140
+ case 'test_pipeline_execution':
141
+ await this.testPipelineExecution(owner, repo);
142
+ break;
143
+ case 'setup_notifications':
144
+ await this.setupNotifications(owner, repo);
145
+ break;
146
+ default:
147
+ printWarning(`Unknown coordination step: ${step}`);
148
+ }
189
149
  }
190
- }
191
-
192
- /**
150
+ /**
193
151
  * Analyze repository structure
194
- */
195
- async analyzeRepositoryStructure(owner, repo) {
196
- printInfo('📊 Analyzing repository structure...');
197
-
198
- const response = await this.api.getRepository(owner, repo);
199
- if (!response.success) {
200
- throw new Error(`Failed to get repository info: ${response.error}`);
201
- }
202
-
203
- const repoData = response.data;
204
- const analysis = {
205
- language: repoData.language,
206
- size: repoData.size,
207
- defaultBranch: repoData.default_branch,
208
- hasWorkflows: false,
209
- hasTests: false,
210
- hasPackageJson: false,
211
- };
212
-
213
- // Check for existing workflows
214
- const workflowsResponse = await this.api.listWorkflows(owner, repo);
215
- if (workflowsResponse.success) {
216
- analysis.hasWorkflows = workflowsResponse.data.total_count > 0;
152
+ */ async analyzeRepositoryStructure(owner, repo) {
153
+ printInfo('📊 Analyzing repository structure...');
154
+ const response = await this.api.getRepository(owner, repo);
155
+ if (!response.success) {
156
+ throw new Error(`Failed to get repository info: ${response.error}`);
157
+ }
158
+ const repoData = response.data;
159
+ const analysis = {
160
+ language: repoData.language,
161
+ size: repoData.size,
162
+ defaultBranch: repoData.default_branch,
163
+ hasWorkflows: false,
164
+ hasTests: false,
165
+ hasPackageJson: false
166
+ };
167
+ // Check for existing workflows
168
+ const workflowsResponse = await this.api.listWorkflows(owner, repo);
169
+ if (workflowsResponse.success) {
170
+ analysis.hasWorkflows = workflowsResponse.data.total_count > 0;
171
+ }
172
+ // Check for package.json (Node.js projects)
173
+ try {
174
+ const packageResponse = await this.api.request(`/repos/${owner}/${repo}/contents/package.json`);
175
+ analysis.hasPackageJson = packageResponse.success;
176
+ } catch (error) {
177
+ // package.json doesn't exist
178
+ }
179
+ printSuccess(`✅ Repository analysis complete: ${analysis.language} project`);
180
+ return analysis;
217
181
  }
218
-
219
- // Check for package.json (Node.js projects)
220
- try {
221
- const packageResponse = await this.api.request(
222
- `/repos/${owner}/${repo}/contents/package.json`,
223
- );
224
- analysis.hasPackageJson = packageResponse.success;
225
- } catch (error) {
226
- // package.json doesn't exist
227
- }
228
-
229
- printSuccess(`✅ Repository analysis complete: ${analysis.language} project`);
230
- return analysis;
231
- }
232
-
233
- /**
182
+ /**
234
183
  * Create workflow files
235
- */
236
- async createWorkflowFiles(owner, repo, pipeline) {
237
- printInfo('📝 Creating workflow files...');
238
-
239
- const workflowContent = this.generateWorkflowContent(pipeline);
240
- const workflowPath = `.github/workflows/${pipeline}-ci.yml`;
241
-
242
- // Create workflow file content
243
- const createFileData = {
244
- message: `Add ${pipeline} CI workflow`,
245
- content: Buffer.from(workflowContent).toString('base64'),
246
- path: workflowPath,
247
- };
248
-
249
- // Check if file exists
250
- const existingFile = await this.api.request(`/repos/${owner}/${repo}/contents/${workflowPath}`);
251
- if (existingFile.success) {
252
- // Update existing file
253
- createFileData.sha = existingFile.data.sha;
254
- createFileData.message = `Update ${pipeline} CI workflow`;
255
- }
256
-
257
- const response = await this.api.request(`/repos/${owner}/${repo}/contents/${workflowPath}`, {
258
- method: 'PUT',
259
- body: createFileData,
260
- });
261
-
262
- if (response.success) {
263
- printSuccess(`✅ Workflow file created: ${workflowPath}`);
264
- } else {
265
- throw new Error(`Failed to create workflow file: ${response.error}`);
184
+ */ async createWorkflowFiles(owner, repo, pipeline) {
185
+ printInfo('📝 Creating workflow files...');
186
+ const workflowContent = this.generateWorkflowContent(pipeline);
187
+ const workflowPath = `.github/workflows/${pipeline}-ci.yml`;
188
+ // Create workflow file content
189
+ const createFileData = {
190
+ message: `Add ${pipeline} CI workflow`,
191
+ content: Buffer.from(workflowContent).toString('base64'),
192
+ path: workflowPath
193
+ };
194
+ // Check if file exists
195
+ const existingFile = await this.api.request(`/repos/${owner}/${repo}/contents/${workflowPath}`);
196
+ if (existingFile.success) {
197
+ // Update existing file
198
+ createFileData.sha = existingFile.data.sha;
199
+ createFileData.message = `Update ${pipeline} CI workflow`;
200
+ }
201
+ const response = await this.api.request(`/repos/${owner}/${repo}/contents/${workflowPath}`, {
202
+ method: 'PUT',
203
+ body: createFileData
204
+ });
205
+ if (response.success) {
206
+ printSuccess(`✅ Workflow file created: ${workflowPath}`);
207
+ } else {
208
+ throw new Error(`Failed to create workflow file: ${response.error}`);
209
+ }
266
210
  }
267
- }
268
-
269
- /**
211
+ /**
270
212
  * Generate workflow content based on pipeline type
271
- */
272
- generateWorkflowContent(pipeline) {
273
- const templates = {
274
- nodejs: `name: Node.js CI
213
+ */ generateWorkflowContent(pipeline) {
214
+ const templates = {
215
+ nodejs: `name: Node.js CI
275
216
 
276
217
  on:
277
218
  push:
@@ -319,8 +260,7 @@ jobs:
319
260
  - name: Check for vulnerabilities
320
261
  run: npm audit --audit-level high
321
262
  `,
322
-
323
- python: `name: Python CI
263
+ python: `name: Python CI
324
264
 
325
265
  on:
326
266
  push:
@@ -358,8 +298,7 @@ jobs:
358
298
  with:
359
299
  file: ./coverage.xml
360
300
  `,
361
-
362
- docker: `name: Docker CI
301
+ docker: `name: Docker CI
363
302
 
364
303
  on:
365
304
  push:
@@ -386,220 +325,202 @@ jobs:
386
325
  image-ref: 'app'
387
326
  format: 'sarif'
388
327
  output: 'trivy-results.sarif'
389
- `,
390
- };
391
-
392
- return templates[pipeline] || templates.nodejs;
393
- }
394
-
395
- /**
328
+ `
329
+ };
330
+ return templates[pipeline] || templates.nodejs;
331
+ }
332
+ /**
396
333
  * Setup environment secrets
397
- */
398
- async setupEnvironmentSecrets(owner, repo) {
399
- printInfo('🔐 Setting up environment secrets...');
400
-
401
- const secrets = [
402
- { name: 'NODE_ENV', description: 'Node.js environment' },
403
- { name: 'DATABASE_URL', description: 'Database connection string' },
404
- { name: 'API_KEY', description: 'API authentication key' },
405
- ];
406
-
407
- printInfo('Recommended secrets to configure:');
408
- secrets.forEach((secret) => {
409
- console.log(` - ${secret.name}: ${secret.description}`);
410
- });
411
-
412
- printWarning('Note: Secrets must be configured manually in GitHub repository settings');
413
- printSuccess(' Environment secrets guidance provided');
414
- }
415
-
416
- /**
334
+ */ async setupEnvironmentSecrets(owner, repo) {
335
+ printInfo('🔐 Setting up environment secrets...');
336
+ const secrets = [
337
+ {
338
+ name: 'NODE_ENV',
339
+ description: 'Node.js environment'
340
+ },
341
+ {
342
+ name: 'DATABASE_URL',
343
+ description: 'Database connection string'
344
+ },
345
+ {
346
+ name: 'API_KEY',
347
+ description: 'API authentication key'
348
+ }
349
+ ];
350
+ printInfo('Recommended secrets to configure:');
351
+ secrets.forEach((secret)=>{
352
+ console.log(` - ${secret.name}: ${secret.description}`);
353
+ });
354
+ printWarning('Note: Secrets must be configured manually in GitHub repository settings');
355
+ printSuccess('✅ Environment secrets guidance provided');
356
+ }
357
+ /**
417
358
  * Configure branch protection
418
- */
419
- async configureBranchProtection(owner, repo) {
420
- printInfo('🛡️ Configuring branch protection...');
421
-
422
- const protectionConfig = {
423
- required_status_checks: {
424
- strict: true,
425
- contexts: ['test'],
426
- },
427
- enforce_admins: true,
428
- required_pull_request_reviews: {
429
- required_approving_review_count: 1,
430
- dismiss_stale_reviews: true,
431
- },
432
- restrictions: null,
433
- };
434
-
435
- const response = await this.api.updateBranchProtection(owner, repo, 'main', protectionConfig);
436
-
437
- if (response.success) {
438
- printSuccess('✅ Branch protection configured for main branch');
439
- } else {
440
- printWarning(`⚠️ Failed to configure branch protection: ${response.error}`);
359
+ */ async configureBranchProtection(owner, repo) {
360
+ printInfo('🛡️ Configuring branch protection...');
361
+ const protectionConfig = {
362
+ required_status_checks: {
363
+ strict: true,
364
+ contexts: [
365
+ 'test'
366
+ ]
367
+ },
368
+ enforce_admins: true,
369
+ required_pull_request_reviews: {
370
+ required_approving_review_count: 1,
371
+ dismiss_stale_reviews: true
372
+ },
373
+ restrictions: null
374
+ };
375
+ const response = await this.api.updateBranchProtection(owner, repo, 'main', protectionConfig);
376
+ if (response.success) {
377
+ printSuccess('✅ Branch protection configured for main branch');
378
+ } else {
379
+ printWarning(`⚠️ Failed to configure branch protection: ${response.error}`);
380
+ }
441
381
  }
442
- }
443
-
444
- /**
382
+ /**
445
383
  * Test pipeline execution
446
- */
447
- async testPipelineExecution(owner, repo) {
448
- printInfo('🧪 Testing pipeline execution...');
449
-
450
- const workflows = await this.api.listWorkflows(owner, repo);
451
- if (!workflows.success) {
452
- printWarning('No workflows found to test');
453
- return;
454
- }
455
-
456
- const recentRuns = await this.api.listWorkflowRuns(owner, repo, { per_page: 5 });
457
- if (recentRuns.success) {
458
- printInfo(`Found ${recentRuns.data.total_count} recent workflow runs`);
459
-
460
- const latestRun = recentRuns.data.workflow_runs[0];
461
- if (latestRun) {
462
- printInfo(`Latest run: ${latestRun.conclusion} (${latestRun.status})`);
463
- }
384
+ */ async testPipelineExecution(owner, repo) {
385
+ printInfo('🧪 Testing pipeline execution...');
386
+ const workflows = await this.api.listWorkflows(owner, repo);
387
+ if (!workflows.success) {
388
+ printWarning('No workflows found to test');
389
+ return;
390
+ }
391
+ const recentRuns = await this.api.listWorkflowRuns(owner, repo, {
392
+ per_page: 5
393
+ });
394
+ if (recentRuns.success) {
395
+ printInfo(`Found ${recentRuns.data.total_count} recent workflow runs`);
396
+ const latestRun = recentRuns.data.workflow_runs[0];
397
+ if (latestRun) {
398
+ printInfo(`Latest run: ${latestRun.conclusion} (${latestRun.status})`);
399
+ }
400
+ }
401
+ printSuccess('✅ Pipeline execution status checked');
464
402
  }
465
-
466
- printSuccess('✅ Pipeline execution status checked');
467
- }
468
-
469
- /**
403
+ /**
470
404
  * Setup notifications
471
- */
472
- async setupNotifications(owner, repo) {
473
- printInfo('📢 Setting up notifications...');
474
-
475
- const webhookConfig = {
476
- name: 'web',
477
- active: true,
478
- events: ['push', 'pull_request', 'issues', 'workflow_run'],
479
- config: {
480
- url: 'https://your-webhook-url.com/github',
481
- content_type: 'json',
482
- insecure_ssl: '0',
483
- },
484
- };
485
-
486
- printInfo('Webhook configuration template:');
487
- console.log(JSON.stringify(webhookConfig, null, 2));
488
-
489
- printWarning('Note: Webhook URL must be configured with your actual endpoint');
490
- printSuccess(' Notification setup guidance provided');
491
- }
492
-
493
- /**
494
- * Coordinate release process
495
- */
496
- async coordinateRelease(options = {}) {
497
- printInfo('🚀 Coordinating release process...');
498
-
499
- if (!this.currentRepo) {
500
- throw new Error('No GitHub repository context available');
405
+ */ async setupNotifications(owner, repo) {
406
+ printInfo('📢 Setting up notifications...');
407
+ const webhookConfig = {
408
+ name: 'web',
409
+ active: true,
410
+ events: [
411
+ 'push',
412
+ 'pull_request',
413
+ 'issues',
414
+ 'workflow_run'
415
+ ],
416
+ config: {
417
+ url: 'https://your-webhook-url.com/github',
418
+ content_type: 'json',
419
+ insecure_ssl: '0'
420
+ }
421
+ };
422
+ printInfo('Webhook configuration template:');
423
+ console.log(JSON.stringify(webhookConfig, null, 2));
424
+ printWarning('Note: Webhook URL must be configured with your actual endpoint');
425
+ printSuccess('✅ Notification setup guidance provided');
501
426
  }
502
-
503
- const { owner, repo } = this.currentRepo;
504
- const version = options.version || 'auto';
505
- const prerelease = options.prerelease || false;
506
-
507
- const coordinationPlan = {
508
- id: `release-${Date.now()}`,
509
- type: 'release_coordination',
510
- repository: `${owner}/${repo}`,
511
- version,
512
- prerelease,
513
- steps: [
514
- 'prepare_release_notes',
515
- 'create_release_branch',
516
- 'run_release_tests',
517
- 'create_release_tag',
518
- 'publish_release',
519
- 'notify_stakeholders',
520
- ],
521
- status: 'planning',
522
- };
523
-
524
- this.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
525
-
526
- if (this.swarmEnabled) {
527
- await this.executeWithSwarm(coordinationPlan);
528
- } else {
529
- await this.executeCoordination(coordinationPlan);
427
+ /**
428
+ * Coordinate release process
429
+ */ async coordinateRelease(options = {}) {
430
+ printInfo('🚀 Coordinating release process...');
431
+ if (!this.currentRepo) {
432
+ throw new Error('No GitHub repository context available');
433
+ }
434
+ const { owner, repo } = this.currentRepo;
435
+ const version = options.version || 'auto';
436
+ const prerelease = options.prerelease || false;
437
+ const coordinationPlan = {
438
+ id: `release-${Date.now()}`,
439
+ type: 'release_coordination',
440
+ repository: `${owner}/${repo}`,
441
+ version,
442
+ prerelease,
443
+ steps: [
444
+ 'prepare_release_notes',
445
+ 'create_release_branch',
446
+ 'run_release_tests',
447
+ 'create_release_tag',
448
+ 'publish_release',
449
+ 'notify_stakeholders'
450
+ ],
451
+ status: 'planning'
452
+ };
453
+ this.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
454
+ if (this.swarmEnabled) {
455
+ await this.executeWithSwarm(coordinationPlan);
456
+ } else {
457
+ await this.executeCoordination(coordinationPlan);
458
+ }
459
+ return coordinationPlan;
530
460
  }
531
-
532
- return coordinationPlan;
533
- }
534
-
535
- /**
461
+ /**
536
462
  * Get coordination status
537
- */
538
- getCoordinationStatus(coordinationId) {
539
- return this.activeCoordinations.get(coordinationId) || null;
540
- }
541
-
542
- /**
463
+ */ getCoordinationStatus(coordinationId) {
464
+ return this.activeCoordinations.get(coordinationId) || null;
465
+ }
466
+ /**
543
467
  * List active coordinations
544
- */
545
- listActiveCoordinations() {
546
- return Array.from(this.activeCoordinations.values());
547
- }
548
-
549
- /**
468
+ */ listActiveCoordinations() {
469
+ return Array.from(this.activeCoordinations.values());
470
+ }
471
+ /**
550
472
  * Cancel coordination
551
- */
552
- cancelCoordination(coordinationId) {
553
- const coordination = this.activeCoordinations.get(coordinationId);
554
- if (coordination) {
555
- coordination.status = 'cancelled';
556
- this.activeCoordinations.delete(coordinationId);
557
- printSuccess(`✅ Coordination ${coordinationId} cancelled`);
558
- return true;
473
+ */ cancelCoordination(coordinationId) {
474
+ const coordination = this.activeCoordinations.get(coordinationId);
475
+ if (coordination) {
476
+ coordination.status = 'cancelled';
477
+ this.activeCoordinations.delete(coordinationId);
478
+ printSuccess(`✅ Coordination ${coordinationId} cancelled`);
479
+ return true;
480
+ }
481
+ return false;
559
482
  }
560
- return false;
561
- }
562
- }
563
-
483
+ constructor(){
484
+ this.api = githubAPI;
485
+ this.workflows = new Map();
486
+ this.activeCoordinations = new Map();
487
+ }
488
+ };
564
489
  // Export coordination function
565
490
  export async function coordinateGitHubWorkflow(args, flags = {}) {
566
- const coordinator = new GitHubCoordinator();
567
-
568
- try {
569
- await coordinator.initialize(flags);
570
-
571
- const objective = args.join(' ').trim();
572
-
573
- if (objective.includes('CI/CD') || objective.includes('pipeline')) {
574
- return await coordinator.coordinateCIPipeline(flags);
575
- } else if (objective.includes('release')) {
576
- return await coordinator.coordinateRelease(flags);
577
- } else {
578
- // General coordination
579
- printInfo(`🎯 Coordinating: ${objective}`);
580
-
581
- const coordinationPlan = {
582
- id: `general-${Date.now()}`,
583
- type: 'general_coordination',
584
- objective,
585
- steps: ['analyze_requirements', 'create_action_plan', 'execute_plan'],
586
- status: 'planning',
587
- };
588
-
589
- coordinator.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
590
-
591
- if (coordinator.swarmEnabled) {
592
- await coordinator.executeWithSwarm(coordinationPlan);
593
- } else {
594
- await coordinator.executeCoordination(coordinationPlan);
595
- }
596
-
597
- return coordinationPlan;
491
+ const coordinator = new GitHubCoordinator();
492
+ try {
493
+ await coordinator.initialize(flags);
494
+ const objective = args.join(' ').trim();
495
+ if (objective.includes('CI/CD') || objective.includes('pipeline')) {
496
+ return await coordinator.coordinateCIPipeline(flags);
497
+ } else if (objective.includes('release')) {
498
+ return await coordinator.coordinateRelease(flags);
499
+ } else {
500
+ // General coordination
501
+ printInfo(`🎯 Coordinating: ${objective}`);
502
+ const coordinationPlan = {
503
+ id: `general-${Date.now()}`,
504
+ type: 'general_coordination',
505
+ objective,
506
+ steps: [
507
+ 'analyze_requirements',
508
+ 'create_action_plan',
509
+ 'execute_plan'
510
+ ],
511
+ status: 'planning'
512
+ };
513
+ coordinator.activeCoordinations.set(coordinationPlan.id, coordinationPlan);
514
+ if (coordinator.swarmEnabled) {
515
+ await coordinator.executeWithSwarm(coordinationPlan);
516
+ } else {
517
+ await coordinator.executeCoordination(coordinationPlan);
518
+ }
519
+ return coordinationPlan;
520
+ }
521
+ } catch (error) {
522
+ printError(`❌ GitHub coordination failed: ${error.message}`);
523
+ throw error;
598
524
  }
599
- } catch (error) {
600
- printError(`❌ GitHub coordination failed: ${error.message}`);
601
- throw error;
602
- }
603
525
  }
604
-
605
526
  export default GitHubCoordinator;