@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,421 @@
1
+ /**
2
+ * Domain Packs — failing tests for the DomainPack primitive.
3
+ *
4
+ * These tests define the contract for domain packs:
5
+ * - DomainPack types and validation
6
+ * - Pack loading and dependency resolution
7
+ * - Extended createDomainFacades() with pack support
8
+ * - OCP: standard domains unchanged when packs are absent
9
+ */
10
+
11
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
12
+ import { createAgentRuntime } from '../runtime/runtime.js';
13
+ import { createDomainFacade, createDomainFacades } from '../runtime/domain-ops.js';
14
+ import type { AgentRuntime } from '../runtime/types.js';
15
+ import { z } from 'zod';
16
+
17
+ import type { DomainPack } from '../domain-packs/types.js';
18
+ import { validateDomainPack, SEMANTIC_FACADE_NAMES } from '../domain-packs/types.js';
19
+ import { resolveDependencies } from '../domain-packs/loader.js';
20
+
21
+ // ---------------------------------------------------------------------------
22
+ // Helpers: mock domain packs for testing
23
+ // ---------------------------------------------------------------------------
24
+
25
+ function createMockPack(overrides: Partial<DomainPack> = {}): DomainPack {
26
+ return {
27
+ name: 'test-design',
28
+ version: '1.0.0',
29
+ domains: ['design'],
30
+ ops: [
31
+ {
32
+ name: 'check_contrast',
33
+ description: 'Check WCAG contrast ratio between two colors.',
34
+ auth: 'read' as const,
35
+ schema: z.object({
36
+ foreground: z.string(),
37
+ background: z.string(),
38
+ }),
39
+ handler: async (_params) => {
40
+ return { ratio: 4.5, passes: true, level: 'AA' };
41
+ },
42
+ },
43
+ {
44
+ name: 'validate_token',
45
+ description: 'Validate a design token name against the token schema.',
46
+ auth: 'read' as const,
47
+ schema: z.object({ token: z.string() }),
48
+ handler: async (params) => {
49
+ return { valid: true, token: params.token };
50
+ },
51
+ },
52
+ {
53
+ name: 'get_color_pairs',
54
+ description: 'Get accessible color pair suggestions.',
55
+ auth: 'read' as const,
56
+ schema: z.object({ background: z.string() }),
57
+ handler: async (params) => {
58
+ return { pairs: [{ fg: '#000', bg: params.background, ratio: 21 }] };
59
+ },
60
+ },
61
+ ],
62
+ ...overrides,
63
+ };
64
+ }
65
+
66
+ function createMockPackWithFacades(): DomainPack {
67
+ return {
68
+ name: 'test-design-full',
69
+ version: '1.0.0',
70
+ domains: ['design'],
71
+ ops: [
72
+ {
73
+ name: 'check_contrast',
74
+ description: 'Check contrast.',
75
+ auth: 'read' as const,
76
+ handler: async () => ({ ratio: 4.5 }),
77
+ },
78
+ ],
79
+ facades: [
80
+ {
81
+ name: 'design_rules',
82
+ description: 'Design rules and guidelines.',
83
+ ops: [
84
+ {
85
+ name: 'get_clean_code_rules',
86
+ description: 'Get clean code rules for design.',
87
+ auth: 'read' as const,
88
+ handler: async () => ({ rules: ['no-hex-colors', 'semantic-tokens-only'] }),
89
+ },
90
+ {
91
+ name: 'get_architecture_patterns',
92
+ description: 'Get architecture patterns.',
93
+ auth: 'read' as const,
94
+ handler: async () => ({ patterns: ['component-composition'] }),
95
+ },
96
+ ],
97
+ },
98
+ ],
99
+ };
100
+ }
101
+
102
+ // ---------------------------------------------------------------------------
103
+ // 1. DomainPack Types & Validation
104
+ // ---------------------------------------------------------------------------
105
+
106
+ describe('DomainPack types and validation', () => {
107
+ it('should validate a well-formed domain pack', () => {
108
+ const pack = createMockPack();
109
+ const result = validateDomainPack(pack);
110
+ expect(result.success).toBe(true);
111
+ if (result.success) {
112
+ expect(result.data.name).toBe('test-design');
113
+ expect(result.data.ops.length).toBe(3);
114
+ }
115
+ });
116
+
117
+ it('should reject pack with missing required fields', () => {
118
+ const result = validateDomainPack({ name: 'incomplete' });
119
+ expect(result.success).toBe(false);
120
+ });
121
+
122
+ it('should reject pack with duplicate op names', () => {
123
+ const pack = createMockPack({
124
+ ops: [
125
+ {
126
+ name: 'duplicate_op',
127
+ description: 'First.',
128
+ auth: 'read',
129
+ handler: async () => ({}),
130
+ },
131
+ {
132
+ name: 'duplicate_op',
133
+ description: 'Second.',
134
+ auth: 'read',
135
+ handler: async () => ({}),
136
+ },
137
+ ],
138
+ });
139
+ const result = validateDomainPack(pack);
140
+ expect(result.success).toBe(false);
141
+ });
142
+
143
+ it('should reject pack with facade name colliding with semantic facades', () => {
144
+ const pack = createMockPack({
145
+ facades: [
146
+ {
147
+ name: 'vault', // collides with semantic facade
148
+ description: 'Bad facade.',
149
+ ops: [],
150
+ },
151
+ ],
152
+ });
153
+ const result = validateDomainPack(pack);
154
+ expect(result.success).toBe(false);
155
+ });
156
+
157
+ it('should export SEMANTIC_FACADE_NAMES containing core facade names', () => {
158
+ expect(SEMANTIC_FACADE_NAMES).toContain('vault');
159
+ expect(SEMANTIC_FACADE_NAMES).toContain('plan');
160
+ expect(SEMANTIC_FACADE_NAMES).toContain('brain');
161
+ expect(SEMANTIC_FACADE_NAMES).toContain('memory');
162
+ expect(SEMANTIC_FACADE_NAMES).toContain('admin');
163
+ expect(SEMANTIC_FACADE_NAMES).toContain('curator');
164
+ });
165
+
166
+ it('should accept pack with valid KnowledgeManifest tiers', () => {
167
+ const pack = createMockPack({
168
+ knowledge: {
169
+ canonical: './knowledge/canonical',
170
+ curated: './knowledge/curated',
171
+ },
172
+ });
173
+ const result = validateDomainPack(pack);
174
+ expect(result.success).toBe(true);
175
+ });
176
+ });
177
+
178
+ // ---------------------------------------------------------------------------
179
+ // 2. Pack Dependency Resolution
180
+ // ---------------------------------------------------------------------------
181
+
182
+ describe('Pack dependency resolution', () => {
183
+ it('should resolve packs with no dependencies', () => {
184
+ const packA = createMockPack({ name: 'pack-a' });
185
+ const packB = createMockPack({ name: 'pack-b', domains: ['testing'] });
186
+ const sorted = resolveDependencies([packA, packB]);
187
+ expect(sorted.length).toBe(2);
188
+ });
189
+
190
+ it('should sort packs by dependency order', () => {
191
+ const packA = createMockPack({ name: 'pack-a', requires: ['pack-b'] });
192
+ const packB = createMockPack({ name: 'pack-b', domains: ['testing'] });
193
+ const sorted = resolveDependencies([packA, packB]);
194
+ const names = sorted.map((p) => p.name);
195
+ expect(names.indexOf('pack-b')).toBeLessThan(names.indexOf('pack-a'));
196
+ });
197
+
198
+ it('should detect circular dependencies', () => {
199
+ const packA = createMockPack({ name: 'pack-a', requires: ['pack-b'] });
200
+ const packB = createMockPack({ name: 'pack-b', domains: ['testing'], requires: ['pack-a'] });
201
+ expect(() => resolveDependencies([packA, packB])).toThrow(/circular/i);
202
+ });
203
+
204
+ it('should throw on missing dependency', () => {
205
+ const packA = createMockPack({ name: 'pack-a', requires: ['pack-nonexistent'] });
206
+ expect(() => resolveDependencies([packA])).toThrow(/not found/i);
207
+ });
208
+ });
209
+
210
+ // ---------------------------------------------------------------------------
211
+ // 3. Extended createDomainFacades() with pack support
212
+ // ---------------------------------------------------------------------------
213
+
214
+ describe('createDomainFacades with packs', () => {
215
+ let runtime: AgentRuntime;
216
+
217
+ beforeEach(() => {
218
+ runtime = createAgentRuntime({
219
+ agentId: 'test-packs',
220
+ vaultPath: ':memory:',
221
+ });
222
+ });
223
+
224
+ afterEach(() => {
225
+ runtime.close();
226
+ });
227
+
228
+ // --- OCP: no packs = identical behavior ---
229
+
230
+ it('should work identically without packs parameter', () => {
231
+ const withoutPacks = createDomainFacades(runtime, 'test-packs', ['security']);
232
+ expect(withoutPacks.length).toBe(1);
233
+ expect(withoutPacks[0].ops.length).toBe(5);
234
+ expect(withoutPacks[0].name).toBe('test-packs_security');
235
+ });
236
+
237
+ it('should work identically with empty packs array', () => {
238
+ const withEmpty = createDomainFacades(runtime, 'test-packs', ['security'], []);
239
+ expect(withEmpty.length).toBe(1);
240
+ expect(withEmpty[0].ops.length).toBe(5);
241
+ });
242
+
243
+ // --- Pack ops override standard ops ---
244
+
245
+ it('should use pack ops for claimed domain', () => {
246
+ const pack = createMockPack(); // claims 'design'
247
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
248
+ const designFacade = facades.find((f) => f.name.includes('design'));
249
+ expect(designFacade).toBeDefined();
250
+
251
+ // Should have pack's 3 custom ops + standard fallbacks for unclaimed names
252
+ const opNames = designFacade!.ops.map((o) => o.name);
253
+ expect(opNames).toContain('check_contrast');
254
+ expect(opNames).toContain('validate_token');
255
+ expect(opNames).toContain('get_color_pairs');
256
+ });
257
+
258
+ it('should keep standard ops as fallbacks for names not in pack', () => {
259
+ const pack = createMockPack(); // has check_contrast, validate_token, get_color_pairs
260
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
261
+ const designFacade = facades.find((f) => f.name.includes('design'));
262
+ const opNames = designFacade!.ops.map((o) => o.name);
263
+
264
+ // Standard ops not overridden by pack should still exist as fallbacks
265
+ expect(opNames).toContain('get_patterns');
266
+ expect(opNames).toContain('search');
267
+ expect(opNames).toContain('get_entry');
268
+ expect(opNames).toContain('capture');
269
+ expect(opNames).toContain('remove');
270
+ });
271
+
272
+ it('should use pack handler when pack overrides a standard op name', () => {
273
+ const customSearchHandler = async () => ({ custom: true, source: 'pack' });
274
+ const pack = createMockPack({
275
+ ops: [
276
+ {
277
+ name: 'search', // overrides standard search
278
+ description: 'Custom domain search with specialized ranking.',
279
+ auth: 'read' as const,
280
+ handler: customSearchHandler,
281
+ },
282
+ ],
283
+ });
284
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
285
+ const designFacade = facades.find((f) => f.name.includes('design'));
286
+ const searchOp = designFacade!.ops.find((o) => o.name === 'search');
287
+ expect(searchOp!.handler).toBe(customSearchHandler);
288
+ });
289
+
290
+ // --- Unclaimed domains get standard 5 ops ---
291
+
292
+ it('should give unclaimed domains standard 5 ops', () => {
293
+ const pack = createMockPack(); // claims 'design' only
294
+ const facades = createDomainFacades(runtime, 'test-packs', ['design', 'security'], [pack]);
295
+ const securityFacade = facades.find((f) => f.name.includes('security'));
296
+ expect(securityFacade).toBeDefined();
297
+ expect(securityFacade!.ops.length).toBe(5);
298
+ expect(securityFacade!.ops.map((o) => o.name)).not.toContain('check_contrast');
299
+ });
300
+
301
+ // --- Pack standalone facades ---
302
+
303
+ it('should register pack standalone facades as additional facades', () => {
304
+ const pack = createMockPackWithFacades();
305
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
306
+
307
+ // Should have domain facade + standalone design_rules facade
308
+ const facadeNames = facades.map((f) => f.name);
309
+ expect(facadeNames.some((n) => n.includes('design_rules'))).toBe(true);
310
+ });
311
+
312
+ it('should prefix standalone facade names with agentId', () => {
313
+ const pack = createMockPackWithFacades();
314
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
315
+ const rulesFacade = facades.find((f) => f.name.includes('design_rules'));
316
+ expect(rulesFacade!.name).toBe('test-packs_design_rules');
317
+ });
318
+
319
+ it('standalone facade ops should be callable', async () => {
320
+ const pack = createMockPackWithFacades();
321
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
322
+ const rulesFacade = facades.find((f) => f.name.includes('design_rules'));
323
+ const cleanCodeOp = rulesFacade!.ops.find((o) => o.name === 'get_clean_code_rules');
324
+ const result = (await cleanCodeOp!.handler({})) as { rules: string[] };
325
+ expect(result.rules).toContain('no-hex-colors');
326
+ });
327
+
328
+ // --- Custom ops are callable ---
329
+
330
+ it('custom pack ops should execute and return results', async () => {
331
+ const pack = createMockPack();
332
+ const facades = createDomainFacades(runtime, 'test-packs', ['design'], [pack]);
333
+ const designFacade = facades.find((f) => f.name.includes('design'));
334
+ const contrastOp = designFacade!.ops.find((o) => o.name === 'check_contrast');
335
+ const result = (await contrastOp!.handler({
336
+ foreground: '#000000',
337
+ background: '#ffffff',
338
+ })) as { ratio: number; passes: boolean };
339
+ expect(result.ratio).toBe(4.5);
340
+ expect(result.passes).toBe(true);
341
+ });
342
+
343
+ // --- Multiple packs ---
344
+
345
+ it('should support multiple packs claiming different domains', () => {
346
+ const designPack = createMockPack({ name: 'design-pack', domains: ['design'] });
347
+ const securityPack = createMockPack({
348
+ name: 'security-pack',
349
+ domains: ['security'],
350
+ ops: [
351
+ {
352
+ name: 'scan_vulnerabilities',
353
+ description: 'Scan for security vulnerabilities.',
354
+ auth: 'read' as const,
355
+ handler: async () => ({ vulnerabilities: [] }),
356
+ },
357
+ ],
358
+ });
359
+ const facades = createDomainFacades(
360
+ runtime,
361
+ 'test-packs',
362
+ ['design', 'security'],
363
+ [designPack, securityPack],
364
+ );
365
+ expect(facades.length).toBeGreaterThanOrEqual(2);
366
+
367
+ const designOps = facades.find((f) => f.name.includes('design'))!.ops.map((o) => o.name);
368
+ const securityOps = facades.find((f) => f.name.includes('security'))!.ops.map((o) => o.name);
369
+
370
+ expect(designOps).toContain('check_contrast');
371
+ expect(securityOps).toContain('scan_vulnerabilities');
372
+ });
373
+ });
374
+
375
+ // ---------------------------------------------------------------------------
376
+ // 4. OCP Regression — existing behavior preserved
377
+ // ---------------------------------------------------------------------------
378
+
379
+ describe('OCP regression: existing domain-ops behavior', () => {
380
+ let runtime: AgentRuntime;
381
+
382
+ beforeEach(() => {
383
+ runtime = createAgentRuntime({
384
+ agentId: 'test-ocp',
385
+ vaultPath: ':memory:',
386
+ });
387
+ });
388
+
389
+ afterEach(() => {
390
+ runtime.close();
391
+ });
392
+
393
+ it('createDomainFacade (singular) still works unchanged', () => {
394
+ const facade = createDomainFacade(runtime, 'test-ocp', 'security');
395
+ expect(facade.ops.length).toBe(5);
396
+ expect(facade.name).toBe('test-ocp_security');
397
+ });
398
+
399
+ it('createDomainFacades without 4th arg still returns standard facades', () => {
400
+ const facades = createDomainFacades(runtime, 'test-ocp', ['security', 'api-design']);
401
+ expect(facades.length).toBe(2);
402
+ facades.forEach((f) => {
403
+ expect(f.ops.length).toBe(5);
404
+ });
405
+ });
406
+
407
+ it('standard domain capture still integrates with governance', async () => {
408
+ const facade = createDomainFacade(runtime, 'test-ocp', 'security');
409
+ const captureOp = facade.ops.find((o) => o.name === 'capture')!;
410
+ const result = (await captureOp.handler({
411
+ id: 'ocp-test-1',
412
+ type: 'pattern',
413
+ title: 'OCP Test',
414
+ severity: 'warning',
415
+ description: 'Should still work.',
416
+ tags: ['ocp'],
417
+ })) as { captured: boolean; governance: { action: string } };
418
+ expect(result.captured).toBe(true);
419
+ expect(result.governance.action).toBe('capture');
420
+ });
421
+ });