trellis 3.1.35 → 3.2.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 (422) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +19 -2
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/better-sqlite-backend-2P4F6AOJ.js +209 -0
  5. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-PII64VE6.js} +37 -25
  6. package/dist/better-sqlite-backend-VUBVQ7SN.js +209 -0
  7. package/dist/better-sqlite-backend-Y3AQN65E.js +159 -0
  8. package/dist/better-sqlite-backend-Y3M7DXOX.js +159 -0
  9. package/dist/boot-middleware-FJDGVUM4.js +9 -0
  10. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  11. package/dist/boot-middleware-MLJUTLUM.js +9 -0
  12. package/dist/boot-middleware-ZZPDZNYR.js +9 -0
  13. package/dist/{index-wncptktd.js → chunk-276LKLZR.js} +126 -59
  14. package/dist/chunk-2BRTCEHB.js +143 -0
  15. package/dist/chunk-2CX5UCRV.js +111 -0
  16. package/dist/chunk-2ESYSVXG.js +48 -0
  17. package/dist/{index-yp88he8n.js → chunk-2I5JU73Y.js} +88 -64
  18. package/dist/{index-w5wccer3.js → chunk-2UNSRRNB.js} +10 -5
  19. package/dist/{index-4wxa8xz4.js → chunk-335UEHQR.js} +158 -22
  20. package/dist/chunk-36VSSTL7.js +357 -0
  21. package/dist/chunk-3ETIIPPB.js +1077 -0
  22. package/dist/chunk-3GDRZTAW.js +45 -0
  23. package/dist/chunk-44FFQKQX.js +142 -0
  24. package/dist/chunk-4CF2L46N.js +29 -0
  25. package/dist/chunk-4HYPLFJD.js +150 -0
  26. package/dist/chunk-4XIVMVHC.js +361 -0
  27. package/dist/chunk-5CINODKT.js +41 -0
  28. package/dist/chunk-5ESGWJ5L.js +45 -0
  29. package/dist/chunk-5FGLQGMF.js +1676 -0
  30. package/dist/chunk-5IQZFITY.js +357 -0
  31. package/dist/{index-wt8rz4gn.js → chunk-5JWFAQDW.js} +41 -23
  32. package/dist/{index-7pjz3tsy.js → chunk-62UHTVU3.js} +50 -16
  33. package/dist/{index-h32txmxe.js → chunk-66UJQT2I.js} +6 -13
  34. package/dist/chunk-6CTA6MCE.js +340 -0
  35. package/dist/{index-4cdr7x2x.js → chunk-6RNNVOAS.js} +178 -109
  36. package/dist/chunk-6X23PZ6H.js +969 -0
  37. package/dist/chunk-7C7LL6MB.js +315 -0
  38. package/dist/chunk-7F4HM3JG.js +394 -0
  39. package/dist/chunk-7KJ7T4D3.js +910 -0
  40. package/dist/chunk-7QQQNUB5.js +92 -0
  41. package/dist/{index-53f3b8p8.js → chunk-7QWJBS72.js} +210 -165
  42. package/dist/chunk-7R36OZK3.js +957 -0
  43. package/dist/chunk-7UPKCOHE.js +946 -0
  44. package/dist/chunk-7WQGTFVJ.js +7434 -0
  45. package/dist/chunk-A3BONW34.js +35 -0
  46. package/dist/chunk-AHMDVHBL.js +141 -0
  47. package/dist/chunk-AW6A4OZY.js +171 -0
  48. package/dist/chunk-B3ZIFA2O.js +2240 -0
  49. package/dist/chunk-BJ5EKCJ5.js +458 -0
  50. package/dist/chunk-BJ7EZ7FP.js +145 -0
  51. package/dist/chunk-BQBUVMRN.js +171 -0
  52. package/dist/chunk-BRGYDO7D.js +223 -0
  53. package/dist/chunk-BXSTJVE3.js +67 -0
  54. package/dist/chunk-C5KPSEDN.js +359 -0
  55. package/dist/chunk-CCTNYTUC.js +940 -0
  56. package/dist/chunk-CYQ2OVD2.js +35 -0
  57. package/dist/chunk-DDAK7YOE.js +299 -0
  58. package/dist/chunk-DRILKBY6.js +965 -0
  59. package/dist/chunk-DXE24HNN.js +45 -0
  60. package/dist/chunk-E7ICUNW7.js +945 -0
  61. package/dist/chunk-EAL2PUOE.js +10022 -0
  62. package/dist/chunk-ELT7MLZB.js +109 -0
  63. package/dist/chunk-EO3J7GRP.js +0 -0
  64. package/dist/chunk-EWEIRF6G.js +171 -0
  65. package/dist/chunk-F5VDGQJC.js +120 -0
  66. package/dist/chunk-FCPL3IEQ.js +98 -0
  67. package/dist/{index-nq520y6k.js → chunk-FDPKYSV7.js} +43 -31
  68. package/dist/chunk-FES3TC24.js +171 -0
  69. package/dist/chunk-FF36CQHZ.js +61 -0
  70. package/dist/chunk-FKQO5A3H.js +35 -0
  71. package/dist/chunk-FOWKR5TW.js +129 -0
  72. package/dist/chunk-FZVCXDYW.js +150 -0
  73. package/dist/chunk-G3XIHPSQ.js +361 -0
  74. package/dist/chunk-GD5QJXSS.js +98 -0
  75. package/dist/chunk-GFZCJ4EH.js +108 -0
  76. package/dist/chunk-GKJLYLVU.js +359 -0
  77. package/dist/chunk-GLM4HGN4.js +55 -0
  78. package/dist/chunk-GNXHXNVQ.js +113 -0
  79. package/dist/chunk-GSR6ILTM.js +277 -0
  80. package/dist/chunk-GWRIMRSX.js +45 -0
  81. package/dist/chunk-H72UW2HJ.js +45 -0
  82. package/dist/chunk-HGI74PXB.js +7417 -0
  83. package/dist/chunk-HGRA37LO.js +145 -0
  84. package/dist/chunk-HO4TURXW.js +1078 -0
  85. package/dist/chunk-HXSRQO3L.js +145 -0
  86. package/dist/chunk-IG2X2BVO.js +373 -0
  87. package/dist/chunk-IIJVDD54.js +373 -0
  88. package/dist/chunk-IUWVEEOX.js +145 -0
  89. package/dist/chunk-IX4BBOIT.js +394 -0
  90. package/dist/{index-yhwjgfvj.js → chunk-IXU4RMQM.js} +67 -60
  91. package/dist/chunk-J3WYZO3Q.js +211 -0
  92. package/dist/{index-vkpkfwhq.js → chunk-J6OUIION.js} +234 -194
  93. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  94. package/dist/chunk-JUEMDWLU.js +233 -0
  95. package/dist/chunk-K46RNFDE.js +171 -0
  96. package/dist/chunk-KAGU2XMY.js +359 -0
  97. package/dist/chunk-KCVYJNVX.js +394 -0
  98. package/dist/chunk-KFQGP6VL.js +33 -0
  99. package/dist/chunk-KKDRMIV6.js +419 -0
  100. package/dist/chunk-KQ4A2D2P.js +910 -0
  101. package/dist/chunk-KSU2GW22.js +958 -0
  102. package/dist/chunk-KYLIQ3YI.js +399 -0
  103. package/dist/chunk-KZYJJIRN.js +946 -0
  104. package/dist/chunk-LFOX744K.js +96 -0
  105. package/dist/{index-rv1p47gp.js → chunk-LHOVJEWR.js} +2756 -2307
  106. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  107. package/dist/chunk-LOPXTPF3.js +120 -0
  108. package/dist/chunk-LZR3VIFU.js +907 -0
  109. package/dist/chunk-MBNBTJCR.js +394 -0
  110. package/dist/chunk-MCKGQKYU.js +15 -0
  111. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  112. package/dist/chunk-MPXUVGT3.js +104 -0
  113. package/dist/chunk-MU6EOS6F.js +0 -0
  114. package/dist/chunk-MWRQ2TXT.js +357 -0
  115. package/dist/{index-nzb3am4f.js → chunk-NO73OK2I.js} +43 -21
  116. package/dist/chunk-NPE2YJHK.js +394 -0
  117. package/dist/{index-xhcp6xrn.js → chunk-NSDXU6QX.js} +654 -500
  118. package/dist/chunk-NXIRDSZ6.js +145 -0
  119. package/dist/chunk-NZWFNHCS.js +407 -0
  120. package/dist/chunk-O2AV5WMN.js +48 -0
  121. package/dist/{index-h7zxhhhh.js → chunk-OB4CMMX6.js} +46 -38
  122. package/dist/chunk-OBKU74FU.js +7411 -0
  123. package/dist/chunk-OQNDWRDE.js +145 -0
  124. package/dist/chunk-OVWAJMB6.js +394 -0
  125. package/dist/chunk-PDHLBTTD.js +45 -0
  126. package/dist/chunk-PEQNRKLG.js +210 -0
  127. package/dist/chunk-QERIS7QY.js +7403 -0
  128. package/dist/chunk-QHA2DM3C.js +373 -0
  129. package/dist/chunk-QLM4HSYC.js +45 -0
  130. package/dist/chunk-RSWUFTO2.js +857 -0
  131. package/dist/chunk-S2OT3TQJ.js +283 -0
  132. package/dist/chunk-S5PHSN5K.js +907 -0
  133. package/dist/chunk-SIAA4J6H.js +21 -0
  134. package/dist/chunk-SPSPV5BC.js +390 -0
  135. package/dist/chunk-SQBNLUIA.js +171 -0
  136. package/dist/chunk-STLN6A6B.js +355 -0
  137. package/dist/chunk-TCKXSOBP.js +123 -0
  138. package/dist/chunk-U7HV7GU2.js +17 -0
  139. package/dist/chunk-UBGUDMUV.js +59 -0
  140. package/dist/chunk-UGZHOGRA.js +39 -0
  141. package/dist/chunk-UICF66FS.js +359 -0
  142. package/dist/chunk-UK3EQREE.js +1078 -0
  143. package/dist/chunk-UPKPURVY.js +394 -0
  144. package/dist/chunk-URC74VCN.js +959 -0
  145. package/dist/chunk-USEINYUL.js +12 -0
  146. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  147. package/dist/chunk-V3G7Q3QQ.js +102 -0
  148. package/dist/chunk-VDAKEOML.js +857 -0
  149. package/dist/chunk-VUJ6SA55.js +303 -0
  150. package/dist/chunk-VUJQLIML.js +141 -0
  151. package/dist/chunk-VWKLKLYB.js +267 -0
  152. package/dist/chunk-VYC3RZMK.js +277 -0
  153. package/dist/chunk-WMERMSWI.js +154 -0
  154. package/dist/chunk-WMR777PO.js +2213 -0
  155. package/dist/{index-n9f2qyh5.js → chunk-X46IECAC.js} +55 -33
  156. package/dist/chunk-X5FLTRUB.js +517 -0
  157. package/dist/chunk-X762XWVC.js +419 -0
  158. package/dist/chunk-XEN3OEYY.js +2234 -0
  159. package/dist/chunk-XMQ7G77X.js +260 -0
  160. package/dist/chunk-XZQ66K7A.js +124 -0
  161. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  162. package/dist/chunk-YY3GF7DH.js +7411 -0
  163. package/dist/chunk-ZE5R3H4C.js +907 -0
  164. package/dist/chunk-ZHVI7BQN.js +1077 -0
  165. package/dist/chunk-ZMN5LUB7.js +7411 -0
  166. package/dist/chunk-ZUV4MD5U.js +94 -0
  167. package/dist/cli/errors.d.ts +6 -0
  168. package/dist/cli/errors.d.ts.map +1 -0
  169. package/dist/cli/examples.d.ts +23 -0
  170. package/dist/cli/examples.d.ts.map +1 -0
  171. package/dist/cli/index.d.ts.map +1 -1
  172. package/dist/cli/index.js +2338 -6190
  173. package/dist/client/index.d.ts +6 -1
  174. package/dist/client/index.d.ts.map +1 -1
  175. package/dist/client/index.js +41 -21
  176. package/dist/client/live.d.ts +67 -0
  177. package/dist/client/live.d.ts.map +1 -0
  178. package/dist/client/reactive.d.ts +31 -0
  179. package/dist/client/reactive.d.ts.map +1 -0
  180. package/dist/client/sdk.d.ts +26 -2
  181. package/dist/client/sdk.d.ts.map +1 -1
  182. package/dist/client/sdk.js +9 -0
  183. package/dist/client/vcs-client.d.ts +129 -0
  184. package/dist/client/vcs-client.d.ts.map +1 -0
  185. package/dist/cms/index.js +171 -163
  186. package/dist/{config-8hczw0rs.js → config-KMY6RRK3.js} +8 -9
  187. package/dist/config-PFTP67TR.js +19 -0
  188. package/dist/config-VDMK2DUJ.js +19 -0
  189. package/dist/core/computation/index.d.ts +5 -0
  190. package/dist/core/computation/index.d.ts.map +1 -0
  191. package/dist/core/computation/rollup.d.ts +18 -0
  192. package/dist/core/computation/rollup.d.ts.map +1 -0
  193. package/dist/core/index.d.ts +5 -0
  194. package/dist/core/index.d.ts.map +1 -1
  195. package/dist/core/index.js +168 -101
  196. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  197. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  198. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  199. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  200. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  201. package/dist/core/ontology/types.d.ts +5 -0
  202. package/dist/core/ontology/types.d.ts.map +1 -1
  203. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  204. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  205. package/dist/core/persist/factory.d.ts +6 -7
  206. package/dist/core/persist/factory.d.ts.map +1 -1
  207. package/dist/core/persist/factory.js +2 -3
  208. package/dist/core/persist/sqljs-backend.js +2 -3
  209. package/dist/db/index.d.ts +4 -1
  210. package/dist/db/index.d.ts.map +1 -1
  211. package/dist/db/index.js +69 -56
  212. package/dist/db/inspector.js +11 -19
  213. package/dist/decisions/index.js +9 -10
  214. package/dist/deploy-66EC752W.js +9 -0
  215. package/dist/deploy-SO7AFK6L.js +9 -0
  216. package/dist/embeddings/auto-embed.d.ts +2 -2
  217. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  218. package/dist/embeddings/index.js +20 -22
  219. package/dist/embeddings/search.d.ts +2 -1
  220. package/dist/embeddings/search.d.ts.map +1 -1
  221. package/dist/embeddings/store.d.ts +25 -4
  222. package/dist/embeddings/store.d.ts.map +1 -1
  223. package/dist/engine-7GXBM4IT.js +7 -0
  224. package/dist/engine-NSR6BIF7.js +7 -0
  225. package/dist/engine.d.ts +32 -12
  226. package/dist/engine.d.ts.map +1 -1
  227. package/dist/factory-2P64OC7M.js +34 -0
  228. package/dist/factory-YP4ZZK5K.js +34 -0
  229. package/dist/import-AJLYHFIA.js +10 -0
  230. package/dist/import-UZEKXU3B.js +10 -0
  231. package/dist/index.js +102 -93
  232. package/dist/launch-explorer-AI6L2AWJ.js +91 -0
  233. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  234. package/dist/links/index.js +24 -26
  235. package/dist/plugins/agent-memory/index.js +316 -0
  236. package/dist/plugins/idea-garden/index.js +165 -0
  237. package/dist/plugins/plan-approval/index.js +579 -0
  238. package/dist/plugins/proactive-watcher/index.js +194 -0
  239. package/dist/{index-2r4jxwnb.js → query-GJL3CVGN.js} +14 -15
  240. package/dist/query-MBJSK3EB.js +31 -0
  241. package/dist/query-TJHEVSKL.js +31 -0
  242. package/dist/query-WUIKOHPE.js +524 -0
  243. package/dist/query-XYLTJYSA.js +31 -0
  244. package/dist/react/index.js +39 -70
  245. package/dist/react/realtime.js +11 -0
  246. package/dist/react/schema-hooks.js +87 -0
  247. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  248. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  249. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  250. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  251. package/dist/realtime/index.d.ts +44 -0
  252. package/dist/realtime/index.d.ts.map +1 -0
  253. package/dist/realtime/index.js +40 -0
  254. package/dist/realtime/memory-hub.d.ts +32 -0
  255. package/dist/realtime/memory-hub.d.ts.map +1 -0
  256. package/dist/realtime/persistent-channel.d.ts +105 -0
  257. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  258. package/dist/realtime/presence.d.ts +73 -0
  259. package/dist/realtime/presence.d.ts.map +1 -0
  260. package/dist/realtime/relay-persistence.d.ts +37 -0
  261. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  262. package/dist/realtime/relay-persistence.js +107 -0
  263. package/dist/realtime/relay-server.d.ts +103 -0
  264. package/dist/realtime/relay-server.d.ts.map +1 -0
  265. package/dist/realtime/room.d.ts +98 -0
  266. package/dist/realtime/room.d.ts.map +1 -0
  267. package/dist/realtime/text.d.ts +73 -0
  268. package/dist/realtime/text.d.ts.map +1 -0
  269. package/dist/realtime/types.d.ts +89 -0
  270. package/dist/realtime/types.d.ts.map +1 -0
  271. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  272. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  273. package/dist/realtime.bundle.js +1100 -0
  274. package/dist/remote-manager-BLJZ6KF6.js +224 -0
  275. package/dist/{remote-manager-xvbg4230.js → remote-manager-BPYE46SI.js} +24 -15
  276. package/dist/remote-manager-FMESEAFA.js +224 -0
  277. package/dist/remote-manager-K2WZ5RHY.js +223 -0
  278. package/dist/remote-manager-SG545WNY.js +224 -0
  279. package/dist/remote-manager-SG5PQKCH.js +224 -0
  280. package/dist/remote-manager-WGP6MIQZ.js +224 -0
  281. package/dist/scaffold/write.d.ts.map +1 -1
  282. package/dist/schema/define.d.ts +137 -0
  283. package/dist/schema/define.d.ts.map +1 -0
  284. package/dist/schema/entity-projection.d.ts +34 -0
  285. package/dist/schema/entity-projection.d.ts.map +1 -0
  286. package/dist/schema/eql.d.ts +46 -0
  287. package/dist/schema/eql.d.ts.map +1 -0
  288. package/dist/schema/index.d.ts +21 -0
  289. package/dist/schema/index.d.ts.map +1 -0
  290. package/dist/schema/index.js +45 -0
  291. package/dist/schema/kernel-resolve.d.ts +21 -0
  292. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  293. package/dist/schema/mutations.d.ts +20 -0
  294. package/dist/schema/mutations.d.ts.map +1 -0
  295. package/dist/schema/resolve.d.ts +21 -0
  296. package/dist/schema/resolve.d.ts.map +1 -0
  297. package/dist/sdk-3KBB3E6V.js +16 -0
  298. package/dist/sdk-4ZQO6UTU.js +16 -0
  299. package/dist/sdk-6JA6GV3G.js +16 -0
  300. package/dist/sdk-6VTP5UTZ.js +16 -0
  301. package/dist/sdk-7VS6TYCD.js +16 -0
  302. package/dist/sdk-HQ3FTLRT.js +16 -0
  303. package/dist/sdk-HZ7NU3XE.js +15 -0
  304. package/dist/sdk-KBQE2OXT.js +16 -0
  305. package/dist/sdk-LZ7W3EEY.js +9 -0
  306. package/dist/sdk-MSCDZ7JU.js +15 -0
  307. package/dist/sdk-WNZOGO3S.js +15 -0
  308. package/dist/sdk-YLV33ZCW.js +9 -0
  309. package/dist/sdk-ZSUD2LLJ.js +16 -0
  310. package/dist/server/index.d.ts +2 -0
  311. package/dist/server/index.d.ts.map +1 -1
  312. package/dist/server/index.js +69 -61
  313. package/dist/server/node-adapter.js +5 -104
  314. package/dist/server/realtime.d.ts +10 -2
  315. package/dist/server/realtime.d.ts.map +1 -1
  316. package/dist/server/server.d.ts +7 -16
  317. package/dist/server/server.d.ts.map +1 -1
  318. package/dist/server/sprites.d.ts.map +1 -1
  319. package/dist/server/tenancy.d.ts.map +1 -1
  320. package/dist/server-AFXFFBWA.js +11 -0
  321. package/dist/server-AGHC4VUL.js +11 -0
  322. package/dist/server-BOH7M4TT.js +13 -0
  323. package/dist/server-DBUY2KY5.js +11 -0
  324. package/dist/server-GWBQJPRG.js +11 -0
  325. package/dist/server-IGBIIJSF.js +13 -0
  326. package/dist/server-JZZFULVU.js +11 -0
  327. package/dist/server-L5XAF4M5.js +11 -0
  328. package/dist/server-NYFUHANA.js +12 -0
  329. package/dist/server-OABUB2LO.js +12 -0
  330. package/dist/server-P2CKZWWV.js +12 -0
  331. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  332. package/dist/sprites-XVSMQLSI.js +15 -0
  333. package/dist/sql-wasm-FORCZFHZ.js +2148 -0
  334. package/dist/sql-wasm-JZH76RLO.js +2148 -0
  335. package/dist/sqljs-backend-CJQOIQYE.js +266 -0
  336. package/dist/sqljs-backend-KWXBUDUO.js +266 -0
  337. package/dist/state-demo.bundle.js +1033 -0
  338. package/dist/svelte/index.d.ts +17 -0
  339. package/dist/svelte/index.d.ts.map +1 -0
  340. package/dist/svelte/index.js +51 -0
  341. package/dist/svelte/schema-hooks.d.ts +45 -0
  342. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  343. package/dist/svelte/schema-hooks.js +71 -0
  344. package/dist/svelte/stores.d.ts +78 -0
  345. package/dist/svelte/stores.d.ts.map +1 -0
  346. package/dist/sync/http-transport.d.ts +3 -3
  347. package/dist/sync/http-transport.d.ts.map +1 -1
  348. package/dist/sync/index.d.ts +15 -1
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +617 -0
  351. package/dist/sync/memory-room.d.ts +37 -0
  352. package/dist/sync/memory-room.d.ts.map +1 -0
  353. package/dist/sync/memory-transport.d.ts +3 -3
  354. package/dist/sync/memory-transport.d.ts.map +1 -1
  355. package/dist/sync/partykit-room.d.ts +40 -0
  356. package/dist/sync/partykit-room.d.ts.map +1 -0
  357. package/dist/sync/partykit-transport.d.ts +84 -0
  358. package/dist/sync/partykit-transport.d.ts.map +1 -0
  359. package/dist/sync/room-core.d.ts +53 -0
  360. package/dist/sync/room-core.d.ts.map +1 -0
  361. package/dist/sync/sync-engine.d.ts +40 -2
  362. package/dist/sync/sync-engine.d.ts.map +1 -1
  363. package/dist/sync/sync-room-server.d.ts +39 -0
  364. package/dist/sync/sync-room-server.d.ts.map +1 -0
  365. package/dist/sync/types.d.ts +70 -3
  366. package/dist/sync/types.d.ts.map +1 -1
  367. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  368. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  369. package/dist/sync/ws-transport.d.ts +2 -2
  370. package/dist/sync/ws-transport.d.ts.map +1 -1
  371. package/dist/tenancy-CBWYEVUB.js +11 -0
  372. package/dist/tenancy-FO6WVYFN.js +13 -0
  373. package/dist/tenancy-FWDBESMX.js +14 -0
  374. package/dist/tenancy-HGPIS5QA.js +13 -0
  375. package/dist/tenancy-HXFALA37.js +14 -0
  376. package/dist/tenancy-OP34NFFS.js +14 -0
  377. package/dist/tenancy-S676GLID.js +14 -0
  378. package/dist/tenancy-V7ARWNNV.js +14 -0
  379. package/dist/tenancy-ZDN4GXK5.js +13 -0
  380. package/dist/tenancy-ZT5VMY7B.js +14 -0
  381. package/dist/ui/client.html +355 -67
  382. package/dist/ui/launch-explorer.d.ts +22 -0
  383. package/dist/ui/launch-explorer.d.ts.map +1 -0
  384. package/dist/ui/server.d.ts +1 -1
  385. package/dist/ui/server.d.ts.map +1 -1
  386. package/dist/vcs/blob-store.d.ts.map +1 -1
  387. package/dist/vcs/idb-op-log.d.ts +67 -0
  388. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  389. package/dist/vcs/index.d.ts +1 -0
  390. package/dist/vcs/index.d.ts.map +1 -1
  391. package/dist/vcs/index.js +81 -72
  392. package/dist/vcs/issue.d.ts +22 -5
  393. package/dist/vcs/issue.d.ts.map +1 -1
  394. package/dist/vcs/lane-materialize.d.ts +5 -0
  395. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  396. package/dist/vcs/op-log.d.ts +28 -2
  397. package/dist/vcs/op-log.d.ts.map +1 -1
  398. package/dist/vcs/ops.d.ts +10 -0
  399. package/dist/vcs/ops.d.ts.map +1 -1
  400. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  401. package/dist/vm-config-YZRJ3KUB.js +21 -0
  402. package/dist/vue/hooks.d.ts +64 -0
  403. package/dist/vue/hooks.d.ts.map +1 -0
  404. package/dist/vue/index.d.ts +19 -0
  405. package/dist/vue/index.d.ts.map +1 -0
  406. package/dist/vue/index.js +59 -0
  407. package/dist/vue/schema-hooks.d.ts +41 -0
  408. package/dist/vue/schema-hooks.d.ts.map +1 -0
  409. package/dist/vue/schema-hooks.js +64 -0
  410. package/package.json +118 -16
  411. package/dist/deploy-999q207z.js +0 -10
  412. package/dist/engine-y0724kjq.js +0 -8
  413. package/dist/import-s2b8e0ft.js +0 -11
  414. package/dist/index-a76rekgs.js +0 -67
  415. package/dist/index-c9h37r6h.js +0 -1
  416. package/dist/index-hr9qvv77.js +0 -860
  417. package/dist/index-k5b0xskw.js +0 -1
  418. package/dist/index-y6a4kj0p.js +0 -43
  419. package/dist/sdk-bepky0xs.js +0 -16
  420. package/dist/server-szdjx0nt.js +0 -13
  421. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  422. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -0,0 +1,91 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/ui/launch-explorer.ts
