ryugi-artifacts 1.70.2 → 1.71.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 (331) hide show
  1. package/README.md +16 -12
  2. package/dist/cli.cjs +3 -3
  3. package/dist/comment-threads.cjs +52 -1
  4. package/dist/output-bootstrap.cjs +626 -8
  5. package/dist/server.cjs +1 -1
  6. package/dist/viewer/{AgentStatusPill-5vOW9xJv.js → AgentStatusPill-32K1bSLj.js} +1 -1
  7. package/dist/viewer/{ArtboardLayout-SA1gCqPF.js → ArtboardLayout-eR_sC6MB.js} +1 -1
  8. package/dist/viewer/{ArtifactList-DKmeVnKi.js → ArtifactList-DV4G_qK2.js} +1 -1
  9. package/dist/viewer/{AutoPublishPrompt-BYAg2V0y.js → AutoPublishPrompt-BWNRGLoX.js} +1 -1
  10. package/dist/viewer/{Avatar-Cr9OW8YH.js → Avatar-DGMPym4p.js} +1 -1
  11. package/dist/viewer/{Avatar-NMdjRnIS.js → Avatar-oPUFOoVq.js} +1 -1
  12. package/dist/viewer/{BottomSheet-BQnGJL4p.js → BottomSheet-BqMckeYt.js} +1 -1
  13. package/dist/viewer/Canvas-BpSDoGt-.js +1 -0
  14. package/dist/viewer/{CompositeItem-tvyaiM7D.js → CompositeItem-DA-WyEr7.js} +1 -1
  15. package/dist/viewer/DocumentLayout-BXegH0sF.js +2 -0
  16. package/dist/viewer/{DocumentPage-CxPKfY8H.js → DocumentPage-Dw7m0Oxi.js} +2 -2
  17. package/dist/viewer/{DropdownMenu-DQRhgqL-.js → DropdownMenu-C4feb-Mq.js} +1 -1
  18. package/dist/viewer/{HtmlLayout-DzcNJHBz.js → HtmlLayout-DltXJryH.js} +1 -1
  19. package/dist/viewer/{MenuSubmenuTrigger-CFAM5XEZ.js → MenuSubmenuTrigger-B_Ya87it.js} +1 -1
  20. package/dist/viewer/{MenuTrigger-COssWqPW.js → MenuTrigger-C421vH74.js} +1 -1
  21. package/dist/viewer/{PhoneArtboardBar-B6JoWeSs.js → PhoneArtboardBar-BUlgF3vS.js} +1 -1
  22. package/dist/viewer/{PhoneSheet-F7YTU--u.js → PhoneSheet-4j89IU2w.js} +1 -1
  23. package/dist/viewer/{Popover-4xoki5-K.js → Popover-C23mZ93A.js} +1 -1
  24. package/dist/viewer/{PreviewLayout-4K_gFN2k.js → PreviewLayout-CMYzEEL_.js} +2 -2
  25. package/dist/viewer/{Segmented-CFwxjVOk.js → Segmented-CRw0XP1f.js} +1 -1
  26. package/dist/viewer/{Select-CwMZ_V48.js → Select-BCfJ7Dw_.js} +1 -1
  27. package/dist/viewer/{SelectScrollUpArrow-D1wI2boK.js → SelectScrollUpArrow-CTtHJLxk.js} +1 -1
  28. package/dist/viewer/{SettingsDialog-ytisgF60.js → SettingsDialog-DXraxvYr.js} +1 -1
  29. package/dist/viewer/{SnapshotDocument-hqdNWrGC.js → SnapshotDocument-DK5PtxZf.js} +1 -1
  30. package/dist/viewer/{SplitShell-CPNXykMT.js → SplitShell-BXL8Wrt6.js} +1 -1
  31. package/dist/viewer/{ThreadView-CxcjZsZO.js → ThreadView-BB278JlB.js} +1 -1
  32. package/dist/viewer/{TooltipPopup-D7gvHCZl.js → TooltipPopup-CfrIPB9r.js} +1 -1
  33. package/dist/viewer/{VirtualizedEditor-uWe43zaI-jXQYKA6Y.js → VirtualizedEditor-uWe43zaI-CU144P8N.js} +1 -1
  34. package/dist/viewer/{VirtualizedRenderer-C_d95FXi-DXOAwChO.js → VirtualizedRenderer-C_d95FXi-F9BGUjW7.js} +1 -1
  35. package/dist/viewer/{WarningsBadge-yykGlxIS.js → WarningsBadge-8P8HTqhj.js} +1 -1
  36. package/dist/viewer/{WhiteboardLayout-DrbL4lir.js → WhiteboardLayout-CvpcOBD0.js} +1 -1
  37. package/dist/viewer/{WritingCursor-BmvJsfI4.js → WritingCursor-D5F8GgYm.js} +1 -1
  38. package/dist/viewer/{abnfDiagram-VCTEODGH-BcWo9FwK.js → abnfDiagram-VCTEODGH-B0LKfCdw.js} +1 -1
  39. package/dist/viewer/{agentLook-t-qk7xG-.js → agentLook-nPOaN-2B.js} +1 -1
  40. package/dist/viewer/{anchor-CMDdppxq.js → anchor-DOedlAmb.js} +1 -1
  41. package/dist/viewer/{ar-SA-G6X2FPQ2-Cm_ExiPk.js → ar-SA-G6X2FPQ2-B5ymZ6-7.js} +1 -1
  42. package/dist/viewer/{architecture-7GRP2DOG-B0ELn-r9.js → architecture-7GRP2DOG-BMYJCrZV.js} +1 -1
  43. package/dist/viewer/{architectureDiagram-5GKGNRK7-pjk1bmyn.js → architectureDiagram-5GKGNRK7-CTIIuGJC.js} +1 -1
  44. package/dist/viewer/{az-AZ-76LH7QW2-C3xDoCfK.js → az-AZ-76LH7QW2-0e4OEoQn.js} +1 -1
  45. package/dist/viewer/{bg-BG-XCXSNQG7-BuqoExRt.js → bg-BG-XCXSNQG7-BK4Yfu0v.js} +1 -1
  46. package/dist/viewer/{blockDiagram-I7D4REHJ-Bt5Fgmbw.js → blockDiagram-I7D4REHJ-BCY39CK-.js} +1 -1
  47. package/dist/viewer/{bn-BD-2XOGV67Q-Cb6R-JhO.js → bn-BD-2XOGV67Q-DY0dhZri.js} +1 -1
  48. package/dist/viewer/{c4Diagram-7LVT6UL2-DVoqgVNh.js → c4Diagram-7LVT6UL2-C4bAGSRF.js} +1 -1
  49. package/dist/viewer/{ca-ES-6MX7JW3Y-C9x3VZP6.js → ca-ES-6MX7JW3Y-DYeaKAAZ.js} +1 -1
  50. package/dist/viewer/{channel-B6od2bv2.js → channel-CMKOAKFL.js} +5 -5
  51. package/dist/viewer/channel-Dg0tnVaL.js +1 -0
  52. package/dist/viewer/{chunk-4HAMMTFA-CTdlWrtX.js → chunk-4HAMMTFA-DKKrCtt5.js} +1 -1
  53. package/dist/viewer/{chunk-75Z2AOVW-C_A1Se9D.js → chunk-75Z2AOVW-CxnIcYMY.js} +1 -1
  54. package/dist/viewer/{chunk-DU6HZSFF-Dr7PaN7b.js → chunk-DU6HZSFF-CO07tHJW.js} +1 -1
  55. package/dist/viewer/{chunk-EIO257PC-oHJkbpFs.js → chunk-EIO257PC-qXGHvKXr.js} +1 -1
  56. package/dist/viewer/{chunk-F27PBJKO-BBCDjN53.js → chunk-F27PBJKO-BKgYSwDY.js} +1 -1
  57. package/dist/viewer/{chunk-GMAD6QVW-BFHBOVJq.js → chunk-GMAD6QVW-BbSqVE_3.js} +1 -1
  58. package/dist/viewer/{chunk-GVQU2GXP-BIpEZyzS.js → chunk-GVQU2GXP-CybTk49_.js} +1 -1
  59. package/dist/viewer/{chunk-IMKFNOWR-KEawvx8K.js → chunk-IMKFNOWR-jCedT_zr.js} +1 -1
  60. package/dist/viewer/{chunk-L3NEJ4N5-IwBcwkuk.js → chunk-L3NEJ4N5-CdvkCIkZ.js} +1 -1
  61. package/dist/viewer/{chunk-OSK3NFVY-C3k_p7-w.js → chunk-OSK3NFVY-9vAyeFw7.js} +1 -1
  62. package/dist/viewer/{chunk-P2QGCYS3-Dtm_7Lz7.js → chunk-P2QGCYS3-CLr9GbT7.js} +1 -1
  63. package/dist/viewer/{chunk-POPQ4Y6H-CytCoNkh.js → chunk-POPQ4Y6H-CI_O6mAo.js} +1 -1
  64. package/dist/viewer/{chunk-PWAF6VOD-CyHOdyql.js → chunk-PWAF6VOD-mr5E6zf6.js} +1 -1
  65. package/dist/viewer/{chunk-SHT3W25Y-DD7pl4JI.js → chunk-SHT3W25Y-DYrFyqoc.js} +1 -1
  66. package/dist/viewer/{chunk-SVP7TREG-Bu4mLQNH.js → chunk-SVP7TREG-dMNx_CcY.js} +1 -1
  67. package/dist/viewer/{chunk-TICWLB2K-sZ8FCdF0.js → chunk-TICWLB2K-BGQtf-K3.js} +1 -1
  68. package/dist/viewer/classDiagram-ZZMXUADV-I3gtgBTd.js +1 -0
  69. package/dist/viewer/classDiagram-v2-VYDZK3BY-I3gtgBTd.js +1 -0
  70. package/dist/viewer/{cs-CZ-2BRQDIVT-BYzmp2zB.js → cs-CZ-2BRQDIVT-DjaDntjh.js} +1 -1
  71. package/dist/viewer/{cynefin-OW5HDTMX-BRRxGfUD.js → cynefin-OW5HDTMX-DsZ0qkVs.js} +1 -1
  72. package/dist/viewer/{cynefinDiagram-5FMLGOSQ-BJJG-W2c.js → cynefinDiagram-5FMLGOSQ-Y54wafYF.js} +1 -1
  73. package/dist/viewer/{da-DK-5WZEPLOC-BQMUVHri.js → da-DK-5WZEPLOC-Tqj9zEgt.js} +1 -1
  74. package/dist/viewer/{dagre-GXQ25YYZ-18YALgQ_.js → dagre-GXQ25YYZ-BehPXdKF.js} +1 -1
  75. package/dist/viewer/{de-DE-XR44H4JA-CXVFrfP-.js → de-DE-XR44H4JA-B7Ys3_AN.js} +1 -1
  76. package/dist/viewer/{diagram-S7CK7UJ4-BxB2LRSe.js → diagram-S7CK7UJ4-CUPMHvHL.js} +1 -1
  77. package/dist/viewer/{diagram-UQ7AKVKN-BcJ9Tkbs.js → diagram-UQ7AKVKN-Cnsotkkq.js} +1 -1
  78. package/dist/viewer/{diagram-VSXAHHWV-_UeBcZmY.js → diagram-VSXAHHWV-_Gb0p4Xt.js} +1 -1
  79. package/dist/viewer/{diagram-VX7I27RA-Bc9iy24S.js → diagram-VX7I27RA-6b_DdSPn.js} +1 -1
  80. package/dist/viewer/{diagram-Z3DM3KII-gU89rmSx.js → diagram-Z3DM3KII-C3auC1O2.js} +1 -1
  81. package/dist/viewer/{dist-CimouhBR.js → dist-7UQnJyoY.js} +1 -1
  82. package/dist/viewer/{dist-Ckk8Ln7v.js → dist-B2Pz6jKV.js} +1 -1
  83. package/dist/viewer/{dist-DFoTCsMa.js → dist-BKIoajE3.js} +1 -1
  84. package/dist/viewer/{dist-CtNq8Fc3.js → dist-BNqLQbx8.js} +1 -1
  85. package/dist/viewer/{dist-OI9ayuXJ.js → dist-Bpc6MjnN.js} +1 -1
  86. package/dist/viewer/{dist-DP3kgHOu.js → dist-C30QaZlo.js} +1 -1
  87. package/dist/viewer/{dist-B2iLAjhx.js → dist-C54IWjMq.js} +1 -1
  88. package/dist/viewer/{dist-DeLN4KiV.js → dist-CAlOKecF.js} +1 -1
  89. package/dist/viewer/{dist-k5REaceC.js → dist-CLMpMvW8.js} +1 -1
  90. package/dist/viewer/{dist-zAsatJ3z.js → dist-CivKp_88.js} +1 -1
  91. package/dist/viewer/{dist-T5bhQ39l.js → dist-D0jfqsk3.js} +1 -1
  92. package/dist/viewer/{dist-Cb-yo3Gf.js → dist-D1ltcskn.js} +1 -1
  93. package/dist/viewer/{dist-DhLyhl2k.js → dist-D8yTrHOe.js} +1 -1
  94. package/dist/viewer/{dist-B6jptwyK.js → dist-DJD7Rxl_.js} +1 -1
  95. package/dist/viewer/{dist-QVTBQ_Lo.js → dist-DKC2CFz3.js} +1 -1
  96. package/dist/viewer/{dist-CjrbmuC6.js → dist-DYYos7aA.js} +1 -1
  97. package/dist/viewer/{dist-DNnbAIPr.js → dist-DjX-jLyv.js} +1 -1
  98. package/dist/viewer/{dist-C3p_NYog.js → dist-DmX9cG26.js} +1 -1
  99. package/dist/viewer/{dist-DksKyGM5.js → dist-Dvpwh6aN.js} +1 -1
  100. package/dist/viewer/{dist-B-4OmMiD.js → dist-Q62YQ6Tz.js} +1 -1
  101. package/dist/viewer/{dist-CoQPmYDy.js → dist-SjMB3ORD.js} +1 -1
  102. package/dist/viewer/{dist-CqZmBkkh.js → dist-pOfDFOb4.js} +1 -1
  103. package/dist/viewer/{dist-QjnQrlMe.js → dist-ujkFdcwL.js} +4 -4
  104. package/dist/viewer/{dist-2zwLzKuW.js → dist-xaJ7cT-p.js} +1 -1
  105. package/dist/viewer/{ebnfDiagram-PWID7BFC-C8HSoSRy.js → ebnfDiagram-PWID7BFC-CE0BLrbg.js} +1 -1
  106. package/dist/viewer/{el-GR-BZB4AONW-ow3fFVLT.js → el-GR-BZB4AONW-D1iu3D-5.js} +1 -1
  107. package/dist/viewer/{en-B4ZKOASM-CaY3r9HU.js → en-B4ZKOASM-q9ZI4jM7.js} +1 -1
  108. package/dist/viewer/{erDiagram-RLTQ6QDP-BxJx7rlQ.js → erDiagram-RLTQ6QDP-gRel-NWS.js} +1 -1
  109. package/dist/viewer/{es-ES-U4NZUMDT-BMjMaVCY.js → es-ES-U4NZUMDT-C2iEjmwQ.js} +1 -1
  110. package/dist/viewer/{eu-ES-A7QVB2H4-CM4bkpMu.js → eu-ES-A7QVB2H4-BT6Rltb3.js} +1 -1
  111. package/dist/viewer/{eventmodeling-NTZA5JFV-DnbDCfB2.js → eventmodeling-NTZA5JFV-Bk9WCA8V.js} +1 -1
  112. package/dist/viewer/{fa-IR-HGAKTJCU-BLD2tQpT.js → fa-IR-HGAKTJCU-CqwuajY6.js} +1 -1
  113. package/dist/viewer/{fi-FI-Z5N7JZ37-Bgn7EPoz.js → fi-FI-Z5N7JZ37-B5eOrZnB.js} +1 -1
  114. package/dist/viewer/flowDiagram-HODETNUW-yZn6O744.js +1 -0
  115. package/dist/viewer/{fr-FR-RHASNOE6-Bkw82-6W.js → fr-FR-RHASNOE6-CuAP0ov3.js} +1 -1
  116. package/dist/viewer/{ganttDiagram-EL5Y4UJY-DOR_e0je.js → ganttDiagram-EL5Y4UJY-A51eLNzS.js} +1 -1
  117. package/dist/viewer/{gitGraph-4MIJSDKK-SVRQ5W4D.js → gitGraph-4MIJSDKK-DLjlyn5v.js} +1 -1
  118. package/dist/viewer/{gitGraphDiagram-WWUBYQGX-CDiQ0mCt.js → gitGraphDiagram-WWUBYQGX-CpflpsWN.js} +1 -1
  119. package/dist/viewer/{gl-ES-HMX3MZ6V-BLzHqZN8.js → gl-ES-HMX3MZ6V-DNzL8ZLj.js} +1 -1
  120. package/dist/viewer/{he-IL-6SHJWFNN-D8wU25du.js → he-IL-6SHJWFNN-BL2IqUA2.js} +1 -1
  121. package/dist/viewer/{hi-IN-IWLTKZ5I-BL-e61Xu.js → hi-IN-IWLTKZ5I-Cc_Z6cIK.js} +1 -1
  122. package/dist/viewer/{hu-HU-A5ZG7DT2-DbYToYgQ.js → hu-HU-A5ZG7DT2-BpJys7hD.js} +1 -1
  123. package/dist/viewer/{id-ID-SAP4L64H-CCT_QszX.js → id-ID-SAP4L64H-D4zLMff9.js} +1 -1
  124. package/dist/viewer/{image-GAAHSSAO-DKoD4XKV.js → image-GAAHSSAO-BKQeWnXf.js} +1 -1
  125. package/dist/viewer/index.html +5 -5
  126. package/dist/viewer/index.js +2 -2
  127. package/dist/viewer/index3.css +102 -4
  128. package/dist/viewer/{info-A6RAGUB7-CX2C9N30.js → info-A6RAGUB7-DvZhLcWt.js} +1 -1
  129. package/dist/viewer/{infoDiagram-27XIBGKW-CN86my9R.js → infoDiagram-27XIBGKW-Cb6BEK3u.js} +1 -1
  130. package/dist/viewer/{ishikawaDiagram-5VMMS53U-5BluWj2f.js → ishikawaDiagram-5VMMS53U-wRvUis49.js} +1 -1
  131. package/dist/viewer/{it-IT-JPQ66NNP-afXtP8Ww.js → it-IT-JPQ66NNP-DQMNMOSZ.js} +1 -1
  132. package/dist/viewer/{ja-JP-DBVTYXUO-DekQisaL.js → ja-JP-DBVTYXUO-CyTOe7Y8.js} +1 -1
  133. package/dist/viewer/{journeyDiagram-3NMN7TZE-CJC3KFyX.js → journeyDiagram-3NMN7TZE-DrV8-21n.js} +1 -1
  134. package/dist/viewer/{kaa-6HZHGXH3-tRph-_T2.js → kaa-6HZHGXH3-Bid3n_YF.js} +1 -1
  135. package/dist/viewer/{kab-KAB-ZGHBKWFO-BE4QoOsA.js → kab-KAB-ZGHBKWFO-BYjsuHFe.js} +1 -1
  136. package/dist/viewer/{kanban-definition-UXKFOSKX-B18ysZ84.js → kanban-definition-UXKFOSKX-DWK9G9rt.js} +1 -1
  137. package/dist/viewer/{kk-KZ-P5N5QNE5-CVRotJxc.js → kk-KZ-P5N5QNE5-DP8c-ogr.js} +1 -1
  138. package/dist/viewer/{km-KH-HSX4SM5Z-hAYTx672.js → km-KH-HSX4SM5Z-xmnFjfoK.js} +1 -1
  139. package/dist/viewer/{ko-KR-MTYHY66A-QEVtuRm5.js → ko-KR-MTYHY66A-DBXzp-hP.js} +1 -1
  140. package/dist/viewer/{ku-TR-6OUDTVRD-CRm854Ze.js → ku-TR-6OUDTVRD-DjqLLQgd.js} +1 -1
  141. package/dist/viewer/{local-split-host-B8nXcoph.js → local-split-host-D5XeWHs2.js} +1 -1
  142. package/dist/viewer/{lt-LT-XHIRWOB4-CKPgIz76.js → lt-LT-XHIRWOB4-CiXIbBlP.js} +1 -1
  143. package/dist/viewer/{lv-LV-5QDEKY6T-ChfyCJQM.js → lv-LV-5QDEKY6T-BBg2ICUg.js} +1 -1
  144. package/dist/viewer/{mermaid-parser.core-BVnYCq41.js → mermaid-parser.core-DIrH0vIS.js} +3 -3
  145. package/dist/viewer/{mindmap-definition-YA3MSWOX-DHv3E1P_.js → mindmap-definition-YA3MSWOX-D-RKw5yH.js} +1 -1
  146. package/dist/viewer/{mr-IN-CRQNXWMA-BJLGlD17.js → mr-IN-CRQNXWMA-BvFZO2Ww.js} +1 -1
  147. package/dist/viewer/{my-MM-5M5IBNSE-9rLlVOlt.js → my-MM-5M5IBNSE-B2vH-znI.js} +1 -1
  148. package/dist/viewer/{nb-NO-T6EIAALU-B8VMz4zh.js → nb-NO-T6EIAALU-BbKLi7pg.js} +1 -1
  149. package/dist/viewer/{nl-NL-IS3SIHDZ-DqLxBYZV.js → nl-NL-IS3SIHDZ-Djj6TAo1.js} +1 -1
  150. package/dist/viewer/{nn-NO-6E72VCQL-Bo0PPFBQ.js → nn-NO-6E72VCQL-C9FENQ04.js} +1 -1
  151. package/dist/viewer/{oc-FR-POXYY2M6-CWWRWFHX.js → oc-FR-POXYY2M6-Bb9oRGl0.js} +1 -1
  152. package/dist/viewer/{pa-IN-N4M65BXN-DT0tg3Sk.js → pa-IN-N4M65BXN-GiTIcI0J.js} +1 -1
  153. package/dist/viewer/{packet-AYTQ26CC-KGzO-wcr.js → packet-AYTQ26CC-CtVAKo8Y.js} +1 -1
  154. package/dist/viewer/{parseTrigger-Bu-PV9CL.js → parseTrigger-G_dEUQ-S.js} +1 -1
  155. package/dist/viewer/{pegDiagram-XKGWAZYB-Dic4eBsi.js → pegDiagram-XKGWAZYB-DoKug0Ul.js} +1 -1
  156. package/dist/viewer/percentages-BXMCSKIN-D095tJfv.js +1 -0
  157. package/dist/viewer/{pie-WAS4IAKB-BYfJrbuD.js → pie-WAS4IAKB-CxVCcwr-.js} +1 -1
  158. package/dist/viewer/{pieDiagram-E7YTZNPT-CjUaUWV2.js → pieDiagram-E7YTZNPT-cjr6q7MN.js} +1 -1
  159. package/dist/viewer/{pl-PL-T2D74RX3-Ch27cnOo.js → pl-PL-T2D74RX3-Bn1NSuWG.js} +1 -1
  160. package/dist/viewer/preview.html +4 -4
  161. package/dist/viewer/preview.js +1 -1
  162. package/dist/viewer/{prod-TT-J6Nam.js → prod-CaFKRNhp.js} +8 -8
  163. package/dist/viewer/{pt-BR-5N22H2LF-8J6Vfb7V.js → pt-BR-5N22H2LF-BI-zbYLr.js} +1 -1
  164. package/dist/viewer/{pt-PT-UZXXM6DQ-BX7qQNlR.js → pt-PT-UZXXM6DQ-319Tw5BW.js} +1 -1
  165. package/dist/viewer/{quadrantDiagram-AXDQQJYC-r9uBJJoA.js → quadrantDiagram-AXDQQJYC-BZ8DulYV.js} +1 -1
  166. package/dist/viewer/{radar-RG4KPBEZ-DDBCvrzl.js → radar-RG4KPBEZ-CQfJyEYa.js} +1 -1
  167. package/dist/viewer/{railroad-74A4TZTK-DHdJAn7o.js → railroad-74A4TZTK-BYRU4vXG.js} +1 -1
  168. package/dist/viewer/{railroad-abnf-HS5TGJTU-D9wWd5uO.js → railroad-abnf-HS5TGJTU-B38hjcrZ.js} +1 -1
  169. package/dist/viewer/{railroad-ebnf-LZEXJU2U-D-NZ6dqJ.js → railroad-ebnf-LZEXJU2U-CNMwCkdT.js} +1 -1
  170. package/dist/viewer/{railroad-peg-WCYAUIDC-CyPMQZm7.js → railroad-peg-WCYAUIDC-xAU0vZOf.js} +1 -1
  171. package/dist/viewer/{railroadDiagram-O6MQD6OU-CWrubsQf.js → railroadDiagram-O6MQD6OU-DbEnsKie.js} +1 -1
  172. package/dist/viewer/{ref-BF7Dk-nb.js → ref-BwCMEjB3.js} +1 -1
  173. package/dist/viewer/{requirementDiagram-BXWQKSXE-YIdQ9sc_.js → requirementDiagram-BXWQKSXE-D92sYU7y.js} +1 -1
  174. package/dist/viewer/{ro-RO-JPDTUUEW-2Pp-dKmW.js → ro-RO-JPDTUUEW-VijYgS5D.js} +1 -1
  175. package/dist/viewer/{route-CDT5H7Dv.js → route-IxDJQ-oO.js} +1 -1
  176. package/dist/viewer/{route-messages-E7uG4Fm7.js → route-messages-CJ5JptAX.js} +1 -1
  177. package/dist/viewer/{ru-RU-B4JR7IUQ-DPkLOvY0.js → ru-RU-B4JR7IUQ-HPA0KGMP.js} +1 -1
  178. package/dist/viewer/{sankeyDiagram-P5KCCOFB-BQftNXO2.js → sankeyDiagram-P5KCCOFB-JlEPpJZr.js} +1 -1
  179. package/dist/viewer/{selection-BTJrtSto.js → selection-B2_QE61M.js} +1 -1
  180. package/dist/viewer/{sequenceDiagram-WJ2MYXX4-C90CSvsu.js → sequenceDiagram-WJ2MYXX4-lImr5uIr.js} +1 -1
  181. package/dist/viewer/{si-LK-N5RQ5JYF-DjQ-ynCO.js → si-LK-N5RQ5JYF-D3xEcphZ.js} +1 -1
  182. package/dist/viewer/{sk-SK-C5VTKIMK-Do9H8uzR.js → sk-SK-C5VTKIMK-Db8aZYTC.js} +1 -1
  183. package/dist/viewer/{sl-SI-NN7IZMDC-bJ5rRome.js → sl-SI-NN7IZMDC-eFJNBgsb.js} +1 -1
  184. package/dist/viewer/{split-url-D0Eu87y4.js → split-url-DL2J8T-a.js} +1 -1
  185. package/dist/viewer/{stateDiagram-D77RDMKH-pBFTeHBj.js → stateDiagram-D77RDMKH-DlBhDgXR.js} +1 -1
  186. package/dist/viewer/stateDiagram-v2-MP3YSRHH-Byaeiehp.js +1 -0
  187. package/dist/viewer/subset-shared.chunk-BNAGyqG3.js +1 -0
  188. package/dist/viewer/{subset-worker.chunk-3zYap8Q-.js → subset-worker.chunk-7eRPBTIK.js} +1 -1
  189. package/dist/viewer/{sv-SE-XGPEYMSR-C0oEs72p.js → sv-SE-XGPEYMSR-1ooAaIdn.js} +1 -1
  190. package/dist/viewer/{swimlanes-42K2YHIH-CTsMizz_.js → swimlanes-42K2YHIH-Dk9L2F9U.js} +1 -1
  191. package/dist/viewer/swimlanesDiagram-VR7AAH4N-DNI8atPj.js +8 -0
  192. package/dist/viewer/{ta-IN-2NMHFXQM-B3AATr70.js → ta-IN-2NMHFXQM-r-PlEE_o.js} +1 -1
  193. package/dist/viewer/{th-TH-HPSO5L25-DQBS-yab.js → th-TH-HPSO5L25-DCSuXNKm.js} +1 -1
  194. package/dist/viewer/{timeline-definition-24CTP7MA-C-XiBPgr.js → timeline-definition-24CTP7MA-CuLHXBb9.js} +1 -1
  195. package/dist/viewer/{tr-TR-DEFEU3FU-ag7nD5kA.js → tr-TR-DEFEU3FU-DmRbSHuX.js} +1 -1
  196. package/dist/viewer/{treeView-Q6P3EWNA-SVlfuIv-.js → treeView-Q6P3EWNA-70u6vE6C.js} +1 -1
  197. package/dist/viewer/{treemap-WGGIJYW6-_ZShzHPs.js → treemap-WGGIJYW6-BgaNezOX.js} +1 -1
  198. package/dist/viewer/{uk-UA-QMV73CPH-BSQfUSoA.js → uk-UA-QMV73CPH-CcDh2WkS.js} +1 -1
  199. package/dist/viewer/{useAriaLabelledBy-BuWax2Z2.js → useAriaLabelledBy-Cu8JrnAw.js} +1 -1
  200. package/dist/viewer/{useOpenInteractionType-DH5mUVhj.js → useOpenInteractionType-LXvb6AtX.js} +1 -1
  201. package/dist/viewer/{useTranslation-BNqJXci1.js → useTranslation-DGPvUY4J.js} +1 -1
  202. package/dist/viewer/{useTypeFavicon-B3gDp1sZ.js → useTypeFavicon-DIU-6w2G.js} +1 -1
  203. package/dist/viewer/{vennDiagram-4TSXK5OY-BV0PYWnH.js → vennDiagram-4TSXK5OY-Dm5qhhY3.js} +1 -1
  204. package/dist/viewer/{vi-VN-M7AON7JQ-Dl7QA_Y_.js → vi-VN-M7AON7JQ-DWAX0NEb.js} +1 -1
  205. package/dist/viewer/{view--v3LsuO9.js → view-HJ0ahbDf.js} +1 -1
  206. package/dist/viewer/{viewport-CFJHn_Y6-CSiflW-L.js → viewport-CFJHn_Y6-B-kdQ7xr.js} +1 -1
  207. package/dist/viewer/{wardley-WFR3VGLG-BNvAuofQ.js → wardley-WFR3VGLG-CmWgAGP4.js} +1 -1
  208. package/dist/viewer/{wardleyDiagram-VM6X3IG4-B12XuiXU.js → wardleyDiagram-VM6X3IG4-DTCi6DmX.js} +1 -1
  209. package/dist/viewer/{xychartDiagram-S5SC5T6Z-CNASGt-y.js → xychartDiagram-S5SC5T6Z-DxA0cQ3A.js} +1 -1
  210. package/dist/viewer/{zh-CN-LNUGB5OW-BN9rjxsZ.js → zh-CN-LNUGB5OW-C0GKmW1G.js} +1 -1
  211. package/dist/viewer/{zh-HK-E62DVLB3-DVH9Q1Iz.js → zh-HK-E62DVLB3-CnrjNkY6.js} +1 -1
  212. package/dist/viewer/{zh-TW-RAJ6MFWO-CZYgWnVr.js → zh-TW-RAJ6MFWO-CzT4lffH.js} +1 -1
  213. package/dist/viewer-lib/{Canvas-DlB6aB_J.js → Canvas-Czt9ltgM.js} +313 -259
  214. package/dist/viewer-lib/{PhoneArtboardBar-Cjyyjai7.js → PhoneArtboardBar-KVFmaCba.js} +2 -2
  215. package/dist/viewer-lib/{PreviewView-ck_p8T5E.js → PreviewView-BWt3dX8d.js} +2 -2
  216. package/dist/viewer-lib/{ReadOnlyWhiteboard-BaHks6CC.js → ReadOnlyWhiteboard-DkN-iQ5e.js} +4 -4
  217. package/dist/viewer-lib/{RyugiLoader-_MZxEs2s.js → RyugiLoader-CxyL1n9v.js} +10 -9
  218. package/dist/viewer-lib/{SnapshotDocument-Cnh1MruG.js → SnapshotDocument-CbuCIqIZ.js} +32 -32
  219. package/dist/viewer-lib/{VirtualizedEditor-uWe43zaI-BDnJhFJS.js → VirtualizedEditor-uWe43zaI-XBNVQjy2.js} +2 -2
  220. package/dist/viewer-lib/{VirtualizedRenderer-C_d95FXi-BuO0NiU-.js → VirtualizedRenderer-C_d95FXi-8iSF4rXx.js} +3 -3
  221. package/dist/viewer-lib/{WarningsBadge-p7-QKPVW.js → WarningsBadge-SVKLlXSz.js} +1 -1
  222. package/dist/viewer-lib/{ar-SA-G6X2FPQ2-BulQwi8B.js → ar-SA-G6X2FPQ2-CcppcMle.js} +1 -1
  223. package/dist/viewer-lib/{az-AZ-76LH7QW2-CI40Y8TL.js → az-AZ-76LH7QW2-C_SU1Xpr.js} +1 -1
  224. package/dist/viewer-lib/{bg-BG-XCXSNQG7-BzDIvwtq.js → bg-BG-XCXSNQG7-CWd7fzy0.js} +1 -1
  225. package/dist/viewer-lib/{bn-BD-2XOGV67Q-C-pgv3qu.js → bn-BD-2XOGV67Q-B0z6Tw9j.js} +1 -1
  226. package/dist/viewer-lib/{ca-ES-6MX7JW3Y-D6x8nfLg.js → ca-ES-6MX7JW3Y-B2xRB0B0.js} +1 -1
  227. package/dist/viewer-lib/{chunk-EIO257PC-CeMsMfCl.js → chunk-EIO257PC-D6Jf6Xmm.js} +1 -1
  228. package/dist/viewer-lib/core.js +4 -4
  229. package/dist/viewer-lib/{cs-CZ-2BRQDIVT-0ckei0wD.js → cs-CZ-2BRQDIVT-BZKj-SkP.js} +1 -1
  230. package/dist/viewer-lib/{da-DK-5WZEPLOC-ZduCWsZg.js → da-DK-5WZEPLOC-CW0PeGhv.js} +1 -1
  231. package/dist/viewer-lib/{de-DE-XR44H4JA-Dhn4t1S-.js → de-DE-XR44H4JA-BNWPKMsf.js} +1 -1
  232. package/dist/viewer-lib/{dist-Di9F7JPb.js → dist-80gN5MDf.js} +3 -3
  233. package/dist/viewer-lib/{dist-BCW8Zb-U.js → dist-B1eQ7mh1.js} +2 -2
  234. package/dist/viewer-lib/{dist-DNsjbGxb.js → dist-B8C9-q9r.js} +2 -2
  235. package/dist/viewer-lib/{dist-CSfdU4jd.js → dist-BAFLptZH.js} +3 -3
  236. package/dist/viewer-lib/{dist-DDVF8zAt.js → dist-BGKw9XQy.js} +2 -2
  237. package/dist/viewer-lib/{dist-BbswzSKs.js → dist-C05yE_u3.js} +3 -3
  238. package/dist/viewer-lib/{dist-CzN9MAge.js → dist-CG3jaold.js} +2 -2
  239. package/dist/viewer-lib/{dist-XBsZajBB.js → dist-CLixy726.js} +4 -4
  240. package/dist/viewer-lib/{dist-8NTQy8U-.js → dist-CXXXkgsH.js} +1 -1
  241. package/dist/viewer-lib/{dist-Dwz5JxbC.js → dist-Cl-thFU5.js} +3 -3
  242. package/dist/viewer-lib/{dist-DlpJUiVE.js → dist-Csam7y04.js} +1 -1
  243. package/dist/viewer-lib/{dist-raPDHOGI.js → dist-D01J0hzJ.js} +2 -2
  244. package/dist/viewer-lib/{dist-06ekt-ke.js → dist-D33Sd5z1.js} +3 -3
  245. package/dist/viewer-lib/{dist-Cbrc_d6r.js → dist-DHj3-Pp5.js} +2 -2
  246. package/dist/viewer-lib/{dist-BbM5jkng.js → dist-DQDlkYqz.js} +3 -3
  247. package/dist/viewer-lib/{dist-DoVnKIC0.js → dist-DVGe9QEo.js} +3 -3
  248. package/dist/viewer-lib/{dist-CajfXdQP.js → dist-DczdJ0Ss.js} +3 -3
  249. package/dist/viewer-lib/{dist-5_jnZVlO.js → dist-Dug8w68g.js} +4 -4
  250. package/dist/viewer-lib/{dist-CgtdwEjB.js → dist-TYFSuN0R.js} +3 -3
  251. package/dist/viewer-lib/{dist-BTI5z3BP.js → dist-V1Zz1gd6.js} +3 -3
  252. package/dist/viewer-lib/{dist-DwFHgVKa.js → dist-jwZIUB0I.js} +4 -4
  253. package/dist/viewer-lib/{dist-CiAUyx7m.js → dist-lWjeTWd-.js} +2 -2
  254. package/dist/viewer-lib/{dist-DGvnQ0_D.js → dist-zUHol6rl.js} +2 -2
  255. package/dist/viewer-lib/document.js +7 -7
  256. package/dist/viewer-lib/{el-GR-BZB4AONW-CJr0Z7TF.js → el-GR-BZB4AONW-CoQS6FL1.js} +1 -1
  257. package/dist/viewer-lib/{en-B4ZKOASM-lv6d1blP.js → en-B4ZKOASM-DQdepYlH.js} +1 -1
  258. package/dist/viewer-lib/{es-ES-U4NZUMDT-CoN1P7ea.js → es-ES-U4NZUMDT-dFGK-tCc.js} +1 -1
  259. package/dist/viewer-lib/{eu-ES-A7QVB2H4-C9ndoQ2r.js → eu-ES-A7QVB2H4-CTPQRG6p.js} +1 -1
  260. package/dist/viewer-lib/{fa-IR-HGAKTJCU-CfrK4kxd.js → fa-IR-HGAKTJCU-CTuq4ikl.js} +1 -1
  261. package/dist/viewer-lib/{fi-FI-Z5N7JZ37-CLBbeiQY.js → fi-FI-Z5N7JZ37-D0JlmPmA.js} +1 -1
  262. package/dist/viewer-lib/{fr-FR-RHASNOE6-CF0M8dHT.js → fr-FR-RHASNOE6-RlGS8zAt.js} +1 -1
  263. package/dist/viewer-lib/{gl-ES-HMX3MZ6V-Ds78xJRC.js → gl-ES-HMX3MZ6V-BnQPblSD.js} +1 -1
  264. package/dist/viewer-lib/{he-IL-6SHJWFNN-T3gPOUQI.js → he-IL-6SHJWFNN-PmN9hBtd.js} +1 -1
  265. package/dist/viewer-lib/{hi-IN-IWLTKZ5I-BPB6ep5X.js → hi-IN-IWLTKZ5I-BeCrGSfv.js} +1 -1
  266. package/dist/viewer-lib/{hu-HU-A5ZG7DT2-CroFJ3-c.js → hu-HU-A5ZG7DT2-D0c6msJe.js} +1 -1
  267. package/dist/viewer-lib/{id-ID-SAP4L64H-BdiIiD1M.js → id-ID-SAP4L64H-DA8yn9MO.js} +1 -1
  268. package/dist/viewer-lib/{image-GAAHSSAO-tMWhJP5r.js → image-GAAHSSAO-B5NCrxDY.js} +1 -1
  269. package/dist/viewer-lib/index.js +10 -10
  270. package/dist/viewer-lib/{it-IT-JPQ66NNP-BeGV_PNa.js → it-IT-JPQ66NNP-Msb_59SR.js} +1 -1
  271. package/dist/viewer-lib/{ja-JP-DBVTYXUO-BfX9p-BL.js → ja-JP-DBVTYXUO-DF9ymwH_.js} +1 -1
  272. package/dist/viewer-lib/{kaa-6HZHGXH3-B49iCC1F.js → kaa-6HZHGXH3-DLdj8h7V.js} +1 -1
  273. package/dist/viewer-lib/{kab-KAB-ZGHBKWFO-DOcMX5a2.js → kab-KAB-ZGHBKWFO-DEnShB8n.js} +1 -1
  274. package/dist/viewer-lib/{kk-KZ-P5N5QNE5-B5SKdTP9.js → kk-KZ-P5N5QNE5-BZpCUQAO.js} +1 -1
  275. package/dist/viewer-lib/{km-KH-HSX4SM5Z-DhdPNTTx.js → km-KH-HSX4SM5Z-DJfTgaU-.js} +1 -1
  276. package/dist/viewer-lib/{ko-KR-MTYHY66A-C-zT8umZ.js → ko-KR-MTYHY66A-XCk-trJi.js} +1 -1
  277. package/dist/viewer-lib/{ku-TR-6OUDTVRD-C4kAusNi.js → ku-TR-6OUDTVRD-ILEraaqU.js} +1 -1
  278. package/dist/viewer-lib/{lib-DNNuUrSz.js → lib-BECZaH4I.js} +1 -1
  279. package/dist/viewer-lib/{lt-LT-XHIRWOB4-B_sxP0eq.js → lt-LT-XHIRWOB4-DR0XA43x.js} +1 -1
  280. package/dist/viewer-lib/{lv-LV-5QDEKY6T-sD6HgFZ4.js → lv-LV-5QDEKY6T-CDJh4KcF.js} +1 -1
  281. package/dist/viewer-lib/{mr-IN-CRQNXWMA-Cd5o1iq-.js → mr-IN-CRQNXWMA-lAh3x0wf.js} +1 -1
  282. package/dist/viewer-lib/{my-MM-5M5IBNSE-CoNWjvsH.js → my-MM-5M5IBNSE-CWbsKpe7.js} +1 -1
  283. package/dist/viewer-lib/{nb-NO-T6EIAALU-C-i8AySs.js → nb-NO-T6EIAALU-DsOr20_y.js} +1 -1
  284. package/dist/viewer-lib/{nl-NL-IS3SIHDZ-C1ldIK2V.js → nl-NL-IS3SIHDZ-BvJDYbbm.js} +1 -1
  285. package/dist/viewer-lib/{nn-NO-6E72VCQL-BbufodQ2.js → nn-NO-6E72VCQL-BB2FmVFh.js} +1 -1
  286. package/dist/viewer-lib/{oc-FR-POXYY2M6-hBKLK-RY.js → oc-FR-POXYY2M6-Bvwx0qAP.js} +1 -1
  287. package/dist/viewer-lib/{pa-IN-N4M65BXN-CMYieHVI.js → pa-IN-N4M65BXN-p8MWsauR.js} +1 -1
  288. package/dist/viewer-lib/percentages-BXMCSKIN-DA7GjP-1.js +1 -0
  289. package/dist/viewer-lib/{pl-PL-T2D74RX3-BLBveBOC.js → pl-PL-T2D74RX3-DbxHOV0E.js} +1 -1
  290. package/dist/viewer-lib/{plugin-_bGVeqI0-x1NbXzpN.js → plugin-_bGVeqI0-BuoZIQw-.js} +1 -1
  291. package/dist/viewer-lib/{prod-CKvZ5R1W.js → prod-Duev06nH.js} +59 -59
  292. package/dist/viewer-lib/{pt-BR-5N22H2LF-Br5SP3ty.js → pt-BR-5N22H2LF-G_V26Vnw.js} +1 -1
  293. package/dist/viewer-lib/{pt-PT-UZXXM6DQ-D_gaSKkX.js → pt-PT-UZXXM6DQ-Cibz3GSp.js} +1 -1
  294. package/dist/viewer-lib/{ro-RO-JPDTUUEW-Cq-mwLjh.js → ro-RO-JPDTUUEW-5IR97wtM.js} +1 -1
  295. package/dist/viewer-lib/{route-messages-DFgs1Qi1.js → route-messages-YkEDJrGo.js} +2 -2
  296. package/dist/viewer-lib/{ru-RU-B4JR7IUQ-C4b2ijd5.js → ru-RU-B4JR7IUQ-Bhzxtys5.js} +1 -1
  297. package/dist/viewer-lib/{si-LK-N5RQ5JYF-DvGkDzKr.js → si-LK-N5RQ5JYF-DkbW4kwL.js} +1 -1
  298. package/dist/viewer-lib/{sk-SK-C5VTKIMK-Cru-JD0e.js → sk-SK-C5VTKIMK-CHvUkTDC.js} +1 -1
  299. package/dist/viewer-lib/{sl-SI-NN7IZMDC-5FFks32p.js → sl-SI-NN7IZMDC-9wfKjcdf.js} +1 -1
  300. package/dist/viewer-lib/{stylex-CCivaCRo.css → stylex-DSPr67HN.css} +102 -4
  301. package/dist/viewer-lib/subset-shared.chunk-C9VoCzEr.js +2 -0
  302. package/dist/viewer-lib/{subset-worker.chunk-CRX53Rzc.js → subset-worker.chunk-BpDvwKQR.js} +2 -2
  303. package/dist/viewer-lib/{sv-SE-XGPEYMSR-LuNY2685.js → sv-SE-XGPEYMSR-CiYigmBB.js} +1 -1
  304. package/dist/viewer-lib/{ta-IN-2NMHFXQM-culSf0A8.js → ta-IN-2NMHFXQM-BsrjQGCa.js} +1 -1
  305. package/dist/viewer-lib/{th-TH-HPSO5L25-Cn-xDXVd.js → th-TH-HPSO5L25-Ay03kJy0.js} +1 -1
  306. package/dist/viewer-lib/{tr-TR-DEFEU3FU-D62dl3eN.js → tr-TR-DEFEU3FU-xW9fx8lz.js} +1 -1
  307. package/dist/viewer-lib/types/src/viewer/components/BoardPlaceholder.d.ts +6 -0
  308. package/dist/viewer-lib/types/src/viewer/components/Canvas.d.ts +3 -1
  309. package/dist/viewer-lib/types/src/viewer/components/RyugiLoader.d.ts +2 -1
  310. package/dist/viewer-lib/{uk-UA-QMV73CPH-D6D8s7pK.js → uk-UA-QMV73CPH-siImZwWq.js} +1 -1
  311. package/dist/viewer-lib/{vi-VN-M7AON7JQ-Dh3BnbJN.js → vi-VN-M7AON7JQ-B1RwZdrg.js} +1 -1
  312. package/dist/viewer-lib/{viewport-CFJHn_Y6-BOjZrMc1.js → viewport-CFJHn_Y6-C1O9ia_N.js} +1 -1
  313. package/dist/viewer-lib/{zh-CN-LNUGB5OW-C48KmWkT.js → zh-CN-LNUGB5OW-6fUO3AXx.js} +1 -1
  314. package/dist/viewer-lib/{zh-HK-E62DVLB3-B8B3Vey8.js → zh-HK-E62DVLB3-DsB4qJEI.js} +1 -1
  315. package/dist/viewer-lib/{zh-TW-RAJ6MFWO-C8Ic-j4K.js → zh-TW-RAJ6MFWO-BXCT8oY7.js} +1 -1
  316. package/package.json +6 -3
  317. package/dist/viewer/Canvas-DxaQjjSK.js +0 -1
  318. package/dist/viewer/DocumentLayout-BqobBoJ9.js +0 -2
  319. package/dist/viewer/channel-fe5QTu-s.js +0 -1
  320. package/dist/viewer/classDiagram-ZZMXUADV-B-zT7lnC.js +0 -1
  321. package/dist/viewer/classDiagram-v2-VYDZK3BY-B-zT7lnC.js +0 -1
  322. package/dist/viewer/flowDiagram-HODETNUW-CXlFZEEj.js +0 -1
  323. package/dist/viewer/percentages-BXMCSKIN-BS0t4tWg.js +0 -1
  324. package/dist/viewer/stateDiagram-v2-MP3YSRHH-aanK4VsX.js +0 -1
  325. package/dist/viewer/subset-shared.chunk-BiJjRqIa.js +0 -1
  326. package/dist/viewer/swimlanesDiagram-VR7AAH4N-Bgny_WIB.js +0 -8
  327. package/dist/viewer-lib/percentages-BXMCSKIN-Dg5qsT14.js +0 -1
  328. package/dist/viewer-lib/subset-shared.chunk-Cd_UazJM.js +0 -2
  329. package/bin/{ryugi-artifacts.cjs → ryugi.cjs} +0 -0
  330. package/dist/viewer-lib/{PageLoader-M5KGHqfg.js → PageLoader-C6VBYL59.js} +1 -1
  331. package/dist/viewer-lib/{agentLook-Pf_kpgWG.js → agentLook-D56IP3D7.js} +1 -1
