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,372 @@
1
+ /**
2
+ * LLM-Based Playbook Extractor
3
+ *
4
+ * Uses language models to generate higher-quality playbooks
5
+ * from trajectories. Complements the pattern-based extractor
6
+ * with deeper semantic analysis.
7
+ */
8
+ import { createPlaybook } from '../types/index.js';
9
+ const DEFAULT_CONFIG = {
10
+ temperature: 0.2,
11
+ maxTokens: 2000,
12
+ extractFromSingle: true,
13
+ minComplexity: 3, // Minimum steps to warrant LLM extraction
14
+ };
15
+ /**
16
+ * LLM-Based Playbook Extractor
17
+ */
18
+ export class LLMPlaybookExtractor {
19
+ provider;
20
+ config;
21
+ constructor(provider, config) {
22
+ this.provider = provider;
23
+ this.config = { ...DEFAULT_CONFIG, ...config };
24
+ }
25
+ /**
26
+ * Extract playbooks from trajectories using LLM
27
+ */
28
+ async extract(trajectories, analyses, existingPlaybooks = []) {
29
+ // Filter to successful, complex enough trajectories
30
+ const candidates = trajectories.filter((t, i) => {
31
+ const analysis = analyses[i];
32
+ return (analysis?.success &&
33
+ analysis.abstractable &&
34
+ t.steps.length >= this.config.minComplexity);
35
+ });
36
+ if (candidates.length === 0) {
37
+ return { playbooks: [], refinements: [] };
38
+ }
39
+ // Extract playbooks from each candidate
40
+ const allResults = {
41
+ playbooks: [],
42
+ refinements: [],
43
+ };
44
+ // Process individually for better quality
45
+ if (this.config.extractFromSingle) {
46
+ for (let i = 0; i < candidates.length; i++) {
47
+ const trajectory = candidates[i];
48
+ const analysis = analyses.find((_, idx) => trajectories[idx] === trajectory);
49
+ if (!analysis)
50
+ continue;
51
+ const result = await this.extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks);
52
+ allResults.playbooks.push(...result.playbooks);
53
+ allResults.refinements.push(...result.refinements);
54
+ }
55
+ }
56
+ // Also do batch extraction if we have multiple
57
+ if (candidates.length >= 2) {
58
+ const batchResult = await this.extractFromBatch(candidates, analyses.filter((_, i) => candidates.includes(trajectories[i])), existingPlaybooks);
59
+ // Merge with individual results (avoid duplicates)
60
+ for (const playbook of batchResult.playbooks) {
61
+ const isDuplicate = allResults.playbooks.some((p) => this.isSimilarPlaybook(p, playbook));
62
+ if (!isDuplicate) {
63
+ allResults.playbooks.push(playbook);
64
+ }
65
+ }
66
+ allResults.refinements.push(...batchResult.refinements);
67
+ }
68
+ return allResults;
69
+ }
70
+ /**
71
+ * Extract a playbook from a single trajectory
72
+ */
73
+ async extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks) {
74
+ const prompt = this.buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks);
75
+ const response = await this.provider.complete([{ role: 'user', content: prompt }], {
76
+ temperature: this.config.temperature,
77
+ maxTokens: this.config.maxTokens,
78
+ });
79
+ return this.parseExtractionResponse(response, trajectory);
80
+ }
81
+ /**
82
+ * Extract playbooks from a batch of trajectories
83
+ */
84
+ async extractFromBatch(trajectories, analyses, existingPlaybooks) {
85
+ const prompt = this.buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks);
86
+ const response = await this.provider.complete([{ role: 'user', content: prompt }], {
87
+ temperature: this.config.temperature,
88
+ maxTokens: this.config.maxTokens * 2,
89
+ });
90
+ return this.parseExtractionResponse(response);
91
+ }
92
+ /**
93
+ * Build prompt for single trajectory extraction
94
+ */
95
+ buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks) {
96
+ const keyStepsDesc = analysis.keySteps
97
+ .map((idx) => {
98
+ const step = trajectory.steps[idx];
99
+ return step
100
+ ? ` - Step ${idx + 1}: ${step.action}${step.thought ? ` (reasoning: ${step.thought})` : ''}`
101
+ : '';
102
+ })
103
+ .filter(Boolean)
104
+ .join('\n');
105
+ const existingPlaybookNames = existingPlaybooks
106
+ .map((p) => `- ${p.name}: ${p.guidance.strategy.slice(0, 100)}`)
107
+ .slice(0, 5)
108
+ .join('\n');
109
+ return `Analyze this successful problem-solving trajectory and extract a reusable playbook.
110
+
111
+ ## Task
112
+ ${trajectory.task.description}
113
+ Domain: ${trajectory.task.domain}
114
+
115
+ ## Solution Steps
116
+ ${trajectory.steps.map((s, i) => `${i + 1}. ${s.action}${s.observation ? `\n Observation: ${s.observation.slice(0, 100)}` : ''}`).join('\n')}
117
+
118
+ ## Key Steps (most important for success)
119
+ ${keyStepsDesc}
120
+
121
+ ## Outcome
122
+ ${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}: ${trajectory.outcome.solution ?? trajectory.outcome.errorInfo ?? 'No details'}
123
+
124
+ ${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
125
+ ${existingPlaybookNames}` : ''}
126
+
127
+ ## Instructions
128
+ Extract a reusable playbook that captures the essential approach. Focus on:
129
+ 1. What situations trigger this approach
130
+ 2. The core strategy/pattern used
131
+ 3. Key tactical steps
132
+ 4. Success/failure indicators
133
+
134
+ Respond in JSON format:
135
+ {
136
+ "playbook": {
137
+ "name": "kebab-case-name",
138
+ "situations": ["when X happens", "for Y type problems"],
139
+ "triggers": ["error messages", "signals that trigger this"],
140
+ "antiPatterns": ["when NOT to use this"],
141
+ "strategy": "High-level approach description",
142
+ "tactics": ["specific technique 1", "specific technique 2"],
143
+ "steps": ["step 1", "step 2", "step 3"],
144
+ "successIndicators": ["how to know it worked"],
145
+ "failureIndicators": ["how to know it failed"],
146
+ "complexity": "simple|moderate|complex",
147
+ "estimatedEffort": 5
148
+ },
149
+ "isRefinementOf": null
150
+ }
151
+
152
+ If this is better suited as a refinement to an existing playbook, set isRefinementOf to the playbook name and include only the refinement details.`;
153
+ }
154
+ /**
155
+ * Build prompt for batch extraction
156
+ */
157
+ buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks) {
158
+ const trajectorySummaries = trajectories
159
+ .map((t, i) => {
160
+ const analysis = analyses[i];
161
+ const keySteps = analysis?.keySteps ?? [];
162
+ return `### Trajectory ${i + 1}
163
+ Task: ${t.task.description}
164
+ Domain: ${t.task.domain}
165
+ Steps: ${t.steps.length}
166
+ Key steps: ${keySteps.map((idx) => t.steps[idx]?.action ?? '').join(' → ')}
167
+ Outcome: ${t.outcome.success ? 'SUCCESS' : 'FAILURE'}`;
168
+ })
169
+ .join('\n\n');
170
+ const existingPlaybookNames = existingPlaybooks
171
+ .map((p) => `- ${p.name}`)
172
+ .slice(0, 10)
173
+ .join('\n');
174
+ return `Analyze these successful trajectories and identify common patterns that can be extracted as reusable playbooks.
175
+
176
+ ## Trajectories
177
+ ${trajectorySummaries}
178
+
179
+ ${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
180
+ ${existingPlaybookNames}` : ''}
181
+
182
+ ## Instructions
183
+ Identify patterns that appear across multiple trajectories and extract them as playbooks.
184
+ Focus on generalizable approaches, not task-specific details.
185
+
186
+ Respond in JSON format:
187
+ {
188
+ "playbooks": [
189
+ {
190
+ "name": "kebab-case-name",
191
+ "situations": ["when X happens"],
192
+ "triggers": [],
193
+ "antiPatterns": [],
194
+ "strategy": "Description",
195
+ "tactics": ["technique 1"],
196
+ "steps": ["step 1", "step 2"],
197
+ "successIndicators": ["indicator"],
198
+ "failureIndicators": ["indicator"],
199
+ "complexity": "simple|moderate|complex",
200
+ "estimatedEffort": 5,
201
+ "sourceTrajectories": [1, 2]
202
+ }
203
+ ]
204
+ }`;
205
+ }
206
+ /**
207
+ * Parse LLM response into extraction result
208
+ */
209
+ parseExtractionResponse(response, sourceTrajectory) {
210
+ const result = {
211
+ playbooks: [],
212
+ refinements: [],
213
+ rawResponse: response,
214
+ };
215
+ try {
216
+ // Extract JSON from response
217
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
218
+ if (!jsonMatch) {
219
+ return result;
220
+ }
221
+ const parsed = JSON.parse(jsonMatch[0]);
222
+ // Handle single playbook response
223
+ if (parsed.playbook && !parsed.isRefinementOf) {
224
+ const playbook = this.createPlaybookFromLLMData(parsed.playbook, sourceTrajectory);
225
+ result.playbooks.push(playbook);
226
+ }
227
+ // Handle refinement response
228
+ if (parsed.playbook && parsed.isRefinementOf) {
229
+ result.refinements.push({
230
+ playbookId: parsed.isRefinementOf,
231
+ refinement: {
232
+ context: parsed.playbook.situations?.[0] ?? 'General refinement',
233
+ addition: parsed.playbook.strategy ?? '',
234
+ source: 'success',
235
+ addedAt: new Date(),
236
+ },
237
+ });
238
+ }
239
+ // Handle batch response
240
+ if (parsed.playbooks && Array.isArray(parsed.playbooks)) {
241
+ for (const pbData of parsed.playbooks) {
242
+ const playbook = this.createPlaybookFromLLMData(pbData);
243
+ result.playbooks.push(playbook);
244
+ }
245
+ }
246
+ }
247
+ catch (error) {
248
+ // JSON parsing failed, return empty result
249
+ console.warn('Failed to parse LLM extraction response:', error instanceof Error ? error.message : error);
250
+ }
251
+ return result;
252
+ }
253
+ /**
254
+ * Create a Playbook from LLM-extracted data
255
+ */
256
+ createPlaybookFromLLMData(data, sourceTrajectory) {
257
+ const domain = sourceTrajectory?.task.domain ?? 'general';
258
+ const sourceIds = sourceTrajectory ? [sourceTrajectory.id] : [];
259
+ return createPlaybook({
260
+ name: data.name ?? `llm-extracted-${Date.now()}`,
261
+ applicability: {
262
+ situations: data.situations ?? [],
263
+ triggers: data.triggers ?? [],
264
+ antiPatterns: data.antiPatterns ?? [],
265
+ domains: [domain],
266
+ },
267
+ guidance: {
268
+ strategy: data.strategy ?? '',
269
+ tactics: data.tactics ?? [],
270
+ steps: data.steps ?? [],
271
+ },
272
+ verification: {
273
+ successIndicators: data.successIndicators ?? [],
274
+ failureIndicators: data.failureIndicators ?? [],
275
+ },
276
+ evolution: {
277
+ version: '1.0.0',
278
+ createdFrom: sourceIds,
279
+ failures: [],
280
+ refinements: [],
281
+ successCount: 1,
282
+ failureCount: 0,
283
+ },
284
+ confidence: 0.6, // Start with moderate confidence for LLM-extracted
285
+ complexity: this.parseComplexity(data.complexity),
286
+ estimatedEffort: data.estimatedEffort ?? 5,
287
+ });
288
+ }
289
+ /**
290
+ * Parse complexity string
291
+ */
292
+ parseComplexity(complexity) {
293
+ const normalized = complexity?.toLowerCase();
294
+ if (normalized === 'simple')
295
+ return 'simple';
296
+ if (normalized === 'complex')
297
+ return 'complex';
298
+ return 'moderate';
299
+ }
300
+ /**
301
+ * Check if two playbooks are similar
302
+ */
303
+ isSimilarPlaybook(a, b) {
304
+ // Simple name-based check
305
+ if (a.name === b.name)
306
+ return true;
307
+ // Check situation overlap
308
+ const aSituations = new Set(a.applicability.situations);
309
+ const bSituations = b.applicability.situations;
310
+ const overlap = bSituations.filter((s) => aSituations.has(s)).length;
311
+ return overlap >= Math.min(aSituations.size, bSituations.length) * 0.8;
312
+ }
313
+ /**
314
+ * Generate a refinement for an existing playbook based on a new trajectory
315
+ */
316
+ async generateRefinement(playbook, trajectory, context) {
317
+ const prompt = `Given this existing playbook and a new trajectory, generate a refinement.
318
+
319
+ ## Existing Playbook: ${playbook.name}
320
+ Strategy: ${playbook.guidance.strategy}
321
+ Steps: ${playbook.guidance.steps?.join(' → ') ?? 'None'}
322
+
323
+ ## New Trajectory
324
+ Task: ${trajectory.task.description}
325
+ Steps taken: ${trajectory.steps.map((s) => s.action).join(' → ')}
326
+ Outcome: ${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}
327
+
328
+ ## Context
329
+ ${context}
330
+
331
+ ## Instructions
332
+ Generate a refinement that captures what's new or different in this trajectory.
333
+
334
+ Respond in JSON:
335
+ {
336
+ "context": "when/where this refinement applies",
337
+ "addition": "what to add/change in the approach"
338
+ }`;
339
+ const response = await this.provider.complete([{ role: 'user', content: prompt }], {
340
+ temperature: this.config.temperature,
341
+ maxTokens: 500,
342
+ });
343
+ try {
344
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
345
+ if (jsonMatch) {
346
+ const parsed = JSON.parse(jsonMatch[0]);
347
+ return {
348
+ context: parsed.context ?? context,
349
+ addition: parsed.addition ?? '',
350
+ source: trajectory.outcome.success ? 'success' : 'failure',
351
+ addedAt: new Date(),
352
+ };
353
+ }
354
+ }
355
+ catch {
356
+ // Fall back to simple refinement
357
+ }
358
+ return {
359
+ context,
360
+ addition: `Additional approach from trajectory: ${trajectory.steps[0]?.action ?? ''}`,
361
+ source: trajectory.outcome.success ? 'success' : 'failure',
362
+ addedAt: new Date(),
363
+ };
364
+ }
365
+ }
366
+ /**
367
+ * Create an LLM-based playbook extractor
368
+ */
369
+ export function createLLMExtractor(provider, config) {
370
+ return new LLMPlaybookExtractor(provider, config);
371
+ }
372
+ //# sourceMappingURL=llm-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/learning/llm-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Meta Learner
3
+ * Learns about learning - analyzes trajectories to improve routing and retrieval
4
+ */
5
+ import type { MetaObservation, MetaStrategy, Trajectory, RoutingDecisionType } from '../types/index.js';
6
+ import type { MetaMemory } from '../memory/meta.js';
7
+ import type { PlaybookMatch } from '../memory/playbook.js';
8
+ /**
9
+ * Routing decision from the router
10
+ */
11
+ export interface RoutingDecision {
12
+ strategy: RoutingDecisionType;
13
+ confidence: number;
14
+ estimatedBudget: number;
15
+ reasoning: string;
16
+ }
17
+ /**
18
+ * Configuration for meta learner
19
+ */
20
+ export interface MetaLearnerConfig {
21
+ /** Minimum observations before generating strategies */
22
+ minObservationsForStrategies: number;
23
+ /** How often to run strategy generation (in observations) */
24
+ strategyGenerationInterval: number;
25
+ /** Threshold for considering retrieval helpful */
26
+ helpfulRetrievalThreshold: number;
27
+ /** Minimum tactic word overlap to consider guidance followed (default: 2) */
28
+ tacticOverlapThreshold: number;
29
+ }
30
+ /**
31
+ * Meta Learner
32
+ * Generates meta-observations and learns meta-strategies
33
+ */
34
+ export declare class MetaLearner {
35
+ private meta;
36
+ private config;
37
+ private observationCount;
38
+ constructor(meta: MetaMemory, config?: Partial<MetaLearnerConfig>);
39
+ /**
40
+ * Generate reflection from completed trajectory
41
+ */
42
+ generateReflection(trajectory: Trajectory, routing: RoutingDecision, playbooksUsed: PlaybookMatch[]): Promise<MetaObservation>;
43
+ /**
44
+ * Analyze accumulated observations and generate meta-strategies
45
+ */
46
+ learn(): Promise<MetaStrategy[]>;
47
+ /**
48
+ * Apply meta-strategies to adjust routing
49
+ */
50
+ adjustRouting(baseRouting: RoutingDecision, taskCharacteristics: string[], memoryState: string[]): Promise<RoutingDecision>;
51
+ /**
52
+ * Assess retrieval quality based on trajectory outcome
53
+ */
54
+ private assessRetrievalQuality;
55
+ /**
56
+ * Check if playbook guidance was followed in the trajectory
57
+ */
58
+ private checkGuidanceFollowed;
59
+ /**
60
+ * Assess outcome quality
61
+ */
62
+ private assessOutcomeQuality;
63
+ /**
64
+ * Analyze execution path
65
+ */
66
+ private analyzeExecution;
67
+ /**
68
+ * Generate lessons learned
69
+ */
70
+ private generateLessons;
71
+ /**
72
+ * Generate strategies from routing analysis
73
+ */
74
+ private generateStrategiesFromAnalysis;
75
+ }
76
+ /**
77
+ * Create a meta learner
78
+ */
79
+ export declare function createMetaLearner(meta: MetaMemory, config?: Partial<MetaLearnerConfig>): MetaLearner;
80
+ //# sourceMappingURL=meta-learner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-learner.d.ts","sourceRoot":"","sources":["../../src/learning/meta-learner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EAEV,mBAAmB,EAIpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,4BAA4B,EAAE,MAAM,CAAC;IACrC,6DAA6D;IAC7D,0BAA0B,EAAE,MAAM,CAAC;IACnC,kDAAkD;IAClD,yBAAyB,EAAE,MAAM,CAAC;IAClC,6EAA6E;IAC7E,sBAAsB,EAAE,MAAM,CAAC;CAChC;AASD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAKjE;;OAEG;IACG,kBAAkB,CACtB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAAE,GAC7B,OAAO,CAAC,eAAe,CAAC;IA4D3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA0BtC;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EAAE,MAAM,EAAE,EAC7B,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,eAAe,CAAC;IA8D3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgExB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,OAAO,CAAC,8BAA8B;CAmDvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,WAAW,CAEb"}