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,345 +1,281 @@
|
|
|
1
1
|
// memory.js - Memory management commands
|
|
2
|
-
import { printSuccess, printError, printWarning
|
|
3
|
-
import { promises as fs } from
|
|
4
|
-
import { cwd, exit, existsSync } from '../node-compat.js';
|
|
5
|
-
import { getUnifiedMemory } from '../../memory/unified-memory-manager.js';
|
|
6
|
-
|
|
2
|
+
import { printSuccess, printError, printWarning } from "../utils.js";
|
|
3
|
+
import { promises as fs } from "fs";
|
|
7
4
|
export async function memoryCommand(subArgs, flags) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
const memorySubcommand = subArgs[0];
|
|
6
|
+
const memoryStore = './memory/memory-store.json';
|
|
7
|
+
// Extract namespace from flags or subArgs
|
|
8
|
+
const namespace = flags?.namespace || flags?.ns || getNamespaceFromArgs(subArgs) || 'default';
|
|
9
|
+
// Helper to load memory data
|
|
10
|
+
async function loadMemory() {
|
|
11
|
+
try {
|
|
12
|
+
const content = await fs.readFile(memoryStore, 'utf8');
|
|
13
|
+
return JSON.parse(content);
|
|
14
|
+
} catch {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Helper to save memory data
|
|
19
|
+
async function saveMemory(data) {
|
|
20
|
+
await fs.mkdir('./memory', {
|
|
21
|
+
recursive: true
|
|
22
|
+
});
|
|
23
|
+
await fs.writeFile(memoryStore, JSON.stringify(data, null, 2, 'utf8'));
|
|
24
|
+
}
|
|
25
|
+
switch(memorySubcommand){
|
|
26
|
+
case 'store':
|
|
27
|
+
await storeMemory(subArgs, loadMemory, saveMemory, namespace);
|
|
28
|
+
break;
|
|
29
|
+
case 'query':
|
|
30
|
+
await queryMemory(subArgs, loadMemory, namespace);
|
|
31
|
+
break;
|
|
32
|
+
case 'stats':
|
|
33
|
+
await showMemoryStats(loadMemory);
|
|
34
|
+
break;
|
|
35
|
+
case 'export':
|
|
36
|
+
await exportMemory(subArgs, loadMemory, namespace);
|
|
37
|
+
break;
|
|
38
|
+
case 'import':
|
|
39
|
+
await importMemory(subArgs, saveMemory, loadMemory);
|
|
40
|
+
break;
|
|
41
|
+
case 'clear':
|
|
42
|
+
await clearMemory(subArgs, saveMemory, namespace);
|
|
43
|
+
break;
|
|
44
|
+
case 'list':
|
|
45
|
+
await listNamespaces(loadMemory);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
showMemoryHelp();
|
|
21
49
|
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Helper to save memory data
|
|
25
|
-
async function saveMemory(data) {
|
|
26
|
-
await fs.mkdir('./memory', { recursive: true });
|
|
27
|
-
await fs.writeFile(memoryStore, JSON.stringify(data, null, 2, 'utf8'));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
switch (memorySubcommand) {
|
|
31
|
-
case 'store':
|
|
32
|
-
await storeMemory(subArgs, loadMemory, saveMemory, namespace);
|
|
33
|
-
break;
|
|
34
|
-
|
|
35
|
-
case 'query':
|
|
36
|
-
await queryMemory(subArgs, loadMemory, namespace);
|
|
37
|
-
break;
|
|
38
|
-
|
|
39
|
-
case 'stats':
|
|
40
|
-
await showMemoryStats(loadMemory);
|
|
41
|
-
break;
|
|
42
|
-
|
|
43
|
-
case 'export':
|
|
44
|
-
await exportMemory(subArgs, loadMemory, namespace);
|
|
45
|
-
break;
|
|
46
|
-
|
|
47
|
-
case 'import':
|
|
48
|
-
await importMemory(subArgs, saveMemory, loadMemory);
|
|
49
|
-
break;
|
|
50
|
-
|
|
51
|
-
case 'clear':
|
|
52
|
-
await clearMemory(subArgs, saveMemory, namespace);
|
|
53
|
-
break;
|
|
54
|
-
|
|
55
|
-
case 'list':
|
|
56
|
-
await listNamespaces(loadMemory);
|
|
57
|
-
break;
|
|
58
|
-
|
|
59
|
-
default:
|
|
60
|
-
showMemoryHelp();
|
|
61
|
-
}
|
|
62
50
|
}
|
|
63
|
-
|
|
64
51
|
async function storeMemory(subArgs, loadMemory, saveMemory, namespace) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
const data = await loadMemory();
|
|
75
|
-
|
|
76
|
-
if (!data[namespace]) {
|
|
77
|
-
data[namespace] = [];
|
|
52
|
+
const key = subArgs[1];
|
|
53
|
+
const value = subArgs.slice(2).join(' ');
|
|
54
|
+
if (!key || !value) {
|
|
55
|
+
printError('Usage: memory store <key> <value> [--namespace <ns>]');
|
|
56
|
+
return;
|
|
78
57
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// Add new entry
|
|
84
|
-
data[namespace].push({
|
|
85
|
-
key,
|
|
86
|
-
value,
|
|
87
|
-
namespace,
|
|
88
|
-
timestamp: Date.now(),
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
await saveMemory(data);
|
|
92
|
-
printSuccess('Stored successfully');
|
|
93
|
-
console.log(`📝 Key: ${key}`);
|
|
94
|
-
console.log(`📦 Namespace: ${namespace}`);
|
|
95
|
-
console.log(`💾 Size: ${new TextEncoder().encode(value).length} bytes`);
|
|
96
|
-
} catch (err) {
|
|
97
|
-
printError(`Failed to store: ${err.message}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async function queryMemory(subArgs, loadMemory, namespace) {
|
|
102
|
-
const search = subArgs.slice(1).join(' ');
|
|
103
|
-
|
|
104
|
-
if (!search) {
|
|
105
|
-
printError('Usage: memory query <search> [--namespace <ns>]');
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
try {
|
|
110
|
-
const data = await loadMemory();
|
|
111
|
-
const results = [];
|
|
112
|
-
|
|
113
|
-
for (const [ns, entries] of Object.entries(data)) {
|
|
114
|
-
if (namespace && ns !== namespace) continue;
|
|
115
|
-
|
|
116
|
-
for (const entry of entries) {
|
|
117
|
-
if (entry.key.includes(search) || entry.value.includes(search)) {
|
|
118
|
-
results.push(entry);
|
|
58
|
+
try {
|
|
59
|
+
const data = await loadMemory();
|
|
60
|
+
if (!data[namespace]) {
|
|
61
|
+
data[namespace] = [];
|
|
119
62
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
63
|
+
// Remove existing entry with same key
|
|
64
|
+
data[namespace] = data[namespace].filter((e)=>e.key !== key);
|
|
65
|
+
// Add new entry
|
|
66
|
+
data[namespace].push({
|
|
67
|
+
key,
|
|
68
|
+
value,
|
|
69
|
+
namespace,
|
|
70
|
+
timestamp: Date.now()
|
|
71
|
+
});
|
|
72
|
+
await saveMemory(data);
|
|
73
|
+
printSuccess('Stored successfully');
|
|
74
|
+
console.log(`📝 Key: ${key}`);
|
|
75
|
+
console.log(`📦 Namespace: ${namespace}`);
|
|
76
|
+
console.log(`💾 Size: ${new TextEncoder().encode(value).length} bytes`);
|
|
77
|
+
} catch (err) {
|
|
78
|
+
printError(`Failed to store: ${err.message}`);
|
|
126
79
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
for (const entry of results.slice(0, 10)) {
|
|
134
|
-
console.log(`\n📌 ${entry.key}`);
|
|
135
|
-
console.log(` Namespace: ${entry.namespace}`);
|
|
136
|
-
console.log(
|
|
137
|
-
` Value: ${entry.value.substring(0, 100)}${entry.value.length > 100 ? '...' : ''}`,
|
|
138
|
-
);
|
|
139
|
-
console.log(` Stored: ${new Date(entry.timestamp).toLocaleString()}`);
|
|
80
|
+
}
|
|
81
|
+
async function queryMemory(subArgs, loadMemory, namespace) {
|
|
82
|
+
const search = subArgs.slice(1).join(' ');
|
|
83
|
+
if (!search) {
|
|
84
|
+
printError('Usage: memory query <search> [--namespace <ns>]');
|
|
85
|
+
return;
|
|
140
86
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
87
|
+
try {
|
|
88
|
+
const data = await loadMemory();
|
|
89
|
+
const results = [];
|
|
90
|
+
for (const [ns, entries] of Object.entries(data)){
|
|
91
|
+
if (namespace && ns !== namespace) continue;
|
|
92
|
+
for (const entry of entries){
|
|
93
|
+
if (entry.key.includes(search) || entry.value.includes(search)) {
|
|
94
|
+
results.push(entry);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (results.length === 0) {
|
|
99
|
+
printWarning('No results found');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
printSuccess(`Found ${results.length} results:`);
|
|
103
|
+
// Sort by timestamp (newest first)
|
|
104
|
+
results.sort((a, b)=>b.timestamp - a.timestamp);
|
|
105
|
+
for (const entry of results.slice(0, 10)){
|
|
106
|
+
console.log(`\n📌 ${entry.key}`);
|
|
107
|
+
console.log(` Namespace: ${entry.namespace}`);
|
|
108
|
+
console.log(` Value: ${entry.value.substring(0, 100)}${entry.value.length > 100 ? '...' : ''}`);
|
|
109
|
+
console.log(` Stored: ${new Date(entry.timestamp).toLocaleString()}`);
|
|
110
|
+
}
|
|
111
|
+
if (results.length > 10) {
|
|
112
|
+
console.log(`\n... and ${results.length - 10} more results`);
|
|
113
|
+
}
|
|
114
|
+
} catch (err) {
|
|
115
|
+
printError(`Failed to query: ${err.message}`);
|
|
144
116
|
}
|
|
145
|
-
} catch (err) {
|
|
146
|
-
printError(`Failed to query: ${err.message}`);
|
|
147
|
-
}
|
|
148
117
|
}
|
|
149
|
-
|
|
150
118
|
async function showMemoryStats(loadMemory) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
console.log(` ${namespace}: ${count} entries`);
|
|
172
|
-
}
|
|
119
|
+
try {
|
|
120
|
+
const data = await loadMemory();
|
|
121
|
+
let totalEntries = 0;
|
|
122
|
+
const namespaceStats = {};
|
|
123
|
+
for (const [namespace, entries] of Object.entries(data)){
|
|
124
|
+
namespaceStats[namespace] = entries.length;
|
|
125
|
+
totalEntries += entries.length;
|
|
126
|
+
}
|
|
127
|
+
printSuccess('Memory Bank Statistics:');
|
|
128
|
+
console.log(` Total Entries: ${totalEntries}`);
|
|
129
|
+
console.log(` Namespaces: ${Object.keys(data).length}`);
|
|
130
|
+
console.log(` Size: ${(new TextEncoder().encode(JSON.stringify(data)).length / 1024).toFixed(2)} KB`);
|
|
131
|
+
if (Object.keys(data).length > 0) {
|
|
132
|
+
console.log('\n📁 Namespace Breakdown:');
|
|
133
|
+
for (const [namespace, count] of Object.entries(namespaceStats)){
|
|
134
|
+
console.log(` ${namespace}: ${count} entries`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
} catch (err) {
|
|
138
|
+
printError(`Failed to get stats: ${err.message}`);
|
|
173
139
|
}
|
|
174
|
-
} catch (err) {
|
|
175
|
-
printError(`Failed to get stats: ${err.message}`);
|
|
176
|
-
}
|
|
177
140
|
}
|
|
178
|
-
|
|
179
141
|
async function exportMemory(subArgs, loadMemory, namespace) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
142
|
+
const filename = subArgs[1] || `memory-export-${Date.now()}.json`;
|
|
143
|
+
try {
|
|
144
|
+
const data = await loadMemory();
|
|
145
|
+
let exportData = data;
|
|
146
|
+
if (namespace) {
|
|
147
|
+
exportData = {
|
|
148
|
+
[namespace]: data[namespace] || []
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
await fs.writeFile(filename, JSON.stringify(exportData, null, 2, 'utf8'));
|
|
152
|
+
printSuccess(`Memory exported to ${filename}`);
|
|
153
|
+
let totalEntries = 0;
|
|
154
|
+
for (const entries of Object.values(exportData)){
|
|
155
|
+
totalEntries += entries.length;
|
|
156
|
+
}
|
|
157
|
+
console.log(`📦 Exported ${totalEntries} entries from ${Object.keys(exportData).length} namespace(s)`);
|
|
158
|
+
} catch (err) {
|
|
159
|
+
printError(`Failed to export memory: ${err.message}`);
|
|
196
160
|
}
|
|
197
|
-
console.log(
|
|
198
|
-
`📦 Exported ${totalEntries} entries from ${Object.keys(exportData).length} namespace(s)`,
|
|
199
|
-
);
|
|
200
|
-
} catch (err) {
|
|
201
|
-
printError(`Failed to export memory: ${err.message}`);
|
|
202
|
-
}
|
|
203
161
|
}
|
|
204
|
-
|
|
205
162
|
async function importMemory(subArgs, saveMemory, loadMemory) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
totalImported += newEntries.length;
|
|
163
|
+
const filename = subArgs[1];
|
|
164
|
+
if (!filename) {
|
|
165
|
+
printError('Usage: memory import <filename>');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
const importContent = await fs.readFile(filename, 'utf8');
|
|
170
|
+
const importData = JSON.parse(importContent);
|
|
171
|
+
// Load existing memory
|
|
172
|
+
const existingData = await loadMemory();
|
|
173
|
+
// Merge imported data
|
|
174
|
+
let totalImported = 0;
|
|
175
|
+
for (const [namespace, entries] of Object.entries(importData)){
|
|
176
|
+
if (!existingData[namespace]) {
|
|
177
|
+
existingData[namespace] = [];
|
|
178
|
+
}
|
|
179
|
+
// Add entries that don't already exist (by key)
|
|
180
|
+
const existingKeys = new Set(existingData[namespace].map((e)=>e.key));
|
|
181
|
+
const newEntries = entries.filter((e)=>!existingKeys.has(e.key));
|
|
182
|
+
existingData[namespace].push(...newEntries);
|
|
183
|
+
totalImported += newEntries.length;
|
|
184
|
+
}
|
|
185
|
+
await saveMemory(existingData);
|
|
186
|
+
printSuccess(`Imported ${totalImported} new entries from ${filename}`);
|
|
187
|
+
} catch (err) {
|
|
188
|
+
printError(`Failed to import memory: ${err.message}`);
|
|
233
189
|
}
|
|
234
|
-
|
|
235
|
-
await saveMemory(existingData);
|
|
236
|
-
printSuccess(`Imported ${totalImported} new entries from ${filename}`);
|
|
237
|
-
} catch (err) {
|
|
238
|
-
printError(`Failed to import memory: ${err.message}`);
|
|
239
|
-
}
|
|
240
190
|
}
|
|
241
|
-
|
|
242
191
|
async function clearMemory(subArgs, saveMemory, namespace) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
try {
|
|
254
|
-
// Helper to load memory data
|
|
255
|
-
async function loadMemory() {
|
|
256
|
-
try {
|
|
257
|
-
const content = await fs.readFile('./memory/memory-store.json', 'utf8');
|
|
258
|
-
return JSON.parse(content);
|
|
259
|
-
} catch {
|
|
260
|
-
return {};
|
|
261
|
-
}
|
|
192
|
+
if (!namespace || namespace === 'default') {
|
|
193
|
+
const nsFromArgs = getNamespaceFromArgs(subArgs);
|
|
194
|
+
if (!nsFromArgs) {
|
|
195
|
+
printError('Usage: memory clear --namespace <namespace>');
|
|
196
|
+
printWarning('This will clear all entries in the specified namespace');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
namespace = nsFromArgs;
|
|
262
200
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
201
|
+
try {
|
|
202
|
+
// Helper to load memory data
|
|
203
|
+
async function loadMemory() {
|
|
204
|
+
try {
|
|
205
|
+
const content = await fs.readFile('./memory/memory-store.json', 'utf8');
|
|
206
|
+
return JSON.parse(content);
|
|
207
|
+
} catch {
|
|
208
|
+
return {};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const data = await loadMemory();
|
|
212
|
+
if (!data[namespace]) {
|
|
213
|
+
printWarning(`Namespace '${namespace}' does not exist`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const entryCount = data[namespace].length;
|
|
217
|
+
delete data[namespace];
|
|
218
|
+
await saveMemory(data);
|
|
219
|
+
printSuccess(`Cleared ${entryCount} entries from namespace '${namespace}'`);
|
|
220
|
+
} catch (err) {
|
|
221
|
+
printError(`Failed to clear memory: ${err.message}`);
|
|
269
222
|
}
|
|
270
|
-
|
|
271
|
-
const entryCount = data[namespace].length;
|
|
272
|
-
delete data[namespace];
|
|
273
|
-
|
|
274
|
-
await saveMemory(data);
|
|
275
|
-
printSuccess(`Cleared ${entryCount} entries from namespace '${namespace}'`);
|
|
276
|
-
} catch (err) {
|
|
277
|
-
printError(`Failed to clear memory: ${err.message}`);
|
|
278
|
-
}
|
|
279
223
|
}
|
|
280
|
-
|
|
281
224
|
async function listNamespaces(loadMemory) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
225
|
+
try {
|
|
226
|
+
const data = await loadMemory();
|
|
227
|
+
const namespaces = Object.keys(data);
|
|
228
|
+
if (namespaces.length === 0) {
|
|
229
|
+
printWarning('No namespaces found');
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
printSuccess('Available namespaces:');
|
|
233
|
+
for (const namespace of namespaces){
|
|
234
|
+
const count = data[namespace].length;
|
|
235
|
+
console.log(` ${namespace} (${count} entries)`);
|
|
236
|
+
}
|
|
237
|
+
} catch (err) {
|
|
238
|
+
printError(`Failed to list namespaces: ${err.message}`);
|
|
295
239
|
}
|
|
296
|
-
} catch (err) {
|
|
297
|
-
printError(`Failed to list namespaces: ${err.message}`);
|
|
298
|
-
}
|
|
299
240
|
}
|
|
300
|
-
|
|
301
241
|
function getNamespaceFromArgs(subArgs) {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
return null;
|
|
242
|
+
const namespaceIndex = subArgs.indexOf('--namespace');
|
|
243
|
+
if (namespaceIndex !== -1 && namespaceIndex + 1 < subArgs.length) {
|
|
244
|
+
return subArgs[namespaceIndex + 1];
|
|
245
|
+
}
|
|
246
|
+
const nsIndex = subArgs.indexOf('--ns');
|
|
247
|
+
if (nsIndex !== -1 && nsIndex + 1 < subArgs.length) {
|
|
248
|
+
return subArgs[nsIndex + 1];
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
313
251
|
}
|
|
314
|
-
|
|
315
252
|
// Helper to load memory data (needed for import function)
|
|
316
253
|
async function loadMemory() {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
254
|
+
try {
|
|
255
|
+
const content = await fs.readFile('./memory/memory-store.json', 'utf8');
|
|
256
|
+
return JSON.parse(content);
|
|
257
|
+
} catch {
|
|
258
|
+
return {};
|
|
259
|
+
}
|
|
323
260
|
}
|
|
324
|
-
|
|
325
261
|
function showMemoryHelp() {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
262
|
+
console.log('Memory commands:');
|
|
263
|
+
console.log(' store <key> <value> Store a key-value pair');
|
|
264
|
+
console.log(' query <search> Search for entries');
|
|
265
|
+
console.log(' stats Show memory statistics');
|
|
266
|
+
console.log(' export [filename] Export memory to file');
|
|
267
|
+
console.log(' import <filename> Import memory from file');
|
|
268
|
+
console.log(' clear --namespace <ns> Clear a namespace');
|
|
269
|
+
console.log(' list List all namespaces');
|
|
270
|
+
console.log();
|
|
271
|
+
console.log('Options:');
|
|
272
|
+
console.log(' --namespace <ns> Specify namespace for operations');
|
|
273
|
+
console.log(' --ns <ns> Short form of --namespace');
|
|
274
|
+
console.log();
|
|
275
|
+
console.log('Examples:');
|
|
276
|
+
console.log(' memory store previous_work "Research findings from yesterday"');
|
|
277
|
+
console.log(' memory query research --namespace sparc');
|
|
278
|
+
console.log(' memory export backup.json --namespace default');
|
|
279
|
+
console.log(' memory import project-memory.json');
|
|
280
|
+
console.log(' memory stats');
|
|
345
281
|
}
|