package/README.md CHANGED
@@ -9,6 +9,10 @@ npx ryugi-artifacts # open the library of the current project
9
9
  npx ryugi-artifacts monitor # list running project servers
10
10
  ```
11
11
 
12
+ Installed globally (`npm install -g ryugi-artifacts`), the command is `ryugi`;
13
+ `ryugi-artifacts` stays as an alias. npx needs the package name, so
14
+ `npx ryugi-artifacts` is the npx form.
15
+
12
16
  The server reads `.ryugi/artifacts/` in the selected project. Ryugi's skills
13
17
  start it for you; this package also runs standalone. Node.js is required.
14
18
 
@@ -28,12 +32,12 @@ Each operation declares its supported formats; unsupported modes fail before wor
28
32
  starts. There is no alternate legacy protocol or release gate.
29
33
 
30
34
  ```sh
31
- ryugi-artifacts check --artifact document/plan --format brief
32
- ryugi-artifacts publish --list --limit 10 --visibility private --format json
33
- ryugi-artifacts get https://ryugi.innei.dev/a/ID --format brief
34
- ryugi-artifacts get ID --detail --snapshot TOKEN --format json
35
- ryugi-artifacts get ID --download --out ./new-download --format json
36
- ryugi-artifacts config --output-format brief --project
35
+ ryugi check --artifact document/plan --format brief
36
+ ryugi publish --list --limit 10 --visibility private --format json
37
+ ryugi get https://ryugi.innei.dev/a/ID --format brief
38
+ ryugi get ID --detail --snapshot TOKEN --format json
39
+ ryugi get ID --download --out ./new-download --format json
40
+ ryugi config --output-format brief --project
37
41
  ```
38
42
 
39
43
  Selection order is explicit option, `RYUGI_ARTIFACTS_FORMAT`, project
@@ -54,7 +58,7 @@ Review reads are read-only. Preview a bounded page, read complete evidence, then
54
58
  explicitly acknowledge its receipt after using that evidence:
55
59
 
56
60
  For a complete review in one request, run
57
- `ryugi-artifacts comment list --artifact document/plan --sections all --detail`.
61
+ `ryugi comment list --artifact document/plan --sections all --detail`.
58
62
  Documents include threads/asks; artboards include threads/groups/rounds. Each
59
63
  collection retains its own page, snapshot and continuation. Only a complete
60
64
  unread thread page issues a receipt; state collections do not. Follow every
@@ -62,11 +66,11 @@ relevant continuation before concluding. Filters, fields and existing cursors
62
66
  or snapshots require the single-collection form below.
63
67
 
64
68
  ```sh
