ryugi-artifacts 1.15.1 → 1.15.2

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 (147) hide show
  1. package/dist/cli.cjs +48 -15
  2. package/dist/server.cjs +560 -249
  3. package/dist/viewer/CloudDocument-a-QKYAcP.js +1 -0
  4. package/dist/viewer/CloudLiveDocument-9iIvfZ3y.js +1 -0
  5. package/dist/viewer/{DocumentLayout-BDQ2bRgn.js → DocumentLayout-C7DI3nfX.js} +82 -82
  6. package/dist/viewer/DocumentPage-CN-MKF7P.js +1 -0
  7. package/dist/viewer/{abnfDiagram-VCTEODGH-DXcz0DY8.js → abnfDiagram-VCTEODGH-BMWz464k.js} +1 -1
  8. package/dist/viewer/{ar-SA-G6X2FPQ2-DaFICdeh.js → ar-SA-G6X2FPQ2-BbVC-Hlr.js} +1 -1
  9. package/dist/viewer/{architectureDiagram-5GKGNRK7-7HwBC9Wz.js → architectureDiagram-5GKGNRK7-lX00q8y2.js} +1 -1
  10. package/dist/viewer/{az-AZ-76LH7QW2-ro71YLew.js → az-AZ-76LH7QW2-kWbxvJoq.js} +1 -1
  11. package/dist/viewer/{bg-BG-XCXSNQG7-BBql1i2c.js → bg-BG-XCXSNQG7-TWjfBbIo.js} +1 -1
  12. package/dist/viewer/{blockDiagram-I7D4REHJ-DN6_CCIZ.js → blockDiagram-I7D4REHJ-r6mTM-V-.js} +1 -1
  13. package/dist/viewer/{bn-BD-2XOGV67Q-D0nEk_sk.js → bn-BD-2XOGV67Q-Dt8TooV0.js} +1 -1
  14. package/dist/viewer/{c4Diagram-7LVT6UL2-BiKuFZ_0.js → c4Diagram-7LVT6UL2-C-_q-X-w.js} +1 -1
  15. package/dist/viewer/{ca-ES-6MX7JW3Y-BzXg8v5p.js → ca-ES-6MX7JW3Y-D_8AE5qp.js} +1 -1
  16. package/dist/viewer/{chunk-4HAMMTFA-D8wduydj.js → chunk-4HAMMTFA-VvmFCZU-.js} +1 -1
  17. package/dist/viewer/{chunk-EIO257PC-KVQLe9-1.js → chunk-EIO257PC-BD0aoNze.js} +1 -1
  18. package/dist/viewer/{chunk-GMAD6QVW-BPxTHMTi.js → chunk-GMAD6QVW-DWAZVXaZ.js} +1 -1
  19. package/dist/viewer/{chunk-GVQU2GXP-C5_2EAAn.js → chunk-GVQU2GXP-BXHdLj9j.js} +1 -1
  20. package/dist/viewer/{chunk-IMKFNOWR-CoST25Zy.js → chunk-IMKFNOWR-Fyso0OP0.js} +1 -1
  21. package/dist/viewer/{chunk-L3NEJ4N5-DqtaXAcI.js → chunk-L3NEJ4N5-B4STdBka.js} +1 -1
  22. package/dist/viewer/{chunk-OSK3NFVY-DacvL7tA.js → chunk-OSK3NFVY-BEwpVZFI.js} +1 -1
  23. package/dist/viewer/{chunk-PWAF6VOD-Cxj_hOdt.js → chunk-PWAF6VOD-DdxzGU7i.js} +1 -1
  24. package/dist/viewer/{chunk-SHT3W25Y-D9pKJ6Au.js → chunk-SHT3W25Y-vfyQBaPf.js} +1 -1
  25. package/dist/viewer/{chunk-SVP7TREG-svneeNVA.js → chunk-SVP7TREG-iglWUDOS.js} +1 -1
  26. package/dist/viewer/{chunk-TICWLB2K-xfr9ROyW.js → chunk-TICWLB2K-cw2jyncd.js} +1 -1
  27. package/dist/viewer/{classDiagram-ZZMXUADV-lu71gUXJ.js → classDiagram-ZZMXUADV-2wFXqaaX.js} +1 -1
  28. package/dist/viewer/{classDiagram-v2-VYDZK3BY-lu71gUXJ.js → classDiagram-v2-VYDZK3BY-2wFXqaaX.js} +1 -1
  29. package/dist/viewer/{cs-CZ-2BRQDIVT-bwZx9UIu.js → cs-CZ-2BRQDIVT-BYqh8Zl-.js} +1 -1
  30. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-DlNaJbj_.js → cynefinDiagram-5FMLGOSQ-CHJoO2Gh.js} +1 -1
  31. package/dist/viewer/{da-DK-5WZEPLOC-BApDVcwE.js → da-DK-5WZEPLOC-DeKrLDAU.js} +1 -1
  32. package/dist/viewer/{dagre-GXQ25YYZ-DWu2Ycc5.js → dagre-GXQ25YYZ-GWluYfqf.js} +1 -1
  33. package/dist/viewer/{de-DE-XR44H4JA-COcHc6Zt.js → de-DE-XR44H4JA-D1wSMLDv.js} +1 -1
  34. package/dist/viewer/{diagram-S7CK7UJ4-D8VO7YKc.js → diagram-S7CK7UJ4-BlgVPVRQ.js} +1 -1
  35. package/dist/viewer/{diagram-UQ7AKVKN-D5OcQNY9.js → diagram-UQ7AKVKN-ChtP0cpA.js} +1 -1
  36. package/dist/viewer/{diagram-VX7I27RA-DRHmiAWI.js → diagram-VX7I27RA-vKg6VXhQ.js} +1 -1
  37. package/dist/viewer/{diagram-Z3DM3KII-ClXzWLem.js → diagram-Z3DM3KII-CuHg0fFk.js} +1 -1
  38. package/dist/viewer/{dist-BuKe8NdN.js → dist-B0CwGaG1.js} +1 -1
  39. package/dist/viewer/{dist-BKtxxS1a.js → dist-BPFUf7bl.js} +1 -1
  40. package/dist/viewer/{dist-_3NL_2LS.js → dist-Bh74XfyN.js} +1 -1
  41. package/dist/viewer/{dist-TX5rYYGW.js → dist-BsTr5QXe.js} +4 -4
  42. package/dist/viewer/{dist-CFkCXjQP.js → dist-C0tpKGuj.js} +1 -1
  43. package/dist/viewer/{dist-DB3o8dUU.js → dist-CKWiXiZi.js} +1 -1
  44. package/dist/viewer/{dist-CV7QdHTq.js → dist-CSqVlzxR.js} +1 -1
  45. package/dist/viewer/{dist-DlANbAUX.js → dist-Cn_FmF1G.js} +1 -1
  46. package/dist/viewer/{dist-DzBPEHnz.js → dist-CtEVZbP8.js} +1 -1
  47. package/dist/viewer/{dist-C2adJeNZ.js → dist-D2qf-mJJ.js} +1 -1
  48. package/dist/viewer/{dist-DLh5uREE.js → dist-DM8QiMoo.js} +1 -1
  49. package/dist/viewer/{dist-DcGUli8O.js → dist-DRSecFjm.js} +1 -1
  50. package/dist/viewer/{dist-G2JHMLgK.js → dist-DX-BoDBd.js} +1 -1
  51. package/dist/viewer/{dist-VupXLYv6.js → dist-DY66SSSM.js} +1 -1
  52. package/dist/viewer/{dist-M7Lz5R2v.js → dist-D_BoFupz.js} +1 -1
  53. package/dist/viewer/{dist-C_NwF-ep.js → dist-DeIwlPUC.js} +1 -1
  54. package/dist/viewer/{dist-Bgijnk4D.js → dist-Dnus25TG.js} +1 -1
  55. package/dist/viewer/{dist-D0Emc84u.js → dist-DqIYAdWh.js} +1 -1
  56. package/dist/viewer/{dist-rgdCugHI.js → dist-DygF9RCe.js} +1 -1
  57. package/dist/viewer/{dist-a8BuHhYq.js → dist-aWI_fVHd.js} +1 -1
  58. package/dist/viewer/{dist-mDWB-P3S.js → dist-k50hDI1z.js} +1 -1
  59. package/dist/viewer/{dist-DfWxOyg4.js → dist-rnL-4FWR.js} +1 -1
  60. package/dist/viewer/{dist-q1jFGEbP.js → dist-uFBCfcc5.js} +1 -1
  61. package/dist/viewer/{dist-CByD4sdq.js → dist-zBXj6chJ.js} +1 -1
  62. package/dist/viewer/{ebnfDiagram-PWID7BFC-BOzsyHEk.js → ebnfDiagram-PWID7BFC-C5bMbUq0.js} +1 -1
  63. package/dist/viewer/{el-GR-BZB4AONW-h1eLQlP7.js → el-GR-BZB4AONW-0cbbZg2F.js} +1 -1
  64. package/dist/viewer/{en-B4ZKOASM-EdleGu9D.js → en-B4ZKOASM-CDTpThHV.js} +1 -1
  65. package/dist/viewer/{erDiagram-RLTQ6QDP-BF_tpcM3.js → erDiagram-RLTQ6QDP-C6PFBM-5.js} +1 -1
  66. package/dist/viewer/{es-ES-U4NZUMDT-DeaeHEK9.js → es-ES-U4NZUMDT-8fQP93wk.js} +1 -1
  67. package/dist/viewer/{eu-ES-A7QVB2H4-BzoRNYbw.js → eu-ES-A7QVB2H4-CnogIziV.js} +1 -1
  68. package/dist/viewer/{fa-IR-HGAKTJCU-fXYoNuWo.js → fa-IR-HGAKTJCU-CdYOaxCM.js} +1 -1
  69. package/dist/viewer/{fi-FI-Z5N7JZ37-CTVEZXqM.js → fi-FI-Z5N7JZ37-Ds2DlP3M.js} +1 -1
  70. package/dist/viewer/flowDiagram-HODETNUW-DFPpbdLC.js +1 -0
  71. package/dist/viewer/{fr-FR-RHASNOE6-BizkpgaG.js → fr-FR-RHASNOE6-BZT79zkJ.js} +1 -1
  72. package/dist/viewer/{ganttDiagram-EL5Y4UJY-DvL8TKGV.js → ganttDiagram-EL5Y4UJY-Dj5h1KL5.js} +1 -1
  73. package/dist/viewer/{gl-ES-HMX3MZ6V-rsfHb2R9.js → gl-ES-HMX3MZ6V-D5SkTUmd.js} +1 -1
  74. package/dist/viewer/{he-IL-6SHJWFNN-BmWEwAWC.js → he-IL-6SHJWFNN-DAYxQbJv.js} +1 -1
  75. package/dist/viewer/{hi-IN-IWLTKZ5I-gzYZTFIt.js → hi-IN-IWLTKZ5I-CmTpu_Mh.js} +1 -1
  76. package/dist/viewer/{hu-HU-A5ZG7DT2-DqXGHJ4g.js → hu-HU-A5ZG7DT2-CCoJDqVh.js} +1 -1
  77. package/dist/viewer/{id-ID-SAP4L64H-CVbSVAc3.js → id-ID-SAP4L64H-DvB8T5Ih.js} +1 -1
  78. package/dist/viewer/{image-GAAHSSAO-B0g7YyLf.js → image-GAAHSSAO-lz2X8afW.js} +1 -1
  79. package/dist/viewer/index.html +1 -1
  80. package/dist/viewer/index.js +8 -8
  81. package/dist/viewer/index2.css +66 -18
  82. package/dist/viewer/{infoDiagram-27XIBGKW-DOxIYIRL.js → infoDiagram-27XIBGKW-CPqqoefO.js} +1 -1
  83. package/dist/viewer/{ishikawaDiagram-5VMMS53U-D-U6Fi8F.js → ishikawaDiagram-5VMMS53U-CWt0edvi.js} +1 -1
  84. package/dist/viewer/{it-IT-JPQ66NNP-6PNiI36L.js → it-IT-JPQ66NNP-X0-NsLIF.js} +1 -1
  85. package/dist/viewer/{ja-JP-DBVTYXUO-D3SJtNp5.js → ja-JP-DBVTYXUO-DXggnPKV.js} +1 -1
  86. package/dist/viewer/{journeyDiagram-3NMN7TZE-8Mz0Nae3.js → journeyDiagram-3NMN7TZE-CiTGpewC.js} +1 -1
  87. package/dist/viewer/{kaa-6HZHGXH3-Bz3WA5yL.js → kaa-6HZHGXH3-2DqCJWwE.js} +1 -1
  88. package/dist/viewer/{kab-KAB-ZGHBKWFO-W2PtzMEV.js → kab-KAB-ZGHBKWFO-BMae-gRZ.js} +1 -1
  89. package/dist/viewer/{kanban-definition-UXKFOSKX-BP8HwPzL.js → kanban-definition-UXKFOSKX-BdzkoXVg.js} +1 -1
  90. package/dist/viewer/{kk-KZ-P5N5QNE5-Dc1i0Bup.js → kk-KZ-P5N5QNE5-BrUDCVOJ.js} +1 -1
  91. package/dist/viewer/{km-KH-HSX4SM5Z-C88_w0rR.js → km-KH-HSX4SM5Z-D8gJ0fJb.js} +1 -1
  92. package/dist/viewer/{ko-KR-MTYHY66A-DWOt-6As.js → ko-KR-MTYHY66A-BiY1FmA2.js} +1 -1
  93. package/dist/viewer/{ku-TR-6OUDTVRD-B7qeFzlo.js → ku-TR-6OUDTVRD-CG1Rotv4.js} +1 -1
  94. package/dist/viewer/{lt-LT-XHIRWOB4-Dc9eguDu.js → lt-LT-XHIRWOB4-BmDMD56e.js} +1 -1
  95. package/dist/viewer/{lv-LV-5QDEKY6T-D9CzWKMj.js → lv-LV-5QDEKY6T-DDGbepyo.js} +1 -1
  96. package/dist/viewer/{mindmap-definition-YA3MSWOX-Bikv3SLv.js → mindmap-definition-YA3MSWOX-CQZcwz8L.js} +1 -1
  97. package/dist/viewer/{mr-IN-CRQNXWMA-CtlsKIl9.js → mr-IN-CRQNXWMA-DGVOXAif.js} +1 -1
  98. package/dist/viewer/{my-MM-5M5IBNSE-CiyAGqHH.js → my-MM-5M5IBNSE-CE47hNzn.js} +1 -1
  99. package/dist/viewer/{nb-NO-T6EIAALU-l9uMRUdk.js → nb-NO-T6EIAALU-DWAPtr4M.js} +1 -1
  100. package/dist/viewer/{nl-NL-IS3SIHDZ-zja_zaqN.js → nl-NL-IS3SIHDZ-CSqbImvS.js} +1 -1
  101. package/dist/viewer/{nn-NO-6E72VCQL-BiP5RLsf.js → nn-NO-6E72VCQL-CjGcKERL.js} +1 -1
  102. package/dist/viewer/{oc-FR-POXYY2M6-CvKUzwab.js → oc-FR-POXYY2M6-xGWsukeR.js} +1 -1
  103. package/dist/viewer/{pa-IN-N4M65BXN-DioFchQd.js → pa-IN-N4M65BXN-BJE8h_ZN.js} +1 -1
  104. package/dist/viewer/{pegDiagram-XKGWAZYB-BSllNtPI.js → pegDiagram-XKGWAZYB-CcuWZbUH.js} +1 -1
  105. package/dist/viewer/percentages-BXMCSKIN-PFePCwe-.js +1 -0
  106. package/dist/viewer/{pieDiagram-E7YTZNPT-b1-BsaA4.js → pieDiagram-E7YTZNPT-DmDiBmYg.js} +1 -1
  107. package/dist/viewer/{pl-PL-T2D74RX3-Ci7dAnI8.js → pl-PL-T2D74RX3-Uk8kN-ZN.js} +1 -1
  108. package/dist/viewer/{prod-CPZkgD7t.js → prod-BUf-ByWA.js} +8 -8
  109. package/dist/viewer/{pt-BR-5N22H2LF--VT7NYYE.js → pt-BR-5N22H2LF-gBczIC_J.js} +1 -1
  110. package/dist/viewer/{pt-PT-UZXXM6DQ-CWdbQilC.js → pt-PT-UZXXM6DQ-BGwa_O4j.js} +1 -1
  111. package/dist/viewer/{quadrantDiagram-AXDQQJYC-D0pucWR0.js → quadrantDiagram-AXDQQJYC-T0I-ZZTk.js} +1 -1
  112. package/dist/viewer/{railroadDiagram-O6MQD6OU-DIPJ2PKr.js → railroadDiagram-O6MQD6OU-BU8Pl_j-.js} +1 -1
  113. package/dist/viewer/{requirementDiagram-BXWQKSXE-DEGhiwJ9.js → requirementDiagram-BXWQKSXE-BJ8oJEnw.js} +1 -1
  114. package/dist/viewer/{ro-RO-JPDTUUEW-BK4wLUL7.js → ro-RO-JPDTUUEW-pdcrUiy_.js} +1 -1
  115. package/dist/viewer/{ru-RU-B4JR7IUQ-BDPQ8blU.js → ru-RU-B4JR7IUQ-CVgnNF41.js} +1 -1
  116. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-D7sLhGYb.js → sequenceDiagram-WJ2MYXX4-gJZVdUNR.js} +1 -1
  117. package/dist/viewer/{si-LK-N5RQ5JYF-D5DWsUAA.js → si-LK-N5RQ5JYF-CSt8gCsq.js} +1 -1
  118. package/dist/viewer/{sk-SK-C5VTKIMK-Cia9j1Te.js → sk-SK-C5VTKIMK-XfhHoKBc.js} +1 -1
  119. package/dist/viewer/{sl-SI-NN7IZMDC-CV304k5j.js → sl-SI-NN7IZMDC-CCi2FT_f.js} +1 -1
  120. package/dist/viewer/{stateDiagram-D77RDMKH-BMNx9_M8.js → stateDiagram-D77RDMKH-BdnhW-mL.js} +1 -1
  121. package/dist/viewer/{stateDiagram-v2-MP3YSRHH-CPa9DZs4.js → stateDiagram-v2-MP3YSRHH-DKQ7Wxmz.js} +1 -1
  122. package/dist/viewer/subset-shared.chunk-VczM4DdU.js +1 -0
  123. package/dist/viewer/{subset-worker.chunk-CHQzlaj3.js → subset-worker.chunk-lTXEvH8k.js} +1 -1
  124. package/dist/viewer/{sv-SE-XGPEYMSR-CXdp-XZD.js → sv-SE-XGPEYMSR-Cyx0oXFg.js} +1 -1
  125. package/dist/viewer/{swimlanes-42K2YHIH-BwUyxwi3.js → swimlanes-42K2YHIH-BEaqSHwN.js} +1 -1
  126. package/dist/viewer/{swimlanesDiagram-VR7AAH4N-BgxS36EG.js → swimlanesDiagram-VR7AAH4N-Bed4kux2.js} +1 -1
  127. package/dist/viewer/{ta-IN-2NMHFXQM-CObY6q-8.js → ta-IN-2NMHFXQM-B7PlQhT2.js} +1 -1
  128. package/dist/viewer/{th-TH-HPSO5L25-CEOiELZN.js → th-TH-HPSO5L25-CjkmlCNK.js} +1 -1
  129. package/dist/viewer/{timeline-definition-24CTP7MA-BJ-7Fdfr.js → timeline-definition-24CTP7MA-Bej-g5qJ.js} +1 -1
  130. package/dist/viewer/{tr-TR-DEFEU3FU-CPj5dFcB.js → tr-TR-DEFEU3FU-Cjo4Cn6F.js} +1 -1
  131. package/dist/viewer/{uk-UA-QMV73CPH-BkZyFeXP.js → uk-UA-QMV73CPH-XHZw5PVj.js} +1 -1
  132. package/dist/viewer/useSandboxFrame-CCmB0PzU.js +58 -0
  133. package/dist/viewer/{vennDiagram-4TSXK5OY-DnFbjWDw.js → vennDiagram-4TSXK5OY-CDh6q_u6.js} +1 -1
  134. package/dist/viewer/{vi-VN-M7AON7JQ-CkKKOpBQ.js → vi-VN-M7AON7JQ-9gMVxytt.js} +1 -1
  135. package/dist/viewer/{wardleyDiagram-VM6X3IG4-CN_pm__V.js → wardleyDiagram-VM6X3IG4-DKIOQyM_.js} +1 -1
  136. package/dist/viewer/{xychartDiagram-S5SC5T6Z-C7XLywXm.js → xychartDiagram-S5SC5T6Z-Cb3e4r6i.js} +1 -1
  137. package/dist/viewer/{zh-CN-LNUGB5OW-BQcCqsDg.js → zh-CN-LNUGB5OW-6d07k_8d.js} +1 -1
  138. package/dist/viewer/{zh-HK-E62DVLB3-Bp-jK0zw.js → zh-HK-E62DVLB3-BkpGiC7m.js} +1 -1
  139. package/dist/viewer/{zh-TW-RAJ6MFWO-KmFL88Bs.js → zh-TW-RAJ6MFWO-Br8z9s4c.js} +1 -1
  140. package/package.json +1 -1
  141. package/dist/viewer/CloudDocument-CgM3kbiO.js +0 -1
  142. package/dist/viewer/CloudLiveDocument-CdN71jfH.js +0 -1
  143. package/dist/viewer/DocumentPage-BBzAFj4H.js +0 -1
  144. package/dist/viewer/flowDiagram-HODETNUW-DpY3t4b0.js +0 -1
  145. package/dist/viewer/percentages-BXMCSKIN-BRZnWvym.js +0 -1
  146. package/dist/viewer/subset-shared.chunk-ChUk9bHw.js +0 -1
  147. package/dist/viewer/useSandboxFrame-BpJ9uM86.js +0 -58
