@soleri/core 2.12.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/data/flows/build.flow.yaml +128 -0
  2. package/data/flows/deliver.flow.yaml +110 -0
  3. package/data/flows/design.flow.yaml +108 -0
  4. package/data/flows/enhance.flow.yaml +90 -0
  5. package/data/flows/explore.flow.yaml +84 -0
  6. package/data/flows/fix.flow.yaml +90 -0
  7. package/data/flows/plan.flow.yaml +87 -0
  8. package/data/flows/review.flow.yaml +90 -0
  9. package/dist/agency/agency-manager.d.ts +27 -1
  10. package/dist/agency/agency-manager.d.ts.map +1 -1
  11. package/dist/agency/agency-manager.js +180 -9
  12. package/dist/agency/agency-manager.js.map +1 -1
  13. package/dist/agency/default-rules.d.ts +7 -0
  14. package/dist/agency/default-rules.d.ts.map +1 -0
  15. package/dist/agency/default-rules.js +79 -0
  16. package/dist/agency/default-rules.js.map +1 -0
  17. package/dist/agency/types.d.ts +48 -0
  18. package/dist/agency/types.d.ts.map +1 -1
  19. package/dist/brain/brain.d.ts +17 -2
  20. package/dist/brain/brain.d.ts.map +1 -1
  21. package/dist/brain/brain.js +118 -8
  22. package/dist/brain/brain.js.map +1 -1
  23. package/dist/brain/intelligence.d.ts.map +1 -1
  24. package/dist/brain/intelligence.js +16 -2
  25. package/dist/brain/intelligence.js.map +1 -1
  26. package/dist/brain/knowledge-synthesizer.d.ts +37 -0
  27. package/dist/brain/knowledge-synthesizer.d.ts.map +1 -0
  28. package/dist/brain/knowledge-synthesizer.js +161 -0
  29. package/dist/brain/knowledge-synthesizer.js.map +1 -0
  30. package/dist/brain/learning-radar.d.ts +96 -0
  31. package/dist/brain/learning-radar.d.ts.map +1 -0
  32. package/dist/brain/learning-radar.js +202 -0
  33. package/dist/brain/learning-radar.js.map +1 -0
  34. package/dist/brain/types.d.ts +15 -0
  35. package/dist/brain/types.d.ts.map +1 -1
  36. package/dist/capabilities/chain-mapping.d.ts +21 -0
  37. package/dist/capabilities/chain-mapping.d.ts.map +1 -0
  38. package/dist/capabilities/chain-mapping.js +86 -0
  39. package/dist/capabilities/chain-mapping.js.map +1 -0
  40. package/dist/capabilities/index.d.ts +10 -0
  41. package/dist/capabilities/index.d.ts.map +1 -0
  42. package/dist/capabilities/index.js +8 -0
  43. package/dist/capabilities/index.js.map +1 -0
  44. package/dist/capabilities/registry.d.ts +95 -0
  45. package/dist/capabilities/registry.d.ts.map +1 -0
  46. package/dist/capabilities/registry.js +227 -0
  47. package/dist/capabilities/registry.js.map +1 -0
  48. package/dist/capabilities/types.d.ts +106 -0
  49. package/dist/capabilities/types.d.ts.map +1 -0
  50. package/dist/capabilities/types.js +12 -0
  51. package/dist/capabilities/types.js.map +1 -0
  52. package/dist/context/context-engine.d.ts.map +1 -1
  53. package/dist/context/context-engine.js +82 -17
  54. package/dist/context/context-engine.js.map +1 -1
  55. package/dist/context/types.d.ts +5 -0
  56. package/dist/context/types.d.ts.map +1 -1
  57. package/dist/control/intent-router.d.ts +12 -1
  58. package/dist/control/intent-router.d.ts.map +1 -1
  59. package/dist/control/intent-router.js +126 -2
  60. package/dist/control/intent-router.js.map +1 -1
  61. package/dist/control/types.d.ts +17 -0
  62. package/dist/control/types.d.ts.map +1 -1
  63. package/dist/curator/classifier.d.ts +18 -0
  64. package/dist/curator/classifier.d.ts.map +1 -0
  65. package/dist/curator/classifier.js +61 -0
  66. package/dist/curator/classifier.js.map +1 -0
  67. package/dist/curator/quality-gate.d.ts +29 -0
  68. package/dist/curator/quality-gate.d.ts.map +1 -0
  69. package/dist/curator/quality-gate.js +88 -0
  70. package/dist/curator/quality-gate.js.map +1 -0
  71. package/dist/domain-packs/index.d.ts +8 -0
  72. package/dist/domain-packs/index.d.ts.map +1 -0
  73. package/dist/domain-packs/index.js +8 -0
  74. package/dist/domain-packs/index.js.map +1 -0
  75. package/dist/domain-packs/inject-rules.d.ts +24 -0
  76. package/dist/domain-packs/inject-rules.d.ts.map +1 -0
  77. package/dist/domain-packs/inject-rules.js +65 -0
  78. package/dist/domain-packs/inject-rules.js.map +1 -0
  79. package/dist/domain-packs/knowledge-installer.d.ts +27 -0
  80. package/dist/domain-packs/knowledge-installer.d.ts.map +1 -0
  81. package/dist/domain-packs/knowledge-installer.js +89 -0
  82. package/dist/domain-packs/knowledge-installer.js.map +1 -0
  83. package/dist/domain-packs/loader.d.ts +28 -0
  84. package/dist/domain-packs/loader.d.ts.map +1 -0
  85. package/dist/domain-packs/loader.js +105 -0
  86. package/dist/domain-packs/loader.js.map +1 -0
  87. package/dist/domain-packs/pack-runtime.d.ts +80 -0
  88. package/dist/domain-packs/pack-runtime.d.ts.map +1 -0
  89. package/dist/domain-packs/pack-runtime.js +36 -0
  90. package/dist/domain-packs/pack-runtime.js.map +1 -0
  91. package/dist/domain-packs/skills-installer.d.ts +21 -0
  92. package/dist/domain-packs/skills-installer.d.ts.map +1 -0
  93. package/dist/domain-packs/skills-installer.js +38 -0
  94. package/dist/domain-packs/skills-installer.js.map +1 -0
  95. package/dist/domain-packs/token-resolver.d.ts +37 -0
  96. package/dist/domain-packs/token-resolver.d.ts.map +1 -0
  97. package/dist/domain-packs/token-resolver.js +109 -0
  98. package/dist/domain-packs/token-resolver.js.map +1 -0
  99. package/dist/domain-packs/types.d.ts +91 -0
  100. package/dist/domain-packs/types.d.ts.map +1 -0
  101. package/dist/domain-packs/types.js +122 -0
  102. package/dist/domain-packs/types.js.map +1 -0
  103. package/dist/engine/bin/soleri-engine.d.ts +12 -0
  104. package/dist/engine/bin/soleri-engine.d.ts.map +1 -0
  105. package/dist/engine/bin/soleri-engine.js +184 -0
  106. package/dist/engine/bin/soleri-engine.js.map +1 -0
  107. package/dist/engine/core-ops.d.ts +27 -0
  108. package/dist/engine/core-ops.d.ts.map +1 -0
  109. package/dist/engine/core-ops.js +159 -0
  110. package/dist/engine/core-ops.js.map +1 -0
  111. package/dist/engine/index.d.ts +19 -0
  112. package/dist/engine/index.d.ts.map +1 -0
  113. package/dist/engine/index.js +17 -0
  114. package/dist/engine/index.js.map +1 -0
  115. package/dist/engine/register-engine.d.ts +54 -0
  116. package/dist/engine/register-engine.d.ts.map +1 -0
  117. package/dist/engine/register-engine.js +270 -0
  118. package/dist/engine/register-engine.js.map +1 -0
  119. package/dist/engine/test-helpers.d.ts +30 -0
  120. package/dist/engine/test-helpers.d.ts.map +1 -0
  121. package/dist/engine/test-helpers.js +59 -0
  122. package/dist/engine/test-helpers.js.map +1 -0
  123. package/dist/events/event-bus.d.ts +30 -0
  124. package/dist/events/event-bus.d.ts.map +1 -0
  125. package/dist/events/event-bus.js +51 -0
  126. package/dist/events/event-bus.js.map +1 -0
  127. package/dist/flows/chain-runner.d.ts +46 -0
  128. package/dist/flows/chain-runner.d.ts.map +1 -0
  129. package/dist/flows/chain-runner.js +271 -0
  130. package/dist/flows/chain-runner.js.map +1 -0
  131. package/dist/flows/chain-types.d.ts +103 -0
  132. package/dist/flows/chain-types.d.ts.map +1 -0
  133. package/dist/flows/chain-types.js +23 -0
  134. package/dist/flows/chain-types.js.map +1 -0
  135. package/dist/flows/context-router.d.ts +39 -0
  136. package/dist/flows/context-router.d.ts.map +1 -0
  137. package/dist/flows/context-router.js +206 -0
  138. package/dist/flows/context-router.js.map +1 -0
  139. package/dist/flows/dispatch-registry.d.ts +24 -0
  140. package/dist/flows/dispatch-registry.d.ts.map +1 -0
  141. package/dist/flows/dispatch-registry.js +70 -0
  142. package/dist/flows/dispatch-registry.js.map +1 -0
  143. package/dist/flows/epilogue.d.ts +24 -0
  144. package/dist/flows/epilogue.d.ts.map +1 -0
  145. package/dist/flows/epilogue.js +52 -0
  146. package/dist/flows/epilogue.js.map +1 -0
  147. package/dist/flows/executor.d.ts +25 -0
  148. package/dist/flows/executor.d.ts.map +1 -0
  149. package/dist/flows/executor.js +153 -0
  150. package/dist/flows/executor.js.map +1 -0
  151. package/dist/flows/gate-evaluator.d.ts +26 -0
  152. package/dist/flows/gate-evaluator.d.ts.map +1 -0
  153. package/dist/flows/gate-evaluator.js +162 -0
  154. package/dist/flows/gate-evaluator.js.map +1 -0
  155. package/dist/flows/index.d.ts +14 -0
  156. package/dist/flows/index.d.ts.map +1 -0
  157. package/dist/flows/index.js +20 -0
  158. package/dist/flows/index.js.map +1 -0
  159. package/dist/flows/loader.d.ts +17 -0
  160. package/dist/flows/loader.d.ts.map +1 -0
  161. package/dist/flows/loader.js +61 -0
  162. package/dist/flows/loader.js.map +1 -0
  163. package/dist/flows/plan-builder.d.ts +40 -0
  164. package/dist/flows/plan-builder.d.ts.map +1 -0
  165. package/dist/flows/plan-builder.js +213 -0
  166. package/dist/flows/plan-builder.js.map +1 -0
  167. package/dist/flows/probes.d.ts +11 -0
  168. package/dist/flows/probes.d.ts.map +1 -0
  169. package/dist/flows/probes.js +62 -0
  170. package/dist/flows/probes.js.map +1 -0
  171. package/dist/flows/types.d.ts +950 -0
  172. package/dist/flows/types.d.ts.map +1 -0
  173. package/dist/flows/types.js +105 -0
  174. package/dist/flows/types.js.map +1 -0
  175. package/dist/health/doctor-checks.d.ts +15 -0
  176. package/dist/health/doctor-checks.d.ts.map +1 -0
  177. package/dist/health/doctor-checks.js +98 -0
  178. package/dist/health/doctor-checks.js.map +1 -0
  179. package/dist/index.d.ts +11 -1
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +10 -1
  182. package/dist/index.js.map +1 -1
  183. package/dist/intake/text-ingester.d.ts +52 -0
  184. package/dist/intake/text-ingester.d.ts.map +1 -0
  185. package/dist/intake/text-ingester.js +181 -0
  186. package/dist/intake/text-ingester.js.map +1 -0
  187. package/dist/intelligence/loader.d.ts +19 -0
  188. package/dist/intelligence/loader.d.ts.map +1 -1
  189. package/dist/intelligence/loader.js +35 -0
  190. package/dist/intelligence/loader.js.map +1 -1
  191. package/dist/intelligence/types.d.ts +1 -0
  192. package/dist/intelligence/types.d.ts.map +1 -1
  193. package/dist/llm/llm-client.d.ts.map +1 -1
  194. package/dist/llm/llm-client.js +37 -1
  195. package/dist/llm/llm-client.js.map +1 -1
  196. package/dist/llm/oauth-discovery.d.ts +26 -0
  197. package/dist/llm/oauth-discovery.d.ts.map +1 -0
  198. package/dist/llm/oauth-discovery.js +149 -0
  199. package/dist/llm/oauth-discovery.js.map +1 -0
  200. package/dist/packs/types.d.ts +58 -19
  201. package/dist/packs/types.d.ts.map +1 -1
  202. package/dist/packs/types.js +14 -0
  203. package/dist/packs/types.js.map +1 -1
  204. package/dist/planning/evidence-collector.d.ts +41 -0
  205. package/dist/planning/evidence-collector.d.ts.map +1 -0
  206. package/dist/planning/evidence-collector.js +194 -0
  207. package/dist/planning/evidence-collector.js.map +1 -0
  208. package/dist/planning/planner.d.ts +4 -0
  209. package/dist/planning/planner.d.ts.map +1 -1
  210. package/dist/planning/planner.js +11 -0
  211. package/dist/planning/planner.js.map +1 -1
  212. package/dist/playbooks/generic/onboarding.d.ts +9 -0
  213. package/dist/playbooks/generic/onboarding.d.ts.map +1 -0
  214. package/dist/playbooks/generic/onboarding.js +74 -0
  215. package/dist/playbooks/generic/onboarding.js.map +1 -0
  216. package/dist/playbooks/playbook-registry.d.ts.map +1 -1
  217. package/dist/playbooks/playbook-registry.js +2 -0
  218. package/dist/playbooks/playbook-registry.js.map +1 -1
  219. package/dist/queue/job-queue.d.ts +92 -0
  220. package/dist/queue/job-queue.d.ts.map +1 -0
  221. package/dist/queue/job-queue.js +180 -0
  222. package/dist/queue/job-queue.js.map +1 -0
  223. package/dist/queue/pipeline-runner.d.ts +62 -0
  224. package/dist/queue/pipeline-runner.d.ts.map +1 -0
  225. package/dist/queue/pipeline-runner.js +126 -0
  226. package/dist/queue/pipeline-runner.js.map +1 -0
  227. package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
  228. package/dist/runtime/admin-extra-ops.js +15 -9
  229. package/dist/runtime/admin-extra-ops.js.map +1 -1
  230. package/dist/runtime/admin-ops.js +4 -4
  231. package/dist/runtime/admin-ops.js.map +1 -1
  232. package/dist/runtime/admin-setup-ops.d.ts +20 -0
  233. package/dist/runtime/admin-setup-ops.d.ts.map +1 -0
  234. package/dist/runtime/admin-setup-ops.js +583 -0
  235. package/dist/runtime/admin-setup-ops.js.map +1 -0
  236. package/dist/runtime/capture-ops.d.ts.map +1 -1
  237. package/dist/runtime/capture-ops.js +33 -1
  238. package/dist/runtime/capture-ops.js.map +1 -1
  239. package/dist/runtime/chain-ops.d.ts +9 -0
  240. package/dist/runtime/chain-ops.d.ts.map +1 -0
  241. package/dist/runtime/chain-ops.js +107 -0
  242. package/dist/runtime/chain-ops.js.map +1 -0
  243. package/dist/runtime/claude-md-helpers.d.ts +65 -0
  244. package/dist/runtime/claude-md-helpers.d.ts.map +1 -0
  245. package/dist/runtime/claude-md-helpers.js +173 -0
  246. package/dist/runtime/claude-md-helpers.js.map +1 -0
  247. package/dist/runtime/curator-extra-ops.d.ts +3 -2
  248. package/dist/runtime/curator-extra-ops.d.ts.map +1 -1
  249. package/dist/runtime/curator-extra-ops.js +81 -3
  250. package/dist/runtime/curator-extra-ops.js.map +1 -1
  251. package/dist/runtime/domain-ops.d.ts +21 -5
  252. package/dist/runtime/domain-ops.d.ts.map +1 -1
  253. package/dist/runtime/domain-ops.js +64 -6
  254. package/dist/runtime/domain-ops.js.map +1 -1
  255. package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
  256. package/dist/runtime/facades/admin-facade.js +4 -0
  257. package/dist/runtime/facades/admin-facade.js.map +1 -1
  258. package/dist/runtime/facades/agency-facade.d.ts.map +1 -1
  259. package/dist/runtime/facades/agency-facade.js +64 -0
  260. package/dist/runtime/facades/agency-facade.js.map +1 -1
  261. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  262. package/dist/runtime/facades/brain-facade.js +122 -1
  263. package/dist/runtime/facades/brain-facade.js.map +1 -1
  264. package/dist/runtime/facades/cognee-facade.d.ts.map +1 -1
  265. package/dist/runtime/facades/cognee-facade.js +3 -1
  266. package/dist/runtime/facades/cognee-facade.js.map +1 -1
  267. package/dist/runtime/facades/control-facade.d.ts.map +1 -1
  268. package/dist/runtime/facades/control-facade.js +42 -0
  269. package/dist/runtime/facades/control-facade.js.map +1 -1
  270. package/dist/runtime/facades/index.d.ts.map +1 -1
  271. package/dist/runtime/facades/index.js +10 -6
  272. package/dist/runtime/facades/index.js.map +1 -1
  273. package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
  274. package/dist/runtime/facades/memory-facade.js +20 -2
  275. package/dist/runtime/facades/memory-facade.js.map +1 -1
  276. package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
  277. package/dist/runtime/facades/plan-facade.js +2 -0
  278. package/dist/runtime/facades/plan-facade.js.map +1 -1
  279. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  280. package/dist/runtime/facades/vault-facade.js +27 -5
  281. package/dist/runtime/facades/vault-facade.js.map +1 -1
  282. package/dist/runtime/intake-ops.d.ts +7 -5
  283. package/dist/runtime/intake-ops.d.ts.map +1 -1
  284. package/dist/runtime/intake-ops.js +98 -5
  285. package/dist/runtime/intake-ops.js.map +1 -1
  286. package/dist/runtime/memory-extra-ops.d.ts +6 -3
  287. package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
  288. package/dist/runtime/memory-extra-ops.js +292 -4
  289. package/dist/runtime/memory-extra-ops.js.map +1 -1
  290. package/dist/runtime/orchestrate-ops.d.ts +8 -7
  291. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  292. package/dist/runtime/orchestrate-ops.js +217 -61
  293. package/dist/runtime/orchestrate-ops.js.map +1 -1
  294. package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
  295. package/dist/runtime/planning-extra-ops.js +85 -0
  296. package/dist/runtime/planning-extra-ops.js.map +1 -1
  297. package/dist/runtime/playbook-ops.js +1 -1
  298. package/dist/runtime/playbook-ops.js.map +1 -1
  299. package/dist/runtime/runtime.d.ts.map +1 -1
  300. package/dist/runtime/runtime.js +165 -18
  301. package/dist/runtime/runtime.js.map +1 -1
  302. package/dist/runtime/session-briefing.d.ts +23 -0
  303. package/dist/runtime/session-briefing.d.ts.map +1 -0
  304. package/dist/runtime/session-briefing.js +140 -0
  305. package/dist/runtime/session-briefing.js.map +1 -0
  306. package/dist/runtime/types.d.ts +29 -2
  307. package/dist/runtime/types.d.ts.map +1 -1
  308. package/dist/runtime/vault-linking-ops.d.ts +13 -0
  309. package/dist/runtime/vault-linking-ops.d.ts.map +1 -0
  310. package/dist/runtime/vault-linking-ops.js +365 -0
  311. package/dist/runtime/vault-linking-ops.js.map +1 -0
  312. package/dist/vault/linking.d.ts +46 -0
  313. package/dist/vault/linking.d.ts.map +1 -0
  314. package/dist/vault/linking.js +275 -0
  315. package/dist/vault/linking.js.map +1 -0
  316. package/dist/vault/vault-types.d.ts +37 -0
  317. package/dist/vault/vault-types.d.ts.map +1 -1
  318. package/dist/vault/vault.d.ts +37 -0
  319. package/dist/vault/vault.d.ts.map +1 -1
  320. package/dist/vault/vault.js +152 -9
  321. package/dist/vault/vault.js.map +1 -1
  322. package/package.json +4 -1
  323. package/src/__tests__/admin-extra-ops.test.ts +1 -1
  324. package/src/__tests__/admin-ops.test.ts +2 -1
  325. package/src/__tests__/admin-setup-ops.test.ts +355 -0
  326. package/src/__tests__/async-infrastructure.test.ts +307 -0
  327. package/src/__tests__/cognee-client-gaps.test.ts +474 -0
  328. package/src/__tests__/cognee-hybrid-search.test.ts +492 -0
  329. package/src/__tests__/cognee-sync-manager-deep.test.ts +654 -0
  330. package/src/__tests__/cognee-sync-manager.test.ts +1 -0
  331. package/src/__tests__/core-ops.test.ts +9 -61
  332. package/src/__tests__/curator-extra-ops.test.ts +6 -2
  333. package/src/__tests__/curator-pipeline-e2e.test.ts +358 -0
  334. package/src/__tests__/domain-packs.test.ts +421 -0
  335. package/src/__tests__/flows.test.ts +604 -0
  336. package/src/__tests__/memory-extra-ops.test.ts +2 -2
  337. package/src/__tests__/planning-extra-ops.test.ts +2 -2
  338. package/src/__tests__/playbook-registry.test.ts +2 -2
  339. package/src/__tests__/playbook-seeder.test.ts +8 -8
  340. package/src/__tests__/playbook.test.ts +5 -5
  341. package/src/__tests__/second-brain-features.test.ts +583 -0
  342. package/src/__tests__/token-resolver.test.ts +79 -0
  343. package/src/agency/agency-manager.ts +217 -9
  344. package/src/agency/default-rules.ts +83 -0
  345. package/src/agency/types.ts +61 -0
  346. package/src/brain/brain.ts +110 -8
  347. package/src/brain/intelligence.ts +21 -2
  348. package/src/brain/knowledge-synthesizer.ts +218 -0
  349. package/src/brain/learning-radar.ts +340 -0
  350. package/src/brain/types.ts +16 -0
  351. package/src/capabilities/chain-mapping.ts +93 -0
  352. package/src/capabilities/index.ts +21 -0
  353. package/src/capabilities/registry.ts +290 -0
  354. package/src/capabilities/types.ts +143 -0
  355. package/src/context/context-engine.ts +114 -15
  356. package/src/context/types.ts +5 -0
  357. package/src/control/intent-router.ts +153 -2
  358. package/src/control/types.ts +10 -0
  359. package/src/curator/classifier.ts +88 -0
  360. package/src/curator/quality-gate.ts +129 -0
  361. package/src/domain-packs/index.ts +27 -0
  362. package/src/domain-packs/inject-rules.ts +74 -0
  363. package/src/domain-packs/knowledge-installer.ts +116 -0
  364. package/src/domain-packs/loader.ts +124 -0
  365. package/src/domain-packs/pack-runtime.ts +99 -0
  366. package/src/domain-packs/skills-installer.ts +56 -0
  367. package/src/domain-packs/token-resolver.ts +126 -0
  368. package/src/domain-packs/types.ts +229 -0
  369. package/src/engine/__tests__/register-engine.test.ts +104 -0
  370. package/src/engine/bin/soleri-engine.ts +218 -0
  371. package/src/engine/core-ops.ts +178 -0
  372. package/src/engine/index.ts +19 -0
  373. package/src/engine/register-engine.ts +385 -0
  374. package/src/engine/test-helpers.ts +83 -0
  375. package/src/events/event-bus.ts +58 -0
  376. package/src/flows/chain-runner.ts +369 -0
  377. package/src/flows/chain-types.ts +57 -0
  378. package/src/flows/context-router.ts +257 -0
  379. package/src/flows/dispatch-registry.ts +80 -0
  380. package/src/flows/epilogue.ts +65 -0
  381. package/src/flows/executor.ts +182 -0
  382. package/src/flows/gate-evaluator.ts +171 -0
  383. package/src/flows/index.ts +52 -0
  384. package/src/flows/loader.ts +63 -0
  385. package/src/flows/plan-builder.ts +250 -0
  386. package/src/flows/probes.ts +70 -0
  387. package/src/flows/types.ts +217 -0
  388. package/src/health/doctor-checks.ts +115 -0
  389. package/src/index.ts +68 -1
  390. package/src/intake/text-ingester.ts +234 -0
  391. package/src/intelligence/loader.ts +38 -0
  392. package/src/intelligence/types.ts +1 -0
  393. package/src/llm/llm-client.ts +38 -1
  394. package/src/llm/oauth-discovery.ts +169 -0
  395. package/src/packs/types.ts +19 -0
  396. package/src/planning/evidence-collector.ts +247 -0
  397. package/src/planning/planner.ts +11 -0
  398. package/src/playbooks/generic/onboarding.ts +79 -0
  399. package/src/playbooks/playbook-registry.ts +2 -0
  400. package/src/queue/job-queue.ts +281 -0
  401. package/src/queue/pipeline-runner.ts +149 -0
  402. package/src/runtime/admin-extra-ops.ts +14 -8
  403. package/src/runtime/admin-ops.ts +4 -4
  404. package/src/runtime/admin-setup-ops.ts +664 -0
  405. package/src/runtime/capture-ops.ts +40 -1
  406. package/src/runtime/chain-ops.ts +121 -0
  407. package/src/runtime/claude-md-helpers.ts +236 -0
  408. package/src/runtime/curator-extra-ops.ts +86 -3
  409. package/src/runtime/domain-ops.ts +71 -5
  410. package/src/runtime/facades/admin-facade.ts +4 -0
  411. package/src/runtime/facades/agency-facade.ts +68 -0
  412. package/src/runtime/facades/brain-facade.ts +142 -1
  413. package/src/runtime/facades/cognee-facade.ts +3 -1
  414. package/src/runtime/facades/control-facade.ts +45 -0
  415. package/src/runtime/facades/index.ts +12 -6
  416. package/src/runtime/facades/memory-facade.ts +20 -2
  417. package/src/runtime/facades/plan-facade.ts +2 -0
  418. package/src/runtime/facades/vault-facade.ts +30 -5
  419. package/src/runtime/intake-ops.ts +107 -5
  420. package/src/runtime/memory-extra-ops.ts +312 -4
  421. package/src/runtime/orchestrate-ops.ts +261 -65
  422. package/src/runtime/planning-extra-ops.ts +94 -0
  423. package/src/runtime/playbook-ops.ts +1 -1
  424. package/src/runtime/runtime.ts +164 -19
  425. package/src/runtime/session-briefing.ts +161 -0
  426. package/src/runtime/types.ts +29 -2
  427. package/src/runtime/vault-linking-ops.ts +452 -0
  428. package/src/vault/linking.ts +333 -0
  429. package/src/vault/vault-types.ts +46 -0
  430. package/src/vault/vault.ts +173 -11
