ryugi-artifacts 1.67.0 → 1.68.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 (336) hide show
  1. package/dist/cli.cjs +4 -4
  2. package/dist/server.cjs +311 -152
  3. package/dist/viewer/{AgentStatusPill-CkFOocLp.js → AgentStatusPill-BnKps9Zr.js} +1 -1
  4. package/dist/viewer/{ArtboardLayout-c2tN7qmA.js → ArtboardLayout-Cz1MWCu8.js} +4 -4
  5. package/dist/viewer/{ArtifactList-Ba_vsFps.js → ArtifactList-CCxCNWid.js} +1 -1
  6. package/dist/viewer/{AutoPublishPrompt-DBjUFJp0.js → AutoPublishPrompt-BrUfQWmW.js} +1 -1
  7. package/dist/viewer/{Avatar-CiprmZa8.js → Avatar-CBcHKq6_.js} +1 -1
  8. package/dist/viewer/{Avatar-C76h25SW.js → Avatar-ChKkUO4F.js} +1 -1
  9. package/dist/viewer/{BottomSheet-BN94WJR-.js → BottomSheet-ZdnjIGxe.js} +1 -1
  10. package/dist/viewer/{Canvas-BycJwc4p.js → Canvas-CqxEk0B7.js} +1 -1
  11. package/dist/viewer/{CompositeItem-DP4e-Lcw.js → CompositeItem-Dc1pE-Dd.js} +1 -1
  12. package/dist/viewer/DocumentLayout-B1bQT74s.js +2 -0
  13. package/dist/viewer/DocumentPage-DFTrEydU.js +4 -0
  14. package/dist/viewer/{DropdownMenu-4Ouduev6.js → DropdownMenu-MN8aSs-T.js} +1 -1
  15. package/dist/viewer/{HtmlLayout-Dwd8Iy0b.js → HtmlLayout-DhjuMVfU.js} +1 -1
  16. package/dist/viewer/{MenuSubmenuTrigger-BFgGHPek.js → MenuSubmenuTrigger-6b5C_OEY.js} +1 -1
  17. package/dist/viewer/{MenuTrigger-Dp816lqx.js → MenuTrigger-C80SSxV1.js} +1 -1
  18. package/dist/viewer/{PhoneArtboardBar-D1Ohbjxv.js → PhoneArtboardBar-Bzeyu7RL.js} +1 -1
  19. package/dist/viewer/{PhoneSheet-u7ImxAef.js → PhoneSheet-BqNn1A8k.js} +1 -1
  20. package/dist/viewer/{Popover-pOLZvL-K.js → Popover-Mq50eaGz.js} +1 -1
  21. package/dist/viewer/{PreviewLayout-CQyYo3HQ.js → PreviewLayout-CBXgXFHd.js} +2 -2
  22. package/dist/viewer/{Segmented-jrL3VjDO.js → Segmented-Dn3tMkJ1.js} +1 -1
  23. package/dist/viewer/{Select-YHMVx9FX.js → Select-B3iVUwhL.js} +1 -1
  24. package/dist/viewer/{SelectScrollUpArrow-xXX8JHOC.js → SelectScrollUpArrow-PZIGiE5i.js} +1 -1
  25. package/dist/viewer/{SettingsDialog-Dk2pmarN.js → SettingsDialog-Di1DIjuU.js} +1 -1
  26. package/dist/viewer/{SnapshotDocument-ve5bKPKM.js → SnapshotDocument-CZ9_zlbN.js} +1 -1
  27. package/dist/viewer/SplitShell-1kQWIUbB.js +1 -0
  28. package/dist/viewer/{ThreadView-B4kNB_AB.js → ThreadView-DhKDuMXE.js} +1 -1
  29. package/dist/viewer/TooltipPopup-DIfQd51a.js +1 -0
  30. package/dist/viewer/{VirtualizedEditor-D9Ivycdp-D8_HtwY3.js → VirtualizedEditor-D9Ivycdp-BS6qVQKi.js} +1 -1
  31. package/dist/viewer/{VirtualizedRenderer-C_d95FXi-DV00RbUh.js → VirtualizedRenderer-C_d95FXi-Cgx30lJW.js} +1 -1
  32. package/dist/viewer/{WarningsBadge-CaAGWi0B.js → WarningsBadge-BhvEtIPf.js} +1 -1
  33. package/dist/viewer/{WhiteboardLayout-C9yzQzlb.js → WhiteboardLayout-BLUnPC_j.js} +1 -1
  34. package/dist/viewer/{WritingCursor-DElcFC08.js → WritingCursor-D8-ImQmN.js} +1 -1
  35. package/dist/viewer/{abnfDiagram-VCTEODGH-BHNSlgBN.js → abnfDiagram-VCTEODGH-CAaQSsKr.js} +1 -1
  36. package/dist/viewer/{agentLook-BkD9GF0y.js → agentLook-GSv6M_4b.js} +1 -1
  37. package/dist/viewer/{anchor-C6f5HUUc.js → anchor-cpflnjH6.js} +1 -1
  38. package/dist/viewer/{ar-SA-G6X2FPQ2-kYFjvsjA.js → ar-SA-G6X2FPQ2-CRJustU_.js} +1 -1
  39. package/dist/viewer/{architecture-7GRP2DOG-Do0w0Nkr.js → architecture-7GRP2DOG-Df-BWMMn.js} +1 -1
  40. package/dist/viewer/{architectureDiagram-5GKGNRK7-Du27ms23.js → architectureDiagram-5GKGNRK7-slFJ5pNz.js} +1 -1
  41. package/dist/viewer/{az-AZ-76LH7QW2-BjFBhSZJ.js → az-AZ-76LH7QW2-BZXNMAjr.js} +1 -1
  42. package/dist/viewer/{bg-BG-XCXSNQG7-Ck_hluXV.js → bg-BG-XCXSNQG7-D942OHJ1.js} +1 -1
  43. package/dist/viewer/{blockDiagram-I7D4REHJ-ZAPqzK7M.js → blockDiagram-I7D4REHJ-D7tnOUmG.js} +1 -1
  44. package/dist/viewer/{bn-BD-2XOGV67Q-D8RL--QF.js → bn-BD-2XOGV67Q-CnUziB-N.js} +1 -1
  45. package/dist/viewer/{c4Diagram-7LVT6UL2-CpZ4wCIe.js → c4Diagram-7LVT6UL2-A90PS1Zn.js} +1 -1
  46. package/dist/viewer/{ca-ES-6MX7JW3Y-CmU7_qfi.js → ca-ES-6MX7JW3Y-fV3kI3by.js} +1 -1
  47. package/dist/viewer/channel-DpF2FNj7.js +1 -0
  48. package/dist/viewer/{channel-B15uf_mz.js → channel-Y8cPWVH2.js} +150 -150
  49. package/dist/viewer/{chunk-4HAMMTFA-4oEiNUVg.js → chunk-4HAMMTFA-Dtev5uNX.js} +1 -1
  50. package/dist/viewer/{chunk-75Z2AOVW-DG3lmbGz.js → chunk-75Z2AOVW-Br59Z0N6.js} +1 -1
  51. package/dist/viewer/{chunk-DU6HZSFF-Dv3KmGY3.js → chunk-DU6HZSFF-DTVWCdhx.js} +1 -1
  52. package/dist/viewer/{chunk-EIO257PC-DC6UJx10.js → chunk-EIO257PC-BJo1mhGf.js} +1 -1
  53. package/dist/viewer/{chunk-F27PBJKO-DtFqk0w0.js → chunk-F27PBJKO-CqXtkDh_.js} +1 -1
  54. package/dist/viewer/{chunk-GMAD6QVW-BK3CBpHU.js → chunk-GMAD6QVW-C_mtYAsp.js} +1 -1
  55. package/dist/viewer/{chunk-GVQU2GXP-CpsL6KWe.js → chunk-GVQU2GXP-Dnn5H2Ee.js} +1 -1
  56. package/dist/viewer/{chunk-IMKFNOWR-DqRCtwcS.js → chunk-IMKFNOWR-CBTdwY_-.js} +1 -1
  57. package/dist/viewer/{chunk-L3NEJ4N5-bcRPIfs5.js → chunk-L3NEJ4N5-RIzLHntK.js} +1 -1
  58. package/dist/viewer/{chunk-OSK3NFVY-BF2pXgrt.js → chunk-OSK3NFVY-CK41dOkH.js} +1 -1
  59. package/dist/viewer/{chunk-P2QGCYS3-qI3BJZiV.js → chunk-P2QGCYS3-BL4CYLWw.js} +1 -1
  60. package/dist/viewer/{chunk-POPQ4Y6H-D7_l0PbI.js → chunk-POPQ4Y6H-CJsQjBoH.js} +1 -1
  61. package/dist/viewer/{chunk-PWAF6VOD-aeOMJQRL.js → chunk-PWAF6VOD-DeuKxCvN.js} +1 -1
  62. package/dist/viewer/{chunk-SHT3W25Y-BT5Wvvpu.js → chunk-SHT3W25Y-1ctnl-w3.js} +1 -1
  63. package/dist/viewer/{chunk-SVP7TREG-HG6La_wJ.js → chunk-SVP7TREG-0tebC1pj.js} +1 -1
  64. package/dist/viewer/{chunk-TICWLB2K-DQpzLhAV.js → chunk-TICWLB2K-BxhvtMAu.js} +1 -1
  65. package/dist/viewer/classDiagram-ZZMXUADV-BCUwkMkD.js +1 -0
  66. package/dist/viewer/classDiagram-v2-VYDZK3BY-BCUwkMkD.js +1 -0
  67. package/dist/viewer/{cs-CZ-2BRQDIVT-ahJk7hMM.js → cs-CZ-2BRQDIVT-DKXyGqNH.js} +1 -1
  68. package/dist/viewer/{cynefin-OW5HDTMX-nLOUGSf6.js → cynefin-OW5HDTMX-BUe484ye.js} +1 -1
  69. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-BO8dTCaE.js → cynefinDiagram-5FMLGOSQ-CWdVGsBk.js} +1 -1
  70. package/dist/viewer/{da-DK-5WZEPLOC-ClRScj-s.js → da-DK-5WZEPLOC-b4IEozFV.js} +1 -1
  71. package/dist/viewer/{dagre-GXQ25YYZ-DTS_PRYI.js → dagre-GXQ25YYZ-DCuEklTp.js} +1 -1
  72. package/dist/viewer/{de-DE-XR44H4JA-D7v9Ws-w.js → de-DE-XR44H4JA-C7sc34_X.js} +1 -1
  73. package/dist/viewer/{diagram-S7CK7UJ4-5ytAW4Ck.js → diagram-S7CK7UJ4-CsxaHH4I.js} +1 -1
  74. package/dist/viewer/{diagram-UQ7AKVKN-DYUYBUBB.js → diagram-UQ7AKVKN-Ct8242ZE.js} +1 -1
  75. package/dist/viewer/{diagram-VSXAHHWV-DeK669yc.js → diagram-VSXAHHWV-C1nroriz.js} +1 -1
  76. package/dist/viewer/{diagram-VX7I27RA-pvfOXaeo.js → diagram-VX7I27RA-DEWRSmDx.js} +1 -1
  77. package/dist/viewer/{diagram-Z3DM3KII-D1tl_QsD.js → diagram-Z3DM3KII-B1SxmMm9.js} +1 -1
  78. package/dist/viewer/{dist-BPIXPagN.js → dist-1xzhgjrK.js} +1 -1
  79. package/dist/viewer/{dist-CouAAeQX.js → dist-B0ahrRmN.js} +1 -1
  80. package/dist/viewer/{dist-1bnd_vgl.js → dist-B3kJb0_U.js} +1 -1
  81. package/dist/viewer/{dist-Bw9MgUwF.js → dist-B4M9sgR9.js} +1 -1
  82. package/dist/viewer/{dist-BFwe-f96.js → dist-B6-aAGQA.js} +1 -1
  83. package/dist/viewer/{dist-Ly85CnCY.js → dist-B9Rn0Zrs.js} +1 -1
  84. package/dist/viewer/{dist-DVSSZHwn.js → dist-C4zEBXjK.js} +1 -1
  85. package/dist/viewer/{dist-CDJ30uU2.js → dist-C8JtF2VW.js} +1 -1
  86. package/dist/viewer/{dist-CAsi2KZK.js → dist-CA2_d8WP.js} +1 -1
  87. package/dist/viewer/{dist-C_3pdJsj.js → dist-CBB6_G5_.js} +1 -1
  88. package/dist/viewer/{dist-xg9TzjpP.js → dist-CUWoav31.js} +1 -1
  89. package/dist/viewer/{dist-Ck5orTzJ.js → dist-CXasQug3.js} +1 -1
  90. package/dist/viewer/{dist-BYp2eXKg.js → dist-Cse2aOfa.js} +1 -1
  91. package/dist/viewer/{dist-BZ5zojGQ.js → dist-Cy8NldSx.js} +4 -4
  92. package/dist/viewer/{dist-ClgG_XeE.js → dist-D2yfyCbT.js} +1 -1
  93. package/dist/viewer/{dist-BYMCet81.js → dist-DKLouXV5.js} +1 -1
  94. package/dist/viewer/{dist-02K6bLL5.js → dist-DKkW9dU5.js} +1 -1
  95. package/dist/viewer/{dist-BsqIZGjl.js → dist-Ds6VFWTz.js} +1 -1
  96. package/dist/viewer/{dist-Qc2dX3vA.js → dist-VAycv_3i.js} +1 -1
  97. package/dist/viewer/{dist-IUX27npr.js → dist-fyPnRLSz.js} +1 -1
  98. package/dist/viewer/{dist-7B7d5HYf.js → dist-kyCI0GjD.js} +1 -1
  99. package/dist/viewer/{dist-hlfvil5J.js → dist-lH8EGddX.js} +1 -1
  100. package/dist/viewer/{dist-Jn92mbUg.js → dist-rHgXqZ3U.js} +1 -1
  101. package/dist/viewer/{dist-u7ism1gK.js → dist-xKtvXW_M.js} +1 -1
  102. package/dist/viewer/{ebnfDiagram-PWID7BFC-CL1U6Bgh.js → ebnfDiagram-PWID7BFC-BwAXcSMu.js} +1 -1
  103. package/dist/viewer/{el-GR-BZB4AONW-qfDNQt0F.js → el-GR-BZB4AONW-DO8FKq0o.js} +1 -1
  104. package/dist/viewer/{en-B4ZKOASM-DjB7bdQE.js → en-B4ZKOASM-BGb9Jd7F.js} +1 -1
  105. package/dist/viewer/{erDiagram-RLTQ6QDP-C_lYUtOw.js → erDiagram-RLTQ6QDP-BU0oilOu.js} +1 -1
  106. package/dist/viewer/{es-ES-U4NZUMDT-CFw9usvE.js → es-ES-U4NZUMDT-C8my4jC1.js} +1 -1
  107. package/dist/viewer/{eu-ES-A7QVB2H4-4BNzkAsh.js → eu-ES-A7QVB2H4-7y6iA3PQ.js} +1 -1
  108. package/dist/viewer/{eventmodeling-NTZA5JFV-CQBUT8Rf.js → eventmodeling-NTZA5JFV-soHgkZ82.js} +1 -1
  109. package/dist/viewer/{fa-IR-HGAKTJCU-C9i2Nfz_.js → fa-IR-HGAKTJCU-oCdmxr1e.js} +1 -1
  110. package/dist/viewer/{fi-FI-Z5N7JZ37-C8UDB8bk.js → fi-FI-Z5N7JZ37-X3VK0x3c.js} +1 -1
  111. package/dist/viewer/flowDiagram-HODETNUW-A3kbYb0D.js +1 -0
  112. package/dist/viewer/{fr-FR-RHASNOE6-Mc-SCvoh.js → fr-FR-RHASNOE6-zrXrM79-.js} +1 -1
  113. package/dist/viewer/{ganttDiagram-EL5Y4UJY-N-oOcKbq.js → ganttDiagram-EL5Y4UJY-bHjB1qlT.js} +1 -1
  114. package/dist/viewer/{gitGraph-4MIJSDKK-Z6v79k7p.js → gitGraph-4MIJSDKK-CjGC-mW6.js} +1 -1
  115. package/dist/viewer/{gitGraphDiagram-WWUBYQGX-CORAtQJ3.js → gitGraphDiagram-WWUBYQGX-DUqXPpCq.js} +1 -1
  116. package/dist/viewer/{gl-ES-HMX3MZ6V-OfRSBrho.js → gl-ES-HMX3MZ6V-BUnj3HlN.js} +1 -1
  117. package/dist/viewer/{he-IL-6SHJWFNN-CjhadtGW.js → he-IL-6SHJWFNN-281kRBUf.js} +1 -1
  118. package/dist/viewer/{hi-IN-IWLTKZ5I-CYYvph9P.js → hi-IN-IWLTKZ5I-DIuMdRpK.js} +1 -1
  119. package/dist/viewer/{hu-HU-A5ZG7DT2-B6NTEmIC.js → hu-HU-A5ZG7DT2-nmQyfjlR.js} +1 -1
  120. package/dist/viewer/{id-ID-SAP4L64H-B8Xf9sUo.js → id-ID-SAP4L64H-BiViI6m_.js} +1 -1
  121. package/dist/viewer/{image-GAAHSSAO-hDM8yXwe.js → image-GAAHSSAO-yI0Lg6gi.js} +1 -1
  122. package/dist/viewer/index.html +5 -5
  123. package/dist/viewer/index.js +2 -2
  124. package/dist/viewer/index3.css +4 -0
  125. package/dist/viewer/{info-A6RAGUB7-CE-QPkyy.js → info-A6RAGUB7-B0l9mAY4.js} +1 -1
  126. package/dist/viewer/{infoDiagram-27XIBGKW-DrHsUoxu.js → infoDiagram-27XIBGKW-BTxMqmhS.js} +1 -1
  127. package/dist/viewer/{ishikawaDiagram-5VMMS53U-nWj2IsTY.js → ishikawaDiagram-5VMMS53U-BunWcUgG.js} +1 -1
  128. package/dist/viewer/{it-IT-JPQ66NNP-C810Op7y.js → it-IT-JPQ66NNP-DpwQuK5q.js} +1 -1
  129. package/dist/viewer/{ja-JP-DBVTYXUO-DIbcYoJP.js → ja-JP-DBVTYXUO-Dg0jZ4Fr.js} +1 -1
  130. package/dist/viewer/{journeyDiagram-3NMN7TZE-CuKomypa.js → journeyDiagram-3NMN7TZE-CH0mNNME.js} +1 -1
  131. package/dist/viewer/{kaa-6HZHGXH3-cCX5zN8B.js → kaa-6HZHGXH3-Byd9GDLK.js} +1 -1
  132. package/dist/viewer/{kab-KAB-ZGHBKWFO-B-RTmCXO.js → kab-KAB-ZGHBKWFO-a6r59Esz.js} +1 -1
  133. package/dist/viewer/{kanban-definition-UXKFOSKX-CKVuo3k4.js → kanban-definition-UXKFOSKX-Dlxx1p8m.js} +1 -1
  134. package/dist/viewer/{kk-KZ-P5N5QNE5-DYBkhmQl.js → kk-KZ-P5N5QNE5-zq8glNLW.js} +1 -1
  135. package/dist/viewer/{km-KH-HSX4SM5Z-CCxaEuqg.js → km-KH-HSX4SM5Z-BTq35Fiu.js} +1 -1
  136. package/dist/viewer/{ko-KR-MTYHY66A-3m7U3iBI.js → ko-KR-MTYHY66A-DlgDzRH_.js} +1 -1
  137. package/dist/viewer/{ku-TR-6OUDTVRD-X3ikgsVo.js → ku-TR-6OUDTVRD-BVLk13SV.js} +1 -1
  138. package/dist/viewer/{local-split-host-BMRFYq_O.js → local-split-host-xSgjCeui.js} +1 -1
  139. package/dist/viewer/{lt-LT-XHIRWOB4-vvKpbejg.js → lt-LT-XHIRWOB4-6q0TFRDx.js} +1 -1
  140. package/dist/viewer/{lv-LV-5QDEKY6T-BSM4MzKc.js → lv-LV-5QDEKY6T-DxyqknhI.js} +1 -1
  141. package/dist/viewer/{mermaid-parser.core-Bj6JAkmh.js → mermaid-parser.core-Gvb8dIz1.js} +3 -3
  142. package/dist/viewer/{mindmap-definition-YA3MSWOX-CCiNFisT.js → mindmap-definition-YA3MSWOX-DCPYU-48.js} +1 -1
  143. package/dist/viewer/{mr-IN-CRQNXWMA-DXzOwWpa.js → mr-IN-CRQNXWMA-D2tHgrn-.js} +1 -1
  144. package/dist/viewer/{my-MM-5M5IBNSE-Dn_OAz2K.js → my-MM-5M5IBNSE-BYWw8v9n.js} +1 -1
  145. package/dist/viewer/{nb-NO-T6EIAALU-fMPessoz.js → nb-NO-T6EIAALU-K3IdDtSM.js} +1 -1
  146. package/dist/viewer/{nl-NL-IS3SIHDZ-DnTNhgqn.js → nl-NL-IS3SIHDZ-O5S6GhQJ.js} +1 -1
  147. package/dist/viewer/{nn-NO-6E72VCQL-8Yii387T.js → nn-NO-6E72VCQL-CG7rDNE2.js} +1 -1
  148. package/dist/viewer/{oc-FR-POXYY2M6-3ioiiCNK.js → oc-FR-POXYY2M6-DVAwA1YG.js} +1 -1
  149. package/dist/viewer/{pa-IN-N4M65BXN-B4yi3y3p.js → pa-IN-N4M65BXN-BfskjU3c.js} +1 -1
  150. package/dist/viewer/{packet-AYTQ26CC-4dovYoGN.js → packet-AYTQ26CC-V9JOIpxu.js} +1 -1
  151. package/dist/viewer/{parseTrigger-BgQHa_Nx.js → parseTrigger-Bl4n5XXS.js} +1 -1
  152. package/dist/viewer/{pegDiagram-XKGWAZYB-CVV6hVF8.js → pegDiagram-XKGWAZYB-CRwdoRdU.js} +1 -1
  153. package/dist/viewer/percentages-BXMCSKIN-BDV0ZRBe.js +1 -0
  154. package/dist/viewer/{pie-WAS4IAKB-BuHK79R3.js → pie-WAS4IAKB-DD4VdSya.js} +1 -1
  155. package/dist/viewer/{pieDiagram-E7YTZNPT-CEhHpuzY.js → pieDiagram-E7YTZNPT-DtxXj_uG.js} +1 -1
  156. package/dist/viewer/{pl-PL-T2D74RX3-OpiYmyBs.js → pl-PL-T2D74RX3-aSM3OymY.js} +1 -1
  157. package/dist/viewer/preview.html +4 -4
  158. package/dist/viewer/preview.js +1 -1
  159. package/dist/viewer/{prod-D0vYYRO1.js → prod-DT6gDrhK.js} +8 -8
  160. package/dist/viewer/{pt-BR-5N22H2LF-D8F6ooYC.js → pt-BR-5N22H2LF-CoE1Brmo.js} +1 -1
  161. package/dist/viewer/{pt-PT-UZXXM6DQ-D3mGarXo.js → pt-PT-UZXXM6DQ-N4cE4HWd.js} +1 -1
  162. package/dist/viewer/{quadrantDiagram-AXDQQJYC-BeTd5Owh.js → quadrantDiagram-AXDQQJYC-Bp9CaPDI.js} +1 -1
  163. package/dist/viewer/{radar-RG4KPBEZ-Bs5JYSqQ.js → radar-RG4KPBEZ-DjIgW5TK.js} +1 -1
  164. package/dist/viewer/{railroad-74A4TZTK-60ZhIRvO.js → railroad-74A4TZTK-DJXF4Ntz.js} +1 -1
  165. package/dist/viewer/{railroad-abnf-HS5TGJTU-crN_5FSb.js → railroad-abnf-HS5TGJTU-D2uor4gn.js} +1 -1
  166. package/dist/viewer/{railroad-ebnf-LZEXJU2U-Cq5MpEFr.js → railroad-ebnf-LZEXJU2U-d-1EQm0I.js} +1 -1
  167. package/dist/viewer/{railroad-peg-WCYAUIDC-3_b7NLcX.js → railroad-peg-WCYAUIDC-VVFlD8Wt.js} +1 -1
  168. package/dist/viewer/{railroadDiagram-O6MQD6OU-Vy-0n1VR.js → railroadDiagram-O6MQD6OU-DIYzZs3X.js} +1 -1
  169. package/dist/viewer/{ref-DBHRFrMN.js → ref-DeJSmII1.js} +1 -1
  170. package/dist/viewer/{requirementDiagram-BXWQKSXE-3UTyJ8ZV.js → requirementDiagram-BXWQKSXE-BFAS1s1U.js} +1 -1
  171. package/dist/viewer/{ro-RO-JPDTUUEW-ukAakPc_.js → ro-RO-JPDTUUEW-CXL_OLY6.js} +1 -1
  172. package/dist/viewer/{route-Cvbs0pMv.js → route-B-3a8kXR.js} +2 -2
  173. package/dist/viewer/{route-messages-9SZM1864.js → route-messages-D6nsn-yO.js} +1 -1
  174. package/dist/viewer/{ru-RU-B4JR7IUQ-DsKKiTcC.js → ru-RU-B4JR7IUQ-DK0raNaa.js} +1 -1
  175. package/dist/viewer/{sankeyDiagram-P5KCCOFB-DS3TrrxP.js → sankeyDiagram-P5KCCOFB-XkkNzFLA.js} +1 -1
  176. package/dist/viewer/{selection-DuzBGS_K.js → selection-A2L_U7cp.js} +1 -1
  177. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-C-MQ1r66.js → sequenceDiagram-WJ2MYXX4-u1vCwsJu.js} +1 -1
  178. package/dist/viewer/{si-LK-N5RQ5JYF-fd9skMWt.js → si-LK-N5RQ5JYF-C2C_capt.js} +1 -1
  179. package/dist/viewer/{sk-SK-C5VTKIMK-94yPrt-v.js → sk-SK-C5VTKIMK-CAZ_jqda.js} +1 -1
  180. package/dist/viewer/{sl-SI-NN7IZMDC-CXyf9Y_h.js → sl-SI-NN7IZMDC-w4mPw9Qr.js} +1 -1
  181. package/dist/viewer/{split-url-DCXSi810.js → split-url-Ds_SbiRI.js} +1 -1
  182. package/dist/viewer/{stateDiagram-D77RDMKH-uLNLMbA4.js → stateDiagram-D77RDMKH-CNdAB9GQ.js} +1 -1
  183. package/dist/viewer/stateDiagram-v2-MP3YSRHH-LXrhvJQE.js +1 -0
  184. package/dist/viewer/subset-shared.chunk-DR4HOb1q.js +1 -0
  185. package/dist/viewer/{subset-worker.chunk-CCjlZvyE.js → subset-worker.chunk-DWr778aR.js} +1 -1
  186. package/dist/viewer/{sv-SE-XGPEYMSR-DPbLSv0c.js → sv-SE-XGPEYMSR-Cvj4W126.js} +1 -1
  187. package/dist/viewer/{swimlanes-42K2YHIH-y-2hdIuq.js → swimlanes-42K2YHIH-CRWoFAkx.js} +1 -1
  188. package/dist/viewer/swimlanesDiagram-VR7AAH4N-F15yPPv-.js +8 -0
  189. package/dist/viewer/{ta-IN-2NMHFXQM-BK3L3kDX.js → ta-IN-2NMHFXQM-pCSxo0O4.js} +1 -1
  190. package/dist/viewer/{th-TH-HPSO5L25-CFBmFkzs.js → th-TH-HPSO5L25-DA2yXkLO.js} +1 -1
  191. package/dist/viewer/{timeline-definition-24CTP7MA-erBEzv25.js → timeline-definition-24CTP7MA-C7cLrh2M.js} +1 -1
  192. package/dist/viewer/{tr-TR-DEFEU3FU-Cy9-JU8k.js → tr-TR-DEFEU3FU-DSUJUHLi.js} +1 -1
  193. package/dist/viewer/{treeView-Q6P3EWNA-1tNBreej.js → treeView-Q6P3EWNA-CYMsee9z.js} +1 -1
  194. package/dist/viewer/{treemap-WGGIJYW6-DbqYBKFh.js → treemap-WGGIJYW6-BeYAJy3I.js} +1 -1
  195. package/dist/viewer/{uk-UA-QMV73CPH-DwAQPx1c.js → uk-UA-QMV73CPH-CpavbdpO.js} +1 -1
  196. package/dist/viewer/{useAriaLabelledBy-1TFrbqTT.js → useAriaLabelledBy-Ai3baFaJ.js} +1 -1
  197. package/dist/viewer/{useOpenInteractionType-B7ZAWZlS.js → useOpenInteractionType-CFrlkl-M.js} +1 -1
  198. package/dist/viewer/{useTranslation-DczhMFuq.js → useTranslation-BCUMbI5g.js} +1 -1
  199. package/dist/viewer/useTypeFavicon-B4j5zCC6.js +1 -0
  200. package/dist/viewer/{vennDiagram-4TSXK5OY-gxGufpuC.js → vennDiagram-4TSXK5OY-D-TvgzEs.js} +1 -1
  201. package/dist/viewer/{vi-VN-M7AON7JQ-C8FCmKmt.js → vi-VN-M7AON7JQ-149ovaXw.js} +1 -1
  202. package/dist/viewer/{view-CX7yv-Pv.js → view-tN_gu_ot.js} +1 -1
  203. package/dist/viewer/{viewport-CFJHn_Y6-C1jXsfyM.js → viewport-CFJHn_Y6-gOi1FTqq.js} +1 -1
  204. package/dist/viewer/{wardley-WFR3VGLG-BeUHBiNR.js → wardley-WFR3VGLG-Bxei-rkR.js} +1 -1
  205. package/dist/viewer/{wardleyDiagram-VM6X3IG4-BEH6ZNYM.js → wardleyDiagram-VM6X3IG4-Behq92Qv.js} +1 -1
  206. package/dist/viewer/{xychartDiagram-S5SC5T6Z-Sb2wN887.js → xychartDiagram-S5SC5T6Z-WvqgiYkm.js} +1 -1
  207. package/dist/viewer/{zh-CN-LNUGB5OW-CjcOJMLB.js → zh-CN-LNUGB5OW-Bh3vP78p.js} +1 -1
  208. package/dist/viewer/{zh-HK-E62DVLB3-C2ghlkfZ.js → zh-HK-E62DVLB3-DyLx4WST.js} +1 -1
  209. package/dist/viewer/{zh-TW-RAJ6MFWO-CDfhTlX4.js → zh-TW-RAJ6MFWO-CzGpQq8F.js} +1 -1
  210. package/dist/viewer-lib/{Canvas-BSA0o7dK.js → Canvas-D1GKtdWi.js} +3 -3
  211. package/dist/viewer-lib/{PhoneArtboardBar-BAYT7ihY.js → PhoneArtboardBar-Wif7mAXi.js} +2 -2
  212. package/dist/viewer-lib/{PreviewView-C7t7ZIzk.js → PreviewView-96hXi1zy.js} +2 -2
  213. package/dist/viewer-lib/{ReadOnlyWhiteboard-CWflWeSo.js → ReadOnlyWhiteboard-ByJSgs6y.js} +3 -3
  214. package/dist/viewer-lib/{SnapshotDocument-CgnqSKkP.js → SnapshotDocument-boYf3Unu.js} +32 -32
  215. package/dist/viewer-lib/{VirtualizedEditor-D9Ivycdp-CRIrE_5w.js → VirtualizedEditor-D9Ivycdp-C1r2x0pX.js} +2 -2
  216. package/dist/viewer-lib/{VirtualizedRenderer-C_d95FXi-Zicvc4ph.js → VirtualizedRenderer-C_d95FXi-lZgY7VI5.js} +3 -3
  217. package/dist/viewer-lib/{WarningsBadge-D5jWxCxT.js → WarningsBadge-B8dxGKka.js} +1 -1
  218. package/dist/viewer-lib/{agentLook-B23cR9K4.js → agentLook-0GsgKSL-.js} +1 -1
  219. package/dist/viewer-lib/{ar-SA-G6X2FPQ2-Duv5zla_.js → ar-SA-G6X2FPQ2-D01gdPpr.js} +1 -1
  220. package/dist/viewer-lib/{az-AZ-76LH7QW2-BlP0W-O3.js → az-AZ-76LH7QW2-C7w5r7bD.js} +1 -1
  221. package/dist/viewer-lib/{bg-BG-XCXSNQG7-8U63f6nC.js → bg-BG-XCXSNQG7-p2Qatdni.js} +1 -1
  222. package/dist/viewer-lib/{bn-BD-2XOGV67Q-C-NXsQHr.js → bn-BD-2XOGV67Q-DtnIWXwT.js} +1 -1
  223. package/dist/viewer-lib/{ca-ES-6MX7JW3Y-CRMSXAX-.js → ca-ES-6MX7JW3Y-BY9zZN7o.js} +1 -1
  224. package/dist/viewer-lib/{chunk-EIO257PC-Bn-GD-Zt.js → chunk-EIO257PC-Dn7JUPD8.js} +1 -1
  225. package/dist/viewer-lib/core.js +3 -3
  226. package/dist/viewer-lib/{cs-CZ-2BRQDIVT-Dz9S_d4x.js → cs-CZ-2BRQDIVT-BzjoZdth.js} +1 -1
  227. package/dist/viewer-lib/{da-DK-5WZEPLOC-CHcNiE6q.js → da-DK-5WZEPLOC-TDV970j5.js} +1 -1
  228. package/dist/viewer-lib/{de-DE-XR44H4JA-NcoEL-P8.js → de-DE-XR44H4JA-BjyTyKoM.js} +1 -1
  229. package/dist/viewer-lib/{dist-DADVpqjr.js → dist-BEz688xk.js} +3 -3
  230. package/dist/viewer-lib/{dist-C773LAGa.js → dist-BSFDUw8i.js} +2 -2
  231. package/dist/viewer-lib/{dist-Bs3YnXsj.js → dist-BTCqhvAf.js} +4 -4
  232. package/dist/viewer-lib/{dist-DQ73SSla.js → dist-C38vNQIH.js} +1 -1
  233. package/dist/viewer-lib/{dist-CQMnJ128.js → dist-C60FpC9e.js} +1 -1
  234. package/dist/viewer-lib/{dist-DaIYYQw6.js → dist-CBjyw6zC.js} +2 -2
  235. package/dist/viewer-lib/{dist-CjjfbMFL.js → dist-CMWQEa97.js} +3 -3
  236. package/dist/viewer-lib/{dist-DyGv52rq.js → dist-CPnB9yKQ.js} +3 -3
  237. package/dist/viewer-lib/{dist-BmR1ILj9.js → dist-Cfk5Y4QC.js} +2 -2
  238. package/dist/viewer-lib/{dist-BUAaHyRl.js → dist-CgQmu9ki.js} +3 -3
  239. package/dist/viewer-lib/{dist-BTwBk5SA.js → dist-Cr_rgBD9.js} +3 -3
  240. package/dist/viewer-lib/{dist-BQdzYH0T.js → dist-D36o7D7T.js} +2 -2
  241. package/dist/viewer-lib/{dist-DthLTMm5.js → dist-D778PgeW.js} +2 -2
  242. package/dist/viewer-lib/{dist-CkvV3vBQ.js → dist-D9IzrveE.js} +2 -2
  243. package/dist/viewer-lib/{dist-BeRdUOTO.js → dist-DHEOl2TN.js} +2 -2
  244. package/dist/viewer-lib/{dist-PFn-QQ_s.js → dist-DK1Yi8I4.js} +4 -4
  245. package/dist/viewer-lib/{dist-5GpEJ-bH.js → dist-DULdzKdC.js} +3 -3
  246. package/dist/viewer-lib/{dist-BUPma0-6.js → dist-DYd0_e2w.js} +2 -2
  247. package/dist/viewer-lib/{dist-CpOPVqpt.js → dist-FVtL0y1F.js} +3 -3
  248. package/dist/viewer-lib/{dist-Dh-J-Rgq.js → dist-bPGj_tUd.js} +4 -4
  249. package/dist/viewer-lib/{dist-DjolX4i2.js → dist-qS7iA2eX.js} +3 -3
  250. package/dist/viewer-lib/{dist-lX8KxHAX.js → dist-vd2-brQn.js} +3 -3
  251. package/dist/viewer-lib/{dist-Bnu-2VVl.js → dist-xJDwc_X3.js} +3 -3
  252. package/dist/viewer-lib/document.js +7 -7
  253. package/dist/viewer-lib/{el-GR-BZB4AONW-Ckitl9ll.js → el-GR-BZB4AONW-Be_WFnxM.js} +1 -1
  254. package/dist/viewer-lib/{en-B4ZKOASM-DDOXe6SM.js → en-B4ZKOASM-CqCyVRMQ.js} +1 -1
  255. package/dist/viewer-lib/{es-ES-U4NZUMDT-D5Il9sGa.js → es-ES-U4NZUMDT-BbunaFz5.js} +1 -1
  256. package/dist/viewer-lib/{eu-ES-A7QVB2H4-DzVr94jH.js → eu-ES-A7QVB2H4-CiDfJl0F.js} +1 -1
  257. package/dist/viewer-lib/{fa-IR-HGAKTJCU-j4IP_Edo.js → fa-IR-HGAKTJCU-CLdHVNrd.js} +1 -1
  258. package/dist/viewer-lib/{fi-FI-Z5N7JZ37-B0DDhQ1Z.js → fi-FI-Z5N7JZ37-AInwUM2B.js} +1 -1
  259. package/dist/viewer-lib/{fr-FR-RHASNOE6-DWknbOF7.js → fr-FR-RHASNOE6-5qcE-nn9.js} +1 -1
  260. package/dist/viewer-lib/{gl-ES-HMX3MZ6V-shg10h_v.js → gl-ES-HMX3MZ6V-C_hmLe5L.js} +1 -1
  261. package/dist/viewer-lib/{he-IL-6SHJWFNN-Ed04ekIs.js → he-IL-6SHJWFNN-Bs4SMN5Y.js} +1 -1
  262. package/dist/viewer-lib/{hi-IN-IWLTKZ5I-DjdOFRmR.js → hi-IN-IWLTKZ5I-CHsG_prh.js} +1 -1
  263. package/dist/viewer-lib/{hu-HU-A5ZG7DT2-n8QpqZ4Z.js → hu-HU-A5ZG7DT2-BpNCnfmz.js} +1 -1
  264. package/dist/viewer-lib/{i18n-CqqLJ6Bn.js → i18n-Bl255uFG.js} +48 -0
  265. package/dist/viewer-lib/{id-ID-SAP4L64H-s-M00021.js → id-ID-SAP4L64H-B18MP3TV.js} +1 -1
  266. package/dist/viewer-lib/{image-GAAHSSAO-BJML0bqE.js → image-GAAHSSAO-DVKnh1wc.js} +1 -1
  267. package/dist/viewer-lib/index.js +3376 -2926
  268. package/dist/viewer-lib/{it-IT-JPQ66NNP-CDsG32dJ.js → it-IT-JPQ66NNP-BH98nLgr.js} +1 -1
  269. package/dist/viewer-lib/{ja-JP-DBVTYXUO-DbxhxSyk.js → ja-JP-DBVTYXUO-DA2fExJg.js} +1 -1
  270. package/dist/viewer-lib/{kaa-6HZHGXH3-DJomTlzL.js → kaa-6HZHGXH3-C-82oNQ2.js} +1 -1
  271. package/dist/viewer-lib/{kab-KAB-ZGHBKWFO-CI0oP3Bj.js → kab-KAB-ZGHBKWFO-CsOeYyyg.js} +1 -1
  272. package/dist/viewer-lib/{kk-KZ-P5N5QNE5-7CjRJsra.js → kk-KZ-P5N5QNE5-C5vZz2mB.js} +1 -1
  273. package/dist/viewer-lib/{km-KH-HSX4SM5Z-CoNkwzsI.js → km-KH-HSX4SM5Z-Ds8sNL7U.js} +1 -1
  274. package/dist/viewer-lib/{ko-KR-MTYHY66A-DFQinSan.js → ko-KR-MTYHY66A-BgSaRncC.js} +1 -1
  275. package/dist/viewer-lib/{ku-TR-6OUDTVRD-bVcYOoDk.js → ku-TR-6OUDTVRD-DahxJWf5.js} +1 -1
  276. package/dist/viewer-lib/{lib-CoXZilpj.js → lib-HJ5naU7F.js} +1 -1
  277. package/dist/viewer-lib/{lt-LT-XHIRWOB4-BIsiqKj8.js → lt-LT-XHIRWOB4-BvJ2fjcP.js} +1 -1
  278. package/dist/viewer-lib/{lv-LV-5QDEKY6T-CPC7ylaV.js → lv-LV-5QDEKY6T-CfcDbPw2.js} +1 -1
  279. package/dist/viewer-lib/{mr-IN-CRQNXWMA-CiY-592d.js → mr-IN-CRQNXWMA-C8OfBL2I.js} +1 -1
  280. package/dist/viewer-lib/{my-MM-5M5IBNSE-CqJsVoJu.js → my-MM-5M5IBNSE-BUCYgqBD.js} +1 -1
  281. package/dist/viewer-lib/{nb-NO-T6EIAALU-BBLgzHfY.js → nb-NO-T6EIAALU-BhVURg4a.js} +1 -1
  282. package/dist/viewer-lib/{nl-NL-IS3SIHDZ-vencjWhM.js → nl-NL-IS3SIHDZ-C5NGTrjU.js} +1 -1
  283. package/dist/viewer-lib/{nn-NO-6E72VCQL-BWHOGPEl.js → nn-NO-6E72VCQL-CIOwp8RU.js} +1 -1
  284. package/dist/viewer-lib/{oc-FR-POXYY2M6-BYL_PQLS.js → oc-FR-POXYY2M6-Da6SyINm.js} +1 -1
  285. package/dist/viewer-lib/{pa-IN-N4M65BXN-Cv4ZB-QP.js → pa-IN-N4M65BXN-tDTX0nfg.js} +1 -1
  286. package/dist/viewer-lib/percentages-BXMCSKIN-Cvdo4-KV.js +1 -0
  287. package/dist/viewer-lib/{pl-PL-T2D74RX3-2YdY7WUN.js → pl-PL-T2D74RX3-dj1Dwz0C.js} +1 -1
  288. package/dist/viewer-lib/{plugin-_bGVeqI0-DaWymUTi.js → plugin-_bGVeqI0-D3iBrFnz.js} +1 -1
  289. package/dist/viewer-lib/{prod-BrZ_Nr0-.js → prod-B7QWq4m3.js} +59 -59
  290. package/dist/viewer-lib/{pt-BR-5N22H2LF-BgPsrxRG.js → pt-BR-5N22H2LF-BL2Y-MuR.js} +1 -1
  291. package/dist/viewer-lib/{pt-PT-UZXXM6DQ-4FPiYyES.js → pt-PT-UZXXM6DQ-BjYJ2Wd6.js} +1 -1
  292. package/dist/viewer-lib/{ro-RO-JPDTUUEW-BwoX9h84.js → ro-RO-JPDTUUEW-D-wh7Qsh.js} +1 -1
  293. package/dist/viewer-lib/{route-messages-CqMvUkfR.js → route-messages-Cd_S7ERg.js} +2 -2
  294. package/dist/viewer-lib/{ru-RU-B4JR7IUQ-Bd9s4exj.js → ru-RU-B4JR7IUQ-Vqbdm2HB.js} +1 -1
  295. package/dist/viewer-lib/{si-LK-N5RQ5JYF-COjPyEJf.js → si-LK-N5RQ5JYF-FWjQj7wM.js} +1 -1
  296. package/dist/viewer-lib/{sk-SK-C5VTKIMK-DY61Iqus.js → sk-SK-C5VTKIMK-CPdKjgc0.js} +1 -1
  297. package/dist/viewer-lib/{sl-SI-NN7IZMDC-CoLAIrA-.js → sl-SI-NN7IZMDC-Cfsizmp1.js} +1 -1
  298. package/dist/viewer-lib/{stylex-B2Kji6ve.css → stylex-H52XSOyN.css} +4 -0
  299. package/dist/viewer-lib/subset-shared.chunk-C7qUh7WH.js +2 -0
  300. package/dist/viewer-lib/{subset-worker.chunk-1lo51MmF.js → subset-worker.chunk-ockc4DfZ.js} +2 -2
  301. package/dist/viewer-lib/{sv-SE-XGPEYMSR-DghaMqt3.js → sv-SE-XGPEYMSR-CkNdCBoc.js} +1 -1
  302. package/dist/viewer-lib/{ta-IN-2NMHFXQM-GfsHy3fq.js → ta-IN-2NMHFXQM-Cqhx65Sb.js} +1 -1
  303. package/dist/viewer-lib/{th-TH-HPSO5L25-Dp7xyi9G.js → th-TH-HPSO5L25-Cz6Qzk1K.js} +1 -1
  304. package/dist/viewer-lib/{tr-TR-DEFEU3FU-BaJOrAUy.js → tr-TR-DEFEU3FU-CCCN9YIS.js} +1 -1
  305. package/dist/viewer-lib/types/src/shared/referrers.d.ts +36 -0
  306. package/dist/viewer-lib/types/src/viewer/components/BesideCard.d.ts +17 -0
  307. package/dist/viewer-lib/types/src/viewer/components/ReferrerList.d.ts +14 -0
  308. package/dist/viewer-lib/types/src/viewer/components/SharePanel.d.ts +5 -1
  309. package/dist/viewer-lib/types/src/viewer/components/beside-state.d.ts +3 -0
  310. package/dist/viewer-lib/types/src/viewer/components/cascade-styles.d.ts +128 -0
  311. package/dist/viewer-lib/types/src/viewer/library/index.d.ts +6 -1
  312. package/dist/viewer-lib/types/src/viewer/split/SplitShell.d.ts +3 -1
  313. package/dist/viewer-lib/types/src/viewer/split/messages.d.ts +8 -1
  314. package/dist/viewer-lib/types/src/viewer/split/useSplitRoles.d.ts +6 -0
  315. package/dist/viewer-lib/{uk-UA-QMV73CPH-Dg_TFHUA.js → uk-UA-QMV73CPH-CP4wZTK4.js} +1 -1
  316. package/dist/viewer-lib/{vi-VN-M7AON7JQ-BbasR-kZ.js → vi-VN-M7AON7JQ-DQsgQGd7.js} +1 -1
  317. package/dist/viewer-lib/{viewport-CFJHn_Y6-rsrJTmFz.js → viewport-CFJHn_Y6-LGEa8Vm0.js} +1 -1
  318. package/dist/viewer-lib/{zh-CN-LNUGB5OW-DP1552am.js → zh-CN-LNUGB5OW-Cp6CD9iP.js} +1 -1
  319. package/dist/viewer-lib/{zh-HK-E62DVLB3-DMsDsoF6.js → zh-HK-E62DVLB3-B_z5KWS4.js} +1 -1
  320. package/dist/viewer-lib/{zh-TW-RAJ6MFWO-D1mbuuHb.js → zh-TW-RAJ6MFWO-BgUsVK92.js} +1 -1
  321. package/package.json +1 -1
  322. package/dist/viewer/DocumentLayout-BkpeuOpb.js +0 -2
  323. package/dist/viewer/DocumentPage-BqQXaW4l.js +0 -4
  324. package/dist/viewer/SplitShell-B8aI0YSC.js +0 -1
  325. package/dist/viewer/TooltipPopup-DZRCQVrx.js +0 -1
  326. package/dist/viewer/channel-DB143Xik.js +0 -1
  327. package/dist/viewer/classDiagram-ZZMXUADV-DmJptHUP.js +0 -1
  328. package/dist/viewer/classDiagram-v2-VYDZK3BY-DmJptHUP.js +0 -1
  329. package/dist/viewer/flowDiagram-HODETNUW-CV4rxiFw.js +0 -1
  330. package/dist/viewer/percentages-BXMCSKIN-DdTdqxCn.js +0 -1
  331. package/dist/viewer/stateDiagram-v2-MP3YSRHH-4X9ufUCL.js +0 -1
  332. package/dist/viewer/subset-shared.chunk-ByQ-gvtV.js +0 -1
  333. package/dist/viewer/swimlanesDiagram-VR7AAH4N-BThkkUgr.js +0 -8
  334. package/dist/viewer/useTypeFavicon-fHGk7fhQ.js +0 -1
  335. package/dist/viewer-lib/percentages-BXMCSKIN-BdIkw9ta.js +0 -1
  336. package/dist/viewer-lib/subset-shared.chunk-BT3koTww.js +0 -2
