cognitive-core 0.1.0 → 0.1.2

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 (637) hide show
  1. package/.claude/settings.json +88 -0
  2. package/.claude/settings.local.json +11 -0
  3. package/.entire/settings.json +4 -0
  4. package/README.md +524 -254
  5. package/dist/atlas.d.ts +144 -6
  6. package/dist/atlas.d.ts.map +1 -1
  7. package/dist/atlas.js +339 -10
  8. package/dist/atlas.js.map +1 -1
  9. package/dist/embeddings/provider.d.ts.map +1 -1
  10. package/dist/embeddings/provider.js +6 -3
  11. package/dist/embeddings/provider.js.map +1 -1
  12. package/dist/index.d.ts +8 -6
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +37 -6
  15. package/dist/index.js.map +1 -1
  16. package/dist/learning/index.d.ts +5 -1
  17. package/dist/learning/index.d.ts.map +1 -1
  18. package/dist/learning/index.js +8 -2
  19. package/dist/learning/index.js.map +1 -1
  20. package/dist/learning/knowledge-extractor.d.ts +56 -0
  21. package/dist/learning/knowledge-extractor.d.ts.map +1 -0
  22. package/dist/learning/knowledge-extractor.js +336 -0
  23. package/dist/learning/knowledge-extractor.js.map +1 -0
  24. package/dist/learning/meta-learner.d.ts +7 -0
  25. package/dist/learning/meta-learner.d.ts.map +1 -1
  26. package/dist/learning/meta-learner.js +43 -0
  27. package/dist/learning/meta-learner.js.map +1 -1
  28. package/dist/learning/pipeline.d.ts +24 -0
  29. package/dist/learning/pipeline.d.ts.map +1 -1
  30. package/dist/learning/pipeline.js +70 -4
  31. package/dist/learning/pipeline.js.map +1 -1
  32. package/dist/learning/team-ingester.d.ts +152 -0
  33. package/dist/learning/team-ingester.d.ts.map +1 -0
  34. package/dist/learning/team-ingester.js +333 -0
  35. package/dist/learning/team-ingester.js.map +1 -0
  36. package/dist/learning/team-meta-learner.d.ts +50 -0
  37. package/dist/learning/team-meta-learner.d.ts.map +1 -0
  38. package/dist/learning/team-meta-learner.js +417 -0
  39. package/dist/learning/team-meta-learner.js.map +1 -0
  40. package/dist/learning/team-pipeline.d.ts +76 -0
  41. package/dist/learning/team-pipeline.d.ts.map +1 -0
  42. package/dist/learning/team-pipeline.js +266 -0
  43. package/dist/learning/team-pipeline.js.map +1 -0
  44. package/dist/learning/trajectory-sources/dataclaw.d.ts +41 -0
  45. package/dist/learning/trajectory-sources/dataclaw.d.ts.map +1 -0
  46. package/dist/learning/trajectory-sources/dataclaw.js +330 -0
  47. package/dist/learning/trajectory-sources/dataclaw.js.map +1 -0
  48. package/dist/learning/trajectory-sources/entire.d.ts +28 -0
  49. package/dist/learning/trajectory-sources/entire.d.ts.map +1 -0
  50. package/dist/learning/trajectory-sources/entire.js +182 -0
  51. package/dist/learning/trajectory-sources/entire.js.map +1 -0
  52. package/dist/learning/trajectory-sources/file.d.ts +23 -0
  53. package/dist/learning/trajectory-sources/file.d.ts.map +1 -0
  54. package/dist/learning/trajectory-sources/file.js +101 -0
  55. package/dist/learning/trajectory-sources/file.js.map +1 -0
  56. package/dist/learning/trajectory-sources/huggingface.d.ts +36 -0
  57. package/dist/learning/trajectory-sources/huggingface.d.ts.map +1 -0
  58. package/dist/learning/trajectory-sources/huggingface.js +157 -0
  59. package/dist/learning/trajectory-sources/huggingface.js.map +1 -0
  60. package/dist/learning/trajectory-sources/in-memory.d.ts +21 -0
  61. package/dist/learning/trajectory-sources/in-memory.d.ts.map +1 -0
  62. package/dist/learning/trajectory-sources/in-memory.js +43 -0
  63. package/dist/learning/trajectory-sources/in-memory.js.map +1 -0
  64. package/dist/learning/trajectory-sources/index.d.ts +7 -0
  65. package/dist/learning/trajectory-sources/index.d.ts.map +1 -0
  66. package/dist/learning/trajectory-sources/index.js +7 -0
  67. package/dist/learning/trajectory-sources/index.js.map +1 -0
  68. package/dist/learning/trajectory-sources/pipeline.d.ts +24 -0
  69. package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -0
  70. package/dist/learning/trajectory-sources/pipeline.js +47 -0
  71. package/dist/learning/trajectory-sources/pipeline.js.map +1 -0
  72. package/dist/memory/graph-layers/base.d.ts +29 -0
  73. package/dist/memory/graph-layers/base.d.ts.map +1 -0
  74. package/dist/memory/graph-layers/base.js +143 -0
  75. package/dist/memory/graph-layers/base.js.map +1 -0
  76. package/dist/memory/graph-layers/causal.d.ts +14 -0
  77. package/dist/memory/graph-layers/causal.d.ts.map +1 -0
  78. package/dist/memory/graph-layers/causal.js +14 -0
  79. package/dist/memory/graph-layers/causal.js.map +1 -0
  80. package/dist/memory/graph-layers/entity.d.ts +14 -0
  81. package/dist/memory/graph-layers/entity.d.ts.map +1 -0
  82. package/dist/memory/graph-layers/entity.js +14 -0
  83. package/dist/memory/graph-layers/entity.js.map +1 -0
  84. package/dist/memory/graph-layers/index.d.ts +6 -0
  85. package/dist/memory/graph-layers/index.d.ts.map +1 -0
  86. package/dist/memory/graph-layers/index.js +6 -0
  87. package/dist/memory/graph-layers/index.js.map +1 -0
  88. package/dist/memory/graph-layers/semantic.d.ts +14 -0
  89. package/dist/memory/graph-layers/semantic.d.ts.map +1 -0
  90. package/dist/memory/graph-layers/semantic.js +14 -0
  91. package/dist/memory/graph-layers/semantic.js.map +1 -0
  92. package/dist/memory/graph-layers/temporal.d.ts +14 -0
  93. package/dist/memory/graph-layers/temporal.d.ts.map +1 -0
  94. package/dist/memory/graph-layers/temporal.js +14 -0
  95. package/dist/memory/graph-layers/temporal.js.map +1 -0
  96. package/dist/memory/index.d.ts +8 -0
  97. package/dist/memory/index.d.ts.map +1 -1
  98. package/dist/memory/index.js +10 -0
  99. package/dist/memory/index.js.map +1 -1
  100. package/dist/memory/knowledge-bank.d.ts +220 -0
  101. package/dist/memory/knowledge-bank.d.ts.map +1 -0
  102. package/dist/memory/knowledge-bank.js +1003 -0
  103. package/dist/memory/knowledge-bank.js.map +1 -0
  104. package/dist/memory/knowledge-defrag.d.ts +49 -0
  105. package/dist/memory/knowledge-defrag.d.ts.map +1 -0
  106. package/dist/memory/knowledge-defrag.js +257 -0
  107. package/dist/memory/knowledge-defrag.js.map +1 -0
  108. package/dist/memory/knowledge-graph.d.ts +41 -0
  109. package/dist/memory/knowledge-graph.d.ts.map +1 -0
  110. package/dist/memory/knowledge-graph.js +273 -0
  111. package/dist/memory/knowledge-graph.js.map +1 -0
  112. package/dist/memory/search-provider.d.ts +31 -0
  113. package/dist/memory/search-provider.d.ts.map +1 -0
  114. package/dist/memory/search-provider.js +2 -0
  115. package/dist/memory/search-provider.js.map +1 -0
  116. package/dist/memory/search-providers/index.d.ts +3 -0
  117. package/dist/memory/search-providers/index.d.ts.map +1 -0
  118. package/dist/memory/search-providers/index.js +3 -0
  119. package/dist/memory/search-providers/index.js.map +1 -0
  120. package/dist/memory/search-providers/minimem.d.ts +43 -0
  121. package/dist/memory/search-providers/minimem.d.ts.map +1 -0
  122. package/dist/memory/search-providers/minimem.js +56 -0
  123. package/dist/memory/search-providers/minimem.js.map +1 -0
  124. package/dist/memory/search-providers/text-similarity.d.ts +15 -0
  125. package/dist/memory/search-providers/text-similarity.d.ts.map +1 -0
  126. package/dist/memory/search-providers/text-similarity.js +21 -0
  127. package/dist/memory/search-providers/text-similarity.js.map +1 -0
  128. package/dist/memory/skill-exporter.d.ts +75 -0
  129. package/dist/memory/skill-exporter.d.ts.map +1 -0
  130. package/dist/memory/skill-exporter.js +248 -0
  131. package/dist/memory/skill-exporter.js.map +1 -0
  132. package/dist/memory/system.d.ts +15 -3
  133. package/dist/memory/system.d.ts.map +1 -1
  134. package/dist/memory/system.js +46 -8
  135. package/dist/memory/system.js.map +1 -1
  136. package/dist/memory/team-experience.d.ts +298 -0
  137. package/dist/memory/team-experience.d.ts.map +1 -0
  138. package/dist/memory/team-experience.js +355 -0
  139. package/dist/memory/team-experience.js.map +1 -0
  140. package/dist/runtime/backends/acp-protocol.d.ts +49 -0
  141. package/dist/runtime/backends/acp-protocol.d.ts.map +1 -0
  142. package/dist/runtime/backends/acp-protocol.js +166 -0
  143. package/dist/runtime/backends/acp-protocol.js.map +1 -0
  144. package/dist/runtime/backends/acp.d.ts +26 -26
  145. package/dist/runtime/backends/acp.d.ts.map +1 -1
  146. package/dist/runtime/backends/acp.js +32 -156
  147. package/dist/runtime/backends/acp.js.map +1 -1
  148. package/dist/runtime/backends/index.d.ts +3 -1
  149. package/dist/runtime/backends/index.d.ts.map +1 -1
  150. package/dist/runtime/backends/index.js +3 -1
  151. package/dist/runtime/backends/index.js.map +1 -1
  152. package/dist/runtime/backends/macro-agent.d.ts +104 -0
  153. package/dist/runtime/backends/macro-agent.d.ts.map +1 -0
  154. package/dist/runtime/backends/macro-agent.js +107 -0
  155. package/dist/runtime/backends/macro-agent.js.map +1 -0
  156. package/dist/runtime/compute-provider.d.ts +87 -0
  157. package/dist/runtime/compute-provider.d.ts.map +1 -0
  158. package/dist/runtime/compute-provider.js +87 -0
  159. package/dist/runtime/compute-provider.js.map +1 -0
  160. package/dist/runtime/index.d.ts +3 -2
  161. package/dist/runtime/index.d.ts.map +1 -1
  162. package/dist/runtime/index.js +3 -1
  163. package/dist/runtime/index.js.map +1 -1
  164. package/dist/runtime/manager.d.ts +37 -4
  165. package/dist/runtime/manager.d.ts.map +1 -1
  166. package/dist/runtime/manager.js +139 -20
  167. package/dist/runtime/manager.js.map +1 -1
  168. package/dist/runtime/types.d.ts +38 -0
  169. package/dist/runtime/types.d.ts.map +1 -1
  170. package/dist/search/evaluator.d.ts +7 -0
  171. package/dist/search/evaluator.d.ts.map +1 -1
  172. package/dist/search/evaluator.js +24 -4
  173. package/dist/search/evaluator.js.map +1 -1
  174. package/dist/search/index.d.ts +1 -0
  175. package/dist/search/index.d.ts.map +1 -1
  176. package/dist/search/index.js +2 -0
  177. package/dist/search/index.js.map +1 -1
  178. package/dist/search/refinement-loop.d.ts +17 -0
  179. package/dist/search/refinement-loop.d.ts.map +1 -1
  180. package/dist/search/refinement-loop.js +77 -6
  181. package/dist/search/refinement-loop.js.map +1 -1
  182. package/dist/search/refinement-types.d.ts +2 -2
  183. package/dist/search/team-router.d.ts +91 -0
  184. package/dist/search/team-router.d.ts.map +1 -0
  185. package/dist/search/team-router.js +315 -0
  186. package/dist/search/team-router.js.map +1 -0
  187. package/dist/session-bank/git-reader.d.ts +39 -0
  188. package/dist/session-bank/git-reader.d.ts.map +1 -0
  189. package/dist/session-bank/git-reader.js +165 -0
  190. package/dist/session-bank/git-reader.js.map +1 -0
  191. package/dist/session-bank/index.d.ts +5 -0
  192. package/dist/session-bank/index.d.ts.map +1 -0
  193. package/dist/session-bank/index.js +4 -0
  194. package/dist/session-bank/index.js.map +1 -0
  195. package/dist/session-bank/parser.d.ts +39 -0
  196. package/dist/session-bank/parser.d.ts.map +1 -0
  197. package/dist/session-bank/parser.js +231 -0
  198. package/dist/session-bank/parser.js.map +1 -0
  199. package/dist/session-bank/session-bank.d.ts +35 -0
  200. package/dist/session-bank/session-bank.d.ts.map +1 -0
  201. package/dist/session-bank/session-bank.js +326 -0
  202. package/dist/session-bank/session-bank.js.map +1 -0
  203. package/dist/session-bank/types.d.ts +129 -0
  204. package/dist/session-bank/types.d.ts.map +1 -0
  205. package/dist/session-bank/types.js +7 -0
  206. package/dist/session-bank/types.js.map +1 -0
  207. package/dist/surfacing/index.d.ts +4 -0
  208. package/dist/surfacing/index.d.ts.map +1 -1
  209. package/dist/surfacing/index.js +3 -0
  210. package/dist/surfacing/index.js.map +1 -1
  211. package/dist/surfacing/publisher.d.ts +22 -0
  212. package/dist/surfacing/publisher.d.ts.map +1 -0
  213. package/dist/surfacing/publisher.js +9 -0
  214. package/dist/surfacing/publisher.js.map +1 -0
  215. package/dist/surfacing/skill-library.d.ts +12 -0
  216. package/dist/surfacing/skill-library.d.ts.map +1 -1
  217. package/dist/surfacing/skill-library.js +26 -0
  218. package/dist/surfacing/skill-library.js.map +1 -1
  219. package/dist/surfacing/skill-publisher.d.ts +43 -0
  220. package/dist/surfacing/skill-publisher.d.ts.map +1 -0
  221. package/dist/surfacing/skill-publisher.js +197 -0
  222. package/dist/surfacing/skill-publisher.js.map +1 -0
  223. package/dist/surfacing/sqlite-storage-adapter.d.ts +42 -0
  224. package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -0
  225. package/dist/surfacing/sqlite-storage-adapter.js +207 -0
  226. package/dist/surfacing/sqlite-storage-adapter.js.map +1 -0
  227. package/dist/surfacing/team-skill-library.d.ts +180 -0
  228. package/dist/surfacing/team-skill-library.d.ts.map +1 -0
  229. package/dist/surfacing/team-skill-library.js +384 -0
  230. package/dist/surfacing/team-skill-library.js.map +1 -0
  231. package/dist/types/config.d.ts +1218 -44
  232. package/dist/types/config.d.ts.map +1 -1
  233. package/dist/types/config.js +216 -0
  234. package/dist/types/config.js.map +1 -1
  235. package/dist/types/dataclaw.d.ts +286 -0
  236. package/dist/types/dataclaw.d.ts.map +1 -0
  237. package/dist/types/dataclaw.js +84 -0
  238. package/dist/types/dataclaw.js.map +1 -0
  239. package/dist/types/index.d.ts +8 -1
  240. package/dist/types/index.d.ts.map +1 -1
  241. package/dist/types/index.js +13 -1
  242. package/dist/types/index.js.map +1 -1
  243. package/dist/types/knowledge-graph.d.ts +148 -0
  244. package/dist/types/knowledge-graph.d.ts.map +1 -0
  245. package/dist/types/knowledge-graph.js +40 -0
  246. package/dist/types/knowledge-graph.js.map +1 -0
  247. package/dist/types/knowledge.d.ts +280 -0
  248. package/dist/types/knowledge.d.ts.map +1 -0
  249. package/dist/types/knowledge.js +191 -0
  250. package/dist/types/knowledge.js.map +1 -0
  251. package/dist/types/team-meta.d.ts +160 -0
  252. package/dist/types/team-meta.d.ts.map +1 -0
  253. package/dist/types/team-meta.js +42 -0
  254. package/dist/types/team-meta.js.map +1 -0
  255. package/dist/types/team-playbook.d.ts +276 -0
  256. package/dist/types/team-playbook.d.ts.map +1 -0
  257. package/dist/types/team-playbook.js +85 -0
  258. package/dist/types/team-playbook.js.map +1 -0
  259. package/dist/types/team-trajectory.d.ts +305 -0
  260. package/dist/types/team-trajectory.d.ts.map +1 -0
  261. package/dist/types/team-trajectory.js +304 -0
  262. package/dist/types/team-trajectory.js.map +1 -0
  263. package/dist/types/trajectory-source.d.ts +39 -0
  264. package/dist/types/trajectory-source.d.ts.map +1 -0
  265. package/dist/types/trajectory-source.js +2 -0
  266. package/dist/types/trajectory-source.js.map +1 -0
  267. package/dist/utils/frontmatter.d.ts +34 -0
  268. package/dist/utils/frontmatter.d.ts.map +1 -0
  269. package/dist/utils/frontmatter.js +93 -0
  270. package/dist/utils/frontmatter.js.map +1 -0
  271. package/dist/utils/index.d.ts +1 -0
  272. package/dist/utils/index.d.ts.map +1 -1
  273. package/dist/utils/index.js +1 -0
  274. package/dist/utils/index.js.map +1 -1
  275. package/dist/workspace/index.d.ts +6 -0
  276. package/dist/workspace/index.d.ts.map +1 -0
  277. package/dist/workspace/index.js +11 -0
  278. package/dist/workspace/index.js.map +1 -0
  279. package/dist/workspace/runner.d.ts +50 -0
  280. package/dist/workspace/runner.d.ts.map +1 -0
  281. package/dist/workspace/runner.js +219 -0
  282. package/dist/workspace/runner.js.map +1 -0
  283. package/dist/workspace/skill-converter.d.ts +18 -0
  284. package/dist/workspace/skill-converter.d.ts.map +1 -0
  285. package/dist/workspace/skill-converter.js +257 -0
  286. package/dist/workspace/skill-converter.js.map +1 -0
  287. package/dist/workspace/templates/index.d.ts +11 -0
  288. package/dist/workspace/templates/index.d.ts.map +1 -0
  289. package/dist/workspace/templates/index.js +21 -0
  290. package/dist/workspace/templates/index.js.map +1 -0
  291. package/dist/workspace/templates/knowledge-defrag.d.ts +25 -0
  292. package/dist/workspace/templates/knowledge-defrag.d.ts.map +1 -0
  293. package/dist/workspace/templates/knowledge-defrag.js +154 -0
  294. package/dist/workspace/templates/knowledge-defrag.js.map +1 -0
  295. package/dist/workspace/templates/knowledge-extraction.d.ts +25 -0
  296. package/dist/workspace/templates/knowledge-extraction.d.ts.map +1 -0
  297. package/dist/workspace/templates/knowledge-extraction.js +246 -0
  298. package/dist/workspace/templates/knowledge-extraction.js.map +1 -0
  299. package/dist/workspace/templates/meta-reflection.d.ts +47 -0
  300. package/dist/workspace/templates/meta-reflection.d.ts.map +1 -0
  301. package/dist/workspace/templates/meta-reflection.js +135 -0
  302. package/dist/workspace/templates/meta-reflection.js.map +1 -0
  303. package/dist/workspace/templates/playbook-extraction.d.ts +20 -0
  304. package/dist/workspace/templates/playbook-extraction.d.ts.map +1 -0
  305. package/dist/workspace/templates/playbook-extraction.js +189 -0
  306. package/dist/workspace/templates/playbook-extraction.js.map +1 -0
  307. package/dist/workspace/templates/refinement-analysis.d.ts +31 -0
  308. package/dist/workspace/templates/refinement-analysis.d.ts.map +1 -0
  309. package/dist/workspace/templates/refinement-analysis.js +107 -0
  310. package/dist/workspace/templates/refinement-analysis.js.map +1 -0
  311. package/dist/workspace/templates/solution-evaluation.d.ts +21 -0
  312. package/dist/workspace/templates/solution-evaluation.d.ts.map +1 -0
  313. package/dist/workspace/templates/solution-evaluation.js +131 -0
  314. package/dist/workspace/templates/solution-evaluation.js.map +1 -0
  315. package/dist/workspace/templates/team-playbook-extraction.d.ts +44 -0
  316. package/dist/workspace/templates/team-playbook-extraction.d.ts.map +1 -0
  317. package/dist/workspace/templates/team-playbook-extraction.js +497 -0
  318. package/dist/workspace/templates/team-playbook-extraction.js.map +1 -0
  319. package/dist/workspace/templates/team-trajectory-analysis.d.ts +19 -0
  320. package/dist/workspace/templates/team-trajectory-analysis.d.ts.map +1 -0
  321. package/dist/workspace/templates/team-trajectory-analysis.js +442 -0
  322. package/dist/workspace/templates/team-trajectory-analysis.js.map +1 -0
  323. package/dist/workspace/templates/trajectory-analysis.d.ts +19 -0
  324. package/dist/workspace/templates/trajectory-analysis.d.ts.map +1 -0
  325. package/dist/workspace/templates/trajectory-analysis.js +170 -0
  326. package/dist/workspace/templates/trajectory-analysis.js.map +1 -0
  327. package/dist/workspace/templates/usage-inference.d.ts +19 -0
  328. package/dist/workspace/templates/usage-inference.d.ts.map +1 -0
  329. package/dist/workspace/templates/usage-inference.js +125 -0
  330. package/dist/workspace/templates/usage-inference.js.map +1 -0
  331. package/dist/workspace/types.d.ts +145 -0
  332. package/dist/workspace/types.d.ts.map +1 -0
  333. package/dist/workspace/types.js +17 -0
  334. package/dist/workspace/types.js.map +1 -0
  335. package/docs/DESIGN-agentic-workspace.md +2057 -0
  336. package/docs/DESIGN-semantic-memory-knowledge-bank.md +1789 -0
  337. package/docs/DESIGN-session-bank.md +1134 -0
  338. package/docs/DESIGN-team-extraction-pipeline.md +1369 -0
  339. package/docs/DESIGN-workspace-migration.md +1079 -0
  340. package/docs/PLAN-agentic-workspace-implementation.md +717 -0
  341. package/docs/PLAN-graph-migration.md +299 -0
  342. package/docs/PLAN-session-bank-implementation.md +474 -0
  343. package/docs/PROPOSAL-team-aware-learning.md +1080 -0
  344. package/docs/RESEARCH-semantic-memory-knowledge-structures.md +517 -0
  345. package/docs/RESEARCH-team-trajectory-learning.md +553 -0
  346. package/gaps.md +204 -0
  347. package/package.json +24 -6
  348. package/references/agent-workspace/CLAUDE.md +74 -0
  349. package/references/agent-workspace/README.md +587 -0
  350. package/references/agent-workspace/media/banner.png +0 -0
  351. package/references/agent-workspace/package-lock.json +2061 -0
  352. package/references/agent-workspace/package.json +54 -0
  353. package/references/agent-workspace/src/handle.ts +122 -0
  354. package/references/agent-workspace/src/index.ts +32 -0
  355. package/references/agent-workspace/src/manager.ts +102 -0
  356. package/references/agent-workspace/src/readers/json.ts +71 -0
  357. package/references/agent-workspace/src/readers/markdown.ts +37 -0
  358. package/references/agent-workspace/src/readers/raw.ts +27 -0
  359. package/references/agent-workspace/src/types.ts +68 -0
  360. package/references/agent-workspace/src/validation.ts +93 -0
  361. package/references/agent-workspace/src/writers/json.ts +17 -0
  362. package/references/agent-workspace/src/writers/markdown.ts +27 -0
  363. package/references/agent-workspace/src/writers/raw.ts +22 -0
  364. package/references/agent-workspace/tests/errors.test.ts +652 -0
  365. package/references/agent-workspace/tests/handle.test.ts +144 -0
  366. package/references/agent-workspace/tests/manager.test.ts +124 -0
  367. package/references/agent-workspace/tests/readers.test.ts +205 -0
  368. package/references/agent-workspace/tests/validation.test.ts +196 -0
  369. package/references/agent-workspace/tests/writers.test.ts +108 -0
  370. package/references/agent-workspace/tsconfig.json +20 -0
  371. package/references/agent-workspace/tsup.config.ts +9 -0
  372. package/references/minimem/.claude/settings.json +7 -0
  373. package/references/minimem/.sudocode/issues.jsonl +18 -0
  374. package/references/minimem/.sudocode/specs.jsonl +1 -0
  375. package/references/minimem/CLAUDE.md +310 -0
  376. package/references/minimem/README.md +556 -0
  377. package/references/minimem/claude-plugin/.claude-plugin/plugin.json +10 -0
  378. package/references/minimem/claude-plugin/.mcp.json +7 -0
  379. package/references/minimem/claude-plugin/README.md +158 -0
  380. package/references/minimem/claude-plugin/commands/recall.md +47 -0
  381. package/references/minimem/claude-plugin/commands/remember.md +41 -0
  382. package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +272 -0
  383. package/references/minimem/claude-plugin/hooks/hooks.json +27 -0
  384. package/references/minimem/claude-plugin/hooks/session-end.sh +86 -0
  385. package/references/minimem/claude-plugin/hooks/session-start.sh +85 -0
  386. package/references/minimem/claude-plugin/skills/memory/SKILL.md +108 -0
  387. package/references/minimem/package-lock.json +5373 -0
  388. package/references/minimem/package.json +60 -0
  389. package/references/minimem/scripts/postbuild.js +35 -0
  390. package/references/minimem/src/__tests__/edge-cases.test.ts +371 -0
  391. package/references/minimem/src/__tests__/errors.test.ts +265 -0
  392. package/references/minimem/src/__tests__/helpers.ts +199 -0
  393. package/references/minimem/src/__tests__/internal.test.ts +407 -0
  394. package/references/minimem/src/__tests__/knowledge.test.ts +287 -0
  395. package/references/minimem/src/__tests__/minimem.integration.test.ts +1127 -0
  396. package/references/minimem/src/__tests__/session.test.ts +190 -0
  397. package/references/minimem/src/cli/__tests__/commands.test.ts +759 -0
  398. package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +141 -0
  399. package/references/minimem/src/cli/commands/append.ts +76 -0
  400. package/references/minimem/src/cli/commands/config.ts +262 -0
  401. package/references/minimem/src/cli/commands/conflicts.ts +413 -0
  402. package/references/minimem/src/cli/commands/daemon.ts +169 -0
  403. package/references/minimem/src/cli/commands/index.ts +12 -0
  404. package/references/minimem/src/cli/commands/init.ts +88 -0
  405. package/references/minimem/src/cli/commands/mcp.ts +177 -0
  406. package/references/minimem/src/cli/commands/push-pull.ts +213 -0
  407. package/references/minimem/src/cli/commands/search.ts +158 -0
  408. package/references/minimem/src/cli/commands/status.ts +84 -0
  409. package/references/minimem/src/cli/commands/sync-init.ts +290 -0
  410. package/references/minimem/src/cli/commands/sync.ts +70 -0
  411. package/references/minimem/src/cli/commands/upsert.ts +197 -0
  412. package/references/minimem/src/cli/config.ts +584 -0
  413. package/references/minimem/src/cli/index.ts +264 -0
  414. package/references/minimem/src/cli/shared.ts +161 -0
  415. package/references/minimem/src/cli/sync/__tests__/central.test.ts +152 -0
  416. package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +209 -0
  417. package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +118 -0
  418. package/references/minimem/src/cli/sync/__tests__/detection.test.ts +207 -0
  419. package/references/minimem/src/cli/sync/__tests__/integration.test.ts +476 -0
  420. package/references/minimem/src/cli/sync/__tests__/registry.test.ts +363 -0
  421. package/references/minimem/src/cli/sync/__tests__/state.test.ts +255 -0
  422. package/references/minimem/src/cli/sync/__tests__/validation.test.ts +193 -0
  423. package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +178 -0
  424. package/references/minimem/src/cli/sync/central.ts +292 -0
  425. package/references/minimem/src/cli/sync/conflicts.ts +204 -0
  426. package/references/minimem/src/cli/sync/daemon.ts +407 -0
  427. package/references/minimem/src/cli/sync/detection.ts +138 -0
  428. package/references/minimem/src/cli/sync/index.ts +107 -0
  429. package/references/minimem/src/cli/sync/operations.ts +373 -0
  430. package/references/minimem/src/cli/sync/registry.ts +279 -0
  431. package/references/minimem/src/cli/sync/state.ts +355 -0
  432. package/references/minimem/src/cli/sync/validation.ts +206 -0
  433. package/references/minimem/src/cli/sync/watcher.ts +234 -0
  434. package/references/minimem/src/cli/version.ts +34 -0
  435. package/references/minimem/src/core/index.ts +9 -0
  436. package/references/minimem/src/core/indexer.ts +628 -0
  437. package/references/minimem/src/core/searcher.ts +221 -0
  438. package/references/minimem/src/db/schema.ts +183 -0
  439. package/references/minimem/src/db/sqlite-vec.ts +24 -0
  440. package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +431 -0
  441. package/references/minimem/src/embeddings/batch-gemini.ts +392 -0
  442. package/references/minimem/src/embeddings/batch-openai.ts +409 -0
  443. package/references/minimem/src/embeddings/embeddings.ts +434 -0
  444. package/references/minimem/src/index.ts +109 -0
  445. package/references/minimem/src/internal.ts +299 -0
  446. package/references/minimem/src/minimem.ts +1276 -0
  447. package/references/minimem/src/search/__tests__/hybrid.test.ts +247 -0
  448. package/references/minimem/src/search/graph.ts +234 -0
  449. package/references/minimem/src/search/hybrid.ts +151 -0
  450. package/references/minimem/src/search/search.ts +256 -0
  451. package/references/minimem/src/server/__tests__/mcp.test.ts +341 -0
  452. package/references/minimem/src/server/__tests__/tools.test.ts +364 -0
  453. package/references/minimem/src/server/mcp.ts +326 -0
  454. package/references/minimem/src/server/tools.ts +720 -0
  455. package/references/minimem/src/session.ts +460 -0
  456. package/references/minimem/tsconfig.json +19 -0
  457. package/references/minimem/tsup.config.ts +26 -0
  458. package/references/minimem/vitest.config.ts +24 -0
  459. package/references/skill-tree/.claude/settings.json +6 -0
  460. package/references/skill-tree/.sudocode/issues.jsonl +11 -0
  461. package/references/skill-tree/.sudocode/specs.jsonl +1 -0
  462. package/references/skill-tree/CLAUDE.md +150 -0
  463. package/references/skill-tree/README.md +324 -0
  464. package/references/skill-tree/docs/GAPS_v1.md +221 -0
  465. package/references/skill-tree/docs/INTEGRATION_PLAN.md +467 -0
  466. package/references/skill-tree/docs/TODOS.md +91 -0
  467. package/references/skill-tree/docs/anthropic_skill_guide.md +1364 -0
  468. package/references/skill-tree/docs/design/federated-skill-trees.md +524 -0
  469. package/references/skill-tree/docs/design/multi-agent-sync.md +759 -0
  470. package/references/skill-tree/docs/scraper/BRAINSTORM.md +583 -0
  471. package/references/skill-tree/docs/scraper/POC_PLAN.md +420 -0
  472. package/references/skill-tree/docs/scraper/README.md +170 -0
  473. package/references/skill-tree/examples/basic-usage.ts +190 -0
  474. package/references/skill-tree/package-lock.json +1509 -0
  475. package/references/skill-tree/package.json +66 -0
  476. package/references/skill-tree/scraper/README.md +123 -0
  477. package/references/skill-tree/scraper/docs/DESIGN.md +683 -0
  478. package/references/skill-tree/scraper/docs/PLAN.md +336 -0
  479. package/references/skill-tree/scraper/drizzle.config.ts +10 -0
  480. package/references/skill-tree/scraper/package-lock.json +6329 -0
  481. package/references/skill-tree/scraper/package.json +68 -0
  482. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +7 -0
  483. package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +7 -0
  484. package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +27 -0
  485. package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +21 -0
  486. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +54 -0
  487. package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +24 -0
  488. package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +93 -0
  489. package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +22 -0
  490. package/references/skill-tree/scraper/tsup.config.ts +14 -0
  491. package/references/skill-tree/scraper/vitest.config.ts +17 -0
  492. package/references/skill-tree/scripts/convert-to-vitest.ts +166 -0
  493. package/references/skill-tree/skills/skill-writer/SKILL.md +339 -0
  494. package/references/skill-tree/skills/skill-writer/references/examples.md +326 -0
  495. package/references/skill-tree/skills/skill-writer/references/patterns.md +210 -0
  496. package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +123 -0
  497. package/references/skill-tree/test/run-all.ts +106 -0
  498. package/references/skill-tree/test/utils.ts +128 -0
  499. package/references/skill-tree/vitest.config.ts +16 -0
  500. package/src/atlas.ts +525 -13
  501. package/src/embeddings/provider.ts +10 -3
  502. package/src/index.ts +127 -5
  503. package/src/learning/index.ts +41 -6
  504. package/src/learning/knowledge-extractor.ts +470 -0
  505. package/src/learning/meta-learner.ts +54 -0
  506. package/src/learning/pipeline.ts +87 -8
  507. package/src/learning/team-ingester.ts +499 -0
  508. package/src/learning/team-meta-learner.ts +558 -0
  509. package/src/learning/team-pipeline.ts +364 -0
  510. package/src/learning/trajectory-sources/dataclaw.ts +403 -0
  511. package/src/learning/trajectory-sources/entire.ts +240 -0
  512. package/src/learning/trajectory-sources/file.ts +136 -0
  513. package/src/learning/trajectory-sources/huggingface.ts +248 -0
  514. package/src/learning/trajectory-sources/in-memory.ts +61 -0
  515. package/src/learning/trajectory-sources/index.ts +15 -0
  516. package/src/learning/trajectory-sources/pipeline.ts +69 -0
  517. package/src/memory/graph-layers/base.ts +184 -0
  518. package/src/memory/graph-layers/causal.ts +16 -0
  519. package/src/memory/graph-layers/entity.ts +16 -0
  520. package/src/memory/graph-layers/index.ts +5 -0
  521. package/src/memory/graph-layers/semantic.ts +16 -0
  522. package/src/memory/graph-layers/temporal.ts +16 -0
  523. package/src/memory/index.ts +45 -0
  524. package/src/memory/knowledge-bank.ts +1260 -0
  525. package/src/memory/knowledge-defrag.ts +329 -0
  526. package/src/memory/knowledge-graph.ts +361 -0
  527. package/src/memory/search-provider.ts +35 -0
  528. package/src/memory/search-providers/index.ts +3 -0
  529. package/src/memory/search-providers/minimem.ts +84 -0
  530. package/src/memory/search-providers/text-similarity.ts +35 -0
  531. package/src/memory/skill-exporter.ts +357 -0
  532. package/src/memory/system.ts +61 -8
  533. package/src/memory/team-experience.ts +604 -0
  534. package/src/runtime/backends/acp-protocol.ts +231 -0
  535. package/src/runtime/backends/acp.ts +57 -196
  536. package/src/runtime/backends/index.ts +14 -0
  537. package/src/runtime/backends/macro-agent.ts +177 -0
  538. package/src/runtime/compute-provider.ts +206 -0
  539. package/src/runtime/index.ts +22 -0
  540. package/src/runtime/manager.ts +167 -23
  541. package/src/runtime/types.ts +41 -0
  542. package/src/search/evaluator.ts +29 -4
  543. package/src/search/index.ts +9 -0
  544. package/src/search/refinement-loop.ts +106 -12
  545. package/src/search/team-router.ts +459 -0
  546. package/src/session-bank/git-reader.ts +190 -0
  547. package/src/session-bank/index.ts +24 -0
  548. package/src/session-bank/parser.ts +366 -0
  549. package/src/session-bank/session-bank.ts +464 -0
  550. package/src/session-bank/types.ts +173 -0
  551. package/src/surfacing/index.ts +23 -0
  552. package/src/surfacing/publisher.ts +23 -0
  553. package/src/surfacing/skill-library.ts +31 -0
  554. package/src/surfacing/skill-publisher.ts +223 -0
  555. package/src/surfacing/sqlite-storage-adapter.ts +301 -0
  556. package/src/surfacing/team-skill-library.ts +610 -0
  557. package/src/types/config.ts +252 -0
  558. package/src/types/dataclaw.ts +99 -0
  559. package/src/types/huggingface-transformers.d.ts +12 -0
  560. package/src/types/index.ts +156 -0
  561. package/src/types/knowledge-graph.ts +246 -0
  562. package/src/types/knowledge.ts +388 -0
  563. package/src/types/team-meta.ts +212 -0
  564. package/src/types/team-playbook.ts +384 -0
  565. package/src/types/team-trajectory.ts +673 -0
  566. package/src/types/trajectory-source.ts +47 -0
  567. package/src/utils/frontmatter.ts +118 -0
  568. package/src/utils/index.ts +7 -0
  569. package/src/workspace/index.ts +48 -0
  570. package/src/workspace/runner.ts +281 -0
  571. package/src/workspace/skill-converter.ts +288 -0
  572. package/src/workspace/templates/index.ts +64 -0
  573. package/src/workspace/templates/knowledge-defrag.ts +223 -0
  574. package/src/workspace/templates/knowledge-extraction.ts +337 -0
  575. package/src/workspace/templates/meta-reflection.ts +208 -0
  576. package/src/workspace/templates/playbook-extraction.ts +240 -0
  577. package/src/workspace/templates/refinement-analysis.ts +162 -0
  578. package/src/workspace/templates/solution-evaluation.ts +199 -0
  579. package/src/workspace/templates/team-playbook-extraction.ts +631 -0
  580. package/src/workspace/templates/team-trajectory-analysis.ts +564 -0
  581. package/src/workspace/templates/trajectory-analysis.ts +234 -0
  582. package/src/workspace/templates/usage-inference.ts +163 -0
  583. package/src/workspace/types.ts +233 -0
  584. package/tests/atlas-knowledge.test.ts +165 -0
  585. package/tests/gap-fixes.test.ts +1103 -0
  586. package/tests/integration/dataclaw-e2e.test.ts +559 -0
  587. package/tests/integration/e2e.test.ts +407 -0
  588. package/tests/integration/entire-e2e.test.ts +187 -0
  589. package/tests/integration/huggingface-e2e.test.ts +627 -0
  590. package/tests/integration/session-bank.test.ts +225 -0
  591. package/tests/integration/skill-tree-wiring.test.ts +152 -0
  592. package/tests/learning/dataclaw-trajectory-source.test.ts +642 -0
  593. package/tests/learning/entire-trajectory-source.test.ts +380 -0
  594. package/tests/learning/huggingface-trajectory-source.test.ts +817 -0
  595. package/tests/learning/knowledge-extractor.test.ts +491 -0
  596. package/tests/learning/team-ingester.test.ts +349 -0
  597. package/tests/learning/team-meta-learner.test.ts +618 -0
  598. package/tests/learning/team-pipeline.test.ts +334 -0
  599. package/tests/learning/trajectory-sources.test.ts +312 -0
  600. package/tests/memory/graph-layers/semantic.test.ts +219 -0
  601. package/tests/memory/knowledge-bank-extraction.test.ts +558 -0
  602. package/tests/memory/knowledge-bank.test.ts +705 -0
  603. package/tests/memory/knowledge-defrag.test.ts +366 -0
  604. package/tests/memory/knowledge-evolution.test.ts +563 -0
  605. package/tests/memory/knowledge-graph.test.ts +492 -0
  606. package/tests/memory/knowledge-inbox.test.ts +258 -0
  607. package/tests/memory/knowledge-minimem.test.ts +251 -0
  608. package/tests/memory/skill-exporter.test.ts +470 -0
  609. package/tests/memory/team-experience.test.ts +411 -0
  610. package/tests/runtime/agent-manager.test.ts +1 -1
  611. package/tests/runtime/compute-provider.test.ts +288 -0
  612. package/tests/runtime/delegate.test.ts +349 -0
  613. package/tests/runtime/macro-agent-backend.test.ts +266 -0
  614. package/tests/search/team-router.test.ts +376 -0
  615. package/tests/session-bank/fixtures/multi-tool-session/full.jsonl +12 -0
  616. package/tests/session-bank/fixtures/multi-tool-session/metadata.json +28 -0
  617. package/tests/session-bank/fixtures/root-metadata.json +18 -0
  618. package/tests/session-bank/fixtures/simple-session/full.jsonl +6 -0
  619. package/tests/session-bank/fixtures/simple-session/metadata.json +38 -0
  620. package/tests/session-bank/git-reader.test.ts +232 -0
  621. package/tests/session-bank/parser.test.ts +321 -0
  622. package/tests/session-bank/session-bank.test.ts +546 -0
  623. package/tests/surfacing/skill-publisher.test.ts +398 -0
  624. package/tests/surfacing/sqlite-storage-adapter.test.ts +218 -0
  625. package/tests/surfacing/team-skill-library.test.ts +444 -0
  626. package/tests/types/team-meta.test.ts +147 -0
  627. package/tests/types/team-playbook.test.ts +246 -0
  628. package/tests/types/team-trajectory.test.ts +557 -0
  629. package/tests/utils/frontmatter.test.ts +208 -0
  630. package/tests/workspace/full-flow.test.ts +839 -0
  631. package/tests/workspace/manager.test.ts +215 -0
  632. package/tests/workspace/runner.test.ts +330 -0
  633. package/tests/workspace/skill-converter.test.ts +205 -0
  634. package/tests/workspace/templates/knowledge-extraction.test.ts +235 -0
  635. package/tests/workspace/templates/team-playbook-extraction.test.ts +341 -0
  636. package/tests/workspace/templates/team-trajectory-analysis.test.ts +417 -0
  637. package/src/learning/llm-extractor.ts +0 -542