@@ -19,10 +19,12 @@ import { LoopManager } from '../loop/loop-manager.js';
19
19
  import { IdentityManager } from '../control/identity-manager.js';
20
20
  import { IntentRouter } from '../control/intent-router.js';
21
21
  import { KeyPool, loadKeyPoolConfig } from '../llm/key-pool.js';
22
+ import { discoverAnthropicToken } from '../llm/oauth-discovery.js';
22
23
  import { loadIntelligenceData } from '../intelligence/loader.js';
23
24
  import { LLMClient } from '../llm/llm-client.js';
24
25
  import { CogneeSyncManager } from '../cognee/sync-manager.js';
25
26
  import { IntakePipeline } from '../intake/intake-pipeline.js';
27
+ import { TextIngester } from '../intake/text-ingester.js';
26
28
  import { Telemetry } from '../telemetry/telemetry.js';
27
29
  import { ProjectRegistry } from '../project/project-registry.js';
28
30
  import { TemplateManager } from '../prompts/template-manager.js';
@@ -39,6 +41,14 @@ import { VaultBranching } from '../vault/vault-branching.js';
39
41
  import { ContextEngine } from '../context/context-engine.js';
40
42
  import { AgencyManager } from '../agency/agency-manager.js';
41
43
  import { KnowledgeReview } from '../vault/knowledge-review.js';
