ryugi-artifacts 1.9.1 → 1.10.1

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 (140) hide show
  1. package/dist/cli.cjs +16 -9
  2. package/dist/server.cjs +23 -3
  3. package/dist/viewer/{CloudDocument-Dguokp_6.js → CloudDocument-DHt_mVdQ.js} +1 -1
  4. package/dist/viewer/{DocumentEditor-rRoUyzj5.js → DocumentEditor-CHFJtV6u.js} +3 -3
  5. package/dist/viewer/{DocumentPage-C0_SVGNv.js → DocumentPage-BXx7LR6z.js} +1 -1
  6. package/dist/viewer/{abnfDiagram-VCTEODGH-Cd62lXYi.js → abnfDiagram-VCTEODGH-BKXyb30x.js} +1 -1
  7. package/dist/viewer/{ar-SA-G6X2FPQ2-k4wcXC0w.js → ar-SA-G6X2FPQ2-DWH_0Nc0.js} +1 -1
  8. package/dist/viewer/{architectureDiagram-5GKGNRK7-BqGRfF7K.js → architectureDiagram-5GKGNRK7-Br5ECgf8.js} +1 -1
  9. package/dist/viewer/{az-AZ-76LH7QW2-DjkRWALq.js → az-AZ-76LH7QW2-DY75JeQW.js} +1 -1
  10. package/dist/viewer/{bg-BG-XCXSNQG7-CUOyMSFg.js → bg-BG-XCXSNQG7-Cd-bEECG.js} +1 -1
  11. package/dist/viewer/{blockDiagram-I7D4REHJ-DLj9e678.js → blockDiagram-I7D4REHJ-CTH9upeW.js} +1 -1
  12. package/dist/viewer/{bn-BD-2XOGV67Q-CPw_5I7i.js → bn-BD-2XOGV67Q-CfbWlT53.js} +1 -1
  13. package/dist/viewer/{c4Diagram-7LVT6UL2-D9FPioA_.js → c4Diagram-7LVT6UL2-DgZfuMeF.js} +1 -1
  14. package/dist/viewer/{ca-ES-6MX7JW3Y-Bl_ggxy-.js → ca-ES-6MX7JW3Y-CLIaflNg.js} +1 -1
  15. package/dist/viewer/{chunk-4HAMMTFA-B8CHZ2iu.js → chunk-4HAMMTFA-CXiyiTB-.js} +1 -1
  16. package/dist/viewer/{chunk-EIO257PC-BkhwQy9u.js → chunk-EIO257PC-DvI6F0lF.js} +1 -1
  17. package/dist/viewer/{chunk-GMAD6QVW-BIxPNzf_.js → chunk-GMAD6QVW-DCsgamdS.js} +1 -1
  18. package/dist/viewer/{chunk-GVQU2GXP-BcbkZdgL.js → chunk-GVQU2GXP-2NZqPFtv.js} +1 -1
  19. package/dist/viewer/{chunk-IMKFNOWR-BlVm2eW6.js → chunk-IMKFNOWR-B9IRlq7P.js} +1 -1
  20. package/dist/viewer/{chunk-L3NEJ4N5-DPP-Uqzz.js → chunk-L3NEJ4N5-QKDFaTVm.js} +1 -1
  21. package/dist/viewer/{chunk-OSK3NFVY-DvWBYW0M.js → chunk-OSK3NFVY-DpbM8rcj.js} +1 -1
  22. package/dist/viewer/{chunk-PWAF6VOD-Df9WdVJL.js → chunk-PWAF6VOD-Bp-CfFnY.js} +1 -1
  23. package/dist/viewer/{chunk-SHT3W25Y-BSCi7YG7.js → chunk-SHT3W25Y-BXaFpk6r.js} +1 -1
  24. package/dist/viewer/{chunk-SVP7TREG-Bxv2fp8X.js → chunk-SVP7TREG-CpvjdRHD.js} +1 -1
  25. package/dist/viewer/{chunk-TICWLB2K-MSpOEdcV.js → chunk-TICWLB2K-DUvtcxvB.js} +1 -1
  26. package/dist/viewer/{classDiagram-ZZMXUADV-YWXPsH1o.js → classDiagram-ZZMXUADV-BgeDN30p.js} +1 -1
  27. package/dist/viewer/{classDiagram-v2-VYDZK3BY-YWXPsH1o.js → classDiagram-v2-VYDZK3BY-BgeDN30p.js} +1 -1
  28. package/dist/viewer/{cs-CZ-2BRQDIVT-VpdA_B_0.js → cs-CZ-2BRQDIVT-B_o7TPRB.js} +1 -1
  29. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-CCIqA18s.js → cynefinDiagram-5FMLGOSQ-DCfCzgsP.js} +1 -1
  30. package/dist/viewer/{da-DK-5WZEPLOC-Bikfnz1b.js → da-DK-5WZEPLOC-BcLjBVYf.js} +1 -1
  31. package/dist/viewer/{dagre-GXQ25YYZ-DeVnyw6S.js → dagre-GXQ25YYZ-BnL1_QU_.js} +1 -1
  32. package/dist/viewer/{de-DE-XR44H4JA-5nJunltn.js → de-DE-XR44H4JA-CCBDQBto.js} +1 -1
  33. package/dist/viewer/{diagram-S7CK7UJ4-rcnT6Csv.js → diagram-S7CK7UJ4-BK7CeHHZ.js} +1 -1
  34. package/dist/viewer/{diagram-UQ7AKVKN-D6yGL_te.js → diagram-UQ7AKVKN-D06sIWn7.js} +1 -1
  35. package/dist/viewer/{diagram-VX7I27RA-BVBGylbn.js → diagram-VX7I27RA-CY1O2QMA.js} +1 -1
  36. package/dist/viewer/{diagram-Z3DM3KII-DnsHEfda.js → diagram-Z3DM3KII-Bg9lKHEK.js} +1 -1
  37. package/dist/viewer/{dist-s3i70bod.js → dist-4M2bYUhK.js} +1 -1
  38. package/dist/viewer/{dist-C_2nvGGH.js → dist-BB6fXftQ.js} +1 -1
  39. package/dist/viewer/{dist-Bn3GpIIQ.js → dist-BKQS4oZT.js} +1 -1
  40. package/dist/viewer/{dist-CNSswqVs.js → dist-BSBxzegz.js} +1 -1
  41. package/dist/viewer/{dist-C46f_skK.js → dist-BXB2TAHE.js} +1 -1
  42. package/dist/viewer/{dist-CyR9uUsj.js → dist-BYN4XKEs.js} +1 -1
  43. package/dist/viewer/{dist-bznEISxg.js → dist-Bb1Wk54R.js} +1 -1
  44. package/dist/viewer/{dist-BGR5ezDy.js → dist-BeeLtE2S.js} +1 -1
  45. package/dist/viewer/{dist-CjSSDaiM.js → dist-BvnWP3lg.js} +1 -1
  46. package/dist/viewer/{dist-CPg9Exib.js → dist-Bz-iQm67.js} +1 -1
  47. package/dist/viewer/{dist-BSqmGdSf.js → dist-CKMNXGID.js} +1 -1
  48. package/dist/viewer/{dist-C2UdEldV.js → dist-CQdETbGE.js} +1 -1
  49. package/dist/viewer/{dist-BPa5yz1M.js → dist-CiXzYSpU.js} +1 -1
  50. package/dist/viewer/{dist-oPn-5997.js → dist-Cl3n8BFA.js} +1 -1
  51. package/dist/viewer/{dist-DU3q2qgP.js → dist-D1ACrMdh.js} +1 -1
  52. package/dist/viewer/{dist-DeqL7hkG.js → dist-D9PK6O8F.js} +1 -1
  53. package/dist/viewer/{dist-DOLGlCIF.js → dist-DDTbFLmu.js} +1 -1
  54. package/dist/viewer/{dist-gtpBaWjz.js → dist-DnTqWTTv.js} +1 -1
  55. package/dist/viewer/{dist-CWy1mEqq.js → dist-Dw_wKUU5.js} +1 -1
  56. package/dist/viewer/{dist-JNndX187.js → dist-FOMQkx7X.js} +1 -1
  57. package/dist/viewer/{dist-rkIdnkmY.js → dist-OXspFvEC.js} +4 -4
  58. package/dist/viewer/{dist-DRJfWmsE.js → dist-bcOEMCGl.js} +1 -1
  59. package/dist/viewer/{dist-DlPVPwB6.js → dist-cUpTa-Uh.js} +1 -1
  60. package/dist/viewer/{dist-DOpcb4fi.js → dist-lV9fiGs_.js} +1 -1
  61. package/dist/viewer/{ebnfDiagram-PWID7BFC-c_bXfo9C.js → ebnfDiagram-PWID7BFC-CFUPr1vp.js} +1 -1
  62. package/dist/viewer/{el-GR-BZB4AONW-DuM6nGWb.js → el-GR-BZB4AONW-CVOj_203.js} +1 -1
  63. package/dist/viewer/{en-B4ZKOASM-Cr7s3JvY.js → en-B4ZKOASM-xcE-p-P5.js} +1 -1
  64. package/dist/viewer/{erDiagram-RLTQ6QDP-B-DgtUd4.js → erDiagram-RLTQ6QDP-CW5ExLmG.js} +1 -1
  65. package/dist/viewer/{es-ES-U4NZUMDT-DNvSsfqo.js → es-ES-U4NZUMDT-BD-VL6tu.js} +1 -1
  66. package/dist/viewer/{eu-ES-A7QVB2H4-NECtmtc_.js → eu-ES-A7QVB2H4-Gag31Aik.js} +1 -1
  67. package/dist/viewer/{fa-IR-HGAKTJCU-fp_dFFfn.js → fa-IR-HGAKTJCU-DIO_YvTH.js} +1 -1
  68. package/dist/viewer/{fi-FI-Z5N7JZ37-uZ8T0uZ2.js → fi-FI-Z5N7JZ37-DwFVnCWv.js} +1 -1
  69. package/dist/viewer/flowDiagram-HODETNUW-DszSfwJG.js +1 -0
  70. package/dist/viewer/{fr-FR-RHASNOE6-DYF69T_L.js → fr-FR-RHASNOE6-CTGrn4Lq.js} +1 -1
  71. package/dist/viewer/{ganttDiagram-EL5Y4UJY-C7nYK4VV.js → ganttDiagram-EL5Y4UJY-tIiuAPS3.js} +1 -1
  72. package/dist/viewer/{gl-ES-HMX3MZ6V-Cjlf8qDo.js → gl-ES-HMX3MZ6V-DgyAx5Eh.js} +1 -1
  73. package/dist/viewer/{he-IL-6SHJWFNN-B44gxQ_q.js → he-IL-6SHJWFNN-CV7tgyfd.js} +1 -1
  74. package/dist/viewer/{hi-IN-IWLTKZ5I-DHRyKjrX.js → hi-IN-IWLTKZ5I-BTX7qk-7.js} +1 -1
  75. package/dist/viewer/{hu-HU-A5ZG7DT2-B0x2fwF-.js → hu-HU-A5ZG7DT2-Bf8lG6GO.js} +1 -1
  76. package/dist/viewer/{id-ID-SAP4L64H-Xxsnu-eK.js → id-ID-SAP4L64H-BMiHNhQ_.js} +1 -1
  77. package/dist/viewer/{image-GAAHSSAO-DmsBDNOK.js → image-GAAHSSAO-DC81--KY.js} +1 -1
  78. package/dist/viewer/index.js +3 -3
  79. package/dist/viewer/index2.css +44 -8
  80. package/dist/viewer/{infoDiagram-27XIBGKW-OPdlHu-j.js → infoDiagram-27XIBGKW-DaC21Ho7.js} +1 -1
  81. package/dist/viewer/{ishikawaDiagram-5VMMS53U-3fyfjNAh.js → ishikawaDiagram-5VMMS53U-DXsEGUUM.js} +1 -1
  82. package/dist/viewer/{it-IT-JPQ66NNP-B0X8yQyS.js → it-IT-JPQ66NNP-CDMVpI8a.js} +1 -1
  83. package/dist/viewer/{ja-JP-DBVTYXUO-CnhqD0fK.js → ja-JP-DBVTYXUO-BgPgpy7d.js} +1 -1
  84. package/dist/viewer/{journeyDiagram-3NMN7TZE-BD_Ll3Bo.js → journeyDiagram-3NMN7TZE-C5NRobjI.js} +1 -1
  85. package/dist/viewer/{kaa-6HZHGXH3-BzhTyhLc.js → kaa-6HZHGXH3-vnOCKrxh.js} +1 -1
  86. package/dist/viewer/{kab-KAB-ZGHBKWFO-DGiUv22x.js → kab-KAB-ZGHBKWFO-D4LB6KXX.js} +1 -1
  87. package/dist/viewer/{kanban-definition-UXKFOSKX-BspaC3q1.js → kanban-definition-UXKFOSKX-CsjtKl-L.js} +1 -1
  88. package/dist/viewer/{kk-KZ-P5N5QNE5-DH8jyrO_.js → kk-KZ-P5N5QNE5-BP_XWuCc.js} +1 -1
  89. package/dist/viewer/{km-KH-HSX4SM5Z-CTtH-yq7.js → km-KH-HSX4SM5Z-CEYOCLBr.js} +1 -1
  90. package/dist/viewer/{ko-KR-MTYHY66A-kp3bbs3q.js → ko-KR-MTYHY66A-CyS8rGmN.js} +1 -1
  91. package/dist/viewer/{ku-TR-6OUDTVRD-CniHyrQH.js → ku-TR-6OUDTVRD-CZEI2eeP.js} +1 -1
  92. package/dist/viewer/{lt-LT-XHIRWOB4-C5_ErQjQ.js → lt-LT-XHIRWOB4-B-tk-idA.js} +1 -1
  93. package/dist/viewer/{lv-LV-5QDEKY6T-DH2pmwSL.js → lv-LV-5QDEKY6T-B30P9wrz.js} +1 -1
  94. package/dist/viewer/{mindmap-definition-YA3MSWOX-gbG6Nf0i.js → mindmap-definition-YA3MSWOX-CGSSNg6n.js} +1 -1
  95. package/dist/viewer/{mr-IN-CRQNXWMA-4I7m5ob-.js → mr-IN-CRQNXWMA-CPLqe4RO.js} +1 -1
  96. package/dist/viewer/{my-MM-5M5IBNSE-0nHUTGbL.js → my-MM-5M5IBNSE-BtyoXNpw.js} +1 -1
  97. package/dist/viewer/{nb-NO-T6EIAALU-DfqC7CQ7.js → nb-NO-T6EIAALU-DOUQaPHk.js} +1 -1
  98. package/dist/viewer/{nl-NL-IS3SIHDZ-Bjzz0r--.js → nl-NL-IS3SIHDZ-DT6ODAQa.js} +1 -1
  99. package/dist/viewer/{nn-NO-6E72VCQL-m2jjAc9n.js → nn-NO-6E72VCQL-RCduo5Sc.js} +1 -1
  100. package/dist/viewer/{oc-FR-POXYY2M6-CAVYt9Ft.js → oc-FR-POXYY2M6-DvwhHG9T.js} +1 -1
  101. package/dist/viewer/{pa-IN-N4M65BXN-CrcUCfFF.js → pa-IN-N4M65BXN-BJl99Scg.js} +1 -1
  102. package/dist/viewer/{pegDiagram-XKGWAZYB-MIcAh6C6.js → pegDiagram-XKGWAZYB-CJIWNZ91.js} +1 -1
  103. package/dist/viewer/percentages-BXMCSKIN-CgcrUqaP.js +1 -0
  104. package/dist/viewer/{pieDiagram-E7YTZNPT-mI3-_ikZ.js → pieDiagram-E7YTZNPT--z74XM8J.js} +1 -1
  105. package/dist/viewer/{pl-PL-T2D74RX3-CGPvBMhq.js → pl-PL-T2D74RX3-DUVBpjqD.js} +1 -1
  106. package/dist/viewer/{prod-DdQVR1xL.js → prod-BQakraPZ.js} +8 -8
  107. package/dist/viewer/{pt-BR-5N22H2LF-jUQJyEPF.js → pt-BR-5N22H2LF-CwvNc6uy.js} +1 -1
  108. package/dist/viewer/{pt-PT-UZXXM6DQ-4quEbcoT.js → pt-PT-UZXXM6DQ-BwnvpmWW.js} +1 -1
  109. package/dist/viewer/{quadrantDiagram-AXDQQJYC-qOr_Ag5n.js → quadrantDiagram-AXDQQJYC-D4SXsUJb.js} +1 -1
  110. package/dist/viewer/{railroadDiagram-O6MQD6OU-C8uzuX6Z.js → railroadDiagram-O6MQD6OU-CulJtFua.js} +1 -1
  111. package/dist/viewer/{requirementDiagram-BXWQKSXE-Dz0j-_Ul.js → requirementDiagram-BXWQKSXE-De2_bwHz.js} +1 -1
  112. package/dist/viewer/{ro-RO-JPDTUUEW-Fux6vqWg.js → ro-RO-JPDTUUEW-BHw0NmtR.js} +1 -1
  113. package/dist/viewer/{ru-RU-B4JR7IUQ-Dfr69XLN.js → ru-RU-B4JR7IUQ-B5DITxLM.js} +1 -1
  114. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-DJU5fD19.js → sequenceDiagram-WJ2MYXX4-BHhjwzjx.js} +1 -1
  115. package/dist/viewer/{si-LK-N5RQ5JYF-Cb-bjtRn.js → si-LK-N5RQ5JYF-Dk53K3_l.js} +1 -1
  116. package/dist/viewer/{sk-SK-C5VTKIMK-CohdnzY8.js → sk-SK-C5VTKIMK-DB7JApvw.js} +1 -1
  117. package/dist/viewer/{sl-SI-NN7IZMDC-DHVdRHE2.js → sl-SI-NN7IZMDC-Di7xgnf6.js} +1 -1
  118. package/dist/viewer/{stateDiagram-D77RDMKH-Rooio_TB.js → stateDiagram-D77RDMKH-BrWLOECJ.js} +1 -1
  119. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-DU1T3Lmf.js → stateDiagram-v2-MP3YSRHH-VaRx6koB.js} +1 -1
  120. package/dist/viewer/subset-shared.chunk-C8H8FPgN.js +1 -0
  121. package/dist/viewer/{subset-worker.chunk-Zq5HEGfq.js → subset-worker.chunk-GBtIwk6d.js} +1 -1
  122. package/dist/viewer/{sv-SE-XGPEYMSR-BU075tJ9.js → sv-SE-XGPEYMSR-DyLkhaQV.js} +1 -1
  123. package/dist/viewer/{swimlanes-42K2YHIH-BBJBvoSV.js → swimlanes-42K2YHIH-DamcOoFI.js} +1 -1
  124. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-NfEcSN_S.js → swimlanesDiagram-VR7AAH4N-DPUeEhpY.js} +1 -1
  125. package/dist/viewer/{ta-IN-2NMHFXQM-D5U6fuX5.js → ta-IN-2NMHFXQM-CjzoVft2.js} +1 -1
  126. package/dist/viewer/{th-TH-HPSO5L25-5svbXPdz.js → th-TH-HPSO5L25-PA2-rOov.js} +1 -1
  127. package/dist/viewer/{timeline-definition-24CTP7MA-B0TrCHZJ.js → timeline-definition-24CTP7MA-BwUS-0eI.js} +1 -1
  128. package/dist/viewer/{tr-TR-DEFEU3FU-CtJIUVOL.js → tr-TR-DEFEU3FU-DbeH_D3-.js} +1 -1
  129. package/dist/viewer/{uk-UA-QMV73CPH-BUwW5t5R.js → uk-UA-QMV73CPH-CBoUNzCs.js} +1 -1
  130. package/dist/viewer/{vennDiagram-4TSXK5OY-I1KbtT6m.js → vennDiagram-4TSXK5OY-Ck_qiwQI.js} +1 -1
  131. package/dist/viewer/{vi-VN-M7AON7JQ-CEi077aa.js → vi-VN-M7AON7JQ-cdHSeyaj.js} +1 -1
  132. package/dist/viewer/{wardleyDiagram-VM6X3IG4-BBsUCECp.js → wardleyDiagram-VM6X3IG4-BgrIRqXb.js} +1 -1
  133. package/dist/viewer/{xychartDiagram-S5SC5T6Z-CVMwOWKp.js → xychartDiagram-S5SC5T6Z-B_1sg7JQ.js} +1 -1
  134. package/dist/viewer/{zh-CN-LNUGB5OW-BSFQBwv1.js → zh-CN-LNUGB5OW-BEaNhGg0.js} +1 -1
  135. package/dist/viewer/{zh-HK-E62DVLB3-C_UX1aQ7.js → zh-HK-E62DVLB3-DLSw7IIq.js} +1 -1
  136. package/dist/viewer/{zh-TW-RAJ6MFWO-BvBIQhnc.js → zh-TW-RAJ6MFWO-CqVqPKzO.js} +1 -1
  137. package/package.json +1 -1
  138. package/dist/viewer/flowDiagram-HODETNUW-QbMFIBc7.js +0 -1
  139. package/dist/viewer/percentages-BXMCSKIN-I1K7WJgu.js +0 -1
  140. package/dist/viewer/subset-shared.chunk-CrkhCoQF.js +0 -1
