ryugi-artifacts 1.68.3 → 1.70.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 (341) hide show
  1. package/dist/cli.cjs +3 -3
  2. package/dist/server.cjs +204 -161
  3. package/dist/viewer/{AgentStatusPill-CxFpJS9T.js → AgentStatusPill-exn8kG-H.js} +1 -1
  4. package/dist/viewer/ArtboardLayout-Dz0spzAj.js +12 -0
  5. package/dist/viewer/ArtifactList-DKmeVnKi.js +2 -0
  6. package/dist/viewer/{AutoPublishPrompt-DkGEIW9t.js → AutoPublishPrompt-BYAg2V0y.js} +1 -1
  7. package/dist/viewer/{Avatar-VUQPY4DD.js → Avatar-Cr9OW8YH.js} +1 -1
  8. package/dist/viewer/{Avatar-BhOg2BXZ.js → Avatar-NMdjRnIS.js} +1 -1
  9. package/dist/viewer/{BottomSheet-AqG81d_M.js → BottomSheet-BQnGJL4p.js} +1 -1
  10. package/dist/viewer/{Canvas-4Utk2C18.js → Canvas-DxaQjjSK.js} +1 -1
  11. package/dist/viewer/{CompositeItem-ClMglprA.js → CompositeItem-tvyaiM7D.js} +1 -1
  12. package/dist/viewer/DocumentLayout-_U2M-QV_.js +2 -0
  13. package/dist/viewer/DocumentPage-ox4EQvxU.js +4 -0
  14. package/dist/viewer/DropdownMenu-DQRhgqL-.js +1 -0
  15. package/dist/viewer/{HtmlLayout-89ZuJNxJ.js → HtmlLayout-DzcNJHBz.js} +1 -1
  16. package/dist/viewer/{MenuSubmenuTrigger-B9c8QfBG.js → MenuSubmenuTrigger-CFAM5XEZ.js} +1 -1
  17. package/dist/viewer/{MenuTrigger-yVEYn1Ao.js → MenuTrigger-COssWqPW.js} +1 -1
  18. package/dist/viewer/{PhoneArtboardBar-Bzffd2nB.js → PhoneArtboardBar-B6JoWeSs.js} +1 -1
  19. package/dist/viewer/{PhoneSheet-CN4Ewszx.js → PhoneSheet-F7YTU--u.js} +1 -1
  20. package/dist/viewer/{Popover-J_7ZaGFR.js → Popover-4xoki5-K.js} +1 -1
  21. package/dist/viewer/PreviewLayout-CTH3onR8.js +2 -0
  22. package/dist/viewer/{Segmented-DhJdw1_a.js → Segmented-CFwxjVOk.js} +1 -1
  23. package/dist/viewer/{Select-Cqb37-IZ.js → Select-CwMZ_V48.js} +1 -1
  24. package/dist/viewer/{SelectScrollUpArrow-DYO27Q2D.js → SelectScrollUpArrow-D1wI2boK.js} +1 -1
  25. package/dist/viewer/{SettingsDialog-BpwMMImH.js → SettingsDialog-ytisgF60.js} +1 -1
  26. package/dist/viewer/{SnapshotDocument-Cca8g4SA.js → SnapshotDocument-IbfxlwGq.js} +1 -1
  27. package/dist/viewer/{SplitShell-lfa8K-76.js → SplitShell-BT_RNQiE.js} +1 -1
  28. package/dist/viewer/{ThreadView-CNiDFkdG.js → ThreadView-CxcjZsZO.js} +1 -1
  29. package/dist/viewer/{TooltipPopup-DsKnBNAK.js → TooltipPopup-D7gvHCZl.js} +1 -1
  30. package/dist/viewer/{VirtualizedEditor-uWe43zaI-lgt127eM.js → VirtualizedEditor-uWe43zaI-BMW7pyKh.js} +1 -1
  31. package/dist/viewer/{VirtualizedRenderer-C_d95FXi-GNEopmGk.js → VirtualizedRenderer-C_d95FXi-D1_QNgkv.js} +1 -1
  32. package/dist/viewer/{WarningsBadge-DT8IiYtX.js → WarningsBadge-yykGlxIS.js} +1 -1
  33. package/dist/viewer/WhiteboardLayout-DdKyBMil.js +3 -0
  34. package/dist/viewer/{WritingCursor-DQcBMO0U.js → WritingCursor-BmvJsfI4.js} +1 -1
  35. package/dist/viewer/{abnfDiagram-VCTEODGH-CTyAnl0Z.js → abnfDiagram-VCTEODGH-BcWo9FwK.js} +1 -1
  36. package/dist/viewer/{agentLook-C2_12glW.js → agentLook-t-qk7xG-.js} +1 -1
  37. package/dist/viewer/{anchor-B2Eea6vf.js → anchor-CMDdppxq.js} +1 -1
  38. package/dist/viewer/{ar-SA-G6X2FPQ2-Co8NUjyx.js → ar-SA-G6X2FPQ2-Cm_ExiPk.js} +1 -1
  39. package/dist/viewer/{architecture-7GRP2DOG-B0zVjmxn.js → architecture-7GRP2DOG-B0ELn-r9.js} +1 -1
  40. package/dist/viewer/{architectureDiagram-5GKGNRK7-CGcFQF9y.js → architectureDiagram-5GKGNRK7-pjk1bmyn.js} +1 -1
  41. package/dist/viewer/{az-AZ-76LH7QW2-De3Qkr8D.js → az-AZ-76LH7QW2-C3xDoCfK.js} +1 -1
  42. package/dist/viewer/{bg-BG-XCXSNQG7-BzK_v3Xv.js → bg-BG-XCXSNQG7-BuqoExRt.js} +1 -1
  43. package/dist/viewer/{blockDiagram-I7D4REHJ-mTBluH4Q.js → blockDiagram-I7D4REHJ-Bt5Fgmbw.js} +1 -1
  44. package/dist/viewer/{bn-BD-2XOGV67Q-BDqCkFBJ.js → bn-BD-2XOGV67Q-Cb6R-JhO.js} +1 -1
  45. package/dist/viewer/{c4Diagram-7LVT6UL2-D-nVvYcu.js → c4Diagram-7LVT6UL2-DVoqgVNh.js} +1 -1
  46. package/dist/viewer/{ca-ES-6MX7JW3Y-Di897XK8.js → ca-ES-6MX7JW3Y-C9x3VZP6.js} +1 -1
  47. package/dist/viewer/{channel-D9zHsUWH.js → channel-DH0VKMTa.js} +8 -8
  48. package/dist/viewer/channel-fe5QTu-s.js +1 -0
  49. package/dist/viewer/{chunk-4HAMMTFA-QTbQqNtn.js → chunk-4HAMMTFA-CTdlWrtX.js} +1 -1
  50. package/dist/viewer/{chunk-75Z2AOVW-BbYnGlO9.js → chunk-75Z2AOVW-C_A1Se9D.js} +1 -1
  51. package/dist/viewer/{chunk-DU6HZSFF-D25kbUvc.js → chunk-DU6HZSFF-Dr7PaN7b.js} +1 -1
  52. package/dist/viewer/{chunk-EIO257PC-BqMFp5wN.js → chunk-EIO257PC-oHJkbpFs.js} +1 -1
  53. package/dist/viewer/{chunk-F27PBJKO-C7JmXEA_.js → chunk-F27PBJKO-BBCDjN53.js} +1 -1
  54. package/dist/viewer/{chunk-GMAD6QVW-C27INOB_.js → chunk-GMAD6QVW-BFHBOVJq.js} +1 -1
  55. package/dist/viewer/{chunk-GVQU2GXP-CEY5vytX.js → chunk-GVQU2GXP-BIpEZyzS.js} +1 -1
  56. package/dist/viewer/{chunk-IMKFNOWR-BQSAfnnl.js → chunk-IMKFNOWR-KEawvx8K.js} +1 -1
  57. package/dist/viewer/{chunk-L3NEJ4N5-DlFoBxMY.js → chunk-L3NEJ4N5-IwBcwkuk.js} +1 -1
  58. package/dist/viewer/{chunk-OSK3NFVY-F3_Phybw.js → chunk-OSK3NFVY-C3k_p7-w.js} +1 -1
  59. package/dist/viewer/{chunk-P2QGCYS3-09egvNok.js → chunk-P2QGCYS3-Dtm_7Lz7.js} +1 -1
  60. package/dist/viewer/{chunk-POPQ4Y6H-CV8YIoqC.js → chunk-POPQ4Y6H-CytCoNkh.js} +1 -1
  61. package/dist/viewer/{chunk-PWAF6VOD-Bz8UB2mc.js → chunk-PWAF6VOD-CyHOdyql.js} +1 -1
  62. package/dist/viewer/{chunk-SHT3W25Y-DDp6zMvV.js → chunk-SHT3W25Y-DD7pl4JI.js} +1 -1
  63. package/dist/viewer/{chunk-SVP7TREG-C8P_HXcE.js → chunk-SVP7TREG-Bu4mLQNH.js} +1 -1
  64. package/dist/viewer/{chunk-TICWLB2K-CqNIbLdD.js → chunk-TICWLB2K-sZ8FCdF0.js} +1 -1
  65. package/dist/viewer/classDiagram-ZZMXUADV-B-zT7lnC.js +1 -0
  66. package/dist/viewer/classDiagram-v2-VYDZK3BY-B-zT7lnC.js +1 -0
  67. package/dist/viewer/{cs-CZ-2BRQDIVT-BqCK2YiO.js → cs-CZ-2BRQDIVT-BYzmp2zB.js} +1 -1
  68. package/dist/viewer/{cynefin-OW5HDTMX-Cj8F5cxd.js → cynefin-OW5HDTMX-BRRxGfUD.js} +1 -1
  69. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-ao8tcFtS.js → cynefinDiagram-5FMLGOSQ-BJJG-W2c.js} +1 -1
  70. package/dist/viewer/{da-DK-5WZEPLOC-D8GWiO3u.js → da-DK-5WZEPLOC-BQMUVHri.js} +1 -1
  71. package/dist/viewer/{dagre-GXQ25YYZ-DsGmxha_.js → dagre-GXQ25YYZ-18YALgQ_.js} +1 -1
  72. package/dist/viewer/{de-DE-XR44H4JA-OJKx5xur.js → de-DE-XR44H4JA-CXVFrfP-.js} +1 -1
  73. package/dist/viewer/{diagram-S7CK7UJ4-BPqNSGqm.js → diagram-S7CK7UJ4-BxB2LRSe.js} +1 -1
  74. package/dist/viewer/{diagram-UQ7AKVKN-Hyylpo16.js → diagram-UQ7AKVKN-BcJ9Tkbs.js} +1 -1
  75. package/dist/viewer/{diagram-VSXAHHWV-CqqVLGLK.js → diagram-VSXAHHWV-_UeBcZmY.js} +1 -1
  76. package/dist/viewer/{diagram-VX7I27RA-QDUSbpnl.js → diagram-VX7I27RA-Bc9iy24S.js} +1 -1
  77. package/dist/viewer/{diagram-Z3DM3KII-BlSnfIUw.js → diagram-Z3DM3KII-gU89rmSx.js} +1 -1
  78. package/dist/viewer/{dist-PC_089aX.js → dist-0mKY9eI7.js} +1 -1
  79. package/dist/viewer/{dist-BFQmsjpz.js → dist-B01tJOMA.js} +1 -1
  80. package/dist/viewer/{dist-8PA9S6LL.js → dist-B2jUGLcW.js} +1 -1
  81. package/dist/viewer/{dist-y47EP8TD.js → dist-BhkEYAHc.js} +1 -1
  82. package/dist/viewer/{dist-dHcM14_b.js → dist-Bo6d3UKT.js} +1 -1
  83. package/dist/viewer/{dist-BLAIDSVI.js → dist-BqnvFgk0.js} +1 -1
  84. package/dist/viewer/{dist-Cwm7m3VK.js → dist-C0qQs54I.js} +1 -1
  85. package/dist/viewer/{dist-BjVw2B6k.js → dist-C3CTurMw.js} +1 -1
  86. package/dist/viewer/{dist-BKcrjsO1.js → dist-C3WYDtp3.js} +1 -1
  87. package/dist/viewer/{dist-CY5pHbTR.js → dist-COTHq9_Y.js} +1 -1
  88. package/dist/viewer/{dist-DS3MMXtI.js → dist-CRyNsNEn.js} +1 -1
  89. package/dist/viewer/{dist-DlY6E9WS.js → dist-CTW5Mm7j.js} +1 -1
  90. package/dist/viewer/{dist-C6PBT5lE.js → dist-D3D--6Bp.js} +1 -1
  91. package/dist/viewer/{dist-Bo8QJSW2.js → dist-DJY0rxct.js} +1 -1
  92. package/dist/viewer/{dist-D8bHZTnA.js → dist-DJY6L8B9.js} +1 -1
  93. package/dist/viewer/{dist-Cc-_5Hcx.js → dist-DVq4uFIZ.js} +1 -1
  94. package/dist/viewer/{dist-DpV8-atf.js → dist-DZdqkKNN.js} +1 -1
  95. package/dist/viewer/{dist-Bot6IVVV.js → dist-DcqWCvRw.js} +1 -1
  96. package/dist/viewer/{dist-CwxBiwOj.js → dist-DhcQ70Kn.js} +1 -1
  97. package/dist/viewer/{dist-BB7KGjDd.js → dist-GsD7M9aH.js} +1 -1
  98. package/dist/viewer/{dist-CnQsaM53.js → dist-Hb3V0HyK.js} +1 -1
  99. package/dist/viewer/{dist-XKj_gvVl.js → dist-QjnQrlMe.js} +4 -4
  100. package/dist/viewer/{dist-BIiCOFkh.js → dist-_PSM37a1.js} +1 -1
  101. package/dist/viewer/{dist-CdS13Sm9.js → dist-hFUF3Lsa.js} +1 -1
  102. package/dist/viewer/{ebnfDiagram-PWID7BFC-Cv8jFIx3.js → ebnfDiagram-PWID7BFC-C8HSoSRy.js} +1 -1
  103. package/dist/viewer/{el-GR-BZB4AONW-Bgcc_mhT.js → el-GR-BZB4AONW-ow3fFVLT.js} +1 -1
  104. package/dist/viewer/{en-B4ZKOASM-xfJgNr4J.js → en-B4ZKOASM-CaY3r9HU.js} +1 -1
  105. package/dist/viewer/{erDiagram-RLTQ6QDP-DlKwxifM.js → erDiagram-RLTQ6QDP-BxJx7rlQ.js} +1 -1
  106. package/dist/viewer/{es-ES-U4NZUMDT-DjVCDf-d.js → es-ES-U4NZUMDT-BMjMaVCY.js} +1 -1
  107. package/dist/viewer/{eu-ES-A7QVB2H4-B9DLpn4i.js → eu-ES-A7QVB2H4-CM4bkpMu.js} +1 -1
  108. package/dist/viewer/{eventmodeling-NTZA5JFV-DBsen_iq.js → eventmodeling-NTZA5JFV-DnbDCfB2.js} +1 -1
  109. package/dist/viewer/{fa-IR-HGAKTJCU-mcJehgzb.js → fa-IR-HGAKTJCU-BLD2tQpT.js} +1 -1
  110. package/dist/viewer/{fi-FI-Z5N7JZ37-DNSkiCdk.js → fi-FI-Z5N7JZ37-Bgn7EPoz.js} +1 -1
  111. package/dist/viewer/flowDiagram-HODETNUW-CXlFZEEj.js +1 -0
  112. package/dist/viewer/{fr-FR-RHASNOE6-Bpxco8-f.js → fr-FR-RHASNOE6-Bkw82-6W.js} +1 -1
  113. package/dist/viewer/{ganttDiagram-EL5Y4UJY-B9_jTP-f.js → ganttDiagram-EL5Y4UJY-DOR_e0je.js} +1 -1
  114. package/dist/viewer/{gitGraph-4MIJSDKK-DQ5l_Czp.js → gitGraph-4MIJSDKK-SVRQ5W4D.js} +1 -1
  115. package/dist/viewer/{gitGraphDiagram-WWUBYQGX-CNheUmFp.js → gitGraphDiagram-WWUBYQGX-CDiQ0mCt.js} +1 -1
  116. package/dist/viewer/{gl-ES-HMX3MZ6V-BDlXQ8Mo.js → gl-ES-HMX3MZ6V-BLzHqZN8.js} +1 -1
  117. package/dist/viewer/{he-IL-6SHJWFNN-D_oWBOT_.js → he-IL-6SHJWFNN-D8wU25du.js} +1 -1
  118. package/dist/viewer/{hi-IN-IWLTKZ5I-B00j5Akq.js → hi-IN-IWLTKZ5I-BL-e61Xu.js} +1 -1
  119. package/dist/viewer/{hu-HU-A5ZG7DT2-Dir0Uxpm.js → hu-HU-A5ZG7DT2-DbYToYgQ.js} +1 -1
  120. package/dist/viewer/{id-ID-SAP4L64H-CIWlaa2K.js → id-ID-SAP4L64H-CCT_QszX.js} +1 -1
  121. package/dist/viewer/{image-GAAHSSAO-eNNIIQuo.js → image-GAAHSSAO-DKoD4XKV.js} +1 -1
  122. package/dist/viewer/index.html +5 -5
  123. package/dist/viewer/index.js +2 -2
  124. package/dist/viewer/index2.css +1 -1
  125. package/dist/viewer/index3.css +88 -0
  126. package/dist/viewer/{info-A6RAGUB7-Cg2ZMBgH.js → info-A6RAGUB7-CX2C9N30.js} +1 -1
  127. package/dist/viewer/{infoDiagram-27XIBGKW-D4PQhgAE.js → infoDiagram-27XIBGKW-CN86my9R.js} +1 -1
  128. package/dist/viewer/{ishikawaDiagram-5VMMS53U-ST2q8zVR.js → ishikawaDiagram-5VMMS53U-5BluWj2f.js} +1 -1
  129. package/dist/viewer/{it-IT-JPQ66NNP-pmEG31XC.js → it-IT-JPQ66NNP-afXtP8Ww.js} +1 -1
  130. package/dist/viewer/{ja-JP-DBVTYXUO-B4zqTUsM.js → ja-JP-DBVTYXUO-DekQisaL.js} +1 -1
  131. package/dist/viewer/{journeyDiagram-3NMN7TZE-jw9cozQW.js → journeyDiagram-3NMN7TZE-CJC3KFyX.js} +1 -1
  132. package/dist/viewer/{kaa-6HZHGXH3-BbZXuqjx.js → kaa-6HZHGXH3-tRph-_T2.js} +1 -1
  133. package/dist/viewer/{kab-KAB-ZGHBKWFO-B6Dpy25G.js → kab-KAB-ZGHBKWFO-BE4QoOsA.js} +1 -1
  134. package/dist/viewer/{kanban-definition-UXKFOSKX-kKtBGERG.js → kanban-definition-UXKFOSKX-B18ysZ84.js} +1 -1
  135. package/dist/viewer/{kk-KZ-P5N5QNE5-BlT2i9fi.js → kk-KZ-P5N5QNE5-CVRotJxc.js} +1 -1
  136. package/dist/viewer/{km-KH-HSX4SM5Z-It93cDWb.js → km-KH-HSX4SM5Z-hAYTx672.js} +1 -1
  137. package/dist/viewer/{ko-KR-MTYHY66A-BE5d6K1R.js → ko-KR-MTYHY66A-QEVtuRm5.js} +1 -1
  138. package/dist/viewer/{ku-TR-6OUDTVRD-CyJeB7Dj.js → ku-TR-6OUDTVRD-CRm854Ze.js} +1 -1
  139. package/dist/viewer/{local-split-host-DwGe1ki5.js → local-split-host-B8nXcoph.js} +1 -1
  140. package/dist/viewer/{lt-LT-XHIRWOB4-B90xeOxU.js → lt-LT-XHIRWOB4-CKPgIz76.js} +1 -1
  141. package/dist/viewer/{lv-LV-5QDEKY6T-CItjDmqr.js → lv-LV-5QDEKY6T-ChfyCJQM.js} +1 -1
  142. package/dist/viewer/{mermaid-parser.core-0b8QyWBB.js → mermaid-parser.core-BVnYCq41.js} +3 -3
  143. package/dist/viewer/{mindmap-definition-YA3MSWOX-aI29Qvpk.js → mindmap-definition-YA3MSWOX-DHv3E1P_.js} +1 -1
  144. package/dist/viewer/{mr-IN-CRQNXWMA-Tce1KbsQ.js → mr-IN-CRQNXWMA-BJLGlD17.js} +1 -1
  145. package/dist/viewer/{my-MM-5M5IBNSE-CpUB2CXI.js → my-MM-5M5IBNSE-9rLlVOlt.js} +1 -1
  146. package/dist/viewer/{nb-NO-T6EIAALU-DsRuGO1k.js → nb-NO-T6EIAALU-B8VMz4zh.js} +1 -1
  147. package/dist/viewer/{nl-NL-IS3SIHDZ-BjF2156S.js → nl-NL-IS3SIHDZ-DqLxBYZV.js} +1 -1
  148. package/dist/viewer/{nn-NO-6E72VCQL-CGeF_3vr.js → nn-NO-6E72VCQL-Bo0PPFBQ.js} +1 -1
  149. package/dist/viewer/{oc-FR-POXYY2M6-DLnQnEGu.js → oc-FR-POXYY2M6-CWWRWFHX.js} +1 -1
  150. package/dist/viewer/{pa-IN-N4M65BXN-BAx2ywdg.js → pa-IN-N4M65BXN-DT0tg3Sk.js} +1 -1
  151. package/dist/viewer/{packet-AYTQ26CC-DK170Gd5.js → packet-AYTQ26CC-KGzO-wcr.js} +1 -1
  152. package/dist/viewer/{parseTrigger-YW1R9ofU.js → parseTrigger-Bu-PV9CL.js} +1 -1
  153. package/dist/viewer/{pegDiagram-XKGWAZYB-DHp6Wg_9.js → pegDiagram-XKGWAZYB-Dic4eBsi.js} +1 -1
  154. package/dist/viewer/percentages-BXMCSKIN-BS0t4tWg.js +1 -0
  155. package/dist/viewer/{pie-WAS4IAKB-BSUWPbAv.js → pie-WAS4IAKB-BYfJrbuD.js} +1 -1
  156. package/dist/viewer/{pieDiagram-E7YTZNPT-wfRRTiyk.js → pieDiagram-E7YTZNPT-CjUaUWV2.js} +1 -1
  157. package/dist/viewer/{pl-PL-T2D74RX3-BiWBdXLi.js → pl-PL-T2D74RX3-Ch27cnOo.js} +1 -1
  158. package/dist/viewer/preview.html +4 -4
  159. package/dist/viewer/preview.js +1 -1
  160. package/dist/viewer/{prod-CLoF9GCs.js → prod-TT-J6Nam.js} +8 -8
  161. package/dist/viewer/{pt-BR-5N22H2LF-CQSzKbCy.js → pt-BR-5N22H2LF-8J6Vfb7V.js} +1 -1
  162. package/dist/viewer/{pt-PT-UZXXM6DQ-CIlCAlTv.js → pt-PT-UZXXM6DQ-BX7qQNlR.js} +1 -1
  163. package/dist/viewer/{quadrantDiagram-AXDQQJYC-BtPMYaDQ.js → quadrantDiagram-AXDQQJYC-r9uBJJoA.js} +1 -1
  164. package/dist/viewer/{radar-RG4KPBEZ-BcVxV4zy.js → radar-RG4KPBEZ-DDBCvrzl.js} +1 -1
  165. package/dist/viewer/{railroad-74A4TZTK-CTa8S3gO.js → railroad-74A4TZTK-DHdJAn7o.js} +1 -1
  166. package/dist/viewer/{railroad-abnf-HS5TGJTU-OAwQkYAd.js → railroad-abnf-HS5TGJTU-D9wWd5uO.js} +1 -1
  167. package/dist/viewer/{railroad-ebnf-LZEXJU2U-C5cc5X65.js → railroad-ebnf-LZEXJU2U-D-NZ6dqJ.js} +1 -1
  168. package/dist/viewer/{railroad-peg-WCYAUIDC-BDnKRxE1.js → railroad-peg-WCYAUIDC-CyPMQZm7.js} +1 -1
  169. package/dist/viewer/{railroadDiagram-O6MQD6OU-jnRSJdUv.js → railroadDiagram-O6MQD6OU-CWrubsQf.js} +1 -1
  170. package/dist/viewer/{ref-cwone_vf.js → ref-BF7Dk-nb.js} +1 -1
  171. package/dist/viewer/{requirementDiagram-BXWQKSXE-BNTKDL1i.js → requirementDiagram-BXWQKSXE-YIdQ9sc_.js} +1 -1
  172. package/dist/viewer/{ro-RO-JPDTUUEW-QX3jx-nb.js → ro-RO-JPDTUUEW-2Pp-dKmW.js} +1 -1
  173. package/dist/viewer/route-CDT5H7Dv.js +64 -0
  174. package/dist/viewer/{route-messages-DNqJY8RF.js → route-messages-Bgmu6wjw.js} +1 -1
  175. package/dist/viewer/{ru-RU-B4JR7IUQ-C9FGD7Cs.js → ru-RU-B4JR7IUQ-DPkLOvY0.js} +1 -1
  176. package/dist/viewer/{sankeyDiagram-P5KCCOFB-Sqlj0O4h.js → sankeyDiagram-P5KCCOFB-BQftNXO2.js} +1 -1
  177. package/dist/viewer/{selection--wknfKoX.js → selection-BTJrtSto.js} +1 -1
  178. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-CPdR8yLJ.js → sequenceDiagram-WJ2MYXX4-C90CSvsu.js} +1 -1
  179. package/dist/viewer/{si-LK-N5RQ5JYF-f_2YLEad.js → si-LK-N5RQ5JYF-DjQ-ynCO.js} +1 -1
  180. package/dist/viewer/{sk-SK-C5VTKIMK-DkKosukU.js → sk-SK-C5VTKIMK-Do9H8uzR.js} +1 -1
  181. package/dist/viewer/{sl-SI-NN7IZMDC-DMIQDLDl.js → sl-SI-NN7IZMDC-bJ5rRome.js} +1 -1
  182. package/dist/viewer/{split-url-EQlIwqCq.js → split-url-D0Eu87y4.js} +3 -3
  183. package/dist/viewer/{stateDiagram-D77RDMKH-Dk8vgDDZ.js → stateDiagram-D77RDMKH-pBFTeHBj.js} +1 -1
  184. package/dist/viewer/stateDiagram-v2-MP3YSRHH-aanK4VsX.js +1 -0
  185. package/dist/viewer/subset-shared.chunk-BiJjRqIa.js +1 -0
  186. package/dist/viewer/{subset-worker.chunk-B_8bLook.js → subset-worker.chunk-3zYap8Q-.js} +1 -1
  187. package/dist/viewer/{sv-SE-XGPEYMSR-B7-5iBmq.js → sv-SE-XGPEYMSR-C0oEs72p.js} +1 -1
  188. package/dist/viewer/{swimlanes-42K2YHIH-C8ikgnYd.js → swimlanes-42K2YHIH-CTsMizz_.js} +1 -1
  189. package/dist/viewer/swimlanesDiagram-VR7AAH4N-Bgny_WIB.js +8 -0
  190. package/dist/viewer/{ta-IN-2NMHFXQM-CCuxmYHa.js → ta-IN-2NMHFXQM-B3AATr70.js} +1 -1
  191. package/dist/viewer/{th-TH-HPSO5L25-555yyoqZ.js → th-TH-HPSO5L25-DQBS-yab.js} +1 -1
  192. package/dist/viewer/{timeline-definition-24CTP7MA-C2dpylBO.js → timeline-definition-24CTP7MA-C-XiBPgr.js} +1 -1
  193. package/dist/viewer/{tr-TR-DEFEU3FU-BzupxUte.js → tr-TR-DEFEU3FU-ag7nD5kA.js} +1 -1
  194. package/dist/viewer/{treeView-Q6P3EWNA-Bo2ovp6d.js → treeView-Q6P3EWNA-SVlfuIv-.js} +1 -1
  195. package/dist/viewer/{treemap-WGGIJYW6-B_JgUt2a.js → treemap-WGGIJYW6-_ZShzHPs.js} +1 -1
  196. package/dist/viewer/{uk-UA-QMV73CPH-DRep9RrQ.js → uk-UA-QMV73CPH-BSQfUSoA.js} +1 -1
  197. package/dist/viewer/{useAriaLabelledBy-qrGtdh85.js → useAriaLabelledBy-BuWax2Z2.js} +1 -1
  198. package/dist/viewer/{useArtifactFeed-C3070Mi8.js → useArtifactFeed-BDiYn0gP.js} +1 -1
  199. package/dist/viewer/useCloudStatus-JY8n58HL.js +1 -0
  200. package/dist/viewer/{useOpenInteractionType-B0XlD3Xc.js → useOpenInteractionType-DH5mUVhj.js} +1 -1
  201. package/dist/viewer/{useTranslation-D3df1rHG.js → useTranslation-BNqJXci1.js} +1 -1
  202. package/dist/viewer/{useTypeFavicon-COeOH_8h.js → useTypeFavicon-B3gDp1sZ.js} +1 -1
  203. package/dist/viewer/{vennDiagram-4TSXK5OY-BmwVNbSU.js → vennDiagram-4TSXK5OY-BV0PYWnH.js} +1 -1
  204. package/dist/viewer/{vi-VN-M7AON7JQ-HxuRLuM7.js → vi-VN-M7AON7JQ-Dl7QA_Y_.js} +1 -1
  205. package/dist/viewer/{view-Q3sf2djn.js → view--v3LsuO9.js} +1 -1
  206. package/dist/viewer/{viewport-CFJHn_Y6-CLCrXOsP.js → viewport-CFJHn_Y6-D8gntZjd.js} +1 -1
  207. package/dist/viewer/{wardley-WFR3VGLG-D6GPmsYf.js → wardley-WFR3VGLG-BNvAuofQ.js} +1 -1
  208. package/dist/viewer/{wardleyDiagram-VM6X3IG4-BL1YKfSh.js → wardleyDiagram-VM6X3IG4-B12XuiXU.js} +1 -1
  209. package/dist/viewer/{xychartDiagram-S5SC5T6Z-9WjSzaRU.js → xychartDiagram-S5SC5T6Z-CNASGt-y.js} +1 -1
  210. package/dist/viewer/{zh-CN-LNUGB5OW-C_gHexkj.js → zh-CN-LNUGB5OW-BN9rjxsZ.js} +1 -1
  211. package/dist/viewer/{zh-HK-E62DVLB3-Dhwq5Laa.js → zh-HK-E62DVLB3-DVH9Q1Iz.js} +1 -1
  212. package/dist/viewer/{zh-TW-RAJ6MFWO-CfId5kew.js → zh-TW-RAJ6MFWO-CZYgWnVr.js} +1 -1
  213. package/dist/viewer-lib/{Canvas-BpIyaqFN.js → Canvas-Cz4jc5_1.js} +3 -3
  214. package/dist/viewer-lib/PageLoader-M5KGHqfg.js +32 -0
  215. package/dist/viewer-lib/{PhoneArtboardBar-DYEcy0Qa.js → PhoneArtboardBar-MV_lMiiq.js} +2 -2
  216. package/dist/viewer-lib/{PreviewView-DX6HLiL0.js → PreviewView-C0pRJ1cs.js} +117 -110
  217. package/dist/viewer-lib/{ReadOnlyWhiteboard-C9v2Zbtp.js → ReadOnlyWhiteboard-B5wXA3u9.js} +90 -89
  218. package/dist/viewer-lib/{i18n-QksLzzWi.js → RyugiLoader-_MZxEs2s.js} +145 -20
  219. package/dist/viewer-lib/{SnapshotDocument-CMVvuBUw.css → SnapshotDocument-BV29XJk4.css} +1 -1
  220. package/dist/viewer-lib/{SnapshotDocument-BbgwNfWB.js → SnapshotDocument-DiIRfl5L.js} +75 -75
  221. package/dist/viewer-lib/{VirtualizedEditor-uWe43zaI-CmgTXS-p.js → VirtualizedEditor-uWe43zaI-DktBg0M1.js} +2 -2
  222. package/dist/viewer-lib/{VirtualizedRenderer-C_d95FXi-BuckUTnS.js → VirtualizedRenderer-C_d95FXi-B39OU9Je.js} +3 -3
  223. package/dist/viewer-lib/{WarningsBadge-1xR7QoZB.js → WarningsBadge-p7-QKPVW.js} +1 -1
  224. package/dist/viewer-lib/{agentLook-xSyYY25N.js → agentLook-Pf_kpgWG.js} +1 -1
  225. package/dist/viewer-lib/{ar-SA-G6X2FPQ2-CEJUrUcf.js → ar-SA-G6X2FPQ2-qbH69ISs.js} +1 -1
  226. package/dist/viewer-lib/{az-AZ-76LH7QW2-D3FZr56u.js → az-AZ-76LH7QW2-CfO7QPHE.js} +1 -1
  227. package/dist/viewer-lib/{bg-BG-XCXSNQG7-DV2gd8SJ.js → bg-BG-XCXSNQG7-JgeW4H2C.js} +1 -1
  228. package/dist/viewer-lib/{bn-BD-2XOGV67Q-fNhYcJwe.js → bn-BD-2XOGV67Q-AoN4Z5CP.js} +1 -1
  229. package/dist/viewer-lib/{ca-ES-6MX7JW3Y-p45OBk_B.js → ca-ES-6MX7JW3Y-BaoeIvfa.js} +1 -1
  230. package/dist/viewer-lib/{chunk-EIO257PC-CXXH8Md3.js → chunk-EIO257PC-Ac80GdCI.js} +1 -1
  231. package/dist/viewer-lib/core.js +5 -4
  232. package/dist/viewer-lib/{cs-CZ-2BRQDIVT-CY75gnzI.js → cs-CZ-2BRQDIVT-DhxT4nbh.js} +1 -1
  233. package/dist/viewer-lib/{da-DK-5WZEPLOC-DmMaYPrm.js → da-DK-5WZEPLOC-E4_32hvX.js} +1 -1
  234. package/dist/viewer-lib/{de-DE-XR44H4JA-DYfV8p9-.js → de-DE-XR44H4JA-CH1m2Hyu.js} +1 -1
  235. package/dist/viewer-lib/{dist-CByhej7K.js → dist-4N9VL_Qo.js} +3 -3
  236. package/dist/viewer-lib/{dist-DXfPN4Ec.js → dist-BGqKudtK.js} +3 -3
  237. package/dist/viewer-lib/{dist-BC4KdWXx.js → dist-BUWnxmmt.js} +2 -2
  238. package/dist/viewer-lib/{dist-Bj7f3YVM.js → dist-Bf3vx8tA.js} +3 -3
  239. package/dist/viewer-lib/{dist-B2Nu28kR.js → dist-C2-8CMJG.js} +3 -3
  240. package/dist/viewer-lib/{dist-BTsSLXre.js → dist-COGc35cY.js} +1 -1
  241. package/dist/viewer-lib/{dist-C1rZNGDI.js → dist-CxLJJRFh.js} +3 -3
  242. package/dist/viewer-lib/{dist-Dk0VPjYJ.js → dist-D-eZ6Mt_.js} +4 -4
  243. package/dist/viewer-lib/{dist-CLtlsvg1.js → dist-D4hVC50-.js} +2 -2
  244. package/dist/viewer-lib/{dist-B4fnnsge.js → dist-DCoCMlKT.js} +2 -2
  245. package/dist/viewer-lib/{dist-DBjTRRIP.js → dist-DNSST2rW.js} +3 -3
  246. package/dist/viewer-lib/{dist-BIGmzfNO.js → dist-DjyhCAJp.js} +3 -3
  247. package/dist/viewer-lib/{dist-ot8vVTH3.js → dist-DpLE-ZgU.js} +2 -2
  248. package/dist/viewer-lib/{dist-DXMlNYXL.js → dist-DpdpsTAT.js} +2 -2
  249. package/dist/viewer-lib/{dist-C4KWXAoU.js → dist-DrhJ9opW.js} +2 -2
  250. package/dist/viewer-lib/{dist-BCKU1e8H.js → dist-Dt0ohtTi.js} +4 -4
  251. package/dist/viewer-lib/{dist-lmMdFW_t.js → dist-GyL4PJ8b.js} +3 -3
  252. package/dist/viewer-lib/{dist-CcDaSD_g.js → dist-JKcrLRtX.js} +2 -2
  253. package/dist/viewer-lib/{dist-3pnICcdO.js → dist-K_XrbIQp.js} +2 -2
  254. package/dist/viewer-lib/{dist-BHOz-HOQ.js → dist-YCAwO-Nd.js} +3 -3
  255. package/dist/viewer-lib/{dist-BqK2glT6.js → dist-e2LB4sJU.js} +4 -4
  256. package/dist/viewer-lib/{dist-DJ5tvY8x.js → dist-elxdtjg5.js} +1 -1
  257. package/dist/viewer-lib/{dist-kESmUvgx.js → dist-xhmSGfbo.js} +3 -3
  258. package/dist/viewer-lib/document.js +676 -674
  259. package/dist/viewer-lib/{el-GR-BZB4AONW-C0-Rg3rY.js → el-GR-BZB4AONW-CxMbipHk.js} +1 -1
  260. package/dist/viewer-lib/{en-B4ZKOASM-CWwARfdU.js → en-B4ZKOASM-Ch0kGhap.js} +1 -1
  261. package/dist/viewer-lib/{es-ES-U4NZUMDT-Di1ZUIVa.js → es-ES-U4NZUMDT-B9x-x6lF.js} +1 -1
  262. package/dist/viewer-lib/{eu-ES-A7QVB2H4-DfxpIbwQ.js → eu-ES-A7QVB2H4-C3VIhLkt.js} +1 -1
  263. package/dist/viewer-lib/{fa-IR-HGAKTJCU-BzJgn5bY.js → fa-IR-HGAKTJCU-Ch3qRpCM.js} +1 -1
  264. package/dist/viewer-lib/{fi-FI-Z5N7JZ37-Dgh9WYA8.js → fi-FI-Z5N7JZ37-DUj1GHLS.js} +1 -1
  265. package/dist/viewer-lib/{fr-FR-RHASNOE6-FxbVo7Yh.js → fr-FR-RHASNOE6-DHTtAWgo.js} +1 -1
  266. package/dist/viewer-lib/{gl-ES-HMX3MZ6V-BwezJSl-.js → gl-ES-HMX3MZ6V-Cze-1U2w.js} +1 -1
  267. package/dist/viewer-lib/{he-IL-6SHJWFNN-CMKZRRs9.js → he-IL-6SHJWFNN-CNXnKism.js} +1 -1
  268. package/dist/viewer-lib/{hi-IN-IWLTKZ5I-4-ZNp-DM.js → hi-IN-IWLTKZ5I-flVZhrNs.js} +1 -1
  269. package/dist/viewer-lib/{hu-HU-A5ZG7DT2-Cao8cecF.js → hu-HU-A5ZG7DT2-C37EVmEa.js} +1 -1
  270. package/dist/viewer-lib/{id-ID-SAP4L64H-CWnVrU2u.js → id-ID-SAP4L64H-ClyjpOWe.js} +1 -1
  271. package/dist/viewer-lib/{image-GAAHSSAO-5jYfRo5K.js → image-GAAHSSAO-uUIN58iQ.js} +1 -1
  272. package/dist/viewer-lib/index.js +1776 -1778
  273. package/dist/viewer-lib/{it-IT-JPQ66NNP-DiPCKoa_.js → it-IT-JPQ66NNP-Blbj9-RE.js} +1 -1
  274. package/dist/viewer-lib/{ja-JP-DBVTYXUO-CXbGOVTd.js → ja-JP-DBVTYXUO-d4IkMycP.js} +1 -1
  275. package/dist/viewer-lib/{kaa-6HZHGXH3-BkMVWloD.js → kaa-6HZHGXH3-BLfJ-cuB.js} +1 -1
  276. package/dist/viewer-lib/{kab-KAB-ZGHBKWFO-FA3Rofsx.js → kab-KAB-ZGHBKWFO-CE_PEjYa.js} +1 -1
  277. package/dist/viewer-lib/{kk-KZ-P5N5QNE5-CsDnxzrG.js → kk-KZ-P5N5QNE5-MSQ0edn8.js} +1 -1
  278. package/dist/viewer-lib/{km-KH-HSX4SM5Z-BxCiwgzA.js → km-KH-HSX4SM5Z-BYOvIsAB.js} +1 -1
  279. package/dist/viewer-lib/{ko-KR-MTYHY66A-C-7uFPlL.js → ko-KR-MTYHY66A-DBp6P6uI.js} +1 -1
  280. package/dist/viewer-lib/{ku-TR-6OUDTVRD-BILRBU5_.js → ku-TR-6OUDTVRD-DXb7ijNZ.js} +1 -1
  281. package/dist/viewer-lib/{lib-DwpunbxQ.js → lib-0D5Lgp7R.js} +1 -1
  282. package/dist/viewer-lib/{lt-LT-XHIRWOB4-B6TKZcXY.js → lt-LT-XHIRWOB4-tWY6xBEJ.js} +1 -1
  283. package/dist/viewer-lib/{lv-LV-5QDEKY6T-C-K90vIy.js → lv-LV-5QDEKY6T-B8Ew_8za.js} +1 -1
  284. package/dist/viewer-lib/{mr-IN-CRQNXWMA-K0hO9NLW.js → mr-IN-CRQNXWMA-C6A0bvr8.js} +1 -1
  285. package/dist/viewer-lib/{my-MM-5M5IBNSE-Da5X6e7B.js → my-MM-5M5IBNSE-B4eEg06F.js} +1 -1
  286. package/dist/viewer-lib/{nb-NO-T6EIAALU-D9WwGGq8.js → nb-NO-T6EIAALU-BST0y_U9.js} +1 -1
  287. package/dist/viewer-lib/{nl-NL-IS3SIHDZ-BOYOn6bl.js → nl-NL-IS3SIHDZ-R2rJHctU.js} +1 -1
  288. package/dist/viewer-lib/{nn-NO-6E72VCQL-Bwi6kGD3.js → nn-NO-6E72VCQL-DFgpBRTv.js} +1 -1
  289. package/dist/viewer-lib/{oc-FR-POXYY2M6-h8Hb5RCQ.js → oc-FR-POXYY2M6-Dfgf8Rar.js} +1 -1
  290. package/dist/viewer-lib/{pa-IN-N4M65BXN-DHJ5ZqCB.js → pa-IN-N4M65BXN-pRdhmMMX.js} +1 -1
  291. package/dist/viewer-lib/percentages-BXMCSKIN-tIRAqLi6.js +1 -0
  292. package/dist/viewer-lib/{pl-PL-T2D74RX3-DSrRpGY_.js → pl-PL-T2D74RX3-CWXo_n8w.js} +1 -1
  293. package/dist/viewer-lib/{plugin-_bGVeqI0-CUWLVkLE.js → plugin-_bGVeqI0-CEaMOsSS.js} +1 -1
  294. package/dist/viewer-lib/{prod-IPTdmVn7.js → prod-C-Yl3reA.js} +59 -59
  295. package/dist/viewer-lib/{pt-BR-5N22H2LF-Cnku-mHw.js → pt-BR-5N22H2LF-QYaR1bwz.js} +1 -1
  296. package/dist/viewer-lib/{pt-PT-UZXXM6DQ-CI4Lw12R.js → pt-PT-UZXXM6DQ-B3Xmhk77.js} +1 -1
  297. package/dist/viewer-lib/{ro-RO-JPDTUUEW-Z0rMTCBA.js → ro-RO-JPDTUUEW-c4iCK_Pl.js} +1 -1
  298. package/dist/viewer-lib/{route-messages-BHovJ4nB.js → route-messages-BOdX3qq4.js} +20 -20
  299. package/dist/viewer-lib/{ru-RU-B4JR7IUQ-DH7fwhiu.js → ru-RU-B4JR7IUQ-D6bje_j4.js} +1 -1
  300. package/dist/viewer-lib/{si-LK-N5RQ5JYF-BFG1Q032.js → si-LK-N5RQ5JYF-CSCCQJ8w.js} +1 -1
  301. package/dist/viewer-lib/{sk-SK-C5VTKIMK-nKDfxLLq.js → sk-SK-C5VTKIMK-Y0-0nXpW.js} +1 -1
  302. package/dist/viewer-lib/{sl-SI-NN7IZMDC-zdGtFnJ4.js → sl-SI-NN7IZMDC-LLRODh8d.js} +1 -1
  303. package/dist/viewer-lib/{stylex-H52XSOyN.css → stylex-CCivaCRo.css} +88 -0
  304. package/dist/viewer-lib/subset-shared.chunk-Bkt4jbTb.js +2 -0
  305. package/dist/viewer-lib/{subset-worker.chunk-DHe1FqQ-.js → subset-worker.chunk-CFZCkpb_.js} +2 -2
  306. package/dist/viewer-lib/{sv-SE-XGPEYMSR-MVhH_h3w.js → sv-SE-XGPEYMSR-r-pwNhnE.js} +1 -1
  307. package/dist/viewer-lib/{ta-IN-2NMHFXQM-C_I2r20T.js → ta-IN-2NMHFXQM-BpeAXDlG.js} +1 -1
  308. package/dist/viewer-lib/{th-TH-HPSO5L25-DQ6MPZ1r.js → th-TH-HPSO5L25-DVXFh9KL.js} +1 -1
  309. package/dist/viewer-lib/thumbnail.js +3 -1
  310. package/dist/viewer-lib/{tr-TR-DEFEU3FU-BNz_PazH.js → tr-TR-DEFEU3FU-CywClmkn.js} +1 -1
  311. package/dist/viewer-lib/types/src/shared/brand.d.ts +2 -1
  312. package/dist/viewer-lib/types/src/viewer/components/PageLoader.d.ts +3 -0
  313. package/dist/viewer-lib/types/src/viewer/components/RyugiLoader.d.ts +5 -0
  314. package/dist/viewer-lib/types/src/viewer/lib/pageSettle.d.ts +2 -0
  315. package/dist/viewer-lib/types/src/viewer/library/core.d.ts +3 -0
  316. package/dist/viewer-lib/{uk-UA-QMV73CPH-Dn_Qrdeq.js → uk-UA-QMV73CPH-CBuRoxji.js} +1 -1
  317. package/dist/viewer-lib/{vi-VN-M7AON7JQ-C777_3GC.js → vi-VN-M7AON7JQ-CUq13H3z.js} +1 -1
  318. package/dist/viewer-lib/{viewport-CFJHn_Y6-BrrKKQGr.js → viewport-CFJHn_Y6-NgIgENqw.js} +1 -1
  319. package/dist/viewer-lib/{zh-CN-LNUGB5OW-yPc5aNBV.js → zh-CN-LNUGB5OW-BRivCR5s.js} +1 -1
  320. package/dist/viewer-lib/{zh-HK-E62DVLB3-DL9Y2kPe.js → zh-HK-E62DVLB3-DaZXYMh5.js} +1 -1
  321. package/dist/viewer-lib/{zh-TW-RAJ6MFWO-3VDE8SB2.js → zh-TW-RAJ6MFWO-B7IvI564.js} +1 -1
  322. package/package.json +1 -1
  323. package/dist/viewer/ArtboardLayout-9iOfvOR4.js +0 -12
  324. package/dist/viewer/ArtifactList-Binw79VZ.js +0 -2
  325. package/dist/viewer/DocumentLayout-D7hzy6qw.js +0 -2
  326. package/dist/viewer/DocumentPage-whdrobXS.js +0 -4
  327. package/dist/viewer/DropdownMenu-CZUIT5ss.js +0 -1
  328. package/dist/viewer/PreviewLayout-Dvv4xVya.js +0 -2
  329. package/dist/viewer/WhiteboardLayout-fX2Dx4Ro.js +0 -3
  330. package/dist/viewer/channel-OqtHMQX0.js +0 -1
  331. package/dist/viewer/classDiagram-ZZMXUADV-CVstJoyx.js +0 -1
  332. package/dist/viewer/classDiagram-v2-VYDZK3BY-CVstJoyx.js +0 -1
  333. package/dist/viewer/flowDiagram-HODETNUW-CzgiVLhq.js +0 -1
  334. package/dist/viewer/percentages-BXMCSKIN-DvCjqEYt.js +0 -1
  335. package/dist/viewer/route-BWL5AGYx.js +0 -64
  336. package/dist/viewer/stateDiagram-v2-MP3YSRHH-Ds741M59.js +0 -1
  337. package/dist/viewer/subset-shared.chunk-BwlAfs_X.js +0 -1
  338. package/dist/viewer/swimlanesDiagram-VR7AAH4N-CIbxLGch.js +0 -8
  339. package/dist/viewer/useCloudStatus-BJMLC8Dr.js +0 -1
  340. package/dist/viewer-lib/percentages-BXMCSKIN-CN_vO7hH.js +0 -1
  341. package/dist/viewer-lib/subset-shared.chunk-BI1a3Hz4.js +0 -2
