agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1

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.
Files changed (314) hide show
  1. package/dist/agentdb.min.js +4 -4
  2. package/dist/simulation/cli.js +0 -0
  3. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  4. package/dist/src/cli/agentdb-cli.js +78 -0
  5. package/dist/src/cli/agentdb-cli.js.map +1 -1
  6. package/package.json +3 -3
  7. package/src/cli/agentdb-cli.ts +78 -0
  8. package/dist/agentdb-advanced.js +0 -2110
  9. package/dist/agentdb-advanced.min.js +0 -1
  10. package/dist/backends/GraphBackend.d.ts +0 -196
  11. package/dist/backends/GraphBackend.d.ts.map +0 -1
  12. package/dist/backends/GraphBackend.js +0 -33
  13. package/dist/backends/GraphBackend.js.map +0 -1
  14. package/dist/backends/LearningBackend.d.ts +0 -148
  15. package/dist/backends/LearningBackend.d.ts.map +0 -1
  16. package/dist/backends/LearningBackend.js +0 -27
  17. package/dist/backends/LearningBackend.js.map +0 -1
  18. package/dist/backends/VectorBackend.d.ts +0 -119
  19. package/dist/backends/VectorBackend.d.ts.map +0 -1
  20. package/dist/backends/VectorBackend.js +0 -14
  21. package/dist/backends/VectorBackend.js.map +0 -1
  22. package/dist/backends/detector.d.ts +0 -81
  23. package/dist/backends/detector.d.ts.map +0 -1
  24. package/dist/backends/detector.js +0 -192
  25. package/dist/backends/detector.js.map +0 -1
  26. package/dist/backends/factory.d.ts +0 -50
  27. package/dist/backends/factory.d.ts.map +0 -1
  28. package/dist/backends/factory.js +0 -161
  29. package/dist/backends/factory.js.map +0 -1
  30. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  31. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  32. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  33. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  34. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  35. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  36. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  37. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  38. package/dist/backends/hnswlib/index.d.ts +0 -7
  39. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  40. package/dist/backends/hnswlib/index.js +0 -7
  41. package/dist/backends/hnswlib/index.js.map +0 -1
  42. package/dist/backends/index.d.ts +0 -14
  43. package/dist/backends/index.d.ts.map +0 -1
  44. package/dist/backends/index.js +0 -13
  45. package/dist/backends/index.js.map +0 -1
  46. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  47. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  48. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  49. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  50. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  51. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  52. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  53. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  54. package/dist/backends/ruvector/index.d.ts +0 -9
  55. package/dist/backends/ruvector/index.d.ts.map +0 -1
  56. package/dist/backends/ruvector/index.js +0 -8
  57. package/dist/backends/ruvector/index.js.map +0 -1
  58. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  59. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  60. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  61. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  62. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  63. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  64. package/dist/browser/AdvancedFeatures.js +0 -430
  65. package/dist/browser/AdvancedFeatures.js.map +0 -1
  66. package/dist/browser/HNSWIndex.d.ts +0 -117
  67. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  68. package/dist/browser/HNSWIndex.js +0 -402
  69. package/dist/browser/HNSWIndex.js.map +0 -1
  70. package/dist/browser/ProductQuantization.d.ts +0 -107
  71. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  72. package/dist/browser/ProductQuantization.js +0 -337
  73. package/dist/browser/ProductQuantization.js.map +0 -1
  74. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  75. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  76. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  77. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  78. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  79. package/dist/browser/browser/HNSWIndex.js +0 -402
  80. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  81. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  82. package/dist/browser/browser/ProductQuantization.js +0 -348
  83. package/dist/browser/browser/index.d.ts +0 -223
  84. package/dist/browser/browser/index.d.ts.map +0 -1
  85. package/dist/browser/browser/index.js +0 -233
  86. package/dist/browser/index.d.ts +0 -223
  87. package/dist/browser/index.d.ts.map +0 -1
  88. package/dist/browser/index.js +0 -225
  89. package/dist/browser/index.js.map +0 -1
  90. package/dist/cli/agentdb-cli.d.ts +0 -154
  91. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  92. package/dist/cli/agentdb-cli.js +0 -2273
  93. package/dist/cli/agentdb-cli.js.map +0 -1
  94. package/dist/cli/agentdb.db +0 -0
  95. package/dist/cli/commands/init.d.ts +0 -12
  96. package/dist/cli/commands/init.d.ts.map +0 -1
  97. package/dist/cli/commands/init.js +0 -115
  98. package/dist/cli/commands/init.js.map +0 -1
  99. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  100. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  101. package/dist/cli/commands/install-embeddings.js +0 -68
  102. package/dist/cli/commands/install-embeddings.js.map +0 -1
  103. package/dist/cli/commands/migrate.d.ts +0 -15
  104. package/dist/cli/commands/migrate.d.ts.map +0 -1
  105. package/dist/cli/commands/migrate.js +0 -425
  106. package/dist/cli/commands/migrate.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -10
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -129
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  112. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  113. package/dist/controllers/CausalMemoryGraph.js +0 -323
  114. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  115. package/dist/controllers/CausalRecall.d.ts +0 -139
  116. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  117. package/dist/controllers/CausalRecall.js +0 -356
  118. package/dist/controllers/CausalRecall.js.map +0 -1
  119. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  120. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  121. package/dist/controllers/ContextSynthesizer.js +0 -208
  122. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  123. package/dist/controllers/EmbeddingService.d.ts +0 -37
  124. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  125. package/dist/controllers/EmbeddingService.js +0 -136
  126. package/dist/controllers/EmbeddingService.js.map +0 -1
  127. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  128. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  129. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  130. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  131. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  132. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  133. package/dist/controllers/ExplainableRecall.js +0 -485
  134. package/dist/controllers/ExplainableRecall.js.map +0 -1
  135. package/dist/controllers/HNSWIndex.d.ts +0 -128
  136. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  137. package/dist/controllers/HNSWIndex.js +0 -361
  138. package/dist/controllers/HNSWIndex.js.map +0 -1
  139. package/dist/controllers/LearningSystem.d.ts +0 -195
  140. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  141. package/dist/controllers/LearningSystem.js +0 -929
  142. package/dist/controllers/LearningSystem.js.map +0 -1
  143. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  144. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  145. package/dist/controllers/MMRDiversityRanker.js +0 -130
  146. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  147. package/dist/controllers/MetadataFilter.d.ts +0 -70
  148. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  149. package/dist/controllers/MetadataFilter.js +0 -243
  150. package/dist/controllers/MetadataFilter.js.map +0 -1
  151. package/dist/controllers/NightlyLearner.d.ts +0 -114
  152. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  153. package/dist/controllers/NightlyLearner.js +0 -394
  154. package/dist/controllers/NightlyLearner.js.map +0 -1
  155. package/dist/controllers/QUICClient.d.ts +0 -109
  156. package/dist/controllers/QUICClient.d.ts.map +0 -1
  157. package/dist/controllers/QUICClient.js +0 -299
  158. package/dist/controllers/QUICClient.js.map +0 -1
  159. package/dist/controllers/QUICServer.d.ts +0 -121
  160. package/dist/controllers/QUICServer.d.ts.map +0 -1
  161. package/dist/controllers/QUICServer.js +0 -383
  162. package/dist/controllers/QUICServer.js.map +0 -1
  163. package/dist/controllers/ReasoningBank.d.ts +0 -196
  164. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  165. package/dist/controllers/ReasoningBank.js +0 -494
  166. package/dist/controllers/ReasoningBank.js.map +0 -1
  167. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  168. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  169. package/dist/controllers/ReflexionMemory.js +0 -521
  170. package/dist/controllers/ReflexionMemory.js.map +0 -1
  171. package/dist/controllers/SkillLibrary.d.ts +0 -149
  172. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  173. package/dist/controllers/SkillLibrary.js +0 -547
  174. package/dist/controllers/SkillLibrary.js.map +0 -1
  175. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  176. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  177. package/dist/controllers/SyncCoordinator.js +0 -441
  178. package/dist/controllers/SyncCoordinator.js.map +0 -1
  179. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  180. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  181. package/dist/controllers/WASMVectorSearch.js +0 -234
  182. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  183. package/dist/controllers/frontier-index.d.ts +0 -14
  184. package/dist/controllers/frontier-index.d.ts.map +0 -1
  185. package/dist/controllers/frontier-index.js +0 -10
  186. package/dist/controllers/frontier-index.js.map +0 -1
  187. package/dist/controllers/index.d.ts +0 -30
  188. package/dist/controllers/index.d.ts.map +0 -1
  189. package/dist/controllers/index.js +0 -18
  190. package/dist/controllers/index.js.map +0 -1
  191. package/dist/db-fallback.d.ts +0 -26
  192. package/dist/db-fallback.d.ts.map +0 -1
  193. package/dist/db-fallback.js +0 -264
  194. package/dist/db-fallback.js.map +0 -1
  195. package/dist/db-test.d.ts +0 -13
  196. package/dist/db-test.d.ts.map +0 -1
  197. package/dist/db-test.js +0 -55
  198. package/dist/db-test.js.map +0 -1
  199. package/dist/db-unified.d.ts +0 -76
  200. package/dist/db-unified.d.ts.map +0 -1
  201. package/dist/db-unified.js +0 -278
  202. package/dist/db-unified.js.map +0 -1
  203. package/dist/examples/quic-sync-example.d.ts +0 -9
  204. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  205. package/dist/examples/quic-sync-example.js +0 -169
  206. package/dist/examples/quic-sync-example.js.map +0 -1
  207. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  208. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  209. package/dist/examples/wasm-vector-usage.js +0 -190
  210. package/dist/examples/wasm-vector-usage.js.map +0 -1
  211. package/dist/index.d.ts +0 -28
  212. package/dist/index.d.ts.map +0 -1
  213. package/dist/index.js +0 -35
  214. package/dist/index.js.map +0 -1
  215. package/dist/malp/core/ccc.d.ts +0 -99
  216. package/dist/malp/core/ccc.d.ts.map +0 -1
  217. package/dist/malp/core/ccc.js +0 -181
  218. package/dist/malp/core/ccc.js.map +0 -1
  219. package/dist/malp/core/index.d.ts +0 -9
  220. package/dist/malp/core/index.d.ts.map +0 -1
  221. package/dist/malp/core/index.js +0 -9
  222. package/dist/malp/core/index.js.map +0 -1
  223. package/dist/malp/core/linalg.d.ts +0 -101
  224. package/dist/malp/core/linalg.d.ts.map +0 -1
  225. package/dist/malp/core/linalg.js +0 -278
  226. package/dist/malp/core/linalg.js.map +0 -1
  227. package/dist/malp/core/optimizer.d.ts +0 -68
  228. package/dist/malp/core/optimizer.d.ts.map +0 -1
  229. package/dist/malp/core/optimizer.js +0 -160
  230. package/dist/malp/core/optimizer.js.map +0 -1
  231. package/dist/malp/index.d.ts +0 -33
  232. package/dist/malp/index.d.ts.map +0 -1
  233. package/dist/malp/index.js +0 -37
  234. package/dist/malp/index.js.map +0 -1
  235. package/dist/malp/metrics/agreement.d.ts +0 -106
  236. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  237. package/dist/malp/metrics/agreement.js +0 -199
  238. package/dist/malp/metrics/agreement.js.map +0 -1
  239. package/dist/malp/metrics/comparison.d.ts +0 -93
  240. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  241. package/dist/malp/metrics/comparison.js +0 -256
  242. package/dist/malp/metrics/comparison.js.map +0 -1
  243. package/dist/malp/metrics/index.d.ts +0 -8
  244. package/dist/malp/metrics/index.d.ts.map +0 -1
  245. package/dist/malp/metrics/index.js +0 -8
  246. package/dist/malp/metrics/index.js.map +0 -1
  247. package/dist/malp/metrics/performance.d.ts +0 -61
  248. package/dist/malp/metrics/performance.d.ts.map +0 -1
  249. package/dist/malp/metrics/performance.js +0 -190
  250. package/dist/malp/metrics/performance.js.map +0 -1
  251. package/dist/malp/models/index.d.ts +0 -7
  252. package/dist/malp/models/index.d.ts.map +0 -1
  253. package/dist/malp/models/index.js +0 -7
  254. package/dist/malp/models/index.js.map +0 -1
  255. package/dist/malp/models/malp.d.ts +0 -116
  256. package/dist/malp/models/malp.d.ts.map +0 -1
  257. package/dist/malp/models/malp.js +0 -206
  258. package/dist/malp/models/malp.js.map +0 -1
  259. package/dist/malp/models/regressor.d.ts +0 -80
  260. package/dist/malp/models/regressor.d.ts.map +0 -1
  261. package/dist/malp/models/regressor.js +0 -229
  262. package/dist/malp/models/regressor.js.map +0 -1
  263. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  264. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  265. package/dist/malp/reasoningbank_validator.js +0 -246
  266. package/dist/malp/reasoningbank_validator.js.map +0 -1
  267. package/dist/malp/wasm_bindings.d.ts +0 -344
  268. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  269. package/dist/malp/wasm_bindings.js +0 -9
  270. package/dist/malp/wasm_bindings.js.map +0 -1
  271. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  272. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  273. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  274. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  275. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  276. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  277. package/dist/mcp/learning-tools-handlers.js +0 -105
  278. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  279. package/dist/optimizations/BatchOperations.d.ts +0 -109
  280. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  281. package/dist/optimizations/BatchOperations.js +0 -407
  282. package/dist/optimizations/BatchOperations.js.map +0 -1
  283. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  284. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  285. package/dist/optimizations/QueryOptimizer.js +0 -228
  286. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  287. package/dist/optimizations/ToolCache.d.ts +0 -137
  288. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  289. package/dist/optimizations/ToolCache.js +0 -281
  290. package/dist/optimizations/ToolCache.js.map +0 -1
  291. package/dist/optimizations/index.d.ts +0 -10
  292. package/dist/optimizations/index.d.ts.map +0 -1
  293. package/dist/optimizations/index.js +0 -8
  294. package/dist/optimizations/index.js.map +0 -1
  295. package/dist/security/input-validation.d.ts +0 -109
  296. package/dist/security/input-validation.d.ts.map +0 -1
  297. package/dist/security/input-validation.js +0 -398
  298. package/dist/security/input-validation.js.map +0 -1
  299. package/dist/security/limits.d.ts +0 -150
  300. package/dist/security/limits.d.ts.map +0 -1
  301. package/dist/security/limits.js +0 -288
  302. package/dist/security/limits.js.map +0 -1
  303. package/dist/security/path-security.d.ts +0 -100
  304. package/dist/security/path-security.d.ts.map +0 -1
  305. package/dist/security/path-security.js +0 -337
  306. package/dist/security/path-security.js.map +0 -1
  307. package/dist/security/validation.d.ts +0 -95
  308. package/dist/security/validation.d.ts.map +0 -1
  309. package/dist/security/validation.js +0 -315
  310. package/dist/security/validation.js.map +0 -1
  311. package/dist/types/quic.d.ts +0 -518
  312. package/dist/types/quic.d.ts.map +0 -1
  313. package/dist/types/quic.js +0 -272
  314. package/dist/types/quic.js.map +0 -1
