ryugi-artifacts 1.19.0 → 1.21.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 (144) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/dist/server.cjs +33 -8
  3. package/dist/viewer/{CloudDocument-fPJO17RB.js → CloudDocument-CcH-RnQd.js} +1 -1
  4. package/dist/viewer/{CloudLiveDocument-tsrwl8T1.js → CloudLiveDocument-bz9W_QuD.js} +1 -1
  5. package/dist/viewer/{DocumentLayout-D4LN2imT.js → DocumentLayout-DdMjn7tj.js} +138 -138
  6. package/dist/viewer/{DocumentPage-DU7AlIYi.js → DocumentPage-DtRuVkuI.js} +1 -1
  7. package/dist/viewer/{abnfDiagram-VCTEODGH-BwLfP_w2.js → abnfDiagram-VCTEODGH-BsMA2MSj.js} +1 -1
  8. package/dist/viewer/{ar-SA-G6X2FPQ2-BI0wJ8yR.js → ar-SA-G6X2FPQ2-DGPPfk70.js} +1 -1
  9. package/dist/viewer/{architectureDiagram-5GKGNRK7-CRQpQyO-.js → architectureDiagram-5GKGNRK7-DXme2azo.js} +1 -1
  10. package/dist/viewer/{az-AZ-76LH7QW2-CxsCUo3P.js → az-AZ-76LH7QW2-Csa9EDbl.js} +1 -1
  11. package/dist/viewer/{bg-BG-XCXSNQG7-zmLNtpI8.js → bg-BG-XCXSNQG7-Dy_1eDIm.js} +1 -1
  12. package/dist/viewer/{blockDiagram-I7D4REHJ-BJJKBHFX.js → blockDiagram-I7D4REHJ-CCv1tXYc.js} +1 -1
  13. package/dist/viewer/{bn-BD-2XOGV67Q-D6zzfXu3.js → bn-BD-2XOGV67Q-Bt3s-J-D.js} +1 -1
  14. package/dist/viewer/{c4Diagram-7LVT6UL2-CLivMEyH.js → c4Diagram-7LVT6UL2-DIjVoiVD.js} +1 -1
  15. package/dist/viewer/{ca-ES-6MX7JW3Y-G1FH_576.js → ca-ES-6MX7JW3Y-CG7Fgf4-.js} +1 -1
  16. package/dist/viewer/{chunk-4HAMMTFA-Di0xdyz8.js → chunk-4HAMMTFA-B1aiDbgO.js} +1 -1
  17. package/dist/viewer/{chunk-EIO257PC-C_A0ItX_.js → chunk-EIO257PC-D_z4eGwn.js} +1 -1
  18. package/dist/viewer/{chunk-GMAD6QVW-Yd9B1P6N.js → chunk-GMAD6QVW-DKkv695E.js} +1 -1
  19. package/dist/viewer/{chunk-GVQU2GXP-BlQ5Hc4C.js → chunk-GVQU2GXP-C_nXqlBK.js} +1 -1
  20. package/dist/viewer/{chunk-IMKFNOWR-sLl17KlZ.js → chunk-IMKFNOWR-zwoYm_Dw.js} +1 -1
  21. package/dist/viewer/{chunk-L3NEJ4N5-ByzPblyy.js → chunk-L3NEJ4N5-DhBLFxaC.js} +1 -1
  22. package/dist/viewer/{chunk-OSK3NFVY-B8lsSjgE.js → chunk-OSK3NFVY-C9rnwMLH.js} +1 -1
  23. package/dist/viewer/{chunk-PWAF6VOD-Dt03PokQ.js → chunk-PWAF6VOD-C4auwYbt.js} +1 -1
  24. package/dist/viewer/{chunk-SHT3W25Y-D8tOADu9.js → chunk-SHT3W25Y-BmmT5pJi.js} +1 -1
  25. package/dist/viewer/{chunk-SVP7TREG-BCCTaJFp.js → chunk-SVP7TREG-D79IlgDj.js} +1 -1
  26. package/dist/viewer/{chunk-TICWLB2K-CKvZ1F5E.js → chunk-TICWLB2K-Csoh6D8H.js} +1 -1
  27. package/dist/viewer/{classDiagram-ZZMXUADV-BPsoNR3A.js → classDiagram-ZZMXUADV-d2GPv1RI.js} +1 -1
  28. package/dist/viewer/{classDiagram-v2-VYDZK3BY-BPsoNR3A.js → classDiagram-v2-VYDZK3BY-d2GPv1RI.js} +1 -1
  29. package/dist/viewer/{cs-CZ-2BRQDIVT-KdoHU-Qi.js → cs-CZ-2BRQDIVT-B9XwmAlo.js} +1 -1
  30. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-CPAZlTbz.js → cynefinDiagram-5FMLGOSQ-BU-ZipoT.js} +1 -1
  31. package/dist/viewer/{da-DK-5WZEPLOC-D_MTuSXJ.js → da-DK-5WZEPLOC-CTEI6IwF.js} +1 -1
  32. package/dist/viewer/{dagre-GXQ25YYZ-CGJi5tfA.js → dagre-GXQ25YYZ-C0fTLS5E.js} +1 -1
  33. package/dist/viewer/{de-DE-XR44H4JA-BLOov6di.js → de-DE-XR44H4JA-CH3_oxSQ.js} +1 -1
  34. package/dist/viewer/{diagram-S7CK7UJ4-v4jY9cY2.js → diagram-S7CK7UJ4-KOXoTtSj.js} +1 -1
  35. package/dist/viewer/{diagram-UQ7AKVKN-CHWKBoDd.js → diagram-UQ7AKVKN--yRzT-VO.js} +1 -1
  36. package/dist/viewer/{diagram-VX7I27RA-BVUIPSa6.js → diagram-VX7I27RA-BKsWTNFP.js} +1 -1
  37. package/dist/viewer/{diagram-Z3DM3KII-C4Y7zZHg.js → diagram-Z3DM3KII-DXN95hBw.js} +1 -1
  38. package/dist/viewer/{dist-CCwaS8Bu.js → dist-AoWIWoSw.js} +1 -1
  39. package/dist/viewer/{dist-Bc8tMTe5.js → dist-B0f2-9Wk.js} +1 -1
  40. package/dist/viewer/{dist-JfoSPkrU.js → dist-B1Lwq1zU.js} +1 -1
  41. package/dist/viewer/{dist-1IcdPIYN.js → dist-BOOTM0cQ.js} +1 -1
  42. package/dist/viewer/{dist-BQs1NNpk.js → dist-BTtd5OBO.js} +1 -1
  43. package/dist/viewer/{dist-DXnqzoeB.js → dist-BZSfdnj1.js} +1 -1
  44. package/dist/viewer/{dist-WN2tr_mQ.js → dist-BpqiHkER.js} +1 -1
  45. package/dist/viewer/{dist-KZC5UOjy.js → dist-BvfrY1sM.js} +1 -1
  46. package/dist/viewer/{dist-B3RoMAF6.js → dist-C6U34wkp.js} +1 -1
  47. package/dist/viewer/{dist-TLcUQst5.js → dist-CBlb_2TM.js} +1 -1
  48. package/dist/viewer/{dist-BVTHDHV6.js → dist-CRI5kd5q.js} +1 -1
  49. package/dist/viewer/{dist-DsDINnzX.js → dist-CwywkD6n.js} +1 -1
  50. package/dist/viewer/{dist-DFGQshKp.js → dist-D4ejLDZ3.js} +4 -4
  51. package/dist/viewer/{dist-CRx0ZMXK.js → dist-DGcIYocX.js} +1 -1
  52. package/dist/viewer/{dist-DpVonJ_O.js → dist-D_-vBZjD.js} +1 -1
  53. package/dist/viewer/{dist-D8bI9sBL.js → dist-Di3CMO3O.js} +1 -1
  54. package/dist/viewer/{dist-B2FPj3Qt.js → dist-DmmjL89J.js} +1 -1
  55. package/dist/viewer/{dist-Ct-E_S8r.js → dist-Dxol9GZY.js} +1 -1
  56. package/dist/viewer/{dist-DYMwViBu.js → dist-L6_lK__d.js} +1 -1
  57. package/dist/viewer/{dist-xVN1cHRs.js → dist-R94nUcBQ.js} +1 -1
  58. package/dist/viewer/{dist-_d7trXgy.js → dist-ZlUvXLIm.js} +1 -1
  59. package/dist/viewer/{dist-Bqez8J_a.js → dist-oqgvuZuK.js} +1 -1
  60. package/dist/viewer/{dist-C4Lc0ZFP.js → dist-xbd4fyHr.js} +1 -1
  61. package/dist/viewer/{dist-CeYG0ueU.js → dist-zOutwKUz.js} +1 -1
  62. package/dist/viewer/{ebnfDiagram-PWID7BFC-BfH0Kwma.js → ebnfDiagram-PWID7BFC-BoaGYJld.js} +1 -1
  63. package/dist/viewer/{el-GR-BZB4AONW-DytlrCPc.js → el-GR-BZB4AONW-B-fmr7tM.js} +1 -1
  64. package/dist/viewer/{en-B4ZKOASM-CxMHMjTS.js → en-B4ZKOASM-BfCkzQGY.js} +1 -1
  65. package/dist/viewer/{erDiagram-RLTQ6QDP-DiANaX5a.js → erDiagram-RLTQ6QDP-Dn6Y-Q00.js} +1 -1
  66. package/dist/viewer/{es-ES-U4NZUMDT-CWOlOrxS.js → es-ES-U4NZUMDT-BsboHZ7s.js} +1 -1
  67. package/dist/viewer/{eu-ES-A7QVB2H4-7rIki6yl.js → eu-ES-A7QVB2H4-Cj5VAUa0.js} +1 -1
  68. package/dist/viewer/{fa-IR-HGAKTJCU-XuLQk-Tn.js → fa-IR-HGAKTJCU-CPerOZUo.js} +1 -1
  69. package/dist/viewer/{fi-FI-Z5N7JZ37-BVT2imWO.js → fi-FI-Z5N7JZ37-vJH2-Z6W.js} +1 -1
  70. package/dist/viewer/flowDiagram-HODETNUW-he2HEaWV.js +1 -0
  71. package/dist/viewer/{fr-FR-RHASNOE6-BDrE0Sar.js → fr-FR-RHASNOE6-uUPKsR8v.js} +1 -1
  72. package/dist/viewer/{ganttDiagram-EL5Y4UJY-C0kMmivD.js → ganttDiagram-EL5Y4UJY-49Xb9KiX.js} +1 -1
  73. package/dist/viewer/{gl-ES-HMX3MZ6V-BGePYNwa.js → gl-ES-HMX3MZ6V-DTALR5dT.js} +1 -1
  74. package/dist/viewer/{he-IL-6SHJWFNN-C_h7ANwh.js → he-IL-6SHJWFNN-BnjAiQRy.js} +1 -1
  75. package/dist/viewer/{hi-IN-IWLTKZ5I-DO6JQv11.js → hi-IN-IWLTKZ5I-D0JxNQpu.js} +1 -1
  76. package/dist/viewer/{hu-HU-A5ZG7DT2-CYW6-QvY.js → hu-HU-A5ZG7DT2-BdrbDajC.js} +1 -1
  77. package/dist/viewer/{id-ID-SAP4L64H-lnrwwUQv.js → id-ID-SAP4L64H-CAxZYYVf.js} +1 -1
  78. package/dist/viewer/{image-GAAHSSAO-DPKo0Z9B.js → image-GAAHSSAO-Dz685Ebf.js} +1 -1
  79. package/dist/viewer/index.html +1 -1
  80. package/dist/viewer/index.js +10 -8
  81. package/dist/viewer/index2.css +1 -1
  82. package/dist/viewer/{infoDiagram-27XIBGKW-BrpKtrz1.js → infoDiagram-27XIBGKW-AG_DFdVc.js} +1 -1
  83. package/dist/viewer/{ishikawaDiagram-5VMMS53U-Bzzm1Qn9.js → ishikawaDiagram-5VMMS53U-DcNecnJR.js} +1 -1
  84. package/dist/viewer/{it-IT-JPQ66NNP-Bmrd9W_k.js → it-IT-JPQ66NNP-Bj1fmwJd.js} +1 -1
  85. package/dist/viewer/{ja-JP-DBVTYXUO-BzIPu9Sq.js → ja-JP-DBVTYXUO-BMcJJPmE.js} +1 -1
  86. package/dist/viewer/{journeyDiagram-3NMN7TZE-BnypDAuH.js → journeyDiagram-3NMN7TZE-DrqIAEAM.js} +1 -1
  87. package/dist/viewer/{kaa-6HZHGXH3-DKokUJUv.js → kaa-6HZHGXH3-sLU0ScH6.js} +1 -1
  88. package/dist/viewer/{kab-KAB-ZGHBKWFO-DPboBUhX.js → kab-KAB-ZGHBKWFO-C9SBmy5c.js} +1 -1
  89. package/dist/viewer/{kanban-definition-UXKFOSKX-xl1KXBhm.js → kanban-definition-UXKFOSKX-DSbmWQSJ.js} +1 -1
  90. package/dist/viewer/{kk-KZ-P5N5QNE5-CW1AnK2i.js → kk-KZ-P5N5QNE5-tpQejGV-.js} +1 -1
  91. package/dist/viewer/{km-KH-HSX4SM5Z-Cy-Jz187.js → km-KH-HSX4SM5Z-FpA5yQB3.js} +1 -1
  92. package/dist/viewer/{ko-KR-MTYHY66A-ENrzcom-.js → ko-KR-MTYHY66A-DjT9iIYm.js} +1 -1
  93. package/dist/viewer/{ku-TR-6OUDTVRD-ujaIeZ6d.js → ku-TR-6OUDTVRD-BMRYXLru.js} +1 -1
  94. package/dist/viewer/{lt-LT-XHIRWOB4-DCHudAUH.js → lt-LT-XHIRWOB4-W7gQlxc_.js} +1 -1
  95. package/dist/viewer/{lv-LV-5QDEKY6T-CkczV-YS.js → lv-LV-5QDEKY6T-CF-VUY5Y.js} +1 -1
  96. package/dist/viewer/{mindmap-definition-YA3MSWOX-Cmaw8zST.js → mindmap-definition-YA3MSWOX-CHnie9D0.js} +1 -1
  97. package/dist/viewer/{mr-IN-CRQNXWMA-CAULhacb.js → mr-IN-CRQNXWMA-B9qaaRqh.js} +1 -1
  98. package/dist/viewer/{my-MM-5M5IBNSE-CIK3iNzd.js → my-MM-5M5IBNSE-CDovgzSx.js} +1 -1
  99. package/dist/viewer/{nb-NO-T6EIAALU-awDYmeD3.js → nb-NO-T6EIAALU-Df-eKo7d.js} +1 -1
  100. package/dist/viewer/{nl-NL-IS3SIHDZ-DnN7YgqH.js → nl-NL-IS3SIHDZ-FxHhrur-.js} +1 -1
  101. package/dist/viewer/{nn-NO-6E72VCQL-CirX0qpy.js → nn-NO-6E72VCQL-9nJmSO-O.js} +1 -1
  102. package/dist/viewer/{oc-FR-POXYY2M6-BmRoBPJJ.js → oc-FR-POXYY2M6-DaA6uOny.js} +1 -1
  103. package/dist/viewer/{pa-IN-N4M65BXN-C3t1i1uP.js → pa-IN-N4M65BXN-DXMVL8v8.js} +1 -1
  104. package/dist/viewer/{pegDiagram-XKGWAZYB-CRs_uYT9.js → pegDiagram-XKGWAZYB-BQkwwzXu.js} +1 -1
  105. package/dist/viewer/percentages-BXMCSKIN-XqVzN9bp.js +1 -0
  106. package/dist/viewer/{pieDiagram-E7YTZNPT-CX1dwbeD.js → pieDiagram-E7YTZNPT-Bt9IUXxY.js} +1 -1
  107. package/dist/viewer/{pl-PL-T2D74RX3-LcmmmlyH.js → pl-PL-T2D74RX3-DaGi_LDu.js} +1 -1
  108. package/dist/viewer/{prod-B8PlumMX.js → prod-GMgDTSDa.js} +8 -8
  109. package/dist/viewer/{pt-BR-5N22H2LF-CSwh6Qow.js → pt-BR-5N22H2LF-B1-jOFzj.js} +1 -1
  110. package/dist/viewer/{pt-PT-UZXXM6DQ-Dik_tH8d.js → pt-PT-UZXXM6DQ-BfYK8tJg.js} +1 -1
  111. package/dist/viewer/{quadrantDiagram-AXDQQJYC-DAlIHzj1.js → quadrantDiagram-AXDQQJYC-B4PPMn-0.js} +1 -1
  112. package/dist/viewer/{railroadDiagram-O6MQD6OU-3sbXCT8O.js → railroadDiagram-O6MQD6OU-jYsI3C0O.js} +1 -1
  113. package/dist/viewer/{requirementDiagram-BXWQKSXE-_SmB-iGu.js → requirementDiagram-BXWQKSXE-DuhcCzEK.js} +1 -1
  114. package/dist/viewer/{ro-RO-JPDTUUEW-5pEQNah0.js → ro-RO-JPDTUUEW-C1I8U4t7.js} +1 -1
  115. package/dist/viewer/{ru-RU-B4JR7IUQ-D_Kg9Hzp.js → ru-RU-B4JR7IUQ-DYmbuBPJ.js} +1 -1
  116. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-CNxS0HZg.js → sequenceDiagram-WJ2MYXX4-rN_IZNdC.js} +1 -1
  117. package/dist/viewer/{si-LK-N5RQ5JYF-Bp_qk_kO.js → si-LK-N5RQ5JYF-jUgkZ83-.js} +1 -1
  118. package/dist/viewer/{sk-SK-C5VTKIMK-dZmproWt.js → sk-SK-C5VTKIMK-Ce1laRuQ.js} +1 -1
  119. package/dist/viewer/{sl-SI-NN7IZMDC-DCPnVelb.js → sl-SI-NN7IZMDC-C-4lcAsP.js} +1 -1
  120. package/dist/viewer/{stateDiagram-D77RDMKH-DLlcIj9E.js → stateDiagram-D77RDMKH-B3wEkIr7.js} +1 -1
  121. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-BQGIuopX.js → stateDiagram-v2-MP3YSRHH-ELzXfUQC.js} +1 -1
  122. package/dist/viewer/subset-shared.chunk-DjnZrJWf.js +1 -0
  123. package/dist/viewer/{subset-worker.chunk-KysBifhs.js → subset-worker.chunk-D23jhLYj.js} +1 -1
  124. package/dist/viewer/{sv-SE-XGPEYMSR-DQC8YOoA.js → sv-SE-XGPEYMSR-DqPqfpcW.js} +1 -1
  125. package/dist/viewer/{swimlanes-42K2YHIH-pPhC0efI.js → swimlanes-42K2YHIH-CdeEHaJ3.js} +1 -1
  126. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-BknwjiJI.js → swimlanesDiagram-VR7AAH4N-CAbordmm.js} +1 -1
  127. package/dist/viewer/{ta-IN-2NMHFXQM-XJN8sySm.js → ta-IN-2NMHFXQM-ey2RbV51.js} +1 -1
  128. package/dist/viewer/{th-TH-HPSO5L25-CrVxkBUt.js → th-TH-HPSO5L25-C6Ohh136.js} +1 -1
  129. package/dist/viewer/{timeline-definition-24CTP7MA-djWWXfng.js → timeline-definition-24CTP7MA-5POXMdhP.js} +1 -1
  130. package/dist/viewer/{tr-TR-DEFEU3FU-CL6S5zlq.js → tr-TR-DEFEU3FU-CkwARbMM.js} +1 -1
  131. package/dist/viewer/{uk-UA-QMV73CPH-CMrgmof-.js → uk-UA-QMV73CPH-C7mzWnHW.js} +1 -1
  132. package/dist/viewer/useSandboxFrame-D_IsEKJK.js +58 -0
  133. package/dist/viewer/{vennDiagram-4TSXK5OY-DnkQnhE7.js → vennDiagram-4TSXK5OY-CGDvA_kE.js} +1 -1
  134. package/dist/viewer/{vi-VN-M7AON7JQ-DcU7HmKI.js → vi-VN-M7AON7JQ-wrNU1IFJ.js} +1 -1
  135. package/dist/viewer/{wardleyDiagram-VM6X3IG4-BiN7N4S8.js → wardleyDiagram-VM6X3IG4-DpgqVeBZ.js} +1 -1
  136. package/dist/viewer/{xychartDiagram-S5SC5T6Z-DR4L47nZ.js → xychartDiagram-S5SC5T6Z-DqeGXY1b.js} +1 -1
  137. package/dist/viewer/{zh-CN-LNUGB5OW-B58c_p8w.js → zh-CN-LNUGB5OW-CNEY7LOg.js} +1 -1
  138. package/dist/viewer/{zh-HK-E62DVLB3-D-pcM14T.js → zh-HK-E62DVLB3-Dzm6lVAt.js} +1 -1
  139. package/dist/viewer/{zh-TW-RAJ6MFWO-Dcb5-RNU.js → zh-TW-RAJ6MFWO-Ca0VSMKu.js} +1 -1
  140. package/package.json +1 -1
  141. package/dist/viewer/flowDiagram-HODETNUW-CCTrPmhX.js +0 -1
  142. package/dist/viewer/percentages-BXMCSKIN-BgW3KG9t.js +0 -1
  143. package/dist/viewer/subset-shared.chunk-CvpSwkWA.js +0 -1
  144. package/dist/viewer/useSandboxFrame-Cx7xofoM.js +0 -58
