@claude-flow/cli 3.1.0-alpha.9 → 3.5.0
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 +350 -0
- package/.claude/helpers/hook-handler.cjs +232 -0
- package/.claude/helpers/intelligence.cjs +916 -0
- 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 +910 -475
- package/bin/preinstall.cjs +2 -0
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +45 -2
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +292 -82
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +48 -4
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/executor.d.ts +8 -2
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +315 -43
- 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 +498 -0
- 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 +32 -16
- 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 +138 -95
- 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 +7 -0
- 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-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/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +184 -32
- package/dist/src/mcp-tools/hooks-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/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 +1493 -0
- package/dist/src/memory/memory-bridge.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +3 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +125 -1
- package/dist/src/memory/memory-initializer.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/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/update/validator.js +1 -1
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -4
|
@@ -593,6 +593,47 @@ export const hooksRoute = {
|
|
|
593
593
|
const task = params.task;
|
|
594
594
|
const context = params.context;
|
|
595
595
|
const useSemanticRouter = params.useSemanticRouter !== false;
|
|
596
|
+
// Phase 5: Try AgentDB's SemanticRouter / LearningSystem first
|
|
597
|
+
if (useSemanticRouter) {
|
|
598
|
+
try {
|
|
599
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
600
|
+
const agentdbRoute = await bridge.bridgeRouteTask({ task, context });
|
|
601
|
+
if (agentdbRoute && agentdbRoute.confidence > 0.5) {
|
|
602
|
+
const agents = agentdbRoute.agents.length > 0 ? agentdbRoute.agents : ['coder', 'researcher'];
|
|
603
|
+
const complexity = task.length > 200 ? 'high' : task.length < 50 ? 'low' : 'medium';
|
|
604
|
+
return {
|
|
605
|
+
task,
|
|
606
|
+
routing: {
|
|
607
|
+
method: `agentdb-${agentdbRoute.controller}`,
|
|
608
|
+
backend: agentdbRoute.controller,
|
|
609
|
+
latencyMs: 0,
|
|
610
|
+
throughput: 'N/A',
|
|
611
|
+
},
|
|
612
|
+
matchedPattern: agentdbRoute.route,
|
|
613
|
+
semanticMatches: [{ pattern: agentdbRoute.route, score: agentdbRoute.confidence }],
|
|
614
|
+
primaryAgent: {
|
|
615
|
+
type: agents[0],
|
|
616
|
+
confidence: Math.round(agentdbRoute.confidence * 100) / 100,
|
|
617
|
+
reason: `AgentDB ${agentdbRoute.controller}: "${agentdbRoute.route}" (${Math.round(agentdbRoute.confidence * 100)}%)`,
|
|
618
|
+
},
|
|
619
|
+
alternativeAgents: agents.slice(1).map((agent, i) => ({
|
|
620
|
+
type: agent,
|
|
621
|
+
confidence: Math.round((agentdbRoute.confidence - (0.1 * (i + 1))) * 100) / 100,
|
|
622
|
+
reason: `Alternative from ${agentdbRoute.controller}`,
|
|
623
|
+
})),
|
|
624
|
+
estimatedMetrics: {
|
|
625
|
+
successProbability: Math.round(agentdbRoute.confidence * 100) / 100,
|
|
626
|
+
estimatedDuration: complexity === 'high' ? '2-4 hours' : complexity === 'medium' ? '30-60 min' : '10-30 min',
|
|
627
|
+
complexity,
|
|
628
|
+
},
|
|
629
|
+
swarmRecommendation: agents.length > 2 ? { topology: 'hierarchical', agents, coordination: 'queen-led' } : null,
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
catch {
|
|
634
|
+
// AgentDB router not available — fall through to local routing
|
|
635
|
+
}
|
|
636
|
+
}
|
|
596
637
|
// Get router (tries native VectorDb first, falls back to pure JS)
|
|
597
638
|
const { router, backend, native } = useSemanticRouter
|
|
598
639
|
? await getSemanticRouter()
|
|
@@ -886,17 +927,55 @@ export const hooksPostTask = {
|
|
|
886
927
|
handler: async (params) => {
|
|
887
928
|
const taskId = params.taskId;
|
|
888
929
|
const success = params.success !== false;
|
|
930
|
+
const agent = params.agent;
|
|
889
931
|
const quality = params.quality || (success ? 0.85 : 0.3);
|
|
932
|
+
const startTime = Date.now();
|
|
933
|
+
// Phase 3: Wire recordFeedback through bridge → LearningSystem + ReasoningBank
|
|
934
|
+
let feedbackResult = null;
|
|
935
|
+
try {
|
|
936
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
937
|
+
feedbackResult = await bridge.bridgeRecordFeedback({
|
|
938
|
+
taskId,
|
|
939
|
+
success,
|
|
940
|
+
quality,
|
|
941
|
+
agent,
|
|
942
|
+
duration: params.duration || undefined,
|
|
943
|
+
patterns: params.patterns || undefined,
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
catch {
|
|
947
|
+
// Bridge not available — continue with basic response
|
|
948
|
+
}
|
|
949
|
+
// Phase 3: Record causal edge (task → outcome)
|
|
950
|
+
try {
|
|
951
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
952
|
+
await bridge.bridgeRecordCausalEdge({
|
|
953
|
+
sourceId: taskId,
|
|
954
|
+
targetId: `outcome-${taskId}`,
|
|
955
|
+
relation: success ? 'succeeded' : 'failed',
|
|
956
|
+
weight: quality,
|
|
957
|
+
});
|
|
958
|
+
}
|
|
959
|
+
catch {
|
|
960
|
+
// Non-fatal
|
|
961
|
+
}
|
|
962
|
+
const duration = Date.now() - startTime;
|
|
890
963
|
return {
|
|
891
964
|
taskId,
|
|
892
965
|
success,
|
|
893
|
-
duration
|
|
966
|
+
duration,
|
|
894
967
|
learningUpdates: {
|
|
895
|
-
patternsUpdated: success ? 2 : 1,
|
|
968
|
+
patternsUpdated: feedbackResult?.updated || (success ? 2 : 1),
|
|
896
969
|
newPatterns: success ? 1 : 0,
|
|
897
970
|
trajectoryId: `traj-${Date.now()}`,
|
|
971
|
+
controller: feedbackResult?.controller || 'none',
|
|
898
972
|
},
|
|
899
973
|
quality,
|
|
974
|
+
feedback: feedbackResult ? {
|
|
975
|
+
recorded: feedbackResult.success,
|
|
976
|
+
controller: feedbackResult.controller,
|
|
977
|
+
updates: feedbackResult.updated,
|
|
978
|
+
} : { recorded: false, controller: 'unavailable', updates: 0 },
|
|
900
979
|
timestamp: new Date().toISOString(),
|
|
901
980
|
};
|
|
902
981
|
},
|
|
@@ -1161,6 +1240,24 @@ export const hooksSessionStart = {
|
|
|
1161
1240
|
};
|
|
1162
1241
|
}
|
|
1163
1242
|
}
|
|
1243
|
+
// Phase 5: Wire ReflexionMemory session start via bridge
|
|
1244
|
+
let sessionMemory = null;
|
|
1245
|
+
try {
|
|
1246
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1247
|
+
const result = await bridge.bridgeSessionStart({
|
|
1248
|
+
sessionId,
|
|
1249
|
+
context: restoreLatest ? 'restore previous session patterns' : 'new session',
|
|
1250
|
+
});
|
|
1251
|
+
if (result) {
|
|
1252
|
+
sessionMemory = {
|
|
1253
|
+
controller: result.controller,
|
|
1254
|
+
restoredPatterns: result.restoredPatterns,
|
|
1255
|
+
};
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
catch {
|
|
1259
|
+
// Bridge not available
|
|
1260
|
+
}
|
|
1164
1261
|
return {
|
|
1165
1262
|
sessionId,
|
|
1166
1263
|
started: new Date().toISOString(),
|
|
@@ -1172,10 +1269,11 @@ export const hooksSessionStart = {
|
|
|
1172
1269
|
daemonEnabled: shouldStartDaemon,
|
|
1173
1270
|
},
|
|
1174
1271
|
daemon: daemonStatus,
|
|
1272
|
+
sessionMemory: sessionMemory || { controller: 'none', restoredPatterns: 0 },
|
|
1175
1273
|
previousSession: restoreLatest ? {
|
|
1176
1274
|
id: `session-${Date.now() - 86400000}`,
|
|
1177
|
-
tasksRestored: 3,
|
|
1178
|
-
memoryRestored: 15,
|
|
1275
|
+
tasksRestored: sessionMemory?.restoredPatterns || 3,
|
|
1276
|
+
memoryRestored: sessionMemory?.restoredPatterns || 15,
|
|
1179
1277
|
} : null,
|
|
1180
1278
|
};
|
|
1181
1279
|
},
|
|
@@ -1208,11 +1306,32 @@ export const hooksSessionEnd = {
|
|
|
1208
1306
|
// Daemon may not be running
|
|
1209
1307
|
}
|
|
1210
1308
|
}
|
|
1309
|
+
// Phase 5: Wire ReflexionMemory session end + NightlyLearner consolidation via bridge
|
|
1310
|
+
let sessionPersistence = null;
|
|
1311
|
+
try {
|
|
1312
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1313
|
+
const result = await bridge.bridgeSessionEnd({
|
|
1314
|
+
sessionId,
|
|
1315
|
+
summary: saveState ? 'Session ended with state saved' : 'Session ended',
|
|
1316
|
+
tasksCompleted: 12,
|
|
1317
|
+
patternsLearned: 8,
|
|
1318
|
+
});
|
|
1319
|
+
if (result) {
|
|
1320
|
+
sessionPersistence = {
|
|
1321
|
+
controller: result.controller,
|
|
1322
|
+
persisted: result.persisted,
|
|
1323
|
+
};
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
catch {
|
|
1327
|
+
// Bridge not available
|
|
1328
|
+
}
|
|
1211
1329
|
return {
|
|
1212
1330
|
sessionId,
|
|
1213
1331
|
duration: 3600000, // 1 hour in ms
|
|
1214
1332
|
statePath: saveState ? `.claude/sessions/${sessionId}.json` : undefined,
|
|
1215
1333
|
daemon: { stopped: daemonStopped },
|
|
1334
|
+
sessionPersistence: sessionPersistence || { controller: 'none', persisted: false },
|
|
1216
1335
|
summary: {
|
|
1217
1336
|
tasksExecuted: 12,
|
|
1218
1337
|
tasksSucceeded: 10,
|
|
@@ -1687,40 +1806,50 @@ export const hooksPatternStore = {
|
|
|
1687
1806
|
const metadata = params.metadata;
|
|
1688
1807
|
const timestamp = new Date().toISOString();
|
|
1689
1808
|
const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
1690
|
-
// Try
|
|
1691
|
-
|
|
1809
|
+
// Phase 3: Try ReasoningBank via bridge first
|
|
1810
|
+
let reasoningResult = null;
|
|
1811
|
+
try {
|
|
1812
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1813
|
+
reasoningResult = await bridge.bridgeStorePattern({ pattern, type, confidence, metadata: metadata });
|
|
1814
|
+
}
|
|
1815
|
+
catch {
|
|
1816
|
+
// Bridge not available
|
|
1817
|
+
}
|
|
1818
|
+
// Fallback: persist using memory-initializer store
|
|
1692
1819
|
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) };
|
|
1820
|
+
if (!reasoningResult) {
|
|
1821
|
+
const storeFn = await getRealStoreFunction();
|
|
1822
|
+
if (storeFn) {
|
|
1823
|
+
try {
|
|
1824
|
+
storeResult = await storeFn({
|
|
1825
|
+
key: patternId,
|
|
1826
|
+
value: JSON.stringify({ pattern, type, confidence, metadata, timestamp }),
|
|
1827
|
+
namespace: 'pattern',
|
|
1828
|
+
generateEmbeddingFlag: true,
|
|
1829
|
+
tags: [type, `confidence-${Math.round(confidence * 100)}`, 'reasoning-pattern'],
|
|
1830
|
+
});
|
|
1831
|
+
}
|
|
1832
|
+
catch (error) {
|
|
1833
|
+
storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
1834
|
+
}
|
|
1711
1835
|
}
|
|
1712
1836
|
}
|
|
1837
|
+
const success = reasoningResult?.success || storeResult.success;
|
|
1838
|
+
const controller = reasoningResult?.controller || (storeResult.success ? 'bridge-store' : 'none');
|
|
1713
1839
|
return {
|
|
1714
|
-
patternId: storeResult.id || patternId,
|
|
1840
|
+
patternId: reasoningResult?.patternId || storeResult.id || patternId,
|
|
1715
1841
|
pattern,
|
|
1716
1842
|
type,
|
|
1717
1843
|
confidence,
|
|
1718
|
-
indexed:
|
|
1719
|
-
hnswIndexed:
|
|
1844
|
+
indexed: success,
|
|
1845
|
+
hnswIndexed: success && (!!storeResult.embedding || controller === 'reasoningBank'),
|
|
1720
1846
|
embedding: storeResult.embedding,
|
|
1721
1847
|
timestamp,
|
|
1722
|
-
|
|
1723
|
-
|
|
1848
|
+
controller,
|
|
1849
|
+
implementation: controller === 'reasoningBank' ? 'reasoning-bank-controller' : (storeResult.success ? 'real-hnsw-indexed' : 'memory-only'),
|
|
1850
|
+
note: controller === 'reasoningBank'
|
|
1851
|
+
? 'Pattern stored via ReasoningBank controller with HNSW indexing'
|
|
1852
|
+
: (storeResult.success ? 'Pattern stored with vector embedding for semantic search' : (storeResult.error || 'Store function unavailable')),
|
|
1724
1853
|
};
|
|
1725
1854
|
},
|
|
1726
1855
|
};
|
|
@@ -1742,7 +1871,30 @@ export const hooksPatternSearch = {
|
|
|
1742
1871
|
const topK = params.topK || 5;
|
|
1743
1872
|
const minConfidence = params.minConfidence || 0.3;
|
|
1744
1873
|
const namespace = params.namespace || 'pattern';
|
|
1745
|
-
// Try
|
|
1874
|
+
// Phase 3: Try ReasoningBank search via bridge first
|
|
1875
|
+
try {
|
|
1876
|
+
const bridge = await import('../memory/memory-bridge.js');
|
|
1877
|
+
const rbResult = await bridge.bridgeSearchPatterns({ query, topK, minConfidence });
|
|
1878
|
+
if (rbResult && rbResult.results.length > 0) {
|
|
1879
|
+
return {
|
|
1880
|
+
query,
|
|
1881
|
+
results: rbResult.results.map(r => ({
|
|
1882
|
+
patternId: r.id,
|
|
1883
|
+
pattern: r.content,
|
|
1884
|
+
similarity: r.score,
|
|
1885
|
+
confidence: r.score,
|
|
1886
|
+
namespace,
|
|
1887
|
+
})),
|
|
1888
|
+
searchTimeMs: 0,
|
|
1889
|
+
backend: rbResult.controller,
|
|
1890
|
+
note: `Results from ${rbResult.controller} controller`,
|
|
1891
|
+
};
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
catch {
|
|
1895
|
+
// Bridge not available — fall through
|
|
1896
|
+
}
|
|
1897
|
+
// Fallback: Try real vector search via memory-initializer
|
|
1746
1898
|
const searchFn = await getRealSearchFunction();
|
|
1747
1899
|
if (searchFn) {
|
|
1748
1900
|
try {
|
|
@@ -1759,13 +1911,13 @@ export const hooksPatternSearch = {
|
|
|
1759
1911
|
patternId: r.id,
|
|
1760
1912
|
pattern: r.content,
|
|
1761
1913
|
similarity: r.score,
|
|
1762
|
-
confidence: r.score,
|
|
1914
|
+
confidence: r.score,
|
|
1763
1915
|
namespace: r.namespace,
|
|
1764
1916
|
key: r.key,
|
|
1765
1917
|
})),
|
|
1766
1918
|
searchTimeMs: searchResult.searchTime,
|
|
1767
1919
|
backend: 'real-vector-search',
|
|
1768
|
-
note: 'Results from
|
|
1920
|
+
note: 'Results from HNSW/SQLite vector search (BM25 hybrid)',
|
|
1769
1921
|
};
|
|
1770
1922
|
}
|
|
1771
1923
|
// No results found
|