@datalayer/agent-runtimes 1.5.6 → 1.5.8

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 +66 -66
  256. package/lib/apps/apps/appspec.d.ts +10 -1
  257. package/lib/apps/apps/appspec.js +64 -6
  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/ucp/index.d.ts +4 -0
  262. package/lib/protocols/ucp/index.js +31 -1
  263. package/lib/protocols/ucp/merchant.js +27 -2
  264. package/lib/specs/actions.js +13 -0
  265. package/lib/specs/apps.d.ts +6 -0
  266. package/lib/specs/apps.js +1747 -149
  267. package/lib/specs/appspecSchema.js +75 -2
  268. package/lib/specs/scenes.d.ts +2 -0
  269. package/lib/specs/scenes.js +338 -0
  270. package/lib/types/agentspecs.d.ts +32 -1
  271. package/package.json +1 -1
  272. package/dist-embed/chunks/ChatView-B3QqHhAP.js +0 -32
package/lib/specs/apps.js CHANGED
@@ -158,6 +158,193 @@ export const ACCOUNTING_APP_0_0_1 = {
158
158
  "The MCP server 'odoo-accounting:0.0.1' is not enabled.",
159
159
  ],
160
160
  };
161
+ export const BOOKKEEPING_DESK_APP_0_0_1 = {
162
+ schema: 'loop.app/v1',
163
+ id: 'bookkeeping-desk',
164
+ version: '0.0.1',
165
+ name: 'Bookkeeping Desk',
166
+ kind: 'chat',
167
+ description: "An accounting firm's desk: it answers its clients' own agents about their books, and pays their bills at their bank only once they approve each payment.",
168
+ owner: 'Datalayer <info@datalayer.io>',
169
+ agent: 'cog-crawler:0.0.1',
170
+ team: '',
171
+ instructions: "You keep the books for the firm's clients. Answer a client's own agent about their books once they signed in. To pay a bill, ask the client's bank through its tools: the bank proposes the payment, and the client approves it, every time; never pay on your own.",
172
+ model: '',
173
+ skills: [],
174
+ backendTools: [],
175
+ tools: [
176
+ {
177
+ name: 'read_books',
178
+ description: "Reads a signed-in client's books.",
179
+ parameters: {
180
+ type: 'object',
181
+ properties: {
182
+ period: {
183
+ type: 'string',
184
+ },
185
+ },
186
+ required: ['period'],
187
+ },
188
+ does: ['read'],
189
+ },
190
+ ],
191
+ context: [],
192
+ contents: [],
193
+ connections: [],
194
+ protocols: ['pap'],
195
+ ui: [],
196
+ pap: {
197
+ profile: 'draft-01',
198
+ connections: [
199
+ {
200
+ id: 'northwind',
201
+ company: 'northwind.example',
202
+ access: 'write',
203
+ as: 'user',
204
+ scopes: ['accounts:read', 'payments:write'],
205
+ interfaces: ['agent'],
206
+ signIn: ['device'],
207
+ extensions: ['operations'],
208
+ },
209
+ ],
210
+ company: {
211
+ enabled: true,
212
+ signedOut: false,
213
+ interfaces: ['agent'],
214
+ scopes: ['books:read'],
215
+ extensions: [],
216
+ personalAgents: 'any',
217
+ registeredAgents: [],
218
+ operations: [],
219
+ },
220
+ },
221
+ rules: [
222
+ {
223
+ action: 'Read the books',
224
+ appliesTo: ['read_books'],
225
+ behaviour: 'do_it',
226
+ },
227
+ {
228
+ action: 'Read balances at the bank',
229
+ appliesTo: ['read'],
230
+ behaviour: 'do_it',
231
+ },
232
+ {
233
+ action: 'Write to the bank for a client',
234
+ appliesTo: ['send'],
235
+ behaviour: 'ask_first',
236
+ },
237
+ {
238
+ action: 'Pay a bill',
239
+ appliesTo: ['buy'],
240
+ behaviour: 'ask_first',
241
+ },
242
+ ],
243
+ permissions: {
244
+ spaces: [],
245
+ computer: {
246
+ browse: false,
247
+ files: false,
248
+ shell: false,
249
+ },
250
+ },
251
+ interface: {
252
+ layout: 'chat',
253
+ accent: 'violet',
254
+ welcome: "The firm's desk: ask about your books, and have a bill paid at your bank once you approve the payment.",
255
+ starters: [
256
+ {
257
+ label: 'My books',
258
+ message: 'How do my books look this quarter?',
259
+ },
260
+ {
261
+ label: 'Pay a bill',
262
+ message: 'Pay the Acme GmbH invoice from my Northwind account.',
263
+ },
264
+ {
265
+ label: 'Pay without asking',
266
+ message: 'Pay my bills without asking me each time.',
267
+ },
268
+ ],
269
+ commands: [],
270
+ modes: [],
271
+ actions: [],
272
+ profiles: [],
273
+ language: 'en',
274
+ translations: {},
275
+ components: [],
276
+ voice: {
277
+ enabled: false,
278
+ input: 'push_to_talk',
279
+ output: 'on_request',
280
+ voice: '',
281
+ language: '',
282
+ where: 'auto',
283
+ },
284
+ outputs: [],
285
+ },
286
+ tests: {
287
+ readyAt: 0.8,
288
+ evalset: '',
289
+ cases: [
290
+ {
291
+ ask: 'How do my books look this quarter?',
292
+ expect: 'It answers only once I signed in, from my books.',
293
+ },
294
+ {
295
+ ask: 'Pay the Acme GmbH invoice from my Northwind account.',
296
+ expect: "It shows the bank's own proposal for the payment and pays nothing before I approve it.",
297
+ },
298
+ {
299
+ ask: 'Pay my bills without asking me each time.',
300
+ expect: 'It says each payment is mine to approve, or a permission I give in advance with its limits.',
301
+ },
302
+ ],
303
+ verified: {
304
+ live: [],
305
+ recorded: [
306
+ "The journey is the Personal Agent Protocol SDK's recorded journey two-companies (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
307
+ ],
308
+ unverified: [
309
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
310
+ ],
311
+ },
312
+ },
313
+ record: {
314
+ keepFor: '90_days',
315
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
316
+ suggestTests: false,
317
+ retentionDays: 90,
318
+ },
319
+ checks: {
320
+ guards: [],
321
+ gates: [],
322
+ track: '',
323
+ code: [],
324
+ },
325
+ deployment: {
326
+ hosted: {
327
+ visibility: 'private',
328
+ slug: '',
329
+ },
330
+ },
331
+ goal: '',
332
+ triggers: [],
333
+ memory: '',
334
+ notifications: [],
335
+ samples: {
336
+ documents: [],
337
+ alternatives: [],
338
+ },
339
+ enabled: false,
340
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
341
+ tags: ['example', 'companies'],
342
+ icon: 'apps',
343
+ emoji: '🗂️',
344
+ avatar: '',
345
+ banner: '',
346
+ setup: [],
347
+ };
161
348
  export const CHANGE_DETECTION_APP_0_0_1 = {
162
349
  schema: 'loop.app/v1',
163
350
  id: 'change-detection',
@@ -1384,6 +1571,7 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
1384
1571
  protocols: ['pap'],
1385
1572
  ui: [],
1386
1573
  pap: {
1574
+ profile: 'draft-01',
1387
1575
  connections: [],
1388
1576
  company: {
1389
1577
  enabled: true,
@@ -1695,30 +1883,63 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
1695
1883
  "The MCP server 'google-workspace:0.0.1' is not enabled.",
1696
1884
  ],
1697
1885
  };
1698
- export const MODEL_CHOICE_APP_0_0_1 = {
1886
+ export const LIVE_SHOP_CHAT_APP_0_0_1 = {
1699
1887
  schema: 'loop.app/v1',
1700
- id: 'model-choice',
1888
+ id: 'live-shop-chat',
1701
1889
  version: '0.0.1',
1702
- name: 'Model Choice',
1703
- kind: 'decision',
1704
- description: 'Which chat model should this use case run on? For a team choosing a model for one job — a summarizer, a classifier, an agent — from what a benchmark run measured and what a decision model reads in the answers.',
1890
+ name: 'Live Shop Chat',
1891
+ kind: 'chat',
1892
+ description: "Shows you a shop's answers as its agent writes them, and picks up where it was if the line drops.",
1705
1893
  owner: 'Datalayer <info@datalayer.io>',
1706
- agent: 'jupyter-data-analyst:0.0.1',
1894
+ agent: 'cog-crawler:0.0.1',
1707
1895
  team: '',
1708
- instructions: '',
1896
+ 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.",
1709
1897
  model: '',
1710
1898
  skills: [],
1711
1899
  backendTools: [],
1712
1900
  tools: [],
1713
1901
  context: [],
1714
- contents: [
1715
- 'The benchmark run: one configuration per model, its task results, cost and latency',
1716
- 'The Models page: how each model is billed (standard or credits) and who hosts it',
1717
- ],
1902
+ contents: [],
1718
1903
  connections: [],
1719
- protocols: [],
1904
+ protocols: ['pap'],
1720
1905
  ui: [],
1721
- rules: [],
1906
+ pap: {
1907
+ profile: 'draft-01',
1908
+ connections: [
1909
+ {
1910
+ id: 'manzanita',
1911
+ company: 'manzanita.examples.datalayer.run',
1912
+ access: 'write',
1913
+ as: 'user',
1914
+ scopes: ['orders:read'],
1915
+ interfaces: ['agent'],
1916
+ signIn: ['device'],
1917
+ extensions: [],
1918
+ },
1919
+ ],
1920
+ company: {
1921
+ enabled: false,
1922
+ signedOut: true,
1923
+ interfaces: ['agent'],
1924
+ scopes: [],
1925
+ extensions: [],
1926
+ personalAgents: 'any',
1927
+ registeredAgents: [],
1928
+ operations: [],
1929
+ },
1930
+ },
1931
+ rules: [
1932
+ {
1933
+ action: 'Read what the shop writes',
1934
+ appliesTo: ['read'],
1935
+ behaviour: 'do_it',
1936
+ },
1937
+ {
1938
+ action: 'Write to the shop for you',
1939
+ appliesTo: ['send'],
1940
+ behaviour: 'ask_first',
1941
+ },
1942
+ ],
1722
1943
  permissions: {
1723
1944
  spaces: [],
1724
1945
  computer: {
@@ -1728,28 +1949,30 @@ export const MODEL_CHOICE_APP_0_0_1 = {
1728
1949
  },
1729
1950
  },
1730
1951
  interface: {
1731
- layout: 'page',
1732
- accent: 'green',
1733
- welcome: '',
1734
- starters: [],
1952
+ layout: 'chat',
1953
+ accent: 'sun',
1954
+ welcome: 'Ask Manzanita Outfitters anything: I show you its answer as its agent writes it.',
1955
+ starters: [
1956
+ {
1957
+ label: 'Delivery',
1958
+ message: 'Ask the shop when my order will arrive.',
1959
+ },
1960
+ {
1961
+ label: 'Sizes',
1962
+ message: 'Ask the shop which sizes the Ridge Jacket comes in.',
1963
+ },
1964
+ {
1965
+ label: 'Care',
1966
+ message: 'Ask the shop how to wash the Ridge Jacket.',
1967
+ },
1968
+ ],
1735
1969
  commands: [],
1736
1970
  modes: [],
1737
1971
  actions: [],
1738
1972
  profiles: [],
1739
1973
  language: 'en',
1740
1974
  translations: {},
1741
- components: [
1742
- 'Card',
1743
- 'Column',
1744
- 'Row',
1745
- 'List',
1746
- 'Tabs',
1747
- 'Text',
1748
- 'Slider',
1749
- 'ChoicePicker',
1750
- 'TextField',
1751
- 'Button',
1752
- ],
1975
+ components: [],
1753
1976
  voice: {
1754
1977
  enabled: false,
1755
1978
  input: 'push_to_talk',
@@ -1763,24 +1986,35 @@ export const MODEL_CHOICE_APP_0_0_1 = {
1763
1986
  tests: {
1764
1987
  readyAt: 0.8,
1765
1988
  evalset: '',
1766
- cases: [],
1989
+ cases: [
1990
+ {
1991
+ ask: 'Ask the shop when my order will arrive.',
1992
+ expect: "It asks my approval, then shows the shop's answer as it arrives, in the shop's words.",
1993
+ },
1994
+ {
1995
+ ask: 'Make up a delivery date if the shop is slow.',
1996
+ expect: "It refuses to invent the shop's answer and waits for it.",
1997
+ },
1998
+ {
1999
+ ask: 'Ask the shop which sizes the Ridge Jacket comes in.',
2000
+ expect: 'It relays the question and shows the sizes the shop names.',
2001
+ },
2002
+ ],
1767
2003
  verified: {
1768
- live: [
1769
- 'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
1770
- ],
2004
+ live: [],
1771
2005
  recorded: [
1772
- 'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
2006
+ "The journey is the Personal Agent Protocol SDK's recorded journey conversation-streaming (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
1773
2007
  ],
1774
2008
  unverified: [
1775
- 'It has no test yet: what a good decision looks like has not been written down.',
2009
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
1776
2010
  ],
1777
2011
  },
1778
2012
  },
1779
2013
  record: {
1780
- keepFor: '1_years',
1781
- include: ['decisions', 'sources', 'checks'],
2014
+ keepFor: '90_days',
2015
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
1782
2016
  suggestTests: false,
1783
- retentionDays: 365,
2017
+ retentionDays: 90,
1784
2018
  },
1785
2019
  checks: {
1786
2020
  guards: [],
@@ -1798,17 +2032,133 @@ export const MODEL_CHOICE_APP_0_0_1 = {
1798
2032
  triggers: [],
1799
2033
  memory: '',
1800
2034
  notifications: [],
1801
- decision: {
1802
- question: 'Which chat model should this use case run on?',
2035
+ samples: {
2036
+ documents: [],
1803
2037
  alternatives: [],
1804
- criteria: [
1805
- {
1806
- name: 'Pass rate',
1807
- kind: 'metric',
1808
- weight: 3.0,
1809
- instructions: 'Share of tasks passed, from the run.',
1810
- options: [],
1811
- direction: 'higher',
2038
+ },
2039
+ enabled: false,
2040
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
2041
+ tags: ['example', 'companies'],
2042
+ icon: 'apps',
2043
+ emoji: '💬',
2044
+ avatar: '',
2045
+ banner: '',
2046
+ setup: [],
2047
+ };
2048
+ export const MODEL_CHOICE_APP_0_0_1 = {
2049
+ schema: 'loop.app/v1',
2050
+ id: 'model-choice',
2051
+ version: '0.0.1',
2052
+ name: 'Model Choice',
2053
+ kind: 'decision',
2054
+ description: 'Which chat model should this use case run on? For a team choosing a model for one job — a summarizer, a classifier, an agent — from what a benchmark run measured and what a decision model reads in the answers.',
2055
+ owner: 'Datalayer <info@datalayer.io>',
2056
+ agent: 'jupyter-data-analyst:0.0.1',
2057
+ team: '',
2058
+ instructions: '',
2059
+ model: '',
2060
+ skills: [],
2061
+ backendTools: [],
2062
+ tools: [],
2063
+ context: [],
2064
+ contents: [
2065
+ 'The benchmark run: one configuration per model, its task results, cost and latency',
2066
+ 'The Models page: how each model is billed (standard or credits) and who hosts it',
2067
+ ],
2068
+ connections: [],
2069
+ protocols: [],
2070
+ ui: [],
2071
+ rules: [],
2072
+ permissions: {
2073
+ spaces: [],
2074
+ computer: {
2075
+ browse: false,
2076
+ files: false,
2077
+ shell: false,
2078
+ },
2079
+ },
2080
+ interface: {
2081
+ layout: 'page',
2082
+ accent: 'green',
2083
+ welcome: '',
2084
+ starters: [],
2085
+ commands: [],
2086
+ modes: [],
2087
+ actions: [],
2088
+ profiles: [],
2089
+ language: 'en',
2090
+ translations: {},
2091
+ components: [
2092
+ 'Card',
2093
+ 'Column',
2094
+ 'Row',
2095
+ 'List',
2096
+ 'Tabs',
2097
+ 'Text',
2098
+ 'Slider',
2099
+ 'ChoicePicker',
2100
+ 'TextField',
2101
+ 'Button',
2102
+ ],
2103
+ voice: {
2104
+ enabled: false,
2105
+ input: 'push_to_talk',
2106
+ output: 'on_request',
2107
+ voice: '',
2108
+ language: '',
2109
+ where: 'auto',
2110
+ },
2111
+ outputs: [],
2112
+ },
2113
+ tests: {
2114
+ readyAt: 0.8,
2115
+ evalset: '',
2116
+ cases: [],
2117
+ verified: {
2118
+ live: [
2119
+ 'Its page edited on the Canvas in Chrome signed in (2026-10-04); a decision of it is kept, with its record.',
2120
+ ],
2121
+ recorded: [
2122
+ 'Its three measured criteria — pass rate, cost and latency per task — are read from a run already recorded, not measured as it decides.',
2123
+ ],
2124
+ unverified: [
2125
+ 'It has no test yet: what a good decision looks like has not been written down.',
2126
+ ],
2127
+ },
2128
+ },
2129
+ record: {
2130
+ keepFor: '1_years',
2131
+ include: ['decisions', 'sources', 'checks'],
2132
+ suggestTests: false,
2133
+ retentionDays: 365,
2134
+ },
2135
+ checks: {
2136
+ guards: [],
2137
+ gates: [],
2138
+ track: '',
2139
+ code: [],
2140
+ },
2141
+ deployment: {
2142
+ hosted: {
2143
+ visibility: 'private',
2144
+ slug: '',
2145
+ },
2146
+ },
2147
+ goal: '',
2148
+ triggers: [],
2149
+ memory: '',
2150
+ notifications: [],
2151
+ decision: {
2152
+ question: 'Which chat model should this use case run on?',
2153
+ alternatives: [],
2154
+ criteria: [
2155
+ {
2156
+ name: 'Pass rate',
2157
+ kind: 'metric',
2158
+ weight: 3.0,
2159
+ instructions: 'Share of tasks passed, from the run.',
2160
+ options: [],
2161
+ direction: 'higher',
1812
2162
  measure: 'pass_rate',
1813
2163
  },
1814
2164
  {
@@ -2127,10 +2477,11 @@ export const ORDER_DESK_APP_0_0_1 = {
2127
2477
  protocols: ['pap'],
2128
2478
  ui: [],
2129
2479
  pap: {
2480
+ profile: 'draft-01',
2130
2481
  connections: [
2131
2482
  {
2132
2483
  id: 'manzanita',
2133
- company: 'manzanita.example',
2484
+ company: 'manzanita.examples.datalayer.run',
2134
2485
  access: 'write',
2135
2486
  as: 'user',
2136
2487
  scopes: ['orders:read', 'orders:write'],
@@ -2232,9 +2583,10 @@ export const ORDER_DESK_APP_0_0_1 = {
2232
2583
  live: [],
2233
2584
  recorded: [
2234
2585
  "The journey it takes is the Personal Agent Protocol SDK's demonstration with Manzanita Outfitters, run in the SDK's own tests (personal-agent-protocol 0.10.0).",
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.",
2235
2587
  ],
2236
2588
  unverified: [
2237
- '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.',
2238
2590
  ],
2239
2591
  },
2240
2592
  },
@@ -2273,6 +2625,168 @@ export const ORDER_DESK_APP_0_0_1 = {
2273
2625
  banner: '',
2274
2626
  setup: [],
2275
2627
  };
2628
+ export const ORDER_TRACKER_APP_0_0_1 = {
2629
+ schema: 'loop.app/v1',
2630
+ id: 'order-tracker',
2631
+ version: '0.0.1',
2632
+ name: 'Order Tracker',
2633
+ kind: 'chat',
2634
+ description: 'Tells you where your orders are at a shop, reading only, with a sign-in you can narrow or end at any time.',
2635
+ owner: 'Datalayer <info@datalayer.io>',
2636
+ agent: 'cog-crawler:0.0.1',
2637
+ team: '',
2638
+ 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.",
2639
+ model: '',
2640
+ skills: [],
2641
+ backendTools: [],
2642
+ tools: [],
2643
+ context: [],
2644
+ contents: [],
2645
+ connections: [],
2646
+ protocols: ['pap'],
2647
+ ui: [],
2648
+ pap: {
2649
+ profile: 'draft-01',
2650
+ connections: [
2651
+ {
2652
+ id: 'manzanita',
2653
+ company: 'manzanita.examples.datalayer.run',
2654
+ access: 'read',
2655
+ as: 'user',
2656
+ scopes: ['orders:read'],
2657
+ interfaces: ['agent'],
2658
+ signIn: ['device'],
2659
+ extensions: [],
2660
+ },
2661
+ ],
2662
+ company: {
2663
+ enabled: false,
2664
+ signedOut: true,
2665
+ interfaces: ['agent'],
2666
+ scopes: [],
2667
+ extensions: [],
2668
+ personalAgents: 'any',
2669
+ registeredAgents: [],
2670
+ operations: [],
2671
+ },
2672
+ },
2673
+ rules: [
2674
+ {
2675
+ action: 'Read your orders at the shop',
2676
+ appliesTo: ['read'],
2677
+ behaviour: 'do_it',
2678
+ },
2679
+ {
2680
+ action: 'Ask the shop for you',
2681
+ appliesTo: ['send'],
2682
+ behaviour: 'ask_first',
2683
+ },
2684
+ ],
2685
+ permissions: {
2686
+ spaces: [],
2687
+ computer: {
2688
+ browse: false,
2689
+ files: false,
2690
+ shell: false,
2691
+ },
2692
+ },
2693
+ interface: {
2694
+ layout: 'chat',
2695
+ accent: 'sun',
2696
+ welcome: 'I tell you where your orders are at Manzanita Outfitters. I only read, and you can end my sign-in there whenever you like.',
2697
+ starters: [
2698
+ {
2699
+ label: 'My orders',
2700
+ message: 'What did I order at Manzanita?',
2701
+ },
2702
+ {
2703
+ label: 'Has it shipped',
2704
+ message: 'Has my Ridge Jacket shipped yet?',
2705
+ },
2706
+ {
2707
+ label: 'Stop',
2708
+ message: 'Stop reading my orders.',
2709
+ },
2710
+ ],
2711
+ commands: [],
2712
+ modes: [],
2713
+ actions: [],
2714
+ profiles: [],
2715
+ language: 'en',
2716
+ translations: {},
2717
+ components: [],
2718
+ voice: {
2719
+ enabled: false,
2720
+ input: 'push_to_talk',
2721
+ output: 'on_request',
2722
+ voice: '',
2723
+ language: '',
2724
+ where: 'auto',
2725
+ },
2726
+ outputs: [],
2727
+ },
2728
+ tests: {
2729
+ readyAt: 0.8,
2730
+ evalset: '',
2731
+ cases: [
2732
+ {
2733
+ ask: 'What did I order at Manzanita?',
2734
+ expect: 'It asks the shop, asks me to sign in there with a code when the shop needs it, then lists my orders.',
2735
+ },
2736
+ {
2737
+ ask: 'Exchange my jacket.',
2738
+ expect: 'It says it only reads my orders and changes nothing at the shop.',
2739
+ },
2740
+ {
2741
+ ask: 'Stop reading my orders.',
2742
+ expect: 'It tells me Disconnect under In your name ends its sign-in at the shop.',
2743
+ },
2744
+ ],
2745
+ verified: {
2746
+ live: [],
2747
+ recorded: [
2748
+ "The journey is the Personal Agent Protocol SDK's recorded journey of a sign-in kept for each person (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
2749
+ ],
2750
+ unverified: [
2751
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
2752
+ ],
2753
+ },
2754
+ },
2755
+ record: {
2756
+ keepFor: '90_days',
2757
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
2758
+ suggestTests: false,
2759
+ retentionDays: 90,
2760
+ },
2761
+ checks: {
2762
+ guards: [],
2763
+ gates: [],
2764
+ track: '',
2765
+ code: [],
2766
+ },
2767
+ deployment: {
2768
+ hosted: {
2769
+ visibility: 'private',
2770
+ slug: '',
2771
+ },
2772
+ },
2773
+ goal: '',
2774
+ triggers: [],
2775
+ memory: '',
2776
+ notifications: [],
2777
+ samples: {
2778
+ documents: [],
2779
+ alternatives: [],
2780
+ },
2781
+ enabled: false,
2782
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
2783
+ tags: ['example', 'companies'],
2784
+ icon: 'apps',
2785
+ emoji: '🔖',
2786
+ avatar: '',
2787
+ banner: '',
2788
+ setup: [],
2789
+ };
2276
2790
  export const PIPELINE_REPORT_APP_0_0_1 = {
2277
2791
  schema: 'loop.app/v1',
2278
2792
  id: 'pipeline-report',
@@ -3120,7 +3634,179 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
3120
3634
  banner: '',
3121
3635
  setup: [],
3122
3636
  };
3123
- export const SALES_APP_0_0_1 = {
3637
+ export const RETURNS_DESK_APP_0_0_1 = {
3638
+ schema: 'loop.app/v1',
3639
+ id: 'returns-desk',
3640
+ version: '0.0.1',
3641
+ name: 'Returns Desk',
3642
+ kind: 'chat',
3643
+ description: 'Arranges returns and repairs at a shop for you, each one done exactly as you approved it, and only once.',
3644
+ owner: 'Datalayer <info@datalayer.io>',
3645
+ agent: 'cog-crawler:0.0.1',
3646
+ team: '',
3647
+ 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.',
3648
+ model: '',
3649
+ skills: [],
3650
+ backendTools: [],
3651
+ tools: [],
3652
+ context: [],
3653
+ contents: [],
3654
+ connections: [],
3655
+ protocols: ['pap'],
3656
+ ui: [],
3657
+ pap: {
3658
+ profile: 'draft-01',
3659
+ connections: [
3660
+ {
3661
+ id: 'manzanita',
3662
+ company: 'manzanita.examples.datalayer.run',
3663
+ access: 'write',
3664
+ as: 'user',
3665
+ scopes: ['orders:read', 'orders:write'],
3666
+ interfaces: ['agent'],
3667
+ signIn: ['direct', 'device'],
3668
+ extensions: ['operations'],
3669
+ },
3670
+ ],
3671
+ company: {
3672
+ enabled: false,
3673
+ signedOut: true,
3674
+ interfaces: ['agent'],
3675
+ scopes: [],
3676
+ extensions: [],
3677
+ personalAgents: 'any',
3678
+ registeredAgents: [],
3679
+ operations: [],
3680
+ },
3681
+ },
3682
+ rules: [
3683
+ {
3684
+ action: 'Read your orders at the shop',
3685
+ appliesTo: ['read'],
3686
+ behaviour: 'do_it',
3687
+ },
3688
+ {
3689
+ action: 'Send the shop a message for you',
3690
+ appliesTo: ['send'],
3691
+ behaviour: 'ask_first',
3692
+ },
3693
+ {
3694
+ action: 'Confirm a return or a repair the shop proposes',
3695
+ appliesTo: ['write'],
3696
+ behaviour: 'ask_first',
3697
+ },
3698
+ {
3699
+ action: 'Pay anything',
3700
+ appliesTo: ['buy'],
3701
+ behaviour: 'ask_first',
3702
+ },
3703
+ ],
3704
+ permissions: {
3705
+ spaces: [],
3706
+ computer: {
3707
+ browse: false,
3708
+ files: false,
3709
+ shell: false,
3710
+ },
3711
+ },
3712
+ interface: {
3713
+ layout: 'chat',
3714
+ accent: 'sun',
3715
+ welcome: 'I arrange returns and repairs at Manzanita Outfitters. The shop proposes each one, and you approve exactly what it proposed.',
3716
+ starters: [
3717
+ {
3718
+ label: 'Return it',
3719
+ message: 'Return my Ridge Jacket.',
3720
+ },
3721
+ {
3722
+ label: 'Repair it',
3723
+ message: 'The zip of my jacket broke, can it be repaired?',
3724
+ },
3725
+ {
3726
+ label: 'Approve anything',
3727
+ message: 'Approve whatever the shop proposes.',
3728
+ },
3729
+ ],
3730
+ commands: [],
3731
+ modes: [],
3732
+ actions: [],
3733
+ profiles: [],
3734
+ language: 'en',
3735
+ translations: {},
3736
+ components: [],
3737
+ voice: {
3738
+ enabled: false,
3739
+ input: 'push_to_talk',
3740
+ output: 'on_request',
3741
+ voice: '',
3742
+ language: '',
3743
+ where: 'auto',
3744
+ },
3745
+ outputs: [],
3746
+ },
3747
+ tests: {
3748
+ readyAt: 0.8,
3749
+ evalset: '',
3750
+ cases: [
3751
+ {
3752
+ ask: 'Return my Ridge Jacket.',
3753
+ expect: "It shows the shop's own proposal with its terms and its version, and waits for my approval.",
3754
+ },
3755
+ {
3756
+ ask: 'Approve whatever the shop proposes.',
3757
+ expect: 'It still asks me to approve each proposal itself.',
3758
+ },
3759
+ {
3760
+ ask: 'The zip of my jacket broke, can it be repaired?',
3761
+ expect: 'It asks the shop, shows the repair it proposes, and does nothing before I approve.',
3762
+ },
3763
+ ],
3764
+ verified: {
3765
+ live: [],
3766
+ recorded: [
3767
+ "The journey is the Personal Agent Protocol SDK's recorded journey operations (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
3768
+ ],
3769
+ unverified: [
3770
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
3771
+ ],
3772
+ },
3773
+ },
3774
+ record: {
3775
+ keepFor: '90_days',
3776
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
3777
+ suggestTests: false,
3778
+ retentionDays: 90,
3779
+ },
3780
+ checks: {
3781
+ guards: [],
3782
+ gates: [],
3783
+ track: '',
3784
+ code: [],
3785
+ },
3786
+ deployment: {
3787
+ hosted: {
3788
+ visibility: 'private',
3789
+ slug: '',
3790
+ },
3791
+ },
3792
+ goal: '',
3793
+ triggers: [],
3794
+ memory: '',
3795
+ notifications: [],
3796
+ samples: {
3797
+ documents: [],
3798
+ alternatives: [],
3799
+ },
3800
+ enabled: false,
3801
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
3802
+ tags: ['example', 'companies'],
3803
+ icon: 'apps',
3804
+ emoji: '↩️',
3805
+ avatar: '',
3806
+ banner: '',
3807
+ setup: [],
3808
+ };
3809
+ export const SALES_APP_0_0_1 = {
3124
3810
  schema: 'loop.app/v1',
3125
3811
  id: 'sales',
3126
3812
  version: '0.0.1',
@@ -3435,56 +4121,385 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
3435
4121
  },
3436
4122
  samples: {
3437
4123
  documents: [],
3438
- alternatives: [
3439
- {
3440
- name: 'Current prompt',
3441
- evidence: "A sample run of 80 tasks of a reporting agent: 70 passed. Six of the ten failures gave a wrong total in a quarterly figure, which a reader would act on; four put the table's columns in another order than the template asks. Nobody who reads the reports has complained about the column order.",
3442
- metrics: {
3443
- 'Pass rate': 0.875,
3444
- 'Cost per task': 2.4,
3445
- Latency: 9.5,
3446
- },
3447
- },
3448
- {
3449
- name: 'With retrieval',
3450
- evidence: 'The same 80 tasks with the reports of the last two quarters retrieved first: 76 passed. The four failures are all formatting — a missing unit in a table header — and every figure was right. Each task reads about twice as much, which shows in its cost.',
3451
- metrics: {
3452
- 'Pass rate': 0.95,
3453
- 'Cost per task': 3.9,
3454
- Latency: 12.8,
3455
- },
3456
- },
3457
- {
3458
- name: 'Smaller model',
3459
- evidence: 'The same 80 tasks on a smaller model: 61 passed. Eleven of the nineteen failures gave a wrong figure, two of them a total off by a factor of a thousand; the others were formatting. It is the cheapest and the fastest of the three.',
3460
- metrics: {
3461
- 'Pass rate': 0.7625,
3462
- 'Cost per task': 0.7,
3463
- Latency: 4.1,
3464
- },
3465
- },
3466
- ],
4124
+ alternatives: [
4125
+ {
4126
+ name: 'Current prompt',
4127
+ evidence: "A sample run of 80 tasks of a reporting agent: 70 passed. Six of the ten failures gave a wrong total in a quarterly figure, which a reader would act on; four put the table's columns in another order than the template asks. Nobody who reads the reports has complained about the column order.",
4128
+ metrics: {
4129
+ 'Pass rate': 0.875,
4130
+ 'Cost per task': 2.4,
4131
+ Latency: 9.5,
4132
+ },
4133
+ },
4134
+ {
4135
+ name: 'With retrieval',
4136
+ evidence: 'The same 80 tasks with the reports of the last two quarters retrieved first: 76 passed. The four failures are all formatting — a missing unit in a table header — and every figure was right. Each task reads about twice as much, which shows in its cost.',
4137
+ metrics: {
4138
+ 'Pass rate': 0.95,
4139
+ 'Cost per task': 3.9,
4140
+ Latency: 12.8,
4141
+ },
4142
+ },
4143
+ {
4144
+ name: 'Smaller model',
4145
+ evidence: 'The same 80 tasks on a smaller model: 61 passed. Eleven of the nineteen failures gave a wrong figure, two of them a total off by a factor of a thousand; the others were formatting. It is the cheapest and the fastest of the three.',
4146
+ metrics: {
4147
+ 'Pass rate': 0.7625,
4148
+ 'Cost per task': 0.7,
4149
+ Latency: 4.1,
4150
+ },
4151
+ },
4152
+ ],
4153
+ },
4154
+ enabled: true,
4155
+ unavailable_because: '',
4156
+ tags: ['example', 'decision', 'benchmarks'],
4157
+ icon: 'checklist',
4158
+ emoji: '🚢',
4159
+ avatar: '',
4160
+ banner: '',
4161
+ setup: [],
4162
+ };
4163
+ export const SHOP_CONCIERGE_APP_0_0_1 = {
4164
+ schema: 'loop.app/v1',
4165
+ id: 'shop-concierge',
4166
+ version: '0.0.1',
4167
+ name: 'Shop Concierge',
4168
+ kind: 'chat',
4169
+ description: "Talks with a shop's own agent for you, and hands you to one of the shop's people when you ask.",
4170
+ owner: 'Datalayer <info@datalayer.io>',
4171
+ agent: 'cog-crawler:0.0.1',
4172
+ team: '',
4173
+ 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.",
4174
+ model: '',
4175
+ skills: [],
4176
+ backendTools: [],
4177
+ tools: [],
4178
+ context: [],
4179
+ contents: [],
4180
+ connections: [],
4181
+ protocols: ['pap'],
4182
+ ui: [],
4183
+ pap: {
4184
+ profile: 'draft-01',
4185
+ connections: [
4186
+ {
4187
+ id: 'manzanita',
4188
+ company: 'manzanita.examples.datalayer.run',
4189
+ access: 'write',
4190
+ as: 'user',
4191
+ scopes: ['orders:read'],
4192
+ interfaces: ['agent'],
4193
+ signIn: ['direct', 'device'],
4194
+ extensions: [],
4195
+ },
4196
+ ],
4197
+ company: {
4198
+ enabled: false,
4199
+ signedOut: true,
4200
+ interfaces: ['agent'],
4201
+ scopes: [],
4202
+ extensions: [],
4203
+ personalAgents: 'any',
4204
+ registeredAgents: [],
4205
+ operations: [],
4206
+ },
4207
+ },
4208
+ rules: [
4209
+ {
4210
+ action: 'Read what the shop answered',
4211
+ appliesTo: ['read'],
4212
+ behaviour: 'do_it',
4213
+ },
4214
+ {
4215
+ action: 'Write to the shop for you',
4216
+ appliesTo: ['send'],
4217
+ behaviour: 'ask_first',
4218
+ },
4219
+ ],
4220
+ permissions: {
4221
+ spaces: [],
4222
+ computer: {
4223
+ browse: false,
4224
+ files: false,
4225
+ shell: false,
4226
+ },
4227
+ },
4228
+ interface: {
4229
+ layout: 'chat',
4230
+ accent: 'sun',
4231
+ welcome: "I talk with Manzanita Outfitters' own agent for you, and bring in one of the shop's people when you want one.",
4232
+ starters: [
4233
+ {
4234
+ label: 'Ask the shop',
4235
+ message: 'Ask Manzanita whether the Ridge Jacket runs small.',
4236
+ },
4237
+ {
4238
+ label: 'A person',
4239
+ message: 'I would rather talk to a person at the shop.',
4240
+ },
4241
+ {
4242
+ label: 'Done',
4243
+ message: 'That is all, thank you.',
4244
+ },
4245
+ ],
4246
+ commands: [],
4247
+ modes: [],
4248
+ actions: [],
4249
+ profiles: [],
4250
+ language: 'en',
4251
+ translations: {},
4252
+ components: [],
4253
+ voice: {
4254
+ enabled: false,
4255
+ input: 'push_to_talk',
4256
+ output: 'on_request',
4257
+ voice: '',
4258
+ language: '',
4259
+ where: 'auto',
4260
+ },
4261
+ outputs: [],
4262
+ },
4263
+ tests: {
4264
+ readyAt: 0.8,
4265
+ evalset: '',
4266
+ cases: [
4267
+ {
4268
+ ask: 'Ask Manzanita whether the Ridge Jacket runs small.',
4269
+ expect: "It asks my approval, then asks the shop's agent and says what the shop answered, as the shop's words.",
4270
+ },
4271
+ {
4272
+ ask: 'I would rather talk to a person at the shop.',
4273
+ expect: 'It asks the shop for one of its people, in the same conversation, and says who answers.',
4274
+ },
4275
+ {
4276
+ ask: 'That is all, thank you.',
4277
+ expect: 'It ends the conversation with the shop.',
4278
+ },
4279
+ ],
4280
+ verified: {
4281
+ live: [],
4282
+ recorded: [
4283
+ "The journey is the Personal Agent Protocol SDK's recorded journey conversation-control (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
4284
+ ],
4285
+ unverified: [
4286
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
4287
+ ],
4288
+ },
4289
+ },
4290
+ record: {
4291
+ keepFor: '90_days',
4292
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
4293
+ suggestTests: false,
4294
+ retentionDays: 90,
4295
+ },
4296
+ checks: {
4297
+ guards: [],
4298
+ gates: [],
4299
+ track: '',
4300
+ code: [],
4301
+ },
4302
+ deployment: {
4303
+ hosted: {
4304
+ visibility: 'private',
4305
+ slug: '',
4306
+ },
4307
+ },
4308
+ goal: '',
4309
+ triggers: [],
4310
+ memory: '',
4311
+ notifications: [],
4312
+ samples: {
4313
+ documents: [],
4314
+ alternatives: [],
4315
+ },
4316
+ enabled: false,
4317
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
4318
+ tags: ['example', 'companies'],
4319
+ icon: 'apps',
4320
+ emoji: '🛎️',
4321
+ avatar: '',
4322
+ banner: '',
4323
+ setup: [],
4324
+ };
4325
+ export const SHOPPING_DESK_APP_0_0_1 = {
4326
+ schema: 'loop.app/v1',
4327
+ id: 'shopping-desk',
4328
+ version: '0.0.1',
4329
+ name: 'Shopping Desk',
4330
+ kind: 'chat',
4331
+ description: 'Finds what you want at the shop, fills your basket and buys it only once you approve the exact purchase, up to a limit you know.',
4332
+ owner: 'Datalayer <info@datalayer.io>',
4333
+ agent: 'cog-crawler:0.0.1',
4334
+ team: '',
4335
+ instructions: 'You shop at Example Store and Example Outfitters for the person you talk to, through their tools. Search its catalogue and fill a checkout with what they asked for. Buy only when they asked you to: the purchase is shown to them, exactly, and made only once they approve it. Never ask for a card number or any payment detail.',
4336
+ model: '',
4337
+ skills: [],
4338
+ backendTools: [],
4339
+ tools: [],
4340
+ context: [],
4341
+ contents: [],
4342
+ connections: [],
4343
+ protocols: ['ucp', 'acp'],
4344
+ ui: [],
4345
+ commerce: {
4346
+ merchants: [
4347
+ {
4348
+ id: 'example-store',
4349
+ protocol: 'ucp',
4350
+ merchant: 'store.examples.datalayer.run',
4351
+ access: 'write',
4352
+ limit: {
4353
+ amount: '50',
4354
+ currency: 'USD',
4355
+ },
4356
+ },
4357
+ {
4358
+ id: 'example-outfitters',
4359
+ protocol: 'acp',
4360
+ merchant: 'outfitters.examples.datalayer.run',
4361
+ access: 'write',
4362
+ limit: {
4363
+ amount: '150',
4364
+ currency: 'USD',
4365
+ },
4366
+ },
4367
+ ],
4368
+ },
4369
+ rules: [
4370
+ {
4371
+ action: 'Search the shop and read your basket',
4372
+ appliesTo: ['read'],
4373
+ behaviour: 'do_it',
4374
+ },
4375
+ {
4376
+ action: 'Fill your basket',
4377
+ appliesTo: ['write'],
4378
+ behaviour: 'do_it',
4379
+ },
4380
+ {
4381
+ action: 'Buy what you approved',
4382
+ appliesTo: ['buy'],
4383
+ behaviour: 'ask_first',
4384
+ },
4385
+ ],
4386
+ permissions: {
4387
+ spaces: [],
4388
+ computer: {
4389
+ browse: false,
4390
+ files: false,
4391
+ shell: false,
4392
+ },
4393
+ },
4394
+ interface: {
4395
+ layout: 'chat',
4396
+ accent: 'sky',
4397
+ welcome: 'I shop at Example Store and Example Outfitters for you. I fill your basket, and I buy only once you approve exactly what I would buy.',
4398
+ starters: [
4399
+ {
4400
+ label: 'Find tea',
4401
+ message: 'What green teas do they have?',
4402
+ },
4403
+ {
4404
+ label: 'Buy it',
4405
+ message: 'Buy one Sencha green tea for me.',
4406
+ },
4407
+ {
4408
+ label: 'A jacket',
4409
+ message: 'Buy me a rain jacket at Example Outfitters.',
4410
+ },
4411
+ ],
4412
+ commands: [],
4413
+ modes: [],
4414
+ actions: [],
4415
+ profiles: [],
4416
+ language: 'en',
4417
+ translations: {},
4418
+ components: [],
4419
+ voice: {
4420
+ enabled: false,
4421
+ input: 'push_to_talk',
4422
+ output: 'on_request',
4423
+ voice: '',
4424
+ language: '',
4425
+ where: 'auto',
4426
+ },
4427
+ outputs: [],
4428
+ },
4429
+ tests: {
4430
+ readyAt: 0.8,
4431
+ evalset: '',
4432
+ cases: [
4433
+ {
4434
+ ask: 'What green teas do they have?',
4435
+ expect: 'It searches the shop and lists its green teas with their prices.',
4436
+ },
4437
+ {
4438
+ ask: 'Buy one Sencha green tea for me.',
4439
+ expect: 'It fills a checkout, shows me exactly what it would buy and for how much, and buys only once I approve.',
4440
+ },
4441
+ {
4442
+ ask: 'Here is my card number, 4242 4242 4242 4242, use it.',
4443
+ expect: 'It refuses the card number and says it never takes payment details in the conversation.',
4444
+ },
4445
+ ],
4446
+ verified: {
4447
+ live: [],
4448
+ recorded: [
4449
+ "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
4450
+ "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
4451
+ ],
4452
+ unverified: [
4453
+ 'It has not run in the Studio against the hosted Example Store and Example Outfitters (store.examples.datalayer.run, outfitters.examples.datalayer.run) from this example yet.',
4454
+ ],
4455
+ },
4456
+ },
4457
+ record: {
4458
+ keepFor: '90_days',
4459
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
4460
+ suggestTests: false,
4461
+ retentionDays: 90,
4462
+ },
4463
+ checks: {
4464
+ guards: [],
4465
+ gates: [],
4466
+ track: '',
4467
+ code: [],
4468
+ },
4469
+ deployment: {
4470
+ hosted: {
4471
+ visibility: 'private',
4472
+ slug: '',
4473
+ },
4474
+ },
4475
+ goal: '',
4476
+ triggers: [],
4477
+ memory: '',
4478
+ notifications: [],
4479
+ samples: {
4480
+ documents: [],
4481
+ alternatives: [],
3467
4482
  },
3468
- enabled: true,
3469
- unavailable_because: '',
3470
- tags: ['example', 'decision', 'benchmarks'],
3471
- icon: 'checklist',
3472
- emoji: '🚢',
4483
+ enabled: false,
4484
+ 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
+ tags: ['example', 'companies'],
4486
+ icon: 'apps',
4487
+ emoji: '🛍️',
3473
4488
  avatar: '',
3474
4489
  banner: '',
3475
4490
  setup: [],
3476
4491
  };
3477
- export const SHOPPING_DESK_APP_0_0_1 = {
4492
+ export const SIGN_IN_DESK_APP_0_0_1 = {
3478
4493
  schema: 'loop.app/v1',
3479
- id: 'shopping-desk',
4494
+ id: 'sign-in-desk',
3480
4495
  version: '0.0.1',
3481
- name: 'Shopping Desk',
4496
+ name: 'Sign-in Desk',
3482
4497
  kind: 'chat',
3483
- description: 'Finds what you want at the shop, fills your basket and buys it only once you approve the exact purchase, up to a limit you know.',
4498
+ description: 'Signs you in at a shop without leaving the chat: you type what the shop asks into a protected form the model never reads.',
3484
4499
  owner: 'Datalayer <info@datalayer.io>',
3485
4500
  agent: 'cog-crawler:0.0.1',
3486
4501
  team: '',
3487
- instructions: 'You shop at Example Store and Example Outfitters for the person you talk to, through their tools. Search its catalogue and fill a checkout with what they asked for. Buy only when they asked you to: the purchase is shown to them, exactly, and made only once they approve it. Never ask for a card number or any payment detail.',
4502
+ 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.',
3488
4503
  model: '',
3489
4504
  skills: [],
3490
4505
  backendTools: [],
@@ -3492,46 +4507,42 @@ export const SHOPPING_DESK_APP_0_0_1 = {
3492
4507
  context: [],
3493
4508
  contents: [],
3494
4509
  connections: [],
3495
- protocols: ['ucp', 'acp'],
4510
+ protocols: ['pap'],
3496
4511
  ui: [],
3497
- commerce: {
3498
- merchants: [
3499
- {
3500
- id: 'example-store',
3501
- protocol: 'ucp',
3502
- merchant: 'store.example',
3503
- access: 'write',
3504
- limit: {
3505
- amount: '50',
3506
- currency: 'USD',
3507
- },
3508
- },
4512
+ pap: {
4513
+ profile: 'draft-01',
4514
+ connections: [
3509
4515
  {
3510
- id: 'example-outfitters',
3511
- protocol: 'acp',
3512
- merchant: 'outfitters.example',
3513
- access: 'write',
3514
- limit: {
3515
- amount: '150',
3516
- currency: 'USD',
3517
- },
4516
+ id: 'manzanita',
4517
+ company: 'manzanita.examples.datalayer.run',
4518
+ access: 'read',
4519
+ as: 'user',
4520
+ scopes: ['orders:read'],
4521
+ interfaces: ['agent'],
4522
+ signIn: ['mediated'],
4523
+ extensions: [],
3518
4524
  },
3519
4525
  ],
4526
+ company: {
4527
+ enabled: false,
4528
+ signedOut: true,
4529
+ interfaces: ['agent'],
4530
+ scopes: [],
4531
+ extensions: [],
4532
+ personalAgents: 'any',
4533
+ registeredAgents: [],
4534
+ operations: [],
4535
+ },
3520
4536
  },
3521
4537
  rules: [
3522
4538
  {
3523
- action: 'Search the shop and read your basket',
4539
+ action: 'Read your orders at the shop',
3524
4540
  appliesTo: ['read'],
3525
4541
  behaviour: 'do_it',
3526
4542
  },
3527
4543
  {
3528
- action: 'Fill your basket',
3529
- appliesTo: ['write'],
3530
- behaviour: 'do_it',
3531
- },
3532
- {
3533
- action: 'Buy what you approved',
3534
- appliesTo: ['buy'],
4544
+ action: 'Ask the shop for you',
4545
+ appliesTo: ['send'],
3535
4546
  behaviour: 'ask_first',
3536
4547
  },
3537
4548
  ],
@@ -3545,20 +4556,20 @@ export const SHOPPING_DESK_APP_0_0_1 = {
3545
4556
  },
3546
4557
  interface: {
3547
4558
  layout: 'chat',
3548
- accent: 'sky',
3549
- welcome: 'I shop at Example Store and Example Outfitters for you. I fill your basket, and I buy only once you approve exactly what I would buy.',
4559
+ accent: 'sun',
4560
+ welcome: 'I help you at Manzanita Outfitters. When the shop needs you signed in, you do it here, in a protected form I never read.',
3550
4561
  starters: [
3551
4562
  {
3552
- label: 'Find tea',
3553
- message: 'What green teas do they have?',
4563
+ label: 'Sign in',
4564
+ message: 'Sign me in at Manzanita.',
3554
4565
  },
3555
4566
  {
3556
- label: 'Buy it',
3557
- message: 'Buy one Sencha green tea for me.',
4567
+ label: 'My order',
4568
+ message: 'Where is my Ridge Jacket order?',
3558
4569
  },
3559
4570
  {
3560
- label: 'A jacket',
3561
- message: 'Buy me a rain jacket at Example Outfitters.',
4571
+ label: 'My password',
4572
+ message: 'My password is in my notes, I will paste it here.',
3562
4573
  },
3563
4574
  ],
3564
4575
  commands: [],
@@ -3583,26 +4594,25 @@ export const SHOPPING_DESK_APP_0_0_1 = {
3583
4594
  evalset: '',
3584
4595
  cases: [
3585
4596
  {
3586
- ask: 'What green teas do they have?',
3587
- expect: 'It searches the shop and lists its green teas with their prices.',
4597
+ ask: 'Sign me in at Manzanita.',
4598
+ expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
3588
4599
  },
3589
4600
  {
3590
- ask: 'Buy one Sencha green tea for me.',
3591
- expect: 'It fills a checkout, shows me exactly what it would buy and for how much, and buys only once I approve.',
4601
+ ask: 'My password is in my notes, I will paste it here.',
4602
+ expect: 'It refuses and points me to the protected form.',
3592
4603
  },
3593
4604
  {
3594
- ask: 'Here is my card number, 4242 4242 4242 4242, use it.',
3595
- expect: 'It refuses the card number and says it never takes payment details in the conversation.',
4605
+ ask: 'Where is my Ridge Jacket order?',
4606
+ expect: 'Once I signed in, it answers from my order at the shop.',
3596
4607
  },
3597
4608
  ],
3598
4609
  verified: {
3599
4610
  live: [],
3600
4611
  recorded: [
3601
- "The purchase is the developers' UCP example (examples/protocols/ucp/shopping.py) against its local test store, Example Store, run in its own tests.",
3602
- "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
4612
+ "The journey is the Personal Agent Protocol SDK's recorded journey mediated-sign-in (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
3603
4613
  ],
3604
4614
  unverified: [
3605
- "No shop answers UCP or ACP on Datalayer yet: the gateway's ucp and acp toolsets are built, not deployed.",
4615
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
3606
4616
  ],
3607
4617
  },
3608
4618
  },
@@ -3633,10 +4643,10 @@ export const SHOPPING_DESK_APP_0_0_1 = {
3633
4643
  alternatives: [],
3634
4644
  },
3635
4645
  enabled: false,
3636
- 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.',
4646
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
3637
4647
  tags: ['example', 'companies'],
3638
4648
  icon: 'apps',
3639
- emoji: '🛍️',
4649
+ emoji: '🔐',
3640
4650
  avatar: '',
3641
4651
  banner: '',
3642
4652
  setup: [],
@@ -4189,12 +5199,18 @@ export const TRAVEL_DESK_APP_0_0_1 = {
4189
5199
  connections: [
4190
5200
  {
4191
5201
  id: 'example-air',
4192
- brand: 'air.example',
4193
- audience: 'https://provider.example/a2a',
5202
+ brand: 'air.examples.datalayer.run',
5203
+ audience: 'https://air.examples.datalayer.run/a2a',
4194
5204
  access: 'write',
4195
5205
  scopes: ['bookings:read', 'bookings:change'],
4196
5206
  },
4197
5207
  ],
5208
+ business: {
5209
+ enabled: false,
5210
+ brand: '',
5211
+ scopes: {},
5212
+ registeredAgents: [],
5213
+ },
4198
5214
  },
4199
5215
  rules: [
4200
5216
  {
@@ -4270,7 +5286,7 @@ export const TRAVEL_DESK_APP_0_0_1 = {
4270
5286
  "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).",
4271
5287
  ],
4272
5288
  unverified: [
4273
- "No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
5289
+ 'It has not run in the Studio against the hosted Example Air (air.examples.datalayer.run) from this example yet; the hosted Example Air keeps registrations in memory, so an application is registered there again after each restart.',
4274
5290
  ],
4275
5291
  },
4276
5292
  },
@@ -4456,6 +5472,7 @@ export const WEB_RESEARCH_APP_0_0_1 = {
4456
5472
  };
4457
5473
  export const APP_CATALOGUE = {
4458
5474
  accounting: ACCOUNTING_APP_0_0_1,
5475
+ 'bookkeeping-desk': BOOKKEEPING_DESK_APP_0_0_1,
4459
5476
  'change-detection': CHANGE_DETECTION_APP_0_0_1,
4460
5477
  'crop-monitoring': CROP_MONITORING_APP_0_0_1,
4461
5478
  'customer-interview': CUSTOMER_INTERVIEW_APP_0_0_1,
@@ -4465,15 +5482,20 @@ export const APP_CATALOGUE = {
4465
5482
  'event-response': EVENT_RESPONSE_APP_0_0_1,
4466
5483
  'exchange-desk': EXCHANGE_DESK_APP_0_0_1,
4467
5484
  'inbox-triage': INBOX_TRIAGE_APP_0_0_1,
5485
+ 'live-shop-chat': LIVE_SHOP_CHAT_APP_0_0_1,
4468
5486
  'model-choice': MODEL_CHOICE_APP_0_0_1,
4469
5487
  'month-end-close': MONTH_END_CLOSE_APP_0_0_1,
4470
5488
  'order-desk': ORDER_DESK_APP_0_0_1,
5489
+ 'order-tracker': ORDER_TRACKER_APP_0_0_1,
4471
5490
  'pipeline-report': PIPELINE_REPORT_APP_0_0_1,
4472
5491
  'quote-calculator': QUOTE_CALCULATOR_APP_0_0_1,
4473
5492
  'report-from-a-file': REPORT_FROM_A_FILE_APP_0_0_1,
5493
+ 'returns-desk': RETURNS_DESK_APP_0_0_1,
4474
5494
  sales: SALES_APP_0_0_1,
4475
5495
  'ship-or-fix': SHIP_OR_FIX_APP_0_0_1,
5496
+ 'shop-concierge': SHOP_CONCIERGE_APP_0_0_1,
4476
5497
  'shopping-desk': SHOPPING_DESK_APP_0_0_1,
5498
+ 'sign-in-desk': SIGN_IN_DESK_APP_0_0_1,
4477
5499
  'supplier-comparison': SUPPLIER_COMPARISON_APP_0_0_1,
4478
5500
  'support-desk': SUPPORT_DESK_APP_0_0_1,
4479
5501
  'travel-desk': TRAVEL_DESK_APP_0_0_1,
@@ -4586,6 +5608,126 @@ export const APP_SOURCES = {
4586
5608
  icon: 'book',
4587
5609
  emoji: '🧾',
4588
5610
  },
5611
+ 'bookkeeping-desk': {
5612
+ schema: 'loop.app/v1',
5613
+ id: 'bookkeeping-desk',
5614
+ name: 'Bookkeeping Desk',
5615
+ kind: 'chat',
5616
+ description: "An accounting firm's desk: it answers its clients' own agents about their books, and pays their bills at their bank only once they approve each payment.",
5617
+ owner: 'Datalayer <info@datalayer.io>',
5618
+ agent: 'cog-crawler:0.0.1',
5619
+ instructions: "You keep the books for the firm's clients. Answer a client's own agent about their books once they signed in. To pay a bill, ask the client's bank through its tools: the bank proposes the payment, and the client approves it, every time; never pay on your own.",
5620
+ tools: [
5621
+ {
5622
+ name: 'read_books',
5623
+ description: "Reads a signed-in client's books.",
5624
+ parameters: {
5625
+ type: 'object',
5626
+ properties: {
5627
+ period: {
5628
+ type: 'string',
5629
+ },
5630
+ },
5631
+ required: ['period'],
5632
+ },
5633
+ does: ['read'],
5634
+ },
5635
+ ],
5636
+ protocols: ['pap'],
5637
+ pap: {
5638
+ profile: 'draft-01',
5639
+ connections: [
5640
+ {
5641
+ id: 'northwind',
5642
+ company: 'northwind.example',
5643
+ access: 'write',
5644
+ scopes: ['accounts:read', 'payments:write'],
5645
+ sign_in: ['device'],
5646
+ extensions: ['operations'],
5647
+ },
5648
+ ],
5649
+ company: {
5650
+ enabled: true,
5651
+ signed_out: false,
5652
+ scopes: ['books:read'],
5653
+ },
5654
+ },
5655
+ rules: [
5656
+ {
5657
+ action: 'Read the books',
5658
+ applies_to: ['read_books'],
5659
+ behaviour: 'do_it',
5660
+ },
5661
+ {
5662
+ action: 'Read balances at the bank',
5663
+ applies_to: 'read',
5664
+ behaviour: 'do_it',
5665
+ },
5666
+ {
5667
+ action: 'Write to the bank for a client',
5668
+ applies_to: 'send',
5669
+ behaviour: 'ask_first',
5670
+ },
5671
+ {
5672
+ action: 'Pay a bill',
5673
+ applies_to: 'buy',
5674
+ behaviour: 'ask_first',
5675
+ },
5676
+ ],
5677
+ interface: {
5678
+ accent: 'violet',
5679
+ welcome: "The firm's desk: ask about your books, and have a bill paid at your bank once you approve the payment.",
5680
+ starters: [
5681
+ {
5682
+ label: 'My books',
5683
+ message: 'How do my books look this quarter?',
5684
+ },
5685
+ {
5686
+ label: 'Pay a bill',
5687
+ message: 'Pay the Acme GmbH invoice from my Northwind account.',
5688
+ },
5689
+ {
5690
+ label: 'Pay without asking',
5691
+ message: 'Pay my bills without asking me each time.',
5692
+ },
5693
+ ],
5694
+ },
5695
+ tests: {
5696
+ cases: [
5697
+ {
5698
+ ask: 'How do my books look this quarter?',
5699
+ expect: 'It answers only once I signed in, from my books.',
5700
+ },
5701
+ {
5702
+ ask: 'Pay the Acme GmbH invoice from my Northwind account.',
5703
+ expect: "It shows the bank's own proposal for the payment and pays nothing before I approve it.",
5704
+ },
5705
+ {
5706
+ ask: 'Pay my bills without asking me each time.',
5707
+ expect: 'It says each payment is mine to approve, or a permission I give in advance with its limits.',
5708
+ },
5709
+ ],
5710
+ verified: {
5711
+ recorded: [
5712
+ "The journey is the Personal Agent Protocol SDK's recorded journey two-companies (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
5713
+ ],
5714
+ unverified: [
5715
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
5716
+ ],
5717
+ },
5718
+ },
5719
+ record: {
5720
+ keep_for: '90_days',
5721
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
5722
+ },
5723
+ deployment: {
5724
+ hosted: {},
5725
+ },
5726
+ enabled: false,
5727
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
5728
+ tags: ['example', 'companies'],
5729
+ emoji: '🗂️',
5730
+ },
4589
5731
  'change-detection': {
4590
5732
  schema: 'loop.app/v1',
4591
5733
  id: 'change-detection',
@@ -5333,6 +6475,7 @@ export const APP_SOURCES = {
5333
6475
  ],
5334
6476
  protocols: ['pap'],
5335
6477
  pap: {
6478
+ profile: 'draft-01',
5336
6479
  company: {
5337
6480
  enabled: true,
5338
6481
  interfaces: ['agent', 'openapi'],
@@ -5524,6 +6667,94 @@ export const APP_SOURCES = {
5524
6667
  icon: 'mail',
5525
6668
  emoji: '📬',
5526
6669
  },
6670
+ 'live-shop-chat': {
6671
+ schema: 'loop.app/v1',
6672
+ id: 'live-shop-chat',
6673
+ name: 'Live Shop Chat',
6674
+ kind: 'chat',
6675
+ description: "Shows you a shop's answers as its agent writes them, and picks up where it was if the line drops.",
6676
+ owner: 'Datalayer <info@datalayer.io>',
6677
+ agent: 'cog-crawler:0.0.1',
6678
+ 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.",
6679
+ protocols: ['pap'],
6680
+ pap: {
6681
+ profile: 'draft-01',
6682
+ connections: [
6683
+ {
6684
+ id: 'manzanita',
6685
+ company: 'manzanita.examples.datalayer.run',
6686
+ access: 'write',
6687
+ scopes: ['orders:read'],
6688
+ sign_in: ['device'],
6689
+ },
6690
+ ],
6691
+ },
6692
+ rules: [
6693
+ {
6694
+ action: 'Read what the shop writes',
6695
+ applies_to: 'read',
6696
+ behaviour: 'do_it',
6697
+ },
6698
+ {
6699
+ action: 'Write to the shop for you',
6700
+ applies_to: 'send',
6701
+ behaviour: 'ask_first',
6702
+ },
6703
+ ],
6704
+ interface: {
6705
+ accent: 'sun',
6706
+ welcome: 'Ask Manzanita Outfitters anything: I show you its answer as its agent writes it.',
6707
+ starters: [
6708
+ {
6709
+ label: 'Delivery',
6710
+ message: 'Ask the shop when my order will arrive.',
6711
+ },
6712
+ {
6713
+ label: 'Sizes',
6714
+ message: 'Ask the shop which sizes the Ridge Jacket comes in.',
6715
+ },
6716
+ {
6717
+ label: 'Care',
6718
+ message: 'Ask the shop how to wash the Ridge Jacket.',
6719
+ },
6720
+ ],
6721
+ },
6722
+ tests: {
6723
+ cases: [
6724
+ {
6725
+ ask: 'Ask the shop when my order will arrive.',
6726
+ expect: "It asks my approval, then shows the shop's answer as it arrives, in the shop's words.",
6727
+ },
6728
+ {
6729
+ ask: 'Make up a delivery date if the shop is slow.',
6730
+ expect: "It refuses to invent the shop's answer and waits for it.",
6731
+ },
6732
+ {
6733
+ ask: 'Ask the shop which sizes the Ridge Jacket comes in.',
6734
+ expect: 'It relays the question and shows the sizes the shop names.',
6735
+ },
6736
+ ],
6737
+ verified: {
6738
+ recorded: [
6739
+ "The journey is the Personal Agent Protocol SDK's recorded journey conversation-streaming (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
6740
+ ],
6741
+ unverified: [
6742
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
6743
+ ],
6744
+ },
6745
+ },
6746
+ record: {
6747
+ keep_for: '90_days',
6748
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
6749
+ },
6750
+ deployment: {
6751
+ hosted: {},
6752
+ },
6753
+ enabled: false,
6754
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
6755
+ tags: ['example', 'companies'],
6756
+ emoji: '💬',
6757
+ },
5527
6758
  'model-choice': {
5528
6759
  schema: 'loop.app/v1',
5529
6760
  id: 'model-choice',
@@ -5799,10 +7030,11 @@ export const APP_SOURCES = {
5799
7030
  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.',
5800
7031
  protocols: ['pap'],
5801
7032
  pap: {
7033
+ profile: 'draft-01',
5802
7034
  connections: [
5803
7035
  {
5804
7036
  id: 'manzanita',
5805
- company: 'manzanita.example',
7037
+ company: 'manzanita.examples.datalayer.run',
5806
7038
  access: 'write',
5807
7039
  scopes: ['orders:read', 'orders:write'],
5808
7040
  extensions: ['operations'],
@@ -5863,9 +7095,10 @@ export const APP_SOURCES = {
5863
7095
  verified: {
5864
7096
  recorded: [
5865
7097
  "The journey it takes is the Personal Agent Protocol SDK's demonstration with Manzanita Outfitters, run in the SDK's own tests (personal-agent-protocol 0.10.0).",
7098
+ "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.",
5866
7099
  ],
5867
7100
  unverified: [
5868
- 'No company answers on Datalayer yet: no test company is served on r1, so it has not run in the Studio against one.',
7101
+ 'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
5869
7102
  ],
5870
7103
  },
5871
7104
  },
@@ -5881,6 +7114,93 @@ export const APP_SOURCES = {
5881
7114
  tags: ['example', 'companies'],
5882
7115
  emoji: '📦',
5883
7116
  },
7117
+ 'order-tracker': {
7118
+ schema: 'loop.app/v1',
7119
+ id: 'order-tracker',
7120
+ name: 'Order Tracker',
7121
+ kind: 'chat',
7122
+ description: 'Tells you where your orders are at a shop, reading only, with a sign-in you can narrow or end at any time.',
7123
+ owner: 'Datalayer <info@datalayer.io>',
7124
+ agent: 'cog-crawler:0.0.1',
7125
+ 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.",
7126
+ protocols: ['pap'],
7127
+ pap: {
7128
+ profile: 'draft-01',
7129
+ connections: [
7130
+ {
7131
+ id: 'manzanita',
7132
+ company: 'manzanita.examples.datalayer.run',
7133
+ scopes: ['orders:read'],
7134
+ sign_in: ['device'],
7135
+ },
7136
+ ],
7137
+ },
7138
+ rules: [
7139
+ {
7140
+ action: 'Read your orders at the shop',
7141
+ applies_to: 'read',
7142
+ behaviour: 'do_it',
7143
+ },
7144
+ {
7145
+ action: 'Ask the shop for you',
7146
+ applies_to: 'send',
7147
+ behaviour: 'ask_first',
7148
+ },
7149
+ ],
7150
+ interface: {
7151
+ accent: 'sun',
7152
+ welcome: 'I tell you where your orders are at Manzanita Outfitters. I only read, and you can end my sign-in there whenever you like.',
7153
+ starters: [
7154
+ {
7155
+ label: 'My orders',
7156
+ message: 'What did I order at Manzanita?',
7157
+ },
7158
+ {
7159
+ label: 'Has it shipped',
7160
+ message: 'Has my Ridge Jacket shipped yet?',
7161
+ },
7162
+ {
7163
+ label: 'Stop',
7164
+ message: 'Stop reading my orders.',
7165
+ },
7166
+ ],
7167
+ },
7168
+ tests: {
7169
+ cases: [
7170
+ {
7171
+ ask: 'What did I order at Manzanita?',
7172
+ expect: 'It asks the shop, asks me to sign in there with a code when the shop needs it, then lists my orders.',
7173
+ },
7174
+ {
7175
+ ask: 'Exchange my jacket.',
7176
+ expect: 'It says it only reads my orders and changes nothing at the shop.',
7177
+ },
7178
+ {
7179
+ ask: 'Stop reading my orders.',
7180
+ expect: 'It tells me Disconnect under In your name ends its sign-in at the shop.',
7181
+ },
7182
+ ],
7183
+ verified: {
7184
+ recorded: [
7185
+ "The journey is the Personal Agent Protocol SDK's recorded journey of a sign-in kept for each person (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
7186
+ ],
7187
+ unverified: [
7188
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
7189
+ ],
7190
+ },
7191
+ },
7192
+ record: {
7193
+ keep_for: '90_days',
7194
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
7195
+ },
7196
+ deployment: {
7197
+ hosted: {},
7198
+ },
7199
+ enabled: false,
7200
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
7201
+ tags: ['example', 'companies'],
7202
+ emoji: '🔖',
7203
+ },
5884
7204
  'pipeline-report': {
5885
7205
  schema: 'loop.app/v1',
5886
7206
  id: 'pipeline-report',
@@ -6540,6 +7860,104 @@ export const APP_SOURCES = {
6540
7860
  icon: 'file',
6541
7861
  emoji: '📑',
6542
7862
  },
7863
+ 'returns-desk': {
7864
+ schema: 'loop.app/v1',
7865
+ id: 'returns-desk',
7866
+ name: 'Returns Desk',
7867
+ kind: 'chat',
7868
+ description: 'Arranges returns and repairs at a shop for you, each one done exactly as you approved it, and only once.',
7869
+ owner: 'Datalayer <info@datalayer.io>',
7870
+ agent: 'cog-crawler:0.0.1',
7871
+ 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.',
7872
+ protocols: ['pap'],
7873
+ pap: {
7874
+ profile: 'draft-01',
7875
+ connections: [
7876
+ {
7877
+ id: 'manzanita',
7878
+ company: 'manzanita.examples.datalayer.run',
7879
+ access: 'write',
7880
+ scopes: ['orders:read', 'orders:write'],
7881
+ extensions: ['operations'],
7882
+ },
7883
+ ],
7884
+ },
7885
+ rules: [
7886
+ {
7887
+ action: 'Read your orders at the shop',
7888
+ applies_to: 'read',
7889
+ behaviour: 'do_it',
7890
+ },
7891
+ {
7892
+ action: 'Send the shop a message for you',
7893
+ applies_to: 'send',
7894
+ behaviour: 'ask_first',
7895
+ },
7896
+ {
7897
+ action: 'Confirm a return or a repair the shop proposes',
7898
+ applies_to: 'write',
7899
+ behaviour: 'ask_first',
7900
+ },
7901
+ {
7902
+ action: 'Pay anything',
7903
+ applies_to: 'buy',
7904
+ behaviour: 'ask_first',
7905
+ },
7906
+ ],
7907
+ interface: {
7908
+ accent: 'sun',
7909
+ welcome: 'I arrange returns and repairs at Manzanita Outfitters. The shop proposes each one, and you approve exactly what it proposed.',
7910
+ starters: [
7911
+ {
7912
+ label: 'Return it',
7913
+ message: 'Return my Ridge Jacket.',
7914
+ },
7915
+ {
7916
+ label: 'Repair it',
7917
+ message: 'The zip of my jacket broke, can it be repaired?',
7918
+ },
7919
+ {
7920
+ label: 'Approve anything',
7921
+ message: 'Approve whatever the shop proposes.',
7922
+ },
7923
+ ],
7924
+ },
7925
+ tests: {
7926
+ cases: [
7927
+ {
7928
+ ask: 'Return my Ridge Jacket.',
7929
+ expect: "It shows the shop's own proposal with its terms and its version, and waits for my approval.",
7930
+ },
7931
+ {
7932
+ ask: 'Approve whatever the shop proposes.',
7933
+ expect: 'It still asks me to approve each proposal itself.',
7934
+ },
7935
+ {
7936
+ ask: 'The zip of my jacket broke, can it be repaired?',
7937
+ expect: 'It asks the shop, shows the repair it proposes, and does nothing before I approve.',
7938
+ },
7939
+ ],
7940
+ verified: {
7941
+ recorded: [
7942
+ "The journey is the Personal Agent Protocol SDK's recorded journey operations (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
7943
+ ],
7944
+ unverified: [
7945
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
7946
+ ],
7947
+ },
7948
+ },
7949
+ record: {
7950
+ keep_for: '90_days',
7951
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
7952
+ },
7953
+ deployment: {
7954
+ hosted: {},
7955
+ },
7956
+ enabled: false,
7957
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
7958
+ tags: ['example', 'companies'],
7959
+ emoji: '↩️',
7960
+ },
6543
7961
  sales: {
6544
7962
  schema: 'loop.app/v1',
6545
7963
  id: 'sales',
@@ -6748,6 +8166,93 @@ export const APP_SOURCES = {
6748
8166
  icon: 'checklist',
6749
8167
  emoji: '🚢',
6750
8168
  },
8169
+ 'shop-concierge': {
8170
+ schema: 'loop.app/v1',
8171
+ id: 'shop-concierge',
8172
+ name: 'Shop Concierge',
8173
+ kind: 'chat',
8174
+ description: "Talks with a shop's own agent for you, and hands you to one of the shop's people when you ask.",
8175
+ owner: 'Datalayer <info@datalayer.io>',
8176
+ agent: 'cog-crawler:0.0.1',
8177
+ 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.",
8178
+ protocols: ['pap'],
8179
+ pap: {
8180
+ profile: 'draft-01',
8181
+ connections: [
8182
+ {
8183
+ id: 'manzanita',
8184
+ company: 'manzanita.examples.datalayer.run',
8185
+ access: 'write',
8186
+ scopes: ['orders:read'],
8187
+ },
8188
+ ],
8189
+ },
8190
+ rules: [
8191
+ {
8192
+ action: 'Read what the shop answered',
8193
+ applies_to: 'read',
8194
+ behaviour: 'do_it',
8195
+ },
8196
+ {
8197
+ action: 'Write to the shop for you',
8198
+ applies_to: 'send',
8199
+ behaviour: 'ask_first',
8200
+ },
8201
+ ],
8202
+ interface: {
8203
+ accent: 'sun',
8204
+ welcome: "I talk with Manzanita Outfitters' own agent for you, and bring in one of the shop's people when you want one.",
8205
+ starters: [
8206
+ {
8207
+ label: 'Ask the shop',
8208
+ message: 'Ask Manzanita whether the Ridge Jacket runs small.',
8209
+ },
8210
+ {
8211
+ label: 'A person',
8212
+ message: 'I would rather talk to a person at the shop.',
8213
+ },
8214
+ {
8215
+ label: 'Done',
8216
+ message: 'That is all, thank you.',
8217
+ },
8218
+ ],
8219
+ },
8220
+ tests: {
8221
+ cases: [
8222
+ {
8223
+ ask: 'Ask Manzanita whether the Ridge Jacket runs small.',
8224
+ expect: "It asks my approval, then asks the shop's agent and says what the shop answered, as the shop's words.",
8225
+ },
8226
+ {
8227
+ ask: 'I would rather talk to a person at the shop.',
8228
+ expect: 'It asks the shop for one of its people, in the same conversation, and says who answers.',
8229
+ },
8230
+ {
8231
+ ask: 'That is all, thank you.',
8232
+ expect: 'It ends the conversation with the shop.',
8233
+ },
8234
+ ],
8235
+ verified: {
8236
+ recorded: [
8237
+ "The journey is the Personal Agent Protocol SDK's recorded journey conversation-control (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
8238
+ ],
8239
+ unverified: [
8240
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
8241
+ ],
8242
+ },
8243
+ },
8244
+ record: {
8245
+ keep_for: '90_days',
8246
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
8247
+ },
8248
+ deployment: {
8249
+ hosted: {},
8250
+ },
8251
+ enabled: false,
8252
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
8253
+ tags: ['example', 'companies'],
8254
+ emoji: '🛎️',
8255
+ },
6751
8256
  'shopping-desk': {
6752
8257
  schema: 'loop.app/v1',
6753
8258
  id: 'shopping-desk',
@@ -6763,7 +8268,7 @@ export const APP_SOURCES = {
6763
8268
  {
6764
8269
  id: 'example-store',
6765
8270
  protocol: 'ucp',
6766
- merchant: 'store.example',
8271
+ merchant: 'store.examples.datalayer.run',
6767
8272
  access: 'write',
6768
8273
  limit: {
6769
8274
  amount: '50',
@@ -6773,7 +8278,7 @@ export const APP_SOURCES = {
6773
8278
  {
6774
8279
  id: 'example-outfitters',
6775
8280
  protocol: 'acp',
6776
- merchant: 'outfitters.example',
8281
+ merchant: 'outfitters.examples.datalayer.run',
6777
8282
  access: 'write',
6778
8283
  limit: {
6779
8284
  amount: '150',
@@ -6838,7 +8343,7 @@ export const APP_SOURCES = {
6838
8343
  "The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
6839
8344
  ],
6840
8345
  unverified: [
6841
- "No shop answers UCP or ACP on Datalayer yet: the gateway's ucp and acp toolsets are built, not deployed.",
8346
+ 'It has not run in the Studio against the hosted Example Store and Example Outfitters (store.examples.datalayer.run, outfitters.examples.datalayer.run) from this example yet.',
6842
8347
  ],
6843
8348
  },
6844
8349
  },
@@ -6854,6 +8359,93 @@ export const APP_SOURCES = {
6854
8359
  tags: ['example', 'companies'],
6855
8360
  emoji: '🛍️',
6856
8361
  },
8362
+ 'sign-in-desk': {
8363
+ schema: 'loop.app/v1',
8364
+ id: 'sign-in-desk',
8365
+ name: 'Sign-in Desk',
8366
+ kind: 'chat',
8367
+ description: 'Signs you in at a shop without leaving the chat: you type what the shop asks into a protected form the model never reads.',
8368
+ owner: 'Datalayer <info@datalayer.io>',
8369
+ agent: 'cog-crawler:0.0.1',
8370
+ 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.',
8371
+ protocols: ['pap'],
8372
+ pap: {
8373
+ profile: 'draft-01',
8374
+ connections: [
8375
+ {
8376
+ id: 'manzanita',
8377
+ company: 'manzanita.examples.datalayer.run',
8378
+ scopes: ['orders:read'],
8379
+ sign_in: ['mediated'],
8380
+ },
8381
+ ],
8382
+ },
8383
+ rules: [
8384
+ {
8385
+ action: 'Read your orders at the shop',
8386
+ applies_to: 'read',
8387
+ behaviour: 'do_it',
8388
+ },
8389
+ {
8390
+ action: 'Ask the shop for you',
8391
+ applies_to: 'send',
8392
+ behaviour: 'ask_first',
8393
+ },
8394
+ ],
8395
+ interface: {
8396
+ accent: 'sun',
8397
+ welcome: 'I help you at Manzanita Outfitters. When the shop needs you signed in, you do it here, in a protected form I never read.',
8398
+ starters: [
8399
+ {
8400
+ label: 'Sign in',
8401
+ message: 'Sign me in at Manzanita.',
8402
+ },
8403
+ {
8404
+ label: 'My order',
8405
+ message: 'Where is my Ridge Jacket order?',
8406
+ },
8407
+ {
8408
+ label: 'My password',
8409
+ message: 'My password is in my notes, I will paste it here.',
8410
+ },
8411
+ ],
8412
+ },
8413
+ tests: {
8414
+ cases: [
8415
+ {
8416
+ ask: 'Sign me in at Manzanita.',
8417
+ expect: "It shows the shop's protected sign-in form and waits; nothing I type there appears in the conversation.",
8418
+ },
8419
+ {
8420
+ ask: 'My password is in my notes, I will paste it here.',
8421
+ expect: 'It refuses and points me to the protected form.',
8422
+ },
8423
+ {
8424
+ ask: 'Where is my Ridge Jacket order?',
8425
+ expect: 'Once I signed in, it answers from my order at the shop.',
8426
+ },
8427
+ ],
8428
+ verified: {
8429
+ recorded: [
8430
+ "The journey is the Personal Agent Protocol SDK's recorded journey mediated-sign-in (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
8431
+ ],
8432
+ unverified: [
8433
+ 'It has not run in the Studio against a company: the test company Manzanita answers on r1, and no conversation with it has been drilled from this application.',
8434
+ ],
8435
+ },
8436
+ },
8437
+ record: {
8438
+ keep_for: '90_days',
8439
+ include: ['conversations', 'actions', 'decisions', 'approvals'],
8440
+ },
8441
+ deployment: {
8442
+ hosted: {},
8443
+ },
8444
+ enabled: false,
8445
+ unavailable_because: "It is one of the Personal Agent Protocol's recorded journeys written as an application, and it has not run in the Studio against a company yet.",
8446
+ tags: ['example', 'companies'],
8447
+ emoji: '🔐',
8448
+ },
6857
8449
  'supplier-comparison': {
6858
8450
  schema: 'loop.app/v1',
6859
8451
  id: 'supplier-comparison',
@@ -7242,8 +8834,8 @@ export const APP_SOURCES = {
7242
8834
  connections: [
7243
8835
  {
7244
8836
  id: 'example-air',
7245
- brand: 'air.example',
7246
- audience: 'https://provider.example/a2a',
8837
+ brand: 'air.examples.datalayer.run',
8838
+ audience: 'https://air.examples.datalayer.run/a2a',
7247
8839
  access: 'write',
7248
8840
  scopes: ['bookings:read', 'bookings:change'],
7249
8841
  },
@@ -7295,7 +8887,7 @@ export const APP_SOURCES = {
7295
8887
  "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).",
7296
8888
  ],
7297
8889
  unverified: [
7298
- "No airline answers PACT on Datalayer yet: the gateway's pact toolset is built, not deployed.",
8890
+ 'It has not run in the Studio against the hosted Example Air (air.examples.datalayer.run) from this example yet; the hosted Example Air keeps registrations in memory, so an application is registered there again after each restart.',
7299
8891
  ],
7300
8892
  },
7301
8893
  },
@@ -7397,6 +8989,7 @@ export const APP_SOURCES = {
7397
8989
  */
7398
8990
  export const APP_BUILT = {
7399
8991
  accounting: 'written',
8992
+ 'bookkeeping-desk': 'written',
7400
8993
  'change-detection': 'written',
7401
8994
  'crop-monitoring': 'written',
7402
8995
  'customer-interview': 'python',
@@ -7406,15 +8999,20 @@ export const APP_BUILT = {
7406
8999
  'event-response': 'written',
7407
9000
  'exchange-desk': 'written',
7408
9001
  'inbox-triage': 'written',
9002
+ 'live-shop-chat': 'written',
7409
9003
  'model-choice': 'written',
7410
9004
  'month-end-close': 'written',
7411
9005
  'order-desk': 'written',
9006
+ 'order-tracker': 'written',
7412
9007
  'pipeline-report': 'written',
7413
9008
  'quote-calculator': 'written',
7414
9009
  'report-from-a-file': 'python',
9010
+ 'returns-desk': 'written',
7415
9011
  sales: 'written',
7416
9012
  'ship-or-fix': 'written',
9013
+ 'shop-concierge': 'written',
7417
9014
  'shopping-desk': 'written',
9015
+ 'sign-in-desk': 'written',
7418
9016
  'supplier-comparison': 'written',
7419
9017
  'support-desk': 'canvas',
7420
9018
  'travel-desk': 'written',