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
@@ -0,0 +1,35 @@
1
+ import type { KnowledgeNote } from '../types/knowledge.js';
2
+
3
+ /**
4
+ * Result from a SearchProvider — maps a note ID to a relevance score.
5
+ */
6
+ export interface SearchProviderResult {
7
+ noteId: string;
8
+ score: number;
9
+ }
10
+
11
+ /**
12
+ * Strategy interface for searching knowledge notes.
13
+ *
14
+ * Implementations receive pre-filtered candidate notes and return
15
+ * scored results. This allows swapping between text-based similarity
16
+ * (default) and external search backends (e.g., minimem).
17
+ */
18
+ export interface SearchProvider {
19
+ /** Human-readable name for diagnostics / logging. */
20
+ readonly name: string;
21
+
22
+ /**
23
+ * Search pre-filtered candidates and return scored results.
24
+ *
25
+ * @param query - The search query string.
26
+ * @param candidates - Pre-filtered KnowledgeNote array (already domain/stale-filtered).
27
+ * @param options - Additional options like maxResults.
28
+ * @returns Scored results sorted by descending score.
29
+ */
30
+ search(
31
+ query: string,
32
+ candidates: KnowledgeNote[],
33
+ options?: { maxResults?: number }
34
+ ): SearchProviderResult[] | Promise<SearchProviderResult[]>;
35
+ }
@@ -0,0 +1,3 @@
1
+ export { TextSimilaritySearchProvider } from './text-similarity.js';
2
+ export { MinimemSearchProvider, type MinimemSearchClient } from './minimem.js';
3
+
@@ -0,0 +1,84 @@
1
+ import type { KnowledgeNote } from '../../types/knowledge.js';
2
+ import type { SearchProvider, SearchProviderResult } from '../search-provider.js';
3
+
4
+ /**
5
+ * Subset of the minimem search API that MinimemSearchProvider depends on.
6
+ * Structurally compatible with the Minimem class from the minimem package.
7
+ *
8
+ * Kept as a narrow interface (rather than importing Minimem directly) so
9
+ * tests can inject a lightweight mock without instantiating a full Minimem.
10
+ */
11
+ export interface MinimemSearchClient {
12
+ search(query: string, options?: { maxResults?: number; minScore?: number }): Promise<
13
+ Array<{
14
+ path: string;
15
+ startLine: number;
16
+ endLine: number;
17
+ score: number;
18
+ snippet: string;
19
+ }>
20
+ >;
21
+ }
22
+
23
+ /**
24
+ * Search provider that delegates to a minimem instance.
25
+ *
26
+ * Maps minimem search results (which return file paths) back to
27
+ * KnowledgeNote IDs by matching against the candidate set.
28
+ *
29
+ * Falls back to returning an empty array on any error so that
30
+ * the KnowledgeBank can gracefully degrade.
31
+ */
32
+ export class MinimemSearchProvider implements SearchProvider {
33
+ readonly name = 'minimem';
34
+
35
+ constructor(private readonly client: MinimemSearchClient) {}
36
+
37
+ /**
38
+ * Async search via minimem client.
39
+ * Maps minimem results back to note IDs from the candidate set.
40
+ */
41
+ async search(
42
+ query: string,
43
+ candidates: KnowledgeNote[],
44
+ options?: { maxResults?: number }
45
+ ): Promise<SearchProviderResult[]> {
46
+ try {
47
+ const maxResults = options?.maxResults ?? 10;
48
+ const minimemResults = await this.client.search(query, { maxResults });
49
+
50
+ // Build a lookup: normalize paths to match against candidate filePaths
51
+ const noteByPath = new Map<string, KnowledgeNote>();
52
+ for (const note of candidates) {
53
+ // Match on the full filePath or just the filename
54
+ noteByPath.set(note.filePath, note);
55
+ const filename = note.filePath.split('/').pop();
56
+ if (filename) {
57
+ noteByPath.set(filename, note);
58
+ }
59
+ }
60
+
61
+ const results: SearchProviderResult[] = [];
62
+ for (const mr of minimemResults) {
63
+ // Try matching by full path, then by filename portion
64
+ const pathParts = mr.path.split('/');
65
+ const filename = pathParts.pop();
66
+ const note =
67
+ noteByPath.get(mr.path) ||
68
+ (filename ? noteByPath.get(filename) : undefined);
69
+
70
+ if (note) {
71
+ results.push({
72
+ noteId: note.frontmatter.id,
73
+ score: mr.score,
74
+ });
75
+ }
76
+ }
77
+
78
+ return results;
79
+ } catch {
80
+ // Gracefully degrade: return empty on any error
81
+ return [];
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,35 @@
1
+ import type { KnowledgeNote } from '../../types/knowledge.js';
2
+ import type { SearchProvider, SearchProviderResult } from '../search-provider.js';
3
+ import { findTopK } from '../../utils/similarity.js';
4
+
5
+ /**
6
+ * Default search provider using Jaccard + n-gram text similarity.
7
+ *
8
+ * This is the original search logic extracted from KnowledgeBank.search().
9
+ * Scores each candidate note against the query using `findTopK()`.
10
+ */
11
+ export class TextSimilaritySearchProvider implements SearchProvider {
12
+ readonly name = 'text-similarity';
13
+
14
+ search(
15
+ query: string,
16
+ candidates: KnowledgeNote[],
17
+ options?: { maxResults?: number }
18
+ ): SearchProviderResult[] {
19
+ const maxResults = options?.maxResults ?? 10;
20
+
21
+ const results = findTopK<KnowledgeNote>(
22
+ query,
23
+ candidates,
24
+ (note) => `${note.frontmatter.id} ${note.body}`,
25
+ maxResults
26
+ );
27
+
28
+ return results
29
+ .filter((r) => r.score > 0)
30
+ .map((r) => ({
31
+ noteId: r.item.frontmatter.id,
32
+ score: r.score,
33
+ }));
34
+ }
35
+ }
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Skill Exporter - Compile playbooks into the Open Agent Skills format
3
+ *
4
+ * Playbooks are the source of truth (rich, evolving, learned from experience).
5
+ * SKILL.md files are the compiled distribution artifact — portable across 25+
6
+ * agent platforms (Claude Code, Codex CLI, GitHub Copilot, Cursor, etc.).
7
+ *
8
+ * The export preserves playbook-specific knowledge (anti-patterns, refinements,
9
+ * verification) in the Markdown body, while mapping core fields to the standard
10
+ * YAML frontmatter schema.
11
+ */
12
+
13
+ import { mkdir, writeFile } from 'node:fs/promises';
14
+ import { join } from 'node:path';
15
+ import { existsSync } from 'node:fs';
16
+ import type { Playbook } from '../types/index.js';
17
+ import { getPlaybookSuccessRate, hasReliableStats } from '../types/index.js';
18
+ import type { PlaybookLibrary } from './playbook.js';
19
+
20
+ /**
21
+ * Options for filtering which playbooks to export
22
+ */
23
+ export interface SkillExportFilter {
24
+ /** Minimum confidence to include (default: 0.5) */
25
+ minConfidence?: number;
26
+ /** Only include playbooks with at least this many total uses */
27
+ minUses?: number;
28
+ /** Only include playbooks from these domains */
29
+ domains?: string[];
30
+ /** Only include playbooks with these origins */
31
+ origins?: Array<'extracted' | 'curated' | 'imported' | 'manual'>;
32
+ }
33
+
34
+ /**
35
+ * Options for how the SKILL.md is generated
36
+ */
37
+ export interface SkillExportOptions {
38
+ /** Include evolution stats (confidence, success rate) in metadata */
39
+ includeStats?: boolean;
40
+ /** Include refinements section in the body */
41
+ includeRefinements?: boolean;
42
+ /** Include anti-patterns as a "When NOT to use" section */
43
+ includeAntiPatterns?: boolean;
44
+ /** Include verification section */
45
+ includeVerification?: boolean;
46
+ /** Custom metadata fields to add to frontmatter */
47
+ extraMetadata?: Record<string, string>;
48
+ }
49
+
50
+ const DEFAULT_OPTIONS: Required<SkillExportOptions> = {
51
+ includeStats: true,
52
+ includeRefinements: true,
53
+ includeAntiPatterns: true,
54
+ includeVerification: true,
55
+ extraMetadata: {},
56
+ };
57
+
58
+ /**
59
+ * Result of an export operation
60
+ */
61
+ export interface SkillExportResult {
62
+ exported: number;
63
+ skipped: number;
64
+ errors: Array<{ playbook: string; error: string }>;
65
+ skills: ExportedSkill[];
66
+ }
67
+
68
+ /**
69
+ * A single exported skill (before writing to disk)
70
+ */
71
+ export interface ExportedSkill {
72
+ name: string;
73
+ dirName: string;
74
+ content: string;
75
+ sourcePlaybookId: string;
76
+ }
77
+
78
+ /**
79
+ * Compile a single playbook into SKILL.md content
80
+ */
81
+ export function compilePlaybookToSkill(
82
+ playbook: Playbook,
83
+ options?: SkillExportOptions
84
+ ): string {
85
+ const opts = { ...DEFAULT_OPTIONS, ...options };
86
+ const sections: string[] = [];
87
+
88
+ // === YAML Frontmatter ===
89
+ sections.push('---');
90
+ sections.push(`name: ${playbook.name}`);
91
+ sections.push(`description: >-`);
92
+ sections.push(` ${buildDescription(playbook)}`);
93
+
94
+ // Metadata block
95
+ const metadata: Record<string, string> = {
96
+ version: playbook.evolution.version,
97
+ complexity: playbook.complexity,
98
+ ...opts.extraMetadata,
99
+ };
100
+
101
+ if (playbook.provenance?.origin) {
102
+ metadata['origin'] = playbook.provenance.origin;
103
+ }
104
+ if (playbook.provenance?.curatedBy) {
105
+ metadata['author'] = playbook.provenance.curatedBy;
106
+ }
107
+ if (opts.includeStats) {
108
+ metadata['confidence'] = playbook.confidence.toFixed(2);
109
+ if (hasReliableStats(playbook)) {
110
+ metadata['success-rate'] = getPlaybookSuccessRate(playbook).toFixed(2);
111
+ }
112
+ }
113
+
114
+ sections.push('metadata:');
115
+ for (const [key, value] of Object.entries(metadata)) {
116
+ sections.push(` ${key}: "${value}"`);
117
+ }
118
+
119
+ // Compatibility — express domains as environment context
120
+ if (playbook.applicability.domains.length > 0) {
121
+ sections.push(
122
+ `compatibility: Applicable to ${playbook.applicability.domains.join(', ')} projects`
123
+ );
124
+ }
125
+
126
+ sections.push('---');
127
+ sections.push('');
128
+
129
+ // === Markdown Body ===
130
+
131
+ // Strategy (the core guidance)
132
+ sections.push(`## Strategy`);
133
+ sections.push('');
134
+ sections.push(playbook.guidance.strategy);
135
+ sections.push('');
136
+
137
+ // Tactics
138
+ if (playbook.guidance.tactics.length > 0) {
139
+ sections.push('## Tactics');
140
+ sections.push('');
141
+ for (const tactic of playbook.guidance.tactics) {
142
+ sections.push(`- ${tactic}`);
143
+ }
144
+ sections.push('');
145
+ }
146
+
147
+ // Concrete steps
148
+ if (playbook.guidance.steps && playbook.guidance.steps.length > 0) {
149
+ sections.push('## Steps');
150
+ sections.push('');
151
+ for (let i = 0; i < playbook.guidance.steps.length; i++) {
152
+ sections.push(`${i + 1}. ${playbook.guidance.steps[i]}`);
153
+ }
154
+ sections.push('');
155
+ }
156
+
157
+ // Code example
158
+ if (playbook.guidance.codeExample) {
159
+ sections.push('## Example');
160
+ sections.push('');
161
+ sections.push('```');
162
+ sections.push(playbook.guidance.codeExample);
163
+ sections.push('```');
164
+ sections.push('');
165
+ }
166
+
167
+ // Anti-patterns — "when NOT to use this"
168
+ if (opts.includeAntiPatterns && playbook.applicability.antiPatterns.length > 0) {
169
+ sections.push('## When NOT to use this');
170
+ sections.push('');
171
+ for (const ap of playbook.applicability.antiPatterns) {
172
+ sections.push(`- ${ap}`);
173
+ }
174
+ sections.push('');
175
+ }
176
+
177
+ // Triggers — concrete signals that this skill applies
178
+ if (playbook.applicability.triggers.length > 0) {
179
+ sections.push('## Triggers');
180
+ sections.push('');
181
+ sections.push(
182
+ 'This skill applies when you encounter any of the following:'
183
+ );
184
+ sections.push('');
185
+ for (const trigger of playbook.applicability.triggers) {
186
+ sections.push(`- ${trigger}`);
187
+ }
188
+ sections.push('');
189
+ }
190
+
191
+ // Verification
192
+ if (opts.includeVerification) {
193
+ const { successIndicators, failureIndicators, rollbackStrategy } =
194
+ playbook.verification;
195
+ if (successIndicators.length > 0 || failureIndicators.length > 0) {
196
+ sections.push('## Verification');
197
+ sections.push('');
198
+ if (successIndicators.length > 0) {
199
+ sections.push('**Success looks like:**');
200
+ for (const si of successIndicators) {
201
+ sections.push(`- ${si}`);
202
+ }
203
+ sections.push('');
204
+ }
205
+ if (failureIndicators.length > 0) {
206
+ sections.push('**Failure looks like:**');
207
+ for (const fi of failureIndicators) {
208
+ sections.push(`- ${fi}`);
209
+ }
210
+ sections.push('');
211
+ }
212
+ if (rollbackStrategy) {
213
+ sections.push(`**Rollback:** ${rollbackStrategy}`);
214
+ sections.push('');
215
+ }
216
+ }
217
+ }
218
+
219
+ // Refinements — context-specific notes learned from experience
220
+ if (opts.includeRefinements && playbook.evolution.refinements.length > 0) {
221
+ sections.push('## Context-specific notes');
222
+ sections.push('');
223
+ for (const ref of playbook.evolution.refinements) {
224
+ sections.push(`- **${ref.context}:** ${ref.addition}`);
225
+ }
226
+ sections.push('');
227
+ }
228
+
229
+ return sections.join('\n');
230
+ }
231
+
232
+ /**
233
+ * Build the description field from playbook applicability.
234
+ * The description is critical for skill discovery — agents use it to
235
+ * decide whether to load the skill.
236
+ */
237
+ function buildDescription(playbook: Playbook): string {
238
+ const parts = [
239
+ ...playbook.applicability.situations,
240
+ ...playbook.applicability.triggers.slice(0, 2),
241
+ ];
242
+ const desc = parts.join('. ');
243
+ const domains = playbook.applicability.domains.join(', ');
244
+ // YAML multiline: use >- for long descriptions
245
+ const full = `${desc}. Domains: ${domains}.`;
246
+ // Truncate to 1024 chars per spec
247
+ if (full.length > 1024) {
248
+ return full.slice(0, 1021) + '...';
249
+ }
250
+ return full;
251
+ }
252
+
253
+ /**
254
+ * Export playbooks from a library to a directory of SKILL.md files
255
+ */
256
+ export async function exportPlaybooksAsSkills(
257
+ library: PlaybookLibrary,
258
+ outputDir: string,
259
+ filter?: SkillExportFilter,
260
+ options?: SkillExportOptions
261
+ ): Promise<SkillExportResult> {
262
+ const result: SkillExportResult = {
263
+ exported: 0,
264
+ skipped: 0,
265
+ errors: [],
266
+ skills: [],
267
+ };
268
+
269
+ let playbooks = await library.getAll();
270
+
271
+ // Apply filters
272
+ if (filter?.minConfidence !== undefined) {
273
+ playbooks = playbooks.filter((p) => p.confidence >= filter.minConfidence!);
274
+ }
275
+ if (filter?.minUses !== undefined) {
276
+ playbooks = playbooks.filter(
277
+ (p) =>
278
+ p.evolution.successCount + p.evolution.failureCount >= filter.minUses!
279
+ );
280
+ }
281
+ if (filter?.domains && filter.domains.length > 0) {
282
+ playbooks = playbooks.filter((p) =>
283
+ p.applicability.domains.some((d) => filter.domains!.includes(d))
284
+ );
285
+ }
286
+ if (filter?.origins && filter.origins.length > 0) {
287
+ playbooks = playbooks.filter(
288
+ (p) =>
289
+ p.provenance?.origin !== undefined &&
290
+ filter.origins!.includes(p.provenance.origin)
291
+ );
292
+ }
293
+
294
+ // Ensure output directory exists
295
+ if (!existsSync(outputDir)) {
296
+ await mkdir(outputDir, { recursive: true });
297
+ }
298
+
299
+ for (const playbook of playbooks) {
300
+ try {
301
+ const content = compilePlaybookToSkill(playbook, options);
302
+ const dirName = playbook.name;
303
+ const skillDir = join(outputDir, dirName);
304
+
305
+ // Create skill directory
306
+ if (!existsSync(skillDir)) {
307
+ await mkdir(skillDir, { recursive: true });
308
+ }
309
+
310
+ // Write SKILL.md
311
+ await writeFile(join(skillDir, 'SKILL.md'), content, 'utf-8');
312
+
313
+ const skill: ExportedSkill = {
314
+ name: playbook.name,
315
+ dirName,
316
+ content,
317
+ sourcePlaybookId: playbook.id,
318
+ };
319
+
320
+ result.skills.push(skill);
321
+ result.exported++;
322
+ } catch (error) {
323
+ result.errors.push({
324
+ playbook: playbook.name,
325
+ error: error instanceof Error ? error.message : String(error),
326
+ });
327
+ }
328
+ }
329
+
330
+ return result;
331
+ }
332
+
333
+ /**
334
+ * Export a single playbook to a SKILL.md file
335
+ */
336
+ export async function exportPlaybookAsSkill(
337
+ playbook: Playbook,
338
+ outputDir: string,
339
+ options?: SkillExportOptions
340
+ ): Promise<ExportedSkill> {
341
+ const content = compilePlaybookToSkill(playbook, options);
342
+ const dirName = playbook.name;
343
+ const skillDir = join(outputDir, dirName);
344
+
345
+ if (!existsSync(skillDir)) {
346
+ await mkdir(skillDir, { recursive: true });
347
+ }
348
+
349
+ await writeFile(join(skillDir, 'SKILL.md'), content, 'utf-8');
350
+
351
+ return {
352
+ name: playbook.name,
353
+ dirName,
354
+ content,
355
+ sourcePlaybookId: playbook.id,
356
+ };
357
+ }
@@ -10,15 +10,23 @@ import type {
10
10
  MemoryConfig,
11
11
  MemoryCapacityConfig,
12
12
  Trajectory,
13
+ TeamTrajectory,
14
+ KnowledgeBankConfig,
13
15
  } from '../types/index.js';
14
16
  import { createExperience } from '../types/index.js';
15
17
  import { ExperienceMemory, type PruneResult } from './experience.js';
16
18
  import { PlaybookLibrary, type PlaybookMatch } from './playbook.js';
17
19
  import { MetaMemory } from './meta.js';
20
+ import {
21
+ TeamExperienceMemory,
22
+ type TeamExperience,
23
+ } from './team-experience.js';
18
24
  import {
19
25
  LearningEffectivenessTracker,
20
26
  type EffectivenessMetrics,
21
27
  } from '../learning/effectiveness.js';
28
+ import { KnowledgeBank } from './knowledge-bank.js';
29
+ import { join } from 'node:path';
22
30
 
23
31
  /**
24
32
  * Default capacity configuration
@@ -64,6 +72,8 @@ export class MemorySystem {
64
72
  public readonly playbooks: PlaybookLibrary;
65
73
  public readonly meta: MetaMemory;
66
74
  public readonly effectiveness: LearningEffectivenessTracker;
75
+ public readonly teamExperiences: TeamExperienceMemory;
76
+ public readonly knowledgeBank: KnowledgeBank | null;
67
77
 
68
78
  private config: MemoryConfig;
69
79
  private capacityConfig: MemoryCapacityConfig;
@@ -71,7 +81,11 @@ export class MemorySystem {
71
81
  private lastCapacityCheck = 0;
72
82
  private capacityCheckInterval = 60000; // Check every minute
73
83
 
74
- constructor(baseDir: string, config?: Partial<MemoryConfig>) {
84
+ constructor(
85
+ baseDir: string,
86
+ config?: Partial<MemoryConfig>,
87
+ knowledgeBankConfig?: KnowledgeBankConfig
88
+ ) {
75
89
  this.config = {
76
90
  maxExperiences: config?.maxExperiences ?? 4,
77
91
  maxStrategies: config?.maxStrategies ?? 3,
@@ -87,6 +101,15 @@ export class MemorySystem {
87
101
  this.playbooks = new PlaybookLibrary(baseDir);
88
102
  this.meta = new MetaMemory(baseDir);
89
103
  this.effectiveness = new LearningEffectivenessTracker(baseDir);
104
+ this.teamExperiences = new TeamExperienceMemory(baseDir);
105
+
106
+ // Initialize knowledge bank if enabled
107
+ if (knowledgeBankConfig?.enabled) {
108
+ const memoryDir = join(baseDir, knowledgeBankConfig.memoryDir ?? 'memory');
109
+ this.knowledgeBank = new KnowledgeBank(memoryDir, knowledgeBankConfig);
110
+ } else {
111
+ this.knowledgeBank = null;
112
+ }
90
113
  }
91
114
 
92
115
  /**
@@ -95,12 +118,17 @@ export class MemorySystem {
95
118
  async init(): Promise<void> {
96
119
  if (this.initialized) return;
97
120
 
98
- await Promise.all([
121
+ const initPromises: Promise<void>[] = [
99
122
  this.experiences.init(),
100
123
  this.playbooks.init(),
101
124
  this.meta.init(),
102
125
  this.effectiveness.init(),
103
- ]);
126
+ this.teamExperiences.init(),
127
+ ];
128
+ if (this.knowledgeBank) {
129
+ initPromises.push(this.knowledgeBank.init());
130
+ }
131
+ await Promise.all(initPromises);
104
132
 
105
133
  this.initialized = true;
106
134
  }
@@ -368,14 +396,19 @@ export class MemorySystem {
368
396
  playbookCount: number;
369
397
  metaObservationCount: number;
370
398
  annotationCount: number;
399
+ teamExperienceCount: number;
400
+ teamPlaybookCount: number;
401
+ rolePlaybookCount: number;
402
+ teamMetaObservationCount: number;
371
403
  }> {
372
404
  await this.init();
373
405
 
374
- const [experienceCount, playbookCount, metaStats, annotationCount] = await Promise.all([
406
+ const [experienceCount, playbookCount, metaStats, annotationCount, teamStats] = await Promise.all([
375
407
  this.experiences.count(),
376
408
  this.playbooks.count(),
377
409
  this.meta.getStats(),
378
410
  this.effectiveness.count(),
411
+ this.teamExperiences.getStats(),
379
412
  ]);
380
413
 
381
414
  return {
@@ -383,6 +416,10 @@ export class MemorySystem {
383
416
  playbookCount,
384
417
  metaObservationCount: metaStats.totalObservations,
385
418
  annotationCount,
419
+ teamExperienceCount: teamStats.teamExperienceCount,
420
+ teamPlaybookCount: teamStats.teamPlaybookCount,
421
+ rolePlaybookCount: teamStats.rolePlaybookCount,
422
+ teamMetaObservationCount: teamStats.metaObservationCount,
386
423
  };
387
424
  }
388
425
 
@@ -530,13 +567,28 @@ export class MemorySystem {
530
567
  /**
531
568
  * Close all stores
532
569
  */
570
+ /**
571
+ * Store a team trajectory and create a team experience
572
+ */
573
+ async storeTeamTrajectory(trajectory: TeamTrajectory): Promise<TeamExperience> {
574
+ await this.init();
575
+ return this.teamExperiences.storeTeamExperience({
576
+ teamTrajectory: trajectory,
577
+ });
578
+ }
579
+
533
580
  async close(): Promise<void> {
534
- await Promise.all([
581
+ const closePromises: Promise<void>[] = [
535
582
  this.experiences.close(),
536
583
  this.playbooks.close(),
537
584
  this.meta.close(),
538
585
  this.effectiveness.close(),
539
- ]);
586
+ this.teamExperiences.close(),
587
+ ];
588
+ if (this.knowledgeBank) {
589
+ closePromises.push(this.knowledgeBank.close());
590
+ }
591
+ await Promise.all(closePromises);
540
592
  }
541
593
  }
542
594
 
@@ -545,7 +597,8 @@ export class MemorySystem {
545
597
  */
546
598
  export function createMemorySystem(
547
599
  baseDir: string,
548
- config?: Partial<MemoryConfig>
600
+ config?: Partial<MemoryConfig>,
601
+ knowledgeBankConfig?: KnowledgeBankConfig
549
602
  ): MemorySystem {
550
- return new MemorySystem(baseDir, config);
603
+ return new MemorySystem(baseDir, config, knowledgeBankConfig);
551
604
  }