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,177 @@
1
+ /**
2
+ * macro-agent backend adapter.
3
+ *
4
+ * Wraps macro-agent's MacroAgentBackend as a cognitive-core AgentBackend
5
+ * using structural typing — cognitive-core does not import macro-agent.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * import { MacroAgentBackend } from 'macro-agent';
10
+ * import { adaptMacroBackend, createMacroAgentSource } from 'cognitive-core';
11
+ *
12
+ * const macroBackend = new MacroAgentBackend(agentManager);
13
+ * const backend = adaptMacroBackend(macroBackend);
14
+ * atlas.setAgentManager([backend]);
15
+ *
16
+ * // Or register as a ComputeSource:
17
+ * const source = createMacroAgentSource(macroBackend, { costTier: 'medium' });
18
+ * computeProvider.register(source);
19
+ * ```
20
+ */
21
+
22
+ import type {
23
+ AgentBackend,
24
+ AgentSpawnConfig,
25
+ AgentSession,
26
+ AgentMessage,
27
+ ToolCall,
28
+ } from '../types.js';
29
+ import type { ComputeSource, CostTier } from '../compute-provider.js';
30
+ import type { Task } from '../../types/index.js';
31
+
32
+ // ── Structural interface ──────────────────────────────────────
33
+
34
+ /**
35
+ * Structural contract for macro-agent's MacroAgentBackend.
36
+ *
37
+ * Any object matching this shape can be adapted — no import from
38
+ * macro-agent is needed. macro-agent's bridge types (CognitiveAgentSession,
39
+ * CognitiveAgentMessage, CognitiveToolCall) are structurally identical
40
+ * to cognitive-core's canonical types.
41
+ */
42
+ export interface MacroAgentBackendLike {
43
+ readonly name: string;
44
+ readonly supportedTypes: readonly string[];
45
+ isAvailable(): Promise<boolean>;
46
+ spawn(config: {
47
+ agentType: string;
48
+ task: { description: string };
49
+ }): Promise<MacroSessionLike>;
50
+ getSession(sessionId: string): Promise<MacroSessionLike | undefined>;
51
+ terminate(sessionId: string): Promise<void>;
52
+ listSessions(): Promise<MacroSessionLike[]>;
53
+ }
54
+
55
+ /**
56
+ * Structural contract for macro-agent's CognitiveAgentSession.
57
+ */
58
+ export interface MacroSessionLike {
59
+ id: string;
60
+ agentType: string;
61
+ task: { description: string };
62
+ state: string;
63
+ messages: AgentMessage[];
64
+ toolCalls: ToolCall[];
65
+ startTime: Date;
66
+ endTime?: Date;
67
+ result?: unknown;
68
+ error?: string;
69
+ metadata: Record<string, unknown>;
70
+ }
71
+
72
+ // ── Adapter ───────────────────────────────────────────────────
73
+
74
+ /**
75
+ * Adapter that wraps a macro-agent-compatible backend as a cognitive-core
76
+ * AgentBackend.
77
+ *
78
+ * Handles the type gap between macro-agent's CognitiveTask (description-only
79
+ * subset) and cognitive-core's Task (full schema with id, domain, etc.).
80
+ * Since cognitive-core always passes full Task objects through spawn(),
81
+ * the adapter caches them and re-attaches on session retrieval.
82
+ */
83
+ export class MacroAgentBackendAdapter implements AgentBackend {
84
+ readonly name: string;
85
+ readonly supportedTypes: string[];
86
+
87
+ private readonly inner: MacroAgentBackendLike;
88
+ private readonly taskCache = new Map<string, Task>();
89
+
90
+ constructor(backend: MacroAgentBackendLike) {
91
+ this.inner = backend;
92
+ this.name = backend.name;
93
+ this.supportedTypes = [...backend.supportedTypes];
94
+ }
95
+
96
+ async isAvailable(): Promise<boolean> {
97
+ return this.inner.isAvailable();
98
+ }
99
+
100
+ async spawn(config: AgentSpawnConfig): Promise<AgentSession> {
101
+ const session = await this.inner.spawn(config);
102
+ this.taskCache.set(session.id, config.task);
103
+ return this.toAgentSession(session);
104
+ }
105
+
106
+ async getSession(sessionId: string): Promise<AgentSession | undefined> {
107
+ const session = await this.inner.getSession(sessionId);
108
+ if (!session) return undefined;
109
+ return this.toAgentSession(session);
110
+ }
111
+
112
+ async terminate(sessionId: string): Promise<void> {
113
+ return this.inner.terminate(sessionId);
114
+ }
115
+
116
+ async listSessions(): Promise<AgentSession[]> {
117
+ const sessions = await this.inner.listSessions();
118
+ return sessions.map(s => this.toAgentSession(s));
119
+ }
120
+
121
+ private toAgentSession(session: MacroSessionLike): AgentSession {
122
+ const task = this.taskCache.get(session.id);
123
+ return {
124
+ id: session.id,
125
+ agentType: session.agentType,
126
+ // Prefer the cached full Task; fall back to runtime object (which IS
127
+ // a full Task when cognitive-core is the caller, just typed narrowly).
128
+ task: task ?? (session.task as Task),
129
+ state: session.state as AgentSession['state'],
130
+ messages: session.messages,
131
+ toolCalls: session.toolCalls,
132
+ startTime: session.startTime,
133
+ endTime: session.endTime,
134
+ result: session.result,
135
+ error: session.error,
136
+ metadata: session.metadata,
137
+ };
138
+ }
139
+ }
140
+
141
+ // ── Factory helpers ───────────────────────────────────────────
142
+
143
+ /**
144
+ * Adapt a macro-agent MacroAgentBackend for use with cognitive-core.
145
+ *
146
+ * @param backend - Any object matching the MacroAgentBackendLike shape
147
+ * @returns An AgentBackend usable with Atlas.setAgentManager()
148
+ */
149
+ export function adaptMacroBackend(
150
+ backend: MacroAgentBackendLike,
151
+ ): AgentBackend {
152
+ return new MacroAgentBackendAdapter(backend);
153
+ }
154
+
155
+ /**
156
+ * Create a ComputeSource for macro-agent backend registration
157
+ * with DefaultComputeProvider.
158
+ *
159
+ * @param backend - Any object matching the MacroAgentBackendLike shape
160
+ * @param options - Cost tier, location, and priority for compute resolution
161
+ */
162
+ export function createMacroAgentSource(
163
+ backend: MacroAgentBackendLike,
164
+ options?: {
165
+ costTier?: CostTier;
166
+ location?: 'local' | 'remote';
167
+ priority?: number;
168
+ },
169
+ ): ComputeSource {
170
+ return {
171
+ name: backend.name,
172
+ backend: adaptMacroBackend(backend),
173
+ costTier: options?.costTier ?? 'medium',
174
+ location: options?.location ?? 'local',
175
+ priority: options?.priority ?? 50,
176
+ };
177
+ }
@@ -0,0 +1,206 @@
1
+ import type { AgentBackend, AgentSpawnConfig } from './types.js';
2
+ import type { AnalysisComplexity } from '../workspace/types.js';
3
+
4
+ // ============================================================
5
+ // Compute Requirements
6
+ // ============================================================
7
+
8
+ /**
9
+ * Requirements for compute resolution.
10
+ * Templates express preferences; the provider resolves them to concrete backends.
11
+ */
12
+ export interface ComputeRequirements {
13
+ /** Preferred execution location */
14
+ mode?: 'local' | 'remote' | 'any';
15
+ /** Maximum cost budget in cents (for cost-aware routing) */
16
+ maxCostCents?: number;
17
+ /** Required agent capabilities */
18
+ capabilities?: string[];
19
+ /** Timeout hint (provider may select faster backends for short timeouts) */
20
+ timeout?: number;
21
+ /** Complexity hint from template */
22
+ complexity?: AnalysisComplexity;
23
+ }
24
+
25
+ // ============================================================
26
+ // Compute Target
27
+ // ============================================================
28
+
29
+ /**
30
+ * Resolution result: which backend to use and any config overrides.
31
+ */
32
+ export interface ComputeTarget {
33
+ /** The resolved backend */
34
+ backend: AgentBackend;
35
+ /** Config overrides for this resolution (e.g., different timeout, env vars) */
36
+ overrides?: Partial<AgentSpawnConfig>;
37
+ /** Source identifier for logging/metrics */
38
+ source: string;
39
+ }
40
+
41
+ // ============================================================
42
+ // Compute Source
43
+ // ============================================================
44
+
45
+ /** Cost tier for routing decisions */
46
+ export type CostTier = 'free' | 'low' | 'medium' | 'high';
47
+
48
+ /**
49
+ * Registered compute source with metadata.
50
+ */
51
+ export interface ComputeSource {
52
+ /** Unique name for this source */
53
+ name: string;
54
+ /** Underlying backend */
55
+ backend: AgentBackend;
56
+ /** Cost tier for routing decisions */
57
+ costTier: CostTier;
58
+ /** Execution location */
59
+ location: 'local' | 'remote';
60
+ /** Priority (lower = preferred, for tie-breaking) */
61
+ priority: number;
62
+ }
63
+
64
+ // ============================================================
65
+ // ComputeProvider Interface
66
+ // ============================================================
67
+
68
+ /**
69
+ * Resolves agent type + requirements to a concrete compute target.
70
+ *
71
+ * Sits between AgentManager and the raw backend registry.
72
+ * Separates "what agent to run" from "where to run it".
73
+ */
74
+ export interface ComputeProvider {
75
+ /** Resolve an agent execution request to a backend */
76
+ resolve(
77
+ agentType: string,
78
+ requirements?: ComputeRequirements
79
+ ): Promise<ComputeTarget>;
80
+
81
+ /** Register a compute source */
82
+ register(source: ComputeSource): void;
83
+
84
+ /** Remove a compute source */
85
+ unregister(name: string): void;
86
+
87
+ /** List available compute sources */
88
+ listSources(): ComputeSource[];
89
+
90
+ /** Check if any source supports the given agent type */
91
+ supports(agentType: string): boolean;
92
+ }
93
+
94
+ // ============================================================
95
+ // Default Implementation
96
+ // ============================================================
97
+
98
+ const COST_ORDER: Record<CostTier, number> = {
99
+ free: 0,
100
+ low: 1,
101
+ medium: 5,
102
+ high: 20,
103
+ };
104
+
105
+ /**
106
+ * Default compute provider.
107
+ *
108
+ * Resolution strategy:
109
+ * 1. Filter to sources that support the requested agent type
110
+ * 2. Apply mode preference (local/remote) if specified
111
+ * 3. Apply cost budget if specified
112
+ * 4. Check availability in priority order
113
+ * 5. Return first available (or first candidate as fallback)
114
+ */
115
+ export class DefaultComputeProvider implements ComputeProvider {
116
+ private sources: ComputeSource[] = [];
117
+
118
+ register(source: ComputeSource): void {
119
+ // Remove existing source with same name (re-registration)
120
+ this.sources = this.sources.filter(s => s.name !== source.name);
121
+ this.sources.push(source);
122
+ // Keep sorted by priority (lower = preferred)
123
+ this.sources.sort((a, b) => a.priority - b.priority);
124
+ }
125
+
126
+ unregister(name: string): void {
127
+ this.sources = this.sources.filter(s => s.name !== name);
128
+ }
129
+
130
+ listSources(): ComputeSource[] {
131
+ return [...this.sources];
132
+ }
133
+
134
+ supports(agentType: string): boolean {
135
+ return this.sources.some(
136
+ s => s.backend.supportedTypes.includes(agentType)
137
+ );
138
+ }
139
+
140
+ async resolve(
141
+ agentType: string,
142
+ requirements?: ComputeRequirements
143
+ ): Promise<ComputeTarget> {
144
+ // Step 1: Filter to sources that support this agent type
145
+ let candidates = this.sources.filter(
146
+ s => s.backend.supportedTypes.includes(agentType)
147
+ );
148
+
149
+ if (candidates.length === 0) {
150
+ // Fallback: try matching by backend name
151
+ candidates = this.sources.filter(s => s.name === agentType);
152
+ }
153
+
154
+ if (candidates.length === 0) {
155
+ throw new Error(
156
+ `No compute source supports agent type '${agentType}'. ` +
157
+ `Available sources: ${this.sources.map(s => `${s.name}[${s.backend.supportedTypes.join(',')}]`).join(', ') || 'none'}`
158
+ );
159
+ }
160
+
161
+ // Step 2: Apply mode preference
162
+ if (requirements?.mode && requirements.mode !== 'any') {
163
+ const locationFiltered = candidates.filter(
164
+ s => s.location === requirements.mode
165
+ );
166
+ if (locationFiltered.length > 0) {
167
+ candidates = locationFiltered;
168
+ }
169
+ // If no match for preferred mode, fall back to all candidates
170
+ }
171
+
172
+ // Step 3: Apply cost budget
173
+ if (requirements?.maxCostCents !== undefined) {
174
+ const budgetFiltered = candidates.filter(
175
+ s => COST_ORDER[s.costTier] <= requirements.maxCostCents!
176
+ );
177
+ if (budgetFiltered.length > 0) {
178
+ candidates = budgetFiltered;
179
+ }
180
+ // If no match within budget, fall back to all candidates
181
+ }
182
+
183
+ // Step 4: Check availability in priority order
184
+ for (const source of candidates) {
185
+ if (await source.backend.isAvailable()) {
186
+ return {
187
+ backend: source.backend,
188
+ source: source.name,
189
+ };
190
+ }
191
+ }
192
+
193
+ // Step 5: Fallback to first candidate regardless of availability
194
+ return {
195
+ backend: candidates[0].backend,
196
+ source: candidates[0].name,
197
+ };
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Create a DefaultComputeProvider.
203
+ */
204
+ export function createComputeProvider(): DefaultComputeProvider {
205
+ return new DefaultComputeProvider();
206
+ }
@@ -10,6 +10,9 @@ export type {
10
10
  KnowledgeInjector,
11
11
  TrajectoryExtractor,
12
12
  AgentObserverCallbacks,
13
+ AgentDelegate,
14
+ AgentDelegateOptions,
15
+ AgentDelegateResult,
13
16
  } from './types.js';
14
17
 
15
18
  // Manager
@@ -29,13 +32,32 @@ export {
29
32
  MockBackend,
30
33
  createMockBackend,
31
34
  type MockAgentBehavior,
35
+ LocalACPBackend,
32
36
  ACPBackend,
33
37
  createACPBackend,
34
38
  claudeCodeACPConfig,
35
39
  claudeCodeDirectConfig,
36
40
  type ACPAgentConfig,
41
+ ACPProtocolHandler,
42
+ type ACPSessionBase,
43
+ MacroAgentBackendAdapter,
44
+ adaptMacroBackend,
45
+ createMacroAgentSource,
46
+ type MacroAgentBackendLike,
47
+ type MacroSessionLike,
37
48
  } from './backends/index.js';
38
49
 
50
+ // Compute Provider
51
+ export {
52
+ DefaultComputeProvider,
53
+ createComputeProvider,
54
+ type ComputeProvider,
55
+ type ComputeRequirements,
56
+ type ComputeTarget,
57
+ type ComputeSource,
58
+ type CostTier,
59
+ } from './compute-provider.js';
60
+
39
61
  // Flows
40
62
  export {
41
63
  LearningFlow,
@@ -16,7 +16,10 @@ import type {
16
16
  AgentObserverCallbacks,
17
17
  KnowledgeInjector,
18
18
  TrajectoryExtractor,
19
+ AgentDelegate,
19
20
  } from './types.js';
21
+ import type { ComputeProvider, ComputeSource } from './compute-provider.js';
22
+ import { DefaultComputeProvider } from './compute-provider.js';
20
23
 
21
24
  /**
22
25
  * Default knowledge injector - formats memory for context injection
@@ -223,29 +226,47 @@ export class DefaultTrajectoryExtractor implements TrajectoryExtractor {
223
226
  */
224
227
  export class AgentManager {
225
228
  private backends: Map<string, AgentBackend> = new Map();
229
+ private computeProvider: ComputeProvider;
226
230
  private memory: MemorySystem;
227
231
  private injector: KnowledgeInjector;
228
232
  private extractor: TrajectoryExtractor;
229
233
  private observers: AgentObserverCallbacks[] = [];
230
234
  private activeSessions: Map<string, AgentSession> = new Map();
235
+ private delegate?: AgentDelegate;
231
236
 
232
237
  constructor(
233
238
  memory: MemorySystem,
234
239
  options?: {
235
240
  injector?: KnowledgeInjector;
236
241
  extractor?: TrajectoryExtractor;
242
+ computeProvider?: ComputeProvider;
243
+ delegate?: AgentDelegate;
237
244
  }
238
245
  ) {
239
246
  this.memory = memory;
240
247
  this.injector = options?.injector ?? new DefaultKnowledgeInjector();
241
248
  this.extractor = options?.extractor ?? new DefaultTrajectoryExtractor();
249
+ this.computeProvider = options?.computeProvider ?? new DefaultComputeProvider();
250
+ this.delegate = options?.delegate;
242
251
  }
243
252
 
244
253
  /**
245
- * Register an agent backend
254
+ * Register an agent backend.
255
+ * Also registers it as a compute source with the ComputeProvider.
246
256
  */
247
- registerBackend(backend: AgentBackend): void {
257
+ registerBackend(backend: AgentBackend, sourceOptions?: {
258
+ costTier?: ComputeSource['costTier'];
259
+ location?: ComputeSource['location'];
260
+ priority?: number;
261
+ }): void {
248
262
  this.backends.set(backend.name, backend);
263
+ this.computeProvider.register({
264
+ name: backend.name,
265
+ backend,
266
+ costTier: sourceOptions?.costTier ?? 'low',
267
+ location: sourceOptions?.location ?? 'local',
268
+ priority: sourceOptions?.priority ?? 10,
269
+ });
249
270
  }
250
271
 
251
272
  /**
@@ -262,6 +283,13 @@ export class AgentManager {
262
283
  return Array.from(this.backends.keys());
263
284
  }
264
285
 
286
+ /**
287
+ * Get the compute provider for advanced configuration
288
+ */
289
+ getComputeProvider(): ComputeProvider {
290
+ return this.computeProvider;
291
+ }
292
+
265
293
  /**
266
294
  * Add an observer for agent events
267
295
  */
@@ -279,18 +307,48 @@ export class AgentManager {
279
307
  }
280
308
  }
281
309
 
310
+ /**
311
+ * Set a delegate for caller-provided agent execution.
312
+ * When set, all spawn() calls bypass backend resolution and use the delegate.
313
+ */
314
+ setDelegate(delegate: AgentDelegate): void {
315
+ this.delegate = delegate;
316
+ }
317
+
318
+ /**
319
+ * Clear the delegate, reverting to normal backend resolution.
320
+ */
321
+ clearDelegate(): void {
322
+ this.delegate = undefined;
323
+ }
324
+
325
+ /**
326
+ * Get the current delegate, if any.
327
+ */
328
+ getDelegate(): AgentDelegate | undefined {
329
+ return this.delegate;
330
+ }
331
+
282
332
  /**
283
333
  * Spawn an agent to execute a task
284
334
  * This is the main entry point for running agents
285
335
  */
286
336
  async spawn(config: AgentSpawnConfig): Promise<AgentResult> {
287
- // Find appropriate backend
288
- const backend = this.findBackend(config.agentType);
289
- if (!backend) {
290
- throw new Error(
291
- `No backend found for agent type: ${config.agentType}. ` +
292
- `Available backends: ${this.listBackends().join(', ')}`
293
- );
337
+ // Use delegate if available (bypasses backend resolution)
338
+ if (this.delegate) {
339
+ return this.spawnViaDelegate(config);
340
+ }
341
+
342
+ // Resolve compute target via provider
343
+ const target = await this.computeProvider.resolve(
344
+ config.agentType,
345
+ config.computeRequirements,
346
+ );
347
+ const backend = target.backend;
348
+
349
+ // Merge any overrides from compute resolution
350
+ if (target.overrides) {
351
+ config = { ...config, ...target.overrides };
294
352
  }
295
353
 
296
354
  // Query memory for relevant knowledge if not provided
@@ -360,6 +418,96 @@ export class AgentManager {
360
418
  };
361
419
  }
362
420
 
421
+ /**
422
+ * Spawn via caller-provided delegate.
423
+ * Handles knowledge injection, builds trajectory, notifies observers.
424
+ */
425
+ private async spawnViaDelegate(config: AgentSpawnConfig): Promise<AgentResult> {
426
+ const startTime = new Date();
427
+
428
+ // Query memory for relevant knowledge if not provided
429
+ let knowledge = config.injectedKnowledge;
430
+ if (!knowledge) {
431
+ knowledge = await this.memory.queryV2(config.task.description, {
432
+ domains: config.task.domain ? [config.task.domain] : undefined,
433
+ });
434
+ }
435
+
436
+ // Format knowledge for injection
437
+ const formattedKnowledge = this.injector.format(knowledge, 'delegate');
438
+
439
+ // Build system context from prompt additions + formatted knowledge
440
+ const systemContext = [
441
+ config.systemPromptAdditions,
442
+ formattedKnowledge
443
+ ? `\n## Atlas Knowledge\n${formattedKnowledge}`
444
+ : undefined,
445
+ ]
446
+ .filter(Boolean)
447
+ .join('\n\n') || undefined;
448
+
449
+ // Call the delegate
450
+ const result = await this.delegate!.execute(config.task.description, {
451
+ cwd: config.cwd ?? process.cwd(),
452
+ systemContext,
453
+ timeoutMs: config.timeout,
454
+ });
455
+
456
+ const endTime = new Date();
457
+
458
+ // Build trajectory — use delegate's if provided, otherwise build minimal
459
+ const trajectory = result.trajectory ?? createTrajectory({
460
+ task: config.task,
461
+ steps: [
462
+ createStep({
463
+ action: 'delegate_execution',
464
+ observation: result.output,
465
+ }),
466
+ ],
467
+ outcome: result.success
468
+ ? successOutcome(result.structured ?? result.output)
469
+ : failureOutcome(result.output),
470
+ agentId: 'delegate',
471
+ wallTimeSeconds: (endTime.getTime() - startTime.getTime()) / 1000,
472
+ });
473
+
474
+ // Build session for observer compatibility
475
+ const session: AgentSession = {
476
+ id: crypto.randomUUID(),
477
+ agentType: 'delegate',
478
+ task: config.task,
479
+ state: result.success ? 'completed' : 'failed',
480
+ messages: [
481
+ {
482
+ role: 'assistant',
483
+ content: result.output,
484
+ timestamp: endTime,
485
+ },
486
+ ],
487
+ toolCalls: [],
488
+ startTime,
489
+ endTime,
490
+ result: result.structured ?? result.output,
491
+ error: result.success ? undefined : result.output,
492
+ metadata: {},
493
+ };
494
+
495
+ // Notify observers
496
+ this.notifySessionStart(session);
497
+ this.notifySessionEnd(session, trajectory);
498
+
499
+ return {
500
+ session,
501
+ trajectory,
502
+ success: result.success,
503
+ metrics: {
504
+ totalTime: endTime.getTime() - startTime.getTime(),
505
+ toolCallCount: 0,
506
+ messageCount: 1,
507
+ },
508
+ };
509
+ }
510
+
363
511
  /**
364
512
  * Spawn an agent WITHOUT knowledge injection (for baseline/control)
365
513
  */
@@ -435,9 +583,14 @@ export class AgentManager {
435
583
  const session = this.activeSessions.get(sessionId);
436
584
  if (!session) return;
437
585
 
438
- const backend = this.findBackend(session.agentType);
439
- if (backend?.terminate) {
440
- await backend.terminate(sessionId);
586
+ // Resolve backend for this agent type (best-effort, ignore errors)
587
+ try {
588
+ const target = await this.computeProvider.resolve(session.agentType);
589
+ if (target.backend.terminate) {
590
+ await target.backend.terminate(sessionId);
591
+ }
592
+ } catch {
593
+ // Backend may no longer be registered; still clean up session
441
594
  }
442
595
 
443
596
  this.activeSessions.delete(sessionId);
@@ -468,17 +621,6 @@ export class AgentManager {
468
621
 
469
622
  // Private helpers
470
623
 
471
- private findBackend(agentType: string): AgentBackend | undefined {
472
- // First try exact match
473
- for (const backend of this.backends.values()) {
474
- if (backend.supportedTypes.includes(agentType)) {
475
- return backend;
476
- }
477
- }
478
- // Then try by backend name
479
- return this.backends.get(agentType);
480
- }
481
-
482
624
  private async waitForCompletion(
483
625
  backend: AgentBackend,
484
626
  sessionId: string
@@ -535,6 +677,8 @@ export function createAgentManager(
535
677
  options?: {
536
678
  injector?: KnowledgeInjector;
537
679
  extractor?: TrajectoryExtractor;
680
+ computeProvider?: ComputeProvider;
681
+ delegate?: AgentDelegate;
538
682
  }
539
683
  ): AgentManager {
540
684
  return new AgentManager(memory, options);