44
+ import { LinkManager } from '../vault/linking.js';
45
+ import { LearningRadar } from '../brain/learning-radar.js';
46
+ import { KnowledgeSynthesizer } from '../brain/knowledge-synthesizer.js';
47
+ import { ChainRunner } from '../flows/chain-runner.js';
48
+ import { JobQueue } from '../queue/job-queue.js';
49
+ import { PipelineRunner } from '../queue/pipeline-runner.js';
50
+ import { evaluateQuality } from '../curator/quality-gate.js';
51
+ import { classifyEntry } from '../curator/classifier.js';
42
52
  import type { AgentRuntimeConfig, AgentRuntime } from './types.js';
43
53
 
44
54
  /**
@@ -85,21 +95,25 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
85
95
  // Planner — multi-step task tracking
86
96
  const planner = new Planner(plansPath);
87
97
 
88
- // Cognee — vector search client (graceful degradation if Cognee is down)
89
- const cogneePartial: Partial<import('../cognee/types.js').CogneeConfig> = { dataset: agentId };
90
- if (process.env.COGNEE_BASE_URL) cogneePartial.baseUrl = process.env.COGNEE_BASE_URL;
91
- if (process.env.COGNEE_API_TOKEN) cogneePartial.apiToken = process.env.COGNEE_API_TOKEN;
92
- if (process.env.COGNEE_DATASET) cogneePartial.dataset = process.env.COGNEE_DATASET;
93
- const cognee = new CogneeClient(cogneePartial);
98
+ // Cognee — vector search client (opt-in, graceful degradation if Cognee is down)
99
+ let cognee: CogneeClient | null = null;
100
+ if (config.cognee) {
101
+ const cogneePartial: Partial<import('../cognee/types.js').CogneeConfig> = { dataset: agentId };
102
+ if (process.env.COGNEE_BASE_URL) cogneePartial.baseUrl = process.env.COGNEE_BASE_URL;
103
+ if (process.env.COGNEE_API_TOKEN) cogneePartial.apiToken = process.env.COGNEE_API_TOKEN;
104
+ if (process.env.COGNEE_DATASET) cogneePartial.dataset = process.env.COGNEE_DATASET;
105
+ cognee = new CogneeClient(cogneePartial);
106
+ }
94
107
 
95
108
  // Brain — intelligence layer (TF-IDF scoring, auto-tagging, dedup)
96
- const brain = new Brain(vault, cognee);
109
+ // Pass vaultManager so intelligentSearch queries all connected sources (not just agent tier)
110
+ const brain = new Brain(vault, cognee ?? undefined, vaultManager);
97
111
 
98
112
  // Brain Intelligence — pattern strengths, session knowledge, intelligence pipeline
99
113
  const brainIntelligence = new BrainIntelligence(vault, brain);
100
114
 
101
115
  // Curator — vault self-maintenance (dedup, contradictions, grooming, health)
102
- const curator = new Curator(vault, cognee);
116
+ const curator = new Curator(vault, cognee ?? undefined);
103
117
 
104
118
  // Governance — policy engine + proposal tracker for gated knowledge capture
105
119
  const governance = new Governance(vault);
@@ -127,21 +141,35 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
127
141
  }
128
142
 
129
143
  // LLM key pools and client
144
+ // Try OAuth token discovery for Anthropic (Claude Code subscription → free API access)
130
145
  const keyPoolFiles = loadKeyPoolConfig(agentId);
146
+ const oauthToken = discoverAnthropicToken();
147
+ const anthropicConfig = keyPoolFiles.anthropic;
148
+ if (oauthToken && anthropicConfig.keys.length === 0) {
149
+ anthropicConfig.keys.push(oauthToken);
150
+ }
131
151
  const openaiKeyPool = new KeyPool(keyPoolFiles.openai);
132
- const anthropicKeyPool = new KeyPool(keyPoolFiles.anthropic);
152
+ const anthropicKeyPool = new KeyPool(anthropicConfig);
133
153
  const llmClient = new LLMClient(openaiKeyPool, anthropicKeyPool, agentId);
134
154
 
135
- // Cognee Sync Manager — queue-based dirty tracking with offline resilience
136
- const syncManager = new CogneeSyncManager(
137
- vault.getProvider(),
138
- cognee,
139
- cogneePartial.dataset ?? agentId,
140
- );
141
- vault.setSyncManager(syncManager);
155
+ // Cognee Sync Manager — queue-based dirty tracking with offline resilience (only when Cognee enabled)
156
+ let syncManager: CogneeSyncManager | null = null;
157
+ if (cognee) {
158
+ syncManager = new CogneeSyncManager(
159
+ vault.getProvider(),
160
+ cognee,
161
+ process.env.COGNEE_DATASET ?? agentId,
162
+ );
163
+ vault.setSyncManager(syncManager);
164
+ }
165
+
166
+ // Link Manager — Zettelkasten auto-linking on vault ingestion
167
+ const linkManager = new LinkManager(vault.getProvider());
168
+ vault.setLinkManager(linkManager, { enabled: true, maxLinks: 3 });
142
169
 
143
170
  // Intake Pipeline — PDF/book ingestion with LLM classification
144
171
  const intakePipeline = new IntakePipeline(vault.getProvider(), vault, llmClient);
172
+ const textIngester = new TextIngester(vault, llmClient);
145
173
 
146
174
  // Playbook Executor — in-memory step-by-step workflow sessions
147
175
  const playbookExecutor = new PlaybookExecutor();
@@ -168,7 +196,10 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
168
196
  const health = new HealthRegistry();
169
197
  health.register('vault', 'healthy');
170
198
  health.register('brain', 'healthy');
171
- health.register('cognee', cognee.getStatus()?.available ? 'healthy' : 'degraded');
199
+ health.register(
200
+ 'cognee',
201
+ cognee ? (cognee.getStatus()?.available ? 'healthy' : 'degraded') : 'down',
202
+ );
172
203
  health.register(
173
204
  'llm',
174
205
  llmClient.isAvailable().openai || llmClient.isAvailable().anthropic ? 'healthy' : 'degraded',
@@ -208,6 +239,7 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
208
239
  templateManager,
209
240
  syncManager,
210
241
  intakePipeline,
242
+ textIngester,
211
243
  authPolicy: { mode: 'permissive', callerLevel: 'admin' },
212
244
  flags: new FeatureFlags(join(agentHome, 'flags.json')),
213
245
  health,
@@ -219,10 +251,123 @@ export function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime {
219
251
  contextEngine,
220
252
  agencyManager,
221
253
  knowledgeReview,
254
+ linkManager,
255
+ learningRadar: new LearningRadar(vault, brain),
256
+ knowledgeSynthesizer: new KnowledgeSynthesizer(brain, llmClient),
257
+ chainRunner: new ChainRunner(vault.getProvider()),
258
+ jobQueue: new JobQueue(vault.getProvider()),
259
+ pipelineRunner: (() => {
260
+ const jq = new JobQueue(vault.getProvider());
261
+ const pr = new PipelineRunner(jq);
262
+ // Register default job handlers for curator pipeline
263
+ pr.registerHandler('tag-normalize', async (job) => {
264
+ const entry = vault.get(job.entryId ?? '');
265
+ if (!entry) return { skipped: true, reason: 'entry not found' };
266
+ const result = curator.normalizeTag(entry.tags[0] ?? '');
267
+ return result;
268
+ });
269
+ pr.registerHandler('dedup-check', async (job) => {
270
+ const entry = vault.get(job.entryId ?? '');
271
+ if (!entry) return { skipped: true, reason: 'entry not found' };
272
+ return curator.detectDuplicates(entry.id);
273
+ });
274
+ pr.registerHandler('auto-link', async (job) => {
275
+ if (linkManager) {
276
+ const suggestions = linkManager.suggestLinks(job.entryId ?? '', 3);
277
+ for (const s of suggestions) {
278
+ linkManager.addLink(
279
+ job.entryId ?? '',
280
+ s.entryId,
281
+ s.suggestedType,
282
+ `pipeline: ${s.reason}`,
283
+ );
284
+ }
285
+ return { linked: suggestions.length };
286
+ }
287
+ return { skipped: true, reason: 'link manager not available' };
288
+ });
289
+ pr.registerHandler('quality-gate', async (job) => {
290
+ const entry = vault.get(job.entryId ?? '');
291
+ if (!entry) return { skipped: true, reason: 'entry not found' };
292
+ return evaluateQuality(entry, llmClient);
293
+ });
294
+ pr.registerHandler('classify', async (job) => {
295
+ const entry = vault.get(job.entryId ?? '');
296
+ if (!entry) return { skipped: true, reason: 'entry not found' };
297
+ return classifyEntry(entry, llmClient);
298
+ });
299
+
300
+ // ─── 9 additional handlers for full Salvador parity (#216) ────
301
+ pr.registerHandler('enrich-frontmatter', async (job) => {
302
+ const entry = vault.get(job.entryId ?? '');
303
+ if (!entry) return { skipped: true, reason: 'entry not found' };
304
+ return curator.enrichMetadata(entry.id);
305
+ });
306
+ pr.registerHandler('detect-staleness', async (job) => {
307
+ const entry = vault.get(job.entryId ?? '');
308
+ if (!entry) return { skipped: true, reason: 'entry not found' };
309
+ // Check if entry is older than 90 days (using validFrom or fallback to 0)
310
+ const entryTimestamp = (entry.validFrom ?? 0) * 1000 || Date.now();
311
+ const ageMs = Date.now() - entryTimestamp;
312
+ const staleDays = 90;
313
+ const isStale = ageMs > staleDays * 86400000;
314
+ return { stale: isStale, ageDays: Math.floor(ageMs / 86400000), entryId: entry.id };
315
+ });
316
+ pr.registerHandler('detect-duplicate', async (job) => {
317
+ const entry = vault.get(job.entryId ?? '');
318
+ if (!entry) return { skipped: true, reason: 'entry not found' };
319
+ return curator.detectDuplicates(entry.id);
320
+ });
321
+ pr.registerHandler('detect-contradiction', async (job) => {
322
+ const entry = vault.get(job.entryId ?? '');
323
+ if (!entry) return { skipped: true, reason: 'entry not found' };
324
+ const contradictions = curator.detectContradictions(0.4);
325
+ const relevant = contradictions.filter(
326
+ (c) => c.patternId === job.entryId || c.antipatternId === job.entryId,
327
+ );
328
+ return { found: relevant.length, contradictions: relevant };
329
+ });
330
+ pr.registerHandler('consolidate-duplicates', async (_job) => {
331
+ return curator.consolidate({ dryRun: false, staleDaysThreshold: 90 });
332
+ });
333
+ pr.registerHandler('archive-stale', async (_job) => {
334
+ // Run consolidation with stale detection
335
+ const result = curator.consolidate({ dryRun: false, staleDaysThreshold: 90 });
336
+ return { archived: result.staleEntries.length, result };
337
+ });
338
+ pr.registerHandler('cognee-ingest', async (job) => {
339
+ if (!cognee) return { skipped: true, reason: 'cognee not available' };
340
+ const entry = vault.get(job.entryId ?? '');
341
+ if (!entry) return { skipped: true, reason: 'entry not found' };
342
+ try {
343
+ const result = await cognee.addEntries([entry]);
344
+ return { ingested: result.added };
345
+ } catch {
346
+ return { skipped: true, reason: 'cognee ingestion failed' };
347
+ }
348
+ });
349
+ pr.registerHandler('cognee-cognify', async (_job) => {
350
+ if (!cognee) return { skipped: true, reason: 'cognee not available' };
351
+ try {
352
+ const result = await cognee.cognify();
353
+ return result;
354
+ } catch {
355
+ return { skipped: true, reason: 'cognee cognify failed' };
356
+ }
357
+ });
358
+ pr.registerHandler('verify-searchable', async (job) => {
359
+ const entry = vault.get(job.entryId ?? '');
360
+ if (!entry) return { skipped: true, reason: 'entry not found' };
361
+ const searchResults = vault.search(entry.title, { limit: 1 });
362
+ const found = searchResults.some((r) => r.entry.id === entry.id);
363
+ return { searchable: found, entryId: entry.id };
364
+ });
365
+ return pr;
366
+ })(),
222
367
  createdAt: Date.now(),
223
368
  close: () => {
224
- syncManager.close();
225
- cognee.resetPendingCognify();
369
+ syncManager?.close();
370
+ cognee?.resetPendingCognify();
226
371
  vaultManager.close();
227
372
  },
228
373
  };
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Session Briefing — proactive context loading on session start.
3
+ *
4
+ * Gathers data from all subsystems (sessions, plans, vault, brain, curator)
5
+ * and produces a concise, structured briefing for the agent.
6
+ *
7
+ * Design: gather all data in parallel, skip sections with nothing to report.
8
+ * Target: < 15 lines of output, < 3 seconds latency.
9
+ */
10
+
11
+ import { z } from 'zod';
12
+ import type { OpDefinition } from '../facades/types.js';
13
+ import type { AgentRuntime } from './types.js';
14
+
15
+ export interface BriefingSection {
16
+ label: string;
17
+ content: string;
18
+ }
19
+
20
+ export interface SessionBriefing {
21
+ sections: BriefingSection[];
22
+ generatedAt: number;
23
+ /** Total entries consulted across all data sources. */
24
+ dataPointsConsulted: number;
25
+ }
26
+
27
+ export function createSessionBriefingOps(runtime: AgentRuntime): OpDefinition[] {
28
+ const { brainIntelligence, planner, vault, curator } = runtime;
29
+
30
+ return [
31
+ {
32
+ name: 'session_briefing',
33
+ description:
34
+ 'Proactive session briefing — gathers last session, active plans, recent vault captures, brain recommendations, and stale knowledge warnings into a concise summary.',
35
+ auth: 'read',
36
+ schema: z.object({
37
+ maxSections: z.number().optional().default(6).describe('Max sections to include'),
38
+ recencyHours: z.number().optional().default(48).describe('Look back window in hours'),
39
+ }),
40
+ handler: async (params) => {
41
+ const maxSections = params.maxSections as number;
42
+ const sections: BriefingSection[] = [];
43
+ let dataPoints = 0;
44
+
45
+ // 1. Last session
46
+ try {
47
+ const sessions = brainIntelligence.listSessions({ limit: 1, active: false });
48
+ dataPoints += sessions.length;
49
+ if (sessions.length > 0) {
50
+ const last = sessions[0];
51
+ const ago = formatTimeAgo(last.endedAt ? new Date(last.endedAt).getTime() : Date.now());
52
+ const domain = last.domain ? ` [${last.domain}]` : '';
53
+ const context = last.context ? `: ${last.context.slice(0, 80)}` : '';
54
+ const tools = last.toolsUsed.length > 0 ? `, used ${last.toolsUsed.length} tools` : '';
55
+ const files =
56
+ last.filesModified.length > 0 ? `, modified ${last.filesModified.length} files` : '';
57
+ sections.push({
58
+ label: 'Last session',
59
+ content: `(${ago})${domain}${context}${tools}${files}`,
60
+ });
61
+ }
62
+ } catch {
63
+ // Session data unavailable — skip
64
+ }
65
+
66
+ // 2. Active plans
67
+ try {
68
+ const plans = planner.list();
69
+ const active = plans.filter(
70
+ (p) =>
71
+ p.status === 'executing' ||
72
+ p.status === 'approved' ||
73
+ p.status === 'reconciling' ||
74
+ p.status === 'validating',
75
+ );
76
+ dataPoints += plans.length;
77
+ if (active.length > 0) {
78
+ const summaries = active.map((p) => {
79
+ const tasksDone = p.tasks.filter((t) => t.status === 'completed').length;
80
+ return `${p.objective?.slice(0, 40) || p.id} (${p.status}, ${tasksDone}/${p.tasks.length} tasks)`;
81
+ });
82
+ sections.push({
83
+ label: active.length === 1 ? 'Active plan' : `Active plans (${active.length})`,
84
+ content: summaries.join('; '),
85
+ });
86
+ }
87
+ } catch {
88
+ // Planner unavailable — skip
89
+ }
90
+
91
+ // 3. Recent vault captures
92
+ try {
93
+ const recent = vault.getRecent(10);
94
+ dataPoints += recent.length;
95
+ if (recent.length > 0) {
96
+ const count = Math.min(recent.length, 5);
97
+ const titles = recent.slice(0, 3).map((e) => e.title.slice(0, 50));
98
+ sections.push({
99
+ label: 'Recent captures',
100
+ content: `${count} entries — ${titles.join(', ')}${count > 3 ? '...' : ''}`,
101
+ });
102
+ }
103
+ } catch {
104
+ // Vault unavailable — skip
105
+ }
106
+
107
+ // 4. Brain recommendations
108
+ try {
109
+ const recs = brainIntelligence.recommend({ limit: 3 });
110
+ dataPoints += recs.length;
111
+ if (recs.length > 0) {
112
+ const items = recs.map((r) => `"${r.pattern}" (strength: ${r.strength.toFixed(2)})`);
113
+ sections.push({
114
+ label: 'Brain recommends',
115
+ content: items.join(', '),
116
+ });
117
+ }
118
+ } catch {
119
+ // Brain unavailable — skip
120
+ }
121
+
122
+ // 5. Stale knowledge / health warnings
123
+ try {
124
+ const health = curator.healthAudit();
125
+ dataPoints += 1;
126
+ const warnings: string[] = [];
127
+ if (health.score < 70) {
128
+ warnings.push(`vault health: ${health.score}/100`);
129
+ }
130
+ if (health.recommendations && health.recommendations.length > 0) {
131
+ warnings.push(health.recommendations[0]);
132
+ }
133
+ if (warnings.length > 0) {
134
+ sections.push({
135
+ label: 'Attention',
136
+ content: warnings.join('. '),
137
+ });
138
+ }
139
+ } catch {
140
+ // Curator unavailable — skip
141
+ }
142
+
143
+ return {
144
+ sections: sections.slice(0, maxSections),
145
+ generatedAt: Date.now(),
146
+ dataPointsConsulted: dataPoints,
147
+ } satisfies SessionBriefing;
148
+ },
149
+ },
150
+ ];
151
+ }
152
+
153
+ function formatTimeAgo(timestamp: number): string {
154
+ const diff = Date.now() - timestamp;
155
+ const minutes = Math.floor(diff / 60000);
156
+ if (minutes < 60) return `${minutes}m ago`;
157
+ const hours = Math.floor(minutes / 60);
158
+ if (hours < 24) return `${hours}h ago`;
159
+ const days = Math.floor(hours / 24);
160
+ return `${days}d ago`;
161
+ }
@@ -28,6 +28,13 @@ import type { VaultBranching } from '../vault/vault-branching.js';
28
28
  import type { ContextEngine } from '../context/context-engine.js';