package/dist/cli.cjs CHANGED
@@ -232,7 +232,7 @@ function serverClient(projectDir) {
232
232
 
233
233
  // src/cli/comment.ts
234
234
  var COMMENT_ACTIONS = ["list", "add", "reply", "resolve"];
235
- var DOCUMENT = /^document\/[a-z0-9][a-z0-9-]*$/;
235
+ var ARTIFACT = /^(document|artboard)\/[a-z0-9][a-z0-9-]*$/;
236
236
  var WRITTEN = { add: "comment-added", reply: "comment-replied", resolve: "comment-resolved" };
237
237
  function readStdin() {
238
238
  if (process.stdin.isTTY) return "";
@@ -247,8 +247,20 @@ function messageText(options) {
247
247
  if (!text2) throw new CliError("The message is empty: pass --text <text> or pipe it on stdin");
248
248
  return text2;
249
249
  }
250
- function requestOf(options, action) {
250
+ function coordinate(value, flag) {
251
+ if (value === void 0) return void 0;
252
+ const number = Number(value);
253
+ if (!Number.isFinite(number)) throw new CliError(`${flag} must be a number`);
254
+ return number;
255
+ }
256
+ function requestOf(options, action, type) {
251
257
  if (action === "list") return { op: "list", all: !!options.all };
258
+ if (action === "add" && type === "artboard") {
259
+ if (!options.board) throw new CliError("comment add on an artboard needs --board <boardId>");
260
+ const x = coordinate(options.x, "--x");
261
+ const y = coordinate(options.y, "--y");
262
+ return { op: "add", board: options.board, ...x !== void 0 ? { x } : {}, ...y !== void 0 ? { y } : {}, text: messageText(options) };
263
+ }
252
264
  if (action === "add") {
253
265
  if (!options.block) throw new CliError("comment add needs --block <blockId>");
254
266
  return { op: "add", blockId: options.block, ...options.quote ? { quote: options.quote } : {}, text: messageText(options) };
@@ -259,12 +271,12 @@ function requestOf(options, action) {
259
271
  async function comment(options, emit) {
260
272
  const action = COMMENT_ACTIONS.find((name) => name === options.action);
261
273
  if (!action) throw new CliError("comment needs an action: list, add, reply or resolve");
262
- if (!options.artifact || !DOCUMENT.test(options.artifact)) throw new CliError("--artifact must be document/<id>");
263
- const request = requestOf(options, action);
274
+ if (!options.artifact || !ARTIFACT.test(options.artifact)) throw new CliError("--artifact must be document/<id> or artboard/<id>");
275
+ const [type, id] = options.artifact.split("/");
276
+ const request = requestOf(options, action, type);
264
277
  const server = serverClient(options.projectDir);
265
278
  const agent = detectAgent(process.env);
266
- const id = options.artifact.slice("document/".length);
267
- const { status, json } = await server.call("POST", `/api/agent/document/${id}/comments`, { ...request, ...agent ? { agent } : {} });
279
+ const { status, json } = await server.call("POST", `/api/agent/${type}/${id}/comments`, { ...request, ...agent ? { agent } : {} });
268
280
  if (status === 404 && typeof json.error !== "string") {
269
281
  throw new CliError(`The running artifacts server is older than this CLI. Run \`${invocation()} start --project-dir ${server.project}\` to replace it, then run this again.`);
270
282
  }
@@ -274,9 +286,23 @@ async function comment(options, emit) {
274
286
  return 0;
275
287
  }
276
288
  var clip = (text2, max) => text2.length > max ? `${text2.slice(0, max)}\u2026` : text2;
289
+ var percent = (value) => `${Math.round(value * 100)}%`;
290
+ function anchorLines(thread) {
291
+ const anchor = thread.anchor;
292
+ if ("blockId" in anchor) return [` on block ${anchor.blockId}${anchor.quote ? ` "${clip(anchor.quote, 120)}"` : ""}`];
293
+ const file = anchor.board ? thread.files?.[anchor.board] : void 0;
294
+ const where = anchor.board ? `, board ${anchor.board}${file ? ` (${file})` : ""}` : "";
295
+ const lines = [` on page ${anchor.page}${where} at ${anchor.x},${anchor.y}`];
296
+ anchor.nodes?.forEach((node, index) => {
297
+ const offset = index === 0 && anchor.offset ? ` at ${percent(anchor.offset.x)}, ${percent(anchor.offset.y)}` : "";
298
+ lines.push(` node ${node.board}: ${node.path}${offset}`);
299
+ });
300
+ if (thread.stale) lines.push(" the board changed since this comment; the node may have moved");
301
+ return lines;
302
+ }
277
303
  function threadText(thread) {
278
- const state = [thread.status, thread.waitingOn ? `waiting on ${thread.waitingOn}` : "", thread.changes?.length ? thread.changes.join(", ") : ""].filter(Boolean).join(" \xB7 ");
279
- const lines = [`thread ${thread.id} (${state})`, ` on block ${thread.anchor.blockId}${thread.anchor.quote ? ` "${clip(thread.anchor.quote, 120)}"` : ""}`];
304
+ const state = [thread.status, thread.waitingOn ? `waiting on ${thread.waitingOn}` : "", thread.changes?.length ? thread.changes.join(", ") : "", thread.stale ? "stale" : ""].filter(Boolean).join(" \xB7 ");
305
+ const lines = [`thread ${thread.id} (${state})`, ...anchorLines(thread)];
280
306
  for (const message of thread.messages) {
281
307
  const who = message.name ? `${message.author} (${message.name})` : message.author;
282
308
  lines.push(` ${who}: ${message.deleted ? "[deleted]" : message.text.replace(/\n/g, "\n ")}`);
@@ -723,11 +749,12 @@ Commands:
723
749
  publish Publish an artifact to the Ryugi cloud (needs a running server):
724
750
  --artifact <type>/<id> [--public | --private] [--unpublish]
725
751
  --list | --delete <cloud-id> | --login | --logout
726
- comment Read and answer a document's comments (needs a running server):
727
- list --artifact document/<id> [--all] what changed since you last listed
752
+ comment Read and answer comments on a document or artboard (needs a running server):
753
+ list --artifact <document|artboard>/<id> [--all] what changed since you last listed
728
754
  add --artifact document/<id> --block <blockId> [--quote <text>] [--text <text>]
729
- reply --artifact document/<id> --thread <threadId> [--text <text>]
730
- resolve --artifact document/<id> --thread <threadId>
755
+ add --artifact artboard/<id> --board <boardId> [--x <px> --y <px>] [--text <text>]
756
+ reply --artifact <document|artboard>/<id> --thread <threadId> [--text <text>]
757
+ resolve --artifact <document|artboard>/<id> --thread <threadId>
731
758
  Without --text, add and reply read the message from stdin.
732
759
  config Auto-publish changed artifacts as private cloud copies when the agent's turn ends:
733
760
  --auto-publish on|off for every project
@@ -856,7 +883,10 @@ async function main(argv) {
856
883
  block: { type: "string" },
857
884
  quote: { type: "string" },
858
885
  thread: { type: "string" },
859
- text: { type: "string" }
886
+ text: { type: "string" },
887
+ board: { type: "string" },
888
+ x: { type: "string" },
889
+ y: { type: "string" }
860
890
  }, 1);
861
891
  return await comment({
862
892
  projectDir: values["project-dir"] ?? process.cwd(),
@@ -866,7 +896,10 @@ async function main(argv) {
866
896
  block: values.block,
867
897
  quote: values.quote,
868
898
  thread: values.thread,
869
- text: values.text
899
+ text: values.text,
900
+ board: values.board,
901
+ x: values.x,
902
+ y: values.y
870
903
  }, emit);
871
904
  }
872
905
  if (command === "config") {
@@ -878,7 +911,7 @@ async function main(argv) {
878
911
  }, emit);
879
912
  }
880
913
  if (command === "--version" || command === "-v") {
881
- console.log("1.15.1");
914
+ console.log("1.15.2");
882
915
  return 0;
883
916
  }
884
917
  if (command === "--help" || command === "-h") {