package/README.md CHANGED
@@ -1,29 +1,36 @@
1
- # Atlas
1
+ # cognitive-core
2
2
 
3
- **Adaptive Trajectory Learning and Abstraction System**
3
+ A TypeScript learning system for AI agents. Records how agents solve problems, extracts reusable playbooks and factual knowledge from trajectories, and injects relevant guidance into future tasks.
4
4
 
5
- A TypeScript-native cognitive core for building AI agents that learn from experience. Atlas extracts strategies, concepts, and skills from problem-solving trajectories to improve future performance.
5
+ ## Table of Contents
6
6
 
7
- ## Features
7
+ - [Motivation](#motivation)
8
+ - [Installation](#installation)
9
+ - [Quick Start](#quick-start)
10
+ - [How It Works](#how-it-works)
11
+ - [Knowledge Bank](#knowledge-bank)
12
+ - [CLI](#cli)
13
+ - [Agent Backends](#agent-backends)
14
+ - [Skill Library](#skill-library)
15
+ - [Configuration](#configuration)
16
+ - [Core Types](#core-types)
17
+ - [Research References](#research-references)
18
+ - [Limitations](#limitations)
19
+ - [Contributing](#contributing)
20
+ - [License](#license)
8
21
 
9
- - **Memory System**: Four complementary memory types for different abstraction levels
10
- - **Experience Memory** (ReMem-style): Task-level retrieval of similar past experiences
11
- - **Concept Library** (Stitch/LILO-style): Reusable code patterns and abstractions
12
- - **Strategy Bank** (ArcMemo-style): High-level reasoning patterns
13
- - **Skill Store** (Claudeception-inspired): Actionable skills with specific triggers
22
+ ## Motivation
14
23
 
15
- - **Learning Engine**: Automatic extraction of knowledge from trajectories
16
- - Credit assignment for identifying key steps
17
- - Pattern extraction using text analysis or LLM agents
18
- - Deduplication to prevent redundant learning
19
24
 
20
- - **Agent-Based Extractors**: LLM-powered extraction of:
21
- - Strategies (when/what rules)
22
- - Code concepts (reusable patterns)
23
- - Skills (concrete solutions with triggers)
25
+ cognitive-core gives agents persistent, structured memory:
24
26
 
25
- - **Task Router**: Smart routing based on memory similarity
26
- - **Lightweight Persistence**: JSON file-based storage
27
+ 1. **Trajectories** record what the agent did (ReAct-style thought/action/observation steps)
28
+ 2. **Playbooks** distill trajectories into reusable guidance (strategy, tactics, verification criteria)
29
+ 3. **Knowledge Bank** extracts and organizes factual knowledge — what agents learn about tools, libraries, and patterns
30
+ 4. **Routing** matches incoming tasks to relevant playbooks before the agent starts working
31
+ 5. **Meta-learning** tracks which playbooks helped and adjusts routing over time
32
+
33
+ The result: agents that get measurably better at recurring problem types without fine-tuning or prompt engineering.
27
34
 
28
35
  ## Installation
29
36
 
@@ -31,333 +38,596 @@ A TypeScript-native cognitive core for building AI agents that learn from experi
31
38
  npm install cognitive-core
32
39
  ```
33
40
 
41
+ Requires Node.js 18+.
42
+
34
43
  ## Quick Start
35
44
 
36
- ### Using with Agent Backends (Recommended)
45
+ ### Solve a task with memory-augmented agents
37
46
 
38
47
  ```typescript
39
48
  import { createAtlasWithAgents, createTask, createMockBackend } from 'cognitive-core';
40
49
 
41
- // Create Atlas with agent backends
42
50
  const atlas = createAtlasWithAgents(
43
- [createMockBackend()], // Use mock backend for testing
44
- { storage: { baseDir: '.atlas' } }
51
+ [createMockBackend()],
52
+ { storage: { baseDir: '.cognitive-core' } }
45
53
  );
46
54
 
47
- // Initialize (loads persisted data)
48
55
  await atlas.init();
49
56
 
50
- // Create and solve a task
51
- const task = createTask({
57
+ const result = await atlas.solve(createTask({
52
58
  domain: 'code',
53
- description: 'Write a function that checks if a number is prime',
54
- });
55
-
56
- const result = await atlas.solve(task);
57
- console.log('Success:', result.trajectory.outcome.success);
58
- console.log('Routing strategy:', result.routing?.strategy);
59
- console.log('Used refinement:', !!result.refinement);
59
+ description: 'Fix the TypeScript compilation error in auth.ts',
60
+ }));
60
61
 
61
- // Get stats
62
- const stats = await atlas.getStats();
63
- console.log('Memory stats:', stats.memory);
64
- console.log('Backends:', stats.execution?.backends);
62
+ console.log(result.trajectory.outcome.success); // true
63
+ console.log(result.routing?.strategy); // 'direct' | 'adapt' | 'explore' | 'fallback'
64
+ console.log(result.injectedPlaybooks?.length); // number of playbooks injected
65
65
 
66
- // Close (persists data)
67
66
  await atlas.close();
68
67
  ```
69
68
 
70
- ### Setting Up Real Agent Backends
69
+ ### Feed trajectories from external agents
70
+
71
+ cognitive-core can learn from trajectories produced by external agents. Record what happened elsewhere and feed it in.
71
72
 
72
73
  ```typescript
73
- import {
74
- createAtlasWithAgents,
75
- createSubprocessBackend,
76
- createTask
77
- } from 'cognitive-core';
78
-
79
- // Create a subprocess backend for Claude Code or other CLI agents
80
- const claudeBackend = createSubprocessBackend({
81
- name: 'claude-code',
82
- command: 'claude',
83
- args: ['--print'],
84
- supportedTypes: ['claude-code', 'default'],
74
+ import { createAtlas, createTrajectory, createTask, createStep, successOutcome } from 'cognitive-core';
75
+
76
+ const atlas = createAtlas({ storage: { baseDir: '.cognitive-core' } });
77
+ await atlas.init();
78
+
79
+ const trajectory = createTrajectory({
80
+ task: createTask({
81
+ domain: 'code',
82
+ description: 'Fix the null pointer exception in user service',
83
+ }),
84
+ steps: [
85
+ createStep({
86
+ thought: 'Check where the null value originates',
87
+ action: 'Read src/services/user.ts',
88
+ observation: 'getUserById returns undefined when user not found',
89
+ }),
90
+ createStep({
91
+ thought: 'Add a guard clause before accessing user properties',
92
+ action: 'Edit src/services/user.ts to add null check',
93
+ observation: 'Added: if (!user) return null',
94
+ }),
95
+ ],
96
+ outcome: successOutcome('Fixed by adding null check in getUserById'),
97
+ agentId: 'claude-code',
85
98
  });
86
99
 
87
- // Create Atlas with real backends
88
- const atlas = createAtlasWithAgents([claudeBackend], {
89
- storage: { baseDir: '.atlas' },
90
- execution: {
91
- defaultAgentType: 'claude-code',
92
- maxExecutionTime: 300, // 5 minutes
93
- captureToolCalls: true,
94
- },
95
- refinement: {
96
- useAgentEvaluation: true,
97
- maxIterations: 3,
98
- },
100
+ const result = await atlas.processTrajectory(trajectory);
101
+ console.log(result.abstractable); // true - system can extract a playbook from this
102
+
103
+ await atlas.close();
104
+ ```
105
+
106
+ ### Query memory directly
107
+
108
+ ```typescript
109
+ const context = await atlas.queryMemory('typescript import resolution error', {
110
+ domains: ['code'],
111
+ includePlaybooks: true,
99
112
  });
100
113
 
101
- await atlas.init();
114
+ for (const { playbook, score } of context.playbooks) {
115
+ console.log(`${playbook.name} (${Math.round(score * 100)}% match)`);
116
+ console.log(` Strategy: ${playbook.guidance.strategy}`);
117
+ console.log(` Tactics: ${playbook.guidance.tactics.join(', ')}`);
118
+ }
119
+ ```
102
120
 
103
- // Solve with memory-augmented context
104
- const result = await atlas.solve(createTask({
105
- domain: 'code',
106
- description: 'Fix the TypeScript compilation error in auth.ts',
107
- }));
121
+ ## How It Works
122
+
123
+ ### Solve flow
124
+
125
+ Every call to `atlas.solve(task)` runs through this pipeline:
126
+
127
+ ```mermaid
128
+ flowchart TD
129
+ Task[Task arrives] --> Router[TaskRouter]
130
+
131
+ Router -->|queries| Memory[MemorySystem]
132
+ Memory --> Exp[ExperienceMemory]
133
+ Memory --> PB[PlaybookLibrary]
134
+ Memory --> KB[KnowledgeBank]
135
+ Memory --> Meta[MetaMemory]
136
+
137
+ Router --> Decision{RoutingDecision}
138
+
139
+ Decision --> Agent[AgentManager]
140
+ Agent -->|injects playbooks + knowledge| Backend[Backend]
141
+ Backend -->|returns trajectory| Session[AgentSession]
142
+
143
+ Session --> Check{Succeeded?}
144
+ Check -->|Yes| Learn[LearningPipeline]
145
+ Check -->|No| Refine{Retry?}
146
+ Refine -->|Yes, max 3x| Agent
147
+ Refine -->|No| Learn
148
+
149
+ Learn --> Analyze[TrajectoryAnalyzer]
150
+ Learn --> Extract[PlaybookExtractor]
151
+ Learn --> KnowExtract[KnowledgeExtractor]
152
+ Learn --> Usage[UsageInference]
153
+ Learn --> MetaLearn[MetaLearner]
154
+
155
+ Analyze --> Updated[Memory updated]
156
+ Extract --> Updated
157
+ KnowExtract --> Updated
158
+ Usage --> Updated
159
+ MetaLearn --> Updated
160
+
161
+ Updated -.->|next task| Router
108
162
  ```
109
163
 
110
- ## Architecture
164
+ ### Playbook lifecycle
165
+
166
+ A playbook starts with low confidence (0.3) after extraction from a cluster of similar trajectories. Each time it's injected into an agent and the task succeeds, confidence grows. After enough successful uses (default: 5 successes, 80%+ success rate), it gets promoted to a **core skill** that's always in the system prompt. If it starts failing in specific contexts, the system records refinements rather than discarding the playbook entirely.
167
+
168
+ ```mermaid
169
+ stateDiagram-v2
170
+ [*] --> Extracted : pattern found across trajectories
171
+
172
+ Extracted --> Contextual : confidence above 0.3
173
+ Contextual --> Domain : tagged to domain
174
+
175
+ Contextual --> Contextual : success
176
+ Domain --> Domain : success
177
+
178
+ Domain --> Core : 0.85+ confidence, 5+ successes, 80%+ rate
179
+ Core --> Core : success
180
+
181
+ Core --> Domain : 3 consecutive failures
182
+ Domain --> Contextual : confidence drops
111
183
 
184
+ Contextual --> Refined : failure in specific context
185
+ Refined --> Contextual : refinement recorded
112
186
  ```
113
- Atlas
114
- ├── Memory System
115
- │ ├── ExperienceMemory # Task-level retrieval (k=4)
116
- │ ├── PlaybookLibrary # Actionable playbooks with triggers
117
- │ └── MetaMemory # Meta-learning observations
118
-
119
- ├── Learning Engine
120
- │ ├── TrajectoryAnalyzer # Credit assignment
121
- │ ├── PlaybookExtractor # Pattern discovery & playbook creation
122
- │ ├── MetaLearner # Adaptive routing improvements
123
- │ ├── UsageInference # Track playbook effectiveness
124
- │ └── LearningPipeline # Batch learning orchestration
125
-
126
- ├── Surfacing
127
- │ ├── SkillLibrary # Tiered skill management (core/domain/contextual)
128
- │ └── PlaybookMCPServer # MCP protocol for on-demand access
129
-
130
- ├── Runtime
131
- │ ├── AgentManager # Spawn and observe agents
132
- │ ├── Backends # Mock, Subprocess, ACP backends
133
- │ └── KnowledgeInjector # Format memory for agent context
134
-
135
- ├── Search/Routing
136
- │ ├── TaskRouter # Smart routing with meta-learning
137
- │ ├── RefinementLoop # Iterative solution improvement
138
- │ └── SolutionEvaluator # Quality assessment
139
-
140
- └── Integration
141
- └── skill-tree # Federated skill library management
187
+
188
+ ### Memory architecture
189
+
190
+ The four memory stores serve different retrieval patterns:
191
+
192
+ ```mermaid
193
+ graph LR
194
+ subgraph MemorySystem
195
+ E[ExperienceMemory]
196
+ P[PlaybookLibrary]
197
+ K[KnowledgeBank]
198
+ M[MetaMemory]
199
+ end
200
+
201
+ subgraph Search
202
+ BM[BM25 Index]
203
+ VS[sqlite-vec]
204
+ TS[Text Similarity]
205
+ end
206
+
207
+ subgraph Providers
208
+ OAI[OpenAI]
209
+ VOY[Voyage]
210
+ HF[HuggingFace local]
211
+ MM[minimem optional]
212
+ end
213
+
214
+ E --> BM
215
+ E --> VS
216
+ P --> BM
217
+ P --> VS
218
+ K --> TS
219
+ K -.-> MM
220
+ VS -.-> OAI
221
+ VS -.-> VOY
222
+ VS -.-> HF
223
+
224
+ subgraph Storage
225
+ JSON[JSON files]
226
+ SQL[SQLite]
227
+ MD[Markdown + YAML]
228
+ end
229
+
230
+ E --> JSON
231
+ P --> JSON
232
+ M --> JSON
233
+ K --> MD
234
+ VS --> SQL
142
235
  ```
143
236
 
144
- ## Core Types
237
+ | Store | Purpose | Format |
238
+ |-------|---------|--------|
239
+ | **ExperienceMemory** | Episodic — *what happened* | JSON |
240
+ | **PlaybookLibrary** | Procedural — *how to do things* | JSON |
241
+ | **KnowledgeBank** | Semantic — *facts, concepts, relationships* | Markdown + YAML frontmatter |
242
+ | **MetaMemory** | Meta-learning — *what worked* | JSON |
145
243
 
146
- ### Task
147
- ```typescript
148
- interface Task {
149
- id: string;
150
- domain: string; // e.g., 'code', 'reasoning', 'arc'
151
- description: string;
152
- context: Record<string, unknown>;
153
- verification?: VerificationSpec;
154
- }
244
+ ### Search and matching
245
+
246
+ Memory search uses BM25 text matching by default. For higher-quality retrieval, plug in an embedding provider (OpenAI, Voyage, or local via `@huggingface/transformers`) and cognitive-core switches to hybrid BM25 + vector search backed by `sqlite-vec`.
247
+
248
+ Knowledge bank search uses text similarity by default, with optional delegation to [minimem](https://github.com/alexngai/minimem) for hybrid vector + BM25 search when available.
249
+
250
+ ## Knowledge Bank
251
+
252
+ The knowledge bank is a **semantic memory** store for facts, concepts, and relationships that agents learn from experience. While playbooks capture *how* to do things, the knowledge bank captures *what agents know* — facts about tools, libraries, version-specific behavior, and causal relationships.
253
+
254
+ ### Knowledge note types
255
+
256
+ | Type | Purpose | Example |
257
+ |------|---------|---------|
258
+ | **Observation** | Atomic fact learned from experience | "Prisma requires `db push` before `migrate dev` when schema has drifted" |
259
+ | **Entity** | Living document about a tool/library/pattern | "Everything I know about Prisma" |
260
+ | **Domain summary** | High-level overview of a knowledge domain | "Database knowledge overview" |
261
+
262
+ ### How knowledge is stored
263
+
264
+ Knowledge notes are plain Markdown files with structured YAML frontmatter, organized on the filesystem:
265
+
266
+ ```
267
+ knowledge/
268
+ ├── observations/ # Atomic facts (k-*.md)
269
+ ├── entities/ # Living entity docs (prisma.md, vitest.md)
270
+ └── domains/ # Domain summaries (database.md, testing.md)
155
271
  ```
156
272
 
157
- ### Trajectory
158
- ```typescript
159
- interface Trajectory {
160
- id: string;
161
- task: Task;
162
- steps: Step[]; // ReAct-style steps
163
- outcome: Outcome;
164
- agentId: string;
165
- llmCalls: number;
166
- totalTokens: number;
167
- wallTimeSeconds: number;
168
- }
273
+ Any agent with filesystem access can browse, grep, and read knowledge directly — no special API required.
274
+
275
+ ### Multi-layer knowledge graph
276
+
277
+ Relationships between knowledge notes are tracked in a multi-layer graph overlay (inspired by [MAGMA](https://arxiv.org/abs/2601.03236)):
278
+
279
+ | Layer | Captures | Example |
280
+ |-------|----------|---------|
281
+ | **Semantic** | Conceptual relationships | "Prisma *depends-on* PostgreSQL" |
282
+ | **Temporal** | When knowledge was learned | "Observation A *supersedes* B" |
283
+ | **Causal** | Cause-effect chains | "Upgrading TS 5.4 *broke* enum const exports" |
284
+ | **Entity** | Tool/component interactions | "Next.js *uses* React" |
285
+
286
+ ### Knowledge lifecycle
287
+
288
+ ```
289
+ Trajectory → KnowledgeExtractor → Observations (confidence: 0.3)
290
+
291
+ reinforced by more trajectories
292
+
293
+ Observations (confidence: 0.5-0.8)
294
+
295
+ consolidated into entity notes
296
+
297
+ Entity Notes (living docs)
298
+
299
+ domain summaries regenerated
300
+
301
+ Domain Summaries
169
302
  ```
170
303
 
171
- ### Strategy
304
+ Knowledge evolves through:
305
+ - **Reinforcement** — same fact observed again increases confidence
306
+ - **Contradiction detection** — conflicting facts are flagged and resolved
307
+ - **Consolidation** — observations about the same entity merge into entity notes
308
+ - **Decay** — unvalidated knowledge gradually loses confidence
309
+
310
+ ### Knowledge surfacing
311
+
312
+ During `atlas.solve()`, relevant knowledge is surfaced alongside playbooks as an independent context section:
313
+
172
314
  ```typescript
173
- interface Strategy {
174
- situation: string; // When to apply
175
- suggestion: string; // What to do
176
- parameters: Parameter[];
177
- confidence: number;
178
- successRate: number;
179
- }
315
+ const result = await atlas.solve(task);
316
+ console.log(result.surfacedKnowledge?.length); // knowledge notes injected
317
+ ```
318
+
319
+ Three-tier retrieval:
320
+ 1. **Domain match** — if the task domain matches a knowledge domain, include the domain summary
321
+ 2. **Entity match** — if the task mentions known entities, include their notes
322
+ 3. **Semantic match** — text similarity search for contextually relevant observations
323
+
324
+ ### minimem integration
325
+
326
+ When [minimem](https://github.com/alexngai/minimem) is available, the knowledge bank can delegate search to minimem's hybrid search (vector + BM25) for higher-quality retrieval. Set `minimemAware: true` in config to enable. The two systems communicate via file conventions only — no cross-package imports.
327
+
328
+ See [Design Doc](docs/DESIGN-semantic-memory-knowledge-bank.md) for the full architecture.
329
+
330
+ ## CLI
331
+
332
+ cognitive-core ships a CLI for querying playbooks and storing trajectories without writing code.
333
+
334
+ ```bash
335
+ # Initialize storage
336
+ cognitive-core init --dir .cognitive-core
337
+
338
+ # Store a trajectory from a JSON file
339
+ cognitive-core store ./trajectory.json
340
+
341
+ # Search for relevant playbooks
342
+ cognitive-core search "fix typescript import errors" --domain code
343
+ # Found 2 playbook(s) matching "fix typescript import errors":
344
+ #
345
+ # Match: 92% (trigger)
346
+ # ## typescript-import-resolution
347
+ # Confidence: 85%
348
+ # Strategy: Check tsconfig.json paths configuration
349
+ # Tactics:
350
+ # - Verify moduleResolution setting
351
+ # - Check baseUrl and paths mapping
352
+ # - Inspect file extensions (.js vs .ts)
353
+
354
+ # Get full playbook details
355
+ cognitive-core get playbook-abc123
356
+
357
+ # List domains with playbooks
358
+ cognitive-core domains
359
+
360
+ # View memory statistics
361
+ cognitive-core stats
362
+ # Experiences: 47
363
+ # Playbooks: 12
364
+ # Meta-observations: 31
180
365
  ```
181
366
 
182
- ### Skill
367
+ All commands support `--json` for structured output:
368
+
369
+ ```bash
370
+ cognitive-core search "debug async errors" --json | jq '.results[0].strategy'
371
+ ```
372
+
373
+ ## Agent Backends
374
+
375
+ cognitive-core delegates execution to backends that handle spawning, message passing, and trajectory extraction.
376
+
377
+ ### Subprocess backend
378
+
379
+ Spawns agents as child processes. Works with any CLI agent.
380
+
183
381
  ```typescript
184
- interface Skill {
185
- name: string;
186
- description: string; // Rich, for semantic matching
187
- problem: string;
188
- triggers: string[]; // Specific conditions
189
- solution: string[]; // Step-by-step
190
- verification?: string;
191
- }
382
+ import { createAtlasWithAgents, createSubprocessBackend, claudeCodeConfig } from 'cognitive-core';
383
+
384
+ const backend = createSubprocessBackend({
385
+ 'claude-code': claudeCodeConfig, // Pre-configured for Claude Code CLI
386
+ });
387
+
388
+ const atlas = createAtlasWithAgents([backend], {
389
+ execution: {
390
+ defaultAgentType: 'claude-code',
391
+ maxExecutionTime: 300,
392
+ captureToolCalls: true,
393
+ },
394
+ });
192
395
  ```
193
396
 
194
- ## Agent Backend System
397
+ ### ACP backend
195
398
 
196
- Atlas uses an agent backend system for real execution. Backends handle spawning, managing, and extracting trajectories from agents.
399
+ Uses the [Agent Communication Protocol](https://www.npmjs.com/package/acp-factory) for richer interaction with ACP-compatible agents.
197
400
 
198
- ### Creating Custom Backends
401
+ ```typescript
402
+ import { createACPBackend, claudeCodeACPConfig } from 'cognitive-core';
403
+
404
+ const backend = createACPBackend({
405
+ 'claude-code': claudeCodeACPConfig, // Uses npx claude-code-acp
406
+ });
407
+ ```
408
+
409
+ ### Custom backends
199
410
 
200
411
  Implement the `AgentBackend` interface:
201
412
 
202
413
  ```typescript
203
414
  import type { AgentBackend, AgentSpawnConfig, AgentSession } from 'cognitive-core';
204
415
 
205
- class MyAgentBackend implements AgentBackend {
416
+ class MyBackend implements AgentBackend {
206
417
  readonly name = 'my-agent';
207
- readonly supportedTypes = ['my-agent', 'custom'];
418
+ readonly supportedTypes = ['my-agent'];
208
419
 
209
- async isAvailable(): Promise<boolean> {
210
- // Check if agent is available
211
- return true;
212
- }
420
+ async isAvailable(): Promise<boolean> { return true; }
213
421
 
214
422
  async spawn(config: AgentSpawnConfig): Promise<AgentSession> {
215
- // Spawn the agent with task and injected knowledge
216
- const session = await launchMyAgent({
217
- task: config.task,
218
- systemPrompt: config.systemPromptAdditions,
219
- timeout: config.timeout,
220
- });
423
+ // config.task - the task to solve
424
+ // config.systemPromptAdditions - playbook context to inject
425
+ // config.timeout - max execution time
426
+ const session = await launchMyAgent(config);
221
427
  return session;
222
428
  }
223
429
 
224
- async getSession(sessionId: string): Promise<AgentSession | undefined> {
225
- // Get session status
226
- return this.sessions.get(sessionId);
227
- }
228
-
229
- async terminate(sessionId: string): Promise<void> {
230
- // Terminate a running session
231
- await this.sessions.get(sessionId)?.kill();
232
- }
430
+ async getSession(id: string): Promise<AgentSession | undefined> { /* ... */ }
431
+ async terminate(id: string): Promise<void> { /* ... */ }
233
432
  }
234
-
235
- // Register with Atlas
236
- const atlas = createAtlasWithAgents([new MyAgentBackend()]);
237
433
  ```
238
434
 
239
- ### Using the AgentManager Directly
435
+ ### Observing agent execution
240
436
 
241
437
  ```typescript
242
438
  const manager = atlas.getAgentManager();
243
439
 
244
- // Add observers for monitoring
245
440
  manager.addObserver({
246
441
  onSessionStart: (session) => console.log('Started:', session.id),
247
442
  onToolCall: (session, toolCall) => console.log('Tool:', toolCall.name),
248
- onSessionEnd: (session, trajectory) => console.log('Done:', trajectory.outcome.success),
249
- });
250
-
251
- // Compare with/without memory augmentation
252
- const comparison = await manager.compareWithKnowledge({
253
- agentType: 'claude-code',
254
- task: createTask({ domain: 'code', description: 'Fix the bug' }),
443
+ onSessionEnd: (session, trajectory) => {
444
+ console.log('Done:', trajectory.outcome.success);
445
+ console.log('Steps:', trajectory.steps.length);
446
+ },
255
447
  });
256
-
257
- console.log('Time saved:', comparison.improvement.timeDelta, 'ms');
258
- console.log('Fewer tool calls:', comparison.improvement.toolCallDelta);
259
448
  ```
260
449
 
261
- ### Legacy: LLM Provider (Deprecated)
262
-
263
- > **Note**: The `setProvider()` API is deprecated. Use `createAtlasWithAgents()` instead.
450
+ ## Skill Library
264
451
 
265
- For simple testing without real agent execution:
266
-
267
- ```typescript
268
- import type { LLMProvider, Message, CompletionOptions } from 'cognitive-core';
269
-
270
- class MyProvider implements LLMProvider {
271
- readonly name = 'my-provider';
272
-
273
- async complete(
274
- messages: Message[],
275
- options?: CompletionOptions
276
- ): Promise<string> {
277
- const response = await myLLMAPI.chat({
278
- messages,
279
- temperature: options?.temperature,
280
- max_tokens: options?.maxTokens,
281
- });
282
- return response.content;
283
- }
284
- }
285
-
286
- // Deprecated - prefer createAtlasWithAgents()
287
- atlas.setProvider(new MyProvider());
288
- ```
452
+ The skill library manages how playbooks are surfaced to agents across four tiers:
289
453
 
290
- ## Processing External Trajectories
454
+ | Tier | When loaded | Criteria |
455
+ |------|-------------|----------|
456
+ | **Core** | Always in system prompt | 85%+ confidence, 5+ successes, 80%+ success rate |
457
+ | **Domain** | When task domain matches | Domain-tagged playbooks |
458
+ | **Contextual** | When task query matches | Semantic/trigger match |
459
+ | **On-demand** | Agent explicitly requests | Available via CLI |
291
460
 
292
- You can feed trajectories from other agents:
461
+ Playbooks are automatically promoted and demoted based on usage outcomes. Three consecutive failures trigger demotion review.
293
462
 
294
463
  ```typescript
295
- import { createTrajectory, createTask, createStep, successOutcome } from 'cognitive-core';
296
-
297
- const trajectory = createTrajectory({
298
- task: createTask({
299
- domain: 'code',
300
- description: 'Fix the authentication bug',
301
- }),
302
- steps: [
303
- createStep({
304
- thought: 'Need to check the token validation',
305
- action: 'Read auth.ts',
306
- observation: 'Found expired token check missing',
307
- }),
308
- createStep({
309
- thought: 'Adding expiry validation',
310
- action: 'Edit auth.ts to add token.exp check',
311
- observation: 'Token validation added',
312
- }),
313
- ],
314
- outcome: successOutcome('Fixed by adding token expiry check'),
315
- agentId: 'external-agent',
316
- });
317
-
318
- // Process for learning
319
- const result = await atlas.processTrajectory(trajectory);
320
- console.log('Abstractable:', result.abstractable);
321
- console.log('Strategy extracted:', result.strategyExtracted);
464
+ const skills = await atlas.getSkillLibrary()?.getSkillsForAgent(task);
465
+ // skills.core - always-on playbooks
466
+ // skills.domain - relevant to task domain
467
+ // skills.contextual - matched to this specific task
322
468
  ```
323
469
 
324
470
  ## Configuration
325
471
 
326
472
  ```typescript
327
- const atlas = createAtlas({
473
+ const atlas = createAtlasWithAgents([backend], {
474
+ storage: {
475
+ baseDir: '.cognitive-core',
476
+ persistenceEnabled: true,
477
+ },
328
478
  learning: {
329
- creditStrategy: 'simple', // 'simple' | 'llm' | 'counterfactual'
330
- patternExtractor: 'llm', // 'llm' | 'text' | 'both'
331
- minTrajectories: 10, // Before batch learning
332
- deduplicationThreshold: 0.9,
479
+ creditStrategy: 'simple', // 'simple' | 'contribution'
480
+ minTrajectories: 10, // batch learning threshold
481
+ deduplicationThreshold: 0.9, // prevent duplicate playbooks
333
482
  },
334
483
  router: {
335
- similarityThreshold: 0.85,
484
+ similarityThreshold: 0.85, // match confidence threshold
336
485
  useDomainRouting: true,
337
486
  },
338
487
  memory: {
339
- maxExperiences: 4, // ReMem paper default
340
- maxStrategies: 3,
341
- maxConcepts: 5,
342
- maxSkills: 3,
488
+ maxExperiences: 4, // k for experience retrieval
489
+ maxContextTokens: 4000,
490
+ capacity: {
491
+ maxExperiences: 1000, // total stored experiences
492
+ maxPlaybooks: 200,
493
+ autoPrune: true,
494
+ preserveDomainCoverage: true,
495
+ },
343
496
  },
344
- storage: {
345
- baseDir: '.atlas',
346
- persistenceEnabled: true,
497
+ knowledgeBank: {
498
+ enabled: true, // enable semantic memory (default: false)
499
+ memoryDir: 'memory',
500
+ extraction: {
501
+ enabled: true, // auto-extract from trajectories
502
+ useLlmExtraction: false, // use heuristic extraction
503
+ },
504
+ graph: {
505
+ enabledLayers: ['semantic'], // semantic | temporal | causal | entity
506
+ },
507
+ surfacing: {
508
+ maxNotesPerTask: 5,
509
+ maxTokensForKnowledge: 2000,
510
+ },
511
+ minimemAware: false, // set true if using minimem
512
+ },
513
+ execution: {
514
+ defaultAgentType: 'claude-code',
515
+ maxExecutionTime: 300,
516
+ captureToolCalls: true,
517
+ },
518
+ refinement: {
519
+ useAgentEvaluation: true,
520
+ maxIterations: 3,
521
+ acceptableScore: 0.7,
347
522
  },
348
523
  });
349
524
  ```
350
525
 
351
- ## References
526
+ ## Core Types
527
+
528
+ ### Playbook
529
+
530
+ The central learning unit. Combines when to apply, what to do, and how to verify results.
531
+
532
+ ```typescript
533
+ interface Playbook {
534
+ id: string;
535
+ name: string;
536
+ applicability: {
537
+ situations: string[]; // "debugging async code"
538
+ triggers: string[]; // "Promise rejection", "TS2307"
539
+ antiPatterns: string[]; // when NOT to use
540
+ domains: string[]; // "typescript", "react", "testing"
541
+ };
542
+ guidance: {
543
+ strategy: string; // high-level approach
544
+ tactics: string[]; // mid-level steps
545
+ steps?: string[]; // concrete commands
546
+ codeExample?: string;
547
+ };
548
+ verification: {
549
+ successIndicators: string[]; // "Tests pass", "No errors"
550
+ failureIndicators: string[]; // "Same error persists"
551
+ rollbackStrategy?: string;
552
+ };
553
+ evolution: {
554
+ version: string;
555
+ successCount: number;
556
+ failureCount: number;
557
+ refinements: Refinement[]; // context-specific adaptations
558
+ failures: FailureRecord[];
559
+ };
560
+ confidence: number; // 0-1, grows with successful use
561
+ complexity: 'simple' | 'moderate' | 'complex';
562
+ }
563
+ ```
564
+
565
+ ### Trajectory
566
+
567
+ A recorded problem-solving session in ReAct format.
568
+
569
+ ```typescript
570
+ interface Trajectory {
571
+ id: string;
572
+ task: Task;
573
+ steps: Step[]; // thought -> action -> observation
574
+ outcome: Outcome; // success/failure + solution
575
+ agentId: string;
576
+ llmCalls: number;
577
+ totalTokens: number;
578
+ wallTimeSeconds: number;
579
+ }
580
+ ```
581
+
582
+ ### RoutingDecision
583
+
584
+ How the system decides to approach a task.
585
+
586
+ ```typescript
587
+ interface RoutingDecision {
588
+ strategy: 'direct' | 'adapt' | 'explore' | 'fallback';
589
+ confidence: number;
590
+ memoryContext: MemoryQueryResultV2;
591
+ estimatedBudget: number;
592
+ reasoning: string;
593
+ }
594
+ ```
595
+
596
+ ## Research References
597
+
598
+ cognitive-core draws from several lines of research on agent memory and learning:
352
599
 
353
- This implementation draws from several research papers:
600
+ - **ArcMemo** - Concept-level memory outperforms instance-level at all compute scales
601
+ - **ReMem** - Experience retrieval with k=4, iterative refinement loops
602
+ - **Stitch** - Library learning through compression
603
+ - **LILO** - AutoDoc for concept naming
604
+ - **Voyager** - Ever-growing skill libraries with verification
605
+ - **Claudeception** - Lightweight skill persistence for code agents
606
+ - **[A-MEM](https://arxiv.org/abs/2502.12110)** - Zettelkasten-inspired structured notes with dynamic linking (knowledge note format)
607
+ - **[MAGMA](https://arxiv.org/abs/2601.03236)** - Multi-graph decomposition into semantic, temporal, causal, entity layers (graph overlay design)
608
+ - **[Zep](https://arxiv.org/pdf/2501.13956)** - Entity extraction, community detection, temporal tracking
609
+ - **[Memory Survey](https://arxiv.org/abs/2512.13564)** - Comprehensive survey and taxonomy of factual/experiential/procedural memory
354
610
 
355
- - **ArcMemo**: Concept-level memory beats instance-level at all compute scales
356
- - **ReMem**: Experience retrieval with k=4, refinement loop
357
- - **Stitch**: Library learning via compression
358
- - **LILO**: AutoDoc for concept naming
359
- - **Voyager**: Ever-growing skill libraries
360
- - **Claudeception**: Lightweight skill persistence for Claude Code
611
+ ## Limitations
612
+
613
+ - **No cross-domain transfer**. A playbook learned in the `code` domain won't surface for `testing` tasks even if the underlying pattern is the same. Domain tags are string-matched, not semantically compared.
614
+ - **Cold start**. The system needs ~10 trajectories before batch learning kicks in and playbooks start appearing. Until then, agents run without memory augmentation. Knowledge extraction works per-trajectory, so knowledge is available sooner.
615
+ - **Text-based matching by default**. BM25 works but misses semantic similarity. Vector search requires configuring an embedding provider and adds latency. Knowledge bank search uses text similarity unless minimem is available.
616
+ - **No trajectory quality filtering**. The system stores all trajectories, including ones from poorly-performing agents. Low-quality trajectories can produce low-quality playbooks and knowledge. The deduplication threshold and confidence model help, but don't solve the garbage-in problem.
617
+ - **Single-machine storage**. Persistence is JSON file-based (experiences, playbooks), Markdown file-based (knowledge), and SQLite (vector store). There's no built-in replication, multi-agent concurrency, or cloud storage.
618
+ - **Extraction is heuristic by default**. Without an LLM extractor configured, both playbook and knowledge extraction use text pattern matching, which produces lower-quality results. LLM-assisted extraction is available via workspace templates.
619
+ - **Knowledge extraction is not auto-wired into the learning pipeline**. Knowledge must be extracted explicitly via `KnowledgeBank.extractFromTrajectory()`. This is by design — it allows callers to control when extraction runs.
620
+
621
+ ## Contributing
622
+
623
+ Contributions welcome. The test suite uses Vitest:
624
+
625
+ ```bash
626
+ npm install
627
+ npm run test:run # run tests once
628
+ npm run test # watch mode
629
+ npm run typecheck # type checking without emit
630
+ ```
361
631
 
362
632
  ## License
363
633