@datalayer/agent-runtimes 1.5.7 → 1.5.9

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 (272) hide show
  1. package/dist-embed/chunks/{AgentDetails-KezohVQI.js → AgentDetails-CMBy5o1q.js} +1 -1
  2. package/dist-embed/chunks/{AgentDetailsDialog-CklhMnk7.js → AgentDetailsDialog-D2vH2Nrd.js} +1 -1
  3. package/dist-embed/chunks/{AgentInspector-CtCaRc1L.js → AgentInspector-Bd0oHNAX.js} +1 -1
  4. package/dist-embed/chunks/{AgentInspectorDialog-DB9cx3Gd.js → AgentInspectorDialog-BJUgBPAE.js} +1 -1
  5. package/dist-embed/chunks/{CellSidebarExtension-CfaJL6DQ.js → CellSidebarExtension-CYOVwk1t.js} +6 -6
  6. package/dist-embed/chunks/ChatView-DIdw1rtZ.js +32 -0
  7. package/dist-embed/chunks/{ContextPie-1vP4f-3N.js → ContextPie-B9mAKJc2.js} +1 -1
  8. package/dist-embed/chunks/{DeckComponent-82GVdsoi.js → DeckComponent-CbmzVWcF.js} +2 -2
  9. package/dist-embed/chunks/{DocumentView-SrJloJDo.js → DocumentView-BqsGfNys.js} +1 -1
  10. package/dist-embed/chunks/{EphemeralDocument-t1KulOH8.js → EphemeralDocument-DLaNvwm_.js} +1 -1
  11. package/dist-embed/chunks/{EphemeralNotebook-Co-WQWCc.js → EphemeralNotebook-jnqAJFPI.js} +1 -1
  12. package/dist-embed/chunks/{ExcalidrawComponent-5NeLUYVB.js → ExcalidrawComponent-Cb8yeXqu.js} +1 -1
  13. package/dist-embed/chunks/{ExcalidrawModal-9ZnOB03n.js → ExcalidrawModal-DaPSGYek.js} +1 -1
  14. package/dist-embed/chunks/{JupyterLexicalExtension-Cize8RXy.js → JupyterLexicalExtension-BQINjIFV.js} +9 -9
  15. package/dist-embed/chunks/{KernelVariables-Cl57Zze1.js → KernelVariables-CGQkS5EX.js} +1 -1
  16. package/dist-embed/chunks/{LexicalToolRegistry-CoM9ROsx.js → LexicalToolRegistry-BJ6mpMWn.js} +1 -1
  17. package/dist-embed/chunks/{NotebookToolSurfaces-CWfppxBN.js → NotebookToolSurfaces-DiPifvaW.js} +1 -1
  18. package/dist-embed/chunks/{NotebookView-DOf_K74b.js → NotebookView-IX0wNuX8.js} +1 -1
  19. package/dist-embed/chunks/{Output-9DKTscSv.js → Output-B9XAhyoF.js} +1 -1
  20. package/dist-embed/chunks/{SandboxDetailsDialog-BCfDm6MB.js → SandboxDetailsDialog-COCpmo8m.js} +1 -1
  21. package/dist-embed/chunks/{SchemaForm-BOYPrvf8.js → SchemaForm-WIwdKnrk.js} +1 -1
  22. package/dist-embed/chunks/{WidgetVariableView-BTOwHP78.js → WidgetVariableView-BoGROi-A.js} +1 -1
  23. package/dist-embed/chunks/{YouTubePlugin-Bs4zZIB1.js → YouTubePlugin-BEQBWMwx.js} +1 -1
  24. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-D5p59vS_.js → abnfDiagram-VCTEODGH-CG18Hf18.js} +1 -1
  25. package/dist-embed/chunks/{abnfDiagram-VCTEODGH-DRYbUvhc.js → abnfDiagram-VCTEODGH-D3_T0Lze.js} +1 -1
  26. package/dist-embed/chunks/{ar-SA-G6X2FPQ2-D6XRzkBS.js → ar-SA-G6X2FPQ2-BDWXsTdt.js} +1 -1
  27. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-DQGv0imf.js → architectureDiagram-5GKGNRK7-B1QPAYO8.js} +1 -1
  28. package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-B7ITKDup.js → architectureDiagram-5GKGNRK7-B5kSsKje.js} +1 -1
  29. package/dist-embed/chunks/{az-AZ-76LH7QW2-DBTdUiqp.js → az-AZ-76LH7QW2-BGchGiT7.js} +1 -1
  30. package/dist-embed/chunks/{bg-BG-XCXSNQG7-DuhcsaSL.js → bg-BG-XCXSNQG7-vCII6Zuq.js} +1 -1
  31. package/dist-embed/chunks/{blockDiagram-868be97b-DYe-XTjy.js → blockDiagram-868be97b-BvM0ptp7.js} +1 -1
  32. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-y7tEFo3j.js → blockDiagram-I7D4REHJ-B8BmxOM4.js} +1 -1
  33. package/dist-embed/chunks/{blockDiagram-I7D4REHJ-IltJXCd6.js → blockDiagram-I7D4REHJ-ClwWG8yx.js} +1 -1
  34. package/dist-embed/chunks/{bn-BD-2XOGV67Q-CPFeLVSN.js → bn-BD-2XOGV67Q-Beu9yUTu.js} +1 -1
  35. package/dist-embed/chunks/{c4Diagram-3f4bdde3-Bybp0wky.js → c4Diagram-3f4bdde3-S92W2yOx.js} +1 -1
  36. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-DpaHndz8.js → c4Diagram-7LVT6UL2-CNWW_-u7.js} +1 -1
  37. package/dist-embed/chunks/{c4Diagram-7LVT6UL2-CizxVqqX.js → c4Diagram-7LVT6UL2-nSCKKLuX.js} +1 -1
  38. package/dist-embed/chunks/{ca-ES-6MX7JW3Y-gDR_kEC6.js → ca-ES-6MX7JW3Y-CnEo6YQi.js} +1 -1
  39. package/dist-embed/chunks/{celltoolbartracker-DLF4PWyW.js → celltoolbartracker-CO6V5FhH.js} +1 -1
  40. package/dist-embed/chunks/{chunk-2Q5K7J3B-BI6lURun.js → chunk-2Q5K7J3B--r8j4N5L.js} +1 -1
  41. package/dist-embed/chunks/{chunk-2Q5K7J3B-DWoLSrj9.js → chunk-2Q5K7J3B-D3fTIaw3.js} +1 -1
  42. package/dist-embed/chunks/{chunk-5VM5RSS4-SleuNqDC.js → chunk-5VM5RSS4-D76mXyWz.js} +1 -1
  43. package/dist-embed/chunks/{chunk-5VM5RSS4-CDh4wYym.js → chunk-5VM5RSS4-QmrgOATO.js} +1 -1
  44. package/dist-embed/chunks/{chunk-F27PBJKO-h_FwJMTr.js → chunk-F27PBJKO-DdSgBnK0.js} +1 -1
  45. package/dist-embed/chunks/{chunk-F27PBJKO-AvWsNGYY.js → chunk-F27PBJKO-DvNrStTM.js} +1 -1
  46. package/dist-embed/chunks/{chunk-IMKFNOWR-DGRceKiU.js → chunk-IMKFNOWR-DpxND1Ct.js} +1 -1
  47. package/dist-embed/chunks/{chunk-IMKFNOWR-Hx4a5yny.js → chunk-IMKFNOWR-DwqmSZhU.js} +1 -1
  48. package/dist-embed/chunks/{chunk-JWPE2WC7-A4gy2qc4.js → chunk-JWPE2WC7-i7V3vMtZ.js} +1 -1
  49. package/dist-embed/chunks/{chunk-JWPE2WC7-BuJactJo.js → chunk-JWPE2WC7-jla8jvq5.js} +1 -1
  50. package/dist-embed/chunks/{chunk-POPQ4Y6H-CFM-817s.js → chunk-POPQ4Y6H-BGCugXU7.js} +1 -1
  51. package/dist-embed/chunks/{chunk-POPQ4Y6H-CmRF80iG.js → chunk-POPQ4Y6H-ofrenTaa.js} +1 -1
  52. package/dist-embed/chunks/{chunk-SVP7TREG-CryZx9JE.js → chunk-SVP7TREG-2Q2uQyQk.js} +1 -1
  53. package/dist-embed/chunks/{chunk-SVP7TREG-DSNzmytH.js → chunk-SVP7TREG-BIxxVjkU.js} +1 -1
  54. package/dist-embed/chunks/{chunk-TICWLB2K-DyGS3fIj.js → chunk-TICWLB2K-BqA5q52L.js} +1 -1
  55. package/dist-embed/chunks/{chunk-TICWLB2K-CEaDF8ZJ.js → chunk-TICWLB2K-LNiCmYq5.js} +1 -1
  56. package/dist-embed/chunks/{chunk-XXDRQBXY-8Cnzpdjz.js → chunk-XXDRQBXY-CNMg_gvd.js} +1 -1
  57. package/dist-embed/chunks/{chunk-XXDRQBXY-DxQBcVOz.js → chunk-XXDRQBXY-CqtfA3WC.js} +1 -1
  58. package/dist-embed/chunks/{classDiagram-ZZMXUADV-yvP3zMO3.js → classDiagram-ZZMXUADV-Co0jT9i-.js} +1 -1
  59. package/dist-embed/chunks/{classDiagram-ZZMXUADV-BQkO1UYr.js → classDiagram-ZZMXUADV-D6z_X195.js} +1 -1
  60. package/dist-embed/chunks/{classDiagram-f62afe4f-AYfpYKtp.js → classDiagram-f62afe4f-lN62p17q.js} +1 -1
  61. package/dist-embed/chunks/{classDiagram-v2-604399ef-BWyNcT_y.js → classDiagram-v2-604399ef-B_QJ6H8h.js} +1 -1
  62. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-yvP3zMO3.js → classDiagram-v2-VYDZK3BY-Co0jT9i-.js} +1 -1
  63. package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-BQkO1UYr.js → classDiagram-v2-VYDZK3BY-D6z_X195.js} +1 -1
  64. package/dist-embed/chunks/{code-block-IT6T5CEO-F4BSIGY6.js → code-block-IT6T5CEO-BA38Km-f.js} +1 -1
  65. package/dist-embed/chunks/{component-DMQ8W8n1.js → component-Chor_J7e.js} +1 -1
  66. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-C3HC0XIY.js → cose-bilkent-JH36ORCC-B5H1cwBa.js} +1 -1
  67. package/dist-embed/chunks/{cose-bilkent-JH36ORCC-MVxlcfpd.js → cose-bilkent-JH36ORCC-C3cTgEcU.js} +1 -1
  68. package/dist-embed/chunks/{createText-aed3d8b3-CEJODAXJ.js → createText-aed3d8b3-BtgHeyNs.js} +1 -1
  69. package/dist-embed/chunks/{cs-CZ-2BRQDIVT-BXQxcYp6.js → cs-CZ-2BRQDIVT-ClBKH9_y.js} +1 -1
  70. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-DNRKTIHx.js → cynefinDiagram-5FMLGOSQ-DPQLh9z7.js} +1 -1
  71. package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-D87ENxS0.js → cynefinDiagram-5FMLGOSQ-sdsAonZm.js} +1 -1
  72. package/dist-embed/chunks/{da-DK-5WZEPLOC-Ck3vidj3.js → da-DK-5WZEPLOC-BqFDUAty.js} +1 -1
  73. package/dist-embed/chunks/{dagre-GXQ25YYZ-BOhThFKd.js → dagre-GXQ25YYZ-Bwf_WjLM.js} +1 -1
  74. package/dist-embed/chunks/{dagre-GXQ25YYZ-DscCD5Uq.js → dagre-GXQ25YYZ-DHF-9-7e.js} +1 -1
  75. package/dist-embed/chunks/{de-DE-XR44H4JA-CPZgrOuc.js → de-DE-XR44H4JA-6dsEQn7Z.js} +1 -1
  76. package/dist-embed/chunks/{diagram-S7CK7UJ4-zDQduoQy.js → diagram-S7CK7UJ4-C-N7Ei3I.js} +1 -1
  77. package/dist-embed/chunks/{diagram-S7CK7UJ4-CUhme3Bl.js → diagram-S7CK7UJ4-DEqGRBMT.js} +1 -1
  78. package/dist-embed/chunks/{diagram-UQ7AKVKN-BxhQPjAM.js → diagram-UQ7AKVKN-CvSBE0YU.js} +1 -1
  79. package/dist-embed/chunks/{diagram-UQ7AKVKN-Byi-v8UN.js → diagram-UQ7AKVKN-DACyxI-v.js} +1 -1
  80. package/dist-embed/chunks/{diagram-VSXAHHWV-au-v2v9D.js → diagram-VSXAHHWV-DFze2xro.js} +1 -1
  81. package/dist-embed/chunks/{diagram-VSXAHHWV-CqihYkDH.js → diagram-VSXAHHWV-DOb69VtE.js} +1 -1
  82. package/dist-embed/chunks/{diagram-VX7I27RA-Cd5PaF_n.js → diagram-VX7I27RA-8EKYM_Sx.js} +1 -1
  83. package/dist-embed/chunks/{diagram-VX7I27RA-ETzwrw79.js → diagram-VX7I27RA-CVTSdYyZ.js} +1 -1
  84. package/dist-embed/chunks/{diagram-Z3DM3KII-DkbsvY2A.js → diagram-Z3DM3KII-B-689FF6.js} +1 -1
  85. package/dist-embed/chunks/{diagram-Z3DM3KII-AcMuRFo5.js → diagram-Z3DM3KII-DyiBmBFy.js} +1 -1
  86. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-DuWfMZcD.js → ebnfDiagram-PWID7BFC-DcKvqn_h.js} +1 -1
  87. package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-BrEs-SB2.js → ebnfDiagram-PWID7BFC-gj8dgCWR.js} +1 -1
  88. package/dist-embed/chunks/{edges-b2856ca0-Czd3-xvj.js → edges-b2856ca0-BqGGNnb4.js} +1 -1
  89. package/dist-embed/chunks/{el-GR-BZB4AONW-CjQSkw0P.js → el-GR-BZB4AONW-DOMW2ttY.js} +1 -1
  90. package/dist-embed/chunks/{erDiagram-5d81789a-JegaF4gy.js → erDiagram-5d81789a-Bf1Ik49K.js} +1 -1
  91. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-xubaXuKR.js → erDiagram-RLTQ6QDP-B0PyZB_3.js} +1 -1
  92. package/dist-embed/chunks/{erDiagram-RLTQ6QDP-Cpn6_cd1.js → erDiagram-RLTQ6QDP-GSu-_IUJ.js} +1 -1
  93. package/dist-embed/chunks/{es-ES-U4NZUMDT-CQz3Tsxk.js → es-ES-U4NZUMDT-DeyWqjw1.js} +1 -1
  94. package/dist-embed/chunks/{eu-ES-A7QVB2H4-DPwxHXvP.js → eu-ES-A7QVB2H4-CUGbZ0Pv.js} +1 -1
  95. package/dist-embed/chunks/{fa-IR-HGAKTJCU-DlQyRFJP.js → fa-IR-HGAKTJCU-Br8UEVO1.js} +1 -1
  96. package/dist-embed/chunks/{fi-FI-Z5N7JZ37-BL9Dv0rT.js → fi-FI-Z5N7JZ37-BSHjwo8G.js} +1 -1
  97. package/dist-embed/chunks/{flowDb-185abca5-BN_8lgCO.js → flowDb-185abca5-U9PwWSO4.js} +1 -1
  98. package/dist-embed/chunks/{flowDiagram-1629c991-YRlRqB59.js → flowDiagram-1629c991-BecgzQgp.js} +1 -1
  99. package/dist-embed/chunks/{flowDiagram-HODETNUW-lW-icIxi.js → flowDiagram-HODETNUW-2vih3kWM.js} +1 -1
  100. package/dist-embed/chunks/{flowDiagram-HODETNUW-CzRvxVGK.js → flowDiagram-HODETNUW-tcAkcGh4.js} +1 -1
  101. package/dist-embed/chunks/{flowDiagram-v2-1d953310-DBFSFroi.js → flowDiagram-v2-1d953310-Bdmc9G3m.js} +1 -1
  102. package/dist-embed/chunks/{flowchart-elk-definition-6df44142-RjL83g27.js → flowchart-elk-definition-6df44142-oWOWsVNc.js} +1 -1
  103. package/dist-embed/chunks/{fr-FR-RHASNOE6-xB7HyFVv.js → fr-FR-RHASNOE6-BukqZYPz.js} +1 -1
  104. package/dist-embed/chunks/{ganttDiagram-3b0b3873-Dowe9cKl.js → ganttDiagram-3b0b3873-B7lmD9r9.js} +1 -1
  105. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-CNQPBdAP.js → ganttDiagram-EL5Y4UJY-D0E7se_Z.js} +1 -1
  106. package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-CLaynGwe.js → ganttDiagram-EL5Y4UJY-DDbqMevq.js} +1 -1
  107. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-CupHqYWl.js → gitGraphDiagram-WWUBYQGX-DK3EJl5z.js} +1 -1
  108. package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-CDuBbPX3.js → gitGraphDiagram-WWUBYQGX-DnVwXJWu.js} +1 -1
  109. package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-C06Sje1n.js → gitGraphDiagram-f01e8bc2-B9vpLy6R.js} +1 -1
  110. package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BX50ltap.js → gl-ES-HMX3MZ6V-BxVOJiaI.js} +1 -1
  111. package/dist-embed/chunks/{he-IL-6SHJWFNN-DR3hLzYG.js → he-IL-6SHJWFNN-Dv2VRxlJ.js} +1 -1
  112. package/dist-embed/chunks/{hi-IN-IWLTKZ5I-C3bSDqVc.js → hi-IN-IWLTKZ5I-CFo5RUMz.js} +1 -1
  113. package/dist-embed/chunks/{hu-HU-A5ZG7DT2--mRUDQG6.js → hu-HU-A5ZG7DT2-ul3dS3un.js} +1 -1
  114. package/dist-embed/chunks/{id-ID-SAP4L64H-D6psdwdp.js → id-ID-SAP4L64H-ItVb-zwI.js} +1 -1
  115. package/dist-embed/chunks/{index-qsUgit40.js → index-7FNjj0f2.js} +1 -1
  116. package/dist-embed/chunks/{index-9bae90f3-BY7E8HZU.js → index-9bae90f3-D9849sgo.js} +1 -1
  117. package/dist-embed/chunks/{index-DToDguC3.js → index-B-L6ocEV.js} +1 -1
  118. package/dist-embed/chunks/{index-C01nR1dW.js → index-B0wMyD8Y.js} +1 -1
  119. package/dist-embed/chunks/{index-BzXMsI1v.js → index-B5zrJYwn.js} +6 -6
  120. package/dist-embed/chunks/{index-DcZQ2Oqj.js → index-B764si9c.js} +1 -1
  121. package/dist-embed/chunks/{index-3O3ob63z.js → index-BM6oRiO1.js} +1 -1
  122. package/dist-embed/chunks/{index-DVUMPcVw.js → index-BNFRRs9d.js} +1 -1
  123. package/dist-embed/chunks/{index-D0DBuFMt.js → index-BOYhJnrD.js} +1 -1
  124. package/dist-embed/chunks/{index-CA8D7U2s.js → index-BT4vYFeY.js} +1 -1
  125. package/dist-embed/chunks/{index-C8IekrmL.js → index-BfUXEHI0.js} +1 -1
  126. package/dist-embed/chunks/{index-DvWWLOj6.js → index-BiTIdbkn.js} +1 -1
  127. package/dist-embed/chunks/{index-BhU2ra4k.js → index-BkKEXqQS.js} +1 -1
  128. package/dist-embed/chunks/{index-CpcHHQd7.js → index-BqMoyzEk.js} +1 -1
  129. package/dist-embed/chunks/{index-D1lY79hS.js → index-BrD9dtoV.js} +1 -1
  130. package/dist-embed/chunks/{index-B063q-PC.js → index-CRpZyQIR.js} +4 -4
  131. package/dist-embed/chunks/{index-BblwlEJB.js → index-CZdWsyNw.js} +1 -1
  132. package/dist-embed/chunks/{index-Azo_wV3K.js → index-CjM49jS0.js} +1 -1
  133. package/dist-embed/chunks/{index-rfsiH_M6.js → index-Cp2aJ2ZR.js} +1 -1
  134. package/dist-embed/chunks/{index-Cknn3VQD.js → index-Cql9gOsL.js} +1 -1
  135. package/dist-embed/chunks/{index-jy9kOmqu.js → index-CsgaCZaW.js} +1 -1
  136. package/dist-embed/chunks/{index-DB46n9Tf.js → index-CsxlyZef.js} +1 -1
  137. package/dist-embed/chunks/{index-MTdX216X.js → index-D2LvuQlP.js} +1 -1
  138. package/dist-embed/chunks/{index-s3hayhRS.js → index-DQQXY-7d.js} +2 -2
  139. package/dist-embed/chunks/{index-B0KVfQGJ.js → index-DSF21-29.js} +1 -1
  140. package/dist-embed/chunks/{index-BYMZi_1t.js → index-DSvebR7d.js} +1 -1
  141. package/dist-embed/chunks/{index-a51XM5L8.js → index-DoBEQ07P.js} +3 -3
  142. package/dist-embed/chunks/{index-kpqZuE4J.js → index-O2jaI8TY.js} +1 -1
  143. package/dist-embed/chunks/{index-C6wF35Kk.js → index-QZ3sHHT3.js} +1 -1
  144. package/dist-embed/chunks/{index-BlWZloLe.js → index-TEcp7-f6.js} +2 -2
  145. package/dist-embed/chunks/{index-EpYurdzk.js → index-YlGTgJvL.js} +5 -5
  146. package/dist-embed/chunks/{index-CUL9WiLS.js → index-bm8APcDZ.js} +1 -1
  147. package/dist-embed/chunks/{index-BipXK1tF.js → index-jh9S19of.js} +1 -1
  148. package/dist-embed/chunks/{index-C643Hfu1.js → index-oGqh9y23.js} +1 -1
  149. package/dist-embed/chunks/{index-BdvS7Q4t.js → index-xiH3WzLm.js} +1 -1
  150. package/dist-embed/chunks/{index.esm-CWygaJYM.js → index.esm-B7KoTOBb.js} +1 -1
  151. package/dist-embed/chunks/{index.esm-DYeUXS4c.js → index.esm-CkSite-X.js} +1 -1
  152. package/dist-embed/chunks/{infoDiagram-27XIBGKW-Ctm-zk09.js → infoDiagram-27XIBGKW-DDO50Ria.js} +1 -1
  153. package/dist-embed/chunks/{infoDiagram-27XIBGKW-DRzH33_4.js → infoDiagram-27XIBGKW-O3q53Qe2.js} +1 -1
  154. package/dist-embed/chunks/{infoDiagram-a29d40f1-c78-ZMuT.js → infoDiagram-a29d40f1-jOvOHUyu.js} +1 -1
  155. package/dist-embed/chunks/{isEqual-niFNV5MZ.js → isEqual-CGLTk7wU.js} +1 -1
  156. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DKv5KL85.js → ishikawaDiagram-5VMMS53U-DuiWhpVW.js} +1 -1
  157. package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-CILSTTqm.js → ishikawaDiagram-5VMMS53U-IzmbYzxv.js} +1 -1
  158. package/dist-embed/chunks/{it-IT-JPQ66NNP-BfrG_atL.js → it-IT-JPQ66NNP-BuCUBzia.js} +1 -1
  159. package/dist-embed/chunks/{ja-JP-DBVTYXUO-sahpmNGY.js → ja-JP-DBVTYXUO-BhtQz4sy.js} +1 -1
  160. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-CSMQRlsr.js → journeyDiagram-3NMN7TZE-DGLcsVfC.js} +1 -1
  161. package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-DlMPiHSP.js → journeyDiagram-3NMN7TZE-sO-Cfp65.js} +1 -1
  162. package/dist-embed/chunks/{journeyDiagram-95396277-VzHClVrX.js → journeyDiagram-95396277-CA4bGq0G.js} +1 -1
  163. package/dist-embed/chunks/{kaa-6HZHGXH3-BrkhtXQj.js → kaa-6HZHGXH3-B_TI8Aa0.js} +1 -1
  164. package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-DwtFIV_I.js → kab-KAB-ZGHBKWFO-BsSg_l-j.js} +1 -1
  165. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-BkxvAXq2.js → kanban-definition-UXKFOSKX-0wjvwDqk.js} +1 -1
  166. package/dist-embed/chunks/{kanban-definition-UXKFOSKX-esf1amn7.js → kanban-definition-UXKFOSKX-CDtLkjnU.js} +1 -1
  167. package/dist-embed/chunks/{kk-KZ-P5N5QNE5-UxN1LGH5.js → kk-KZ-P5N5QNE5-B7XK5OQq.js} +1 -1
  168. package/dist-embed/chunks/{km-KH-HSX4SM5Z-B7lolfpy.js → km-KH-HSX4SM5Z-Cm2LA9F8.js} +1 -1
  169. package/dist-embed/chunks/{ko-KR-MTYHY66A-CnxefCaN.js → ko-KR-MTYHY66A-CL5s99y5.js} +1 -1
  170. package/dist-embed/chunks/{ku-TR-6OUDTVRD-Bt7bmFnv.js → ku-TR-6OUDTVRD-CiijvKHq.js} +1 -1
  171. package/dist-embed/chunks/{layout-D7Mk1riq.js → layout-BBbB54WC.js} +1 -1
  172. package/dist-embed/chunks/{layout-Sl9Lf6Ae.js → layout-CzrlbzeK.js} +1 -1
  173. package/dist-embed/chunks/{lexicalHooks-DKF-DsxG.js → lexicalHooks-DQxNZEiJ.js} +1 -1
  174. package/dist-embed/chunks/{lt-LT-XHIRWOB4-D6qkXs9m.js → lt-LT-XHIRWOB4-CcA_Z5jR.js} +1 -1
  175. package/dist-embed/chunks/{lv-LV-5QDEKY6T-D8g27j86.js → lv-LV-5QDEKY6T-CAQS9wGm.js} +1 -1
  176. package/dist-embed/chunks/{mermaid.core-BhiOhb5K.js → mermaid.core-DfgoT1cz.js} +3 -3
  177. package/dist-embed/chunks/{mermaid.core-CRlujv29.js → mermaid.core-s-D09gpV.js} +5 -5
  178. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-eCxs0BsL.js → mindmap-definition-YA3MSWOX-B6_K5ZvV.js} +1 -1
  179. package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-BJQsz4H1.js → mindmap-definition-YA3MSWOX-BCiSPRJk.js} +1 -1
  180. package/dist-embed/chunks/{mindmap-definition-e4c1d938-DoGG9eDO.js → mindmap-definition-e4c1d938-D7gmABiC.js} +1 -1
  181. package/dist-embed/chunks/{mr-IN-CRQNXWMA-CMbVGyJm.js → mr-IN-CRQNXWMA-DMAAvsDA.js} +1 -1
  182. package/dist-embed/chunks/{my-MM-5M5IBNSE-B-KPsx1j.js → my-MM-5M5IBNSE-t2TKqrjW.js} +1 -1
  183. package/dist-embed/chunks/{nb-NO-T6EIAALU-Cl7QLAt7.js → nb-NO-T6EIAALU-Bi3ZI-HQ.js} +1 -1
  184. package/dist-embed/chunks/{nl-NL-IS3SIHDZ-Brzte_o2.js → nl-NL-IS3SIHDZ-B8UdlW1K.js} +1 -1
  185. package/dist-embed/chunks/{nn-NO-6E72VCQL-CzCKEx02.js → nn-NO-6E72VCQL-Bt87hI27.js} +1 -1
  186. package/dist-embed/chunks/{oc-FR-POXYY2M6-DA72PkVY.js → oc-FR-POXYY2M6-009NL0Pk.js} +1 -1
  187. package/dist-embed/chunks/{pa-IN-N4M65BXN-CzkFYtL0.js → pa-IN-N4M65BXN-BfUtS2yt.js} +1 -1
  188. package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CD3xZvKE.js → pegDiagram-XKGWAZYB-BX0ZYMng.js} +1 -1
  189. package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CV-d6HkK.js → pegDiagram-XKGWAZYB-CBrnWUaX.js} +1 -1
  190. package/dist-embed/chunks/{percentages-BXMCSKIN-mjCCp4uI.js → percentages-BXMCSKIN-CfzulzOv.js} +5 -5
  191. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-toANOh_O.js → pieDiagram-E7YTZNPT-B1My5W85.js} +1 -1
  192. package/dist-embed/chunks/{pieDiagram-E7YTZNPT-DipS--g7.js → pieDiagram-E7YTZNPT-Ct8dzoLU.js} +1 -1
  193. package/dist-embed/chunks/{pieDiagram-c941bede-DytniBrW.js → pieDiagram-c941bede-7DZ-Bl8U.js} +1 -1
  194. package/dist-embed/chunks/{pl-PL-T2D74RX3-F4ebFTYK.js → pl-PL-T2D74RX3-DbtOl9_x.js} +1 -1
  195. package/dist-embed/chunks/{pt-BR-5N22H2LF-B5i8LuE4.js → pt-BR-5N22H2LF-B1pjR1_T.js} +1 -1
  196. package/dist-embed/chunks/{pt-PT-UZXXM6DQ-BQ7hfRRg.js → pt-PT-UZXXM6DQ-takC7TRa.js} +1 -1
  197. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-D_j5dzK-.js → quadrantDiagram-AXDQQJYC-B1mlT7fN.js} +1 -1
  198. package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-DlhtjZ-k.js → quadrantDiagram-AXDQQJYC-B7p4unpj.js} +1 -1
  199. package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-BQ2yjLYu.js → quadrantDiagram-cf8b8fe0-CTMh_Ad5.js} +1 -1
  200. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-CZFkdwSz.js → railroadDiagram-O6MQD6OU-CJEwr5d9.js} +1 -1
  201. package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-aWlxxhLc.js → railroadDiagram-O6MQD6OU-xr8bPIl7.js} +1 -1
  202. package/dist-embed/chunks/{renderer-2D5v6hpK.js → renderer-Ba0Cwb4p.js} +1 -1
  203. package/dist-embed/chunks/{requirementDiagram-53bda41b-CWV_b9FE.js → requirementDiagram-53bda41b-Dv1Piop_.js} +1 -1
  204. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-EVwiX2gg.js → requirementDiagram-BXWQKSXE-Bw89vFiC.js} +1 -1
  205. package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-BSF51uZZ.js → requirementDiagram-BXWQKSXE-rabT3v-j.js} +1 -1
  206. package/dist-embed/chunks/{ro-RO-JPDTUUEW-BdcZRS6h.js → ro-RO-JPDTUUEW-DkkqyFBF.js} +1 -1
  207. package/dist-embed/chunks/{ru-RU-B4JR7IUQ-Cta1z8f6.js → ru-RU-B4JR7IUQ-CikD-ITp.js} +1 -1
  208. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-BqD6w06O.js → sankeyDiagram-P5KCCOFB-5SpI76uK.js} +1 -1
  209. package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-t6rHaBZJ.js → sankeyDiagram-P5KCCOFB-D--cx9I2.js} +1 -1
  210. package/dist-embed/chunks/{sankeyDiagram-c3ef121a-C9O52Zx9.js → sankeyDiagram-c3ef121a-DbhtSWkB.js} +1 -1
  211. package/dist-embed/chunks/{sequenceDiagram-82a5b84f-Dga-BwWi.js → sequenceDiagram-82a5b84f-DpxBSKAk.js} +1 -1
  212. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-ih6W0378.js → sequenceDiagram-WJ2MYXX4-DGNwWgf8.js} +1 -1
  213. package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-DphVeQVS.js → sequenceDiagram-WJ2MYXX4-D_wK-z7a.js} +1 -1
  214. package/dist-embed/chunks/{sessions-APuuDN3K.js → sessions-DQkTozai.js} +1 -1
  215. package/dist-embed/chunks/{si-LK-N5RQ5JYF-DYy_OKHx.js → si-LK-N5RQ5JYF-BqlWRhwK.js} +1 -1
  216. package/dist-embed/chunks/{sizeCapture-INFHLROL-o0dzt8-T.js → sizeCapture-INFHLROL-4Uh8JUjf.js} +1 -1
  217. package/dist-embed/chunks/{sizeCapture-INFHLROL-CxIMCruL.js → sizeCapture-INFHLROL-g-K-6XON.js} +1 -1
  218. package/dist-embed/chunks/{sk-SK-C5VTKIMK-B4A8rgzq.js → sk-SK-C5VTKIMK-DGsmi02E.js} +1 -1
  219. package/dist-embed/chunks/{sl-SI-NN7IZMDC-Dn2yU1RA.js → sl-SI-NN7IZMDC-HFz45GOs.js} +1 -1
  220. package/dist-embed/chunks/{stateDiagram-43e79a5f-RBFnM6HD.js → stateDiagram-43e79a5f-DxbV4jP9.js} +1 -1
  221. package/dist-embed/chunks/{stateDiagram-D77RDMKH-R5RRRvFY.js → stateDiagram-D77RDMKH-C_wYpqah.js} +1 -1
  222. package/dist-embed/chunks/{stateDiagram-D77RDMKH-DUbaZs3a.js → stateDiagram-D77RDMKH-D-l3u-WY.js} +1 -1
  223. package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-O5FpnsEz.js → stateDiagram-v2-2041ed4f-BzxzaDdI.js} +1 -1
  224. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-xKTLvXGN.js → stateDiagram-v2-MP3YSRHH-BGYkOvTS.js} +1 -1
  225. package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-CxTXB7mT.js → stateDiagram-v2-MP3YSRHH-IEMNMwm0.js} +1 -1
  226. package/dist-embed/chunks/{styles-455b33cd-D4Xv2qYx.js → styles-455b33cd-C42Lyulv.js} +1 -1
  227. package/dist-embed/chunks/{styles-f932cba9-BRIqeB8k.js → styles-f932cba9-Bf6H3IMq.js} +1 -1
  228. package/dist-embed/chunks/{styles-fcc2142b-CSNd2DtU.js → styles-fcc2142b-OZg6fE-p.js} +1 -1
  229. package/dist-embed/chunks/{subset-shared.chunk-SugOGKH0.js → subset-shared.chunk-KC0vshev.js} +1 -1
  230. package/dist-embed/chunks/{subset-worker.chunk-CHn-RJwQ.js → subset-worker.chunk-CXZAV_Z5.js} +1 -1
  231. package/dist-embed/chunks/{sv-SE-XGPEYMSR-DIGNKjA1.js → sv-SE-XGPEYMSR-yEdPvwHy.js} +1 -1
  232. package/dist-embed/chunks/{svgDrawCommon-148a3cd9-ioBjWI45.js → svgDrawCommon-148a3cd9-D9MRwoYw.js} +1 -1
  233. package/dist-embed/chunks/{swimlanes-42K2YHIH-DID4P1mJ.js → swimlanes-42K2YHIH-CPkom4Q8.js} +1 -1
  234. package/dist-embed/chunks/{swimlanes-42K2YHIH-BPXSOfWl.js → swimlanes-42K2YHIH-DJLFcHMt.js} +1 -1
  235. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-C5LAWW5q.js → swimlanesDiagram-VR7AAH4N-BJOhuN-y.js} +1 -1
  236. package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-B216TpFb.js → swimlanesDiagram-VR7AAH4N-BRTtY1QX.js} +1 -1
  237. package/dist-embed/chunks/{ta-IN-2NMHFXQM-h5n2V9ms.js → ta-IN-2NMHFXQM-0i424YGX.js} +1 -1
  238. package/dist-embed/chunks/{th-TH-HPSO5L25-DPUFV7b6.js → th-TH-HPSO5L25-BidF5zNO.js} +1 -1
  239. package/dist-embed/chunks/{timeline-definition-24CTP7MA-CsrTDzso.js → timeline-definition-24CTP7MA-BasSLg-_.js} +1 -1
  240. package/dist-embed/chunks/{timeline-definition-24CTP7MA-Y3tUsmSp.js → timeline-definition-24CTP7MA-BfGIJi1H.js} +1 -1
  241. package/dist-embed/chunks/{timeline-definition-7545f45a-Dwe7O50H.js → timeline-definition-7545f45a-BWwgvKxJ.js} +1 -1
  242. package/dist-embed/chunks/{tr-TR-DEFEU3FU-BezJkdMx.js → tr-TR-DEFEU3FU-BoHR9SlC.js} +1 -1
  243. package/dist-embed/chunks/{uk-UA-QMV73CPH-CqILlosm.js → uk-UA-QMV73CPH-DfRkqqO0.js} +1 -1
  244. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-BhVdyHxt.js → vennDiagram-4TSXK5OY-D1T__rd2.js} +1 -1
  245. package/dist-embed/chunks/{vennDiagram-4TSXK5OY-ClTlC2ql.js → vennDiagram-4TSXK5OY-DMIYCfJ-.js} +1 -1
  246. package/dist-embed/chunks/{vi-VN-M7AON7JQ-CnkPVQ0a.js → vi-VN-M7AON7JQ-CvZ4wpTw.js} +1 -1
  247. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-kS16z5iB.js → wardleyDiagram-VM6X3IG4-CiKuFI26.js} +1 -1
  248. package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-DbWIMpvU.js → wardleyDiagram-VM6X3IG4-DtlNUHLy.js} +1 -1
  249. package/dist-embed/chunks/{xychartDiagram-3f383b91-DYoT_EjG.js → xychartDiagram-3f383b91-DzyuxW4K.js} +1 -1
  250. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-KeQp-cQ1.js → xychartDiagram-S5SC5T6Z-BIeFUHrS.js} +1 -1
  251. package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-CdwuwQAF.js → xychartDiagram-S5SC5T6Z-p6pYRkk6.js} +1 -1
  252. package/dist-embed/chunks/{zh-CN-LNUGB5OW-CNdfctAT.js → zh-CN-LNUGB5OW-Cx1Azgu2.js} +1 -1
  253. package/dist-embed/chunks/{zh-HK-E62DVLB3-DEXwa5-T.js → zh-HK-E62DVLB3-DMjy1d4Z.js} +1 -1
  254. package/dist-embed/chunks/{zh-TW-RAJ6MFWO-BF7cCYAK.js → zh-TW-RAJ6MFWO-J-YjINmR.js} +1 -1
  255. package/dist-embed/datalayer-app-main.js +22 -22
  256. package/lib/apps/apps/appspec.d.ts +10 -1
  257. package/lib/apps/apps/appspec.js +104 -7
  258. package/lib/apps/core/index.d.ts +26 -0
  259. package/lib/apps/core/index.js +20 -0
  260. package/lib/apps/plugins/chat/ChatView.js +21 -4
  261. package/lib/protocols/mcp/client.d.ts +73 -0
  262. package/lib/protocols/mcp/client.js +136 -0
  263. package/lib/protocols/mcp/index.d.ts +1 -0
  264. package/lib/protocols/mcp/index.js +3 -1
  265. package/lib/protocols/web-bot-auth/tap.d.ts +56 -0
  266. package/lib/protocols/web-bot-auth/tap.js +185 -0
  267. package/lib/specs/apps.js +56 -26
  268. package/lib/specs/appspecSchema.js +180 -5
  269. package/lib/specs/protocols.js +5 -5
  270. package/lib/types/agentspecs.d.ts +66 -3
  271. package/package.json +3 -1
  272. package/dist-embed/chunks/ChatView-B3QqHhAP.js +0 -32
