@datalayer/agent-runtimes 1.5.21 → 1.5.22

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 (289) hide show
  1. package/dist-embed/chunks/{AgentDetails-C7tCazwB.js → AgentDetails-B6vekLFY.js} +1 -1
  2. package/dist-embed/chunks/{AgentDetailsDialog-Cwps4GeH.js → AgentDetailsDialog-C-o8qFsS.js} +1 -1
  3. package/dist-embed/chunks/{AgentInspector-Gk7jbg8t.js → AgentInspector-EiBHJgc9.js} +1 -1
  4. package/dist-embed/chunks/{AgentInspectorDialog-BSSDOFrT.js → AgentInspectorDialog-3fbLXnLP.js} +1 -1
  5. package/dist-embed/chunks/{CellSidebarExtension-p2BAkwis.js → CellSidebarExtension-BBXRIRgA.js} +8 -8
  6. package/dist-embed/chunks/ChatView-BjZ993Ch.js +32 -0
  7. package/dist-embed/chunks/{ContextPie-bd_YOjzP.js → ContextPie-Daf19Ivt.js} +1 -1
  8. package/dist-embed/chunks/{DeckComponent-4gxuEH4A.js → DeckComponent-C76a8LYD.js} +2 -2
  9. package/dist-embed/chunks/{DocumentView-BZSYqTh_.js → DocumentView-BZhbQkbP.js} +1 -1
  10. package/dist-embed/chunks/{EphemeralDocument-Cevnk5OF.js → EphemeralDocument-Bzv1mPpG.js} +1 -1
  11. package/dist-embed/chunks/{EphemeralNotebook-JvALIbK2.js → EphemeralNotebook-C4_wmSgk.js} +1 -1
  12. package/dist-embed/chunks/{ExcalidrawComponent-CbghNk-F.js → ExcalidrawComponent-DVOnRDkN.js} +1 -1
  13. package/dist-embed/chunks/{ExcalidrawModal-BOVvWzYQ.js → ExcalidrawModal-B0h_-M3l.js} +1 -1
  14. package/dist-embed/chunks/{JupyterLexicalExtension-CRccZ2h7.js → JupyterLexicalExtension-B2PQrLXS.js} +29 -29
  15. package/dist-embed/chunks/{KernelVariables-ompObBEM.js → KernelVariables-trZsXNAi.js} +1 -1
  16. package/dist-embed/chunks/{LexicalToolRegistry-BlBEZPP4.js → LexicalToolRegistry-8wJyLumb.js} +1 -1
  17. package/dist-embed/chunks/{NotebookToolSurfaces-DP8sWqVy.js → NotebookToolSurfaces-BuKcXArX.js} +1 -1
  18. package/dist-embed/chunks/{NotebookView-DC6BDVEp.js → NotebookView-Em4y6Een.js} +1 -1
  19. package/dist-embed/chunks/{Output-C4hBhZ5k.js → Output-DA8Udq91.js} +1 -1
  20. package/dist-embed/chunks/{SandboxDetailsDialog-CX8wvCLJ.js → SandboxDetailsDialog-o2z6YFyb.js} +1 -1
  21. package/dist-embed/chunks/{SchemaForm-BuhXDyz6.js → SchemaForm-DCt_mqR1.js} +1 -1
  22. package/dist-embed/chunks/{WidgetVariableView-C2X5Ehcg.js → WidgetVariableView-CDEFi0p0.js} +1 -1
  23. package/dist-embed/chunks/{YouTubePlugin-CjgOnMCz.js → YouTubePlugin-DxRPFzvS.js} +1 -1
  24. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-wvUaPpVC.js → abnfDiagram-VCTEODGH-Cit223SC.js} +1 -1
  25. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-kzVu7pzT.js → abnfDiagram-VCTEODGH-CsoEWluu.js} +1 -1
  26. package/dist-embed/chunks/{ar-SA-G6X2FPQ2-ArgZTGSp.js → ar-SA-G6X2FPQ2-CjJtC55z.js} +1 -1
  27. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-DVZUrWEx.js → architectureDiagram-5GKGNRK7-DfqpfKOB.js} +1 -1
  28. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-CwbfxDHw.js → architectureDiagram-5GKGNRK7-DyQuZM-c.js} +1 -1
  29. package/dist-embed/chunks/{az-AZ-76LH7QW2-DQgz6n32.js → az-AZ-76LH7QW2-B7KkL6wt.js} +1 -1
  30. package/dist-embed/chunks/{bg-BG-XCXSNQG7-Cx0dPt6-.js → bg-BG-XCXSNQG7-D7UwtEhO.js} +1 -1
  31. package/dist-embed/chunks/{blockDiagram-868be97b-DEQh5CUO.js → blockDiagram-868be97b-jJKAH_Up.js} +1 -1
  32. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-C6gbEBfg.js → blockDiagram-I7D4REHJ-BcQwB7-r.js} +1 -1
  33. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-DUIcpkIN.js → blockDiagram-I7D4REHJ-z3xnLtdG.js} +1 -1
  34. package/dist-embed/chunks/{bn-BD-2XOGV67Q-BkekmuYO.js → bn-BD-2XOGV67Q-pDDWE9Mn.js} +1 -1
  35. package/dist-embed/chunks/{c4Diagram-3f4bdde3-CUcRctJE.js → c4Diagram-3f4bdde3-DU_-LipO.js} +1 -1
  36. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-DSQiEaxC.js → c4Diagram-7LVT6UL2-BeMfCOG_.js} +1 -1
  37. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-f7UaZWVg.js → c4Diagram-7LVT6UL2-DjfnLrWZ.js} +1 -1
  38. package/dist-embed/chunks/{ca-ES-6MX7JW3Y-Yr14RtMP.js → ca-ES-6MX7JW3Y-By1uEeFx.js} +1 -1
  39. package/dist-embed/chunks/{celltoolbartracker-Bx9x9aeh.js → celltoolbartracker-DcYHi8Du.js} +1 -1
  40. package/dist-embed/chunks/{chunk-2Q5K7J3B-DbzMjK_L.js → chunk-2Q5K7J3B-BGvvv_gg.js} +1 -1
  41. package/dist-embed/chunks/{chunk-2Q5K7J3B-BBPiCQqO.js → chunk-2Q5K7J3B-YWpfqKnX.js} +1 -1
  42. package/dist-embed/chunks/{chunk-5VM5RSS4-CcNPo9qP.js → chunk-5VM5RSS4-4bCWL_eZ.js} +1 -1
  43. package/dist-embed/chunks/{chunk-5VM5RSS4-rEZEdbpi.js → chunk-5VM5RSS4-t-8mwHFb.js} +1 -1
  44. package/dist-embed/chunks/{chunk-F27PBJKO-DTgjd0wN.js → chunk-F27PBJKO-3yGsHIDd.js} +1 -1
  45. package/dist-embed/chunks/{chunk-F27PBJKO-BH7lDumP.js → chunk-F27PBJKO-De9ONU-g.js} +1 -1
  46. package/dist-embed/chunks/{chunk-IMKFNOWR-DuzpuE1w.js → chunk-IMKFNOWR-Bvbi7lre.js} +1 -1
  47. package/dist-embed/chunks/{chunk-IMKFNOWR-BA-vmq_V.js → chunk-IMKFNOWR-DA2KJGep.js} +1 -1
  48. package/dist-embed/chunks/{chunk-JWPE2WC7-BfRI4eJ2.js → chunk-JWPE2WC7-CVkDZh_H.js} +1 -1
  49. package/dist-embed/chunks/{chunk-JWPE2WC7-CAdvd3EQ.js → chunk-JWPE2WC7-w_AaYpEU.js} +1 -1
  50. package/dist-embed/chunks/{chunk-POPQ4Y6H-B7pT6rUf.js → chunk-POPQ4Y6H-C1mg0obI.js} +1 -1
  51. package/dist-embed/chunks/{chunk-POPQ4Y6H-Dw1h_9lT.js → chunk-POPQ4Y6H-DnstozKC.js} +1 -1
  52. package/dist-embed/chunks/{chunk-SVP7TREG-VsO48dck.js → chunk-SVP7TREG-CVLd6GtA.js} +1 -1
  53. package/dist-embed/chunks/{chunk-SVP7TREG-BxpYXJab.js → chunk-SVP7TREG-DmKkKduL.js} +1 -1
  54. package/dist-embed/chunks/{chunk-TICWLB2K-LCiyX33a.js → chunk-TICWLB2K-C-lEt3p0.js} +1 -1
  55. package/dist-embed/chunks/{chunk-TICWLB2K-CU2oQRJ9.js → chunk-TICWLB2K-xv7MPgmq.js} +1 -1
  56. package/dist-embed/chunks/{chunk-XXDRQBXY-CL1cUI4w.js → chunk-XXDRQBXY-Cq8wF2xQ.js} +1 -1
  57. package/dist-embed/chunks/{chunk-XXDRQBXY-islJGiCO.js → chunk-XXDRQBXY-j7xuWjIK.js} +1 -1
  58. package/dist-embed/chunks/{classDiagram-ZZMXUADV-Ctw7VU-m.js → classDiagram-ZZMXUADV-DRPRMTvC.js} +1 -1
  59. package/dist-embed/chunks/{classDiagram-ZZMXUADV-C7-Ca_nP.js → classDiagram-ZZMXUADV-Dvh08RMu.js} +1 -1
  60. package/dist-embed/chunks/{classDiagram-f62afe4f-BaJUb6H9.js → classDiagram-f62afe4f-B8-b8b-t.js} +1 -1
  61. package/dist-embed/chunks/{classDiagram-v2-604399ef-s6LKeK41.js → classDiagram-v2-604399ef-CHogX84-.js} +1 -1
  62. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-Ctw7VU-m.js → classDiagram-v2-VYDZK3BY-DRPRMTvC.js} +1 -1
  63. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-C7-Ca_nP.js → classDiagram-v2-VYDZK3BY-Dvh08RMu.js} +1 -1
  64. package/dist-embed/chunks/{code-block-IT6T5CEO-BieLU8ls.js → code-block-IT6T5CEO-Dbm1cj5T.js} +1 -1
  65. package/dist-embed/chunks/{component-p2xkjXeh.js → component-CsXw-w1P.js} +1 -1
  66. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-BkezndW_.js → cose-bilkent-JH36ORCC-BrisaBwh.js} +1 -1
  67. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-DrOmRWVI.js → cose-bilkent-JH36ORCC-DGpwW9PH.js} +1 -1
  68. package/dist-embed/chunks/{createText-aed3d8b3-Dw8k7JC8.js → createText-aed3d8b3-C8C5hNtS.js} +1 -1
  69. package/dist-embed/chunks/{cs-CZ-2BRQDIVT-DYR-S6bD.js → cs-CZ-2BRQDIVT-TB9QxoL2.js} +1 -1
  70. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-qZ6StjuY.js → cynefinDiagram-5FMLGOSQ-B37BRKcq.js} +1 -1
  71. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-DqoI6t3s.js → cynefinDiagram-5FMLGOSQ-NXny6Mot.js} +1 -1
  72. package/dist-embed/chunks/{da-DK-5WZEPLOC-DhaHIgKI.js → da-DK-5WZEPLOC-CLl8TZ2P.js} +1 -1
  73. package/dist-embed/chunks/{dagre-GXQ25YYZ-pcAHu_bK.js → dagre-GXQ25YYZ-b03jeXc5.js} +1 -1
  74. package/dist-embed/chunks/{dagre-GXQ25YYZ-Bb0_WA3x.js → dagre-GXQ25YYZ-mM6SsGs8.js} +1 -1
  75. package/dist-embed/chunks/{de-DE-XR44H4JA-CJpRH2Fy.js → de-DE-XR44H4JA-6gY_Hl4H.js} +1 -1
  76. package/dist-embed/chunks/{diagram-S7CK7UJ4-W17wgXHY.js → diagram-S7CK7UJ4-C8TF_Y_V.js} +1 -1
  77. package/dist-embed/chunks/{diagram-S7CK7UJ4-CwINt91M.js → diagram-S7CK7UJ4-fpaH_1xM.js} +1 -1
  78. package/dist-embed/chunks/{diagram-UQ7AKVKN-mH7QBO8y.js → diagram-UQ7AKVKN-CcqaQfbU.js} +1 -1
  79. package/dist-embed/chunks/{diagram-UQ7AKVKN-CXRpfLBt.js → diagram-UQ7AKVKN-G8fspx37.js} +1 -1
  80. package/dist-embed/chunks/{diagram-VSXAHHWV-CFHqpDaB.js → diagram-VSXAHHWV-B3Q41FOl.js} +1 -1
  81. package/dist-embed/chunks/{diagram-VSXAHHWV-Bg68Bv82.js → diagram-VSXAHHWV-DLhWEHn-.js} +1 -1
  82. package/dist-embed/chunks/{diagram-VX7I27RA-DQ6XlKLw.js → diagram-VX7I27RA-Dnbm3teD.js} +1 -1
  83. package/dist-embed/chunks/{diagram-VX7I27RA-BEO0D7jE.js → diagram-VX7I27RA-Dy-IHeZr.js} +1 -1
  84. package/dist-embed/chunks/{diagram-Z3DM3KII-BLJQK61P.js → diagram-Z3DM3KII-BkiB9_Ay.js} +1 -1
  85. package/dist-embed/chunks/{diagram-Z3DM3KII-Cenqf76m.js → diagram-Z3DM3KII-hE5FTtNp.js} +1 -1
  86. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-6H6OSebp.js → ebnfDiagram-PWID7BFC-DJhj6Mbd.js} +1 -1
  87. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-Cqmnghct.js → ebnfDiagram-PWID7BFC-DZiCEGSK.js} +1 -1
  88. package/dist-embed/chunks/{edges-b2856ca0-ChO7JKaP.js → edges-b2856ca0-DuBY_rn3.js} +1 -1
  89. package/dist-embed/chunks/{el-GR-BZB4AONW-DPGB1p8K.js → el-GR-BZB4AONW-CFGi_gqP.js} +1 -1
  90. package/dist-embed/chunks/{erDiagram-5d81789a-jzhAXdZi.js → erDiagram-5d81789a-BYOejxuX.js} +1 -1
  91. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-DEAWMrMT.js → erDiagram-RLTQ6QDP-Bg2UfSBM.js} +1 -1
  92. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-hAbP0vV0.js → erDiagram-RLTQ6QDP-v1tF2vX5.js} +1 -1
  93. package/dist-embed/chunks/{es-ES-U4NZUMDT-CLztgM3g.js → es-ES-U4NZUMDT-D_HQumEp.js} +1 -1
  94. package/dist-embed/chunks/{eu-ES-A7QVB2H4--ffZf65_.js → eu-ES-A7QVB2H4-CvUID20p.js} +1 -1
  95. package/dist-embed/chunks/{fa-IR-HGAKTJCU-Cwwej6FC.js → fa-IR-HGAKTJCU-C7_Vi5QP.js} +1 -1
  96. package/dist-embed/chunks/{fi-FI-Z5N7JZ37-Tw-dUSxy.js → fi-FI-Z5N7JZ37-SBYxKS7Q.js} +1 -1
  97. package/dist-embed/chunks/{flowDb-185abca5-DDUaXZ_Q.js → flowDb-185abca5-C_IywhMB.js} +1 -1
  98. package/dist-embed/chunks/{flowDiagram-1629c991-DpvDtFPK.js → flowDiagram-1629c991-C8JQo90r.js} +1 -1
  99. package/dist-embed/chunks/{flowDiagram-HODETNUW-DENY4Bvt.js → flowDiagram-HODETNUW-BigtRRvu.js} +1 -1
  100. package/dist-embed/chunks/{flowDiagram-HODETNUW-Hr-elwWq.js → flowDiagram-HODETNUW-Cd1y1bVx.js} +1 -1
  101. package/dist-embed/chunks/{flowDiagram-v2-1d953310-TxFSXMN7.js → flowDiagram-v2-1d953310-DTH8N-sj.js} +1 -1
  102. package/dist-embed/chunks/{flowchart-elk-definition-6df44142-BGFxwidp.js → flowchart-elk-definition-6df44142-W8s7oFgJ.js} +1 -1
  103. package/dist-embed/chunks/{fr-FR-RHASNOE6-CT1NyjSV.js → fr-FR-RHASNOE6-fAErz4Nf.js} +1 -1
  104. package/dist-embed/chunks/{ganttDiagram-3b0b3873-DJqKtGUz.js → ganttDiagram-3b0b3873-D_XwfPDh.js} +1 -1
  105. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-3bErrKpg.js → ganttDiagram-EL5Y4UJY-BIsU1Bcw.js} +1 -1
  106. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-Ddh9hVkO.js → ganttDiagram-EL5Y4UJY-VT_s02F9.js} +1 -1
  107. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-B3BVHs36.js → gitGraphDiagram-WWUBYQGX-BDdr_2gq.js} +1 -1
  108. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-BiEolUQH.js → gitGraphDiagram-WWUBYQGX-BvxzF9hn.js} +1 -1
  109. package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-vOvP_sU8.js → gitGraphDiagram-f01e8bc2-UBa5a0HV.js} +1 -1
  110. package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BKTaXj_2.js → gl-ES-HMX3MZ6V-DCciQOEM.js} +1 -1
  111. package/dist-embed/chunks/{he-IL-6SHJWFNN-BJ5SwTG5.js → he-IL-6SHJWFNN-CuQhQVb2.js} +1 -1
  112. package/dist-embed/chunks/{hi-IN-IWLTKZ5I-D5ZQxogx.js → hi-IN-IWLTKZ5I-BlH8AK2z.js} +1 -1
  113. package/dist-embed/chunks/{hu-HU-A5ZG7DT2-CoAAAzpy.js → hu-HU-A5ZG7DT2-BaBGhZVQ.js} +1 -1
  114. package/dist-embed/chunks/{id-ID-SAP4L64H-DFWbGjYj.js → id-ID-SAP4L64H-Dkm1zS1g.js} +1 -1
  115. package/dist-embed/chunks/{index-9bae90f3-YA-Pbv-C.js → index-9bae90f3-CvHGNDGk.js} +1 -1
  116. package/dist-embed/chunks/{index-BVzIb3Wy.js → index-B9aqZrHy.js} +1 -1
  117. package/dist-embed/chunks/{index-Db1qHC1a.js → index-BDs-ntTo.js} +1 -1
  118. package/dist-embed/chunks/{index-BfMo5nXi.js → index-BQp4l7hT.js} +2 -2
  119. package/dist-embed/chunks/{index-1MXuxaax.js → index-BcdbHyzT.js} +1 -1
  120. package/dist-embed/chunks/{index-B9vBhR-p.js → index-BqDJ3hYN.js} +1 -1
  121. package/dist-embed/chunks/{index-DMf0f7ny.js → index-CFP9psRB.js} +2 -2
  122. package/dist-embed/chunks/{index-CkOZcvYl.js → index-CUAnjzKL.js} +1 -1
  123. package/dist-embed/chunks/{index-FbZJIbu_.js → index-CWwj0zW9.js} +1 -1
  124. package/dist-embed/chunks/{index-CxIZHPCc.js → index-CecqH6mN.js} +1 -1
  125. package/dist-embed/chunks/{index-BuyZwxeT.js → index-CoxYszKx.js} +1 -1
  126. package/dist-embed/chunks/{index-BzQxauhZ.js → index-CozDzMOf.js} +1 -1
  127. package/dist-embed/chunks/{index-B0MhQWhs.js → index-CrL-deXT.js} +1 -1
  128. package/dist-embed/chunks/{index-fQxrRXLD.js → index-CtEseCtc.js} +1 -1
  129. package/dist-embed/chunks/{index-DPzPvDBn.js → index-D2vkNPmG.js} +1 -1
  130. package/dist-embed/chunks/{index-8Jy3Vws8.js → index-D5xVRNk8.js} +6 -6
  131. package/dist-embed/chunks/{index-DTCcg1ap.js → index-D8wHLHbt.js} +1 -1
  132. package/dist-embed/chunks/{index-DSgHh0-i.js → index-DAZUOPnd.js} +1 -1
  133. package/dist-embed/chunks/{index-CCA_V9Td.js → index-DE_JTiwB.js} +1 -1
  134. package/dist-embed/chunks/{index-B8y71UkT.js → index-DMll0Yzi.js} +1 -1
  135. package/dist-embed/chunks/{index-B0omKuYl.js → index-DN-cizG6.js} +1 -1
  136. package/dist-embed/chunks/{index-JhvHCMRQ.js → index-DPHM1WLM.js} +1 -1
  137. package/dist-embed/chunks/{index-C7os26P7.js → index-DSN70XMH.js} +2 -2
  138. package/dist-embed/chunks/{index-6feFd5AZ.js → index-Dc5AqaeZ.js} +1 -1
  139. package/dist-embed/chunks/{index-BL4KuFQP.js → index-DdmqZZnv.js} +1 -1
  140. package/dist-embed/chunks/{index-D62kZnWZ.js → index-DlYw1KQn.js} +5 -5
  141. package/dist-embed/chunks/{index-BgWf1G8H.js → index-Dobs-OKl.js} +1 -1
  142. package/dist-embed/chunks/{index-CIDdX0nc.js → index-Dp3JEvYy.js} +1 -1
  143. package/dist-embed/chunks/{index-DTbF6Y7O.js → index-DsMBsL3g.js} +1 -1
  144. package/dist-embed/chunks/{index-TDpnbl90.js → index-DvyxBamA.js} +4 -4
  145. package/dist-embed/chunks/{index-BNFZYAJT.js → index-SsFECYMb.js} +1 -1
  146. package/dist-embed/chunks/{index-Dw1P-H6s.js → index-YVrQYH-H.js} +1 -1
  147. package/dist-embed/chunks/{index-DpJpQnPn.js → index-a9o1fYab.js} +1 -1
  148. package/dist-embed/chunks/{index-BTeNnRc_.js → index-bC_5dTbf.js} +4 -4
  149. package/dist-embed/chunks/{index-DiBcWu6d.js → index-jJxXKHoT.js} +1 -1
  150. package/dist-embed/chunks/{index.esm-B6P80s3J.js → index.esm-p0OnSU9h.js} +1 -1
  151. package/dist-embed/chunks/{index.esm-z-R1Ypx2.js → index.esm-q_fIJH5v.js} +1 -1
  152. package/dist-embed/chunks/{infoDiagram-27XIBGKW-8DlnjSdf.js → infoDiagram-27XIBGKW-DIeaDzEK.js} +1 -1
  153. package/dist-embed/chunks/{infoDiagram-27XIBGKW-CZPNcDbH.js → infoDiagram-27XIBGKW-DZ6Xhv3K.js} +1 -1
  154. package/dist-embed/chunks/{infoDiagram-a29d40f1-Di_kmyTC.js → infoDiagram-a29d40f1-B9PMyz4X.js} +1 -1
  155. package/dist-embed/chunks/{isEqual-D0eOPSLC.js → isEqual-Cwjr2skl.js} +1 -1
  156. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-ri4cvaWs.js → ishikawaDiagram-5VMMS53U-BP4Q8nEu.js} +1 -1
  157. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DD5TaPvH.js → ishikawaDiagram-5VMMS53U-CwrdITPn.js} +1 -1
  158. package/dist-embed/chunks/{it-IT-JPQ66NNP-C7p9bCWQ.js → it-IT-JPQ66NNP-BrcctIsI.js} +1 -1
  159. package/dist-embed/chunks/{ja-JP-DBVTYXUO-DupAM7Cv.js → ja-JP-DBVTYXUO-CKuJ3Sod.js} +1 -1
  160. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-1NqbTyL4.js → journeyDiagram-3NMN7TZE-iJrCUeL0.js} +1 -1
  161. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-BpYgEBLO.js → journeyDiagram-3NMN7TZE-wI34jsXX.js} +1 -1
  162. package/dist-embed/chunks/{journeyDiagram-95396277-xr9Xk_mL.js → journeyDiagram-95396277-B6WhL2Fl.js} +1 -1
  163. package/dist-embed/chunks/{kaa-6HZHGXH3-DrthOcPY.js → kaa-6HZHGXH3-ChFYZBwI.js} +1 -1
  164. package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-C4hr0kbU.js → kab-KAB-ZGHBKWFO-C7C7EuVk.js} +1 -1
  165. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-DlSwjr3b.js → kanban-definition-UXKFOSKX-B8AB0LN4.js} +1 -1
  166. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-B5nUu45Q.js → kanban-definition-UXKFOSKX-gqU76cK9.js} +1 -1
  167. package/dist-embed/chunks/{kk-KZ-P5N5QNE5-CrjDkh9r.js → kk-KZ-P5N5QNE5-Bff18CC1.js} +1 -1
  168. package/dist-embed/chunks/{km-KH-HSX4SM5Z-JHWf7VZ6.js → km-KH-HSX4SM5Z-DU2YQt8I.js} +1 -1
  169. package/dist-embed/chunks/{ko-KR-MTYHY66A-CJ4JxKMG.js → ko-KR-MTYHY66A-CQruDlRn.js} +1 -1
  170. package/dist-embed/chunks/{ku-TR-6OUDTVRD-YSlLPag_.js → ku-TR-6OUDTVRD-DoySMeIi.js} +1 -1
  171. package/dist-embed/chunks/{layout-5FOjTADt.js → layout-CJFemkl6.js} +1 -1
  172. package/dist-embed/chunks/{layout-Bdtul_rg.js → layout-DbdaqszO.js} +1 -1
  173. package/dist-embed/chunks/{lexicalHooks-eqXJbnX9.js → lexicalHooks-Pqoe8h_O.js} +1 -1
  174. package/dist-embed/chunks/{lt-LT-XHIRWOB4-2v6r2YYq.js → lt-LT-XHIRWOB4-72Vmr8iW.js} +1 -1
  175. package/dist-embed/chunks/{lv-LV-5QDEKY6T-DVGd68q4.js → lv-LV-5QDEKY6T-CxtO97qO.js} +1 -1
  176. package/dist-embed/chunks/{mermaid.core-DY5DKOtx.js → mermaid.core-CAzPWd8O.js} +3 -3
  177. package/dist-embed/chunks/{mermaid.core-BU1Nkb56.js → mermaid.core-DaZxhAXO.js} +5 -5
  178. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-sSfUfKt8.js → mindmap-definition-YA3MSWOX-D8W0sJ7P.js} +1 -1
  179. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-CEuIjXO2.js → mindmap-definition-YA3MSWOX-DPl-uWpT.js} +1 -1
  180. package/dist-embed/chunks/{mindmap-definition-e4c1d938-btrk6STt.js → mindmap-definition-e4c1d938-CGXwlH4A.js} +1 -1
  181. package/dist-embed/chunks/{mr-IN-CRQNXWMA-D1q8zjMr.js → mr-IN-CRQNXWMA-BNGEl_QE.js} +1 -1
  182. package/dist-embed/chunks/{my-MM-5M5IBNSE-CCWuEpIN.js → my-MM-5M5IBNSE-4wIAMvGF.js} +1 -1
  183. package/dist-embed/chunks/{nb-NO-T6EIAALU-eJ92wx2h.js → nb-NO-T6EIAALU-z-1s9yX9.js} +1 -1
  184. package/dist-embed/chunks/{nl-NL-IS3SIHDZ-DmkMgsvp.js → nl-NL-IS3SIHDZ-CYKGEVB8.js} +1 -1
  185. package/dist-embed/chunks/{nn-NO-6E72VCQL-CWYEaXBn.js → nn-NO-6E72VCQL-DwQFIFpO.js} +1 -1
  186. package/dist-embed/chunks/{oc-FR-POXYY2M6-CayriaEZ.js → oc-FR-POXYY2M6-mH2n3eM_.js} +1 -1
  187. package/dist-embed/chunks/{pa-IN-N4M65BXN-CydiKcR8.js → pa-IN-N4M65BXN-DbixE6jQ.js} +1 -1
  188. package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CqRRvKft.js → pegDiagram-XKGWAZYB-D3qs3UBw.js} +1 -1
  189. package/dist-embed/chunks/{pegDiagram-XKGWAZYB--dcG-x2B.js → pegDiagram-XKGWAZYB-DJmZupPa.js} +1 -1
  190. package/dist-embed/chunks/{percentages-BXMCSKIN-fzYCDL7m.js → percentages-BXMCSKIN-5Q9KX_WU.js} +5 -5
  191. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-CkHpKSua.js → pieDiagram-E7YTZNPT-C58cd6s7.js} +1 -1
  192. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-D-uncTun.js → pieDiagram-E7YTZNPT-CrZQ-dOy.js} +1 -1
  193. package/dist-embed/chunks/{pieDiagram-c941bede-BoVaJIdw.js → pieDiagram-c941bede-Dn3GMx6q.js} +1 -1
  194. package/dist-embed/chunks/{pl-PL-T2D74RX3-DhiK4YSC.js → pl-PL-T2D74RX3-jOVonFYe.js} +1 -1
  195. package/dist-embed/chunks/{pt-BR-5N22H2LF-CwSVxIqs.js → pt-BR-5N22H2LF-Cx4MrqgK.js} +1 -1
  196. package/dist-embed/chunks/{pt-PT-UZXXM6DQ-BnxquNJT.js → pt-PT-UZXXM6DQ-B2PzNwuF.js} +1 -1
  197. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-nOA8Q9nG.js → quadrantDiagram-AXDQQJYC-CJn8hkR8.js} +1 -1
  198. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-ClE_bWPS.js → quadrantDiagram-AXDQQJYC-haT-kxqE.js} +1 -1
  199. package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-V_e2KgDu.js → quadrantDiagram-cf8b8fe0-B3wudq14.js} +1 -1
  200. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-CkhmY0tS.js → railroadDiagram-O6MQD6OU-T23yIHww.js} +1 -1
  201. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-D-SNyKIn.js → railroadDiagram-O6MQD6OU-Ty6XXjBy.js} +1 -1
  202. package/dist-embed/chunks/{renderer-BwlsmtXF.js → renderer-Au1S-H5k.js} +1 -1
  203. package/dist-embed/chunks/{requirementDiagram-53bda41b-BZw7Ipej.js → requirementDiagram-53bda41b-B-eAYQ6c.js} +1 -1
  204. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-BXwXUXrr.js → requirementDiagram-BXWQKSXE-CgkHdmYF.js} +1 -1
  205. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-1A97ivzl.js → requirementDiagram-BXWQKSXE-fpBmgh7Q.js} +1 -1
  206. package/dist-embed/chunks/{ro-RO-JPDTUUEW-D3G2f_fQ.js → ro-RO-JPDTUUEW-BCQxuLcc.js} +1 -1
  207. package/dist-embed/chunks/{ru-RU-B4JR7IUQ-SnVfNwaW.js → ru-RU-B4JR7IUQ-CqSiHvqj.js} +1 -1
  208. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-ktT6v9aY.js → sankeyDiagram-P5KCCOFB-DEGMK43Q.js} +1 -1
  209. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-0B_Kvjm2.js → sankeyDiagram-P5KCCOFB-hDbZE81L.js} +1 -1
  210. package/dist-embed/chunks/{sankeyDiagram-c3ef121a-e1QLivkZ.js → sankeyDiagram-c3ef121a-O14jOeqO.js} +1 -1
  211. package/dist-embed/chunks/{sequenceDiagram-82a5b84f-N-16oABv.js → sequenceDiagram-82a5b84f-BFFzLElQ.js} +1 -1
  212. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-CtbkJYCv.js → sequenceDiagram-WJ2MYXX4-MrC4K4SC.js} +1 -1
  213. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-DYY-dZgX.js → sequenceDiagram-WJ2MYXX4-wongMGVN.js} +1 -1
  214. package/dist-embed/chunks/{sessions-C9DBCyZI.js → sessions-BRALW9Yv.js} +1 -1
  215. package/dist-embed/chunks/{si-LK-N5RQ5JYF-Da7Bfexz.js → si-LK-N5RQ5JYF-Dbgk5YHt.js} +1 -1
  216. package/dist-embed/chunks/{sizeCapture-INFHLROL-B3xt8UaI.js → sizeCapture-INFHLROL-CiOiAAo5.js} +1 -1
  217. package/dist-embed/chunks/{sizeCapture-INFHLROL-DJOph387.js → sizeCapture-INFHLROL-j4-sCda0.js} +1 -1
  218. package/dist-embed/chunks/{sk-SK-C5VTKIMK-BB-Ks1b-.js → sk-SK-C5VTKIMK-OBAaNvVw.js} +1 -1
  219. package/dist-embed/chunks/{sl-SI-NN7IZMDC-DF3fUKHX.js → sl-SI-NN7IZMDC-DqLxi4IM.js} +1 -1
  220. package/dist-embed/chunks/{stateDiagram-43e79a5f-BJcJNr41.js → stateDiagram-43e79a5f-BZm5gFdu.js} +1 -1
  221. package/dist-embed/chunks/{stateDiagram-D77RDMKH-LjWP-fRB.js → stateDiagram-D77RDMKH-D7_xyy8n.js} +1 -1
  222. package/dist-embed/chunks/{stateDiagram-D77RDMKH-DVd0MOrg.js → stateDiagram-D77RDMKH-DXrbH1aM.js} +1 -1
  223. package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-DTEruWg2.js → stateDiagram-v2-2041ed4f-DiXOgJsK.js} +1 -1
  224. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-CJD5_Eji.js → stateDiagram-v2-MP3YSRHH-DLsY6ysL.js} +1 -1
  225. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-_xCQcvgo.js → stateDiagram-v2-MP3YSRHH-ngWpJn6k.js} +1 -1
  226. package/dist-embed/chunks/{styles-455b33cd-OIhmfs6N.js → styles-455b33cd-CrHizSU7.js} +1 -1
  227. package/dist-embed/chunks/{styles-f932cba9-CwLjreIv.js → styles-f932cba9-YuCN7fSa.js} +1 -1
  228. package/dist-embed/chunks/{styles-fcc2142b-DP74dQpR.js → styles-fcc2142b-tjrOPOh4.js} +1 -1
  229. package/dist-embed/chunks/{subset-shared.chunk-Cf9zgTA9.js → subset-shared.chunk-Du2agLgk.js} +1 -1
  230. package/dist-embed/chunks/{subset-worker.chunk-WYW3AHku.js → subset-worker.chunk-BXR8pgHc.js} +1 -1
  231. package/dist-embed/chunks/{sv-SE-XGPEYMSR-CeR-pJHy.js → sv-SE-XGPEYMSR-BbgHKxhC.js} +1 -1
  232. package/dist-embed/chunks/{svgDrawCommon-148a3cd9-CgE5QJIv.js → svgDrawCommon-148a3cd9-DTqtvo5_.js} +1 -1
  233. package/dist-embed/chunks/{swimlanes-42K2YHIH-CZyflHYJ.js → swimlanes-42K2YHIH-B289Mbni.js} +1 -1
  234. package/dist-embed/chunks/{swimlanes-42K2YHIH-Cj4fdAYa.js → swimlanes-42K2YHIH-B3H_wpMu.js} +1 -1
  235. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-B2gk37ys.js → swimlanesDiagram-VR7AAH4N-D0ZHzw-_.js} +1 -1
  236. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-Bmr6N4fj.js → swimlanesDiagram-VR7AAH4N-qWg-2xN_.js} +1 -1
  237. package/dist-embed/chunks/{ta-IN-2NMHFXQM-lmsodGuU.js → ta-IN-2NMHFXQM-0pH7gQyu.js} +1 -1
  238. package/dist-embed/chunks/{th-TH-HPSO5L25-DQCWr96I.js → th-TH-HPSO5L25-Dvbu09CU.js} +1 -1
  239. package/dist-embed/chunks/{timeline-definition-24CTP7MA-DqY5EM6p.js → timeline-definition-24CTP7MA-DUc18SdK.js} +1 -1
  240. package/dist-embed/chunks/{timeline-definition-24CTP7MA-D5dMAy5U.js → timeline-definition-24CTP7MA-DpMq7g2g.js} +1 -1
  241. package/dist-embed/chunks/{timeline-definition-7545f45a-B8wMEyZY.js → timeline-definition-7545f45a--4ypi4BE.js} +1 -1
  242. package/dist-embed/chunks/{tr-TR-DEFEU3FU-CqnvlGZW.js → tr-TR-DEFEU3FU-B6YS3iEB.js} +1 -1
  243. package/dist-embed/chunks/{uk-UA-QMV73CPH-DdWFjbHe.js → uk-UA-QMV73CPH-DMG9vIVp.js} +1 -1
  244. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-63-O_xI8.js → vennDiagram-4TSXK5OY-CS12EGJw.js} +1 -1
  245. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-BMg6wc5A.js → vennDiagram-4TSXK5OY-CvEXE1xX.js} +1 -1
  246. package/dist-embed/chunks/{vi-VN-M7AON7JQ-CydTT0Fi.js → vi-VN-M7AON7JQ-DB3ZrpeP.js} +1 -1
  247. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-C5wMQ_qe.js → wardleyDiagram-VM6X3IG4-8LfGni9_.js} +1 -1
  248. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-C9vLUvHf.js → wardleyDiagram-VM6X3IG4-Bj02LzjH.js} +1 -1
  249. package/dist-embed/chunks/{xychartDiagram-3f383b91-BfoQg8n9.js → xychartDiagram-3f383b91-CE_OY5QR.js} +1 -1
  250. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-BZr3T3n_.js → xychartDiagram-S5SC5T6Z-BdZi5x4a.js} +1 -1
  251. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-DthHDnAV.js → xychartDiagram-S5SC5T6Z-DXqC0l3r.js} +1 -1
  252. package/dist-embed/chunks/{zh-CN-LNUGB5OW-DEn1TFfK.js → zh-CN-LNUGB5OW-VV-lg83H.js} +1 -1
  253. package/dist-embed/chunks/{zh-HK-E62DVLB3-DJQRmOHH.js → zh-HK-E62DVLB3-DLoyC6Q9.js} +1 -1
  254. package/dist-embed/chunks/{zh-TW-RAJ6MFWO-B7s9vmSf.js → zh-TW-RAJ6MFWO-DhFllgOW.js} +1 -1
  255. package/dist-embed/datalayer-app-main.js +21 -21
  256. package/lib/apps/apps/records.d.ts +0 -29
  257. package/lib/apps/apps/records.js +11 -34
  258. package/lib/apps/apps/threads.d.ts +2 -21
  259. package/lib/apps/apps/threads.js +0 -75
  260. package/lib/apps/embed/embedSession.d.ts +0 -8
  261. package/lib/apps/embed/embedSession.js +1 -38
  262. package/lib/apps/embed/visitorApp.d.ts +22 -3
  263. package/lib/apps/embed/visitorApp.js +42 -4
  264. package/lib/apps/plugins/chat/ChatView.js +2 -1
  265. package/lib/chat/base/ChatBase.js +1 -1
  266. package/lib/chat/base/fullContextMessages.js +1 -1
  267. package/lib/hooks/useAgUi.js +1 -1
  268. package/lib/hooks/useToolApprovals.d.ts +1 -1
  269. package/lib/hooks/useToolApprovals.js +1 -1
  270. package/lib/{protocols → portable}/agUiRefusal.d.ts +1 -1
  271. package/lib/{protocols → portable}/agUiRefusal.js +1 -1
  272. package/lib/portable/agui.d.ts +72 -0
  273. package/lib/portable/agui.js +174 -0
  274. package/lib/portable/conversation.d.ts +124 -0
  275. package/lib/portable/conversation.js +357 -0
  276. package/lib/portable/index.d.ts +11 -6
  277. package/lib/portable/index.js +14 -11
  278. package/lib/portable/records.d.ts +27 -0
  279. package/lib/portable/records.js +46 -0
  280. package/lib/portable/sessions.d.ts +92 -0
  281. package/lib/portable/sessions.js +134 -0
  282. package/lib/portable/thread.d.ts +41 -0
  283. package/lib/portable/thread.js +102 -0
  284. package/lib/protocols/AGUIAdapter.d.ts +0 -2
  285. package/lib/protocols/AGUIAdapter.js +39 -74
  286. package/package.json +1 -1
  287. package/dist-embed/chunks/ChatView-fHb_i4kH.js +0 -32
  288. /package/lib/{utils → portable}/approvals.d.ts +0 -0
  289. /package/lib/{utils → portable}/approvals.js +0 -0