@@ -1,547 +0,0 @@
1
- /**
2
- * SkillLibrary - Lifelong Learning Skill Management
3
- *
4
- * Promotes high-reward trajectories into reusable skills.
5
- * Manages skill composition, relationships, and adaptive selection.
6
- *
7
- * Based on: "Voyager: An Open-Ended Embodied Agent with Large Language Models"
8
- * https://arxiv.org/abs/2305.16291
9
- */
10
- export class SkillLibrary {
11
- db;
12
- embedder;
13
- vectorBackend;
14
- constructor(db, embedder, vectorBackend) {
15
- this.db = db;
16
- this.embedder = embedder;
17
- this.vectorBackend = vectorBackend || null;
18
- }
19
- /**
20
- * Create a new skill manually or from an episode
21
- */
22
- async createSkill(skill) {
23
- const stmt = this.db.prepare(`
24
- INSERT INTO skills (
25
- name, description, signature, code, success_rate, uses,
26
- avg_reward, avg_latency_ms, metadata
27
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
28
- `);
29
- // v1 API compatibility: provide defaults for optional fields
30
- const signature = skill.signature || { inputs: {}, outputs: {} };
31
- const uses = skill.uses ?? 0;
32
- const avgReward = skill.avgReward ?? 0;
33
- const avgLatencyMs = skill.avgLatencyMs ?? 0;
34
- const result = stmt.run(skill.name, skill.description || null, JSON.stringify(signature), skill.code || null, skill.successRate, uses, avgReward, avgLatencyMs, skill.metadata ? JSON.stringify(skill.metadata) : null);
35
- const skillId = result.lastInsertRowid;
36
- // Generate and store embedding in VectorBackend
37
- const text = this.buildSkillText(skill);
38
- const embedding = await this.embedder.embed(text);
39
- // Store in VectorBackend with skill metadata (if available)
40
- if (this.vectorBackend) {
41
- this.vectorBackend.insert(`skill:${skillId}`, embedding, {
42
- name: skill.name,
43
- description: skill.description,
44
- successRate: skill.successRate,
45
- avgReward: skill.avgReward
46
- });
47
- }
48
- else {
49
- // Legacy: store in database
50
- this.storeSkillEmbeddingLegacy(skillId, embedding);
51
- }
52
- return skillId;
53
- }
54
- /**
55
- * Update skill statistics after use
56
- */
57
- updateSkillStats(skillId, success, reward, latencyMs) {
58
- const stmt = this.db.prepare(`
59
- UPDATE skills
60
- SET
61
- uses = uses + 1,
62
- success_rate = (success_rate * uses + ?) / (uses + 1),
63
- avg_reward = (avg_reward * uses + ?) / (uses + 1),
64
- avg_latency_ms = (avg_latency_ms * uses + ?) / (uses + 1)
65
- WHERE id = ?
66
- `);
67
- stmt.run(success ? 1 : 0, reward, latencyMs, skillId);
68
- }
69
- /**
70
- * Retrieve skills relevant to a task
71
- */
72
- async searchSkills(query) {
73
- return this.retrieveSkills(query);
74
- }
75
- async retrieveSkills(query) {
76
- // v1 API compatibility: accept both 'query' and 'task'
77
- const task = query.task || query.query;
78
- if (!task) {
79
- throw new Error('SkillQuery must provide either task (v2) or query (v1)');
80
- }
81
- const { k = 5, minSuccessRate = 0.5, preferRecent = true } = query;
82
- // Generate query embedding
83
- const queryEmbedding = await this.embedder.embed(task);
84
- // Use VectorBackend for semantic search (if available)
85
- if (this.vectorBackend) {
86
- const searchResults = this.vectorBackend.search(queryEmbedding, k * 3);
87
- // Map results back to skill IDs and fetch full skill data
88
- const skillsWithSimilarity = [];
89
- // Prepare statement ONCE outside loop (better-sqlite3 best practice)
90
- const getSkillStmt = this.db.prepare('SELECT * FROM skills WHERE id = ?');
91
- for (const result of searchResults) {
92
- // Extract skill ID from vector ID (format: "skill:123")
93
- const skillId = parseInt(result.id.replace('skill:', ''));
94
- // Fetch full skill data from database
95
- const row = getSkillStmt.get(skillId);
96
- if (!row)
97
- continue;
98
- // Apply filters
99
- if (row.success_rate < minSuccessRate)
100
- continue;
101
- skillsWithSimilarity.push({
102
- id: row.id,
103
- name: row.name,
104
- description: row.description,
105
- signature: JSON.parse(row.signature),
106
- code: row.code,
107
- successRate: row.success_rate,
108
- uses: row.uses,
109
- avgReward: row.avg_reward,
110
- avgLatencyMs: row.avg_latency_ms,
111
- createdFromEpisode: row.created_from_episode,
112
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
113
- similarity: result.similarity
114
- });
115
- }
116
- // Compute composite scores
117
- skillsWithSimilarity.sort((a, b) => {
118
- const scoreA = this.computeSkillScore(a);
119
- const scoreB = this.computeSkillScore(b);
120
- return scoreB - scoreA;
121
- });
122
- return skillsWithSimilarity.slice(0, k);
123
- }
124
- else {
125
- // Legacy: use SQL-based similarity search
126
- return this.retrieveSkillsLegacy(query);
127
- }
128
- }
129
- /**
130
- * Legacy SQL-based skill retrieval (fallback when VectorBackend not available)
131
- */
132
- async retrieveSkillsLegacy(query) {
133
- // v1 API compatibility: accept both 'query' and 'task'
134
- const task = query.task || query.query;
135
- if (!task) {
136
- throw new Error('SkillQuery must provide either task (v2) or query (v1)');
137
- }
138
- const { k = 5, minSuccessRate = 0.5 } = query;
139
- const queryEmbedding = await this.embedder.embed(task);
140
- // Fetch all skills with embeddings
141
- const stmt = this.db.prepare(`
142
- SELECT s.*, e.embedding
143
- FROM skills s
144
- LEFT JOIN skill_embeddings e ON s.id = e.skill_id
145
- WHERE s.success_rate >= ?
146
- `);
147
- const rows = stmt.all(minSuccessRate);
148
- // Compute similarities
149
- const skillsWithSimilarity = [];
150
- for (const row of rows) {
151
- if (!row.embedding)
152
- continue;
153
- const embedding = new Float32Array(row.embedding.buffer);
154
- const similarity = this.cosineSimilarity(queryEmbedding, embedding);
155
- skillsWithSimilarity.push({
156
- id: row.id,
157
- name: row.name,
158
- description: row.description,
159
- signature: JSON.parse(row.signature),
160
- code: row.code,
161
- successRate: row.success_rate,
162
- uses: row.uses,
163
- avgReward: row.avg_reward,
164
- avgLatencyMs: row.avg_latency_ms,
165
- createdFromEpisode: row.created_from_episode,
166
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
167
- similarity
168
- });
169
- }
170
- // Sort by composite score
171
- skillsWithSimilarity.sort((a, b) => {
172
- const scoreA = this.computeSkillScore(a);
173
- const scoreB = this.computeSkillScore(b);
174
- return scoreB - scoreA;
175
- });
176
- return skillsWithSimilarity.slice(0, k);
177
- }
178
- /**
179
- * Store skill embedding (legacy fallback)
180
- */
181
- storeSkillEmbeddingLegacy(skillId, embedding) {
182
- const stmt = this.db.prepare(`
183
- INSERT INTO skill_embeddings (skill_id, embedding)
184
- VALUES (?, ?)
185
- ON CONFLICT(skill_id) DO UPDATE SET embedding = excluded.embedding
186
- `);
187
- const buffer = Buffer.from(embedding.buffer);
188
- stmt.run(skillId, buffer);
189
- }
190
- /**
191
- * Cosine similarity between two vectors
192
- */
193
- cosineSimilarity(a, b) {
194
- let dotProduct = 0;
195
- let normA = 0;
196
- let normB = 0;
197
- for (let i = 0; i < a.length; i++) {
198
- dotProduct += a[i] * b[i];
199
- normA += a[i] * a[i];
200
- normB += b[i] * b[i];
201
- }
202
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
203
- }
204
- /**
205
- * Link two skills with a relationship
206
- */
207
- linkSkills(link) {
208
- const stmt = this.db.prepare(`
209
- INSERT INTO skill_links (parent_skill_id, child_skill_id, relationship, weight, metadata)
210
- VALUES (?, ?, ?, ?, ?)
211
- ON CONFLICT(parent_skill_id, child_skill_id, relationship)
212
- DO UPDATE SET weight = excluded.weight
213
- `);
214
- stmt.run(link.parentSkillId, link.childSkillId, link.relationship, link.weight, link.metadata ? JSON.stringify(link.metadata) : null);
215
- }
216
- /**
217
- * Get skill composition plan (prerequisites and alternatives)
218
- */
219
- getSkillPlan(skillId) {
220
- // Get main skill
221
- const skill = this.getSkillById(skillId);
222
- // Get prerequisites
223
- const prereqStmt = this.db.prepare(`
224
- SELECT s.* FROM skills s
225
- JOIN skill_links sl ON s.id = sl.child_skill_id
226
- WHERE sl.parent_skill_id = ? AND sl.relationship = 'prerequisite'
227
- ORDER BY sl.weight DESC
228
- `);
229
- const prerequisites = prereqStmt.all(skillId).map(this.rowToSkill);
230
- // Get alternatives
231
- const altStmt = this.db.prepare(`
232
- SELECT s.* FROM skills s
233
- JOIN skill_links sl ON s.id = sl.child_skill_id
234
- WHERE sl.parent_skill_id = ? AND sl.relationship = 'alternative'
235
- ORDER BY sl.weight DESC, s.success_rate DESC
236
- `);
237
- const alternatives = altStmt.all(skillId).map(this.rowToSkill);
238
- // Get refinements
239
- const refStmt = this.db.prepare(`
240
- SELECT s.* FROM skills s
241
- JOIN skill_links sl ON s.id = sl.child_skill_id
242
- WHERE sl.parent_skill_id = ? AND sl.relationship = 'refinement'
243
- ORDER BY sl.weight DESC, s.created_at DESC
244
- `);
245
- const refinements = refStmt.all(skillId).map(this.rowToSkill);
246
- return { skill, prerequisites, alternatives, refinements };
247
- }
248
- /**
249
- * Consolidate high-reward episodes into skills with ML pattern extraction
250
- * This is the core learning mechanism enhanced with pattern analysis
251
- */
252
- async consolidateEpisodesIntoSkills(config) {
253
- const { minAttempts = 3, minReward = 0.7, timeWindowDays = 7, extractPatterns = true } = config;
254
- const stmt = this.db.prepare(`
255
- SELECT
256
- task,
257
- COUNT(*) as attempt_count,
258
- AVG(reward) as avg_reward,
259
- AVG(success) as success_rate,
260
- AVG(latency_ms) as avg_latency,
261
- MAX(id) as latest_episode_id,
262
- GROUP_CONCAT(id) as episode_ids
263
- FROM episodes
264
- WHERE ts > strftime('%s', 'now') - ?
265
- AND reward >= ?
266
- GROUP BY task
267
- HAVING attempt_count >= ?
268
- `);
269
- const candidates = stmt.all(timeWindowDays * 86400, minReward, minAttempts);
270
- let created = 0;
271
- let updated = 0;
272
- const patterns = [];
273
- for (const candidate of candidates) {
274
- const episodeIds = candidate.episode_ids.split(',').map(Number);
275
- // Extract patterns from successful episodes if requested
276
- let extractedPatterns = [];
277
- let successIndicators = [];
278
- let enhancedDescription = `Auto-generated skill from successful episodes`;
279
- if (extractPatterns) {
280
- const patternData = await this.extractPatternsFromEpisodes(episodeIds);
281
- extractedPatterns = patternData.commonPatterns;
282
- successIndicators = patternData.successIndicators;
283
- if (extractedPatterns.length > 0) {
284
- enhancedDescription = `Skill learned from ${episodeIds.length} successful episodes. Common patterns: ${extractedPatterns.slice(0, 3).join(', ')}`;
285
- }
286
- patterns.push({
287
- task: candidate.task,
288
- commonPatterns: extractedPatterns,
289
- successIndicators: successIndicators,
290
- avgReward: candidate.avg_reward
291
- });
292
- }
293
- // Check if skill already exists
294
- const existing = this.db.prepare('SELECT id FROM skills WHERE name = ?').get(candidate.task);
295
- if (!existing) {
296
- // Create new skill with extracted patterns
297
- const skill = {
298
- name: candidate.task,
299
- description: enhancedDescription,
300
- signature: {
301
- inputs: { task: 'string' },
302
- outputs: { result: 'any' }
303
- },
304
- successRate: candidate.success_rate,
305
- uses: candidate.attempt_count,
306
- avgReward: candidate.avg_reward,
307
- avgLatencyMs: candidate.avg_latency || 0,
308
- createdFromEpisode: candidate.latest_episode_id,
309
- metadata: {
310
- sourceEpisodes: episodeIds,
311
- autoGenerated: true,
312
- consolidatedAt: Date.now(),
313
- extractedPatterns: extractedPatterns,
314
- successIndicators: successIndicators,
315
- patternConfidence: this.calculatePatternConfidence(episodeIds.length, candidate.success_rate)
316
- }
317
- };
318
- await this.createSkill(skill);
319
- created++;
320
- }
321
- else {
322
- // Update existing skill stats
323
- this.updateSkillStats(existing.id, candidate.success_rate > 0.5, candidate.avg_reward, candidate.avg_latency || 0);
324
- updated++;
325
- }
326
- }
327
- return { created, updated, patterns };
328
- }
329
- /**
330
- * Extract common patterns from successful episodes using ML-inspired analysis
331
- */
332
- async extractPatternsFromEpisodes(episodeIds) {
333
- // Retrieve episodes with their outputs and critiques
334
- const episodes = this.db.prepare(`
335
- SELECT id, task, input, output, critique, reward, success, metadata
336
- FROM episodes
337
- WHERE id IN (${episodeIds.map(() => '?').join(',')})
338
- AND success = 1
339
- `).all(...episodeIds);
340
- if (episodes.length === 0) {
341
- return { commonPatterns: [], successIndicators: [] };
342
- }
343
- const commonPatterns = [];
344
- const successIndicators = [];
345
- // Pattern 1: Analyze output text for common keywords and phrases
346
- const outputTexts = episodes
347
- .map(ep => ep.output)
348
- .filter(Boolean);
349
- if (outputTexts.length > 0) {
350
- const keywordFrequency = this.extractKeywordFrequency(outputTexts);
351
- const topKeywords = this.getTopKeywords(keywordFrequency, 5);
352
- if (topKeywords.length > 0) {
353
- commonPatterns.push(`Common techniques: ${topKeywords.join(', ')}`);
354
- }
355
- }
356
- // Pattern 2: Analyze critique patterns for successful strategies
357
- const critiques = episodes
358
- .map(ep => ep.critique)
359
- .filter(Boolean);
360
- if (critiques.length > 0) {
361
- const critiqueKeywords = this.extractKeywordFrequency(critiques);
362
- const topCritiquePatterns = this.getTopKeywords(critiqueKeywords, 3);
363
- if (topCritiquePatterns.length > 0) {
364
- successIndicators.push(...topCritiquePatterns);
365
- }
366
- }
367
- // Pattern 3: Analyze reward distribution
368
- const avgReward = episodes.reduce((sum, ep) => sum + ep.reward, 0) / episodes.length;
369
- const highRewardCount = episodes.filter(ep => ep.reward > avgReward).length;
370
- const highRewardRatio = highRewardCount / episodes.length;
371
- if (highRewardRatio > 0.6) {
372
- successIndicators.push(`High consistency (${(highRewardRatio * 100).toFixed(0)}% above average)`);
373
- }
374
- // Pattern 4: Analyze metadata for common parameters
375
- const metadataPatterns = this.extractMetadataPatterns(episodes);
376
- if (metadataPatterns.length > 0) {
377
- commonPatterns.push(...metadataPatterns);
378
- }
379
- // Pattern 5: Temporal analysis - learning curve
380
- const learningTrend = this.analyzeLearningTrend(episodes);
381
- if (learningTrend) {
382
- successIndicators.push(learningTrend);
383
- }
384
- return { commonPatterns, successIndicators };
385
- }
386
- /**
387
- * Extract keyword frequency from text array using NLP-inspired techniques
388
- */
389
- extractKeywordFrequency(texts) {
390
- const frequency = new Map();
391
- // Common stop words to filter out
392
- const stopWords = new Set([
393
- 'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
394
- 'of', 'with', 'by', 'from', 'as', 'is', 'was', 'are', 'were', 'been',
395
- 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'should',
396
- 'could', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those'
397
- ]);
398
- for (const text of texts) {
399
- // Extract words (alphanumeric sequences)
400
- const words = text.toLowerCase().match(/\b[a-z0-9_-]+\b/g) || [];
401
- for (const word of words) {
402
- if (word.length > 3 && !stopWords.has(word)) {
403
- frequency.set(word, (frequency.get(word) || 0) + 1);
404
- }
405
- }
406
- }
407
- return frequency;
408
- }
409
- /**
410
- * Get top N keywords by frequency
411
- */
412
- getTopKeywords(frequency, n) {
413
- return Array.from(frequency.entries())
414
- .sort((a, b) => b[1] - a[1])
415
- .slice(0, n)
416
- .filter(([_, count]) => count >= 2) // Only keywords appearing at least twice
417
- .map(([word, _]) => word);
418
- }
419
- /**
420
- * Extract common patterns from episode metadata
421
- */
422
- extractMetadataPatterns(episodes) {
423
- const patterns = [];
424
- const metadataFields = new Map();
425
- for (const episode of episodes) {
426
- if (episode.metadata) {
427
- try {
428
- const metadata = typeof episode.metadata === 'string'
429
- ? JSON.parse(episode.metadata)
430
- : episode.metadata;
431
- for (const [key, value] of Object.entries(metadata)) {
432
- if (!metadataFields.has(key)) {
433
- metadataFields.set(key, new Set());
434
- }
435
- metadataFields.get(key).add(value);
436
- }
437
- }
438
- catch (e) {
439
- // Skip invalid metadata
440
- }
441
- }
442
- }
443
- // Find fields with consistent values
444
- metadataFields.forEach((values, field) => {
445
- if (values.size === 1) {
446
- // All episodes have the same value for this field
447
- const value = Array.from(values)[0];
448
- patterns.push(`Consistent ${field}: ${value}`);
449
- }
450
- });
451
- return patterns;
452
- }
453
- /**
454
- * Analyze learning trend across episodes
455
- */
456
- analyzeLearningTrend(episodes) {
457
- if (episodes.length < 3)
458
- return null;
459
- // Sort by episode ID (temporal order)
460
- const sorted = [...episodes].sort((a, b) => a.id - b.id);
461
- const firstHalfReward = sorted.slice(0, Math.floor(sorted.length / 2))
462
- .reduce((sum, ep) => sum + ep.reward, 0) / Math.floor(sorted.length / 2);
463
- const secondHalfReward = sorted.slice(Math.floor(sorted.length / 2))
464
- .reduce((sum, ep) => sum + ep.reward, 0) / (sorted.length - Math.floor(sorted.length / 2));
465
- const improvement = ((secondHalfReward - firstHalfReward) / firstHalfReward) * 100;
466
- if (improvement > 10) {
467
- return `Strong learning curve (+${improvement.toFixed(0)}% improvement)`;
468
- }
469
- else if (improvement > 5) {
470
- return `Moderate learning curve (+${improvement.toFixed(0)}% improvement)`;
471
- }
472
- else if (Math.abs(improvement) < 5) {
473
- return `Stable performance (±${Math.abs(improvement).toFixed(0)}%)`;
474
- }
475
- return null;
476
- }
477
- /**
478
- * Calculate pattern confidence score based on sample size and success rate
479
- */
480
- calculatePatternConfidence(sampleSize, successRate) {
481
- // Confidence increases with sample size and success rate
482
- // Using a sigmoid-like function for smooth scaling
483
- const sampleFactor = Math.min(sampleSize / 10, 1.0); // Saturates at 10 samples
484
- const successFactor = successRate;
485
- return Math.min(sampleFactor * successFactor, 0.99);
486
- }
487
- /**
488
- * Prune underperforming skills
489
- */
490
- pruneSkills(config) {
491
- const { minUses = 3, minSuccessRate = 0.4, maxAgeDays = 60 } = config;
492
- const stmt = this.db.prepare(`
493
- DELETE FROM skills
494
- WHERE uses < ?
495
- AND success_rate < ?
496
- AND created_at < strftime('%s', 'now') - ?
497
- `);
498
- const result = stmt.run(minUses, minSuccessRate, maxAgeDays * 86400);
499
- return result.changes;
500
- }
501
- // ========================================================================
502
- // Private Helper Methods
503
- // ========================================================================
504
- getSkillById(id) {
505
- const stmt = this.db.prepare('SELECT * FROM skills WHERE id = ?');
506
- const row = stmt.get(id);
507
- if (!row)
508
- throw new Error(`Skill ${id} not found`);
509
- return this.rowToSkill(row);
510
- }
511
- rowToSkill(row) {
512
- return {
513
- id: row.id,
514
- name: row.name,
515
- description: row.description,
516
- signature: JSON.parse(row.signature),
517
- code: row.code,
518
- successRate: row.success_rate,
519
- uses: row.uses,
520
- avgReward: row.avg_reward,
521
- avgLatencyMs: row.avg_latency_ms,
522
- createdFromEpisode: row.created_from_episode,
523
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined
524
- };
525
- }
526
- buildSkillText(skill) {
527
- const parts = [skill.name];
528
- if (skill.description)
529
- parts.push(skill.description);
530
- parts.push(JSON.stringify(skill.signature));
531
- return parts.join('\n');
532
- }
533
- /**
534
- * Compute composite skill score from similarity and metadata
535
- * VectorBackend provides normalized similarity (0-1)
536
- */
537
- computeSkillScore(skill) {
538
- // Composite score: similarity * 0.4 + success_rate * 0.3 + (uses/1000) * 0.1 + avg_reward * 0.2
539
- const uses = skill.uses ?? 0;
540
- const avgReward = skill.avgReward ?? 0;
541
- return (skill.similarity * 0.4 +
542
- skill.successRate * 0.3 +
543
- Math.min(uses / 1000, 1.0) * 0.1 +
544
- avgReward * 0.2);
545
- }
546
- }
547
- //# sourceMappingURL=SkillLibrary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillLibrary.js","sourceRoot":"","sources":["../../src/controllers/SkillLibrary.ts"],"names":[],"mappings":"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"}