package/dist/cli.cjs CHANGED
@@ -922,7 +922,7 @@ async function main(argv) {
922
922
  }, emit);
923
923
  }
924
924
  if (command === "--version" || command === "-v") {
925
- console.log("1.19.0");
925
+ console.log("1.21.0");
926
926
  return 0;
927
927
  }
928
928
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -17744,6 +17744,15 @@ function stampBlockIds(state) {
17744
17744
  });
17745
17745
  return { ...state, root: { ...state.root, children } };
17746
17746
  }
17747
+ var BOX_LINE = /[\u2500-\u257F]/;
17748
+ var TOP_LEFT = /[┌╭╔┏]/g;
17749
+ var BOTTOM_RIGHT = /[┘╯╝┛]/;
17750
+ var ARROW = /[▼▲▶◀►◄]|[─━]>/;
17751
+ var isBoxDiagram = (code) => code.split("\n").filter((line) => BOX_LINE.test(line)).length >= 3 && (code.match(TOP_LEFT)?.length ?? 0) >= 2 && BOTTOM_RIGHT.test(code) && ARROW.test(code);
17752
+ var holdsBoxDiagram = (node) => node.type === "code-block" && isBoxDiagram(node.code ?? "") || (node.children ?? []).some(holdsBoxDiagram);
17753
+ function boxDrawingDiagrams(state) {
17754
+ return state.root.children.flatMap((block) => block.$?.blockId && holdsBoxDiagram(block) ? [block.$.blockId] : []);
17755
+ }
17747
17756
 
