trellis 3.1.35 → 3.2.2

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 (287) hide show
  1. package/CHANGELOG.md +23 -5
  2. package/README.md +63 -156
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-2P4F6AOJ.js} +91 -29
  5. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  6. package/dist/browser/index.d.ts +18 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.js +95 -0
  9. package/dist/{index-53f3b8p8.js → chunk-2W3MHTMG.js} +552 -213
  10. package/dist/chunk-44FFQKQX.js +142 -0
  11. package/dist/chunk-4HYPLFJD.js +150 -0
  12. package/dist/chunk-4XIVMVHC.js +361 -0
  13. package/dist/{index-yp88he8n.js → chunk-6CTA6MCE.js} +88 -64
  14. package/dist/chunk-6GEZ6DN5.js +394 -0
  15. package/dist/chunk-7ZFRVCUE.js +211 -0
  16. package/dist/chunk-CAG4FULI.js +121 -0
  17. package/dist/chunk-FF36CQHZ.js +61 -0
  18. package/dist/{index-h32txmxe.js → chunk-FKQO5A3H.js} +6 -13
  19. package/dist/{index-nq520y6k.js → chunk-FWRS4CSC.js} +46 -32
  20. package/dist/chunk-GFZCJ4EH.js +108 -0
  21. package/dist/chunk-GLM4HGN4.js +55 -0
  22. package/dist/{index-4cdr7x2x.js → chunk-GU374KWZ.js} +182 -111
  23. package/dist/chunk-H6JB3PZ3.js +45 -0
  24. package/dist/chunk-IZX2PLIB.js +1240 -0
  25. package/dist/chunk-J2TXUFCZ.js +289 -0
  26. package/dist/chunk-J3WYZO3Q.js +211 -0
  27. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  28. package/dist/chunk-JHHEXEDM.js +162 -0
  29. package/dist/chunk-JUEMDWLU.js +233 -0
  30. package/dist/chunk-KFQGP6VL.js +33 -0
  31. package/dist/chunk-KIJITUZB.js +419 -0
  32. package/dist/{index-4wxa8xz4.js → chunk-KQ4A2D2P.js} +162 -23
  33. package/dist/chunk-KSU2GW22.js +958 -0
  34. package/dist/{index-rv1p47gp.js → chunk-L5N5PR2S.js} +3015 -2480
  35. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  36. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  37. package/dist/chunk-MPXUVGT3.js +104 -0
  38. package/dist/chunk-N6MYZT4O.js +68 -0
  39. package/dist/chunk-O2AV5WMN.js +48 -0
  40. package/dist/chunk-PZ4XYZ4J.js +143 -0
  41. package/dist/chunk-QB5ISE47.js +419 -0
  42. package/dist/chunk-RSWUFTO2.js +857 -0
  43. package/dist/chunk-S3XLFZ27.js +1095 -0
  44. package/dist/{index-w5wccer3.js → chunk-S6GBJ2ZB.js} +28 -12
  45. package/dist/{index-7pjz3tsy.js → chunk-SGMDTWJJ.js} +57 -15
  46. package/dist/chunk-SPSPV5BC.js +390 -0
  47. package/dist/chunk-TCKXSOBP.js +123 -0
  48. package/dist/chunk-UBGUDMUV.js +59 -0
  49. package/dist/{index-wt8rz4gn.js → chunk-UQISRW6T.js} +97 -26
  50. package/dist/chunk-USEINYUL.js +12 -0
  51. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  52. package/dist/{index-xhcp6xrn.js → chunk-VBYUTRXX.js} +695 -514
  53. package/dist/{index-vkpkfwhq.js → chunk-VDAKEOML.js} +234 -194
  54. package/dist/chunk-WXSWA3MV.js +0 -0
  55. package/dist/{index-n9f2qyh5.js → chunk-X5FLTRUB.js} +55 -33
  56. package/dist/{index-h7zxhhhh.js → chunk-XMQ7G77X.js} +46 -38
  57. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  58. package/dist/cli/deploy-cli.d.ts +18 -0
  59. package/dist/cli/deploy-cli.d.ts.map +1 -0
  60. package/dist/cli/errors.d.ts +6 -0
  61. package/dist/cli/errors.d.ts.map +1 -0
  62. package/dist/cli/examples.d.ts +23 -0
  63. package/dist/cli/examples.d.ts.map +1 -0
  64. package/dist/cli/index.d.ts +1 -1
  65. package/dist/cli/index.d.ts.map +1 -1
  66. package/dist/cli/index.js +2426 -6225
  67. package/dist/client/index.browser.d.ts +29 -0
  68. package/dist/client/index.browser.d.ts.map +1 -0
  69. package/dist/client/index.browser.js +64 -0
  70. package/dist/client/index.d.ts +6 -1
  71. package/dist/client/index.d.ts.map +1 -1
  72. package/dist/client/index.js +41 -21
  73. package/dist/client/live.d.ts +67 -0
  74. package/dist/client/live.d.ts.map +1 -0
  75. package/dist/client/reactive.d.ts +31 -0
  76. package/dist/client/reactive.d.ts.map +1 -0
  77. package/dist/client/sdk.browser.d.ts +104 -0
  78. package/dist/client/sdk.browser.d.ts.map +1 -0
  79. package/dist/client/sdk.browser.js +9 -0
  80. package/dist/client/sdk.d.ts +26 -2
  81. package/dist/client/sdk.d.ts.map +1 -1
  82. package/dist/client/sdk.js +9 -0
  83. package/dist/client/vcs-client.d.ts +129 -0
  84. package/dist/client/vcs-client.d.ts.map +1 -0
  85. package/dist/cms/index.js +171 -163
  86. package/dist/{config-8hczw0rs.js → config-PFTP67TR.js} +8 -9
  87. package/dist/core/computation/index.d.ts +5 -0
  88. package/dist/core/computation/index.d.ts.map +1 -0
  89. package/dist/core/computation/rollup.d.ts +18 -0
  90. package/dist/core/computation/rollup.d.ts.map +1 -0
  91. package/dist/core/index.d.ts +5 -0
  92. package/dist/core/index.d.ts.map +1 -1
  93. package/dist/core/index.js +171 -104
  94. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  95. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  96. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  97. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  98. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  99. package/dist/core/ontology/types.d.ts +5 -0
  100. package/dist/core/ontology/types.d.ts.map +1 -1
  101. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  102. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  103. package/dist/core/persist/factory.d.ts +6 -7
  104. package/dist/core/persist/factory.d.ts.map +1 -1
  105. package/dist/core/persist/factory.js +2 -3
  106. package/dist/core/persist/sqljs-backend.js +2 -3
  107. package/dist/db/index.d.ts +4 -1
  108. package/dist/db/index.d.ts.map +1 -1
  109. package/dist/db/index.js +67 -54
  110. package/dist/db/inspector.js +11 -19
  111. package/dist/db/trellis.css +1 -1
  112. package/dist/decisions/index.js +9 -10
  113. package/dist/deploy-LQ7GUGJ5.js +9 -0
  114. package/dist/deploy-YNVG5E4E.js +9 -0
  115. package/dist/deploy-cli-24BCHAXY.js +67 -0
  116. package/dist/deploy-cli-C35HTITO.js +67 -0
  117. package/dist/embeddings/auto-embed.d.ts +2 -2
  118. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  119. package/dist/embeddings/index.js +20 -22
  120. package/dist/embeddings/search.d.ts +2 -1
  121. package/dist/embeddings/search.d.ts.map +1 -1
  122. package/dist/embeddings/store.d.ts +25 -4
  123. package/dist/embeddings/store.d.ts.map +1 -1
  124. package/dist/engine.d.ts +59 -19
  125. package/dist/engine.d.ts.map +1 -1
  126. package/dist/import-UZEKXU3B.js +10 -0
  127. package/dist/index.js +102 -93
  128. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  129. package/dist/links/index.js +24 -26
  130. package/dist/mcp/server.d.ts.map +1 -1
  131. package/dist/plugins/agent-memory/index.js +316 -0
  132. package/dist/plugins/idea-garden/index.js +165 -0
  133. package/dist/plugins/plan-approval/index.js +579 -0
  134. package/dist/plugins/proactive-watcher/index.js +194 -0
  135. package/dist/{index-2r4jxwnb.js → query-XYLTJYSA.js} +14 -15
  136. package/dist/react/index.js +39 -70
  137. package/dist/react/realtime.js +11 -0
  138. package/dist/react/schema-hooks.js +87 -0
  139. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  140. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  141. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  142. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  143. package/dist/realtime/index.d.ts +44 -0
  144. package/dist/realtime/index.d.ts.map +1 -0
  145. package/dist/realtime/index.js +40 -0
  146. package/dist/realtime/memory-hub.d.ts +32 -0
  147. package/dist/realtime/memory-hub.d.ts.map +1 -0
  148. package/dist/realtime/persistent-channel.d.ts +105 -0
  149. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  150. package/dist/realtime/presence.d.ts +73 -0
  151. package/dist/realtime/presence.d.ts.map +1 -0
  152. package/dist/realtime/relay-persistence.d.ts +37 -0
  153. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  154. package/dist/realtime/relay-persistence.js +107 -0
  155. package/dist/realtime/relay-server.d.ts +103 -0
  156. package/dist/realtime/relay-server.d.ts.map +1 -0
  157. package/dist/realtime/room.d.ts +98 -0
  158. package/dist/realtime/room.d.ts.map +1 -0
  159. package/dist/realtime/text.d.ts +73 -0
  160. package/dist/realtime/text.d.ts.map +1 -0
  161. package/dist/realtime/types.d.ts +89 -0
  162. package/dist/realtime/types.d.ts.map +1 -0
  163. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  164. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  165. package/dist/realtime.bundle.js +1100 -0
  166. package/dist/{remote-manager-xvbg4230.js → remote-manager-ODE3T2KR.js} +25 -15
  167. package/dist/scaffold/seed.d.ts.map +1 -1
  168. package/dist/scaffold/write.d.ts +1 -1
  169. package/dist/scaffold/write.d.ts.map +1 -1
  170. package/dist/schema/define.d.ts +137 -0
  171. package/dist/schema/define.d.ts.map +1 -0
  172. package/dist/schema/entity-projection.d.ts +34 -0
  173. package/dist/schema/entity-projection.d.ts.map +1 -0
  174. package/dist/schema/eql.d.ts +46 -0
  175. package/dist/schema/eql.d.ts.map +1 -0
  176. package/dist/schema/index.d.ts +21 -0
  177. package/dist/schema/index.d.ts.map +1 -0
  178. package/dist/schema/index.js +46 -0
  179. package/dist/schema/kernel-resolve.d.ts +21 -0
  180. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  181. package/dist/schema/mutations.d.ts +20 -0
  182. package/dist/schema/mutations.d.ts.map +1 -0
  183. package/dist/schema/resolve.d.ts +21 -0
  184. package/dist/schema/resolve.d.ts.map +1 -0
  185. package/dist/server/deploy-meta.d.ts +25 -0
  186. package/dist/server/deploy-meta.d.ts.map +1 -0
  187. package/dist/server/deploy.d.ts +7 -2
  188. package/dist/server/deploy.d.ts.map +1 -1
  189. package/dist/server/index.d.ts +7 -2
  190. package/dist/server/index.d.ts.map +1 -1
  191. package/dist/server/index.js +100 -58
  192. package/dist/server/node-adapter.js +5 -104
  193. package/dist/server/realtime.d.ts +14 -3
  194. package/dist/server/realtime.d.ts.map +1 -1
  195. package/dist/server/server.d.ts +8 -16
  196. package/dist/server/server.d.ts.map +1 -1
  197. package/dist/server/sprites.d.ts +18 -1
  198. package/dist/server/sprites.d.ts.map +1 -1
  199. package/dist/server/tenancy.d.ts +4 -0
  200. package/dist/server/tenancy.d.ts.map +1 -1
  201. package/dist/server/usage-meter.d.ts +53 -0
  202. package/dist/server/usage-meter.d.ts.map +1 -0
  203. package/dist/server-MB3OPSPI.js +18 -0
  204. package/dist/server-ZVWGLLRF.js +18 -0
  205. package/dist/sprites-KQGTGM6W.js +27 -0
  206. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  207. package/dist/svelte/index.d.ts +17 -0
  208. package/dist/svelte/index.d.ts.map +1 -0
  209. package/dist/svelte/index.js +51 -0
  210. package/dist/svelte/schema-hooks.d.ts +45 -0
  211. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  212. package/dist/svelte/schema-hooks.js +71 -0
  213. package/dist/svelte/stores.d.ts +78 -0
  214. package/dist/svelte/stores.d.ts.map +1 -0
  215. package/dist/sync/http-transport.d.ts +3 -3
  216. package/dist/sync/http-transport.d.ts.map +1 -1
  217. package/dist/sync/index.d.ts +15 -1
  218. package/dist/sync/index.d.ts.map +1 -1
  219. package/dist/sync/index.js +617 -0
  220. package/dist/sync/memory-room.d.ts +37 -0
  221. package/dist/sync/memory-room.d.ts.map +1 -0
  222. package/dist/sync/memory-transport.d.ts +3 -3
  223. package/dist/sync/memory-transport.d.ts.map +1 -1
  224. package/dist/sync/partykit-room.d.ts +40 -0
  225. package/dist/sync/partykit-room.d.ts.map +1 -0
  226. package/dist/sync/partykit-transport.d.ts +84 -0
  227. package/dist/sync/partykit-transport.d.ts.map +1 -0
  228. package/dist/sync/room-core.d.ts +53 -0
  229. package/dist/sync/room-core.d.ts.map +1 -0
  230. package/dist/sync/sync-engine.d.ts +40 -2
  231. package/dist/sync/sync-engine.d.ts.map +1 -1
  232. package/dist/sync/sync-room-server.d.ts +39 -0
  233. package/dist/sync/sync-room-server.d.ts.map +1 -0
  234. package/dist/sync/types.d.ts +70 -3
  235. package/dist/sync/types.d.ts.map +1 -1
  236. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  237. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  238. package/dist/sync/ws-transport.d.ts +2 -2
  239. package/dist/sync/ws-transport.d.ts.map +1 -1
  240. package/dist/tenancy-NBLLGCNJ.js +14 -0
  241. package/dist/tenancy-POMWQP6M.js +16 -0
  242. package/dist/ui/client.html +355 -67
  243. package/dist/ui/launch-explorer.d.ts +22 -0
  244. package/dist/ui/launch-explorer.d.ts.map +1 -0
  245. package/dist/ui/server.d.ts +1 -1
  246. package/dist/ui/server.d.ts.map +1 -1
  247. package/dist/vcs/blob-store.d.ts.map +1 -1
  248. package/dist/vcs/idb-op-log.d.ts +67 -0
  249. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  250. package/dist/vcs/index.d.ts +1 -0
  251. package/dist/vcs/index.d.ts.map +1 -1
  252. package/dist/vcs/index.js +81 -72
  253. package/dist/vcs/issue.d.ts +22 -5
  254. package/dist/vcs/issue.d.ts.map +1 -1
  255. package/dist/vcs/lane-materialize.d.ts +5 -0
  256. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  257. package/dist/vcs/op-log.d.ts +28 -2
  258. package/dist/vcs/op-log.d.ts.map +1 -1
  259. package/dist/vcs/ops.d.ts +10 -0
  260. package/dist/vcs/ops.d.ts.map +1 -1
  261. package/dist/vcs/types.d.ts +2 -0
  262. package/dist/vcs/types.d.ts.map +1 -1
  263. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  264. package/dist/vue/hooks.d.ts +64 -0
  265. package/dist/vue/hooks.d.ts.map +1 -0
  266. package/dist/vue/index.d.ts +19 -0
  267. package/dist/vue/index.d.ts.map +1 -0
  268. package/dist/vue/index.js +59 -0
  269. package/dist/vue/schema-hooks.d.ts +41 -0
  270. package/dist/vue/schema-hooks.d.ts.map +1 -0
  271. package/dist/vue/schema-hooks.js +64 -0
  272. package/package.json +130 -17
  273. package/dist/deploy-999q207z.js +0 -10
  274. package/dist/engine-y0724kjq.js +0 -8
  275. package/dist/import-s2b8e0ft.js +0 -11
  276. package/dist/index-a76rekgs.js +0 -67
  277. package/dist/index-c9h37r6h.js +0 -1
  278. package/dist/index-hr9qvv77.js +0 -860
  279. package/dist/index-k5b0xskw.js +0 -1
  280. package/dist/index-nzb3am4f.js +0 -80
  281. package/dist/index-wncptktd.js +0 -292
  282. package/dist/index-y6a4kj0p.js +0 -43
  283. package/dist/index-yhwjgfvj.js +0 -342
  284. package/dist/sdk-bepky0xs.js +0 -16
  285. package/dist/server-szdjx0nt.js +0 -13
  286. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  287. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../../src/core/computation/rollup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC1D;AAED,qDAAqD;AACrD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,iBAAiB,GACrB,MAAM,EAAE,CAmBV;AA6BD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,iBAAiB,GACrB,IAAI,CA8CN;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAcN;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,GACX,0BAA0B,GAAG,SAAS,CAExC"}
