@sparkleideas/cli 3.1.0-alpha.66 → 3.5.15-patch.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/core/coder.md +1 -1
- package/.claude/agents/core/planner.md +2 -2
- package/.claude/agents/core/researcher.md +1 -1
- package/.claude/agents/core/reviewer.md +1 -1
- package/.claude/agents/core/tester.md +1 -1
- package/.claude/agents/data/data-ml-model.md +4 -4
- package/.claude/agents/development/dev-backend-api.md +4 -4
- package/.claude/agents/documentation/docs-api-openapi.md +4 -4
- package/.claude/agents/github/code-review-swarm.md +2 -2
- package/.claude/agents/github/issue-tracker.md +2 -2
- package/.claude/agents/github/pr-manager.md +2 -2
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/agents/sparc/architecture.md +3 -3
- package/.claude/agents/sparc/pseudocode.md +2 -2
- package/.claude/agents/sparc/refinement.md +3 -3
- package/.claude/agents/sparc/specification.md +2 -2
- package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
- package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
- package/.claude/agents/swarm/mesh-coordinator.md +1 -1
- package/.claude/agents/templates/base-template-generator.md +3 -3
- package/.claude/agents/templates/sparc-coordinator.md +3 -3
- package/.claude/helpers/auto-memory-hook.mjs +365 -0
- package/.claude/helpers/hook-handler.cjs +271 -0
- package/.claude/helpers/intelligence.cjs +916 -0
- package/.claude/helpers/learning-service.mjs +3 -3
- package/.claude/helpers/session.js +8 -0
- package/.claude/helpers/statusline.cjs +96 -28
- package/.claude/settings.json +86 -141
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/README.md +952 -481
- package/bin/preinstall.cjs +2 -0
- package/dist/src/appliance/gguf-engine.d.ts +91 -0
- package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
- package/dist/src/appliance/gguf-engine.js +425 -0
- package/dist/src/appliance/gguf-engine.js.map +1 -0
- package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
- package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
- package/dist/src/appliance/ruvllm-bridge.js +292 -0
- package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
- package/dist/src/appliance/rvfa-builder.d.ts +44 -0
- package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-builder.js +329 -0
- package/dist/src/appliance/rvfa-builder.js.map +1 -0
- package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
- package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-distribution.js +370 -0
- package/dist/src/appliance/rvfa-distribution.js.map +1 -0
- package/dist/src/appliance/rvfa-format.d.ts +111 -0
- package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-format.js +393 -0
- package/dist/src/appliance/rvfa-format.js.map +1 -0
- package/dist/src/appliance/rvfa-runner.d.ts +69 -0
- package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-runner.js +237 -0
- package/dist/src/appliance/rvfa-runner.js.map +1 -0
- package/dist/src/appliance/rvfa-signing.d.ts +123 -0
- package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
- package/dist/src/appliance/rvfa-signing.js +347 -0
- package/dist/src/appliance/rvfa-signing.js.map +1 -0
- package/dist/src/commands/appliance-advanced.d.ts +9 -0
- package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
- package/dist/src/commands/appliance-advanced.js +215 -0
- package/dist/src/commands/appliance-advanced.js.map +1 -0
- package/dist/src/commands/appliance.d.ts +8 -0
- package/dist/src/commands/appliance.d.ts.map +1 -0
- package/dist/src/commands/appliance.js +406 -0
- package/dist/src/commands/appliance.js.map +1 -0
- package/dist/src/commands/benchmark.js +2 -2
- package/dist/src/commands/benchmark.js.map +1 -1
- package/dist/src/commands/claims.js +1 -1
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/config.js +1 -1
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +28 -12
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deployment.js +1 -1
- package/dist/src/commands/deployment.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +76 -45
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.js +1 -1
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +84 -81
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +7 -2
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +11 -2
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +29 -34
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +18 -3
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +25 -1
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/neural.js +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.js +1 -1
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/plugins.js +1 -1
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/providers.js +1 -1
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/security.js +1 -1
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/start.js +11 -11
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +12 -5
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/transfer-store.js +1 -1
- package/dist/src/commands/transfer-store.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +1 -1
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +230 -97
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts +18 -0
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +579 -12
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts +0 -1
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +33 -17
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +140 -137
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +16 -8
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +506 -930
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +8 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +8 -1
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +27 -1
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/agentdb-tools.js +557 -0
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +11 -1
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +1 -1
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +5 -5
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +1 -1
- package/dist/src/mcp-tools/github-tools.js +2 -2
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +205 -33
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +18 -1
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +32 -27
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +1 -1
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +109 -6
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +36 -0
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +91 -0
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +34 -6
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +407 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge.js +1494 -0
- package/dist/src/memory/memory-bridge.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +10 -1
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +182 -10
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +1 -0
- package/dist/src/output.js.map +1 -1
- package/dist/src/plugins/manager.d.ts.map +1 -1
- package/dist/src/plugins/manager.js +24 -7
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/plugins/store/discovery.js +1 -1
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/production/error-handler.js +1 -1
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/runtime/headless.js +3 -3
- package/dist/src/runtime/headless.js.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.js +25 -15
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
- package/dist/src/services/agentic-flow-bridge.js +95 -0
- package/dist/src/services/agentic-flow-bridge.js.map +1 -0
- package/dist/src/services/claim-service.js +1 -1
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/container-worker-pool.d.ts.map +1 -1
- package/dist/src/services/container-worker-pool.js +2 -0
- package/dist/src/services/container-worker-pool.js.map +1 -1
- package/dist/src/services/ruvector-training.d.ts +2 -1
- package/dist/src/services/ruvector-training.d.ts.map +1 -1
- package/dist/src/services/ruvector-training.js +1 -2
- package/dist/src/services/ruvector-training.js.map +1 -1
- package/dist/src/services/worker-queue.d.ts.map +1 -1
- package/dist/src/services/worker-queue.js +2 -0
- package/dist/src/services/worker-queue.js.map +1 -1
- package/dist/src/transfer/ipfs/client.d.ts.map +1 -1
- package/dist/src/transfer/ipfs/client.js +8 -0
- package/dist/src/transfer/ipfs/client.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
- package/dist/src/transfer/ipfs/upload.js +0 -2
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -1
- package/dist/src/transfer/serialization/cfp.js +8 -5
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
- package/dist/src/transfer/storage/gcs.js +49 -23
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.js +1 -1
- package/dist/src/update/validator.js +1 -1
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -13
|
@@ -512,12 +512,32 @@ export const hooksPostEdit = {
|
|
|
512
512
|
handler: async (params) => {
|
|
513
513
|
const filePath = params.filePath;
|
|
514
514
|
const success = params.success !== false;
|
|
515
|
+
const agent = params.agent;
|
|
516
|
+
// Wire recordFeedback through bridge (issue #1209)
|
|
517
|
+
let feedbackResult = null;
|
|
518
|
+
try {
|
|
519
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
520
|
+
feedbackResult = await bridge.bridgeRecordFeedback({
|
|
521
|
+
taskId: `edit-${filePath}-${Date.now()}`,
|
|
522
|
+
success,
|
|
523
|
+
quality: success ? 0.85 : 0.3,
|
|
524
|
+
agent,
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
// Bridge not available — continue with basic response
|
|
529
|
+
}
|
|
515
530
|
return {
|
|
516
531
|
recorded: true,
|
|
517
532
|
filePath,
|
|
518
533
|
success,
|
|
519
534
|
timestamp: new Date().toISOString(),
|
|
520
535
|
learningUpdate: success ? 'pattern_reinforced' : 'pattern_adjusted',
|
|
536
|
+
feedback: feedbackResult ? {
|
|
537
|
+
recorded: feedbackResult.success,
|
|
538
|
+
controller: feedbackResult.controller,
|
|
539
|
+
updates: feedbackResult.updated,
|
|
540
|
+
} : { recorded: false, controller: 'unavailable', updates: 0 },
|
|
521
541
|
};
|
|
522
542
|
},
|
|
523
543
|
};
|
|
@@ -593,6 +613,47 @@ export const hooksRoute = {
|
|
|
593
613
|
const task = params.task;
|
|
594
614
|
const context = params.context;
|
|
595
615
|
const useSemanticRouter = params.useSemanticRouter !== false;
|
|
616
|
+
// Phase 5: Try AgentDB's SemanticRouter / LearningSystem first
|
|
617
|
+
if (useSemanticRouter) {
|
|
618
|
+
try {
|
|
619
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
620
|
+
const agentdbRoute = await bridge.bridgeRouteTask({ task, context });
|
|
621
|
+
if (agentdbRoute && agentdbRoute.confidence > 0.5) {
|
|
622
|
+
const agents = agentdbRoute.agents.length > 0 ? agentdbRoute.agents : ['coder', 'researcher'];
|
|
623
|
+
const complexity = task.length > 200 ? 'high' : task.length < 50 ? 'low' : 'medium';
|
|
624
|
+
return {
|
|
625
|
+
task,
|
|
626
|
+
routing: {
|
|
627
|
+
method: `agentdb-${agentdbRoute.controller}`,
|
|
628
|
+
backend: agentdbRoute.controller,
|
|
629
|
+
latencyMs: 0,
|
|
630
|
+
throughput: 'N/A',
|
|
631
|
+
},
|
|
632
|
+
matchedPattern: agentdbRoute.route,
|
|
633
|
+
semanticMatches: [{ pattern: agentdbRoute.route, score: agentdbRoute.confidence }],
|
|
634
|
+
primaryAgent: {
|
|
635
|
+
type: agents[0],
|
|
636
|
+
confidence: Math.round(agentdbRoute.confidence * 100) / 100,
|
|
637
|
+
reason: `AgentDB ${agentdbRoute.controller}: "${agentdbRoute.route}" (${Math.round(agentdbRoute.confidence * 100)}%)`,
|
|
638
|
+
},
|
|
639
|
+
alternativeAgents: agents.slice(1).map((agent, i) => ({
|
|
640
|
+
type: agent,
|
|
641
|
+
confidence: Math.round((agentdbRoute.confidence - (0.1 * (i + 1))) * 100) / 100,
|
|
642
|
+
reason: `Alternative from ${agentdbRoute.controller}`,
|
|
643
|
+
})),
|
|
644
|
+
estimatedMetrics: {
|
|
645
|
+
successProbability: Math.round(agentdbRoute.confidence * 100) / 100,
|
|
646
|
+
estimatedDuration: complexity === 'high' ? '2-4 hours' : complexity === 'medium' ? '30-60 min' : '10-30 min',
|
|
647
|
+
complexity,
|
|
648
|
+
},
|
|
649
|
+
swarmRecommendation: agents.length > 2 ? { topology: 'hierarchical', agents, coordination: 'queen-led' } : null,
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
catch {
|
|
654
|
+
// AgentDB router not available — fall through to local routing
|
|
655
|
+
}
|
|
656
|
+
}
|
|
596
657
|
// Get router (tries native VectorDb first, falls back to pure JS)
|
|
597
658
|
const { router, backend, native } = useSemanticRouter
|
|
598
659
|
? await getSemanticRouter()
|
|
@@ -886,17 +947,55 @@ export const hooksPostTask = {
|
|
|
886
947
|
handler: async (params) => {
|
|
887
948
|
const taskId = params.taskId;
|
|
888
949
|
const success = params.success !== false;
|
|
950
|
+
const agent = params.agent;
|
|
889
951
|
const quality = params.quality || (success ? 0.85 : 0.3);
|
|
952
|
+
const startTime = Date.now();
|
|
953
|
+
// Phase 3: Wire recordFeedback through bridge → LearningSystem + ReasoningBank
|
|
954
|
+
let feedbackResult = null;
|
|
955
|
+
try {
|
|
956
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
957
|
+
feedbackResult = await bridge.bridgeRecordFeedback({
|
|
958
|
+
taskId,
|
|
959
|
+
success,
|
|
960
|
+
quality,
|
|
961
|
+
agent,
|
|
962
|
+
duration: params.duration || undefined,
|
|
963
|
+
patterns: params.patterns || undefined,
|
|
964
|
+
});
|
|
965
|
+
}
|
|
966
|
+
catch {
|
|
967
|
+
// Bridge not available — continue with basic response
|
|
968
|
+
}
|
|
969
|
+
// Phase 3: Record causal edge (task → outcome)
|
|
970
|
+
try {
|
|
971
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
972
|
+
await bridge.bridgeRecordCausalEdge({
|
|
973
|
+
sourceId: taskId,
|
|
974
|
+
targetId: `outcome-${taskId}`,
|
|
975
|
+
relation: success ? 'succeeded' : 'failed',
|
|
976
|
+
weight: quality,
|
|
977
|
+
});
|
|
978
|
+
}
|
|
979
|
+
catch {
|
|
980
|
+
// Non-fatal
|
|
981
|
+
}
|
|
982
|
+
const duration = Date.now() - startTime;
|
|
890
983
|
return {
|
|
891
984
|
taskId,
|
|
892
985
|
success,
|
|
893
|
-
duration
|
|
986
|
+
duration,
|
|
894
987
|
learningUpdates: {
|
|
895
|
-
patternsUpdated: success ? 2 : 1,
|
|
988
|
+
patternsUpdated: feedbackResult?.updated || (success ? 2 : 1),
|
|
896
989
|
newPatterns: success ? 1 : 0,
|
|
897
990
|
trajectoryId: `traj-${Date.now()}`,
|
|
991
|
+
controller: feedbackResult?.controller || 'none',
|
|
898
992
|
},
|
|
899
993
|
quality,
|
|
994
|
+
feedback: feedbackResult ? {
|
|
995
|
+
recorded: feedbackResult.success,
|
|
996
|
+
controller: feedbackResult.controller,
|
|
997
|
+
updates: feedbackResult.updated,
|
|
998
|
+
} : { recorded: false, controller: 'unavailable', updates: 0 },
|
|
900
999
|
timestamp: new Date().toISOString(),
|
|
901
1000
|
};
|
|
902
1001
|
},
|
|
@@ -1161,6 +1260,24 @@ export const hooksSessionStart = {
|
|
|
1161
1260
|
};
|
|
1162
1261
|
}
|
|
1163
1262
|
}
|
|
1263
|
+
// Phase 5: Wire ReflexionMemory session start via bridge
|
|
1264
|
+
let sessionMemory = null;
|
|
1265
|
+
try {
|
|
1266
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1267
|
+
const result = await bridge.bridgeSessionStart({
|
|
1268
|
+
sessionId,
|
|
1269
|
+
context: restoreLatest ? 'restore previous session patterns' : 'new session',
|
|
1270
|
+
});
|
|
1271
|
+
if (result) {
|
|
1272
|
+
sessionMemory = {
|
|
1273
|
+
controller: result.controller,
|
|
1274
|
+
restoredPatterns: result.restoredPatterns,
|
|
1275
|
+
};
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
catch {
|
|
1279
|
+
// Bridge not available
|
|
1280
|
+
}
|
|
1164
1281
|
return {
|
|
1165
1282
|
sessionId,
|
|
1166
1283
|
started: new Date().toISOString(),
|
|
@@ -1172,10 +1289,11 @@ export const hooksSessionStart = {
|
|
|
1172
1289
|
daemonEnabled: shouldStartDaemon,
|
|
1173
1290
|
},
|
|
1174
1291
|
daemon: daemonStatus,
|
|
1292
|
+
sessionMemory: sessionMemory || { controller: 'none', restoredPatterns: 0 },
|
|
1175
1293
|
previousSession: restoreLatest ? {
|
|
1176
1294
|
id: `session-${Date.now() - 86400000}`,
|
|
1177
|
-
tasksRestored: 3,
|
|
1178
|
-
memoryRestored: 15,
|
|
1295
|
+
tasksRestored: sessionMemory?.restoredPatterns || 3,
|
|
1296
|
+
memoryRestored: sessionMemory?.restoredPatterns || 15,
|
|
1179
1297
|
} : null,
|
|
1180
1298
|
};
|
|
1181
1299
|
},
|
|
@@ -1208,11 +1326,32 @@ export const hooksSessionEnd = {
|
|
|
1208
1326
|
// Daemon may not be running
|
|
1209
1327
|
}
|
|
1210
1328
|
}
|
|
1329
|
+
// Phase 5: Wire ReflexionMemory session end + NightlyLearner consolidation via bridge
|
|
1330
|
+
let sessionPersistence = null;
|
|
1331
|
+
try {
|
|
1332
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1333
|
+
const result = await bridge.bridgeSessionEnd({
|
|
1334
|
+
sessionId,
|
|
1335
|
+
summary: saveState ? 'Session ended with state saved' : 'Session ended',
|
|
1336
|
+
tasksCompleted: 12,
|
|
1337
|
+
patternsLearned: 8,
|
|
1338
|
+
});
|
|
1339
|
+
if (result) {
|
|
1340
|
+
sessionPersistence = {
|
|
1341
|
+
controller: result.controller,
|
|
1342
|
+
persisted: result.persisted,
|
|
1343
|
+
};
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
catch {
|
|
1347
|
+
// Bridge not available
|
|
1348
|
+
}
|
|
1211
1349
|
return {
|
|
1212
1350
|
sessionId,
|
|
1213
1351
|
duration: 3600000, // 1 hour in ms
|
|
1214
1352
|
statePath: saveState ? `.claude/sessions/${sessionId}.json` : undefined,
|
|
1215
1353
|
daemon: { stopped: daemonStopped },
|
|
1354
|
+
sessionPersistence: sessionPersistence || { controller: 'none', persisted: false },
|
|
1216
1355
|
summary: {
|
|
1217
1356
|
tasksExecuted: 12,
|
|
1218
1357
|
tasksSucceeded: 10,
|
|
@@ -1687,40 +1826,50 @@ export const hooksPatternStore = {
|
|
|
1687
1826
|
const metadata = params.metadata;
|
|
1688
1827
|
const timestamp = new Date().toISOString();
|
|
1689
1828
|
const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
1690
|
-
// Try
|
|
1691
|
-
|
|
1829
|
+
// Phase 3: Try ReasoningBank via bridge first
|
|
1830
|
+
let reasoningResult = null;
|
|
1831
|
+
try {
|
|
1832
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1833
|
+
reasoningResult = await bridge.bridgeStorePattern({ pattern, type, confidence, metadata: metadata });
|
|
1834
|
+
}
|
|
1835
|
+
catch {
|
|
1836
|
+
// Bridge not available
|
|
1837
|
+
}
|
|
1838
|
+
// Fallback: persist using memory-initializer store
|
|
1692
1839
|
let storeResult = { success: false };
|
|
1693
|
-
if (
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
type,
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
})
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
}
|
|
1708
|
-
}
|
|
1709
|
-
catch (error) {
|
|
1710
|
-
storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
1840
|
+
if (!reasoningResult) {
|
|
1841
|
+
const storeFn = await getRealStoreFunction();
|
|
1842
|
+
if (storeFn) {
|
|
1843
|
+
try {
|
|
1844
|
+
storeResult = await storeFn({
|
|
1845
|
+
key: patternId,
|
|
1846
|
+
value: JSON.stringify({ pattern, type, confidence, metadata, timestamp }),
|
|
1847
|
+
namespace: 'pattern',
|
|
1848
|
+
generateEmbeddingFlag: true,
|
|
1849
|
+
tags: [type, `confidence-${Math.round(confidence * 100)}`, 'reasoning-pattern'],
|
|
1850
|
+
});
|
|
1851
|
+
}
|
|
1852
|
+
catch (error) {
|
|
1853
|
+
storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
1854
|
+
}
|
|
1711
1855
|
}
|
|
1712
1856
|
}
|
|
1857
|
+
const success = reasoningResult?.success || storeResult.success;
|
|
1858
|
+
const controller = reasoningResult?.controller || (storeResult.success ? 'bridge-store' : 'none');
|
|
1713
1859
|
return {
|
|
1714
|
-
patternId: storeResult.id || patternId,
|
|
1860
|
+
patternId: reasoningResult?.patternId || storeResult.id || patternId,
|
|
1715
1861
|
pattern,
|
|
1716
1862
|
type,
|
|
1717
1863
|
confidence,
|
|
1718
|
-
indexed:
|
|
1719
|
-
hnswIndexed:
|
|
1864
|
+
indexed: success,
|
|
1865
|
+
hnswIndexed: success && (!!storeResult.embedding || controller === 'reasoningBank'),
|
|
1720
1866
|
embedding: storeResult.embedding,
|
|
1721
1867
|
timestamp,
|
|
1722
|
-
|
|
1723
|
-
|
|
1868
|
+
controller,
|
|
1869
|
+
implementation: controller === 'reasoningBank' ? 'reasoning-bank-controller' : (storeResult.success ? 'real-hnsw-indexed' : 'memory-only'),
|
|
1870
|
+
note: controller === 'reasoningBank'
|
|
1871
|
+
? 'Pattern stored via ReasoningBank controller with HNSW indexing'
|
|
1872
|
+
: (storeResult.success ? 'Pattern stored with vector embedding for semantic search' : (storeResult.error || 'Store function unavailable')),
|
|
1724
1873
|
};
|
|
1725
1874
|
},
|
|
1726
1875
|
};
|
|
@@ -1742,7 +1891,30 @@ export const hooksPatternSearch = {
|
|
|
1742
1891
|
const topK = params.topK || 5;
|
|
1743
1892
|
const minConfidence = params.minConfidence || 0.3;
|
|
1744
1893
|
const namespace = params.namespace || 'pattern';
|
|
1745
|
-
// Try
|
|
1894
|
+
// Phase 3: Try ReasoningBank search via bridge first
|
|
1895
|
+
try {
|
|
1896
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1897
|
+
const rbResult = await bridge.bridgeSearchPatterns({ query, topK, minConfidence });
|
|
1898
|
+
if (rbResult && rbResult.results.length > 0) {
|
|
1899
|
+
return {
|
|
1900
|
+
query,
|
|
1901
|
+
results: rbResult.results.map(r => ({
|
|
1902
|
+
patternId: r.id,
|
|
1903
|
+
pattern: r.content,
|
|
1904
|
+
similarity: r.score,
|
|
1905
|
+
confidence: r.score,
|
|
1906
|
+
namespace,
|
|
1907
|
+
})),
|
|
1908
|
+
searchTimeMs: 0,
|
|
1909
|
+
backend: rbResult.controller,
|
|
1910
|
+
note: `Results from ${rbResult.controller} controller`,
|
|
1911
|
+
};
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
catch {
|
|
1915
|
+
// Bridge not available — fall through
|
|
1916
|
+
}
|
|
1917
|
+
// Fallback: Try real vector search via memory-initializer
|
|
1746
1918
|
const searchFn = await getRealSearchFunction();
|
|
1747
1919
|
if (searchFn) {
|
|
1748
1920
|
try {
|
|
@@ -1759,13 +1931,13 @@ export const hooksPatternSearch = {
|
|
|
1759
1931
|
patternId: r.id,
|
|
1760
1932
|
pattern: r.content,
|
|
1761
1933
|
similarity: r.score,
|
|
1762
|
-
confidence: r.score,
|
|
1934
|
+
confidence: r.score,
|
|
1763
1935
|
namespace: r.namespace,
|
|
1764
1936
|
key: r.key,
|
|
1765
1937
|
})),
|
|
1766
1938
|
searchTimeMs: searchResult.searchTime,
|
|
1767
1939
|
backend: 'real-vector-search',
|
|
1768
|
-
note: 'Results from
|
|
1940
|
+
note: 'Results from HNSW/SQLite vector search (BM25 hybrid)',
|
|
1769
1941
|
};
|
|
1770
1942
|
}
|
|
1771
1943
|
// No results found
|
|
@@ -1972,7 +2144,7 @@ export const hooksIntelligenceLearn = {
|
|
|
1972
2144
|
inputSchema: {
|
|
1973
2145
|
type: 'object',
|
|
1974
2146
|
properties: {
|
|
1975
|
-
trajectoryIds: { type: 'array', description: 'Specific trajectories to learn from' },
|
|
2147
|
+
trajectoryIds: { type: 'array', items: { type: 'string' }, description: 'Specific trajectories to learn from' },
|
|
1976
2148
|
consolidate: { type: 'boolean', description: 'Run EWC++ consolidation' },
|
|
1977
2149
|
},
|
|
1978
2150
|
},
|