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,362 @@
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 { createMetaStrategy } from '../types/index.js';
7
+ import { JsonStore } from '../utils/storage.js';
8
+ /**
9
+ * Meta Memory - Store for meta-learning observations and strategies
10
+ */
11
+ export class MetaMemory {
12
+ observations;
13
+ strategies;
14
+ initialized = false;
15
+ constructor(baseDir) {
16
+ this.observations = new JsonStore(baseDir, 'meta-observations', {
17
+ autoSaveInterval: 60000,
18
+ pretty: true,
19
+ });
20
+ this.strategies = new JsonStore(baseDir, 'meta-strategies', {
21
+ autoSaveInterval: 60000,
22
+ pretty: true,
23
+ });
24
+ }
25
+ async init() {
26
+ if (this.initialized)
27
+ return;
28
+ await Promise.all([this.observations.init(), this.strategies.init()]);
29
+ this.initialized = true;
30
+ }
31
+ // === OBSERVATION ===
32
+ /**
33
+ * Record a meta-observation after task completion
34
+ */
35
+ async recordObservation(observation) {
36
+ await this.init();
37
+ this.observations.set(observation.id, observation);
38
+ await this.observations.save(observation.id);
39
+ }
40
+ /**
41
+ * Get observations for analysis
42
+ */
43
+ async getObservations(filter) {
44
+ await this.init();
45
+ let observations = this.observations.values();
46
+ if (filter?.routingDecision) {
47
+ observations = observations.filter((o) => o.routing.decision === filter.routingDecision);
48
+ }
49
+ if (filter?.outcome !== undefined) {
50
+ const isSuccess = filter.outcome === 'success';
51
+ observations = observations.filter((o) => o.outcome.success === isSuccess);
52
+ }
53
+ if (filter?.minDate) {
54
+ observations = observations.filter((o) => new Date(o.timestamp) >= filter.minDate);
55
+ }
56
+ if (filter?.maxDate) {
57
+ observations = observations.filter((o) => new Date(o.timestamp) <= filter.maxDate);
58
+ }
59
+ // Sort by timestamp descending (most recent first)
60
+ observations.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
61
+ if (filter?.limit) {
62
+ observations = observations.slice(0, filter.limit);
63
+ }
64
+ return observations;
65
+ }
66
+ /**
67
+ * Get observation by trajectory ID
68
+ */
69
+ async getByTrajectoryId(trajectoryId) {
70
+ await this.init();
71
+ return this.observations
72
+ .values()
73
+ .find((o) => o.trajectoryId === trajectoryId);
74
+ }
75
+ // === ANALYSIS ===
76
+ /**
77
+ * Analyze routing effectiveness
78
+ * Returns: which routing decisions lead to success in which contexts
79
+ */
80
+ async analyzeRoutingEffectiveness() {
81
+ await this.init();
82
+ const byDecision = {
83
+ adapt: { total: 0, successful: 0 },
84
+ direct: { total: 0, successful: 0 },
85
+ explore: { total: 0, successful: 0 },
86
+ fallback: { total: 0, successful: 0 },
87
+ };
88
+ for (const observation of this.observations.values()) {
89
+ const decision = observation.routing.decision;
90
+ byDecision[decision].total++;
91
+ if (observation.outcome.success) {
92
+ byDecision[decision].successful++;
93
+ }
94
+ }
95
+ const recommendations = [];
96
+ // Generate recommendations based on analysis
97
+ for (const [decision, stats] of Object.entries(byDecision)) {
98
+ if (stats.total >= 5) {
99
+ const successRate = stats.successful / stats.total;
100
+ if (successRate < 0.5) {
101
+ recommendations.push(`Consider reducing reliance on '${decision}' routing (${Math.round(successRate * 100)}% success rate)`);
102
+ }
103
+ else if (successRate > 0.8) {
104
+ recommendations.push(`'${decision}' routing is highly effective (${Math.round(successRate * 100)}% success rate)`);
105
+ }
106
+ }
107
+ }
108
+ return { byDecision, recommendations };
109
+ }
110
+ /**
111
+ * Analyze memory retrieval quality
112
+ * Returns: which retrieval patterns help vs mislead
113
+ */
114
+ async analyzeRetrievalQuality() {
115
+ await this.init();
116
+ const helpfulPatterns = new Map();
117
+ const misleadingPatterns = new Map();
118
+ for (const observation of this.observations.values()) {
119
+ const quality = observation.memoryUsage.retrievalQuality;
120
+ const playbooks = observation.memoryUsage.playbooksApplied;
121
+ for (const playbookId of playbooks) {
122
+ if (quality === 'helpful') {
123
+ helpfulPatterns.set(playbookId, (helpfulPatterns.get(playbookId) ?? 0) + 1);
124
+ }
125
+ else if (quality === 'misleading') {
126
+ misleadingPatterns.set(playbookId, (misleadingPatterns.get(playbookId) ?? 0) + 1);
127
+ }
128
+ }
129
+ }
130
+ const recommendations = [];
131
+ // Find consistently misleading playbooks
132
+ for (const [playbookId, count] of misleadingPatterns) {
133
+ const helpfulCount = helpfulPatterns.get(playbookId) ?? 0;
134
+ if (count > helpfulCount && count >= 3) {
135
+ recommendations.push(`Playbook ${playbookId} may need refinement (${count} misleading vs ${helpfulCount} helpful uses)`);
136
+ }
137
+ }
138
+ return {
139
+ helpfulPatterns: Array.from(helpfulPatterns.keys()),
140
+ misleadingPatterns: Array.from(misleadingPatterns.keys()),
141
+ recommendations,
142
+ };
143
+ }
144
+ /**
145
+ * Generate meta-strategies from observations
146
+ * Called periodically to distill learning patterns
147
+ */
148
+ async generateMetaStrategies() {
149
+ await this.init();
150
+ const newStrategies = [];
151
+ const observations = this.observations.values();
152
+ // Pattern 1: Low-confidence routing tends to need exploration
153
+ const lowConfidenceObs = observations.filter((o) => o.routing.confidence < 0.5);
154
+ const lowConfidenceSuccessRate = lowConfidenceObs.filter((o) => o.outcome.success).length /
155
+ (lowConfidenceObs.length || 1);
156
+ if (lowConfidenceObs.length >= 5 && lowConfidenceSuccessRate < 0.4) {
157
+ const existing = this.strategies
158
+ .values()
159
+ .find((s) => s.name === 'low-confidence-explore');
160
+ if (!existing) {
161
+ newStrategies.push(createMetaStrategy({
162
+ name: 'low-confidence-explore',
163
+ condition: {
164
+ taskCharacteristics: [],
165
+ memoryState: ['low confidence routing'],
166
+ },
167
+ adjustment: {
168
+ routingBias: { explore: 0.2 },
169
+ retrievalModification: 'expand query scope',
170
+ executionHint: 'prefer decomposition',
171
+ },
172
+ }));
173
+ }
174
+ }
175
+ // Pattern 2: Multi-file changes often need decomposition
176
+ const multiFileObs = observations.filter((o) => o.execution.decompositionUsed);
177
+ const multiFileSuccessRate = multiFileObs.filter((o) => o.outcome.success).length /
178
+ (multiFileObs.length || 1);
179
+ if (multiFileObs.length >= 5 && multiFileSuccessRate > 0.7) {
180
+ const existing = this.strategies
181
+ .values()
182
+ .find((s) => s.name === 'decomposition-effective');
183
+ if (!existing) {
184
+ newStrategies.push(createMetaStrategy({
185
+ name: 'decomposition-effective',
186
+ condition: {
187
+ taskCharacteristics: ['multi-file change', 'complex task'],
188
+ memoryState: [],
189
+ },
190
+ adjustment: {
191
+ routingBias: {},
192
+ retrievalModification: '',
193
+ executionHint: 'use decomposition',
194
+ },
195
+ }));
196
+ }
197
+ }
198
+ // Pattern 3: Refinement iterations correlate with success
199
+ const refinedObs = observations.filter((o) => o.execution.refinementIterations > 0);
200
+ const refinedSuccessRate = refinedObs.filter((o) => o.outcome.success).length /
201
+ (refinedObs.length || 1);
202
+ if (refinedObs.length >= 5 && refinedSuccessRate > 0.6) {
203
+ const existing = this.strategies
204
+ .values()
205
+ .find((s) => s.name === 'refinement-beneficial');
206
+ if (!existing) {
207
+ newStrategies.push(createMetaStrategy({
208
+ name: 'refinement-beneficial',
209
+ condition: {
210
+ taskCharacteristics: [],
211
+ memoryState: ['moderate confidence'],
212
+ },
213
+ adjustment: {
214
+ routingBias: {},
215
+ retrievalModification: '',
216
+ executionHint: 'allow refinement iterations',
217
+ },
218
+ }));
219
+ }
220
+ }
221
+ // Save new strategies
222
+ for (const strategy of newStrategies) {
223
+ this.strategies.set(strategy.id, strategy);
224
+ await this.strategies.save(strategy.id);
225
+ }
226
+ return newStrategies;
227
+ }
228
+ // === APPLICATION ===
229
+ /**
230
+ * Get routing adjustments for current context
231
+ */
232
+ async getRoutingAdjustments(context) {
233
+ await this.init();
234
+ const applicable = [];
235
+ for (const strategy of this.strategies.values()) {
236
+ // Check if task characteristics match
237
+ const taskMatch = strategy.condition.taskCharacteristics.length === 0 ||
238
+ strategy.condition.taskCharacteristics.some((tc) => context.taskCharacteristics.some((ctc) => ctc.toLowerCase().includes(tc.toLowerCase())));
239
+ // Check if memory state matches
240
+ const memoryMatch = strategy.condition.memoryState.length === 0 ||
241
+ strategy.condition.memoryState.some((ms) => context.memoryState.some((cms) => cms.toLowerCase().includes(ms.toLowerCase())));
242
+ if (taskMatch && memoryMatch) {
243
+ applicable.push(strategy);
244
+ }
245
+ }
246
+ return applicable;
247
+ }
248
+ /**
249
+ * Record strategy application result
250
+ */
251
+ async recordStrategyApplication(strategyId, success) {
252
+ await this.init();
253
+ const strategy = this.strategies.get(strategyId);
254
+ if (!strategy)
255
+ return;
256
+ strategy.applicationCount++;
257
+ const alpha = 0.1;
258
+ strategy.successRate =
259
+ strategy.successRate * (1 - alpha) + (success ? 1 : 0) * alpha;
260
+ strategy.updatedAt = new Date();
261
+ this.strategies.set(strategyId, strategy);
262
+ await this.strategies.save(strategyId);
263
+ }
264
+ // === LIFECYCLE ===
265
+ /**
266
+ * Add a meta-strategy
267
+ */
268
+ async addStrategy(strategy) {
269
+ await this.init();
270
+ this.strategies.set(strategy.id, strategy);
271
+ await this.strategies.save(strategy.id);
272
+ }
273
+ /**
274
+ * Get a meta-strategy by ID
275
+ */
276
+ async getStrategy(id) {
277
+ await this.init();
278
+ return this.strategies.get(id);
279
+ }
280
+ /**
281
+ * Get all meta-strategies
282
+ */
283
+ async getAllStrategies() {
284
+ await this.init();
285
+ return this.strategies.values();
286
+ }
287
+ /**
288
+ * Get statistics about meta-learning
289
+ */
290
+ async getStats() {
291
+ await this.init();
292
+ const observations = this.observations.values();
293
+ const totalObservations = observations.length;
294
+ const totalStrategies = this.strategies.size();
295
+ const observationsByRouting = {
296
+ adapt: 0,
297
+ direct: 0,
298
+ explore: 0,
299
+ fallback: 0,
300
+ };
301
+ let successCount = 0;
302
+ for (const obs of observations) {
303
+ observationsByRouting[obs.routing.decision]++;
304
+ if (obs.outcome.success)
305
+ successCount++;
306
+ }
307
+ const averageSuccessRate = totalObservations > 0 ? successCount / totalObservations : 0;
308
+ // Determine trend from recent observations
309
+ const recent = observations
310
+ .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
311
+ .slice(0, 10);
312
+ const older = observations
313
+ .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
314
+ .slice(10, 20);
315
+ let recentTrend = 'stable';
316
+ if (recent.length >= 5 && older.length >= 5) {
317
+ const recentSuccess = recent.filter((o) => o.outcome.success).length / recent.length;
318
+ const olderSuccess = older.filter((o) => o.outcome.success).length / older.length;
319
+ if (recentSuccess > olderSuccess + 0.1) {
320
+ recentTrend = 'improving';
321
+ }
322
+ else if (recentSuccess < olderSuccess - 0.1) {
323
+ recentTrend = 'declining';
324
+ }
325
+ }
326
+ return {
327
+ totalObservations,
328
+ totalStrategies,
329
+ observationsByRouting,
330
+ averageSuccessRate,
331
+ recentTrend,
332
+ };
333
+ }
334
+ /**
335
+ * Prune old observations to save space
336
+ */
337
+ async pruneOldObservations(maxAge = 30 * 24 * 60 * 60 * 1000) {
338
+ await this.init();
339
+ const cutoff = new Date(Date.now() - maxAge);
340
+ let pruned = 0;
341
+ for (const observation of this.observations.values()) {
342
+ if (new Date(observation.timestamp) < cutoff) {
343
+ this.observations.delete(observation.id);
344
+ pruned++;
345
+ }
346
+ }
347
+ return pruned;
348
+ }
349
+ /**
350
+ * Close the stores
351
+ */
352
+ async close() {
353
+ await Promise.all([this.observations.close(), this.strategies.close()]);
354
+ }
355
+ }
356
+ /**
357
+ * Create a meta memory store
358
+ */
359
+ export function createMetaMemory(baseDir) {
360
+ return new MetaMemory(baseDir);
361
+ }
362
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/memory/meta.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAahD;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,YAAY,CAA6B;IACzC,UAAU,CAA0B;IACpC,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,OAAe;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAC/B,OAAO,EACP,mBAAmB,EACnB;YACE,gBAAgB,EAAE,KAAK;YACvB,MAAM,EAAE,IAAI;SACb,CACF,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAe,OAAO,EAAE,iBAAiB,EAAE;YACxE,gBAAgB,EAAE,KAAK;YACvB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,sBAAsB;IAEtB;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAA4B;QAClD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,MAA0B;QAC9C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAE9C,IAAI,MAAM,EAAE,eAAe,EAAE,CAAC;YAC5B,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,eAAe,CACrD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;YAC/C,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAQ,CAChD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAQ,CAChD,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,YAAY,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC5E,CAAC;QAEF,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,YAAoB;QAEpB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,YAAY;aACrB,MAAM,EAAE;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,mBAAmB;IAEnB;;;OAGG;IACH,KAAK,CAAC,2BAA2B;QAC/B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,UAAU,GAA0D;YACxE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;YAClC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;YACnC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;YACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;SACtC,CAAC;QAEF,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAChC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,6CAA6C;QAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;gBACnD,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;oBACtB,eAAe,CAAC,IAAI,CAClB,kCAAkC,QAAQ,cAAc,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,iBAAiB,CACvG,CAAC;gBACJ,CAAC;qBAAM,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;oBAC7B,eAAe,CAAC,IAAI,CAClB,IAAI,QAAQ,kCAAkC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,iBAAiB,CAC7F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAE1D,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC;YACzD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC;YAE3D,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;gBACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,eAAe,CAAC,GAAG,CACjB,UAAU,EACV,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAC3C,CAAC;gBACJ,CAAC;qBAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;oBACpC,kBAAkB,CAAC,GAAG,CACpB,UAAU,EACV,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAC9C,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,yCAAyC;QACzC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,KAAK,GAAG,YAAY,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACvC,eAAe,CAAC,IAAI,CAClB,YAAY,UAAU,yBAAyB,KAAK,kBAAkB,YAAY,gBAAgB,CACnG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACnD,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACzD,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAEhD,8DAA8D;QAC9D,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAClC,CAAC;QACF,MAAM,wBAAwB,GAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YACxD,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAEjC,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,wBAAwB,GAAG,GAAG,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;iBAC7B,MAAM,EAAE;iBACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,CAChB,kBAAkB,CAAC;oBACjB,IAAI,EAAE,wBAAwB;oBAC9B,SAAS,EAAE;wBACT,mBAAmB,EAAE,EAAE;wBACvB,WAAW,EAAE,CAAC,wBAAwB,CAAC;qBACxC;oBACD,UAAU,EAAE;wBACV,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;wBAC7B,qBAAqB,EAAE,oBAAoB;wBAC3C,aAAa,EAAE,sBAAsB;qBACtC;iBACF,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAC9B,CAAC;QACF,MAAM,oBAAoB,GACxB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YACpD,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAE7B,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,oBAAoB,GAAG,GAAG,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;iBAC7B,MAAM,EAAE;iBACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,CAChB,kBAAkB,CAAC;oBACjB,IAAI,EAAE,yBAAyB;oBAC/B,SAAS,EAAE;wBACT,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;wBAC1D,WAAW,EAAE,EAAE;qBAChB;oBACD,UAAU,EAAE;wBACV,WAAW,EAAE,EAAE;wBACf,qBAAqB,EAAE,EAAE;wBACzB,aAAa,EAAE,mBAAmB;qBACnC;iBACF,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAC5C,CAAC;QACF,MAAM,kBAAkB,GACtB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YAClD,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAE3B,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,kBAAkB,GAAG,GAAG,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;iBAC7B,MAAM,EAAE;iBACR,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,aAAa,CAAC,IAAI,CAChB,kBAAkB,CAAC;oBACjB,IAAI,EAAE,uBAAuB;oBAC7B,SAAS,EAAE;wBACT,mBAAmB,EAAE,EAAE;wBACvB,WAAW,EAAE,CAAC,qBAAqB,CAAC;qBACrC;oBACD,UAAU,EAAE;wBACV,WAAW,EAAE,EAAE;wBACf,qBAAqB,EAAE,EAAE;wBACzB,aAAa,EAAE,6BAA6B;qBAC7C;iBACF,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,sBAAsB;IAEtB;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,OAAoB;QAC9C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,UAAU,GAAmB,EAAE,CAAC;QAEtC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,sCAAsC;YACtC,MAAM,SAAS,GACb,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;gBACnD,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACjD,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAC9B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CACtD,CACF,CAAC;YAEJ,gCAAgC;YAChC,MAAM,WAAW,GACf,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAC3C,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACzC,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CACtD,CACF,CAAC;YAEJ,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAC7B,UAAkB,EAClB,OAAgB;QAEhB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC;QAClB,QAAQ,CAAC,WAAW;YAClB,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACjE,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB;IAEpB;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAsB;QACtC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAE/C,MAAM,qBAAqB,GAAwC;YACjE,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;SACZ,CAAC;QAEF,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO;gBAAE,YAAY,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,kBAAkB,GACtB,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,2CAA2C;QAC3C,MAAM,MAAM,GAAG,YAAY;aACxB,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CACpE;aACA,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,YAAY;aACvB,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CACpE;aACA,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjB,IAAI,WAAW,GAAyC,QAAQ,CAAC;QACjE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,aAAa,GACjB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACjE,MAAM,YAAY,GAChB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/D,IAAI,aAAa,GAAG,YAAY,GAAG,GAAG,EAAE,CAAC;gBACvC,WAAW,GAAG,WAAW,CAAC;YAC5B,CAAC;iBAAM,IAAI,aAAa,GAAG,YAAY,GAAG,GAAG,EAAE,CAAC;gBAC9C,WAAW,GAAG,WAAW,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO;YACL,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,kBAAkB;YAClB,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAClE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzC,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Playbook Library - Unified store for adaptive guidance
3
+ * Replaces StrategyBank + SkillStore with a single, evolvable abstraction
4
+ */
5
+ import type { Playbook, PlaybookOrigin } from '../types/index.js';
6
+ import { createPlaybook } from '../types/index.js';
7
+ /**
8
+ * Match result for playbook retrieval
9
+ */
10
+ export interface PlaybookMatch {
11
+ playbook: Playbook;
12
+ score: number;
13
+ matchType: 'situation' | 'trigger' | 'domain';
14
+ }
15
+ /**
16
+ * Options for finding matching playbooks
17
+ */
18
+ export interface FindMatchingOptions {
19
+ k?: number;
20
+ domains?: string[];
21
+ minConfidence?: number;
22
+ excludeAntiPatterns?: boolean;
23
+ minScore?: number;
24
+ }
25
+ /**
26
+ * Playbook Library - Store and retrieve adaptive guidance
27
+ */
28
+ export declare class PlaybookLibrary {
29
+ private store;
30
+ private initialized;
31
+ constructor(baseDir: string);
32
+ init(): Promise<void>;
33
+ /**
34
+ * Find playbooks matching a context
35
+ * Uses weighted scoring across situations, triggers, and anti-patterns
36
+ */
37
+ findMatching(context: string, options?: FindMatchingOptions): Promise<PlaybookMatch[]>;
38
+ /**
39
+ * Find by specific trigger (for error messages, etc.)
40
+ */
41
+ findByTrigger(trigger: string, threshold?: number): Promise<Playbook[]>;
42
+ /**
43
+ * Get playbooks with refinements for a specific context
44
+ */
45
+ findWithRefinements(context: string): Promise<Playbook[]>;
46
+ /**
47
+ * Record successful application
48
+ */
49
+ recordSuccess(id: string, _trajectoryId: string): Promise<void>;
50
+ /**
51
+ * Record failure and capture context
52
+ */
53
+ recordFailure(id: string, trajectoryId: string, failureContext: string, failureMode: string): Promise<void>;
54
+ /**
55
+ * Add a context-specific refinement
56
+ */
57
+ addRefinement(id: string, context: string, addition: string, source: 'failure' | 'success' | 'manual'): Promise<void>;
58
+ /**
59
+ * Evolve playbook based on accumulated failures
60
+ * Should be called after several failures to update guidance
61
+ */
62
+ evolve(id: string, newGuidance?: Partial<Playbook['guidance']>, newAntiPatterns?: string[]): Promise<Playbook | undefined>;
63
+ /**
64
+ * Add a new playbook
65
+ */
66
+ add(playbook: Playbook): Promise<void>;
67
+ /**
68
+ * Create and add a new playbook
69
+ */
70
+ create(input: Parameters<typeof createPlaybook>[0]): Promise<Playbook>;
71
+ /**
72
+ * Get a playbook by ID
73
+ */
74
+ get(id: string): Promise<Playbook | undefined>;
75
+ /**
76
+ * Get playbook by name
77
+ */
78
+ getByName(name: string): Promise<Playbook | undefined>;
79
+ /**
80
+ * Check if a similar playbook exists
81
+ */
82
+ exists(description: string, threshold?: number): Promise<Playbook | undefined>;
83
+ /**
84
+ * Get playbooks by domain
85
+ */
86
+ getByDomain(domain: string): Promise<Playbook[]>;
87
+ /**
88
+ * Get most effective playbooks (by success rate)
89
+ */
90
+ getMostEffective(k?: number): Promise<Playbook[]>;
91
+ /**
92
+ * Get playbooks by confidence threshold
93
+ */
94
+ getHighConfidence(minConfidence?: number): Promise<Playbook[]>;
95
+ /**
96
+ * Get all playbooks
97
+ */
98
+ getAll(): Promise<Playbook[]>;
99
+ /**
100
+ * Delete a playbook
101
+ */
102
+ delete(id: string): Promise<boolean>;
103
+ /**
104
+ * Get count
105
+ */
106
+ count(): Promise<number>;
107
+ /**
108
+ * Get all unique domains
109
+ */
110
+ getDomains(): Promise<string[]>;
111
+ /**
112
+ * Get playbooks by origin type
113
+ */
114
+ getByOrigin(origin: PlaybookOrigin): Promise<Playbook[]>;
115
+ /**
116
+ * Delete all playbooks with a specific origin
117
+ * Returns the number of playbooks deleted
118
+ */
119
+ deleteByOrigin(origin: PlaybookOrigin): Promise<number>;
120
+ /**
121
+ * Get provenance summary across all playbooks
122
+ */
123
+ getProvenanceSummary(): Promise<Record<PlaybookOrigin, number>>;
124
+ /**
125
+ * Close the store
126
+ */
127
+ close(): Promise<void>;
128
+ }
129
+ /**
130
+ * Create a playbook library
131
+ */
132
+ export declare function createPlaybookLibrary(baseDir: string): PlaybookLibrary;
133
+ //# sourceMappingURL=playbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook.d.ts","sourceRoot":"","sources":["../../src/memory/playbook.ts"],"names":[],"mappings":"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"}