29
29
  import type { AgencyManager } from '../agency/agency-manager.js';
30
30
  import type { KnowledgeReview } from '../vault/knowledge-review.js';
31
+ import type { LinkManager } from '../vault/linking.js';
32
+ import type { LearningRadar } from '../brain/learning-radar.js';
33
+ import type { TextIngester } from '../intake/text-ingester.js';
34
+ import type { KnowledgeSynthesizer } from '../brain/knowledge-synthesizer.js';
35
+ import type { ChainRunner } from '../flows/chain-runner.js';
36
+ import type { JobQueue } from '../queue/job-queue.js';
37
+ import type { PipelineRunner } from '../queue/pipeline-runner.js';
31
38
 
32
39
  /**
33
40
  * Configuration for creating an agent runtime.
@@ -48,6 +55,10 @@ export interface AgentRuntimeConfig {
48
55
  logLevel?: LogLevel;
49
56
  /** Path to shared global vault. Default: ~/.soleri/vault.db */
50
57
  sharedVaultPath?: string;
58
+ /** Enable Cognee vector search integration. Default: false (opt-in). */
59
+ cognee?: boolean;
60
+ /** Path to the agent's root directory (containing agent.yaml, instructions/, etc.). Optional — set by engine binary. */
61
+ agentDir?: string;
51
62
  }
