@datalayer/agent-runtimes 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/dist-embed/chunks/{AgentDetails-Bo0dD1KS.js → AgentDetails-KezohVQI.js} +1 -1
  2. package/dist-embed/chunks/{AgentDetailsDialog-JjCHYxMG.js → AgentDetailsDialog-CklhMnk7.js} +1 -1
  3. package/dist-embed/chunks/{AgentInspector-37Onz4of.js → AgentInspector-CtCaRc1L.js} +1 -1
  4. package/dist-embed/chunks/{AgentInspectorDialog-CCzGVAtX.js → AgentInspectorDialog-DB9cx3Gd.js} +1 -1
  5. package/dist-embed/chunks/Avatar-9MpXENSs.js +1 -0
  6. package/dist-embed/chunks/{CellSidebarExtension-CQlXdanG.js → CellSidebarExtension-CfaJL6DQ.js} +6 -6
  7. package/dist-embed/chunks/ChatView-Dc1x4aBR.js +32 -0
  8. package/dist-embed/chunks/{ContextPie-DBIUoPrq.js → ContextPie-1vP4f-3N.js} +1 -1
  9. package/dist-embed/chunks/DatalayerAgentBridge-D54Z9BZ3.js +1 -0
  10. package/dist-embed/chunks/{DeckComponent-CuRWiARr.js → DeckComponent-82GVdsoi.js} +2 -2
  11. package/dist-embed/chunks/{DocumentView-BYU2HREd.js → DocumentView-SrJloJDo.js} +2 -2
  12. package/dist-embed/chunks/{EphemeralDocument-BjFSuQKH.js → EphemeralDocument-t1KulOH8.js} +1 -1
  13. package/dist-embed/chunks/{EphemeralNotebook-DbS4f6yr.js → EphemeralNotebook-Co-WQWCc.js} +2 -2
  14. package/dist-embed/chunks/{ExcalidrawComponent-CFLnMPnf.js → ExcalidrawComponent-5NeLUYVB.js} +1 -1
  15. package/dist-embed/chunks/{ExcalidrawModal-CB9d5Vpk.js → ExcalidrawModal-9ZnOB03n.js} +1 -1
  16. package/dist-embed/chunks/{JupyterLexicalExtension-CYnZrelh.js → JupyterLexicalExtension-Cize8RXy.js} +29 -29
  17. package/dist-embed/chunks/{KernelVariables-KCUfxhF4.js → KernelVariables-Cl57Zze1.js} +2 -2
  18. package/dist-embed/chunks/{LexicalToolRegistry-CXLITkMD.js → LexicalToolRegistry-CoM9ROsx.js} +3 -3
  19. package/dist-embed/chunks/{NotebookSkeleton-HdM76lOj.js → NotebookSkeleton-CI7ovjNW.js} +1 -1
  20. package/dist-embed/chunks/{NotebookToolSurfaces-D62q-lbb.js → NotebookToolSurfaces-CWfppxBN.js} +1 -1
  21. package/dist-embed/chunks/{NotebookToolbar-DMKCe3c2.js → NotebookToolbar-rtMQZWHQ.js} +1 -1
  22. package/dist-embed/chunks/{NotebookView-Pps9dPZ7.js → NotebookView-DOf_K74b.js} +1 -1
  23. package/dist-embed/chunks/{Output-2KxoKu5F.js → Output-9DKTscSv.js} +10 -10
  24. package/dist-embed/chunks/{SandboxDetailsDialog-pkvlbdM2.js → SandboxDetailsDialog-BCfDm6MB.js} +1 -1
  25. package/dist-embed/chunks/{SchemaForm-Bqor7hh8.js → SchemaForm-BOYPrvf8.js} +1 -1
  26. package/dist-embed/chunks/{Toolbar-6Hdi_m3T.js → Toolbar-CGQDY041.js} +1 -1
  27. package/dist-embed/chunks/{WidgetVariableView-CJTAKqh1.js → WidgetVariableView-BTOwHP78.js} +1 -1
  28. package/dist-embed/chunks/YouTubePlugin-Bs4zZIB1.js +1 -0
  29. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-CWj4pFxo.js → abnfDiagram-VCTEODGH-D5p59vS_.js} +1 -1
  30. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-B4x7mfou.js → abnfDiagram-VCTEODGH-DRYbUvhc.js} +1 -1
  31. package/dist-embed/chunks/{ar-SA-G6X2FPQ2-C-zAYgA-.js → ar-SA-G6X2FPQ2-D6XRzkBS.js} +1 -1
  32. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-CRIN999O.js → architectureDiagram-5GKGNRK7-B7ITKDup.js} +1 -1
  33. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-B2D6lZbf.js → architectureDiagram-5GKGNRK7-DQGv0imf.js} +1 -1
  34. package/dist-embed/chunks/{az-AZ-76LH7QW2-BHq5js6U.js → az-AZ-76LH7QW2-DBTdUiqp.js} +1 -1
  35. package/dist-embed/chunks/{bg-BG-XCXSNQG7-BTcNNcTc.js → bg-BG-XCXSNQG7-DuhcsaSL.js} +1 -1
  36. package/dist-embed/chunks/{blockDiagram-868be97b-bBp9uGVj.js → blockDiagram-868be97b-DYe-XTjy.js} +1 -1
  37. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-DNdo_mUi.js → blockDiagram-I7D4REHJ-IltJXCd6.js} +1 -1
  38. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-CPHEppLa.js → blockDiagram-I7D4REHJ-y7tEFo3j.js} +1 -1
  39. package/dist-embed/chunks/{bn-BD-2XOGV67Q-DXRk27u1.js → bn-BD-2XOGV67Q-CPFeLVSN.js} +1 -1
  40. package/dist-embed/chunks/{c4Diagram-3f4bdde3-cYZlcE7E.js → c4Diagram-3f4bdde3-Bybp0wky.js} +1 -1
  41. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-DTmVwmmb.js → c4Diagram-7LVT6UL2-CizxVqqX.js} +1 -1
  42. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-BM2g5U7R.js → c4Diagram-7LVT6UL2-DpaHndz8.js} +1 -1
  43. package/dist-embed/chunks/{ca-ES-6MX7JW3Y-D-0J9rqp.js → ca-ES-6MX7JW3Y-gDR_kEC6.js} +1 -1
  44. package/dist-embed/chunks/{celltoolbartracker-D67W4XWx.js → celltoolbartracker-DLF4PWyW.js} +1 -1
  45. package/dist-embed/chunks/{chunk-2Q5K7J3B-CsB-r261.js → chunk-2Q5K7J3B-BI6lURun.js} +1 -1
  46. package/dist-embed/chunks/{chunk-2Q5K7J3B-CuegvedF.js → chunk-2Q5K7J3B-DWoLSrj9.js} +1 -1
  47. package/dist-embed/chunks/{chunk-5VM5RSS4-D4Ed2_vW.js → chunk-5VM5RSS4-CDh4wYym.js} +1 -1
  48. package/dist-embed/chunks/{chunk-5VM5RSS4-MJQ9uhYe.js → chunk-5VM5RSS4-SleuNqDC.js} +1 -1
  49. package/dist-embed/chunks/{chunk-F27PBJKO-DnjXjdOV.js → chunk-F27PBJKO-AvWsNGYY.js} +1 -1
  50. package/dist-embed/chunks/{chunk-F27PBJKO-BKTrewOm.js → chunk-F27PBJKO-h_FwJMTr.js} +1 -1
  51. package/dist-embed/chunks/{chunk-IMKFNOWR-Bf7PlvQM.js → chunk-IMKFNOWR-DGRceKiU.js} +1 -1
  52. package/dist-embed/chunks/{chunk-IMKFNOWR-BiXdYxxk.js → chunk-IMKFNOWR-Hx4a5yny.js} +1 -1
  53. package/dist-embed/chunks/{chunk-JWPE2WC7-DcVyhh3j.js → chunk-JWPE2WC7-A4gy2qc4.js} +1 -1
  54. package/dist-embed/chunks/{chunk-JWPE2WC7-DmWR08qa.js → chunk-JWPE2WC7-BuJactJo.js} +1 -1
  55. package/dist-embed/chunks/{chunk-POPQ4Y6H-Bw6JH9TT.js → chunk-POPQ4Y6H-CFM-817s.js} +1 -1
  56. package/dist-embed/chunks/{chunk-POPQ4Y6H-snvBGTqY.js → chunk-POPQ4Y6H-CmRF80iG.js} +1 -1
  57. package/dist-embed/chunks/{chunk-SVP7TREG-DLZdx--b.js → chunk-SVP7TREG-CryZx9JE.js} +1 -1
  58. package/dist-embed/chunks/{chunk-SVP7TREG-dE58fUkJ.js → chunk-SVP7TREG-DSNzmytH.js} +1 -1
  59. package/dist-embed/chunks/{chunk-TICWLB2K-DNXzQOV5.js → chunk-TICWLB2K-CEaDF8ZJ.js} +1 -1
  60. package/dist-embed/chunks/{chunk-TICWLB2K-4NdGhPfF.js → chunk-TICWLB2K-DyGS3fIj.js} +1 -1
  61. package/dist-embed/chunks/{chunk-XXDRQBXY-OKsVfhjO.js → chunk-XXDRQBXY-8Cnzpdjz.js} +1 -1
  62. package/dist-embed/chunks/{chunk-XXDRQBXY-D57w8SHP.js → chunk-XXDRQBXY-DxQBcVOz.js} +1 -1
  63. package/dist-embed/chunks/{classDiagram-ZZMXUADV-oYXGLbJe.js → classDiagram-ZZMXUADV-BQkO1UYr.js} +1 -1
  64. package/dist-embed/chunks/{classDiagram-ZZMXUADV-D35oEC_r.js → classDiagram-ZZMXUADV-yvP3zMO3.js} +1 -1
  65. package/dist-embed/chunks/{classDiagram-f62afe4f-DWY2Ws4r.js → classDiagram-f62afe4f-AYfpYKtp.js} +1 -1
  66. package/dist-embed/chunks/{classDiagram-v2-604399ef-By5ijR28.js → classDiagram-v2-604399ef-BWyNcT_y.js} +1 -1
  67. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-oYXGLbJe.js → classDiagram-v2-VYDZK3BY-BQkO1UYr.js} +1 -1
  68. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-D35oEC_r.js → classDiagram-v2-VYDZK3BY-yvP3zMO3.js} +1 -1
  69. package/dist-embed/chunks/{code-block-IT6T5CEO-DvUhQbDq.js → code-block-IT6T5CEO-F4BSIGY6.js} +1 -1
  70. package/dist-embed/chunks/{component-DquJEKgN.js → component-DMQ8W8n1.js} +3 -3
  71. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-j33onHvG.js → cose-bilkent-JH36ORCC-C3HC0XIY.js} +1 -1
  72. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-CfuJvtzg.js → cose-bilkent-JH36ORCC-MVxlcfpd.js} +1 -1
  73. package/dist-embed/chunks/{createText-aed3d8b3-DvlG46OI.js → createText-aed3d8b3-CEJODAXJ.js} +1 -1
  74. package/dist-embed/chunks/{cs-CZ-2BRQDIVT-CgN3I-57.js → cs-CZ-2BRQDIVT-BXQxcYp6.js} +1 -1
  75. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-YhGHtmc4.js → cynefinDiagram-5FMLGOSQ-D87ENxS0.js} +1 -1
  76. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-CPb2yRsU.js → cynefinDiagram-5FMLGOSQ-DNRKTIHx.js} +1 -1
  77. package/dist-embed/chunks/{da-DK-5WZEPLOC-CHQloSoX.js → da-DK-5WZEPLOC-Ck3vidj3.js} +1 -1
  78. package/dist-embed/chunks/{dagre-GXQ25YYZ-CSSSVwOB.js → dagre-GXQ25YYZ-BOhThFKd.js} +1 -1
  79. package/dist-embed/chunks/{dagre-GXQ25YYZ-bjTeZGWE.js → dagre-GXQ25YYZ-DscCD5Uq.js} +1 -1
  80. package/dist-embed/chunks/{de-DE-XR44H4JA-C-Hq84pe.js → de-DE-XR44H4JA-CPZgrOuc.js} +1 -1
  81. package/dist-embed/chunks/{diagram-S7CK7UJ4-CFdSwdyc.js → diagram-S7CK7UJ4-CUhme3Bl.js} +1 -1
  82. package/dist-embed/chunks/{diagram-S7CK7UJ4-CFDVHfda.js → diagram-S7CK7UJ4-zDQduoQy.js} +1 -1
  83. package/dist-embed/chunks/{diagram-UQ7AKVKN-DDaeau23.js → diagram-UQ7AKVKN-BxhQPjAM.js} +1 -1
  84. package/dist-embed/chunks/{diagram-UQ7AKVKN-GZbDy6ob.js → diagram-UQ7AKVKN-Byi-v8UN.js} +1 -1
  85. package/dist-embed/chunks/{diagram-VSXAHHWV-nXDiS81a.js → diagram-VSXAHHWV-CqihYkDH.js} +1 -1
  86. package/dist-embed/chunks/{diagram-VSXAHHWV-C6q67wko.js → diagram-VSXAHHWV-au-v2v9D.js} +1 -1
  87. package/dist-embed/chunks/{diagram-VX7I27RA-DQUkfMrD.js → diagram-VX7I27RA-Cd5PaF_n.js} +1 -1
  88. package/dist-embed/chunks/{diagram-VX7I27RA-CYLfpYa4.js → diagram-VX7I27RA-ETzwrw79.js} +1 -1
  89. package/dist-embed/chunks/{diagram-Z3DM3KII-DZziYptV.js → diagram-Z3DM3KII-AcMuRFo5.js} +1 -1
  90. package/dist-embed/chunks/{diagram-Z3DM3KII-v-9naUk_.js → diagram-Z3DM3KII-DkbsvY2A.js} +1 -1
  91. package/dist-embed/chunks/{document-BpXPH_dr.js → document-Dluvp7zl.js} +1 -1
  92. package/dist-embed/chunks/{drivecontents-Bg9_6Kmo.js → drivecontents-CxwZz_5W.js} +1 -1
  93. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-EvDUmZgJ.js → ebnfDiagram-PWID7BFC-BrEs-SB2.js} +1 -1
  94. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-CDmryeYY.js → ebnfDiagram-PWID7BFC-DuWfMZcD.js} +1 -1
  95. package/dist-embed/chunks/{edges-b2856ca0-CTakYT6h.js → edges-b2856ca0-Czd3-xvj.js} +1 -1
  96. package/dist-embed/chunks/{el-GR-BZB4AONW-MTzGcSsP.js → el-GR-BZB4AONW-CjQSkw0P.js} +1 -1
  97. package/dist-embed/chunks/{erDiagram-5d81789a-CpiBBm7t.js → erDiagram-5d81789a-JegaF4gy.js} +1 -1
  98. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-B2QZDDaO.js → erDiagram-RLTQ6QDP-Cpn6_cd1.js} +1 -1
  99. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-hsnql-YF.js → erDiagram-RLTQ6QDP-xubaXuKR.js} +1 -1
  100. package/dist-embed/chunks/{es-ES-U4NZUMDT-Thj-4Rwn.js → es-ES-U4NZUMDT-CQz3Tsxk.js} +1 -1
  101. package/dist-embed/chunks/{eu-ES-A7QVB2H4-BEEyNQo-.js → eu-ES-A7QVB2H4-DPwxHXvP.js} +1 -1
  102. package/dist-embed/chunks/{fa-IR-HGAKTJCU-CtUGmNBZ.js → fa-IR-HGAKTJCU-DlQyRFJP.js} +1 -1
  103. package/dist-embed/chunks/{fi-FI-Z5N7JZ37-6GMgpkSu.js → fi-FI-Z5N7JZ37-BL9Dv0rT.js} +1 -1
  104. package/dist-embed/chunks/{flowDb-185abca5-D4uRRPhl.js → flowDb-185abca5-BN_8lgCO.js} +1 -1
  105. package/dist-embed/chunks/{flowDiagram-1629c991-B999anFV.js → flowDiagram-1629c991-YRlRqB59.js} +1 -1
  106. package/dist-embed/chunks/{flowDiagram-HODETNUW-DY4I6lzA.js → flowDiagram-HODETNUW-CzRvxVGK.js} +1 -1
  107. package/dist-embed/chunks/{flowDiagram-HODETNUW-D4E8W9uH.js → flowDiagram-HODETNUW-lW-icIxi.js} +1 -1
  108. package/dist-embed/chunks/{flowDiagram-v2-1d953310-2W9bzV_S.js → flowDiagram-v2-1d953310-DBFSFroi.js} +1 -1
  109. package/dist-embed/chunks/{flowchart-elk-definition-6df44142-Cz-ICcxz.js → flowchart-elk-definition-6df44142-RjL83g27.js} +1 -1
  110. package/dist-embed/chunks/{fr-FR-RHASNOE6-BakNCbxj.js → fr-FR-RHASNOE6-xB7HyFVv.js} +1 -1
  111. package/dist-embed/chunks/{ganttDiagram-3b0b3873-CR9gwUWB.js → ganttDiagram-3b0b3873-Dowe9cKl.js} +1 -1
  112. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-CoCfE73i.js → ganttDiagram-EL5Y4UJY-CLaynGwe.js} +1 -1
  113. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-cZgkz4jA.js → ganttDiagram-EL5Y4UJY-CNQPBdAP.js} +1 -1
  114. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-CZEgVaQ_.js → gitGraphDiagram-WWUBYQGX-CDuBbPX3.js} +1 -1
  115. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-xXoxdFf9.js → gitGraphDiagram-WWUBYQGX-CupHqYWl.js} +1 -1
  116. package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-NdofvPL5.js → gitGraphDiagram-f01e8bc2-C06Sje1n.js} +1 -1
  117. package/dist-embed/chunks/{gl-ES-HMX3MZ6V-Cwkb9OPk.js → gl-ES-HMX3MZ6V-BX50ltap.js} +1 -1
  118. package/dist-embed/chunks/{he-IL-6SHJWFNN-BaMmvCkr.js → he-IL-6SHJWFNN-DR3hLzYG.js} +1 -1
  119. package/dist-embed/chunks/{hi-IN-IWLTKZ5I-1aWewhep.js → hi-IN-IWLTKZ5I-C3bSDqVc.js} +1 -1
  120. package/dist-embed/chunks/{hu-HU-A5ZG7DT2-BIHI23BQ.js → hu-HU-A5ZG7DT2--mRUDQG6.js} +1 -1
  121. package/dist-embed/chunks/{id-ID-SAP4L64H-CYpgmx8X.js → id-ID-SAP4L64H-D6psdwdp.js} +1 -1
  122. package/dist-embed/chunks/{index-W7TVoWP5.js → index-3O3ob63z.js} +15 -15
  123. package/dist-embed/chunks/{index-KgE-JGae.js → index-7F_pA42X.js} +4 -4
  124. package/dist-embed/chunks/{index-9bae90f3-D4JbZiwv.js → index-9bae90f3-BY7E8HZU.js} +1 -1
  125. package/dist-embed/chunks/{index-CMYyiALV.js → index-Azo_wV3K.js} +1 -1
  126. package/dist-embed/chunks/{index-BFPUYxvD.js → index-B063q-PC.js} +4 -4
  127. package/dist-embed/chunks/index-B0KVfQGJ.js +1 -0
  128. package/dist-embed/chunks/{index-BRBFWMMG.js → index-B2He8CnP.js} +1 -1
  129. package/dist-embed/chunks/{index-BAr0Q6NS.js → index-BExwmtFS.js} +1 -1
  130. package/dist-embed/chunks/{index-B3WvcNQa.js → index-BJhxZF_K.js} +1 -1
  131. package/dist-embed/chunks/{index-CXL3UCHy.js → index-BYMZi_1t.js} +1 -1
  132. package/dist-embed/chunks/{index-wovGU2zp.js → index-BblwlEJB.js} +1 -1
  133. package/dist-embed/chunks/{index-Fzz2KjFM.js → index-BdvS7Q4t.js} +1 -1
  134. package/dist-embed/chunks/{index-BbucLMre.js → index-BhU2ra4k.js} +3 -3
  135. package/dist-embed/chunks/{index-j-oeqTuo.js → index-BipXK1tF.js} +1 -1
  136. package/dist-embed/chunks/{index-1wTrAXI1.js → index-BlWZloLe.js} +3 -3
  137. package/dist-embed/chunks/{index-b1yzCiTq.js → index-BzXMsI1v.js} +1 -1
  138. package/dist-embed/chunks/{index-CPY91aGL.js → index-BzxtV5-v.js} +1 -1
  139. package/dist-embed/chunks/{index-C17RrmNV.js → index-C01nR1dW.js} +1 -1
  140. package/dist-embed/chunks/{index-t_gNTVoL.js → index-C643Hfu1.js} +1 -1
  141. package/dist-embed/chunks/{index-DMKsCn-y.js → index-C6wF35Kk.js} +10 -10
  142. package/dist-embed/chunks/{index-BhSMzuKq.js → index-C8IekrmL.js} +1 -1
  143. package/dist-embed/chunks/{index-BxjlpSy4.js → index-C9CpG6Nf.js} +1 -1
  144. package/dist-embed/chunks/{index-BUhqZVtg.js → index-CA8D7U2s.js} +2 -2
  145. package/dist-embed/chunks/{index-EmZm7_bH.js → index-CUL9WiLS.js} +5 -5
  146. package/dist-embed/chunks/{index-DeVZ-nmF.js → index-Cknn3VQD.js} +1 -1
  147. package/dist-embed/chunks/{index-BJ7Yskx5.js → index-CpcHHQd7.js} +1 -1
  148. package/dist-embed/chunks/{index-wzK_9qZx.js → index-CvBxCcaE.js} +1 -1
  149. package/dist-embed/chunks/{index-DkUimZI8.js → index-CzXnKkqM.js} +1 -1
  150. package/dist-embed/chunks/{index-Ck-wonpc.js → index-D0DBuFMt.js} +1 -1
  151. package/dist-embed/chunks/{index-CC-Ht79i.js → index-D1lY79hS.js} +4 -4
  152. package/dist-embed/chunks/{index-BFLtEBuP.js → index-DB46n9Tf.js} +2 -2
  153. package/dist-embed/chunks/{index-B7nmHsEo.js → index-DToDguC3.js} +1 -1
  154. package/dist-embed/chunks/{index-Bi5hexj-.js → index-DVDREi21.js} +1 -1
  155. package/dist-embed/chunks/{index-D18sf241.js → index-DVUMPcVw.js} +1 -1
  156. package/dist-embed/chunks/{index-ZZnjmFwm.js → index-DcZQ2Oqj.js} +1 -1
  157. package/dist-embed/chunks/{index-bRwN_nxZ.js → index-DvWWLOj6.js} +1 -1
  158. package/dist-embed/chunks/{index-Clp8quV1.js → index-Dv_XGY6Q.js} +1 -1
  159. package/dist-embed/chunks/{index-C3oDHYfa.js → index-DxsDy6PY.js} +1 -1
  160. package/dist-embed/chunks/{index-en9Yf1Yz.js → index-EpYurdzk.js} +6 -6
  161. package/dist-embed/chunks/{index-DIOcQUrz.js → index-MTdX216X.js} +1 -1
  162. package/dist-embed/chunks/{index-B2OWWcCj.js → index-YqGHzM2S.js} +1 -1
  163. package/dist-embed/chunks/{index-BvvaLLhn.js → index-a51XM5L8.js} +3 -3
  164. package/dist-embed/chunks/{index-CsZ2HycN.js → index-jy9kOmqu.js} +1 -1
  165. package/dist-embed/chunks/{index-e5PkgYFg.js → index-kpqZuE4J.js} +1 -1
  166. package/dist-embed/chunks/{index-DtlUttQj.js → index-qsUgit40.js} +1 -1
  167. package/dist-embed/chunks/{index-Cq19rGjf.js → index-rfsiH_M6.js} +1 -1
  168. package/dist-embed/chunks/{index-BYQwy0Zx.js → index-s3hayhRS.js} +2 -2
  169. package/dist-embed/chunks/{index.esm-RCuogyl2.js → index.esm-CWygaJYM.js} +1 -1
  170. package/dist-embed/chunks/{index.esm-CVNfNVDy.js → index.esm-DYeUXS4c.js} +1 -1
  171. package/dist-embed/chunks/{infoDiagram-27XIBGKW-DpFWmHEH.js → infoDiagram-27XIBGKW-Ctm-zk09.js} +1 -1
  172. package/dist-embed/chunks/{infoDiagram-27XIBGKW-DRf2y76w.js → infoDiagram-27XIBGKW-DRzH33_4.js} +1 -1
  173. package/dist-embed/chunks/{infoDiagram-a29d40f1-CehVkLUM.js → infoDiagram-a29d40f1-c78-ZMuT.js} +1 -1
  174. package/dist-embed/chunks/{isEqual-BybBNsZK.js → isEqual-niFNV5MZ.js} +1 -1
  175. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-C_d1mmp3.js → ishikawaDiagram-5VMMS53U-CILSTTqm.js} +1 -1
  176. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-B534qRQJ.js → ishikawaDiagram-5VMMS53U-DKv5KL85.js} +1 -1
  177. package/dist-embed/chunks/{it-IT-JPQ66NNP-CLcqplyX.js → it-IT-JPQ66NNP-BfrG_atL.js} +1 -1
  178. package/dist-embed/chunks/{ja-JP-DBVTYXUO-u8Qe6tR7.js → ja-JP-DBVTYXUO-sahpmNGY.js} +1 -1
  179. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-DEeA8WJr.js → journeyDiagram-3NMN7TZE-CSMQRlsr.js} +1 -1
  180. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-C0GQLJYz.js → journeyDiagram-3NMN7TZE-DlMPiHSP.js} +1 -1
  181. package/dist-embed/chunks/{journeyDiagram-95396277-Cwx_BI95.js → journeyDiagram-95396277-VzHClVrX.js} +1 -1
  182. package/dist-embed/chunks/{kaa-6HZHGXH3-BG2kx50I.js → kaa-6HZHGXH3-BrkhtXQj.js} +1 -1
  183. package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-CSYUpRxd.js → kab-KAB-ZGHBKWFO-DwtFIV_I.js} +1 -1
  184. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-DucvIyR1.js → kanban-definition-UXKFOSKX-BkxvAXq2.js} +1 -1
  185. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-Dww2l0wQ.js → kanban-definition-UXKFOSKX-esf1amn7.js} +1 -1
  186. package/dist-embed/chunks/{kk-KZ-P5N5QNE5-CpBMgHAz.js → kk-KZ-P5N5QNE5-UxN1LGH5.js} +1 -1
  187. package/dist-embed/chunks/{km-KH-HSX4SM5Z-CoMUUQMb.js → km-KH-HSX4SM5Z-B7lolfpy.js} +1 -1
  188. package/dist-embed/chunks/{ko-KR-MTYHY66A-DwxY8CGI.js → ko-KR-MTYHY66A-CnxefCaN.js} +1 -1
  189. package/dist-embed/chunks/{ku-TR-6OUDTVRD-UoNYUfm0.js → ku-TR-6OUDTVRD-Bt7bmFnv.js} +1 -1
  190. package/dist-embed/chunks/{layout-DiAMrtPi.js → layout-D7Mk1riq.js} +1 -1
  191. package/dist-embed/chunks/{layout-LNJhMVxV.js → layout-Sl9Lf6Ae.js} +1 -1
  192. package/dist-embed/chunks/{lexicalHooks-DEzWXVZY.js → lexicalHooks-DKF-DsxG.js} +1 -1
  193. package/dist-embed/chunks/{lt-LT-XHIRWOB4-Dr4uXaEj.js → lt-LT-XHIRWOB4-D6qkXs9m.js} +1 -1
  194. package/dist-embed/chunks/{lv-LV-5QDEKY6T-CNC56J-_.js → lv-LV-5QDEKY6T-D8g27j86.js} +1 -1
  195. package/dist-embed/chunks/{mermaid.core-huvnfV8t.js → mermaid.core-BhiOhb5K.js} +3 -3
  196. package/dist-embed/chunks/{mermaid.core-Dw1n-Hii.js → mermaid.core-CRlujv29.js} +5 -5
  197. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-DWUezf-k.js → mindmap-definition-YA3MSWOX-BJQsz4H1.js} +1 -1
  198. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-DKQu2lXp.js → mindmap-definition-YA3MSWOX-eCxs0BsL.js} +1 -1
  199. package/dist-embed/chunks/{mindmap-definition-e4c1d938-DSDPusnk.js → mindmap-definition-e4c1d938-DoGG9eDO.js} +1 -1
  200. package/dist-embed/chunks/{model-BHONoBA6.js → model-BziAhKNp.js} +1 -1
  201. package/dist-embed/chunks/{mr-IN-CRQNXWMA-BKWa9nzZ.js → mr-IN-CRQNXWMA-CMbVGyJm.js} +1 -1
  202. package/dist-embed/chunks/{my-MM-5M5IBNSE-bwAzOWhV.js → my-MM-5M5IBNSE-B-KPsx1j.js} +1 -1
  203. package/dist-embed/chunks/{nb-NO-T6EIAALU-CkpsChor.js → nb-NO-T6EIAALU-Cl7QLAt7.js} +1 -1
  204. package/dist-embed/chunks/{nl-NL-IS3SIHDZ-COVk4rlb.js → nl-NL-IS3SIHDZ-Brzte_o2.js} +1 -1
  205. package/dist-embed/chunks/{nn-NO-6E72VCQL-DlyFF-C1.js → nn-NO-6E72VCQL-CzCKEx02.js} +1 -1
  206. package/dist-embed/chunks/{oc-FR-POXYY2M6-CFDosV2C.js → oc-FR-POXYY2M6-DA72PkVY.js} +1 -1
  207. package/dist-embed/chunks/{pa-IN-N4M65BXN-BKRB3O0U.js → pa-IN-N4M65BXN-CzkFYtL0.js} +1 -1
  208. package/dist-embed/chunks/{pegDiagram-XKGWAZYB-ChXFZFas.js → pegDiagram-XKGWAZYB-CD3xZvKE.js} +1 -1
  209. package/dist-embed/chunks/{pegDiagram-XKGWAZYB-BUPTGFu3.js → pegDiagram-XKGWAZYB-CV-d6HkK.js} +1 -1
  210. package/dist-embed/chunks/{percentages-BXMCSKIN-D7pnqUsZ.js → percentages-BXMCSKIN-mjCCp4uI.js} +6 -6
  211. package/dist-embed/chunks/{pica-BQREYloS.js → pica-5TeyVfIV.js} +1 -1
  212. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-DAuVz3z-.js → pieDiagram-E7YTZNPT-DipS--g7.js} +1 -1
  213. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-BORvsKK0.js → pieDiagram-E7YTZNPT-toANOh_O.js} +1 -1
  214. package/dist-embed/chunks/{pieDiagram-c941bede-FM1PHjj3.js → pieDiagram-c941bede-DytniBrW.js} +1 -1
  215. package/dist-embed/chunks/{pl-PL-T2D74RX3-C5r2Tds7.js → pl-PL-T2D74RX3-F4ebFTYK.js} +1 -1
  216. package/dist-embed/chunks/{plugin-BoxsYxwM.js → plugin-Cf3g-jak.js} +1 -1
  217. package/dist-embed/chunks/plugin-DA_NCYQX.js +1 -0
  218. package/dist-embed/chunks/{pt-BR-5N22H2LF-CDnT98bW.js → pt-BR-5N22H2LF-B5i8LuE4.js} +1 -1
  219. package/dist-embed/chunks/{pt-PT-UZXXM6DQ-C6c4SPk1.js → pt-PT-UZXXM6DQ-BQ7hfRRg.js} +1 -1
  220. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-DpGcSrR9.js → quadrantDiagram-AXDQQJYC-D_j5dzK-.js} +1 -1
  221. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-CZe_C7e2.js → quadrantDiagram-AXDQQJYC-DlhtjZ-k.js} +1 -1
  222. package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-DZNznYqD.js → quadrantDiagram-cf8b8fe0-BQ2yjLYu.js} +1 -1
  223. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-CuL_zbZ8.js → railroadDiagram-O6MQD6OU-CZFkdwSz.js} +1 -1
  224. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-BnCn-tIV.js → railroadDiagram-O6MQD6OU-aWlxxhLc.js} +1 -1
  225. package/dist-embed/chunks/{renderer-lVFw9lw7.js → renderer-2D5v6hpK.js} +1 -1
  226. package/dist-embed/chunks/{requirementDiagram-53bda41b-BLToEv8I.js → requirementDiagram-53bda41b-CWV_b9FE.js} +1 -1
  227. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-KU7DW76t.js → requirementDiagram-BXWQKSXE-BSF51uZZ.js} +1 -1
  228. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-W6Oaw9v0.js → requirementDiagram-BXWQKSXE-EVwiX2gg.js} +1 -1
  229. package/dist-embed/chunks/{ro-RO-JPDTUUEW-CW6pbzEZ.js → ro-RO-JPDTUUEW-BdcZRS6h.js} +1 -1
  230. package/dist-embed/chunks/{ru-RU-B4JR7IUQ-CbaAJG0w.js → ru-RU-B4JR7IUQ-Cta1z8f6.js} +1 -1
  231. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-y5tPDHfE.js → sankeyDiagram-P5KCCOFB-BqD6w06O.js} +1 -1
  232. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-1UXJ4wHP.js → sankeyDiagram-P5KCCOFB-t6rHaBZJ.js} +1 -1
  233. package/dist-embed/chunks/{sankeyDiagram-c3ef121a-6gF3bcjb.js → sankeyDiagram-c3ef121a-C9O52Zx9.js} +1 -1
  234. package/dist-embed/chunks/{sequenceDiagram-82a5b84f-CglVrG1T.js → sequenceDiagram-82a5b84f-Dga-BwWi.js} +1 -1
  235. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-CG-4aOyN.js → sequenceDiagram-WJ2MYXX4-DphVeQVS.js} +1 -1
  236. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-DVcXqRnq.js → sequenceDiagram-WJ2MYXX4-ih6W0378.js} +1 -1
  237. package/dist-embed/chunks/{sessions-3PQsLINe.js → sessions-APuuDN3K.js} +2 -2
  238. package/dist-embed/chunks/{si-LK-N5RQ5JYF-BZkUjpXF.js → si-LK-N5RQ5JYF-DYy_OKHx.js} +1 -1
  239. package/dist-embed/chunks/{sizeCapture-INFHLROL-e294GOp7.js → sizeCapture-INFHLROL-CxIMCruL.js} +1 -1
  240. package/dist-embed/chunks/{sizeCapture-INFHLROL-CCZ7JXfm.js → sizeCapture-INFHLROL-o0dzt8-T.js} +1 -1
  241. package/dist-embed/chunks/{sk-SK-C5VTKIMK-DsfWgpPU.js → sk-SK-C5VTKIMK-B4A8rgzq.js} +1 -1
  242. package/dist-embed/chunks/{sl-SI-NN7IZMDC-Kx0FqxKU.js → sl-SI-NN7IZMDC-Dn2yU1RA.js} +1 -1
  243. package/dist-embed/chunks/{stateDiagram-43e79a5f-DktiQR1L.js → stateDiagram-43e79a5f-RBFnM6HD.js} +1 -1
  244. package/dist-embed/chunks/{stateDiagram-D77RDMKH-Czz7slb9.js → stateDiagram-D77RDMKH-DUbaZs3a.js} +1 -1
  245. package/dist-embed/chunks/{stateDiagram-D77RDMKH-DvgDxPXs.js → stateDiagram-D77RDMKH-R5RRRvFY.js} +1 -1
  246. package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-CGEkaZYz.js → stateDiagram-v2-2041ed4f-O5FpnsEz.js} +1 -1
  247. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-CbzbC1qh.js → stateDiagram-v2-MP3YSRHH-CxTXB7mT.js} +1 -1
  248. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-DGG9ROyK.js → stateDiagram-v2-MP3YSRHH-xKTLvXGN.js} +1 -1
  249. package/dist-embed/chunks/{styles-455b33cd-BpfBULhz.js → styles-455b33cd-D4Xv2qYx.js} +1 -1
  250. package/dist-embed/chunks/{styles-f932cba9-DsM5quNh.js → styles-f932cba9-BRIqeB8k.js} +1 -1
  251. package/dist-embed/chunks/{styles-fcc2142b-bC7I59Fx.js → styles-fcc2142b-CSNd2DtU.js} +1 -1
  252. package/dist-embed/chunks/{subset-shared.chunk-DM3l9OuH.js → subset-shared.chunk-SugOGKH0.js} +1 -1
  253. package/dist-embed/chunks/{subset-worker.chunk-4w4yibm3.js → subset-worker.chunk-CHn-RJwQ.js} +1 -1
  254. package/dist-embed/chunks/{sv-SE-XGPEYMSR-DY0ryO-L.js → sv-SE-XGPEYMSR-DIGNKjA1.js} +1 -1
  255. package/dist-embed/chunks/{svgDrawCommon-148a3cd9-OC_CIhNw.js → svgDrawCommon-148a3cd9-ioBjWI45.js} +1 -1
  256. package/dist-embed/chunks/{swimlanes-42K2YHIH-DLiqjxvc.js → swimlanes-42K2YHIH-BPXSOfWl.js} +1 -1
  257. package/dist-embed/chunks/{swimlanes-42K2YHIH-nfpJsGfW.js → swimlanes-42K2YHIH-DID4P1mJ.js} +1 -1
  258. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-DVkRheaE.js → swimlanesDiagram-VR7AAH4N-B216TpFb.js} +1 -1
  259. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-DjeQ0TlI.js → swimlanesDiagram-VR7AAH4N-C5LAWW5q.js} +1 -1
  260. package/dist-embed/chunks/{ta-IN-2NMHFXQM-CWpIs0i0.js → ta-IN-2NMHFXQM-h5n2V9ms.js} +1 -1
  261. package/dist-embed/chunks/{th-TH-HPSO5L25-Cwkcfb3u.js → th-TH-HPSO5L25-DPUFV7b6.js} +1 -1
  262. package/dist-embed/chunks/{timeline-definition-24CTP7MA-CapVlXMl.js → timeline-definition-24CTP7MA-CsrTDzso.js} +1 -1
  263. package/dist-embed/chunks/{timeline-definition-24CTP7MA-eOK0mNc7.js → timeline-definition-24CTP7MA-Y3tUsmSp.js} +1 -1
  264. package/dist-embed/chunks/{timeline-definition-7545f45a-afx9iuZR.js → timeline-definition-7545f45a-Dwe7O50H.js} +1 -1
  265. package/dist-embed/chunks/{tokens-BfuLIPUq.js → tokens-DTIgYcNS.js} +1 -1
  266. package/dist-embed/chunks/{tr-TR-DEFEU3FU-BqJZZl-Y.js → tr-TR-DEFEU3FU-BezJkdMx.js} +1 -1
  267. package/dist-embed/chunks/{uk-UA-QMV73CPH-Dg213mG4.js → uk-UA-QMV73CPH-CqILlosm.js} +1 -1
  268. package/dist-embed/chunks/{usePrimerThemeBridge-D_1NuGKb.js → usePrimerThemeBridge-CoHussa9.js} +1 -1
  269. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-D12hHdDQ.js → vennDiagram-4TSXK5OY-BhVdyHxt.js} +1 -1
  270. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-CJ0VIZqI.js → vennDiagram-4TSXK5OY-ClTlC2ql.js} +1 -1
  271. package/dist-embed/chunks/{vi-VN-M7AON7JQ-DY94NKxF.js → vi-VN-M7AON7JQ-CnkPVQ0a.js} +1 -1
  272. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-B1FfO2GD.js → wardleyDiagram-VM6X3IG4-DbWIMpvU.js} +1 -1
  273. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-BfuBJbTV.js → wardleyDiagram-VM6X3IG4-kS16z5iB.js} +1 -1
  274. package/dist-embed/chunks/{xychartDiagram-3f383b91-BMDhPCCG.js → xychartDiagram-3f383b91-DYoT_EjG.js} +1 -1
  275. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-xLO3w9Bz.js → xychartDiagram-S5SC5T6Z-CdwuwQAF.js} +1 -1
  276. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-DZ-XUHKl.js → xychartDiagram-S5SC5T6Z-KeQp-cQ1.js} +1 -1
  277. package/dist-embed/chunks/{zh-CN-LNUGB5OW-B6I9A7sA.js → zh-CN-LNUGB5OW-CNdfctAT.js} +1 -1
  278. package/dist-embed/chunks/{zh-HK-E62DVLB3-D3oqgDOt.js → zh-HK-E62DVLB3-DEXwa5-T.js} +1 -1
  279. package/dist-embed/chunks/{zh-TW-RAJ6MFWO-CYwgY0Jo.js → zh-TW-RAJ6MFWO-BF7cCYAK.js} +1 -1
  280. package/dist-embed/datalayer-app-main.js +49 -49
  281. package/lib/apps/apps/appspec.js +22 -0
  282. package/lib/apps/core/index.d.ts +8 -0
  283. package/lib/apps/embed/AppEmbed.js +10 -13
  284. package/lib/apps/embed/hostBridge.d.ts +47 -13
  285. package/lib/apps/embed/hostBridge.js +135 -18
  286. package/lib/apps/index.d.ts +2 -2
  287. package/lib/apps/index.js +2 -2
  288. package/lib/apps/plugins/agents/DatalayerAgentBridge.js +9 -14
  289. package/lib/apps/plugins/agents/index.d.ts +1 -1
  290. package/lib/apps/plugins/agents/index.js +1 -1
  291. package/lib/apps/plugins/agents/plugin.d.ts +10 -0
  292. package/lib/apps/plugins/agents/plugin.js +10 -0
  293. package/lib/apps/plugins/app-elements/QuestionView.d.ts +5 -3
  294. package/lib/apps/plugins/app-elements/QuestionView.js +15 -2
  295. package/lib/apps/plugins/app-page/appPageModel.d.ts +6 -8
  296. package/lib/apps/plugins/app-page/appPageModel.js +0 -2
  297. package/lib/apps/plugins/app-page/pageRun.d.ts +2 -2
  298. package/lib/apps/plugins/app-page/pageRun.js +3 -3
  299. package/lib/apps/plugins/chat/ChatView.js +22 -3
  300. package/lib/chat/base/ChatBase.js +33 -3
  301. package/lib/chat/base/uiFiles.d.ts +29 -0
  302. package/lib/chat/base/uiFiles.js +69 -0
  303. package/lib/chat/messages/ChatMessageList.d.ts +7 -2
  304. package/lib/chat/messages/ChatMessageList.js +2 -2
  305. package/lib/examples/ProtocolSignedRequestsExample.d.ts +10 -0
  306. package/lib/examples/ProtocolSignedRequestsExample.js +41 -0
  307. package/lib/examples/ProtocolUcpCheckoutExample.d.ts +10 -0
  308. package/lib/examples/ProtocolUcpCheckoutExample.js +59 -0
  309. package/lib/examples/example-selector.js +2 -0
  310. package/lib/examples/exampleGroups.d.ts +1 -1
  311. package/lib/examples/exampleGroups.js +4 -0
  312. package/lib/examples/index.d.ts +2 -0
  313. package/lib/examples/index.js +2 -0
  314. package/lib/examples/protocols/signedRequestsDemo.d.ts +27 -0
  315. package/lib/examples/protocols/signedRequestsDemo.js +59 -0
  316. package/lib/examples/protocols/ucpCheckoutDemo.d.ts +36 -0
  317. package/lib/examples/protocols/ucpCheckoutDemo.js +68 -0
  318. package/lib/protocols/a2a/index.js +1 -0
  319. package/lib/protocols/agentic-commerce/index.js +1 -0
  320. package/lib/protocols/core.d.ts +6 -0
  321. package/lib/protocols/mcp/index.js +1 -0
  322. package/lib/protocols/pact/index.js +1 -0
  323. package/lib/protocols/ucp/index.js +1 -0
  324. package/lib/protocols/ucp/merchant.d.ts +15 -0
  325. package/lib/protocols/ucp/merchant.js +257 -0
  326. package/lib/protocols/web-bot-auth/index.js +1 -0
  327. package/lib/specs/apps.js +87 -6
  328. package/lib/specs/appspecSchema.js +43 -0
  329. package/lib/types/agentspecs.d.ts +18 -0
  330. package/lib/types/protocol.d.ts +7 -0
  331. package/package.json +2 -2
  332. package/dist-embed/chunks/Avatar-DbU3YP4x.js +0 -1
  333. package/dist-embed/chunks/ChatView-BpKZPdcp.js +0 -32
  334. package/dist-embed/chunks/DatalayerAgentBridge-Bz2KWRXK.js +0 -1
  335. package/dist-embed/chunks/YouTubePlugin-CjODyxZ2.js +0 -1
  336. package/dist-embed/chunks/index-DlK9qLPz.js +0 -1
  337. package/dist-embed/chunks/plugin-Dz5L6Xn8.js +0 -1
