@datalayer/agent-runtimes 1.5.70 → 1.5.71

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 (197) hide show
  1. package/dist-embed/chunks/{DeckComponent-DAnUabRV.js → DeckComponent-Cd1sbs9L.js} +1 -1
  2. package/dist-embed/chunks/{DocumentView-BKFitqiB.js → DocumentView-ssQ835Wa.js} +1 -1
  3. package/dist-embed/chunks/{EphemeralDocument-BRzYMd8Z.js → EphemeralDocument-DNziilOG.js} +1 -1
  4. package/dist-embed/chunks/{ExcalidrawComponent-VnKcai35.js → ExcalidrawComponent-CQ4BeoQt.js} +1 -1
  5. package/dist-embed/chunks/{ExcalidrawModal-DrntFjbe.js → ExcalidrawModal-8W-b1OmA.js} +1 -1
  6. package/dist-embed/chunks/{JupyterLexicalExtension-BBivQZvX.js → JupyterLexicalExtension-BLYM-DTn.js} +4 -4
  7. package/dist-embed/chunks/{YouTubePlugin-C209681s.js → YouTubePlugin-BgZG6fCA.js} +1 -1
  8. package/dist-embed/chunks/abnfDiagram-VCTEODGH-BdOOK2nG.js +1 -0
  9. package/dist-embed/chunks/abnfDiagram-VCTEODGH-CHerLzZ0.js +1 -0
  10. package/dist-embed/chunks/{ar-SA-G6X2FPQ2-Dypu3IcK.js → ar-SA-G6X2FPQ2-Bcy9b6jn.js} +1 -1
  11. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-C22xzf-o.js → architectureDiagram-5GKGNRK7-C8jjE2mY.js} +2 -2
  12. package/dist-embed/chunks/architectureDiagram-5GKGNRK7-GukKr_g1.js +36 -0
  13. package/dist-embed/chunks/{az-AZ-76LH7QW2-D8CzfKb1.js → az-AZ-76LH7QW2-Bzy5rt95.js} +1 -1
  14. package/dist-embed/chunks/{bg-BG-XCXSNQG7-_NVFEM1_.js → bg-BG-XCXSNQG7-C3mQkAoD.js} +1 -1
  15. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-CHicgYkf.js → blockDiagram-I7D4REHJ-DH6ta7S_.js} +2 -2
  16. package/dist-embed/chunks/blockDiagram-I7D4REHJ-edfypROz.js +129 -0
  17. package/dist-embed/chunks/{bn-BD-2XOGV67Q-DMgdNi-k.js → bn-BD-2XOGV67Q-DHwDUFeg.js} +1 -1
  18. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-auJZQjpw.js → c4Diagram-7LVT6UL2-B6NHHf7w.js} +2 -2
  19. package/dist-embed/chunks/c4Diagram-7LVT6UL2-BD3Ld97M.js +38 -0
  20. package/dist-embed/chunks/{ca-ES-6MX7JW3Y-DpOQhzr4.js → ca-ES-6MX7JW3Y-CWMZCfjI.js} +1 -1
  21. package/dist-embed/chunks/{chunk-2Q5K7J3B-DpFWUcsT.js → chunk-2Q5K7J3B-9xCosPaH.js} +1 -1
  22. package/dist-embed/chunks/chunk-2Q5K7J3B-ZWnuQ6M2.js +1 -0
  23. package/dist-embed/chunks/{chunk-5VM5RSS4-CaowF8Al.js → chunk-5VM5RSS4-7q2jPq-I.js} +1 -1
  24. package/dist-embed/chunks/chunk-5VM5RSS4-C2EZUNrH.js +15 -0
  25. package/dist-embed/chunks/{chunk-F27PBJKO-D7PuEggc.js → chunk-F27PBJKO-hasZYXJc.js} +1 -1
  26. package/dist-embed/chunks/chunk-F27PBJKO-iAw_9Xtd.js +1 -0
  27. package/dist-embed/chunks/{chunk-IMKFNOWR-jZNuNkCa.js → chunk-IMKFNOWR-CR2LIHPi.js} +1 -1
  28. package/dist-embed/chunks/chunk-IMKFNOWR-CU661Hle.js +231 -0
  29. package/dist-embed/chunks/{chunk-JWPE2WC7-BIShIUcJ.js → chunk-JWPE2WC7-B40RAhYQ.js} +1 -1
  30. package/dist-embed/chunks/chunk-JWPE2WC7-D4pNFsZF.js +1 -0
  31. package/dist-embed/chunks/{chunk-POPQ4Y6H-DG5Q2OKT.js → chunk-POPQ4Y6H-CNc-_UkX.js} +1 -1
  32. package/dist-embed/chunks/chunk-POPQ4Y6H-PC7NS4ab.js +1 -0
  33. package/dist-embed/chunks/{chunk-SVP7TREG-ERRaAh-x.js → chunk-SVP7TREG-B-LR0OEY.js} +1 -1
  34. package/dist-embed/chunks/chunk-SVP7TREG-BgVpHjUA.js +88 -0
  35. package/dist-embed/chunks/{chunk-TICWLB2K-B91fA6Jd.js → chunk-TICWLB2K-BKUWUi4x.js} +1 -1
  36. package/dist-embed/chunks/chunk-TICWLB2K-D0mlrZUj.js +206 -0
  37. package/dist-embed/chunks/{chunk-XXDRQBXY-BAy0lBJk.js → chunk-XXDRQBXY-CFD4Agg8.js} +1 -1
  38. package/dist-embed/chunks/chunk-XXDRQBXY-DF8wFPCi.js +1 -0
  39. package/dist-embed/chunks/classDiagram-ZZMXUADV-B2RPE1Bl.js +1 -0
  40. package/dist-embed/chunks/classDiagram-ZZMXUADV-BSdRgwsr.js +1 -0
  41. package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-B2RPE1Bl.js +1 -0
  42. package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-BSdRgwsr.js +1 -0
  43. package/dist-embed/chunks/cose-bilkent-JH36ORCC-CGF9N16A.js +1 -0
  44. package/dist-embed/chunks/cose-bilkent-JH36ORCC-D976z1sp.js +1 -0
  45. package/dist-embed/chunks/{cs-CZ-2BRQDIVT-Fr-SpqHD.js → cs-CZ-2BRQDIVT-B_pe2qj9.js} +1 -1
  46. package/dist-embed/chunks/cynefin-OW5HDTMX-BBLugbYz.js +166 -0
  47. package/dist-embed/chunks/cynefinDiagram-5FMLGOSQ-Cil4cm66.js +62 -0
  48. package/dist-embed/chunks/cynefinDiagram-5FMLGOSQ-D7ioXav_.js +62 -0
  49. package/dist-embed/chunks/{da-DK-5WZEPLOC-DO_sAXvt.js → da-DK-5WZEPLOC-CGWCNcJj.js} +1 -1
  50. package/dist-embed/chunks/{dagre-GXQ25YYZ-BgrGEY09.js → dagre-GXQ25YYZ-Cp78_L9l.js} +2 -2
  51. package/dist-embed/chunks/dagre-GXQ25YYZ-DauBFK-x.js +4 -0
  52. package/dist-embed/chunks/{de-DE-XR44H4JA-4JnXB_iM.js → de-DE-XR44H4JA-DTdq2h_G.js} +1 -1
  53. package/dist-embed/chunks/{diagram-S7CK7UJ4-hQvZziAN.js → diagram-S7CK7UJ4-LsSU5PzE.js} +2 -2
  54. package/dist-embed/chunks/diagram-S7CK7UJ4-cLOCifii.js +30 -0
  55. package/dist-embed/chunks/diagram-UQ7AKVKN-BK4qe_eB.js +41 -0
  56. package/dist-embed/chunks/diagram-UQ7AKVKN-CoIPlGw-.js +41 -0
  57. package/dist-embed/chunks/diagram-VSXAHHWV-CIhWkrRX.js +3 -0
  58. package/dist-embed/chunks/{diagram-VSXAHHWV-WVuzjdxU.js → diagram-VSXAHHWV-DWWQ-Ga9.js} +2 -2
  59. package/dist-embed/chunks/diagram-VX7I27RA-43SwkivD.js +24 -0
  60. package/dist-embed/chunks/diagram-VX7I27RA-CQM8aGRO.js +24 -0
  61. package/dist-embed/chunks/diagram-Z3DM3KII-Da75Rc5Q.js +24 -0
  62. package/dist-embed/chunks/diagram-Z3DM3KII-DrILxydN.js +24 -0
  63. package/dist-embed/chunks/ebnfDiagram-PWID7BFC-CwBVaHP2.js +1 -0
  64. package/dist-embed/chunks/ebnfDiagram-PWID7BFC-Klx1dPe6.js +1 -0
  65. package/dist-embed/chunks/{el-GR-BZB4AONW-MydAlwHl.js → el-GR-BZB4AONW-qdInZt55.js} +1 -1
  66. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-zwXEFcAp.js → erDiagram-RLTQ6QDP-6YXMuidI.js} +2 -2
  67. package/dist-embed/chunks/erDiagram-RLTQ6QDP-DmlOR1VA.js +99 -0
  68. package/dist-embed/chunks/{es-ES-U4NZUMDT-rQmnr_uu.js → es-ES-U4NZUMDT-CbVgghD5.js} +1 -1
  69. package/dist-embed/chunks/{eu-ES-A7QVB2H4-j5Hf8ngk.js → eu-ES-A7QVB2H4-Cfyi4-QV.js} +1 -1
  70. package/dist-embed/chunks/{fa-IR-HGAKTJCU-DMJRRSBp.js → fa-IR-HGAKTJCU-Bpz9Yk2c.js} +1 -1
  71. package/dist-embed/chunks/{fi-FI-Z5N7JZ37-BFLC0BFd.js → fi-FI-Z5N7JZ37-CnNP_ASI.js} +1 -1
  72. package/dist-embed/chunks/{flowDiagram-HODETNUW-BrbR1EkW.js → flowDiagram-HODETNUW-DpJLPDJS.js} +1 -1
  73. package/dist-embed/chunks/flowDiagram-HODETNUW-_PPo6xx4.js +168 -0
  74. package/dist-embed/chunks/{fr-FR-RHASNOE6-CxjhSJC1.js → fr-FR-RHASNOE6-CXIU81zC.js} +1 -1
  75. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-DfJDZVnm.js → ganttDiagram-EL5Y4UJY-B3ddBLm-.js} +2 -2
  76. package/dist-embed/chunks/ganttDiagram-EL5Y4UJY-DnJUq63S.js +292 -0
  77. package/dist-embed/chunks/gitGraphDiagram-WWUBYQGX-CKVR9Ajq.js +106 -0
  78. package/dist-embed/chunks/gitGraphDiagram-WWUBYQGX-u7eHxrMk.js +106 -0
  79. package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BuuMpTaX.js → gl-ES-HMX3MZ6V-Do1RdVfG.js} +1 -1
  80. package/dist-embed/chunks/{he-IL-6SHJWFNN-Cv3Nrcgu.js → he-IL-6SHJWFNN-NcTscmv6.js} +1 -1
  81. package/dist-embed/chunks/{hi-IN-IWLTKZ5I-Sddst60F.js → hi-IN-IWLTKZ5I-CyNpoQ12.js} +1 -1
  82. package/dist-embed/chunks/{hu-HU-A5ZG7DT2-ehrXVpD0.js → hu-HU-A5ZG7DT2-Bzge2Fdz.js} +1 -1
  83. package/dist-embed/chunks/{id-ID-SAP4L64H-Gfb1UYxZ.js → id-ID-SAP4L64H-DaNcoDhl.js} +1 -1
  84. package/dist-embed/chunks/{index-BaBNw6X5.js → index-BQdtKMKk.js} +56 -61
  85. package/dist-embed/chunks/index-CJys1M3A.js +6 -0
  86. package/dist-embed/chunks/{index-hxIHgkzg.js → index-CLdL3h_Z.js} +1 -1
  87. package/dist-embed/chunks/{index-DmpLE1d4.js → index-Cx_cIRez.js} +1 -1
  88. package/dist-embed/chunks/index-lOJZWhTu.js +337 -0
  89. package/dist-embed/chunks/infoDiagram-27XIBGKW-C3YByzAX.js +2 -0
  90. package/dist-embed/chunks/infoDiagram-27XIBGKW-CrHEoNfn.js +2 -0
  91. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DrEzfSK9.js → ishikawaDiagram-5VMMS53U-B87JmQRn.js} +6 -6
  92. package/dist-embed/chunks/ishikawaDiagram-5VMMS53U-DkW3YLz9.js +70 -0
  93. package/dist-embed/chunks/{it-IT-JPQ66NNP-BehLHkar.js → it-IT-JPQ66NNP-6fWP-4Pk.js} +1 -1
  94. package/dist-embed/chunks/{ja-JP-DBVTYXUO-BZvqIigI.js → ja-JP-DBVTYXUO-TOPcUfq8.js} +1 -1
  95. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-DpWKIFIN.js → journeyDiagram-3NMN7TZE-BcfZXfHF.js} +2 -2
  96. package/dist-embed/chunks/journeyDiagram-3NMN7TZE-BjO5pIr-.js +139 -0
  97. package/dist-embed/chunks/{kaa-6HZHGXH3-DgAIF6rN.js → kaa-6HZHGXH3-WPmptgZr.js} +1 -1
  98. package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-DW4thPSJ.js → kab-KAB-ZGHBKWFO-CMOAXrZA.js} +1 -1
  99. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-DxbTprYr.js → kanban-definition-UXKFOSKX-D9d45rsU.js} +2 -2
  100. package/dist-embed/chunks/kanban-definition-UXKFOSKX-DKCJ8_n0.js +89 -0
  101. package/dist-embed/chunks/{kk-KZ-P5N5QNE5-CCy_nSJ7.js → kk-KZ-P5N5QNE5-B6ezOPzr.js} +1 -1
  102. package/dist-embed/chunks/{km-KH-HSX4SM5Z-kpXyoxjS.js → km-KH-HSX4SM5Z-C84QUPbc.js} +1 -1
  103. package/dist-embed/chunks/{ko-KR-MTYHY66A-CFm6WtQG.js → ko-KR-MTYHY66A-cuBEuTL_.js} +1 -1
  104. package/dist-embed/chunks/{ku-TR-6OUDTVRD-CKF85mOv.js → ku-TR-6OUDTVRD-B9KdlCAR.js} +1 -1
  105. package/dist-embed/chunks/{layout-DYytgC9r.js → layout-C6Twj1mW.js} +1 -1
  106. package/dist-embed/chunks/layout-Do3wJC1j.js +1 -0
  107. package/dist-embed/chunks/{lt-LT-XHIRWOB4-CO9Bo5qJ.js → lt-LT-XHIRWOB4-B39JwBGi.js} +1 -1
  108. package/dist-embed/chunks/{lv-LV-5QDEKY6T-CvZszc5p.js → lv-LV-5QDEKY6T-8WReOaa7.js} +1 -1
  109. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-_1SBIPav.js → mindmap-definition-YA3MSWOX-5wZuXgB8.js} +2 -2
  110. package/dist-embed/chunks/mindmap-definition-YA3MSWOX-BURkGTKI.js +96 -0
  111. package/dist-embed/chunks/{mr-IN-CRQNXWMA-Cio_dB9M.js → mr-IN-CRQNXWMA-DUaS8VWx.js} +1 -1
  112. package/dist-embed/chunks/{my-MM-5M5IBNSE-Z0RQ5Vbz.js → my-MM-5M5IBNSE-BdJYwQXg.js} +1 -1
  113. package/dist-embed/chunks/{nb-NO-T6EIAALU-BEQ0YP9J.js → nb-NO-T6EIAALU-C_p5yu1z.js} +1 -1
  114. package/dist-embed/chunks/{nl-NL-IS3SIHDZ-YtkJnS_J.js → nl-NL-IS3SIHDZ-DM5qgcCp.js} +1 -1
  115. package/dist-embed/chunks/{nn-NO-6E72VCQL-C1j2s3qO.js → nn-NO-6E72VCQL-BuX1DqI5.js} +1 -1
  116. package/dist-embed/chunks/{oc-FR-POXYY2M6-CinnjccW.js → oc-FR-POXYY2M6-BAWljcaf.js} +1 -1
  117. package/dist-embed/chunks/{pa-IN-N4M65BXN-c_6OtC6L.js → pa-IN-N4M65BXN-2iyq8qxX.js} +1 -1
  118. package/dist-embed/chunks/pegDiagram-XKGWAZYB-BjrOX_Ki.js +1 -0
  119. package/dist-embed/chunks/pegDiagram-XKGWAZYB-CyuSADYr.js +1 -0
  120. package/dist-embed/chunks/{percentages-BXMCSKIN-VqMxh8LK.js → percentages-BXMCSKIN-C9b5dzpq.js} +5 -5
  121. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-EvMxJb2S.js → pieDiagram-E7YTZNPT-GvxNnk0x.js} +2 -2
  122. package/dist-embed/chunks/pieDiagram-E7YTZNPT-ni9UMEzV.js +39 -0
  123. package/dist-embed/chunks/{pl-PL-T2D74RX3-Cn_9xZgM.js → pl-PL-T2D74RX3-C6nLJHhB.js} +1 -1
  124. package/dist-embed/chunks/{pt-BR-5N22H2LF-Da6r-Pp1.js → pt-BR-5N22H2LF-B1adz-DU.js} +1 -1
  125. package/dist-embed/chunks/{pt-PT-UZXXM6DQ-D6lhcuX9.js → pt-PT-UZXXM6DQ-BCZpI4LV.js} +1 -1
  126. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-rFaTvNlk.js → quadrantDiagram-AXDQQJYC-CufBEqrC.js} +4 -4
  127. package/dist-embed/chunks/quadrantDiagram-AXDQQJYC-Yg2WGHWh.js +7 -0
  128. package/dist-embed/chunks/railroadDiagram-O6MQD6OU-6tStysfX.js +1 -0
  129. package/dist-embed/chunks/railroadDiagram-O6MQD6OU-Df7m1mT4.js +1 -0
  130. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-DHLQ_9Lw.js → requirementDiagram-BXWQKSXE-0AqPqv7a.js} +2 -2
  131. package/dist-embed/chunks/requirementDiagram-BXWQKSXE-CmXBYo40.js +84 -0
  132. package/dist-embed/chunks/{ro-RO-JPDTUUEW-BFss9e8X.js → ro-RO-JPDTUUEW-BPM7y_F2.js} +1 -1
  133. package/dist-embed/chunks/{ru-RU-B4JR7IUQ-DIruW2gS.js → ru-RU-B4JR7IUQ-UViKo8dy.js} +1 -1
  134. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-Nk71fRsK.js → sankeyDiagram-P5KCCOFB-CqcWOAyy.js} +2 -2
  135. package/dist-embed/chunks/sankeyDiagram-P5KCCOFB-rQsp_j9w.js +40 -0
  136. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-Dm3QM01Z.js → sequenceDiagram-WJ2MYXX4-Br4F1sd7.js} +2 -2
  137. package/dist-embed/chunks/sequenceDiagram-WJ2MYXX4-GMFparx1.js +162 -0
  138. package/dist-embed/chunks/{si-LK-N5RQ5JYF-Dom-aTTE.js → si-LK-N5RQ5JYF-D7TIYEDr.js} +1 -1
  139. package/dist-embed/chunks/sizeCapture-INFHLROL-8qFOiWrK.js +1 -0
  140. package/dist-embed/chunks/sizeCapture-INFHLROL-C_M5Nl06.js +1 -0
  141. package/dist-embed/chunks/{sk-SK-C5VTKIMK-CLRU9TNq.js → sk-SK-C5VTKIMK-CQedcNlJ.js} +1 -1
  142. package/dist-embed/chunks/{sl-SI-NN7IZMDC-BKLCNVXA.js → sl-SI-NN7IZMDC-BX1W51zJ.js} +1 -1
  143. package/dist-embed/chunks/stateDiagram-D77RDMKH-CWrs6KzY.js +1 -0
  144. package/dist-embed/chunks/stateDiagram-D77RDMKH-XK76naDS.js +1 -0
  145. package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-D3ZN_IoS.js +1 -0
  146. package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-lpluVNfO.js +1 -0
  147. package/dist-embed/chunks/{subset-shared.chunk-zIH7OLsP.js → subset-shared.chunk-PVguOYyR.js} +1 -1
  148. package/dist-embed/chunks/{subset-worker.chunk-b9j7PKPe.js → subset-worker.chunk-iWGyr_E5.js} +1 -1
  149. package/dist-embed/chunks/{sv-SE-XGPEYMSR-D0UV0HV7.js → sv-SE-XGPEYMSR-DI7YcqUR.js} +1 -1
  150. package/dist-embed/chunks/swimlanes-42K2YHIH-B9qJ99nD.js +1 -0
  151. package/dist-embed/chunks/swimlanes-42K2YHIH-Ca0PhRmf.js +1 -0
  152. package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-BEQKTD21.js +8 -0
  153. package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-D-2e4UFJ.js +8 -0
  154. package/dist-embed/chunks/{ta-IN-2NMHFXQM-C-EJ3jDE.js → ta-IN-2NMHFXQM-OZH5xroe.js} +1 -1
  155. package/dist-embed/chunks/{th-TH-HPSO5L25-CfQh62Qa.js → th-TH-HPSO5L25-gAuWhBpT.js} +1 -1
  156. package/dist-embed/chunks/{timeline-definition-24CTP7MA-CKtubk73.js → timeline-definition-24CTP7MA-B8lxEouP.js} +2 -2
  157. package/dist-embed/chunks/timeline-definition-24CTP7MA-CtZZro9U.js +120 -0
  158. package/dist-embed/chunks/{tr-TR-DEFEU3FU-Lz7Ka2Zr.js → tr-TR-DEFEU3FU-DQ0SDuS6.js} +1 -1
  159. package/dist-embed/chunks/{uk-UA-QMV73CPH-DU0hsGUJ.js → uk-UA-QMV73CPH-7J4e2jng.js} +1 -1
  160. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-Bq0xMhnH.js → vennDiagram-4TSXK5OY-Ca7szyFH.js} +2 -2
  161. package/dist-embed/chunks/vennDiagram-4TSXK5OY-zaNGkt8b.js +28 -0
  162. package/dist-embed/chunks/{vi-VN-M7AON7JQ-CDvS0SiL.js → vi-VN-M7AON7JQ-dNpZ5DZ5.js} +1 -1
  163. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-DL5LgQWr.js → wardleyDiagram-VM6X3IG4-D_Q6gtp2.js} +2 -2
  164. package/dist-embed/chunks/wardleyDiagram-VM6X3IG4-Dh0UOrRp.js +78 -0
  165. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-BXkM4beH.js → xychartDiagram-S5SC5T6Z-4OhI4XQl.js} +2 -2
  166. package/dist-embed/chunks/xychartDiagram-S5SC5T6Z-D_TaZM0k.js +7 -0
  167. package/dist-embed/chunks/{zh-CN-LNUGB5OW-CWE-bF0d.js → zh-CN-LNUGB5OW-CZSp2g8b.js} +1 -1
  168. package/dist-embed/chunks/{zh-HK-E62DVLB3-pEfL2bds.js → zh-HK-E62DVLB3-DUqVOyB_.js} +1 -1
  169. package/dist-embed/chunks/{zh-TW-RAJ6MFWO-Cp6UFUuD.js → zh-TW-RAJ6MFWO-U-TalxxN.js} +1 -1
  170. package/dist-embed/datalayer-app-main.js +3 -3
  171. package/lib/portable/attention.d.ts +204 -0
  172. package/lib/portable/attention.js +352 -0
  173. package/lib/portable/localApprovals.d.ts +72 -0
  174. package/lib/portable/localApprovals.js +125 -0
  175. package/lib/portable/localRuntime.d.ts +365 -0
  176. package/lib/portable/localRuntime.js +555 -0
  177. package/lib/portable/sessionList.d.ts +426 -0
  178. package/lib/portable/sessionList.js +618 -0
  179. package/package.json +1 -1
  180. package/dist-embed/chunks/abnfDiagram-VCTEODGH-m7LJLYga.js +0 -1
  181. package/dist-embed/chunks/classDiagram-ZZMXUADV-CGdcKCOI.js +0 -1
  182. package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-CGdcKCOI.js +0 -1
  183. package/dist-embed/chunks/cose-bilkent-JH36ORCC-BsK2pWDL.js +0 -1
  184. package/dist-embed/chunks/cynefinDiagram-5FMLGOSQ-vmheD_S2.js +0 -62
  185. package/dist-embed/chunks/diagram-UQ7AKVKN-BFkOO3Wu.js +0 -41
  186. package/dist-embed/chunks/diagram-VX7I27RA-_LUOsaBb.js +0 -24
  187. package/dist-embed/chunks/diagram-Z3DM3KII-CY856Sry.js +0 -24
  188. package/dist-embed/chunks/ebnfDiagram-PWID7BFC-kqD9RLAA.js +0 -1
  189. package/dist-embed/chunks/gitGraphDiagram-WWUBYQGX-BujqTwbf.js +0 -106
  190. package/dist-embed/chunks/infoDiagram-27XIBGKW-C18Zz25F.js +0 -2
  191. package/dist-embed/chunks/pegDiagram-XKGWAZYB-BBVcHZ8T.js +0 -1
  192. package/dist-embed/chunks/railroadDiagram-O6MQD6OU-bR7xXZGS.js +0 -1
  193. package/dist-embed/chunks/sizeCapture-INFHLROL-BW7unDBA.js +0 -1
  194. package/dist-embed/chunks/stateDiagram-D77RDMKH-mLSMGpPQ.js +0 -1
  195. package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-C6TftAzE.js +0 -1
  196. package/dist-embed/chunks/swimlanes-42K2YHIH-BQTDK2Ta.js +0 -1
  197. package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-BV8Vb5g2.js +0 -8