package/dist/cli.cjs CHANGED
@@ -64,6 +64,7 @@ function projectPaths(dir) {
64
64
  lock: import_node_path.default.join(state, "start.lock")
65
65
  };
66
66
  }
67
+ var invocation = () => process.env.RYUGI_ARTIFACTS_COMMAND || "ryugi-artifacts";
67
68
  var ARTIFACT_PATTERN = /^(artboard|document|html)\/[a-z0-9][a-z0-9-]*$/;
68
69
  var ARTIFACT_ERROR = "--artifact must be <type>/<id>: type artboard, document or html, id of lowercase letters, digits and hyphens";
69
70
 
@@ -148,9 +149,14 @@ function commandLine(pid) {
148
149
  const line = full.stdout.split("\n").slice(1).join(" ").trim();
149
150
  return line ? line.split(/\s+/) : null;
150
151
  }
152
+ var isNodeImage = (tasklistLine) => /^"node\.exe"/i.test(tasklistLine.trim());
153
+ function windowsNodeAt(pid) {
154
+ const result = (0, import_node_child_process.spawnSync)("tasklist", ["/FI", `PID eq ${pid}`, "/FO", "CSV", "/NH"], { encoding: "utf8", windowsHide: true });
155
+ return result.status === 0 && isNodeImage(result.stdout);
156
+ }
151
157
  function hasServerId(pid, id) {
152
158
  if (!alive(pid)) return false;
153
- if (process.platform === "win32") return true;
159
+ if (process.platform === "win32") return windowsNodeAt(pid);
154
160
  return commandLine(pid)?.includes(`--artifacts-server-id=${id}`) ?? false;
155
161
  }
