trellis 3.1.34 → 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,224 @@
1
+ import {
2
+ TrellisVcsEngine,
3
+ init_engine
4
+ } from "./chunk-OBKU74FU.js";
5
+ import "./chunk-4XIVMVHC.js";
6
+ import "./chunk-XEN3OEYY.js";
7
+ import "./chunk-36VSSTL7.js";
8
+ import "./chunk-BXSTJVE3.js";
9
+ import "./chunk-GLM4HGN4.js";
10
+ import "./chunk-KFQGP6VL.js";
11
+
12
+ // src/federation/remote-manager.ts
13
+ init_engine();
14
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
15
+ import { join, resolve } from "path";
16
+ var RemoteManager = class {
17
+ trellisPath;
18
+ remotesPath;
19
+ constructor(trellisPath) {
20
+ this.trellisPath = trellisPath;
21
+ this.remotesPath = join(trellisPath, "remotes.json");
22
+ }
23
+ /** Load remotes configuration */
24
+ loadRemotes() {
25
+ if (!existsSync(this.remotesPath)) {
26
+ return { remotes: {} };
27
+ }
28
+ try {
29
+ const content = readFileSync(this.remotesPath, "utf8");
30
+ return JSON.parse(content);
31
+ } catch (error) {
32
+ throw new Error(`Failed to load remotes config: ${error}`);
33
+ }
34
+ }
35
+ /** Save remotes configuration */
36
+ saveRemotes(config) {
37
+ try {
38
+ if (!existsSync(this.trellisPath)) {
39
+ mkdirSync(this.trellisPath, { recursive: true });
40
+ }
41
+ writeFileSync(this.remotesPath, JSON.stringify(config, null, 2), "utf8");
42
+ } catch (error) {
43
+ throw new Error(`Failed to save remotes config: ${error}`);
44
+ }
45
+ }
46
+ /** Add a new remote */
47
+ addRemote(name, path) {
48
+ const config = this.loadRemotes();
49
+ if (config.remotes[name]) {
50
+ throw new Error(`Remote '${name}' already exists`);
51
+ }
52
+ const resolvedPath = resolve(path);
53
+ if (!TrellisVcsEngine.isRepo(resolvedPath)) {
54
+ throw new Error(`Not a TrellisVCS repository: ${resolvedPath}`);
55
+ }
56
+ config.remotes[name] = {
57
+ name,
58
+ path: resolvedPath
59
+ };
60
+ this.saveRemotes(config);
61
+ }
62
+ /** Remove a remote */
63
+ removeRemote(name) {
64
+ const config = this.loadRemotes();
65
+ if (!config.remotes[name]) {
66
+ throw new Error(`Remote '${name}' not found`);
67
+ }
68
+ delete config.remotes[name];
69
+ this.saveRemotes(config);
70
+ }
71
+ /** List all remotes */
72
+ listRemotes() {
73
+ const config = this.loadRemotes();
74
+ return Object.values(config.remotes);
75
+ }
76
+ /** Pull new ops from a specific remote */
77
+ async pullRemote(remoteName, localEngine) {
78
+ const startTime = Date.now();
79
+ const config = this.loadRemotes();
80
+ const remote = config.remotes[remoteName];
81
+ if (!remote) {
82
+ throw new Error(`Remote '${remoteName}' not found`);
83
+ }
84
+ const errors = [];
85
+ let newOps = 0;
86
+ let latestOpId = remote.lastOpId || "";
87
+ try {
88
+ const remoteEngine = new TrellisVcsEngine({ rootPath: remote.path });
89
+ remoteEngine.open();
90
+ const remoteOps = remoteEngine.getOps();
91
+ if (remoteOps.length === 0) {
92
+ return {
93
+ remote: remoteName,
94
+ newOps: 0,
95
+ latestOpId: "",
96
+ durationMs: Date.now() - startTime,
97
+ errors: []
98
+ };
99
+ }
100
+ const lastOpHash = remote.lastOpId;
101
+ let startIndex = 0;
102
+ if (lastOpHash) {
103
+ startIndex = remoteOps.findIndex((op) => op.hash === lastOpHash);
104
+ if (startIndex === -1) {
105
+ startIndex = 0;
106
+ errors.push(
107
+ `Last op hash ${lastOpHash} not found in remote, pulling all ops`
108
+ );
109
+ } else {
110
+ startIndex++;
111
+ }
112
+ }
113
+ const opsToPull = remoteOps.slice(startIndex);
114
+ if (opsToPull.length > 0) {
115
+ const prefixedOps = opsToPull.map(
116
+ (op) => this.prefixOpEntities(op, remoteName)
117
+ );
118
+ for (const op of prefixedOps) {
119
+ localEngine.opLog.append(op);
120
+ newOps++;
121
+ }
122
+ latestOpId = remoteOps[remoteOps.length - 1].hash;
123
+ }
124
+ remote.lastOpId = latestOpId;
125
+ remote.pulledAt = (/* @__PURE__ */ new Date()).toISOString();
126
+ this.saveRemotes(config);
127
+ } catch (error) {
128
+ errors.push(`Failed to pull from remote: ${error}`);
129
+ }
130
+ return {
131
+ remote: remoteName,
132
+ newOps,
133
+ latestOpId,
134
+ durationMs: Date.now() - startTime,
135
+ errors
136
+ };
137
+ }
138
+ /** Pull from all configured remotes */
139
+ async pullAll(localEngine) {
140
+ const config = this.loadRemotes();
141
+ const remoteNames = Object.keys(config.remotes);
142
+ if (remoteNames.length === 0) {
143
+ return {
144
+ results: [],
145
+ totalNewOps: 0,
146
+ totalDurationMs: 0
147
+ };
148
+ }
149
+ const startTime = Date.now();
150
+ const results = [];
151
+ let totalNewOps = 0;
152
+ for (const remoteName of remoteNames) {
153
+ try {
154
+ const result = await this.pullRemote(remoteName, localEngine);
155
+ results.push(result);
156
+ totalNewOps += result.newOps;
157
+ } catch (error) {
158
+ results.push({
159
+ remote: remoteName,
160
+ newOps: 0,
161
+ latestOpId: "",
162
+ durationMs: 0,
163
+ errors: [`Failed to pull: ${error}`]
164
+ });
165
+ }
166
+ }
167
+ return {
168
+ results,
169
+ totalNewOps,
170
+ totalDurationMs: Date.now() - startTime
171
+ };
172
+ }
173
+ /** Prefix entity IDs in operations with remote name */
174
+ prefixOpEntities(op, remoteName) {
175
+ const prefixed = { ...op };
176
+ if (op.vcs) {
177
+ const vcs = { ...op.vcs };
178
+ if (vcs.issueId && !vcs.issueId.includes(":")) {
179
+ vcs.issueId = `${remoteName}:${vcs.issueId}`;
180
+ }
181
+ if (vcs.parentIssueId && !vcs.parentIssueId.includes(":")) {
182
+ vcs.parentIssueId = `${remoteName}:${vcs.parentIssueId}`;
183
+ }
184
+ if (vcs.blockedByIssueId && !vcs.blockedByIssueId.includes(":")) {
185
+ vcs.blockedByIssueId = `${remoteName}:${vcs.blockedByIssueId}`;
186
+ }
187
+ if (vcs.decisionId && !vcs.decisionId.includes(":")) {
188
+ vcs.decisionId = `${remoteName}:${vcs.decisionId}`;
189
+ }
190
+ prefixed.vcs = vcs;
191
+ }
192
+ if (op.facts) {
193
+ prefixed.facts = op.facts.map((fact) => {
194
+ if (fact.e === "entity" && fact.a === "id" && typeof fact.v === "string" && !fact.v.includes(":")) {
195
+ return { ...fact, v: `${remoteName}:${fact.v}` };
196
+ }
197
+ if (fact.e === "entity" && fact.a === "from" && typeof fact.v === "string" && !fact.v.includes(":")) {
198
+ return { ...fact, v: `${remoteName}:${fact.v}` };
199
+ }
200
+ if (fact.e === "entity" && fact.a === "to" && typeof fact.v === "string" && !fact.v.includes(":")) {
201
+ return { ...fact, v: `${remoteName}:${fact.v}` };
202
+ }
203
+ return fact;
204
+ });
205
+ }
206
+ if (op.links) {
207
+ prefixed.links = op.links.map((link) => ({
208
+ ...link,
209
+ e1: link.e1.includes(":") ? link.e1 : `${remoteName}:${link.e1}`,
210
+ e2: link.e2.includes(":") ? link.e2 : `${remoteName}:${link.e2}`
211
+ }));
212
+ }
213
+ if (!prefixed.facts) prefixed.facts = [];
214
+ prefixed.facts.push({
215
+ e: "op",
216
+ a: "remote",
217
+ v: remoteName
218
+ });
219
+ return prefixed;
220
+ }
221
+ };
222
+ export {
223
+ RemoteManager
224
+ };
@@ -1,26 +1,25 @@
1
- // @bun
2
1
  import {
3
2
  TrellisVcsEngine,
4
3
  init_engine
5
- } from "./index-rv1p47gp.js";
6
- import"./index-xhcp6xrn.js";
7
- import"./index-4cdr7x2x.js";
8
- import"./index-nzb3am4f.js";
9
- import"./index-yhwjgfvj.js";
10
- import"./index-a76rekgs.js";
4
+ } from "./chunk-QERIS7QY.js";
5
+ import "./chunk-WMR777PO.js";
6
+ import "./chunk-STLN6A6B.js";
7
+ import "./chunk-NO73OK2I.js";
8
+ import "./chunk-4XIVMVHC.js";
9
+ import "./chunk-KFQGP6VL.js";
11
10
 