@@ -0,0 +1,618 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The person's sessions in one list (VSCODE VS-04, VS-12; DESKTOP DK-09,
7
+ * DK-25): on Datalayer (the record, through ai-agents) and on this machine
8
+ * (a local runtime's `GET /api/v1/apps/sessions`, which lists every local
9
+ * session since the file store is one) — grouped by place then application,
10
+ * each row as `loop sessions list` prints it (title, state with the turn
11
+ * phase, agent and harness, turns, lineage, *not held*), filtered by
12
+ * application, state and title, the archived hidden; the person's team runs
13
+ * with their seats.
14
+ *
15
+ * The rule of two holders (DESKTOP D-12): a session `open` on this machine
16
+ * and held by none of the host's own runtimes is open in another host (VS
17
+ * Code, a terminal) and is not resumed from here until it is `paused`.
18
+ *
19
+ * Pure: no host API, no network. The host fetches and draws; the verbs are
20
+ * the chat's (`loop.session.action`).
21
+ *
22
+ * @module portable/sessionList
23
+ */
24
+ import { sessionAgentSaid, sessionLineageSaid, sessionRowOf, sessionStateSaid, } from './activity';
25
+ /**
26
+ * One key per place.
27
+ *
28
+ * @param place - The place.
29
+ *
30
+ * @returns `datalayer`, or `local:<folder>`.
31
+ */
32
+ export function placeKey(place) {
33
+ return place.kind === 'datalayer' ? 'datalayer' : `local:${place.folder}`;
34
+ }
35
+ /**
36
+ * The place as a list labels it.
37
+ *
38
+ * @param place - The place.
39
+ *
40
+ * @returns *On Datalayer*, or *On this machine — <folder>*.
41
+ */
42
+ export function placeLabel(place) {
43
+ return place.kind === 'datalayer'
44
+ ? 'On Datalayer'
45
+ : `On this machine — ${place.folderName}`;
46
+ }
47
+ /**
48
+ * Where a session is listed on Datalayer: the record, through ai-agents, for its opener.
49
+ *
50
+ * @param aiAgentsUrl - ai-agents' base URL.
51
+ * @param openedBy - The person's uid.
52
+ *
53
+ * @returns The URL.
54
+ */
55
+ export function datalayerSessionsUrl(aiAgentsUrl, openedBy) {
56
+ return `${aiAgentsUrl.replace(/\/$/, '')}/api/ai-agents/v1/apps/sessions?opened_by=${encodeURIComponent(openedBy)}`;
57
+ }
58
+ /** The session API's list route on a runtime. */
59
+ export const LOCAL_SESSIONS_PATH = '/api/v1/apps/sessions';
60
+ function said(value) {
61
+ return typeof value === 'string' ? value : '';
62
+ }
63
+ /**
64
+ * The application of a raw session row: ai-agents' rows carry `app_uid`;
65
+ * a runtime's rows carry `app: {id, name}` and `instance.app_uid`.
66
+ *
67
+ * @param raw - The row as answered.
68
+ *
69
+ * @returns The application's key and name.
70
+ */
71
+ export function applicationOf(raw) {
72
+ const app = raw.app && typeof raw.app === 'object'
73
+ ? raw.app
74
+ : {};
75
+ const instance = raw.instance && typeof raw.instance === 'object'
76
+ ? raw.instance
77
+ : {};
78
+ const uid = said(raw.app_uid) || said(instance.app_uid);
79
+ const id = said(app.id) || (typeof raw.app === 'string' ? raw.app : '');
80
+ return {
81
+ key: uid || id,
82
+ name: said(app.name) || id || uid || 'An application',
83
+ };
84
+ }
85
+ /**
86
+ * The folder a raw row names for its harness session: `workspace` on the
87
+ * row (the list's rows since 1.5.71), else `harness_session.workspace`
88
+ * (`GET /sessions/{uid}` on a runtime that holds it).
89
+ *
90
+ * @param raw - The row as answered.
91
+ *
92
+ * @returns The folder, or empty.
93
+ */
94
+ export function workspaceOf(raw) {
95
+ const own = said(raw.workspace);
96
+ if (own) {
97
+ return own;
98
+ }
99
+ const harness = raw.harness_session && typeof raw.harness_session === 'object'
100
+ ? raw.harness_session
101
+ : {};
102
+ return said(harness.workspace);
103
+ }
104
+ /**
105
+ * One listed session from a raw row: refused by `sessionRowOf` when it is
106
+ * malformed, never defaulted.
107
+ *
108
+ * @param raw - The row as answered.
109
+ *
110
+ * @returns The session with its application and folder.
111
+ */
112
+ export function listedSessionOf(raw) {
113
+ return {
114
+ row: sessionRowOf(raw),
115
+ application: applicationOf(raw),
116
+ workspace: workspaceOf(raw),
117
+ };
118
+ }
119
+ /**
120
+ * The sessions a list route answered (`{sessions, has_more}`), each with its
121
+ * application; a row whose state is none of the three is refused by
122
+ * `sessionRowOf`, never defaulted.
123
+ *
124
+ * @param body - The route's answer.
125
+ *
126
+ * @returns The sessions, in the route's order.
127
+ *
128
+ * @throws Error when the answer lists no sessions, or a row is malformed.
129
+ */
130
+ export function listedSessionsOf(body) {
131
+ const sessions = body && typeof body === 'object'
132
+ ? body.sessions
133
+ : undefined;
134
+ if (!Array.isArray(sessions)) {
135
+ throw new Error('The answer for the sessions names no sessions.');
136
+ }
137
+ return sessions.map(raw => listedSessionOf(raw));
138
+ }
139
+ /** Nothing narrowed. */
140
+ export const NO_FILTER = {
141
+ app: '',
142
+ state: '',
143
+ title: '',
144
+ place: '',
145
+ };
146
+ /**
147
+ * The sessions the filter keeps: the archived never, then by application,
148
+ * state and title.
149
+ *
150
+ * @param sessions - The sessions listed.
151
+ * @param filter - What to keep.
152
+ *
153
+ * @returns The sessions kept, in order.
154
+ */
155
+ export function filterSessions(sessions, filter) {
156
+ const app = filter.app.trim().toLowerCase();
157
+ const title = filter.title.trim().toLowerCase();
158
+ return sessions.filter(({ row, application }) => {
159
+ if (row.archived) {
160
+ return false;
161
+ }
162
+ if (filter.state && row.state !== filter.state) {
163
+ return false;
164
+ }
165
+ if (app &&
166
+ !application.key.toLowerCase().includes(app) &&
167
+ !application.name.toLowerCase().includes(app)) {
168
+ return false;
169
+ }
170
+ if (title && !row.title.toLowerCase().includes(title)) {
171
+ return false;
172
+ }
173
+ return true;
174
+ });
175
+ }
176
+ /**
177
+ * The filter in words, for a view's description.
178
+ *
179
+ * @param filter - The filter.
180
+ *
181
+ * @returns *application: x · state: open · title: y*, or empty when nothing is narrowed.
182
+ */
183
+ export function filterSaid(filter) {
184
+ return [
185
+ filter.place ? `place: ${filter.place}` : '',
186
+ filter.app.trim() ? `application: ${filter.app.trim()}` : '',
187
+ filter.state ? `state: ${filter.state}` : '',
188
+ filter.title.trim() ? `title: ${filter.title.trim()}` : '',
189
+ ]
190
+ .filter(Boolean)
191
+ .join(' · ');
192
+ }
193
+ /**
194
+ * The sessions grouped by application, in the order the applications first appear.
195
+ *
196
+ * @param sessions - The sessions kept.
197
+ *
198
+ * @returns The groups.
199
+ */
200
+ export function groupByApplication(sessions) {
201
+ const groups = new Map();
202
+ for (const session of sessions) {
203
+ const key = session.application.key || session.application.name;
204
+ let group = groups.get(key);
205
+ if (!group) {
206
+ group = { application: session.application, sessions: [] };
207
+ groups.set(key, group);
208
+ }
209
+ group.sessions.push(session);
210
+ }
211
+ return [...groups.values()];
212
+ }
213
+ /**
214
+ * A row's label: its title, else its uid.
215
+ *
216
+ * @param row - The session.
217
+ *
218
+ * @returns The label.
219
+ */
220
+ export function rowLabel(row) {
221
+ return row.title || row.uid;
222
+ }
223
+ /**
224
+ * A row's description, as `loop sessions list` prints it: the state with the
225
+ * turn phase, the agent with its harness, the turns, the lineage, *not held*
226
+ * for an open session whose runtime is gone.
227
+ *
228
+ * @param row - The session.
229
+ *
230
+ * @returns The parts joined with ` · `.
231
+ */
232
+ export function rowDescription(row) {
233
+ const turns = `${row.turns} turn${row.turns === 1 ? '' : 's'}`;
234
+ const lineage = sessionLineageSaid(row);
235
+ return [
236
+ sessionStateSaid(row),
237
+ sessionAgentSaid(row),
238
+ turns,
239
+ lineage ? lineage.charAt(0).toLowerCase() + lineage.slice(1) : '',
240
+ row.state === 'open' && row.held === false ? 'not held' : '',
241
+ ]
242
+ .filter(Boolean)
243
+ .join(' · ');
244
+ }
245
+ /**
246
+ * The icon of a row's state, as a codicon id: the turn phase as its icon when open.
247
+ *
248
+ * @param row - The session.
249
+ *
250
+ * @returns A codicon id.
251
+ */
252
+ export function stateIconOf(row) {
253
+ if (row.state === 'ended') {
254
+ return 'circle-slash';
255
+ }
256
+ if (row.state === 'paused') {
257
+ return 'debug-pause';
258
+ }
259
+ if (row.turn === 'running') {
260
+ return 'sync~spin';
261
+ }
262
+ if (row.turn === 'waiting') {
263
+ return 'question';
264
+ }
265
+ return 'circle-filled';
266
+ }
267
+ /**
268
+ * The context value a host's menus match: `session-<state>-<place kind>`.
269
+ *
270
+ * @param row - The session.
271
+ * @param place - Its place.
272
+ *
273
+ * @returns E.g. `session-paused-local`.
274
+ */
275
+ export function contextValueOf(row, place) {
276
+ return `session-${row.state}-${place.kind}`;
277
+ }
278
+ /**
279
+ * The one row a place that did not answer shows.
280
+ *
281
+ * @param place - The place.
282
+ * @param message - What went wrong, the server's words.
283
+ *
284
+ * @returns The sentence.
285
+ */
286
+ export function placeProblemSentence(place, message) {
287
+ return place.kind === 'datalayer'
288
+ ? `Datalayer did not answer for your sessions: ${message}`
289
+ : `The local runtime of ${place.folderName} did not answer: ${message}`;
290
+ }
291
+ /** The sentence under a place with no session. */
292
+ export const NOTHING_LISTED = 'No session yet.';
293
+ /** The sentence under *On Datalayer* while signed out. */
294
+ export const SIGNED_OUT_SENTENCE = 'Sign in to Datalayer to see your sessions there.';
295
+ /**
296
+ * The sentence under *On this machine* while no local runtime runs.
297
+ *
298
+ * @param howToStart - How the host starts one: *Datalayer: Start the local runtime*, *File → Work in a folder…*.
299
+ *
300
+ * @returns The sentence.
301
+ */
302
+ export function noLocalRuntimeSentence(howToStart) {
303
+ return `No local runtime is running: start a coding agent in a folder, or ${howToStart}.`;
304
+ }
305
+ /** The sentence under *On this machine* while no folder was ever worked in (DK-09). */
306
+ export const NO_LOCAL_SESSION_YET = 'No session on this machine yet — File → Work in a folder…';
307
+ /**
308
+ * Whether a row listed on this machine is held elsewhere: `open`, and held
309
+ * by none of the host's runtimes — the local runtime that listed it says
310
+ * `held` for its own and `false` for every other runtime's.
311
+ *
312
+ * @param row - The session.
313
+ * @param place - Its place.
314
+ *
315
+ * @returns Whether another host holds it.
316
+ */
317
+ export function heldElsewhere(row, place) {
318
+ return place.kind === 'local' && row.state === 'open' && row.held === false;
319
+ }
320
+ /**
321
+ * The two places merged into one list: each place's sessions grouped by
322
+ * application (the archived hidden, the filter applied), the same uid
323
+ * listed once per place, a place that did not answer one note, a place
324
+ * with nothing one note.
325
+ *
326
+ * @param places - What each place answered, Datalayer first.
327
+ * @param filter - What to keep.
328
+ *
329
+ * @returns The places in order, each with its groups or its note.
330
+ */
331
+ export function mergePlaces(places, filter = NO_FILTER) {
332
+ return places
333
+ .filter(answered => !filter.place || answered.place.kind === filter.place)
334
+ .map(answered => {
335
+ if (answered.problem !== undefined) {
336
+ return {
337
+ place: answered.place,
338
+ groups: [],
339
+ note: placeProblemSentence(answered.place, answered.problem),
340
+ };
341
+ }
342
+ const seen = new Set();
343
+ const entries = [];
344
+ for (const listed of answered.sessions) {
345
+ if (seen.has(listed.row.uid)) {
346
+ continue;
347
+ }
348
+ seen.add(listed.row.uid);
349
+ entries.push({
350
+ ...listed,
351
+ place: answered.place,
352
+ elsewhere: heldElsewhere(listed.row, answered.place),
353
+ });
354
+ }
355
+ const kept = filterSessions(entries, filter);
356
+ return {
357
+ place: answered.place,
358
+ groups: groupByApplication(kept),
359
+ note: kept.length === 0 ? NOTHING_LISTED : '',
360
+ };
361
+ });
362
+ }
363
+ /**
364
+ * Where a session is, in words: *on Datalayer*, *on this machine · <folder>*,
365
+ * or *on this machine · folder unknown* when the row names none (DK-26).
366
+ *
367
+ * @param entry - The session with its place.
368
+ *
369
+ * @returns The sentence.
370
+ */
371
+ export function placeSaid(entry) {
372
+ if (entry.place.kind === 'datalayer') {
373
+ return 'on Datalayer';
374
+ }
375
+ return `on this machine · ${entry.workspace || 'folder unknown'}`;
376
+ }
377
+ /** The sentence when a session held elsewhere is resumed from here (D-12). */
378
+ export const ELSEWHERE_SENTENCE = 'This session is open in VS Code or a terminal: pause it there to resume it here.';
379
+ /**
380
+ * Why a session cannot be resumed from here, or null when it can: an
381
+ * `open` session held elsewhere waits until it is `paused`; an `ended`
382
+ * one is over; one `open` and held here is already in front.
383
+ *
384
+ * @param entry - The session with its place.
385
+ *
386
+ * @returns The sentence, or null.
387
+ */
388
+ export function resumeRefusal(entry) {
389
+ if (entry.elsewhere) {
390
+ return ELSEWHERE_SENTENCE;
391
+ }
392
+ if (entry.row.state === 'ended') {
393
+ return `${rowLabel(entry.row)} has ended: clone it from a turn to go on from there.`;
394
+ }
395
+ return null;
396
+ }
397
+ /**
398
+ * An entry's description: the row's, then where it is, then *open in VS
399
+ * Code or a terminal* when it is held elsewhere.
400
+ *
401
+ * @param entry - The session with its place.
402
+ *
403
+ * @returns The parts joined with ` · `.
404
+ */
405
+ export function entryDescription(entry) {
406
+ return [
407
+ rowDescription(entry.row),
408
+ placeSaid(entry),
409
+ entry.elsewhere ? 'open in VS Code or a terminal' : '',
410
+ ]
411
+ .filter(Boolean)
412
+ .join(' · ');
413
+ }
414
+ /** A seat's agent id names its team: `team:<team>/<seat>`. */
415
+ export const TEAM_PREFIX = 'team:';
416
+ const OPEN_WORDS = new Set([
417
+ 'created',
418
+ 'assigned',
419
+ 'running',
420
+ 'waiting',
421
+ 'retrying',
422
+ ]);
423
+ const ENDED_WORDS = new Set(['completed', 'failed', 'cancelled', 'terminated']);
424
+ /**
425
+ * A team run's state as a session's (MH-22): `created|assigned|running|waiting|retrying`
426
+ * → `open`, `paused` → `paused`, `completed|failed|cancelled|terminated` → `ended`.
427
+ *
428
+ * @param status - The execution's state word.
429
+ *
430
+ * @returns The session state.
431
+ *
432
+ * @throws Error for any other word.
433
+ */
434
+ export function teamStateOf(status) {
435
+ if (OPEN_WORDS.has(status)) {
436
+ return 'open';
437
+ }
438
+ if (status === 'paused') {
439
+ return 'paused';
440
+ }
441
+ if (ENDED_WORDS.has(status)) {
442
+ return 'ended';
443
+ }
444
+ throw new Error(`There is no execution state ${JSON.stringify(status)}: one of ${[...OPEN_WORDS, 'paused', ...ENDED_WORDS].join(', ')}.`);
445
+ }
446
+ /**
447
+ * The team of an execution, from its seat's agent id; empty for none.
448
+ *
449
+ * @param agentId - The execution's agent id.
450
+ *
451
+ * @returns The team's id.
452
+ */
453
+ export function teamOf(agentId) {
454
+ return agentId.startsWith(TEAM_PREFIX)
455
+ ? (agentId.slice(TEAM_PREFIX.length).split('/')[0] ?? '')
456
+ : '';
457
+ }
458
+ /**
459
+ * The seat of an execution, from its agent id; the id itself when it names no seat.
460
+ *
461
+ * @param agentId - The execution's agent id.
462
+ *
463
+ * @returns The seat.
464
+ */
465
+ export function seatOf(agentId) {
466
+ if (!agentId.startsWith(TEAM_PREFIX)) {
467
+ return agentId;
468
+ }
469
+ const after = agentId.slice(TEAM_PREFIX.length);
470
+ const slash = after.indexOf('/');
471
+ return slash >= 0 ? after.slice(slash + 1) : after;
472
+ }
473
+ /**
474
+ * The person's team runs from the control plane's executions
475
+ * (`GET /api/ai-agents/v1/orchestration/executions`): each root execution of
476
+ * a team, newest first, with its seats (the executions below it, by parent),
477
+ * each seat's session uid when the binding carries one.
478
+ *
479
+ * @param executions - The executions answered.
480
+ *
481
+ * @returns The runs.
482
+ *
483
+ * @throws Error for an execution without an id, or a state word that is none.
484
+ */
485
+ export function teamRunsOf(executions) {
486
+ const records = executions.map(raw => {
487
+ const record = raw;
488
+ const agent = record.agent && typeof record.agent === 'object'
489
+ ? record.agent
490
+ : {};
491
+ const objective = record.objective && typeof record.objective === 'object'
492
+ ? record.objective
493
+ : {};
494
+ const executionId = said(record.executionId);
495
+ if (!executionId) {
496
+ throw new Error('An execution of the control plane names no executionId.');
497
+ }
498
+ return {
499
+ executionId,
500
+ parentExecutionId: said(record.parentExecutionId),
501
+ rootExecutionId: said(record.rootExecutionId),
502
+ depth: typeof record.depth === 'number' ? record.depth : 0,
503
+ status: said(record.status),
504
+ statusMessage: said(record.statusMessage),
505
+ agentId: said(agent.agentId),
506
+ sessionId: said(agent.sessionId),
507
+ goal: said(objective.goal),
508
+ createdAt: said(record.createdAt),
509
+ updatedAt: said(record.updatedAt),
510
+ };
511
+ });
512
+ const roots = records.filter(record => record.depth === 0 && teamOf(record.agentId) !== '');
513
+ roots.sort((a, b) => a.createdAt < b.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0);
514
+ return roots.map(root => ({
515
+ executionId: root.executionId,
516
+ team: teamOf(root.agentId),
517
+ state: teamStateOf(root.status),
518
+ status: root.status,
519
+ goal: root.goal,
520
+ createdAt: root.createdAt,
521
+ updatedAt: root.updatedAt,
522
+ steering: root.statusMessage,
523
+ seats: records
524
+ .filter(record => record.parentExecutionId === root.executionId ||
525
+ (record.rootExecutionId === root.executionId &&
526
+ record.executionId !== root.executionId &&
527
+ record.depth === 1))
528
+ .filter((record, index, all) => all.findIndex(other => other.executionId === record.executionId) ===
529
+ index)
530
+ .map(record => ({
531
+ executionId: record.executionId,
532
+ seat: seatOf(record.agentId),
533
+ status: record.status,
534
+ sessionUid: record.sessionId,
535
+ statusMessage: record.statusMessage,
536
+ })),
537
+ }));
538
+ }
539
+ /**
540
+ * Where the control plane lists the person's executions.
541
+ *
542
+ * @param aiAgentsUrl - ai-agents' base URL.
543
+ *
544
+ * @returns The URL.
545
+ */
546
+ export function executionsUrl(aiAgentsUrl) {
547
+ return `${aiAgentsUrl.replace(/\/$/, '')}/api/ai-agents/v1/orchestration/executions`;
548
+ }
549
+ /**
550
+ * A team run's label: its team and its goal's first line.
551
+ *
552
+ * @param run - The run.
553
+ *
554
+ * @returns The label.
555
+ */
556
+ export function teamRunLabel(run) {
557
+ const goal = run.goal.split('\n')[0]?.trim() ?? '';
558
+ return goal ? `${run.team} — ${goal}` : run.team || run.executionId;
559
+ }
560
+ /**
561
+ * A team run's description: its state, its seats, its supervisor's last line.
562
+ *
563
+ * @param run - The run.
564
+ *
565
+ * @returns The parts joined with ` · `.
566
+ */
567
+ export function teamRunDescription(run) {
568
+ const state = sessionStateSaid({ state: run.state, turn: '' });
569
+ const seats = `${run.seats.length} seat${run.seats.length === 1 ? '' : 's'}`;
570
+ return [
571
+ run.status === run.state ? state : `${state} (${run.status})`,
572
+ seats,
573
+ run.steering,
574
+ ]
575
+ .filter(Boolean)
576
+ .join(' · ');
577
+ }
578
+ /**
579
+ * A seat's description: its state and whether its session can be opened.
580
+ *
581
+ * @param seat - The seat.
582
+ *
583
+ * @returns The parts joined with ` · `.
584
+ */
585
+ export function teamSeatDescription(seat) {
586
+ return [
587
+ seat.status,
588
+ seat.sessionUid ? `session ${seat.sessionUid}` : 'no session yet',
589
+ seat.statusMessage,
590
+ ]
591
+ .filter(Boolean)
592
+ .join(' · ');
593
+ }
594
+ /** The sentence under *Teams* when the person has no run. */
595
+ export const NO_TEAM_RUN = 'No team run yet.';
596
+ /** The sentence under *Teams* when the control plane did not answer. */
597
+ export function teamsProblemSentence(message) {
598
+ return `Datalayer did not answer for your team runs: ${message}`;
599
+ }
600
+ /**
601
+ * The sessions of a place as a host watches them (VS-10, DK-14): one row
602
+ * per session listed, by its uid, none in front — the chat says which is.
603
+ *
604
+ * @param listed - The place's sessions as read.
605
+ *
606
+ * @returns The rows.
607
+ */
608
+ export function attentionRowsOf(listed) {
609
+ return listed.map(({ row }) => ({
610
+ key: row.uid,
611
+ title: row.title || row.uid,
612
+ agent: row.agent,
613
+ state: row.state,
614
+ turn: row.turn,
615
+ held: row.held,
616
+ inFront: false,
617
+ }));
618
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datalayer/agent-runtimes",
3
- "version": "1.5.70",
3
+ "version": "1.5.71",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  ".",
@@ -1 +0,0 @@
1
- import{g as l,r as u,d as a}from"./chunk-SVP7TREG-ERRaAh-x.js";import{p as f}from"./chunk-JWPE2WC7-BIShIUcJ.js";import{_ as n,l as s}from"./index-BaBNw6X5.js";import"./index-MIxQaicl.js";import{M as c,b as d}from"./cynefin-OW5HDTMX-D8Lw5okC.js";import"../datalayer-app-main.js";import"./fastdom-promised-BMVBoXkp.js";import"./line-DUjWPDRX.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./_baseRest-BmxuuM4H.js";import"./isSymbol-BLtK9CV6.js";import"./forEach-hknrtmxV.js";import"./isUndefined-wBqHC1Hw.js";import"./color-CG7_7V2-.js";import"./index-atSsKceW.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(r=>{const e=r.alternatives.map(g);return e.length===1?e[0]:{type:"choice",alternatives:e}},"transformAlternation"),g=n(r=>{const e=r.elements.map(y);return e.length===1?e[0]:{type:"sequence",elements:e}},"transformConcatenation"),b=n(r=>{if(r.includes("*")){const[t,o]=r.split("*"),m=t?parseInt(t,10):0,p=o?parseInt(o,10):1/0;return{min:m,max:p}}const e=parseInt(r,10);return{min:e,max:e}},"parseRepeat"),y=n(r=>{const e=A(r.primary);if(!r.repeat)return e;const{min:t,max:o}=b(r.repeat);return t===0&&o===1?{type:"optional",element:e}:{type:"repetition",element:e,min:t,max:o}},"transformElement"),A=n(r=>{switch(r.$type){case"AbnfStringLiteral":return{type:"terminal",value:r.value};case"AbnfNumVal":return{type:"terminal",value:r.value};case"AbnfRuleName":return{type:"nonterminal",name:r.name};case"AbnfGroup":return i(r.element);case"AbnfOptionalGroup":return{type:"optional",element:i(r.element)};default:throw new Error(`Unsupported ABNF primary node: ${r.$type}`)}},"transformPrimary"),P=n(r=>({name:r.name,definition:i(r.definition)}),"transformRule"),h=n(r=>{f(r,a),r.title&&a.setTitle(r.title),r.rules.map(e=>a.addRule(P(e)))},"populateDb"),R={parse:n(r=>{a.clear(),s.debug("[ABNF Parser] Starting Langium parse");const e=v.parse(r);if(e.lexerErrors.length>0||e.parserErrors.length>0)throw new c(e);const t=e.value;s.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),s.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},O={parser:R,db:a,renderer:u,styles:l};export{O as diagram};
@@ -1 +0,0 @@
1
- import{s as t,c as i,a,C as o}from"./chunk-TICWLB2K-B91fA6Jd.js";import{_ as s}from"./index-BaBNw6X5.js";import"./index-MIxQaicl.js";import"./chunk-5VM5RSS4-CaowF8Al.js";import"./chunk-XXDRQBXY-BAy0lBJk.js";import"./chunk-POPQ4Y6H-DG5Q2OKT.js";import"./chunk-F27PBJKO-D7PuEggc.js";import"../datalayer-app-main.js";import"./fastdom-promised-BMVBoXkp.js";import"./line-DUjWPDRX.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./_baseRest-BmxuuM4H.js";import"./isSymbol-BLtK9CV6.js";import"./forEach-hknrtmxV.js";import"./isUndefined-wBqHC1Hw.js";import"./color-CG7_7V2-.js";import"./index-atSsKceW.js";var D={parser:a,get db(){return new o},renderer:i,styles:t,init:s(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{D as diagram};
@@ -1 +0,0 @@
1
- import{s as t,c as i,a,C as o}from"./chunk-TICWLB2K-B91fA6Jd.js";import{_ as s}from"./index-BaBNw6X5.js";import"./index-MIxQaicl.js";import"./chunk-5VM5RSS4-CaowF8Al.js";import"./chunk-XXDRQBXY-BAy0lBJk.js";import"./chunk-POPQ4Y6H-DG5Q2OKT.js";import"./chunk-F27PBJKO-D7PuEggc.js";import"../datalayer-app-main.js";import"./fastdom-promised-BMVBoXkp.js";import"./line-DUjWPDRX.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./_baseRest-BmxuuM4H.js";import"./isSymbol-BLtK9CV6.js";import"./forEach-hknrtmxV.js";import"./isUndefined-wBqHC1Hw.js";import"./color-CG7_7V2-.js";import"./index-atSsKceW.js";var D={parser:a,get db(){return new o},renderer:i,styles:t,init:s(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{D as diagram};
@@ -1 +0,0 @@
1
- import{_ as l,l as y}from"./index-BaBNw6X5.js";import{c as P}from"./cytoscape.esm-CkK8FqzY.js";import{c as k}from"./cytoscape-cose-bilkent-BKgjCCbE.js";import{s as q}from"./index-MIxQaicl.js";import"../datalayer-app-main.js";import"./fastdom-promised-BMVBoXkp.js";import"./line-DUjWPDRX.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./_baseRest-BmxuuM4H.js";import"./isSymbol-BLtK9CV6.js";import"./forEach-hknrtmxV.js";import"./isUndefined-wBqHC1Hw.js";import"./color-CG7_7V2-.js";import"./index-atSsKceW.js";P.use(k);function D(t,o){t.forEach(e=>{const r={id:e.id,labelText:e.label,height:e.height,width:e.width,padding:e.padding??0};Object.keys(e).forEach(n=>{["id","label","height","width","padding","x","y"].includes(n)||(r[n]=e[n])}),o.add({group:"nodes",data:r,position:{x:e.x??0,y:e.y??0}})})}l(D,"addNodes");function I(t,o){t.forEach(e=>{const r={id:e.id,source:e.start,target:e.end};Object.keys(e).forEach(n=>{["id","start","end"].includes(n)||(r[n]=e[n])}),o.add({group:"edges",data:r})})}l(I,"addEdges");function $(t){return new Promise(o=>{const e=q("body").append("div").attr("id","cy").attr("style","display:none"),r=P({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});e.remove(),D(t.nodes,r),I(t.edges,r),r.nodes().forEach(function(a){a.layoutDimensions=()=>{const f=a.data();return{w:f.width,h:f.height}}});const n={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};r.layout(n).run(),r.ready(a=>{y.info("Cytoscape ready",a),o(r)})})}l($,"createCytoscapeInstance");function X(t){return t.nodes().map(o=>{const e=o.data(),r=o.position(),n={id:e.id,x:r.x,y:r.y};return Object.keys(e).forEach(a=>{a!=="id"&&(n[a]=e[a])}),n})}l(X,"extractPositionedNodes");function Y(t){return t.edges().map(o=>{const e=o.data(),r=o._private.rscratch,n={id:e.id,source:e.source,target:e.target,startX:r.startX,startY:r.startY,midX:r.midX,midY:r.midY,endX:r.endX,endY:r.endY};return Object.keys(e).forEach(a=>{["id","source","target"].includes(a)||(n[a]=e[a])}),n})}l(Y,"extractPositionedEdges");async function v(t,o){y.debug("Starting cose-bilkent layout algorithm");try{B(t);const e=await $(t),r=X(e),n=Y(e);return y.debug(`Layout completed: ${r.length} nodes, ${n.length} edges`),{nodes:r,edges:n}}catch(e){throw y.error("Error in cose-bilkent layout algorithm:",e),e}}l(v,"executeCoseBilkentLayout");function B(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}l(B,"validateLayoutData");var O=l(async(t,o,{insertCluster:e,insertEdge:r,insertEdgeLabel:n,insertMarkers:a,insertNode:f,log:c,positionEdgeLabel:x},{algorithm:j})=>{const u={},p={},m=o.select("g");a(m,t.markers,t.type,t.diagramId);const C=m.insert("g").attr("class","subgraphs"),E=m.insert("g").attr("class","edgePaths"),A=m.insert("g").attr("class","edgeLabels"),N=m.insert("g").attr("class","nodes");c.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async s=>{if(s.isGroup){const i={...s};p[s.id]=i,u[s.id]=i,await e(C,s)}else{const i={...s};u[s.id]=i;const d=await f(N,s,{config:t.config,dir:t.direction||"TB"}),g=d.node().getBBox();i.width=g.width,i.height=g.height,i.domId=d,c.debug(`Node ${s.id} dimensions: ${g.width}x${g.height}`)}})),c.debug("Running cose-bilkent layout algorithm");const _={...t,nodes:t.nodes.map(s=>{const i=u[s.id];return{...s,width:i.width,height:i.height}})},b=await v(_,t.config);c.debug("Positioning nodes based on layout results"),b.nodes.forEach(s=>{const i=u[s.id];i?.domId&&(i.domId.attr("transform",`translate(${s.x}, ${s.y})`),i.x=s.x,i.y=s.y,c.debug(`Positioned node ${i.id} at center (${s.x}, ${s.y})`))}),b.edges.forEach(s=>{const i=t.edges.find(d=>d.id===s.id);i&&(i.points=[{x:s.startX,y:s.startY},{x:s.midX,y:s.midY},{x:s.endX,y:s.endY}])}),c.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async s=>{await n(A,s);const i=u[s.start??""],d=u[s.end??""];if(i&&d){const g=b.edges.find(h=>h.id===s.id);if(g){c.debug("APA01 positionedEdge",g);const h={...s},w=r(E,h,p,t.type,i,d,t.diagramId);x(h,w)}else{const h={...s,points:[{x:i.x||0,y:i.y||0},{x:d.x||0,y:d.y||0}]},w=r(E,h,p,t.type,i,d,t.diagramId);x(h,w)}}})),c.debug("Cose-bilkent rendering completed")},"render"),L=O;export{L as render};