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
package/dist/index.js ADDED
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Atlas - Adaptive Trajectory Learning and Abstraction System
3
+ *
4
+ * A TypeScript-native cognitive core for building agents that learn
5
+ * from experience. Extracts playbooks from problem-solving trajectories
6
+ * to guide future task solving.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { createAtlas, createTask } from 'cognitive-core';
11
+ *
12
+ * const atlas = createAtlas();
13
+ * await atlas.init();
14
+ *
15
+ * // Set your LLM provider
16
+ * atlas.setProvider(myProvider);
17
+ *
18
+ * // Solve a task
19
+ * const task = createTask({
20
+ * domain: 'code',
21
+ * description: 'Write a function that...',
22
+ * });
23
+ *
24
+ * const result = await atlas.solve(task);
25
+ * console.log(result.trajectory.outcome);
26
+ *
27
+ * // Close when done
28
+ * await atlas.close();
29
+ * ```
30
+ */
31
+ // Main Atlas class
32
+ export { Atlas, createAtlas, createAtlasWithProvider, createAtlasWithAgents, } from './atlas.js';
33
+ // Types
34
+ export * from './types/index.js';
35
+ // Memory system
36
+ export { MemorySystem, createMemorySystem, ExperienceMemory,
37
+ // Playbook-based memory
38
+ PlaybookLibrary, createPlaybookLibrary,
39
+ // Meta-learning memory
40
+ MetaMemory, createMetaMemory, } from './memory/index.js';
41
+ // Learning engine
42
+ export { LearningPipeline, createLearningPipeline, TrajectoryAnalyzer, createAnalyzer,
43
+ // Playbook-based learning
44
+ PlaybookExtractor, createPlaybookExtractor,
45
+ // Meta-learning
46
+ MetaLearner, createMetaLearner,
47
+ // Usage inference
48
+ PlaybookUsageInference, createUsageInference,
49
+ // LLM-based extraction
50
+ LLMPlaybookExtractor, createLLMExtractor, } from './learning/index.js';
51
+ // Search/solving
52
+ export { TaskRouter, createRouter, DirectSolver, createSolver,
53
+ // Refinement
54
+ SolutionEvaluator, createSolutionEvaluator, RefinementLoop, createRefinementLoop, createEvaluationResult, scoreToQuality, isQualityAcceptable,
55
+ // Verification runner
56
+ VerificationRunner, createVerificationRunner, TestRunners, } from './search/index.js';
57
+ // Agents
58
+ export { Agent, MockLLMProvider, createMockProvider, } from './agents/index.js';
59
+ // Utilities
60
+ export { cosineSimilarity, textSimilarity, findTopK, JsonStore, saveJson, loadJson, } from './utils/index.js';
61
+ // Embeddings - Vector search and similarity
62
+ export { OpenAIEmbeddingProvider, VoyageEmbeddingProvider, LocalEmbeddingProvider, createEmbeddingProvider,
63
+ // BM25 text search fallback
64
+ BM25Index, createBM25Index,
65
+ // Vector store
66
+ SqliteVectorStore, createVectorStore,
67
+ // Embedding manager
68
+ EmbeddingManager, createEmbeddingManager, } from './embeddings/index.js';
69
+ // Runtime - Agent management and flows
70
+ export {
71
+ // Manager
72
+ AgentManager, createAgentManager, DefaultKnowledgeInjector, DefaultTrajectoryExtractor,
73
+ // Backends
74
+ SubprocessBackend, createSubprocessBackend, claudeCodeConfig, MockBackend, createMockBackend, ACPBackend, createACPBackend, claudeCodeACPConfig, claudeCodeDirectConfig,
75
+ // Flows
76
+ LearningFlow, createLearningFlow, ValidationFlow, createValidationFlow, } from './runtime/index.js';
77
+ // Surfacing - Skill library for agent consumption
78
+ export { SkillLibrary, createSkillLibrary, } from './surfacing/index.js';
79
+ // MCP Server - On-demand playbook access
80
+ // @deprecated Use the CLI (bin/cognitive-core) + SKILL.md approach instead
81
+ export { PlaybookMCPServer, createPlaybookMCPServer, } from './mcp/index.js';
82
+ // Factory - Unified interface for external integration (e.g., skill-tree)
83
+ export { createCognitiveCoreFactory, cognitiveCoreFactory, } from './factory.js';
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mBAAmB;AACnB,OAAO,EACL,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,qBAAqB,GAGtB,MAAM,YAAY,CAAC;AAEpB,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB;AAGhB,wBAAwB;AACxB,eAAe,EACf,qBAAqB;AAErB,uBAAuB;AACvB,UAAU,EACV,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc;AAId,0BAA0B;AAC1B,iBAAiB,EACjB,uBAAuB;AAIvB,gBAAgB;AAChB,WAAW,EACX,iBAAiB;AAEjB,kBAAkB;AAClB,sBAAsB,EACtB,oBAAoB;AAGpB,uBAAuB;AACvB,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY;AAGZ,aAAa;AACb,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,mBAAmB;AAWnB,sBAAsB;AACtB,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,GAIZ,MAAM,mBAAmB,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,KAAK,EACL,eAAe,EACf,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAE3B,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,4CAA4C;AAC5C,OAAO,EAIL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB;AACvB,4BAA4B;AAC5B,SAAS,EACT,eAAe;AAEf,eAAe;AACf,iBAAiB,EACjB,iBAAiB;AAEjB,oBAAoB;AACpB,gBAAgB,EAChB,sBAAsB,GAGvB,MAAM,uBAAuB,CAAC;AAE/B,uCAAuC;AACvC,OAAO;AACL,UAAU;AACV,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B;AAC1B,WAAW;AACX,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB;AACtB,QAAQ;AACR,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GAoBrB,MAAM,oBAAoB,CAAC;AAE5B,kDAAkD;AAClD,OAAO,EACL,YAAY,EACZ,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAE9B,yCAAyC;AACzC,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAKxB,MAAM,gBAAgB,CAAC;AAExB,0EAA0E;AAC1E,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GASrB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,110 @@
1
+ import type { Trajectory, CreditStrategy } from '../types/index.js';
2
+ /**
3
+ * Analysis result from trajectory examination
4
+ */
5
+ export interface AnalysisResult {
6
+ /** Whether the trajectory succeeded */
7
+ success: boolean;
8
+ /** Indices of key steps (above attribution threshold) */
9
+ keySteps: number[];
10
+ /** Attribution score for each step */
11
+ stepAttribution: number[];
12
+ /** Detected error patterns */
13
+ errorPatterns: ErrorPattern[];
14
+ /** Whether this trajectory is worth extracting patterns from */
15
+ abstractable: boolean;
16
+ /** Suggested training examples */
17
+ trainingExamples: TrainingExample[];
18
+ }
19
+ /**
20
+ * Detected error pattern
21
+ */
22
+ export interface ErrorPattern {
23
+ type: string;
24
+ signature: string;
25
+ description: string;
26
+ suggestedFix?: string;
27
+ }
28
+ /**
29
+ * Training example extracted from trajectory
30
+ */
31
+ export interface TrainingExample {
32
+ input: string;
33
+ output: string;
34
+ stepIndex: number;
35
+ }
36
+ /**
37
+ * Configuration for trajectory analyzer
38
+ */
39
+ export interface AnalyzerConfig {
40
+ /** Credit decay factor for exponential decay (default: 0.5) */
41
+ creditDecayFactor: number;
42
+ /** Minimum action repetitions to flag as repetition pattern (default: 3) */
43
+ actionRepetitionThreshold: number;
44
+ /** Attribution threshold for key step identification (default: 0.15) */
45
+ attributionThreshold: number;
46
+ }
47
+ /**
48
+ * Credit assignment strategies
49
+ */
50
+ export type CreditAssignmentFn = (trajectory: Trajectory, config: AnalyzerConfig) => Promise<number[]>;
51
+ /**
52
+ * Simple exponential decay credit assignment
53
+ * Last step gets 1.0, decays exponentially backwards
54
+ */
55
+ export declare function simpleCreditAssignment(trajectory: Trajectory, config: AnalyzerConfig): Promise<number[]>;
56
+ /**
57
+ * Outcome-based credit assignment
58
+ * Successful trajectories get higher credit for all steps
59
+ */
60
+ export declare function outcomeCreditAssignment(trajectory: Trajectory, _config: AnalyzerConfig): Promise<number[]>;
61
+ /**
62
+ * Get credit assignment function by strategy type
63
+ */
64
+ export declare function getCreditAssignmentFn(strategy: CreditStrategy): CreditAssignmentFn;
65
+ /**
66
+ * Trajectory Analyzer
67
+ * Analyzes trajectories to extract learning signals
68
+ */
69
+ export declare class TrajectoryAnalyzer {
70
+ private creditFn;
71
+ private config;
72
+ constructor(strategy?: CreditStrategy, config?: Partial<AnalyzerConfig>);
73
+ /**
74
+ * Analyze a trajectory
75
+ */
76
+ analyze(trajectory: Trajectory): Promise<AnalysisResult>;
77
+ /**
78
+ * Detect error patterns in failed trajectories
79
+ */
80
+ private detectErrorPatterns;
81
+ /**
82
+ * Assess whether a trajectory is worth abstracting patterns from
83
+ */
84
+ private assessAbstractability;
85
+ /**
86
+ * Extract training examples from trajectory
87
+ */
88
+ private extractTrainingExamples;
89
+ /**
90
+ * Set credit assignment strategy
91
+ */
92
+ setStrategy(strategy: CreditStrategy): void;
93
+ /**
94
+ * Set attribution threshold
95
+ */
96
+ setThreshold(threshold: number): void;
97
+ /**
98
+ * Update configuration
99
+ */
100
+ updateConfig(config: Partial<AnalyzerConfig>): void;
101
+ /**
102
+ * Get current configuration
103
+ */
104
+ getConfig(): AnalyzerConfig;
105
+ }
106
+ /**
107
+ * Create a trajectory analyzer
108
+ */
109
+ export declare function createAnalyzer(strategy?: CreditStrategy, config?: Partial<AnalyzerConfig>): TrajectoryAnalyzer;
110
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/learning/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,8BAA8B;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,gEAAgE;IAChE,YAAY,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,yBAAyB,EAAE,MAAM,CAAC;IAClC,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAQD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEvB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,GACvB,kBAAkB,CAepB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,QAAQ,GAAE,cAAyB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKjF;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;IAyC9D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmD3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAI3C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAInD;;OAEG;IACH,SAAS,IAAI,cAAc;CAG5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,GAAE,cAAyB,EACnC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,kBAAkB,CAEpB"}
@@ -0,0 +1,213 @@
1
+ const DEFAULT_ANALYZER_CONFIG = {
2
+ creditDecayFactor: 0.5,
3
+ actionRepetitionThreshold: 3,
4
+ attributionThreshold: 0.15,
5
+ };
6
+ /**
7
+ * Simple exponential decay credit assignment
8
+ * Last step gets 1.0, decays exponentially backwards
9
+ */
10
+ export function simpleCreditAssignment(trajectory, config) {
11
+ const n = trajectory.steps.length;
12
+ const scores = [];
13
+ const decay = config.creditDecayFactor;
14
+ for (let i = 0; i < n; i++) {
15
+ const distanceFromEnd = n - 1 - i;
16
+ scores.push(Math.pow(decay, distanceFromEnd));
17
+ }
18
+ return Promise.resolve(scores);
19
+ }
20
+ /**
21
+ * Outcome-based credit assignment
22
+ * Successful trajectories get higher credit for all steps
23
+ */
24
+ export function outcomeCreditAssignment(trajectory, _config) {
25
+ const baseScores = trajectory.steps.map(() => trajectory.outcome.success ? 0.7 : 0.3);
26
+ // Boost last step for successful trajectories
27
+ if (trajectory.outcome.success && baseScores.length > 0) {
28
+ baseScores[baseScores.length - 1] = 1.0;
29
+ }
30
+ return Promise.resolve(baseScores);
31
+ }
32
+ /**
33
+ * Get credit assignment function by strategy type
34
+ */
35
+ export function getCreditAssignmentFn(strategy) {
36
+ switch (strategy) {
37
+ case 'simple':
38
+ return simpleCreditAssignment;
39
+ case 'llm':
40
+ // LLM-based credit assignment would require an LLM client
41
+ // Fall back to simple for now
42
+ return simpleCreditAssignment;
43
+ case 'counterfactual':
44
+ // Counterfactual requires environment replay
45
+ // Fall back to outcome-based
46
+ return outcomeCreditAssignment;
47
+ default:
48
+ return simpleCreditAssignment;
49
+ }
50
+ }
51
+ /**
52
+ * Trajectory Analyzer
53
+ * Analyzes trajectories to extract learning signals
54
+ */
55
+ export class TrajectoryAnalyzer {
56
+ creditFn;
57
+ config;
58
+ constructor(strategy = 'simple', config) {
59
+ this.creditFn = getCreditAssignmentFn(strategy);
60
+ this.config = { ...DEFAULT_ANALYZER_CONFIG, ...config };
61
+ }
62
+ /**
63
+ * Analyze a trajectory
64
+ */
65
+ async analyze(trajectory) {
66
+ // Assign credit to steps
67
+ const stepAttribution = await this.creditFn(trajectory, this.config);
68
+ // Apply attribution to steps
69
+ for (let i = 0; i < trajectory.steps.length; i++) {
70
+ trajectory.steps[i].attributionScore = stepAttribution[i];
71
+ }
72
+ // Identify key steps
73
+ const keySteps = stepAttribution
74
+ .map((score, index) => ({ score, index }))
75
+ .filter(({ score }) => score >= this.config.attributionThreshold)
76
+ .map(({ index }) => index);
77
+ // Detect error patterns
78
+ const errorPatterns = this.detectErrorPatterns(trajectory);
79
+ // Assess abstractability
80
+ const abstractable = this.assessAbstractability(trajectory, keySteps, errorPatterns);
81
+ // Extract training examples
82
+ const trainingExamples = this.extractTrainingExamples(trajectory, keySteps);
83
+ return {
84
+ success: trajectory.outcome.success,
85
+ keySteps,
86
+ stepAttribution,
87
+ errorPatterns,
88
+ abstractable,
89
+ trainingExamples,
90
+ };
91
+ }
92
+ /**
93
+ * Detect error patterns in failed trajectories
94
+ */
95
+ detectErrorPatterns(trajectory) {
96
+ const patterns = [];
97
+ if (!trajectory.outcome.success && trajectory.outcome.errorInfo) {
98
+ // Extract error type from error info
99
+ const errorInfo = trajectory.outcome.errorInfo;
100
+ // Common error patterns
101
+ const errorTypes = [
102
+ [/timeout/i, 'timeout', 'Operation timed out'],
103
+ [/not found/i, 'not_found', 'Resource not found'],
104
+ [/permission denied/i, 'permission', 'Permission denied'],
105
+ [/syntax error/i, 'syntax', 'Syntax error in code'],
106
+ [/type error/i, 'type', 'Type mismatch error'],
107
+ [/assertion|assert/i, 'assertion', 'Assertion failed'],
108
+ [/exception|error/i, 'general', 'General error'],
109
+ ];
110
+ for (const [pattern, type, desc] of errorTypes) {
111
+ if (pattern.test(errorInfo)) {
112
+ patterns.push({
113
+ type,
114
+ signature: errorInfo.slice(0, 100),
115
+ description: desc,
116
+ });
117
+ break;
118
+ }
119
+ }
120
+ }
121
+ // Check for repeated failed actions
122
+ const actionCounts = new Map();
123
+ for (const step of trajectory.steps) {
124
+ const count = (actionCounts.get(step.action) ?? 0) + 1;
125
+ actionCounts.set(step.action, count);
126
+ }
127
+ for (const [action, count] of actionCounts) {
128
+ if (count >= this.config.actionRepetitionThreshold) {
129
+ patterns.push({
130
+ type: 'repetition',
131
+ signature: action,
132
+ description: `Action repeated ${count} times`,
133
+ suggestedFix: 'Try a different approach',
134
+ });
135
+ }
136
+ }
137
+ return patterns;
138
+ }
139
+ /**
140
+ * Assess whether a trajectory is worth abstracting patterns from
141
+ */
142
+ assessAbstractability(trajectory, keySteps, errorPatterns) {
143
+ // Successful trajectories are generally abstractable
144
+ if (trajectory.outcome.success) {
145
+ // Must have enough meaningful steps
146
+ return keySteps.length >= 2;
147
+ }
148
+ // Failed trajectories with clear error patterns might be useful
149
+ // for learning what NOT to do
150
+ if (errorPatterns.length > 0) {
151
+ return (errorPatterns.some((p) => p.suggestedFix) ||
152
+ trajectory.outcome.partialScore >= 0.3);
153
+ }
154
+ return false;
155
+ }
156
+ /**
157
+ * Extract training examples from trajectory
158
+ */
159
+ extractTrainingExamples(trajectory, keySteps) {
160
+ const examples = [];
161
+ // Extract from key steps
162
+ for (const index of keySteps) {
163
+ const step = trajectory.steps[index];
164
+ if (step.thought && step.action) {
165
+ examples.push({
166
+ input: step.thought,
167
+ output: step.action,
168
+ stepIndex: index,
169
+ });
170
+ }
171
+ }
172
+ // Add final step as input-output pair
173
+ if (trajectory.steps.length > 0 && trajectory.outcome.success) {
174
+ examples.push({
175
+ input: trajectory.task.description,
176
+ output: JSON.stringify(trajectory.outcome.solution),
177
+ stepIndex: trajectory.steps.length - 1,
178
+ });
179
+ }
180
+ return examples;
181
+ }
182
+ /**
183
+ * Set credit assignment strategy
184
+ */
185
+ setStrategy(strategy) {
186
+ this.creditFn = getCreditAssignmentFn(strategy);
187
+ }
188
+ /**
189
+ * Set attribution threshold
190
+ */
191
+ setThreshold(threshold) {
192
+ this.config.attributionThreshold = threshold;
193
+ }
194
+ /**
195
+ * Update configuration
196
+ */
197
+ updateConfig(config) {
198
+ this.config = { ...this.config, ...config };
199
+ }
200
+ /**
201
+ * Get current configuration
202
+ */
203
+ getConfig() {
204
+ return { ...this.config };
205
+ }
206
+ }
207
+ /**
208
+ * Create a trajectory analyzer
209
+ */
210
+ export function createAnalyzer(strategy = 'simple', config) {
211
+ return new TrajectoryAnalyzer(strategy, config);
212
+ }
213
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/learning/analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Learning Effectiveness Tracker
3
+ *
4
+ * Measures whether the learning system is actually improving agent outcomes.
5
+ * Uses post-task reflection annotations rather than A/B replay evaluation.
6
+ *
7
+ * After each trajectory completes, the tracker annotates it with:
8
+ * - What knowledge was surfaced (playbooks, experiences)
9
+ * - Whether the surfaced knowledge was applied (inferred from trajectory)
10
+ * - Whether the outcome improved relative to similar unaided tasks
11
+ *
12
+ * These annotations accumulate into aggregate metrics that answer:
13
+ * "Is learning making agents better over time?"
14
+ *
15
+ * Inspired by Dash's eval framework but adapted for domain-agnostic
16
+ * trajectory learning rather than text-to-SQL.
17
+ */
18
+ import type { Trajectory } from '../types/index.js';
19
+ import type { PlaybookMatch } from '../memory/playbook.js';
20
+ /**
21
+ * Annotation attached to a trajectory after completion.
22
+ * Records what knowledge was available and whether it helped.
23
+ */
24
+ export interface TaskAnnotation {
25
+ id: string;
26
+ trajectoryId: string;
27
+ timestamp: Date;
28
+ /** What was surfaced before/during execution */
29
+ knowledgeSurfaced: {
30
+ playbookIds: string[];
31
+ playbookNames: string[];
32
+ experienceIds: string[];
33
+ /** Total number of knowledge items retrieved */
34
+ totalItems: number;
35
+ };
36
+ /** What was actually applied (inferred from trajectory analysis) */
37
+ knowledgeApplied: {
38
+ /** Playbook IDs whose tactics appeared in the trajectory steps */
39
+ playbookIdsUsed: string[];
40
+ /** Whether any surfaced knowledge was used */
41
+ anyKnowledgeUsed: boolean;
42
+ };
43
+ /** Outcome metrics for this task */
44
+ outcome: {
45
+ success: boolean;
46
+ stepCount: number;
47
+ /** Number of error-recovery cycles in the trajectory */
48
+ errorRecoveries: number;
49
+ /** Whether the task domain had prior playbooks */
50
+ domainHadPlaybooks: boolean;
51
+ };
52
+ /** Optional human or agent reflection after task completion */
53
+ reflection?: {
54
+ /** Was the surfaced knowledge relevant? */
55
+ knowledgeRelevance: 'helpful' | 'irrelevant' | 'misleading' | 'not_assessed';
56
+ /** Free-form notes on what worked or didn't */
57
+ notes?: string;
58
+ };
59
+ }
60
+ /**
61
+ * Aggregate effectiveness metrics computed from annotations
62
+ */
63
+ export interface EffectivenessMetrics {
64
+ /** Total tasks tracked */
65
+ totalTasks: number;
66
+ /** Tasks where knowledge was surfaced vs not */
67
+ guidedTasks: number;
68
+ unguidedTasks: number;
69
+ /** Success rates */
70
+ guidedSuccessRate: number;
71
+ unguidedSuccessRate: number;
72
+ /** Difference: positive means guidance helps */
73
+ successRateDelta: number;
74
+ /** Average step counts */
75
+ guidedAvgSteps: number;
76
+ unguidedAvgSteps: number;
77
+ /** Negative means guidance reduces steps (good) */
78
+ stepCountDelta: number;
79
+ /** Knowledge application rates */
80
+ knowledgeApplicationRate: number;
81
+ /** Of applied knowledge, how often did the task succeed? */
82
+ appliedKnowledgeSuccessRate: number;
83
+ /** Error recovery */
84
+ guidedAvgErrorRecoveries: number;
85
+ unguidedAvgErrorRecoveries: number;
86
+ /** Per-playbook effectiveness */
87
+ playbookEffectiveness: PlaybookEffectivenessEntry[];
88
+ /** Time window these metrics cover */
89
+ windowStart: Date;
90
+ windowEnd: Date;
91
+ }
92
+ /**
93
+ * Effectiveness metrics for a single playbook
94
+ */
95
+ export interface PlaybookEffectivenessEntry {
96
+ playbookId: string;
97
+ playbookName: string;
98
+ /** Times this playbook was surfaced */
99
+ surfacedCount: number;
100
+ /** Times this playbook was actually applied */
101
+ appliedCount: number;
102
+ /** Success rate when applied */
103
+ appliedSuccessRate: number;
104
+ /** Average step count when applied */
105
+ appliedAvgSteps: number;
106
+ /** How often agents found this knowledge relevant */
107
+ relevanceRate: number;
108
+ }
109
+ /**
110
+ * Tracks learning effectiveness through post-task annotations
111
+ */
112
+ export declare class LearningEffectivenessTracker {
113
+ private store;
114
+ private initialized;
115
+ constructor(baseDir: string);
116
+ init(): Promise<void>;
117
+ /**
118
+ * Annotate a completed trajectory with knowledge usage data.
119
+ * Call this after a task finishes and usage inference has run.
120
+ */
121
+ annotate(trajectory: Trajectory, surfacedPlaybooks: PlaybookMatch[], surfacedExperienceIds: string[], appliedPlaybookIds: string[]): Promise<TaskAnnotation>;
122
+ /**
123
+ * Add a reflection to an existing annotation.
124
+ * Called after human review or agent self-reflection.
125
+ */
126
+ addReflection(annotationId: string, reflection: TaskAnnotation['reflection']): Promise<void>;
127
+ /**
128
+ * Compute aggregate effectiveness metrics over a time window.
129
+ * Defaults to all time if no window specified.
130
+ */
131
+ computeMetrics(options?: {
132
+ since?: Date;
133
+ until?: Date;
134
+ domain?: string;
135
+ }): Promise<EffectivenessMetrics>;
136
+ /**
137
+ * Get all annotations (for export/inspection)
138
+ */
139
+ getAll(): Promise<TaskAnnotation[]>;
140
+ /**
141
+ * Get annotation by trajectory ID
142
+ */
143
+ getByTrajectoryId(trajectoryId: string): Promise<TaskAnnotation | undefined>;
144
+ /**
145
+ * Get annotation count
146
+ */
147
+ count(): Promise<number>;
148
+ /**
149
+ * Close the store
150
+ */
151
+ close(): Promise<void>;
152
+ private computePlaybookEffectiveness;
153
+ }
154
+ /**
155
+ * Create a learning effectiveness tracker
156
+ */
157
+ export declare function createEffectivenessTracker(baseDir: string): LearningEffectivenessTracker;
158
+ //# sourceMappingURL=effectiveness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectiveness.d.ts","sourceRoot":"","sources":["../../src/learning/effectiveness.ts"],"names":[],"mappings":"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"}