12
11
  // src/federation/remote-manager.ts
13
12
  init_engine();
14
13
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
15
14
  import { join, resolve } from "path";
16
-
17
- class RemoteManager {
15
+ var RemoteManager = class {
18
16
  trellisPath;
19
17
  remotesPath;
20
18
  constructor(trellisPath) {
21
19
  this.trellisPath = trellisPath;
22
20
  this.remotesPath = join(trellisPath, "remotes.json");
23
21
  }
22
+ /** Load remotes configuration */
24
23
  loadRemotes() {
25
24
  if (!existsSync(this.remotesPath)) {
26
25
  return { remotes: {} };
@@ -32,6 +31,7 @@ class RemoteManager {
32
31
  throw new Error(`Failed to load remotes config: ${error}`);
33
32
  }
34
33
  }
34
+ /** Save remotes configuration */
35
35
  saveRemotes(config) {
36
36
  try {
37
37
  if (!existsSync(this.trellisPath)) {
@@ -42,6 +42,7 @@ class RemoteManager {
42
42
  throw new Error(`Failed to save remotes config: ${error}`);
43
43
  }
44
44
  }
45
+ /** Add a new remote */
45
46
  addRemote(name, path) {
46
47
  const config = this.loadRemotes();
47
48
  if (config.remotes[name]) {
@@ -57,6 +58,7 @@ class RemoteManager {
57
58
  };
58
59
  this.saveRemotes(config);
59
60
  }
61
+ /** Remove a remote */
60
62
  removeRemote(name) {
61
63
  const config = this.loadRemotes();
62
64
  if (!config.remotes[name]) {
@@ -65,10 +67,12 @@ class RemoteManager {
65
67
  delete config.remotes[name];
66
68
  this.saveRemotes(config);
67
69
  }
70
+ /** List all remotes */
68
71
  listRemotes() {
69
72
  const config = this.loadRemotes();
70
73
  return Object.values(config.remotes);
71
74
  }
75
+ /** Pull new ops from a specific remote */
72
76
  async pullRemote(remoteName, localEngine) {
73
77
  const startTime = Date.now();
74
78
  const config = this.loadRemotes();
@@ -98,14 +102,18 @@ class RemoteManager {
98
102
  startIndex = remoteOps.findIndex((op) => op.hash === lastOpHash);
99
103
  if (startIndex === -1) {
100
104
  startIndex = 0;
101
- errors.push(`Last op hash ${lastOpHash} not found in remote, pulling all ops`);
105
+ errors.push(
106
+ `Last op hash ${lastOpHash} not found in remote, pulling all ops`
107
+ );
102
108
  } else {
103
109
  startIndex++;
104
110
  }
105
111
  }
106
112
  const opsToPull = remoteOps.slice(startIndex);
107
113
  if (opsToPull.length > 0) {
108
- const prefixedOps = opsToPull.map((op) => this.prefixOpEntities(op, remoteName));
114
+ const prefixedOps = opsToPull.map(
115
+ (op) => this.prefixOpEntities(op, remoteName)
116
+ );
109
117
  for (const op of prefixedOps) {
110
118
  localEngine.opLog.append(op);
111
119
  newOps++;
@@ -113,7 +121,7 @@ class RemoteManager {
113
121
  latestOpId = remoteOps[remoteOps.length - 1].hash;
114
122
  }
115
123
  remote.lastOpId = latestOpId;
116
- remote.pulledAt = new Date().toISOString();
124
+ remote.pulledAt = (/* @__PURE__ */ new Date()).toISOString();
117
125
  this.saveRemotes(config);
118
126
  } catch (error) {
119
127
  errors.push(`Failed to pull from remote: ${error}`);
@@ -126,6 +134,7 @@ class RemoteManager {
126
134
  errors
127
135
  };
128
136
  }
137
+ /** Pull from all configured remotes */
129
138
  async pullAll(localEngine) {
130
139
  const config = this.loadRemotes();
131
140
  const remoteNames = Object.keys(config.remotes);
@@ -160,6 +169,7 @@ class RemoteManager {
160
169
  totalDurationMs: Date.now() - startTime
161
170
  };
162
171
  }
172
+ /** Prefix entity IDs in operations with remote name */
163
173
  prefixOpEntities(op, remoteName) {
164
174
  const prefixed = { ...op };
165
175
  if (op.vcs) {
@@ -199,8 +209,7 @@ class RemoteManager {
199
209
  e2: link.e2.includes(":") ? link.e2 : `${remoteName}:${link.e2}`
200
210
  }));
201
211
  }
202
- if (!prefixed.facts)
203
- prefixed.facts = [];
212
+ if (!prefixed.facts) prefixed.facts = [];
204
213
  prefixed.facts.push({
205
214
  e: "op",
206
215
  a: "remote",
@@ -208,7 +217,7 @@ class RemoteManager {
208
217
  });
209
218
  return prefixed;
210
219
  }
211
- }
220
+ };
212
221
  export {
213
222
  RemoteManager
214
223
  };
@@ -0,0 +1,224 @@
1
+ import {
2
+ TrellisVcsEngine,
3
+ init_engine
4
+ } from "./chunk-HGI74PXB.js";
5
+ import "./chunk-4XIVMVHC.js";
6
+ import "./chunk-B3ZIFA2O.js";
7
+ import "./chunk-36VSSTL7.js";
8
+ import "./chunk-BXSTJVE3.js";
9
+ import "./chunk-GLM4HGN4.js";
10
+ import "./chunk-KFQGP6VL.js";
11
+
12
+ // src/federation/remote-manager.ts
13
+ init_engine();
14
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
15
+ import { join, resolve } from "path";
16
+ var RemoteManager = class {
17
+ trellisPath;
18
+ remotesPath;
19
+ constructor(trellisPath) {
20
+ this.trellisPath = trellisPath;
21
+ this.remotesPath = join(trellisPath, "remotes.json");
22
+ }
23
+ /** Load remotes configuration */
24
+ loadRemotes() {
25
+ if (!existsSync(this.remotesPath)) {
26
+ return { remotes: {} };
27
+ }
28
+ try {
29
+ const content = readFileSync(this.remotesPath, "utf8");
30
+ return JSON.parse(content);
31
+ } catch (error) {
32
+ throw new Error(`Failed to load remotes config: ${error}`);
33
+ }
34
+ }
35
+ /** Save remotes configuration */
36
+ saveRemotes(config) {
37
+ try {
38
+ if (!existsSync(this.trellisPath)) {
39
+ mkdirSync(this.trellisPath, { recursive: true });
40
+ }
41
+ writeFileSync(this.remotesPath, JSON.stringify(config, null, 2), "utf8");
42
+ } catch (error) {
43
+ throw new Error(`Failed to save remotes config: ${error}`);
44
+ }
45
+ }
46
+ /** Add a new remote */
47
+ addRemote(name, path) {
48
+ const config = this.loadRemotes();
49
+ if (config.remotes[name]) {
50
+ throw new Error(`Remote '${name}' already exists`);
51
+ }
52
+ const resolvedPath = resolve(path);
53
+ if (!TrellisVcsEngine.isRepo(resolvedPath)) {
54
+ throw new Error(`Not a TrellisVCS repository: ${resolvedPath}`);
55
+ }
56
+ config.remotes[name] = {
57
+ name,
58
+ path: resolvedPath
59
+ };
60
+ this.saveRemotes(config);
61
+ }
62
+ /** Remove a remote */
63
+ removeRemote(name) {
64
+ const config = this.loadRemotes();
65
+ if (!config.remotes[name]) {
66
+ throw new Error(`Remote '${name}' not found`);
67
+ }
68
+ delete config.remotes[name];
69
+ this.saveRemotes(config);
70
+ }
71
+ /** List all remotes */
72
+ listRemotes() {
73
+ const config = this.loadRemotes();
74
+ return Object.values(config.remotes);
75
+ }
76
+ /** Pull new ops from a specific remote */
77
+ async pullRemote(remoteName, localEngine) {
78
+ const startTime = Date.now();
79
+ const config = this.loadRemotes();
80
+ const remote = config.remotes[remoteName];
81
+ if (!remote) {
82
+ throw new Error(`Remote '${remoteName}' not found`);
83
+ }
84
+ const errors = [];
85
+ let newOps = 0;
86
+ let latestOpId = remote.lastOpId || "";
87
+ try {
88
+ const remoteEngine = new TrellisVcsEngine({ rootPath: remote.path });
89
+ remoteEngine.open();
90
+ const remoteOps = remoteEngine.getOps();
91
+ if (remoteOps.length === 0) {
92
+ return {
93
+ remote: remoteName,
94
+ newOps: 0,
95
+ latestOpId: "",
96
+ durationMs: Date.now() - startTime,
97
+ errors: []
98
+ };
99
+ }
100
+ const lastOpHash = remote.lastOpId;
101
+ let startIndex = 0;
102
+ if (lastOpHash) {
103
+ startIndex = remoteOps.findIndex((op) => op.hash === lastOpHash);
104
+ if (startIndex === -1) {
105
+ startIndex = 0;
106
+ errors.push(
107
+ `Last op hash ${lastOpHash} not found in remote, pulling all ops`
108
+ );
109
+ } else {
110
+ startIndex++;
111
+ }
112
+ }
113
+ const opsToPull = remoteOps.slice(startIndex);
114
+ if (opsToPull.length > 0) {
115
+ const prefixedOps = opsToPull.map(
116
+ (op) => this.prefixOpEntities(op, remoteName)
117
+ );
118
+ for (const op of prefixedOps) {
119
+ localEngine.opLog.append(op);
120
+ newOps++;
121
+ }
122
+ latestOpId = remoteOps[remoteOps.length - 1].hash;
123
+ }
124
+ remote.lastOpId = latestOpId;
125
+ remote.pulledAt = (/* @__PURE__ */ new Date()).toISOString();
126
+ this.saveRemotes(config);
127
+ } catch (error) {
128
+ errors.push(`Failed to pull from remote: ${error}`);
129
+ }
130
+ return {
131
+ remote: remoteName,
132
+ newOps,
133
+ latestOpId,
134
+ durationMs: Date.now() - startTime,
135
+ errors
136
+ };
137
+ }
138
+ /** Pull from all configured remotes */
139
+ async pullAll(localEngine) {
140
+ const config = this.loadRemotes();
141
+ const remoteNames = Object.keys(config.remotes);
142
+ if (remoteNames.length === 0) {
143
+ return {
144
+ results: [],
145
+ totalNewOps: 0,
146
+ totalDurationMs: 0
147
+ };
148
+ }
149
+ const startTime = Date.now();
150
+ const results = [];
151
+ let totalNewOps = 0;
152
+ for (const remoteName of remoteNames) {
153
+ try {
154
+ const result = await this.pullRemote(remoteName, localEngine);
155
+ results.push(result);
156
+ totalNewOps += result.newOps;
157
+ } catch (error) {
158
+ results.push({
159
+ remote: remoteName,
160
+ newOps: 0,
161
+ latestOpId: "",
162
+ durationMs: 0,
163
+ errors: [`Failed to pull: ${error}`]
164
+ });
165
+ }
166
+ }
167
+ return {
168
+ results,
169
+ totalNewOps,
170
+ totalDurationMs: Date.now() - startTime
171
+ };
172
+ }
173
+ /** Prefix entity IDs in operations with remote name */
174
+ prefixOpEntities(op, remoteName) {
175
+ const prefixed = { ...op };
176
+ if (op.vcs) {
177
+ const vcs = { ...op.vcs };
178
+ if (vcs.issueId && !vcs.issueId.includes(":")) {
179
+ vcs.issueId = `${remoteName}:${vcs.issueId}`;
180
+ }
181
+ if (vcs.parentIssueId && !vcs.parentIssueId.includes(":")) {
182
+ vcs.parentIssueId = `${remoteName}:${vcs.parentIssueId}`;
183
+ }
184
+ if (vcs.blockedByIssueId && !vcs.blockedByIssueId.includes(":")) {
185
+ vcs.blockedByIssueId = `${remoteName}:${vcs.blockedByIssueId}`;
186
+ }
187
+ if (vcs.decisionId && !vcs.decisionId.includes(":")) {
188
+ vcs.decisionId = `${remoteName}:${vcs.decisionId}`;
189
+ }
190
+ prefixed.vcs = vcs;
191
+ }
192
+ if (op.facts) {
193
+ prefixed.facts = op.facts.map((fact) => {
194
+ if (fact.e === "entity" && fact.a === "id" && typeof fact.v === "string" && !fact.v.includes(":")) {
195
+ return { ...fact, v: `${remoteName}:${fact.v}` };
196
+ }
197
+ if (fact.e === "entity" && fact.a === "from" && typeof fact.v === "string" && !fact.v.includes(":")) {
198
+ return { ...fact, v: `${remoteName}:${fact.v}` };
199
+ }
200
+ if (fact.e === "entity" && fact.a === "to" && typeof fact.v === "string" && !fact.v.includes(":")) {
201
+ return { ...fact, v: `${remoteName}:${fact.v}` };
202
+ }
203
+ return fact;
204
+ });
205
+ }
206
+ if (op.links) {
207
+ prefixed.links = op.links.map((link) => ({
208
+ ...link,
209
+ e1: link.e1.includes(":") ? link.e1 : `${remoteName}:${link.e1}`,
210
+ e2: link.e2.includes(":") ? link.e2 : `${remoteName}:${link.e2}`
211
+ }));
212
+ }
213
+ if (!prefixed.facts) prefixed.facts = [];
214
+ prefixed.facts.push({
215
+ e: "op",
216
+ a: "remote",
217
+ v: remoteName
218
+ });
219
+ return prefixed;
220
+ }
221
+ };
222
+ export {
223
+ RemoteManager
224
+ };