@@ -0,0 +1,68 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * The *UCP checkout* gallery example's work (AGENT_PROTOCOLS EX-10, after
7
+ * EX-04): the UCP client buying from *Example Store*, the local test
8
+ * merchant running in the page (`protocols/ucp/merchant`). A checkout is
9
+ * proposed as an exact, revisioned purchase; completing it asks the host's
10
+ * approver — the page's card — once, and the proposal is spent whatever the
11
+ * answer. The payment is the test handler's; its token is never shown.
12
+ *
13
+ * @module examples/protocols/ucpCheckoutDemo
14
+ */
15
+ import { contribution, definePlugin, } from '@datalayer/reactor';
16
+ import { buildProtocolsReactor } from '../../protocols/agentProtocols';
17
+ import { UcpApprovers, UcpClient, UcpPaymentInstruments, checkoutSummary, proposalSummary, } from '../../protocols/ucp';
18
+ import { EXAMPLE_STORE_HANDLER_ID, exampleStore, } from '../../protocols/ucp/merchant';
19
+ export const STORE = 'https://store.example';
20
+ export const AGENT_PROFILE = 'https://agent.example/.well-known/ucp';
21
+ /** The test payment's token: held by the host, never in a summary or a proposal. */
22
+ export const TEST_TOKEN = 'tok_test_gallery_never_shown';
23
+ /** The client, the store, and a host whose approver is `decide`. */
24
+ export function ucpCheckoutDemo(decide) {
25
+ const store = exampleStore(STORE);
26
+ const host = definePlugin({
27
+ name: 'gallery-host',
28
+ contributes: [
29
+ contribution(UcpApprovers, { approve: decide }, { id: 'person', order: 10 }),
30
+ contribution(UcpPaymentInstruments, {
31
+ instrument: async () => ({
32
+ id: 'pi_1',
33
+ handler_id: EXAMPLE_STORE_HANDLER_ID,
34
+ type: 'card',
35
+ credential: { type: 'PAYMENT_GATEWAY', token: TEST_TOKEN },
36
+ }),
37
+ }, { id: 'custody', order: 10 }),
38
+ ],
39
+ });
40
+ return {
41
+ client: new UcpClient(STORE, AGENT_PROFILE, store.fetch),
42
+ reactor: buildProtocolsReactor([host]),
43
+ orders: store.orders,
44
+ };
45
+ }
46
+ /** Find the tea, put `quantity` in a checkout with the buyer's email, and propose it. */
47
+ export async function proposeTea(demo, quantity = 2, email = 'ana@example.com') {
48
+ const [product] = await demo.client.search('sencha');
49
+ const created = await demo.client.createCheckout([
50
+ { id: product.id, quantity },
51
+ ]);
52
+ await demo.client.updateCheckout(created.id, { buyer: { email } });
53
+ const proposal = await demo.client.proposeCompletion(created.id);
54
+ return { proposal, says: proposalSummary(proposal) };
55
+ }
56
+ /** Complete the proposal: the approver is asked; the order, or why not. */
57
+ export async function buy(demo, proposal) {
58
+ try {
59
+ const done = checkoutSummary(await demo.client.complete(proposal, demo.reactor));
60
+ return {
61
+ ok: true,
62
+ says: `Bought: order ${done.order?.id}, ${done.status}.`,
63
+ };
64
+ }
65
+ catch (error) {
66
+ return { ok: false, says: `Not bought: ${error.message}.` };
67
+ }
68
+ }
@@ -56,6 +56,7 @@ export const A2APlugin = definePlugin({
56
56
  status: 'implemented',
57
57
  specification: 'https://a2a-protocol.org/latest/specification/',
58
58
  plugin: A2A_PLUGIN,
59
+ catalogue: 'a2a',
59
60
  points: EXTENSION_POINTS.map(point => point.id),
60
61
  }, { id: 'a2a', order: DEFAULT_ORDER }),
