@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
@@ -2,6 +2,7 @@ import type { PersistenceProvider } from '../persistence/types.js';
2
2
  import { SQLitePersistenceProvider } from '../persistence/sqlite-provider.js';
3
3
  import type { IntelligenceEntry } from '../intelligence/types.js';
4
4
  import { computeContentHash } from './content-hash.js';
5
+ import type { LinkManager } from './linking.js';
5
6
 
6
7
  export interface SearchResult {
7
8
  entry: IntelligenceEntry;
@@ -29,6 +30,16 @@ export interface Memory {
29
30
  topics: string[];
30
31
  filesModified: string[];
31
32
  toolsUsed: string[];
33
+ /** What the user was trying to accomplish. */
34
+ intent: string | null;
35
+ /** Key decisions made and their rationale. */
36
+ decisions: string[];
37
+ /** Where things stand at capture time. */
38
+ currentState: string | null;
39
+ /** What should happen next session. */
40
+ nextSteps: string[];
41
+ /** Vault entries that informed this session. */
42
+ vaultEntriesReferenced: string[];
32
43
  createdAt: number;
33
44
  archivedAt: number | null;
34
45
  }
@@ -42,6 +53,10 @@ export class Vault {
42
53
  private provider: PersistenceProvider;
43
54
  private sqliteProvider: SQLitePersistenceProvider | null;
44
55
  private syncManager: import('../cognee/sync-manager.js').CogneeSyncManager | null = null;
56
+ private linkManager: LinkManager | null = null;
57
+ private autoLinkEnabled = true;
58
+ /** Minimum number of FTS5 suggestions to auto-link. Top N are linked. */
59
+ private autoLinkMaxLinks = 3;
45
60
 
46
61
  /**
47
62
  * Create a Vault with a PersistenceProvider or a SQLite path (backward compat).
@@ -67,6 +82,28 @@ export class Vault {
67
82
  this.syncManager = mgr;
68
83
  }
69
84
 
85
+ setLinkManager(mgr: LinkManager, opts?: { enabled?: boolean; maxLinks?: number }): void {
86
+ this.linkManager = mgr;
87
+ if (opts?.enabled !== undefined) this.autoLinkEnabled = opts.enabled;
88
+ if (opts?.maxLinks !== undefined) this.autoLinkMaxLinks = opts.maxLinks;
89
+ }
90
+
91
+ /**
92
+ * Auto-link a newly added entry using FTS5 suggestions.
93
+ * Called after seed() for each entry. Creates links for top N suggestions.
94
+ */
95
+ private autoLink(entryId: string): void {
96
+ if (!this.linkManager || !this.autoLinkEnabled) return;
97
+ try {
98
+ const suggestions = this.linkManager.suggestLinks(entryId, this.autoLinkMaxLinks);
99
+ for (const s of suggestions) {
100
+ this.linkManager.addLink(entryId, s.entryId, s.suggestedType, `auto: ${s.reason}`);
101
+ }
102
+ } catch {
103
+ // Auto-linking is best-effort — never block ingestion
104
+ }
105
+ }
106
+
70
107
  /** Backward-compatible factory. */
71
108
  static createWithSQLite(dbPath: string = ':memory:'): Vault {
72
109
  return new Vault(dbPath);
@@ -140,7 +177,23 @@ export class Vault {
140
177
  CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
141
178
  id, context, summary, topics,
142
179
  content='memories', content_rowid='rowid', tokenize='porter unicode61'
143
- );
180
+ );`);
181
+
182
+ // Add new columns if they don't exist (backward-compatible migration)
183
+ const memCols = this.provider
184
+ .all<{ name: string }>(`PRAGMA table_info(memories)`)
185
+ .map((r) => r.name);
186
+ if (!memCols.includes('intent')) {
187
+ this.provider.execSql(`
188
+ ALTER TABLE memories ADD COLUMN intent TEXT;
189
+ ALTER TABLE memories ADD COLUMN decisions TEXT NOT NULL DEFAULT '[]';
190
+ ALTER TABLE memories ADD COLUMN current_state TEXT;
191
+ ALTER TABLE memories ADD COLUMN next_steps TEXT NOT NULL DEFAULT '[]';
192
+ ALTER TABLE memories ADD COLUMN vault_entries_referenced TEXT NOT NULL DEFAULT '[]';
193
+ `);
194
+ }
195
+
196
+ this.provider.execSql(`
144
197
  CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
145
198
  INSERT INTO memories_fts(rowid,id,context,summary,topics) VALUES(new.rowid,new.id,new.context,new.summary,new.topics);
146
199
  END;
@@ -178,6 +231,7 @@ export class Vault {
178
231
  `);
179
232
  this.migrateBrainSchema();
180
233
  this.migrateTemporalSchema();
234
+ this.migrateOriginColumn();
181
235
  this.migrateContentHash();
182
236
  this.migrateTierColumn();
183
237
  }
@@ -206,6 +260,17 @@ export class Vault {
206
260
  }
207
261
  }
208
262
 
263
+ private migrateOriginColumn(): void {
264
+ try {
265
+ this.provider.run(
266
+ "ALTER TABLE entries ADD COLUMN origin TEXT NOT NULL DEFAULT 'user' CHECK(origin IN ('agent', 'pack', 'user'))",
267
+ );
268
+ } catch {
269
+ // Column already exists
270
+ }
271
+ this.provider.execSql('CREATE INDEX IF NOT EXISTS idx_entries_origin ON entries(origin)');
272
+ }
273
+
209
274
  private migrateContentHash(): void {
210
275
  try {
211
276
  this.provider.run('ALTER TABLE entries ADD COLUMN content_hash TEXT');
@@ -293,12 +358,12 @@ export class Vault {
293
358
 
294
359
  seed(entries: IntelligenceEntry[]): number {
295
360
  const sql = `
296
- INSERT INTO entries (id,type,domain,title,severity,description,context,example,counter_example,why,tags,applies_to,valid_from,valid_until,content_hash,tier)
297
- VALUES (@id,@type,@domain,@title,@severity,@description,@context,@example,@counterExample,@why,@tags,@appliesTo,@validFrom,@validUntil,@contentHash,@tier)
361
+ INSERT INTO entries (id,type,domain,title,severity,description,context,example,counter_example,why,tags,applies_to,valid_from,valid_until,content_hash,tier,origin)
362
+ VALUES (@id,@type,@domain,@title,@severity,@description,@context,@example,@counterExample,@why,@tags,@appliesTo,@validFrom,@validUntil,@contentHash,@tier,@origin)
298
363
  ON CONFLICT(id) DO UPDATE SET type=excluded.type,domain=excluded.domain,title=excluded.title,severity=excluded.severity,
299
364
  description=excluded.description,context=excluded.context,example=excluded.example,counter_example=excluded.counter_example,
300
365
  why=excluded.why,tags=excluded.tags,applies_to=excluded.applies_to,valid_from=excluded.valid_from,valid_until=excluded.valid_until,
301
- content_hash=excluded.content_hash,tier=excluded.tier,updated_at=unixepoch()
366
+ content_hash=excluded.content_hash,tier=excluded.tier,origin=excluded.origin,updated_at=unixepoch()
302
367
  `;
303
368
  return this.provider.transaction(() => {
304
369
  let count = 0;
@@ -320,16 +385,42 @@ export class Vault {
320
385
  validUntil: entry.validUntil ?? null,
321
386
  contentHash: computeContentHash(entry),
322
387
  tier: entry.tier ?? 'agent',
388
+ origin: entry.origin ?? 'agent',
323
389
  });
324
390
  count++;
325
391
  if (this.syncManager) {
326
392
  this.syncManager.enqueue('ingest', entry.id, entry);
327
393
  }
328
394
  }
395
+ // Auto-link after all entries are inserted (so they can link to each other).
396
+ // Skip for large batches (>100) — use relink_vault for bulk imports.
397
+ if (entries.length <= 100) {
398
+ for (const entry of entries) {
399
+ this.autoLink(entry.id);
400
+ }
401
+ }
329
402
  return count;
330
403
  });
331
404
  }
332
405
 
406
+ /**
407
+ * Install a knowledge pack — seeds entries with origin:'pack' and content-hash dedup.
408
+ * Packs are installable domain knowledge (UX laws, design tokens, clean code rules).
409
+ * Unlike seed(), this forces origin:'pack' regardless of what the entry says.
410
+ */
411
+ installPack(entries: IntelligenceEntry[]): { installed: number; skipped: number } {
412
+ let installed = 0;
413
+ let skipped = 0;
414
+ // Tag all entries with origin:'pack' and seed — seed() handles its own transaction
415
+ const tagged = entries.map((e) => ({ ...e, origin: 'pack' as const }));
416
+ const results = this.seedDedup(tagged);
417
+ for (const r of results) {
418
+ if (r.action === 'inserted') installed++;
419
+ else skipped++;
420
+ }
421
+ return { installed, skipped };
422
+ }
423
+
333
424
  /**
334
425
  * Seed entries with content-hash dedup. Returns per-entry results.
335
426
  * Unlike seed(), skips entries whose content already exists in the vault.
@@ -360,6 +451,7 @@ export class Vault {
360
451
  domain?: string;
361
452
  type?: string;
362
453
  severity?: string;
454
+ origin?: 'agent' | 'pack' | 'user';
363
455
  limit?: number;
364
456
  includeExpired?: boolean;
365
457
  },
@@ -379,6 +471,10 @@ export class Vault {
379
471
  filters.push('e.severity = @severity');
380
472
  fp.severity = options.severity;
381
473
  }
474
+ if (options?.origin) {
475
+ filters.push('e.origin = @origin');
476
+ fp.origin = options.origin;
477
+ }
382
478
  if (!options?.includeExpired) {
383
479
  const now = Math.floor(Date.now() / 1000);
384
480
  filters.push('(e.valid_until IS NULL OR e.valid_until > @now)');
@@ -386,14 +482,30 @@ export class Vault {
386
482
  fp.now = now;
387
483
  }
388
484
  const wc = filters.length > 0 ? `AND ${filters.join(' AND ')}` : '';
485
+
486
+ // Build FTS5 query: use OR between terms for broader matching,
487
+ // with title column boosted 3x for relevance ranking.
488
+ // FTS5 BM25 with default AND degrades with more entries because
489
+ // fewer documents match ALL terms simultaneously.
490
+ const ftsQuery = buildFtsQuery(query);
491
+
389
492
  try {
390
493
  const rows = this.provider.all<Record<string, unknown>>(
391
- `SELECT e.*, -rank as score FROM entries_fts fts JOIN entries e ON e.rowid = fts.rowid WHERE entries_fts MATCH @query ${wc} ORDER BY score DESC LIMIT @limit`,
392
- { query, limit, ...fp },
494
+ `SELECT e.*, bm25(entries_fts, 5.0, 10.0, 3.0, 1.0, 2.0) as score FROM entries_fts fts JOIN entries e ON e.rowid = fts.rowid WHERE entries_fts MATCH @query ${wc} ORDER BY score ASC LIMIT @limit`,
495
+ { query: ftsQuery, limit, ...fp },
393
496
  );
394
497
  return rows.map(rowToSearchResult);
395
498
  } catch {
396
- return [];
499
+ // Fallback: try original query if FTS5 syntax fails
500
+ try {
501
+ const rows = this.provider.all<Record<string, unknown>>(
502
+ `SELECT e.*, -rank as score FROM entries_fts fts JOIN entries e ON e.rowid = fts.rowid WHERE entries_fts MATCH @query ${wc} ORDER BY score DESC LIMIT @limit`,
503
+ { query, limit, ...fp },
504
+ );
505
+ return rows.map(rowToSearchResult);
506
+ } catch {
507
+ return [];
508
+ }
397
509
  }
398
510
  }
399
511
 
@@ -408,6 +520,7 @@ export class Vault {
408
520
  domain?: string;
409
521
  type?: string;
410
522
  severity?: string;
523
+ origin?: 'agent' | 'pack' | 'user';
411
524
  tags?: string[];
412
525
  limit?: number;
413
526
  offset?: number;
@@ -427,6 +540,10 @@ export class Vault {
427
540
  filters.push('severity = @severity');
428
541
  params.severity = options.severity;
429
542
  }
543
+ if (options?.origin) {
544
+ filters.push('origin = @origin');
545
+ params.origin = options.origin;
546
+ }
430
547
  if (options?.tags?.length) {
431
548
  const c = options.tags.map((t, i) => {
432
549
  params[`tag${i}`] = `%"${t}"%`;
@@ -619,7 +736,7 @@ export class Vault {
619
736
  }
620
737
  return {
621
738
  total: rows.length,
622
- buckets: bucketDefs.map((b, i) => ({ ...b, count: counts[i] })),
739
+ buckets: bucketDefs.map((b, i) => Object.assign({}, b, { count: counts[i] })),
623
740
  oldestTimestamp: oldest,
624
741
  newestTimestamp: newest,
625
742
  };
@@ -670,7 +787,8 @@ export class Vault {
670
787
  captureMemory(memory: Omit<Memory, 'id' | 'createdAt' | 'archivedAt'>): Memory {
671
788
  const id = `mem-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
672
789
  this.provider.run(
673
- `INSERT INTO memories (id, project_path, type, context, summary, topics, files_modified, tools_used) VALUES (@id, @projectPath, @type, @context, @summary, @topics, @filesModified, @toolsUsed)`,
790
+ `INSERT INTO memories (id, project_path, type, context, summary, topics, files_modified, tools_used, intent, decisions, current_state, next_steps, vault_entries_referenced)
791
+ VALUES (@id, @projectPath, @type, @context, @summary, @topics, @filesModified, @toolsUsed, @intent, @decisions, @currentState, @nextSteps, @vaultEntriesReferenced)`,
674
792
  {
675
793
  id,
676
794
  projectPath: memory.projectPath,
@@ -680,6 +798,11 @@ export class Vault {
680
798
  topics: JSON.stringify(memory.topics),
681
799
  filesModified: JSON.stringify(memory.filesModified),
682
800
  toolsUsed: JSON.stringify(memory.toolsUsed),
801
+ intent: memory.intent ?? null,
802
+ decisions: JSON.stringify(memory.decisions ?? []),
803
+ currentState: memory.currentState ?? null,
804
+ nextSteps: JSON.stringify(memory.nextSteps ?? []),
805
+ vaultEntriesReferenced: JSON.stringify(memory.vaultEntriesReferenced ?? []),
683
806
  },
684
807
  );
685
808
  return this.getMemory(id)!;
@@ -687,7 +810,7 @@ export class Vault {
687
810
 
688
811
  searchMemories(
689
812
  query: string,
690
- options?: { type?: string; projectPath?: string; limit?: number },
813
+ options?: { type?: string; projectPath?: string; intent?: string; limit?: number },
691
814
  ): Memory[] {
692
815
  const limit = options?.limit ?? 10;
693
816
  const filters: string[] = ['m.archived_at IS NULL'];
@@ -700,6 +823,10 @@ export class Vault {
700
823
  filters.push('m.project_path = @projectPath');
701
824
  fp.projectPath = options.projectPath;
702
825
  }
826
+ if (options?.intent) {
827
+ filters.push('m.intent = @intent');
828
+ fp.intent = options.intent;
829
+ }
703
830
  const wc = filters.length > 0 ? `AND ${filters.join(' AND ')}` : '';
704
831
  try {
705
832
  const rows = this.provider.all<Record<string, unknown>>(
@@ -1133,13 +1260,43 @@ function rowToEntry(row: Record<string, unknown>): IntelligenceEntry {
1133
1260
  tags: JSON.parse((row.tags as string) || '[]'),
1134
1261
  appliesTo: JSON.parse((row.applies_to as string) || '[]'),
1135
1262
  tier: (row.tier as IntelligenceEntry['tier']) ?? undefined,
1263
+ origin: (row.origin as IntelligenceEntry['origin']) ?? undefined,
1136
1264
  validFrom: (row.valid_from as number) ?? undefined,
1137
1265
  validUntil: (row.valid_until as number) ?? undefined,
1138
1266
  };
1139
1267
  }
1140
1268
 
1141
1269
  function rowToSearchResult(row: Record<string, unknown>): SearchResult {
1142
- return { entry: rowToEntry(row), score: row.score as number };
1270
+ // bm25() returns negative scores (lower = better), normalize to positive
1271
+ const rawScore = row.score as number;
1272
+ const score = rawScore < 0 ? -rawScore : rawScore;
1273
+ return { entry: rowToEntry(row), score };
1274
+ }
1275
+
1276
+ /**
1277
+ * Build an FTS5 query from natural language input.
1278
+ *
1279
+ * Converts "React render performance memo" to:
1280
+ * {title}: (react OR render OR performance OR memo) OR (react OR render OR performance OR memo)
1281
+ *
1282
+ * Uses OR matching (not AND) so results include partial matches.
1283
+ * FTS5 BM25 ranks documents with more matching terms higher.
1284
+ * Title column is boosted via bm25() weights in the SQL query.
1285
+ */
1286
+ function buildFtsQuery(query: string): string {
1287
+ const terms = query
1288
+ .toLowerCase()
1289
+ .split(/\s+/)
1290
+ .filter((t) => t.length >= 2)
1291
+ .map((t) => t.replace(/[^a-z0-9]/g, ''))
1292
+ .filter(Boolean);
1293
+
1294
+ if (terms.length === 0) return query;
1295
+ if (terms.length === 1) return terms[0];
1296
+
1297
+ // Use OR to match any term — BM25 ranks by how many terms match
1298
+ const orTerms = terms.join(' OR ');
1299
+ return orTerms;
1143
1300
  }
1144
1301
 
1145
1302
  function rowToMemory(row: Record<string, unknown>): Memory {
@@ -1152,6 +1309,11 @@ function rowToMemory(row: Record<string, unknown>): Memory {
1152
1309
  topics: JSON.parse((row.topics as string) || '[]'),
1153
1310
  filesModified: JSON.parse((row.files_modified as string) || '[]'),
1154
1311
  toolsUsed: JSON.parse((row.tools_used as string) || '[]'),
1312
+ intent: (row.intent as string) ?? null,
1313
+ decisions: JSON.parse((row.decisions as string) || '[]'),
1314
+ currentState: (row.current_state as string) ?? null,
1315
+ nextSteps: JSON.parse((row.next_steps as string) || '[]'),
1316
+ vaultEntriesReferenced: JSON.parse((row.vault_entries_referenced as string) || '[]'),
1155
1317
  createdAt: row.created_at as number,
1156
1318
  archivedAt: (row.archived_at as number) ?? null,
1157
1319
  };