cognitive-core 0.0.1 → 0.1.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.
Files changed (329) hide show
  1. package/README.md +363 -2
  2. package/SKILL.md +193 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +5 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/mock-provider.d.ts +23 -0
  8. package/dist/agents/mock-provider.d.ts.map +1 -0
  9. package/dist/agents/mock-provider.js +71 -0
  10. package/dist/agents/mock-provider.js.map +1 -0
  11. package/dist/agents/types.d.ts +98 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +44 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/atlas.d.ts +196 -0
  16. package/dist/atlas.d.ts.map +1 -0
  17. package/dist/atlas.js +373 -0
  18. package/dist/atlas.js.map +1 -0
  19. package/dist/bin/cognitive-core.d.ts +18 -0
  20. package/dist/bin/cognitive-core.d.ts.map +1 -0
  21. package/dist/bin/cognitive-core.js +419 -0
  22. package/dist/bin/cognitive-core.js.map +1 -0
  23. package/dist/embeddings/bm25.d.ts +104 -0
  24. package/dist/embeddings/bm25.d.ts.map +1 -0
  25. package/dist/embeddings/bm25.js +264 -0
  26. package/dist/embeddings/bm25.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +12 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +16 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/manager.d.ts +112 -0
  32. package/dist/embeddings/manager.d.ts.map +1 -0
  33. package/dist/embeddings/manager.js +215 -0
  34. package/dist/embeddings/manager.js.map +1 -0
  35. package/dist/embeddings/provider.d.ts +101 -0
  36. package/dist/embeddings/provider.d.ts.map +1 -0
  37. package/dist/embeddings/provider.js +232 -0
  38. package/dist/embeddings/provider.js.map +1 -0
  39. package/dist/embeddings/vector-store.d.ts +101 -0
  40. package/dist/embeddings/vector-store.d.ts.map +1 -0
  41. package/dist/embeddings/vector-store.js +256 -0
  42. package/dist/embeddings/vector-store.js.map +1 -0
  43. package/dist/factory.d.ts +193 -0
  44. package/dist/factory.d.ts.map +1 -0
  45. package/dist/factory.js +109 -0
  46. package/dist/factory.js.map +1 -0
  47. package/dist/index.d.ts +43 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/learning/analyzer.d.ts +110 -0
  52. package/dist/learning/analyzer.d.ts.map +1 -0
  53. package/dist/learning/analyzer.js +213 -0
  54. package/dist/learning/analyzer.js.map +1 -0
  55. package/dist/learning/effectiveness.d.ts +158 -0
  56. package/dist/learning/effectiveness.d.ts.map +1 -0
  57. package/dist/learning/effectiveness.js +251 -0
  58. package/dist/learning/effectiveness.js.map +1 -0
  59. package/dist/learning/index.d.ts +8 -0
  60. package/dist/learning/index.d.ts.map +1 -0
  61. package/dist/learning/index.js +11 -0
  62. package/dist/learning/index.js.map +1 -0
  63. package/dist/learning/llm-extractor.d.ts +88 -0
  64. package/dist/learning/llm-extractor.d.ts.map +1 -0
  65. package/dist/learning/llm-extractor.js +372 -0
  66. package/dist/learning/llm-extractor.js.map +1 -0
  67. package/dist/learning/meta-learner.d.ts +80 -0
  68. package/dist/learning/meta-learner.d.ts.map +1 -0
  69. package/dist/learning/meta-learner.js +355 -0
  70. package/dist/learning/meta-learner.js.map +1 -0
  71. package/dist/learning/pipeline.d.ts +65 -0
  72. package/dist/learning/pipeline.d.ts.map +1 -0
  73. package/dist/learning/pipeline.js +170 -0
  74. package/dist/learning/pipeline.js.map +1 -0
  75. package/dist/learning/playbook-extractor.d.ts +113 -0
  76. package/dist/learning/playbook-extractor.d.ts.map +1 -0
  77. package/dist/learning/playbook-extractor.js +523 -0
  78. package/dist/learning/playbook-extractor.js.map +1 -0
  79. package/dist/learning/usage-inference.d.ts +82 -0
  80. package/dist/learning/usage-inference.d.ts.map +1 -0
  81. package/dist/learning/usage-inference.js +261 -0
  82. package/dist/learning/usage-inference.js.map +1 -0
  83. package/dist/mcp/index.d.ts +6 -0
  84. package/dist/mcp/index.d.ts.map +1 -0
  85. package/dist/mcp/index.js +6 -0
  86. package/dist/mcp/index.js.map +1 -0
  87. package/dist/mcp/playbook-server.d.ts +120 -0
  88. package/dist/mcp/playbook-server.d.ts.map +1 -0
  89. package/dist/mcp/playbook-server.js +427 -0
  90. package/dist/mcp/playbook-server.js.map +1 -0
  91. package/dist/memory/curated-loader.d.ts +62 -0
  92. package/dist/memory/curated-loader.d.ts.map +1 -0
  93. package/dist/memory/curated-loader.js +106 -0
  94. package/dist/memory/curated-loader.js.map +1 -0
  95. package/dist/memory/experience.d.ts +122 -0
  96. package/dist/memory/experience.d.ts.map +1 -0
  97. package/dist/memory/experience.js +392 -0
  98. package/dist/memory/experience.js.map +1 -0
  99. package/dist/memory/index.d.ts +6 -0
  100. package/dist/memory/index.d.ts.map +1 -0
  101. package/dist/memory/index.js +9 -0
  102. package/dist/memory/index.js.map +1 -0
  103. package/dist/memory/meta.d.ts +90 -0
  104. package/dist/memory/meta.d.ts.map +1 -0
  105. package/dist/memory/meta.js +362 -0
  106. package/dist/memory/meta.js.map +1 -0
  107. package/dist/memory/playbook.d.ts +133 -0
  108. package/dist/memory/playbook.d.ts.map +1 -0
  109. package/dist/memory/playbook.js +357 -0
  110. package/dist/memory/playbook.js.map +1 -0
  111. package/dist/memory/system.d.ts +167 -0
  112. package/dist/memory/system.d.ts.map +1 -0
  113. package/dist/memory/system.js +383 -0
  114. package/dist/memory/system.js.map +1 -0
  115. package/dist/runtime/backends/acp.d.ts +67 -0
  116. package/dist/runtime/backends/acp.d.ts.map +1 -0
  117. package/dist/runtime/backends/acp.js +290 -0
  118. package/dist/runtime/backends/acp.js.map +1 -0
  119. package/dist/runtime/backends/index.d.ts +5 -0
  120. package/dist/runtime/backends/index.d.ts.map +1 -0
  121. package/dist/runtime/backends/index.js +6 -0
  122. package/dist/runtime/backends/index.js.map +1 -0
  123. package/dist/runtime/backends/mock.d.ts +67 -0
  124. package/dist/runtime/backends/mock.d.ts.map +1 -0
  125. package/dist/runtime/backends/mock.js +153 -0
  126. package/dist/runtime/backends/mock.js.map +1 -0
  127. package/dist/runtime/backends/subprocess.d.ts +56 -0
  128. package/dist/runtime/backends/subprocess.d.ts.map +1 -0
  129. package/dist/runtime/backends/subprocess.js +260 -0
  130. package/dist/runtime/backends/subprocess.js.map +1 -0
  131. package/dist/runtime/flows/learning.d.ts +73 -0
  132. package/dist/runtime/flows/learning.d.ts.map +1 -0
  133. package/dist/runtime/flows/learning.js +116 -0
  134. package/dist/runtime/flows/learning.js.map +1 -0
  135. package/dist/runtime/flows/validation.d.ts +122 -0
  136. package/dist/runtime/flows/validation.d.ts.map +1 -0
  137. package/dist/runtime/flows/validation.js +223 -0
  138. package/dist/runtime/flows/validation.js.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/index.js +8 -0
  142. package/dist/runtime/index.js.map +1 -0
  143. package/dist/runtime/manager.d.ts +116 -0
  144. package/dist/runtime/manager.d.ts.map +1 -0
  145. package/dist/runtime/manager.js +416 -0
  146. package/dist/runtime/manager.js.map +1 -0
  147. package/dist/runtime/types.d.ts +138 -0
  148. package/dist/runtime/types.d.ts.map +1 -0
  149. package/dist/runtime/types.js +2 -0
  150. package/dist/runtime/types.js.map +1 -0
  151. package/dist/search/evaluator.d.ts +102 -0
  152. package/dist/search/evaluator.d.ts.map +1 -0
  153. package/dist/search/evaluator.js +352 -0
  154. package/dist/search/evaluator.js.map +1 -0
  155. package/dist/search/index.d.ts +7 -0
  156. package/dist/search/index.d.ts.map +1 -0
  157. package/dist/search/index.js +11 -0
  158. package/dist/search/index.js.map +1 -0
  159. package/dist/search/refinement-loop.d.ts +73 -0
  160. package/dist/search/refinement-loop.d.ts.map +1 -0
  161. package/dist/search/refinement-loop.js +245 -0
  162. package/dist/search/refinement-loop.js.map +1 -0
  163. package/dist/search/refinement-types.d.ts +154 -0
  164. package/dist/search/refinement-types.d.ts.map +1 -0
  165. package/dist/search/refinement-types.js +99 -0
  166. package/dist/search/refinement-types.js.map +1 -0
  167. package/dist/search/router.d.ts +61 -0
  168. package/dist/search/router.d.ts.map +1 -0
  169. package/dist/search/router.js +197 -0
  170. package/dist/search/router.js.map +1 -0
  171. package/dist/search/solver.d.ts +75 -0
  172. package/dist/search/solver.d.ts.map +1 -0
  173. package/dist/search/solver.js +216 -0
  174. package/dist/search/solver.js.map +1 -0
  175. package/dist/search/verification-runner.d.ts +125 -0
  176. package/dist/search/verification-runner.d.ts.map +1 -0
  177. package/dist/search/verification-runner.js +440 -0
  178. package/dist/search/verification-runner.js.map +1 -0
  179. package/dist/surfacing/index.d.ts +2 -0
  180. package/dist/surfacing/index.d.ts.map +1 -0
  181. package/dist/surfacing/index.js +2 -0
  182. package/dist/surfacing/index.js.map +1 -0
  183. package/dist/surfacing/skill-library.d.ts +158 -0
  184. package/dist/surfacing/skill-library.d.ts.map +1 -0
  185. package/dist/surfacing/skill-library.js +429 -0
  186. package/dist/surfacing/skill-library.js.map +1 -0
  187. package/dist/types/config.d.ts +1113 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +274 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +14 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/memory.d.ts +339 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +207 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/meta.d.ts +146 -0
  200. package/dist/types/meta.d.ts.map +1 -0
  201. package/dist/types/meta.js +51 -0
  202. package/dist/types/meta.js.map +1 -0
  203. package/dist/types/outcome.d.ts +42 -0
  204. package/dist/types/outcome.d.ts.map +1 -0
  205. package/dist/types/outcome.js +50 -0
  206. package/dist/types/outcome.js.map +1 -0
  207. package/dist/types/playbook.d.ts +119 -0
  208. package/dist/types/playbook.d.ts.map +1 -0
  209. package/dist/types/playbook.js +71 -0
  210. package/dist/types/playbook.js.map +1 -0
  211. package/dist/types/step.d.ts +44 -0
  212. package/dist/types/step.d.ts.map +1 -0
  213. package/dist/types/step.js +32 -0
  214. package/dist/types/step.js.map +1 -0
  215. package/dist/types/task.d.ts +91 -0
  216. package/dist/types/task.d.ts.map +1 -0
  217. package/dist/types/task.js +39 -0
  218. package/dist/types/task.js.map +1 -0
  219. package/dist/types/trajectory.d.ts +221 -0
  220. package/dist/types/trajectory.d.ts.map +1 -0
  221. package/dist/types/trajectory.js +60 -0
  222. package/dist/types/trajectory.js.map +1 -0
  223. package/dist/utils/index.d.ts +4 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +4 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/similarity.d.ts +31 -0
  228. package/dist/utils/similarity.d.ts.map +1 -0
  229. package/dist/utils/similarity.js +107 -0
  230. package/dist/utils/similarity.js.map +1 -0
  231. package/dist/utils/storage.d.ts +106 -0
  232. package/dist/utils/storage.d.ts.map +1 -0
  233. package/dist/utils/storage.js +203 -0
  234. package/dist/utils/storage.js.map +1 -0
  235. package/dist/utils/validation.d.ts +129 -0
  236. package/dist/utils/validation.d.ts.map +1 -0
  237. package/dist/utils/validation.js +171 -0
  238. package/dist/utils/validation.js.map +1 -0
  239. package/package.json +61 -9
  240. package/scripts/migrate-to-playbooks.ts +307 -0
  241. package/src/agents/index.ts +14 -0
  242. package/src/agents/mock-provider.ts +93 -0
  243. package/src/agents/types.ts +137 -0
  244. package/src/atlas.ts +560 -0
  245. package/src/bin/cognitive-core.ts +470 -0
  246. package/src/embeddings/bm25.ts +337 -0
  247. package/src/embeddings/index.ts +39 -0
  248. package/src/embeddings/manager.ts +288 -0
  249. package/src/embeddings/provider.ts +311 -0
  250. package/src/embeddings/vector-store.ts +353 -0
  251. package/src/factory.ts +263 -0
  252. package/src/index.ts +246 -0
  253. package/src/learning/analyzer.ts +335 -0
  254. package/src/learning/effectiveness.ts +428 -0
  255. package/src/learning/index.ts +58 -0
  256. package/src/learning/llm-extractor.ts +542 -0
  257. package/src/learning/meta-learner.ts +516 -0
  258. package/src/learning/pipeline.ts +244 -0
  259. package/src/learning/playbook-extractor.ts +702 -0
  260. package/src/learning/usage-inference.ts +372 -0
  261. package/src/mcp/index.ts +12 -0
  262. package/src/mcp/playbook-server.ts +565 -0
  263. package/src/memory/curated-loader.ts +160 -0
  264. package/src/memory/experience.ts +515 -0
  265. package/src/memory/index.ts +27 -0
  266. package/src/memory/meta.ts +506 -0
  267. package/src/memory/playbook.ts +493 -0
  268. package/src/memory/system.ts +551 -0
  269. package/src/runtime/backends/acp.ts +378 -0
  270. package/src/runtime/backends/index.ts +24 -0
  271. package/src/runtime/backends/mock.ts +218 -0
  272. package/src/runtime/backends/subprocess.ts +356 -0
  273. package/src/runtime/flows/learning.ts +183 -0
  274. package/src/runtime/flows/validation.ts +381 -0
  275. package/src/runtime/index.ts +53 -0
  276. package/src/runtime/manager.ts +541 -0
  277. package/src/runtime/types.ts +157 -0
  278. package/src/search/evaluator.ts +474 -0
  279. package/src/search/index.ts +59 -0
  280. package/src/search/refinement-loop.ts +363 -0
  281. package/src/search/refinement-types.ts +159 -0
  282. package/src/search/router.ts +261 -0
  283. package/src/search/solver.ts +303 -0
  284. package/src/search/verification-runner.ts +570 -0
  285. package/src/surfacing/index.ts +6 -0
  286. package/src/surfacing/skill-library.ts +594 -0
  287. package/src/types/config.ts +333 -0
  288. package/src/types/index.ts +130 -0
  289. package/src/types/memory.ts +270 -0
  290. package/src/types/meta.ts +218 -0
  291. package/src/types/outcome.ts +66 -0
  292. package/src/types/playbook.ts +196 -0
  293. package/src/types/step.ts +40 -0
  294. package/src/types/task.ts +52 -0
  295. package/src/types/trajectory.ts +80 -0
  296. package/src/utils/index.ts +38 -0
  297. package/src/utils/similarity.ts +139 -0
  298. package/src/utils/storage.ts +249 -0
  299. package/src/utils/validation.ts +286 -0
  300. package/tests/embeddings/bm25.test.ts +130 -0
  301. package/tests/embeddings/manager.test.ts +205 -0
  302. package/tests/integration/atlas.test.ts +266 -0
  303. package/tests/integration/e2e.test.ts +929 -0
  304. package/tests/learning/analyzer.test.ts +426 -0
  305. package/tests/learning/effectiveness.test.ts +542 -0
  306. package/tests/learning/pipeline.test.ts +176 -0
  307. package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
  308. package/tests/learning/usage-inference.test.ts +254 -0
  309. package/tests/mcp/playbook-server.test.ts +252 -0
  310. package/tests/memory/experience.test.ts +198 -0
  311. package/tests/memory/playbook.test.ts +338 -0
  312. package/tests/memory/provenance.test.ts +639 -0
  313. package/tests/memory/system.test.ts +325 -0
  314. package/tests/runtime/agent-manager.test.ts +512 -0
  315. package/tests/runtime/mock-backend.test.ts +248 -0
  316. package/tests/search/refinement-loop.test.ts +468 -0
  317. package/tests/search/refinement.test.ts +267 -0
  318. package/tests/search/router.test.ts +427 -0
  319. package/tests/surfacing/skill-library.test.ts +292 -0
  320. package/tests/types/outcome.test.ts +147 -0
  321. package/tests/types/step.test.ts +133 -0
  322. package/tests/types/task.test.ts +158 -0
  323. package/tests/types/trajectory.test.ts +253 -0
  324. package/tests/utils/similarity.test.ts +188 -0
  325. package/tests/utils/validation.test.ts +252 -0
  326. package/tsconfig.json +25 -0
  327. package/vitest.config.ts +22 -0
  328. package/index.d.ts +0 -4
  329. package/index.js +0 -4
