@datalayer/agent-runtimes 1.5.7 → 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.
- package/dist-embed/chunks/{AgentDetails-KezohVQI.js → AgentDetails-CMBy5o1q.js} +1 -1
- package/dist-embed/chunks/{AgentDetailsDialog-CklhMnk7.js → AgentDetailsDialog-D2vH2Nrd.js} +1 -1
- package/dist-embed/chunks/{AgentInspector-CtCaRc1L.js → AgentInspector-Bd0oHNAX.js} +1 -1
- package/dist-embed/chunks/{AgentInspectorDialog-DB9cx3Gd.js → AgentInspectorDialog-BJUgBPAE.js} +1 -1
- package/dist-embed/chunks/{CellSidebarExtension-CfaJL6DQ.js → CellSidebarExtension-CYOVwk1t.js} +6 -6
- package/dist-embed/chunks/ChatView-DIdw1rtZ.js +32 -0
- package/dist-embed/chunks/{ContextPie-1vP4f-3N.js → ContextPie-B9mAKJc2.js} +1 -1
- package/dist-embed/chunks/{DeckComponent-82GVdsoi.js → DeckComponent-CbmzVWcF.js} +2 -2
- package/dist-embed/chunks/{DocumentView-SrJloJDo.js → DocumentView-BqsGfNys.js} +1 -1
- package/dist-embed/chunks/{EphemeralDocument-t1KulOH8.js → EphemeralDocument-DLaNvwm_.js} +1 -1
- package/dist-embed/chunks/{EphemeralNotebook-Co-WQWCc.js → EphemeralNotebook-jnqAJFPI.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawComponent-5NeLUYVB.js → ExcalidrawComponent-Cb8yeXqu.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawModal-9ZnOB03n.js → ExcalidrawModal-DaPSGYek.js} +1 -1
- package/dist-embed/chunks/{JupyterLexicalExtension-Cize8RXy.js → JupyterLexicalExtension-BQINjIFV.js} +9 -9
- package/dist-embed/chunks/{KernelVariables-Cl57Zze1.js → KernelVariables-CGQkS5EX.js} +1 -1
- package/dist-embed/chunks/{LexicalToolRegistry-CoM9ROsx.js → LexicalToolRegistry-BJ6mpMWn.js} +1 -1
- package/dist-embed/chunks/{NotebookToolSurfaces-CWfppxBN.js → NotebookToolSurfaces-DiPifvaW.js} +1 -1
- package/dist-embed/chunks/{NotebookView-DOf_K74b.js → NotebookView-IX0wNuX8.js} +1 -1
- package/dist-embed/chunks/{Output-9DKTscSv.js → Output-B9XAhyoF.js} +1 -1
- package/dist-embed/chunks/{SandboxDetailsDialog-BCfDm6MB.js → SandboxDetailsDialog-COCpmo8m.js} +1 -1
- package/dist-embed/chunks/{SchemaForm-BOYPrvf8.js → SchemaForm-WIwdKnrk.js} +1 -1
- package/dist-embed/chunks/{WidgetVariableView-BTOwHP78.js → WidgetVariableView-BoGROi-A.js} +1 -1
- package/dist-embed/chunks/{YouTubePlugin-Bs4zZIB1.js → YouTubePlugin-BEQBWMwx.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-D5p59vS_.js → abnfDiagram-VCTEODGH-CG18Hf18.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-DRYbUvhc.js → abnfDiagram-VCTEODGH-D3_T0Lze.js} +1 -1
- package/dist-embed/chunks/{ar-SA-G6X2FPQ2-D6XRzkBS.js → ar-SA-G6X2FPQ2-BDWXsTdt.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-DQGv0imf.js → architectureDiagram-5GKGNRK7-B1QPAYO8.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-B7ITKDup.js → architectureDiagram-5GKGNRK7-B5kSsKje.js} +1 -1
- package/dist-embed/chunks/{az-AZ-76LH7QW2-DBTdUiqp.js → az-AZ-76LH7QW2-BGchGiT7.js} +1 -1
- package/dist-embed/chunks/{bg-BG-XCXSNQG7-DuhcsaSL.js → bg-BG-XCXSNQG7-vCII6Zuq.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-868be97b-DYe-XTjy.js → blockDiagram-868be97b-BvM0ptp7.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-y7tEFo3j.js → blockDiagram-I7D4REHJ-B8BmxOM4.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-IltJXCd6.js → blockDiagram-I7D4REHJ-ClwWG8yx.js} +1 -1
- package/dist-embed/chunks/{bn-BD-2XOGV67Q-CPFeLVSN.js → bn-BD-2XOGV67Q-Beu9yUTu.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-3f4bdde3-Bybp0wky.js → c4Diagram-3f4bdde3-S92W2yOx.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-DpaHndz8.js → c4Diagram-7LVT6UL2-CNWW_-u7.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-CizxVqqX.js → c4Diagram-7LVT6UL2-nSCKKLuX.js} +1 -1
- package/dist-embed/chunks/{ca-ES-6MX7JW3Y-gDR_kEC6.js → ca-ES-6MX7JW3Y-CnEo6YQi.js} +1 -1
- package/dist-embed/chunks/{celltoolbartracker-DLF4PWyW.js → celltoolbartracker-CO6V5FhH.js} +1 -1
- package/dist-embed/chunks/{chunk-2Q5K7J3B-BI6lURun.js → chunk-2Q5K7J3B--r8j4N5L.js} +1 -1
- package/dist-embed/chunks/{chunk-2Q5K7J3B-DWoLSrj9.js → chunk-2Q5K7J3B-D3fTIaw3.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-SleuNqDC.js → chunk-5VM5RSS4-D76mXyWz.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-CDh4wYym.js → chunk-5VM5RSS4-QmrgOATO.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-h_FwJMTr.js → chunk-F27PBJKO-DdSgBnK0.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-AvWsNGYY.js → chunk-F27PBJKO-DvNrStTM.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-DGRceKiU.js → chunk-IMKFNOWR-DpxND1Ct.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-Hx4a5yny.js → chunk-IMKFNOWR-DwqmSZhU.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-A4gy2qc4.js → chunk-JWPE2WC7-i7V3vMtZ.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-BuJactJo.js → chunk-JWPE2WC7-jla8jvq5.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-CFM-817s.js → chunk-POPQ4Y6H-BGCugXU7.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-CmRF80iG.js → chunk-POPQ4Y6H-ofrenTaa.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-CryZx9JE.js → chunk-SVP7TREG-2Q2uQyQk.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-DSNzmytH.js → chunk-SVP7TREG-BIxxVjkU.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-DyGS3fIj.js → chunk-TICWLB2K-BqA5q52L.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-CEaDF8ZJ.js → chunk-TICWLB2K-LNiCmYq5.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-8Cnzpdjz.js → chunk-XXDRQBXY-CNMg_gvd.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-DxQBcVOz.js → chunk-XXDRQBXY-CqtfA3WC.js} +1 -1
- package/dist-embed/chunks/{classDiagram-ZZMXUADV-yvP3zMO3.js → classDiagram-ZZMXUADV-Co0jT9i-.js} +1 -1
- package/dist-embed/chunks/{classDiagram-ZZMXUADV-BQkO1UYr.js → classDiagram-ZZMXUADV-D6z_X195.js} +1 -1
- package/dist-embed/chunks/{classDiagram-f62afe4f-AYfpYKtp.js → classDiagram-f62afe4f-lN62p17q.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-604399ef-BWyNcT_y.js → classDiagram-v2-604399ef-B_QJ6H8h.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-yvP3zMO3.js → classDiagram-v2-VYDZK3BY-Co0jT9i-.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-BQkO1UYr.js → classDiagram-v2-VYDZK3BY-D6z_X195.js} +1 -1
- package/dist-embed/chunks/{code-block-IT6T5CEO-F4BSIGY6.js → code-block-IT6T5CEO-BA38Km-f.js} +1 -1
- package/dist-embed/chunks/{component-DMQ8W8n1.js → component-Chor_J7e.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-C3HC0XIY.js → cose-bilkent-JH36ORCC-B5H1cwBa.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-MVxlcfpd.js → cose-bilkent-JH36ORCC-C3cTgEcU.js} +1 -1
- package/dist-embed/chunks/{createText-aed3d8b3-CEJODAXJ.js → createText-aed3d8b3-BtgHeyNs.js} +1 -1
- package/dist-embed/chunks/{cs-CZ-2BRQDIVT-BXQxcYp6.js → cs-CZ-2BRQDIVT-ClBKH9_y.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-DNRKTIHx.js → cynefinDiagram-5FMLGOSQ-DPQLh9z7.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-D87ENxS0.js → cynefinDiagram-5FMLGOSQ-sdsAonZm.js} +1 -1
- package/dist-embed/chunks/{da-DK-5WZEPLOC-Ck3vidj3.js → da-DK-5WZEPLOC-BqFDUAty.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-BOhThFKd.js → dagre-GXQ25YYZ-Bwf_WjLM.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-DscCD5Uq.js → dagre-GXQ25YYZ-DHF-9-7e.js} +1 -1
- package/dist-embed/chunks/{de-DE-XR44H4JA-CPZgrOuc.js → de-DE-XR44H4JA-6dsEQn7Z.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-zDQduoQy.js → diagram-S7CK7UJ4-C-N7Ei3I.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-CUhme3Bl.js → diagram-S7CK7UJ4-DEqGRBMT.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-BxhQPjAM.js → diagram-UQ7AKVKN-CvSBE0YU.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-Byi-v8UN.js → diagram-UQ7AKVKN-DACyxI-v.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-au-v2v9D.js → diagram-VSXAHHWV-DFze2xro.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-CqihYkDH.js → diagram-VSXAHHWV-DOb69VtE.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-Cd5PaF_n.js → diagram-VX7I27RA-8EKYM_Sx.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-ETzwrw79.js → diagram-VX7I27RA-CVTSdYyZ.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-DkbsvY2A.js → diagram-Z3DM3KII-B-689FF6.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-AcMuRFo5.js → diagram-Z3DM3KII-DyiBmBFy.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-DuWfMZcD.js → ebnfDiagram-PWID7BFC-DcKvqn_h.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-BrEs-SB2.js → ebnfDiagram-PWID7BFC-gj8dgCWR.js} +1 -1
- package/dist-embed/chunks/{edges-b2856ca0-Czd3-xvj.js → edges-b2856ca0-BqGGNnb4.js} +1 -1
- package/dist-embed/chunks/{el-GR-BZB4AONW-CjQSkw0P.js → el-GR-BZB4AONW-DOMW2ttY.js} +1 -1
- package/dist-embed/chunks/{erDiagram-5d81789a-JegaF4gy.js → erDiagram-5d81789a-Bf1Ik49K.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-xubaXuKR.js → erDiagram-RLTQ6QDP-B0PyZB_3.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-Cpn6_cd1.js → erDiagram-RLTQ6QDP-GSu-_IUJ.js} +1 -1
- package/dist-embed/chunks/{es-ES-U4NZUMDT-CQz3Tsxk.js → es-ES-U4NZUMDT-DeyWqjw1.js} +1 -1
- package/dist-embed/chunks/{eu-ES-A7QVB2H4-DPwxHXvP.js → eu-ES-A7QVB2H4-CUGbZ0Pv.js} +1 -1
- package/dist-embed/chunks/{fa-IR-HGAKTJCU-DlQyRFJP.js → fa-IR-HGAKTJCU-Br8UEVO1.js} +1 -1
- package/dist-embed/chunks/{fi-FI-Z5N7JZ37-BL9Dv0rT.js → fi-FI-Z5N7JZ37-BSHjwo8G.js} +1 -1
- package/dist-embed/chunks/{flowDb-185abca5-BN_8lgCO.js → flowDb-185abca5-U9PwWSO4.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-1629c991-YRlRqB59.js → flowDiagram-1629c991-BecgzQgp.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-lW-icIxi.js → flowDiagram-HODETNUW-2vih3kWM.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-CzRvxVGK.js → flowDiagram-HODETNUW-tcAkcGh4.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-v2-1d953310-DBFSFroi.js → flowDiagram-v2-1d953310-Bdmc9G3m.js} +1 -1
- package/dist-embed/chunks/{flowchart-elk-definition-6df44142-RjL83g27.js → flowchart-elk-definition-6df44142-oWOWsVNc.js} +1 -1
- package/dist-embed/chunks/{fr-FR-RHASNOE6-xB7HyFVv.js → fr-FR-RHASNOE6-BukqZYPz.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-3b0b3873-Dowe9cKl.js → ganttDiagram-3b0b3873-B7lmD9r9.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-CNQPBdAP.js → ganttDiagram-EL5Y4UJY-D0E7se_Z.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-CLaynGwe.js → ganttDiagram-EL5Y4UJY-DDbqMevq.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-CupHqYWl.js → gitGraphDiagram-WWUBYQGX-DK3EJl5z.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-CDuBbPX3.js → gitGraphDiagram-WWUBYQGX-DnVwXJWu.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-C06Sje1n.js → gitGraphDiagram-f01e8bc2-B9vpLy6R.js} +1 -1
- package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BX50ltap.js → gl-ES-HMX3MZ6V-BxVOJiaI.js} +1 -1
- package/dist-embed/chunks/{he-IL-6SHJWFNN-DR3hLzYG.js → he-IL-6SHJWFNN-Dv2VRxlJ.js} +1 -1
- package/dist-embed/chunks/{hi-IN-IWLTKZ5I-C3bSDqVc.js → hi-IN-IWLTKZ5I-CFo5RUMz.js} +1 -1
- package/dist-embed/chunks/{hu-HU-A5ZG7DT2--mRUDQG6.js → hu-HU-A5ZG7DT2-ul3dS3un.js} +1 -1
- package/dist-embed/chunks/{id-ID-SAP4L64H-D6psdwdp.js → id-ID-SAP4L64H-ItVb-zwI.js} +1 -1
- package/dist-embed/chunks/{index-qsUgit40.js → index-7FNjj0f2.js} +1 -1
- package/dist-embed/chunks/{index-9bae90f3-BY7E8HZU.js → index-9bae90f3-D9849sgo.js} +1 -1
- package/dist-embed/chunks/{index-DToDguC3.js → index-B-L6ocEV.js} +1 -1
- package/dist-embed/chunks/{index-C01nR1dW.js → index-B0wMyD8Y.js} +1 -1
- package/dist-embed/chunks/{index-BzXMsI1v.js → index-B5zrJYwn.js} +6 -6
- package/dist-embed/chunks/{index-DcZQ2Oqj.js → index-B764si9c.js} +1 -1
- package/dist-embed/chunks/{index-3O3ob63z.js → index-BM6oRiO1.js} +1 -1
- package/dist-embed/chunks/{index-DVUMPcVw.js → index-BNFRRs9d.js} +1 -1
- package/dist-embed/chunks/{index-D0DBuFMt.js → index-BOYhJnrD.js} +1 -1
- package/dist-embed/chunks/{index-CA8D7U2s.js → index-BT4vYFeY.js} +1 -1
- package/dist-embed/chunks/{index-C8IekrmL.js → index-BfUXEHI0.js} +1 -1
- package/dist-embed/chunks/{index-DvWWLOj6.js → index-BiTIdbkn.js} +1 -1
- package/dist-embed/chunks/{index-BhU2ra4k.js → index-BkKEXqQS.js} +1 -1
- package/dist-embed/chunks/{index-CpcHHQd7.js → index-BqMoyzEk.js} +1 -1
- package/dist-embed/chunks/{index-D1lY79hS.js → index-BrD9dtoV.js} +1 -1
- package/dist-embed/chunks/{index-B063q-PC.js → index-CRpZyQIR.js} +4 -4
- package/dist-embed/chunks/{index-BblwlEJB.js → index-CZdWsyNw.js} +1 -1
- package/dist-embed/chunks/{index-Azo_wV3K.js → index-CjM49jS0.js} +1 -1
- package/dist-embed/chunks/{index-rfsiH_M6.js → index-Cp2aJ2ZR.js} +1 -1
- package/dist-embed/chunks/{index-Cknn3VQD.js → index-Cql9gOsL.js} +1 -1
- package/dist-embed/chunks/{index-jy9kOmqu.js → index-CsgaCZaW.js} +1 -1
- package/dist-embed/chunks/{index-DB46n9Tf.js → index-CsxlyZef.js} +1 -1
- package/dist-embed/chunks/{index-MTdX216X.js → index-D2LvuQlP.js} +1 -1
- package/dist-embed/chunks/{index-s3hayhRS.js → index-DQQXY-7d.js} +2 -2
- package/dist-embed/chunks/{index-B0KVfQGJ.js → index-DSF21-29.js} +1 -1
- package/dist-embed/chunks/{index-BYMZi_1t.js → index-DSvebR7d.js} +1 -1
- package/dist-embed/chunks/{index-a51XM5L8.js → index-DoBEQ07P.js} +3 -3
- package/dist-embed/chunks/{index-kpqZuE4J.js → index-O2jaI8TY.js} +1 -1
- package/dist-embed/chunks/{index-C6wF35Kk.js → index-QZ3sHHT3.js} +1 -1
- package/dist-embed/chunks/{index-BlWZloLe.js → index-TEcp7-f6.js} +2 -2
- package/dist-embed/chunks/{index-EpYurdzk.js → index-YlGTgJvL.js} +5 -5
- package/dist-embed/chunks/{index-CUL9WiLS.js → index-bm8APcDZ.js} +1 -1
- package/dist-embed/chunks/{index-BipXK1tF.js → index-jh9S19of.js} +1 -1
- package/dist-embed/chunks/{index-C643Hfu1.js → index-oGqh9y23.js} +1 -1
- package/dist-embed/chunks/{index-BdvS7Q4t.js → index-xiH3WzLm.js} +1 -1
- package/dist-embed/chunks/{index.esm-CWygaJYM.js → index.esm-B7KoTOBb.js} +1 -1
- package/dist-embed/chunks/{index.esm-DYeUXS4c.js → index.esm-CkSite-X.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-Ctm-zk09.js → infoDiagram-27XIBGKW-DDO50Ria.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-DRzH33_4.js → infoDiagram-27XIBGKW-O3q53Qe2.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-a29d40f1-c78-ZMuT.js → infoDiagram-a29d40f1-jOvOHUyu.js} +1 -1
- package/dist-embed/chunks/{isEqual-niFNV5MZ.js → isEqual-CGLTk7wU.js} +1 -1
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DKv5KL85.js → ishikawaDiagram-5VMMS53U-DuiWhpVW.js} +1 -1
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-CILSTTqm.js → ishikawaDiagram-5VMMS53U-IzmbYzxv.js} +1 -1
- package/dist-embed/chunks/{it-IT-JPQ66NNP-BfrG_atL.js → it-IT-JPQ66NNP-BuCUBzia.js} +1 -1
- package/dist-embed/chunks/{ja-JP-DBVTYXUO-sahpmNGY.js → ja-JP-DBVTYXUO-BhtQz4sy.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-CSMQRlsr.js → journeyDiagram-3NMN7TZE-DGLcsVfC.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-DlMPiHSP.js → journeyDiagram-3NMN7TZE-sO-Cfp65.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-95396277-VzHClVrX.js → journeyDiagram-95396277-CA4bGq0G.js} +1 -1
- package/dist-embed/chunks/{kaa-6HZHGXH3-BrkhtXQj.js → kaa-6HZHGXH3-B_TI8Aa0.js} +1 -1
- package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-DwtFIV_I.js → kab-KAB-ZGHBKWFO-BsSg_l-j.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-BkxvAXq2.js → kanban-definition-UXKFOSKX-0wjvwDqk.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-esf1amn7.js → kanban-definition-UXKFOSKX-CDtLkjnU.js} +1 -1
- package/dist-embed/chunks/{kk-KZ-P5N5QNE5-UxN1LGH5.js → kk-KZ-P5N5QNE5-B7XK5OQq.js} +1 -1
- package/dist-embed/chunks/{km-KH-HSX4SM5Z-B7lolfpy.js → km-KH-HSX4SM5Z-Cm2LA9F8.js} +1 -1
- package/dist-embed/chunks/{ko-KR-MTYHY66A-CnxefCaN.js → ko-KR-MTYHY66A-CL5s99y5.js} +1 -1
- package/dist-embed/chunks/{ku-TR-6OUDTVRD-Bt7bmFnv.js → ku-TR-6OUDTVRD-CiijvKHq.js} +1 -1
- package/dist-embed/chunks/{layout-D7Mk1riq.js → layout-BBbB54WC.js} +1 -1
- package/dist-embed/chunks/{layout-Sl9Lf6Ae.js → layout-CzrlbzeK.js} +1 -1
- package/dist-embed/chunks/{lexicalHooks-DKF-DsxG.js → lexicalHooks-DQxNZEiJ.js} +1 -1
- package/dist-embed/chunks/{lt-LT-XHIRWOB4-D6qkXs9m.js → lt-LT-XHIRWOB4-CcA_Z5jR.js} +1 -1
- package/dist-embed/chunks/{lv-LV-5QDEKY6T-D8g27j86.js → lv-LV-5QDEKY6T-CAQS9wGm.js} +1 -1
- package/dist-embed/chunks/{mermaid.core-BhiOhb5K.js → mermaid.core-DfgoT1cz.js} +3 -3
- package/dist-embed/chunks/{mermaid.core-CRlujv29.js → mermaid.core-s-D09gpV.js} +5 -5
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-eCxs0BsL.js → mindmap-definition-YA3MSWOX-B6_K5ZvV.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-BJQsz4H1.js → mindmap-definition-YA3MSWOX-BCiSPRJk.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-e4c1d938-DoGG9eDO.js → mindmap-definition-e4c1d938-D7gmABiC.js} +1 -1
- package/dist-embed/chunks/{mr-IN-CRQNXWMA-CMbVGyJm.js → mr-IN-CRQNXWMA-DMAAvsDA.js} +1 -1
- package/dist-embed/chunks/{my-MM-5M5IBNSE-B-KPsx1j.js → my-MM-5M5IBNSE-t2TKqrjW.js} +1 -1
- package/dist-embed/chunks/{nb-NO-T6EIAALU-Cl7QLAt7.js → nb-NO-T6EIAALU-Bi3ZI-HQ.js} +1 -1
- package/dist-embed/chunks/{nl-NL-IS3SIHDZ-Brzte_o2.js → nl-NL-IS3SIHDZ-B8UdlW1K.js} +1 -1
- package/dist-embed/chunks/{nn-NO-6E72VCQL-CzCKEx02.js → nn-NO-6E72VCQL-Bt87hI27.js} +1 -1
- package/dist-embed/chunks/{oc-FR-POXYY2M6-DA72PkVY.js → oc-FR-POXYY2M6-009NL0Pk.js} +1 -1
- package/dist-embed/chunks/{pa-IN-N4M65BXN-CzkFYtL0.js → pa-IN-N4M65BXN-BfUtS2yt.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CD3xZvKE.js → pegDiagram-XKGWAZYB-BX0ZYMng.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CV-d6HkK.js → pegDiagram-XKGWAZYB-CBrnWUaX.js} +1 -1
- package/dist-embed/chunks/{percentages-BXMCSKIN-mjCCp4uI.js → percentages-BXMCSKIN-CfzulzOv.js} +5 -5
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-toANOh_O.js → pieDiagram-E7YTZNPT-B1My5W85.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-DipS--g7.js → pieDiagram-E7YTZNPT-Ct8dzoLU.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-c941bede-DytniBrW.js → pieDiagram-c941bede-7DZ-Bl8U.js} +1 -1
- package/dist-embed/chunks/{pl-PL-T2D74RX3-F4ebFTYK.js → pl-PL-T2D74RX3-DbtOl9_x.js} +1 -1
- package/dist-embed/chunks/{pt-BR-5N22H2LF-B5i8LuE4.js → pt-BR-5N22H2LF-B1pjR1_T.js} +1 -1
- package/dist-embed/chunks/{pt-PT-UZXXM6DQ-BQ7hfRRg.js → pt-PT-UZXXM6DQ-takC7TRa.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-D_j5dzK-.js → quadrantDiagram-AXDQQJYC-B1mlT7fN.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-DlhtjZ-k.js → quadrantDiagram-AXDQQJYC-B7p4unpj.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-BQ2yjLYu.js → quadrantDiagram-cf8b8fe0-CTMh_Ad5.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-CZFkdwSz.js → railroadDiagram-O6MQD6OU-CJEwr5d9.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-aWlxxhLc.js → railroadDiagram-O6MQD6OU-xr8bPIl7.js} +1 -1
- package/dist-embed/chunks/{renderer-2D5v6hpK.js → renderer-Ba0Cwb4p.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-53bda41b-CWV_b9FE.js → requirementDiagram-53bda41b-Dv1Piop_.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-EVwiX2gg.js → requirementDiagram-BXWQKSXE-Bw89vFiC.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-BSF51uZZ.js → requirementDiagram-BXWQKSXE-rabT3v-j.js} +1 -1
- package/dist-embed/chunks/{ro-RO-JPDTUUEW-BdcZRS6h.js → ro-RO-JPDTUUEW-DkkqyFBF.js} +1 -1
- package/dist-embed/chunks/{ru-RU-B4JR7IUQ-Cta1z8f6.js → ru-RU-B4JR7IUQ-CikD-ITp.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-BqD6w06O.js → sankeyDiagram-P5KCCOFB-5SpI76uK.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-t6rHaBZJ.js → sankeyDiagram-P5KCCOFB-D--cx9I2.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-c3ef121a-C9O52Zx9.js → sankeyDiagram-c3ef121a-DbhtSWkB.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-82a5b84f-Dga-BwWi.js → sequenceDiagram-82a5b84f-DpxBSKAk.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-ih6W0378.js → sequenceDiagram-WJ2MYXX4-DGNwWgf8.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-DphVeQVS.js → sequenceDiagram-WJ2MYXX4-D_wK-z7a.js} +1 -1
- package/dist-embed/chunks/{sessions-APuuDN3K.js → sessions-DQkTozai.js} +1 -1
- package/dist-embed/chunks/{si-LK-N5RQ5JYF-DYy_OKHx.js → si-LK-N5RQ5JYF-BqlWRhwK.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-o0dzt8-T.js → sizeCapture-INFHLROL-4Uh8JUjf.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-CxIMCruL.js → sizeCapture-INFHLROL-g-K-6XON.js} +1 -1
- package/dist-embed/chunks/{sk-SK-C5VTKIMK-B4A8rgzq.js → sk-SK-C5VTKIMK-DGsmi02E.js} +1 -1
- package/dist-embed/chunks/{sl-SI-NN7IZMDC-Dn2yU1RA.js → sl-SI-NN7IZMDC-HFz45GOs.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-43e79a5f-RBFnM6HD.js → stateDiagram-43e79a5f-DxbV4jP9.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-R5RRRvFY.js → stateDiagram-D77RDMKH-C_wYpqah.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-DUbaZs3a.js → stateDiagram-D77RDMKH-D-l3u-WY.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-O5FpnsEz.js → stateDiagram-v2-2041ed4f-BzxzaDdI.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-xKTLvXGN.js → stateDiagram-v2-MP3YSRHH-BGYkOvTS.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-CxTXB7mT.js → stateDiagram-v2-MP3YSRHH-IEMNMwm0.js} +1 -1
- package/dist-embed/chunks/{styles-455b33cd-D4Xv2qYx.js → styles-455b33cd-C42Lyulv.js} +1 -1
- package/dist-embed/chunks/{styles-f932cba9-BRIqeB8k.js → styles-f932cba9-Bf6H3IMq.js} +1 -1
- package/dist-embed/chunks/{styles-fcc2142b-CSNd2DtU.js → styles-fcc2142b-OZg6fE-p.js} +1 -1
- package/dist-embed/chunks/{subset-shared.chunk-SugOGKH0.js → subset-shared.chunk-KC0vshev.js} +1 -1
- package/dist-embed/chunks/{subset-worker.chunk-CHn-RJwQ.js → subset-worker.chunk-CXZAV_Z5.js} +1 -1
- package/dist-embed/chunks/{sv-SE-XGPEYMSR-DIGNKjA1.js → sv-SE-XGPEYMSR-yEdPvwHy.js} +1 -1
- package/dist-embed/chunks/{svgDrawCommon-148a3cd9-ioBjWI45.js → svgDrawCommon-148a3cd9-D9MRwoYw.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-DID4P1mJ.js → swimlanes-42K2YHIH-CPkom4Q8.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-BPXSOfWl.js → swimlanes-42K2YHIH-DJLFcHMt.js} +1 -1
- package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-C5LAWW5q.js → swimlanesDiagram-VR7AAH4N-BJOhuN-y.js} +1 -1
- package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-B216TpFb.js → swimlanesDiagram-VR7AAH4N-BRTtY1QX.js} +1 -1
- package/dist-embed/chunks/{ta-IN-2NMHFXQM-h5n2V9ms.js → ta-IN-2NMHFXQM-0i424YGX.js} +1 -1
- package/dist-embed/chunks/{th-TH-HPSO5L25-DPUFV7b6.js → th-TH-HPSO5L25-BidF5zNO.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-CsrTDzso.js → timeline-definition-24CTP7MA-BasSLg-_.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-Y3tUsmSp.js → timeline-definition-24CTP7MA-BfGIJi1H.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-7545f45a-Dwe7O50H.js → timeline-definition-7545f45a-BWwgvKxJ.js} +1 -1
- package/dist-embed/chunks/{tr-TR-DEFEU3FU-BezJkdMx.js → tr-TR-DEFEU3FU-BoHR9SlC.js} +1 -1
- package/dist-embed/chunks/{uk-UA-QMV73CPH-CqILlosm.js → uk-UA-QMV73CPH-DfRkqqO0.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-BhVdyHxt.js → vennDiagram-4TSXK5OY-D1T__rd2.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-ClTlC2ql.js → vennDiagram-4TSXK5OY-DMIYCfJ-.js} +1 -1
- package/dist-embed/chunks/{vi-VN-M7AON7JQ-CnkPVQ0a.js → vi-VN-M7AON7JQ-CvZ4wpTw.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-kS16z5iB.js → wardleyDiagram-VM6X3IG4-CiKuFI26.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-DbWIMpvU.js → wardleyDiagram-VM6X3IG4-DtlNUHLy.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-3f383b91-DYoT_EjG.js → xychartDiagram-3f383b91-DzyuxW4K.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-KeQp-cQ1.js → xychartDiagram-S5SC5T6Z-BIeFUHrS.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-CdwuwQAF.js → xychartDiagram-S5SC5T6Z-p6pYRkk6.js} +1 -1
- package/dist-embed/chunks/{zh-CN-LNUGB5OW-CNdfctAT.js → zh-CN-LNUGB5OW-Cx1Azgu2.js} +1 -1
- package/dist-embed/chunks/{zh-HK-E62DVLB3-DEXwa5-T.js → zh-HK-E62DVLB3-DMjy1d4Z.js} +1 -1
- package/dist-embed/chunks/{zh-TW-RAJ6MFWO-BF7cCYAK.js → zh-TW-RAJ6MFWO-J-YjINmR.js} +1 -1
- package/dist-embed/datalayer-app-main.js +22 -22
- package/lib/apps/apps/appspec.d.ts +10 -1
- package/lib/apps/apps/appspec.js +64 -6
- package/lib/apps/core/index.d.ts +26 -0
- package/lib/apps/core/index.js +20 -0
- package/lib/apps/plugins/chat/ChatView.js +21 -4
- package/lib/specs/apps.js +38 -16
- package/lib/specs/appspecSchema.js +75 -2
- package/lib/types/agentspecs.d.ts +32 -1
- package/package.json +1 -1
- package/dist-embed/chunks/ChatView-B3QqHhAP.js +0 -32
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @module apps/apps/appspec
|
|
26
26
|
*/
|
|
27
|
-
import type { AppAccent, AppThemeMode, AppThemeVariant, AppAssistantCharacter, AppEmbedMode, AppCustomComponentSpec, AppVoiceSpec, AppKind, AppLayout, AppPageOutputComponent, AppSpec } from '../../types/agentspecs';
|
|
27
|
+
import type { AppAccent, AppThemeMode, AppThemeVariant, AppAssistantCharacter, AppEmbedMode, PapProfile, AppCustomComponentSpec, AppVoiceSpec, AppKind, AppLayout, AppPageOutputComponent, AppSpec } from '../../types/agentspecs';
|
|
28
28
|
/** The version of the spec itself. */
|
|
29
29
|
export declare const APP_SCHEMA = "loop.app/v1";
|
|
30
30
|
/** The language an application's own words are in, unless it says (LOOP P-26). */
|
|
@@ -60,6 +60,15 @@ type Data = Record<string, unknown>;
|
|
|
60
60
|
export declare function retentionDays(keepFor: string): number;
|
|
61
61
|
/** An application with nothing said: what *Start blank* opens. */
|
|
62
62
|
export declare function emptyAppspec(kind?: AppKind): AppSpec;
|
|
63
|
+
/** The Personal Agent Protocol profiles Datalayer speaks, as agentspecs' `PAP_PROFILES` (PAP_DATALAYER S-03). */
|
|
64
|
+
export declare const PAP_PROFILES: readonly PapProfile[];
|
|
65
|
+
/** The profile a `pap` block is written for when the Studio or a builder starts one. */
|
|
66
|
+
export declare const PAP_PROFILE: PapProfile;
|
|
67
|
+
/**
|
|
68
|
+
* What is wrong with a `pap` block's profile, in agentspecs' sentence
|
|
69
|
+
* (`pap_profile_problem`); `undefined` when it is one Datalayer speaks.
|
|
70
|
+
*/
|
|
71
|
+
export declare function papProfileProblem(value: unknown): string | undefined;
|
|
63
72
|
/** An application's voice (VOICE.md VO-41): off unless said. */
|
|
64
73
|
export declare const DEFAULT_VOICE: AppVoiceSpec;
|
|
65
74
|
/** What a page's output may be drawn with (LOOP P-05), and the property of each that shows its value. */
|
package/lib/apps/apps/appspec.js
CHANGED
|
@@ -248,6 +248,23 @@ function parseConnection(data) {
|
|
|
248
248
|
only: texts(data.only),
|
|
249
249
|
};
|
|
250
250
|
}
|
|
251
|
+
/** The Personal Agent Protocol profiles Datalayer speaks, as agentspecs' `PAP_PROFILES` (PAP_DATALAYER S-03). */
|
|
252
|
+
export const PAP_PROFILES = ['draft-01'];
|
|
253
|
+
/** The profile a `pap` block is written for when the Studio or a builder starts one. */
|
|
254
|
+
export const PAP_PROFILE = PAP_PROFILES[PAP_PROFILES.length - 1];
|
|
255
|
+
/**
|
|
256
|
+
* What is wrong with a `pap` block's profile, in agentspecs' sentence
|
|
257
|
+
* (`pap_profile_problem`); `undefined` when it is one Datalayer speaks.
|
|
258
|
+
*/
|
|
259
|
+
export function papProfileProblem(value) {
|
|
260
|
+
if (value === undefined || value === null || value === '') {
|
|
261
|
+
return `Its \`pap\` block names no Personal Agent Protocol profile: add \`profile: ${PAP_PROFILE}\`.`;
|
|
262
|
+
}
|
|
263
|
+
if (!PAP_PROFILES.includes(value)) {
|
|
264
|
+
return `This application asks for Personal Agent Protocol profile “${String(value)}”; Datalayer speaks ${PAP_PROFILES.join(' or ')}.`;
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
251
268
|
const PAP_INTERFACES = ['agent', 'openapi', 'mcp', 'web'];
|
|
252
269
|
const PAP_SIGN_IN = ['direct', 'device', 'mediated'];
|
|
253
270
|
const PAP_DEFAULT_INTERFACES = ['agent'];
|
|
@@ -265,6 +282,7 @@ const enumsOf = (value, allowed, otherwise) => {
|
|
|
265
282
|
function parsePap(data) {
|
|
266
283
|
const company = isData(data.company) ? data.company : {};
|
|
267
284
|
return {
|
|
285
|
+
profile: data.profile,
|
|
268
286
|
connections: records(data.connections).map(connection => ({
|
|
269
287
|
id: text(connection.id),
|
|
270
288
|
company: text(connection.company),
|
|
@@ -297,6 +315,7 @@ function dumpPap(pap) {
|
|
|
297
315
|
if (!pap)
|
|
298
316
|
return {};
|
|
299
317
|
return new Writer()
|
|
318
|
+
.text('profile', pap.profile, '\u0000')
|
|
300
319
|
.list('connections', pap.connections.map(connection => new Writer()
|
|
301
320
|
.text('id', connection.id, '\u0000')
|
|
302
321
|
.text('company', connection.company, '\u0000')
|
|
@@ -322,8 +341,15 @@ function dumpPap(pap) {
|
|
|
322
341
|
.text('summary', operation.summary, '\u0000')
|
|
323
342
|
.value('user_approval_required', operation.userApprovalRequired, true).data)).data).data;
|
|
324
343
|
}
|
|
325
|
-
/** PACT (AGENT_PROTOCOLS PI-01): the businesses it asks for each person. */
|
|
344
|
+
/** PACT (AGENT_PROTOCOLS PI-01): the businesses it asks for each person, and as one (PR-13). */
|
|
326
345
|
function parsePact(data) {
|
|
346
|
+
const business = isData(data.business) ? data.business : {};
|
|
347
|
+
const scopes = {};
|
|
348
|
+
if (isData(business.scopes)) {
|
|
349
|
+
for (const [scope, said] of Object.entries(business.scopes)) {
|
|
350
|
+
scopes[scope] = text(said);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
327
353
|
return {
|
|
328
354
|
connections: records(data.connections).map(connection => ({
|
|
329
355
|
id: text(connection.id),
|
|
@@ -332,6 +358,15 @@ function parsePact(data) {
|
|
|
332
358
|
access: oneOf(connection.access, ['read', 'write'], 'read'),
|
|
333
359
|
scopes: texts(connection.scopes),
|
|
334
360
|
})),
|
|
361
|
+
business: {
|
|
362
|
+
enabled: flag(business.enabled, false),
|
|
363
|
+
brand: text(business.brand),
|
|
364
|
+
scopes,
|
|
365
|
+
registeredAgents: records(business.registered_agents).map(agent => ({
|
|
366
|
+
issuer: text(agent.issuer),
|
|
367
|
+
jwksUri: text(agent.jwks_uri),
|
|
368
|
+
})),
|
|
369
|
+
},
|
|
335
370
|
};
|
|
336
371
|
}
|
|
337
372
|
/** Commerce (AGENT_PROTOCOLS PI-01): the merchants it shops at for each person. */
|
|
@@ -373,12 +408,26 @@ function dumpCommerce(commerce) {
|
|
|
373
408
|
function dumpPact(pact) {
|
|
374
409
|
if (!pact)
|
|
375
410
|
return {};
|
|
376
|
-
|
|
411
|
+
const business = pact.business ?? {
|
|
412
|
+
enabled: false,
|
|
413
|
+
brand: '',
|
|
414
|
+
scopes: {},
|
|
415
|
+
registeredAgents: [],
|
|
416
|
+
};
|
|
417
|
+
return new Writer()
|
|
418
|
+
.list('connections', pact.connections.map(connection => new Writer()
|
|
377
419
|
.text('id', connection.id, '\u0000')
|
|
378
420
|
.text('brand', connection.brand, '\u0000')
|
|
379
421
|
.text('audience', connection.audience, '\u0000')
|
|
380
422
|
.value('access', connection.access, 'read')
|
|
381
|
-
.list('scopes', connection.scopes).data))
|
|
423
|
+
.list('scopes', connection.scopes).data))
|
|
424
|
+
.part('business', new Writer()
|
|
425
|
+
.value('enabled', business.enabled, false)
|
|
426
|
+
.text('brand', business.brand)
|
|
427
|
+
.part('scopes', { ...business.scopes })
|
|
428
|
+
.list('registered_agents', business.registeredAgents.map(agent => new Writer()
|
|
429
|
+
.text('issuer', agent.issuer, '\u0000')
|
|
430
|
+
.text('jwks_uri', agent.jwksUri, '\u0000').data)).data).data;
|
|
382
431
|
}
|
|
383
432
|
/** A2A (AGENT_PROTOCOLS PR-02): the extensions its Agent Card advertises. */
|
|
384
433
|
function parseA2A(data) {
|
|
@@ -942,8 +991,16 @@ export function parseAppspec(document) {
|
|
|
942
991
|
if (isData(data.decision)) {
|
|
943
992
|
app.decision = parseDecision(data.decision);
|
|
944
993
|
}
|
|
945
|
-
|
|
946
|
-
|
|
994
|
+
// A `pap` block names a profile Datalayer speaks, or it is refused and not
|
|
995
|
+
// read (PAP_DATALAYER S-03); a block saying nothing is no block.
|
|
996
|
+
if (isData(data.pap) && Object.keys(data.pap).length > 0) {
|
|
997
|
+
const problem = papProfileProblem(data.pap.profile);
|
|
998
|
+
if (problem) {
|
|
999
|
+
problems.push(problem);
|
|
1000
|
+
}
|
|
1001
|
+
else {
|
|
1002
|
+
app.pap = parsePap(data.pap);
|
|
1003
|
+
}
|
|
947
1004
|
}
|
|
948
1005
|
if (isData(data.pact)) {
|
|
949
1006
|
app.pact = parsePact(data.pact);
|
|
@@ -1006,7 +1063,8 @@ export function protocolsProblems(app) {
|
|
|
1006
1063
|
}
|
|
1007
1064
|
const configured = {
|
|
1008
1065
|
pap: Boolean(app.pap && (app.pap.connections.length > 0 || app.pap.company.enabled)),
|
|
1009
|
-
pact: Boolean(app.pact &&
|
|
1066
|
+
pact: Boolean(app.pact &&
|
|
1067
|
+
(app.pact.connections.length > 0 || app.pact.business?.enabled)),
|
|
1010
1068
|
a2a: Boolean(app.a2a && app.a2a.extensions.length > 0),
|
|
1011
1069
|
};
|
|
1012
1070
|
for (const spec of Object.values(PROTOCOL_CATALOGUE)) {
|
package/lib/apps/core/index.d.ts
CHANGED
|
@@ -710,7 +710,33 @@ export type LoopChatExtrasValue = {
|
|
|
710
710
|
* every snapshot the chat receives, `undefined` included.
|
|
711
711
|
*/
|
|
712
712
|
onUsage?: (snapshot: ContextSnapshotData | undefined) => void;
|
|
713
|
+
/**
|
|
714
|
+
* What the person types goes somewhere else than the agent, live.
|
|
715
|
+
*
|
|
716
|
+
* While set, the composer's placeholder is `says` and sending hands the
|
|
717
|
+
* words to `send`, never to the model or the runtime: a person talking with
|
|
718
|
+
* a company themselves in a Direct Conversation (PAP_DATALAYER P-08), their
|
|
719
|
+
* own words sent as theirs. A refusal `send` throws is said under the
|
|
720
|
+
* composer and the words stay where they were typed. Unset, the composer
|
|
721
|
+
* talks to the agent again.
|
|
722
|
+
*/
|
|
723
|
+
sendInstead?: {
|
|
724
|
+
/** Where the words go, in the person's words, in place of the placeholder. */
|
|
725
|
+
says: string;
|
|
726
|
+
send: (text: string) => Promise<void>;
|
|
727
|
+
};
|
|
713
728
|
};
|
|
729
|
+
/**
|
|
730
|
+
* The words sent where the extras say instead of to the agent
|
|
731
|
+
* (`sendInstead`): `null` when they go to the agent as usual; else whether
|
|
732
|
+
* they were taken, and the refusal in a sentence when they were not.
|
|
733
|
+
*/
|
|
734
|
+
export declare function sendInstead(extras: Pick<LoopChatExtrasValue, 'sendInstead'>, message: string): Promise<{
|
|
735
|
+
sent: true;
|
|
736
|
+
} | {
|
|
737
|
+
sent: false;
|
|
738
|
+
refused: string;
|
|
739
|
+
} | null>;
|
|
714
740
|
export type ChatExtrasContribution = {
|
|
715
741
|
/** Stable id, for the registry and the graph. */
|
|
716
742
|
id: string;
|
package/lib/apps/core/index.js
CHANGED
|
@@ -181,6 +181,26 @@ export { LoopA2uiComponent, } from './a2uiComponents';
|
|
|
181
181
|
// Where the files of an application's folder are served (LOOP P-29): said
|
|
182
182
|
// by the page side its package carries.
|
|
183
183
|
export { LoopAppFiles } from './appFiles';
|
|
184
|
+
/**
|
|
185
|
+
* The words sent where the extras say instead of to the agent
|
|
186
|
+
* (`sendInstead`): `null` when they go to the agent as usual; else whether
|
|
187
|
+
* they were taken, and the refusal in a sentence when they were not.
|
|
188
|
+
*/
|
|
189
|
+
export async function sendInstead(extras, message) {
|
|
190
|
+
if (!extras.sendInstead) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
await extras.sendInstead.send(message);
|
|
195
|
+
return { sent: true };
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return {
|
|
199
|
+
sent: false,
|
|
200
|
+
refused: error instanceof Error ? error.message : String(error),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
184
204
|
export const LoopChatExtras = defineContributionPoint('loop.chat.extras');
|
|
185
205
|
export const LoopOpeningNotebook = defineContributionPoint('loop.notebook.opening');
|
|
186
206
|
export const LoopOpeningDocument = defineContributionPoint('loop.document.opening');
|
|
@@ -42,7 +42,7 @@ import { BROWSER_CODE_TOOL, dataUrlBase64, givenFilesSentence, sandboxFileName,
|
|
|
42
42
|
import { useConfig } from '../../../hooks/useConfig';
|
|
43
43
|
import { useSkills, useSkillActions } from '../../../hooks/useSkills';
|
|
44
44
|
import { AI_MODEL_CATALOGUE, isChatModel } from '../../../specs/models';
|
|
45
|
-
import { LoopAgentBlueprint, LoopAgentGate, LoopChatComposer, LoopChatExtras, LoopChatHeader, LoopChatLayout, LoopChatSuggestion, LoopChatSurface, LoopChatTurn, LoopCommand, LoopFrontendTool, LoopRunProps, LoopSlots, agentServerOf, noRuntimeSaid, canOpenView, runForwardedProps, onPromptFocusRequest, onSurfaceRequest, useLoopPromptStore, } from '../../core';
|
|
45
|
+
import { LoopAgentBlueprint, LoopAgentGate, LoopChatComposer, sendInstead, LoopChatExtras, LoopChatHeader, LoopChatLayout, LoopChatSuggestion, LoopChatSurface, LoopChatTurn, LoopCommand, LoopFrontendTool, LoopRunProps, LoopSlots, agentServerOf, noRuntimeSaid, canOpenView, runForwardedProps, onPromptFocusRequest, onSurfaceRequest, useLoopPromptStore, } from '../../core';
|
|
46
46
|
import { messageText, turnWritersOf } from './turnState';
|
|
47
47
|
import { isInactiveSurfaceContribution, orderToolContributions, toolsForChatView, } from './chatViewTools';
|
|
48
48
|
import { agentBundleToolDefinitions, useAgentCommandTools, } from '../../../tools/adapters/commands';
|
|
@@ -486,11 +486,27 @@ export default function ChatView({ workspace }) {
|
|
|
486
486
|
* place "the first prompt" means the same thing regardless of which one
|
|
487
487
|
* a person or a host used.
|
|
488
488
|
*/
|
|
489
|
+
setTransient(null);
|
|
490
|
+
/*
|
|
491
|
+
* Words that go elsewhere than the agent (`sendInstead`, PAP_DATALAYER
|
|
492
|
+
* P-08): a Direct Conversation with a company, the person's own words
|
|
493
|
+
* sent as theirs. Neither a command nor a turn, and never the model's;
|
|
494
|
+
* refused, the words stay where they were typed and the reason is said.
|
|
495
|
+
*/
|
|
496
|
+
const elsewhere = await sendInstead(chatExtrasRef.current, message);
|
|
497
|
+
if (elsewhere) {
|
|
498
|
+
if (elsewhere.sent) {
|
|
499
|
+
setDraft('');
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
setTransient(elsewhere.refused);
|
|
503
|
+
}
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
489
506
|
if (!firstPromptFired.current) {
|
|
490
507
|
firstPromptFired.current = true;
|
|
491
508
|
inputPromptConfig?.firstPromptHook?.();
|
|
492
509
|
}
|
|
493
|
-
setTransient(null);
|
|
494
510
|
// The turn begins where the message goes out (`sendNow`): a command
|
|
495
511
|
// the workspace runs is not one.
|
|
496
512
|
const outcome = await workspace.submit(message);
|
|
@@ -1594,8 +1610,9 @@ export default function ChatView({ workspace }) {
|
|
|
1594
1610
|
// send button into a stop — the person keeps a way out.
|
|
1595
1611
|
isLoading: busy,
|
|
1596
1612
|
onStop: () => workspace.viewControls.stop?.(),
|
|
1597
|
-
// The reason where the typing would go, read before the person types
|
|
1598
|
-
|
|
1613
|
+
// The reason where the typing would go, read before the person types;
|
|
1614
|
+
// where it goes when it goes elsewhere than the agent (P-08).
|
|
1615
|
+
placeholder: disabledReason ?? chatExtras.sendInstead?.says ?? placeholder,
|
|
1599
1616
|
typingSuggestions: suggestions.map(item => item.text),
|
|
1600
1617
|
// The same openers behind the composer's suggestions control.
|
|
1601
1618
|
suggestions: chatSuggestions,
|
package/lib/specs/apps.js
CHANGED
|
@@ -194,6 +194,7 @@ export const BOOKKEEPING_DESK_APP_0_0_1 = {
|
|
|
194
194
|
protocols: ['pap'],
|
|
195
195
|
ui: [],
|
|
196
196
|
pap: {
|
|
197
|
+
profile: 'draft-01',
|
|
197
198
|
connections: [
|
|
198
199
|
{
|
|
199
200
|
id: 'northwind',
|
|
@@ -1570,6 +1571,7 @@ export const EXCHANGE_DESK_APP_0_0_1 = {
|
|
|
1570
1571
|
protocols: ['pap'],
|
|
1571
1572
|
ui: [],
|
|
1572
1573
|
pap: {
|
|
1574
|
+
profile: 'draft-01',
|
|
1573
1575
|
connections: [],
|
|
1574
1576
|
company: {
|
|
1575
1577
|
enabled: true,
|
|
@@ -1902,6 +1904,7 @@ export const LIVE_SHOP_CHAT_APP_0_0_1 = {
|
|
|
1902
1904
|
protocols: ['pap'],
|
|
1903
1905
|
ui: [],
|
|
1904
1906
|
pap: {
|
|
1907
|
+
profile: 'draft-01',
|
|
1905
1908
|
connections: [
|
|
1906
1909
|
{
|
|
1907
1910
|
id: 'manzanita',
|
|
@@ -2474,10 +2477,11 @@ export const ORDER_DESK_APP_0_0_1 = {
|
|
|
2474
2477
|
protocols: ['pap'],
|
|
2475
2478
|
ui: [],
|
|
2476
2479
|
pap: {
|
|
2480
|
+
profile: 'draft-01',
|
|
2477
2481
|
connections: [
|
|
2478
2482
|
{
|
|
2479
2483
|
id: 'manzanita',
|
|
2480
|
-
company: 'manzanita.
|
|
2484
|
+
company: 'manzanita.examples.datalayer.run',
|
|
2481
2485
|
access: 'write',
|
|
2482
2486
|
as: 'user',
|
|
2483
2487
|
scopes: ['orders:read', 'orders:write'],
|
|
@@ -2582,7 +2586,7 @@ export const ORDER_DESK_APP_0_0_1 = {
|
|
|
2582
2586
|
"The journey is the Personal Agent Protocol SDK's recorded journey user-with-a-company (Datalayer's protocol examples, personal-agent-protocol 0.16.0), shown as recorded data, not live.",
|
|
2583
2587
|
],
|
|
2584
2588
|
unverified: [
|
|
2585
|
-
'
|
|
2589
|
+
'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
|
|
2586
2590
|
],
|
|
2587
2591
|
},
|
|
2588
2592
|
},
|
|
@@ -2642,6 +2646,7 @@ export const ORDER_TRACKER_APP_0_0_1 = {
|
|
|
2642
2646
|
protocols: ['pap'],
|
|
2643
2647
|
ui: [],
|
|
2644
2648
|
pap: {
|
|
2649
|
+
profile: 'draft-01',
|
|
2645
2650
|
connections: [
|
|
2646
2651
|
{
|
|
2647
2652
|
id: 'manzanita',
|
|
@@ -3650,6 +3655,7 @@ export const RETURNS_DESK_APP_0_0_1 = {
|
|
|
3650
3655
|
protocols: ['pap'],
|
|
3651
3656
|
ui: [],
|
|
3652
3657
|
pap: {
|
|
3658
|
+
profile: 'draft-01',
|
|
3653
3659
|
connections: [
|
|
3654
3660
|
{
|
|
3655
3661
|
id: 'manzanita',
|
|
@@ -4175,6 +4181,7 @@ export const SHOP_CONCIERGE_APP_0_0_1 = {
|
|
|
4175
4181
|
protocols: ['pap'],
|
|
4176
4182
|
ui: [],
|
|
4177
4183
|
pap: {
|
|
4184
|
+
profile: 'draft-01',
|
|
4178
4185
|
connections: [
|
|
4179
4186
|
{
|
|
4180
4187
|
id: 'manzanita',
|
|
@@ -4340,7 +4347,7 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
4340
4347
|
{
|
|
4341
4348
|
id: 'example-store',
|
|
4342
4349
|
protocol: 'ucp',
|
|
4343
|
-
merchant: 'store.
|
|
4350
|
+
merchant: 'store.examples.datalayer.run',
|
|
4344
4351
|
access: 'write',
|
|
4345
4352
|
limit: {
|
|
4346
4353
|
amount: '50',
|
|
@@ -4350,7 +4357,7 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
4350
4357
|
{
|
|
4351
4358
|
id: 'example-outfitters',
|
|
4352
4359
|
protocol: 'acp',
|
|
4353
|
-
merchant: 'outfitters.
|
|
4360
|
+
merchant: 'outfitters.examples.datalayer.run',
|
|
4354
4361
|
access: 'write',
|
|
4355
4362
|
limit: {
|
|
4356
4363
|
amount: '150',
|
|
@@ -4443,7 +4450,7 @@ export const SHOPPING_DESK_APP_0_0_1 = {
|
|
|
4443
4450
|
"The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
|
|
4444
4451
|
],
|
|
4445
4452
|
unverified: [
|
|
4446
|
-
|
|
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.',
|
|
4447
4454
|
],
|
|
4448
4455
|
},
|
|
4449
4456
|
},
|
|
@@ -4503,6 +4510,7 @@ export const SIGN_IN_DESK_APP_0_0_1 = {
|
|
|
4503
4510
|
protocols: ['pap'],
|
|
4504
4511
|
ui: [],
|
|
4505
4512
|
pap: {
|
|
4513
|
+
profile: 'draft-01',
|
|
4506
4514
|
connections: [
|
|
4507
4515
|
{
|
|
4508
4516
|
id: 'manzanita',
|
|
@@ -5191,12 +5199,18 @@ export const TRAVEL_DESK_APP_0_0_1 = {
|
|
|
5191
5199
|
connections: [
|
|
5192
5200
|
{
|
|
5193
5201
|
id: 'example-air',
|
|
5194
|
-
brand: 'air.
|
|
5195
|
-
audience: 'https://
|
|
5202
|
+
brand: 'air.examples.datalayer.run',
|
|
5203
|
+
audience: 'https://air.examples.datalayer.run/a2a',
|
|
5196
5204
|
access: 'write',
|
|
5197
5205
|
scopes: ['bookings:read', 'bookings:change'],
|
|
5198
5206
|
},
|
|
5199
5207
|
],
|
|
5208
|
+
business: {
|
|
5209
|
+
enabled: false,
|
|
5210
|
+
brand: '',
|
|
5211
|
+
scopes: {},
|
|
5212
|
+
registeredAgents: [],
|
|
5213
|
+
},
|
|
5200
5214
|
},
|
|
5201
5215
|
rules: [
|
|
5202
5216
|
{
|
|
@@ -5272,7 +5286,7 @@ export const TRAVEL_DESK_APP_0_0_1 = {
|
|
|
5272
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).",
|
|
5273
5287
|
],
|
|
5274
5288
|
unverified: [
|
|
5275
|
-
|
|
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.',
|
|
5276
5290
|
],
|
|
5277
5291
|
},
|
|
5278
5292
|
},
|
|
@@ -5621,6 +5635,7 @@ export const APP_SOURCES = {
|
|
|
5621
5635
|
],
|
|
5622
5636
|
protocols: ['pap'],
|
|
5623
5637
|
pap: {
|
|
5638
|
+
profile: 'draft-01',
|
|
5624
5639
|
connections: [
|
|
5625
5640
|
{
|
|
5626
5641
|
id: 'northwind',
|
|
@@ -6460,6 +6475,7 @@ export const APP_SOURCES = {
|
|
|
6460
6475
|
],
|
|
6461
6476
|
protocols: ['pap'],
|
|
6462
6477
|
pap: {
|
|
6478
|
+
profile: 'draft-01',
|
|
6463
6479
|
company: {
|
|
6464
6480
|
enabled: true,
|
|
6465
6481
|
interfaces: ['agent', 'openapi'],
|
|
@@ -6662,6 +6678,7 @@ export const APP_SOURCES = {
|
|
|
6662
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.",
|
|
6663
6679
|
protocols: ['pap'],
|
|
6664
6680
|
pap: {
|
|
6681
|
+
profile: 'draft-01',
|
|
6665
6682
|
connections: [
|
|
6666
6683
|
{
|
|
6667
6684
|
id: 'manzanita',
|
|
@@ -7013,10 +7030,11 @@ export const APP_SOURCES = {
|
|
|
7013
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.',
|
|
7014
7031
|
protocols: ['pap'],
|
|
7015
7032
|
pap: {
|
|
7033
|
+
profile: 'draft-01',
|
|
7016
7034
|
connections: [
|
|
7017
7035
|
{
|
|
7018
7036
|
id: 'manzanita',
|
|
7019
|
-
company: 'manzanita.
|
|
7037
|
+
company: 'manzanita.examples.datalayer.run',
|
|
7020
7038
|
access: 'write',
|
|
7021
7039
|
scopes: ['orders:read', 'orders:write'],
|
|
7022
7040
|
extensions: ['operations'],
|
|
@@ -7080,7 +7098,7 @@ export const APP_SOURCES = {
|
|
|
7080
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.",
|
|
7081
7099
|
],
|
|
7082
7100
|
unverified: [
|
|
7083
|
-
'
|
|
7101
|
+
'It has not run in the Studio against the hosted Manzanita (manzanita.examples.datalayer.run) from this example yet.',
|
|
7084
7102
|
],
|
|
7085
7103
|
},
|
|
7086
7104
|
},
|
|
@@ -7107,6 +7125,7 @@ export const APP_SOURCES = {
|
|
|
7107
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.",
|
|
7108
7126
|
protocols: ['pap'],
|
|
7109
7127
|
pap: {
|
|
7128
|
+
profile: 'draft-01',
|
|
7110
7129
|
connections: [
|
|
7111
7130
|
{
|
|
7112
7131
|
id: 'manzanita',
|
|
@@ -7852,6 +7871,7 @@ export const APP_SOURCES = {
|
|
|
7852
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.',
|
|
7853
7872
|
protocols: ['pap'],
|
|
7854
7873
|
pap: {
|
|
7874
|
+
profile: 'draft-01',
|
|
7855
7875
|
connections: [
|
|
7856
7876
|
{
|
|
7857
7877
|
id: 'manzanita',
|
|
@@ -8157,6 +8177,7 @@ export const APP_SOURCES = {
|
|
|
8157
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.",
|
|
8158
8178
|
protocols: ['pap'],
|
|
8159
8179
|
pap: {
|
|
8180
|
+
profile: 'draft-01',
|
|
8160
8181
|
connections: [
|
|
8161
8182
|
{
|
|
8162
8183
|
id: 'manzanita',
|
|
@@ -8247,7 +8268,7 @@ export const APP_SOURCES = {
|
|
|
8247
8268
|
{
|
|
8248
8269
|
id: 'example-store',
|
|
8249
8270
|
protocol: 'ucp',
|
|
8250
|
-
merchant: 'store.
|
|
8271
|
+
merchant: 'store.examples.datalayer.run',
|
|
8251
8272
|
access: 'write',
|
|
8252
8273
|
limit: {
|
|
8253
8274
|
amount: '50',
|
|
@@ -8257,7 +8278,7 @@ export const APP_SOURCES = {
|
|
|
8257
8278
|
{
|
|
8258
8279
|
id: 'example-outfitters',
|
|
8259
8280
|
protocol: 'acp',
|
|
8260
|
-
merchant: 'outfitters.
|
|
8281
|
+
merchant: 'outfitters.examples.datalayer.run',
|
|
8261
8282
|
access: 'write',
|
|
8262
8283
|
limit: {
|
|
8263
8284
|
amount: '150',
|
|
@@ -8322,7 +8343,7 @@ export const APP_SOURCES = {
|
|
|
8322
8343
|
"The checkout at Example Outfitters is the developers' ACP example (examples/protocols/agentic_commerce/checkout.py), run in its own tests.",
|
|
8323
8344
|
],
|
|
8324
8345
|
unverified: [
|
|
8325
|
-
|
|
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.',
|
|
8326
8347
|
],
|
|
8327
8348
|
},
|
|
8328
8349
|
},
|
|
@@ -8349,6 +8370,7 @@ export const APP_SOURCES = {
|
|
|
8349
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.',
|
|
8350
8371
|
protocols: ['pap'],
|
|
8351
8372
|
pap: {
|
|
8373
|
+
profile: 'draft-01',
|
|
8352
8374
|
connections: [
|
|
8353
8375
|
{
|
|
8354
8376
|
id: 'manzanita',
|
|
@@ -8812,8 +8834,8 @@ export const APP_SOURCES = {
|
|
|
8812
8834
|
connections: [
|
|
8813
8835
|
{
|
|
8814
8836
|
id: 'example-air',
|
|
8815
|
-
brand: 'air.
|
|
8816
|
-
audience: 'https://
|
|
8837
|
+
brand: 'air.examples.datalayer.run',
|
|
8838
|
+
audience: 'https://air.examples.datalayer.run/a2a',
|
|
8817
8839
|
access: 'write',
|
|
8818
8840
|
scopes: ['bookings:read', 'bookings:change'],
|
|
8819
8841
|
},
|
|
@@ -8865,7 +8887,7 @@ export const APP_SOURCES = {
|
|
|
8865
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).",
|
|
8866
8888
|
],
|
|
8867
8889
|
unverified: [
|
|
8868
|
-
|
|
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.',
|
|
8869
8891
|
],
|
|
8870
8892
|
},
|
|
8871
8893
|
},
|
|
@@ -921,7 +921,7 @@ export const APPSPEC_SCHEMA = {
|
|
|
921
921
|
},
|
|
922
922
|
AppPact: {
|
|
923
923
|
additionalProperties: false,
|
|
924
|
-
description: 'PACT: the businesses it asks for each person (AGENT_PROTOCOLS PI-01).',
|
|
924
|
+
description: 'PACT: the businesses it asks for each person (AGENT_PROTOCOLS PI-01), and\nwhether it answers as one (PR-13).',
|
|
925
925
|
properties: {
|
|
926
926
|
connections: {
|
|
927
927
|
description: 'Businesses, over PACT',
|
|
@@ -931,10 +931,50 @@ export const APPSPEC_SCHEMA = {
|
|
|
931
931
|
title: 'Connections',
|
|
932
932
|
type: 'array',
|
|
933
933
|
},
|
|
934
|
+
business: {
|
|
935
|
+
$ref: '#/$defs/AppPactBusiness',
|
|
936
|
+
description: 'As a business',
|
|
937
|
+
},
|
|
934
938
|
},
|
|
935
939
|
title: 'AppPact',
|
|
936
940
|
type: 'object',
|
|
937
941
|
},
|
|
942
|
+
AppPactBusiness: {
|
|
943
|
+
additionalProperties: false,
|
|
944
|
+
description: "The application answers as a PACT business (AGENT_PROTOCOLS PR-13, PI-32; decided 2026-10-13).\n\nPublished at its deployment's own address: its A2A Agent Card names\nDatalayer as the Provider and the application's owner as the Brand; its\nA2A interface verifies each personal-agent JWT against a registered\nissuer's keys (§3.1); with `scopes`, a person delegates to a personal agent\nthrough the Provider's device-code sign-in — their Datalayer sign-in — and\nevery answer under their delegation carries a signed receipt (§5).",
|
|
945
|
+
properties: {
|
|
946
|
+
enabled: {
|
|
947
|
+
default: false,
|
|
948
|
+
description: 'Whether it is published as a business at Ship',
|
|
949
|
+
title: 'Enabled',
|
|
950
|
+
type: 'boolean',
|
|
951
|
+
},
|
|
952
|
+
brand: {
|
|
953
|
+
default: '',
|
|
954
|
+
description: "The Brand's name on its card: the application's `owner` when unsaid",
|
|
955
|
+
title: 'Brand',
|
|
956
|
+
type: 'string',
|
|
957
|
+
},
|
|
958
|
+
scopes: {
|
|
959
|
+
additionalProperties: {
|
|
960
|
+
type: 'string',
|
|
961
|
+
},
|
|
962
|
+
description: 'What a person may let a personal agent do, `{scope: what the person is shown}`: `bookings:read: See your bookings`; none, it answers personal agents alone',
|
|
963
|
+
title: 'Scopes',
|
|
964
|
+
type: 'object',
|
|
965
|
+
},
|
|
966
|
+
registered_agents: {
|
|
967
|
+
description: 'The personal agents it accepts, each its issuer and its keys',
|
|
968
|
+
items: {
|
|
969
|
+
$ref: '#/$defs/AppPactRegisteredAgent',
|
|
970
|
+
},
|
|
971
|
+
title: 'Registered Agents',
|
|
972
|
+
type: 'array',
|
|
973
|
+
},
|
|
974
|
+
},
|
|
975
|
+
title: 'AppPactBusiness',
|
|
976
|
+
type: 'object',
|
|
977
|
+
},
|
|
938
978
|
AppPactConnection: {
|
|
939
979
|
additionalProperties: false,
|
|
940
980
|
description: "A business the application asks for each person, over PACT 1.0 (AGENT_PROTOCOLS PI-01).\n\nThe Brand is named by its domain — its Agent Card is at\n`https://<brand>/.well-known/agent-card.json` (PACT §2.1) — and its\nProvider's `audience`, which the Provider assigns at registration and\nthe personal-agent JWT carries (§3.1). Always in each person's own name:\nPACT acts for a person. No credential is ever part of a spec.",
|
|
@@ -972,6 +1012,25 @@ export const APPSPEC_SCHEMA = {
|
|
|
972
1012
|
title: 'AppPactConnection',
|
|
973
1013
|
type: 'object',
|
|
974
1014
|
},
|
|
1015
|
+
AppPactRegisteredAgent: {
|
|
1016
|
+
additionalProperties: false,
|
|
1017
|
+
description: 'A personal agent the business accepts (PACT 1.0 §3.1): its issuer, and where its keys are.\n\nRegistered by the Maker, as `pap.company.registered_agents` (AGENT_PROTOCOLS PR-13,\ndecided 2026-10-13): a personal-agent JWT is verified against the keys of a registered\nissuer only, and any other is refused.',
|
|
1018
|
+
properties: {
|
|
1019
|
+
issuer: {
|
|
1020
|
+
description: "The personal agent's `iss`, an HTTPS URL",
|
|
1021
|
+
title: 'Issuer',
|
|
1022
|
+
type: 'string',
|
|
1023
|
+
},
|
|
1024
|
+
jwks_uri: {
|
|
1025
|
+
description: 'Where its public keys are (a JWKS), an HTTPS URL',
|
|
1026
|
+
title: 'Jwks Uri',
|
|
1027
|
+
type: 'string',
|
|
1028
|
+
},
|
|
1029
|
+
},
|
|
1030
|
+
required: ['issuer', 'jwks_uri'],
|
|
1031
|
+
title: 'AppPactRegisteredAgent',
|
|
1032
|
+
type: 'object',
|
|
1033
|
+
},
|
|
975
1034
|
AppPage: {
|
|
976
1035
|
additionalProperties: false,
|
|
977
1036
|
description: "A widget's page written in its code (LOOP P-05): `@app.page`.\n\nIts inputs are a form, drawn on the page; as one changes, the function\nof its code runs again on them and the page shows what it returned, in\nplace. Without its file nothing runs it, and validation says so.",
|
|
@@ -1057,8 +1116,22 @@ export const APPSPEC_SCHEMA = {
|
|
|
1057
1116
|
},
|
|
1058
1117
|
AppPap: {
|
|
1059
1118
|
additionalProperties: false,
|
|
1060
|
-
description: 'Personal Agent Protocol: the companies it works with, and whether it is one.',
|
|
1119
|
+
description: 'Personal Agent Protocol: the companies it works with, and whether it is one.\n\nA `pap` block names the profile it is written for (PAP_DATALAYER S-03): one\nDatalayer speaks, or it is refused in a sentence. An application without the\nblock has none.',
|
|
1061
1120
|
properties: {
|
|
1121
|
+
profile: {
|
|
1122
|
+
anyOf: [
|
|
1123
|
+
{
|
|
1124
|
+
const: 'draft-01',
|
|
1125
|
+
type: 'string',
|
|
1126
|
+
},
|
|
1127
|
+
{
|
|
1128
|
+
type: 'null',
|
|
1129
|
+
},
|
|
1130
|
+
],
|
|
1131
|
+
default: null,
|
|
1132
|
+
description: 'The Personal Agent Protocol profile it is written for: `draft-01`',
|
|
1133
|
+
title: 'Profile',
|
|
1134
|
+
},
|
|
1062
1135
|
connections: {
|
|
1063
1136
|
description: 'Companies, as a personal agent',
|
|
1064
1137
|
items: {
|