@@ -0,0 +1,185 @@
1
+ /*
2
+ * Copyright (c) 2025-2026 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Visa's Trusted Agent Protocol as a profile over Web Bot Auth
7
+ * (AGENT_PROTOCOLS PR-24) — the twin of
8
+ * `agent_runtimes.protocols.web_bot_auth.tap`.
9
+ *
10
+ * **Draft.** Built on 2026-10-13 from Visa's public *Merchant
11
+ * Specifications* and its reference repository (`TAP_SOURCES`), not
12
+ * confirmed by Visa: the product says it *arriving* until it is. Visa
13
+ * publishes no test vector; `fixtures/tap.json` is one computed in Python
14
+ * and reproduced here byte for byte.
15
+ *
16
+ * The agent-recognition signature: `Signature-Input` and `Signature` alone
17
+ * (Visa names no `Signature-Agent`, so keys are handed in by `keyid`),
18
+ * covering at least `@authority` and `@path`, with `created`, `keyid`,
19
+ * `alg="Ed25519"`, `expires`, `nonce` and `tag` — `agent-browser-auth` to
20
+ * browse, `agent-payer-auth` to pay —, `created` and `expires` at most 8
21
+ * minutes apart, a nonce seen in the last 8 minutes a replay. Signed and
22
+ * verified with Cloudflare's `http-message-sig`, the RFC 9421 library under
23
+ * `web-bot-auth`.
24
+ *
25
+ * @module protocols/web-bot-auth/tap
26
+ */
27
+ import { createSignature, verifySignature, webcrypto } from 'http-message-sig';
28
+ import { generateNonce, jwkThumbprint, } from './index';
29
+ /** Draft until Visa confirms it. */
30
+ export const TAP_STATUS = 'draft';
31
+ /** Where the profile was read, 2026-10-13. */
32
+ export const TAP_SOURCES = [
33
+ 'https://developer.visa.com/capabilities/trusted-agent-protocol/trusted-agent-protocol-specifications',
34
+ 'https://developer.visa.com/capabilities/trusted-agent-protocol/overview',
35
+ 'https://github.com/visa/trusted-agent-protocol',
36
+ ];
37
+ /** Visa's key directory, as its page says it. */
38
+ export const VISA_JWKS = 'https://mcp.visa.com/.well-known/jwks';
39
+ export const TAP_BROWSE_TAG = 'agent-browser-auth';
40
+ export const TAP_PAY_TAG = 'agent-payer-auth';
41
+ export const TAP_TAGS = {
42
+ browse: TAP_BROWSE_TAG,
43
+ pay: TAP_PAY_TAG,
44
+ };
45
+ export const TAP_REQUIRED_COMPONENTS = ['@authority', '@path'];
46
+ export const TAP_REQUIRED_PARAMS = [
47
+ 'created',
48
+ 'keyid',
49
+ 'alg',
50
+ 'expires',
51
+ 'nonce',
52
+ 'tag',
53
+ ];
54
+ /** `alg` as Visa writes it. */
55
+ export const TAP_ALG = 'Ed25519';
56
+ /** The longest window, and how long a nonce is remembered. */
57
+ export const TAP_MAX_WINDOW_SECONDS = 8 * 60;
58
+ /** Sign one request as a TAP agent browsing or paying, under an Ed25519 key. */
59
+ export async function signTapRequest(request, signer, options) {
60
+ if (signer.algorithm !== 'ed25519') {
61
+ throw new Error('a TAP signature is Ed25519');
62
+ }
63
+ const components = options.components ?? [...TAP_REQUIRED_COMPONENTS];
64
+ const missing = TAP_REQUIRED_COMPONENTS.filter(name => !components.includes(name));
65
+ if (missing.length) {
66
+ throw new Error(`a TAP signature covers ${missing.join(', ')}`);
67
+ }
68
+ const lifetime = options.lifetime ?? TAP_MAX_WINDOW_SECONDS;
69
+ if (!(lifetime > 0 && lifetime <= TAP_MAX_WINDOW_SECONDS)) {
70
+ throw new Error(`a TAP signature lives at most ${TAP_MAX_WINDOW_SECONDS}s (8 minutes)`);
71
+ }
72
+ const created = options.created ?? Math.floor(Date.now() / 1000);
73
+ const fields = await createSignature({
74
+ kind: 'request',
75
+ method: request.method,
76
+ targetUri: request.url,
77
+ fields: [],
78
+ }, {
79
+ label: options.label ?? 'sig2',
80
+ components,
81
+ parameters: {
82
+ created,
83
+ keyid: signer.keyid,
84
+ alg: TAP_ALG,
85
+ expires: created + lifetime,
86
+ nonce: options.nonce ?? generateNonce(),
87
+ tag: TAP_TAGS[options.intent],
88
+ },
89
+ signer: { algorithm: TAP_ALG, sign: data => signer.sign(data) },
90
+ });
91
+ return {
92
+ 'Signature-Input': fields.signatureInput,
93
+ Signature: fields.signature,
94
+ };
95
+ }
96
+ const TAP_LABEL = /(?:^|,)\s*([a-z*][a-z0-9_.*-]*)=\([^)]*\)[^,]*;tag="(?:agent-browser-auth|agent-payer-auth)"/g;
97
+ /**
98
+ * Verify the TAP signature of one request against Ed25519 keys known by
99
+ * `keyid` (Visa's directory, or a registry's). A request with no TAP tag is
100
+ * no trusted agent's; the merchant decides what to do with it.
101
+ */
102
+ export async function verifyTapRequest(request, keys, options) {
103
+ const input = request.headers.get('signature-input');
104
+ if (!input || !request.headers.get('signature')) {
105
+ return { verified: false, reason: 'the request is not signed' };
106
+ }
107
+ const labels = [...input.matchAll(TAP_LABEL)].map(match => match[1]);
108
+ if (labels.length === 0) {
109
+ return { verified: false, reason: 'no signature carries a TAP tag' };
110
+ }
111
+ if (labels.length > 1) {
112
+ return {
113
+ verified: false,
114
+ reason: 'more than one signature carries a TAP tag',
115
+ };
116
+ }
117
+ const now = options.now ?? Math.floor(Date.now() / 1000);
118
+ let keyid;
119
+ let unknownKey = false;
120
+ try {
121
+ const verified = await verifySignature(request, {
122
+ label: labels[0],
123
+ policy: {
124
+ algorithms: [TAP_ALG],
125
+ requiredComponents: [...TAP_REQUIRED_COMPONENTS],
126
+ requiredParameters: [...TAP_REQUIRED_PARAMS],
127
+ now,
128
+ validate: signature => {
129
+ const { created, expires, tag } = signature.parameters;
130
+ return ((tag === TAP_BROWSE_TAG || tag === TAP_PAY_TAG) &&
131
+ created !== undefined &&
132
+ expires !== undefined &&
133
+ expires - created <= TAP_MAX_WINDOW_SECONDS &&
134
+ now < expires);
135
+ },
136
+ },
137
+ resolveVerifier: async (candidate) => {
138
+ keyid = candidate.parameters.keyid;
139
+ const jwk = keyid === undefined ? undefined : keys.get(keyid);
140
+ if (!jwk || jwk.kty !== 'OKP' || jwk.crv !== 'Ed25519') {
141
+ unknownKey = true;
142
+ throw new Error('the key is not a known Ed25519 key');
143
+ }
144
+ const key = await crypto.subtle.importKey('jwk', jwk, { name: 'Ed25519' }, false, ['verify']);
145
+ const verifier = webcrypto.verifier(key);
146
+ return {
147
+ algorithm: TAP_ALG,
148
+ verify: (data, signature) => verifier.verify(data, signature),
149
+ };
150
+ },
151
+ });
152
+ const { tag, nonce } = verified.parameters;
153
+ if (nonce === undefined || keyid === undefined) {
154
+ return { verified: false, reason: 'the signature has no nonce', keyid };
155
+ }
156
+ const fresh = await options.nonceStore.checkAndRecord(`tap ${keyid}`, nonce, new Date((now + TAP_MAX_WINDOW_SECONDS) * 1000));
157
+ if (!fresh) {
158
+ return { verified: false, reason: 'the nonce was seen before', keyid };
159
+ }
160
+ return {
161
+ verified: true,
162
+ intent: tag === TAP_PAY_TAG ? 'pay' : 'browse',
163
+ keyid,
164
+ nonce,
165
+ };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ verified: false,
170
+ reason: unknownKey
171
+ ? 'the key is not a known Ed25519 key'
172
+ : error.message,
173
+ keyid,
174
+ };
175
+ }
176
+ }
177
+ /** The `keyid` of an Ed25519 public JWK, as a TAP key list is indexed when it says none. */
178
+ export async function tapKeys(jwks) {
179
+ const keys = new Map();
180
+ for (const jwk of jwks) {
181
+ const kid = jwk.kid;
182
+ keys.set(kid ?? (await jwkThumbprint(jwk)), jwk);
183
+ }
184
+ return keys;
185
+ }
package/lib/specs/apps.js CHANGED
@@ -194,6 +194,7 @@ export const BOOKKEEPING_DESK_APP_0_0_1 = {
194
194
  protocols: ['pap'],
195
195
  ui: [],
196
196
  pap: {
197
+ profile: 'draft-01',
197
198
  connections: [
198
199
  {
199
200
  id: 'northwind',
@@ -1570,6 +1571,7 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
1570
1571
  protocols: ['pap'],
1571
1572
  ui: [],
1572
1573
  pap: {
1574
+ profile: 'draft-01',
1573
1575
  connections: [],
1574
1576
  company: {
1575
1577
  enabled: true,
@@ -1902,6 +1904,7 @@ export const LIVE_SHOP_CHAT_APP_0_0_1 = {
1902
1904
  protocols: ['pap'],
1903
1905
  ui: [],
1904
1906
  pap: {
1907
+ profile: 'draft-01',
1905
1908
  connections: [
1906
1909
  {
1907
1910
  id: 'manzanita',
@@ -2474,10 +2477,11 @@ export const ORDER_DESK_APP_0_0_1 = {
2474
2477
  protocols: ['pap'],
2475
2478
  ui: [],
2476
2479
  pap: {
2480
+ profile: 'draft-01',
2477
2481
  connections: [
2478
2482
  {
2479
2483
  id: 'manzanita',
2480
- company: 'manzanita.example',
2484
+ company: 'manzanita.examples.datalayer.run',
2481
2485
  access: 'write',
2482
2486
  as: 'user',
2483
2487
  scopes: ['orders:read', 'orders:write'],
@@ -2582,7 +2586,7 @@ export const ORDER_DESK_APP_0_0_1 = {
2582
2586
  "The journey is the Personal Agent Protocol SDK's recorded journey user-with-a-company (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
2583
2587
  ],
2584
2588
  unverified: [
2585
- 'No company answers on Datalayer yet: no test company is served on r1, so it has not run in the Studio against one.',
2589
+ 'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
2586
2590
  ],
2587
2591
  },
2588
2592
  },
@@ -2642,6 +2646,7 @@ export const ORDER_TRACKER_APP_0_0_1 = {
2642
2646
  protocols: ['pap'],
2643
2647
  ui: [],
2644
2648
  pap: {
2649
+ profile: 'draft-01',
2645
2650
  connections: [
2646
2651
  {
2647
2652
  id: 'manzanita',
@@ -3650,6 +3655,7 @@ export const RETURNS_DESK_APP_0_0_1 = {
3650
3655
  protocols: ['pap'],
3651
3656
  ui: [],
3652
3657
  pap: {
3658
+ profile: 'draft-01',
3653
3659
  connections: [
3654
3660
  {
3655
3661
  id: 'manzanita',
@@ -4175,6 +4181,7 @@ export const SHOP_CONCIERGE_APP_0_0_1 = {
4175
4181
  protocols: ['pap'],
4176
4182
  ui: [],
4177
4183
  pap: {
4184
+ profile: 'draft-01',
4178
4185
  connections: [
4179
4186
  {
4180
4187
  id: 'manzanita',
@@ -4340,7 +4347,7 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4340
4347
  {
4341
4348
  id: 'example-store',
4342
4349
  protocol: 'ucp',
4343
- merchant: 'store.example',
4350
+ merchant: 'store.examples.datalayer.run',
4344
4351
  access: 'write',
4345
4352
  limit: {
4346
4353
  amount: '50',
@@ -4350,7 +4357,7 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4350
4357
  {
4351
4358
  id: 'example-outfitters',
4352
4359
  protocol: 'acp',
4353
- merchant: 'outfitters.example',
4360
+ merchant: 'outfitters.examples.datalayer.run',
4354
4361
  access: 'write',
4355
4362
  limit: {
4356
4363
  amount: '150',
@@ -4437,13 +4444,15 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4437
4444
  },
4438
4445
  ],
4439
4446
  verified: {
4440
- live: [],
4447
+ live: [
4448
+ "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview's runtime reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
4449
+ ],
4441
4450
  recorded: [
4442
4451
  "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
4443
4452
  "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
4444
4453
  ],
4445
4454
  unverified: [
4446
- "No shop answers UCP or ACP on Datalayer yet: the gateway's ucp and acp toolsets are built, not deployed.",
4455
+ "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran).",
4447
4456
  ],
4448
4457
  },
4449
4458
  },
@@ -4473,8 +4482,8 @@ export const SHOPPING_DESK_APP_0_0_1 = {
4473
4482
  documents: [],
4474
4483
  alternatives: [],
4475
4484
  },
4476
- enabled: false,
4477
- unavailable_because: 'It buys at shops for you over UCP and ACP, and the services that reach a shop for you are not shipped yet.',
4485
+ enabled: true,
4486
+ unavailable_because: '',
4478
4487
  tags: ['example', 'companies'],
4479
4488
  icon: 'apps',
4480
4489
  emoji: '🛍️',
@@ -4503,6 +4512,7 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
4503
4512
  protocols: ['pap'],
4504
4513
  ui: [],
4505
4514
  pap: {
4515
+ profile: 'draft-01',
4506
4516
  connections: [
4507
4517
  {
4508
4518
  id: 'manzanita',
@@ -5191,12 +5201,18 @@ export const TRAVEL_DESK_APP_0_0_1 = {
5191
5201
  connections: [
5192
5202
  {
5193
5203
  id: 'example-air',
5194
- brand: 'air.example',
5195
- audience: 'https://provider.example/a2a',
5204
+ brand: 'air.examples.datalayer.run',
5205
+ audience: 'https://air.examples.datalayer.run/a2a',
5196
5206
  access: 'write',
5197
5207
  scopes: ['bookings:read', 'bookings:change'],
5198
5208
  },
5199
5209
  ],
5210
+ business: {
5211
+ enabled: false,
5212
+ brand: '',
5213
+ scopes: {},
5214
+ registeredAgents: [],
5215
+ },
5200
5216
  },
5201
5217
  rules: [
5202
5218
  {
@@ -5267,12 +5283,15 @@ export const TRAVEL_DESK_APP_0_0_1 = {
5267
5283
  },
5268
5284
  ],
5269
5285
  verified: {
5270
- live: [],
5286
+ live: [
5287
+ "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview's runtime reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
5288
+ ],
5271
5289
  recorded: [
5272
5290
  "The journey is the developers' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its own tests (version 1.3.112).",
5273
5291
  ],
5274
5292
  unverified: [
5275
- "No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
5293
+ 'The hosted Example Air keeps registrations in memory: an application is registered there (POST /example/register, its issuer and keys) again after each restart.',
5294
+ "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran); the step-up to bookings:change was not drilled live.",
5276
5295
  ],
5277
5296
  },
5278
5297
  },
@@ -5302,8 +5321,8 @@ export const TRAVEL_DESK_APP_0_0_1 = {
5302
5321
  documents: [],
5303
5322
  alternatives: [],
5304
5323
  },
5305
- enabled: false,
5306
- unavailable_because: 'It asks an airline for you over PACT, and the services that reach a business for you are not shipped yet.',
5324
+ enabled: true,
5325
+ unavailable_because: '',
5307
5326
  tags: ['example', 'companies'],
5308
5327
  icon: 'apps',
5309
5328
  emoji: '✈️',
@@ -5621,6 +5640,7 @@ export const APP_SOURCES = {
5621
5640
  ],
5622
5641
  protocols: ['pap'],
5623
5642
  pap: {
5643
+ profile: 'draft-01',
5624
5644
  connections: [
5625
5645
  {
5626
5646
  id: 'northwind',
@@ -6460,6 +6480,7 @@ export const APP_SOURCES = {
6460
6480
  ],
6461
6481
  protocols: ['pap'],
6462
6482
  pap: {
6483
+ profile: 'draft-01',
6463
6484
  company: {
6464
6485
  enabled: true,
6465
6486
  interfaces: ['agent', 'openapi'],
@@ -6662,6 +6683,7 @@ export const APP_SOURCES = {
6662
6683
  instructions: "You relay the person's questions to Manzanita Outfitters' own agent, through its tools, and show what the shop writes as it arrives, as the shop's words. Never finish the shop's sentences for it.",
6663
6684
  protocols: ['pap'],
6664
6685
  pap: {
6686
+ profile: 'draft-01',
6665
6687
  connections: [
6666
6688
  {
6667
6689
  id: 'manzanita',
@@ -7013,10 +7035,11 @@ export const APP_SOURCES = {
7013
7035
  instructions: 'You work with Manzanita Outfitters for the person you talk to, through its tools. Ask the shop before saying anything about an order; when it asks the person to sign in, say so and wait. Never confirm what the shop proposes on your own: the person approves it, word for word, on Waiting for you.',
7014
7036
  protocols: ['pap'],
7015
7037
  pap: {
7038
+ profile: 'draft-01',
7016
7039
  connections: [
7017
7040
  {
7018
7041
  id: 'manzanita',
7019
- company: 'manzanita.example',
7042
+ company: 'manzanita.examples.datalayer.run',
7020
7043
  access: 'write',
7021
7044
  scopes: ['orders:read', 'orders:write'],
7022
7045
  extensions: ['operations'],
@@ -7080,7 +7103,7 @@ export const APP_SOURCES = {
7080
7103
  "The journey is the Personal Agent Protocol SDK's recorded journey user-with-a-company (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
7081
7104
  ],
7082
7105
  unverified: [
7083
- 'No company answers on Datalayer yet: no test company is served on r1, so it has not run in the Studio against one.',
7106
+ 'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
7084
7107
  ],
7085
7108
  },
7086
7109
  },
@@ -7107,6 +7130,7 @@ export const APP_SOURCES = {
7107
7130
  instructions: "You read the person's orders at Manzanita Outfitters, through its tools, and change nothing. When the shop asks the person to sign in, say so and wait. If they ask to stop, tell them Disconnect under In your name ends the sign-in.",
7108
7131
  protocols: ['pap'],
7109
7132
  pap: {
7133
+ profile: 'draft-01',
7110
7134
  connections: [
7111
7135
  {
7112
7136
  id: 'manzanita',
@@ -7852,6 +7876,7 @@ export const APP_SOURCES = {
7852
7876
  instructions: 'You arrange returns and repairs at Manzanita Outfitters for the person, through its tools. The shop proposes each one with its terms: show them, word for word, and never confirm on your own; the person approves it on Waiting for you.',
7853
7877
  protocols: ['pap'],
7854
7878
  pap: {
7879
+ profile: 'draft-01',
7855
7880
  connections: [
7856
7881
  {
7857
7882
  id: 'manzanita',
@@ -8157,6 +8182,7 @@ export const APP_SOURCES = {
8157
8182
  instructions: "You talk with Manzanita Outfitters' own agent for the person, through its tools, in one conversation. When they ask for a person at the shop, ask the shop for one of its people and say who answers. Every message to the shop goes out in their name: send it only once they agreed.",
8158
8183
  protocols: ['pap'],
8159
8184
  pap: {
8185
+ profile: 'draft-01',
8160
8186
  connections: [
8161
8187
  {
8162
8188
  id: 'manzanita',
@@ -8247,7 +8273,7 @@ export const APP_SOURCES = {
8247
8273
  {
8248
8274
  id: 'example-store',
8249
8275
  protocol: 'ucp',
8250
- merchant: 'store.example',
8276
+ merchant: 'store.examples.datalayer.run',
8251
8277
  access: 'write',
8252
8278
  limit: {
8253
8279
  amount: '50',
@@ -8257,7 +8283,7 @@ export const APP_SOURCES = {
8257
8283
  {
8258
8284
  id: 'example-outfitters',
8259
8285
  protocol: 'acp',
8260
- merchant: 'outfitters.example',
8286
+ merchant: 'outfitters.examples.datalayer.run',
8261
8287
  access: 'write',
8262
8288
  limit: {
8263
8289
  amount: '150',
@@ -8317,12 +8343,15 @@ export const APP_SOURCES = {
8317
8343
  },
8318
8344
  ],
8319
8345
  verified: {
8346
+ live: [
8347
+ "Drilled on r1 on 13 October 2026 against the hosted test merchants, as its Preview's runtime reaches the gateway's ucp and acp toolsets: at Example Store (store.examples.datalayer.run) a search, a checkout filled, the exact purchase asked of the person, approved on Waiting for you, bought once and refused a second time, its order read; at Example Outfitters (outfitters.examples.datalayer.run) the same checkout over ACP. Test merchants only: paid with a test instrument.",
8348
+ ],
8320
8349
  recorded: [
8321
8350
  "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
8322
8351
  "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
8323
8352
  ],
8324
8353
  unverified: [
8325
- "No shop answers UCP or ACP on Datalayer yet: the gateway's ucp and acp toolsets are built, not deployed.",
8354
+ "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran).",
8326
8355
  ],
8327
8356
  },
8328
8357
  },
@@ -8333,8 +8362,6 @@ export const APP_SOURCES = {
8333
8362
  deployment: {
8334
8363
  hosted: {},
8335
8364
  },
8336
- enabled: false,
8337
- unavailable_because: 'It buys at shops for you over UCP and ACP, and the services that reach a shop for you are not shipped yet.',
8338
8365
  tags: ['example', 'companies'],
8339
8366
  emoji: '🛍️',
8340
8367
  },
@@ -8349,6 +8376,7 @@ export const APP_SOURCES = {
8349
8376
  instructions: 'You help the person at Manzanita Outfitters, through its tools. When the shop needs them signed in, show its protected form and wait. Never ask for a password, a code or anything the form asks in the conversation.',
8350
8377
  protocols: ['pap'],
8351
8378
  pap: {
8379
+ profile: 'draft-01',
8352
8380
  connections: [
8353
8381
  {
8354
8382
  id: 'manzanita',
@@ -8812,8 +8840,8 @@ export const APP_SOURCES = {
8812
8840
  connections: [
8813
8841
  {
8814
8842
  id: 'example-air',
8815
- brand: 'air.example',
8816
- audience: 'https://provider.example/a2a',
8843
+ brand: 'air.examples.datalayer.run',
8844
+ audience: 'https://air.examples.datalayer.run/a2a',
8817
8845
  access: 'write',
8818
8846
  scopes: ['bookings:read', 'bookings:change'],
8819
8847
  },
@@ -8861,11 +8889,15 @@ export const APP_SOURCES = {
8861
8889
  },
8862
8890
  ],
8863
8891
  verified: {
8892
+ live: [
8893
+ "Drilled on r1 on 13 October 2026 against the hosted Example Air (air.examples.datalayer.run), as its Preview's runtime reaches the gateway's pact toolset: its card read, asked as the application alone, the person's sign-in by device code approved at the Brand, then asked for the person and answered from the booking (bookings:read used, its receipt verified).",
8894
+ ],
8864
8895
  recorded: [
8865
8896
  "The journey is the developers' PACT example (examples/protocols/pact/personal_agent.py) against its local Provider, Example Air, run in its own tests (version 1.3.112).",
8866
8897
  ],
8867
8898
  unverified: [
8868
- "No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
8899
+ 'The hosted Example Air keeps registrations in memory: an application is registered there (POST /example/register, its issuer and keys) again after each restart.',
8900
+ "A model's turns in the Studio's Preview were not watched in that drill (no dev server ran); the step-up to bookings:change was not drilled live.",
8869
8901
  ],
8870
8902
  },
8871
8903
  },
@@ -8876,8 +8908,6 @@ export const APP_SOURCES = {
8876
8908
  deployment: {
8877
8909
  hosted: {},
8878
8910
  },
8879
- enabled: false,
8880
- unavailable_because: 'It asks an airline for you over PACT, and the services that reach a business for you are not shipped yet.',
8881
8911
  tags: ['example', 'companies'],
8882
8912
  emoji: '✈️',
8883
8913
  },