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
@@ -1,9 +1,8 @@
1
- // @bun
2
1
  import {
3
2
  __esm,
4
3
  __export,
5
4
  __require
6
- } from "./index-a76rekgs.js";
5
+ } from "./chunk-2ESYSVXG.js";
7
6
 
8
7
  // src/links/parser.ts
9
8
  function parseFileRefs(content, filePath) {
@@ -28,9 +27,8 @@ function parseDocCommentRefs(content, filePath, ext) {
28
27
  }
29
28
  function extractRefs(text, filePath, context, lineOffset = 0) {
30
29
  const refs = [];
31
- const lines = text.split(`
32
- `);
33
- for (let i = 0;i < lines.length; i++) {
30
+ const lines = text.split("\n");
31
+ for (let i = 0; i < lines.length; i++) {
34
32
  const line = lines[i];
35
33
  let match;
36
34
  const re = new RegExp(WIKI_LINK_RE.source, WIKI_LINK_RE.flags);
@@ -39,8 +37,7 @@ function extractRefs(text, filePath, context, lineOffset = 0) {
39
37
  const col = match.index;
40
38
  const lineNum = i + 1 + lineOffset;
41
39
  const parsed = parseRefContent(raw);
42
- if (!parsed)
43
- continue;
40
+ if (!parsed) continue;
44
41
  refs.push({
45
42
  ...parsed,
46
43
  raw,
@@ -56,21 +53,18 @@ function extractRefs(text, filePath, context, lineOffset = 0) {
56
53
  return refs;
57
54
  }
58
55
  function parseRefContent(raw) {
59
- if (!raw || !raw.trim())
60
- return null;
56
+ if (!raw || !raw.trim()) return null;
61
57
  let content;
62
58
  let alias;
63
59
  const pipeIdx = raw.indexOf("|");
64
60
  if (pipeIdx !== -1) {
65
61
  content = raw.substring(0, pipeIdx).trim();
66
62
  alias = raw.substring(pipeIdx + 1).trim();
67
- if (!alias)
68
- alias = undefined;
63
+ if (!alias) alias = void 0;
69
64
  } else {
70
65
  content = raw.trim();
71
66
  }
72
- if (!content)
73
- return null;
67
+ if (!content) return null;
74
68
  const colonIdx = content.indexOf(":");
75
69
  if (colonIdx !== -1) {
76
70
  const possibleNs = content.substring(0, colonIdx);
@@ -83,34 +77,27 @@ function parseRefContent(raw) {
83
77
  }
84
78
  const { target, anchor } = splitAnchor(content);
85
79
  const inferred = inferNamespace(target, anchor);
86
- if (!inferred)
87
- return null;
80
+ if (!inferred) return null;
88
81
  return { namespace: inferred, target, anchor, alias };
89
82
  }
90
83
  function splitAnchor(content) {
91
84
  const hashIdx = content.indexOf("#");
92
- if (hashIdx === -1)
93
- return { target: content };
85
+ if (hashIdx === -1) return { target: content };
94
86
  return {
95
87
  target: content.substring(0, hashIdx),
96
- anchor: content.substring(hashIdx + 1) || undefined
88
+ anchor: content.substring(hashIdx + 1) || void 0
97
89
  };
98
90
  }
99
91
  function isValidNamespace(s) {
100
92
  return VALID_NAMESPACES.has(s);
101
93
  }
102
94
  function inferNamespace(target, anchor) {
103
- if (/^TRL-\d+$/i.test(target))
104
- return "issue";
105
- if (/^DEC-\d+$/i.test(target))
106
- return "decision";
107
- if (anchor)
108
- return "symbol";
109
- if (target.includes("/"))
110
- return "file";
95
+ if (/^TRL-\d+$/i.test(target)) return "issue";
96
+ if (/^DEC-\d+$/i.test(target)) return "decision";
97
+ if (anchor) return "symbol";
98
+ if (target.includes("/")) return "file";
111
99
  const ext = target.split(".").pop()?.toLowerCase();
112
- if (ext && CODE_EXTENSIONS.has(ext))
113
- return "file";
100
+ if (ext && CODE_EXTENSIONS.has(ext)) return "file";
114
101
  return null;
115
102
  }
116
103
  function extractDocComments(content, ext) {
@@ -139,12 +126,11 @@ function extractDocComments(content, ext) {
139
126
  }
140
127
  function extractJSDocComments(content) {
141
128
  const blocks = [];
142
- const lines = content.split(`
143
- `);
129
+ const lines = content.split("\n");
144
130
  let inBlock = false;
145
131
  let blockLines = [];
146
132
  let blockStart = 0;
147
- for (let i = 0;i < lines.length; i++) {
133
+ for (let i = 0; i < lines.length; i++) {
148
134
  const trimmed = lines[i].trim();
149
135
  if (!inBlock && (trimmed.startsWith("/**") || trimmed.startsWith("/*"))) {
150
136
  inBlock = true;
@@ -152,8 +138,7 @@ function extractJSDocComments(content) {
152
138
  blockLines = [trimmed];
153
139
  if (trimmed.endsWith("*/") && trimmed.length > 4) {
154
140
  blocks.push({
155
- text: stripBlockCommentMarkers(blockLines.join(`
156
- `)),
141
+ text: stripBlockCommentMarkers(blockLines.join("\n")),
157
142
  startLine: blockStart,
158
143
  context: "jsdoc"
159
144
  });
@@ -166,8 +151,7 @@ function extractJSDocComments(content) {
166
151
  blockLines.push(trimmed);
167
152
  if (trimmed.includes("*/")) {
168
153
  blocks.push({
169
- text: stripBlockCommentMarkers(blockLines.join(`
170
- `)),
154
+ text: stripBlockCommentMarkers(blockLines.join("\n")),
171
155
  startLine: blockStart,
172
156
  context: "jsdoc"
173
157
  });
@@ -187,19 +171,16 @@ function extractJSDocComments(content) {
187
171
  return blocks;
188
172
  }
189
173
  function stripBlockCommentMarkers(text) {
190
- return text.replace(/^\/\*\*?\s?/, "").replace(/\*\/\s*$/, "").split(`
191
- `).map((line) => line.replace(/^\s*\*\s?/, "")).join(`
192
- `).trim();
174
+ return text.replace(/^\/\*\*?\s?/, "").replace(/\*\/\s*$/, "").split("\n").map((line) => line.replace(/^\s*\*\s?/, "")).join("\n").trim();
193
175
  }
194
176
  function extractPythonDocstrings(content) {
195
177
  const blocks = [];
196
- const lines = content.split(`
197
- `);
178
+ const lines = content.split("\n");
198
179
  let inDocstring = false;
199
180
  let delimiter = "";
200
181
  let blockLines = [];
201
182
  let blockStart = 0;
202
- for (let i = 0;i < lines.length; i++) {
183
+ for (let i = 0; i < lines.length; i++) {
203
184
  const trimmed = lines[i].trim();
204
185
  if (!inDocstring) {
205
186
  for (const delim of ['"""', "'''"]) {
@@ -230,8 +211,7 @@ function extractPythonDocstrings(content) {
230
211
  if (trimmed.endsWith(delimiter)) {
231
212
  blockLines.push(trimmed.slice(0, -delimiter.length));
232
213
  blocks.push({
233
- text: blockLines.join(`
234
- `).trim(),
214
+ text: blockLines.join("\n").trim(),
235
215
  startLine: blockStart,
236
216
  context: "pydoc"
237
217
  });
@@ -246,9 +226,8 @@ function extractPythonDocstrings(content) {
246
226
  }
247
227
  function extractRustDocComments(content) {
248
228
  const blocks = [];
249
- const lines = content.split(`
250
- `);
251
- for (let i = 0;i < lines.length; i++) {
229
+ const lines = content.split("\n");
230
+ for (let i = 0; i < lines.length; i++) {
252
231
  const trimmed = lines[i].trim();
253
232
  if (trimmed.startsWith("///") || trimmed.startsWith("//!")) {
254
233
  blocks.push({
@@ -262,9 +241,8 @@ function extractRustDocComments(content) {
262
241
  }
263
242
  function extractGoDocComments(content) {
264
243
  const blocks = [];
265
- const lines = content.split(`
266
- `);
267
- for (let i = 0;i < lines.length; i++) {
244
+ const lines = content.split("\n");
245
+ for (let i = 0; i < lines.length; i++) {
268
246
  const trimmed = lines[i].trim();
269
247
  if (trimmed.startsWith("//")) {
270
248
  blocks.push({
@@ -278,9 +256,8 @@ function extractGoDocComments(content) {
278
256
  }
279
257
  function extractRubyDocComments(content) {
280
258
  const blocks = [];
281
- const lines = content.split(`
282
- `);
283
- for (let i = 0;i < lines.length; i++) {
259
+ const lines = content.split("\n");
260
+ for (let i = 0; i < lines.length; i++) {
284
261
  const trimmed = lines[i].trim();
285
262
  if (trimmed.startsWith("#")) {
286
263
  blocks.push({
@@ -293,42 +270,45 @@ function extractRubyDocComments(content) {
293
270
  return blocks;
294
271
  }
295
272
  var WIKI_LINK_RE, CODE_EXTENSIONS, VALID_NAMESPACES;
296
- var init_parser = __esm(() => {
297
- WIKI_LINK_RE = /\[\[([^\]]+)\]\]/g;
298
- CODE_EXTENSIONS = new Set([
299
- "ts",
300
- "tsx",
301
- "js",
302
- "jsx",
303
- "mjs",
304
- "cjs",
305
- "py",
306
- "pyi",
307
- "go",
308
- "rs",
309
- "rb",
310
- "java",
311
- "cs",
312
- "md",
313
- "json",
314
- "yaml",
315
- "yml",
316
- "toml",
317
- "css",
318
- "scss",
319
- "less",
320
- "html",
321
- "vue",
322
- "svelte"
323
- ]);
324
- VALID_NAMESPACES = new Set([
325
- "issue",
326
- "file",
327
- "symbol",
328
- "identity",
329
- "milestone",
330
- "decision"
331
- ]);
273
+ var init_parser = __esm({
274
+ "src/links/parser.ts"() {
275
+ "use strict";
276
+ WIKI_LINK_RE = /\[\[([^\]]+)\]\]/g;
277
+ CODE_EXTENSIONS = /* @__PURE__ */ new Set([
278
+ "ts",
279
+ "tsx",
280
+ "js",
281
+ "jsx",
282
+ "mjs",
283
+ "cjs",
284
+ "py",
285
+ "pyi",
286
+ "go",
287
+ "rs",
288
+ "rb",
289
+ "java",
290
+ "cs",
291
+ "md",
292
+ "json",
293
+ "yaml",
294
+ "yml",
295
+ "toml",
296
+ "css",
297
+ "scss",
298
+ "less",
299
+ "html",
300
+ "vue",
301
+ "svelte"
302
+ ]);
303
+ VALID_NAMESPACES = /* @__PURE__ */ new Set([
304
+ "issue",
305
+ "file",
306
+ "symbol",
307
+ "identity",
308
+ "milestone",
309
+ "decision"
310
+ ]);
311
+ }
332
312
  });
333
313
 
334
314
  // src/links/resolver.ts
@@ -355,7 +335,7 @@ function resolveRefs(refs, ctx) {
355
335
  }
356
336
  function resolveIssue(ref, ctx) {
357
337
  const title = ctx.getIssueTitle(ref.target);
358
- if (title !== undefined) {
338
+ if (title !== void 0) {
359
339
  return {
360
340
  ...ref,
361
341
  state: "resolved",
@@ -411,7 +391,7 @@ function resolveIdentity(ref, ctx) {
411
391
  }
412
392
  function resolveMilestone(ref, ctx) {
413
393
  const title = ctx.getMilestoneTitle(ref.target);
414
- if (title !== undefined) {
394
+ if (title !== void 0) {
415
395
  return {
416
396
  ...ref,
417
397
  state: "resolved",
@@ -447,20 +427,20 @@ function createResolverContext(engine) {
447
427
  },
448
428
  getMilestoneTitle(idOrMessage) {
449
429
  const byId = milestones.find((m) => m.id === idOrMessage);
450
- if (byId)
451
- return byId.message;
452
- const byMsg = milestones.find((m) => m.message && m.message.toLowerCase().includes(idOrMessage.toLowerCase()));
430
+ if (byId) return byId.message;
431
+ const byMsg = milestones.find(
432
+ (m) => m.message && m.message.toLowerCase().includes(idOrMessage.toLowerCase())
433
+ );
453
434
  return byMsg?.message;
454
435
  },
455
436
  hasSymbol(filePath, symbolName) {
456
437
  try {
457
- const { readFileSync } = __require("fs");
458
- const { join } = __require("path");
459
- const absPath = join(engine.getRootPath(), filePath);
460
- const content = readFileSync(absPath, "utf-8");
438
+ const { readFileSync: readFileSync2 } = __require("fs");
439
+ const { join: join2 } = __require("path");
440
+ const absPath = join2(engine.getRootPath(), filePath);
441
+ const content = readFileSync2(absPath, "utf-8");
461
442
  const result = engine.parseFile(content, filePath);
462
- if (!result)
463
- return false;
443
+ if (!result) return false;
464
444
  return result.declarations.some((d) => d.name === symbolName);
465
445
  } catch {
466
446
  return false;
@@ -482,25 +462,22 @@ function createResolverContext(engine) {
482
462
  return milestones.map((m) => m.id);
483
463
  },
484
464
  hasDecision(id) {
485
- if (!engine.getDecision)
486
- return false;
465
+ if (!engine.getDecision) return false;
487
466
  return engine.getDecision(id) !== null;
488
467
  },
489
468
  getDecisionTitle(id) {
490
- if (!engine.getDecision)
491
- return;
469
+ if (!engine.getDecision) return void 0;
492
470
  const d = engine.getDecision(id);
493
471
  return d?.toolName;
494
472
  },
495
473
  getSymbolNames(filePath) {
496
474
  try {
497
- const { readFileSync } = __require("fs");
498
- const { join } = __require("path");
499
- const absPath = join(engine.getRootPath(), filePath);
500
- const content = readFileSync(absPath, "utf-8");
475
+ const { readFileSync: readFileSync2 } = __require("fs");
476
+ const { join: join2 } = __require("path");
477
+ const absPath = join2(engine.getRootPath(), filePath);
478
+ const content = readFileSync2(absPath, "utf-8");
501
479
  const result = engine.parseFile(content, filePath);
502
- if (!result)
503
- return [];
480
+ if (!result) return [];
504
481
  return result.declarations.map((d) => d.name);
505
482
  } catch {
506
483
  return [];
@@ -508,13 +485,17 @@ function createResolverContext(engine) {
508
485
  }
509
486
  };
510
487
  }
511
- var init_resolver = () => {};
488
+ var init_resolver = __esm({
489
+ "src/links/resolver.ts"() {
490
+ "use strict";
491
+ }
492
+ });
512
493
 
513
494
  // src/links/ref-index.ts
514
495
  function buildRefIndex(files, ctx) {
515
496
  const index = {
516
- outgoing: new Map,
517
- incoming: new Map
497
+ outgoing: /* @__PURE__ */ new Map(),
498
+ incoming: /* @__PURE__ */ new Map()
518
499
  };
519
500
  for (const file of files) {
520
501
  const refs = parseFileRefs(file.content, file.path);
@@ -529,8 +510,7 @@ function updateFileInIndex(index, filePath, content, ctx) {
529
510
  }
530
511
  function removeFileFromIndex(index, filePath) {
531
512
  const oldRefs = index.outgoing.get(filePath);
532
- if (!oldRefs)
533
- return;
513
+ if (!oldRefs) return;
534
514
  for (const ref of oldRefs) {
535
515
  const resolved = resolveRefToEntityId(ref);
536
516
  if (resolved) {
@@ -571,8 +551,7 @@ function getIndexStats(index) {
571
551
  };
572
552
  }
573
553
  function addFileToIndex(index, filePath, refs, ctx) {
574
- if (refs.length === 0)
575
- return;
554
+ if (refs.length === 0) return;
576
555
  index.outgoing.set(filePath, refs);
577
556
  for (const ref of refs) {
578
557
  const resolved = resolveRef(ref, ctx);
@@ -594,45 +573,17 @@ function resolveRefToEntityId(ref) {
594
573
  }
595
574
  return `${ref.namespace}:${ref.target}`;
596
575
  }
597
- var init_ref_index = __esm(() => {
598
- init_parser();
599
- init_resolver();
576
+ var init_ref_index = __esm({
577
+ "src/links/ref-index.ts"() {
578
+ "use strict";
579
+ init_parser();
580
+ init_resolver();
581
+ }
600
582
  });
601
583
 
602
584
  // src/links/lifecycle.ts
603
585
  import { readFileSync } from "fs";
604
586
  import { join } from "path";
605
-
606
- class StaleRefRegistry {
607
- staleRefs = new Map;
608
- markStale(entityId, reason, sources, opts) {
609
- const entry = {
610
- entityId,
611
- reason,
612
- causeOpHash: opts?.causeOpHash,
613
- newTarget: opts?.newTarget,
614
- timestamp: new Date().toISOString(),
615
- sources
616
- };
617
- this.staleRefs.set(entityId, entry);
618
- return entry;
619
- }
620
- clearStale(entityId) {
621
- this.staleRefs.delete(entityId);
622
- }
623
- isStale(entityId) {
624
- return this.staleRefs.has(entityId);
625
- }
626
- getStale(entityId) {
627
- return this.staleRefs.get(entityId);
628
- }
629
- getAllStale() {
630
- return [...this.staleRefs.values()];
631
- }
632
- getByReason(reason) {
633
- return this.getAllStale().filter((s) => s.reason === reason);
634
- }
635
- }
636
587
  function buildRenameProposal(index, filePath, oldName, newName) {
637
588
  const oldEntityId = `symbol:${filePath}#${oldName}`;
638
589
  const newEntityId = `symbol:${filePath}#${newName}`;
@@ -641,7 +592,7 @@ function buildRenameProposal(index, filePath, oldName, newName) {
641
592
  const altSources = getBacklinks(index, altEntityId);
642
593
  const allSources = deduplicateSources([...sources, ...altSources]);
643
594
  const rewrites = [];
644
- const affectedFiles = new Set;
595
+ const affectedFiles = /* @__PURE__ */ new Set();
645
596
  for (const source of allSources) {
646
597
  affectedFiles.add(source.filePath);
647
598
  const oldText = buildRefText(filePath, oldName);
@@ -663,7 +614,7 @@ function buildRenameProposal(index, filePath, oldName, newName) {
663
614
  }
664
615
  function applyRenameProposal(proposal, rootPath) {
665
616
  const modifiedFiles = [];
666
- const byFile = new Map;
617
+ const byFile = /* @__PURE__ */ new Map();
667
618
  for (const rw of proposal.rewrites) {
668
619
  const existing = byFile.get(rw.filePath) ?? [];
669
620
  existing.push(rw);
@@ -685,22 +636,21 @@ function applyRenameProposal(proposal, rootPath) {
685
636
  writeFileSync(absPath, content);
686
637
  modifiedFiles.push(filePath);
687
638
  }
688
- } catch {}
639
+ } catch {
640
+ }
689
641
  }
690
642
  return modifiedFiles;
691
643
  }
692
644
  function handleSymbolDeletion(index, registry, filePath, symbolName, causeOpHash) {
693
645
  const entityId = `symbol:${filePath}#${symbolName}`;
694
646
  const sources = getBacklinks(index, entityId);
695
- if (sources.length === 0)
696
- return null;
647
+ if (sources.length === 0) return null;
697
648
  return registry.markStale(entityId, "deleted", sources, { causeOpHash });
698
649
  }
699
650
  function handleFileDeletion(index, registry, filePath, causeOpHash) {
700
651
  const entityId = `file:${filePath}`;
701
652
  const sources = getBacklinks(index, entityId);
702
- if (sources.length === 0)
703
- return null;
653
+ if (sources.length === 0) return null;
704
654
  return registry.markStale(entityId, "deleted", sources, { causeOpHash });
705
655
  }
706
656
  function getDiagnostics(index, registry, resolvedEntityIds) {
@@ -735,7 +685,12 @@ function processSemanticPatches(patches, filePath, index, registry, causeOpHash)
735
685
  const events = [];
736
686
  for (const patch of patches) {
737
687
  if (patch.kind === "symbolRename") {
738
- const proposal = buildRenameProposal(index, filePath, patch.oldName, patch.newName);
688
+ const proposal = buildRenameProposal(
689
+ index,
690
+ filePath,
691
+ patch.oldName,
692
+ patch.newName
693
+ );
739
694
  if (proposal.rewrites.length > 0) {
740
695
  events.push({
741
696
  type: "rename-proposal",
@@ -745,7 +700,13 @@ function processSemanticPatches(patches, filePath, index, registry, causeOpHash)
745
700
  }
746
701
  }
747
702
  if (patch.kind === "symbolRemove") {
748
- const staleRef = handleSymbolDeletion(index, registry, filePath, patch.entityName, causeOpHash);
703
+ const staleRef = handleSymbolDeletion(
704
+ index,
705
+ registry,
706
+ filePath,
707
+ patch.entityName,
708
+ causeOpHash
709
+ );
749
710
  if (staleRef) {
750
711
  events.push({
751
712
  type: "stale-detected",
@@ -767,51 +728,130 @@ function buildEntityIdFromRef(ref) {
767
728
  return `${ref.namespace}:${ref.target}`;
768
729
  }
769
730
  function deduplicateSources(sources) {
770
- const seen = new Set;
731
+ const seen = /* @__PURE__ */ new Set();
771
732
  return sources.filter((s) => {
772
733
  const key = `${s.filePath}:${s.line}:${s.col}`;
773
- if (seen.has(key))
774
- return false;
734
+ if (seen.has(key)) return false;
775
735
  seen.add(key);
776
736
  return true;
777
737
  });
778
738
  }
779
- var init_lifecycle = __esm(() => {
780
- init_ref_index();
739
+ var StaleRefRegistry;
740
+ var init_lifecycle = __esm({
741
+ "src/links/lifecycle.ts"() {
742
+ "use strict";
743
+ init_ref_index();
744
+ StaleRefRegistry = class {
745
+ staleRefs = /* @__PURE__ */ new Map();
746
+ /**
747
+ * Mark an entity as stale due to rename or deletion.
748
+ */
749
+ markStale(entityId, reason, sources, opts) {
750
+ const entry = {
751
+ entityId,
752
+ reason,
753
+ causeOpHash: opts?.causeOpHash,
754
+ newTarget: opts?.newTarget,
755
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
756
+ sources
757
+ };
758
+ this.staleRefs.set(entityId, entry);
759
+ return entry;
760
+ }
761
+ /**
762
+ * Remove stale status (e.g. after user accepts rename update).
763
+ */
764
+ clearStale(entityId) {
765
+ this.staleRefs.delete(entityId);
766
+ }
767
+ /**
768
+ * Check if an entity is stale.
769
+ */
770
+ isStale(entityId) {
771
+ return this.staleRefs.has(entityId);
772
+ }
773
+ /**
774
+ * Get stale info for an entity.
775
+ */
776
+ getStale(entityId) {
777
+ return this.staleRefs.get(entityId);
778
+ }
779
+ /**
780
+ * Get all stale refs.
781
+ */
782
+ getAllStale() {
783
+ return [...this.staleRefs.values()];
784
+ }
785
+ /**
786
+ * Get stale refs filtered by reason.
787
+ */
788
+ getByReason(reason) {
789
+ return this.getAllStale().filter((s) => s.reason === reason);
790
+ }
791
+ };
792
+ }
781
793
  });
782
794
 
783
795
  // src/links/index.ts
784
- var exports_links = {};
785
- __export(exports_links, {
786
- updateFileInIndex: () => updateFileInIndex,
787
- resolveRefs: () => resolveRefs,
788
- resolveRef: () => resolveRef,
789
- removeFileFromIndex: () => removeFileFromIndex,
790
- processSemanticPatches: () => processSemanticPatches,
791
- parseRefContent: () => parseRefContent,
792
- parseMarkdownRefs: () => parseMarkdownRefs,
793
- parseFileRefs: () => parseFileRefs,
794
- parseDocCommentRefs: () => parseDocCommentRefs,
795
- inferNamespace: () => inferNamespace,
796
- handleSymbolDeletion: () => handleSymbolDeletion,
797
- handleFileDeletion: () => handleFileDeletion,
798
- getReferencedEntities: () => getReferencedEntities,
799
- getOutgoingRefs: () => getOutgoingRefs,
800
- getIndexStats: () => getIndexStats,
801
- getFilesWithRefs: () => getFilesWithRefs,
802
- getDiagnostics: () => getDiagnostics,
803
- getBacklinks: () => getBacklinks,
804
- createResolverContext: () => createResolverContext,
805
- buildRenameProposal: () => buildRenameProposal,
806
- buildRefIndex: () => buildRefIndex,
796
+ var links_exports = {};
797
+ __export(links_exports, {
798
+ StaleRefRegistry: () => StaleRefRegistry,
807
799
  applyRenameProposal: () => applyRenameProposal,
808
- StaleRefRegistry: () => StaleRefRegistry
800
+ buildRefIndex: () => buildRefIndex,
801
+ buildRenameProposal: () => buildRenameProposal,
802
+ createResolverContext: () => createResolverContext,
803
+ getBacklinks: () => getBacklinks,
804
+ getDiagnostics: () => getDiagnostics,
805
+ getFilesWithRefs: () => getFilesWithRefs,
806
+ getIndexStats: () => getIndexStats,
807
+ getOutgoingRefs: () => getOutgoingRefs,
808
+ getReferencedEntities: () => getReferencedEntities,
809
+ handleFileDeletion: () => handleFileDeletion,
810
+ handleSymbolDeletion: () => handleSymbolDeletion,
811
+ inferNamespace: () => inferNamespace,
812
+ parseDocCommentRefs: () => parseDocCommentRefs,
813
+ parseFileRefs: () => parseFileRefs,
814
+ parseMarkdownRefs: () => parseMarkdownRefs,
815
+ parseRefContent: () => parseRefContent,
816
+ processSemanticPatches: () => processSemanticPatches,
817
+ removeFileFromIndex: () => removeFileFromIndex,
818
+ resolveRef: () => resolveRef,
819
+ resolveRefs: () => resolveRefs,
820
+ updateFileInIndex: () => updateFileInIndex
809
821
  });
810
- var init_links = __esm(() => {
811
- init_parser();
812
- init_resolver();
813
- init_ref_index();
814
- init_lifecycle();
822
+ var init_links = __esm({
823
+ "src/links/index.ts"() {
824
+ init_parser();
825
+ init_resolver();
826
+ init_ref_index();
827
+ init_lifecycle();
828
+ }
815
829
  });
816
830
 
817
- export { parseFileRefs, parseMarkdownRefs, parseDocCommentRefs, parseRefContent, inferNamespace, resolveRef, resolveRefs, createResolverContext, buildRefIndex, updateFileInIndex, removeFileFromIndex, getOutgoingRefs, getBacklinks, getReferencedEntities, getFilesWithRefs, getIndexStats, StaleRefRegistry, buildRenameProposal, applyRenameProposal, handleSymbolDeletion, handleFileDeletion, getDiagnostics, processSemanticPatches, exports_links, init_links };
831
+ export {
832
+ parseFileRefs,
833
+ parseMarkdownRefs,
834
+ parseDocCommentRefs,
835
+ parseRefContent,
836
+ inferNamespace,
837
+ resolveRef,
838
+ resolveRefs,
839
+ createResolverContext,
840
+ buildRefIndex,
841
+ updateFileInIndex,
842
+ removeFileFromIndex,
843
+ getOutgoingRefs,
844
+ getBacklinks,
845
+ getReferencedEntities,
846
+ getFilesWithRefs,
847
+ getIndexStats,
848
+ StaleRefRegistry,
849
+ buildRenameProposal,
850
+ applyRenameProposal,
851
+ handleSymbolDeletion,
852
+ handleFileDeletion,
853
+ getDiagnostics,
854
+ processSemanticPatches,
855
+ links_exports,
856
+ init_links
857
+ };