@@ -24,6 +24,11 @@ export { AgentHarness } from './agents/index.js';
24
24
  export type { AgentDef, ToolDef, ToolHandler, ToolResult, AgentRun, DecisionTrace, RunStatus, AgentHarnessConfig, } from './agents/index.js';
25
25
  export { PluginRegistry, EventBus } from './plugins/index.js';
26
26
  export type { PluginDef, PluginContext, PluginManifest, EventCallback, EventHandler, WellKnownEvent, WorkspaceConfig, } from './plugins/index.js';
27
+ export { ExprEvaluator, evalExpr, evaluateRollup, collectRollupRelatedIds, projectRelationFields, } from './computation/index.js';
28
+ export type { EvalContext, RollupEvalContext } from './computation/index.js';
29
+ export { attachStandardMiddleware, buildOntologyIndex } from './kernel/boot-middleware.js';
30
+ export { createLogicMiddleware } from './kernel/logic-middleware.js';
31
+ export type { LogicMiddlewareConfig } from './kernel/logic-middleware.js';
27
32
  export { TrellisKernel } from './kernel/trellis-kernel.js';
28
33
  export type { KernelConfig, MutateResult, EntityRecord, } from './kernel/trellis-kernel.js';
29
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1E,YAAY,EACV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,KAAK,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE1E,YAAY,EACV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,KAAK,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,aAAa,EACb,SAAS,EACT,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,QAAQ,EACR,cAAc,EACd,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,4BAA4B,CAAC"}
@@ -1,4 +1,9 @@
1
- // @bun
1
+ import {
2
+ SqlJsKernelBackend
3
+ } from "../chunk-LNUIGRDZ.js";
4
+ import {
5
+ createKernelBackend
6
+ } from "../chunk-FKQO5A3H.js";
2
7
  import {
3
8
  OntologyRegistry,
4
9
  agentOntology,
@@ -8,43 +13,47 @@ import {
8
13
  teamOntology,
9
14
  validateEntity,
10
15
  validateStore
11
- } from "../index-w7ng765c.js";
16
+ } from "../chunk-YCM7ZYEZ.js";
12
17
  import {
13
- SqlJsKernelBackend
14
- } from "../index-h9e2efx4.js";
15
- import {
16
- createKernelBackend
17
- } from "../index-h32txmxe.js";
18
+ ExprEvaluator,
19
+ attachStandardMiddleware,
20
+ buildOntologyIndex,
21
+ collectRollupRelatedIds,
22
+ createLogicMiddleware,
23
+ evalExpr,
24
+ evaluateRollup,
25
+ projectRelationFields
26
+ } from "../chunk-SPSPV5BC.js";
18
27
  import {
19
28
  DatalogRuntime,
20
29
  parseQuery,
21
30
  parseRule,
22
31
  parseSimple
23
- } from "../index-n9f2qyh5.js";
32
+ } from "../chunk-X5FLTRUB.js";
33
+ import {
34
+ SqliteKernelBackend
35
+ } from "../chunk-XMQ7G77X.js";
24
36
  import {
25
37
  TrellisKernel
26
- } from "../index-4wxa8xz4.js";
38
+ } from "../chunk-KQ4A2D2P.js";
27
39
  import {
28
40
  QueryEngine
29
- } from "../index-yp88he8n.js";
41
+ } from "../chunk-6CTA6MCE.js";
30
42
  import {
31
43
  EAVStore,
32
44
  flatten,
33
45
  init_eav_store,
34
46
  jsonEntityFacts
35
- } from "../index-yhwjgfvj.js";
36
- import {
37
- SqliteKernelBackend
38
- } from "../index-h7zxhhhh.js";
39
- import"../index-a76rekgs.js";
47
+ } from "../chunk-4XIVMVHC.js";
48
+ import "../chunk-KFQGP6VL.js";
40
49
 