156
162
  function parentOf(pid) {
@@ -230,7 +236,7 @@ function recordAgent(paths) {
230
236
  if (Object.keys(markers).length) import_node_fs3.default.writeFileSync(paths.agent, `${JSON.stringify(markers)}
231
237
  `);
232
238
  }
233
- async function replace(pid) {
239
+ async function replace(pid, paths) {
234
240
  try {
235
241
  process.kill(pid, "SIGTERM");
236
242
  } catch {
@@ -241,7 +247,7 @@ async function replace(pid) {
241
247
  } catch {
242
248
  }
243
249
  if (await waitForExit(pid, 2e3)) return;
244
- throw new CliError(`The running server (pid ${pid}) is on another release and did not stop; stop it with \`ryugi-artifacts stop\` and retry`);
250
+ throw new CliError(`The running server (pid ${pid}) is on another release and did not stop; stop it with \`${invocation()} stop --project-dir ${paths.project}\` and retry`);
245
251
  }
246
252
  function serverEnv(paths, options) {
247
253
  const env = { ...process.env, ARTIFACTS_ROOT: paths.root, ARTIFACTS_HOST: options.host, ARTIFACTS_URL_HOST: options.urlHost, ARTIFACTS_OPEN: options.open ? "1" : "0" };
@@ -249,6 +255,7 @@ function serverEnv(paths, options) {
249
255
  if (options.idleTimeoutMinutes) env.ARTIFACTS_IDLE_TIMEOUT_MS = String(Number(options.idleTimeoutMinutes) * 6e4);
250
256
  delete env.RYUGI_ARTIFACTS_OWNER;
251
257
  delete env.RYUGI_ARTIFACTS_VERSION;
258
+ delete env.RYUGI_ARTIFACTS_COMMAND;
252
259
  return env;
253
260
  }
254
261
  async function start(options, emit) {
@@ -282,7 +289,7 @@ async function start(options, emit) {
282
289
  emit(withLink(JSON.parse(info), options.artifact, true));
283
290
  return 0;
284
291
  }
285
- await replace(running);
292
+ await replace(running, paths);
286
293
  }
287
294
  registerOwner(paths);
288
295
  recordAgent(paths);
@@ -326,7 +333,7 @@ async function start(options, emit) {
326
333
  const started = lines.find((line) => line.includes('"server-started"'));
327
334
  if (started) {
328
335
  for (let check = 0; check < 20; check++) {
329
- if (!alive(child.pid)) throw new CliError(`Server started but was killed. Retry in a persistent terminal with: ryugi-artifacts start --project-dir ${paths.project} --host ${options.host} --url-host ${options.urlHost} --foreground`);
336
+ if (!alive(child.pid)) throw new CliError(`Server started but was killed. Retry in a persistent terminal with: ${invocation()} start --project-dir ${paths.project}${options.artifact ? ` --artifact ${options.artifact}` : ""} --host ${options.host} --url-host ${options.urlHost} --foreground`);
330
337
  await sleep(100);
331
338
  }
332
339
  emit(withLink(JSON.parse(started), options.artifact, false));
@@ -346,7 +353,7 @@ async function start(options, emit) {
346
353
  }
347
354
 
348
355
  // src/cli/publish.ts
349
- var NOT_RUNNING = "No artifacts server is running for this project. Start it with `ryugi-artifacts start`, then run this again.";
356
+ var notRunning = (project) => `No artifacts server is running for this project. Start it with \`${invocation()} start --project-dir ${project}\`, then run this again.`;
350
357
  async function publish(options, emit) {
351
358
  if (options.action === "publish" || options.action === "unpublish") {
352
359
  if (!options.artifact) throw new CliError("--artifact <type>/<id> is required");
@@ -358,7 +365,7 @@ async function publish(options, emit) {
358
365
  try {
359
366
  info = JSON.parse(readText(paths.info) ?? "");
360
367
  } catch {
361
- throw new CliError(NOT_RUNNING);
368
+ throw new CliError(notRunning(paths.project));
362
369
  }
363
370
  const base = new URL(info.url);
364
371
  const key = base.searchParams.get("key") ?? "";
@@ -372,7 +379,7 @@ async function publish(options, emit) {
372
379
  body: body ? JSON.stringify(body) : void 0
373
380
  });
374
381
  } catch {
375
- throw new CliError(NOT_RUNNING);
382
+ throw new CliError(notRunning(paths.project));
376
383
  }
377
384
  const json = await res.json().catch(() => ({}));
378
385
  if (res.status === 401) throw new CliError("", { type: "login-required", url: json.loginUrl, message: "Open url to sign in to the Ryugi cloud, then run the same command again." }, 2);
@@ -569,7 +576,7 @@ async function main(argv) {
569
576
  }, emit);
570
577
  }
571
578
  if (command === "--version" || command === "-v") {
572
- console.log("1.9.1");
579
+ console.log("1.10.1");
573
580
  return 0;
574
581
  }
575
582
  if (command === "--help" || command === "-h") {
package/dist/server.cjs CHANGED
@@ -1975,6 +1975,16 @@ function structuralWarnings(raw) {
1975
1975
  if (raw.building !== void 0 && typeof raw.building !== "boolean") {
1976
1976
  warnings.push('"building" must be a boolean');
1977
1977
  }
1978
+ if (raw.writing !== void 0 && (typeof raw.writing !== "string" || !raw.writing)) {
1979
+ warnings.push('"writing" must be a board id');
1980
+ }
1981
+ if (isObject2(raw.notes)) {
1982
+ for (const [id2, note] of Object.entries(raw.notes)) {
1983
+ if (isObject2(note) && note.color !== void 0 && (typeof note.color !== "string" || !/^#(?:[\da-f]{3}|[\da-f]{6})$/i.test(note.color))) {
1984
+ warnings.push(`note "${id2}" color must be #RGB or #RRGGBB`);
1985
+ }
1986
+ }
1987
+ }
1978
1988
  if (isObject2(raw.boards)) {
1979
1989
  for (const [id2, board] of Object.entries(raw.boards)) {
1980
1990
  if (isObject2(board) && board.interactive !== void 0 && typeof board.interactive !== "boolean") {
@@ -2083,6 +2093,9 @@ function validateCanvas(raw, fileExists, options = {}) {
2083
2093
  warnings.push(`activePage "${canvas.activePage}" is not a page`);
2084
2094
  }
2085
2095
  const target = canvas.focus?.target;
2096
+ if (canvas.writing !== void 0 && !canvas.boards[canvas.writing]) {
2097
+ warnings.push(`writing target "${canvas.writing}" is not a board`);
2098
+ }
2086
2099
  if (target !== void 0 && !canvas.boards[target] && !canvas.groups?.[target] && !canvas.notes?.[target]) {
2087
2100
  warnings.push(`focus target "${target}" is not a board, group or note`);
2088
2101
  }
@@ -83771,12 +83784,14 @@ async function createDocumentSession(options) {
83771
83784
  setOutcome({ kind: "rejected", message: messageOf(err) });
83772
83785
  return;
83773
83786
  }
83774
- const baseText = closestBase(written, text2, lastGoodText ?? serializeDocument(editor.getEditorState().toJSON()));
83787
+ const fallback = lastGoodText ?? serializeDocument(editor.getEditorState().toJSON());
83788
+ const queued = streaming > 0;
83775
83789
  lastGoodText = text2;
83776
83790
  streaming += 1;
83777
83791
  emit({ type: "status", outcome, streaming: true });
83778
83792
  playing = playing.then(async () => {
83779
83793
  try {
83794
+ const baseText = queued ? fallback : closestBase(written, text2, fallback);
83780
83795
  const { stats, steps } = prepareAgentEdit(baseText, text2, target);
83781
83796
  for (const step of steps) {
83782
83797
  applyStep(step);
@@ -85686,12 +85701,13 @@ async function startArtifactsServer(options) {
85686
85701
  for (const socket of clients) socket.write(frame);
85687
85702
  };
85688
85703
  const avatars = createAvatars(options.fetch);
85704
+ const names = commentNames({ agentFile: import_node_path16.default.join(stateDir, "agent"), projectDir: import_node_path16.default.resolve(root, "../.."), cloud: options.cloud });
85689
85705
  const documents = createDocumentRegistry({
85690
85706
  root,
85691
85707
  stateDir,
85692
85708
  timing: options.documentTiming,
85693
85709
  broadcast,
85694
- names: commentNames({ agentFile: import_node_path16.default.join(stateDir, "agent"), projectDir: import_node_path16.default.resolve(root, "../.."), cloud: options.cloud }),
85710
+ names,
85695
85711
  onWarningsChange: (id2) => {
85696
85712
  const dir = resolveArtifactDir(root, "document", id2);
85697
85713
  if (!dir) return;
@@ -85708,6 +85724,9 @@ async function startArtifactsServer(options) {
85708
85724
  const payload = readArtifact(dir, ref, runtimeOf(ref, dir));
85709
85725
  const reasons = [...payload.warnings];
85710
85726
  if ("pending" in payload) reasons.push(...payload.pending.map((board) => `board ${board} is still being written`));
85727
+ if ("canvas" in payload && payload.canvas?.writing && !payload.pending.includes(payload.canvas.writing)) {
85728
+ reasons.push(`board ${payload.canvas.writing} is still being written`);
85729
+ }
85711
85730
  if (session?.streaming()) reasons.push("the document is still being written");
85712
85731
  const title = titleOf(payload, ref);
85713
85732
  let published = null;
@@ -85849,7 +85868,7 @@ async function startArtifactsServer(options) {
85849
85868
  return;
85850
85869
  }
85851
85870
  const ref = artifactKeyOf(`${type}/${id2}`);
85852
- sendJson(res, 200, { ...readArtifact(dir, ref, runtimeOf(ref, dir)), contentBase: `${contentPrefix}${type}/${id2}/` });
85871
+ sendJson(res, 200, { ...readArtifact(dir, ref, runtimeOf(ref, dir)), ...ref.type !== "html" ? { agent: names.agent() } : {}, contentBase: `${contentPrefix}${type}/${id2}/` });
85853
85872
  };
85854
85873
  const serveList = (res) => {
85855
85874
  const { artifacts, warnings } = listArtifacts(root);
@@ -86199,6 +86218,7 @@ function openReady(payload) {
86199
86218
  if (!canvas || payload.warnings.length > 0) return false;
86200
86219
  const boards = Object.entries(canvas.boards);
86201
86220
  if (boards.length === 0) return false;
86221
+ if (canvas.building === true) return true;
86202
86222
  const pending = new Set(payload.pending);
86203
86223
  const ready = (id2) => {
86204
86224
  const board = canvas.boards[id2];
@@ -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{c as r,l as i,n as a,o,r as s,s as c}from"./DocumentEditor-rRoUyzj5.js";var l=e(t(),1),u=n();function d(){let e=(0,l.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,l.useState)(e.matches);return(0,l.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function f({id:e,state:t,contentBase:n}){let f=d(),p=(0,l.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:c(),send:()=>void 0}),[e,n]);return(0,l.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,u.jsx)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:(0,u.jsx)(`article`,{className:`xrgej4m xvueqy4 x1axd487 x4l9tsp`,children:(0,u.jsx)(o.Provider,{value:p,children:(0,u.jsx)(i,{variant:`article`,theme:f?`dark`:`light`,initialValue:t,extraNodes:a,rendererConfig:s,onEditorReady:e=>e?.setEditable(!1),children:(0,u.jsx)(r,{})})})})})}export{f 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{c as r,l as i,n as a,o,r as s,s as c}from"./DocumentEditor-CHFJtV6u.js";var l=e(t(),1),u=n();function d(){let e=(0,l.useMemo)(()=>window.matchMedia(`(prefers-color-scheme: dark)`),[]),[t,n]=(0,l.useState)(e.matches);return(0,l.useEffect)(()=>{let t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[e]),t}function f({id:e,state:t,contentBase:n}){let f=d(),p=(0,l.useMemo)(()=>({artifact:`cloud/${e}`,contentBase:n,channel:c(),send:()=>void 0}),[e,n]);return(0,l.useEffect)(()=>{let e=document.createElement(`base`);return e.href=n,document.head.prepend(e),()=>e.remove()},[n]),(0,u.jsx)(`div`,{className:`x1us19tq x1rozbrz xo2rkog`,className:`ryugi-doc ${{className:`x1us19tq x1rozbrz xo2rkog`}.className??``}`,children:(0,u.jsx)(`article`,{className:`xrgej4m xvueqy4 x1axd487 x4l9tsp`,children:(0,u.jsx)(o.Provider,{value:p,children:(0,u.jsx)(i,{variant:`article`,theme:f?`dark`:`light`,initialValue:t,extraNodes:a,rendererConfig:s,onEditorReady:e=>e?.setEditable(!1),children:(0,u.jsx)(r,{})})})})})}export{f as default};