4
+ import { existsSync } from "node:fs";
5
+ import { spawn } from "node:child_process";
6
+ import path from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+ var MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
9
+ function resolveExplorerAppDir() {
10
+ const candidates = [
11
+ path.resolve(MODULE_DIR, "../../demo/realtime-app"),
12
+ path.resolve(process.cwd(), "demo/realtime-app")
13
+ ];
14
+ for (const dir of candidates) {
15
+ if (existsSync(path.join(dir, "package.json"))) return dir;
16
+ }
17
+ throw new Error(
18
+ "Realtime explorer app not found at demo/realtime-app.\nRun: node scripts/sync-realtime-app.mjs"
19
+ );
20
+ }
21
+ function which(cmd) {
22
+ return process.platform === "win32" ? `${cmd}.cmd` : cmd;
23
+ }
24
+ async function launchRealtimeExplorer(opts) {
25
+ const appDir = resolveExplorerAppDir();
26
+ const appPort = opts.appPort ?? 4e3;
27
+ const trellisPort = opts.trellisPort ?? 3920;
28
+ if (!existsSync(path.join(appDir, "node_modules"))) {
29
+ console.log("Installing explorer dependencies (pnpm)\u2026");
30
+ await runCmd(which("pnpm"), ["install"], { cwd: appDir });
31
+ }
32
+ const env = {
33
+ ...process.env,
34
+ TRELLIS_PORT: String(trellisPort),
35
+ TRELLIS_REPO_ROOT: opts.rootPath
36
+ };
37
+ const child = spawn(which("pnpm"), ["run", "dev:all"], {
38
+ cwd: appDir,
39
+ env,
40
+ stdio: "inherit",
41
+ shell: process.platform === "win32"
42
+ });
43
+ const stop = () => {
44
+ if (!child.killed) child.kill("SIGTERM");
45
+ };
46
+ return new Promise((resolve, reject) => {
47
+ let settled = false;
48
+ child.on("error", (err) => {
49
+ if (!settled) {
50
+ settled = true;
51
+ reject(err);
52
+ }
53
+ });
54
+ child.on("exit", (code) => {
55
+ if (settled) return;
56
+ if (code != null && code !== 0) {
57
+ settled = true;
58
+ reject(new Error(`Explorer exited with code ${code}`));
59
+ }
60
+ });
61
+ setTimeout(() => {
62
+ if (settled) return;
63
+ settled = true;
64
+ resolve({
65
+ appPort,
66
+ trellisPort,
67
+ appUrl: `http://localhost:${appPort}`,
68
+ trellisUrl: `http://localhost:${trellisPort}`,
69
+ stop
70
+ });
71
+ }, 2e3);
72
+ });
73
+ }
74
+ function runCmd(cmd, args, opts) {
75
+ return new Promise((resolve, reject) => {
76
+ const child = spawn(cmd, args, {
77
+ cwd: opts.cwd,
78
+ stdio: "inherit",
79
+ shell: process.platform === "win32"
80
+ });
81
+ child.on("error", reject);
82
+ child.on("exit", (code) => {
83
+ if (code === 0) resolve();
84
+ else reject(new Error(`${cmd} exited with ${code}`));
85
+ });
86
+ });
87
+ }
88
+ export {
89
+ launchRealtimeExplorer,
90
+ resolveExplorerAppDir
91
+ };
@@ -0,0 +1,95 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/ui/launch-explorer.ts
4
+ import { existsSync } from "node:fs";
5
+ import { spawn } from "node:child_process";
6
+ import path from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+ var MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
9
+ function resolveExplorerAppDir() {
10
+ const candidates = [
11
+ path.resolve(MODULE_DIR, "../../demo/realtime-app"),
12
+ path.resolve(process.cwd(), "demo/realtime-app")
13
+ ];
14
+ for (const dir of candidates) {
15
+ if (existsSync(path.join(dir, "package.json"))) return dir;
16
+ }
17
+ throw new Error(
18
+ "Realtime explorer app not found at demo/realtime-app.\nRun: node scripts/sync-realtime-app.mjs"
19
+ );
20
+ }
21
+ function which(cmd) {
22
+ return process.platform === "win32" ? `${cmd}.cmd` : cmd;
23
+ }
24
+ async function launchRealtimeExplorer(opts) {
25
+ const appDir = resolveExplorerAppDir();
26
+ const appPort = opts.appPort ?? 4e3;
27
+ const trellisPort = opts.trellisPort ?? 3920;
28
+ if (!existsSync(path.join(appDir, "node_modules"))) {
29
+ console.log("Installing explorer dependencies (pnpm)\u2026");
30
+ await runCmd(which("pnpm"), ["install"], { cwd: appDir });
31
+ } else {
32
+ await runCmd(which("node"), ["scripts/ensure-trellis-build.mjs"], {
33
+ cwd: appDir
34
+ });
35
+ }
36
+ const env = {
37
+ ...process.env,
38
+ TRELLIS_PORT: String(trellisPort),
39
+ TRELLIS_REPO_ROOT: opts.rootPath
40
+ };
41
+ const child = spawn(which("pnpm"), ["run", "dev:all"], {
42
+ cwd: appDir,
43
+ env,
44
+ stdio: "inherit",
45
+ shell: process.platform === "win32"
46
+ });
47
+ const stop = () => {
48
+ if (!child.killed) child.kill("SIGTERM");
49
+ };
50
+ return new Promise((resolve, reject) => {
51
+ let settled = false;
52
+ child.on("error", (err) => {
53
+ if (!settled) {
54
+ settled = true;
55
+ reject(err);
56
+ }
57
+ });
58
+ child.on("exit", (code) => {
59
+ if (settled) return;
60
+ if (code != null && code !== 0) {
61
+ settled = true;
62
+ reject(new Error(`Explorer exited with code ${code}`));
63
+ }
64
+ });
65
+ setTimeout(() => {
66
+ if (settled) return;
67
+ settled = true;
68
+ resolve({
69
+ appPort,
70
+ trellisPort,
71
+ appUrl: `http://localhost:${appPort}`,
72
+ trellisUrl: `http://localhost:${trellisPort}`,
73
+ stop
74
+ });
75
+ }, 2e3);
76
+ });
77
+ }
78
+ function runCmd(cmd, args, opts) {
79
+ return new Promise((resolve, reject) => {
80
+ const child = spawn(cmd, args, {
81
+ cwd: opts.cwd,
82
+ stdio: "inherit",
83
+ shell: process.platform === "win32"
84
+ });
85
+ child.on("error", reject);
86
+ child.on("exit", (code) => {
87
+ if (code === 0) resolve();
88
+ else reject(new Error(`${cmd} exited with ${code}`));
89
+ });
90
+ });
91
+ }
92
+ export {
93
+ launchRealtimeExplorer,
94
+ resolveExplorerAppDir
95
+ };
@@ -1,4 +1,3 @@
1
- // @bun
2
1
  import {
3
2
  StaleRefRegistry,
4
3
  applyRenameProposal,
@@ -24,32 +23,31 @@ import {
24
23
  resolveRef,
25
24
  resolveRefs,
26
25
  updateFileInIndex
27
- } from "../index-vkpkfwhq.js";
28
- import"../index-a76rekgs.js";
26
+ } from "../chunk-VDAKEOML.js";
27
+ import "../chunk-KFQGP6VL.js";
29
28
  init_links();
