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,377 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* GitHub command wrapper for simple CLI
|
|
4
|
+
* Provides GitHub workflow automation capabilities
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { printSuccess, printError, printWarning } from '../utils.js';
|
|
8
|
+
import { platform } from 'os';
|
|
9
|
+
import { access, constants } from 'fs/promises';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Cross-platform check for executable availability
|
|
14
|
+
* @param {string} command - The command to check
|
|
15
|
+
* @returns {Promise<boolean>} - True if command is available
|
|
16
|
+
*/
|
|
17
|
+
async function checkCommandAvailable(command) {
|
|
18
|
+
const { execSync } = await import('child_process');
|
|
19
|
+
|
|
20
|
+
if (platform() === 'win32') {
|
|
21
|
+
// Windows: Use 'where' command
|
|
22
|
+
try {
|
|
23
|
+
execSync(`where ${command}`, { stdio: 'ignore' });
|
|
24
|
+
return true;
|
|
25
|
+
} catch (e) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
// Unix-like systems: Check common paths and use 'command -v'
|
|
30
|
+
try {
|
|
31
|
+
execSync(`command -v ${command}`, { stdio: 'ignore', shell: true });
|
|
32
|
+
return true;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
// Fallback: Check common installation paths
|
|
35
|
+
const commonPaths = [
|
|
36
|
+
'/usr/local/bin',
|
|
37
|
+
'/usr/bin',
|
|
38
|
+
'/opt/homebrew/bin',
|
|
39
|
+
join(process.env.HOME || '', '.local', 'bin'),
|
|
40
|
+
join(process.env.HOME || '', 'bin'),
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
for (const dir of commonPaths) {
|
|
44
|
+
try {
|
|
45
|
+
await access(join(dir, command), constants.X_OK);
|
|
46
|
+
return true;
|
|
47
|
+
} catch (e) {
|
|
48
|
+
// Continue checking other paths
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Check if Claude CLI is available
|
|
58
|
+
* @returns {Promise<boolean>} - True if Claude is available
|
|
59
|
+
*/
|
|
60
|
+
async function checkClaudeAvailable() {
|
|
61
|
+
return checkCommandAvailable('claude');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const GITHUB_MODES = {
|
|
65
|
+
init: {
|
|
66
|
+
description: 'Initialize GitHub-specific hooks and checkpoint system',
|
|
67
|
+
examples: ['github init', 'github init --force', 'github init --checkpoints-only'],
|
|
68
|
+
},
|
|
69
|
+
'gh-coordinator': {
|
|
70
|
+
description: 'GitHub workflow orchestration and coordination',
|
|
71
|
+
examples: [
|
|
72
|
+
'github gh-coordinator "setup CI/CD pipeline"',
|
|
73
|
+
'github gh-coordinator "coordinate release process" --auto-approve',
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
'pr-manager': {
|
|
77
|
+
description: 'Pull request management with multi-reviewer coordination',
|
|
78
|
+
examples: [
|
|
79
|
+
'github pr-manager "create feature PR with automated testing"',
|
|
80
|
+
'github pr-manager "coordinate code review for security update"',
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
'issue-tracker': {
|
|
84
|
+
description: 'Issue management and project coordination',
|
|
85
|
+
examples: [
|
|
86
|
+
'github issue-tracker "analyze project roadmap issues"',
|
|
87
|
+
'github issue-tracker "coordinate bug triage process"',
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
'release-manager': {
|
|
91
|
+
description: 'Release coordination and deployment pipelines',
|
|
92
|
+
examples: [
|
|
93
|
+
'github release-manager "prepare v2.0.0 release"',
|
|
94
|
+
'github release-manager "coordinate hotfix deployment"',
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
'repo-architect': {
|
|
98
|
+
description: 'Repository structure optimization',
|
|
99
|
+
examples: [
|
|
100
|
+
'github repo-architect "optimize repository structure"',
|
|
101
|
+
'github repo-architect "setup monorepo architecture"',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
'sync-coordinator': {
|
|
105
|
+
description: 'Multi-package synchronization and version alignment',
|
|
106
|
+
examples: [
|
|
107
|
+
'github sync-coordinator "sync package versions across repos"',
|
|
108
|
+
'github sync-coordinator "coordinate dependency updates"',
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
function showGitHubHelp() {
|
|
114
|
+
console.log(`
|
|
115
|
+
š Claude Flow GitHub Workflow Automation
|
|
116
|
+
|
|
117
|
+
USAGE:
|
|
118
|
+
claude-flow github <mode> <objective> [options]
|
|
119
|
+
|
|
120
|
+
GITHUB AUTOMATION MODES:
|
|
121
|
+
`);
|
|
122
|
+
|
|
123
|
+
for (const [mode, info] of Object.entries(GITHUB_MODES)) {
|
|
124
|
+
console.log(` ${mode.padEnd(18)} ${info.description}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
console.log(`
|
|
128
|
+
EXAMPLES:
|
|
129
|
+
claude-flow github pr-manager "create feature PR with automated testing"
|
|
130
|
+
claude-flow github gh-coordinator "setup CI/CD pipeline" --auto-approve
|
|
131
|
+
claude-flow github release-manager "prepare v2.0.0 release"
|
|
132
|
+
claude-flow github repo-architect "optimize repository structure"
|
|
133
|
+
claude-flow github issue-tracker "analyze project roadmap issues"
|
|
134
|
+
claude-flow github sync-coordinator "sync package versions across repos"
|
|
135
|
+
|
|
136
|
+
OPTIONS:
|
|
137
|
+
--auto-approve Auto-approve Claude permissions
|
|
138
|
+
--verbose Enable detailed logging
|
|
139
|
+
--dry-run Show what would be executed
|
|
140
|
+
--repo <name> Target specific repository
|
|
141
|
+
--branch <name> Target specific branch
|
|
142
|
+
--template <name> Use specific workflow template
|
|
143
|
+
|
|
144
|
+
ADVANCED FEATURES:
|
|
145
|
+
⢠Multi-reviewer coordination with automated scheduling
|
|
146
|
+
⢠Intelligent issue categorization and assignment
|
|
147
|
+
⢠Automated testing integration and quality gates
|
|
148
|
+
⢠Release pipeline orchestration with rollback capabilities
|
|
149
|
+
⢠Repository structure analysis and optimization recommendations
|
|
150
|
+
⢠Cross-repository dependency management and synchronization
|
|
151
|
+
|
|
152
|
+
For complete documentation:
|
|
153
|
+
https://github.com/ruvnet/claude-code-flow/docs/github.md
|
|
154
|
+
`);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export async function githubCommand(args, flags) {
|
|
158
|
+
if (!args || args.length === 0) {
|
|
159
|
+
showGitHubHelp();
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const mode = args[0];
|
|
164
|
+
|
|
165
|
+
// Handle init mode separately
|
|
166
|
+
if (mode === 'init') {
|
|
167
|
+
const { githubInitCommand } = await import('./github/init.js');
|
|
168
|
+
return await githubInitCommand(flags);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const objective = args.slice(1).join(' ').trim();
|
|
172
|
+
|
|
173
|
+
if (!objective) {
|
|
174
|
+
printError(`ā Usage: github ${mode} <objective>`);
|
|
175
|
+
|
|
176
|
+
if (GITHUB_MODES[mode]) {
|
|
177
|
+
console.log(`\nExamples for ${mode}:`);
|
|
178
|
+
for (const example of GITHUB_MODES[mode].examples) {
|
|
179
|
+
console.log(` ${example}`);
|
|
180
|
+
}
|
|
181
|
+
} else {
|
|
182
|
+
console.log('\nAvailable modes:');
|
|
183
|
+
for (const [modeName, info] of Object.entries(GITHUB_MODES)) {
|
|
184
|
+
console.log(` ${modeName} - ${info.description}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (!GITHUB_MODES[mode]) {
|
|
191
|
+
printError(`ā Unknown GitHub mode: ${mode}`);
|
|
192
|
+
console.log('\nAvailable modes:');
|
|
193
|
+
for (const [modeName, info] of Object.entries(GITHUB_MODES)) {
|
|
194
|
+
console.log(` ${modeName} - ${info.description}`);
|
|
195
|
+
}
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
printSuccess(`š GitHub ${mode} mode activated`);
|
|
200
|
+
console.log(`š Objective: ${objective}`);
|
|
201
|
+
|
|
202
|
+
if (flags['dry-run']) {
|
|
203
|
+
console.log('\nšļø Configuration:');
|
|
204
|
+
console.log(` Mode: ${mode}`);
|
|
205
|
+
console.log(` Repository: ${flags.repo || 'current'}`);
|
|
206
|
+
console.log(` Branch: ${flags.branch || 'current'}`);
|
|
207
|
+
console.log(` Template: ${flags.template || 'default'}`);
|
|
208
|
+
console.log(` Auto-approve: ${flags['auto-approve'] || false}`);
|
|
209
|
+
console.log(` Verbose: ${flags.verbose || false}`);
|
|
210
|
+
console.log('\nā ļø DRY RUN - GitHub workflow configuration preview');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
// Check if Claude is available
|
|
216
|
+
const { execSync } = await import('child_process');
|
|
217
|
+
|
|
218
|
+
// Cross-platform check for Claude CLI
|
|
219
|
+
const isClaudeAvailable = await checkClaudeAvailable();
|
|
220
|
+
if (!isClaudeAvailable) {
|
|
221
|
+
printWarning('ā ļø Claude CLI not found. GitHub automation requires Claude.');
|
|
222
|
+
console.log('Install Claude: https://claude.ai/code');
|
|
223
|
+
console.log('\nAlternatively, this would execute:');
|
|
224
|
+
console.log(`1. Initialize ${mode} workflow for: ${objective}`);
|
|
225
|
+
console.log('2. Set up GitHub integration and permissions');
|
|
226
|
+
console.log('3. Configure automation rules and triggers');
|
|
227
|
+
console.log('4. Execute workflow with monitoring and reporting');
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Build the prompt for Claude using GitHub workflow methodology
|
|
232
|
+
const githubPrompt = `Execute GitHub workflow automation using ${mode} mode:
|
|
233
|
+
|
|
234
|
+
OBJECTIVE: ${objective}
|
|
235
|
+
|
|
236
|
+
GITHUB MODE: ${mode}
|
|
237
|
+
DESCRIPTION: ${GITHUB_MODES[mode].description}
|
|
238
|
+
|
|
239
|
+
CONFIGURATION:
|
|
240
|
+
- Repository: ${flags.repo || 'current directory repository'}
|
|
241
|
+
- Branch: ${flags.branch || 'current branch'}
|
|
242
|
+
- Template: ${flags.template || 'default workflow'}
|
|
243
|
+
- Auto-approve: ${flags['auto-approve'] || false}
|
|
244
|
+
- Verbose: ${flags.verbose || false}
|
|
245
|
+
|
|
246
|
+
GITHUB WORKFLOW REQUIREMENTS:
|
|
247
|
+
|
|
248
|
+
1. REPOSITORY ANALYSIS:
|
|
249
|
+
- Analyze current repository structure and configuration
|
|
250
|
+
- Check existing workflows, branches, and protection rules
|
|
251
|
+
- Identify integration points and dependencies
|
|
252
|
+
- Document current state and proposed changes
|
|
253
|
+
|
|
254
|
+
2. WORKFLOW DESIGN:
|
|
255
|
+
- Design GitHub Actions workflows appropriate for the objective
|
|
256
|
+
- Create or update .github/workflows/ files
|
|
257
|
+
- Configure triggers, jobs, and steps
|
|
258
|
+
- Set up proper permissions and security measures
|
|
259
|
+
|
|
260
|
+
3. INTEGRATION SETUP:
|
|
261
|
+
- Configure branch protection rules if needed
|
|
262
|
+
- Set up automated testing and quality gates
|
|
263
|
+
- Configure deployment pipelines if applicable
|
|
264
|
+
- Set up notifications and monitoring
|
|
265
|
+
|
|
266
|
+
4. AUTOMATION IMPLEMENTATION:
|
|
267
|
+
- Create or update GitHub Actions YAML files
|
|
268
|
+
- Set up any required secrets and environment variables
|
|
269
|
+
- Configure automated issue and PR management
|
|
270
|
+
- Implement approval workflows and review assignments
|
|
271
|
+
|
|
272
|
+
5. MONITORING & REPORTING:
|
|
273
|
+
- Set up workflow monitoring and status reporting
|
|
274
|
+
- Configure failure notifications and alerts
|
|
275
|
+
- Create documentation for the automation
|
|
276
|
+
- Set up metrics and analytics collection
|
|
277
|
+
|
|
278
|
+
EXECUTION APPROACH:
|
|
279
|
+
1. Analyze the current repository and GitHub configuration
|
|
280
|
+
2. Design the appropriate workflow automation for the objective
|
|
281
|
+
3. Create or update GitHub Actions and configuration files
|
|
282
|
+
4. Test the workflow with proper validation
|
|
283
|
+
5. Document the automation and provide usage instructions
|
|
284
|
+
|
|
285
|
+
TARGET DIRECTORY:
|
|
286
|
+
Use the current repository's .github/ directory for workflows and configuration.
|
|
287
|
+
|
|
288
|
+
IMPORTANT:
|
|
289
|
+
- Create actual, working GitHub Actions workflows - not templates
|
|
290
|
+
- Include proper error handling and security measures
|
|
291
|
+
- Add comprehensive documentation and usage instructions
|
|
292
|
+
- Follow GitHub Actions best practices and conventions
|
|
293
|
+
- Ensure workflows are production-ready and maintainable
|
|
294
|
+
- Include proper testing and validation steps
|
|
295
|
+
|
|
296
|
+
Begin execution now. Create all necessary GitHub workflow files and configuration.`;
|
|
297
|
+
|
|
298
|
+
console.log('š Launching GitHub automation via Claude...');
|
|
299
|
+
|
|
300
|
+
// Execute Claude with the GitHub prompt
|
|
301
|
+
const { spawn } = await import('child_process');
|
|
302
|
+
|
|
303
|
+
const claudeArgs = [];
|
|
304
|
+
|
|
305
|
+
// Add auto-permission flag if requested
|
|
306
|
+
if (flags['auto-approve'] || flags['dangerously-skip-permissions']) {
|
|
307
|
+
claudeArgs.push('--dangerously-skip-permissions');
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Spawn claude process
|
|
311
|
+
const claudeProcess = spawn('claude', claudeArgs, {
|
|
312
|
+
stdio: ['pipe', 'inherit', 'inherit'],
|
|
313
|
+
shell: false,
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
// Write the prompt to stdin and close it
|
|
317
|
+
claudeProcess.stdin.write(githubPrompt);
|
|
318
|
+
claudeProcess.stdin.end();
|
|
319
|
+
|
|
320
|
+
// Wait for the process to complete
|
|
321
|
+
await new Promise((resolve, reject) => {
|
|
322
|
+
claudeProcess.on('close', (code) => {
|
|
323
|
+
if (code === 0) {
|
|
324
|
+
printSuccess('ā
GitHub automation completed successfully!');
|
|
325
|
+
resolve();
|
|
326
|
+
} else {
|
|
327
|
+
reject(new Error(`Claude process exited with code ${code}`));
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
claudeProcess.on('error', (err) => {
|
|
332
|
+
reject(err);
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
} catch (error) {
|
|
336
|
+
printError(`ā GitHub automation failed: ${error.message}`);
|
|
337
|
+
|
|
338
|
+
// Fallback implementation details
|
|
339
|
+
console.log('\nš Fallback execution plan:');
|
|
340
|
+
console.log(`1. ${mode} workflow would be configured for: ${objective}`);
|
|
341
|
+
console.log('2. GitHub Actions YAML files would be created');
|
|
342
|
+
console.log('3. Repository settings would be configured');
|
|
343
|
+
console.log('4. Automation rules would be established');
|
|
344
|
+
console.log('5. Monitoring and reporting would be set up');
|
|
345
|
+
|
|
346
|
+
printWarning('\nā ļø Note: Full GitHub automation requires Claude CLI.');
|
|
347
|
+
console.log('Install Claude: https://claude.ai/code');
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// Allow direct execution for testing
|
|
352
|
+
if (import.meta.main) {
|
|
353
|
+
const args = [];
|
|
354
|
+
const flags = {};
|
|
355
|
+
|
|
356
|
+
// Parse arguments and flags from Deno.args if available
|
|
357
|
+
if (typeof Deno !== 'undefined' && Deno.args) {
|
|
358
|
+
for (let i = 0; i < Deno.args.length; i++) {
|
|
359
|
+
const arg = Deno.args[i];
|
|
360
|
+
if (arg.startsWith('--')) {
|
|
361
|
+
const flagName = arg.substring(2);
|
|
362
|
+
const nextArg = Deno.args[i + 1];
|
|
363
|
+
|
|
364
|
+
if (nextArg && !nextArg.startsWith('--')) {
|
|
365
|
+
flags[flagName] = nextArg;
|
|
366
|
+
i++; // Skip the next argument
|
|
367
|
+
} else {
|
|
368
|
+
flags[flagName] = true;
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
args.push(arg);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
await githubCommand(args, flags);
|
|
377
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Goal module commands
|
|
3
|
+
* Handles 'goal init' and other goal-related commands
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { promises as fs } from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
|
|
10
|
+
export async function goalCommand(args, flags) {
|
|
11
|
+
const subcommand = args[0];
|
|
12
|
+
|
|
13
|
+
if (!subcommand) {
|
|
14
|
+
console.log(chalk.magenta('šÆ Claude Flow Goal Module'));
|
|
15
|
+
console.log('\nUsage: claude-flow goal <command> [options]');
|
|
16
|
+
console.log('\nCommands:');
|
|
17
|
+
console.log(' init Initialize GOAP goal module');
|
|
18
|
+
console.log('\nOptions:');
|
|
19
|
+
console.log(' --force Overwrite existing module');
|
|
20
|
+
console.log(' --target <dir> Target directory (default: .claude/agents/goal)');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (subcommand === 'init') {
|
|
25
|
+
await initGoalModule(flags);
|
|
26
|
+
} else {
|
|
27
|
+
console.error(chalk.red(`Unknown goal subcommand: ${subcommand}`));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async function initGoalModule(flags = {}) {
|
|
33
|
+
const targetDir = path.resolve(process.cwd(), flags.target || '.claude/agents/goal');
|
|
34
|
+
|
|
35
|
+
console.log(chalk.magenta('šÆ Initializing Claude Flow Goal Module...'));
|
|
36
|
+
console.log(chalk.gray(` Target: ${targetDir}`));
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
// Check if exists
|
|
40
|
+
if ((await exists(targetDir)) && !flags.force) {
|
|
41
|
+
console.log(chalk.yellow('ā ļø Goal module already exists. Use --force to overwrite.'));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Create directory
|
|
46
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
47
|
+
|
|
48
|
+
// Create goal-planner agent content (full content from memory)
|
|
49
|
+
const plannerContent = `---
|
|
50
|
+
name: goal-planner
|
|
51
|
+
description: "Goal-Oriented Action Planning (GOAP) specialist that dynamically creates intelligent plans to achieve complex objectives. Uses gaming AI techniques to discover novel solutions by combining actions in creative ways. Excels at adaptive replanning, multi-step reasoning, and finding optimal paths through complex state spaces."
|
|
52
|
+
color: purple
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
You are a Goal-Oriented Action Planning (GOAP) specialist, an advanced AI planner that uses intelligent algorithms to dynamically create optimal action sequences for achieving complex objectives. Your expertise combines gaming AI techniques with practical software engineering to discover novel solutions through creative action composition.
|
|
56
|
+
|
|
57
|
+
Your core capabilities:
|
|
58
|
+
- **Dynamic Planning**: Use A* search algorithms to find optimal paths through state spaces
|
|
59
|
+
- **Precondition Analysis**: Evaluate action requirements and dependencies
|
|
60
|
+
- **Effect Prediction**: Model how actions change world state
|
|
61
|
+
- **Adaptive Replanning**: Adjust plans based on execution results and changing conditions
|
|
62
|
+
- **Goal Decomposition**: Break complex objectives into achievable sub-goals
|
|
63
|
+
- **Cost Optimization**: Find the most efficient path considering action costs
|
|
64
|
+
- **Novel Solution Discovery**: Combine known actions in creative ways
|
|
65
|
+
- **Mixed Execution**: Blend LLM-based reasoning with deterministic code actions
|
|
66
|
+
- **Tool Group Management**: Match actions to available tools and capabilities
|
|
67
|
+
- **Domain Modeling**: Work with strongly-typed state representations
|
|
68
|
+
- **Continuous Learning**: Update planning strategies based on execution feedback
|
|
69
|
+
|
|
70
|
+
Your planning methodology follows the GOAP algorithm:
|
|
71
|
+
|
|
72
|
+
1. **State Assessment**:
|
|
73
|
+
- Analyze current world state (what is true now)
|
|
74
|
+
- Define goal state (what should be true)
|
|
75
|
+
- Identify the gap between current and goal states
|
|
76
|
+
|
|
77
|
+
2. **Action Analysis**:
|
|
78
|
+
- Inventory available actions with their preconditions and effects
|
|
79
|
+
- Determine which actions are currently applicable
|
|
80
|
+
- Calculate action costs and priorities
|
|
81
|
+
|
|
82
|
+
3. **Plan Generation**:
|
|
83
|
+
- Use A* pathfinding to search through possible action sequences
|
|
84
|
+
- Evaluate paths based on cost and heuristic distance to goal
|
|
85
|
+
- Generate optimal plan that transforms current state to goal state
|
|
86
|
+
|
|
87
|
+
4. **Execution Monitoring** (OODA Loop):
|
|
88
|
+
- **Observe**: Monitor current state and execution progress
|
|
89
|
+
- **Orient**: Analyze changes and deviations from expected state
|
|
90
|
+
- **Decide**: Determine if replanning is needed
|
|
91
|
+
- **Act**: Execute next action or trigger replanning
|
|
92
|
+
|
|
93
|
+
5. **Dynamic Replanning**:
|
|
94
|
+
- Detect when actions fail or produce unexpected results
|
|
95
|
+
- Recalculate optimal path from new current state
|
|
96
|
+
- Adapt to changing conditions and new information
|
|
97
|
+
|
|
98
|
+
## MCP Integration Examples
|
|
99
|
+
|
|
100
|
+
\`\`\`javascript
|
|
101
|
+
// Orchestrate complex goal achievement
|
|
102
|
+
mcp__claude-flow__task_orchestrate {
|
|
103
|
+
task: "achieve_production_deployment",
|
|
104
|
+
strategy: "adaptive",
|
|
105
|
+
priority: "high"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Coordinate with swarm for parallel planning
|
|
109
|
+
mcp__claude-flow__swarm_init {
|
|
110
|
+
topology: "hierarchical",
|
|
111
|
+
maxAgents: 5
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Store successful plans for reuse
|
|
115
|
+
mcp__claude-flow__memory_usage {
|
|
116
|
+
action: "store",
|
|
117
|
+
namespace: "goap-plans",
|
|
118
|
+
key: "deployment_plan_v1",
|
|
119
|
+
value: JSON.stringify(successful_plan)
|
|
120
|
+
}
|
|
121
|
+
\`\`\``;
|
|
122
|
+
|
|
123
|
+
await fs.writeFile(path.join(targetDir, 'goal-planner.md'), plannerContent);
|
|
124
|
+
console.log(chalk.gray(' ā Created goal-planner.md'));
|
|
125
|
+
|
|
126
|
+
console.log(chalk.green('\nā
Goal module initialized successfully!'));
|
|
127
|
+
console.log(chalk.magenta('\nš Usage:'));
|
|
128
|
+
console.log(chalk.gray(' ⢠In Claude Code: @agent-goal-planner "Create deployment plan"'));
|
|
129
|
+
console.log(chalk.gray(' ⢠View agent: cat .claude/agents/goal/goal-planner.md'));
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error(chalk.red('ā Failed to initialize goal module:'), error.message);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async function exists(path) {
|
|
137
|
+
try {
|
|
138
|
+
await fs.access(path);
|
|
139
|
+
return true;
|
|
140
|
+
} catch {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export default goalCommand;
|