@soleri/core 2.12.0 → 7.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 (251) 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/brain/intelligence.d.ts.map +1 -1
  10. package/dist/brain/intelligence.js +16 -2
  11. package/dist/brain/intelligence.js.map +1 -1
  12. package/dist/capabilities/chain-mapping.d.ts +21 -0
  13. package/dist/capabilities/chain-mapping.d.ts.map +1 -0
  14. package/dist/capabilities/chain-mapping.js +86 -0
  15. package/dist/capabilities/chain-mapping.js.map +1 -0
  16. package/dist/capabilities/index.d.ts +10 -0
  17. package/dist/capabilities/index.d.ts.map +1 -0
  18. package/dist/capabilities/index.js +8 -0
  19. package/dist/capabilities/index.js.map +1 -0
  20. package/dist/capabilities/registry.d.ts +95 -0
  21. package/dist/capabilities/registry.d.ts.map +1 -0
  22. package/dist/capabilities/registry.js +227 -0
  23. package/dist/capabilities/registry.js.map +1 -0
  24. package/dist/capabilities/types.d.ts +106 -0
  25. package/dist/capabilities/types.d.ts.map +1 -0
  26. package/dist/capabilities/types.js +12 -0
  27. package/dist/capabilities/types.js.map +1 -0
  28. package/dist/control/intent-router.d.ts.map +1 -1
  29. package/dist/control/intent-router.js +58 -2
  30. package/dist/control/intent-router.js.map +1 -1
  31. package/dist/domain-packs/index.d.ts +8 -0
  32. package/dist/domain-packs/index.d.ts.map +1 -0
  33. package/dist/domain-packs/index.js +8 -0
  34. package/dist/domain-packs/index.js.map +1 -0
  35. package/dist/domain-packs/inject-rules.d.ts +24 -0
  36. package/dist/domain-packs/inject-rules.d.ts.map +1 -0
  37. package/dist/domain-packs/inject-rules.js +65 -0
  38. package/dist/domain-packs/inject-rules.js.map +1 -0
  39. package/dist/domain-packs/knowledge-installer.d.ts +27 -0
  40. package/dist/domain-packs/knowledge-installer.d.ts.map +1 -0
  41. package/dist/domain-packs/knowledge-installer.js +89 -0
  42. package/dist/domain-packs/knowledge-installer.js.map +1 -0
  43. package/dist/domain-packs/loader.d.ts +28 -0
  44. package/dist/domain-packs/loader.d.ts.map +1 -0
  45. package/dist/domain-packs/loader.js +105 -0
  46. package/dist/domain-packs/loader.js.map +1 -0
  47. package/dist/domain-packs/pack-runtime.d.ts +80 -0
  48. package/dist/domain-packs/pack-runtime.d.ts.map +1 -0
  49. package/dist/domain-packs/pack-runtime.js +36 -0
  50. package/dist/domain-packs/pack-runtime.js.map +1 -0
  51. package/dist/domain-packs/skills-installer.d.ts +21 -0
  52. package/dist/domain-packs/skills-installer.d.ts.map +1 -0
  53. package/dist/domain-packs/skills-installer.js +38 -0
  54. package/dist/domain-packs/skills-installer.js.map +1 -0
  55. package/dist/domain-packs/token-resolver.d.ts +37 -0
  56. package/dist/domain-packs/token-resolver.d.ts.map +1 -0
  57. package/dist/domain-packs/token-resolver.js +109 -0
  58. package/dist/domain-packs/token-resolver.js.map +1 -0
  59. package/dist/domain-packs/types.d.ts +91 -0
  60. package/dist/domain-packs/types.d.ts.map +1 -0
  61. package/dist/domain-packs/types.js +122 -0
  62. package/dist/domain-packs/types.js.map +1 -0
  63. package/dist/engine/bin/soleri-engine.d.ts +12 -0
  64. package/dist/engine/bin/soleri-engine.d.ts.map +1 -0
  65. package/dist/engine/bin/soleri-engine.js +183 -0
  66. package/dist/engine/bin/soleri-engine.js.map +1 -0
  67. package/dist/engine/core-ops.d.ts +27 -0
  68. package/dist/engine/core-ops.d.ts.map +1 -0
  69. package/dist/engine/core-ops.js +159 -0
  70. package/dist/engine/core-ops.js.map +1 -0
  71. package/dist/engine/index.d.ts +19 -0
  72. package/dist/engine/index.d.ts.map +1 -0
  73. package/dist/engine/index.js +17 -0
  74. package/dist/engine/index.js.map +1 -0
  75. package/dist/engine/register-engine.d.ts +54 -0
  76. package/dist/engine/register-engine.d.ts.map +1 -0
  77. package/dist/engine/register-engine.js +270 -0
  78. package/dist/engine/register-engine.js.map +1 -0
  79. package/dist/engine/test-helpers.d.ts +30 -0
  80. package/dist/engine/test-helpers.d.ts.map +1 -0
  81. package/dist/engine/test-helpers.js +59 -0
  82. package/dist/engine/test-helpers.js.map +1 -0
  83. package/dist/flows/context-router.d.ts +39 -0
  84. package/dist/flows/context-router.d.ts.map +1 -0
  85. package/dist/flows/context-router.js +206 -0
  86. package/dist/flows/context-router.js.map +1 -0
  87. package/dist/flows/dispatch-registry.d.ts +24 -0
  88. package/dist/flows/dispatch-registry.d.ts.map +1 -0
  89. package/dist/flows/dispatch-registry.js +70 -0
  90. package/dist/flows/dispatch-registry.js.map +1 -0
  91. package/dist/flows/epilogue.d.ts +24 -0
  92. package/dist/flows/epilogue.d.ts.map +1 -0
  93. package/dist/flows/epilogue.js +52 -0
  94. package/dist/flows/epilogue.js.map +1 -0
  95. package/dist/flows/executor.d.ts +25 -0
  96. package/dist/flows/executor.d.ts.map +1 -0
  97. package/dist/flows/executor.js +153 -0
  98. package/dist/flows/executor.js.map +1 -0
  99. package/dist/flows/gate-evaluator.d.ts +26 -0
  100. package/dist/flows/gate-evaluator.d.ts.map +1 -0
  101. package/dist/flows/gate-evaluator.js +162 -0
  102. package/dist/flows/gate-evaluator.js.map +1 -0
  103. package/dist/flows/index.d.ts +14 -0
  104. package/dist/flows/index.d.ts.map +1 -0
  105. package/dist/flows/index.js +20 -0
  106. package/dist/flows/index.js.map +1 -0
  107. package/dist/flows/loader.d.ts +17 -0
  108. package/dist/flows/loader.d.ts.map +1 -0
  109. package/dist/flows/loader.js +61 -0
  110. package/dist/flows/loader.js.map +1 -0
  111. package/dist/flows/plan-builder.d.ts +40 -0
  112. package/dist/flows/plan-builder.d.ts.map +1 -0
  113. package/dist/flows/plan-builder.js +213 -0
  114. package/dist/flows/plan-builder.js.map +1 -0
  115. package/dist/flows/probes.d.ts +11 -0
  116. package/dist/flows/probes.d.ts.map +1 -0
  117. package/dist/flows/probes.js +62 -0
  118. package/dist/flows/probes.js.map +1 -0
  119. package/dist/flows/types.d.ts +950 -0
  120. package/dist/flows/types.d.ts.map +1 -0
  121. package/dist/flows/types.js +105 -0
  122. package/dist/flows/types.js.map +1 -0
  123. package/dist/index.d.ts +11 -1
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +10 -1
  126. package/dist/index.js.map +1 -1
  127. package/dist/intelligence/loader.d.ts +19 -0
  128. package/dist/intelligence/loader.d.ts.map +1 -1
  129. package/dist/intelligence/loader.js +35 -0
  130. package/dist/intelligence/loader.js.map +1 -1
  131. package/dist/intelligence/types.d.ts +1 -0
  132. package/dist/intelligence/types.d.ts.map +1 -1
  133. package/dist/packs/types.d.ts +58 -19
  134. package/dist/packs/types.d.ts.map +1 -1
  135. package/dist/packs/types.js +14 -0
  136. package/dist/packs/types.js.map +1 -1
  137. package/dist/playbooks/generic/onboarding.d.ts +9 -0
  138. package/dist/playbooks/generic/onboarding.d.ts.map +1 -0
  139. package/dist/playbooks/generic/onboarding.js +74 -0
  140. package/dist/playbooks/generic/onboarding.js.map +1 -0
  141. package/dist/playbooks/playbook-registry.d.ts.map +1 -1
  142. package/dist/playbooks/playbook-registry.js +2 -0
  143. package/dist/playbooks/playbook-registry.js.map +1 -1
  144. package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
  145. package/dist/runtime/admin-extra-ops.js +15 -9
  146. package/dist/runtime/admin-extra-ops.js.map +1 -1
  147. package/dist/runtime/admin-ops.js +4 -4
  148. package/dist/runtime/admin-ops.js.map +1 -1
  149. package/dist/runtime/capture-ops.d.ts.map +1 -1
  150. package/dist/runtime/capture-ops.js +33 -1
  151. package/dist/runtime/capture-ops.js.map +1 -1
  152. package/dist/runtime/domain-ops.d.ts +21 -5
  153. package/dist/runtime/domain-ops.d.ts.map +1 -1
  154. package/dist/runtime/domain-ops.js +64 -6
  155. package/dist/runtime/domain-ops.js.map +1 -1
  156. package/dist/runtime/facades/cognee-facade.d.ts.map +1 -1
  157. package/dist/runtime/facades/cognee-facade.js +3 -1
  158. package/dist/runtime/facades/cognee-facade.js.map +1 -1
  159. package/dist/runtime/facades/index.d.ts.map +1 -1
  160. package/dist/runtime/facades/index.js +10 -6
  161. package/dist/runtime/facades/index.js.map +1 -1
  162. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  163. package/dist/runtime/facades/vault-facade.js +2 -0
  164. package/dist/runtime/facades/vault-facade.js.map +1 -1
  165. package/dist/runtime/orchestrate-ops.d.ts +8 -7
  166. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  167. package/dist/runtime/orchestrate-ops.js +217 -61
  168. package/dist/runtime/orchestrate-ops.js.map +1 -1
  169. package/dist/runtime/runtime.d.ts.map +1 -1
  170. package/dist/runtime/runtime.js +23 -17
  171. package/dist/runtime/runtime.js.map +1 -1
  172. package/dist/runtime/types.d.ts +6 -2
  173. package/dist/runtime/types.d.ts.map +1 -1
  174. package/dist/runtime/vault-linking-ops.d.ts +13 -0
  175. package/dist/runtime/vault-linking-ops.d.ts.map +1 -0
  176. package/dist/runtime/vault-linking-ops.js +367 -0
  177. package/dist/runtime/vault-linking-ops.js.map +1 -0
  178. package/dist/vault/linking.d.ts +46 -0
  179. package/dist/vault/linking.d.ts.map +1 -0
  180. package/dist/vault/linking.js +275 -0
  181. package/dist/vault/linking.js.map +1 -0
  182. package/dist/vault/vault-types.d.ts +37 -0
  183. package/dist/vault/vault-types.d.ts.map +1 -1
  184. package/dist/vault/vault.d.ts +12 -0
  185. package/dist/vault/vault.d.ts.map +1 -1
  186. package/dist/vault/vault.js +85 -6
  187. package/dist/vault/vault.js.map +1 -1
  188. package/package.json +4 -1
  189. package/src/__tests__/admin-extra-ops.test.ts +1 -1
  190. package/src/__tests__/admin-ops.test.ts +2 -1
  191. package/src/__tests__/cognee-client-gaps.test.ts +470 -0
  192. package/src/__tests__/cognee-hybrid-search.test.ts +478 -0
  193. package/src/__tests__/cognee-sync-manager-deep.test.ts +630 -0
  194. package/src/__tests__/cognee-sync-manager.test.ts +1 -0
  195. package/src/__tests__/core-ops.test.ts +9 -61
  196. package/src/__tests__/domain-packs.test.ts +421 -0
  197. package/src/__tests__/flows.test.ts +604 -0
  198. package/src/__tests__/playbook-registry.test.ts +2 -2
  199. package/src/__tests__/playbook-seeder.test.ts +8 -8
  200. package/src/__tests__/playbook.test.ts +5 -5
  201. package/src/__tests__/token-resolver.test.ts +79 -0
  202. package/src/brain/intelligence.ts +21 -2
  203. package/src/capabilities/chain-mapping.ts +93 -0
  204. package/src/capabilities/index.ts +21 -0
  205. package/src/capabilities/registry.ts +290 -0
  206. package/src/capabilities/types.ts +143 -0
  207. package/src/control/intent-router.ts +46 -2
  208. package/src/domain-packs/index.ts +27 -0
  209. package/src/domain-packs/inject-rules.ts +74 -0
  210. package/src/domain-packs/knowledge-installer.ts +116 -0
  211. package/src/domain-packs/loader.ts +124 -0
  212. package/src/domain-packs/pack-runtime.ts +99 -0
  213. package/src/domain-packs/skills-installer.ts +56 -0
  214. package/src/domain-packs/token-resolver.ts +126 -0
  215. package/src/domain-packs/types.ts +229 -0
  216. package/src/engine/__tests__/register-engine.test.ts +104 -0
  217. package/src/engine/bin/soleri-engine.ts +217 -0
  218. package/src/engine/core-ops.ts +178 -0
  219. package/src/engine/index.ts +19 -0
  220. package/src/engine/register-engine.ts +385 -0
  221. package/src/engine/test-helpers.ts +83 -0
  222. package/src/flows/context-router.ts +257 -0
  223. package/src/flows/dispatch-registry.ts +80 -0
  224. package/src/flows/epilogue.ts +65 -0
  225. package/src/flows/executor.ts +182 -0
  226. package/src/flows/gate-evaluator.ts +171 -0
  227. package/src/flows/index.ts +52 -0
  228. package/src/flows/loader.ts +63 -0
  229. package/src/flows/plan-builder.ts +250 -0
  230. package/src/flows/probes.ts +70 -0
  231. package/src/flows/types.ts +217 -0
  232. package/src/index.ts +68 -1
  233. package/src/intelligence/loader.ts +38 -0
  234. package/src/intelligence/types.ts +1 -0
  235. package/src/packs/types.ts +19 -0
  236. package/src/playbooks/generic/onboarding.ts +79 -0
  237. package/src/playbooks/playbook-registry.ts +2 -0
  238. package/src/runtime/admin-extra-ops.ts +14 -8
  239. package/src/runtime/admin-ops.ts +4 -4
  240. package/src/runtime/capture-ops.ts +40 -1
  241. package/src/runtime/domain-ops.ts +71 -5
  242. package/src/runtime/facades/cognee-facade.ts +3 -1
  243. package/src/runtime/facades/index.ts +12 -6
  244. package/src/runtime/facades/vault-facade.ts +2 -0
  245. package/src/runtime/orchestrate-ops.ts +261 -65
  246. package/src/runtime/runtime.ts +27 -18
  247. package/src/runtime/types.ts +6 -2
  248. package/src/runtime/vault-linking-ops.ts +454 -0
  249. package/src/vault/linking.ts +333 -0
  250. package/src/vault/vault-types.ts +46 -0
  251. package/src/vault/vault.ts +94 -7
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Domain Pack types — the contract for plug-and-play domain intelligence.
3
+ *
4
+ * A DomainPack is an npm package that bundles:
5
+ * - Custom ops with real algorithmic logic (e.g., WCAG contrast checking)
6
+ * - Optional standalone facades (one pack can register multiple MCP tools)
7
+ * - Tiered knowledge (canonical/curated/captured)
8
+ * - CLAUDE.md behavioral rules
9
+ * - Skills
10
+ *
11
+ * One pack = one npm package, can register multiple facades.
12
+ */
13
+ import { z } from 'zod';
14
+ import type { OpDefinition, FacadeConfig } from '../facades/types.js';
15
+ import type { AgentRuntime } from '../runtime/types.js';
16
+ import type { PackRuntime } from './pack-runtime.js';
17
+ export declare const SEMANTIC_FACADE_NAMES: ReadonlyArray<string>;
18
+ /** Three-tier knowledge structure. Each tier has different lifecycle rules. */
19
+ export interface KnowledgeManifest {
20
+ /** Immutable rules and axioms. Never overwritten by curator. Highest search authority. */
21
+ canonical?: string;
22
+ /** Patterns and anti-patterns. Curator can groom, deduplicate, enrich. */
23
+ curated?: string;
24
+ /** Seed learnings. Rarely shipped — normally emerges from agent usage. */
25
+ captured?: string;
26
+ }
27
+ export interface PackSkillDefinition {
28
+ /** Skill file name (without .md extension) */
29
+ name: string;
30
+ /** Path to the .md skill file relative to the pack */
31
+ path: string;
32
+ }
33
+ /** The contract every domain pack must implement. */
34
+ export interface DomainPack {
35
+ /** Unique pack name (e.g., 'design', 'security-intelligence') */
36
+ name: string;
37
+ /** Semver version */
38
+ version: string;
39
+ /** Domains this pack claims. Ops inject into these domain facades. */
40
+ domains: string[];
41
+ /** Custom operations with real logic — injected into claimed domain facades. */
42
+ ops: OpDefinition[];
43
+ /** Additional standalone facades (one pack can register multiple MCP tools). */
44
+ facades?: FacadeConfig[];
45
+ /** Tiered knowledge to install into the agent's vault. */
46
+ knowledge?: KnowledgeManifest;
47
+ /** CLAUDE.md behavioral rules fragment (markdown). */
48
+ rules?: string;
49
+ /** Skills to install into the agent's skills directory. */
50
+ skills?: PackSkillDefinition[];
51
+ /** Capability handler factory — returns handlers for declared capabilities */
52
+ capabilities?: (runtime: PackRuntime) => Map<string, import('../capabilities/types.js').CapabilityHandler>;
53
+ /** Other packs this pack depends on (by name). */
54
+ requires?: string[];
55
+ /** Called after pack is installed (one-time setup). */
56
+ onInstall?: (runtime: AgentRuntime) => Promise<void>;
57
+ /** Called each time the agent starts (runtime initialization). */
58
+ onActivate?: (runtime: AgentRuntime) => Promise<void>;
59
+ }
60
+ /** Reference to a domain pack in agent configuration. */
61
+ export interface DomainPackRef {
62
+ /** Display name */
63
+ name: string;
64
+ /** npm package name (e.g., '@soleri/domain-design') */
65
+ package: string;
66
+ /** Optional version constraint */
67
+ version?: string;
68
+ }
69
+ /** A DomainPack that has been validated and resolved. */
70
+ export interface DomainPackManifest extends DomainPack {
71
+ /** Resolved from npm package name */
72
+ packageName: string;
73
+ /** Absolute path to the pack's root directory */
74
+ rootDir?: string;
75
+ }
76
+ export type ValidateResult = {
77
+ success: true;
78
+ data: DomainPack;
79
+ } | {
80
+ success: false;
81
+ errors: z.ZodError;
82
+ };
83
+ /**
84
+ * Validate an unknown value as a DomainPack.
85
+ *
86
+ * Beyond Zod shape validation, also checks:
87
+ * - Op names are unique within the pack
88
+ * - Facade names don't collide with semantic facades
89
+ */
90
+ export declare function validateDomainPack(value: unknown): ValidateResult;
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/domain-packs/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAgB9C,CAAC;AAMX,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,WAAW,KACjB,GAAG,CAAC,MAAM,EAAE,OAAO,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;IACvE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAMD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,yDAAyD;AACzD,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiDD,MAAM,MAAM,cAAc,GACtB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACnC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA6CjE"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Domain Pack types — the contract for plug-and-play domain intelligence.
3
+ *
4
+ * A DomainPack is an npm package that bundles:
5
+ * - Custom ops with real algorithmic logic (e.g., WCAG contrast checking)
6
+ * - Optional standalone facades (one pack can register multiple MCP tools)
7
+ * - Tiered knowledge (canonical/curated/captured)
8
+ * - CLAUDE.md behavioral rules
9
+ * - Skills
10
+ *
11
+ * One pack = one npm package, can register multiple facades.
12
+ */
13
+ import { z } from 'zod';
14
+ // ---------------------------------------------------------------------------
15
+ // Reserved names — packs cannot claim these as facade names
16
+ // ---------------------------------------------------------------------------
17
+ export const SEMANTIC_FACADE_NAMES = [
18
+ 'vault',
19
+ 'plan',
20
+ 'brain',
21
+ 'memory',
22
+ 'admin',
23
+ 'curator',
24
+ 'loop',
25
+ 'orchestrate',
26
+ 'control',
27
+ 'cognee',
28
+ 'governance',
29
+ 'context',
30
+ 'agency',
31
+ 'chat',
32
+ 'playbook',
33
+ ];
34
+ // ---------------------------------------------------------------------------
35
+ // Validation
36
+ // ---------------------------------------------------------------------------
37
+ const knowledgeManifestSchema = z.object({
38
+ canonical: z.string().optional(),
39
+ curated: z.string().optional(),
40
+ captured: z.string().optional(),
41
+ });
42
+ const packSkillSchema = z.object({
43
+ name: z.string(),
44
+ path: z.string(),
45
+ });
46
+ /** Zod schema for validating DomainPack structure (data fields only). */
47
+ const domainPackSchema = z.object({
48
+ name: z.string().min(1),
49
+ version: z.string().min(1),
50
+ domains: z.array(z.string().min(1)).min(1),
51
+ ops: z.array(z.object({
52
+ name: z.string().min(1),
53
+ description: z.string(),
54
+ auth: z.enum(['read', 'write', 'admin']),
55
+ handler: z.function(),
56
+ schema: z.any().optional(),
57
+ hot: z.boolean().optional(),
58
+ })),
59
+ facades: z
60
+ .array(z.object({
61
+ name: z.string().min(1),
62
+ description: z.string(),
63
+ ops: z.array(z.any()),
64
+ }))
65
+ .optional(),
66
+ knowledge: knowledgeManifestSchema.optional(),
67
+ rules: z.string().optional(),
68
+ skills: z.array(packSkillSchema).optional(),
69
+ requires: z.array(z.string()).optional(),
70
+ onInstall: z.function().optional(),
71
+ onActivate: z.function().optional(),
72
+ });
73
+ /**
74
+ * Validate an unknown value as a DomainPack.
75
+ *
76
+ * Beyond Zod shape validation, also checks:
77
+ * - Op names are unique within the pack
78
+ * - Facade names don't collide with semantic facades
79
+ */
80
+ export function validateDomainPack(value) {
81
+ const parsed = domainPackSchema.safeParse(value);
82
+ if (!parsed.success) {
83
+ return { success: false, errors: parsed.error };
84
+ }
85
+ const pack = parsed.data;
86
+ // Check for duplicate op names
87
+ const opNames = new Set();
88
+ for (const op of pack.ops) {
89
+ if (opNames.has(op.name)) {
90
+ return {
91
+ success: false,
92
+ errors: new z.ZodError([
93
+ {
94
+ code: 'custom',
95
+ path: ['ops'],
96
+ message: `Duplicate op name: "${op.name}"`,
97
+ },
98
+ ]),
99
+ };
100
+ }
101
+ opNames.add(op.name);
102
+ }
103
+ // Check facade name collisions with semantic facades
104
+ if (pack.facades) {
105
+ for (const facade of pack.facades) {
106
+ if (SEMANTIC_FACADE_NAMES.includes(facade.name)) {
107
+ return {
108
+ success: false,
109
+ errors: new z.ZodError([
110
+ {
111
+ code: 'custom',
112
+ path: ['facades'],
113
+ message: `Facade name "${facade.name}" collides with semantic facade. Reserved names: ${SEMANTIC_FACADE_NAMES.join(', ')}`,
114
+ },
115
+ ]),
116
+ };
117
+ }
118
+ }
119
+ }
120
+ return { success: true, data: pack };
121
+ }
122
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/domain-packs/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Soleri Knowledge Engine — MCP Server
4
+ *
5
+ * Reads agent.yaml, boots the runtime, registers all tools, connects stdio.
6
+ *
7
+ * Usage:
8
+ * npx @soleri/engine --agent ./agent.yaml
9
+ * node dist/engine/bin/soleri-engine.js --agent ./agent.yaml
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=soleri-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soleri-engine.d.ts","sourceRoot":"","sources":["../../../src/engine/bin/soleri-engine.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
@@ -0,0 +1,183 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Soleri Knowledge Engine — MCP Server
4
+ *
5
+ * Reads agent.yaml, boots the runtime, registers all tools, connects stdio.
6
+ *
7
+ * Usage:
8
+ * npx @soleri/engine --agent ./agent.yaml
9
+ * node dist/engine/bin/soleri-engine.js --agent ./agent.yaml
10
+ */
11
+ import { readFileSync, existsSync } from 'node:fs';
12
+ import { resolve, dirname, join } from 'node:path';
13
+ import { homedir } from 'node:os';
14
+ import { parse as parseYaml } from 'yaml';
15
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
16
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
+ import { createAgentRuntime } from '../../runtime/runtime.js';
18
+ import { registerEngine } from '../register-engine.js';
19
+ import { createCoreOps } from '../core-ops.js';
20
+ import { seedDefaultPlaybooks } from '../../playbooks/playbook-seeder.js';
21
+ // ─── Parse CLI args ───────────────────────────────────────────────────
22
+ function parseArgs() {
23
+ const args = process.argv.slice(2);
24
+ let agentYamlPath;
25
+ for (let i = 0; i < args.length; i++) {
26
+ if (args[i] === '--agent' && args[i + 1]) {
27
+ agentYamlPath = resolve(args[i + 1]);
28
+ break;
29
+ }
30
+ }
31
+ if (!agentYamlPath) {
32
+ // Default: look for agent.yaml in cwd
33
+ agentYamlPath = resolve('agent.yaml');
34
+ }
35
+ if (!existsSync(agentYamlPath)) {
36
+ console.error(`[soleri-engine] agent.yaml not found: ${agentYamlPath}`);
37
+ console.error('Usage: soleri-engine --agent ./agent.yaml');
38
+ process.exit(1);
39
+ }
40
+ return { agentYamlPath };
41
+ }
42
+ // ─── Main ─────────────────────────────────────────────────────────────
43
+ async function main() {
44
+ const { agentYamlPath } = parseArgs();
45
+ const agentDir = dirname(agentYamlPath);
46
+ // 1. Read agent.yaml
47
+ const raw = readFileSync(agentYamlPath, 'utf-8');
48
+ const config = parseYaml(raw);
49
+ const agentId = config.id;
50
+ const tag = `[${agentId}]`;
51
+ console.error(`${tag} Starting Soleri Knowledge Engine...`);
52
+ console.error(`${tag} Agent: ${config.name} (${agentId})`);
53
+ console.error(`${tag} Format: file-tree`);
54
+ // 2. Resolve vault path
55
+ const engineConfig = (config.engine ?? {});
56
+ const vaultPath = engineConfig.vault
57
+ ? resolve(engineConfig.vault.replace(/^~/, homedir()))
58
+ : join(homedir(), `.${agentId}`, 'vault.db');
59
+ // 3. Create runtime
60
+ const runtime = createAgentRuntime({
61
+ agentId,
62
+ vaultPath,
63
+ cognee: engineConfig.cognee ?? false,
64
+ });
65
+ console.error(`${tag} Vault: ${vaultPath}`);
66
+ console.error(`${tag} Vault entries: ${runtime.vault.stats().totalEntries}`);
67
+ // 4. Connect linked vaults
68
+ const vaults = (config.vaults ?? []);
69
+ for (const vault of vaults) {
70
+ try {
71
+ const vaultAbsPath = resolve(vault.path.replace(/^~/, homedir()));
72
+ runtime.vaultManager.connect(vault.name, vaultAbsPath, vault.priority ?? 0.5);
73
+ console.error(`${tag} Linked vault: ${vault.name} (${vaultAbsPath})`);
74
+ }
75
+ catch (err) {
76
+ console.error(`${tag} Warning: failed to connect vault "${vault.name}": ${err instanceof Error ? err.message : String(err)}`);
77
+ }
78
+ }
79
+ // 5. Seed intelligence data from knowledge/ directory
80
+ const knowledgeDir = join(agentDir, 'knowledge');
81
+ if (existsSync(knowledgeDir)) {
82
+ const { readdirSync } = await import('node:fs');
83
+ const files = readdirSync(knowledgeDir).filter((f) => f.endsWith('.json'));
84
+ for (const file of files) {
85
+ try {
86
+ const bundle = JSON.parse(readFileSync(join(knowledgeDir, file), 'utf-8'));
87
+ if (bundle.entries && Array.isArray(bundle.entries) && bundle.entries.length > 0) {
88
+ const seeded = runtime.vault.seed(bundle.entries);
89
+ console.error(`${tag} Seeded ${seeded} entries from ${file}`);
90
+ }
91
+ }
92
+ catch {
93
+ // Skip invalid bundles
94
+ }
95
+ }
96
+ }
97
+ // 6. Seed default playbooks
98
+ seedDefaultPlaybooks(runtime.vault);
99
+ // 7. Load domain packs
100
+ const packs = (config.packs ?? []);
101
+ const loadedPacks = [];
102
+ if (packs.length > 0) {
103
+ try {
104
+ const { loadDomainPacksFromConfig } = await import('../../domain-packs/loader.js');
105
+ const refs = packs.map((p) => ({ name: p.name, package: p.package, version: p.version }));
106
+ const manifests = await loadDomainPacksFromConfig(refs);
107
+ // Packs activate sequentially — order may matter for dependencies
108
+ for (const manifest of manifests) {
109
+ if (manifest.onActivate) {
110
+ await manifest.onActivate(runtime); // eslint-disable-line no-await-in-loop
111
+ }
112
+ loadedPacks.push(manifest);
113
+ console.error(`${tag} Domain pack: ${manifest.name}`);
114
+ }
115
+ }
116
+ catch (err) {
117
+ console.error(`${tag} Warning: domain pack loading failed: ${err instanceof Error ? err.message : String(err)}`);
118
+ }
119
+ }
120
+ // 8. Build identity config from agent.yaml
121
+ const identity = {
122
+ id: agentId,
123
+ name: config.name,
124
+ role: config.role,
125
+ description: config.description,
126
+ domains: (config.domains ?? []),
127
+ principles: (config.principles ?? []),
128
+ tone: config.tone ?? 'pragmatic',
129
+ greeting: config.greeting,
130
+ };
131
+ // 9. Create core ops
132
+ const coreOps = createCoreOps(runtime, identity);
133
+ // 10. Create MCP server
134
+ const server = new McpServer({
135
+ name: `${agentId}-engine`,
136
+ version: '1.0.0',
137
+ });
138
+ // 11. Register persona prompt
139
+ server.prompt('persona', 'Get agent persona and principles', () => ({
140
+ messages: [
141
+ {
142
+ role: 'user',
143
+ content: {
144
+ type: 'text',
145
+ text: `You are ${identity.name}. ${identity.role}.\n\nPrinciples:\n${identity.principles.map((p) => `- ${p}`).join('\n')}\n\nTone: ${identity.tone}`,
146
+ },
147
+ },
148
+ ],
149
+ }));
150
+ // 12. Register all engine tools
151
+ const { tools, totalOps } = registerEngine(server, runtime, {
152
+ agentId,
153
+ coreOps,
154
+ domains: identity.domains,
155
+ domainPacks: loadedPacks,
156
+ hotOps: [
157
+ 'search_intelligent',
158
+ 'capture_knowledge',
159
+ 'orchestrate_plan',
160
+ 'orchestrate_execute',
161
+ 'orchestrate_complete',
162
+ ],
163
+ authPolicy: () => runtime.authPolicy,
164
+ });
165
+ console.error(`${tag} Registered ${tools.length} tools (${totalOps} ops)`);
166
+ // 13. Connect stdio transport
167
+ const transport = new StdioServerTransport();
168
+ await server.connect(transport);
169
+ console.error(`${tag} Engine ready — listening on stdio`);
170
+ // 14. Graceful shutdown
171
+ const shutdown = () => {
172
+ console.error(`${tag} Shutting down...`);
173
+ runtime.close();
174
+ process.exit(0);
175
+ };
176
+ process.on('SIGTERM', shutdown);
177
+ process.on('SIGINT', shutdown);
178
+ }
179
+ main().catch((err) => {
180
+ console.error('[soleri-engine] Fatal:', err);
181
+ process.exit(1);
182
+ });
183
+ //# sourceMappingURL=soleri-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soleri-engine.js","sourceRoot":"","sources":["../../../src/engine/bin/soleri-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Soleri v7 — Agent Core Ops
3
+ *
4
+ * Generates the agent-specific ops (health, identity, activate, setup)
5
+ * from agent.yaml config, without generated TypeScript.
6
+ *
7
+ * These ops were previously hardcoded in the Forge entry-point template.
8
+ * Now they're created dynamically by the engine at startup.
9
+ */
10
+ import type { OpDefinition } from '../facades/types.js';
11
+ import type { AgentRuntime } from '../runtime/types.js';
12
+ export interface AgentIdentityConfig {
13
+ id: string;
14
+ name: string;
15
+ role: string;
16
+ description: string;
17
+ domains: string[];
18
+ principles: string[];
19
+ tone: string;
20
+ greeting?: string;
21
+ }
22
+ /**
23
+ * Create agent-specific core ops from identity config.
24
+ * These are registered under `{agentId}_core`.
25
+ */
26
+ export declare function createCoreOps(runtime: AgentRuntime, identity: AgentIdentityConfig): OpDefinition[];
27
+ //# sourceMappingURL=core-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ops.d.ts","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,mBAAmB,GAC5B,YAAY,EAAE,CAiJhB"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Soleri v7 — Agent Core Ops
3
+ *
4
+ * Generates the agent-specific ops (health, identity, activate, setup)
5
+ * from agent.yaml config, without generated TypeScript.
6
+ *
7
+ * These ops were previously hardcoded in the Forge entry-point template.
8
+ * Now they're created dynamically by the engine at startup.
9
+ */
10
+ import { z } from 'zod';
11
+ /**
12
+ * Create agent-specific core ops from identity config.
13
+ * These are registered under `{agentId}_core`.
14
+ */
15
+ export function createCoreOps(runtime, identity) {
16
+ return [
17
+ {
18
+ name: 'health',
19
+ description: 'Health check — vault status and agent info.',
20
+ auth: 'read',
21
+ handler: async () => {
22
+ const s = runtime.vault.stats();
23
+ return {
24
+ status: 'ok',
25
+ agent: { name: identity.name, role: identity.role, format: 'filetree' },
26
+ vault: { entries: s.totalEntries, domains: Object.keys(s.byDomain) },
27
+ };
28
+ },
29
+ },
30
+ {
31
+ name: 'identity',
32
+ description: 'Get agent identity — name, role, principles.',
33
+ auth: 'read',
34
+ handler: async () => {
35
+ // Check IdentityManager first (may have evolved via updates)
36
+ const managed = runtime.identityManager?.getIdentity(identity.id);
37
+ if (managed)
38
+ return managed;
39
+ return {
40
+ name: identity.name,
41
+ role: identity.role,
42
+ description: identity.description,
43
+ domains: identity.domains,
44
+ principles: identity.principles,
45
+ tone: identity.tone,
46
+ };
47
+ },
48
+ },
49
+ {
50
+ name: 'activate',
51
+ description: `Activate agent persona. Say "Hello, ${identity.name}!" to trigger.`,
52
+ auth: 'read',
53
+ schema: z.object({
54
+ projectPath: z.string().optional().default('.'),
55
+ deactivate: z.boolean().optional(),
56
+ }),
57
+ handler: async (params) => {
58
+ if (params.deactivate) {
59
+ return { deactivated: true, agent: identity.id };
60
+ }
61
+ // Seed identity on first activation
62
+ if (runtime.identityManager && !runtime.identityManager.getIdentity(identity.id)) {
63
+ runtime.identityManager.setIdentity(identity.id, {
64
+ name: identity.name,
65
+ role: identity.role,
66
+ description: identity.description,
67
+ personality: identity.principles,
68
+ changedBy: 'system',
69
+ changeReason: 'Initial identity seeded from agent.yaml',
70
+ });
71
+ }
72
+ // Register project if project registry available
73
+ const projectPath = params.projectPath ?? '.';
74
+ if (runtime.projectRegistry) {
75
+ try {
76
+ runtime.projectRegistry.register(projectPath);
77
+ }
78
+ catch {
79
+ // Project may already be registered
80
+ }
81
+ }
82
+ // Build activation context
83
+ const s = runtime.vault.stats();
84
+ return {
85
+ activated: true,
86
+ agent: {
87
+ id: identity.id,
88
+ name: identity.name,
89
+ role: identity.role,
90
+ description: identity.description,
91
+ format: 'filetree',
92
+ },
93
+ persona: {
94
+ tone: identity.tone,
95
+ principles: identity.principles,
96
+ greeting: identity.greeting ?? `Hello! I am ${identity.name}.`,
97
+ },
98
+ vault: {
99
+ connected: true,
100
+ entries: s.totalEntries,
101
+ domains: Object.keys(s.byDomain),
102
+ },
103
+ domains: identity.domains,
104
+ };
105
+ },
106
+ },
107
+ {
108
+ name: 'register',
109
+ description: 'Register a project for context tracking.',
110
+ auth: 'write',
111
+ schema: z.object({
112
+ projectPath: z.string().default('.'),
113
+ }),
114
+ handler: async (params) => {
115
+ const projectPath = params.projectPath ?? '.';
116
+ if (runtime.projectRegistry) {
117
+ try {
118
+ const project = runtime.projectRegistry.register(projectPath);
119
+ return { registered: true, project };
120
+ }
121
+ catch {
122
+ return { registered: false, reason: 'Already registered or error' };
123
+ }
124
+ }
125
+ return { registered: false, reason: 'Project registry not available' };
126
+ },
127
+ },
128
+ {
129
+ name: 'setup',
130
+ description: 'Check setup status — vault entries, engine health, domain packs.',
131
+ auth: 'read',
132
+ handler: async () => {
133
+ const s = runtime.vault.stats();
134
+ return {
135
+ agent: {
136
+ id: identity.id,
137
+ name: identity.name,
138
+ format: 'filetree',
139
+ },
140
+ vault: {
141
+ entries: s.totalEntries,
142
+ domains: Object.keys(s.byDomain),
143
+ byType: s.byType,
144
+ },
145
+ engine: {
146
+ cognee: runtime.cognee !== null && runtime.cognee !== undefined,
147
+ brain: true,
148
+ curator: true,
149
+ planner: true,
150
+ },
151
+ recommendations: s.totalEntries === 0
152
+ ? ['Vault is empty — capture knowledge to start building intelligence']
153
+ : [],
154
+ };
155
+ },
156
+ },
157
+ ];
158
+ }
159
+ //# sourceMappingURL=core-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ops.js","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Soleri Knowledge Engine — MCP Server Entry Point
3
+ *
4
+ * This is the standalone knowledge engine that file-tree agents connect to.
5
+ * It reads agent.yaml, initializes the runtime, and registers all tools.
6
+ *
7
+ * Usage:
8
+ * npx @soleri/engine --agent ./agent.yaml
9
+ *
10
+ * Or in .mcp.json:
11
+ * { "command": "npx", "args": ["@soleri/engine", "--agent", "./agent.yaml"] }
12
+ *
13
+ * Binary entry point: ./bin/soleri-engine.ts
14
+ */
15
+ export { registerEngine } from './register-engine.js';
16
+ export type { EngineRegistrationOptions, EngineRegistrationResult } from './register-engine.js';
17
+ export { createCoreOps } from './core-ops.js';
18
+ export type { AgentIdentityConfig } from './core-ops.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}