17748
17757
  // src/server/board-comments.ts
17749
17758
  var import_node_crypto2 = __toESM(require("node:crypto"), 1);
@@ -87784,11 +87793,13 @@ function blockStats(before2, after2) {
87784
87793
  const changed = Math.min(added, removed);
87785
87794
  return `+${added - changed} ~${changed} -${removed - changed} blocks`;
87786
87795
  }
87787
- function closestBase(written, text2, fallback) {
87796
+ function closestBase(written, text2, fallback, floor) {
87797
+ const keys2 = [...written.keys()];
87798
+ const from = floor === null ? -1 : keys2.indexOf(floor);
87788
87799
  const wanted = new Set(text2.split("\n").map((line) => line.trim()));
87789
87800
  let best = fallback;
87790
87801
  let bestScore = -1;
87791
- for (const candidate of written.keys()) {
87802
+ for (const candidate of from >= 0 ? keys2.slice(from) : keys2) {
87792
87803
  const lines = candidate.split("\n").map((line) => line.trim());
87793
87804
  const shared = lines.filter((line) => wanted.has(line)).length;
87794
87805
  const score = shared - (lines.length - shared);
@@ -87850,6 +87861,7 @@ async function createDocumentSession(options) {
87850
87861
  let streaming = 0;
87851
87862
  let lastCursor = null;
87852
87863
  let lastGoodText = null;
87864
+ let lastAgentText = null;
87853
87865
  let lastFileText = await readText(file) ?? "";
87854
87866
  const activityFile = import_node_path8.default.join(import_node_path8.default.dirname(snapshotFile), "agent-active");
87855
87867
  let agentActiveAt = await lastAgentWrite(activityFile, file);
@@ -87910,13 +87922,15 @@ async function createDocumentSession(options) {
87910
87922
  return;
87911
87923
  }
87912
87924
  const fallback = lastGoodText ?? serializeDocument(editor.getEditorState().toJSON());
87925
+ const floor = lastAgentText;
87926
+ lastAgentText = text2;
87913
87927
  const queued = streaming > 0;
87914
87928
  lastGoodText = text2;
87915
87929
  streaming += 1;
87916
87930
  emitStatus();
87917
87931
  playing = playing.then(async () => {
87918
87932
  try {
87919
- const baseText = queued ? fallback : closestBase(written, text2, fallback);
87933
+ const baseText = queued ? fallback : closestBase(written, text2, fallback, floor);
87920
87934
  const { stats, steps } = prepareAgentEdit(baseText, text2, target);
87921
87935
  for (const step of steps) {
87922
87936
  applyStep(step);
@@ -87966,6 +87980,7 @@ async function createDocumentSession(options) {
87966
87980
  lastFileText = text2;
87967
87981
  lastGoodText = text2;
87968
87982
  remember(text2);
87983
+ emit({ type: "saved" });
87969
87984
  }
87970
87985
  snapshotDirty = true;
87971
87986
  await saveSnapshot();
@@ -87988,6 +88003,7 @@ async function createDocumentSession(options) {
87988
88003
  scheduleWrite();
87989
88004
  return {
87990
88005
  snapshot: () => loro.export({ mode: "snapshot" }),
88006
+ state: () => editor.getEditorState().toJSON(),
87991
88007
  lineage: () => loro.getTree(TREE_NAME).roots()[0]?.id ?? "",
87992
88008
  importUpdate: (bytes, features = []) => {
87993
88009
  const undeclared2 = DOCUMENT_FEATURES.filter((feature) => !features.includes(feature));
@@ -88029,8 +88045,10 @@ var forAgent = (thread) => ({
88029
88045
  waitingOn: waitingOn(thread),
88030
88046
  messages: thread.messages.map(({ avatar: _avatar, ...message }) => message)
88031
88047
  });
88032
- function outcomeWarnings(outcome, streaming) {
88033
- if (streaming) return [];
88048
+ var diagramWarnings = (session) => boxDrawingDiagrams(session.state()).map(
88049
+ (id2) => `block ${id2} draws a diagram with box-drawing characters; this document is rendered, not Markdown, so draw it as <mermaid>`
88050
+ );
88051
+ function outcomeWarnings(outcome) {
88034
88052
  if (outcome.kind === "rejected") return [`agent edit rejected: ${outcome.message} (doc.xml is left as written; fix it)`];
88035
88053
  if (outcome.kind === "failed") return [`agent edit failed: ${outcome.message}`];
88036
88054
  return [];
@@ -88071,15 +88089,22 @@ function createDocumentRegistry(options) {
88071
88089
  warnings.set(id2, next);
88072
88090
  options.onWarningsChange(id2);
88073
88091
  };
88074
- setWarnings(outcomeWarnings(session.outcome(), false));
88092
+ const currentWarnings = () => {
88093
+ if (session.streaming()) return [];
88094
+ const outcome = session.outcome();
88095
+ return outcome.kind === "rejected" ? outcomeWarnings(outcome) : [...outcomeWarnings(outcome), ...diagramWarnings(session)];
88096
+ };
88097
+ setWarnings(currentWarnings());
88075
88098
  session.subscribe((event) => {
88076
88099
  if (event.type === "update") {
88077
88100
  options.broadcast({ type: "doc-update", artifact, bytes: Buffer.from(event.bytes).toString("base64") });
88078
88101
  } else if (event.type === "cursor") {
88079
88102
  options.broadcast({ type: "doc-cursor", artifact, cursor: event.cursor });
88103
+ } else if (event.type === "saved") {
88104
+ setWarnings(currentWarnings());
88080
88105
  } else {
88081
88106
  options.broadcast({ type: "doc-status", artifact, streaming: event.streaming, outcome: event.outcome, agentActiveAt: event.agentActiveAt, now: Date.now() });
88082
- setWarnings(outcomeWarnings(event.outcome, event.streaming));
88107
+ setWarnings(currentWarnings());
88083
88108
  }
88084
88109
  });
88085
88110
  return session;
@@ -91158,7 +91183,7 @@ function openReady(payload) {
91158
91183
  }
91159
91184
 
91160
91185
  // package.json
91161
- var version = "1.19.0";
91186
+ var version = "1.21.0";
91162
91187
 
91163
91188
  // src/server/main.ts
91164
91189
  async function main() {
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,m as i}from"./useSandboxFrame-Cx7xofoM.js";import{_ as a,d as o,g as s,h as c,t as l,u,v as d}from"./DocumentLayout-D4LN2imT.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:s(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:u,rendererConfig:o,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(a,{})})})})]})}export{h as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r,m as i}from"./useSandboxFrame-D_IsEKJK.js";import{_ as a,d as o,g as s,h as c,t as l,u,v as d}from"./DocumentLayout-DdMjn7tj.js";var f=e(t(),1),p=n();function m(){let e=(0,f.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,f.useState)(e.matches);return(0,f.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function h({id:e,state:t,contentBase:n,comments:h=i(),offline:g=!1}){let _=m(),[v,y]=(0,f.useState)(null),b=(0,f.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:s(),send:()=>void 0}),[e,n]),x=r(e,{comments:h.threads.filter(e=>e.status===`open`).length,activity:null,retrying:!1,reason:null});return(0,f.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,p.jsxs)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:[g?(0,p.jsxs)(`div`,{...{0:{className:`x78zum5 x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61`},1:{className:`x6s0dn4 x17d4w8g x1vqgdyp x4l9tsp x1bo0w0s xqfszdh xfifm61 x1s85apg x1ux6vrq`}}[!!x|0],children:[(0,p.jsx)(`i`,{className:`xci0xqf x1hagigm x16rqkct xxwmxtg`}),`电脑离线,暂时不能评论`]}):null,(0,p.jsx)(l,{editor:v,threads:h.threads,children:(0,p.jsx)(c.Provider,{value:b,children:(0,p.jsx)(d,{variant:`article`,theme:_?`dark`:`light`,initialValue:t,extraNodes:u,rendererConfig:o,onEditorReady:e=>{e?.setEditable(!1),y(e??null)},children:(0,p.jsx)(a,{})})})})]})}export{h as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-Cx7xofoM.js";import{t as i}from"./index.js";import a from"./CloudDocument-fPJO17RB.js";import{DocumentView as o,t as s}from"./DocumentPage-DU7AlIYi.js";var c=e(t(),1),l=`1.19.0`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{n as t,t as n}from"./jsx-runtime-CldxteV5.js";import{a as r}from"./useSandboxFrame-D_IsEKJK.js";import{t as i}from"./index.js";import a from"./CloudDocument-CcH-RnQd.js";import{DocumentView as o,t as s}from"./DocumentPage-DtRuVkuI.js";var c=e(t(),1),l=`1.21.0`,u=e=>/^(\d+)\.(\d+)\./.exec(e??``)?.slice(1,3).join(`.`)??null;function d(e,t){let n=u(e);return n!==null&&n===u(t)}var f=(e,t)=>`电脑上的 ryugi 是 ${t??`未知版本`},网页是 ${e},版本对上之前只能评论`,p=n();function m({id:e,state:t,contentBase:n,liveContentBase:u,comments:m}){let{transport:h,presence:g}=s(e,u??n??``),_=g?.online??!1;r(e,{online:g?.online??null});let[v,y]=(0,c.useState)(!1);if((0,c.useEffect)(()=>{_&&y(!0)},[_]),!h||!(v||_))return!t||!n?(0,p.jsx)(i,{children:g===null?`正在连接…`:`还没发布。电脑在线时,这里会实时显示。`}):(0,p.jsx)(a,{id:e,state:t,contentBase:n,comments:m,offline:g!==null&&!_});let b=_&&d(l,g?.version??null),x=_&&!b?f(l,g?.version??null):null;return(0,p.jsx)(o,{id:e,transport:h,live:_,cloud:{online:_,canEdit:b,reason:x}})}export{m as default};