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
|
@@ -1,57 +1,50 @@
|
|
|
1
1
|
// slash-commands.js - Create Claude Code slash commands
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
|
|
2
|
+
import { createSparcSlashCommand, createMainSparcCommand } from "./sparc-commands.js";
|
|
3
|
+
import { createClaudeFlowCommands } from "./claude-flow-commands.js";
|
|
4
|
+
import { copyTemplates } from "../template-copier.js";
|
|
5
|
+
import { promises as fs } from "fs";
|
|
6
|
+
import { join } from "path";
|
|
9
7
|
// Create Claude Code slash commands for SPARC modes
|
|
10
8
|
export async function createClaudeSlashCommands(workingDir) {
|
|
11
|
-
try {
|
|
12
|
-
console.log('\n📝 Creating Claude Code slash commands...');
|
|
13
|
-
|
|
14
|
-
// Use template copier for SPARC slash commands
|
|
15
|
-
const slashCommandOptions = {
|
|
16
|
-
sparc: true,
|
|
17
|
-
force: true,
|
|
18
|
-
dryRun: false,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
// Check if .roomodes exists for dynamic generation
|
|
22
|
-
const roomodesPath = `${workingDir}/.roomodes`;
|
|
23
9
|
try {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
10
|
+
console.log('\n📝 Creating Claude Code slash commands...');
|
|
11
|
+
// Use template copier for SPARC slash commands
|
|
12
|
+
const slashCommandOptions = {
|
|
13
|
+
sparc: true,
|
|
14
|
+
force: true,
|
|
15
|
+
dryRun: false
|
|
16
|
+
};
|
|
17
|
+
// Check if .roomodes exists for dynamic generation
|
|
18
|
+
const roomodesPath = `${workingDir}/.roomodes`;
|
|
19
|
+
try {
|
|
20
|
+
const roomodesContent = await fs.readFile(roomodesPath, 'utf8');
|
|
21
|
+
const roomodes = JSON.parse(roomodesContent);
|
|
22
|
+
// Create slash commands for each SPARC mode
|
|
23
|
+
for (const mode of roomodes.customModes){
|
|
24
|
+
const commandPath = join(workingDir, '.claude', 'commands', 'sparc', `${mode.slug}.md`);
|
|
25
|
+
const commandContent = createSparcSlashCommand(mode);
|
|
26
|
+
await fs.mkdir(join(workingDir, '.claude', 'commands', 'sparc'), {
|
|
27
|
+
recursive: true
|
|
28
|
+
});
|
|
29
|
+
await fs.writeFile(commandPath, commandContent);
|
|
30
|
+
console.log(` ✓ Created slash command: /sparc-${mode.slug}`);
|
|
31
|
+
}
|
|
32
|
+
// Create main SPARC command
|
|
33
|
+
const mainSparcCommand = createMainSparcCommand(roomodes.customModes);
|
|
34
|
+
await fs.writeFile(join(workingDir, '.claude', 'commands', 'sparc.md'), mainSparcCommand);
|
|
35
|
+
console.log(' ✓ Created main slash command: /sparc');
|
|
36
|
+
} catch (err) {
|
|
37
|
+
// Fallback to template copier if .roomodes doesn't exist
|
|
38
|
+
console.log(' 🔄 Using template copier for SPARC commands...');
|
|
39
|
+
const copyResults = await copyTemplates(workingDir, slashCommandOptions);
|
|
40
|
+
if (!copyResults.success) {
|
|
41
|
+
console.log(` ⚠️ Template copier failed: ${copyResults.errors.join(', ')}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Create claude-flow-novice specific commands
|
|
45
|
+
await createClaudeFlowCommands(workingDir);
|
|
41
46
|
} catch (err) {
|
|
42
|
-
// Fallback to template copier if .roomodes doesn't exist
|
|
43
|
-
console.log(' 🔄 Using template copier for SPARC commands...');
|
|
44
|
-
const copyResults = await copyTemplates(workingDir, slashCommandOptions);
|
|
45
|
-
|
|
46
|
-
if (!copyResults.success) {
|
|
47
|
-
console.log(` ⚠️ Template copier failed: ${copyResults.errors.join(', ')}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Create claude-flow-novice specific commands
|
|
52
|
-
await createClaudeFlowCommands(workingDir);
|
|
53
|
-
} catch (err) {
|
|
54
47
|
// Legacy slash command creation - silently skip if it fails
|
|
55
48
|
// SPARC slash commands are already created successfully
|
|
56
|
-
|
|
49
|
+
}
|
|
57
50
|
}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
// sparc-commands.js - SPARC-specific slash commands
|
|
2
|
-
|
|
3
2
|
// Create SPARC mode slash command
|
|
4
3
|
export function createSparcSlashCommand(mode) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
? `${mode.roleDefinition.substring(0, 97)}...`
|
|
9
|
-
: mode.roleDefinition;
|
|
10
|
-
|
|
11
|
-
return `---
|
|
4
|
+
// Extract the full description without truncation
|
|
5
|
+
const fullDescription = mode.roleDefinition.length > 100 ? `${mode.roleDefinition.substring(0, 97)}...` : mode.roleDefinition;
|
|
6
|
+
return `---
|
|
12
7
|
name: sparc-${mode.slug}
|
|
13
8
|
description: ${mode.name} - ${fullDescription}
|
|
14
9
|
---
|
|
@@ -22,20 +17,14 @@ ${mode.roleDefinition}
|
|
|
22
17
|
${mode.customInstructions}
|
|
23
18
|
|
|
24
19
|
## Available Tools
|
|
25
|
-
${
|
|
26
|
-
|
|
27
|
-
? mode.groups
|
|
28
|
-
.map((g) => {
|
|
29
|
-
if (typeof g === 'string') {
|
|
20
|
+
${Array.isArray(mode.groups) ? mode.groups.map((g)=>{
|
|
21
|
+
if (typeof g === 'string') {
|
|
30
22
|
return `- **${g}**: ${getToolDescription(g)}`;
|
|
31
|
-
|
|
23
|
+
} else if (Array.isArray(g)) {
|
|
32
24
|
return `- **${g[0]}**: ${g[1]?.description || getToolDescription(g[0])} ${g[1]?.fileRegex ? `(Files matching: ${g[1].fileRegex})` : ''}`;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.join('\n')
|
|
37
|
-
: 'None'
|
|
38
|
-
}
|
|
25
|
+
}
|
|
26
|
+
return `- ${JSON.stringify(g)}`;
|
|
27
|
+
}).join('\n') : 'None'}
|
|
39
28
|
|
|
40
29
|
## Usage
|
|
41
30
|
|
|
@@ -102,55 +91,48 @@ npx claude-flow-novice memory query "${mode.slug}" --limit 5
|
|
|
102
91
|
\`\`\`
|
|
103
92
|
`;
|
|
104
93
|
}
|
|
105
|
-
|
|
106
94
|
// Helper function to get tool descriptions
|
|
107
95
|
function getToolDescription(tool) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
96
|
+
const toolDescriptions = {
|
|
97
|
+
read: 'File reading and viewing',
|
|
98
|
+
edit: 'File modification and creation',
|
|
99
|
+
browser: 'Web browsing capabilities',
|
|
100
|
+
mcp: 'Model Context Protocol tools',
|
|
101
|
+
command: 'Command execution'
|
|
102
|
+
};
|
|
103
|
+
return toolDescriptions[tool] || 'Tool access';
|
|
116
104
|
}
|
|
117
|
-
|
|
118
105
|
// Helper function to get example tasks
|
|
119
106
|
function getExampleTask(slug) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
107
|
+
const examples = {
|
|
108
|
+
architect: 'design microservices architecture',
|
|
109
|
+
code: 'implement REST API endpoints',
|
|
110
|
+
tdd: 'create user authentication tests',
|
|
111
|
+
debug: 'fix memory leak in service',
|
|
112
|
+
'security-review': 'audit API security',
|
|
113
|
+
'docs-writer': 'create API documentation',
|
|
114
|
+
integration: 'connect payment service',
|
|
115
|
+
'post-deployment-monitoring-mode': 'monitor production metrics',
|
|
116
|
+
'refinement-optimization-mode': 'optimize database queries',
|
|
117
|
+
devops: 'deploy to AWS Lambda',
|
|
118
|
+
'supabase-admin': 'create user authentication schema',
|
|
119
|
+
'spec-pseudocode': 'define payment flow requirements',
|
|
120
|
+
mcp: 'integrate with external API',
|
|
121
|
+
swarm: 'build complete feature with tests',
|
|
122
|
+
sparc: 'orchestrate authentication system',
|
|
123
|
+
ask: 'help me choose the right mode',
|
|
124
|
+
tutorial: 'guide me through SPARC methodology'
|
|
125
|
+
};
|
|
126
|
+
return examples[slug] || 'implement feature';
|
|
140
127
|
}
|
|
141
|
-
|
|
142
128
|
// Create main SPARC command
|
|
143
129
|
export function createMainSparcCommand(modes) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
: 'SPARC orchestrator for complex workflows';
|
|
151
|
-
const sparcInstructions = sparcMode ? sparcMode.customInstructions : '';
|
|
152
|
-
|
|
153
|
-
return `---
|
|
130
|
+
const modeList = modes.map((m)=>`- \`/sparc-${m.slug}\` - ${m.name}`).join('\n');
|
|
131
|
+
// Find the sparc orchestrator mode for its full description
|
|
132
|
+
const sparcMode = modes.find((m)=>m.slug === 'sparc');
|
|
133
|
+
const sparcDescription = sparcMode ? sparcMode.roleDefinition : 'SPARC orchestrator for complex workflows';
|
|
134
|
+
const sparcInstructions = sparcMode ? sparcMode.customInstructions : '';
|
|
135
|
+
return `---
|
|
154
136
|
name: sparc
|
|
155
137
|
description: Execute SPARC methodology workflows with Claude-Flow
|
|
156
138
|
---
|
|
@@ -1,175 +1,169 @@
|
|
|
1
1
|
// copy-revised-templates.js - Copy the revised template files from repository
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
7
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
6
|
const __dirname = path.dirname(__filename);
|
|
9
|
-
|
|
10
7
|
// Source directory for revised templates (repository root .claude/commands)
|
|
11
8
|
const REPO_TEMPLATES_DIR = path.join(__dirname, '../../../../.claude/commands');
|
|
12
|
-
|
|
13
9
|
/**
|
|
14
10
|
* Copy revised template files from repository to target project
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
for (const file of additionalFiles) {
|
|
40
|
-
const sourcePath = path.join(REPO_TEMPLATES_DIR, file.source);
|
|
41
|
-
const targetPath = path.join(targetDir, file.target);
|
|
42
|
-
|
|
43
|
-
if (fs.existsSync(sourcePath)) {
|
|
44
|
-
try {
|
|
45
|
-
const targetDirPath = path.dirname(targetPath);
|
|
46
|
-
await fs.promises.mkdir(targetDirPath, { recursive: true });
|
|
47
|
-
|
|
48
|
-
if (!fs.existsSync(targetPath) || options.force) {
|
|
49
|
-
await fs.promises.copyFile(sourcePath, targetPath);
|
|
50
|
-
results.copiedFiles.push(file.target);
|
|
51
|
-
if (!options.dryRun) {
|
|
52
|
-
console.log(` ✓ Copied ${file.target}`);
|
|
11
|
+
*/ export async function copyRevisedTemplates(targetDir, options = {}) {
|
|
12
|
+
const results = {
|
|
13
|
+
success: true,
|
|
14
|
+
copiedFiles: [],
|
|
15
|
+
skippedFiles: [],
|
|
16
|
+
errors: []
|
|
17
|
+
};
|
|
18
|
+
const targetCommandsDir = path.join(targetDir, '.claude/commands');
|
|
19
|
+
try {
|
|
20
|
+
// Ensure target directory exists
|
|
21
|
+
await fs.promises.mkdir(targetCommandsDir, {
|
|
22
|
+
recursive: true
|
|
23
|
+
});
|
|
24
|
+
// Copy all template files recursively
|
|
25
|
+
await copyDirectoryRecursive(REPO_TEMPLATES_DIR, targetCommandsDir, options, results);
|
|
26
|
+
// Copy additional .claude files if they exist
|
|
27
|
+
const additionalFiles = [
|
|
28
|
+
{
|
|
29
|
+
source: '../config.json',
|
|
30
|
+
target: '.claude/config.json'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
source: '../settings.json',
|
|
34
|
+
target: '.claude/settings.json'
|
|
53
35
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
36
|
+
];
|
|
37
|
+
for (const file of additionalFiles){
|
|
38
|
+
const sourcePath = path.join(REPO_TEMPLATES_DIR, file.source);
|
|
39
|
+
const targetPath = path.join(targetDir, file.target);
|
|
40
|
+
if (fs.existsSync(sourcePath)) {
|
|
41
|
+
try {
|
|
42
|
+
const targetDirPath = path.dirname(targetPath);
|
|
43
|
+
await fs.promises.mkdir(targetDirPath, {
|
|
44
|
+
recursive: true
|
|
45
|
+
});
|
|
46
|
+
if (!fs.existsSync(targetPath) || options.force) {
|
|
47
|
+
await fs.promises.copyFile(sourcePath, targetPath);
|
|
48
|
+
results.copiedFiles.push(file.target);
|
|
49
|
+
if (!options.dryRun) {
|
|
50
|
+
console.log(` ✓ Copied ${file.target}`);
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
results.skippedFiles.push(file.target);
|
|
54
|
+
if (!options.dryRun) {
|
|
55
|
+
console.log(` ⏭️ Skipped ${file.target} (already exists)`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
} catch (err) {
|
|
59
|
+
results.errors.push(`Failed to copy ${file.target}: ${err.message}`);
|
|
60
|
+
}
|
|
58
61
|
}
|
|
59
|
-
}
|
|
60
|
-
} catch (err) {
|
|
61
|
-
results.errors.push(`Failed to copy ${file.target}: ${err.message}`);
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
results.success = results.errors.length === 0;
|
|
64
|
+
} catch (err) {
|
|
65
|
+
results.success = false;
|
|
66
|
+
results.errors.push(`Failed to copy revised templates: ${err.message}`);
|
|
64
67
|
}
|
|
65
|
-
|
|
66
|
-
results.success = results.errors.length === 0;
|
|
67
|
-
} catch (err) {
|
|
68
|
-
results.success = false;
|
|
69
|
-
results.errors.push(`Failed to copy revised templates: ${err.message}`);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return results;
|
|
68
|
+
return results;
|
|
73
69
|
}
|
|
74
|
-
|
|
75
70
|
/**
|
|
76
71
|
* Recursively copy directory contents
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
72
|
+
*/ async function copyDirectoryRecursive(sourceDir, targetDir, options, results) {
|
|
73
|
+
try {
|
|
74
|
+
const entries = await fs.promises.readdir(sourceDir, {
|
|
75
|
+
withFileTypes: true
|
|
76
|
+
});
|
|
77
|
+
for (const entry of entries){
|
|
78
|
+
const sourcePath = path.join(sourceDir, entry.name);
|
|
79
|
+
const targetPath = path.join(targetDir, entry.name);
|
|
80
|
+
if (entry.isDirectory()) {
|
|
81
|
+
// Create directory and recurse
|
|
82
|
+
await fs.promises.mkdir(targetPath, {
|
|
83
|
+
recursive: true
|
|
84
|
+
});
|
|
85
|
+
await copyDirectoryRecursive(sourcePath, targetPath, options, results);
|
|
86
|
+
} else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
87
|
+
// Copy markdown files
|
|
88
|
+
try {
|
|
89
|
+
if (!fs.existsSync(targetPath) || options.force) {
|
|
90
|
+
if (!options.dryRun) {
|
|
91
|
+
await fs.promises.copyFile(sourcePath, targetPath);
|
|
92
|
+
}
|
|
93
|
+
const relativePath = path.relative(targetDir, targetPath);
|
|
94
|
+
results.copiedFiles.push(relativePath);
|
|
95
|
+
if (!options.dryRun && options.verbose) {
|
|
96
|
+
console.log(` ✓ Copied ${relativePath}`);
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
const relativePath = path.relative(targetDir, targetPath);
|
|
100
|
+
results.skippedFiles.push(relativePath);
|
|
101
|
+
if (!options.dryRun && options.verbose) {
|
|
102
|
+
console.log(` ⏭️ Skipped ${relativePath} (already exists)`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
} catch (err) {
|
|
106
|
+
results.errors.push(`Failed to copy ${entry.name}: ${err.message}`);
|
|
107
|
+
}
|
|
101
108
|
}
|
|
102
|
-
} else {
|
|
103
|
-
const relativePath = path.relative(targetDir, targetPath);
|
|
104
|
-
results.skippedFiles.push(relativePath);
|
|
105
|
-
if (!options.dryRun && options.verbose) {
|
|
106
|
-
console.log(` ⏭️ Skipped ${relativePath} (already exists)`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
} catch (err) {
|
|
110
|
-
results.errors.push(`Failed to copy ${entry.name}: ${err.message}`);
|
|
111
109
|
}
|
|
112
|
-
|
|
110
|
+
} catch (err) {
|
|
111
|
+
results.errors.push(`Failed to read directory ${sourceDir}: ${err.message}`);
|
|
113
112
|
}
|
|
114
|
-
} catch (err) {
|
|
115
|
-
results.errors.push(`Failed to read directory ${sourceDir}: ${err.message}`);
|
|
116
|
-
}
|
|
117
113
|
}
|
|
118
|
-
|
|
119
114
|
/**
|
|
120
115
|
* Copy only specific categories
|
|
121
|
-
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
116
|
+
*/ export async function copyRevisedTemplatesByCategory(targetDir, categories, options = {}) {
|
|
117
|
+
const results = {
|
|
118
|
+
success: true,
|
|
119
|
+
copiedFiles: [],
|
|
120
|
+
skippedFiles: [],
|
|
121
|
+
errors: []
|
|
122
|
+
};
|
|
123
|
+
for (const category of categories){
|
|
124
|
+
const sourceCategoryDir = path.join(REPO_TEMPLATES_DIR, category);
|
|
125
|
+
const targetCategoryDir = path.join(targetDir, '.claude/commands', category);
|
|
126
|
+
if (fs.existsSync(sourceCategoryDir)) {
|
|
127
|
+
await fs.promises.mkdir(targetCategoryDir, {
|
|
128
|
+
recursive: true
|
|
129
|
+
});
|
|
130
|
+
await copyDirectoryRecursive(sourceCategoryDir, targetCategoryDir, options, results);
|
|
131
|
+
} else {
|
|
132
|
+
results.errors.push(`Category '${category}' not found in templates`);
|
|
133
|
+
}
|
|
139
134
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
results.success = results.errors.length === 0;
|
|
143
|
-
return results;
|
|
135
|
+
results.success = results.errors.length === 0;
|
|
136
|
+
return results;
|
|
144
137
|
}
|
|
145
|
-
|
|
146
138
|
/**
|
|
147
139
|
* Validate that source templates exist
|
|
148
|
-
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
140
|
+
*/ export function validateTemplatesExist() {
|
|
141
|
+
if (!fs.existsSync(REPO_TEMPLATES_DIR)) {
|
|
142
|
+
return {
|
|
143
|
+
valid: false,
|
|
144
|
+
error: `Template directory not found: ${REPO_TEMPLATES_DIR}`
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const requiredCategories = [
|
|
148
|
+
'analysis',
|
|
149
|
+
'github',
|
|
150
|
+
'sparc',
|
|
151
|
+
'coordination'
|
|
152
|
+
];
|
|
153
|
+
const missingCategories = [];
|
|
154
|
+
for (const category of requiredCategories){
|
|
155
|
+
const categoryPath = path.join(REPO_TEMPLATES_DIR, category);
|
|
156
|
+
if (!fs.existsSync(categoryPath)) {
|
|
157
|
+
missingCategories.push(category);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (missingCategories.length > 0) {
|
|
161
|
+
return {
|
|
162
|
+
valid: false,
|
|
163
|
+
error: `Missing required template categories: ${missingCategories.join(', ')}`
|
|
164
|
+
};
|
|
164
165
|
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (missingCategories.length > 0) {
|
|
168
166
|
return {
|
|
169
|
-
|
|
170
|
-
error: `Missing required template categories: ${missingCategories.join(', ')}`,
|
|
167
|
+
valid: true
|
|
171
168
|
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return { valid: true };
|
|
175
169
|
}
|