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.
- package/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -2,116 +2,115 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* GitHub command wrapper for simple CLI
|
|
4
4
|
* Provides GitHub workflow automation capabilities
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { access, constants } from 'fs/promises';
|
|
10
|
-
import { join } from 'path';
|
|
11
|
-
|
|
5
|
+
*/ import { printSuccess, printError, printWarning } from "../utils.js";
|
|
6
|
+
import { platform } from "os";
|
|
7
|
+
import { access, constants } from "node:fs/promises";
|
|
8
|
+
import { join } from "path";
|
|
12
9
|
/**
|
|
13
10
|
* Cross-platform check for executable availability
|
|
14
11
|
* @param {string} command - The command to check
|
|
15
12
|
* @returns {Promise<boolean>} - True if command is available
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
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) {
|
|
13
|
+
*/ async function checkCommandAvailable(command) {
|
|
14
|
+
const { execSync } = await import("child_process");
|
|
15
|
+
if (platform() === 'win32') {
|
|
16
|
+
// Windows: Use 'where' command
|
|
44
17
|
try {
|
|
45
|
-
|
|
46
|
-
|
|
18
|
+
execSync(`where ${command}`, {
|
|
19
|
+
stdio: 'ignore'
|
|
20
|
+
});
|
|
21
|
+
return true;
|
|
47
22
|
} catch (e) {
|
|
48
|
-
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
// Unix-like systems: Check common paths and use 'command -v'
|
|
27
|
+
try {
|
|
28
|
+
execSync(`command -v ${command}`, {
|
|
29
|
+
stdio: 'ignore',
|
|
30
|
+
shell: true
|
|
31
|
+
});
|
|
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
|
+
for (const dir of commonPaths){
|
|
43
|
+
try {
|
|
44
|
+
await access(join(dir, command), constants.X_OK);
|
|
45
|
+
return true;
|
|
46
|
+
} catch (e) {
|
|
47
|
+
// Continue checking other paths
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
49
51
|
}
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
52
52
|
}
|
|
53
|
-
}
|
|
54
53
|
}
|
|
55
|
-
|
|
56
54
|
/**
|
|
57
55
|
* Check if Claude CLI is available
|
|
58
56
|
* @returns {Promise<boolean>} - True if Claude is available
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
|
-
return checkCommandAvailable('claude');
|
|
57
|
+
*/ async function checkClaudeAvailable() {
|
|
58
|
+
return checkCommandAvailable('claude');
|
|
62
59
|
}
|
|
63
|
-
|
|
64
60
|
const GITHUB_MODES = {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
61
|
+
init: {
|
|
62
|
+
description: 'Initialize GitHub-specific hooks and checkpoint system',
|
|
63
|
+
examples: [
|
|
64
|
+
'github init',
|
|
65
|
+
'github init --force',
|
|
66
|
+
'github init --checkpoints-only'
|
|
67
|
+
]
|
|
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
111
|
};
|
|
112
|
-
|
|
113
112
|
function showGitHubHelp() {
|
|
114
|
-
|
|
113
|
+
console.log(`
|
|
115
114
|
š Claude Flow GitHub Workflow Automation
|
|
116
115
|
|
|
117
116
|
USAGE:
|
|
@@ -119,12 +118,10 @@ USAGE:
|
|
|
119
118
|
|
|
120
119
|
GITHUB AUTOMATION MODES:
|
|
121
120
|
`);
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
console.log(`
|
|
121
|
+
for (const [mode, info] of Object.entries(GITHUB_MODES)){
|
|
122
|
+
console.log(` ${mode.padEnd(18)} ${info.description}`);
|
|
123
|
+
}
|
|
124
|
+
console.log(`
|
|
128
125
|
EXAMPLES:
|
|
129
126
|
claude-flow-novice github pr-manager "create feature PR with automated testing"
|
|
130
127
|
claude-flow-novice github gh-coordinator "setup CI/CD pipeline" --auto-approve
|
|
@@ -153,83 +150,71 @@ For complete documentation:
|
|
|
153
150
|
https://github.com/ruvnet/claude-code-flow/docs/github.md
|
|
154
151
|
`);
|
|
155
152
|
}
|
|
156
|
-
|
|
157
153
|
export async function githubCommand(args, flags) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
}
|
|
154
|
+
if (!args || args.length === 0) {
|
|
155
|
+
showGitHubHelp();
|
|
156
|
+
return;
|
|
186
157
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
console.log('\nAvailable modes:');
|
|
193
|
-
for (const [modeName, info] of Object.entries(GITHUB_MODES)) {
|
|
194
|
-
console.log(` ${modeName} - ${info.description}`);
|
|
158
|
+
const mode = args[0];
|
|
159
|
+
// Handle init mode separately
|
|
160
|
+
if (mode === 'init') {
|
|
161
|
+
const { githubInitCommand } = await import("./github/init.js");
|
|
162
|
+
return await githubInitCommand(flags);
|
|
195
163
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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;
|
|
164
|
+
const objective = args.slice(1).join(' ').trim();
|
|
165
|
+
if (!objective) {
|
|
166
|
+
printError(`ā Usage: github ${mode} <objective>`);
|
|
167
|
+
if (GITHUB_MODES[mode]) {
|
|
168
|
+
console.log(`\nExamples for ${mode}:`);
|
|
169
|
+
for (const example of GITHUB_MODES[mode].examples){
|
|
170
|
+
console.log(` ${example}`);
|
|
171
|
+
}
|
|
172
|
+
} else {
|
|
173
|
+
console.log('\nAvailable modes:');
|
|
174
|
+
for (const [modeName, info] of Object.entries(GITHUB_MODES)){
|
|
175
|
+
console.log(` ${modeName} - ${info.description}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return;
|
|
229
179
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
180
|
+
if (!GITHUB_MODES[mode]) {
|
|
181
|
+
printError(`ā Unknown GitHub mode: ${mode}`);
|
|
182
|
+
console.log('\nAvailable modes:');
|
|
183
|
+
for (const [modeName, info] of Object.entries(GITHUB_MODES)){
|
|
184
|
+
console.log(` ${modeName} - ${info.description}`);
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
printSuccess(`š GitHub ${mode} mode activated`);
|
|
189
|
+
console.log(`š Objective: ${objective}`);
|
|
190
|
+
if (flags['dry-run']) {
|
|
191
|
+
console.log('\nšļø Configuration:');
|
|
192
|
+
console.log(` Mode: ${mode}`);
|
|
193
|
+
console.log(` Repository: ${flags.repo || 'current'}`);
|
|
194
|
+
console.log(` Branch: ${flags.branch || 'current'}`);
|
|
195
|
+
console.log(` Template: ${flags.template || 'default'}`);
|
|
196
|
+
console.log(` Auto-approve: ${flags['auto-approve'] || false}`);
|
|
197
|
+
console.log(` Verbose: ${flags.verbose || false}`);
|
|
198
|
+
console.log('\nā ļø DRY RUN - GitHub workflow configuration preview');
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
// Check if Claude is available
|
|
203
|
+
const { execSync } = await import("child_process");
|
|
204
|
+
// Cross-platform check for Claude CLI
|
|
205
|
+
const isClaudeAvailable = await checkClaudeAvailable();
|
|
206
|
+
if (!isClaudeAvailable) {
|
|
207
|
+
printWarning('ā ļø Claude CLI not found. GitHub automation requires Claude.');
|
|
208
|
+
console.log('Install Claude: https://claude.ai/code');
|
|
209
|
+
console.log('\nAlternatively, this would execute:');
|
|
210
|
+
console.log(`1. Initialize ${mode} workflow for: ${objective}`);
|
|
211
|
+
console.log('2. Set up GitHub integration and permissions');
|
|
212
|
+
console.log('3. Configure automation rules and triggers');
|
|
213
|
+
console.log('4. Execute workflow with monitoring and reporting');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// Build the prompt for Claude using GitHub workflow methodology
|
|
217
|
+
const githubPrompt = `Execute GitHub workflow automation using ${mode} mode:
|
|
233
218
|
|
|
234
219
|
OBJECTIVE: ${objective}
|
|
235
220
|
|
|
@@ -294,84 +279,74 @@ IMPORTANT:
|
|
|
294
279
|
- Include proper testing and validation steps
|
|
295
280
|
|
|
296
281
|
Begin execution now. Create all necessary GitHub workflow files and configuration.`;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
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}`));
|
|
282
|
+
console.log('š Launching GitHub automation via Claude...');
|
|
283
|
+
// Execute Claude with the GitHub prompt
|
|
284
|
+
const { spawn } = await import("child_process");
|
|
285
|
+
const claudeArgs = [];
|
|
286
|
+
// Add auto-permission flag if requested
|
|
287
|
+
if (flags['auto-approve'] || flags['dangerously-skip-permissions']) {
|
|
288
|
+
claudeArgs.push('--dangerously-skip-permissions');
|
|
328
289
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
290
|
+
// Spawn claude process
|
|
291
|
+
const claudeProcess = spawn('claude', claudeArgs, {
|
|
292
|
+
stdio: [
|
|
293
|
+
'pipe',
|
|
294
|
+
'inherit',
|
|
295
|
+
'inherit'
|
|
296
|
+
],
|
|
297
|
+
shell: false
|
|
298
|
+
});
|
|
299
|
+
// Write the prompt to stdin and close it
|
|
300
|
+
claudeProcess.stdin.write(githubPrompt);
|
|
301
|
+
claudeProcess.stdin.end();
|
|
302
|
+
// Wait for the process to complete
|
|
303
|
+
await new Promise((resolve, reject)=>{
|
|
304
|
+
claudeProcess.on('close', (code)=>{
|
|
305
|
+
if (code === 0) {
|
|
306
|
+
printSuccess('ā
GitHub automation completed successfully!');
|
|
307
|
+
resolve();
|
|
308
|
+
} else {
|
|
309
|
+
reject(new Error(`Claude process exited with code ${code}`));
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
claudeProcess.on('error', (err)=>{
|
|
313
|
+
reject(err);
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
} catch (error) {
|
|
317
|
+
printError(`ā GitHub automation failed: ${error.message}`);
|
|
318
|
+
// Fallback implementation details
|
|
319
|
+
console.log('\nš Fallback execution plan:');
|
|
320
|
+
console.log(`1. ${mode} workflow would be configured for: ${objective}`);
|
|
321
|
+
console.log('2. GitHub Actions YAML files would be created');
|
|
322
|
+
console.log('3. Repository settings would be configured');
|
|
323
|
+
console.log('4. Automation rules would be established');
|
|
324
|
+
console.log('5. Monitoring and reporting would be set up');
|
|
325
|
+
printWarning('\nā ļø Note: Full GitHub automation requires Claude CLI.');
|
|
326
|
+
console.log('Install Claude: https://claude.ai/code');
|
|
327
|
+
}
|
|
349
328
|
}
|
|
350
|
-
|
|
351
329
|
// Allow direct execution for testing
|
|
352
330
|
if (import.meta.main) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
331
|
+
const args = [];
|
|
332
|
+
const flags = {};
|
|
333
|
+
// Parse arguments and flags from Deno.args if available
|
|
334
|
+
if (typeof Deno !== 'undefined' && Deno.args) {
|
|
335
|
+
for(let i = 0; i < Deno.args.length; i++){
|
|
336
|
+
const arg = Deno.args[i];
|
|
337
|
+
if (arg.startsWith('--')) {
|
|
338
|
+
const flagName = arg.substring(2);
|
|
339
|
+
const nextArg = Deno.args[i + 1];
|
|
340
|
+
if (nextArg && !nextArg.startsWith('--')) {
|
|
341
|
+
flags[flagName] = nextArg;
|
|
342
|
+
i++; // Skip the next argument
|
|
343
|
+
} else {
|
|
344
|
+
flags[flagName] = true;
|
|
345
|
+
}
|
|
346
|
+
} else {
|
|
347
|
+
args.push(arg);
|
|
348
|
+
}
|
|
369
349
|
}
|
|
370
|
-
} else {
|
|
371
|
-
args.push(arg);
|
|
372
|
-
}
|
|
373
350
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
await githubCommand(args, flags);
|
|
351
|
+
await githubCommand(args, flags);
|
|
377
352
|
}
|
|
@@ -1,52 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Goal module commands
|
|
3
3
|
* Handles 'goal init' and other goal-related commands
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import chalk from 'chalk';
|
|
9
|
-
|
|
4
|
+
*/ import { promises as fs } from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import chalk from "chalk";
|
|
10
7
|
export async function goalCommand(args, flags) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
8
|
+
const subcommand = args[0];
|
|
9
|
+
if (!subcommand) {
|
|
10
|
+
console.log(chalk.magenta('šÆ Claude Flow Goal Module'));
|
|
11
|
+
console.log('\nUsage: claude-flow-novice goal <command> [options]');
|
|
12
|
+
console.log('\nCommands:');
|
|
13
|
+
console.log(' init Initialize GOAP goal module');
|
|
14
|
+
console.log('\nOptions:');
|
|
15
|
+
console.log(' --force Overwrite existing module');
|
|
16
|
+
console.log(' --target <dir> Target directory (default: .claude/agents/goal)');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (subcommand === 'init') {
|
|
20
|
+
await initGoalModule(flags);
|
|
21
|
+
} else {
|
|
22
|
+
console.error(chalk.red(`Unknown goal subcommand: ${subcommand}`));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
30
25
|
}
|
|
31
|
-
|
|
32
26
|
async function initGoalModule(flags = {}) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// Create goal-planner agent content (full content from memory)
|
|
49
|
-
const plannerContent = `---
|
|
27
|
+
const targetDir = path.resolve(process.cwd(), flags.target || '.claude/agents/goal');
|
|
28
|
+
console.log(chalk.magenta('šÆ Initializing Claude Flow Goal Module...'));
|
|
29
|
+
console.log(chalk.gray(` Target: ${targetDir}`));
|
|
30
|
+
try {
|
|
31
|
+
// Check if exists
|
|
32
|
+
if (await exists(targetDir) && !flags.force) {
|
|
33
|
+
console.log(chalk.yellow('ā ļø Goal module already exists. Use --force to overwrite.'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// Create directory
|
|
37
|
+
await fs.mkdir(targetDir, {
|
|
38
|
+
recursive: true
|
|
39
|
+
});
|
|
40
|
+
// Create goal-planner agent content (full content from memory)
|
|
41
|
+
const plannerContent = `---
|
|
50
42
|
name: goal-planner
|
|
51
43
|
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
44
|
color: purple
|
|
@@ -119,27 +111,23 @@ mcp__claude-flow__memory_usage {
|
|
|
119
111
|
value: JSON.stringify(successful_plan)
|
|
120
112
|
}
|
|
121
113
|
\`\`\``;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
114
|
+
await fs.writeFile(path.join(targetDir, 'goal-planner.md'), plannerContent);
|
|
115
|
+
console.log(chalk.gray(' ā Created goal-planner.md'));
|
|
116
|
+
console.log(chalk.green('\nā
Goal module initialized successfully!'));
|
|
117
|
+
console.log(chalk.magenta('\nš Usage:'));
|
|
118
|
+
console.log(chalk.gray(' ⢠In Claude Code: @agent-goal-planner "Create deployment plan"'));
|
|
119
|
+
console.log(chalk.gray(' ⢠View agent: cat .claude/agents/goal/goal-planner.md'));
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error(chalk.red('ā Failed to initialize goal module:'), error.message);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
134
124
|
}
|
|
135
|
-
|
|
136
125
|
async function exists(path) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
126
|
+
try {
|
|
127
|
+
await fs.access(path);
|
|
128
|
+
return true;
|
|
129
|
+
} catch {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
143
132
|
}
|
|
144
|
-
|
|
145
133
|
export default goalCommand;
|