30
-
31
29
  export {
32
- updateFileInIndex,
33
- resolveRefs,
34
- resolveRef,
35
- removeFileFromIndex,
36
- processSemanticPatches,
37
- parseRefContent,
38
- parseMarkdownRefs,
39
- parseFileRefs,
40
- parseDocCommentRefs,
41
- inferNamespace,
42
- handleSymbolDeletion,
43
- handleFileDeletion,
44
- getReferencedEntities,
45
- getOutgoingRefs,
46
- getIndexStats,
47
- getFilesWithRefs,
48
- getDiagnostics,
49
- getBacklinks,
50
- createResolverContext,
51
- buildRenameProposal,
52
- buildRefIndex,
30
+ StaleRefRegistry,
53
31
  applyRenameProposal,
54
- StaleRefRegistry
32
+ buildRefIndex,
33
+ buildRenameProposal,
34
+ createResolverContext,
35
+ getBacklinks,
36
+ getDiagnostics,
37
+ getFilesWithRefs,
38
+ getIndexStats,
39
+ getOutgoingRefs,
40
+ getReferencedEntities,
41
+ handleFileDeletion,
42
+ handleSymbolDeletion,
43
+ inferNamespace,
44
+ parseDocCommentRefs,
45
+ parseFileRefs,
46
+ parseMarkdownRefs,
47
+ parseRefContent,
48
+ processSemanticPatches,
49
+ removeFileFromIndex,
50
+ resolveRef,
51
+ resolveRefs,
52
+ updateFileInIndex
55
53
  };
