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
@@ -8,6 +8,8 @@ import { createTask } from '../../src/types/task.js';
8
8
  import { createTrajectory } from '../../src/types/trajectory.js';
9
9
  import { createStep } from '../../src/types/step.js';
10
10
  import { successOutcome, failureOutcome } from '../../src/types/outcome.js';
11
+ import { buildTeamTrajectory } from '../../src/types/team-trajectory.js';
12
+ import type { InteractionTag, TeamTrajectoryInput } from '../../src/types/team-trajectory.js';
11
13
  import { MockBackend, createMockBackend } from '../../src/runtime/backends/mock.js';
12
14
  import { mkdtemp, rm } from 'node:fs/promises';
13
15
  import { join } from 'node:path';
@@ -927,3 +929,408 @@ describe('Integration: Playbook Usage Inference', () => {
927
929
  expect(result.injectedPlaybooks).toBeDefined();
928
930
  });
929
931
  });
932
+
933
+ // ============================================================
934
+ // E2E: Graph-based Team Trajectory Learning
935
+ // ============================================================
936
+
937
+ describe('Integration: Graph-based Team Trajectory Learning', () => {
938
+ let tempDir: string;
939
+ let atlas: Atlas;
940
+ let mockBackend: MockBackend;
941
+
942
+ beforeEach(async () => {
943
+ tempDir = await mkdtemp(join(tmpdir(), 'atlas-team-graph-e2e-'));
944
+ mockBackend = createMockBackend({
945
+ success: true,
946
+ result: 'Done',
947
+ durationMs: 30,
948
+ });
949
+
950
+ atlas = createAtlasWithAgents([mockBackend], {
951
+ storage: { baseDir: tempDir },
952
+ teamLearning: {
953
+ enabled: true,
954
+ minTeamTrajectories: 2, // Low threshold for testing
955
+ },
956
+ });
957
+
958
+ await atlas.init();
959
+ });
960
+
961
+ afterEach(async () => {
962
+ await atlas.close();
963
+ await rm(tempDir, { recursive: true, force: true });
964
+ });
965
+
966
+ /**
967
+ * Build a graph-based TeamTrajectory from per-agent trajectories
968
+ * with InteractionTag metadata on steps.
969
+ */
970
+ function makeGraphTeamTrajectory(params: {
971
+ objective: string;
972
+ domain: string;
973
+ success: boolean;
974
+ topologyType?: string;
975
+ }): ReturnType<typeof buildTeamTrajectory> {
976
+ const plannerSteps = [
977
+ createStep({
978
+ thought: 'Analyzing the task and planning delegation',
979
+ action: 'delegate subtask to executor',
980
+ observation: 'Delegated successfully',
981
+ metadata: {
982
+ interactionTag: {
983
+ interactionId: `int-${params.objective}`,
984
+ interactionType: 'delegation',
985
+ counterpartAgentId: 'executor-1',
986
+ stepRole: 'source',
987
+ } satisfies InteractionTag,
988
+ },
989
+ }),
990
+ createStep({
991
+ action: 'read executor result',
992
+ observation: params.success
993
+ ? 'success: executor completed all subtasks'
994
+ : 'error: executor encountered failures',
995
+ }),
996
+ ];
997
+
998
+ const executorSteps = [
999
+ createStep({
1000
+ action: 'receive delegation from planner',
1001
+ observation: 'Received task assignment',
1002
+ metadata: {
1003
+ interactionTag: {
1004
+ interactionId: `int-${params.objective}`,
1005
+ interactionType: 'delegation',
1006
+ counterpartAgentId: 'planner-1',
1007
+ stepRole: 'target',
1008
+ } satisfies InteractionTag,
1009
+ },
1010
+ }),
1011
+ createStep({
1012
+ thought: 'Deciding implementation approach',
1013
+ action: 'decided to implement feature',
1014
+ observation: 'Implementation started',
1015
+ }),
1016
+ createStep({
1017
+ action: 'complete implementation',
1018
+ observation: params.success ? 'completed successfully' : 'failed with error',
1019
+ }),
1020
+ ];
1021
+
1022
+ const input: TeamTrajectoryInput = {
1023
+ objective: params.objective,
1024
+ domain: params.domain,
1025
+ complexity: 'moderate',
1026
+ teamName: 'test-team',
1027
+ templateName: params.topologyType ?? 'hierarchical',
1028
+ topologyType: params.topologyType ?? 'hierarchical',
1029
+ enforcement: 'permissive',
1030
+ memberTrajectories: [
1031
+ {
1032
+ agentId: 'planner-1',
1033
+ role: 'planner',
1034
+ trajectory: createTrajectory({
1035
+ task: createTask({ domain: params.domain, description: `Plan: ${params.objective}` }),
1036
+ steps: plannerSteps,
1037
+ outcome: params.success ? successOutcome('planned') : failureOutcome('planning failed', 0.3),
1038
+ agentId: 'planner-1',
1039
+ totalTokens: 5000,
1040
+ llmCalls: 3,
1041
+ }),
1042
+ },
1043
+ {
1044
+ agentId: 'executor-1',
1045
+ role: 'executor',
1046
+ trajectory: createTrajectory({
1047
+ task: createTask({ domain: params.domain, description: `Execute: ${params.objective}` }),
1048
+ steps: executorSteps,
1049
+ outcome: params.success ? successOutcome('done') : failureOutcome('execution failed', 0.2),
1050
+ agentId: 'executor-1',
1051
+ totalTokens: 15000,
1052
+ llmCalls: 8,
1053
+ }),
1054
+ },
1055
+ ],
1056
+ outcome: {
1057
+ success: params.success,
1058
+ partialScore: params.success ? 1.0 : 0.3,
1059
+ quality: params.success ? 'good' : 'poor',
1060
+ totalLlmCalls: 11,
1061
+ totalTokens: 20000,
1062
+ totalWallTimeSeconds: 60,
1063
+ },
1064
+ expectedPatterns: [{
1065
+ name: 'planner-delegates',
1066
+ fromRole: 'planner',
1067
+ toRole: 'executor',
1068
+ type: 'delegation',
1069
+ frequency: 'once',
1070
+ }],
1071
+ };
1072
+
1073
+ return buildTeamTrajectory(input);
1074
+ }
1075
+
1076
+ it('should process a graph-based team trajectory end-to-end', async () => {
1077
+ const trajectory = makeGraphTeamTrajectory({
1078
+ objective: 'Build authentication module',
1079
+ domain: 'web',
1080
+ success: true,
1081
+ });
1082
+
1083
+ // Verify graph data is present before processing
1084
+ expect(trajectory.members).toHaveLength(2);
1085
+ expect(trajectory.interactions).toBeDefined();
1086
+ expect(trajectory.interactions!.length).toBeGreaterThan(0);
1087
+ expect(trajectory.graphMetrics).toBeDefined();
1088
+
1089
+ // Process through Atlas
1090
+ const result = await atlas.processTeamTrajectory(trajectory);
1091
+
1092
+ expect(result.teamTrajectoryId).toBe(trajectory.id);
1093
+ expect(result.stored).toBe(true);
1094
+ expect(result.analyzed).toBe(true);
1095
+ expect(result.analysis).toBeDefined();
1096
+
1097
+ // Verify analysis used graph data
1098
+ expect(result.analysis!.agentCredits).toHaveLength(2);
1099
+ expect(result.analysis!.interactionCredits.length).toBeGreaterThan(0);
1100
+
1101
+ // Planner should have graph-enriched credit assessment
1102
+ const plannerCredit = result.analysis!.agentCredits.find(c => c.role === 'planner');
1103
+ expect(plannerCredit).toBeDefined();
1104
+ expect(plannerCredit!.contributionScore).toBe(1.0); // Success
1105
+ expect(plannerCredit!.assessment).toContain('steps'); // Graph-based: "completed N steps"
1106
+
1107
+ // Verify team stats updated
1108
+ const stats = await atlas.getStats();
1109
+ expect(stats.learning.teamTrajectoriesProcessed).toBe(1);
1110
+ expect(stats.teamMemory).toBeDefined();
1111
+ expect(stats.teamMemory!.teamExperienceCount).toBe(1);
1112
+ expect(stats.teamMemory!.teamMetaObservationCount).toBeGreaterThanOrEqual(1);
1113
+ });
1114
+
1115
+ it('should accumulate graph trajectories and run batch learning', async () => {
1116
+ // Process enough trajectories to trigger batch (minTeamTrajectories: 2)
1117
+ // The batch auto-triggers during processTeamTrajectory when threshold is reached
1118
+ const trajectories = [
1119
+ makeGraphTeamTrajectory({
1120
+ objective: 'Build user registration',
1121
+ domain: 'web',
1122
+ success: true,
1123
+ }),
1124
+ makeGraphTeamTrajectory({
1125
+ objective: 'Build password reset',
1126
+ domain: 'web',
1127
+ success: true,
1128
+ }),
1129
+ ];
1130
+
1131
+ for (const t of trajectories) {
1132
+ await atlas.processTeamTrajectory(t);
1133
+ }
1134
+
1135
+ // Verify all processed
1136
+ const stats = await atlas.getStats();
1137
+ expect(stats.learning.teamTrajectoriesProcessed).toBe(2);
1138
+ expect(stats.teamMemory!.teamExperienceCount).toBe(2);
1139
+
1140
+ // Batch was auto-triggered at threshold. Check team memory for results.
1141
+ const teamMemory = atlas.getMemory().teamExperiences;
1142
+ const teamPlaybooks = await teamMemory.getTeamPlaybooks();
1143
+ const rolePlaybooks = await teamMemory.getRolePlaybooks();
1144
+
1145
+ // With 2 successful hierarchical/web trajectories, should extract patterns
1146
+ expect(teamPlaybooks.length + rolePlaybooks.length).toBeGreaterThanOrEqual(0);
1147
+ });
1148
+
1149
+ it('should handle mixed success/failure graph trajectories', async () => {
1150
+ const success = makeGraphTeamTrajectory({
1151
+ objective: 'Implement feature A',
1152
+ domain: 'backend',
1153
+ success: true,
1154
+ });
1155
+ const failure = makeGraphTeamTrajectory({
1156
+ objective: 'Implement feature B',
1157
+ domain: 'backend',
1158
+ success: false,
1159
+ });
1160
+
1161
+ const successResult = await atlas.processTeamTrajectory(success);
1162
+ const failureResult = await atlas.processTeamTrajectory(failure);
1163
+
1164
+ // Both should be processed
1165
+ expect(successResult.analyzed).toBe(true);
1166
+ expect(failureResult.analyzed).toBe(true);
1167
+
1168
+ // Failure analysis should reflect the failure
1169
+ const failedCredits = failureResult.analysis!.agentCredits;
1170
+ expect(failedCredits.some(c => c.contributionScore < 1.0)).toBe(true);
1171
+
1172
+ // Team memory should have both
1173
+ const stats = await atlas.getStats();
1174
+ expect(stats.teamMemory!.teamExperienceCount).toBe(2);
1175
+ });
1176
+
1177
+ it('should use graph interactions for richer analysis', async () => {
1178
+ const trajectory = makeGraphTeamTrajectory({
1179
+ objective: 'Build API endpoint',
1180
+ domain: 'backend',
1181
+ success: true,
1182
+ });
1183
+
1184
+ const result = await atlas.processTeamTrajectory(trajectory);
1185
+
1186
+ // Interaction credits should reference the step-level delegation
1187
+ const interactionCredits = result.analysis!.interactionCredits;
1188
+ expect(interactionCredits.length).toBeGreaterThan(0);
1189
+
1190
+ // With graph data, interaction credits should have type info
1191
+ const delegationCredit = interactionCredits.find(
1192
+ ic => ic.reasoning.includes('delegation')
1193
+ );
1194
+ expect(delegationCredit).toBeDefined();
1195
+ expect(delegationCredit!.fromRole).toBe('planner');
1196
+ expect(delegationCredit!.toRole).toBe('executor');
1197
+ });
1198
+
1199
+ it('should generate meta-observations with graph metrics', async () => {
1200
+ const trajectory = makeGraphTeamTrajectory({
1201
+ objective: 'Build dashboard',
1202
+ domain: 'frontend',
1203
+ success: true,
1204
+ });
1205
+
1206
+ await atlas.processTeamTrajectory(trajectory);
1207
+
1208
+ // Check meta-observations were recorded
1209
+ const teamMemory = atlas.getMemory().teamExperiences;
1210
+ const metaObs = await teamMemory.getMetaObservations();
1211
+ expect(metaObs.length).toBeGreaterThanOrEqual(1);
1212
+
1213
+ // The pipeline-generated meta-observation should exist
1214
+ const obs = metaObs[0];
1215
+ expect(obs.formation.wasEffective).toBe(true);
1216
+ expect(obs.formation.topologyUsed).toBe('hierarchical');
1217
+ expect(obs.formation.domain).toBe('frontend');
1218
+ });
1219
+
1220
+ it('should recommend teams after accumulating graph experience', async () => {
1221
+ // Process trajectories to build team memory
1222
+ const trajectories = [
1223
+ makeGraphTeamTrajectory({
1224
+ objective: 'Build auth module',
1225
+ domain: 'web',
1226
+ success: true,
1227
+ topologyType: 'hierarchical',
1228
+ }),
1229
+ makeGraphTeamTrajectory({
1230
+ objective: 'Build user profile',
1231
+ domain: 'web',
1232
+ success: true,
1233
+ topologyType: 'hierarchical',
1234
+ }),
1235
+ ];
1236
+
1237
+ for (const t of trajectories) {
1238
+ await atlas.processTeamTrajectory(t);
1239
+ }
1240
+
1241
+ // Force batch learning to extract playbooks
1242
+ await atlas.runTeamBatchLearning();
1243
+
1244
+ // Now try to recommend a team
1245
+ const recommendation = await atlas.recommendTeam({
1246
+ taskDescription: 'Build payment integration',
1247
+ domain: 'web',
1248
+ complexity: 'moderate',
1249
+ });
1250
+
1251
+ expect(recommendation).toBeDefined();
1252
+ expect(recommendation.confidence).toBeGreaterThanOrEqual(0);
1253
+ expect(recommendation.composition).toBeDefined();
1254
+ expect(recommendation.composition.topology).toBeDefined();
1255
+ expect(recommendation.composition.roles.length).toBeGreaterThanOrEqual(0);
1256
+ });
1257
+
1258
+ it('should process graph trajectory through full pipeline to team playbook extraction', async () => {
1259
+ // Close existing atlas and create new one with higher batch threshold
1260
+ await atlas.close();
1261
+ await rm(tempDir, { recursive: true, force: true });
1262
+
1263
+ tempDir = await mkdtemp(join(tmpdir(), 'atlas-team-graph-e2e-'));
1264
+ atlas = createAtlasWithAgents([mockBackend], {
1265
+ storage: { baseDir: tempDir },
1266
+ teamLearning: {
1267
+ enabled: true,
1268
+ minTeamTrajectories: 10, // High threshold so batch doesn't auto-trigger
1269
+ },
1270
+ });
1271
+ await atlas.init();
1272
+
1273
+ // Need enough similar trajectories for playbook extraction
1274
+ const objectives = [
1275
+ 'Implement login page',
1276
+ 'Implement signup page',
1277
+ 'Implement password reset page',
1278
+ ];
1279
+
1280
+ for (const objective of objectives) {
1281
+ const t = makeGraphTeamTrajectory({
1282
+ objective,
1283
+ domain: 'web',
1284
+ success: true,
1285
+ topologyType: 'hierarchical',
1286
+ });
1287
+ await atlas.processTeamTrajectory(t);
1288
+ }
1289
+
1290
+ // Verify all processed
1291
+ const stats = await atlas.getStats();
1292
+ expect(stats.learning.teamTrajectoriesProcessed).toBe(3);
1293
+
1294
+ // Run batch extraction explicitly (threshold not reached, but we force it)
1295
+ const batchResult = await atlas.runTeamBatchLearning();
1296
+ expect(batchResult).toBeDefined();
1297
+ expect(batchResult!.ready).toBe(true);
1298
+ expect(batchResult!.trajectoriesProcessed).toBe(3);
1299
+
1300
+ // Check team memory for results
1301
+ const teamMemory = atlas.getMemory().teamExperiences;
1302
+ const teamPlaybooks = await teamMemory.getTeamPlaybooks();
1303
+ const rolePlaybooks = await teamMemory.getRolePlaybooks();
1304
+
1305
+ // With 3 successful hierarchical/web trajectories with the same topology,
1306
+ // the heuristic should extract at least 1 team playbook
1307
+ expect(teamPlaybooks.length).toBeGreaterThanOrEqual(1);
1308
+
1309
+ // Verify team playbook has graph-enriched interaction patterns
1310
+ if (teamPlaybooks.length > 0) {
1311
+ const tp = teamPlaybooks[0];
1312
+ expect(tp.composition.topology).toBe('hierarchical');
1313
+ expect(tp.applicability.domains).toContain('web');
1314
+ expect(tp.composition.roles.length).toBeGreaterThanOrEqual(1);
1315
+
1316
+ // Should have interaction patterns extracted from graph data
1317
+ expect(tp.coordination.interactionPatterns.length).toBeGreaterThanOrEqual(0);
1318
+ }
1319
+
1320
+ // With 3 trajectories both roles appear consistently
1321
+ // Role playbooks should be extracted for at least one role
1322
+ if (rolePlaybooks.length > 0) {
1323
+ const roles = rolePlaybooks.map(rp => rp.role);
1324
+ // Either 'planner' or 'executor' should be present
1325
+ expect(roles.some(r => ['planner', 'executor'].includes(r))).toBe(true);
1326
+ }
1327
+
1328
+ // Query team memory to verify searchability
1329
+ const queryResult = await atlas.queryTeamMemory('authentication', {
1330
+ domain: 'web',
1331
+ includeExperiences: true,
1332
+ includePlaybooks: true,
1333
+ });
1334
+ expect(queryResult.experiences.length + queryResult.playbooks.length).toBeGreaterThanOrEqual(0);
1335
+ });
1336
+ });
@@ -0,0 +1,187 @@
1
+ /**
2
+ * End-to-end integration test: SessionBank + EntireTrajectorySource
3
+ * against REAL Entire CLI checkpoint data on the orphan branch.
4
+ *
5
+ * This test reads data captured by the actual Entire CLI v0.4.6
6
+ * (not fixtures) from the `entire/checkpoints/v1` orphan branch.
7
+ */
8
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
9
+ import { SessionBank } from '../../src/session-bank/session-bank';
10
+ import { EntireTrajectorySource } from '../../src/learning/trajectory-sources/entire';
11
+
12
+ describe('Entire CLI E2E Integration', () => {
13
+ let bank: SessionBank;
14
+ let source: EntireTrajectorySource;
15
+
16
+ beforeAll(async () => {
17
+ bank = new SessionBank({
18
+ repoPath: process.cwd(),
19
+ branch: 'entire/checkpoints/v1',
20
+ stateDir: '/tmp/atlas-e2e-test-state',
21
+ cache: true,
22
+ });
23
+
24
+ await bank.init();
25
+ source = new EntireTrajectorySource(bank);
26
+ });
27
+
28
+ afterAll(async () => {
29
+ if (bank) {
30
+ await bank.close();
31
+ }
32
+ });
33
+
34
+ describe('SessionBank against real Entire data', () => {
35
+ it('should detect the orphan branch exists', () => {
36
+ expect(bank.isAvailable()).toBe(true);
37
+ });
38
+
39
+ it('should list checkpoints from real data', async () => {
40
+ const checkpoints = await bank.listCheckpoints();
41
+ expect(checkpoints.length).toBeGreaterThanOrEqual(1);
42
+
43
+ const checkpoint = checkpoints[0];
44
+ expect(checkpoint.checkpointId).toBeTruthy();
45
+ expect(checkpoint.path).toBeTruthy();
46
+ expect(checkpoint.sessionCount).toBeGreaterThanOrEqual(1);
47
+ });
48
+
49
+ it('should discover sessions with metadata', async () => {
50
+ const sessions = await bank.discover();
51
+ expect(sessions.length).toBeGreaterThanOrEqual(1);
52
+
53
+ const session = sessions[0];
54
+ expect(session.sessionId).toBe('test-session-e2e');
55
+ expect(session.metadata.agent).toBe('Claude Code');
56
+ expect(session.metadata.strategy).toBe('manual-commit');
57
+ expect(session.metadata.filesTouched).toContain('src/e2e-test-marker.ts');
58
+ expect(session.metadata.branch).toBe('claude/session-bank-design-41pv3');
59
+ });
60
+
61
+ it('should query sessions and load transcripts', async () => {
62
+ const result = await bank.query();
63
+ expect(result.sessions.length).toBeGreaterThanOrEqual(1);
64
+ expect(result.total).toBeGreaterThanOrEqual(1);
65
+
66
+ const session = result.sessions[0];
67
+ // Transcript should be loaded with actual messages
68
+ expect(session.transcript).toBeDefined();
69
+ expect(session.transcript.length).toBeGreaterThan(0);
70
+
71
+ // Check we have user messages (from "human" type in Entire JSONL)
72
+ const userMessages = session.transcript.filter(
73
+ (m) => m.role === 'user'
74
+ );
75
+ expect(userMessages.length).toBeGreaterThan(0);
76
+
77
+ // Check we have assistant messages
78
+ const assistantMessages = session.transcript.filter(
79
+ (m) => m.role === 'assistant'
80
+ );
81
+ expect(assistantMessages.length).toBeGreaterThan(0);
82
+ });
83
+
84
+ it('should filter sessions by branch', async () => {
85
+ const result = await bank.query({
86
+ branch: 'claude/session-bank-design-41pv3',
87
+ });
88
+ expect(result.sessions.length).toBeGreaterThanOrEqual(1);
89
+
90
+ const noResults = await bank.query({
91
+ branch: 'nonexistent-branch',
92
+ });
93
+ expect(noResults.sessions.length).toBe(0);
94
+ });
95
+
96
+ it('should search across transcript content', async () => {
97
+ const result = await bank.query({
98
+ search: 'hello world',
99
+ });
100
+ expect(result.sessions.length).toBeGreaterThanOrEqual(1);
101
+ });
102
+
103
+ it('should count sessions', async () => {
104
+ const count = await bank.count();
105
+ expect(count).toBeGreaterThanOrEqual(1);
106
+ });
107
+
108
+ it('should find session by ID', async () => {
109
+ const session = await bank.getBySessionId('test-session-e2e');
110
+ expect(session).toBeDefined();
111
+ expect(session!.sessionId).toBe('test-session-e2e');
112
+ });
113
+ });
114
+
115
+ describe('EntireTrajectorySource against real data', () => {
116
+ it('should count available trajectories', async () => {
117
+ const count = await source.count();
118
+ expect(count).toBeGreaterThanOrEqual(1);
119
+ });
120
+
121
+ it('should load and synthesize trajectories from real data', async () => {
122
+ const items = await source.load();
123
+ expect(items.length).toBeGreaterThanOrEqual(1);
124
+
125
+ // load() returns TrajectoryWithAnalysis[]
126
+ const { trajectory } = items[0];
127
+ expect(trajectory.id).toContain('entire-');
128
+ expect(trajectory.task).toBeDefined();
129
+ expect(trajectory.task.description).toBeTruthy();
130
+ expect(trajectory.steps).toBeDefined();
131
+ expect(trajectory.outcome).toBeDefined();
132
+ expect(trajectory.metadata).toBeDefined();
133
+
134
+ // Metadata should have Entire provenance
135
+ expect(trajectory.metadata?.source).toBe('entire');
136
+ expect(trajectory.metadata?.checkpointId).toBeTruthy();
137
+ expect(trajectory.metadata?.sessionId).toBe('test-session-e2e');
138
+ });
139
+
140
+ it('should extract steps from real tool_use blocks', async () => {
141
+ const items = await source.load();
142
+ const { trajectory } = items[0];
143
+
144
+ // Our transcript had a Write tool_use
145
+ const writeStep = trajectory.steps.find(
146
+ (s) => s.action && s.action.includes('Write')
147
+ );
148
+ expect(writeStep).toBeDefined();
149
+ expect(writeStep!.action).toContain('Write');
150
+ });
151
+
152
+ it('should infer domain from files touched', async () => {
153
+ const items = await source.load();
154
+ const { trajectory } = items[0];
155
+
156
+ // Files touched include .ts files, so domain should be typescript
157
+ expect(trajectory.task.domain).toBe('typescript');
158
+ });
159
+
160
+ it('should determine outcome from real data', async () => {
161
+ const items = await source.load();
162
+ const { trajectory } = items[0];
163
+
164
+ expect(trajectory.outcome.success).toBeDefined();
165
+ expect(typeof trajectory.outcome.success).toBe('boolean');
166
+ });
167
+
168
+ it('should produce valid Trajectory shape', async () => {
169
+ const items = await source.load();
170
+ const { trajectory } = items[0];
171
+
172
+ expect(trajectory).toMatchObject({
173
+ id: expect.stringContaining('entire-'),
174
+ task: expect.objectContaining({
175
+ domain: expect.any(String),
176
+ description: expect.any(String),
177
+ }),
178
+ outcome: expect.objectContaining({
179
+ success: expect.any(Boolean),
180
+ }),
181
+ metadata: expect.objectContaining({
182
+ source: 'entire',
183
+ }),
184
+ });
185
+ });
186
+ });
187
+ });