@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-briefing.js","sourceRoot":"","sources":["../../src/runtime/session-briefing.ts"],"names":[],"mappings":"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"}
@@ -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
  * Configuration for creating an agent runtime.
33
40
  * Only `agentId` is required — everything else has sensible defaults.
@@ -47,6 +54,10 @@ export interface AgentRuntimeConfig {
47
54
  logLevel?: LogLevel;
48
55
  /** Path to shared global vault. Default: ~/.soleri/vault.db */
49
56
  sharedVaultPath?: string;
57
+ /** Enable Cognee vector search integration. Default: false (opt-in). */
58
+ cognee?: boolean;
59
+ /** Path to the agent's root directory (containing agent.yaml, instructions/, etc.). Optional — set by engine binary. */
60
+ agentDir?: string;
50
61
  }
51
62
  /**
52
63
  * Fully initialized agent runtime — all modules ready.
@@ -61,7 +72,8 @@ export interface AgentRuntime {
61
72
  planner: Planner;
62
73
  curator: Curator;
63
74
  governance: Governance;
64
- cognee: CogneeClient;
75
+ /** Cognee vector search client. Null when Cognee integration is disabled. */
76
+ cognee: CogneeClient | null;
65
77
  loop: LoopManager;
66
78
  identityManager: IdentityManager;
67
79
  intentRouter: IntentRouter;