package/dist/server.cjs CHANGED
@@ -48376,14 +48376,14 @@ var require_websocket_server = __commonJS({
48376
48376
  });
48377
48377
 
48378
48378
  // src/server/main.ts
48379
- var import_node_child_process5 = require("node:child_process");
48379
+ var import_node_child_process6 = require("node:child_process");
48380
48380
  var import_node_crypto13 = __toESM(require("node:crypto"), 1);
48381
48381
  var import_node_fs46 = __toESM(require("node:fs"), 1);
48382
48382
  var import_node_os2 = __toESM(require("node:os"), 1);
48383
- var import_node_path42 = __toESM(require("node:path"), 1);
48383
+ var import_node_path43 = __toESM(require("node:path"), 1);
48384
48384
 
48385
48385
  // package.json
48386
- var version = "1.68.3";
48386
+ var version = "1.70.0";
48387
48387
 
48388
48388
  // src/server/browser-focus.ts
48389
48389
  var import_node_child_process = require("node:child_process");
@@ -49191,7 +49191,7 @@ function clearCredentials(file) {
49191
49191
  // src/server/hub.ts
49192
49192
  var import_node_fs43 = __toESM(require("node:fs"), 1);
49193
49193
  var import_node_http2 = __toESM(require("node:http"), 1);
49194
- var import_node_path40 = __toESM(require("node:path"), 1);
49194
+ var import_node_path41 = __toESM(require("node:path"), 1);
49195
49195
 
49196
49196
  // src/server/access.ts
49197
49197
  var LOOPBACK = /* @__PURE__ */ new Set(["localhost", "::1", "[::1]"]);
@@ -49220,7 +49220,7 @@ var navigationAllowed = (secFetchSite) => secFetchSite === void 0 || secFetchSit
49220
49220
  // src/server/app.ts
49221
49221
  var import_node_fs40 = __toESM(require("node:fs"), 1);
49222
49222
  var import_node_http = __toESM(require("node:http"), 1);
49223
- var import_node_path37 = __toESM(require("node:path"), 1);
49223
+ var import_node_path38 = __toESM(require("node:path"), 1);
49224
49224
 
49225
49225
  // src/shared/cloud.ts
49226
49226
  var MAX_ARTIFACT_BYTES = 20 * 1024 * 1024;
@@ -49626,9 +49626,9 @@ function watchArtifacts(ctx) {
49626
49626
  var PAGE_CSP = "sandbox allow-scripts allow-modals allow-forms allow-popups allow-downloads";
49627
49627
  var DOCUMENT_ASSET_CSP = "sandbox; default-src 'none'";
49628
49628
  var ISOLATED_BOARD_CSP = "worker-src 'none'";
49629
- function contentCsp(type, path45, ownOrigin) {
49629
+ function contentCsp(type, path46, ownOrigin) {
49630
49630
  if (type === "html") return PAGE_CSP;
49631
- if (type === "document") return path45.endsWith(".html") ? PAGE_CSP : DOCUMENT_ASSET_CSP;
49631
+ if (type === "document") return path46.endsWith(".html") ? PAGE_CSP : DOCUMENT_ASSET_CSP;
49632
49632
  return ownOrigin ? ISOLATED_BOARD_CSP : "sandbox allow-scripts";
49633
49633
  }
49634
49634
 
@@ -49657,7 +49657,7 @@ function routeBoardRequest(req, pathname) {
49657
49657
 
49658
49658
  // src/server/context.ts
49659
49659
  var import_node_fs36 = __toESM(require("node:fs"), 1);
49660
- var import_node_path33 = __toESM(require("node:path"), 1);
49660
+ var import_node_path34 = __toESM(require("node:path"), 1);
49661
49661
 
49662
49662
  // src/server/agent-review.ts
49663
49663
  var import_node_crypto5 = __toESM(require("node:crypto"), 1);
@@ -52040,7 +52040,12 @@ function mergeReferrers({
52040
52040
 
52041
52041
  // src/shared/brand.ts
52042
52042
  var RYUGI_MARK_VIEWBOX = "0 0 512 512";
52043
- 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>';
52043
+ var RYUGI_MARK_STROKES = [
52044
+ "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",
52045
+ "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",
52046
+ "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"
52047
+ ];
52048
+ 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="${RYUGI_MARK_STROKES.join(" ")}"/></g></g>`;
52044
52049
 
52045
52050
  // src/shared/locale.ts
52046
52051
  var HTML_LANG = { en: "en", zh: "zh-CN" };
@@ -66665,7 +66670,7 @@ function createCloudRoutes(options2) {
66665
66670
  const challenge = import_node_crypto10.default.createHash("sha256").update(verifier).digest("base64url");
66666
66671
  return `${origin}/auth/cli?port=${options2.port()}&state=${state2}&challenge=${challenge}`;
66667
66672
  };
66668
- const cloudFetch = async (method, path45, body) => {
66673
+ const cloudFetch = async (method, path46, body) => {
66669
66674
  const credentials = readCredentials(credentialsFile2, origin);
66670
66675
  if (!credentials) throw new SignedOut();
66671
66676
  const headers = { Authorization: `Bearer ${credentials.token}` };
@@ -66679,7 +66684,7 @@ function createCloudRoutes(options2) {
66679
66684
  }
66680
66685
  let res;
66681
66686
  try {
66682
- res = await fetch(`${origin}${path45}`, { method, headers, body: payload });
66687
+ res = await fetch(`${origin}${path46}`, { method, headers, body: payload });
66683
66688
  } catch (err) {
66684
66689
  throw new CloudRefused(502, `could not reach ${origin}: ${err.message}`);
66685
66690
  }
@@ -66800,7 +66805,7 @@ function createCloudRoutes(options2) {
66800
66805
  const content = {
66801
66806
  title: inspected.title,
66802
66807
  payload: inspected.payload,
66803
- files: hashed.map(({ path: path45, hash: hash2 }) => ({ path: path45, hash: hash2 }))
66808
+ files: hashed.map(({ path: path46, hash: hash2 }) => ({ path: path46, hash: hash2 }))
66804
66809
  };
66805
66810
  const fingerprint = sha(
66806
66811
  JSON.stringify({
@@ -69117,19 +69122,19 @@ var ElementDOMSlot = class _ElementDOMSlot extends DOMSlot {
69117
69122
  }
69118
69123
  };
69119
69124
  function indexPath(root, child) {
69120
- const path45 = [];
69125
+ const path46 = [];
69121
69126
  let node = child;
69122
69127
  for (; node !== root && node !== null; node = node.parentNode) {
69123
69128
  let i7 = 0;
69124
69129
  for (let sibling = node.previousSibling; sibling !== null; sibling = sibling.previousSibling) {
69125
69130
  i7++;
69126
69131
  }
69127
- path45.push(i7);
69132
+ path46.push(i7);
69128
69133
  }
69129
69134
  if (!(node === root)) {
69130
69135
  formatDevErrorMessage(`indexPath: root is not a parent of child`);
69131
69136
  }
69132
- return path45.reverse();
69137
+ return path46.reverse();
69133
69138
  }
69134
69139
  var TEXT_MUTATION_VARIANCE = 100;
69135
69140
  var isProcessingMutations = false;
@@ -78489,9 +78494,9 @@ function getActiveElementDeep(root) {
78489
78494
  function getComposedEventTarget(event) {
78490
78495
  const target = event.target;
78491
78496
  if (target !== null && isHTMLElement(target) && target.shadowRoot !== null && typeof event.composedPath === "function") {
78492
- const path45 = event.composedPath();
78493
- if (path45.length > 0) {
78494
- return path45[0];
78497
+ const path46 = event.composedPath();
78498
+ if (path46.length > 0) {
78499
+ return path46[0];
78495
78500
  }
78496
78501
  }
78497
78502
  return target;
@@ -120629,10 +120634,10 @@ function $placeBlocks(runtime, $isTarget) {
120629
120634
  }
120630
120635
  const documentKey = $documentKey();
120631
120636
  for (const [key2, frame] of targets) {
120632
- const path45 = placeOf(frame);
120633
- let id3 = derivePositionalId(documentKey, path45);
120637
+ const path46 = placeOf(frame);
120638
+ let id3 = derivePositionalId(documentKey, path46);
120634
120639
  for (let attempt = 1; taken.has(id3); attempt++) {
120635
- id3 = derivePositionalId(documentKey, `${path45}#${attempt}`);
120640
+ id3 = derivePositionalId(documentKey, `${path46}#${attempt}`);
120636
120641
  }
120637
120642
  taken.add(id3);
120638
120643
  placed.set(key2, id3);
@@ -153382,27 +153387,27 @@ var sqrtTall = function sqrtTall2(extraVinculum, hLinePad2, viewBoxHeight) {
153382
153387
  };
153383
153388
  var sqrtPath = function sqrtPath2(size, extraVinculum, viewBoxHeight) {
153384
153389
  extraVinculum = 1e3 * extraVinculum;
153385
- var path45 = "";
153390
+ var path46 = "";
153386
153391
  switch (size) {
153387
153392
  case "sqrtMain":
153388
- path45 = sqrtMain(extraVinculum, hLinePad);
153393
+ path46 = sqrtMain(extraVinculum, hLinePad);
153389
153394
  break;
153390
153395
  case "sqrtSize1":
153391
- path45 = sqrtSize1(extraVinculum, hLinePad);
153396
+ path46 = sqrtSize1(extraVinculum, hLinePad);
153392
153397
  break;
153393
153398
  case "sqrtSize2":
153394
- path45 = sqrtSize2(extraVinculum, hLinePad);
153399
+ path46 = sqrtSize2(extraVinculum, hLinePad);
153395
153400
  break;
153396
153401
  case "sqrtSize3":
153397
- path45 = sqrtSize3(extraVinculum, hLinePad);
153402
+ path46 = sqrtSize3(extraVinculum, hLinePad);
153398
153403
  break;
153399
153404
  case "sqrtSize4":
153400
- path45 = sqrtSize4(extraVinculum, hLinePad);
153405
+ path46 = sqrtSize4(extraVinculum, hLinePad);
153401
153406
  break;
153402
153407
  case "sqrtTall":
153403
- path45 = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);
153408
+ path46 = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);
153404
153409
  }
153405
- return path45;
153410
+ return path46;
153406
153411
  };
153407
153412
  var innerPath = function innerPath2(name, height) {
153408
153413
  switch (name) {
@@ -157616,8 +157621,8 @@ var svgData = {
157616
157621
  };
157617
157622
  var staticSvg = function staticSvg2(value, options2) {
157618
157623
  var _svgData$value = svgData[value], pathName = _svgData$value[0], width = _svgData$value[1], height = _svgData$value[2];
157619
- var path45 = new PathNode(pathName);
157620
- var svgNode = new SvgNode([path45], {
157624
+ var path46 = new PathNode(pathName);
157625
+ var svgNode = new SvgNode([path46], {
157621
157626
  "width": makeEm(width),
157622
157627
  "height": makeEm(height),
157623
157628
  // Override CSS rule `.katex svg { width: 100% }`
@@ -158760,8 +158765,8 @@ var stretchySvg = function stretchySvg2(group, options2) {
158760
158765
  pathName = "tilde" + imgIndex;
158761
158766
  }
158762
158767
  }
158763
- var path45 = new PathNode(pathName);
158764
- var svgNode = new SvgNode([path45], {
158768
+ var path46 = new PathNode(pathName);
158769
+ var svgNode = new SvgNode([path46], {
158765
158770
  "width": "100%",
158766
158771
  "height": makeEm(_height),
158767
158772
  "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight,
@@ -159975,8 +159980,8 @@ var makeGlyphSpan = function makeGlyphSpan2(symbol, font, mode, options2) {
159975
159980
  };
159976
159981
  var makeInner = function makeInner2(ch4, height, options2) {
159977
159982
  var width = fontMetricsData["Size4-Regular"][ch4.charCodeAt(0)] ? fontMetricsData["Size4-Regular"][ch4.charCodeAt(0)][4] : fontMetricsData["Size1-Regular"][ch4.charCodeAt(0)][4];
159978
- var path45 = new PathNode("inner", innerPath(ch4, Math.round(1e3 * height)));
159979
- var svgNode = new SvgNode([path45], {
159983
+ var path46 = new PathNode("inner", innerPath(ch4, Math.round(1e3 * height)));
159984
+ var svgNode = new SvgNode([path46], {
159980
159985
  "width": makeEm(width),
159981
159986
  "height": makeEm(height),
159982
159987
  // Override CSS rule `.katex svg { width: 100% }`
@@ -160145,10 +160150,10 @@ var makeStackedDelim = function makeStackedDelim2(delim, heightTotal, center, op
160145
160150
  var midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal;
160146
160151
  var viewBoxHeight = Math.round(realHeightTotal * 1e3);
160147
160152
  var pathStr = tallDelim(svgLabel, Math.round(midHeight * 1e3));
160148
- var path45 = new PathNode(svgLabel, pathStr);
160153
+ var path46 = new PathNode(svgLabel, pathStr);
160149
160154
  var width = makeEm(viewBoxWidth / 1e3);
160150
160155
  var height = makeEm(viewBoxHeight / 1e3);
160151
- var svg = new SvgNode([path45], {
160156
+ var svg = new SvgNode([path46], {
160152
160157
  "width": width,
160153
160158
  "height": height,
160154
160159
  "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight
@@ -160189,8 +160194,8 @@ var makeStackedDelim = function makeStackedDelim2(delim, heightTotal, center, op
160189
160194
  var vbPad = 80;
160190
160195
  var emPad = 0.08;
160191
160196
  var sqrtSvg = function sqrtSvg2(sqrtName, height, viewBoxHeight, extraVinculum, options2) {
160192
- var path45 = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);
160193
- var pathNode = new PathNode(sqrtName, path45);
160197
+ var path46 = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);
160198
+ var pathNode = new PathNode(sqrtName, path46);
160194
160199
  var svg = new SvgNode([pathNode], {
160195
160200
  // Note: 1000:1 ratio of viewBox to document em width.
160196
160201
  "width": "400em",
@@ -160689,8 +160694,8 @@ var htmlBuilder$7 = (group, options2) => {
160689
160694
  var angleHeight = inner2.height + inner2.depth + lineWeight + clearance;
160690
160695
  inner2.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight);
160691
160696
  var viewBoxHeight = Math.floor(1e3 * angleHeight * scale);
160692
- var path45 = phasePath(viewBoxHeight);
160693
- var svgNode = new SvgNode([new PathNode("phase", path45)], {
160697
+ var path46 = phasePath(viewBoxHeight);
160698
+ var svgNode = new SvgNode([new PathNode("phase", path46)], {
160694
160699
  "width": "400em",
160695
160700
  "height": makeEm(viewBoxHeight / 1e3),
160696
160701
  "viewBox": "0 0 400000 " + viewBoxHeight,
@@ -167231,9 +167236,9 @@ function _loadWasmModule(sync, filepath, src, imports2) {
167231
167236
  var isNode2 = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
167232
167237
  if (filepath && isNode2) {
167233
167238
  var fs50 = null;
167234
- var path45 = null;
167239
+ var path46 = null;
167235
167240
  return new Promise((resolve, reject) => {
167236
- fs50.readFile(path45.resolve(__dirname, filepath), (error, buffer) => {
167241
+ fs50.readFile(path46.resolve(__dirname, filepath), (error, buffer) => {
167237
167242
  if (error != null) {
167238
167243
  reject(error);
167239
167244
  } else {
@@ -168536,10 +168541,10 @@ var LoroDoc = class _LoroDoc {
168536
168541
  * @param {string} path
168537
168542
  * @returns {Value | Container | undefined}
168538
168543
  */
168539
- getByPath(path45) {
168544
+ getByPath(path46) {
168540
168545
  try {
168541
168546
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
168542
- const ptr0 = passStringToWasm0(path45, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
168547
+ const ptr0 = passStringToWasm0(path46, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
168543
168548
  const len0 = WASM_VECTOR_LEN;
168544
168549
  wasm.lorodoc_getByPath(retptr, this.__wbg_ptr, ptr0, len0);
168545
168550
  var r02 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
@@ -176160,16 +176165,16 @@ var Diff = class {
176160
176165
  }
176161
176166
  }
176162
176167
  }
176163
- addToPath(path45, added, removed, oldPosInc, options2) {
176164
- const last = path45.lastComponent;
176168
+ addToPath(path46, added, removed, oldPosInc, options2) {
176169
+ const last = path46.lastComponent;
176165
176170
  if (last && !options2.oneChangePerToken && last.added === added && last.removed === removed) {
176166
176171
  return {
176167
- oldPos: path45.oldPos + oldPosInc,
176172
+ oldPos: path46.oldPos + oldPosInc,
176168
176173
  lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent }
176169
176174
  };
176170
176175
  } else {
176171
176176
  return {
176172
- oldPos: path45.oldPos + oldPosInc,
176177
+ oldPos: path46.oldPos + oldPosInc,
176173
176178
  lastComponent: { count: 1, added, removed, previousComponent: last }
176174
176179
  };
176175
176180
  }
@@ -181705,6 +181710,42 @@ var MAX_RUNTIME_WARNINGS = 20;
181705
181710
  var MAX_COMMENT_OP = 64 * 1024;
181706
181711
  var MAX_DOCUMENT_UPDATE = 8 * 1024 * 1024;
181707
181712
 
181713
+ // src/server/project-name.ts
181714
+ var import_node_child_process3 = require("node:child_process");
181715
+ var import_node_path27 = __toESM(require("node:path"), 1);
181716
+ var SCP_LIKE = /^(?:[^@/]+@)?[^:/]+:(?!\/)(.+)$/;
181717
+ function remotePath(url) {
181718
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(url)) {
181719
+ try {
181720
+ const parsed = new URL(url);
181721
+ return parsed.protocol === "file:" ? null : parsed.pathname;
181722
+ } catch {
181723
+ return null;
181724
+ }
181725
+ }
181726
+ return SCP_LIKE.exec(url)?.[1] ?? null;
181727
+ }
181728
+ function remoteProject(url) {
181729
+ const pathname = remotePath(url.trim());
181730
+ if (!pathname) return null;
181731
+ const segments = pathname.replace(/\.git\/?$/, "").split("/").filter(Boolean);
181732
+ if (segments.length < 2) return null;
181733
+ return segments.join("/").toLowerCase();
181734
+ }
181735
+ function publishedProjectName(dir) {
181736
+ try {
181737
+ const url = (0, import_node_child_process3.execFileSync)("git", ["-C", dir, "remote", "get-url", "origin"], {
181738
+ encoding: "utf8",
181739
+ timeout: 2e3,
181740
+ stdio: ["ignore", "pipe", "ignore"],
181741
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
181742
+ });
181743
+ return remoteProject(url) ?? import_node_path27.default.basename(dir);
181744
+ } catch {
181745
+ return import_node_path27.default.basename(dir);
181746
+ }
181747
+ }
181748
+
181708
181749
  // src/server/artifact-file.ts
181709
181750
  var import_node_fs30 = __toESM(require("node:fs"), 1);
181710
181751
  var RESOLVE = {
@@ -181935,7 +181976,7 @@ async function handleRelay(ctx, key2, body, conn, contentOrigin = "") {
181935
181976
 
181936
181977
  // src/server/selection.ts
181937
181978
  var import_node_fs31 = __toESM(require("node:fs"), 1);
181938
- var import_node_path27 = __toESM(require("node:path"), 1);
181979
+ var import_node_path28 = __toESM(require("node:path"), 1);
181939
181980
 
181940
181981
  // src/shared/selection.ts
181941
181982
  var SELECTION_FULL_NODES = 20;
@@ -182080,7 +182121,7 @@ function readAnySelection(value) {
182080
182121
  function createSelectionStore(stateDir, exists) {
182081
182122
  const tabs = /* @__PURE__ */ new Map();
182082
182123
  let clock = 0;
182083
- const fileOf2 = (kind, id3) => import_node_path27.default.join(stateDir, kind, id3, "selection.json");
182124
+ const fileOf2 = (kind, id3) => import_node_path28.default.join(stateDir, kind, id3, "selection.json");
182084
182125
  const write = (kind, id3) => {
182085
182126
  let winner;
182086
182127
  for (const tab of tabs.values()) {
@@ -182130,7 +182171,7 @@ function createSelectionStore(stateDir, exists) {
182130
182171
  for (const kind of ["artboard", "document", "whiteboard"]) {
182131
182172
  let ids;
182132
182173
  try {
182133
- ids = import_node_fs31.default.readdirSync(import_node_path27.default.join(stateDir, kind));
182174
+ ids = import_node_fs31.default.readdirSync(import_node_path28.default.join(stateDir, kind));
182134
182175
  } catch {
182135
182176
  continue;
182136
182177
  }
@@ -182143,15 +182184,15 @@ function createSelectionStore(stateDir, exists) {
182143
182184
  // src/server/verify-recordings.ts
182144
182185
  var import_node_crypto11 = __toESM(require("node:crypto"), 1);
182145
182186
  var import_node_fs33 = __toESM(require("node:fs"), 1);
182146
- var import_node_path29 = __toESM(require("node:path"), 1);
182187
+ var import_node_path30 = __toESM(require("node:path"), 1);
182147
182188
 
182148
182189
  // src/server/recording-trim.ts
182149
- var import_node_child_process3 = require("node:child_process");
182190
+ var import_node_child_process4 = require("node:child_process");
182150
182191
  var import_node_fs32 = __toESM(require("node:fs"), 1);
182151
- var import_node_path28 = __toESM(require("node:path"), 1);
182192
+ var import_node_path29 = __toESM(require("node:path"), 1);
182152
182193
  function run2(command, args, signal3) {
182153
182194
  return new Promise((resolve, reject) => {
182154
- (0, import_node_child_process3.execFile)(
182195
+ (0, import_node_child_process4.execFile)(
182155
182196
  command,
182156
182197
  args,
182157
182198
  { encoding: "utf8", maxBuffer: 16 * 1024 * 1024, timeout: 12e4, signal: signal3 },
@@ -182240,9 +182281,9 @@ async function trimRecording(input, output, signal3) {
182240
182281
  if (start > 0 || end < duration) status = "trimmed";
182241
182282
  }
182242
182283
  if (status === "trimmed") {
182243
- const temporary = import_node_fs32.default.mkdtempSync(import_node_path28.default.join(import_node_path28.default.dirname(output), ".trim-"));
182284
+ const temporary = import_node_fs32.default.mkdtempSync(import_node_path29.default.join(import_node_path29.default.dirname(output), ".trim-"));
182244
182285
  try {
182245
- const encoded = import_node_path28.default.join(temporary, "clip.mp4");
182286
+ const encoded = import_node_path29.default.join(temporary, "clip.mp4");
182246
182287
  await run2(
182247
182288
  "ffmpeg",
182248
182289
  [
@@ -182305,7 +182346,7 @@ function createVerifyRecordings(options2) {
182305
182346
  const notify = (job) => {
182306
182347
  if (current(job)) options2.onChange(job.artifact);
182307
182348
  };
182308
- const cacheDir = import_node_path29.default.join(options2.stateDir, "recordings");
182349
+ const cacheDir = import_node_path30.default.join(options2.stateDir, "recordings");
182309
182350
  async function process2(job) {
182310
182351
  let temporary;
182311
182352
  try {
@@ -182322,9 +182363,9 @@ function createVerifyRecordings(options2) {
182322
182363
  return;
182323
182364
  }
182324
182365
  const key2 = digest2(`${POLICY}:${digest2(bytes)}`);
182325
- const dir = import_node_path29.default.join(cacheDir, key2);
182326
- const output = import_node_path29.default.join(dir, "clip.mp4");
182327
- const metadata = import_node_path29.default.join(dir, "result.json");
182366
+ const dir = import_node_path30.default.join(cacheDir, key2);
182367
+ const output = import_node_path30.default.join(dir, "clip.mp4");
182368
+ const metadata = import_node_path30.default.join(dir, "result.json");
182328
182369
  let cached;
182329
182370
  try {
182330
182371
  const saved = JSON.parse(import_node_fs33.default.readFileSync(metadata, "utf8"));
@@ -182334,9 +182375,9 @@ function createVerifyRecordings(options2) {
182334
182375
  }
182335
182376
  if (!cached) {
182336
182377
  import_node_fs33.default.mkdirSync(cacheDir, { recursive: true });
182337
- temporary = import_node_fs33.default.mkdtempSync(import_node_path29.default.join(cacheDir, ".prepare-"));
182338
- const input = import_node_path29.default.join(temporary, "capture");
182339
- const prepared = import_node_path29.default.join(temporary, "clip.mp4");
182378
+ temporary = import_node_fs33.default.mkdtempSync(import_node_path30.default.join(cacheDir, ".prepare-"));
182379
+ const input = import_node_path30.default.join(temporary, "capture");
182380
+ const prepared = import_node_path30.default.join(temporary, "clip.mp4");
182340
182381
  import_node_fs33.default.writeFileSync(input, bytes);
182341
182382
  const result = await (options2.prepare ?? trimRecording)(
182342
182383
  input,
@@ -182494,7 +182535,7 @@ function createVerifyRecordings(options2) {
182494
182535
 
182495
182536
  // src/server/whiteboard.ts
182496
182537
  var import_node_fs34 = __toESM(require("node:fs"), 1);
182497
- var import_node_path30 = __toESM(require("node:path"), 1);
182538
+ var import_node_path31 = __toESM(require("node:path"), 1);
182498
182539
 
182499
182540
  // src/server/whiteboard-lint.ts
182500
182541
  var LINE_TYPES = /* @__PURE__ */ new Set(["arrow", "line"]);
@@ -182544,16 +182585,16 @@ var segmentsCross = (a5, b6, c10, d10) => side(a5, b6, c10) * side(a5, b6, d10)
182544
182585
  var pathOf = (element) => {
182545
182586
  const { points: points2 } = element;
182546
182587
  if (!Array.isArray(points2) || points2.length < 2) return null;
182547
- const path45 = [];
182588
+ const path46 = [];
182548
182589
  for (const point2 of points2) {
182549
182590
  if (!Array.isArray(point2) || typeof point2[0] !== "number" || typeof point2[1] !== "number")
182550
182591
  return null;
182551
- path45.push([(element.x ?? 0) + point2[0], (element.y ?? 0) + point2[1]]);
182592
+ path46.push([(element.x ?? 0) + point2[0], (element.y ?? 0) + point2[1]]);
182552
182593
  }
182553
- return path45;
182594
+ return path46;
182554
182595
  };
182555
- var segmentsOf = (path45) => path45.slice(1).map((end, index) => [path45[index], end]);
182556
- var lengthOf = (path45) => segmentsOf(path45).reduce((sum2, [a5, b6]) => sum2 + Math.hypot(b6[0] - a5[0], b6[1] - a5[1]), 0);
182596
+ var segmentsOf = (path46) => path46.slice(1).map((end, index) => [path46[index], end]);
182597
+ var lengthOf = (path46) => segmentsOf(path46).reduce((sum2, [a5, b6]) => sum2 + Math.hypot(b6[0] - a5[0], b6[1] - a5[1]), 0);
182557
182598
  var boundIds = (element) => [element.startBinding?.elementId, element.endBinding?.elementId].filter(
182558
182599
  (id3) => typeof id3 === "string"
182559
182600
  );
@@ -182590,18 +182631,18 @@ function arrowWarnings(live3, geometry) {
182590
182631
  );
182591
182632
  const arrows = live3.flatMap((element) => {
182592
182633
  if (!LINE_TYPES.has(element.type) || ryugi(element).author !== "agent") return [];
182593
- const path45 = pathOf(element);
182594
- return path45 ? [{ element, path: path45, bound: boundIds(element) }] : [];
182634
+ const path46 = pathOf(element);
182635
+ return path46 ? [{ element, path: path46, bound: boundIds(element) }] : [];
182595
182636
  });
182596
182637
  const warnings = [];
182597
- for (const { element, path: path45 } of arrows) {
182598
- const ends = [path45[0], path45.at(-1)];
182638
+ for (const { element, path: path46 } of arrows) {
182639
+ const ends = [path46[0], path46.at(-1)];
182599
182640
  const around = obstacles.filter(
182600
182641
  (shape2) => !ends.some((end) => holds(geometry[shape2.id], end))
182601
182642
  );
182602
182643
  for (const shape2 of around) {
182603
182644
  const box2 = inset(geometry[shape2.id], GRAZE);
182604
- if (segmentsOf(path45).some(([a5, b6]) => segmentHits(a5, b6, box2)))
182645
+ if (segmentsOf(path46).some(([a5, b6]) => segmentHits(a5, b6, box2)))
182605
182646
  warnings.push(
182606
182647
  `arrow ${element.id} crosses ${shape2.id} \u2014 move ${shape2.id} or bend the arrow around it`
182607
182648
  );
@@ -182619,7 +182660,7 @@ function arrowWarnings(live3, geometry) {
182619
182660
  const need = Math.ceil(
182620
182661
  (Math.abs(dx2) * label.w + Math.abs(dy2) * label.h) / chord + LABEL_MARGIN
182621
182662
  );
182622
- const length = lengthOf(path45);
182663
+ const length = lengthOf(path46);
182623
182664
  if (length < need)
182624
182665
  warnings.push(
182625
182666
  `label of arrow ${element.id} needs the arrow to be at least ${need} px long (now ${Math.round(length)}) \u2014 move its ends apart or shorten the label`
@@ -182651,7 +182692,7 @@ function readWhiteboard(dir, id3) {
182651
182692
  const version3 = latestMtime(dir);
182652
182693
  let source;
182653
182694
  try {
182654
- source = import_node_fs34.default.readFileSync(import_node_path30.default.join(dir, ENTRY_FILE.whiteboard), "utf8");
182695
+ source = import_node_fs34.default.readFileSync(import_node_path31.default.join(dir, ENTRY_FILE.whiteboard), "utf8");
182655
182696
  } catch {
182656
182697
  return {
182657
182698
  title: id3,
@@ -182774,7 +182815,7 @@ function onlyPage(result, page, pages) {
182774
182815
  }
182775
182816
 
182776
182817
  // src/server/whiteboard-comments.ts
182777
- var import_node_path31 = __toESM(require("node:path"), 1);
182818
+ var import_node_path32 = __toESM(require("node:path"), 1);
182778
182819
 
182779
182820
  // src/shared/whiteboard/comments.ts
182780
182821
  var MAX_ELEMENTS = 50;
@@ -182899,7 +182940,7 @@ function createWhiteboardComments(options2) {
182899
182940
  let found = stores.get(id3);
182900
182941
  if (!found) {
182901
182942
  found = createStore(
182902
- import_node_path31.default.join(options2.root, "whiteboard", id3, "comments.json"),
182943
+ import_node_path32.default.join(options2.root, "whiteboard", id3, "comments.json"),
182903
182944
  rules,
182904
182945
  options2.names
182905
182946
  );
@@ -182996,7 +183037,7 @@ function createWhiteboardComments(options2) {
182996
183037
 
182997
183038
  // src/server/whiteboards.ts
182998
183039
  var import_node_fs35 = __toESM(require("node:fs"), 1);
182999
- var import_node_path32 = __toESM(require("node:path"), 1);
183040
+ var import_node_path33 = __toESM(require("node:path"), 1);
183000
183041
 
183001
183042
  // src/server/whiteboard-merge.ts
183002
183043
  var nonce = () => Math.floor(Math.random() * 2 ** 31);
@@ -183151,9 +183192,9 @@ function createWhiteboards(opts) {
183151
183192
  const geometries = /* @__PURE__ */ new Map();
183152
183193
  const renders = /* @__PURE__ */ new Map();
183153
183194
  const legacyCleared = /* @__PURE__ */ new Set();
183154
- const stateDir = opts.stateDir ?? import_node_path32.default.join(opts.root, ".state");
183155
- const stateOf2 = (id3) => import_node_path32.default.join(stateDir, "whiteboard", id3);
183156
- const pageStateOf = (id3, page) => import_node_path32.default.join(stateOf2(id3), "pages", page);
183195
+ const stateDir = opts.stateDir ?? import_node_path33.default.join(opts.root, ".state");
183196
+ const stateOf2 = (id3) => import_node_path33.default.join(stateDir, "whiteboard", id3);
183197
+ const pageStateOf = (id3, page) => import_node_path33.default.join(stateOf2(id3), "pages", page);
183157
183198
  const keyOf = (id3, page) => `${id3}
183158
183199
  ${page}`;
183159
183200
  const list2 = (id3) => {
@@ -183161,7 +183202,7 @@ ${page}`;
183161
183202
  if (existing) return existing;
183162
183203
  const dir = resolveArtifactDir(opts.root, "whiteboard", id3);
183163
183204
  if (!dir) return null;
183164
- const file = import_node_path32.default.join(dir, PAGES_FILE);
183205
+ const file = import_node_path33.default.join(dir, PAGES_FILE);
183165
183206
  const text5 = readText3(file);
183166
183207
  const parsed = parsePages(text5);
183167
183208
  const created = {
@@ -183195,7 +183236,7 @@ ${page}`;
183195
183236
  if (existing) return existing;
183196
183237
  const dir = resolveArtifactDir(opts.root, "whiteboard", id3);
183197
183238
  if (!dir) return null;
183198
- const file = import_node_path32.default.join(dir, pageFileOf(page));
183239
+ const file = import_node_path33.default.join(dir, pageFileOf(page));
183199
183240
  const text5 = readText3(file);
183200
183241
  const parsed = text5 === null ? { scene: emptyScene() } : parseScene(text5, pageFileOf(page));
183201
183242
  const session = {
@@ -183224,7 +183265,7 @@ ${page}`;
183224
183265
  session.pending = false;
183225
183266
  const text5 = serializeScene(session.scene);
183226
183267
  if (text5 === session.written) return;
183227
- import_node_fs35.default.mkdirSync(import_node_path32.default.dirname(session.file), { recursive: true });
183268
+ import_node_fs35.default.mkdirSync(import_node_path33.default.dirname(session.file), { recursive: true });
183228
183269
  writeTextAtomic(session.file, text5);
183229
183270
  session.written = text5;
183230
183271
  };
@@ -183290,7 +183331,7 @@ ${page}`;
183290
183331
  if (legacyCleared.has(id3)) return;
183291
183332
  legacyCleared.add(id3);
183292
183333
  for (const name of ["render.png", "render.json", "geometry.json"])
183293
- import_node_fs35.default.rmSync(import_node_path32.default.join(stateOf2(id3), name), { force: true });
183334
+ import_node_fs35.default.rmSync(import_node_path33.default.join(stateOf2(id3), name), { force: true });
183294
183335
  };
183295
183336
  const known = (id3, page) => isPageId(page) && resolveArtifactDir(opts.root, "whiteboard", id3) !== null;
183296
183337
  const live3 = (id3) => livePages(normalized2(id3)?.pages ?? []);
@@ -183359,19 +183400,19 @@ ${page}`;
183359
183400
  reportGeometry(id3, geometry, page = MAIN_PAGE) {
183360
183401
  if (!validGeometry(geometry) || !known(id3, page)) return false;
183361
183402
  geometries.set(keyOf(id3, page), geometry);
183362
- writeJsonAtomic(import_node_path32.default.join(pageStateOf(id3, page), "geometry.json"), geometry);
183403
+ writeJsonAtomic(import_node_path33.default.join(pageStateOf(id3, page), "geometry.json"), geometry);
183363
183404
  stateWritten(id3);
183364
183405
  return true;
183365
183406
  },
183366
183407
  render: (id3, page = MAIN_PAGE) => renders.get(keyOf(id3, page)) ?? null,
183367
- renderPathOf: (id3, page = MAIN_PAGE) => import_node_path32.default.join(pageStateOf(id3, page), "render.png"),
183408
+ renderPathOf: (id3, page = MAIN_PAGE) => import_node_path33.default.join(pageStateOf(id3, page), "render.png"),
183368
183409
  reportRender(id3, png, sceneVersion, page = MAIN_PAGE) {
183369
183410
  if (!Number.isFinite(sceneVersion) || !known(id3, page)) return false;
183370
183411
  import_node_fs35.default.mkdirSync(pageStateOf(id3, page), { recursive: true });
183371
- writeTextAtomic(import_node_path32.default.join(pageStateOf(id3, page), "render.png"), png);
183412
+ writeTextAtomic(import_node_path33.default.join(pageStateOf(id3, page), "render.png"), png);
183372
183413
  const meta = { sceneVersion, at: (/* @__PURE__ */ new Date()).toISOString() };
183373
183414
  renders.set(keyOf(id3, page), meta);
183374
- writeJsonAtomic(import_node_path32.default.join(pageStateOf(id3, page), "render.json"), meta);
183415
+ writeJsonAtomic(import_node_path33.default.join(pageStateOf(id3, page), "render.json"), meta);
183375
183416
  stateWritten(id3);
183376
183417
  return true;
183377
183418
  },
@@ -183425,15 +183466,15 @@ function titleOf(payload) {
183425
183466
  return "Untitled artifact";
183426
183467
  }
183427
183468
  function createServerContext(options2) {
183428
- const root = import_node_path33.default.resolve(options2.root);
183429
- const viewerDir = import_node_path33.default.resolve(options2.viewerDir);
183430
- const runtimeDir = options2.runtimeDir ? import_node_path33.default.resolve(options2.runtimeDir) : null;
183431
- const stateDir = import_node_path33.default.join(root, ".state");
183469
+ const root = import_node_path34.default.resolve(options2.root);
183470
+ const viewerDir = import_node_path34.default.resolve(options2.viewerDir);
183471
+ const runtimeDir = options2.runtimeDir ? import_node_path34.default.resolve(options2.runtimeDir) : null;
183472
+ const stateDir = import_node_path34.default.join(root, ".state");
183432
183473
  import_node_fs36.default.mkdirSync(stateDir, { recursive: true, mode: 448 });
183433
- import_node_fs36.default.writeFileSync(import_node_path33.default.join(stateDir, ".gitignore"), "*\n");
183474
+ import_node_fs36.default.writeFileSync(import_node_path34.default.join(stateDir, ".gitignore"), "*\n");
183434
183475
  if (options2.configFile) ensureConfig(options2.configFile);
183435
- const portFile = import_node_path33.default.join(stateDir, ".last-port");
183436
- const tokenFile = import_node_path33.default.join(stateDir, ".last-token");
183476
+ const portFile = import_node_path34.default.join(stateDir, ".last-port");
183477
+ const tokenFile = import_node_path34.default.join(stateDir, ".last-token");
183437
183478
  const mount = options2.mount;
183438
183479
  const token = mount?.token ?? (readPersisted(tokenFile) || randomToken());
183439
183480
  if (!mount) import_node_fs36.default.writeFileSync(tokenFile, `${token}
@@ -183475,7 +183516,7 @@ function createServerContext(options2) {
183475
183516
  const pages = whiteboards.livePages(id3).flatMap((page) => {
183476
183517
  const scene = whiteboards.scene(id3, page.id);
183477
183518
  if (!scene) return [];
183478
- const bytes = import_node_fs36.default.statSync(import_node_path33.default.join(dir, pageFileOf(page.id)), { throwIfNoEntry: false })?.size ?? 0;
183519
+ const bytes = import_node_fs36.default.statSync(import_node_path34.default.join(dir, pageFileOf(page.id)), { throwIfNoEntry: false })?.size ?? 0;
183479
183520
  return [
183480
183521
  {
183481
183522
  id: page.id,
@@ -183548,8 +183589,8 @@ function createServerContext(options2) {
183548
183589
  });
183549
183590
  const avatars = createAvatars(options2.fetch);
183550
183591
  const names = commentNames({
183551
- agentFile: import_node_path33.default.join(stateDir, "agent"),
183552
- projectDir: import_node_path33.default.resolve(root, "../.."),
183592
+ agentFile: import_node_path34.default.join(stateDir, "agent"),
183593
+ projectDir: import_node_path34.default.resolve(root, "../.."),
183553
183594
  cloud: options2.cloud
183554
183595
  });
183555
183596
  const whiteboardComments = createWhiteboardComments({
@@ -183663,7 +183704,7 @@ function createServerContext(options2) {
183663
183704
  const cloud = options2.cloud && options2.configFile ? createCloudRoutes({
183664
183705
  ...options2.cloud,
183665
183706
  configFile: options2.configFile,
183666
- project: import_node_path33.default.basename(import_node_path33.default.resolve(root, "../..")),
183707
+ project: publishedProjectName(import_node_path34.default.resolve(root, "../..")),
183667
183708
  address: (ref) => artifactPath(root, ref.type, ref.id).split("/").pop(),
183668
183709
  references: (ref) => referencesOf(root, `${ref.type}/${ref.id}`),
183669
183710
  referrers: (ref) => referrersOf(root, `${ref.type}/${ref.id}`),
@@ -183674,7 +183715,7 @@ function createServerContext(options2) {
183674
183715
  }
183675
183716
  }) : null;
183676
183717
  const autoPublisher = cloud ? createAutoPublisher({
183677
- stateFile: import_node_path33.default.join(stateDir, "auto-publish.json"),
183718
+ stateFile: import_node_path34.default.join(stateDir, "auto-publish.json"),
183678
183719
  enabled: cloud.autoPublishEnabled,
183679
183720
  token: cloud.token,
183680
183721
  publish: async (key2) => {
@@ -183735,7 +183776,7 @@ function createServerContext(options2) {
183735
183776
  ref.type === "artboard" ? { ...extra, ...artboardHints(ref.id) } : extra
183736
183777
  );
183737
183778
  writeJsonAtomic(
183738
- import_node_path33.default.join(stateDir, ref.type, ref.id, "backlinks.json"),
183779
+ import_node_path34.default.join(stateDir, ref.type, ref.id, "backlinks.json"),
183739
183780
  backlinksOf(ref.id, ref.type)
183740
183781
  );
183741
183782
  } catch (err) {
@@ -183830,7 +183871,7 @@ function createServerContext(options2) {
183830
183871
  };
183831
183872
  return ctx;
183832
183873
  }
183833
- var projectName = (ctx) => import_node_path33.default.basename(import_node_path33.default.dirname(import_node_path33.default.dirname(ctx.root)));
183874
+ var projectName = (ctx) => import_node_path34.default.basename(import_node_path34.default.dirname(import_node_path34.default.dirname(ctx.root)));
183834
183875
 
183835
183876
  // ../../node_modules/.pnpm/ws@8.18.3/node_modules/ws/wrapper.mjs
183836
183877
  var import_stream = __toESM(require_stream(), 1);
@@ -184005,7 +184046,7 @@ function createRelayClient(options2) {
184005
184046
 
184006
184047
  // src/server/routes/content.ts
184007
184048
  var import_node_fs37 = __toESM(require("node:fs"), 1);
184008
- var import_node_path34 = __toESM(require("node:path"), 1);
184049
+ var import_node_path35 = __toESM(require("node:path"), 1);
184009
184050
  function serveContent(ctx, res, rest, range, mode = "main") {
184010
184051
  const { root, runtimeDir, recordings, options: options2 } = ctx;
184011
184052
  if (rest.startsWith("runtime/")) {
@@ -184093,7 +184134,7 @@ var robotsRoute = {
184093
184134
  path: "/robots.txt",
184094
184135
  auth: "public",
184095
184136
  handle: (_req, res, ctx) => {
184096
- sendFile(res, import_node_path34.default.join(ctx.viewerDir, "robots.txt"));
184137
+ sendFile(res, import_node_path35.default.join(ctx.viewerDir, "robots.txt"));
184097
184138
  }
184098
184139
  };
184099
184140
  var contentRoute = {
@@ -184141,7 +184182,7 @@ var createBoardRequestHandler = (ctx) => (req, res) => {
184141
184182
 
184142
184183
  // src/server/routes/agent.ts
184143
184184
  var import_node_fs38 = __toESM(require("node:fs"), 1);
184144
- var import_node_path35 = __toESM(require("node:path"), 1);
184185
+ var import_node_path36 = __toESM(require("node:path"), 1);
184145
184186
 
184146
184187
  // src/shared/whiteboard/summary.ts
184147
184188
  var STICKY_FILL = "#ffec99";
@@ -184272,7 +184313,7 @@ var CHECK_BROWSER_WAIT_MS = 1e4;
184272
184313
  var agentName = (fields) => typeof fields.agent === "string" && fields.agent.length > 0 && fields.agent.length <= 100 ? fields.agent : void 0;
184273
184314
  var blockIdsOf = async (ctx, id3, dir) => {
184274
184315
  await (await ctx.documents.open(id3))?.flush();
184275
- const state2 = parseDocument2(import_node_fs38.default.readFileSync(import_node_path35.default.join(dir, "doc.xml"), "utf8"));
184316
+ const state2 = parseDocument2(import_node_fs38.default.readFileSync(import_node_path36.default.join(dir, "doc.xml"), "utf8"));
184276
184317
  return new Set(
184277
184318
  state2.root.children.flatMap(
184278
184319
  (block) => block.$?.blockId ? [block.$.blockId] : []
@@ -184457,7 +184498,7 @@ async function serveAgentCheck(res, ctx, type, id3, page = null) {
184457
184498
  let merging = false;
184458
184499
  if (ref.type === "document") {
184459
184500
  const session = await documents.open(ref.id);
184460
- const text5 = await import_node_fs38.default.promises.readFile(import_node_path35.default.join(dir, "doc.xml"), "utf8").catch(() => null);
184501
+ const text5 = await import_node_fs38.default.promises.readFile(import_node_path36.default.join(dir, "doc.xml"), "utf8").catch(() => null);
184461
184502
  if (session && text5 !== null) {
184462
184503
  session.onFileText(text5);
184463
184504
  const timeout = new Promise(
@@ -184470,7 +184511,7 @@ async function serveAgentCheck(res, ctx, type, id3, page = null) {
184470
184511
  if (ref.type === "whiteboard") await whiteboardCaughtUp(ctx, ref.id, checkedPages);
184471
184512
  const payload = ctx.writeState(ref, dir);
184472
184513
  const written = JSON.parse(
184473
- await import_node_fs38.default.promises.readFile(import_node_path35.default.join(stateDir, ref.type, ref.id, "warnings.json"), "utf8")
184514
+ await import_node_fs38.default.promises.readFile(import_node_path36.default.join(stateDir, ref.type, ref.id, "warnings.json"), "utf8")
184474
184515
  );
184475
184516
  const state2 = page === null ? written : {
184476
184517
  ...written,
@@ -184637,7 +184678,7 @@ async function serveAgentWhiteboardScene(req, res, ctx, id3) {
184637
184678
  sendJson(res, 404, { error: `whiteboard/${id3} not found` });
184638
184679
  return;
184639
184680
  }
184640
- const selection = readSelectedIds(import_node_path35.default.join(ctx.stateDir, "whiteboard", id3, "selection.json"));
184681
+ const selection = readSelectedIds(import_node_path36.default.join(ctx.stateDir, "whiteboard", id3, "selection.json"));
184641
184682
  const summary = summarize(scene, { ...frame ? { frame } : {}, selected: selection });
184642
184683
  sendJson(res, 200, {
184643
184684
  artifact: `whiteboard/${id3}`,
@@ -184961,8 +185002,8 @@ function shape(element, at7, scale) {
184961
185002
  case "arrow":
184962
185003
  case "line":
184963
185004
  case "freedraw": {
184964
- const path45 = points(element).map(([dx2, dy2]) => at7(x9 + dx2, y5 + dy2).join(",")).join(" ");
184965
- return path45 ? `<polyline points="${path45}" stroke="${stroke}" stroke-width="1.4" fill="none" stroke-linecap="round"/>` : "";
185005
+ const path46 = points(element).map(([dx2, dy2]) => at7(x9 + dx2, y5 + dy2).join(",")).join(" ");
185006
+ return path46 ? `<polyline points="${path46}" stroke="${stroke}" stroke-width="1.4" fill="none" stroke-linecap="round"/>` : "";
184966
185007
  }
184967
185008
  case "text": {
184968
185009
  const size = Math.max(4, Math.min(28, h9 || 12 * scale));
@@ -185232,7 +185273,9 @@ function renderThumbnail(artifact, value) {
185232
185273
  25,
185233
185274
  505,
185234
185275
  3
185235
- ).map((line2, i7) => text4(42, 160 + i7 * 36, line2, 25, "var(--ink)", 600)).join("")}${text4(42, 318, `${artifact.project ?? "RYUGI"} / HTML`, 11, "var(--muted)")}`;
185276
+ ).map((line2, i7) => text4(42, 160 + i7 * 36, line2, 25, "var(--ink)", 600)).join(
185277
+ ""
185278
+ )}${text4(42, 318, `${artifact.project?.split("/").at(-1) ?? "RYUGI"} / HTML`, 11, "var(--muted)")}`;
185236
185279
  }
185237
185280
  return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 360"><title>${escape6(title)}</title>${STYLE3}${body}</svg>`;
185238
185281
  }
@@ -185499,7 +185542,7 @@ var clientSocketRoute = {
185499
185542
 
185500
185543
  // src/server/routes/viewer.ts
185501
185544
  var import_node_fs39 = __toESM(require("node:fs"), 1);
185502
- var import_node_path36 = __toESM(require("node:path"), 1);
185545
+ var import_node_path37 = __toESM(require("node:path"), 1);
185503
185546
 
185504
185547
  // src/shared/type-icons.ts
185505
185548
  var TYPE_GLYPHS = {
@@ -185628,8 +185671,8 @@ function serveShell(req, res, ctx, { pathname, key: key2 }, embedded) {
185628
185671
  if (ref) headers["Referrer-Policy"] = "same-origin";
185629
185672
  if (key2 !== null && !loopback)
185630
185673
  headers["Set-Cookie"] = `${ctx.cookieName}=${ctx.token}; HttpOnly; SameSite=Strict; Path=/`;
185631
- const entry = preview2 && import_node_fs39.default.existsSync(import_node_path36.default.join(viewerDir, "preview.html")) ? "preview.html" : "index.html";
185632
- void import_node_fs39.default.promises.readFile(import_node_path36.default.join(viewerDir, entry), "utf8").then((template) => {
185674
+ const entry = preview2 && import_node_fs39.default.existsSync(import_node_path37.default.join(viewerDir, "preview.html")) ? "preview.html" : "index.html";
185675
+ void import_node_fs39.default.promises.readFile(import_node_path37.default.join(viewerDir, entry), "utf8").then((template) => {
185633
185676
  const html = viewerPage(template, {
185634
185677
  title,
185635
185678
  description,
@@ -185990,7 +186033,7 @@ async function startArtifactsServer(options2) {
185990
186033
  const boardServer = import_node_http.default.createServer(handleBoardRequest);
185991
186034
  if (mount) ctx.boardPort = mount.boardPort;
185992
186035
  else if (loopback) {
185993
- const boardPortFile = import_node_path37.default.join(stateDir, BOARD_PORT_FILE);
186036
+ const boardPortFile = import_node_path38.default.join(stateDir, BOARD_PORT_FILE);
185994
186037
  const previousBoardPort = Number(readPersisted(boardPortFile));
185995
186038
  try {
185996
186039
  ctx.boardPort = await listen(
@@ -186020,7 +186063,7 @@ async function startArtifactsServer(options2) {
186020
186063
  initialChanges.push({ ref: entry, payload, files: [] });
186021
186064
  if (entry.type === "document") void ctx.documents.open(entry.id);
186022
186065
  }
186023
- writeJsonAtomic(import_node_path37.default.join(stateDir, "server-info"), {
186066
+ writeJsonAtomic(import_node_path38.default.join(stateDir, "server-info"), {
186024
186067
  type: "server-started",
186025
186068
  url,
186026
186069
  port,
@@ -186104,7 +186147,7 @@ async function startArtifactsServer(options2) {
186104
186147
  });
186105
186148
  await ctx.documents.close().catch(() => void 0);
186106
186149
  ctx.whiteboards.close();
186107
- if (mount) import_node_fs40.default.rmSync(import_node_path37.default.join(stateDir, "server-info"), { force: true });
186150
+ if (mount) import_node_fs40.default.rmSync(import_node_path38.default.join(stateDir, "server-info"), { force: true });
186108
186151
  }
186109
186152
  };
186110
186153
  }
@@ -186112,27 +186155,27 @@ var mountArtifactsProject = (options2) => startArtifactsServer(options2);
186112
186155
 
186113
186156
  // src/server/artifact-index.ts
186114
186157
  var import_node_fs42 = __toESM(require("node:fs"), 1);
186115
- var import_node_path39 = __toESM(require("node:path"), 1);
186158
+ var import_node_path40 = __toESM(require("node:path"), 1);
186116
186159
 
186117
186160
  // src/server/machine.ts
186118
186161
  var import_node_fs41 = __toESM(require("node:fs"), 1);
186119
186162
  var import_node_os = __toESM(require("node:os"), 1);
186120
- var import_node_path38 = __toESM(require("node:path"), 1);
186163
+ var import_node_path39 = __toESM(require("node:path"), 1);
186121
186164
  var DORMANT_AFTER_MS = 7 * 24 * 60 * 60 * 1e3;
186122
186165
  function machinePaths(env = process.env, homedir = import_node_os.default.homedir()) {
186123
- const home = env.RYUGI_SERVER_HOME || import_node_path38.default.join(homedir, ".ryugi", "server");
186166
+ const home = env.RYUGI_SERVER_HOME || import_node_path39.default.join(homedir, ".ryugi", "server");
186124
186167
  return {
186125
186168
  home,
186126
- pid: import_node_path38.default.join(home, "server.pid"),
186127
- serverId: import_node_path38.default.join(home, "server-instance-id"),
186128
- info: import_node_path38.default.join(home, "server-info"),
186129
- log: import_node_path38.default.join(home, "server.log"),
186130
- version: import_node_path38.default.join(home, "server-version"),
186131
- lock: import_node_path38.default.join(home, "start.lock"),
186132
- key: import_node_path38.default.join(home, "key"),
186133
- projects: import_node_path38.default.join(home, "projects.json"),
186134
- settings: import_node_path38.default.join(home, "settings.json"),
186135
- stopped: import_node_path38.default.join(home, "server-stopped")
186169
+ pid: import_node_path39.default.join(home, "server.pid"),
186170
+ serverId: import_node_path39.default.join(home, "server-instance-id"),
186171
+ info: import_node_path39.default.join(home, "server-info"),
186172
+ log: import_node_path39.default.join(home, "server.log"),
186173
+ version: import_node_path39.default.join(home, "server-version"),
186174
+ lock: import_node_path39.default.join(home, "start.lock"),
186175
+ key: import_node_path39.default.join(home, "key"),
186176
+ projects: import_node_path39.default.join(home, "projects.json"),
186177
+ settings: import_node_path39.default.join(home, "settings.json"),
186178
+ stopped: import_node_path39.default.join(home, "server-stopped")
186136
186179
  };
186137
186180
  }
186138
186181
  function ensureHome(home) {
@@ -186141,14 +186184,14 @@ function ensureHome(home) {
186141
186184
  }
186142
186185
  var realDir = (dir) => {
186143
186186
  try {
186144
- return import_node_fs41.default.realpathSync(import_node_path38.default.resolve(dir));
186187
+ return import_node_fs41.default.realpathSync(import_node_path39.default.resolve(dir));
186145
186188
  } catch {
186146
- return import_node_path38.default.resolve(dir);
186189
+ return import_node_path39.default.resolve(dir);
186147
186190
  }
186148
186191
  };
186149
186192
  var validEntry = (value) => {
186150
186193
  const entry = value;
186151
- return !!entry && typeof entry.dir === "string" && import_node_path38.default.isAbsolute(entry.dir) && Number.isFinite(entry.registeredAt) && Number.isFinite(entry.lastUsedAt);
186194
+ return !!entry && typeof entry.dir === "string" && import_node_path39.default.isAbsolute(entry.dir) && Number.isFinite(entry.registeredAt) && Number.isFinite(entry.lastUsedAt);
186152
186195
  };
186153
186196
  function readProjects(file) {
186154
186197
  try {
@@ -186159,7 +186202,7 @@ function readProjects(file) {
186159
186202
  }
186160
186203
  }
186161
186204
  function writeProjects(file, projects) {
186162
- ensureHome(import_node_path38.default.dirname(file));
186205
+ ensureHome(import_node_path39.default.dirname(file));
186163
186206
  const tmp = `${file}.${process.pid}.tmp`;
186164
186207
  import_node_fs41.default.writeFileSync(tmp, `${JSON.stringify({ projects }, null, 2)}
186165
186208
  `, { mode: 384 });
@@ -186180,7 +186223,7 @@ function removeProject(file, projectDir) {
186180
186223
  const kept = projects.filter((entry) => entry.dir !== dir);
186181
186224
  if (kept.length !== projects.length) writeProjects(file, kept);
186182
186225
  }
186183
- var artifactsRootOf = (projectDir) => import_node_path38.default.join(projectDir, ".ryugi", "artifacts");
186226
+ var artifactsRootOf = (projectDir) => import_node_path39.default.join(projectDir, ".ryugi", "artifacts");
186184
186227
  function pruneProjects(file) {
186185
186228
  const projects = readProjects(file);
186186
186229
  const kept = projects.filter((entry) => import_node_fs41.default.existsSync(artifactsRootOf(entry.dir)));
@@ -186192,7 +186235,7 @@ var isDormant = (entry, now = Date.now()) => now - entry.lastUsedAt > DORMANT_AF
186192
186235
  // src/server/artifact-index.ts
186193
186236
  var readAddress = (dir) => {
186194
186237
  try {
186195
- const value = import_node_fs42.default.readFileSync(import_node_path39.default.join(dir, ".artifact-id"), "utf8").trim();
186238
+ const value = import_node_fs42.default.readFileSync(import_node_path40.default.join(dir, ".artifact-id"), "utf8").trim();
186196
186239
  return isArtifactAddress(value) ? value : null;
186197
186240
  } catch {
186198
186241
  return null;
@@ -186299,7 +186342,7 @@ var ARTIFACT_KEY = /^(?:artboard|document|html)\/[a-z0-9][a-z0-9-]*$/;
186299
186342
  var SEP = "\n";
186300
186343
  var realDir2 = (dir) => {
186301
186344
  try {
186302
- return import_node_fs43.default.realpathSync(import_node_path40.default.resolve(dir));
186345
+ return import_node_fs43.default.realpathSync(import_node_path41.default.resolve(dir));
186303
186346
  } catch {
186304
186347
  return null;
186305
186348
  }
@@ -186357,7 +186400,7 @@ async function startHub(options2) {
186357
186400
  runtimeDir: options2.runtimeDir,
186358
186401
  host: options2.host,
186359
186402
  urlHost: options2.urlHost,
186360
- configFile: import_node_path40.default.join(project, ".ryugi", "config.json"),
186403
+ configFile: import_node_path41.default.join(project, ".ryugi", "config.json"),
186361
186404
  cloud: options2.cloud,
186362
186405
  fetch: options2.fetch,
186363
186406
  debounceMs: options2.debounceMs,
@@ -186372,7 +186415,7 @@ async function startHub(options2) {
186372
186415
  }
186373
186416
  return pending;
186374
186417
  };
186375
- const configFileOf = (project) => import_node_path40.default.join(project, ".ryugi", "config.json");
186418
+ const configFileOf = (project) => import_node_path41.default.join(project, ".ryugi", "config.json");
186376
186419
  const servedBy = (project) => {
186377
186420
  const mounted = ready.get(project);
186378
186421
  if (mounted) return mounted.served();
@@ -186419,10 +186462,10 @@ async function startHub(options2) {
186419
186462
  }) : null;
186420
186463
  const origin = `http://${urlHostForHttp(options2.urlHost)}:${port}`;
186421
186464
  const url = loopback ? `${origin}/` : `${origin}/?key=${options2.token}`;
186422
- const infoFileOf = (project) => import_node_path40.default.join(artifactsRootOf(project), ".state", "server-info");
186465
+ const infoFileOf = (project) => import_node_path41.default.join(artifactsRootOf(project), ".state", "server-info");
186423
186466
  const writeCompatInfo = (project) => {
186424
186467
  try {
186425
- import_node_fs43.default.mkdirSync(import_node_path40.default.dirname(infoFileOf(project)), { recursive: true, mode: 448 });
186468
+ import_node_fs43.default.mkdirSync(import_node_path41.default.dirname(infoFileOf(project)), { recursive: true, mode: 448 });
186426
186469
  writeJsonAtomic(infoFileOf(project), {
186427
186470
  type: "server-started",
186428
186471
  url,
@@ -186441,7 +186484,7 @@ async function startHub(options2) {
186441
186484
  counts.set(entry.project, (counts.get(entry.project) ?? 0) + 1);
186442
186485
  return ordered3().map((entry) => ({
186443
186486
  dir: entry.dir,
186444
- name: import_node_path40.default.basename(entry.dir),
186487
+ name: import_node_path41.default.basename(entry.dir),
186445
186488
  lastUsedAt: entry.lastUsedAt,
186446
186489
  dormant: isDormant(entry),
186447
186490
  artifacts: counts.get(entry.dir) ?? 0
@@ -186454,7 +186497,7 @@ async function startHub(options2) {
186454
186497
  const root = artifactsRootOf(entry.dir);
186455
186498
  const listed = listArtifacts(root);
186456
186499
  for (const warning of listed.warnings)
186457
- warnings.push(`${import_node_path40.default.basename(entry.dir)}: ${warning}`);
186500
+ warnings.push(`${import_node_path41.default.basename(entry.dir)}: ${warning}`);
186458
186501
  for (const artifact of listed.artifacts) {
186459
186502
  try {
186460
186503
  artifacts.push({
@@ -186505,7 +186548,7 @@ async function startHub(options2) {
186505
186548
  };
186506
186549
  const publishedIn = (project, cloudId) => {
186507
186550
  try {
186508
- const { artifacts } = readConfig(import_node_path40.default.join(project, ".ryugi", "config.json")).config;
186551
+ const { artifacts } = readConfig(import_node_path41.default.join(project, ".ryugi", "config.json")).config;
186509
186552
  return Object.values(artifacts).some((entry) => entry.cloud?.id === cloudId);
186510
186553
  } catch {
186511
186554
  return false;
@@ -186578,7 +186621,7 @@ async function startHub(options2) {
186578
186621
  return entry;
186579
186622
  };
186580
186623
  const remove2 = async (dir) => {
186581
- const real = realDir2(dir) ?? import_node_path40.default.resolve(dir);
186624
+ const real = realDir2(dir) ?? import_node_path41.default.resolve(dir);
186582
186625
  removeProject(projectsFile, real);
186583
186626
  index.rescan();
186584
186627
  import_node_fs43.default.rmSync(infoFileOf(real), { force: true });
@@ -186745,9 +186788,9 @@ async function startHub(options2) {
186745
186788
  }
186746
186789
 
186747
186790
  // src/server/relaunch.ts
186748
- var import_node_child_process4 = require("node:child_process");
186791
+ var import_node_child_process5 = require("node:child_process");
186749
186792
  var import_node_fs44 = __toESM(require("node:fs"), 1);
186750
- var import_node_path41 = __toESM(require("node:path"), 1);
186793
+ var import_node_path42 = __toESM(require("node:path"), 1);
186751
186794
  var LAUNCHER_COMMAND = /^node "(.+)"$/;
186752
186795
  var WAIT_THEN_RUN = `
186753
186796
  const [pid, file, ...args] = process.argv.slice(1);
@@ -186761,17 +186804,17 @@ tick();
186761
186804
  function relaunchCommand(env, serverDir) {
186762
186805
  const launcher = LAUNCHER_COMMAND.exec(env.RYUGI_ARTIFACTS_LAUNCHER ?? "")?.[1];
186763
186806
  if (launcher) return [process.execPath, launcher];
186764
- const cli = import_node_path41.default.join(serverDir, "cli.cjs");
186807
+ const cli = import_node_path42.default.join(serverDir, "cli.cjs");
186765
186808
  return import_node_fs44.default.existsSync(cli) ? [process.execPath, cli] : null;
186766
186809
  }
186767
186810
  function pinLauncherRelease(env, homedir, version3, now = Date.now()) {
186768
- const releases = import_node_path41.default.join(
186769
- env.XDG_CACHE_HOME || import_node_path41.default.join(homedir, ".cache"),
186811
+ const releases = import_node_path42.default.join(
186812
+ env.XDG_CACHE_HOME || import_node_path42.default.join(homedir, ".cache"),
186770
186813
  "ryugi",
186771
186814
  "artifacts"
186772
186815
  );
186773
186816
  import_node_fs44.default.mkdirSync(releases, { recursive: true });
186774
- const file = import_node_path41.default.join(releases, "latest.json");
186817
+ const file = import_node_path42.default.join(releases, "latest.json");
186775
186818
  const tmp = `${file}.${process.pid}`;
186776
186819
  import_node_fs44.default.writeFileSync(tmp, JSON.stringify({ version: version3, checkedAt: now }));
186777
186820
  import_node_fs44.default.renameSync(tmp, file);
@@ -186779,7 +186822,7 @@ function pinLauncherRelease(env, homedir, version3, now = Date.now()) {
186779
186822
  function spawnAfterExit(pid, argv, env = process.env) {
186780
186823
  const [file, ...args] = argv;
186781
186824
  if (!file) return;
186782
- (0, import_node_child_process4.spawn)(process.execPath, ["-e", WAIT_THEN_RUN, String(pid), file, ...args], {
186825
+ (0, import_node_child_process5.spawn)(process.execPath, ["-e", WAIT_THEN_RUN, String(pid), file, ...args], {
186783
186826
  detached: true,
186784
186827
  stdio: "ignore",
186785
186828
  windowsHide: true,
@@ -186853,14 +186896,14 @@ async function main2() {
186853
186896
  const paths = machinePaths();
186854
186897
  ensureHome(paths.home);
186855
186898
  const updates = createUpdateCheck({
186856
- cacheFile: import_node_path42.default.join(paths.home, "latest.json"),
186899
+ cacheFile: import_node_path43.default.join(paths.home, "latest.json"),
186857
186900
  current: version
186858
186901
  });
186859
186902
  const hub = await startHub({
186860
186903
  host: config.host,
186861
186904
  urlHost: config.urlHost,
186862
- viewerDir: import_node_path42.default.join(__dirname, "viewer"),
186863
- runtimeDir: import_node_path42.default.join(__dirname, "runtime"),
186905
+ viewerDir: import_node_path43.default.join(__dirname, "viewer"),
186906
+ runtimeDir: import_node_path43.default.join(__dirname, "runtime"),
186864
186907
  ports: config.ports,
186865
186908
  boardPorts: config.boardPorts,
186866
186909
  paths,
@@ -186879,7 +186922,7 @@ async function main2() {
186879
186922
  open: async (link, local, openCmd) => {
186880
186923
  const command = openCmd ?? config.openCmd;
186881
186924
  if (command) {
186882
- (0, import_node_child_process5.exec)(`${command} ${JSON.stringify(link)}`, () => {
186925
+ (0, import_node_child_process6.exec)(`${command} ${JSON.stringify(link)}`, () => {
186883
186926
  });
186884
186927
  return;
186885
186928
  }