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,355 @@
1
+ /**
2
+ * Meta Learner
3
+ * Learns about learning - analyzes trajectories to improve routing and retrieval
4
+ */
5
+ import { createMetaObservation, createMetaStrategy } from '../types/index.js';
6
+ const DEFAULT_CONFIG = {
7
+ minObservationsForStrategies: 10,
8
+ strategyGenerationInterval: 10,
9
+ helpfulRetrievalThreshold: 0.7,
10
+ tacticOverlapThreshold: 2,
11
+ };
12
+ /**
13
+ * Meta Learner
14
+ * Generates meta-observations and learns meta-strategies
15
+ */
16
+ export class MetaLearner {
17
+ meta;
18
+ config;
19
+ observationCount = 0;
20
+ constructor(meta, config) {
21
+ this.meta = meta;
22
+ this.config = { ...DEFAULT_CONFIG, ...config };
23
+ }
24
+ /**
25
+ * Generate reflection from completed trajectory
26
+ */
27
+ async generateReflection(trajectory, routing, playbooksUsed) {
28
+ // Analyze the trajectory
29
+ const wasSuccessful = trajectory.outcome.success;
30
+ const actualEffort = trajectory.llmCalls ?? trajectory.steps.length;
31
+ // Determine retrieval quality
32
+ const retrievalQuality = this.assessRetrievalQuality(trajectory, playbooksUsed, wasSuccessful);
33
+ // Determine outcome quality
34
+ const outcomeQuality = this.assessOutcomeQuality(trajectory, actualEffort, routing.estimatedBudget);
35
+ // Analyze execution path
36
+ const execution = this.analyzeExecution(trajectory);
37
+ // Generate lessons learned
38
+ const lessons = this.generateLessons(trajectory, routing, playbooksUsed, wasSuccessful);
39
+ const observation = createMetaObservation({
40
+ trajectoryId: trajectory.id,
41
+ routing: {
42
+ decision: routing.strategy,
43
+ confidence: routing.confidence,
44
+ reasoning: routing.reasoning,
45
+ },
46
+ memoryUsage: {
47
+ experiencesRetrieved: 0, // TODO: Track from memory query
48
+ playbooksApplied: playbooksUsed.map((p) => p.playbook.id),
49
+ retrievalQuality,
50
+ },
51
+ execution,
52
+ outcome: {
53
+ success: wasSuccessful,
54
+ quality: outcomeQuality,
55
+ effortActual: actualEffort,
56
+ effortEstimate: routing.estimatedBudget,
57
+ },
58
+ lessons,
59
+ });
60
+ // Record the observation
61
+ await this.meta.recordObservation(observation);
62
+ this.observationCount++;
63
+ // Periodically generate new meta-strategies
64
+ if (this.observationCount % this.config.strategyGenerationInterval === 0) {
65
+ await this.learn();
66
+ }
67
+ return observation;
68
+ }
69
+ /**
70
+ * Analyze accumulated observations and generate meta-strategies
71
+ */
72
+ async learn() {
73
+ const stats = await this.meta.getStats();
74
+ if (stats.totalObservations < this.config.minObservationsForStrategies) {
75
+ return [];
76
+ }
77
+ // Generate new meta-strategies based on patterns
78
+ const newStrategies = await this.meta.generateMetaStrategies();
79
+ // Additional strategy generation based on analysis
80
+ const routingAnalysis = await this.meta.analyzeRoutingEffectiveness();
81
+ const additionalStrategies = this.generateStrategiesFromAnalysis(routingAnalysis);
82
+ // Add and save additional strategies
83
+ for (const strategy of additionalStrategies) {
84
+ const existing = await this.meta.getStrategy(strategy.id);
85
+ if (!existing) {
86
+ await this.meta.addStrategy(strategy);
87
+ newStrategies.push(strategy);
88
+ }
89
+ }
90
+ return newStrategies;
91
+ }
92
+ /**
93
+ * Apply meta-strategies to adjust routing
94
+ */
95
+ async adjustRouting(baseRouting, taskCharacteristics, memoryState) {
96
+ const context = {
97
+ taskCharacteristics,
98
+ memoryState,
99
+ };
100
+ const applicableStrategies = await this.meta.getRoutingAdjustments(context);
101
+ if (applicableStrategies.length === 0) {
102
+ return baseRouting;
103
+ }
104
+ // Apply adjustments
105
+ let adjustedConfidence = baseRouting.confidence;
106
+ let adjustedStrategy = baseRouting.strategy;
107
+ const adjustmentReasons = [];
108
+ for (const strategy of applicableStrategies) {
109
+ // Apply routing bias
110
+ if (strategy.adjustment.routingBias) {
111
+ for (const [decision, bias] of Object.entries(strategy.adjustment.routingBias)) {
112
+ if (decision === baseRouting.strategy) {
113
+ adjustedConfidence += bias;
114
+ }
115
+ }
116
+ // Check if another strategy is strongly preferred
117
+ const biases = Object.entries(strategy.adjustment.routingBias);
118
+ for (const [decision, bias] of biases) {
119
+ if (bias > 0.3 &&
120
+ decision !== baseRouting.strategy &&
121
+ baseRouting.confidence < 0.5) {
122
+ adjustedStrategy = decision;
123
+ adjustmentReasons.push(`Meta-strategy '${strategy.name}' suggests ${decision}`);
124
+ }
125
+ }
126
+ }
127
+ // Add execution hint to reasoning
128
+ if (strategy.adjustment.executionHint) {
129
+ adjustmentReasons.push(strategy.adjustment.executionHint);
130
+ }
131
+ }
132
+ // Clamp confidence
133
+ adjustedConfidence = Math.max(0.1, Math.min(0.95, adjustedConfidence));
134
+ return {
135
+ strategy: adjustedStrategy,
136
+ confidence: adjustedConfidence,
137
+ estimatedBudget: baseRouting.estimatedBudget,
138
+ reasoning: adjustmentReasons.length > 0
139
+ ? `${baseRouting.reasoning}. Meta-adjustments: ${adjustmentReasons.join('; ')}`
140
+ : baseRouting.reasoning,
141
+ };
142
+ }
143
+ /**
144
+ * Assess retrieval quality based on trajectory outcome
145
+ */
146
+ assessRetrievalQuality(trajectory, playbooksUsed, wasSuccessful) {
147
+ if (playbooksUsed.length === 0) {
148
+ return 'neutral';
149
+ }
150
+ // Check if playbook guidance was followed
151
+ const guidanceFollowed = this.checkGuidanceFollowed(trajectory, playbooksUsed);
152
+ if (wasSuccessful && guidanceFollowed) {
153
+ return 'helpful';
154
+ }
155
+ else if (!wasSuccessful && guidanceFollowed) {
156
+ // Followed guidance but still failed - might be misleading
157
+ return 'misleading';
158
+ }
159
+ else {
160
+ return 'neutral';
161
+ }
162
+ }
163
+ /**
164
+ * Check if playbook guidance was followed in the trajectory
165
+ */
166
+ checkGuidanceFollowed(trajectory, playbooksUsed) {
167
+ for (const { playbook } of playbooksUsed) {
168
+ const tactics = playbook.guidance.tactics;
169
+ if (tactics.length === 0)
170
+ continue;
171
+ // Check if any tactics were reflected in the steps
172
+ let tacticsFollowed = 0;
173
+ for (const tactic of tactics) {
174
+ const tacticWords = tactic.toLowerCase().split(/\s+/);
175
+ for (const step of trajectory.steps) {
176
+ const actionWords = step.action.toLowerCase().split(/\s+/);
177
+ const overlap = tacticWords.filter((w) => actionWords.includes(w)).length;
178
+ if (overlap >= this.config.tacticOverlapThreshold) {
179
+ tacticsFollowed++;
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ if (tacticsFollowed >= tactics.length * 0.5) {
185
+ return true;
186
+ }
187
+ }
188
+ return false;
189
+ }
190
+ /**
191
+ * Assess outcome quality
192
+ */
193
+ assessOutcomeQuality(trajectory, actualEffort, estimatedEffort) {
194
+ if (!trajectory.outcome.success) {
195
+ return 'poor';
196
+ }
197
+ // Compare actual vs estimated effort
198
+ const effortRatio = actualEffort / estimatedEffort;
199
+ if (effortRatio <= 0.5) {
200
+ return 'excellent'; // Much less effort than expected
201
+ }
202
+ else if (effortRatio <= 1.0) {
203
+ return 'good'; // Within estimate
204
+ }
205
+ else if (effortRatio <= 2.0) {
206
+ return 'acceptable'; // Some overrun
207
+ }
208
+ else {
209
+ return 'poor'; // Significant overrun
210
+ }
211
+ }
212
+ /**
213
+ * Analyze execution path
214
+ */
215
+ analyzeExecution(trajectory) {
216
+ const steps = trajectory.steps;
217
+ const toolsUsed = new Set();
218
+ let backtrackingOccurred = false;
219
+ // Collect tools used (extract from action)
220
+ for (const step of steps) {
221
+ // Try to extract tool name from action (e.g., "tool_use: Bash" or just "Bash")
222
+ const toolMatch = step.action.match(/^(?:tool_use:\s*)?(\w+)/);
223
+ if (toolMatch) {
224
+ toolsUsed.add(toolMatch[1]);
225
+ }
226
+ }
227
+ // Check for backtracking (similar actions repeated)
228
+ const actionCounts = new Map();
229
+ for (const step of steps) {
230
+ const normalized = step.action.toLowerCase().slice(0, 50);
231
+ actionCounts.set(normalized, (actionCounts.get(normalized) ?? 0) + 1);
232
+ }
233
+ for (const count of actionCounts.values()) {
234
+ if (count > 2) {
235
+ backtrackingOccurred = true;
236
+ break;
237
+ }
238
+ }
239
+ // Check for decomposition (multiple sub-tasks)
240
+ const decompositionUsed = steps.some((s) => s.thought?.includes('break') ||
241
+ s.thought?.includes('decompose') ||
242
+ s.thought?.includes('step by step') ||
243
+ s.thought?.includes('first,')) ?? false;
244
+ // Estimate refinement iterations (failures followed by retries)
245
+ let refinementIterations = 0;
246
+ for (let i = 0; i < steps.length - 1; i++) {
247
+ if (steps[i].observation?.includes('error') ||
248
+ steps[i].observation?.includes('failed')) {
249
+ if (steps[i + 1]?.thought?.includes('try') || steps[i + 1]?.thought?.includes('fix')) {
250
+ refinementIterations++;
251
+ }
252
+ }
253
+ }
254
+ return {
255
+ decompositionUsed,
256
+ refinementIterations,
257
+ backtrackingOccurred,
258
+ toolsUsed: Array.from(toolsUsed),
259
+ };
260
+ }
261
+ /**
262
+ * Generate lessons learned
263
+ */
264
+ generateLessons(trajectory, routing, playbooksUsed, wasSuccessful) {
265
+ const whatWorked = [];
266
+ const whatFailed = [];
267
+ const suggestions = [];
268
+ if (wasSuccessful) {
269
+ whatWorked.push(`${routing.strategy} routing led to success`);
270
+ if (playbooksUsed.length > 0) {
271
+ whatWorked.push(`Playbook guidance was applicable: ${playbooksUsed.map((p) => p.playbook.name).join(', ')}`);
272
+ }
273
+ // Check what steps seemed most effective
274
+ const keySteps = trajectory.steps.filter((s) => !s.observation?.includes('error') && !s.observation?.includes('failed'));
275
+ if (keySteps.length > 0) {
276
+ whatWorked.push(`Effective actions: ${keySteps
277
+ .slice(0, 3)
278
+ .map((s) => s.action.slice(0, 50))
279
+ .join(', ')}`);
280
+ }
281
+ }
282
+ else {
283
+ whatFailed.push(`${routing.strategy} routing did not lead to success`);
284
+ // Check what went wrong
285
+ const errorSteps = trajectory.steps.filter((s) => s.observation?.includes('error') || s.observation?.includes('failed'));
286
+ if (errorSteps.length > 0) {
287
+ whatFailed.push(`Errors encountered: ${errorSteps
288
+ .slice(0, 2)
289
+ .map((s) => s.observation?.slice(0, 100))
290
+ .join('; ')}`);
291
+ }
292
+ // Suggestions based on failure
293
+ if (routing.confidence > 0.7) {
294
+ suggestions.push('High confidence did not guarantee success - consider more exploration');
295
+ }
296
+ if (playbooksUsed.length > 0) {
297
+ suggestions.push('Review playbook applicability - guidance may need refinement');
298
+ }
299
+ else {
300
+ suggestions.push('No playbooks were applied - consider extracting patterns from similar tasks');
301
+ }
302
+ }
303
+ return { whatWorked, whatFailed, suggestions };
304
+ }
305
+ /**
306
+ * Generate strategies from routing analysis
307
+ */
308
+ generateStrategiesFromAnalysis(analysis) {
309
+ const strategies = [];
310
+ // Generate strategy based on success rates
311
+ for (const [decision, stats] of Object.entries(analysis.byDecision)) {
312
+ if (stats.total < 5)
313
+ continue;
314
+ const successRate = stats.successful / stats.total;
315
+ if (successRate < 0.4) {
316
+ // This decision often fails
317
+ strategies.push(createMetaStrategy({
318
+ name: `avoid-${decision}-low-success`,
319
+ condition: {
320
+ taskCharacteristics: [],
321
+ memoryState: [`${decision} suggested`],
322
+ },
323
+ adjustment: {
324
+ routingBias: { [decision]: -0.2 },
325
+ retrievalModification: 'expand search',
326
+ executionHint: `Consider alternatives to ${decision}`,
327
+ },
328
+ }));
329
+ }
330
+ else if (successRate > 0.8 && stats.total >= 10) {
331
+ // This decision is highly effective
332
+ strategies.push(createMetaStrategy({
333
+ name: `prefer-${decision}-high-success`,
334
+ condition: {
335
+ taskCharacteristics: [],
336
+ memoryState: [`${decision} applicable`],
337
+ },
338
+ adjustment: {
339
+ routingBias: { [decision]: 0.1 },
340
+ retrievalModification: '',
341
+ executionHint: `${decision} has been effective`,
342
+ },
343
+ }));
344
+ }
345
+ }
346
+ return strategies;
347
+ }
348
+ }
349
+ /**
350
+ * Create a meta learner
351
+ */
352
+ export function createMetaLearner(meta, config) {
353
+ return new MetaLearner(meta, config);
354
+ }
355
+ //# sourceMappingURL=meta-learner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-learner.js","sourceRoot":"","sources":["../../src/learning/meta-learner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { Trajectory, LearningConfig } from '../types/index.js';
2
+ import type { MemorySystem } from '../memory/system.js';
3
+ import { type AnalysisResult } from './analyzer.js';
4
+ /**
5
+ * Result of processing a single trajectory
6
+ */
7
+ export interface ProcessResult {
8
+ trajectoryId: string;
9
+ stored: boolean;
10
+ analysis: AnalysisResult;
11
+ abstractable: boolean;
12
+ playbookExtracted: boolean;
13
+ }
14
+ /**
15
+ * Result of batch learning
16
+ */
17
+ export interface BatchResult {
18
+ trajectoriesProcessed: number;
19
+ playbooksExtracted: number;
20
+ experiencesPruned: number;
21
+ successRate: number;
22
+ }
23
+ /**
24
+ * Learning Pipeline
25
+ * Orchestrates trajectory analysis, playbook extraction, and memory updates
26
+ */
27
+ export declare class LearningPipeline {
28
+ private analyzer;
29
+ private playbookExtractor;
30
+ private memory;
31
+ private config;
32
+ private accumulated;
33
+ private accumulatedAnalyses;
34
+ private lastBatchTime;
35
+ constructor(memory: MemorySystem, config?: Partial<LearningConfig>);
36
+ /**
37
+ * Process a single trajectory
38
+ */
39
+ processTrajectory(trajectory: Trajectory): Promise<ProcessResult>;
40
+ /**
41
+ * Check if batch learning should run
42
+ */
43
+ shouldRunBatch(): boolean;
44
+ /**
45
+ * Run batch learning on accumulated trajectories
46
+ */
47
+ runBatchLearning(): Promise<BatchResult>;
48
+ /**
49
+ * Get accumulated trajectory count
50
+ */
51
+ getAccumulatedCount(): number;
52
+ /**
53
+ * Clear accumulated trajectories
54
+ */
55
+ clearAccumulated(): void;
56
+ /**
57
+ * Update configuration
58
+ */
59
+ updateConfig(config: Partial<LearningConfig>): void;
60
+ }
61
+ /**
62
+ * Create a learning pipeline
63
+ */
64
+ export declare function createLearningPipeline(memory: MemorySystem, config?: Partial<LearningConfig>): LearningPipeline;
65
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/learning/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAMvB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAG/B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,mBAAmB,CAAwB;IACnD,OAAO,CAAC,aAAa,CAAqB;gBAE9B,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAoBlE;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBvE;;OAEG;IACH,cAAc,IAAI,OAAO;IA6BzB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgF9C;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;CAMpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,gBAAgB,CAElB"}
@@ -0,0 +1,170 @@
1
+ import { createAnalyzer, } from './analyzer.js';
2
+ import { createPlaybookExtractor, } from './playbook-extractor.js';
3
+ /**
4
+ * Learning Pipeline
5
+ * Orchestrates trajectory analysis, playbook extraction, and memory updates
6
+ */
7
+ export class LearningPipeline {
8
+ analyzer;
9
+ playbookExtractor;
10
+ memory;
11
+ config;
12
+ // Accumulated trajectories for batch learning
13
+ accumulated = [];
14
+ accumulatedAnalyses = [];
15
+ lastBatchTime = null;
16
+ constructor(memory, config) {
17
+ this.memory = memory;
18
+ this.config = {
19
+ creditStrategy: config?.creditStrategy ?? 'simple',
20
+ patternExtractor: config?.patternExtractor ?? 'llm',
21
+ minTrajectories: config?.minTrajectories ?? 10,
22
+ minHoursSinceLast: config?.minHoursSinceLast,
23
+ minSuccessRate: config?.minSuccessRate,
24
+ deduplicationThreshold: config?.deduplicationThreshold ?? 0.9,
25
+ maxExperiences: config?.maxExperiences ?? 1000,
26
+ };
27
+ this.analyzer = createAnalyzer(this.config.creditStrategy);
28
+ this.playbookExtractor = createPlaybookExtractor({
29
+ minTrajectories: this.config.minTrajectories,
30
+ mergeThreshold: this.config.deduplicationThreshold,
31
+ minSuccessRate: this.config.minSuccessRate ?? 0.6,
32
+ });
33
+ }
34
+ /**
35
+ * Process a single trajectory
36
+ */
37
+ async processTrajectory(trajectory) {
38
+ // Store in experience memory
39
+ await this.memory.storeTrajectory(trajectory);
40
+ // Analyze the trajectory
41
+ const analysis = await this.analyzer.analyze(trajectory);
42
+ // Accumulate for batch learning
43
+ this.accumulated.push(trajectory);
44
+ this.accumulatedAnalyses.push(analysis);
45
+ return {
46
+ trajectoryId: trajectory.id,
47
+ stored: true,
48
+ analysis,
49
+ abstractable: analysis.abstractable,
50
+ playbookExtracted: false, // Playbooks are extracted in batch
51
+ };
52
+ }
53
+ /**
54
+ * Check if batch learning should run
55
+ */
56
+ shouldRunBatch() {
57
+ // Check minimum trajectories
58
+ if (this.accumulated.length < this.config.minTrajectories) {
59
+ return false;
60
+ }
61
+ // Check time since last batch
62
+ if (this.config.minHoursSinceLast && this.lastBatchTime) {
63
+ const hoursSinceLast = (Date.now() - this.lastBatchTime.getTime()) / (1000 * 60 * 60);
64
+ if (hoursSinceLast < this.config.minHoursSinceLast) {
65
+ return false;
66
+ }
67
+ }
68
+ // Check success rate
69
+ if (this.config.minSuccessRate) {
70
+ const successCount = this.accumulatedAnalyses.filter((a) => a.success).length;
71
+ const successRate = successCount / this.accumulated.length;
72
+ if (successRate < this.config.minSuccessRate) {
73
+ return false;
74
+ }
75
+ }
76
+ return true;
77
+ }
78
+ /**
79
+ * Run batch learning on accumulated trajectories
80
+ */
81
+ async runBatchLearning() {
82
+ if (this.accumulated.length === 0) {
83
+ return {
84
+ trajectoriesProcessed: 0,
85
+ playbooksExtracted: 0,
86
+ experiencesPruned: 0,
87
+ successRate: 0,
88
+ };
89
+ }
90
+ // Extract playbooks from trajectories
91
+ let playbooksAdded = 0;
92
+ const existingPlaybooks = await this.memory.playbooks.getAll();
93
+ const playbookExtraction = await this.playbookExtractor.extract(this.accumulated, this.accumulatedAnalyses, existingPlaybooks);
94
+ // Add new playbooks
95
+ for (const playbook of playbookExtraction.new) {
96
+ const exists = await this.memory.playbooks.exists(playbook.name, this.config.deduplicationThreshold);
97
+ if (!exists) {
98
+ await this.memory.playbooks.add(playbook);
99
+ playbooksAdded++;
100
+ }
101
+ }
102
+ // Apply updates to existing playbooks
103
+ for (const update of playbookExtraction.updates) {
104
+ if (update.refinement) {
105
+ await this.memory.playbooks.addRefinement(update.id, update.refinement.context, update.refinement.addition, update.refinement.source);
106
+ }
107
+ if (update.newTrigger) {
108
+ const playbook = await this.memory.playbooks.get(update.id);
109
+ if (playbook && !playbook.applicability.triggers.includes(update.newTrigger)) {
110
+ playbook.applicability.triggers.push(update.newTrigger);
111
+ await this.memory.playbooks.add(playbook);
112
+ }
113
+ }
114
+ if (update.newAntiPattern) {
115
+ const playbook = await this.memory.playbooks.get(update.id);
116
+ if (playbook && !playbook.applicability.antiPatterns.includes(update.newAntiPattern)) {
117
+ playbook.applicability.antiPatterns.push(update.newAntiPattern);
118
+ await this.memory.playbooks.add(playbook);
119
+ }
120
+ }
121
+ }
122
+ // Prune experiences if needed
123
+ const pruned = await this.memory.experiences.prune({
124
+ maxCount: this.config.maxExperiences,
125
+ });
126
+ // Calculate success rate
127
+ const successCount = this.accumulatedAnalyses.filter((a) => a.success).length;
128
+ const successRate = successCount / this.accumulated.length;
129
+ // Clear accumulated and update time
130
+ const trajectoriesProcessed = this.accumulated.length;
131
+ this.accumulated = [];
132
+ this.accumulatedAnalyses = [];
133
+ this.lastBatchTime = new Date();
134
+ return {
135
+ trajectoriesProcessed,
136
+ playbooksExtracted: playbooksAdded,
137
+ experiencesPruned: pruned.totalPruned,
138
+ successRate,
139
+ };
140
+ }
141
+ /**
142
+ * Get accumulated trajectory count
143
+ */
144
+ getAccumulatedCount() {
145
+ return this.accumulated.length;
146
+ }
147
+ /**
148
+ * Clear accumulated trajectories
149
+ */
150
+ clearAccumulated() {
151
+ this.accumulated = [];
152
+ this.accumulatedAnalyses = [];
153
+ }
154
+ /**
155
+ * Update configuration
156
+ */
157
+ updateConfig(config) {
158
+ this.config = { ...this.config, ...config };
159
+ if (config.creditStrategy) {
160
+ this.analyzer.setStrategy(config.creditStrategy);
161
+ }
162
+ }
163
+ }
164
+ /**
165
+ * Create a learning pipeline
166
+ */
167
+ export function createLearningPipeline(memory, config) {
168
+ return new LearningPipeline(memory, config);
169
+ }
170
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/learning/pipeline.ts"],"names":[],"mappings":"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"}