@@ -1,13 +1,3 @@
1
- /**
2
- * The record of an application (LOOP R-07), as ai-agents keeps it: what it
3
- * did, session by session, written by the runtime it ran on — read here for
4
- * its activity feed (R-01b, R-15): the sessions, newest first, and what each
5
- * one did, step by step.
6
- *
7
- * Pure but for `fetch`: no React.
8
- *
9
- * @module apps/apps/records
10
- */
11
1
  /** What a record entry is. */
12
2
  export type RecordKind = 'session' | 'tool_call' | 'decision' | 'check' | 'approval' | 'output' | 'feedback'
13
3
  /** A turn of a conversation: what was asked, what it answered. */
@@ -38,29 +28,10 @@ export type RecordsContext = {
38
28
  export declare const RECORD_KIND_WORDS: Record<RecordKind, string>;
39
29
  /** An entry as ai-agents answers with it. */
40
30
  export declare function entryOf(raw: Record<string, unknown>): RecordEntry;
41
- /**
42
- * How a run ended, in the `output` entry every run ends with, kept whatever
43
- * the application's `record.include` says (PAP_DATALAYER R-01): its words
44
- * only when it keeps `outputs`.
45
- */
46
- export declare const RUN_END_WORDS: Record<string, string>;
47
31
  /** How the run an entry ends ended: `answered`, `stopped`, `gone`; `''` for any other entry. */
48
32
  export declare function runEndOf(entry: RecordEntry): string;
49
33
  /** An entry in words: its summary, or how its run ended when its words are not kept. */
50
34
  export declare function entrySaid(entry: RecordEntry): string;
51
- /**
52
- * The mark around what the runtime tells an application of a turn a personal
53
- * agent asked over PAP or PACT, before the request (`asked_for_said`,
54
- * `ASKED_FOR_TAG` in agent_runtimes.loop.apps.pap_company).
55
- */
56
- export declare const ASKED_FOR_TAG = "asked-for";
57
- /**
58
- * What a person asked, as they are shown it: without what the runtime told
59
- * the application before their words (PAP_DATALAYER, decided 2026-10-14).
60
- * The record keeps it for the application's builder; the person never wrote
61
- * it, so *Your conversations* and a thread opened again leave it out.
62
- */
63
- export declare function askedOf(text: string): string;
64
35
  /** A session in a sentence: how many calls, what stopped it, how it ended. */
65
36
  export declare function sessionSentence(entries: readonly RecordEntry[]): string;
66
37
  /**
@@ -2,6 +2,17 @@
2
2
  * Copyright (c) 2025-2026 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
+ /**
6
+ * The record of an application (LOOP R-07), as ai-agents keeps it: what it
7
+ * did, session by session, written by the runtime it ran on — read here for
8
+ * its activity feed (R-01b, R-15): the sessions, newest first, and what each
9
+ * one did, step by step.
10
+ *
11
+ * Pure but for `fetch`: no React.
12
+ *
13
+ * @module apps/apps/records
14
+ */
15
+ import { RUN_END_WORDS } from '../../portable/records';
5
16
  /** Each kind in a word, as the feed labels it. */
6
17
  export const RECORD_KIND_WORDS = {
7
18
  session: 'Session',
@@ -30,16 +41,6 @@ export function entryOf(raw) {
30
41
  createdAt: String(raw.created_at ?? ''),
31
42
  };
32
43
  }
33
- /**
34
- * How a run ended, in the `output` entry every run ends with, kept whatever
35
- * the application's `record.include` says (PAP_DATALAYER R-01): its words
36
- * only when it keeps `outputs`.
37
- */
38
- export const RUN_END_WORDS = {
39
- answered: 'Answered',
40
- stopped: 'Stopped',
41
- gone: 'Its client went before the answer',
42
- };
43
44
  /** How the run an entry ends ended: `answered`, `stopped`, `gone`; `''` for any other entry. */
44
45
  export function runEndOf(entry) {
45
46
  const status = entry.kind === 'output' ? entry.payload.status : undefined;
@@ -49,30 +50,6 @@ export function runEndOf(entry) {
49
50
  export function entrySaid(entry) {
50
51
  return entry.summary || RUN_END_WORDS[runEndOf(entry)] || '';
51
52
  }
52
- /**
53
- * The mark around what the runtime tells an application of a turn a personal
54
- * agent asked over PAP or PACT, before the request (`asked_for_said`,
55
- * `ASKED_FOR_TAG` in agent_runtimes.loop.apps.pap_company).
56
- */
57
- export const ASKED_FOR_TAG = 'asked-for';
58
- /**
59
- * What a person asked, as they are shown it: without what the runtime told
60
- * the application before their words (PAP_DATALAYER, decided 2026-10-14).
61
- * The record keeps it for the application's builder; the person never wrote
62
- * it, so *Your conversations* and a thread opened again leave it out.
63
- */
64
- export function askedOf(text) {
65
- const open = `<${ASKED_FOR_TAG}>`;
66
- const close = `</${ASKED_FOR_TAG}>`;
67
- if (!text.startsWith(open)) {
68
- return text;
69
- }
70
- const end = text.indexOf(close);
71
- if (end < 0) {
72
- throw new Error(`What was asked opens <${ASKED_FOR_TAG}> and never closes it.`);
73
- }
74
- return text.slice(end + close.length).trimStart();
75
- }
76
53
  /** A session in a sentence: how many calls, what stopped it, how it ended. */
77
54
  export function sessionSentence(entries) {
78
55
  const calls = entries.filter(entry => entry.kind === 'tool_call').length;
@@ -9,17 +9,12 @@
9
9
  * stream's `MESSAGES_SNAPSHOT` says what it holds — and the chat draws it
10
10
  * and goes on with it on the same thread.
11
11
  *
12
- * Pure: the network is the `fetch` it is handed.
12
+ * Opening it is `openThread` (`portable/thread`), as every client opens one;
13
+ * here is what a deployment's chat decides of the thread it opens on.
13
14
  *
14
15
  * @module apps/apps/threads
15
16
  */
16
17
  import type { ResumedThread } from '../../types/chat';
17
- import type { ChatMessage } from '../../types/messages';
18
- /** What opening a thread says, in a person's words. */
19
- export declare const THREAD_WORDS: {
20
- readonly opening: "Opening your conversation…";
21
- readonly notOpened: (detail: string) => string;
22
- };
23
18
  /**
24
19
  * The deployment an application's agent is created for, as its create
25
20
  * payload names it (`app_instance.deployment_uid`, `appDatalayerCreatePayload`),
@@ -39,17 +34,3 @@ export declare function deploymentOfPayload(createPayload: Record<string, unknow
39
34
  * no deployment, keeps what it was given.
40
35
  */
41
36
  export declare function threadOfVisit(given: ResumedThread | undefined, deploymentUid: string, id: string): ResumedThread | undefined;
42
- /** The AG-UI messages a session-API stream's `MESSAGES_SNAPSHOT` carries, if one does. */
43
- export declare function snapshotOfStream(text: string): unknown[] | undefined;
44
- /**
45
- * A thread's conversation, read from the runtime its application runs on:
46
- * held there, or resumed from its record. Throws the runtime's sentence when
47
- * neither answers.
48
- */
49
- export declare function openThread({ agentBaseUrl, agentId, uid, token, fetcher, }: {
50
- agentBaseUrl: string;
51
- agentId: string;
52
- uid: string;
53
- token?: string | null;
54
- fetcher?: typeof fetch;
55
- }): Promise<ChatMessage[]>;
@@ -2,12 +2,6 @@
2
2
  * Copyright (c) 2025-2026 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- import { messagesOfThread } from '../embed/embedSession';
6
- /** What opening a thread says, in a person's words. */
7
- export const THREAD_WORDS = {
8
- opening: 'Opening your conversation…',
9
- notOpened: (detail) => `Your conversation could not be opened, so this is a new one: ${detail}`,
10
- };
11
5
  /**
12
6
  * The deployment an application's agent is created for, as its create
13
7
  * payload names it (`app_instance.deployment_uid`, `appDatalayerCreatePayload`),
@@ -39,72 +33,3 @@ export function threadOfVisit(given, deploymentUid, id) {
39
33
  }
40
34
  return { id, messages: [] };
41
35
  }
42
- /** The AG-UI messages a session-API stream's `MESSAGES_SNAPSHOT` carries, if one does. */
43
- export function snapshotOfStream(text) {
44
- let found;
45
- for (const block of text.split(/\r?\n\r?\n/)) {
46
- const data = block
47
- .split(/\r?\n/)
48
- .filter(line => line.startsWith('data:'))
49
- .map(line => line.slice('data:'.length).trim())
50
- .join('');
51
- if (!data) {
52
- continue;
53
- }
54
- try {
55
- const event = JSON.parse(data);
56
- if (event.type === 'MESSAGES_SNAPSHOT' && Array.isArray(event.messages)) {
57
- found = event.messages;
58
- }
59
- }
60
- catch {
61
- // Not an event: skipped.
62
- }
63
- }
64
- return found;
65
- }
66
- async function detailOf(response) {
67
- try {
68
- const body = (await response.json());
69
- if (typeof body.detail === 'string' && body.detail) {
70
- return body.detail;
71
- }
72
- }
73
- catch {
74
- // No sentence: the status says it.
75
- }
76
- return `${response.status}`;
77
- }
78
- /**
79
- * A thread's conversation, read from the runtime its application runs on:
80
- * held there, or resumed from its record. Throws the runtime's sentence when
81
- * neither answers.
82
- */
83
- export async function openThread({ agentBaseUrl, agentId, uid, token, fetcher = fetch, }) {
84
- const base = `${agentBaseUrl.replace(/\/+$/, '')}/api/v1/apps/sessions/${encodeURIComponent(uid)}`;
85
- const authorization = token
86
- ? { Authorization: `Bearer ${token}` }
87
- : {};
88
- const held = await fetcher(`${base}/messages`, { headers: authorization });
89
- if (held.ok) {
90
- const body = (await held.json());
91
- return messagesOfThread(body.messages);
92
- }
93
- if (held.status !== 404) {
94
- throw new Error(await detailOf(held));
95
- }
96
- // Not held here: resumed from its record, under the same uid.
97
- const resumed = await fetcher(`${base}/resume`, {
98
- method: 'POST',
99
- headers: { 'Content-Type': 'application/json', ...authorization },
100
- body: JSON.stringify({ agent: agentId }),
101
- });
102
- if (!resumed.ok) {
103
- throw new Error(await detailOf(resumed));
104
- }
105
- const snapshot = snapshotOfStream(await resumed.text());
106
- if (!snapshot) {
107
- throw new Error(`The runtime said nothing of session ${uid}.`);
108
- }
109
- return messagesOfThread(snapshot);
110
- }
@@ -48,14 +48,6 @@ export declare function sessionKeeper({ persist, storage, }: {
48
48
  }): SessionKeeper;
49
49
  /** Forget what this page holds in memory (a test). */
50
50
  export declare function forgetSessionsInMemory(): void;
51
- /**
52
- * A session's conversation as the chat draws it, from the AG-UI messages
53
- * the runtime says (`GET …/sessions/{uid}/messages`): what was said and
54
- * answered, in words. What its messages showed comes on the conversation's
55
- * ui socket once the chat opens it (REACTOR_UI RU-W), never here: a
56
- * `reactor.ui` activity in a thread is refused.
57
- */
58
- export declare function messagesOfThread(messages: unknown): ChatMessage[];
59
51
  /** What asking for a kept session found. */
60
52
  export type Reattached = {
61
53
  kind: 'resumed';
@@ -3,8 +3,7 @@
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
5
  import { windowTurnErrorOf } from '../../chat/base/loopWindow';
6
- import { AGUI_NAME } from '@datalayer/reactor/ui';
7
- import { askedOf } from '../apps/records';
6
+ import { messagesOfThread } from '../../portable/thread';
8
7
  /** Where a visit's session is kept in the host's storage: `<prefix>:<app>:<visit>`. */
9
8
  export const EMBED_SESSION_KEY_PREFIX = 'datalayer-app:session';
10
9
  /**
@@ -92,42 +91,6 @@ export function sessionKeeper({ persist, storage = hostStorage, }) {
92
91
  export function forgetSessionsInMemory() {
93
92
  IN_MEMORY.clear();
94
93
  }
95
- /**
96
- * A session's conversation as the chat draws it, from the AG-UI messages
97
- * the runtime says (`GET …/sessions/{uid}/messages`): what was said and
98
- * answered, in words. What its messages showed comes on the conversation's
99
- * ui socket once the chat opens it (REACTOR_UI RU-W), never here: a
100
- * `reactor.ui` activity in a thread is refused.
101
- */
102
- export function messagesOfThread(messages) {
103
- if (!Array.isArray(messages)) {
104
- return [];
105
- }
106
- const drawn = [];
107
- for (const message of messages) {
108
- if (!message || typeof message !== 'object') {
109
- continue;
110
- }
111
- const { id, role, content, activityType } = message;
112
- if (role === 'activity' && activityType === AGUI_NAME) {
113
- throw new Error(`Activity ${String(id)}: what a message showed comes on the ui socket (REACTOR_UI RU-W)`);
114
- }
115
- if ((role === 'user' || role === 'assistant') &&
116
- typeof id === 'string' &&
117
- typeof content === 'string' &&
118
- content.trim()) {
119
- // A turn a personal agent asked: what the runtime told the application
120
- // before the person's words is never shown to them (decided 2026-10-14).
121
- drawn.push({
122
- id,
123
- role,
124
- content: role === 'user' ? askedOf(content) : content,
125
- createdAt: new Date(),
126
- });
127
- }
128
- }
129
- return drawn;
130
- }
131
94
  /**
132
95
  * Ask the server that runs the application for a session's conversation,
133
96
  * with the visit's token. Anything but an answer — a session the runtime
@@ -13,7 +13,9 @@
13
13
  * `GET /apps/deployments/at/<slug>` without a token says what its page is
14
14
  * drawn from — the Appspec of the version it runs — and whether somebody
15
15
  * signed out may talk to it (`session.opens`); the visitors' runtime
16
- * answers `at:<slug>`, making the address's agent when first talked to;
16
+ * answers `at:<slug>`, making the address's agent when first talked to —
17
+ * or, for a version with code of its own (`runs_code`), the runtime its
18
+ * deployment is kept on (`kept.url`), which runs that code;
17
19
  * - **a decision**, named by its id (`01M…`): framed from Datalayer's run
18
20
  * page, as before.
19
21
  *
@@ -62,8 +64,12 @@ export type VisitorApp =
62
64
  kind: 'said';
63
65
  text: string;
64
66
  };
65
- /** Where a visitor's conversation with `app` runs: the visitors' runtime beside ai-agents, its token from ai-inference. */
66
- export declare function visitorsAt(api: string, app: string): DatalayerVisitors;
67
+ /**
68
+ * Where a visitor's conversation with `app` runs: the visitors' runtime beside
69
+ * ai-agents — or `runtime`, the one a deployment with code of its own is
70
+ * kept on (R-30) — its token from ai-inference.
71
+ */
72
+ export declare function visitorsAt(api: string, app: string, runtime?: string): DatalayerVisitors;
67
73
  /** What an embed without a token is told it takes. */
68
74
  export declare const TOKEN_HINT = "Embedded for a visitor it refuses, it takes its embed token (the \"token\" attribute).";
69
75
  /** The sentence for an example the visitors' runtime does not keep. */
@@ -85,3 +91,16 @@ export declare function readVisitorApp({ api, app, fetcher, catalogue, }: {
85
91
  fetcher?: typeof fetch;
86
92
  catalogue?: (ref: string) => AppSpec | undefined;
87
93
  }): Promise<VisitorApp>;
94
+ /**
95
+ * Where somebody without an account talks to an address, as ai-agents says
96
+ * it (R-30, decided 14 October 2026): written as a spec, on the visitors'
97
+ * runtime (`url` unsaid); with code of its own (`runs_code`), on the runtime
98
+ * its deployment is kept on (`kept.url`), which runs that code — never the
99
+ * visitors', where its plain agent would answer in its code's place. An
100
+ * answer that does not say, or says code with no runtime, is not run.
101
+ */
102
+ export declare function signedOutRuntime(body: Record<string, unknown>): {
103
+ url?: string;
104
+ } | {
105
+ said: string;
106
+ };
@@ -20,10 +20,18 @@ export const DEFAULT_API = 'https://prod1.datalayer.run';
20
20
  export const isAppUid = (value) => /^[0-9A-HJKMNP-TV-Z]{26}$/.test(value);
21
21
  /** An address, as ai-agents spells one. */
22
22
  const SLUG = /^[a-z0-9][a-z0-9-]{0,62}$/;
23
- /** Where a visitor's conversation with `app` runs: the visitors' runtime beside ai-agents, its token from ai-inference. */
24
- export function visitorsAt(api, app) {
23
+ /**
24
+ * Where a visitor's conversation with `app` runs: the visitors' runtime beside
25
+ * ai-agents — or `runtime`, the one a deployment with code of its own is
26
+ * kept on (R-30) — its token from ai-inference.
27
+ */
28
+ export function visitorsAt(api, app, runtime) {
25
29
  const base = api.replace(/\/+$/, '');
26
- return { url: `${base}${VISITORS_PATH}`, app, inferenceUrl: base };
30
+ return {
31
+ url: runtime ? runtime.replace(/\/+$/, '') : `${base}${VISITORS_PATH}`,
32
+ app,
33
+ inferenceUrl: base,
34
+ };
27
35
  }
28
36
  /** What an embed without a token is told it takes. */
29
37
  export const TOKEN_HINT = 'Embedded for a visitor it refuses, it takes its embed token (the "token" attribute).';
@@ -95,9 +103,39 @@ export async function readVisitorApp({ api = DEFAULT_API, app, fetcher = fetch,
95
103
  const name = typeof deployment.app_name === 'string' && deployment.app_name
96
104
  ? deployment.app_name
97
105
  : parsed.app.name;
106
+ const runtime = signedOutRuntime(body);
107
+ if ('said' in runtime) {
108
+ return { kind: 'said', text: refusedSentence(runtime.said) };
109
+ }
98
110
  return {
99
111
  kind: 'visitors',
100
112
  app: runnable({ app: { ...parsed.app, name }, problems: parsed.problems }),
101
- visitors: visitorsAt(api, `${AT_PREFIX}${named}`),
113
+ visitors: visitorsAt(api, `${AT_PREFIX}${named}`, runtime.url),
102
114
  };
103
115
  }
116
+ /**
117
+ * Where somebody without an account talks to an address, as ai-agents says
118
+ * it (R-30, decided 14 October 2026): written as a spec, on the visitors'
119
+ * runtime (`url` unsaid); with code of its own (`runs_code`), on the runtime
120
+ * its deployment is kept on (`kept.url`), which runs that code — never the
121
+ * visitors', where its plain agent would answer in its code's place. An
122
+ * answer that does not say, or says code with no runtime, is not run.
123
+ */
124
+ export function signedOutRuntime(body) {
125
+ if (typeof body.runs_code !== 'boolean') {
126
+ return {
127
+ said: 'Datalayer did not say whether it runs code of its own, so it is not run.',
128
+ };
129
+ }
130
+ if (!body.runs_code) {
131
+ return {};
132
+ }
133
+ const kept = (body.kept ?? {});
134
+ const url = typeof kept.url === 'string' ? kept.url.trim() : '';
135
+ if (!url) {
136
+ return {
137
+ said: 'It runs its own code on a runtime kept for it, and none is running now.',
138
+ };
139
+ }
140
+ return { url };
141
+ }
@@ -49,7 +49,8 @@ import { isInactiveSurfaceContribution, orderToolContributions, toolsForChatView
49
49
  import { agentBundleToolDefinitions, useAgentCommandTools, } from '../../../tools/adapters/commands';
50
50
  import { NONE_EDITOR, seedEditorChoice, setEditorOptions, } from '../shell/editorChoice';
51
51
  import { generateMessageId } from '../../../types/messages';
52
- import { deploymentOfPayload, openThread, THREAD_WORDS, threadOfVisit, } from '../../apps/threads';
52
+ import { deploymentOfPayload, threadOfVisit } from '../../apps/threads';
53
+ import { openThread, THREAD_WORDS } from '../../../portable/thread';
53
54
  import { FaceDrawing, PresenceFace, PresenceLine, } from '../../../chat/presence/Presence';
54
55
  import { presenceState, presenceToolOf, } from '../../../chat/presence/presenceStatus';
55
56
  import { latestSaying, newestIsAnswer, } from '../../../chat/assistant/state';
@@ -32,7 +32,7 @@ import { useCoreStore } from '@datalayer/core';
32
32
  import { DEFAULT_SERVICE_URLS } from '@datalayer/core/lib/api/constants';
33
33
  import { useChatStore } from '../../stores/chatStore';
34
34
  import { useConversationStore } from '../../stores/conversationStore';
35
- import { askedOf } from '../../apps/apps/records';
35
+ import { askedOf } from '../../portable/records';
36
36
  import { extractChatMessagesFromFullContext } from './fullContextMessages';
37
37
  import { generateMessageId, createUserMessage, createAssistantMessage, } from '../../types/messages';
38
38
  import { AI_MODEL_CATALOGUE, DEFAULT_MODEL, isChatModel, } from '../../specs/models';
@@ -12,7 +12,7 @@
12
12
  * preamble the runtime told the application (`<asked-for>…</asked-for>`) is
13
13
  * kept in the record for the builder and never shown to the person.
14
14
  */
15
- import { askedOf } from '../../apps/apps/records';
15
+ import { askedOf } from '../../portable/records';
16
16
  export function extractChatMessagesFromFullContext(fullContext) {
17
17
  if (!fullContext) {
18
18
  return [];
@@ -3,7 +3,7 @@
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
5
  import { useCallback, useEffect, useState } from 'react';
6
- import { agUiRefusal, refusalBody } from '../protocols/agUiRefusal';
6
+ import { agUiRefusal, refusalBody } from '../portable/agUiRefusal';
7
7
  /**
8
8
  * Hook to manage chat state with AG-UI protocol.
9
9
  *
@@ -1,5 +1,5 @@
1
1
  import type { ToolApprovalFilters } from '../types/tool-approvals';
2
- import { type ApprovalRecord } from '../utils/approvals';
2
+ import { type ApprovalRecord } from '../portable/approvals';
3
3
  export type { ApprovalRecord };
4
4
  interface ApprovalsQueryData {
5
5
  approvals: ApprovalRecord[];
@@ -21,7 +21,7 @@
21
21
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
22
22
  import { useQuery, useQueryClient } from '@tanstack/react-query';
23
23
  import { useAIAgentsWebSocket } from './useAIAgentsWebSocket';
24
- import { normalizeApproval } from '../utils/approvals';
24
+ import { normalizeApproval } from '../portable/approvals';
25
25
  // ─── Helpers ─────────────────────────────────────────────────────────
26
26
  const APPROVALS_ROOT_KEY = ['tool-approvals'];
27
27
  function matchesFilter(a, filters) {
@@ -16,7 +16,7 @@
16
16
  * Pure, so the hook, the adapter and the tests read a refusal the same way
17
17
  * (the repo's jest/vitest rule: rules live outside components).
18
18
  *
19
- * @module protocols/agUiRefusal
19
+ * @module portable/agUiRefusal
20
20
  */
21
21
  /** What the page says when an agent's AG-UI address answers nothing. */
22
22
  export declare const AG_UI_NOT_ON_RUNTIME: string;
@@ -20,7 +20,7 @@
20
20
  * Pure, so the hook, the adapter and the tests read a refusal the same way
21
21
  * (the repo's jest/vitest rule: rules live outside components).
22
22
  *
23
- * @module protocols/agUiRefusal
23
+ * @module portable/agUiRefusal
24
24
  */
25
25
  /** What the page says when an agent's AG-UI address answers nothing. */
26
26
  export const AG_UI_NOT_ON_RUNTIME = 'This agent is not on the runtime the page is addressing: its AG-UI address answered nothing. ' +
@@ -0,0 +1,72 @@
1
+ /**
2
+ * An AG-UI run stream as any JavaScript runtime reads it: the
3
+ * `text/event-stream` frames a run answers, read into AG-UI events, and how a
4
+ * run is known to have ended. The web chat's `AGUIAdapter` and Datalayer
5
+ * Mobile read a stream with these, so that a stream is read one way.
6
+ *
7
+ * No React, DOM, Node or Reactor module: a phone passes a `fetch` whose
8
+ * response body streams (Expo's `expo/fetch`).
9
+ *
10
+ * @module portable/agui
11
+ */
12
+ /** One AG-UI event, as a run stream carries it (`type` first, its fields beside it). */
13
+ export type AgUiEvent = {
14
+ type: string;
15
+ [field: string]: unknown;
16
+ };
17
+ /** What the page says when a run's stream closes before the run said how it ended. */
18
+ export declare const RUN_CUT_SHORT = "The run stopped before it finished, without an answer or an error: send it again.";
19
+ /**
20
+ * The name of `reactor.ui` (Reactor's `AGUI_NAME`): its ops come over the
21
+ * conversation's ui socket, never a run stream (REACTOR_UI RU-W). Held here
22
+ * so that a reader of a run needs no Reactor module; a test holds it to
23
+ * Reactor's.
24
+ */
25
+ export declare const REACTOR_UI_NAME = "reactor.ui";
26
+ /** What the page says when a `reactor.ui` op comes on a run stream. */
27
+ export declare const UI_ON_RUN = "A reactor.ui op came on the run stream: it comes over the ui socket (REACTOR_UI RU-W).";
28
+ /** What is said when the `fetch` given cannot read a response as it streams. */
29
+ export declare const NOT_STREAMING = "This fetch does not stream a response: give one whose response body has getReader (expo/fetch on a phone).";
30
+ /** Whether an event ends a run: the run said how it ended. */
31
+ export declare const endsRun: (event: AgUiEvent) => boolean;
32
+ /**
33
+ * The `text/event-stream` of a run, read as it arrives: text in, one AG-UI
34
+ * event out per frame. A frame is its `data:` lines up to a blank line; a
35
+ * frame whose data is not JSON is handed to `malformed`, never guessed at.
36
+ */
37
+ export declare class AgUiFrames {
38
+ private readonly malformed;
39
+ private buffer;
40
+ private data;
41
+ constructor(malformed?: (data: string) => void);
42
+ /** The events the text completes. */
43
+ push(text: string): AgUiEvent[];
44
+ /** The events left when the stream closes: a last frame without its blank line. */
45
+ end(): AgUiEvent[];
46
+ private line;
47
+ private dispatch;
48
+ }
49
+ /** Every event a complete stream's text holds: a stream already read whole. */
50
+ export declare function eventsOfStream(text: string): AgUiEvent[];
51
+ /**
52
+ * Read a run's stream to its end, each event handed to `onEvent` as it
53
+ * arrives. Throws `RUN_CUT_SHORT` when the stream closes before the run said
54
+ * how it ended, and `NOT_STREAMING` for a response that cannot be read as it
55
+ * streams. An abort ends the reading with the caller's `AbortError`.
56
+ */
57
+ export declare function readRunStream(response: {
58
+ body?: unknown;
59
+ }, onEvent: (event: AgUiEvent) => void, malformed?: (data: string) => void): Promise<void>;
60
+ /** A tool's result as a run says it (`TOOL_CALL_RESULT`): what it gave, and whether it failed. */
61
+ export type ToolResultSaid = {
62
+ /** The result: its JSON read when it is JSON, else its text. */
63
+ result: unknown;
64
+ success: boolean;
65
+ error?: string;
66
+ };
67
+ /**
68
+ * A tool result's content, read as the chat reads it: JSON when it is JSON,
69
+ * and failed when the execution result says so (`execution_ok: false`, a
70
+ * `code_error`, or an `error` without `success`).
71
+ */
72
+ export declare function toolResultOf(content: unknown): ToolResultSaid;