cognitive-core 0.1.2 → 0.2.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 (483) hide show
  1. package/CLAUDE.md +233 -0
  2. package/README.md +370 -54
  3. package/dist/atlas.d.ts +10 -10
  4. package/dist/atlas.d.ts.map +1 -1
  5. package/dist/atlas.js +79 -48
  6. package/dist/atlas.js.map +1 -1
  7. package/dist/bin/cli-utils.d.ts +37 -0
  8. package/dist/bin/cli-utils.d.ts.map +1 -0
  9. package/dist/bin/cli-utils.js +176 -0
  10. package/dist/bin/cli-utils.js.map +1 -0
  11. package/dist/bin/cognitive-core.d.ts +2 -12
  12. package/dist/bin/cognitive-core.d.ts.map +1 -1
  13. package/dist/bin/cognitive-core.js +76 -351
  14. package/dist/bin/cognitive-core.js.map +1 -1
  15. package/dist/bin/commands/kb.d.ts +6 -0
  16. package/dist/bin/commands/kb.d.ts.map +1 -0
  17. package/dist/bin/commands/kb.js +240 -0
  18. package/dist/bin/commands/kb.js.map +1 -0
  19. package/dist/bin/commands/learn.d.ts +6 -0
  20. package/dist/bin/commands/learn.d.ts.map +1 -0
  21. package/dist/bin/commands/learn.js +91 -0
  22. package/dist/bin/commands/learn.js.map +1 -0
  23. package/dist/bin/commands/legacy.d.ts +12 -0
  24. package/dist/bin/commands/legacy.d.ts.map +1 -0
  25. package/dist/bin/commands/legacy.js +142 -0
  26. package/dist/bin/commands/legacy.js.map +1 -0
  27. package/dist/bin/commands/run.d.ts +3 -0
  28. package/dist/bin/commands/run.d.ts.map +1 -0
  29. package/dist/bin/commands/run.js +99 -0
  30. package/dist/bin/commands/run.js.map +1 -0
  31. package/dist/bin/commands/sessions.d.ts +9 -0
  32. package/dist/bin/commands/sessions.d.ts.map +1 -0
  33. package/dist/bin/commands/sessions.js +183 -0
  34. package/dist/bin/commands/sessions.js.map +1 -0
  35. package/dist/bin/commands/skills.d.ts +6 -0
  36. package/dist/bin/commands/skills.d.ts.map +1 -0
  37. package/dist/bin/commands/skills.js +135 -0
  38. package/dist/bin/commands/skills.js.map +1 -0
  39. package/dist/embeddings/index.d.ts +1 -0
  40. package/dist/embeddings/index.d.ts.map +1 -1
  41. package/dist/embeddings/index.js +2 -0
  42. package/dist/embeddings/index.js.map +1 -1
  43. package/dist/embeddings/inverted-index.d.ts +47 -0
  44. package/dist/embeddings/inverted-index.d.ts.map +1 -0
  45. package/dist/embeddings/inverted-index.js +122 -0
  46. package/dist/embeddings/inverted-index.js.map +1 -0
  47. package/dist/embeddings/manager.d.ts +3 -1
  48. package/dist/embeddings/manager.d.ts.map +1 -1
  49. package/dist/embeddings/manager.js +12 -7
  50. package/dist/embeddings/manager.js.map +1 -1
  51. package/dist/embeddings/vector-store.d.ts +7 -3
  52. package/dist/embeddings/vector-store.d.ts.map +1 -1
  53. package/dist/embeddings/vector-store.js +22 -6
  54. package/dist/embeddings/vector-store.js.map +1 -1
  55. package/dist/factory.d.ts +11 -12
  56. package/dist/factory.d.ts.map +1 -1
  57. package/dist/factory.js +20 -7
  58. package/dist/factory.js.map +1 -1
  59. package/dist/index.d.ts +7 -6
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +37 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/learning/analyzer.d.ts.map +1 -1
  64. package/dist/learning/analyzer.js +17 -35
  65. package/dist/learning/analyzer.js.map +1 -1
  66. package/dist/learning/energy-evaluator.d.ts +128 -0
  67. package/dist/learning/energy-evaluator.d.ts.map +1 -0
  68. package/dist/learning/energy-evaluator.js +175 -0
  69. package/dist/learning/energy-evaluator.js.map +1 -0
  70. package/dist/learning/healing-orchestrator.d.ts +182 -0
  71. package/dist/learning/healing-orchestrator.d.ts.map +1 -0
  72. package/dist/learning/healing-orchestrator.js +250 -0
  73. package/dist/learning/healing-orchestrator.js.map +1 -0
  74. package/dist/learning/index.d.ts +7 -2
  75. package/dist/learning/index.d.ts.map +1 -1
  76. package/dist/learning/index.js +13 -2
  77. package/dist/learning/index.js.map +1 -1
  78. package/dist/learning/instant-loop.d.ts +87 -0
  79. package/dist/learning/instant-loop.d.ts.map +1 -0
  80. package/dist/learning/instant-loop.js +264 -0
  81. package/dist/learning/instant-loop.js.map +1 -0
  82. package/dist/learning/loop-coordinator.d.ts +61 -0
  83. package/dist/learning/loop-coordinator.d.ts.map +1 -0
  84. package/dist/learning/loop-coordinator.js +96 -0
  85. package/dist/learning/loop-coordinator.js.map +1 -0
  86. package/dist/learning/maintenance-scheduler.d.ts +141 -0
  87. package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
  88. package/dist/learning/maintenance-scheduler.js +186 -0
  89. package/dist/learning/maintenance-scheduler.js.map +1 -0
  90. package/dist/learning/meta-learner.d.ts.map +1 -1
  91. package/dist/learning/meta-learner.js +4 -21
  92. package/dist/learning/meta-learner.js.map +1 -1
  93. package/dist/learning/pipeline.d.ts +31 -4
  94. package/dist/learning/pipeline.d.ts.map +1 -1
  95. package/dist/learning/pipeline.js +64 -12
  96. package/dist/learning/pipeline.js.map +1 -1
  97. package/dist/learning/reflexion-generator.d.ts +64 -0
  98. package/dist/learning/reflexion-generator.d.ts.map +1 -0
  99. package/dist/learning/reflexion-generator.js +194 -0
  100. package/dist/learning/reflexion-generator.js.map +1 -0
  101. package/dist/learning/trajectory-sources/entire.d.ts +8 -5
  102. package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
  103. package/dist/learning/trajectory-sources/entire.js +13 -6
  104. package/dist/learning/trajectory-sources/entire.js.map +1 -1
  105. package/dist/learning/trajectory-sources/index.d.ts +1 -1
  106. package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
  107. package/dist/learning/trajectory-sources/index.js +1 -1
  108. package/dist/learning/trajectory-sources/index.js.map +1 -1
  109. package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
  110. package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
  111. package/dist/learning/trajectory-sources/pipeline.js +2 -2
  112. package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
  113. package/dist/learning/unified-pipeline.d.ts +281 -0
  114. package/dist/learning/unified-pipeline.d.ts.map +1 -0
  115. package/dist/learning/unified-pipeline.js +637 -0
  116. package/dist/learning/unified-pipeline.js.map +1 -0
  117. package/dist/memory/candidate-retrieval.d.ts +43 -0
  118. package/dist/memory/candidate-retrieval.d.ts.map +1 -0
  119. package/dist/memory/candidate-retrieval.js +41 -0
  120. package/dist/memory/candidate-retrieval.js.map +1 -0
  121. package/dist/memory/causal-store.d.ts +97 -0
  122. package/dist/memory/causal-store.d.ts.map +1 -0
  123. package/dist/memory/causal-store.js +209 -0
  124. package/dist/memory/causal-store.js.map +1 -0
  125. package/dist/memory/coherence.d.ts +71 -0
  126. package/dist/memory/coherence.d.ts.map +1 -0
  127. package/dist/memory/coherence.js +176 -0
  128. package/dist/memory/coherence.js.map +1 -0
  129. package/dist/memory/experience.d.ts +39 -6
  130. package/dist/memory/experience.d.ts.map +1 -1
  131. package/dist/memory/experience.js +193 -49
  132. package/dist/memory/experience.js.map +1 -1
  133. package/dist/memory/index.d.ts +7 -0
  134. package/dist/memory/index.d.ts.map +1 -1
  135. package/dist/memory/index.js +12 -0
  136. package/dist/memory/index.js.map +1 -1
  137. package/dist/memory/knowledge-bank.d.ts +14 -0
  138. package/dist/memory/knowledge-bank.d.ts.map +1 -1
  139. package/dist/memory/knowledge-bank.js +45 -0
  140. package/dist/memory/knowledge-bank.js.map +1 -1
  141. package/dist/memory/meta.d.ts +7 -8
  142. package/dist/memory/meta.d.ts.map +1 -1
  143. package/dist/memory/meta.js +73 -79
  144. package/dist/memory/meta.js.map +1 -1
  145. package/dist/memory/playbook.d.ts +26 -9
  146. package/dist/memory/playbook.d.ts.map +1 -1
  147. package/dist/memory/playbook.js +198 -74
  148. package/dist/memory/playbook.js.map +1 -1
  149. package/dist/memory/reasoning-bank.d.ts +130 -0
  150. package/dist/memory/reasoning-bank.d.ts.map +1 -0
  151. package/dist/memory/reasoning-bank.js +342 -0
  152. package/dist/memory/reasoning-bank.js.map +1 -0
  153. package/dist/memory/reflexion.d.ts +59 -0
  154. package/dist/memory/reflexion.d.ts.map +1 -0
  155. package/dist/memory/reflexion.js +96 -0
  156. package/dist/memory/reflexion.js.map +1 -0
  157. package/dist/memory/system.d.ts +7 -2
  158. package/dist/memory/system.d.ts.map +1 -1
  159. package/dist/memory/system.js +19 -7
  160. package/dist/memory/system.js.map +1 -1
  161. package/dist/memory/temporal-compressor.d.ts +126 -0
  162. package/dist/memory/temporal-compressor.d.ts.map +1 -0
  163. package/dist/memory/temporal-compressor.js +335 -0
  164. package/dist/memory/temporal-compressor.js.map +1 -0
  165. package/dist/persistence/index.d.ts +11 -0
  166. package/dist/persistence/index.d.ts.map +1 -0
  167. package/dist/persistence/index.js +11 -0
  168. package/dist/persistence/index.js.map +1 -0
  169. package/dist/persistence/migrator.d.ts +40 -0
  170. package/dist/persistence/migrator.d.ts.map +1 -0
  171. package/dist/persistence/migrator.js +238 -0
  172. package/dist/persistence/migrator.js.map +1 -0
  173. package/dist/persistence/serializers.d.ts +45 -0
  174. package/dist/persistence/serializers.d.ts.map +1 -0
  175. package/dist/persistence/serializers.js +80 -0
  176. package/dist/persistence/serializers.js.map +1 -0
  177. package/dist/persistence/sqlite-persistence.d.ts +228 -0
  178. package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
  179. package/dist/persistence/sqlite-persistence.js +588 -0
  180. package/dist/persistence/sqlite-persistence.js.map +1 -0
  181. package/dist/runtime/flows/learning.d.ts +10 -12
  182. package/dist/runtime/flows/learning.d.ts.map +1 -1
  183. package/dist/runtime/flows/learning.js +10 -23
  184. package/dist/runtime/flows/learning.js.map +1 -1
  185. package/dist/search/index.d.ts +1 -0
  186. package/dist/search/index.d.ts.map +1 -1
  187. package/dist/search/index.js +2 -0
  188. package/dist/search/index.js.map +1 -1
  189. package/dist/search/moe-gate.d.ts +124 -0
  190. package/dist/search/moe-gate.d.ts.map +1 -0
  191. package/dist/search/moe-gate.js +234 -0
  192. package/dist/search/moe-gate.js.map +1 -0
  193. package/dist/search/router.d.ts +32 -2
  194. package/dist/search/router.d.ts.map +1 -1
  195. package/dist/search/router.js +87 -4
  196. package/dist/search/router.js.map +1 -1
  197. package/dist/session-bank/git-reader.d.ts +9 -4
  198. package/dist/session-bank/git-reader.d.ts.map +1 -1
  199. package/dist/session-bank/git-reader.js +22 -15
  200. package/dist/session-bank/git-reader.js.map +1 -1
  201. package/dist/session-bank/index.d.ts +2 -2
  202. package/dist/session-bank/index.d.ts.map +1 -1
  203. package/dist/session-bank/index.js +2 -2
  204. package/dist/session-bank/index.js.map +1 -1
  205. package/dist/session-bank/parser.d.ts +16 -5
  206. package/dist/session-bank/parser.d.ts.map +1 -1
  207. package/dist/session-bank/parser.js +187 -80
  208. package/dist/session-bank/parser.js.map +1 -1
  209. package/dist/session-bank/session-bank.d.ts +5 -0
  210. package/dist/session-bank/session-bank.d.ts.map +1 -1
  211. package/dist/session-bank/session-bank.js +30 -9
  212. package/dist/session-bank/session-bank.js.map +1 -1
  213. package/dist/session-bank/types.d.ts +4 -1
  214. package/dist/session-bank/types.d.ts.map +1 -1
  215. package/dist/session-bank/types.js +3 -3
  216. package/dist/session-bank/types.js.map +1 -1
  217. package/dist/surfacing/skill-publisher.d.ts.map +1 -1
  218. package/dist/surfacing/skill-publisher.js +15 -43
  219. package/dist/surfacing/skill-publisher.js.map +1 -1
  220. package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
  221. package/dist/surfacing/sqlite-storage-adapter.js +13 -21
  222. package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
  223. package/dist/types/config.d.ts +100 -0
  224. package/dist/types/config.d.ts.map +1 -1
  225. package/dist/types/config.js +27 -0
  226. package/dist/types/config.js.map +1 -1
  227. package/dist/types/index.d.ts +2 -2
  228. package/dist/types/index.d.ts.map +1 -1
  229. package/dist/types/index.js +1 -1
  230. package/dist/types/index.js.map +1 -1
  231. package/dist/types/memory.d.ts +52 -0
  232. package/dist/types/memory.d.ts.map +1 -1
  233. package/dist/types/memory.js +13 -0
  234. package/dist/types/memory.js.map +1 -1
  235. package/dist/types/playbook.d.ts +4 -0
  236. package/dist/types/playbook.d.ts.map +1 -1
  237. package/dist/types/playbook.js.map +1 -1
  238. package/dist/utils/error-classifier.d.ts +30 -0
  239. package/dist/utils/error-classifier.d.ts.map +1 -0
  240. package/dist/utils/error-classifier.js +85 -0
  241. package/dist/utils/error-classifier.js.map +1 -0
  242. package/dist/utils/index.d.ts +3 -0
  243. package/dist/utils/index.d.ts.map +1 -1
  244. package/dist/utils/index.js +3 -0
  245. package/dist/utils/index.js.map +1 -1
  246. package/dist/utils/partitioned-store.d.ts +93 -0
  247. package/dist/utils/partitioned-store.d.ts.map +1 -0
  248. package/dist/utils/partitioned-store.js +251 -0
  249. package/dist/utils/partitioned-store.js.map +1 -0
  250. package/dist/utils/trajectory-helpers.d.ts +39 -0
  251. package/dist/utils/trajectory-helpers.d.ts.map +1 -0
  252. package/dist/utils/trajectory-helpers.js +57 -0
  253. package/dist/utils/trajectory-helpers.js.map +1 -0
  254. package/dist/workspace/runner.d.ts +3 -4
  255. package/dist/workspace/runner.d.ts.map +1 -1
  256. package/dist/workspace/runner.js.map +1 -1
  257. package/dist/workspace/types.d.ts +9 -2
  258. package/dist/workspace/types.d.ts.map +1 -1
  259. package/dist/workspace/types.js.map +1 -1
  260. package/package.json +6 -4
  261. package/references/sessionlog/.husky/pre-commit +1 -0
  262. package/references/sessionlog/.lintstagedrc.json +4 -0
  263. package/references/sessionlog/.prettierignore +4 -0
  264. package/references/sessionlog/.prettierrc.json +11 -0
  265. package/references/sessionlog/LICENSE +21 -0
  266. package/references/sessionlog/README.md +453 -0
  267. package/references/sessionlog/eslint.config.js +58 -0
  268. package/references/sessionlog/package-lock.json +3672 -0
  269. package/references/sessionlog/package.json +65 -0
  270. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
  271. package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
  272. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
  273. package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
  274. package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
  275. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
  276. package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
  277. package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
  278. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
  279. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
  280. package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
  281. package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
  282. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
  283. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
  284. package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
  285. package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
  286. package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
  287. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
  288. package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
  289. package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
  290. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
  291. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
  292. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
  293. package/references/sessionlog/src/__tests__/types.test.ts +166 -0
  294. package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
  295. package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
  296. package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
  297. package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
  298. package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
  299. package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
  300. package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
  301. package/references/sessionlog/src/agent/registry.ts +143 -0
  302. package/references/sessionlog/src/agent/session-types.ts +113 -0
  303. package/references/sessionlog/src/agent/types.ts +220 -0
  304. package/references/sessionlog/src/cli.ts +597 -0
  305. package/references/sessionlog/src/commands/clean.ts +133 -0
  306. package/references/sessionlog/src/commands/disable.ts +84 -0
  307. package/references/sessionlog/src/commands/doctor.ts +145 -0
  308. package/references/sessionlog/src/commands/enable.ts +202 -0
  309. package/references/sessionlog/src/commands/explain.ts +261 -0
  310. package/references/sessionlog/src/commands/reset.ts +105 -0
  311. package/references/sessionlog/src/commands/resume.ts +180 -0
  312. package/references/sessionlog/src/commands/rewind.ts +195 -0
  313. package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
  314. package/references/sessionlog/src/commands/status.ts +172 -0
  315. package/references/sessionlog/src/config.ts +165 -0
  316. package/references/sessionlog/src/events/event-log.ts +126 -0
  317. package/references/sessionlog/src/git-operations.ts +558 -0
  318. package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
  319. package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
  320. package/references/sessionlog/src/index.ts +650 -0
  321. package/references/sessionlog/src/security/redaction.ts +283 -0
  322. package/references/sessionlog/src/session/state-machine.ts +452 -0
  323. package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
  324. package/references/sessionlog/src/store/native-store.ts +173 -0
  325. package/references/sessionlog/src/store/provider-types.ts +99 -0
  326. package/references/sessionlog/src/store/session-store.ts +266 -0
  327. package/references/sessionlog/src/strategy/attribution.ts +296 -0
  328. package/references/sessionlog/src/strategy/common.ts +207 -0
  329. package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
  330. package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
  331. package/references/sessionlog/src/strategy/types.ts +279 -0
  332. package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
  333. package/references/sessionlog/src/summarize/summarize.ts +432 -0
  334. package/references/sessionlog/src/types.ts +508 -0
  335. package/references/sessionlog/src/utils/chunk-files.ts +49 -0
  336. package/references/sessionlog/src/utils/commit-message.ts +65 -0
  337. package/references/sessionlog/src/utils/detect-agent.ts +36 -0
  338. package/references/sessionlog/src/utils/hook-managers.ts +125 -0
  339. package/references/sessionlog/src/utils/ide-tags.ts +32 -0
  340. package/references/sessionlog/src/utils/paths.ts +79 -0
  341. package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
  342. package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
  343. package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
  344. package/references/sessionlog/src/utils/string-utils.ts +46 -0
  345. package/references/sessionlog/src/utils/todo-extract.ts +188 -0
  346. package/references/sessionlog/src/utils/trailers.ts +187 -0
  347. package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
  348. package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
  349. package/references/sessionlog/src/utils/tree-ops.ts +219 -0
  350. package/references/sessionlog/src/utils/tty.ts +72 -0
  351. package/references/sessionlog/src/utils/validation.ts +65 -0
  352. package/references/sessionlog/src/utils/worktree.ts +58 -0
  353. package/references/sessionlog/src/wire-types.ts +59 -0
  354. package/references/sessionlog/templates/setup-env.sh +153 -0
  355. package/references/sessionlog/tsconfig.json +18 -0
  356. package/references/sessionlog/vitest.config.ts +12 -0
  357. package/references/skill-tree/.sudocode/issues.jsonl +8 -0
  358. package/references/skill-tree/.sudocode/specs.jsonl +2 -0
  359. package/references/skill-tree/CLAUDE.md +56 -80
  360. package/references/skill-tree/README.md +188 -140
  361. package/references/skill-tree/examples/basic-usage.ts +95 -121
  362. package/references/skill-tree/package-lock.json +369 -26
  363. package/references/skill-tree/package.json +1 -1
  364. package/src/atlas.ts +97 -67
  365. package/src/bin/cli-utils.ts +220 -0
  366. package/src/bin/cognitive-core.ts +84 -392
  367. package/src/bin/commands/kb.ts +266 -0
  368. package/src/bin/commands/learn.ts +100 -0
  369. package/src/bin/commands/legacy.ts +182 -0
  370. package/src/bin/commands/run.ts +113 -0
  371. package/src/bin/commands/sessions.ts +221 -0
  372. package/src/bin/commands/skills.ts +146 -0
  373. package/src/embeddings/index.ts +3 -0
  374. package/src/embeddings/inverted-index.ts +134 -0
  375. package/src/embeddings/manager.ts +13 -8
  376. package/src/embeddings/vector-store.ts +21 -9
  377. package/src/factory.ts +33 -16
  378. package/src/index.ts +109 -9
  379. package/src/learning/analyzer.ts +21 -37
  380. package/src/learning/energy-evaluator.ts +282 -0
  381. package/src/learning/healing-orchestrator.ts +383 -0
  382. package/src/learning/index.ts +65 -9
  383. package/src/learning/instant-loop.ts +357 -0
  384. package/src/learning/maintenance-scheduler.ts +271 -0
  385. package/src/learning/meta-learner.ts +5 -23
  386. package/src/learning/reflexion-generator.ts +273 -0
  387. package/src/learning/trajectory-sources/entire.ts +24 -13
  388. package/src/learning/trajectory-sources/index.ts +2 -2
  389. package/src/learning/trajectory-sources/pipeline.ts +5 -5
  390. package/src/learning/unified-pipeline.ts +921 -0
  391. package/src/memory/candidate-retrieval.ts +71 -0
  392. package/src/memory/causal-store.ts +273 -0
  393. package/src/memory/coherence.ts +252 -0
  394. package/src/memory/experience.ts +217 -50
  395. package/src/memory/index.ts +43 -0
  396. package/src/memory/knowledge-bank.ts +57 -0
  397. package/src/memory/meta.ts +78 -96
  398. package/src/memory/playbook.ts +239 -75
  399. package/src/memory/reasoning-bank.ts +458 -0
  400. package/src/memory/reflexion.ts +122 -0
  401. package/src/memory/system.ts +21 -5
  402. package/src/memory/temporal-compressor.ts +409 -0
  403. package/src/persistence/index.ts +37 -0
  404. package/src/persistence/migrator.ts +298 -0
  405. package/src/persistence/serializers.ts +79 -0
  406. package/src/persistence/sqlite-persistence.ts +925 -0
  407. package/src/runtime/flows/learning.ts +25 -42
  408. package/src/search/index.ts +10 -0
  409. package/src/search/moe-gate.ts +304 -0
  410. package/src/search/router.ts +111 -4
  411. package/src/session-bank/git-reader.ts +29 -19
  412. package/src/session-bank/index.ts +4 -2
  413. package/src/session-bank/parser.ts +280 -98
  414. package/src/session-bank/session-bank.ts +33 -12
  415. package/src/session-bank/types.ts +8 -5
  416. package/src/surfacing/skill-publisher.ts +17 -49
  417. package/src/surfacing/sqlite-storage-adapter.ts +16 -32
  418. package/src/types/config.ts +30 -0
  419. package/src/types/index.ts +3 -0
  420. package/src/types/memory.ts +30 -0
  421. package/src/types/playbook.ts +4 -0
  422. package/src/utils/error-classifier.ts +113 -0
  423. package/src/utils/index.ts +18 -0
  424. package/src/utils/partitioned-store.ts +299 -0
  425. package/src/utils/trajectory-helpers.ts +79 -0
  426. package/src/workspace/runner.ts +3 -3
  427. package/src/workspace/types.ts +10 -2
  428. package/tests/embeddings/inverted-index.test.ts +138 -0
  429. package/tests/feature-toggles.test.ts +275 -0
  430. package/tests/gap-fixes.test.ts +17 -4
  431. package/tests/integration/cli-e2e.test.ts +621 -0
  432. package/tests/integration/e2e.test.ts +6 -5
  433. package/tests/integration/entire-e2e.test.ts +314 -125
  434. package/tests/integration/persistence-e2e.test.ts +741 -0
  435. package/tests/integration/phase-e2e.test.ts +1143 -0
  436. package/tests/integration/session-bank.test.ts +20 -14
  437. package/tests/integration/sessionlog-e2e.test.ts +329 -0
  438. package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
  439. package/tests/learning/analyzer.test.ts +1 -1
  440. package/tests/learning/energy-evaluator.test.ts +180 -0
  441. package/tests/learning/entire-trajectory-source.test.ts +25 -25
  442. package/tests/learning/healing-orchestrator.test.ts +269 -0
  443. package/tests/learning/instant-loop.test.ts +243 -0
  444. package/tests/learning/maintenance-scheduler.test.ts +191 -0
  445. package/tests/learning/reflexion-generator.test.ts +411 -0
  446. package/tests/learning/trajectory-sources.test.ts +12 -4
  447. package/tests/learning/unified-pipeline.test.ts +322 -0
  448. package/tests/mcp/playbook-server.test.ts +6 -1
  449. package/tests/memory/causal-store.test.ts +276 -0
  450. package/tests/memory/coherence.test.ts +232 -0
  451. package/tests/memory/experience.test.ts +8 -3
  452. package/tests/memory/playbook.test.ts +307 -1
  453. package/tests/memory/provenance.test.ts +11 -2
  454. package/tests/memory/reasoning-bank.test.ts +239 -0
  455. package/tests/memory/reflexion.test.ts +166 -0
  456. package/tests/memory/skill-exporter.test.ts +6 -1
  457. package/tests/memory/system.test.ts +6 -1
  458. package/tests/memory/temporal-compressor.test.ts +318 -0
  459. package/tests/persistence/migrator.test.ts +1009 -0
  460. package/tests/persistence/sqlite-persistence.test.ts +635 -0
  461. package/tests/runtime/agent-manager.test.ts +6 -1
  462. package/tests/runtime/delegate.test.ts +6 -1
  463. package/tests/search/moe-gate.test.ts +250 -0
  464. package/tests/search/refinement-loop.test.ts +11 -2
  465. package/tests/search/router.test.ts +81 -2
  466. package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
  467. package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
  468. package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
  469. package/tests/session-bank/git-reader.test.ts +13 -13
  470. package/tests/session-bank/parser.test.ts +135 -3
  471. package/tests/session-bank/session-bank.test.ts +1 -1
  472. package/tests/surfacing/skill-library.test.ts +6 -1
  473. package/tests/surfacing/skill-publisher.test.ts +24 -58
  474. package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
  475. package/tests/utils/partitioned-store.test.ts +230 -0
  476. package/tests/workspace/full-flow.test.ts +10 -4
  477. package/tests/workspace/runner.test.ts +10 -4
  478. package/docs/DESIGN-workspace-migration.md +0 -1079
  479. package/docs/PLAN-agentic-workspace-implementation.md +0 -717
  480. package/docs/PLAN-graph-migration.md +0 -299
  481. package/docs/PLAN-session-bank-implementation.md +0 -474
  482. package/src/learning/pipeline.ts +0 -323
  483. package/tests/learning/pipeline.test.ts +0 -176
