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,430 +1,354 @@
|
|
|
1
1
|
// Base class for SPARC phases
|
|
2
2
|
// Provides common functionality for all phases
|
|
3
|
-
|
|
4
3
|
export class SparcPhase {
|
|
5
|
-
|
|
6
|
-
this.phaseName = phaseName;
|
|
7
|
-
this.taskDescription = taskDescription;
|
|
8
|
-
this.options = options;
|
|
9
|
-
this.startTime = null;
|
|
10
|
-
this.endTime = null;
|
|
11
|
-
this.artifacts = [];
|
|
12
|
-
this.memory = {};
|
|
13
|
-
this.swarmContext = null;
|
|
14
|
-
this.remediationContext = null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
4
|
+
/**
|
|
18
5
|
* Initialize phase execution
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
*/ async initializePhase() {
|
|
7
|
+
this.startTime = Date.now();
|
|
8
|
+
console.log(`🚀 Initializing ${this.phaseName} phase`);
|
|
9
|
+
// Load previous context from memory
|
|
10
|
+
if (this.options.swarmEnabled) {
|
|
11
|
+
await this.loadSwarmContext();
|
|
12
|
+
}
|
|
13
|
+
// Store phase start in memory
|
|
14
|
+
await this.storeInMemory(`${this.phaseName}_started`, {
|
|
15
|
+
timestamp: this.startTime,
|
|
16
|
+
taskDescription: this.taskDescription
|
|
17
|
+
});
|
|
27
18
|
}
|
|
28
|
-
|
|
29
|
-
// Store phase start in memory
|
|
30
|
-
await this.storeInMemory(`${this.phaseName}_started`, {
|
|
31
|
-
timestamp: this.startTime,
|
|
32
|
-
taskDescription: this.taskDescription,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
19
|
+
/**
|
|
37
20
|
* Finalize phase execution
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Update swarm context if enabled
|
|
53
|
-
if (this.options.swarmEnabled) {
|
|
54
|
-
await this.updateSwarmContext();
|
|
21
|
+
*/ async finalizePhase() {
|
|
22
|
+
this.endTime = Date.now();
|
|
23
|
+
const duration = this.endTime - this.startTime;
|
|
24
|
+
console.log(`✅ ${this.phaseName} phase completed in ${duration}ms`);
|
|
25
|
+
// Store phase completion in memory
|
|
26
|
+
await this.storeInMemory(`${this.phaseName}_completed`, {
|
|
27
|
+
timestamp: this.endTime,
|
|
28
|
+
duration: duration,
|
|
29
|
+
artifacts: this.artifacts
|
|
30
|
+
});
|
|
31
|
+
// Update swarm context if enabled
|
|
32
|
+
if (this.options.swarmEnabled) {
|
|
33
|
+
await this.updateSwarmContext();
|
|
34
|
+
}
|
|
55
35
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
/**
|
|
36
|
+
/**
|
|
59
37
|
* Store data in memory system
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
console.log(`💾 Stored in memory: ${memoryKey}`);
|
|
75
|
-
} catch (error) {
|
|
76
|
-
console.warn(`⚠️ Failed to store in memory: ${error.message}`);
|
|
38
|
+
*/ async storeInMemory(key, data) {
|
|
39
|
+
try {
|
|
40
|
+
const memoryKey = `${this.options.namespace}_${key}`;
|
|
41
|
+
const memoryData = JSON.stringify(data);
|
|
42
|
+
// Store in local memory
|
|
43
|
+
this.memory[key] = data;
|
|
44
|
+
// Store in swarm memory if enabled
|
|
45
|
+
if (this.options.swarmEnabled) {
|
|
46
|
+
await this.storeInSwarmMemory(memoryKey, memoryData);
|
|
47
|
+
}
|
|
48
|
+
console.log(`💾 Stored in memory: ${memoryKey}`);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.warn(`⚠️ Failed to store in memory: ${error.message}`);
|
|
51
|
+
}
|
|
77
52
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
/**
|
|
53
|
+
/**
|
|
81
54
|
* Retrieve data from memory system
|
|
82
|
-
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
} catch (error) {
|
|
99
|
-
console.warn(`⚠️ Failed to retrieve from memory: ${error.message}`);
|
|
100
|
-
return null;
|
|
55
|
+
*/ async retrieveFromMemory(key) {
|
|
56
|
+
try {
|
|
57
|
+
const memoryKey = `${this.options.namespace}_${key}`;
|
|
58
|
+
// Try local memory first
|
|
59
|
+
if (this.memory[key]) {
|
|
60
|
+
return this.memory[key];
|
|
61
|
+
}
|
|
62
|
+
// Try swarm memory if enabled
|
|
63
|
+
if (this.options.swarmEnabled) {
|
|
64
|
+
return await this.retrieveFromSwarmMemory(memoryKey);
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
} catch (error) {
|
|
68
|
+
console.warn(`⚠️ Failed to retrieve from memory: ${error.message}`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
101
71
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
/**
|
|
72
|
+
/**
|
|
105
73
|
* Store data in swarm memory
|
|
106
|
-
*/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
74
|
+
*/ async storeInSwarmMemory(key, data) {
|
|
75
|
+
if (!this.options.swarmEnabled) return;
|
|
76
|
+
try {
|
|
77
|
+
// Use ruv-swarm memory hooks
|
|
78
|
+
const { spawn } = await import("child_process");
|
|
79
|
+
return new Promise((resolve, reject)=>{
|
|
80
|
+
const process1 = spawn('npx', [
|
|
81
|
+
'ruv-swarm',
|
|
82
|
+
'hook',
|
|
83
|
+
'memory-store',
|
|
84
|
+
'--key',
|
|
85
|
+
key,
|
|
86
|
+
'--data',
|
|
87
|
+
data
|
|
88
|
+
], {
|
|
89
|
+
stdio: 'pipe'
|
|
90
|
+
});
|
|
91
|
+
let output = '';
|
|
92
|
+
process1.stdout.on('data', (data)=>{
|
|
93
|
+
output += data.toString();
|
|
94
|
+
});
|
|
95
|
+
process1.on('close', (code)=>{
|
|
96
|
+
if (code === 0) {
|
|
97
|
+
resolve(output);
|
|
98
|
+
} else {
|
|
99
|
+
reject(new Error(`Memory store failed with code ${code}`));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
} catch (error) {
|
|
104
|
+
console.warn(`⚠️ Failed to store in swarm memory: ${error.message}`);
|
|
105
|
+
}
|
|
138
106
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
/**
|
|
107
|
+
/**
|
|
142
108
|
* Retrieve data from swarm memory
|
|
143
|
-
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
109
|
+
*/ async retrieveFromSwarmMemory(key) {
|
|
110
|
+
if (!this.options.swarmEnabled) return null;
|
|
111
|
+
try {
|
|
112
|
+
const { spawn } = await import("child_process");
|
|
113
|
+
return new Promise((resolve, reject)=>{
|
|
114
|
+
const process1 = spawn('npx', [
|
|
115
|
+
'ruv-swarm',
|
|
116
|
+
'hook',
|
|
117
|
+
'memory-retrieve',
|
|
118
|
+
'--key',
|
|
119
|
+
key
|
|
120
|
+
], {
|
|
121
|
+
stdio: 'pipe'
|
|
122
|
+
});
|
|
123
|
+
let output = '';
|
|
124
|
+
process1.stdout.on('data', (data)=>{
|
|
125
|
+
output += data.toString();
|
|
126
|
+
});
|
|
127
|
+
process1.on('close', (code)=>{
|
|
128
|
+
if (code === 0) {
|
|
129
|
+
try {
|
|
130
|
+
const data = JSON.parse(output);
|
|
131
|
+
resolve(data);
|
|
132
|
+
} catch (parseError) {
|
|
133
|
+
resolve(null);
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
resolve(null);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
} catch (error) {
|
|
141
|
+
console.warn(`⚠️ Failed to retrieve from swarm memory: ${error.message}`);
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
176
144
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
/**
|
|
145
|
+
/**
|
|
180
146
|
* Load swarm context
|
|
181
|
-
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
} catch (error) {
|
|
191
|
-
console.warn(`⚠️ Failed to load swarm context: ${error.message}`);
|
|
147
|
+
*/ async loadSwarmContext() {
|
|
148
|
+
try {
|
|
149
|
+
this.swarmContext = await this.retrieveFromSwarmMemory(`${this.options.namespace}_swarm_context`);
|
|
150
|
+
if (this.swarmContext) {
|
|
151
|
+
console.log(`🐝 Loaded swarm context for ${this.phaseName}`);
|
|
152
|
+
}
|
|
153
|
+
} catch (error) {
|
|
154
|
+
console.warn(`⚠️ Failed to load swarm context: ${error.message}`);
|
|
155
|
+
}
|
|
192
156
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
/**
|
|
157
|
+
/**
|
|
196
158
|
* Update swarm context
|
|
197
|
-
*/
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
);
|
|
212
|
-
console.log(`🐝 Updated swarm context for ${this.phaseName}`);
|
|
213
|
-
} catch (error) {
|
|
214
|
-
console.warn(`⚠️ Failed to update swarm context: ${error.message}`);
|
|
159
|
+
*/ async updateSwarmContext() {
|
|
160
|
+
try {
|
|
161
|
+
const contextUpdate = {
|
|
162
|
+
phase: this.phaseName,
|
|
163
|
+
timestamp: Date.now(),
|
|
164
|
+
artifacts: this.artifacts,
|
|
165
|
+
memory: this.memory,
|
|
166
|
+
status: 'completed'
|
|
167
|
+
};
|
|
168
|
+
await this.storeInSwarmMemory(`${this.options.namespace}_swarm_context`, JSON.stringify(contextUpdate));
|
|
169
|
+
console.log(`🐝 Updated swarm context for ${this.phaseName}`);
|
|
170
|
+
} catch (error) {
|
|
171
|
+
console.warn(`⚠️ Failed to update swarm context: ${error.message}`);
|
|
172
|
+
}
|
|
215
173
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
/**
|
|
174
|
+
/**
|
|
219
175
|
* Save artifact to file system
|
|
220
|
-
*/
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
console.warn(`⚠️ Failed to save artifact: ${error.message}`);
|
|
242
|
-
return null;
|
|
176
|
+
*/ async saveArtifact(filename, content) {
|
|
177
|
+
try {
|
|
178
|
+
const fs = await import("node:fs/promises");
|
|
179
|
+
const path = await import("path");
|
|
180
|
+
const artifactDir = path.join(process.cwd(), 'sparc-artifacts', this.options.namespace);
|
|
181
|
+
await fs.mkdir(artifactDir, {
|
|
182
|
+
recursive: true
|
|
183
|
+
});
|
|
184
|
+
const filePath = path.join(artifactDir, filename);
|
|
185
|
+
await fs.writeFile(filePath, content, 'utf8');
|
|
186
|
+
this.artifacts.push({
|
|
187
|
+
filename,
|
|
188
|
+
path: filePath,
|
|
189
|
+
timestamp: Date.now()
|
|
190
|
+
});
|
|
191
|
+
console.log(`📄 Saved artifact: ${filename}`);
|
|
192
|
+
return filePath;
|
|
193
|
+
} catch (error) {
|
|
194
|
+
console.warn(`⚠️ Failed to save artifact: ${error.message}`);
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
243
197
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
/**
|
|
198
|
+
/**
|
|
247
199
|
* Load artifact from file system
|
|
248
|
-
*/
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
console.warn(`⚠️ Failed to load artifact: ${error.message}`);
|
|
261
|
-
return null;
|
|
200
|
+
*/ async loadArtifact(filename) {
|
|
201
|
+
try {
|
|
202
|
+
const fs = await import("node:fs/promises");
|
|
203
|
+
const path = await import("path");
|
|
204
|
+
const artifactDir = path.join(process.cwd(), 'sparc-artifacts', this.options.namespace);
|
|
205
|
+
const filePath = path.join(artifactDir, filename);
|
|
206
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
207
|
+
return content;
|
|
208
|
+
} catch (error) {
|
|
209
|
+
console.warn(`⚠️ Failed to load artifact: ${error.message}`);
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
262
212
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
/**
|
|
213
|
+
/**
|
|
266
214
|
* Set remediation context for quality gate failures
|
|
267
|
-
*/
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
215
|
+
*/ setRemediationContext(qualityGate) {
|
|
216
|
+
this.remediationContext = qualityGate;
|
|
217
|
+
console.log(`🔧 Set remediation context for ${this.phaseName}: ${qualityGate.reasons.join(', ')}`);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
276
220
|
* Get phase metrics
|
|
277
|
-
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
/**
|
|
221
|
+
*/ getMetrics() {
|
|
222
|
+
return {
|
|
223
|
+
phaseName: this.phaseName,
|
|
224
|
+
duration: this.endTime ? this.endTime - this.startTime : null,
|
|
225
|
+
artifactsCount: this.artifacts.length,
|
|
226
|
+
memoryKeys: Object.keys(this.memory).length,
|
|
227
|
+
hasSwarmContext: !!this.swarmContext,
|
|
228
|
+
hasRemediationContext: !!this.remediationContext
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
290
232
|
* Validate phase prerequisites
|
|
291
|
-
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
233
|
+
*/ async validatePrerequisites() {
|
|
234
|
+
// Base validation - override in subclasses
|
|
235
|
+
return {
|
|
236
|
+
valid: true,
|
|
237
|
+
reasons: []
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
298
241
|
* Execute phase - must be implemented by subclasses
|
|
299
|
-
*/
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
/**
|
|
242
|
+
*/ async execute() {
|
|
243
|
+
throw new Error(`Execute method must be implemented by ${this.phaseName} phase`);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
305
246
|
* Get phase status
|
|
306
|
-
*/
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
/**
|
|
247
|
+
*/ getStatus() {
|
|
248
|
+
return {
|
|
249
|
+
phase: this.phaseName,
|
|
250
|
+
started: !!this.startTime,
|
|
251
|
+
completed: !!this.endTime,
|
|
252
|
+
duration: this.endTime ? this.endTime - this.startTime : null,
|
|
253
|
+
artifacts: this.artifacts.length,
|
|
254
|
+
hasContext: !!this.swarmContext,
|
|
255
|
+
hasRemediation: !!this.remediationContext
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
320
259
|
* Neural learning hook
|
|
321
|
-
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
JSON.stringify(learningRecord),
|
|
344
|
-
);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
console.log(`🧠 Recorded learning for ${this.phaseName}`);
|
|
348
|
-
} catch (error) {
|
|
349
|
-
console.warn(`⚠️ Failed to record learning: ${error.message}`);
|
|
260
|
+
*/ async recordLearning(learningData) {
|
|
261
|
+
if (!this.options.neuralLearning) return;
|
|
262
|
+
try {
|
|
263
|
+
const learningRecord = {
|
|
264
|
+
phase: this.phaseName,
|
|
265
|
+
timestamp: Date.now(),
|
|
266
|
+
data: learningData,
|
|
267
|
+
context: {
|
|
268
|
+
task: this.taskDescription,
|
|
269
|
+
options: this.options,
|
|
270
|
+
metrics: this.getMetrics()
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
await this.storeInMemory(`learning_${Date.now()}`, learningRecord);
|
|
274
|
+
// Store in neural learning system if available
|
|
275
|
+
if (this.options.swarmEnabled) {
|
|
276
|
+
await this.storeInSwarmMemory(`neural_learning_${this.phaseName}`, JSON.stringify(learningRecord));
|
|
277
|
+
}
|
|
278
|
+
console.log(`🧠 Recorded learning for ${this.phaseName}`);
|
|
279
|
+
} catch (error) {
|
|
280
|
+
console.warn(`⚠️ Failed to record learning: ${error.message}`);
|
|
281
|
+
}
|
|
350
282
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
/**
|
|
283
|
+
/**
|
|
354
284
|
* Get learning insights
|
|
355
|
-
*/
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
285
|
+
*/ async getLearningInsights() {
|
|
286
|
+
if (!this.options.neuralLearning) return [];
|
|
287
|
+
try {
|
|
288
|
+
const insights = [];
|
|
289
|
+
// Analyze previous executions
|
|
290
|
+
const learningKeys = Object.keys(this.memory).filter((key)=>key.startsWith('learning_'));
|
|
291
|
+
for (const key of learningKeys){
|
|
292
|
+
const record = this.memory[key];
|
|
293
|
+
if (record && record.phase === this.phaseName) {
|
|
294
|
+
insights.push({
|
|
295
|
+
timestamp: record.timestamp,
|
|
296
|
+
insight: this.generateInsight(record),
|
|
297
|
+
confidence: this.calculateConfidence(record)
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return insights;
|
|
302
|
+
} catch (error) {
|
|
303
|
+
console.warn(`⚠️ Failed to get learning insights: ${error.message}`);
|
|
304
|
+
return [];
|
|
373
305
|
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
return insights;
|
|
377
|
-
} catch (error) {
|
|
378
|
-
console.warn(`⚠️ Failed to get learning insights: ${error.message}`);
|
|
379
|
-
return [];
|
|
380
306
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
/**
|
|
307
|
+
/**
|
|
384
308
|
* Generate insight from learning record
|
|
385
|
-
*/
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
/**
|
|
309
|
+
*/ generateInsight(record) {
|
|
310
|
+
// Basic insight generation - can be enhanced with ML
|
|
311
|
+
const patterns = this.identifyPatterns(record);
|
|
312
|
+
return `Pattern identified: ${patterns.join(', ')}`;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
393
315
|
* Calculate confidence score
|
|
394
|
-
*/
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
return (recencyScore + successScore) / 2;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
/**
|
|
405
|
-
* Identify patterns in learning data
|
|
406
|
-
*/
|
|
407
|
-
identifyPatterns(record) {
|
|
408
|
-
const patterns = [];
|
|
409
|
-
|
|
410
|
-
if (record.data.duration) {
|
|
411
|
-
if (record.data.duration > 60000) {
|
|
412
|
-
patterns.push('Long execution time');
|
|
413
|
-
} else if (record.data.duration < 10000) {
|
|
414
|
-
patterns.push('Fast execution');
|
|
415
|
-
}
|
|
316
|
+
*/ calculateConfidence(record) {
|
|
317
|
+
// Simple confidence calculation based on recency and success
|
|
318
|
+
const age = Date.now() - record.timestamp;
|
|
319
|
+
const recencyScore = Math.max(0, 1 - age / (24 * 60 * 60 * 1000)); // Decay over 24 hours
|
|
320
|
+
const successScore = record.data.success ? 1 : 0.5;
|
|
321
|
+
return (recencyScore + successScore) / 2;
|
|
416
322
|
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
323
|
+
/**
|
|
324
|
+
* Identify patterns in learning data
|
|
325
|
+
*/ identifyPatterns(record) {
|
|
326
|
+
const patterns = [];
|
|
327
|
+
if (record.data.duration) {
|
|
328
|
+
if (record.data.duration > 60000) {
|
|
329
|
+
patterns.push('Long execution time');
|
|
330
|
+
} else if (record.data.duration < 10000) {
|
|
331
|
+
patterns.push('Fast execution');
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (record.data.errors && record.data.errors.length > 0) {
|
|
335
|
+
patterns.push('Error prone');
|
|
336
|
+
}
|
|
337
|
+
if (record.data.qualityGate && !record.data.qualityGate.passed) {
|
|
338
|
+
patterns.push('Quality gate failures');
|
|
339
|
+
}
|
|
340
|
+
return patterns;
|
|
420
341
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
342
|
+
constructor(phaseName, taskDescription, options = {}){
|
|
343
|
+
this.phaseName = phaseName;
|
|
344
|
+
this.taskDescription = taskDescription;
|
|
345
|
+
this.options = options;
|
|
346
|
+
this.startTime = null;
|
|
347
|
+
this.endTime = null;
|
|
348
|
+
this.artifacts = [];
|
|
349
|
+
this.memory = {};
|
|
350
|
+
this.swarmContext = null;
|
|
351
|
+
this.remediationContext = null;
|
|
424
352
|
}
|
|
425
|
-
|
|
426
|
-
return patterns;
|
|
427
|
-
}
|
|
428
353
|
}
|
|
429
|
-
|
|
430
354
|
export default SparcPhase;
|