65
- ryugi-artifacts comment list --artifact document/plan --section threads --format brief
66
- ryugi-artifacts comment read --artifact document/plan --thread THREAD --detail
67
- ryugi-artifacts comment ack --artifact document/plan --receipt RECEIPT
68
- ryugi-artifacts changes --artifact document/plan --detail
69
- ryugi-artifacts changes ack --artifact document/plan --receipt RECEIPT
69
+ ryugi comment list --artifact document/plan --section threads --format brief
70
+ ryugi comment read --artifact document/plan --thread THREAD --detail
71
+ ryugi comment ack --artifact document/plan --receipt RECEIPT
72
+ ryugi changes --artifact document/plan --detail
73
+ ryugi changes ack --artifact document/plan --receipt RECEIPT
70
74
  ```
71
75
 
72
76
  `--all` and projected reads never issue receipts. Asks, groups and rounds are
package/dist/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Kn=Object.create;var Yt=Object.defineProperty;var Qn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var eo=Object.getPrototypeOf,to=Object.prototype.hasOwnProperty;var ro=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zn(t))!to.call(e,o)&&o!==r&&Yt(e,o,{get:()=>t[o],enumerable:!(n=Qn(t,o))||n.enumerable});return e};var S=(e,t,r)=>(r=e!=null?Kn(eo(e)):{},ro(t||!e||!e.__esModule?Yt(r,"default",{value:e,enumerable:!0}):r,e));var Kt=require("node:util");var f=class extends Error{constructor(r,n="failed",o){super(r.message);this.error=r;this.kind=n;this.raw=o}error;kind;raw};function _e(e){if(e instanceof f)return e.error;let t=e,r=t?.fields;return{code:typeof r?.code=="string"?`E_${r.code.toUpperCase().replace(/^E_/,"")}`:"E_COMMAND_FAILED",message:typeof t?.message=="string"&&t.message?t.message:typeof r?.message=="string"?r.message:String(e),...typeof r?.status=="number"?{httpStatus:r.status}:{},...r&&Object.keys(r).length?{details:r}:{}}}function ce(e,t=!1){switch(e.kind){case"succeeded":return{outcome:t?"attention":"success",code:0};case"validation_failed":return{outcome:"attention",code:3};case"pending":return{outcome:"pending",code:4};case"action_required":return{outcome:"attention",code:2};case"partial":return{outcome:"partial",code:5};case"failed":return{outcome:"error",code:1};case"interrupted":return{outcome:"error",code:e.signal==="SIGINT"?130:143}}}function Jt(e,t,r,n){return!e||typeof e!="object"||Array.isArray(e)?e:Object.fromEntries(Object.entries(e).filter(([o])=>t.includes(o)?!0:(n.push({path:`${r}.${o}`,reason:"fields"}),!1)))}function ht(e,t,r,n){let o=[...t.coverage.omitted??[]],s=t.data;if(r.fields){let i=[...new Set([...r.fields,...n.requiredFields??[]])];if(n.collection&&s&&typeof s=="object"){let a=s,u=a[n.collection];s={...a,[n.collection]:Array.isArray(u)?u.map((p,d)=>Jt(p,i,`data.${n.collection}.${d}`,o)):u}}else s=Jt(s,i,"data",o)}return{schema:"ryugi.cli/v1",command:e,outcome:ce(t.completion,t.warnings.length>0).outcome,data:s,...t.coverage.page?{page:t.coverage.page}:{},...o.length?{omitted:o}:{},...t.effects.length?{effects:t.effects}:{},...t.warnings.length?{warnings:t.warnings}:{},...t.actions.length?{next:t.actions}:{},...t.completion.kind==="failed"?{error:t.completion.error}:t.completion.kind==="interrupted"?{error:{code:"E_INTERRUPTED",message:`Command interrupted by ${t.completion.signal}.`,details:{signal:t.completion.signal}}}:{}}}var Xt={format:{type:"string",value:"<brief|table|json|jsonl|raw>",help:"Output format (default: brief)"},json:{type:"boolean",help:"Shorthand for --format json"},detail:{type:"boolean",help:"Read complete evidence for the selected object or page"},fields:{type:"string",value:"<fields>",help:"Select public output fields, separated by commas"},quiet:{type:"boolean",help:"Print the command's declared scalar only"},verbose:{type:"boolean",help:"Include diagnostic details on stderr"}};function yt(e,t){let r={};for(let n=0;n<e.length;n++){let o=e[n];if(o==="--")break;if(!o.startsWith("--"))continue;let s=o.indexOf("="),i=o.slice(2,s<0?void 0:s),a=i==="source"?"boolean":t[i]?.type;a==="string"?r[i]=s<0?e[++n]??"":o.slice(s+1):a==="boolean"&&(r[i]=!0)}return r}function bt(e,t,r=process.env){let n=yt(e,t),o=["format","json","quiet","source"].filter(l=>n[l]!==void 0),s=r.RYUGI_ARTIFACTS_FORMAT??"brief",i=n.format??(n.json?"json":n.quiet?"quiet":n.source?"source":s),u=["brief","table","json","jsonl","raw","source","quiet"].includes(i),p={format:u?i:"brief",detail:!!n.detail||!!n.source,verbose:!!n.verbose},d;return o.length>1?d=new f({code:"E_OPTION_CONFLICT",message:"Choose one of --format, --json, --quiet or --source."}):(!u||!o.length&&!["brief","json","jsonl"].includes(s))&&(d=new f({code:"E_FORMAT_UNSUPPORTED",message:`Unknown output format: ${String(i)}`})),typeof n.fields=="string"&&(p.fields=n.fields.split(",").map(l=>l.trim()),p.fields.some(l=>!l)&&(d=new f({code:"E_ARGUMENT_INVALID",message:"--fields requires comma-separated field names."}))),{options:p,...d?{error:d}:{}}}var ue=S(require("node:fs"),1),zt=S(require("node:os"),1),M=S(require("node:path"),1),w=class extends Error{constructor(r,n={},o=1){super(r);this.fields=n;this.code=o}fields;code};function no(e){let t="";try{t=ue.default.realpathSync(zt.default.homedir())}catch{}let r=[];for(let n=e;r.push(n),!(ue.default.existsSync(M.default.join(n,".git"))&&(n!==t||e===t));n=M.default.dirname(n))if(M.default.dirname(n)===n)return e;return r.find(n=>ue.default.existsSync(M.default.join(n,".ryugi","artifacts")))??r.at(-1)}function z(e){let t;try{if(t=ue.default.realpathSync(M.default.resolve(e)),!ue.default.statSync(t).isDirectory())throw new Error("Not a directory")}catch{throw new w(`Project directory not found: ${e}`)}t=no(t);let r=M.default.join(t,".ryugi","artifacts"),n=M.default.join(r,".state");return{project:t,root:r,state:n,pid:M.default.join(n,"server.pid"),log:M.default.join(n,"server.log"),serverId:M.default.join(n,"server-instance-id"),info:M.default.join(n,"server-info"),version:M.default.join(n,"server-version"),owners:M.default.join(n,"owners"),agent:M.default.join(n,"agent"),stopped:M.default.join(n,"server-stopped"),lock:M.default.join(n,"start.lock")}}var ye=()=>process.env.RYUGI_ARTIFACTS_COMMAND||"ryugi-artifacts",le=/^(artboard|document|html|whiteboard)\/[a-z0-9][a-z0-9-]*$/,je="--artifact must be <type>/<id>: type artboard, document or html, id of lowercase letters, digits and hyphens";var Te="ryugi-artifacts",te={...Xt,"project-dir":{type:"string",value:"<path>",help:"Project directory (default: current directory)"}},Qt={help:{type:"boolean",short:"h",help:"Show this help"}};function be(e,t,r=0){let n=Object.fromEntries(Object.entries({...te,...t}).map(([o,{type:s,short:i}])=>[o,i?{type:s,short:i}:{type:s}]));try{let o=(0,Kt.parseArgs)({args:e,options:n,allowPositionals:r>0,strict:!0});if(o.positionals.length>r)throw new w(`Unknown argument: ${o.positionals[r]}`);return{values:o.values,positionals:o.positionals,projectDir:o.values["project-dir"]??process.cwd()}}catch(o){if(o instanceof w)throw o;let s=/'([^']+)'/.exec(o.message)?.[1];throw new w(s?`Unknown argument: ${s.split(" ")[0]}`:o.message)}}function Zt(e){let t=e.indexOf("--");return(t===-1?e:e.slice(0,t)).some(r=>r==="--help"||r==="-h")}function wt(e){let t=Math.max(...e.map(([r])=>r.length))+2;return e.map(([r,n])=>` ${r.padEnd(t)}${n.replaceAll(`
2
+ "use strict";var Kn=Object.create;var Yt=Object.defineProperty;var Qn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var eo=Object.getPrototypeOf,to=Object.prototype.hasOwnProperty;var ro=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zn(t))!to.call(e,o)&&o!==r&&Yt(e,o,{get:()=>t[o],enumerable:!(n=Qn(t,o))||n.enumerable});return e};var S=(e,t,r)=>(r=e!=null?Kn(eo(e)):{},ro(t||!e||!e.__esModule?Yt(r,"default",{value:e,enumerable:!0}):r,e));var Kt=require("node:util");var f=class extends Error{constructor(r,n="failed",o){super(r.message);this.error=r;this.kind=n;this.raw=o}error;kind;raw};function _e(e){if(e instanceof f)return e.error;let t=e,r=t?.fields;return{code:typeof r?.code=="string"?`E_${r.code.toUpperCase().replace(/^E_/,"")}`:"E_COMMAND_FAILED",message:typeof t?.message=="string"&&t.message?t.message:typeof r?.message=="string"?r.message:String(e),...typeof r?.status=="number"?{httpStatus:r.status}:{},...r&&Object.keys(r).length?{details:r}:{}}}function ce(e,t=!1){switch(e.kind){case"succeeded":return{outcome:t?"attention":"success",code:0};case"validation_failed":return{outcome:"attention",code:3};case"pending":return{outcome:"pending",code:4};case"action_required":return{outcome:"attention",code:2};case"partial":return{outcome:"partial",code:5};case"failed":return{outcome:"error",code:1};case"interrupted":return{outcome:"error",code:e.signal==="SIGINT"?130:143}}}function Jt(e,t,r,n){return!e||typeof e!="object"||Array.isArray(e)?e:Object.fromEntries(Object.entries(e).filter(([o])=>t.includes(o)?!0:(n.push({path:`${r}.${o}`,reason:"fields"}),!1)))}function ht(e,t,r,n){let o=[...t.coverage.omitted??[]],s=t.data;if(r.fields){let i=[...new Set([...r.fields,...n.requiredFields??[]])];if(n.collection&&s&&typeof s=="object"){let a=s,u=a[n.collection];s={...a,[n.collection]:Array.isArray(u)?u.map((p,d)=>Jt(p,i,`data.${n.collection}.${d}`,o)):u}}else s=Jt(s,i,"data",o)}return{schema:"ryugi.cli/v1",command:e,outcome:ce(t.completion,t.warnings.length>0).outcome,data:s,...t.coverage.page?{page:t.coverage.page}:{},...o.length?{omitted:o}:{},...t.effects.length?{effects:t.effects}:{},...t.warnings.length?{warnings:t.warnings}:{},...t.actions.length?{next:t.actions}:{},...t.completion.kind==="failed"?{error:t.completion.error}:t.completion.kind==="interrupted"?{error:{code:"E_INTERRUPTED",message:`Command interrupted by ${t.completion.signal}.`,details:{signal:t.completion.signal}}}:{}}}var Xt={format:{type:"string",value:"<brief|table|json|jsonl|raw>",help:"Output format (default: brief)"},json:{type:"boolean",help:"Shorthand for --format json"},detail:{type:"boolean",help:"Read complete evidence for the selected object or page"},fields:{type:"string",value:"<fields>",help:"Select public output fields, separated by commas"},quiet:{type:"boolean",help:"Print the command's declared scalar only"},verbose:{type:"boolean",help:"Include diagnostic details on stderr"}};function yt(e,t){let r={};for(let n=0;n<e.length;n++){let o=e[n];if(o==="--")break;if(!o.startsWith("--"))continue;let s=o.indexOf("="),i=o.slice(2,s<0?void 0:s),a=i==="source"?"boolean":t[i]?.type;a==="string"?r[i]=s<0?e[++n]??"":o.slice(s+1):a==="boolean"&&(r[i]=!0)}return r}function bt(e,t,r=process.env){let n=yt(e,t),o=["format","json","quiet","source"].filter(l=>n[l]!==void 0),s=r.RYUGI_ARTIFACTS_FORMAT??"brief",i=n.format??(n.json?"json":n.quiet?"quiet":n.source?"source":s),u=["brief","table","json","jsonl","raw","source","quiet"].includes(i),p={format:u?i:"brief",detail:!!n.detail||!!n.source,verbose:!!n.verbose},d;return o.length>1?d=new f({code:"E_OPTION_CONFLICT",message:"Choose one of --format, --json, --quiet or --source."}):(!u||!o.length&&!["brief","json","jsonl"].includes(s))&&(d=new f({code:"E_FORMAT_UNSUPPORTED",message:`Unknown output format: ${String(i)}`})),typeof n.fields=="string"&&(p.fields=n.fields.split(",").map(l=>l.trim()),p.fields.some(l=>!l)&&(d=new f({code:"E_ARGUMENT_INVALID",message:"--fields requires comma-separated field names."}))),{options:p,...d?{error:d}:{}}}var ue=S(require("node:fs"),1),zt=S(require("node:os"),1),M=S(require("node:path"),1),w=class extends Error{constructor(r,n={},o=1){super(r);this.fields=n;this.code=o}fields;code};function no(e){let t="";try{t=ue.default.realpathSync(zt.default.homedir())}catch{}let r=[];for(let n=e;r.push(n),!(ue.default.existsSync(M.default.join(n,".git"))&&(n!==t||e===t));n=M.default.dirname(n))if(M.default.dirname(n)===n)return e;return r.find(n=>ue.default.existsSync(M.default.join(n,".ryugi","artifacts")))??r.at(-1)}function z(e){let t;try{if(t=ue.default.realpathSync(M.default.resolve(e)),!ue.default.statSync(t).isDirectory())throw new Error("Not a directory")}catch{throw new w(`Project directory not found: ${e}`)}t=no(t);let r=M.default.join(t,".ryugi","artifacts"),n=M.default.join(r,".state");return{project:t,root:r,state:n,pid:M.default.join(n,"server.pid"),log:M.default.join(n,"server.log"),serverId:M.default.join(n,"server-instance-id"),info:M.default.join(n,"server-info"),version:M.default.join(n,"server-version"),owners:M.default.join(n,"owners"),agent:M.default.join(n,"agent"),stopped:M.default.join(n,"server-stopped"),lock:M.default.join(n,"start.lock")}}var ye=()=>process.env.RYUGI_ARTIFACTS_COMMAND||"ryugi",le=/^(artboard|document|html|whiteboard)\/[a-z0-9][a-z0-9-]*$/,je="--artifact must be <type>/<id>: type artboard, document or html, id of lowercase letters, digits and hyphens";var Te="ryugi",te={...Xt,"project-dir":{type:"string",value:"<path>",help:"Project directory (default: current directory)"}},Qt={help:{type:"boolean",short:"h",help:"Show this help"}};function be(e,t,r=0){let n=Object.fromEntries(Object.entries({...te,...t}).map(([o,{type:s,short:i}])=>[o,i?{type:s,short:i}:{type:s}]));try{let o=(0,Kt.parseArgs)({args:e,options:n,allowPositionals:r>0,strict:!0});if(o.positionals.length>r)throw new w(`Unknown argument: ${o.positionals[r]}`);return{values:o.values,positionals:o.positionals,projectDir:o.values["project-dir"]??process.cwd()}}catch(o){if(o instanceof w)throw o;let s=/'([^']+)'/.exec(o.message)?.[1];throw new w(s?`Unknown argument: ${s.split(" ")[0]}`:o.message)}}function Zt(e){let t=e.indexOf("--");return(t===-1?e:e.slice(0,t)).some(r=>r==="--help"||r==="-h")}function wt(e){let t=Math.max(...e.map(([r])=>r.length))+2;return e.map(([r,n])=>` ${r.padEnd(t)}${n.replaceAll(`
3
3
  `,`
4
4
  ${" ".repeat(t)}`)}`.trimEnd()).join(`
5
5
  `)}function er(e){return Object.entries(e).filter(([,t])=>t.help!==void 0).map(([t,r])=>[`${r.short?`-${r.short}, `:""}--${t}${r.value?` ${r.value}`:""}`,r.help])}function tr(e){return[(e.usage??["[options]"]).map((r,n)=>`${n?" ":"Usage: "}${Te} ${e.name} ${r}`).join(`
@@ -62,7 +62,7 @@ function run(urls) {
62
62
  `)}function Fs(e){let t={...process.env,ARTIFACTS_HOST:e.host,ARTIFACTS_URL_HOST:e.urlHost};process.env.RYUGI_ARTIFACTS_COMMAND&&(t.RYUGI_ARTIFACTS_LAUNCHER=process.env.RYUGI_ARTIFACTS_COMMAND);for(let r of["RYUGI_ARTIFACTS_OWNER","RYUGI_ARTIFACTS_VERSION","RYUGI_ARTIFACTS_COMMAND","ARTIFACTS_OPEN_CMD","ARTIFACTS_ROOT"])delete t[r];return t}var Ms=e=>e.split(`
63
63
  `).find(t=>t.includes('"server-started"')),Us=e=>e.split(`
64
64
  `).find(t=>t.includes('"server-error"'));async function Gs(e,t,r){let n=await fetch(Vt(e,"/api/hub/projects"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dir:t.project,...r?{open:r}:{},...r&&process.env.ARTIFACTS_OPEN_CMD?{openCmd:process.env.ARTIFACTS_OPEN_CMD}:{}}),signal:AbortSignal.timeout(Is)});if(!n.ok)throw new w(`The artifacts server refused this project: ${await n.text()}`)}async function Ut(e,t){if(t.signal?.throwIfAborted(),e.artifact!==void 0&&!le.test(e.artifact))throw new w(je);if(e.port!==void 0&&(!/^\d+$/.test(e.port)||Number(e.port)<1||Number(e.port)>65535))throw new w("--port must be a port number");e.urlHost||=e.host==="127.0.0.1"||e.host==="localhost"?"localhost":e.host,process.umask(63);let r=z(e.projectDir),n=pe();dr(n.home),U.default.mkdirSync(r.state,{recursive:!0}),U.default.existsSync(dt.default.join(r.state,".gitignore"))||U.default.writeFileSync(dt.default.join(r.state,".gitignore"),`*
65
- `);let o=process.env.RYUGI_ARTIFACTS_VERSION||"1.70.2",s=fe(n.projects).some(p=>p.dir===r.project),i=async(p,d)=>{Ls(r);let l=e.open&&!e.library&&(!d||!s);await Gs(p,r,l?e.artifact??!0:void 0);let m=js(p,r,e.artifact);d&&(m.reused=!0);let C=await Ts(m,p,r,e.artifact),T=xn(r.project);if(t.signal?.throwIfAborted(),e.library&&e.open&&(process.env.ARTIFACTS_OPEN_CMD?await new Promise(j=>(0,Oe.execFile)(process.env.ARTIFACTS_OPEN_CMD,[p.url],()=>j())):await Dt(p.url,[p.url]).catch(j=>t.log(j.message,"stderr"))),await t.ready(T?{...C,loginHint:T}:C),d&&s&&process.platform==="darwin"&&e.open&&e.openExisting&&e.artifact&&!process.env.ARTIFACTS_OPEN_CMD){let j=C.link;await Dt(typeof C.cloudLink=="string"?C.cloudLink:j,[j]).catch(D=>t.log(D.message,"stderr"))}};if(!await $s(n.lock))throw new w("Another start is still starting the artifacts server; retry in a moment");let a=!0,u=()=>{if(a){a=!1;try{U.default.rmdirSync(n.lock)}catch{}}};try{t.signal?.throwIfAborted();let p=Ps(n),d=Pn(n);if(p&&!d){for(let k=0;k<Os&&J(p)&&!d;k+=100)await me(100),d=Pn(n);!d&&J(p)&&await Nn(p,"stopping artifacts server")}if(p&&d){let k=W(n.version)??"",y=Tn(k,o),c=(d.host??"127.0.0.1")!==e.host||(d.urlHost??"localhost")!==e.urlHost||(d.cloudOrigin??Ln)!==xs(process.env)||e.port!==void 0&&String(d.port)!==e.port;if(y!=="replace"&&!c&&await Ns(d))return u(),await i(d,!0),0;await Nn(p,"running artifacts server")}await Ds(),U.default.rmSync(n.info,{force:!0});let l=Dn.default.randomBytes(24).toString("hex");U.default.writeFileSync(n.serverId,`${l}
65
+ `);let o=process.env.RYUGI_ARTIFACTS_VERSION||"1.71.0",s=fe(n.projects).some(p=>p.dir===r.project),i=async(p,d)=>{Ls(r);let l=e.open&&!e.library&&(!d||!s);await Gs(p,r,l?e.artifact??!0:void 0);let m=js(p,r,e.artifact);d&&(m.reused=!0);let C=await Ts(m,p,r,e.artifact),T=xn(r.project);if(t.signal?.throwIfAborted(),e.library&&e.open&&(process.env.ARTIFACTS_OPEN_CMD?await new Promise(j=>(0,Oe.execFile)(process.env.ARTIFACTS_OPEN_CMD,[p.url],()=>j())):await Dt(p.url,[p.url]).catch(j=>t.log(j.message,"stderr"))),await t.ready(T?{...C,loginHint:T}:C),d&&s&&process.platform==="darwin"&&e.open&&e.openExisting&&e.artifact&&!process.env.ARTIFACTS_OPEN_CMD){let j=C.link;await Dt(typeof C.cloudLink=="string"?C.cloudLink:j,[j]).catch(D=>t.log(D.message,"stderr"))}};if(!await $s(n.lock))throw new w("Another start is still starting the artifacts server; retry in a moment");let a=!0,u=()=>{if(a){a=!1;try{U.default.rmdirSync(n.lock)}catch{}}};try{t.signal?.throwIfAborted();let p=Ps(n),d=Pn(n);if(p&&!d){for(let k=0;k<Os&&J(p)&&!d;k+=100)await me(100),d=Pn(n);!d&&J(p)&&await Nn(p,"stopping artifacts server")}if(p&&d){let k=W(n.version)??"",y=Tn(k,o),c=(d.host??"127.0.0.1")!==e.host||(d.urlHost??"localhost")!==e.urlHost||(d.cloudOrigin??Ln)!==xs(process.env)||e.port!==void 0&&String(d.port)!==e.port;if(y!=="replace"&&!c&&await Ns(d))return u(),await i(d,!0),0;await Nn(p,"running artifacts server")}await Ds(),U.default.rmSync(n.info,{force:!0});let l=Dn.default.randomBytes(24).toString("hex");U.default.writeFileSync(n.serverId,`${l}
66
66
  `),U.default.writeFileSync(n.version,`${o}
67
67
  `);let C=[dt.default.join(__dirname,"server.cjs"),`--artifacts-server-id=${l}`,...e.port?[`--port=${e.port}`]:[]],T=Fs(e);if(e.foreground||!e.background&&!!process.env.CODEX_CI){let k=(0,Oe.spawn)(process.execPath,C,{env:T,stdio:["ignore","pipe","pipe"]});U.default.writeFileSync(n.pid,`${k.pid}
68
68
  `);let y=()=>{k.kill("SIGTERM")};if(t.signal)t.signal.addEventListener("abort",y,{once:!0});else for(let v of["SIGINT","SIGTERM"])process.on(v,y);Gt.default.createInterface({input:k.stderr}).on("line",v=>t.log(v,"stderr"));let c=new Promise(v=>k.on("close",I=>v(I??1))),h=!1,g;Gt.default.createInterface({input:k.stdout}).on("line",v=>{let I;try{I=JSON.parse(v)}catch{t.log(v,"stdout");return}if(I.type!=="server-started"||h){t.event?t.event(I):I.type==="server-error"||I.type==="error"?t.failure(I):t.log(JSON.stringify(I),"stderr");return}h=!0,u(),g=i(I,!1),g.catch(()=>y())});try{let v=await c;return await g,v}finally{if(t.signal)t.signal.removeEventListener("abort",y);else for(let v of["SIGINT","SIGTERM"])process.removeListener(v,y)}}try{U.default.renameSync(n.log,`${n.log}.1`)}catch{}let D=U.default.openSync(n.log,"w"),b=(0,Oe.spawn)(process.execPath,C,{env:T,detached:!0,windowsHide:!0,stdio:["ignore",D,D]});U.default.closeSync(D),b.unref(),U.default.writeFileSync(n.pid,`${b.pid}
@@ -70,4 +70,4 @@ function run(urls) {
70
70
  `)};if(W(e.pid)===null)return{status:"not_running"};let r=Number(W(e.pid)),n=W(e.serverId)??"";if(!Number.isInteger(r)||r<=0||!/^[\w-]{32,64}$/.test(n)||!Se(r,n))return ee.default.rmSync(e.pid,{force:!0}),ee.default.rmSync(e.serverId,{force:!0}),t("stale_pid"),{status:"stale_pid"};try{process.kill(r,"SIGTERM")}catch{}if(!await re(r,7e3)){try{process.kill(r,"SIGKILL")}catch{}await re(r,1e3)}if(J(r))return{status:"failed",error:"process still running"};for(let o of[e.pid,e.serverId])ee.default.rmSync(o,{force:!0});return t("stop"),{status:"stopped"}}var Un={name:"stop",summary:"Stop this machine's artifacts server; the artifacts are kept",usage:["[options]"],options:{},semantic:e=>_({id:"stop",mode:"finite",output:{formats:["brief","json","jsonl","quiet"],scalar:t=>t.status},async run(){let t=await qs();return x({status:t.status==="stopped"?"stopped":t.status==="failed"?"failed":"unchanged",reason:t.status,scope:"machine",artifacts:"kept"},t.status==="failed"?{kind:"failed",error:{code:"E_SERVER_STOP_FAILED",message:t.error}}:{kind:"succeeded"})},present:Ws},e)};var Wt=require("node:child_process"),Bn=S(require("node:fs"),1);var pt=S(require("node:fs"),1),Gn=S(require("node:os"),1),ft=S(require("node:path"),1);function Vn(e,t){let r=e.split(".").map(Number),n=t.split(".").map(Number);for(let o=0;o<3;o++)if(r[o]!==n[o])return r[o]>n[o];return!1}var Wn=e=>ft.default.join(e.XDG_CACHE_HOME||ft.default.join(Gn.default.homedir(),".cache"),"ryugi","artifacts","latest.json");function qn(e,t,r){try{pt.default.mkdirSync(ft.default.dirname(e),{recursive:!0});let n=`${e}.${process.pid}`;pt.default.writeFileSync(n,JSON.stringify({version:t,checkedAt:r})),pt.default.renameSync(n,e)}catch{}}var H="ryugi-artifacts",mt=["npm","pnpm","yarn","bun"],Hs=[["npx",["/_npx/"]],["pnpm dlx",["/pnpm/dlx/","/.pnpm-store/dlx/"]],["bunx",["/bunx-","/.bun/install/cache/"]]],Bs=[["pnpm",["/pnpm/global/"]],["yarn",["/yarn/global/"]],["bun",["/.bun/install/global/"]],["npm",[`/lib/node_modules/${H}/`,`/npm/node_modules/${H}/`]]];function Ys(e,t){if(t.RYUGI_ARTIFACTS_COMMAND)return{kind:"launcher"};let r=e;try{r=Bn.default.realpathSync(e)}catch{}let n=r.replaceAll("\\","/").toLowerCase(),o=s=>s.some(i=>n.includes(i));for(let[s,i]of Hs)if(o(i))return{kind:"transient",runner:s};for(let[s,i]of Bs)if(o(i))return{kind:"global",pm:s};return n.includes("/node_modules/")?{kind:"unknown"}:{kind:"local"}}function Hn(e,t){let r=`${H}@${t}`;return{cmd:e,args:e==="npm"?["install","-g",r]:e==="yarn"?["global","add",r]:["add","-g",r]}}var he=({cmd:e,args:t})=>[e,...t].join(" ");async function Js(e){let t=e.endsWith("/")?e:`${e}/`;try{let r=await fetch(new URL(`${H}/latest`,t),{signal:AbortSignal.timeout(1e4)}),{version:n}=await r.json();if(r.ok&&typeof n=="string"&&/^\d+\.\d+\.\d+/.test(n))return n;throw new Error(`registry returned ${r.status}`)}catch(r){throw new w(`Could not get the latest ${H} version from ${t}: ${r.message}`)}}function Xs(e,t){return e.kind==="transient"?`You ran ${H} through ${e.runner}, which keeps no install to update. Run \`${e.runner} ${H}@latest\` to get ${t}.`:e.kind==="local"?"This is a local build from a Ryugi checkout. Update it with `git pull`, then `pnpm build` in artifacts/.":e.kind==="launcher"?`The Ryugi skill runs ${H} through its launcher, which moves to ${t} within a day of its release.`:null}var gt=class extends w{};async function zs(e,t={}){if(e.pm!==void 0&&!mt.includes(e.pm))throw new w(`--pm must be one of ${mt.join(", ")}`);let r=e.pm?{kind:"global",pm:e.pm}:Ys(e.file,e.env),n=await Js(e.registry);qn(Wn(e.env),n,Date.now());let o={type:"update-check",current:e.current,latest:n,install:r.kind};if(!Vn(n,e.current))return{...o,upToDate:!0,command:null};if(r.kind==="unknown"){let p=mt.map(d=>` ${he(Hn(d,n))}`).join(`
71
71
  `);throw new gt(`Could not tell how ${H} was installed (${e.file}). Install ${n} with one of:
72
72
  ${p}
73
- or run \`${H} update --pm <${mt.join("|")}>\`.`)}if(r.kind!=="global")return{...o,upToDate:!1,command:null,message:Xs(r,n)};let s=Hn(r.pm,n);if(e.check)return{...o,upToDate:!1,command:he(s)};let i=process.platform==="win32";t.beforeInstall?.();let a=t.log?["inherit","pipe","pipe"]:["inherit",2,2],u=i?(0,Wt.spawnSync)(he(s),{stdio:[...a],env:e.env,shell:!0}):(0,Wt.spawnSync)(s.cmd,s.args,{stdio:[...a],env:e.env});if(u.stdout?.length&&t.log?.(u.stdout.toString()),u.stderr?.length&&t.log?.(u.stderr.toString()),u.error)throw new w(`Could not run ${he(s)}: ${u.error.message}`);if(u.status!==0)throw new w(`${he(s)} exited with ${u.status??u.signal}`);return{type:"updated",from:e.current,to:n,pm:r.pm,command:he(s)}}var Yn={name:"update",summary:"Install the newest ryugi-artifacts release with the package manager that installed this one",options:{check:{type:"boolean",help:"Compare versions only; do not install"},pm:{type:"string",value:"<npm|pnpm|yarn|bun>",help:"Use this package manager instead of detecting it"}},semantic:e=>_({id:"update",mode:"finite",output:{formats:["brief","json","jsonl"],fields:["current","latest","install","status","installed","message","command"]},async run(t,r){let n,o;try{o=await zs({current:"1.70.2",file:__filename,env:process.env,registry:process.env.npm_config_registry||"https://registry.npmjs.org/",check:!!e.values.check,pm:e.values.pm},{beforeInstall(){n=r.effects.begin("install",H)},log:r.diagnostic})}catch(i){throw i instanceof gt?new f({code:"E_INSTALL_UNKNOWN",message:i.message},"action_required"):i}o.type==="updated"&&n!==void 0&&r.effects.confirm(n,{from:o.from,to:o.to});let s=o.type==="updated"?{current:o.to,latest:o.to,install:"global",status:"updated",installed:!0,command:o.command}:{current:o.current,latest:o.latest,install:o.install,status:o.upToDate?"up_to_date":"available",installed:!1,command:o.command,...o.message?{message:o.message}:{}};return x(s,void 0,{effects:r.effects.snapshot()})},present:Ks},e)};function Ks({data:e}){return{heading:"Update",status:e.status,facts:[R("Current",A(e,"current"),!0),R("Latest",A(e,"latest")),R("Install",A(e,"install")),...e.message?[R("Advice",A(e,"message"))]:[]],sections:[]}}var qt=[Fn,Un,Hr,un,Kr,Vr,ln,sn,Zr,Yn];function Ht(e=process.stdout,t=process.stderr){let r=new WeakMap;for(let n of[e,t])n.on("error",o=>r.set(n,o));return{write(n,o){let s=n==="stdout"?e:t,i=r.get(s);return i?Promise.reject(i):new Promise((a,u)=>s.write(o,p=>p?u(p):a()))}}}function Bt(e){process.exitCode=e}var Xn=S(require("node:fs"),1);async function xe(e,t,r,n){return Ct({id:e,mode:"finite",output:{formats:[r.format]},run(){throw t},present(){return{heading:"Error",status:"failed",facts:[],sections:[]}}},void 0,{...r,fields:void 0,detail:!1},n)}function Jn(e,t){return{id:e,mode:"finite",output:{formats:["brief","json","jsonl"],fields:["text","version","capabilities","commands"]},run(){return x(t)},present({data:r}){return r.version?{heading:`ryugi-artifacts ${r.version}`,status:"",facts:[],sections:[]}:{heading:"Help",status:"",facts:[],sections:[{kind:"content",key:"text",text:r.text}]}}}}async function zn(e,t,r,n,o,s,i){let[a,...u]=e,p=t.find(d=>d.name===a);try{if(a==="--version"||a==="-v")return be(u,{},0),await _(Jn("version",{text:n,version:n,capabilities:["reviewBundlesV1"]}),void 0).run(o,s);if(a==="--help"||a==="-h"||p&&Zt(u)){p||be(u,{},0);let l=p?tr(p):rr(t,r);return await _(Jn("help",{text:l,commands:t.map(({name:m,summary:C})=>({name:m,summary:C}))}),void 0).run(o,s)}if(!p&&(!a||a.startsWith("-")||(()=>{try{return Xn.default.statSync(a).isDirectory()}catch{return!1}})())){let l=be(e,r,1);if(l.positionals.length&&l.values["project-dir"])throw new f({code:"E_ARGUMENT_INVALID",message:"Specify one project directory."});return l.projectDir=l.values["project-dir"]??l.positionals[0]??l.projectDir,l.values.foreground=!0,l.values.open=!l.values["no-open"],await lt(l,"browse").run(o,s,i)}if(!p)throw new f({code:a?.includes("/")?"E_PROJECT_NOT_FOUND":"E_UNKNOWN_COMMAND",message:a?`Unknown command: ${a}`:"Use start --foreground to browse with semantic output."});let d;try{d=be(u,p.options,p.positionals)}catch(l){throw new f({code:"E_ARGUMENT_INVALID",message:l.message})}return await p.semantic(d).run(o,s,i)}catch(d){return xe(p?.name??a??"browse",d,o,s)}}var Qs={"no-open":{type:"boolean",help:"Print the URL without opening a browser"}};async function Zs(e){let t=Object.assign({},te,...qt.map(a=>a.options)),r=Ht(),n;try{n=bt(e,t,Ir(e,t))}catch(a){return xe(e[0]??"browse",a,bt(e,t).options,r)}if(n.error)return xe(e[0]??"browse",n.error,n.options,r);let o=new AbortController,s=()=>o.abort("SIGINT"),i=()=>o.abort("SIGTERM");process.on("SIGINT",s),process.on("SIGTERM",i);try{return await zn(e,qt,Qs,"1.70.2",n.options,r,o.signal)}finally{process.removeListener("SIGINT",s),process.removeListener("SIGTERM",i)}}Zs(process.argv.slice(2)).then(Bt,e=>xe(process.argv[2]??"browse",e,{format:"brief"},Ht()).then(Bt));
73
+ or run \`${H} update --pm <${mt.join("|")}>\`.`)}if(r.kind!=="global")return{...o,upToDate:!1,command:null,message:Xs(r,n)};let s=Hn(r.pm,n);if(e.check)return{...o,upToDate:!1,command:he(s)};let i=process.platform==="win32";t.beforeInstall?.();let a=t.log?["inherit","pipe","pipe"]:["inherit",2,2],u=i?(0,Wt.spawnSync)(he(s),{stdio:[...a],env:e.env,shell:!0}):(0,Wt.spawnSync)(s.cmd,s.args,{stdio:[...a],env:e.env});if(u.stdout?.length&&t.log?.(u.stdout.toString()),u.stderr?.length&&t.log?.(u.stderr.toString()),u.error)throw new w(`Could not run ${he(s)}: ${u.error.message}`);if(u.status!==0)throw new w(`${he(s)} exited with ${u.status??u.signal}`);return{type:"updated",from:e.current,to:n,pm:r.pm,command:he(s)}}var Yn={name:"update",summary:"Install the newest ryugi-artifacts release with the package manager that installed this one",options:{check:{type:"boolean",help:"Compare versions only; do not install"},pm:{type:"string",value:"<npm|pnpm|yarn|bun>",help:"Use this package manager instead of detecting it"}},semantic:e=>_({id:"update",mode:"finite",output:{formats:["brief","json","jsonl"],fields:["current","latest","install","status","installed","message","command"]},async run(t,r){let n,o;try{o=await zs({current:"1.71.0",file:__filename,env:process.env,registry:process.env.npm_config_registry||"https://registry.npmjs.org/",check:!!e.values.check,pm:e.values.pm},{beforeInstall(){n=r.effects.begin("install",H)},log:r.diagnostic})}catch(i){throw i instanceof gt?new f({code:"E_INSTALL_UNKNOWN",message:i.message},"action_required"):i}o.type==="updated"&&n!==void 0&&r.effects.confirm(n,{from:o.from,to:o.to});let s=o.type==="updated"?{current:o.to,latest:o.to,install:"global",status:"updated",installed:!0,command:o.command}:{current:o.current,latest:o.latest,install:o.install,status:o.upToDate?"up_to_date":"available",installed:!1,command:o.command,...o.message?{message:o.message}:{}};return x(s,void 0,{effects:r.effects.snapshot()})},present:Ks},e)};function Ks({data:e}){return{heading:"Update",status:e.status,facts:[R("Current",A(e,"current"),!0),R("Latest",A(e,"latest")),R("Install",A(e,"install")),...e.message?[R("Advice",A(e,"message"))]:[]],sections:[]}}var qt=[Fn,Un,Hr,un,Kr,Vr,ln,sn,Zr,Yn];function Ht(e=process.stdout,t=process.stderr){let r=new WeakMap;for(let n of[e,t])n.on("error",o=>r.set(n,o));return{write(n,o){let s=n==="stdout"?e:t,i=r.get(s);return i?Promise.reject(i):new Promise((a,u)=>s.write(o,p=>p?u(p):a()))}}}function Bt(e){process.exitCode=e}var Xn=S(require("node:fs"),1);async function xe(e,t,r,n){return Ct({id:e,mode:"finite",output:{formats:[r.format]},run(){throw t},present(){return{heading:"Error",status:"failed",facts:[],sections:[]}}},void 0,{...r,fields:void 0,detail:!1},n)}function Jn(e,t){return{id:e,mode:"finite",output:{formats:["brief","json","jsonl"],fields:["text","version","capabilities","commands"]},run(){return x(t)},present({data:r}){return r.version?{heading:`ryugi ${r.version}`,status:"",facts:[],sections:[]}:{heading:"Help",status:"",facts:[],sections:[{kind:"content",key:"text",text:r.text}]}}}}async function zn(e,t,r,n,o,s,i){let[a,...u]=e,p=t.find(d=>d.name===a);try{if(a==="--version"||a==="-v")return be(u,{},0),await _(Jn("version",{text:n,version:n,capabilities:["reviewBundlesV1"]}),void 0).run(o,s);if(a==="--help"||a==="-h"||p&&Zt(u)){p||be(u,{},0);let l=p?tr(p):rr(t,r);return await _(Jn("help",{text:l,commands:t.map(({name:m,summary:C})=>({name:m,summary:C}))}),void 0).run(o,s)}if(!p&&(!a||a.startsWith("-")||(()=>{try{return Xn.default.statSync(a).isDirectory()}catch{return!1}})())){let l=be(e,r,1);if(l.positionals.length&&l.values["project-dir"])throw new f({code:"E_ARGUMENT_INVALID",message:"Specify one project directory."});return l.projectDir=l.values["project-dir"]??l.positionals[0]??l.projectDir,l.values.foreground=!0,l.values.open=!l.values["no-open"],await lt(l,"browse").run(o,s,i)}if(!p)throw new f({code:a?.includes("/")?"E_PROJECT_NOT_FOUND":"E_UNKNOWN_COMMAND",message:a?`Unknown command: ${a}`:"Use start --foreground to browse with semantic output."});let d;try{d=be(u,p.options,p.positionals)}catch(l){throw new f({code:"E_ARGUMENT_INVALID",message:l.message})}return await p.semantic(d).run(o,s,i)}catch(d){return xe(p?.name??a??"browse",d,o,s)}}var Qs={"no-open":{type:"boolean",help:"Print the URL without opening a browser"}};async function Zs(e){let t=Object.assign({},te,...qt.map(a=>a.options)),r=Ht(),n;try{n=bt(e,t,Ir(e,t))}catch(a){return xe(e[0]??"browse",a,bt(e,t).options,r)}if(n.error)return xe(e[0]??"browse",n.error,n.options,r);let o=new AbortController,s=()=>o.abort("SIGINT"),i=()=>o.abort("SIGTERM");process.on("SIGINT",s),process.on("SIGTERM",i);try{return await zn(e,qt,Qs,"1.71.0",n.options,r,o.signal)}finally{process.removeListener("SIGINT",s),process.removeListener("SIGTERM",i)}}Zs(process.argv.slice(2)).then(Bt,e=>xe(process.argv[2]??"browse",e,{format:"brief"},Ht()).then(Bt));
@@ -1,2 +1,53 @@
1
1
  // Generated from ryugi-cloud/packages/artifacts/src/shared/review-evidence.ts. Do not edit.