61
62
  contribution(A2AOrchestrationExtensions, orchestration, {
@@ -59,6 +59,7 @@ export const AgenticCommercePlugin = definePlugin({
59
59
  status: 'partial',
60
60
  specification: `https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/tree/main/spec/${AGENTIC_COMMERCE_VERSION}`,
61
61
  plugin: AGENTIC_COMMERCE_PLUGIN,
62
+ catalogue: 'acp',
62
63
  points: POINTS.map(point => point.id),
63
64
  }, { id: 'agentic_commerce', order: DEFAULT_ORDER }),
64
65
  ],
@@ -26,6 +26,12 @@ export interface ProtocolDescription {
26
26
  status: 'implemented' | 'partial' | 'planned';
27
27
  specification: string;
28
28
  plugin: string;
29
+ /**
30
+ * Its id in the agentspecs protocols catalogue (`agentspecs/protocols`,
31
+ * AGENT_PROTOCOLS PS-01): `web-bot-auth`, `acp`… — how Studio reads a
32
+ * runtime's answer against the catalogue (PR-50).
33
+ */
34
+ catalogue: string;
29
35
  /** The contribution points its plugin declares, its extensions' included. */
30
36
  points: string[];
31
37
  }
@@ -31,6 +31,7 @@ export const McpPlugin = definePlugin({
31
31
  status: 'implemented',
32
32
  specification: 'https://modelcontextprotocol.io/specification',
33
33
  plugin: MCP_PLUGIN,
34
+ catalogue: 'mcp',
34
35
  points: [],
35
36
  }, { id: 'mcp', order: DEFAULT_ORDER }),
36
37
  ],