52
63
 
53
64
  /**
@@ -63,7 +74,8 @@ export interface AgentRuntime {
63
74
  planner: Planner;
64
75
  curator: Curator;
65
76
  governance: Governance;
66
- cognee: CogneeClient;
77
+ /** Cognee vector search client. Null when Cognee integration is disabled. */
78
+ cognee: CogneeClient | null;
67
79
  loop: LoopManager;
68
80
  identityManager: IdentityManager;
69
81
  intentRouter: IntentRouter;
@@ -72,7 +84,8 @@ export interface AgentRuntime {
72
84
  telemetry: Telemetry;
73
85
  projectRegistry: ProjectRegistry;
74
86
  templateManager: TemplateManager;
75
- syncManager: CogneeSyncManager;
87
+ /** Cognee sync manager. Null when Cognee integration is disabled. */
88
+ syncManager: CogneeSyncManager | null;
76
89
  intakePipeline: IntakePipeline;
77
90
  /** Mutable auth policy — controls facade dispatch enforcement. */
78
91
  authPolicy: AuthPolicy;
@@ -96,6 +109,20 @@ export interface AgentRuntime {
96
109
  agencyManager: AgencyManager;
97
110
  /** Knowledge review — team review workflows (submit/approve/reject). */
98
111
  knowledgeReview: KnowledgeReview;
112
+ /** Link manager — Zettelkasten bidirectional linking with auto-link on ingestion. */
113
+ linkManager: LinkManager;
114
+ /** Learning radar — automatic pattern detection from session signals. */
115
+ learningRadar: LearningRadar;
116
+ /** Text ingester — ingest articles, transcripts, and plain text into vault. */
117
+ textIngester: TextIngester;
118
+ /** Knowledge synthesizer — turn vault knowledge into briefs, outlines, posts. */
119
+ knowledgeSynthesizer: KnowledgeSynthesizer;
120
+ /** Chain runner — composable multi-step workflows with data flow and gates. */
121
+ chainRunner: ChainRunner;
122
+ /** Job queue — SQLite-backed async job processing with DAG dependencies. */
123
+ jobQueue: JobQueue;
124
+ /** Pipeline runner — background polling loop for job execution. */
125
+ pipelineRunner: PipelineRunner;
99
126
  /** Timestamp (ms since epoch) when this runtime was created. */
100
127
  createdAt: number;
101
128
  /** Close the vault database connection. Call on shutdown. */