2
- "use strict";var u=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var k=(t,n)=>{for(var e in n)u(t,e,{get:n[e],enumerable:!0})},p=(t,n,e,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of h(n))!f.call(t,o)&&o!==e&&u(t,o,{get:()=>n[o],enumerable:!(s=c(n,o))||s.enumerable});return t};var l=t=>p(u({},"__esModule",{value:!0}),t);var x={};k(x,{humanTokens:()=>a,reviewStateKey:()=>m,unreadThreadCount:()=>w});module.exports=l(x);var i=require("node:crypto"),r=t=>(0,i.createHash)("sha256").update(JSON.stringify(t)).digest("hex"),m=(t,n)=>r([t,n]);function a(t){let n=t.messages.filter(e=>e.author==="human").map(e=>({token:r([t.id,"message",e.id,e.at,e.editedAt,e.deleted,e.text]),at:e.editedAt??e.at}));return t.statusBy==="human"&&n.push({token:r([t.id,"status",t.statusAt,t.status]),at:t.statusAt}),n}function w(t,n=[]){let e=new Set(n);return(t?.threads??[]).filter(s=>{let o=s.anchor;return o.ask===void 0&&o.choice===void 0&&o.submit===void 0&&a(s).some(d=>!e.has(d.token))}).length}0&&(module.exports={humanTokens,reviewStateKey,unreadThreadCount});
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/shared/review-evidence.ts
22
+ var review_evidence_exports = {};
23
+ __export(review_evidence_exports, {
24
+ humanTokens: () => humanTokens,
25
+ reviewStateKey: () => reviewStateKey,
26
+ unreadThreadCount: () => unreadThreadCount
27
+ });
28
+ module.exports = __toCommonJS(review_evidence_exports);
29
+ var import_node_crypto = require("node:crypto");
30
+ var hash = (value) => (0, import_node_crypto.createHash)("sha256").update(JSON.stringify(value)).digest("hex");
31
+ var reviewStateKey = (artifact, agent) => hash([artifact, agent]);
32
+ function humanTokens(thread) {
33
+ const values = thread.messages.filter((message) => message.author === "human").map((message) => ({
34
+ token: hash([thread.id, "message", message.id, message.at, message.editedAt, message.deleted, message.text]),
35
+ at: message.editedAt ?? message.at
36
+ }));
37
+ if (thread.statusBy === "human")
38
+ values.push({ token: hash([thread.id, "status", thread.statusAt, thread.status]), at: thread.statusAt });
39
+ return values;
40
+ }
41
+ function unreadThreadCount(file, consumed = []) {
42
+ const seen = new Set(consumed);
43
+ return (file?.threads ?? []).filter((thread) => {
44
+ const anchor = thread.anchor;
45
+ return anchor.ask === void 0 && anchor.choice === void 0 && anchor.submit === void 0 && humanTokens(thread).some((event) => !seen.has(event.token));
46
+ }).length;
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ humanTokens,
51
+ reviewStateKey,
52
+ unreadThreadCount
53
+ });