@@ -69,6 +69,7 @@ export const PactPlugin = definePlugin({
69
69
  status: 'partial',
70
70
  specification: 'https://github.com/openpactprotocol/openpactprotocol/blob/main/docs/spec.md',
71
71
  plugin: PACT_PLUGIN,
72
+ catalogue: 'pact',
72
73
  points: POINTS.map(point => point.id),
73
74
  }, { id: 'pact', order: DEFAULT_ORDER }),
74
75
  contribution(PactDelegatedProfiles, { grantType: DEVICE_CODE_GRANT }, { id: 'device-code', order: DEFAULT_ORDER }),
@@ -64,6 +64,7 @@ export const UcpPlugin = definePlugin({
64
64
  status: 'partial',
65
65
  specification: `https://ucp.dev/${UCP_VERSION}/specification/overview`,
66
66
  plugin: UCP_PLUGIN,
67
+ catalogue: 'ucp',
67
68
  points: UCP_POINTS.map(point => point.id),
68
69
  }, { id: 'ucp', order: DEFAULT_ORDER }),
69
70
  ],
@@ -0,0 +1,15 @@
1
+ /** The store's products, as the Python store lists them. */
2
+ export declare const EXAMPLE_STORE_CATALOG: Record<string, {
3
+ title: string;
4
+ price: number;
5
+ }>;
6
+ /** The one payment handler it takes, and the prefix of its test tokens. */
7
+ export declare const EXAMPLE_STORE_HANDLER_ID = "test_pay_1";
8
+ /** The store: its `fetch`, and the orders it took. */
9
+ export declare function exampleStore(base?: string): {
10
+ fetch: typeof fetch;
11
+ orders: Array<{
12
+ order: string;
13
+ checkout: string;
14
+ }>;
15
+ };
@@ -0,0 +1,257 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * *Example Store*, the local UCP test merchant, as a `fetch` (AGENT_PROTOCOLS
7
+ * EX-04, EX-10): the same catalogue, totals, email gate, idempotency and
8
+ * test payment as `agent_runtimes.protocols.ucp.merchant.ExampleStore`, so a
9
+ * page or a test buys from it with no network. A test merchant only: it keeps
10
+ * nothing beyond the page, and refuses any payment but its test handler's.
11
+ *
12
+ * @module protocols/ucp/merchant
13
+ */
14
+ import { CHECKOUT_CAPABILITY, SHOPPING_SERVICE, UCP_VERSION } from './index';
15
+ /** The store's products, as the Python store lists them. */
16
+ export const EXAMPLE_STORE_CATALOG = {
17
+ tea_sencha: { title: 'Sencha green tea, 100 g', price: 1250 },
18
+ tea_assam: { title: 'Assam black tea, 250 g', price: 1800 },
19
+ mug: { title: 'Stoneware mug', price: 2400 },
20
+ };
21
+ /** The one payment handler it takes, and the prefix of its test tokens. */
22
+ export const EXAMPLE_STORE_HANDLER_ID = 'test_pay_1';
23
+ const TEST_TOKEN_PREFIX = 'tok_test_';
24
+ const json = (body, status = 200) => new Response(JSON.stringify(body), {
25
+ status,
26
+ headers: { 'content-type': 'application/json' },
27
+ });
28
+ const refuse = (status, code, content) => json({
29
+ ucp: { version: UCP_VERSION, status: 'error' },
30
+ messages: [{ type: 'error', code, content, severity: 'recoverable' }],
31
+ }, status);
32
+ const meta = () => ({
33
+ version: UCP_VERSION,
34
+ status: 'success',
35
+ capabilities: { [CHECKOUT_CAPABILITY]: [{ version: UCP_VERSION }] },
36
+ payment_handlers: {
37
+ 'com.example.test_pay': [
38
+ {
39
+ id: EXAMPLE_STORE_HANDLER_ID,
40
+ version: UCP_VERSION,
41
+ available_instruments: [{ type: 'card' }],
42
+ config: {},
43
+ },
44
+ ],
45
+ },
46
+ });
47
+ async function fingerprint(path, body) {
48
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(path + body));
49
+ return Array.from(new Uint8Array(digest), b => b.toString(16).padStart(2, '0')).join('');
50
+ }
51
+ /** The store: its `fetch`, and the orders it took. */
52
+ export function exampleStore(base = 'https://store.example') {
53
+ const checkouts = new Map();
54
+ const replies = new Map();
55
+ const orders = [];
56
+ const render = (checkout) => {
57
+ let subtotal = 0;
58
+ const lines = checkout.lines.map((line, index) => {
59
+ const product = EXAMPLE_STORE_CATALOG[line.id];
60
+ const amount = product.price * line.quantity;
61
+ subtotal += amount;
62
+ return {
63
+ id: `li_${index + 1}`,
64
+ item: { id: line.id, title: product.title, price: product.price },
65
+ quantity: line.quantity,
66
+ totals: [
67
+ { type: 'subtotal', amount },
68
+ { type: 'total', amount },
69
+ ],
70
+ };
71
+ });
72
+ const tax = Math.round(subtotal * 0.08);
73
+ const messages = [];
74
+ if (['incomplete', 'ready_for_complete'].includes(checkout.status)) {
75
+ checkout.status = checkout.buyer?.email
76
+ ? 'ready_for_complete'
77
+ : 'incomplete';
78
+ if (!checkout.buyer?.email) {
79
+ messages.push({
80
+ type: 'error',
81
+ code: 'missing',
82
+ path: '$.buyer.email',
83
+ content: 'Buyer email is required',
84
+ severity: 'recoverable',
85
+ });
86
+ }
87
+ }
88
+ return {
89
+ ucp: meta(),
90
+ id: checkout.id,
91
+ status: checkout.status,
92
+ currency: 'USD',
93
+ line_items: lines,
94
+ totals: [
95
+ { type: 'subtotal', amount: subtotal },
96
+ { type: 'tax', amount: tax },
97
+ { type: 'total', amount: subtotal + tax },
98
+ ],
99
+ links: [{ type: 'terms_of_service', url: `${base}/terms` }],
100
+ expires_at: checkout.expiresAt,
101
+ ...(messages.length ? { messages } : {}),
102
+ ...(checkout.buyer?.email ? { buyer: checkout.buyer } : {}),
103
+ ...(checkout.order ? { order: checkout.order } : {}),
104
+ };
105
+ };
106
+ const linesOf = (body) => {
107
+ const lines = [];
108
+ for (const line of body.line_items ?? []) {
109
+ const id = line?.item?.id;
110
+ if (!(id in EXAMPLE_STORE_CATALOG)) {
111
+ return `No product ${id}`;
112
+ }
113
+ lines.push({ id, quantity: Number(line.quantity ?? 1) });
114
+ }
115
+ return lines;
116
+ };
117
+ const handle = (method, path, body) => {
118
+ if (method === 'POST' && path === '/checkout-sessions') {
119
+ const lines = linesOf(body);
120
+ if (typeof lines === 'string') {
121
+ return { status: 404, body: { messages: [{ content: lines }] } };
122
+ }
123
+ const checkout = {
124
+ id: `chk_${crypto.randomUUID().slice(0, 12)}`,
125
+ status: 'incomplete',
126
+ lines,
127
+ buyer: body.buyer ?? {},
128
+ expiresAt: new Date(Date.now() + 60 * 60 * 1000).toISOString(),
129
+ };
130
+ checkouts.set(checkout.id, checkout);
131
+ return { status: 201, body: render(checkout) };
132
+ }
133
+ const [, , id, action] = path.split('/');
134
+ const checkout = checkouts.get(id);
135
+ if (!checkout) {
136
+ return { status: 404, body: { messages: [{ content: 'No checkout' }] } };
137
+ }
138
+ if (method === 'PUT' && !action) {
139
+ if (!['incomplete', 'ready_for_complete'].includes(checkout.status)) {
140
+ return { status: 409, body: render(checkout) };
141
+ }
142
+ if (body.buyer) {
143
+ checkout.buyer = body.buyer;
144
+ }
145
+ if (body.line_items) {
146
+ const lines = linesOf(body);
147
+ if (typeof lines === 'string') {
148
+ return { status: 404, body: { messages: [{ content: lines }] } };
149
+ }
150
+ checkout.lines = lines;
151
+ }
152
+ return { status: 200, body: render(checkout) };
153
+ }
154
+ if (method === 'POST' && action === 'complete') {
155
+ if (checkout.status !== 'ready_for_complete') {
156
+ return { status: 200, body: render(checkout) };
157
+ }
158
+ const [instrument] = body.payment?.instruments ?? [{}];
159
+ const token = String(instrument?.credential?.token ?? '');
160
+ if (instrument?.handler_id !== EXAMPLE_STORE_HANDLER_ID ||
161
+ !token.startsWith(TEST_TOKEN_PREFIX)) {
162
+ return {
163
+ status: 402,
164
+ body: {
165
+ ucp: { version: UCP_VERSION, status: 'error' },
166
+ messages: [
167
+ {
168
+ type: 'error',
169
+ code: 'payment_declined',
170
+ content: 'The payment was declined',
171
+ },
172
+ ],
173
+ },
174
+ };
175
+ }
176
+ const order = {
177
+ id: `ord_${crypto.randomUUID().slice(0, 10)}`,
178
+ permalink_url: `${base}/orders/${checkout.id}`,
179
+ };
180
+ checkout.status = 'completed';
181
+ checkout.order = order;
182
+ orders.push({ order: order.id, checkout: checkout.id });
183
+ return { status: 200, body: render(checkout) };
184
+ }
185
+ if (method === 'POST' && action === 'cancel') {
186
+ if (checkout.status !== 'completed') {
187
+ checkout.status = 'canceled';
188
+ }
189
+ return { status: 200, body: render(checkout) };
190
+ }
191
+ if (method === 'GET' && !action) {
192
+ return { status: 200, body: render(checkout) };
193
+ }
194
+ return { status: 405, body: {} };
195
+ };
196
+ const fetchImpl = (async (input, init) => {
197
+ const url = new URL(String(input));
198
+ if (url.pathname === '/.well-known/ucp') {
199
+ return json({
200
+ ucp: {
201
+ version: UCP_VERSION,
202
+ services: {
203
+ [SHOPPING_SERVICE]: [
204
+ {
205
+ version: UCP_VERSION,
206
+ transport: 'rest',
207
+ endpoint: `${base}/ucp/v1`,
208
+ },
209
+ ],
210
+ },
211
+ capabilities: { [CHECKOUT_CAPABILITY]: [{ version: UCP_VERSION }] },
212
+ payment_handlers: meta().payment_handlers,
213
+ },
214
+ });
215
+ }
216
+ const headers = new Headers(init?.headers);
217
+ const agent = headers.get('UCP-Agent') ?? '';
218
+ if (!/^profile="https:\/\/[^"]+"$/.test(agent)) {
219
+ return refuse(400, 'invalid_ucp_agent', 'UCP-Agent names its profile over https');
220
+ }
221
+ if (!headers.get('Request-Id')) {
222
+ return refuse(400, 'missing_request_id', 'Request-Id is required');
223
+ }
224
+ const method = (init?.method ?? 'GET').toUpperCase();
225
+ const path = url.pathname.replace(/^\/ucp\/v1/, '');
226
+ const raw = typeof init?.body === 'string' ? init.body : '';
227
+ const body = raw ? JSON.parse(raw) : {};
228
+ if (path === '/catalog/search') {
229
+ const query = String(body.query ?? '').toLowerCase();
230
+ return json({
231
+ ucp: { version: UCP_VERSION },
232
+ products: Object.entries(EXAMPLE_STORE_CATALOG)
233
+ .filter(([, product]) => product.title.toLowerCase().includes(query))
234
+ .map(([id, product]) => ({ id, title: product.title })),
235
+ });
236
+ }
237
+ if (method === 'GET') {
238
+ const answer = handle(method, path, body);
239
+ return json(answer.body, answer.status);
240
+ }
241
+ const key = headers.get('Idempotency-Key');
242
+ if (!key) {
243
+ return refuse(400, 'missing_idempotency_key', 'Idempotency-Key is required');
244
+ }
245
+ const seen = await fingerprint(url.pathname, raw);
246
+ const replied = replies.get(key);
247
+ if (replied) {
248
+ return replied.seen === seen
249
+ ? json(replied.body, replied.status)
250
+ : refuse(409, 'idempotency_conflict', 'the key was used for another request');
251
+ }
252
+ const answer = handle(method, path, body);
253
+ replies.set(key, { seen, ...answer });
254
+ return json(answer.body, answer.status);
255
+ });
256
+ return { fetch: fetchImpl, orders };
257
+ }
@@ -324,6 +324,7 @@ export const WebBotAuthPlugin = definePlugin({
324
324
  status: 'implemented',
325
325
  specification: 'https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/',
326
326
  plugin: WEB_BOT_AUTH_PLUGIN,
327
+ catalogue: 'web-bot-auth',
327
328
  points: WEB_BOT_AUTH_POINTS.map(point => point.id),
328
329
  }, { id: 'web_bot_auth', order: DEFAULT_ORDER }),
329
330
  contribution(WebBotAuthDirectoryDiscoveries, directoryDiscovery(), {