41
50
  // src/core/index.ts
42
51
  init_eav_store();
43
52
 
44
53
  // src/core/agents/harness.ts
45
- class AgentHarness {
54
+ var AgentHarness = class {
46
55
  kernel;
47
- toolHandlers = new Map;
56
+ toolHandlers = /* @__PURE__ */ new Map();
48
57
  config;
49
58
  runCounter = 0;
50
59
  constructor(kernel, config) {
@@ -55,13 +64,20 @@ class AgentHarness {
55
64
  ...config
56
65
  };
57
66
  }
67
+ // ... (existing methods)
68
+ /**
69
+ * Execute an autonomous task run using the configured LLM provider.
70
+ *
71
+ * When the configured contextManager is a GraphContextManager, conversations
72
+ * are automatically created (or resumed) and linked to the agent run. Pass
73
+ * `opts.conversationId` to resume an existing conversation.
74
+ */
58
75
  async runAgentTask(agentId, input, opts) {
59
76
  if (!this.config.llmProvider) {
60
77
  throw new Error("AgentHarness: No llmProvider configured for autonomous tasks.");
61
78
  }
62
79
  const agent = this.getAgent(agentId);
63
- if (!agent)
64
- throw new Error(`Agent "${agentId}" not found.`);
80
+ if (!agent) throw new Error(`Agent "${agentId}" not found.`);
65
81
  const runId = await this.startRun(agentId, input);
66
82
  const context = this.config.contextManager;
67
83
  if (context && typeof context.createConversation === "function") {
@@ -98,8 +114,7 @@ class AgentHarness {
98
114
  tools: this._getAvailableTools(agent.tools)
99
115
  });
100
116
  const message = response.choices[0].message;
101
- if (context)
102
- context.addMessage(message);
117
+ if (context) context.addMessage(message);
103
118
  if (message.tool_calls && message.tool_calls.length > 0) {
104
119
  let planPending = false;
105
120
  for (const call of message.tool_calls) {
@@ -141,6 +156,9 @@ class AgentHarness {
141
156
  }
142
157
  }));
143
158
  }
159
+ // -------------------------------------------------------------------------
160
+ // Agent CRUD (via kernel entities)
161
+ // -------------------------------------------------------------------------
144
162
  async createAgent(def) {
145
163
  const id = def.id ?? `agent:${def.name.toLowerCase().replace(/\s+/g, "-")}`;
146
164
  await this.kernel.createEntity(id, "Agent", {
@@ -165,8 +183,7 @@ class AgentHarness {
165
183
  }
166
184
  getAgent(id) {
167
185
  const entity = this.kernel.getEntity(id);
168
- if (!entity || entity.type !== "Agent")
169
- return null;
186
+ if (!entity || entity.type !== "Agent") return null;
170
187
  const store = this.kernel.getStore();
171
188
  const capLinks = store.getLinksByEntityAndAttribute(id, "hasCapability");
172
189
  const toolLinks = store.getLinksByEntityAndAttribute(id, "hasTool");
@@ -183,9 +200,15 @@ class AgentHarness {
183
200
  };
184
201
  }
185
202
  listAgents(status) {
186
- const entities = this.kernel.listEntities("Agent", status ? { status } : undefined);
203
+ const entities = this.kernel.listEntities(
204
+ "Agent",
205
+ status ? { status } : void 0
206
+ );
187
207
  return entities.map((e) => this.getAgent(e.id)).filter((a) => a !== null);
188
208
  }
209
+ // -------------------------------------------------------------------------
210
+ // Tool registration
211
+ // -------------------------------------------------------------------------
189
212
  async registerTool(def, handler) {
190
213
  const id = def.id ?? `tool:${def.name.toLowerCase().replace(/\s+/g, "-")}`;
191
214
  if (!this.kernel.getEntity(id)) {
@@ -211,13 +234,15 @@ class AgentHarness {
211
234
  endpoint: e.facts.find((f) => f.a === "endpoint")?.v
212
235
  }));
213
236
  }
237
+ // -------------------------------------------------------------------------
238
+ // Run management
239
+ // -------------------------------------------------------------------------
214
240
  async startRun(agentId, input) {
215
241
  const agent = this.getAgent(agentId);
216
- if (!agent)
217
- throw new Error(`Agent "${agentId}" not found.`);
242
+ if (!agent) throw new Error(`Agent "${agentId}" not found.`);
218
243
  const runId = `run:${agentId.replace("agent:", "")}:${Date.now()}:${++this.runCounter}`;
219
244
  await this.kernel.createEntity(runId, "AgentRun", {
220
- startedAt: new Date().toISOString(),
245
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
221
246
  status: "running",
222
247
  ...input ? { input } : {}
223
248
  });
@@ -227,25 +252,22 @@ class AgentHarness {
227
252
  async completeRun(runId, output, tokenCount) {
228
253
  const updates = {
229
254
  status: "completed",
230
- completedAt: new Date().toISOString()
255
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
231
256
  };
232
- if (output)
233
- updates.output = output;
234
- if (tokenCount !== undefined)
235
- updates.totalTokens = tokenCount;
257
+ if (output) updates.output = output;
258
+ if (tokenCount !== void 0) updates.totalTokens = tokenCount;
236
259
  await this.kernel.updateEntity(runId, updates);
237
260
  }
238
261
  async failRun(runId, error) {
239
262
  await this.kernel.updateEntity(runId, {
240
263
  status: "failed",
241
- completedAt: new Date().toISOString(),
264
+ completedAt: (/* @__PURE__ */ new Date()).toISOString(),
242
265
  output: `Error: ${error}`
243
266
  });
244
267
  }
245
268
  getRun(runId) {
246
269
  const entity = this.kernel.getEntity(runId);
247
- if (!entity || entity.type !== "AgentRun")
248
- return null;
270
+ if (!entity || entity.type !== "AgentRun") return null;
249
271
  const store = this.kernel.getStore();
250
272
  const agentLink = store.getLinksByEntityAndAttribute(runId, "executedBy");
251
273
  const agentId = agentLink[0]?.e2 ?? "";
@@ -269,16 +291,20 @@ class AgentHarness {
269
291
  }
270
292
  listRuns(agentId) {
271
293
  const runs = this.kernel.listEntities("AgentRun");
272
- return runs.map((e) => this.getRun(e.id)).filter((r) => r !== null).filter((r) => !agentId || r.agentId === agentId).sort((a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime());
294
+ return runs.map((e) => this.getRun(e.id)).filter((r) => r !== null).filter((r) => !agentId || r.agentId === agentId).sort(
295
+ (a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime()
296
+ );
273
297
  }
298
+ // -------------------------------------------------------------------------
299
+ // Decision trace recording
300
+ // -------------------------------------------------------------------------
274
301
  async recordDecision(runId, toolName, input, output, opts) {
275
302
  const run = this.getRun(runId);
276
- if (!run)
277
- throw new Error(`Run "${runId}" not found.`);
303
+ if (!run) throw new Error(`Run "${runId}" not found.`);
278
304
  const decId = `decision:${runId.replace("run:", "")}:${Date.now()}`;
279
305
  await this.kernel.createEntity(decId, "DecisionTrace", {
280
306
  toolName,
281
- timestamp: new Date().toISOString(),
307
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
282
308
  ...input ? { input: JSON.stringify(input) } : {},
283
309
  ...output ? { output } : {},
284
310
  ...opts?.rationale ? { rationale: opts.rationale } : {},
@@ -293,6 +319,9 @@ class AgentHarness {
293
319
  }
294
320
  return decId;
295
321
  }
322
+ /**
323
+ * Invoke a registered tool within a run, auto-recording a decision trace.
324
+ */
296
325
  async invokeTool(runId, toolId, input, opts) {
297
326
  const handler = this.toolHandlers.get(toolId);
298
327
  if (!handler)
@@ -301,7 +330,13 @@ class AgentHarness {
301
330
  if (this.config.recordDecisions) {
302
331
  const toolEntity = this.kernel.getEntity(toolId);
303
332
  const toolName = toolEntity ? String(toolEntity.facts.find((f) => f.a === "name")?.v ?? toolId) : toolId;
304
- await this.recordDecision(runId, toolName, input, result.success ? String(result.output ?? "") : `Error: ${result.error}`, opts);
333
+ await this.recordDecision(
334
+ runId,
335
+ toolName,
336
+ input,
337
+ result.success ? String(result.output ?? "") : `Error: ${result.error}`,
338
+ opts
339
+ );
305
340
  }
306
341
  return result;
307
342
  }
@@ -311,10 +346,12 @@ class AgentHarness {
311
346
  const decisionIds = links.filter((l) => l.e2 === entityId).map((l) => l.e1);
312
347
  return decisionIds.map((did) => this._buildDecisionTrace(did)).filter(Boolean);
313
348
  }
349
+ // -------------------------------------------------------------------------
350
+ // Internal helpers
351
+ // -------------------------------------------------------------------------
314
352
  _buildDecisionTrace(decId) {
315
353
  const entity = this.kernel.getEntity(decId);
316
- if (!entity)
317
- return null;
354
+ if (!entity) return null;
318
355
  const get = (a) => entity.facts.find((f) => f.a === a)?.v;
319
356
  const store = this.kernel.getStore();
320
357
  const runLink = store.getLinksByEntityAndAttribute(decId, "belongsToRun");
@@ -351,12 +388,13 @@ class AgentHarness {
351
388
  relatedEntities: relatedLinks.map((l) => l.e2)
352
389
  };
353
390
  }
354
- }
391
+ };
392
+
355
393
  // src/core/plugins/registry.ts
356
- class EventBus {
357
- handlers = new Map;
394
+ var EventBus = class {
395
+ handlers = /* @__PURE__ */ new Map();
358
396
  on(event, handler) {
359
- const set = this.handlers.get(event) ?? new Set;
397
+ const set = this.handlers.get(event) ?? /* @__PURE__ */ new Set();
360
398
  set.add(handler);
361
399
  this.handlers.set(event, set);
362
400
  }
@@ -364,22 +402,18 @@ class EventBus {
364
402
  const set = this.handlers.get(event);
365
403
  if (set) {
366
404
  set.delete(handler);
367
- if (set.size === 0)
368
- this.handlers.delete(event);
405
+ if (set.size === 0) this.handlers.delete(event);
369
406
  }
370
407
  }
371
408
  async emit(event, data) {
372
409
  const exact = this.handlers.get(event);
373
410
  if (exact) {
374
- for (const h of exact)
375
- await h(data);
411
+ for (const h of exact) await h(data);
376
412
  }
377
413
  for (const [pattern, handlers] of this.handlers) {
378
- if (pattern === event)
379
- continue;
414
+ if (pattern === event) continue;
380
415
  if (pattern.endsWith("*") && event.startsWith(pattern.slice(0, -1))) {
381
- for (const h of handlers)
382
- await h(data);
416
+ for (const h of handlers) await h(data);
383
417
  }
384
418
  }
385
419
  }
@@ -389,33 +423,38 @@ class EventBus {
389
423
  clear() {
390
424
  this.handlers.clear();
391
425
  }
392
- }
393
-
394
- class PluginRegistry {
395
- plugins = new Map;
396
- eventBus = new EventBus;
426
+ };
427
+ var PluginRegistry = class {
428
+ plugins = /* @__PURE__ */ new Map();
429
+ eventBus = new EventBus();
397
430
  workspaceConfig = {};
398
431
  logs = [];
432
+ /**
433
+ * Register a plugin definition. Does not load it yet.
434
+ */
399
435
  register(def) {
400
436
  if (this.plugins.has(def.id)) {
401
437
  throw new Error(`Plugin "${def.id}" is already registered.`);
402
438
  }
403
439
  this.plugins.set(def.id, { def, loaded: false });
404
440
  }
441
+ /**
442
+ * Unregister a plugin. Unloads it first if loaded.
443
+ */
405
444
  async unregister(id) {
406
445
  const entry = this.plugins.get(id);
407
- if (!entry)
408
- return;
409
- if (entry.loaded)
410
- await this.unload(id);
446
+ if (!entry) return;
447
+ if (entry.loaded) await this.unload(id);
411
448
  this.plugins.delete(id);
412
449
  }
450
+ /**
451
+ * Load a plugin (call onLoad, register middleware/ontologies/rules/events).
452
+ * Resolves dependencies first.
453
+ */
413
454
  async load(id, kernel, ontologyRegistry, queryEngine) {
414
455
  const entry = this.plugins.get(id);
415
- if (!entry)
416
- throw new Error(`Plugin "${id}" is not registered.`);
417
- if (entry.loaded)
418
- return;
456
+ if (!entry) throw new Error(`Plugin "${id}" is not registered.`);
457
+ if (entry.loaded) return;
419
458
  if (entry.def.dependencies) {
420
459
  for (const dep of entry.def.dependencies) {
421
460
  const depEntry = this.plugins.get(dep);
@@ -436,7 +475,8 @@ class PluginRegistry {
436
475
  for (const schema of entry.def.ontologies) {
437
476
  try {
438
477
  ontologyRegistry.register(schema);
439
- } catch {}
478
+ } catch {
479
+ }
440
480
  }
441
481
  }
442
482
  if (entry.def.rules && queryEngine) {
@@ -456,10 +496,12 @@ class PluginRegistry {
456
496
  entry.loaded = true;
457
497
  await this.eventBus.emit("plugin:loaded", { pluginId: id });
458
498
  }
499
+ /**
500
+ * Unload a plugin (call onUnload, remove middleware/events).
501
+ */
459
502
  async unload(id) {
460
503
  const entry = this.plugins.get(id);
461
- if (!entry || !entry.loaded)
462
- return;
504
+ if (!entry || !entry.loaded) return;
463
505
  const ctx = this._buildContext(id);
464
506
  if (entry.def.onUnload) {
465
507
  await entry.def.onUnload(ctx);
@@ -472,18 +514,27 @@ class PluginRegistry {
472
514
  entry.loaded = false;
473
515
  await this.eventBus.emit("plugin:unloaded", { pluginId: id });
474
516
  }
517
+ /**
518
+ * Load all registered plugins in dependency order.
519
+ */
475
520
  async loadAll(kernel, ontologyRegistry, queryEngine) {
476
521
  const order = this._resolveDependencyOrder();
477
522
  for (const id of order) {
478
523
  await this.load(id, kernel, ontologyRegistry, queryEngine);
479
524
  }
480
525
  }
526
+ /**
527
+ * Unload all plugins in reverse order.
528
+ */
481
529
  async unloadAll() {
482
530
  const order = this._resolveDependencyOrder().reverse();
483
531
  for (const id of order) {
484
532
  await this.unload(id);
485
533
  }
486
534
  }
535
+ // -------------------------------------------------------------------------
536
+ // Queries
537
+ // -------------------------------------------------------------------------
487
538
  get(id) {
488
539
  return this.plugins.get(id)?.def;
489
540
  }
@@ -496,6 +547,9 @@ class PluginRegistry {
496
547
  listLoaded() {
497
548
  return [...this.plugins.values()].filter((e) => e.loaded).map((e) => e.def);
498
549
  }
550
+ // -------------------------------------------------------------------------
551
+ // Event bus access
552
+ // -------------------------------------------------------------------------
499
553
  getEventBus() {
500
554
  return this.eventBus;
501
555
  }
@@ -505,6 +559,9 @@ class PluginRegistry {
505
559
  on(event, handler) {
506
560
  this.eventBus.on(event, handler);
507
561
  }
562
+ // -------------------------------------------------------------------------
563
+ // Workspace config
564
+ // -------------------------------------------------------------------------
508
565
  getWorkspaceConfig() {
509
566
  return this.workspaceConfig;
510
567
  }
@@ -515,15 +572,19 @@ class PluginRegistry {
515
572
  return this.workspaceConfig.settings?.[key];
516
573
  }
517
574
  setConfigValue(key, value) {
518
- if (!this.workspaceConfig.settings)
519
- this.workspaceConfig.settings = {};
575
+ if (!this.workspaceConfig.settings) this.workspaceConfig.settings = {};
520
576
  this.workspaceConfig.settings[key] = value;
521
577
  }
578
+ // -------------------------------------------------------------------------
579
+ // Logs
580
+ // -------------------------------------------------------------------------
522
581
  getLogs(pluginId) {
523
- if (pluginId)
524
- return this.logs.filter((l) => l.pluginId === pluginId);
582
+ if (pluginId) return this.logs.filter((l) => l.pluginId === pluginId);
525
583
  return [...this.logs];
526
584
  }
585
+ // -------------------------------------------------------------------------
586
+ // Internal
587
+ // -------------------------------------------------------------------------
527
588
  _buildContext(pluginId) {
528
589
  return {
529
590
  pluginId,
@@ -533,18 +594,16 @@ class PluginRegistry {
533
594
  },
534
595
  getConfig: (key) => this.getConfigValue(key),
535
596
  log: (message) => {
536
- this.logs.push({ pluginId, message, timestamp: new Date().toISOString() });
597
+ this.logs.push({ pluginId, message, timestamp: (/* @__PURE__ */ new Date()).toISOString() });
537
598
  }
538
599
  };
539
600
  }
540
601
  _resolveDependencyOrder() {
541
- const visited = new Set;
602
+ const visited = /* @__PURE__ */ new Set();
542
603
  const order = [];
543
604
  const visit = (id, stack) => {
544
- if (visited.has(id))
545
- return;
546
- if (stack.has(id))
547
- throw new Error(`Circular dependency detected: ${[...stack, id].join(" \u2192 ")}`);
605
+ if (visited.has(id)) return;
606
+ if (stack.has(id)) throw new Error(`Circular dependency detected: ${[...stack, id].join(" \u2192 ")}`);
548
607
  stack.add(id);
549
608
  const entry = this.plugins.get(id);
550
609
  if (entry?.def.dependencies) {
@@ -557,33 +616,41 @@ class PluginRegistry {
557
616
  order.push(id);
558
617
  };
559
618
  for (const id of this.plugins.keys()) {
560
- visit(id, new Set);
619
+ visit(id, /* @__PURE__ */ new Set());
561
620
  }
562
621
  return order;
563
622
  }
564
- }
623
+ };
565
624
  export {
566
- validateStore,
567
- validateEntity,
568
- teamOntology,
569
- projectOntology,
570
- parseSimple,
571
- parseRule,
572
- parseQuery,
573
- jsonEntityFacts,
574
- flatten,
575
- createValidationMiddleware,
576
- createKernelBackend,
577
- builtinOntologies,
578
- agentOntology,
579
- TrellisKernel,
580
- SqliteKernelBackend,
581
- SqlJsKernelBackend,
582
- QueryEngine,
583
- PluginRegistry,
584
- OntologyRegistry,
585
- EventBus,
586
- EAVStore,
625
+ AgentHarness,
587
626
  DatalogRuntime,
588
- AgentHarness
627
+ EAVStore,
628
+ EventBus,
629
+ ExprEvaluator,
630
+ OntologyRegistry,
631
+ PluginRegistry,
632
+ QueryEngine,
633
+ SqlJsKernelBackend,
634
+ SqliteKernelBackend,
635
+ TrellisKernel,
636
+ agentOntology,
637
+ attachStandardMiddleware,
638
+ buildOntologyIndex,
639
+ builtinOntologies,
640
+ collectRollupRelatedIds,
641
+ createKernelBackend,
642
+ createLogicMiddleware,
643
+ createValidationMiddleware,
644
+ evalExpr,
645
+ evaluateRollup,
646
+ flatten,
647
+ jsonEntityFacts,
648
+ parseQuery,
649
+ parseRule,
650
+ parseSimple,
651
+ projectOntology,
652
+ projectRelationFields,
653
+ teamOntology,
654
+ validateEntity,
655
+ validateStore
589
656
  };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Standard kernel middleware registered at boot (db serve, CLI entity ops).
3
+ */
4
+ import type { SchemaDefinition } from '../ontology/types.js';
5
+ import type { TrellisKernel } from './trellis-kernel.js';
6
+ /** Index schemas by @id, short name, and label for entity-type lookup. */
7
+ export declare function buildOntologyIndex(schemas: SchemaDefinition[]): Map<string, SchemaDefinition>;
8
+ /** Register post-query formula enrichment on the kernel instance. */
9
+ export declare function attachStandardMiddleware(kernel: TrellisKernel): void;
10
+ //# sourceMappingURL=boot-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot-middleware.d.ts","sourceRoot":"","sources":["../../../src/core/kernel/boot-middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,EAAE,GAC1B,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAiB/B;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAUpE"}
@@ -2,12 +2,18 @@
2
2
  * Logic Middleware
3
3
  *
4
4
  * Evaluates computed fields (formula, rollup, ai_generated) after queries.
5
- * Runs post-query to enrich results with computed values.
5
+ * Projects ontology relation fields from graph links.
6
+ * Runs post-query to enrich EQL binding rows with computed values.
6
7
  */
8
+ import type { EAVStore } from '../store/eav-store.js';
7
9
  import type { KernelMiddleware } from './middleware.js';
8
10
  import type { SchemaDefinition } from '../ontology/types.js';
9
11
  export interface LogicMiddlewareConfig {
10
12
  ontologies: Map<string, SchemaDefinition>;
13
+ /** Graph store for rollups and relation projection. */
14
+ getStore?: () => EAVStore;
15
+ /** Resolve entity type from id when bindings omit an explicit type. */
16
+ getEntityType?: (entityId: string) => string | undefined;
11
17
  /** Optional AI function for ai_generated fields */
12
18
  generateAiField?: (prompt: string, context: Record<string, unknown>) => Promise<string>;
13
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logic-middleware.d.ts","sourceRoot":"","sources":["../../../src/core/kernel/logic-middleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,mDAAmD;IACnD,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,gBAAgB,CA0BlB"}
1
+ {"version":3,"file":"logic-middleware.d.ts","sourceRoot":"","sources":["../../../src/core/kernel/logic-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,QAAQ,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzD,mDAAmD;IACnD,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAC5B,gBAAgB,CAqBlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"trellis-kernel.d.ts","sourceRoot":"","sources":["../../../src/core/kernel/trellis-kernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trellis-kernel.d.ts","sourceRoot":"","sources":["../../../src/core/kernel/trellis-kernel.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,11 @@ export interface RollupConfig {
27
27
  relationProperty: string;
28
28
  targetProperty: string;
29
29
  aggregation: 'count' | 'sum' | 'avg' | 'min' | 'max' | 'median' | 'mode';
30
+ /** Traverse join-entities (e.g. frameworkTag rows) instead of graph links. */
31
+ joinEntity?: {
32
+ type: string;
33
+ foreignKey: string;
34
+ };
30
35
  }
31
36
  export interface AiGeneratedConfig {
32
37
  prompt: string;