package/dist/server.cjs CHANGED
@@ -48383,7 +48383,7 @@ var import_node_os2 = __toESM(require("node:os"), 1);
48383
48383
  var import_node_path42 = __toESM(require("node:path"), 1);
48384
48384
 
48385
48385
  // package.json
48386
- var version = "1.67.0";
48386
+ var version = "1.68.0";
48387
48387
 
48388
48388
  // src/server/browser-focus.ts
48389
48389
  var import_node_child_process = require("node:child_process");
@@ -50270,10 +50270,10 @@ function blocksOf(diff) {
50270
50270
  }
50271
50271
  function countStates(items) {
50272
50272
  const summary = /* @__PURE__ */ new Map();
50273
- for (const item2 of items) {
50274
- const status = item2.kind === "choose" ? item2.choice ? "chosen" : "empty" : String(item2.state ?? item2.verdict ?? item2.status ?? "unknown");
50273
+ for (const item3 of items) {
50274
+ const status = item3.kind === "choose" ? item3.choice ? "chosen" : "empty" : String(item3.state ?? item3.verdict ?? item3.status ?? "unknown");
50275
50275
  summary.set(status, (summary.get(status) ?? 0) + 1);
50276
- if (item2.waitingOn === "agent")
50276
+ if (item3.waitingOn === "agent")
50277
50277
  summary.set("waitingOnAgent", (summary.get("waitingOnAgent") ?? 0) + 1);
50278
50278
  }
50279
50279
  return Object.fromEntries(summary);
@@ -50391,7 +50391,7 @@ function createAgentReview(stateDir, options2 = {}) {
50391
50391
  throw new ReviewError("E_ARGUMENT_INVALID", "limit must be between 1 and 100.");
50392
50392
  let values = snap.value.items ?? [];
50393
50393
  if (input.thread) {
50394
- values = values.filter((item2) => item2.id === input.thread);
50394
+ values = values.filter((item3) => item3.id === input.thread);
50395
50395
  if (!values.length)
50396
50396
  throw new ReviewError("E_THREAD_NOT_FOUND", "Thread not found in this snapshot.", 404);
50397
50397
  }
@@ -50404,12 +50404,12 @@ function createAgentReview(stateDir, options2 = {}) {
50404
50404
  }) : null;
50405
50405
  let receipt;
50406
50406
  if (detail && !input.all && !snap.value.all && !input.fields && snap.value.kind === "threads" && selected.length) {
50407
- const tokens = selected.flatMap((item2) => snap.value.tokens?.[String(item2.id)] ?? []);
50407
+ const tokens = selected.flatMap((item3) => snap.value.tokens?.[String(item3.id)] ?? []);
50408
50408
  if (tokens.length) receipt = lease("receipt", input, { kind: "threads", tokens });
50409
50409
  }
50410
- const materialized = selected.map((item2) => {
50411
- if (detail || snap.value.kind !== "threads") return item2;
50412
- const thread = item2;
50410
+ const materialized = selected.map((item3) => {
50411
+ if (detail || snap.value.kind !== "threads") return item3;
50412
+ const thread = item3;
50413
50413
  const messages = thread.messages.filter((message2) => !message2.deleted);
50414
50414
  const last = messages.filter((message2) => message2.author === "human").at(-1) ?? messages.at(-1);
50415
50415
  return {
@@ -50417,10 +50417,10 @@ function createAgentReview(stateDir, options2 = {}) {
50417
50417
  status: thread.status,
50418
50418
  waitingOn: waitingOn(thread),
50419
50419
  anchor: thread.anchor,
50420
- stale: item2.stale ?? false,
50421
- ...item2.orphan === true ? { orphan: true } : {},
50422
- ...item2.draft === true ? { draft: true } : {},
50423
- ...typeof item2.page === "string" ? { page: item2.page } : {},
50420
+ stale: item3.stale ?? false,
50421
+ ...item3.orphan === true ? { orphan: true } : {},
50422
+ ...item3.draft === true ? { draft: true } : {},
50423
+ ...typeof item3.page === "string" ? { page: item3.page } : {},
50424
50424
  preview: preview(
50425
50425
  last?.text ?? (thread.messages.some((message2) => message2.deleted) ? "[deleted]" : "")
50426
50426
  ),
@@ -50430,8 +50430,8 @@ function createAgentReview(stateDir, options2 = {}) {
50430
50430
  });
50431
50431
  const required = snap.value.kind === "changes" ? ["id"] : requiredReviewFields[snap.value.kind];
50432
50432
  const items = input.fields ? materialized.map(
50433
- (item2) => Object.fromEntries(
50434
- Object.entries(item2).filter(
50433
+ (item3) => Object.fromEntries(
50434
+ Object.entries(item3).filter(
50435
50435
  ([key2]) => input.fields.includes(key2) || required.includes(key2)
50436
50436
  )
50437
50437
  )
@@ -50480,7 +50480,7 @@ function createAgentReview(stateDir, options2 = {}) {
50480
50480
  const snap = snapshot2(input, input.section, () => ({
50481
50481
  counts: countStates(input.items),
50482
50482
  items: input.items.filter(
50483
- (item2) => keep(item2) && (!input.filters?.status || item2.state === input.filters.status || item2.verdict === input.filters.status) && (!input.filters?.kind || item2.kind === input.filters.kind) && (!input.filters?.choiceState || (input.filters.choiceState === "chosen" ? !!item2.choice : !item2.choice))
50483
+ (item3) => keep(item3) && (!input.filters?.status || item3.state === input.filters.status || item3.verdict === input.filters.status) && (!input.filters?.kind || item3.kind === input.filters.kind) && (!input.filters?.choiceState || (input.filters.choiceState === "chosen" ? !!item3.choice : !item3.choice))
50484
50484
  )
50485
50485
  }));
50486
50486
  return page(input, snap, !!input.detail);
@@ -50522,7 +50522,7 @@ function createAgentReview(stateDir, options2 = {}) {
50522
50522
  { ...snap, value: { ...snap.value, items: blocks.map((block) => ({ ...block })) } },
50523
50523
  false
50524
50524
  );
50525
- const selected = summary ? new Set(summary.items.map((item2) => item2.id)) : void 0;
50525
+ const selected = summary ? new Set(summary.items.map((item3) => item3.id)) : void 0;
50526
50526
  let receipt;
50527
50527
  if (input.detail && !input.all && !snap.value.all && !input.fields && !snap.value.empty)
50528
50528
  receipt = lease("receipt", input, { kind: "changes", to: snap.value.to });
@@ -51861,6 +51861,17 @@ function referencesOf(root, key2) {
51861
51861
  return !!each && resolveArtifactDir(root, each.type, each.id) !== null;
51862
51862
  });
51863
51863
  }
51864
+ function referrersOf(root, key2) {
51865
+ const found = [];
51866
+ for (const each of listArtifacts(root).artifacts) {
51867
+ const extract = REFERENCES_OF[each.type];
51868
+ const from = `${each.type}/${each.id}`;
51869
+ if (!extract || from === key2) continue;
51870
+ const uses = extract(each.dir).filter((target) => target === key2).length;
51871
+ if (uses > 0) found.push({ key: from, uses });
51872
+ }
51873
+ return found.sort((a5, b6) => a5.key.localeCompare(b6.key));
51874
+ }
51864
51875
 
51865
51876
  // src/server/cloud.ts
51866
51877
  var import_node_crypto10 = __toESM(require("node:crypto"), 1);
@@ -51918,38 +51929,38 @@ async function buildCascade(root, visibility, deps) {
51918
51929
  return resolveSelection([...items.values()], {}, root);
51919
51930
  }
51920
51931
  function resolveSelection(items, overrides, root) {
51921
- const byKey = new Map(items.map((item2) => [item2.artifact, item2]));
51922
- const wanted = (item2) => ACTIONABLE.includes(item2.state) && (overrides[item2.artifact] ?? CHECKED_BY_DEFAULT.includes(item2.state));
51932
+ const byKey = new Map(items.map((item3) => [item3.artifact, item3]));
51933
+ const wanted = (item3) => ACTIONABLE.includes(item3.state) && (overrides[item3.artifact] ?? CHECKED_BY_DEFAULT.includes(item3.state));
51923
51934
  const isRoot = (key2) => root ? key2 === root : !byKey.has(key2);
51924
51935
  const reachable = /* @__PURE__ */ new Set();
51925
51936
  const opens = (key2) => {
51926
51937
  if (isRoot(key2)) return true;
51927
- const item2 = byKey.get(key2);
51928
- return !!item2 && reachable.has(key2) && (item2.open || wanted(item2));
51938
+ const item3 = byKey.get(key2);
51939
+ return !!item3 && reachable.has(key2) && (item3.open || wanted(item3));
51929
51940
  };
51930
51941
  for (let changed = true; changed; ) {
51931
51942
  changed = false;
51932
- for (const item2 of items) {
51933
- if (reachable.has(item2.artifact) || !item2.parents.some(opens)) continue;
51934
- reachable.add(item2.artifact);
51943
+ for (const item3 of items) {
51944
+ if (reachable.has(item3.artifact) || !item3.parents.some(opens)) continue;
51945
+ reachable.add(item3.artifact);
51935
51946
  changed = true;
51936
51947
  }
51937
51948
  }
51938
- return items.map((item2) => {
51939
- const { reason: _reason, upstream: _upstream, ...rest } = item2;
51940
- const reason = item2.state === "blocked" ? item2.blocked : void 0;
51941
- if (!reachable.has(item2.artifact))
51949
+ return items.map((item3) => {
51950
+ const { reason: _reason, upstream: _upstream, ...rest } = item3;
51951
+ const reason = item3.state === "blocked" ? item3.blocked : void 0;
51952
+ if (!reachable.has(item3.artifact))
51942
51953
  return {
51943
51954
  ...rest,
51944
51955
  checked: false,
51945
51956
  selectable: false,
51946
51957
  reason: "upstream",
51947
- upstream: item2.via ?? item2.parents[0]
51958
+ upstream: item3.via ?? item3.parents[0]
51948
51959
  };
51949
51960
  return {
51950
51961
  ...rest,
51951
- checked: wanted(item2),
51952
- selectable: ACTIONABLE.includes(item2.state),
51962
+ checked: wanted(item3),
51963
+ selectable: ACTIONABLE.includes(item3.state),
51953
51964
  ...reason ? { reason } : {}
51954
51965
  };
51955
51966
  });
@@ -51975,6 +51986,53 @@ function cloudErrorDetails(value) {
51975
51986
  return details;
51976
51987
  }
51977
51988
 
51989
+ // src/shared/referrers.ts
51990
+ var SELECTABLE = ["private", "unpublished", "unlinked"];
51991
+ var item = (base) => ({
51992
+ ...base,
51993
+ selectable: SELECTABLE.includes(base.state),
51994
+ checked: false
51995
+ });
51996
+ function localState(status, cloudKnown) {
51997
+ if (!status.published) {
51998
+ if (status.withdrawn) return { state: "withdrawn" };
51999
+ if (status.blocked) return { state: "blocked", reason: status.blocked };
52000
+ return { state: "unpublished" };
52001
+ }
52002
+ const isPrivate = status.visibility === "private";
52003
+ if (!cloudKnown) return { state: isPrivate ? "private" : "ready" };
52004
+ return isPrivate ? { state: "private", needsUpdate: true } : { state: "unlinked" };
52005
+ }
52006
+ function mergeReferrers({
52007
+ cloud,
52008
+ local
52009
+ }) {
52010
+ const byCloudId = new Map(
52011
+ local.filter((each) => each.cloudId).map((each) => [each.cloudId, each])
52012
+ );
52013
+ const fromCloud = (cloud ?? []).map((each) => {
52014
+ const match = byCloudId.get(each.cloudId);
52015
+ return item({
52016
+ artifact: match?.key ?? `cloud:${each.cloudId}`,
52017
+ cloudId: each.cloudId,
52018
+ title: match?.status.title ?? each.title,
52019
+ uses: each.uses,
52020
+ state: each.visibility === "private" ? "private" : "ready"
52021
+ });
52022
+ });
52023
+ const known = new Set((cloud ?? []).map((each) => each.cloudId));
52024
+ const fromLocal = local.filter((each) => !each.cloudId || !known.has(each.cloudId)).map(
52025
+ (each) => item({
52026
+ artifact: each.key,
52027
+ cloudId: each.cloudId,
52028
+ title: each.status.title,
52029
+ uses: each.uses,
52030
+ ...localState(each.status, cloud !== null)
52031
+ })
52032
+ );
52033
+ return [...fromCloud, ...fromLocal];
52034
+ }
52035
+
51978
52036
  // src/shared/brand.ts
51979
52037
  var RYUGI_MARK_VIEWBOX = "0 0 512 512";
51980
52038
  var RYUGI_MARK_BODY = '<g transform="translate(82 136.317460) scale(0.613756614)"><g transform="translate(0.000000,390.000000) scale(0.100000,-0.100000)" stroke="none"><path d="M4945 3889 c-339 -44 -682 -239 -905 -517 -139 -172 -232 -355 -365 -717 -136 -368 -285 -735 -360 -890 -219 -449 -524 -768 -849 -887 -121 -44 -215 -60 -356 -60 -162 0 -244 18 -450 97 -291 111 -420 144 -650 166 -257 24 -637 -19 -772 -87 -148 -75 -249 -247 -235 -399 19 -197 186 -344 392 -346 40 -1 127 11 205 27 115 23 160 28 300 28 242 1 372 -29 671 -155 226 -95 467 -149 662 -149 252 0 548 74 789 197 394 201 708 521 988 1008 83 144 271 529 405 830 220 493 300 632 436 759 121 112 226 162 424 201 44 9 108 29 143 45 165 77 274 285 244 467 -31 188 -168 334 -354 378 -70 16 -249 18 -363 4z M765 3139 c-202 -11 -415 -48 -497 -86 -91 -44 -151 -101 -193 -186 -123 -248 31 -525 307 -554 38 -4 99 3 204 23 137 27 167 29 384 29 205 0 249 -3 347 -23 225 -45 387 -106 658 -247 182 -94 308 -144 463 -182 138 -35 350 -39 447 -9 174 53 275 152 305 299 26 130 -40 267 -158 323 -52 25 -72 28 -227 35 -248 11 -328 37 -576 187 -232 140 -384 213 -585 281 -283 95 -541 127 -879 110z M620 2104 c-273 -32 -384 -65 -471 -143 -235 -208 -136 -589 172 -660 68 -16 129 -13 272 14 400 73 702 31 1167 -163 239 -99 350 -125 535 -125 193 0 338 51 448 157 117 113 139 261 56 375 -50 69 -99 85 -294 92 -245 10 -332 35 -563 163 -224 123 -456 211 -693 262 -111 23 -149 26 -359 29 -129 2 -251 1 -270 -1z"/></g></g>';
@@ -52222,7 +52280,7 @@ footer { display: flex; align-items: center; gap: 8px; margin-top: 28px; font-si
52222
52280
  h1 { margin-top: 16px; font-size: 26px; line-height: 1.22; }
52223
52281
  }
52224
52282
  `;
52225
- var item = (lead, title, detail) => `<li>${lead}<div><b>${title}</b><span>${detail}</span></div></li>`;
52283
+ var item2 = (lead, title, detail) => `<li>${lead}<div><b>${title}</b><span>${detail}</span></div></li>`;
52226
52284
  var autoPublishCard = (t7, on6, ticket) => `<section class="card auto"><form method="post" action="/api/cloud/callback/auto-publish">
52227
52285
  <input type="hidden" name="ticket" value="${escapeHtml(ticket)}">
52228
52286
  <span class="text"><b>${on6 ? t7("callback.autoPublishOn") : t7("callback.autoPublishOff")}</b><span>${t7("callback.autoPublishDetail")}</span></span>
@@ -52233,13 +52291,13 @@ var signedInBody = (t7, result) => `<p class="pill">${CIRCLE_CHECK}${t7("callbac
52233
52291
  <p class="lead">${t7("callback.lead")}</p>
52234
52292
  ${autoPublishCard(t7, result.autoPublish, result.ticket)}
52235
52293
  <p class="label">${t7("callback.whatNext")}</p>
52236
- <ul class="card">${item(`<span class="icon">${PANEL}</span>`, t7("callback.fromPage"), t7("callback.fromPageDetail"))}${item(`<span class="icon">${TERMINAL}</span>`, t7("callback.fromAgent"), t7("callback.fromAgentDetail"))}</ul>
52294
+ <ul class="card">${item2(`<span class="icon">${PANEL}</span>`, t7("callback.fromPage"), t7("callback.fromPageDetail"))}${item2(`<span class="icon">${TERMINAL}</span>`, t7("callback.fromAgent"), t7("callback.fromAgentDetail"))}</ul>
52237
52295
  <footer>${CHECK}<span>${t7("callback.closeOk")}</span></footer>`;
52238
52296
  var failedBody = (t7, result) => `<p class="pill">${CIRCLE_ALERT}${t7("callback.notConnected")}</p>
52239
52297
  <h1>${t7("callback.titleFailed")}</h1>
52240
52298
  <p class="lead">${escapeHtml(result.detail)}</p>
52241
52299
  <p class="label">${t7("callback.toTryAgain")}</p>
52242
- <ol class="card">${item('<span class="step">1</span>', t7("callback.stepBack"), t7("callback.stepBackDetail"))}${item('<span class="step">2</span>', t7("callback.stepSignIn"), t7("callback.stepSignInDetail"))}</ol>
52300
+ <ol class="card">${item2('<span class="step">1</span>', t7("callback.stepBack"), t7("callback.stepBackDetail"))}${item2('<span class="step">2</span>', t7("callback.stepSignIn"), t7("callback.stepSignInDetail"))}</ol>
52243
52301
  <details><summary>${t7("callback.otherReasons")}</summary><ul><li>${t7("callback.reasonUnreachable")}</li><li>${t7("callback.reasonRefused")}</li></ul></details>
52244
52302
  <footer><span>${t7("callback.closeFailed")}</span></footer>`;
52245
52303
  function callbackPage(result, locale = "en") {
@@ -52502,8 +52560,8 @@ function parseScene(text5, file = "scene.excalidraw") {
52502
52560
  const elements = body.elements ?? [];
52503
52561
  if (!Array.isArray(elements)) return { error: `${file}: elements must be an array` };
52504
52562
  for (const [index, element] of elements.entries()) {
52505
- const item2 = record(element);
52506
- if (typeof item2.id !== "string" || typeof item2.type !== "string")
52563
+ const item3 = record(element);
52564
+ if (typeof item3.id !== "string" || typeof item3.type !== "string")
52507
52565
  return { error: `${file}: element ${index} needs a string id and type` };
52508
52566
  }
52509
52567
  return {
@@ -53866,17 +53924,17 @@ function escapeXml(text5) {
53866
53924
  function buildAttrs(attrs) {
53867
53925
  return Object.entries(attrs).filter(([, v6]) => v6 !== void 0 && v6 !== "").map(([k4, v6]) => ` ${k4}="${escapeXml(v6)}"`).join("");
53868
53926
  }
53869
- function isCdata(item2) {
53870
- return typeof item2 === "object" && "cdata" in item2;
53927
+ function isCdata(item3) {
53928
+ return typeof item3 === "object" && "cdata" in item3;
53871
53929
  }
53872
- function renderCdata(item2) {
53873
- return `<![CDATA[${item2.cdata}]]>`;
53930
+ function renderCdata(item3) {
53931
+ return `<![CDATA[${item3.cdata}]]>`;
53874
53932
  }
53875
53933
  function renderXml(content, indent = 0, options2 = {}) {
53876
53934
  const lines = [];
53877
- for (const item2 of content) if (typeof item2 === "string") lines.push(escapeXml(item2));
53878
- else if (isCdata(item2)) lines.push(renderCdata(item2));
53879
- else lines.push(renderElement(item2, indent, options2));
53935
+ for (const item3 of content) if (typeof item3 === "string") lines.push(escapeXml(item3));
53936
+ else if (isCdata(item3)) lines.push(renderCdata(item3));
53937
+ else lines.push(renderElement(item3, indent, options2));
53880
53938
  return lines.join("");
53881
53939
  }
53882
53940
  function renderElement(el3, indent, options2) {
@@ -54145,12 +54203,12 @@ function serializeToXml(state2, registry2, options2 = {}) {
54145
54203
  if (!selectedBlockIds?.size) return items;
54146
54204
  const blockId2 = child.$?.blockId;
54147
54205
  if (!blockId2 || !selectedBlockIds.has(blockId2)) return items;
54148
- return items.map((item2) => {
54149
- if (typeof item2 === "string" || "cdata" in item2) return item2;
54206
+ return items.map((item3) => {
54207
+ if (typeof item3 === "string" || "cdata" in item3) return item3;
54150
54208
  return {
54151
- ...item2,
54209
+ ...item3,
54152
54210
  attrs: {
54153
- ...item2.attrs,
54211
+ ...item3.attrs,
54154
54212
  selected: "true"
54155
54213
  }
54156
54214
  };
@@ -57557,9 +57615,9 @@ function getAtomFeed(feedRoot) {
57557
57615
  const childs = feedRoot.children;
57558
57616
  const feed = {
57559
57617
  type: "atom",
57560
- items: getElementsByTagName("entry", childs).map((item2) => {
57618
+ items: getElementsByTagName("entry", childs).map((item3) => {
57561
57619
  var _a6;
57562
- const { children: children2 } = item2;
57620
+ const { children: children2 } = item3;
57563
57621
  const entry = { media: getMediaElements(children2) };
57564
57622
  addConditionally(entry, "id", "id", children2);
57565
57623
  addConditionally(entry, "title", "title", children2);
@@ -57598,8 +57656,8 @@ function getRssFeed(feedRoot) {
57598
57656
  const feed = {
57599
57657
  type: feedRoot.name.substr(0, 3),
57600
57658
  id: "",
57601
- items: getElementsByTagName("item", feedRoot.children).map((item2) => {
57602
- const { children: children2 } = item2;
57659
+ items: getElementsByTagName("item", feedRoot.children).map((item3) => {
57660
+ const { children: children2 } = item3;
57603
57661
  const entry = { media: getMediaElements(children2) };
57604
57662
  addConditionally(entry, "id", "guid", children2);
57605
57663
  addConditionally(entry, "title", "title", children2);
@@ -59806,8 +59864,8 @@ function getAtomFeed2(feedRoot) {
59806
59864
  const childs = feedRoot.children;
59807
59865
  const feed = {
59808
59866
  type: "atom",
59809
- items: getElementsByTagName2("entry", childs).map((item2) => {
59810
- const { children: children2 } = item2;
59867
+ items: getElementsByTagName2("entry", childs).map((item3) => {
59868
+ const { children: children2 } = item3;
59811
59869
  const entry = { media: getMediaElements2(children2) };
59812
59870
  addConditionally2(entry, "id", "id", children2);
59813
59871
  addConditionally2(entry, "title", "title", children2);
@@ -59845,8 +59903,8 @@ function getRssFeed2(feedRoot) {
59845
59903
  const feed = {
59846
59904
  type: feedRoot.name.substr(0, 3),
59847
59905
  id: "",
59848
- items: getElementsByTagName2("item", feedRoot.children).map((item2) => {
59849
- const { children: children2 } = item2;
59906
+ items: getElementsByTagName2("item", feedRoot.children).map((item3) => {
59907
+ const { children: children2 } = item3;
59850
59908
  const entry = { media: getMediaElements2(children2) };
59851
59909
  addConditionally2(entry, "id", "guid", children2);
59852
59910
  addConditionally2(entry, "title", "title", children2);
@@ -61939,9 +61997,9 @@ var NamedNodeMap = class extends Array {
61939
61997
  this.unshift(attr);
61940
61998
  }
61941
61999
  removeNamedItem(name) {
61942
- const item2 = this.getNamedItem(name);
62000
+ const item3 = this.getNamedItem(name);
61943
62001
  this.ownerElement.removeAttribute(name);
61944
- this.splice(this.indexOf(item2), 1);
62002
+ this.splice(this.indexOf(item3), 1);
61945
62003
  }
61946
62004
  item(index) {
61947
62005
  return index < this.length ? this[index] : null;
@@ -66485,7 +66543,7 @@ var CALLBACK_TICKET_TTL_MS = 30 * 60 * 1e3;
66485
66543
  var UPLOAD_CONCURRENCY = 6;
66486
66544
  var MAX_JSON_BODY = 4096;
66487
66545
  var CLOUD_ID = /^[\w-]{1,64}$/;
66488
- var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|publish-refs|publication|refs|reserve|visibility|auto-publish|sync)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
66546
+ var ROUTE = /^\/api\/cloud\/(status|login|logout|artifacts|publish|publish-refs|publish-referrers|publication|refs|reserve|visibility|auto-publish|sync)(?:\/([^/]+)(?:\/([^/]+))?)?$/;
66489
66547
  var SignedOut = class extends Error {
66490
66548
  };
66491
66549
  var CloudRefused = class extends Error {
@@ -66980,40 +67038,120 @@ function createCloudRoutes(options2) {
66980
67038
  },
66981
67039
  statusOf: cascadeStatus
66982
67040
  });
67041
+ const cloudReferrers = async (cloudId) => {
67042
+ try {
67043
+ const res = await cloudFetch("GET", `/api/a/${cloudId}/refs`);
67044
+ if (!res.ok) return null;
67045
+ const body = await res.json();
67046
+ return Array.isArray(body.referrers) ? body.referrers : null;
67047
+ } catch {
67048
+ return null;
67049
+ }
67050
+ };
67051
+ const referrersOf2 = async (ref) => {
67052
+ const local = [];
67053
+ for (const { key: key2, uses } of options2.referrers?.(ref) ?? []) {
67054
+ const status = await cascadeStatus(key2);
67055
+ if (status) local.push({ key: key2, uses, status, cloudId: artifactEntry(key2).cloud?.id ?? null });
67056
+ }
67057
+ const root = artifactEntry(`${ref.type}/${ref.id}`).cloud;
67058
+ const cloud = root?.publishedAt ? await cloudReferrers(root.id) : null;
67059
+ const cloudUnavailable = !!root?.publishedAt && cloud === null;
67060
+ return {
67061
+ referrers: mergeReferrers({ cloud, local }),
67062
+ ...cloudUnavailable ? { cloudUnavailable: true } : {}
67063
+ };
67064
+ };
67065
+ const publishReferrers = async (ref, publishKeys, makePublic) => {
67066
+ const rootKey = `${ref.type}/${ref.id}`;
67067
+ const root = artifactEntry(rootKey);
67068
+ if (!root.cloud?.publishedAt || publishState(root).visibility !== "public")
67069
+ throw new CloudRefused(400, `${rootKey} is not public`);
67070
+ const { referrers } = await referrersOf2(ref);
67071
+ const known = new Map(referrers.map((item3) => [item3.artifact, item3]));
67072
+ for (const key2 of makePublic)
67073
+ if (known.get(key2)?.state !== "private")
67074
+ throw new CloudRefused(400, `${key2} is not a private document that references ${rootKey}`);
67075
+ for (const key2 of publishKeys) {
67076
+ const state2 = known.get(key2)?.state;
67077
+ if (state2 !== "unpublished" && state2 !== "unlinked")
67078
+ throw new CloudRefused(400, `${key2} is not a document ${rootKey} can publish`);
67079
+ }
67080
+ const results = [];
67081
+ for (const key2 of [...makePublic, ...publishKeys]) {
67082
+ const item3 = known.get(key2);
67083
+ const action = makePublic.includes(key2) ? "make-public" : item3.state === "unlinked" ? "update" : "publish";
67084
+ try {
67085
+ if (!artifactKeyOf(key2)) {
67086
+ await expectOk(
67087
+ await cloudFetch("PATCH", `/api/artifacts/${item3.cloudId}`, { visibility: "public" })
67088
+ );
67089
+ } else
67090
+ await serialized(key2, async () => {
67091
+ const target = artifactKeyOf(key2);
67092
+ if (action === "make-public") {
67093
+ await setVisibility(target, "public");
67094
+ if (!item3.needsUpdate) return;
67095
+ }
67096
+ const result = await publish(target, "public");
67097
+ if (result.status !== 200)
67098
+ throw new CloudRefused(
67099
+ 409,
67100
+ (result.body.reasons ?? []).join("; ") || "not ready to publish"
67101
+ );
67102
+ updateArtifactConfig(configFile, key2, { autoPublish: null });
67103
+ });
67104
+ results.push({ artifact: key2, action, status: "published" });
67105
+ } catch (err) {
67106
+ if (err instanceof SignedOut) throw err;
67107
+ const httpStatus = err instanceof CloudRefused ? err.status : void 0;
67108
+ results.push({
67109
+ artifact: key2,
67110
+ action,
67111
+ status: httpStatus !== void 0 && httpStatus < 500 ? "failed" : "unknown",
67112
+ error: {
67113
+ error: err.message.replace(/^cloud refused \(\d+\): /, ""),
67114
+ ...httpStatus === void 0 ? {} : { httpStatus }
67115
+ }
67116
+ });
67117
+ }
67118
+ }
67119
+ return { results };
67120
+ };
66983
67121
  const publishRefs = async (ref, refs3, makePublic, requested) => {
66984
67122
  const rootKey = `${ref.type}/${ref.id}`;
66985
67123
  const visibility = requested ?? publishState(artifactEntry(rootKey)).visibility;
66986
67124
  const listed = await cascadeOf(ref, visibility);
66987
67125
  const overrides = Object.fromEntries(
66988
- listed.map((item2) => [item2.artifact, false])
67126
+ listed.map((item3) => [item3.artifact, false])
66989
67127
  );
66990
67128
  for (const key2 of [...refs3, ...makePublic]) overrides[key2] = true;
66991
67129
  const items = resolveSelection(listed, overrides);
66992
- const known = new Map(items.map((item2) => [item2.artifact, item2]));
67130
+ const known = new Map(items.map((item3) => [item3.artifact, item3]));
66993
67131
  for (const key2 of [...refs3, ...makePublic]) {
66994
- const item2 = known.get(key2);
66995
- if (!item2?.selectable)
67132
+ const item3 = known.get(key2);
67133
+ if (!item3?.selectable)
66996
67134
  throw new CloudRefused(400, `${key2} is not a reference ${rootKey} can publish`);
66997
- if (makePublic.includes(key2) !== (item2.state === "private"))
67135
+ if (makePublic.includes(key2) !== (item3.state === "private"))
66998
67136
  throw new CloudRefused(
66999
67137
  400,
67000
- item2.state === "private" ? `${key2} is private: list it in makePublic` : `${key2} is not private: list it in refs`
67138
+ item3.state === "private" ? `${key2} is private: list it in makePublic` : `${key2} is not private: list it in refs`
67001
67139
  );
67002
67140
  }
67003
67141
  const results = [];
67004
67142
  let stopped = false;
67005
- for (const item2 of items.filter((each) => each.checked)) {
67006
- const action = item2.state === "private" ? "make-public" : item2.state === "stale" ? "update" : "publish";
67143
+ for (const item3 of items.filter((each) => each.checked)) {
67144
+ const action = item3.state === "private" ? "make-public" : item3.state === "stale" ? "update" : "publish";
67007
67145
  if (stopped) {
67008
- results.push({ artifact: item2.artifact, action, status: "not_attempted" });
67146
+ results.push({ artifact: item3.artifact, action, status: "not_attempted" });
67009
67147
  continue;
67010
67148
  }
67011
- const target = artifactKeyOf(item2.artifact);
67149
+ const target = artifactKeyOf(item3.artifact);
67012
67150
  try {
67013
- await serialized(item2.artifact, async () => {
67151
+ await serialized(item3.artifact, async () => {
67014
67152
  if (action === "make-public") {
67015
67153
  await setVisibility(target, "public");
67016
- if (!item2.changed) return;
67154
+ if (!item3.changed) return;
67017
67155
  }
67018
67156
  const result = await publish(target, action === "publish" ? visibility : void 0, {
67019
67157
  skipUnchanged: true
@@ -67023,14 +67161,14 @@ function createCloudRoutes(options2) {
67023
67161
  409,
67024
67162
  (result.body.reasons ?? []).join("; ") || "not ready to publish"
67025
67163
  );
67026
- updateArtifactConfig(configFile, item2.artifact, { autoPublish: null });
67164
+ updateArtifactConfig(configFile, item3.artifact, { autoPublish: null });
67027
67165
  });
67028
- results.push({ artifact: item2.artifact, action, status: "published" });
67166
+ results.push({ artifact: item3.artifact, action, status: "published" });
67029
67167
  } catch (err) {
67030
67168
  if (err instanceof SignedOut) throw err;
67031
67169
  const httpStatus = err instanceof CloudRefused ? err.status : void 0;
67032
67170
  results.push({
67033
- artifact: item2.artifact,
67171
+ artifact: item3.artifact,
67034
67172
  action,
67035
67173
  status: httpStatus !== void 0 && httpStatus < 500 ? "failed" : "unknown",
67036
67174
  error: {
@@ -67107,11 +67245,22 @@ function createCloudRoutes(options2) {
67107
67245
  return;
67108
67246
  }
67109
67247
  if (action === "refs" && ref && method === "GET") {
67110
- const requested = new URL(req.url ?? "/", "http://hub").searchParams.get("visibility");
67248
+ const query2 = new URL(req.url ?? "/", "http://hub").searchParams;
67249
+ const requested = query2.get("visibility");
67111
67250
  if (requested !== null && !isVisibility(requested))
67112
67251
  throw new CloudRefused(400, 'visibility must be "public" or "private"');
67113
67252
  const visibility = requested ?? publishState(artifactEntry(`${ref.type}/${ref.id}`)).visibility;
67114
- sendJson(res, 200, { visibility, items: await cascadeOf(ref, visibility) });
67253
+ sendJson(res, 200, {
67254
+ visibility,
67255
+ items: await cascadeOf(ref, visibility),
67256
+ ...query2.get("referrers") === "0" ? {} : await referrersOf2(ref)
67257
+ });
67258
+ return;
67259
+ }
67260
+ if (action === "publish-referrers" && ref && method === "POST") {
67261
+ const body = await readJsonBody(req);
67262
+ const list2 = (value) => Array.isArray(value) ? value.filter((each) => typeof each === "string") : [];
67263
+ sendJson(res, 200, await publishReferrers(ref, list2(body?.publish), list2(body?.makePublic)));
67115
67264
  return;
67116
67265
  }
67117
67266
  if (action === "publish-refs" && ref && method === "POST") {
@@ -67261,13 +67410,18 @@ function createCloudRoutes(options2) {
67261
67410
  const ref = artifactKeyOf(key2);
67262
67411
  if (!ref) throw new CloudRefused(404, "artifact not found");
67263
67412
  const shown = visibility ?? publishState(artifactEntry(key2)).visibility;
67264
- return { visibility: shown, items: await cascadeOf(ref, shown) };
67413
+ return { visibility: shown, items: await cascadeOf(ref, shown), ...await referrersOf2(ref) };
67265
67414
  },
67266
67415
  publishRefsNow(key2, refs3, makePublic, visibility) {
67267
67416
  const ref = artifactKeyOf(key2);
67268
67417
  if (!ref) throw new CloudRefused(404, "artifact not found");
67269
67418
  return publishRefs(ref, refs3, makePublic, visibility);
67270
67419
  },
67420
+ publishReferrersNow(key2, publishKeys, makePublic) {
67421
+ const ref = artifactKeyOf(key2);
67422
+ if (!ref) throw new CloudRefused(404, "artifact not found");
67423
+ return publishReferrers(ref, publishKeys, makePublic);
67424
+ },
67271
67425
  autoPublishEnabled: () => autoPublishState().enabled,
67272
67426
  token: () => readCredentials(credentialsFile2, origin)?.token ?? null,
67273
67427
  async handle(req, res, match) {
@@ -69859,8 +70013,8 @@ function rawValue() {
69859
70013
  );
69860
70014
  }
69861
70015
  // @__NO_SIDE_EFFECTS__
69862
- function arrayValue(item2) {
69863
- undeclared("arrayValue", item2);
70016
+ function arrayValue(item3) {
70017
+ undeclared("arrayValue", item3);
69864
70018
  return makeSchema(
69865
70019
  (value) => {
69866
70020
  if (!Array.isArray(value)) {
@@ -69868,12 +70022,12 @@ function arrayValue(item2) {
69868
70022
  }
69869
70023
  const result = new Array(value.length);
69870
70024
  for (let i7 = 0; i7 < value.length; i7++) {
69871
- result[i7] = item2(value[i7]);
70025
+ result[i7] = item3(value[i7]);
69872
70026
  }
69873
70027
  return result;
69874
70028
  },
69875
70029
  {
69876
- item: item2,
70030
+ item: item3,
69877
70031
  kind: "array"
69878
70032
  },
69879
70033
  void 0,
@@ -69889,7 +70043,7 @@ function arrayValue(item2) {
69889
70043
  return false;
69890
70044
  }
69891
70045
  for (let i7 = 0; i7 < a5.length; i7++) {
69892
- if (!isSchemaEqual(item2, a5[i7], b6[i7])) {
70046
+ if (!isSchemaEqual(item3, a5[i7], b6[i7])) {
69893
70047
  return false;
69894
70048
  }
69895
70049
  }
@@ -69925,10 +70079,10 @@ function arrayValue(item2) {
69925
70079
  );
69926
70080
  }
69927
70081
  // @__NO_SIDE_EFFECTS__
69928
- function arraySetValue(item2) {
69929
- undeclared("arraySetValue", item2);
70082
+ function arraySetValue(item3) {
70083
+ undeclared("arraySetValue", item3);
69930
70084
  {
69931
- if (!(typeof item2.defaultValue === "string")) {
70085
+ if (!(typeof item3.defaultValue === "string")) {
69932
70086
  formatDevErrorMessage(`arraySetValue: the item schema must produce strings`);
69933
70087
  }
69934
70088
  }
@@ -69936,14 +70090,14 @@ function arraySetValue(item2) {
69936
70090
  if (!Array.isArray(value)) {
69937
70091
  return Object.freeze([]);
69938
70092
  }
69939
- if (Object.isFrozen(value) && $isCanonicalSet(item2, value)) {
70093
+ if (Object.isFrozen(value) && $isCanonicalSet(item3, value)) {
69940
70094
  return value;
69941
70095
  }
69942
70096
  const members = [];
69943
70097
  for (let i7 = 0; i7 < value.length; i7++) {
69944
70098
  const member = value[i7];
69945
- if (member !== void 0 && $acceptsValue(item2, member)) {
69946
- members.push(item2(member));
70099
+ if (member !== void 0 && $acceptsValue(item3, member)) {
70100
+ members.push(item3(member));
69947
70101
  }
69948
70102
  }
69949
70103
  members.sort();
@@ -69955,14 +70109,14 @@ function arraySetValue(item2) {
69955
70109
  }
69956
70110
  return Object.freeze(result);
69957
70111
  }, {
69958
- item: item2,
70112
+ item: item3,
69959
70113
  kind: "set"
69960
70114
  }, void 0, isArraySetEqual, (value) => Array.isArray(value));
69961
70115
  }
69962
- function $isCanonicalSet(item2, value) {
70116
+ function $isCanonicalSet(item3, value) {
69963
70117
  for (let i7 = 0; i7 < value.length; i7++) {
69964
70118
  const member = value[i7];
69965
- if (typeof member !== "string" || i7 > 0 && !(value[i7 - 1] < member) || !$acceptsValue(item2, member) || item2(member) !== member) {
70119
+ if (typeof member !== "string" || i7 > 0 && !(value[i7 - 1] < member) || !$acceptsValue(item3, member) || item3(member) !== member) {
69966
70120
  return false;
69967
70121
  }
69968
70122
  }
@@ -73175,8 +73329,8 @@ function mergingChildNotInline(klass, children2) {
73175
73329
  if (entry === "inline") {
73176
73330
  continue;
73177
73331
  }
73178
- const item2 = declaredChildren(entry);
73179
- const ok = item2 === "inline" || Array.isArray(item2) && item2.includes("inline") && item2.every((e5) => e5 === "inline" || e5 === klass || klass.prototype instanceof e5);
73332
+ const item3 = declaredChildren(entry);
73333
+ const ok = item3 === "inline" || Array.isArray(item3) && item3.includes("inline") && item3.every((e5) => e5 === "inline" || e5 === klass || klass.prototype instanceof e5);
73180
73334
  if (!ok) {
73181
73335
  return entry;
73182
73336
  }
@@ -74244,9 +74398,9 @@ function validateNodeStructure(klass) {
74244
74398
  formatDevErrorMessage(`${name}: mergeAdjacent.by names the derived NodeState ${invalid.entry}`);
74245
74399
  }
74246
74400
  }
74247
- const item2 = mergingChildNotInline(klass, declared.children);
74248
- if (!(item2 === null)) {
74249
- formatDevErrorMessage(`${name}: a merging class that lists child classes must list classes that hold inline content (${item2 === null ? "" : item2.name} does not)`);
74401
+ const item3 = mergingChildNotInline(klass, declared.children);
74402
+ if (!(item3 === null)) {
74403
+ formatDevErrorMessage(`${name}: a merging class that lists child classes must list classes that hold inline content (${item3 === null ? "" : item3.name} does not)`);
74250
74404
  }
74251
74405
  }
74252
74406
  if (declared.inline !== void 0 && declared.declaredBy.inline === klass) {
@@ -105139,8 +105293,8 @@ function registerRovingTabIndex(container, options2 = {}) {
105139
105293
  const selector = options2.itemSelector ?? DEFAULT_ROVING_SELECTOR;
105140
105294
  const getItems = () => Array.from(container.querySelectorAll(selector));
105141
105295
  const applyTabIndex = (items, activeIndex) => {
105142
- items.forEach((item2, i7) => {
105143
- item2.tabIndex = i7 === activeIndex ? 0 : -1;
105296
+ items.forEach((item3, i7) => {
105297
+ item3.tabIndex = i7 === activeIndex ? 0 : -1;
105144
105298
  });
105145
105299
  };
105146
105300
  const init = () => {
@@ -105212,8 +105366,8 @@ function registerRovingTabIndex(container, options2 = {}) {
105212
105366
  };
105213
105367
  return mergeRegister2(registerEventListener2(container, "keydown", handler5), () => {
105214
105368
  const items = getItems();
105215
- items.forEach((item2) => {
105216
- item2.tabIndex = 0;
105369
+ items.forEach((item3) => {
105370
+ item3.tabIndex = 0;
105217
105371
  });
105218
105372
  });
105219
105373
  }
@@ -105228,8 +105382,8 @@ function registerFocusManager(editor, toolbar, options2 = {}) {
105228
105382
  if (isHTMLElement2(target)) {
105229
105383
  const items = toolbar.querySelectorAll(selector);
105230
105384
  let isRovingItem = false;
105231
- for (const item2 of items) {
105232
- if (item2 === target || containsComposed(item2, target)) {
105385
+ for (const item3 of items) {
105386
+ if (item3 === target || containsComposed(item3, target)) {
105233
105387
  isRovingItem = true;
105234
105388
  break;
105235
105389
  }
@@ -126903,8 +127057,8 @@ function $pointsAround(parent, items) {
126903
127057
  if (offset <= first) {
126904
127058
  point2.set(parentKey, offset, "element");
126905
127059
  } else if (offset < first + items.length) {
126906
- const item2 = items[offset - first - 1];
126907
- point2.set(item2.getKey(), item2.getChildrenSize(), "element");
127060
+ const item3 = items[offset - first - 1];
127061
+ point2.set(item3.getKey(), item3.getChildrenSize(), "element");
126908
127062
  } else {
126909
127063
  point2.set(parentKey, offset - items.length + 1, "element");
126910
127064
  }
@@ -128114,20 +128268,20 @@ function $buildWordListTree(ctx, items) {
128114
128268
  level: items[0].level,
128115
128269
  list: root
128116
128270
  }];
128117
- for (const item2 of items) {
128118
- while (stack2.length > 1 && stack2[stack2.length - 1].level > item2.level) {
128271
+ for (const item3 of items) {
128272
+ while (stack2.length > 1 && stack2[stack2.length - 1].level > item3.level) {
128119
128273
  stack2.pop();
128120
128274
  }
128121
- if (item2.level > stack2[stack2.length - 1].level) {
128122
- const sub2 = $createListNode(classifyWordListType(item2.marker));
128275
+ if (item3.level > stack2[stack2.length - 1].level) {
128276
+ const sub2 = $createListNode(classifyWordListType(item3.marker));
128123
128277
  stack2[stack2.length - 1].list.append($createListItemNode().append(sub2));
128124
128278
  stack2.push({
128125
- level: item2.level,
128279
+ level: item3.level,
128126
128280
  list: sub2
128127
128281
  });
128128
128282
  }
128129
- stripWordMarker(item2.el);
128130
- stack2[stack2.length - 1].list.append($createListItemNode().splice(0, 0, ctx.$importChildren(item2.el, {
128283
+ stripWordMarker(item3.el);
128284
+ stack2[stack2.length - 1].list.append($createListItemNode().splice(0, 0, ctx.$importChildren(item3.el, {
128131
128285
  schema: InlineSchema2
128132
128286
  })));
128133
128287
  }
@@ -162479,13 +162633,13 @@ defineFunction({
162479
162633
  }
162480
162634
  data.push(current);
162481
162635
  for (var _i6 = 0; _i6 < data.length; _i6++) {
162482
- var item2 = data[_i6];
162483
- var firstEquals = item2.indexOf("=");
162636
+ var item3 = data[_i6];
162637
+ var firstEquals = item3.indexOf("=");
162484
162638
  if (firstEquals < 0) {
162485
- throw new ParseError("\\htmlData key/value '" + item2 + "' missing equals sign");
162639
+ throw new ParseError("\\htmlData key/value '" + item3 + "' missing equals sign");
162486
162640
  }
162487
- var key2 = item2.slice(0, firstEquals);
162488
- var _value = item2.slice(firstEquals + 1);
162641
+ var key2 = item3.slice(0, firstEquals);
162642
+ var _value = item3.slice(firstEquals + 1);
162489
162643
  attributes["data-" + key2.trim()] = _value;
162490
162644
  }
162491
162645
  trustContext = {
@@ -175475,9 +175629,9 @@ LoroDoc.prototype.toJsonWithReplacer = function(replacer) {
175475
175629
  };
175476
175630
  const run3 = (layer2) => {
175477
175631
  if (Array.isArray(layer2)) {
175478
- return layer2.map((item2, index) => {
175479
- return m11(index, item2);
175480
- }).filter((item2) => item2 !== void 0);
175632
+ return layer2.map((item3, index) => {
175633
+ return m11(index, item3);
175634
+ }).filter((item3) => item3 !== void 0);
175481
175635
  }
175482
175636
  const result = {};
175483
175637
  for (const [key2, value] of Object.entries(layer2)) {
@@ -176447,15 +176601,15 @@ __export(LexicalMarkdown_dev_exports, {
176447
176601
  });
176448
176602
  function indexBy(list2, callback) {
176449
176603
  const index = {};
176450
- for (const item2 of list2) {
176451
- const key2 = callback(item2);
176604
+ for (const item3 of list2) {
176605
+ const key2 = callback(item3);
176452
176606
  if (!key2) {
176453
176607
  continue;
176454
176608
  }
176455
176609
  if (index[key2]) {
176456
- index[key2].push(item2);
176610
+ index[key2].push(item3);
176457
176611
  } else {
176458
- index[key2] = [item2];
176612
+ index[key2] = [item3];
176459
176613
  }
176460
176614
  }
176461
176615
  return index;
@@ -181703,6 +181857,10 @@ async function handleRelay(ctx, key2, body, conn, contentOrigin = "") {
181703
181857
  key2,
181704
181858
  request.visibility === "public" || request.visibility === "private" ? request.visibility : void 0
181705
181859
  );
181860
+ if (request.op === "publish-referrers" && ctx.cloud) {
181861
+ const list2 = (value) => Array.isArray(value) ? value.filter((each) => typeof each === "string") : [];
181862
+ return ctx.cloud.publishReferrersNow(key2, list2(request.publish), list2(request.makePublic));
181863
+ }
181706
181864
  if (request.op === "publish-refs" && ctx.cloud) {
181707
181865
  const list2 = (value) => Array.isArray(value) ? value.filter((each) => typeof each === "string") : [];
181708
181866
  return ctx.cloud.publishRefsNow(
@@ -181818,9 +181976,9 @@ function readChange(value) {
181818
181976
  function readAll(values, read3) {
181819
181977
  const out = [];
181820
181978
  for (const value of values) {
181821
- const item2 = read3(value);
181822
- if (!item2) return null;
181823
- out.push(item2);
181979
+ const item3 = read3(value);
181980
+ if (!item3) return null;
181981
+ out.push(item3);
181824
181982
  }
181825
181983
  return out;
181826
181984
  }
@@ -181832,16 +181990,16 @@ function readSelectionMessage(value) {
181832
181990
  return null;
181833
181991
  if (!list(value.selected, SELECTION_FULL_NODES) || !list(value.tweaks, SELECTION_MAX_NODES) || !list(value.nodes, SELECTION_MAX_NODES))
181834
181992
  return null;
181835
- const selected = readAll(value.selected, (item2) => {
181836
- const node = readNode(item2);
181837
- if (!node || !object(item2) || !text2(item2.text, SELECTION_LIMITS.text) || !text2(item2.html, SELECTION_LIMITS.html) || !list(item2.tweaks, INSPECTOR_PROPERTIES.length))
181993
+ const selected = readAll(value.selected, (item3) => {
181994
+ const node = readNode(item3);
181995
+ if (!node || !object(item3) || !text2(item3.text, SELECTION_LIMITS.text) || !text2(item3.html, SELECTION_LIMITS.html) || !list(item3.tweaks, INSPECTOR_PROPERTIES.length))
181838
181996
  return null;
181839
- const tweaks2 = readAll(item2.tweaks, readChange);
181840
- return tweaks2 && { ...node, text: item2.text, html: item2.html, tweaks: tweaks2 };
181997
+ const tweaks2 = readAll(item3.tweaks, readChange);
181998
+ return tweaks2 && { ...node, text: item3.text, html: item3.html, tweaks: tweaks2 };
181841
181999
  });
181842
- const tweaks = readAll(value.tweaks, (item2) => {
181843
- const node = readNode(item2);
181844
- const change = readChange(item2);
182000
+ const tweaks = readAll(value.tweaks, (item3) => {
182001
+ const node = readNode(item3);
182002
+ const change = readChange(item3);
181845
182003
  return node && change && { ...node, ...change };
181846
182004
  });
181847
182005
  const nodes = readAll(value.nodes, readNode);
@@ -181877,17 +182035,17 @@ function readWhiteboardSelectionMessage(value) {
181877
182035
  return null;
181878
182036
  const id3 = value.artifact.slice("whiteboard/".length);
181879
182037
  if (!value.artifact.startsWith("whiteboard/") || !isArtifactId(id3)) return null;
181880
- const optional3 = (item2, max) => typeof item2 === "string" ? item2.slice(0, max) : null;
182038
+ const optional3 = (item3, max) => typeof item3 === "string" ? item3.slice(0, max) : null;
181881
182039
  const selected = [];
181882
- for (const item2 of value.selected) {
181883
- if (!object(item2) || !text2(item2.id, WHITEBOARD_SELECTION_LIMITS.id) || !item2.id || !text2(item2.type, WHITEBOARD_SELECTION_LIMITS.type))
182040
+ for (const item3 of value.selected) {
182041
+ if (!object(item3) || !text2(item3.id, WHITEBOARD_SELECTION_LIMITS.id) || !item3.id || !text2(item3.type, WHITEBOARD_SELECTION_LIMITS.type))
181884
182042
  return null;
181885
182043
  selected.push({
181886
- id: item2.id,
181887
- type: item2.type,
181888
- text: optional3(item2.text, WHITEBOARD_SELECTION_LIMITS.text),
181889
- frameId: optional3(item2.frameId, WHITEBOARD_SELECTION_LIMITS.id),
181890
- author: item2.author === "human" || item2.author === "agent" ? item2.author : null
182044
+ id: item3.id,
182045
+ type: item3.type,
182046
+ text: optional3(item3.text, WHITEBOARD_SELECTION_LIMITS.text),
182047
+ frameId: optional3(item3.frameId, WHITEBOARD_SELECTION_LIMITS.id),
182048
+ author: item3.author === "human" || item3.author === "agent" ? item3.author : null
181891
182049
  });
181892
182050
  }
181893
182051
  const page = isPageId(value.page) ? { page: value.page } : {};
@@ -183494,6 +183652,7 @@ function createServerContext(options2) {
183494
183652
  project: import_node_path33.default.basename(import_node_path33.default.resolve(root, "../..")),
183495
183653
  address: (ref) => artifactPath(root, ref.type, ref.id).split("/").pop(),
183496
183654
  references: (ref) => referencesOf(root, `${ref.type}/${ref.id}`),
183655
+ referrers: (ref) => referrersOf(root, `${ref.type}/${ref.id}`),
183497
183656
  port: () => ctx.port,
183498
183657
  inspect,
183499
183658
  onPublication: (key2, publication) => {
@@ -183986,7 +184145,7 @@ function summarize(scene, opts = {}) {
183986
184145
  if (element.type === "text" && element.containerId && typeof element.text === "string")
183987
184146
  labels.set(element.containerId, element.text);
183988
184147
  const frameOf = new Map(live3.map((element) => [element.id, element.frameId ?? null]));
183989
- const item2 = (element) => ({
184148
+ const item3 = (element) => ({
183990
184149
  id: element.id,
183991
184150
  type: element.type,
183992
184151
  text: labels.get(element.id) ?? (typeof element.text === "string" ? element.text : null),
@@ -184000,9 +184159,9 @@ function summarize(scene, opts = {}) {
184000
184159
  const frames = live3.filter((element) => element.type === "frame" && (!opts.frame || element.id === opts.frame)).map((frame) => ({
184001
184160
  id: frame.id,
184002
184161
  name: typeof frame.name === "string" ? frame.name : frame.id,
184003
- items: shapes.filter((element) => element.frameId === frame.id).map(item2)
184162
+ items: shapes.filter((element) => element.frameId === frame.id).map(item3)
184004
184163
  }));
184005
- const loose = opts.frame ? [] : shapes.filter((element) => !element.frameId).map(item2);
184164
+ const loose = opts.frame ? [] : shapes.filter((element) => !element.frameId).map(item3);
184006
184165
  const inFrame = (id3) => id3 !== null && frameOf.get(id3) === opts.frame;
184007
184166
  const arrows = live3.filter((element) => LINE_TYPES3.has(element.type)).map((arrow) => ({
184008
184167
  arrow,
@@ -184021,7 +184180,7 @@ function summarize(scene, opts = {}) {
184021
184180
  }
184022
184181
  var oneLine2 = (text5) => text5.replaceAll(/\s*\n\s*/g, " / ");
184023
184182
  var credit = ({ author, editedBy }) => author ? ` \xB7 ${author}${editedBy ? `, ${editedBy} edited` : ""}` : "";
184024
- var itemLine = (item2) => ` ${item2.id} ${item2.sticky ? "sticky" : item2.type}${item2.text ? ` "${oneLine2(item2.text)}"` : ""}${credit(item2)}`;
184183
+ var itemLine = (item3) => ` ${item3.id} ${item3.sticky ? "sticky" : item3.type}${item3.text ? ` "${oneLine2(item3.text)}"` : ""}${credit(item3)}`;
184025
184184
  function formatSummary(summary) {
184026
184185
  const lines = [];
184027
184186
  for (const frame of summary.frames) {
@@ -184480,7 +184639,7 @@ function readSelectedIds(file) {
184480
184639
  try {
184481
184640
  const parsed = JSON.parse(import_node_fs38.default.readFileSync(file, "utf8"));
184482
184641
  return (parsed.selected ?? []).flatMap(
184483
- (item2) => typeof item2.id === "string" ? [item2.id] : []
184642
+ (item3) => typeof item3.id === "string" ? [item3.id] : []
184484
184643
  );
184485
184644
  } catch {
184486
184645
  return [];
@@ -184529,12 +184688,12 @@ var agentEventRoute = {
184529
184688
 
184530
184689
  // src/server/review-defaults.ts
184531
184690
  function actionable(section, rounds) {
184532
- if (section === "asks") return (item2) => item2.state === "submitted";
184533
- if (section === "rounds") return (item2) => item2.state === "open" || item2.state === "submitted";
184691
+ if (section === "asks") return (item3) => item3.state === "submitted";
184692
+ if (section === "rounds") return (item3) => item3.state === "open" || item3.state === "submitted";
184534
184693
  const submitted = new Set(
184535
184694
  rounds.filter((round) => round.state === "submitted").map((round) => round.id)
184536
184695
  );
184537
- return (item2) => item2.kind === "verify" ? item2.verdict === "reject" : submitted.has(item2.round);
184696
+ return (item3) => item3.kind === "verify" ? item3.verdict === "reject" : submitted.has(item3.round);
184538
184697
  }
184539
184698
 
184540
184699
  // src/server/routes/agent-review.ts
@@ -184667,7 +184826,7 @@ async function serve(req, res, ctx, type, id3, operation) {
184667
184826
  if (body.op === "read" && !input.thread)
184668
184827
  throw new ReviewError("E_ARGUMENT_INVALID", "A thread ID is required.");
184669
184828
  if (body.sections !== void 0) {
184670
- if (body.op !== "list" || !Array.isArray(body.sections) || !body.sections.every((item2) => typeof item2 === "string"))
184829
+ if (body.op !== "list" || !Array.isArray(body.sections) || !body.sections.every((item3) => typeof item3 === "string"))
184671
184830
  throw new ReviewError(
184672
184831
  "E_ARGUMENT_INVALID",
184673
184832
  "sections requires a list of collection names and op=list."
@@ -184915,9 +185074,9 @@ function documentDrawing(title, payload) {
184915
185074
  });
184916
185075
  y5 += rows.length * 22 + 10;
184917
185076
  } else if (type === "list") {
184918
- children(block.children).slice(0, 4).forEach((item2, i7) => {
185077
+ children(block.children).slice(0, 4).forEach((item3, i7) => {
184919
185078
  parts.push(text4(104, y5, block.listType === "number" ? `${i7 + 1}.` : "\u2022"));
184920
- lines(nodeText(item2), 9, 2, 13);
185079
+ lines(nodeText(item3), 9, 2, 13);
184921
185080
  });
184922
185081
  y5 += 8;
184923
185082
  } else if (type === "alert-quote") {