@@ -0,0 +1,122 @@
1
+ import type { Experience } from '../types/index.js';
2
+ /**
3
+ * Result of pruning operation
4
+ */
5
+ export interface PruneResult {
6
+ /** IDs of pruned experiences */
7
+ prunedIds: string[];
8
+ /** IDs organized by pruning reason */
9
+ prunedByReason: {
10
+ age: string[];
11
+ usage: string[];
12
+ capacity: string[];
13
+ redundancy: string[];
14
+ failedOld: string[];
15
+ };
16
+ /** Total number pruned */
17
+ totalPruned: number;
18
+ /** Count remaining after pruning */
19
+ remainingCount: number;
20
+ }
21
+ /**
22
+ * Experience Memory - ReMem-style task-level retrieval
23
+ * Stores complete (task, solution, feedback) tuples
24
+ */
25
+ export declare class ExperienceMemory {
26
+ private _store;
27
+ private initialized;
28
+ constructor(baseDir: string);
29
+ init(): Promise<void>;
30
+ /**
31
+ * Store a new experience
32
+ */
33
+ add(experience: Experience): Promise<void>;
34
+ /**
35
+ * Retrieve an experience by ID
36
+ */
37
+ get(id: string): Promise<Experience | undefined>;
38
+ /**
39
+ * Find similar experiences
40
+ * Uses embedding similarity if available, falls back to text similarity
41
+ */
42
+ findSimilar(query: string | number[], options?: {
43
+ k?: number;
44
+ domain?: string;
45
+ minScore?: number;
46
+ successOnly?: boolean;
47
+ }): Promise<Array<{
48
+ experience: Experience;
49
+ score: number;
50
+ }>>;
51
+ /**
52
+ * Update an experience (e.g., after refinement)
53
+ */
54
+ update(id: string, updates: Partial<Experience>): Promise<Experience | undefined>;
55
+ /**
56
+ * Increment usage count
57
+ */
58
+ recordUsage(id: string): Promise<void>;
59
+ /**
60
+ * Get all experiences
61
+ */
62
+ getAll(): Promise<Experience[]>;
63
+ /**
64
+ * Get experiences by trajectory
65
+ */
66
+ getByTrajectory(trajectoryId: string): Promise<Experience[]>;
67
+ /**
68
+ * Prune low-value experiences
69
+ */
70
+ prune(options?: {
71
+ maxCount?: number;
72
+ minUsageCount?: number;
73
+ maxAgeDays?: number;
74
+ removeFailedOlderThanDays?: number;
75
+ similarityThreshold?: number;
76
+ preserveDomainCoverage?: boolean;
77
+ }): Promise<PruneResult>;
78
+ /**
79
+ * Find redundant experiences (similar to others, lower value)
80
+ */
81
+ private findRedundant;
82
+ /**
83
+ * Compute similarity between two experiences
84
+ */
85
+ private computeSimilarity;
86
+ /**
87
+ * Select experiences while preserving domain coverage
88
+ */
89
+ private selectWithDomainCoverage;
90
+ /**
91
+ * Compute value score for an experience
92
+ */
93
+ private computeValue;
94
+ /**
95
+ * Get pruning statistics
96
+ */
97
+ getPruningStats(): Promise<{
98
+ total: number;
99
+ byDomain: Record<string, number>;
100
+ bySuccess: {
101
+ success: number;
102
+ failure: number;
103
+ };
104
+ oldestDate: Date | null;
105
+ newestDate: Date | null;
106
+ averageUsage: number;
107
+ suggestedPrunes: {
108
+ lowUsage: number;
109
+ old: number;
110
+ failedOld: number;
111
+ };
112
+ }>;
113
+ /**
114
+ * Get count
115
+ */
116
+ count(): Promise<number>;
117
+ /**
118
+ * Close the store
119
+ */
120
+ close(): Promise<void>;
121
+ }
122
+ //# sourceMappingURL=experience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../src/memory/experience.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,392 @@
1
+ import { JsonStore } from '../utils/storage.js';
2
+ import { findTopK } from '../utils/similarity.js';
3
+ /**
4
+ * Experience Memory - ReMem-style task-level retrieval
5
+ * Stores complete (task, solution, feedback) tuples
6
+ */
7
+ export class ExperienceMemory {
8
+ _store;
9
+ initialized = false;
10
+ constructor(baseDir) {
11
+ this._store = new JsonStore(baseDir, 'experiences', {
12
+ autoSaveInterval: 60000,
13
+ pretty: true,
14
+ });
15
+ }
16
+ async init() {
17
+ if (this.initialized)
18
+ return;
19
+ await this._store.init();
20
+ this.initialized = true;
21
+ }
22
+ /**
23
+ * Store a new experience
24
+ */
25
+ async add(experience) {
26
+ await this.init();
27
+ this._store.set(experience.id, experience);
28
+ await this._store.save(experience.id);
29
+ }
30
+ /**
31
+ * Retrieve an experience by ID
32
+ */
33
+ async get(id) {
34
+ await this.init();
35
+ return this._store.get(id);
36
+ }
37
+ /**
38
+ * Find similar experiences
39
+ * Uses embedding similarity if available, falls back to text similarity
40
+ */
41
+ async findSimilar(query, options) {
42
+ await this.init();
43
+ const k = options?.k ?? 4; // ReMem default
44
+ let experiences = this._store.values();
45
+ // Filter by domain if specified
46
+ if (options?.domain) {
47
+ experiences = experiences.filter((e) => e.domain === options.domain);
48
+ }
49
+ // Filter by success if specified
50
+ if (options?.successOnly) {
51
+ experiences = experiences.filter((e) => e.success);
52
+ }
53
+ // Find similar experiences
54
+ const results = findTopK(query, experiences, (e) => (Array.isArray(query) ? e.embedding : e.taskInput), k).map(({ item, score }) => ({
55
+ experience: item,
56
+ score,
57
+ }));
58
+ // Filter by minimum score
59
+ if (options?.minScore !== undefined) {
60
+ return results.filter((r) => r.score >= options.minScore);
61
+ }
62
+ return results;
63
+ }
64
+ /**
65
+ * Update an experience (e.g., after refinement)
66
+ */
67
+ async update(id, updates) {
68
+ await this.init();
69
+ const existing = this._store.get(id);
70
+ if (!existing)
71
+ return undefined;
72
+ const updated = {
73
+ ...existing,
74
+ ...updates,
75
+ id: existing.id, // Preserve ID
76
+ };
77
+ this._store.set(id, updated);
78
+ await this._store.save(id);
79
+ return updated;
80
+ }
81
+ /**
82
+ * Increment usage count
83
+ */
84
+ async recordUsage(id) {
85
+ await this.init();
86
+ const existing = this._store.get(id);
87
+ if (existing) {
88
+ existing.usageCount++;
89
+ existing.lastAccessedAt = new Date();
90
+ this._store.set(id, existing);
91
+ }
92
+ }
93
+ /**
94
+ * Get all experiences
95
+ */
96
+ async getAll() {
97
+ await this.init();
98
+ return this._store.values();
99
+ }
100
+ /**
101
+ * Get experiences by trajectory
102
+ */
103
+ async getByTrajectory(trajectoryId) {
104
+ await this.init();
105
+ return this._store.values().filter((e) => e.trajectoryId === trajectoryId);
106
+ }
107
+ /**
108
+ * Prune low-value experiences
109
+ */
110
+ async prune(options) {
111
+ await this.init();
112
+ const pruned = [];
113
+ const prunedByReason = {
114
+ age: [],
115
+ usage: [],
116
+ capacity: [],
117
+ redundancy: [],
118
+ failedOld: [],
119
+ };
120
+ let experiences = this._store.values();
121
+ // 1. Prune by age
122
+ if (options?.maxAgeDays) {
123
+ const cutoff = Date.now() - options.maxAgeDays * 24 * 60 * 60 * 1000;
124
+ const oldExperiences = experiences.filter((e) => e.createdAt.getTime() < cutoff);
125
+ for (const exp of oldExperiences) {
126
+ this._store.delete(exp.id);
127
+ pruned.push(exp.id);
128
+ prunedByReason.age.push(exp.id);
129
+ }
130
+ experiences = experiences.filter((e) => e.createdAt.getTime() >= cutoff);
131
+ }
132
+ // 2. Prune failed experiences older than threshold
133
+ if (options?.removeFailedOlderThanDays) {
134
+ const cutoff = Date.now() - options.removeFailedOlderThanDays * 24 * 60 * 60 * 1000;
135
+ const failedOld = experiences.filter((e) => !e.success && e.createdAt.getTime() < cutoff);
136
+ for (const exp of failedOld) {
137
+ this._store.delete(exp.id);
138
+ pruned.push(exp.id);
139
+ prunedByReason.failedOld.push(exp.id);
140
+ }
141
+ experiences = experiences.filter((e) => e.success || e.createdAt.getTime() >= cutoff);
142
+ }
143
+ // 3. Prune by minimum usage count
144
+ if (options?.minUsageCount !== undefined) {
145
+ const lowUsage = experiences.filter((e) => e.usageCount < options.minUsageCount);
146
+ // Only prune low-usage if they're also old (>7 days)
147
+ const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
148
+ for (const exp of lowUsage) {
149
+ if (exp.createdAt.getTime() < sevenDaysAgo) {
150
+ this._store.delete(exp.id);
151
+ pruned.push(exp.id);
152
+ prunedByReason.usage.push(exp.id);
153
+ }
154
+ }
155
+ experiences = this._store.values(); // Refresh
156
+ }
157
+ // 4. Prune redundant/similar experiences
158
+ if (options?.similarityThreshold) {
159
+ const redundant = await this.findRedundant(experiences, options.similarityThreshold, options.preserveDomainCoverage);
160
+ for (const exp of redundant) {
161
+ this._store.delete(exp.id);
162
+ pruned.push(exp.id);
163
+ prunedByReason.redundancy.push(exp.id);
164
+ }
165
+ experiences = this._store.values(); // Refresh
166
+ }
167
+ // 5. Prune by count (keep most valuable)
168
+ if (options?.maxCount && experiences.length > options.maxCount) {
169
+ // Sort by value
170
+ experiences.sort((a, b) => {
171
+ const scoreA = this.computeValue(a);
172
+ const scoreB = this.computeValue(b);
173
+ return scoreB - scoreA;
174
+ });
175
+ // If preserving domain coverage, ensure each domain keeps some
176
+ if (options.preserveDomainCoverage) {
177
+ const kept = this.selectWithDomainCoverage(experiences, options.maxCount);
178
+ const keptIds = new Set(kept.map((e) => e.id));
179
+ for (const exp of experiences) {
180
+ if (!keptIds.has(exp.id)) {
181
+ this._store.delete(exp.id);
182
+ pruned.push(exp.id);
183
+ prunedByReason.capacity.push(exp.id);
184
+ }
185
+ }
186
+ }
187
+ else {
188
+ const toRemove = experiences.slice(options.maxCount);
189
+ for (const exp of toRemove) {
190
+ this._store.delete(exp.id);
191
+ pruned.push(exp.id);
192
+ prunedByReason.capacity.push(exp.id);
193
+ }
194
+ }
195
+ }
196
+ // Save changes
197
+ if (pruned.length > 0) {
198
+ await this._store.flush();
199
+ }
200
+ return {
201
+ prunedIds: pruned,
202
+ prunedByReason,
203
+ totalPruned: pruned.length,
204
+ remainingCount: this._store.size(),
205
+ };
206
+ }
207
+ /**
208
+ * Find redundant experiences (similar to others, lower value)
209
+ */
210
+ async findRedundant(experiences, threshold, preserveDomainCoverage = true) {
211
+ const redundant = [];
212
+ const kept = new Set();
213
+ const domainCounts = {};
214
+ // Sort by value (highest first)
215
+ const sorted = [...experiences].sort((a, b) => {
216
+ return this.computeValue(b) - this.computeValue(a);
217
+ });
218
+ for (const exp of sorted) {
219
+ // Check if similar to any kept experience
220
+ let isDuplicate = false;
221
+ for (const keptId of kept) {
222
+ const keptExp = experiences.find((e) => e.id === keptId);
223
+ if (keptExp && this.computeSimilarity(exp, keptExp) > threshold) {
224
+ isDuplicate = true;
225
+ break;
226
+ }
227
+ }
228
+ if (isDuplicate) {
229
+ // Check domain coverage
230
+ if (preserveDomainCoverage) {
231
+ const domainCount = domainCounts[exp.domain] ?? 0;
232
+ if (domainCount < 3) {
233
+ // Keep at least 3 per domain
234
+ kept.add(exp.id);
235
+ domainCounts[exp.domain] = domainCount + 1;
236
+ continue;
237
+ }
238
+ }
239
+ redundant.push(exp);
240
+ }
241
+ else {
242
+ kept.add(exp.id);
243
+ domainCounts[exp.domain] = (domainCounts[exp.domain] ?? 0) + 1;
244
+ }
245
+ }
246
+ return redundant;
247
+ }
248
+ /**
249
+ * Compute similarity between two experiences
250
+ */
251
+ computeSimilarity(a, b) {
252
+ // If both have embeddings, use cosine similarity
253
+ if (a.embedding && b.embedding) {
254
+ let dot = 0;
255
+ let normA = 0;
256
+ let normB = 0;
257
+ for (let i = 0; i < a.embedding.length; i++) {
258
+ dot += a.embedding[i] * b.embedding[i];
259
+ normA += a.embedding[i] * a.embedding[i];
260
+ normB += b.embedding[i] * b.embedding[i];
261
+ }
262
+ return dot / (Math.sqrt(normA) * Math.sqrt(normB) || 1);
263
+ }
264
+ // Fall back to Jaccard similarity on task input words
265
+ const wordsA = new Set(a.taskInput.toLowerCase().split(/\s+/));
266
+ const wordsB = new Set(b.taskInput.toLowerCase().split(/\s+/));
267
+ const intersection = new Set([...wordsA].filter((x) => wordsB.has(x)));
268
+ const union = new Set([...wordsA, ...wordsB]);
269
+ return intersection.size / union.size;
270
+ }
271
+ /**
272
+ * Select experiences while preserving domain coverage
273
+ */
274
+ selectWithDomainCoverage(experiences, maxCount) {
275
+ const selected = [];
276
+ const domainCounts = {};
277
+ const domains = [...new Set(experiences.map((e) => e.domain))];
278
+ const minPerDomain = Math.max(1, Math.floor(maxCount / (domains.length * 2)));
279
+ // First pass: ensure minimum per domain
280
+ for (const domain of domains) {
281
+ const domainExps = experiences
282
+ .filter((e) => e.domain === domain)
283
+ .sort((a, b) => this.computeValue(b) - this.computeValue(a));
284
+ for (let i = 0; i < Math.min(minPerDomain, domainExps.length); i++) {
285
+ if (selected.length < maxCount) {
286
+ selected.push(domainExps[i]);
287
+ domainCounts[domain] = (domainCounts[domain] ?? 0) + 1;
288
+ }
289
+ }
290
+ }
291
+ // Second pass: fill remaining slots with highest value
292
+ const selectedIds = new Set(selected.map((e) => e.id));
293
+ const remaining = experiences
294
+ .filter((e) => !selectedIds.has(e.id))
295
+ .sort((a, b) => this.computeValue(b) - this.computeValue(a));
296
+ for (const exp of remaining) {
297
+ if (selected.length >= maxCount)
298
+ break;
299
+ selected.push(exp);
300
+ }
301
+ return selected;
302
+ }
303
+ /**
304
+ * Compute value score for an experience
305
+ */
306
+ computeValue(exp) {
307
+ const ageMs = Date.now() - exp.createdAt.getTime();
308
+ const ageDays = ageMs / (1000 * 60 * 60 * 24);
309
+ const recencyScore = Math.exp(-ageDays / 30); // Decay over ~30 days
310
+ // Access recency bonus
311
+ const accessAgeMs = exp.lastAccessedAt
312
+ ? Date.now() - exp.lastAccessedAt.getTime()
313
+ : ageMs;
314
+ const accessAgeDays = accessAgeMs / (1000 * 60 * 60 * 24);
315
+ const accessRecencyScore = Math.exp(-accessAgeDays / 14); // Decay over ~14 days
316
+ return ((exp.success ? 1 : 0.3) * // Success bonus
317
+ (1 + Math.log(exp.usageCount + 1)) * // Usage bonus (log scale)
318
+ (recencyScore * 0.5 + accessRecencyScore * 0.5) // Combined recency
319
+ );
320
+ }
321
+ /**
322
+ * Get pruning statistics
323
+ */
324
+ async getPruningStats() {
325
+ await this.init();
326
+ const experiences = this._store.values();
327
+ const byDomain = {};
328
+ let successCount = 0;
329
+ let totalUsage = 0;
330
+ let oldestDate = null;
331
+ let newestDate = null;
332
+ const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
333
+ const thirtyDaysAgo = Date.now() - 30 * 24 * 60 * 60 * 1000;
334
+ let lowUsageCount = 0;
335
+ let oldCount = 0;
336
+ let failedOldCount = 0;
337
+ for (const exp of experiences) {
338
+ // Domain counts
339
+ byDomain[exp.domain] = (byDomain[exp.domain] ?? 0) + 1;
340
+ // Success counts
341
+ if (exp.success)
342
+ successCount++;
343
+ // Usage sum
344
+ totalUsage += exp.usageCount;
345
+ // Date tracking
346
+ const createdAt = exp.createdAt;
347
+ if (!oldestDate || createdAt < oldestDate)
348
+ oldestDate = createdAt;
349
+ if (!newestDate || createdAt > newestDate)
350
+ newestDate = createdAt;
351
+ // Suggested prunes
352
+ if (exp.usageCount === 0 && createdAt.getTime() < sevenDaysAgo) {
353
+ lowUsageCount++;
354
+ }
355
+ if (createdAt.getTime() < thirtyDaysAgo) {
356
+ oldCount++;
357
+ if (!exp.success)
358
+ failedOldCount++;
359
+ }
360
+ }
361
+ return {
362
+ total: experiences.length,
363
+ byDomain,
364
+ bySuccess: {
365
+ success: successCount,
366
+ failure: experiences.length - successCount,
367
+ },
368
+ oldestDate,
369
+ newestDate,
370
+ averageUsage: experiences.length > 0 ? totalUsage / experiences.length : 0,
371
+ suggestedPrunes: {
372
+ lowUsage: lowUsageCount,
373
+ old: oldCount,
374
+ failedOld: failedOldCount,
375
+ },
376
+ };
377
+ }
378
+ /**
379
+ * Get count
380
+ */
381
+ async count() {
382
+ await this.init();
383
+ return this._store.size();
384
+ }
385
+ /**
386
+ * Close the store
387
+ */
388
+ async close() {
389
+ await this._store.close();
390
+ }
391
+ }
392
+ //# sourceMappingURL=experience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/memory/experience.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { ExperienceMemory, type PruneResult } from './experience.js';
2
+ export { MemorySystem, createMemorySystem, type MemoryQueryResult, type MemoryQueryResultV2, } from './system.js';
3
+ export { PlaybookLibrary, createPlaybookLibrary, type PlaybookMatch, } from './playbook.js';
4
+ export { MetaMemory, createMetaMemory, } from './meta.js';
5
+ export { loadCuratedPlaybooks, type CuratedPlaybookFile, type CuratedLoadResult, } from './curated-loader.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { ExperienceMemory } from './experience.js';
2
+ export { MemorySystem, createMemorySystem, } from './system.js';
3
+ // Playbook-based memory
4
+ export { PlaybookLibrary, createPlaybookLibrary, } from './playbook.js';
5
+ // Meta-learning memory
6
+ export { MetaMemory, createMetaMemory, } from './meta.js';
7
+ // Curated playbook loading
8
+ export { loadCuratedPlaybooks, } from './curated-loader.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAErB,wBAAwB;AACxB,OAAO,EACL,eAAe,EACf,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AAEvB,uBAAuB;AACvB,OAAO,EACL,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,2BAA2B;AAC3B,OAAO,EACL,oBAAoB,GAGrB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Meta Memory - Learning about learning
3
+ * Tracks routing decisions, memory effectiveness, and execution patterns
4
+ * to improve future learning and routing decisions
5
+ */
6
+ import type { MetaObservation, MetaStrategy, RoutingAnalysis, RetrievalAnalysis, MetaStats, MetaContext, RoutingDecisionType } from '../types/index.js';
7
+ /**
8
+ * Filter options for querying observations
9
+ */
10
+ export interface ObservationFilter {
11
+ routingDecision?: RoutingDecisionType;
12
+ outcome?: 'success' | 'failure';
13
+ minDate?: Date;
14
+ maxDate?: Date;
15
+ limit?: number;
16
+ }
17
+ /**
18
+ * Meta Memory - Store for meta-learning observations and strategies
19
+ */
20
+ export declare class MetaMemory {
21
+ private observations;
22
+ private strategies;
23
+ private initialized;
24
+ constructor(baseDir: string);
25
+ init(): Promise<void>;
26
+ /**
27
+ * Record a meta-observation after task completion
28
+ */
29
+ recordObservation(observation: MetaObservation): Promise<void>;
30
+ /**
31
+ * Get observations for analysis
32
+ */
33
+ getObservations(filter?: ObservationFilter): Promise<MetaObservation[]>;
34
+ /**
35
+ * Get observation by trajectory ID
36
+ */
37
+ getByTrajectoryId(trajectoryId: string): Promise<MetaObservation | undefined>;
38
+ /**
39
+ * Analyze routing effectiveness
40
+ * Returns: which routing decisions lead to success in which contexts
41
+ */
42
+ analyzeRoutingEffectiveness(): Promise<RoutingAnalysis>;
43
+ /**
44
+ * Analyze memory retrieval quality
45
+ * Returns: which retrieval patterns help vs mislead
46
+ */
47
+ analyzeRetrievalQuality(): Promise<RetrievalAnalysis>;
48
+ /**
49
+ * Generate meta-strategies from observations
50
+ * Called periodically to distill learning patterns
51
+ */
52
+ generateMetaStrategies(): Promise<MetaStrategy[]>;
53
+ /**
54
+ * Get routing adjustments for current context
55
+ */
56
+ getRoutingAdjustments(context: MetaContext): Promise<MetaStrategy[]>;
57
+ /**
58
+ * Record strategy application result
59
+ */
60
+ recordStrategyApplication(strategyId: string, success: boolean): Promise<void>;
61
+ /**
62
+ * Add a meta-strategy
63
+ */
64
+ addStrategy(strategy: MetaStrategy): Promise<void>;
65
+ /**
66
+ * Get a meta-strategy by ID
67
+ */
68
+ getStrategy(id: string): Promise<MetaStrategy | undefined>;
69
+ /**
70
+ * Get all meta-strategies
71
+ */
72
+ getAllStrategies(): Promise<MetaStrategy[]>;
73
+ /**
74
+ * Get statistics about meta-learning
75
+ */
76
+ getStats(): Promise<MetaStats>;
77
+ /**
78
+ * Prune old observations to save space
79
+ */
80
+ pruneOldObservations(maxAge?: number): Promise<number>;
81
+ /**
82
+ * Close the stores
83
+ */
84
+ close(): Promise<void>;
85
+ }
86
+ /**
87
+ * Create a meta memory store
88
+ */
89
+ export declare function createMetaMemory(baseDir: string): MetaMemory;
90
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/memory/meta.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAI3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,MAAM;IAerB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE;;OAEG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwC7E;;OAEG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IASvC;;;OAGG;IACG,2BAA2B,IAAI,OAAO,CAAC,eAAe,CAAC;IAuC7D;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA4C3D;;;OAGG;IACG,sBAAsB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA2GvD;;OAEG;IACG,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAgC1E;;OAEG;IACG,yBAAyB,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAKhE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKjD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IA2DpC;;OAEG;IACG,oBAAoB,CAAC,MAAM,GAAE,MAAiC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAE5D"}