@@ -1,323 +0,0 @@
1
- import type {
2
- Trajectory,
3
- LearningConfig,
4
- } from '../types/index.js';
5
- import type { TrajectoryWithAnalysis } from '../types/trajectory-source.js';
6
- import type { MemorySystem } from '../memory/system.js';
7
- import {
8
- TrajectoryAnalyzer,
9
- createAnalyzer,
10
- type AnalysisResult,
11
- } from './analyzer.js';
12
- import {
13
- PlaybookExtractor,
14
- createPlaybookExtractor,
15
- } from './playbook-extractor.js';
16
- import type { AgenticTaskRunner } from '../workspace/runner.js';
17
- import { trajectoryAnalysisTemplate } from '../workspace/templates/trajectory-analysis.js';
18
- import { playbookExtractionTemplate } from '../workspace/templates/playbook-extraction.js';
19
-
20
- /**
21
- * Result of processing a single trajectory
22
- */
23
- export interface ProcessResult {
24
- trajectoryId: string;
25
- stored: boolean;
26
- analysis: AnalysisResult;
27
- abstractable: boolean;
28
- playbookExtracted: boolean;
29
- }
30
-
31
- /**
32
- * Result of batch learning
33
- */
34
- export interface BatchResult {
35
- trajectoriesProcessed: number;
36
- playbooksExtracted: number;
37
- experiencesPruned: number;
38
- successRate: number;
39
- }
40
-
41
- /**
42
- * Learning Pipeline
43
- * Orchestrates trajectory analysis, playbook extraction, and memory updates
44
- */
45
- export class LearningPipeline {
46
- private analyzer: TrajectoryAnalyzer;
47
- private playbookExtractor: PlaybookExtractor;
48
- private memory: MemorySystem;
49
- private config: LearningConfig;
50
-
51
- // Optional agentic task runner for workspace-based analysis
52
- private taskRunner: AgenticTaskRunner | null = null;
53
-
54
- // Accumulated trajectories for batch learning
55
- private accumulated: Trajectory[] = [];
56
- private accumulatedAnalyses: AnalysisResult[] = [];
57
- private lastBatchTime: Date | null = null;
58
-
59
- constructor(memory: MemorySystem, config?: Partial<LearningConfig>) {
60
- this.memory = memory;
61
- this.config = {
62
- creditStrategy: config?.creditStrategy ?? 'simple',
63
- patternExtractor: config?.patternExtractor ?? 'llm',
64
- minTrajectories: config?.minTrajectories ?? 10,
65
- minHoursSinceLast: config?.minHoursSinceLast,
66
- minSuccessRate: config?.minSuccessRate,
67
- deduplicationThreshold: config?.deduplicationThreshold ?? 0.9,
68
- maxExperiences: config?.maxExperiences ?? 1000,
69
- };
70
-
71
- this.analyzer = createAnalyzer(this.config.creditStrategy);
72
- this.playbookExtractor = createPlaybookExtractor({
73
- minTrajectories: this.config.minTrajectories,
74
- mergeThreshold: this.config.deduplicationThreshold,
75
- minSuccessRate: this.config.minSuccessRate ?? 0.6,
76
- });
77
- }
78
-
79
- /**
80
- * Set the agentic task runner for workspace-based analysis.
81
- * When set, analysis tasks are delegated to templates (with heuristic fallback).
82
- */
83
- setTaskRunner(runner: AgenticTaskRunner): void {
84
- this.taskRunner = runner;
85
- }
86
-
87
- /**
88
- * Process a single trajectory
89
- */
90
- async processTrajectory(trajectory: Trajectory): Promise<ProcessResult> {
91
- // Store in experience memory
92
- await this.memory.storeTrajectory(trajectory);
93
-
94
- // Analyze: workspace-based when runner available, heuristic otherwise
95
- let analysis: AnalysisResult;
96
- if (this.taskRunner) {
97
- analysis = await this.analyzeWithTemplate(trajectory);
98
- } else {
99
- analysis = await this.analyzer.analyze(trajectory);
100
- }
101
-
102
- // Accumulate for batch learning
103
- this.accumulated.push(trajectory);
104
- this.accumulatedAnalyses.push(analysis);
105
-
106
- return {
107
- trajectoryId: trajectory.id,
108
- stored: true,
109
- analysis,
110
- abstractable: analysis.abstractable,
111
- playbookExtracted: false, // Playbooks are extracted in batch
112
- };
113
- }
114
-
115
- /**
116
- * Run trajectory analysis via the workspace template.
117
- * The template's assessComplexity() routes simple cases to heuristicFallback()
118
- * (which calls the existing TrajectoryAnalyzer), so this is safe for all inputs.
119
- */
120
- private async analyzeWithTemplate(trajectory: Trajectory): Promise<AnalysisResult> {
121
- try {
122
- const result = await this.taskRunner!.run(trajectoryAnalysisTemplate, {
123
- trajectory,
124
- creditStrategy: this.config.creditStrategy,
125
- });
126
- return result.output;
127
- } catch (error) {
128
- // If workspace-based analysis fails, fall back to heuristic
129
- console.error(
130
- 'Workspace-based trajectory analysis failed, falling back to heuristic:',
131
- error instanceof Error ? error.message : error
132
- );
133
- return this.analyzer.analyze(trajectory);
134
- }
135
- }
136
-
137
- /**
138
- * Check if batch learning should run
139
- */
140
- shouldRunBatch(): boolean {
141
- // Check minimum trajectories
142
- if (this.accumulated.length < this.config.minTrajectories) {
143
- return false;
144
- }
145
-
146
- // Check time since last batch
147
- if (this.config.minHoursSinceLast && this.lastBatchTime) {
148
- const hoursSinceLast =
149
- (Date.now() - this.lastBatchTime.getTime()) / (1000 * 60 * 60);
150
- if (hoursSinceLast < this.config.minHoursSinceLast) {
151
- return false;
152
- }
153
- }
154
-
155
- // Check success rate
156
- if (this.config.minSuccessRate) {
157
- const successCount = this.accumulatedAnalyses.filter(
158
- (a) => a.success
159
- ).length;
160
- const successRate = successCount / this.accumulated.length;
161
- if (successRate < this.config.minSuccessRate) {
162
- return false;
163
- }
164
- }
165
-
166
- return true;
167
- }
168
-
169
- /**
170
- * Run batch learning on accumulated trajectories
171
- */
172
- async runBatchLearning(): Promise<BatchResult> {
173
- if (this.accumulated.length === 0) {
174
- return {
175
- trajectoriesProcessed: 0,
176
- playbooksExtracted: 0,
177
- experiencesPruned: 0,
178
- successRate: 0,
179
- };
180
- }
181
-
182
- // Extract playbooks: workspace-based when runner available, heuristic otherwise
183
- let playbooksAdded = 0;
184
- const existingPlaybooks = await this.memory.playbooks.getAll();
185
- const playbookExtraction = await this.extractPlaybooks(existingPlaybooks);
186
-
187
- // Add new playbooks
188
- for (const playbook of playbookExtraction.new) {
189
- const exists = await this.memory.playbooks.exists(
190
- playbook.name,
191
- this.config.deduplicationThreshold
192
- );
193
- if (!exists) {
194
- await this.memory.playbooks.add(playbook);
195
- playbooksAdded++;
196
- }
197
- }
198
-
199
- // Apply updates to existing playbooks
200
- for (const update of playbookExtraction.updates) {
201
- if (update.refinement) {
202
- await this.memory.playbooks.addRefinement(
203
- update.id,
204
- update.refinement.context,
205
- update.refinement.addition,
206
- update.refinement.source
207
- );
208
- }
209
- if (update.newTrigger) {
210
- const playbook = await this.memory.playbooks.get(update.id);
211
- if (playbook && !playbook.applicability.triggers.includes(update.newTrigger)) {
212
- playbook.applicability.triggers.push(update.newTrigger);
213
- await this.memory.playbooks.add(playbook);
214
- }
215
- }
216
- if (update.newAntiPattern) {
217
- const playbook = await this.memory.playbooks.get(update.id);
218
- if (playbook && !playbook.applicability.antiPatterns.includes(update.newAntiPattern)) {
219
- playbook.applicability.antiPatterns.push(update.newAntiPattern);
220
- await this.memory.playbooks.add(playbook);
221
- }
222
- }
223
- }
224
-
225
- // Prune experiences if needed
226
- const pruned = await this.memory.experiences.prune({
227
- maxCount: this.config.maxExperiences,
228
- });
229
-
230
- // Calculate success rate
231
- const successCount = this.accumulatedAnalyses.filter((a) => a.success).length;
232
- const successRate = successCount / this.accumulated.length;
233
-
234
- // Clear accumulated and update time
235
- const trajectoriesProcessed = this.accumulated.length;
236
- this.accumulated = [];
237
- this.accumulatedAnalyses = [];
238
- this.lastBatchTime = new Date();
239
-
240
- return {
241
- trajectoriesProcessed,
242
- playbooksExtracted: playbooksAdded,
243
- experiencesPruned: pruned.totalPruned,
244
- successRate,
245
- };
246
- }
247
-
248
- /**
249
- * Run playbook extraction via the workspace template.
250
- * Falls back to heuristic extractor on failure.
251
- */
252
- private async extractPlaybooks(
253
- existingPlaybooks: import('../types/index.js').Playbook[]
254
- ): Promise<import('./playbook-extractor.js').ExtractedPlaybooks> {
255
- if (this.taskRunner) {
256
- try {
257
- const result = await this.taskRunner.run(playbookExtractionTemplate, {
258
- trajectories: this.accumulated,
259
- analyses: this.accumulatedAnalyses,
260
- existingPlaybooks,
261
- });
262
- return result.output;
263
- } catch (error) {
264
- console.error(
265
- 'Workspace-based playbook extraction failed, falling back to heuristic:',
266
- error instanceof Error ? error.message : error
267
- );
268
- }
269
- }
270
-
271
- return this.playbookExtractor.extract(
272
- this.accumulated,
273
- this.accumulatedAnalyses,
274
- existingPlaybooks
275
- );
276
- }
277
-
278
- /**
279
- * Get accumulated trajectory count
280
- */
281
- getAccumulatedCount(): number {
282
- return this.accumulated.length;
283
- }
284
-
285
- /**
286
- * Get accumulated trajectories with their analyses.
287
- * Read-only view — does not clear the accumulator.
288
- */
289
- getAccumulated(): TrajectoryWithAnalysis[] {
290
- return this.accumulated.map((trajectory, i) => ({
291
- trajectory,
292
- analysis: this.accumulatedAnalyses[i],
293
- }));
294
- }
295
-
296
- /**
297
- * Clear accumulated trajectories
298
- */
299
- clearAccumulated(): void {
300
- this.accumulated = [];
301
- this.accumulatedAnalyses = [];
302
- }
303
-
304
- /**
305
- * Update configuration
306
- */
307
- updateConfig(config: Partial<LearningConfig>): void {
308
- this.config = { ...this.config, ...config };
309
- if (config.creditStrategy) {
310
- this.analyzer.setStrategy(config.creditStrategy);
311
- }
312
- }
313
- }
314
-
315
- /**
316
- * Create a learning pipeline
317
- */
318
- export function createLearningPipeline(
319
- memory: MemorySystem,
320
- config?: Partial<LearningConfig>
321
- ): LearningPipeline {
322
- return new LearningPipeline(memory, config);
323
- }
@@ -1,176 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from 'vitest';
2
- import { LearningPipeline, createLearningPipeline } from '../../src/learning/pipeline.js';
3
- import { MemorySystem } from '../../src/memory/system.js';
4
- import { createTrajectory, createStep, createTask, successOutcome, failureOutcome } from '../../src/types/index.js';
5
- import * as fs from 'node:fs/promises';
6
- import * as path from 'node:path';
7
-
8
- describe('LearningPipeline', () => {
9
- let pipeline: LearningPipeline;
10
- let memory: MemorySystem;
11
- let testDir: string;
12
-
13
- beforeEach(async () => {
14
- testDir = path.join(process.cwd(), '.test-pipeline-' + Date.now());
15
- await fs.mkdir(testDir, { recursive: true });
16
- memory = new MemorySystem(testDir);
17
- await memory.init();
18
- pipeline = createLearningPipeline(memory, {
19
- minTrajectories: 3,
20
- minSuccessRate: 0.5,
21
- maxExperiences: 100,
22
- });
23
- });
24
-
25
- afterEach(async () => {
26
- await memory.close();
27
- await fs.rm(testDir, { recursive: true, force: true });
28
- });
29
-
30
- const createTestTrajectory = (success: boolean, description: string) => {
31
- return createTrajectory({
32
- task: createTask({ domain: 'test', description }),
33
- steps: [
34
- createStep({
35
- thought: 'Analyzing task',
36
- action: 'read file',
37
- observation: 'file contents',
38
- }),
39
- createStep({
40
- thought: 'Applying solution',
41
- action: 'edit file',
42
- observation: success ? 'success' : 'error: failed',
43
- }),
44
- ],
45
- outcome: success
46
- ? successOutcome({ result: 'completed' })
47
- : failureOutcome('Task failed'),
48
- agentId: 'test-agent',
49
- });
50
- };
51
-
52
- describe('processTrajectory', () => {
53
- it('should process and store trajectory', async () => {
54
- const trajectory = createTestTrajectory(true, 'Test task 1');
55
- const result = await pipeline.processTrajectory(trajectory);
56
-
57
- expect(result.stored).toBe(true);
58
- expect(result.trajectoryId).toBe(trajectory.id);
59
- expect(result.analysis).toBeDefined();
60
- expect(result.analysis.success).toBe(true);
61
- });
62
-
63
- it('should accumulate trajectories for batch learning', async () => {
64
- expect(pipeline.getAccumulatedCount()).toBe(0);
65
-
66
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
67
- expect(pipeline.getAccumulatedCount()).toBe(1);
68
-
69
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
70
- expect(pipeline.getAccumulatedCount()).toBe(2);
71
- });
72
-
73
- it('should analyze trajectory for key steps', async () => {
74
- const trajectory = createTestTrajectory(true, 'Test analysis');
75
- const result = await pipeline.processTrajectory(trajectory);
76
-
77
- expect(result.analysis.keySteps).toBeDefined();
78
- expect(Array.isArray(result.analysis.keySteps)).toBe(true);
79
- expect(result.analysis.stepAttribution).toBeDefined();
80
- expect(result.analysis.stepAttribution.length).toBe(trajectory.steps.length);
81
- });
82
- });
83
-
84
- describe('shouldRunBatch', () => {
85
- it('should return false when below minTrajectories', () => {
86
- expect(pipeline.shouldRunBatch()).toBe(false);
87
- });
88
-
89
- it('should return true when above minTrajectories with sufficient success rate', async () => {
90
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
91
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
92
- expect(pipeline.shouldRunBatch()).toBe(false); // Still below 3
93
-
94
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 3'));
95
- expect(pipeline.shouldRunBatch()).toBe(true); // Now at 3
96
- });
97
-
98
- it('should return false when success rate is too low', async () => {
99
- await pipeline.processTrajectory(createTestTrajectory(false, 'Task 1'));
100
- await pipeline.processTrajectory(createTestTrajectory(false, 'Task 2'));
101
- await pipeline.processTrajectory(createTestTrajectory(false, 'Task 3'));
102
-
103
- // 0% success rate, below 50% threshold
104
- expect(pipeline.shouldRunBatch()).toBe(false);
105
- });
106
- });
107
-
108
- describe('runBatchLearning', () => {
109
- it('should return empty result when no trajectories accumulated', async () => {
110
- const result = await pipeline.runBatchLearning();
111
-
112
- expect(result.trajectoriesProcessed).toBe(0);
113
- expect(result.playbooksExtracted).toBe(0);
114
- expect(result.experiencesPruned).toBe(0);
115
- expect(result.successRate).toBe(0);
116
- });
117
-
118
- it('should process accumulated trajectories', async () => {
119
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
120
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
121
- await pipeline.processTrajectory(createTestTrajectory(false, 'Task 3'));
122
-
123
- const result = await pipeline.runBatchLearning();
124
-
125
- expect(result.trajectoriesProcessed).toBe(3);
126
- expect(result.successRate).toBeCloseTo(2/3, 2);
127
- });
128
-
129
- it('should clear accumulated after batch', async () => {
130
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
131
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
132
-
133
- expect(pipeline.getAccumulatedCount()).toBe(2);
134
- await pipeline.runBatchLearning();
135
- expect(pipeline.getAccumulatedCount()).toBe(0);
136
- });
137
- });
138
-
139
- describe('clearAccumulated', () => {
140
- it('should clear all accumulated trajectories', async () => {
141
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
142
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
143
-
144
- expect(pipeline.getAccumulatedCount()).toBe(2);
145
- pipeline.clearAccumulated();
146
- expect(pipeline.getAccumulatedCount()).toBe(0);
147
- });
148
- });
149
-
150
- describe('configuration', () => {
151
- it('should use configurable maxExperiences for pruning', async () => {
152
- // The pipeline was created with maxExperiences: 100
153
- // This test verifies the config is passed correctly
154
- const configuredPipeline = createLearningPipeline(memory, {
155
- maxExperiences: 50,
156
- });
157
-
158
- // Process a trajectory to ensure it uses the config
159
- const trajectory = createTestTrajectory(true, 'Config test');
160
- const result = await configuredPipeline.processTrajectory(trajectory);
161
- expect(result.stored).toBe(true);
162
- });
163
-
164
- it('should update configuration', async () => {
165
- pipeline.updateConfig({ minTrajectories: 5 });
166
-
167
- // Add 3 trajectories (was enough before update)
168
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 1'));
169
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 2'));
170
- await pipeline.processTrajectory(createTestTrajectory(true, 'Task 3'));
171
-
172
- // Should not run batch yet (need 5 now)
173
- expect(pipeline.shouldRunBatch()).toBe(false);
174
- });
175
- });
176
- });