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.
- package/.claude-flow-novice/preferences/generation.json +147 -0
- package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
- package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
- package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
- package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
- package/.claude-flow-novice/preferences/project-local.json +91 -0
- package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
- package/.claude-flow-novice/preferences/team-shared.json +195 -0
- package/.claude-flow-novice/preferences/user-global.json +247 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
- package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
- package/CLAUDE.md +81 -0
- package/README-NPM.md +0 -0
- package/package.json +11 -7
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/migration/README.md +434 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
- package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
- package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
- package/src/cli/simple-commands/__tests__/task.test.js +8 -0
- package/src/cli/simple-commands/agent.js +216 -0
- package/src/cli/simple-commands/analysis.js +570 -0
- package/src/cli/simple-commands/automation-executor.js +1603 -0
- package/src/cli/simple-commands/automation.js +627 -0
- package/src/cli/simple-commands/batch-manager.js +338 -0
- package/src/cli/simple-commands/claude-telemetry.js +311 -0
- package/src/cli/simple-commands/claude-track.js +102 -0
- package/src/cli/simple-commands/concurrent-display.js +348 -0
- package/src/cli/simple-commands/config.js +319 -0
- package/src/cli/simple-commands/coordination.js +307 -0
- package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
- package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
- package/src/cli/simple-commands/fix-hook-variables.js +363 -0
- package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
- package/src/cli/simple-commands/github/github-api.js +624 -0
- package/src/cli/simple-commands/github/init.js +543 -0
- package/src/cli/simple-commands/github.js +377 -0
- package/src/cli/simple-commands/goal.js +145 -0
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
- package/src/cli/simple-commands/hive-mind/communication.js +740 -0
- package/src/cli/simple-commands/hive-mind/core.js +1031 -0
- package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
- package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
- package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
- package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
- package/src/cli/simple-commands/hive-mind/queen.js +809 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
- package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
- package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
- package/src/cli/simple-commands/hive-mind.js +3112 -0
- package/src/cli/simple-commands/hive.js +140 -0
- package/src/cli/simple-commands/hook-safety.js +671 -0
- package/src/cli/simple-commands/hooks.js +1268 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
- package/src/cli/simple-commands/init/README.md +106 -0
- package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
- package/src/cli/simple-commands/init/agent-copier.js +347 -0
- package/src/cli/simple-commands/init/batch-init.js +663 -0
- package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
- package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
- package/src/cli/simple-commands/init/help.js +110 -0
- package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
- package/src/cli/simple-commands/init/index.js +1953 -0
- package/src/cli/simple-commands/init/performance-monitor.js +344 -0
- package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
- package/src/cli/simple-commands/init/rollback/index.js +399 -0
- package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
- package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
- package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
- package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
- package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
- package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
- package/src/cli/simple-commands/init/sparc-structure.js +68 -0
- package/src/cli/simple-commands/init/template-copier.js +640 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
- package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
- package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
- package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
- package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
- package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
- package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
- package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
- package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
- package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
- package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
- package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
- package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
- package/src/cli/simple-commands/init/templates/settings.json +109 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
- package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
- package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
- package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
- package/src/cli/simple-commands/init/validation/index.js +388 -0
- package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
- package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
- package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
- package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
- package/src/cli/simple-commands/init.js +4 -0
- package/src/cli/simple-commands/mcp-health.js +163 -0
- package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
- package/src/cli/simple-commands/mcp.js +420 -0
- package/src/cli/simple-commands/memory-consolidation.js +631 -0
- package/src/cli/simple-commands/memory.js +345 -0
- package/src/cli/simple-commands/migrate-hooks.js +63 -0
- package/src/cli/simple-commands/monitor.js +417 -0
- package/src/cli/simple-commands/neural.js +148 -0
- package/src/cli/simple-commands/pair-autofix-only.js +755 -0
- package/src/cli/simple-commands/pair-basic.js +751 -0
- package/src/cli/simple-commands/pair-old.js +623 -0
- package/src/cli/simple-commands/pair-working.js +849 -0
- package/src/cli/simple-commands/pair.js +849 -0
- package/src/cli/simple-commands/performance-hooks.js +149 -0
- package/src/cli/simple-commands/performance-metrics.js +601 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
- package/src/cli/simple-commands/process-ui.js +274 -0
- package/src/cli/simple-commands/realtime-update-system.js +659 -0
- package/src/cli/simple-commands/sparc/architecture.js +1750 -0
- package/src/cli/simple-commands/sparc/commands.js +575 -0
- package/src/cli/simple-commands/sparc/completion.js +1831 -0
- package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
- package/src/cli/simple-commands/sparc/index.js +321 -0
- package/src/cli/simple-commands/sparc/phase-base.js +430 -0
- package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
- package/src/cli/simple-commands/sparc/refinement.js +1856 -0
- package/src/cli/simple-commands/sparc/specification.js +736 -0
- package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
- package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
- package/src/cli/simple-commands/sparc-modes/code.js +148 -0
- package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
- package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
- package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
- package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
- package/src/cli/simple-commands/sparc-modes/index.js +201 -0
- package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
- package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
- package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
- package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
- package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
- package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
- package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
- package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
- package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
- package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
- package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
- package/src/cli/simple-commands/sparc.js +530 -0
- package/src/cli/simple-commands/start-ui.js +147 -0
- package/src/cli/simple-commands/start-wrapper.js +285 -0
- package/src/cli/simple-commands/start.js +2 -0
- package/src/cli/simple-commands/status.js +303 -0
- package/src/cli/simple-commands/stream-chain-clean.js +221 -0
- package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
- package/src/cli/simple-commands/stream-chain-real.js +408 -0
- package/src/cli/simple-commands/stream-chain-working.js +323 -0
- package/src/cli/simple-commands/stream-chain.js +491 -0
- package/src/cli/simple-commands/stream-processor.js +340 -0
- package/src/cli/simple-commands/swarm-executor.js +253 -0
- package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
- package/src/cli/simple-commands/swarm-ui.js +741 -0
- package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
- package/src/cli/simple-commands/swarm.js +2277 -0
- package/src/cli/simple-commands/task.js +228 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/cli/simple-commands/timestamp-fix.js +104 -0
- package/src/cli/simple-commands/token-tracker.js +372 -0
- package/src/cli/simple-commands/tool-execution-framework.js +555 -0
- package/src/cli/simple-commands/train-and-stream.js +354 -0
- package/src/cli/simple-commands/training-pipeline.js +874 -0
- package/src/cli/simple-commands/training.js +288 -0
- package/src/cli/simple-commands/verification-hooks.js +336 -0
- package/src/cli/simple-commands/verification-integration.js +464 -0
- package/src/cli/simple-commands/verification-training-integration.js +646 -0
- package/src/cli/simple-commands/verification.js +551 -0
- package/src/cli/simple-commands/web-server.js +929 -0
- package/src/cli/simple-commands/webui-validator.js +136 -0
- package/src/language/README.md +503 -0
- package/src/language/claude-md-generator.js +618 -0
- package/src/language/cli.js +422 -0
- package/src/language/example.js +347 -0
- package/src/language/integration-system.js +619 -0
- package/src/language/language-detector.js +581 -0
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* GitHub Coordinator Command
|
|
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
|
+
/**
|
|
19
|
+
* 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');
|
|
28
|
+
}
|
|
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
|
+
/**
|
|
50
|
+
* 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;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 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');
|
|
81
|
+
}
|
|
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
|
+
/**
|
|
117
|
+
* 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
|
+
);
|
|
142
|
+
}
|
|
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
|
+
/**
|
|
151
|
+
* 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);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 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}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 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;
|
|
217
|
+
}
|
|
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
|
+
/**
|
|
234
|
+
* 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}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Generate workflow content based on pipeline type
|
|
271
|
+
*/
|
|
272
|
+
generateWorkflowContent(pipeline) {
|
|
273
|
+
const templates = {
|
|
274
|
+
nodejs: `name: Node.js CI
|
|
275
|
+
|
|
276
|
+
on:
|
|
277
|
+
push:
|
|
278
|
+
branches: [ main, develop ]
|
|
279
|
+
pull_request:
|
|
280
|
+
branches: [ main, develop ]
|
|
281
|
+
|
|
282
|
+
jobs:
|
|
283
|
+
test:
|
|
284
|
+
runs-on: ubuntu-latest
|
|
285
|
+
|
|
286
|
+
strategy:
|
|
287
|
+
matrix:
|
|
288
|
+
node-version: [16.x, 18.x, 20.x]
|
|
289
|
+
|
|
290
|
+
steps:
|
|
291
|
+
- uses: actions/checkout@v3
|
|
292
|
+
|
|
293
|
+
- name: Use Node.js \${{ matrix.node-version }}
|
|
294
|
+
uses: actions/setup-node@v3
|
|
295
|
+
with:
|
|
296
|
+
node-version: \${{ matrix.node-version }}
|
|
297
|
+
cache: 'npm'
|
|
298
|
+
|
|
299
|
+
- name: Install dependencies
|
|
300
|
+
run: npm ci
|
|
301
|
+
|
|
302
|
+
- name: Run tests
|
|
303
|
+
run: npm test
|
|
304
|
+
|
|
305
|
+
- name: Run linter
|
|
306
|
+
run: npm run lint
|
|
307
|
+
|
|
308
|
+
- name: Build project
|
|
309
|
+
run: npm run build
|
|
310
|
+
|
|
311
|
+
security:
|
|
312
|
+
runs-on: ubuntu-latest
|
|
313
|
+
steps:
|
|
314
|
+
- uses: actions/checkout@v3
|
|
315
|
+
|
|
316
|
+
- name: Run security audit
|
|
317
|
+
run: npm audit --audit-level moderate
|
|
318
|
+
|
|
319
|
+
- name: Check for vulnerabilities
|
|
320
|
+
run: npm audit --audit-level high
|
|
321
|
+
`,
|
|
322
|
+
|
|
323
|
+
python: `name: Python CI
|
|
324
|
+
|
|
325
|
+
on:
|
|
326
|
+
push:
|
|
327
|
+
branches: [ main, develop ]
|
|
328
|
+
pull_request:
|
|
329
|
+
branches: [ main, develop ]
|
|
330
|
+
|
|
331
|
+
jobs:
|
|
332
|
+
test:
|
|
333
|
+
runs-on: ubuntu-latest
|
|
334
|
+
|
|
335
|
+
strategy:
|
|
336
|
+
matrix:
|
|
337
|
+
python-version: [3.8, 3.9, 3.10, 3.11]
|
|
338
|
+
|
|
339
|
+
steps:
|
|
340
|
+
- uses: actions/checkout@v3
|
|
341
|
+
|
|
342
|
+
- name: Set up Python \${{ matrix.python-version }}
|
|
343
|
+
uses: actions/setup-python@v4
|
|
344
|
+
with:
|
|
345
|
+
python-version: \${{ matrix.python-version }}
|
|
346
|
+
|
|
347
|
+
- name: Install dependencies
|
|
348
|
+
run: |
|
|
349
|
+
python -m pip install --upgrade pip
|
|
350
|
+
pip install pytest pytest-cov
|
|
351
|
+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
352
|
+
|
|
353
|
+
- name: Run tests
|
|
354
|
+
run: pytest --cov=./ --cov-report=xml
|
|
355
|
+
|
|
356
|
+
- name: Upload coverage
|
|
357
|
+
uses: codecov/codecov-action@v3
|
|
358
|
+
with:
|
|
359
|
+
file: ./coverage.xml
|
|
360
|
+
`,
|
|
361
|
+
|
|
362
|
+
docker: `name: Docker CI
|
|
363
|
+
|
|
364
|
+
on:
|
|
365
|
+
push:
|
|
366
|
+
branches: [ main, develop ]
|
|
367
|
+
pull_request:
|
|
368
|
+
branches: [ main, develop ]
|
|
369
|
+
|
|
370
|
+
jobs:
|
|
371
|
+
build:
|
|
372
|
+
runs-on: ubuntu-latest
|
|
373
|
+
|
|
374
|
+
steps:
|
|
375
|
+
- uses: actions/checkout@v3
|
|
376
|
+
|
|
377
|
+
- name: Build Docker image
|
|
378
|
+
run: docker build -t app .
|
|
379
|
+
|
|
380
|
+
- name: Run container tests
|
|
381
|
+
run: docker run --rm app npm test
|
|
382
|
+
|
|
383
|
+
- name: Security scan
|
|
384
|
+
uses: aquasecurity/trivy-action@master
|
|
385
|
+
with:
|
|
386
|
+
image-ref: 'app'
|
|
387
|
+
format: 'sarif'
|
|
388
|
+
output: 'trivy-results.sarif'
|
|
389
|
+
`,
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
return templates[pipeline] || templates.nodejs;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* 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
|
+
/**
|
|
417
|
+
* 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}`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* 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
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
printSuccess('✅ Pipeline execution status checked');
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* 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');
|
|
501
|
+
}
|
|
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);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
return coordinationPlan;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Get coordination status
|
|
537
|
+
*/
|
|
538
|
+
getCoordinationStatus(coordinationId) {
|
|
539
|
+
return this.activeCoordinations.get(coordinationId) || null;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* List active coordinations
|
|
544
|
+
*/
|
|
545
|
+
listActiveCoordinations() {
|
|
546
|
+
return Array.from(this.activeCoordinations.values());
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* 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;
|
|
559
|
+
}
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
// Export coordination function
|
|
565
|
+
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;
|
|
598
|
+
}
|
|
599
|
+
} catch (error) {
|
|
600
|
+
printError(`❌ GitHub coordination failed: ${error.message}`);
|
|
601
|
+
throw error;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
export default GitHubCoordinator;
|