@@ -0,0 +1,316 @@
1
+ import "../../chunk-KFQGP6VL.js";
2
+
3
+ // src/plugins/agent-memory/ontology.ts
4
+ var agentMemoryOntology = {
5
+ id: "trellis:agent-memory",
6
+ name: "Agent Memory",
7
+ version: "1.0.0",
8
+ description: "Graph-persisted agent conversations and message history",
9
+ entities: [
10
+ {
11
+ name: "Conversation",
12
+ description: "A thread of messages between user and agent",
13
+ attributes: [
14
+ { name: "title", type: "string", required: true },
15
+ { name: "model", type: "string", description: "LLM model used for this conversation" },
16
+ {
17
+ name: "status",
18
+ type: "string",
19
+ enum: ["active", "archived"],
20
+ default: "active"
21
+ },
22
+ { name: "createdAt", type: "string", required: true, description: "ISO 8601 timestamp" },
23
+ { name: "createdBy", type: "string", description: "Agent or user ID that initiated" },
24
+ { name: "agentId", type: "ref", description: "Agent entity this conversation belongs to", refTypes: ["Agent"] },
25
+ { name: "runId", type: "ref", description: "AgentRun this conversation is associated with", refTypes: ["AgentRun"] }
26
+ ]
27
+ },
28
+ {
29
+ name: "Message",
30
+ description: "A single message within a conversation",
31
+ attributes: [
32
+ {
33
+ name: "role",
34
+ type: "string",
35
+ required: true,
36
+ enum: ["system", "user", "assistant", "tool"]
37
+ },
38
+ { name: "content", type: "string", description: "Message content (may be null for tool-call-only messages)" },
39
+ { name: "timestamp", type: "string", required: true, description: "ISO 8601 timestamp" },
40
+ { name: "tokenCount", type: "number", description: "Estimated token count" },
41
+ { name: "name", type: "string", description: "Tool name for tool messages" },
42
+ { name: "toolCallId", type: "string", description: "Tool call ID for tool response messages" },
43
+ {
44
+ name: "status",
45
+ type: "string",
46
+ enum: ["active", "archived"],
47
+ default: "active",
48
+ description: "Archived messages are preserved for Idea Garden but excluded from active context"
49
+ }
50
+ ]
51
+ }
52
+ ],
53
+ relations: [
54
+ {
55
+ name: "hasMessage",
56
+ sourceTypes: ["Conversation"],
57
+ targetTypes: ["Message"],
58
+ cardinality: "many"
59
+ }
60
+ ]
61
+ };
62
+
63
+ // src/plugins/agent-memory/plugin.ts
64
+ function createAgentMemoryPlugin() {
65
+ const isMemoryEntity = (data) => {
66
+ if (!data || typeof data !== "object") return false;
67
+ const d = data;
68
+ return d.type === "Conversation" || d.type === "Message";
69
+ };
70
+ return {
71
+ id: "trellis:agent-memory",
72
+ name: "Agent Memory",
73
+ version: "1.0.0",
74
+ description: "Graph-persisted agent conversations and message history",
75
+ ontologies: [agentMemoryOntology],
76
+ eventHandlers: [
77
+ {
78
+ event: "entity:created",
79
+ handler: (data) => {
80
+ if (!isMemoryEntity(data)) return;
81
+ }
82
+ },
83
+ {
84
+ event: "entity:updated",
85
+ handler: (data) => {
86
+ if (!isMemoryEntity(data)) return;
87
+ }
88
+ },
89
+ {
90
+ event: "entity:deleted",
91
+ handler: (data) => {
92
+ if (!isMemoryEntity(data)) return;
93
+ }
94
+ }
95
+ ],
96
+ onLoad: async (ctx) => {
97
+ ctx.log("Agent memory system loaded");
98
+ },
99
+ onUnload: async (ctx) => {
100
+ ctx.log("Agent memory system unloaded");
101
+ }
102
+ };
103
+ }
104
+
105
+ // src/plugins/agent-memory/graph-context-manager.ts
106
+ var globalIdCounter = 0;
107
+ var GraphContextManager = class {
108
+ kernel;
109
+ conversationId = null;
110
+ messageCounter = 0;
111
+ /**
112
+ * In-memory cache of active messages for fast getHistory() reads.
113
+ * Always kept in sync with the graph via addMessage/prune/resume.
114
+ */
115
+ cache = [];
116
+ /** In-flight graph writes from fire-and-forget addMessage/prune calls. */
117
+ pendingWrites = /* @__PURE__ */ new Set();
118
+ constructor(kernel) {
119
+ this.kernel = kernel;
120
+ }
121
+ // -------------------------------------------------------------------------
122
+ // Conversation lifecycle
123
+ // -------------------------------------------------------------------------
124
+ /**
125
+ * Create a new conversation entity and set it as the active context.
126
+ * Returns the conversation entity ID.
127
+ */
128
+ async createConversation(opts) {
129
+ const id = `conversation:${Date.now()}:${++globalIdCounter}`;
130
+ const attrs = {
131
+ title: opts.title,
132
+ status: "active"
133
+ };
134
+ if (opts.agentId) attrs.agentId = opts.agentId;
135
+ if (opts.model) attrs.model = opts.model;
136
+ if (opts.createdBy) attrs.createdBy = opts.createdBy;
137
+ await this.kernel.createEntity(id, "Conversation", attrs);
138
+ this.conversationId = id;
139
+ this.cache = [];
140
+ this.messageCounter = 0;
141
+ return id;
142
+ }
143
+ /**
144
+ * Resume an existing conversation by loading its messages from the graph.
145
+ */
146
+ async resumeConversation(conversationId) {
147
+ const entity = this.kernel.getEntity(conversationId);
148
+ if (!entity || entity.type !== "Conversation") {
149
+ throw new Error(`Conversation "${conversationId}" not found.`);
150
+ }
151
+ this.conversationId = conversationId;
152
+ this.cache = this._loadMessagesFromGraph(conversationId);
153
+ this.messageCounter = this.cache.length;
154
+ }
155
+ /**
156
+ * Get the active conversation ID, or null if none is set.
157
+ */
158
+ getConversationId() {
159
+ return this.conversationId;
160
+ }
161
+ /**
162
+ * Archive the active conversation and clear local state.
163
+ */
164
+ async archiveConversation() {
165
+ if (!this.conversationId) return;
166
+ await this.kernel.updateEntity(this.conversationId, { status: "archived" });
167
+ this.conversationId = null;
168
+ this.cache = [];
169
+ }
170
+ // -------------------------------------------------------------------------
171
+ // ContextManager implementation
172
+ // -------------------------------------------------------------------------
173
+ addMessage(message) {
174
+ if (!this.conversationId) {
175
+ throw new Error("GraphContextManager: No active conversation. Call createConversation() first.");
176
+ }
177
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
178
+ const entityId = `message:${this.conversationId.replace("conversation:", "")}:${++globalIdCounter}`;
179
+ const attrs = {
180
+ role: message.role,
181
+ timestamp,
182
+ status: "active"
183
+ };
184
+ if (message.content != null) attrs.content = message.content;
185
+ if (message.name) attrs.name = message.name;
186
+ if (message.tool_call_id) attrs.toolCallId = message.tool_call_id;
187
+ const tokenCount = this.calculateTokenCount(message);
188
+ attrs.tokenCount = tokenCount;
189
+ const write = this.kernel.createEntity(entityId, "Message", attrs, [
190
+ { attribute: "hasMessage", targetEntityId: entityId }
191
+ ]).then(() => {
192
+ return this.kernel.addLink(this.conversationId, "hasMessage", entityId);
193
+ }).catch((err) => {
194
+ console.error(`GraphContextManager: Failed to persist message ${entityId}:`, err);
195
+ }).then(() => void 0);
196
+ this.trackWrite(write);
197
+ this.cache.push({
198
+ entityId,
199
+ message,
200
+ timestamp,
201
+ status: "active"
202
+ });
203
+ }
204
+ getHistory() {
205
+ return this.cache.filter((r) => r.status === "active").map((r) => r.message);
206
+ }
207
+ async prune(targetTokenCount) {
208
+ let totalTokens = 0;
209
+ const active = this.cache.filter((r) => r.status === "active");
210
+ for (const record of active) {
211
+ totalTokens += this.calculateTokenCount(record.message);
212
+ }
213
+ if (totalTokens <= targetTokenCount) return;
214
+ for (const record of active) {
215
+ if (totalTokens <= targetTokenCount) break;
216
+ if (record.message.role === "system") continue;
217
+ record.status = "archived";
218
+ totalTokens -= this.calculateTokenCount(record.message);
219
+ const write = this.kernel.updateEntity(record.entityId, { status: "archived" }).catch((err) => {
220
+ console.error(`GraphContextManager: Failed to archive message ${record.entityId}:`, err);
221
+ }).then(() => void 0);
222
+ this.trackWrite(write);
223
+ }
224
+ }
225
+ async summarize() {
226
+ const archived = this.cache.filter((r) => r.status === "archived");
227
+ if (archived.length === 0) return "";
228
+ return `[${archived.length} earlier messages archived]`;
229
+ }
230
+ async injectRagContext(query, limit) {
231
+ }
232
+ calculateTokenCount(message) {
233
+ return (message.content?.length ?? 0) / 4;
234
+ }
235
+ // -------------------------------------------------------------------------
236
+ // Graph queries
237
+ // -------------------------------------------------------------------------
238
+ /**
239
+ * List all conversations, optionally filtered by status.
240
+ */
241
+ listConversations(status) {
242
+ const entities = this.kernel.listEntities("Conversation", status ? { status } : void 0);
243
+ return entities.map((e) => {
244
+ const get = (a) => e.facts.find((f) => f.a === a)?.v;
245
+ const messageLinks = this.kernel.getStore().getLinksByEntityAndAttribute(e.id, "hasMessage");
246
+ return {
247
+ id: e.id,
248
+ title: String(get("title") ?? "Untitled"),
249
+ status: String(get("status") ?? "active"),
250
+ createdAt: String(get("createdAt") ?? ""),
251
+ messageCount: messageLinks.length
252
+ };
253
+ });
254
+ }
255
+ /**
256
+ * Get the total message count for the active conversation.
257
+ */
258
+ getMessageCount() {
259
+ return this.cache.filter((r) => r.status === "active").length;
260
+ }
261
+ /**
262
+ * Get the total estimated token count for the active conversation.
263
+ */
264
+ getTotalTokenCount() {
265
+ return this.cache.filter((r) => r.status === "active").reduce((sum, r) => sum + this.calculateTokenCount(r.message), 0);
266
+ }
267
+ /** Wait for in-flight graph writes (tests and graceful shutdown). */
268
+ async awaitPersistence() {
269
+ while (this.pendingWrites.size > 0) {
270
+ await Promise.all([...this.pendingWrites]);
271
+ }
272
+ }
273
+ // -------------------------------------------------------------------------
274
+ // Internal
275
+ // -------------------------------------------------------------------------
276
+ trackWrite(write) {
277
+ this.pendingWrites.add(write);
278
+ write.finally(() => {
279
+ this.pendingWrites.delete(write);
280
+ });
281
+ }
282
+ /**
283
+ * Load messages from the graph for a given conversation, sorted by timestamp.
284
+ */
285
+ _loadMessagesFromGraph(conversationId) {
286
+ const store = this.kernel.getStore();
287
+ const messageLinks = store.getLinksByEntityAndAttribute(conversationId, "hasMessage");
288
+ const records = [];
289
+ for (const link of messageLinks) {
290
+ const entity = this.kernel.getEntity(link.e2);
291
+ if (!entity || entity.type !== "Message") continue;
292
+ const get = (a) => entity.facts.find((f) => f.a === a)?.v;
293
+ const message = {
294
+ role: get("role"),
295
+ content: get("content") ?? null
296
+ };
297
+ const name = get("name");
298
+ if (name) message.name = name;
299
+ const toolCallId = get("toolCallId");
300
+ if (toolCallId) message.tool_call_id = toolCallId;
301
+ records.push({
302
+ entityId: entity.id,
303
+ message,
304
+ timestamp: String(get("timestamp") ?? ""),
305
+ status: get("status") ?? "active"
306
+ });
307
+ }
308
+ records.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
309
+ return records;
310
+ }
311
+ };
312
+ export {
313
+ GraphContextManager,
314
+ agentMemoryOntology,
315
+ createAgentMemoryPlugin
316
+ };