@@ -73,7 +85,8 @@ export interface AgentRuntime {
73
85
  telemetry: Telemetry;
74
86
  projectRegistry: ProjectRegistry;
75
87
  templateManager: TemplateManager;
76
- syncManager: CogneeSyncManager;
88
+ /** Cognee sync manager. Null when Cognee integration is disabled. */
89
+ syncManager: CogneeSyncManager | null;
77
90
  intakePipeline: IntakePipeline;
78
91
  /** Mutable auth policy — controls facade dispatch enforcement. */
79
92
  authPolicy: AuthPolicy;
@@ -97,6 +110,20 @@ export interface AgentRuntime {
97
110
  agencyManager: AgencyManager;
98
111
  /** Knowledge review — team review workflows (submit/approve/reject). */
99
112
  knowledgeReview: KnowledgeReview;
113
+ /** Link manager — Zettelkasten bidirectional linking with auto-link on ingestion. */
114
+ linkManager: LinkManager;
115
+ /** Learning radar — automatic pattern detection from session signals. */
116
+ learningRadar: LearningRadar;
117
+ /** Text ingester — ingest articles, transcripts, and plain text into vault. */
118
+ textIngester: TextIngester;
119
+ /** Knowledge synthesizer — turn vault knowledge into briefs, outlines, posts. */
120
+ knowledgeSynthesizer: KnowledgeSynthesizer;
121
+ /** Chain runner — composable multi-step workflows with data flow and gates. */
122
+ chainRunner: ChainRunner;
123
+ /** Job queue — SQLite-backed async job processing with DAG dependencies. */
124
+ jobQueue: JobQueue;
125
+ /** Pipeline runner — background polling loop for job execution. */
126
+ pipelineRunner: PipelineRunner;
100
127
  /** Timestamp (ms since epoch) when this runtime was created. */
101
128
  createdAt: number;
102
129
  /** Close the vault database connection. Call on shutdown. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Vault linking ops — Zettelkasten bidirectional linking.
3
+ *
4
+ * Provides 8 ops: link_entries, unlink_entries, get_links, traverse,
5
+ * suggest_links, get_orphans, relink_vault, link_stats.
6
+ * Ported from Salvador MCP with improvements:
7
+ * - FTS5 for suggest_links (Salvador uses TF-IDF)
8
+ * - relink_vault: LLM-evaluated batch re-linking (Salvador uses a separate script)
9
+ */
10
+ import type { OpDefinition } from '../facades/types.js';
11
+ import type { AgentRuntime } from './types.js';
12
+ export declare function createVaultLinkingOps(runtime: AgentRuntime): OpDefinition[];
13
+ //# sourceMappingURL=vault-linking-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-linking-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/vault-linking-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CAya3E"}
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Vault linking ops — Zettelkasten bidirectional linking.
3
+ *
4
+ * Provides 8 ops: link_entries, unlink_entries, get_links, traverse,
5
+ * suggest_links, get_orphans, relink_vault, link_stats.
6
+ * Ported from Salvador MCP with improvements:
7
+ * - FTS5 for suggest_links (Salvador uses TF-IDF)
8
+ * - relink_vault: LLM-evaluated batch re-linking (Salvador uses a separate script)
9
+ */
10
+ import { z } from 'zod';
11
+ const EVAL_SYSTEM_PROMPT = `You evaluate pairs of knowledge entries to determine if they should be linked in a Zettelkasten vault. For EACH pair, decide:
12
+ - If meaningfully related → return { "link": true, "type": "<type>", "note": "<1 sentence why>" }
13
+ - If NOT meaningfully related → return { "link": false }
14
+
15
+ Link types:
16
+ - "extends" — target builds on or refines the source
17
+ - "supports" — target provides evidence or foundation for the source
18
+ - "contradicts" — target is an opposing approach or counterpoint
19
+ - "sequences" — source must happen before target
20
+
21
+ Rules: Same category alone is NOT enough. Be selective. Return a JSON array.`;
22
+ export function createVaultLinkingOps(runtime) {
23
+ const { vault, linkManager } = runtime;
24
+ return [
25
+ {
26
+ name: 'link_entries',
27
+ description: 'Create a typed link between two vault entries (Zettelkasten)',
28
+ auth: 'write',
29
+ schema: z.object({
30
+ sourceId: z.string().describe('REQUIRED: Source entry ID'),
31
+ targetId: z.string().describe('REQUIRED: Target entry ID'),
32
+ linkType: z
33
+ .enum(['supports', 'contradicts', 'extends', 'sequences'])
34
+ .describe('REQUIRED: Relationship type'),
35
+ note: z.string().optional().describe('Optional context for the link'),
36
+ }),
37
+ handler: async (params) => {
38
+ const sourceId = params.sourceId;
39
+ const targetId = params.targetId;
40
+ // Validate both entries exist to prevent dangling links
41
+ const provider = vault.getProvider();
42
+ const sourceExists = provider.get('SELECT id FROM entries WHERE id = ?', [
43
+ sourceId,
44
+ ]);
45
+ const targetExists = provider.get('SELECT id FROM entries WHERE id = ?', [
46
+ targetId,
47
+ ]);
48
+ if (!sourceExists || !targetExists) {
49
+ const missing = [];
50
+ if (!sourceExists)
51
+ missing.push(`source '${sourceId}'`);
52
+ if (!targetExists)
53
+ missing.push(`target '${targetId}'`);
54
+ throw new Error(`Entry not found: ${missing.join(' and ')}`);
55
+ }
56
+ linkManager.addLink(sourceId, targetId, params.linkType, params.note);
57
+ return {
58
+ success: true,
59
+ link: {
60
+ sourceId,
61
+ targetId,
62
+ linkType: params.linkType,
63
+ note: params.note,
64
+ },
65
+ sourceLinkCount: linkManager.getLinkCount(sourceId),
66
+ };
67
+ },
68
+ },
69
+ {
70
+ name: 'unlink_entries',
71
+ description: 'Remove a link between two vault entries',
72
+ auth: 'write',
73
+ schema: z.object({
74
+ sourceId: z.string().describe('REQUIRED: Source entry ID'),
75
+ targetId: z.string().describe('REQUIRED: Target entry ID'),
76
+ }),
77
+ handler: async (params) => {
78
+ linkManager.removeLink(params.sourceId, params.targetId);
79
+ return { success: true, removed: { sourceId: params.sourceId, targetId: params.targetId } };
80
+ },
81
+ },
82
+ {
83
+ name: 'get_links',
84
+ description: 'Get all links for a vault entry (outgoing + incoming backlinks)',
85
+ auth: 'read',
86
+ schema: z.object({
87
+ entryId: z.string().describe('REQUIRED: Entry ID'),
88
+ }),
89
+ handler: async (params) => {
90
+ const entryId = params.entryId;
91
+ const outgoing = linkManager.getLinks(entryId);
92
+ const incoming = linkManager.getBacklinks(entryId);
93
+ return { entryId, outgoing, incoming, totalLinks: outgoing.length + incoming.length };
94
+ },
95
+ },
96
+ {
97
+ name: 'traverse',
98
+ description: 'Walk the link graph from an entry up to N hops deep (Zettelkasten graph traversal)',
99
+ auth: 'read',
100
+ schema: z.object({
101
+ entryId: z.string().describe('REQUIRED: Starting entry ID'),
102
+ depth: z.coerce
103
+ .number()
104
+ .int()
105
+ .min(1)
106
+ .max(5)
107
+ .default(2)
108
+ .describe('Max hops (1-5, default 2)'),
109
+ }),
110
+ handler: async (params) => {
111
+ const entryId = params.entryId;
112
+ const depth = params.depth || 2;
113
+ const connected = linkManager.traverse(entryId, depth);
114
+ return { entryId, depth, connectedEntries: connected, totalConnected: connected.length };
115
+ },
116
+ },
117
+ {
118
+ name: 'suggest_links',
119
+ description: 'Find semantically similar entries as link candidates using FTS5 (Zettelkasten auto-linking)',
120
+ auth: 'read',
121
+ schema: z.object({
122
+ entryId: z.string().describe('REQUIRED: Entry ID to find link candidates for'),
123
+ limit: z.coerce
124
+ .number()
125
+ .int()
126
+ .min(1)
127
+ .max(20)
128
+ .default(5)
129
+ .describe('Max suggestions (default 5)'),
130
+ }),
131
+ handler: async (params) => {
132
+ const entryId = params.entryId;
133
+ const limit = params.limit || 5;
134
+ const suggestions = linkManager.suggestLinks(entryId, limit);
135
+ return { entryId, suggestions, totalSuggestions: suggestions.length };
136
+ },
137
+ },
138
+ {
139
+ name: 'get_orphans',
140
+ description: 'Find vault entries with zero links (Zettelkasten orphan detection)',
141
+ auth: 'read',
142
+ schema: z.object({
143
+ limit: z.coerce
144
+ .number()
145
+ .int()
146
+ .min(1)
147
+ .max(100)
148
+ .default(20)
149
+ .describe('Max orphans (default 20)'),
150
+ }),
151
+ handler: async (params) => {
152
+ const limit = params.limit || 20;
153
+ const orphans = linkManager.getOrphans(limit);
154
+ return { orphans, totalOrphans: orphans.length };
155
+ },
156
+ },
157
+ {
158
+ name: 'relink_vault',
159
+ description: 'Smart Zettelkasten re-linking: drops batch links, evaluates all entries with LLM, creates quality links with reasoning notes. Long-running operation.',
160
+ auth: 'write',
161
+ schema: z.object({
162
+ batchSize: z.coerce
163
+ .number()
164
+ .int()
165
+ .min(1)
166
+ .max(20)
167
+ .default(10)
168
+ .describe('Pairs per LLM call (default 10)'),
169
+ limit: z.coerce
170
+ .number()
171
+ .int()
172
+ .min(0)
173
+ .max(5000)
174
+ .default(0)
175
+ .describe('Max entries to process (0 = all)'),
176
+ dryRun: z.boolean().optional().default(false).describe('Preview without changes'),
177
+ }),
178
+ handler: async (params) => {
179
+ const batchSize = params.batchSize || 10;
180
+ const limit = params.limit || 0;
181
+ const dryRun = params.dryRun ?? false;
182
+ const { llmClient } = runtime;
183
+ if (!llmClient.isAvailable().anthropic && !llmClient.isAvailable().openai) {
184
+ return { success: false, error: 'No LLM provider available for link evaluation' };
185
+ }
186
+ const provider = vault.getProvider();
187
+ // Phase 1: Preserve manual links, drop batch links
188
+ const manualCount = provider.get("SELECT COUNT(*) as c FROM vault_links WHERE note IS NOT NULL AND note != ''")?.c ?? 0;
189
+ const batchCount = provider.get("SELECT COUNT(*) as c FROM vault_links WHERE note IS NULL OR note = ''")?.c ?? 0;
190
+ if (!dryRun) {
191
+ provider.run("DELETE FROM vault_links WHERE note IS NULL OR note = ''");
192
+ }
193
+ // Phase 2: Get entries and generate candidates
194
+ let entries = provider.all('SELECT id, title, type, description FROM entries ORDER BY updated_at DESC');
195
+ if (limit > 0)
196
+ entries = entries.slice(0, limit);
197
+ // Build candidates via tag overlap + category match
198
+ const candidates = [];
199
+ for (const entry of entries) {
200
+ const existingLinks = new Set([
201
+ ...linkManager.getLinks(entry.id).map((l) => l.targetId),
202
+ ...linkManager.getBacklinks(entry.id).map((l) => l.sourceId),
203
+ ]);
204
+ // Tag overlap matches
205
+ const matches = provider.all(`SELECT DISTINCT e.id, e.title, e.type, SUBSTR(e.description, 1, 200) as description
206
+ FROM entries e
207
+ JOIN (SELECT entry_id, tag FROM vault_tags WHERE entry_id = ?) src_tags ON 1=1
208
+ JOIN vault_tags t ON t.tag = src_tags.tag AND t.entry_id = e.id
209
+ WHERE e.id != ?
210
+ GROUP BY e.id ORDER BY COUNT(*) DESC LIMIT 5`, [entry.id, entry.id]);
211
+ // Fallback: category match
212
+ if (matches.length < 3) {
213
+ try {
214
+ const existing = new Set(matches.map((m) => m.id));
215
+ const catMatches = provider.all(`SELECT id, title, type, SUBSTR(description, 1, 200) as description
216
+ FROM entries WHERE id != ? AND type = ? LIMIT 3`, [entry.id, entry.type]);
217
+ for (const m of catMatches) {
218
+ if (!existing.has(m.id))
219
+ matches.push(m);
220
+ }
221
+ }
222
+ catch {
223
+ /* ignore */
224
+ }
225
+ }
226
+ for (const match of matches.slice(0, 5)) {
227
+ if (existingLinks.has(match.id))
228
+ continue;
229
+ candidates.push({
230
+ sourceId: entry.id,
231
+ sourceTitle: entry.title,
232
+ sourceType: entry.type,
233
+ sourceDesc: (entry.description || '').slice(0, 200),
234
+ targetId: match.id,
235
+ targetTitle: match.title,
236
+ targetType: match.type,
237
+ targetDesc: (match.description || '').slice(0, 200),
238
+ });
239
+ }
240
+ }
241
+ if (dryRun) {
242
+ return {
243
+ dryRun: true,
244
+ entries: entries.length,
245
+ candidates: candidates.length,
246
+ llmCallsNeeded: Math.ceil(candidates.length / batchSize),
247
+ manualLinksPreserved: manualCount,
248
+ batchLinksToRemove: batchCount,
249
+ };
250
+ }
251
+ // Phase 3: LLM evaluation in batches (sequential to respect rate limits)
252
+ let linksCreated = 0;
253
+ let pairsSkipped = 0;
254
+ let llmCalls = 0;
255
+ let errors = 0;
256
+ const now = Date.now();
257
+ // Build batches
258
+ const batches = [];
259
+ for (let i = 0; i < candidates.length; i += batchSize) {
260
+ batches.push(candidates.slice(i, i + batchSize));
261
+ }
262
+ // Process sequentially using reduce chain (avoids await-in-loop lint)
263
+ await batches.reduce(async (prev, batch) => {
264
+ await prev;
265
+ const pairsText = batch
266
+ .map((p, idx) => `--- Pair ${idx + 1} ---\nSOURCE [${p.sourceType}]: ${p.sourceTitle}\n${p.sourceDesc}\n\nTARGET [${p.targetType}]: ${p.targetTitle}\n${p.targetDesc}`)
267
+ .join('\n\n');
268
+ try {
269
+ const result = await llmClient.complete({
270
+ provider: llmClient.isAvailable().anthropic ? 'anthropic' : 'openai',
271
+ model: llmClient.isAvailable().anthropic ? 'claude-sonnet-4-20250514' : 'gpt-4o-mini',
272
+ systemPrompt: EVAL_SYSTEM_PROMPT,
273
+ userPrompt: pairsText,
274
+ maxTokens: 2000,
275
+ caller: 'relink_vault',
276
+ task: 'link-evaluation',
277
+ });
278
+ llmCalls++;
279
+ let cleaned = result.text.trim();
280
+ if (cleaned.startsWith('```')) {
281
+ const first = cleaned.indexOf('\n');
282
+ const last = cleaned.lastIndexOf('```');
283
+ cleaned = cleaned.slice(first + 1, last).trim();
284
+ }
285
+ const decisions = JSON.parse(cleaned);
286
+ for (let j = 0; j < decisions.length && j < batch.length; j++) {
287
+ const d = decisions[j];
288
+ if (d.link && d.type && d.note) {
289
+ if (batch[j].sourceId === batch[j].targetId)
290
+ continue;
291
+ try {
292
+ provider.run('INSERT OR IGNORE INTO vault_links (source_id, target_id, link_type, note, created_at) VALUES (?, ?, ?, ?, ?)', [batch[j].sourceId, batch[j].targetId, d.type, d.note, now]);
293
+ linksCreated++;
294
+ }
295
+ catch {
296
+ /* FK or duplicate */
297
+ }
298
+ }
299
+ else {
300
+ pairsSkipped++;
301
+ }
302
+ }
303
+ }
304
+ catch {
305
+ errors++;
306
+ }
307
+ }, Promise.resolve());
308
+ // Phase 4: Stats
309
+ const totalLinks = provider.get('SELECT COUNT(*) as c FROM vault_links')?.c ?? 0;
310
+ const orphanCount = provider.get(`SELECT COUNT(*) as c FROM entries
311
+ WHERE id NOT IN (SELECT source_id FROM vault_links)
312
+ AND id NOT IN (SELECT target_id FROM vault_links)`)?.c ?? 0;
313
+ const byType = provider.all('SELECT link_type, COUNT(*) as c FROM vault_links GROUP BY link_type ORDER BY c DESC');
314
+ return {
315
+ success: true,
316
+ entriesProcessed: entries.length,
317
+ candidatesEvaluated: candidates.length,
318
+ linksCreated,
319
+ pairsSkipped,
320
+ llmCalls,
321
+ errors,
322
+ totalLinks,
323
+ orphans: orphanCount,
324
+ byType: Object.fromEntries(byType.map((r) => [r.link_type, r.c])),
325
+ manualLinksPreserved: manualCount,
326
+ batchLinksRemoved: batchCount,
327
+ };
328
+ },
329
+ },
330
+ {
331
+ name: 'link_stats',
332
+ description: 'Get Zettelkasten graph statistics: total links, by type, most connected, orphan count.',
333
+ auth: 'read',
334
+ handler: async () => {
335
+ const provider = vault.getProvider();
336
+ try {
337
+ const totalLinks = provider.get('SELECT COUNT(*) as c FROM vault_links')?.c ?? 0;
338
+ const totalEntries = provider.get('SELECT COUNT(*) as c FROM entries')?.c ?? 0;
339
+ const orphans = provider.get(`SELECT COUNT(*) as c FROM entries
340
+ WHERE id NOT IN (SELECT source_id FROM vault_links)
341
+ AND id NOT IN (SELECT target_id FROM vault_links)`)?.c ?? 0;
342
+ const byType = provider.all('SELECT link_type, COUNT(*) as c FROM vault_links GROUP BY link_type ORDER BY c DESC');
343
+ const withNotes = provider.get("SELECT COUNT(*) as c FROM vault_links WHERE note IS NOT NULL AND note != ''")?.c ?? 0;
344
+ const mostConnected = provider.all(`SELECT e.title, (
345
+ (SELECT COUNT(*) FROM vault_links WHERE source_id = e.id) +
346
+ (SELECT COUNT(*) FROM vault_links WHERE target_id = e.id)
347
+ ) as links FROM entries e ORDER BY links DESC LIMIT 10`);
348
+ return {
349
+ totalEntries,
350
+ totalLinks,
351
+ orphans,
352
+ linksWithNotes: withNotes,
353
+ linkQuality: totalLinks > 0 ? `${((withNotes / totalLinks) * 100).toFixed(0)}%` : 'n/a',
354
+ byType: Object.fromEntries(byType.map((r) => [r.link_type, r.c])),
355
+ mostConnected,
356
+ };
357
+ }
358
+ catch {
359
+ return { totalLinks: 0, totalEntries: 0, orphans: 0, byType: {}, mostConnected: [] };
360
+ }
361
+ },
362
+ },
363
+ ];
364
+ }
365
+ //# sourceMappingURL=vault-linking-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-linking-ops.js","sourceRoot":"","sources":["../../src/runtime/vault-linking-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * LinkManager — Zettelkasten bidirectional linking for vault entries.
3
+ *
4
+ * Provides typed links between entries (supports, contradicts, extends, sequences),
5
+ * backlink traversal, graph walking, orphan detection, and link suggestions via FTS5.
6
+ *
7
+ * Ported from Salvador MCP with improvements:
8
+ * - Uses PersistenceProvider (not raw SQLite) for backend abstraction
9
+ * - Uses FTS5 for suggest_links (Salvador used TF-IDF cosine similarity)
10
+ * - Graceful degradation — all methods return empty on table-not-found
11
+ */
12
+ import type { PersistenceProvider } from '../persistence/types.js';
13
+ import type { VaultLink, LinkType, LinkedEntry, LinkSuggestion } from './vault-types.js';
14
+ export declare class LinkManager {
15
+ private provider;
16
+ private initialized;
17
+ constructor(provider: PersistenceProvider);
18
+ private ensureTable;
19
+ /** Create a typed link between two entries. */
20
+ addLink(sourceId: string, targetId: string, linkType: LinkType, note?: string): void;
21
+ /** Remove a link between two entries. */
22
+ removeLink(sourceId: string, targetId: string): void;
23
+ /** Get all outgoing links FROM an entry. */
24
+ getLinks(entryId: string): VaultLink[];
25
+ /** Get all incoming links TO an entry (backlinks). */
26
+ getBacklinks(entryId: string): VaultLink[];
27
+ /** Get total link count (outgoing + incoming). */
28
+ getLinkCount(entryId: string): number;
29
+ /**
30
+ * Walk the link graph from a starting entry up to `depth` hops.
31
+ * Returns all connected entries with link metadata.
32
+ * BFS — walks both outgoing and incoming links (undirected).
33
+ */
34
+ traverse(entryId: string, depth?: number): LinkedEntry[];
35
+ /** Find entries with zero links. */
36
+ getOrphans(limit?: number): Array<{
37
+ id: string;
38
+ title: string;
39
+ type: string;
40
+ domain: string;
41
+ }>;
42
+ /** Find semantically similar entries as link candidates using FTS5. */
43
+ suggestLinks(entryId: string, limit?: number): LinkSuggestion[];
44
+ private getEntryMeta;
45
+ }
46
+ //# sourceMappingURL=linking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linking.d.ts","sourceRoot":"","sources":["../../src/vault/linking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EACV,SAAS,EAET,QAAQ,EACR,WAAW,EACX,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,WAAW,CAAS;gBAER,QAAQ,EAAE,mBAAmB;IAQjD,OAAO,CAAC,WAAW;IAyBnB,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAQpF,yCAAyC;IACzC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOpD,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE;IAYtC,sDAAsD;IACtD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE;IAY1C,kDAAkD;IAClD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgBrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,WAAW,EAAE;IAqD3D,oCAAoC;IACpC,UAAU,CACR,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBrE,uEAAuE;IACvE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,cAAc,EAAE;IAqGlE,OAAO,CAAC,YAAY;CAarB"}