@datalayer/agent-runtimes 1.5.18 → 1.5.19
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-CMBy5o1q.js → AgentDetails-jDVTZOUO.js} +1 -1
- package/dist-embed/chunks/{AgentDetailsDialog-D2vH2Nrd.js → AgentDetailsDialog-BLC4yhCo.js} +1 -1
- package/dist-embed/chunks/{AgentInspector-Bd0oHNAX.js → AgentInspector-DBI8tAJ0.js} +1 -1
- package/dist-embed/chunks/{AgentInspectorDialog-BJUgBPAE.js → AgentInspectorDialog-xW2BjxJT.js} +1 -1
- package/dist-embed/chunks/{CellSidebarExtension-CYOVwk1t.js → CellSidebarExtension-D4_DkfUV.js} +1 -1
- package/dist-embed/chunks/ChatView-CpY0werd.js +32 -0
- package/dist-embed/chunks/{ContextPie-B9mAKJc2.js → ContextPie-Cebjx8jR.js} +1 -1
- package/dist-embed/chunks/{DeckComponent-CbmzVWcF.js → DeckComponent-B0pIJhTp.js} +2 -2
- package/dist-embed/chunks/{DocumentView-BqsGfNys.js → DocumentView-CS_ILd4O.js} +1 -1
- package/dist-embed/chunks/{EphemeralDocument-DLaNvwm_.js → EphemeralDocument-CwauqhmY.js} +1 -1
- package/dist-embed/chunks/{EphemeralNotebook-jnqAJFPI.js → EphemeralNotebook-BgC-YEtX.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawComponent-Cb8yeXqu.js → ExcalidrawComponent-jOeuq53P.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawModal-DaPSGYek.js → ExcalidrawModal-RsJGL2o8.js} +1 -1
- package/dist-embed/chunks/{JupyterLexicalExtension-BQINjIFV.js → JupyterLexicalExtension-BgcLmrzO.js} +9 -9
- package/dist-embed/chunks/{KernelVariables-CGQkS5EX.js → KernelVariables-cBMhcW1H.js} +1 -1
- package/dist-embed/chunks/{LexicalToolRegistry-BJ6mpMWn.js → LexicalToolRegistry-0QBhZnFO.js} +1 -1
- package/dist-embed/chunks/{NotebookToolSurfaces-DiPifvaW.js → NotebookToolSurfaces-D1GnK3rj.js} +1 -1
- package/dist-embed/chunks/{NotebookView-IX0wNuX8.js → NotebookView-CC5s4q0A.js} +1 -1
- package/dist-embed/chunks/{Output-B9XAhyoF.js → Output-B4b0TC6x.js} +1 -1
- package/dist-embed/chunks/{SandboxDetailsDialog-COCpmo8m.js → SandboxDetailsDialog-DhH0cSRN.js} +1 -1
- package/dist-embed/chunks/{SchemaForm-WIwdKnrk.js → SchemaForm-CPiM13ub.js} +1 -1
- package/dist-embed/chunks/{WidgetVariableView-BoGROi-A.js → WidgetVariableView-CUqRH-Wi.js} +1 -1
- package/dist-embed/chunks/{YouTubePlugin-BEQBWMwx.js → YouTubePlugin-CGKNamMP.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-D3_T0Lze.js → abnfDiagram-VCTEODGH-DRoYJDMb.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-CG18Hf18.js → abnfDiagram-VCTEODGH-DqGkvvLU.js} +1 -1
- package/dist-embed/chunks/{ar-SA-G6X2FPQ2-BDWXsTdt.js → ar-SA-G6X2FPQ2-BdYlCgqh.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-B1QPAYO8.js → architectureDiagram-5GKGNRK7-B4WL7dDA.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-B5kSsKje.js → architectureDiagram-5GKGNRK7-BfuR2k3K.js} +1 -1
- package/dist-embed/chunks/{az-AZ-76LH7QW2-BGchGiT7.js → az-AZ-76LH7QW2-BAJSVApS.js} +1 -1
- package/dist-embed/chunks/{bg-BG-XCXSNQG7-vCII6Zuq.js → bg-BG-XCXSNQG7-CutR4A8o.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-868be97b-BvM0ptp7.js → blockDiagram-868be97b-gX0yvAGO.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-ClwWG8yx.js → blockDiagram-I7D4REHJ-BzMuNIFV.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-B8BmxOM4.js → blockDiagram-I7D4REHJ-CI05Fmnw.js} +1 -1
- package/dist-embed/chunks/{bn-BD-2XOGV67Q-Beu9yUTu.js → bn-BD-2XOGV67Q-CjPnVerm.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-3f4bdde3-S92W2yOx.js → c4Diagram-3f4bdde3-CWKvySqQ.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-CNWW_-u7.js → c4Diagram-7LVT6UL2-BVZdygZu.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-nSCKKLuX.js → c4Diagram-7LVT6UL2-BfaHhF7Y.js} +1 -1
- package/dist-embed/chunks/{ca-ES-6MX7JW3Y-CnEo6YQi.js → ca-ES-6MX7JW3Y-D0HWiwHb.js} +1 -1
- package/dist-embed/chunks/{celltoolbartracker-CO6V5FhH.js → celltoolbartracker-DB7Qnu48.js} +1 -1
- package/dist-embed/chunks/{chunk-2Q5K7J3B--r8j4N5L.js → chunk-2Q5K7J3B-Ck5gIh4V.js} +1 -1
- package/dist-embed/chunks/{chunk-2Q5K7J3B-D3fTIaw3.js → chunk-2Q5K7J3B-DEZpvDtA.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-D76mXyWz.js → chunk-5VM5RSS4-BFWTcAj1.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-QmrgOATO.js → chunk-5VM5RSS4-DVfmoMLA.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-DvNrStTM.js → chunk-F27PBJKO-BjmQwwGl.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-DdSgBnK0.js → chunk-F27PBJKO-wR8Z4fpP.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-DpxND1Ct.js → chunk-IMKFNOWR-DnYdav9f.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-DwqmSZhU.js → chunk-IMKFNOWR-Dzk9sHxf.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-i7V3vMtZ.js → chunk-JWPE2WC7-Ble97p_W.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-jla8jvq5.js → chunk-JWPE2WC7-DyqhVk-0.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-BGCugXU7.js → chunk-POPQ4Y6H-CQpYIqjb.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-ofrenTaa.js → chunk-POPQ4Y6H-CtT0-VOM.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-BIxxVjkU.js → chunk-SVP7TREG-BTtpQsSJ.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-2Q2uQyQk.js → chunk-SVP7TREG-CwdiQONE.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-BqA5q52L.js → chunk-TICWLB2K-BfGhImQo.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-LNiCmYq5.js → chunk-TICWLB2K-D3UY4Hgl.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-CqtfA3WC.js → chunk-XXDRQBXY-BaxFY2Jg.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-CNMg_gvd.js → chunk-XXDRQBXY-a1EY5SM8.js} +1 -1
- package/dist-embed/chunks/{classDiagram-ZZMXUADV-D6z_X195.js → classDiagram-ZZMXUADV-C0eJXn7r.js} +1 -1
- package/dist-embed/chunks/{classDiagram-ZZMXUADV-Co0jT9i-.js → classDiagram-ZZMXUADV-Cop7Dp41.js} +1 -1
- package/dist-embed/chunks/{classDiagram-f62afe4f-lN62p17q.js → classDiagram-f62afe4f-BGkVvslN.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-604399ef-B_QJ6H8h.js → classDiagram-v2-604399ef-CPwahFkc.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-D6z_X195.js → classDiagram-v2-VYDZK3BY-C0eJXn7r.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-VYDZK3BY-Co0jT9i-.js → classDiagram-v2-VYDZK3BY-Cop7Dp41.js} +1 -1
- package/dist-embed/chunks/{code-block-IT6T5CEO-BA38Km-f.js → code-block-IT6T5CEO-DEZxRmcq.js} +1 -1
- package/dist-embed/chunks/{component-Chor_J7e.js → component-B8gGyr50.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-B5H1cwBa.js → cose-bilkent-JH36ORCC-CQ3UHpys.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-C3cTgEcU.js → cose-bilkent-JH36ORCC-whW3Ickm.js} +1 -1
- package/dist-embed/chunks/{createText-aed3d8b3-BtgHeyNs.js → createText-aed3d8b3-BdWXGDj2.js} +1 -1
- package/dist-embed/chunks/{cs-CZ-2BRQDIVT-ClBKH9_y.js → cs-CZ-2BRQDIVT-DHo-9UK-.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-sdsAonZm.js → cynefinDiagram-5FMLGOSQ-C1dAzTZy.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-DPQLh9z7.js → cynefinDiagram-5FMLGOSQ-DKngj3tn.js} +1 -1
- package/dist-embed/chunks/{da-DK-5WZEPLOC-BqFDUAty.js → da-DK-5WZEPLOC-BLw7PbxL.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-DHF-9-7e.js → dagre-GXQ25YYZ-Bom0Ow10.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-Bwf_WjLM.js → dagre-GXQ25YYZ-BuHKUFJc.js} +1 -1
- package/dist-embed/chunks/{de-DE-XR44H4JA-6dsEQn7Z.js → de-DE-XR44H4JA-DqCVLDRk.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-DEqGRBMT.js → diagram-S7CK7UJ4-4zEkI5rV.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-C-N7Ei3I.js → diagram-S7CK7UJ4-H6Kef58R.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-DACyxI-v.js → diagram-UQ7AKVKN-DVAC1okH.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-CvSBE0YU.js → diagram-UQ7AKVKN-DeXqnBhe.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-DFze2xro.js → diagram-VSXAHHWV-BYu3Niho.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-DOb69VtE.js → diagram-VSXAHHWV-DJvcLGGT.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-CVTSdYyZ.js → diagram-VX7I27RA-BeOTI_JX.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-8EKYM_Sx.js → diagram-VX7I27RA-Cd39Txmj.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-B-689FF6.js → diagram-Z3DM3KII-Ccg8IzPs.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-DyiBmBFy.js → diagram-Z3DM3KII-DV4M-vr2.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-DcKvqn_h.js → ebnfDiagram-PWID7BFC-Ci7iqdKR.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-gj8dgCWR.js → ebnfDiagram-PWID7BFC-JrHbupeR.js} +1 -1
- package/dist-embed/chunks/{edges-b2856ca0-BqGGNnb4.js → edges-b2856ca0-D0Ve_cWg.js} +1 -1
- package/dist-embed/chunks/{el-GR-BZB4AONW-DOMW2ttY.js → el-GR-BZB4AONW-DWIe_es3.js} +1 -1
- package/dist-embed/chunks/{erDiagram-5d81789a-Bf1Ik49K.js → erDiagram-5d81789a-_wYWwZkR.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-B0PyZB_3.js → erDiagram-RLTQ6QDP-CgP-DSWO.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-GSu-_IUJ.js → erDiagram-RLTQ6QDP-D2UUMLBd.js} +1 -1
- package/dist-embed/chunks/{es-ES-U4NZUMDT-DeyWqjw1.js → es-ES-U4NZUMDT-C4nVLuzt.js} +1 -1
- package/dist-embed/chunks/{eu-ES-A7QVB2H4-CUGbZ0Pv.js → eu-ES-A7QVB2H4-DNtU9lgI.js} +1 -1
- package/dist-embed/chunks/{fa-IR-HGAKTJCU-Br8UEVO1.js → fa-IR-HGAKTJCU-C9d2dVkk.js} +1 -1
- package/dist-embed/chunks/{fi-FI-Z5N7JZ37-BSHjwo8G.js → fi-FI-Z5N7JZ37-BtMDQ3ec.js} +1 -1
- package/dist-embed/chunks/{flowDb-185abca5-U9PwWSO4.js → flowDb-185abca5-w4ZLOMwa.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-1629c991-BecgzQgp.js → flowDiagram-1629c991-CrRVLCnt.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-2vih3kWM.js → flowDiagram-HODETNUW-BJpTxK5i.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-tcAkcGh4.js → flowDiagram-HODETNUW-DtWilAWc.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-v2-1d953310-Bdmc9G3m.js → flowDiagram-v2-1d953310-tzv2aPj8.js} +1 -1
- package/dist-embed/chunks/{flowchart-elk-definition-6df44142-oWOWsVNc.js → flowchart-elk-definition-6df44142-C8Gjf4Dy.js} +1 -1
- package/dist-embed/chunks/{fr-FR-RHASNOE6-BukqZYPz.js → fr-FR-RHASNOE6-D1fqP_vI.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-3b0b3873-B7lmD9r9.js → ganttDiagram-3b0b3873-WkbnZ3Zy.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-D0E7se_Z.js → ganttDiagram-EL5Y4UJY-B1hq5rq9.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-DDbqMevq.js → ganttDiagram-EL5Y4UJY-DiSce27A.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-DK3EJl5z.js → gitGraphDiagram-WWUBYQGX-BoqOxrkd.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-DnVwXJWu.js → gitGraphDiagram-WWUBYQGX-Dfl4EOB8.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-B9vpLy6R.js → gitGraphDiagram-f01e8bc2-DxsYooak.js} +1 -1
- package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BxVOJiaI.js → gl-ES-HMX3MZ6V-BkLcCFrx.js} +1 -1
- package/dist-embed/chunks/{he-IL-6SHJWFNN-Dv2VRxlJ.js → he-IL-6SHJWFNN-By48peS7.js} +1 -1
- package/dist-embed/chunks/{hi-IN-IWLTKZ5I-CFo5RUMz.js → hi-IN-IWLTKZ5I-386dm1ZK.js} +1 -1
- package/dist-embed/chunks/{hu-HU-A5ZG7DT2-ul3dS3un.js → hu-HU-A5ZG7DT2-B2wmIkDO.js} +1 -1
- package/dist-embed/chunks/{id-ID-SAP4L64H-ItVb-zwI.js → id-ID-SAP4L64H-Bc22Fq5f.js} +1 -1
- package/dist-embed/chunks/{index-9bae90f3-D9849sgo.js → index-9bae90f3-0dEQW6X4.js} +1 -1
- package/dist-embed/chunks/{index-oGqh9y23.js → index-B2eXWNhX.js} +1 -1
- package/dist-embed/chunks/{index-DSvebR7d.js → index-B5UP_2-0.js} +1 -1
- package/dist-embed/chunks/{index-YlGTgJvL.js → index-BEuw5cVO.js} +1 -1
- package/dist-embed/chunks/{index-CsgaCZaW.js → index-BMlDZi3F.js} +1 -1
- package/dist-embed/chunks/{index-BNFRRs9d.js → index-BW1nTf3r.js} +1 -1
- package/dist-embed/chunks/{index-xiH3WzLm.js → index-Ba1_ej_S.js} +1 -1
- package/dist-embed/chunks/{index-CjM49jS0.js → index-Bf3G_UXi.js} +1 -1
- package/dist-embed/chunks/{index-BOYhJnrD.js → index-BlBHM8M3.js} +1 -1
- package/dist-embed/chunks/{index-B5zrJYwn.js → index-Bw3Ijhff.js} +1 -1
- package/dist-embed/chunks/{index-BT4vYFeY.js → index-C5TEB73S.js} +1 -1
- package/dist-embed/chunks/{index-BkKEXqQS.js → index-CD5d-0QJ.js} +1 -1
- package/dist-embed/chunks/{index-D2LvuQlP.js → index-CTSvc7kN.js} +1 -1
- package/dist-embed/chunks/{index-B-L6ocEV.js → index-CaBZ6zn5.js} +1 -1
- package/dist-embed/chunks/{index-DSF21-29.js → index-Ce0tqSYG.js} +1 -1
- package/dist-embed/chunks/{index-BfUXEHI0.js → index-CeDsYtrC.js} +1 -1
- package/dist-embed/chunks/{index-Cp2aJ2ZR.js → index-Ckzgd1GV.js} +1 -1
- package/dist-embed/chunks/{index-jh9S19of.js → index-Crj6AD3D.js} +1 -1
- package/dist-embed/chunks/{index-bm8APcDZ.js → index-Cs7fNnHI.js} +4 -4
- package/dist-embed/chunks/{index-DoBEQ07P.js → index-D2V9YBSL.js} +2 -2
- package/dist-embed/chunks/{index-B764si9c.js → index-D4xDU_cs.js} +1 -1
- package/dist-embed/chunks/{index-O2jaI8TY.js → index-DB3vaYGl.js} +1 -1
- package/dist-embed/chunks/{index-B0wMyD8Y.js → index-DGpvT0SW.js} +1 -1
- package/dist-embed/chunks/{index-CRpZyQIR.js → index-DIGoR1Tz.js} +4 -4
- package/dist-embed/chunks/{index-CZdWsyNw.js → index-DTF28A2w.js} +1 -1
- package/dist-embed/chunks/{index-7FNjj0f2.js → index-DdBEMKdr.js} +1 -1
- package/dist-embed/chunks/{index-BrD9dtoV.js → index-DiBjbJad.js} +1 -1
- package/dist-embed/chunks/{index-BM6oRiO1.js → index-DkAo6nTX.js} +1 -1
- package/dist-embed/chunks/{index-TEcp7-f6.js → index-DmlogZBL.js} +2 -2
- package/dist-embed/chunks/{index-Cql9gOsL.js → index-DmzlqRz3.js} +1 -1
- package/dist-embed/chunks/{index-CsxlyZef.js → index-DodMg2uF.js} +1 -1
- package/dist-embed/chunks/{index-BiTIdbkn.js → index-DwKNt0FO.js} +1 -1
- package/dist-embed/chunks/{index-BqMoyzEk.js → index-I5uUezOA.js} +1 -1
- package/dist-embed/chunks/{index-DQQXY-7d.js → index-TzvZ9g2T.js} +2 -2
- package/dist-embed/chunks/{index-QZ3sHHT3.js → index-wWGi6oM9.js} +10 -10
- package/dist-embed/chunks/{index.esm-CkSite-X.js → index.esm-DFA6Rod9.js} +1 -1
- package/dist-embed/chunks/{index.esm-B7KoTOBb.js → index.esm-De-JJWit.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-DDO50Ria.js → infoDiagram-27XIBGKW-B6fdV0Xc.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-O3q53Qe2.js → infoDiagram-27XIBGKW-C6J796kn.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-a29d40f1-jOvOHUyu.js → infoDiagram-a29d40f1-BjFaAu0-.js} +1 -1
- package/dist-embed/chunks/isEqual-BxgGIFfN.js +1 -0
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DuiWhpVW.js → ishikawaDiagram-5VMMS53U-CZVbbiJE.js} +1 -1
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-IzmbYzxv.js → ishikawaDiagram-5VMMS53U-sjolONOj.js} +1 -1
- package/dist-embed/chunks/{it-IT-JPQ66NNP-BuCUBzia.js → it-IT-JPQ66NNP-Cyadykvb.js} +1 -1
- package/dist-embed/chunks/{ja-JP-DBVTYXUO-BhtQz4sy.js → ja-JP-DBVTYXUO-DYq7TJf3.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-sO-Cfp65.js → journeyDiagram-3NMN7TZE-BJ-6GyhB.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-DGLcsVfC.js → journeyDiagram-3NMN7TZE-CNoB-K6t.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-95396277-CA4bGq0G.js → journeyDiagram-95396277-E32TRIvj.js} +1 -1
- package/dist-embed/chunks/{kaa-6HZHGXH3-B_TI8Aa0.js → kaa-6HZHGXH3-qdjcAwd_.js} +1 -1
- package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-BsSg_l-j.js → kab-KAB-ZGHBKWFO-DHVNVHkT.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-CDtLkjnU.js → kanban-definition-UXKFOSKX-2elwU70n.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-0wjvwDqk.js → kanban-definition-UXKFOSKX-ZErtzIYn.js} +1 -1
- package/dist-embed/chunks/{kk-KZ-P5N5QNE5-B7XK5OQq.js → kk-KZ-P5N5QNE5-DtQCYXHl.js} +1 -1
- package/dist-embed/chunks/{km-KH-HSX4SM5Z-Cm2LA9F8.js → km-KH-HSX4SM5Z-B_GLLzdn.js} +1 -1
- package/dist-embed/chunks/{ko-KR-MTYHY66A-CL5s99y5.js → ko-KR-MTYHY66A-B8OMm-h5.js} +1 -1
- package/dist-embed/chunks/{ku-TR-6OUDTVRD-CiijvKHq.js → ku-TR-6OUDTVRD-_gB3JeJW.js} +1 -1
- package/dist-embed/chunks/{layout-CzrlbzeK.js → layout-DV2JdCx0.js} +1 -1
- package/dist-embed/chunks/{layout-BBbB54WC.js → layout-Di1pO_ld.js} +1 -1
- package/dist-embed/chunks/{lexicalHooks-DQxNZEiJ.js → lexicalHooks-DuWTjfdx.js} +1 -1
- package/dist-embed/chunks/{lt-LT-XHIRWOB4-CcA_Z5jR.js → lt-LT-XHIRWOB4-judKfepg.js} +1 -1
- package/dist-embed/chunks/{lv-LV-5QDEKY6T-CAQS9wGm.js → lv-LV-5QDEKY6T-C-9ZhYTf.js} +1 -1
- package/dist-embed/chunks/{mermaid.core-DfgoT1cz.js → mermaid.core-CH9h-G6m.js} +3 -3
- package/dist-embed/chunks/{mermaid.core-s-D09gpV.js → mermaid.core-DmeLLEp4.js} +5 -5
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-BCiSPRJk.js → mindmap-definition-YA3MSWOX-CH32-IRq.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-B6_K5ZvV.js → mindmap-definition-YA3MSWOX-DQTfxlEc.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-e4c1d938-D7gmABiC.js → mindmap-definition-e4c1d938-BgjFyiku.js} +1 -1
- package/dist-embed/chunks/{mr-IN-CRQNXWMA-DMAAvsDA.js → mr-IN-CRQNXWMA-B7W8v3Ft.js} +1 -1
- package/dist-embed/chunks/{my-MM-5M5IBNSE-t2TKqrjW.js → my-MM-5M5IBNSE-e3nyuoTM.js} +1 -1
- package/dist-embed/chunks/{nb-NO-T6EIAALU-Bi3ZI-HQ.js → nb-NO-T6EIAALU-Dq2hr8f4.js} +1 -1
- package/dist-embed/chunks/{nl-NL-IS3SIHDZ-B8UdlW1K.js → nl-NL-IS3SIHDZ-BPpJK4bx.js} +1 -1
- package/dist-embed/chunks/{nn-NO-6E72VCQL-Bt87hI27.js → nn-NO-6E72VCQL-TlFEoum0.js} +1 -1
- package/dist-embed/chunks/{oc-FR-POXYY2M6-009NL0Pk.js → oc-FR-POXYY2M6-CnSPPsW-.js} +1 -1
- package/dist-embed/chunks/{pa-IN-N4M65BXN-BfUtS2yt.js → pa-IN-N4M65BXN-DOLWrPsW.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-CBrnWUaX.js → pegDiagram-XKGWAZYB-n8BSl7l3.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-BX0ZYMng.js → pegDiagram-XKGWAZYB-oyZR3LwE.js} +1 -1
- package/dist-embed/chunks/{percentages-BXMCSKIN-CfzulzOv.js → percentages-BXMCSKIN-CGGUos_k.js} +5 -5
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-Ct8dzoLU.js → pieDiagram-E7YTZNPT-BW48oEVe.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-B1My5W85.js → pieDiagram-E7YTZNPT-t7G_PNXz.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-c941bede-7DZ-Bl8U.js → pieDiagram-c941bede-Ci9AzDtZ.js} +1 -1
- package/dist-embed/chunks/{pl-PL-T2D74RX3-DbtOl9_x.js → pl-PL-T2D74RX3-hlaxloT-.js} +1 -1
- package/dist-embed/chunks/{pt-BR-5N22H2LF-B1pjR1_T.js → pt-BR-5N22H2LF-Zzt5dIRi.js} +1 -1
- package/dist-embed/chunks/{pt-PT-UZXXM6DQ-takC7TRa.js → pt-PT-UZXXM6DQ-DclavEOo.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-B1mlT7fN.js → quadrantDiagram-AXDQQJYC-BLT8OFPd.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-B7p4unpj.js → quadrantDiagram-AXDQQJYC-CqCRrPOH.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-CTMh_Ad5.js → quadrantDiagram-cf8b8fe0-CCwvL59h.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-CJEwr5d9.js → railroadDiagram-O6MQD6OU-CArU1lc_.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-xr8bPIl7.js → railroadDiagram-O6MQD6OU-h7bwNVOI.js} +1 -1
- package/dist-embed/chunks/{renderer-Ba0Cwb4p.js → renderer-B7ulbNbj.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-53bda41b-Dv1Piop_.js → requirementDiagram-53bda41b-DwpbUtUG.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-Bw89vFiC.js → requirementDiagram-BXWQKSXE-DjSU8lt8.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-rabT3v-j.js → requirementDiagram-BXWQKSXE-DouRs4yi.js} +1 -1
- package/dist-embed/chunks/{ro-RO-JPDTUUEW-DkkqyFBF.js → ro-RO-JPDTUUEW-cgDkcR_I.js} +1 -1
- package/dist-embed/chunks/{ru-RU-B4JR7IUQ-CikD-ITp.js → ru-RU-B4JR7IUQ-9-oBtsiZ.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-D--cx9I2.js → sankeyDiagram-P5KCCOFB-CBWfRlJB.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-5SpI76uK.js → sankeyDiagram-P5KCCOFB-DjzmT1hm.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-c3ef121a-DbhtSWkB.js → sankeyDiagram-c3ef121a-9XuKuXG6.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-82a5b84f-DpxBSKAk.js → sequenceDiagram-82a5b84f-BG9YQ6K-.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-D_wK-z7a.js → sequenceDiagram-WJ2MYXX4-B9mfZJzJ.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-DGNwWgf8.js → sequenceDiagram-WJ2MYXX4-CosODaLN.js} +1 -1
- package/dist-embed/chunks/{sessions-DQkTozai.js → sessions-D0uw83Dx.js} +1 -1
- package/dist-embed/chunks/{si-LK-N5RQ5JYF-BqlWRhwK.js → si-LK-N5RQ5JYF-DwwdanqB.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-4Uh8JUjf.js → sizeCapture-INFHLROL-CwVsdbq8.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-g-K-6XON.js → sizeCapture-INFHLROL-H5_9Te0l.js} +1 -1
- package/dist-embed/chunks/{sk-SK-C5VTKIMK-DGsmi02E.js → sk-SK-C5VTKIMK-Bx7Xeegg.js} +1 -1
- package/dist-embed/chunks/{sl-SI-NN7IZMDC-HFz45GOs.js → sl-SI-NN7IZMDC-BnRYm8hb.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-43e79a5f-DxbV4jP9.js → stateDiagram-43e79a5f-DqSNbxpV.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-D-l3u-WY.js → stateDiagram-D77RDMKH-CFvF2i-n.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-C_wYpqah.js → stateDiagram-D77RDMKH-CM0rQJN-.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-BzxzaDdI.js → stateDiagram-v2-2041ed4f-DEAOSRqx.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-IEMNMwm0.js → stateDiagram-v2-MP3YSRHH-BNF3zl7F.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-MP3YSRHH-BGYkOvTS.js → stateDiagram-v2-MP3YSRHH-x4Ke6-d0.js} +1 -1
- package/dist-embed/chunks/{styles-455b33cd-C42Lyulv.js → styles-455b33cd-CGv1xv-g.js} +1 -1
- package/dist-embed/chunks/{styles-f932cba9-Bf6H3IMq.js → styles-f932cba9-BcvypeEH.js} +1 -1
- package/dist-embed/chunks/{styles-fcc2142b-OZg6fE-p.js → styles-fcc2142b-Bm-8o0Wg.js} +1 -1
- package/dist-embed/chunks/{subset-shared.chunk-KC0vshev.js → subset-shared.chunk-E0MJmgRL.js} +1 -1
- package/dist-embed/chunks/{subset-worker.chunk-CXZAV_Z5.js → subset-worker.chunk-C8uhAh2D.js} +1 -1
- package/dist-embed/chunks/{sv-SE-XGPEYMSR-yEdPvwHy.js → sv-SE-XGPEYMSR-CsQ6HfG0.js} +1 -1
- package/dist-embed/chunks/{svgDrawCommon-148a3cd9-D9MRwoYw.js → svgDrawCommon-148a3cd9-CfBqsI2Z.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-CPkom4Q8.js → swimlanes-42K2YHIH-C5u-jMMX.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-DJLFcHMt.js → swimlanes-42K2YHIH-DSy5A1Br.js} +1 -1
- package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-BJOhuN-y.js → swimlanesDiagram-VR7AAH4N-DiCCWeyH.js} +1 -1
- package/dist-embed/chunks/{swimlanesDiagram-VR7AAH4N-BRTtY1QX.js → swimlanesDiagram-VR7AAH4N-Dz7sQXaA.js} +1 -1
- package/dist-embed/chunks/{ta-IN-2NMHFXQM-0i424YGX.js → ta-IN-2NMHFXQM-fGjZyqzP.js} +1 -1
- package/dist-embed/chunks/{th-TH-HPSO5L25-BidF5zNO.js → th-TH-HPSO5L25-mRygXByj.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-BasSLg-_.js → timeline-definition-24CTP7MA-BbGhqNW7.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-BfGIJi1H.js → timeline-definition-24CTP7MA-YHoSditW.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-7545f45a-BWwgvKxJ.js → timeline-definition-7545f45a-Cgha50uP.js} +1 -1
- package/dist-embed/chunks/{tr-TR-DEFEU3FU-BoHR9SlC.js → tr-TR-DEFEU3FU-CSMtrw8Q.js} +1 -1
- package/dist-embed/chunks/{uk-UA-QMV73CPH-DfRkqqO0.js → uk-UA-QMV73CPH-CLyS0aEW.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-D1T__rd2.js → vennDiagram-4TSXK5OY-CP_KbGdD.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-DMIYCfJ-.js → vennDiagram-4TSXK5OY-DEMghTP3.js} +1 -1
- package/dist-embed/chunks/{vi-VN-M7AON7JQ-CvZ4wpTw.js → vi-VN-M7AON7JQ-DI90c6Zt.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-DtlNUHLy.js → wardleyDiagram-VM6X3IG4-BKwp7C6o.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-CiKuFI26.js → wardleyDiagram-VM6X3IG4-CBfVN6X9.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-3f383b91-DzyuxW4K.js → xychartDiagram-3f383b91-CyeoV8HA.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-p6pYRkk6.js → xychartDiagram-S5SC5T6Z-BdfPJ1NZ.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-BIeFUHrS.js → xychartDiagram-S5SC5T6Z-DOiTJUlh.js} +1 -1
- package/dist-embed/chunks/{zh-CN-LNUGB5OW-Cx1Azgu2.js → zh-CN-LNUGB5OW-BhtQOj8w.js} +1 -1
- package/dist-embed/chunks/{zh-HK-E62DVLB3-DMjy1d4Z.js → zh-HK-E62DVLB3-BwejmqFd.js} +1 -1
- package/dist-embed/chunks/{zh-TW-RAJ6MFWO-J-YjINmR.js → zh-TW-RAJ6MFWO-CXYEZutZ.js} +1 -1
- package/dist-embed/datalayer-app-main.js +67 -67
- package/lib/apps/plugins/chat/ChatView.js +10 -2
- package/lib/hooks/ownRoutes.d.ts +27 -0
- package/lib/hooks/ownRoutes.js +33 -0
- package/lib/hooks/useAgentRuntimes.d.ts +5 -0
- package/lib/hooks/useAgentRuntimes.js +29 -26
- package/lib/specs/voices.d.ts +2 -0
- package/lib/specs/voices.js +5 -0
- package/lib/voice/hearing.js +5 -3
- package/lib/voice/pinned.d.ts +3 -1
- package/lib/voice/pinned.js +17 -3
- package/package.json +1 -1
- package/scripts/codegen/generate_voices.py +3 -0
- package/scripts/voice/measure.py +9 -4
- package/scripts/voice/pin_store.py +11 -5
- package/scripts/voice/serve_store.py +2 -2
- package/dist-embed/chunks/ChatView-Bz0eyWo6.js +0 -32
- package/dist-embed/chunks/isEqual-CGLTk7wU.js +0 -1
|
@@ -40,6 +40,7 @@ import { useVisitorToken } from '../../apps/visitorToken';
|
|
|
40
40
|
import { AGENTS_PLUGIN_NAME, } from '../agents/plugin';
|
|
41
41
|
import { BROWSER_CODE_TOOL, dataUrlBase64, givenFilesSentence, sandboxFileName, writeFilesCode, } from '../../apps/browserSandbox';
|
|
42
42
|
import { useConfig } from '../../../hooks/useConfig';
|
|
43
|
+
import { runtimeModelsUrl } from '../../../hooks/ownRoutes';
|
|
43
44
|
import { useSkills, useSkillActions } from '../../../hooks/useSkills';
|
|
44
45
|
import { AI_MODEL_CATALOGUE, isChatModel } from '../../../specs/models';
|
|
45
46
|
import { LoopAgentBlueprint, LoopAgentGate, LoopChatComposer, sendInstead, LoopChatExtras, LoopChatHeader, LoopChatLayout, LoopChatSuggestion, LoopChatSurface, LoopChatTurn, LoopCommand, LoopFrontendTool, LoopRunProps, LoopSlots, agentServerOf, noRuntimeSaid, canOpenView, runForwardedProps, onPromptFocusRequest, onSurfaceRequest, useLoopPromptStore, } from '../../core';
|
|
@@ -1488,10 +1489,17 @@ export default function ChatView({ workspace }) {
|
|
|
1488
1489
|
if (inPage || agentServerUrl === undefined) {
|
|
1489
1490
|
return undefined;
|
|
1490
1491
|
}
|
|
1492
|
+
// A deployment's runtime does not answer it (OwnRoutesOnly): nothing to
|
|
1493
|
+
// offer, as when a runtime does not answer, and its selector is hidden.
|
|
1494
|
+
const modelsUrl = runtimeModelsUrl(agentServerUrl, agentId, ownRoutesOnly);
|
|
1495
|
+
if (!modelsUrl) {
|
|
1496
|
+
setCatalogModels([]);
|
|
1497
|
+
return undefined;
|
|
1498
|
+
}
|
|
1491
1499
|
let cancelled = false;
|
|
1492
1500
|
// The agent's own models (its model and model_additionals), each saying
|
|
1493
1501
|
// whether its inference serves it.
|
|
1494
|
-
void fetch(
|
|
1502
|
+
void fetch(modelsUrl)
|
|
1495
1503
|
.then(response => (response.ok ? response.json() : null))
|
|
1496
1504
|
.then(payload => {
|
|
1497
1505
|
if (!cancelled) {
|
|
@@ -1514,7 +1522,7 @@ export default function ChatView({ workspace }) {
|
|
|
1514
1522
|
return () => {
|
|
1515
1523
|
cancelled = true;
|
|
1516
1524
|
};
|
|
1517
|
-
}, [agentServerUrl, agentId, inPage]);
|
|
1525
|
+
}, [agentServerUrl, agentId, inPage, ownRoutesOnly]);
|
|
1518
1526
|
/*
|
|
1519
1527
|
* What to offer when the server has no catalogue of its own.
|
|
1520
1528
|
*
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime routes a page calls besides an application's own, and when it
|
|
3
|
+
* does not (PAP_DATALAYER's release gates, decided 14 October 2026).
|
|
4
|
+
*
|
|
5
|
+
* A runtime that serves a deployment — kept always on, or launched by its
|
|
6
|
+
* hosted page — and the visitors' runtime answer only the application's own
|
|
7
|
+
* routes (`OwnRoutesOnly`, the same `ownRoutesOnly` its chat is told). The
|
|
8
|
+
* page then asks nothing else of it: not the agent's status, not deleting
|
|
9
|
+
* its agent, not the runtime's model catalogue. Each is `undefined` there,
|
|
10
|
+
* and the caller asks nothing.
|
|
11
|
+
*
|
|
12
|
+
* Pure, so it is read without the agent hook's runtime stack.
|
|
13
|
+
*
|
|
14
|
+
* @module hooks/ownRoutes
|
|
15
|
+
*/
|
|
16
|
+
import type { AppLaunch } from './useAgentRuntimes';
|
|
17
|
+
/**
|
|
18
|
+
* Whether the runtime launched for an application answers only its own
|
|
19
|
+
* routes: it is launched for a deployment. A Preview runs on its Maker's.
|
|
20
|
+
*/
|
|
21
|
+
export declare function launchesOwnRoutesOnly(appLaunch?: AppLaunch): boolean;
|
|
22
|
+
/** `GET /api/v1/runtime/status` for an agent, or none on such a runtime. */
|
|
23
|
+
export declare function runtimeStatusUrl(agentBaseUrl: string, agentId: string, ownRoutesOnly: boolean): string | undefined;
|
|
24
|
+
/** `DELETE /api/v1/agents/{id}`, or none on such a runtime: its agent is the deployment's. */
|
|
25
|
+
export declare function agentDeletionUrl(agentBaseUrl: string, agentId: string, ownRoutesOnly: boolean): string | undefined;
|
|
26
|
+
/** `GET /api/v1/configure/models` for an agent, or none on such a runtime. */
|
|
27
|
+
export declare function runtimeModelsUrl(agentServerUrl: string, agentId: string, ownRoutesOnly: boolean): string | undefined;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Whether the runtime launched for an application answers only its own
|
|
7
|
+
* routes: it is launched for a deployment. A Preview runs on its Maker's.
|
|
8
|
+
*/
|
|
9
|
+
export function launchesOwnRoutesOnly(appLaunch) {
|
|
10
|
+
return Boolean(appLaunch?.deploymentUid);
|
|
11
|
+
}
|
|
12
|
+
const base = (url) => url.trim().replace(/\/$/, '');
|
|
13
|
+
/** `GET /api/v1/runtime/status` for an agent, or none on such a runtime. */
|
|
14
|
+
export function runtimeStatusUrl(agentBaseUrl, agentId, ownRoutesOnly) {
|
|
15
|
+
if (ownRoutesOnly) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
return `${base(agentBaseUrl)}/api/v1/runtime/status?agent_id=${encodeURIComponent(agentId)}`;
|
|
19
|
+
}
|
|
20
|
+
/** `DELETE /api/v1/agents/{id}`, or none on such a runtime: its agent is the deployment's. */
|
|
21
|
+
export function agentDeletionUrl(agentBaseUrl, agentId, ownRoutesOnly) {
|
|
22
|
+
if (ownRoutesOnly) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return `${base(agentBaseUrl)}/api/v1/agents/${encodeURIComponent(agentId)}`;
|
|
26
|
+
}
|
|
27
|
+
/** `GET /api/v1/configure/models` for an agent, or none on such a runtime. */
|
|
28
|
+
export function runtimeModelsUrl(agentServerUrl, agentId, ownRoutesOnly) {
|
|
29
|
+
if (ownRoutesOnly) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return `${base(agentServerUrl)}/api/v1/configure/models?agent_id=${encodeURIComponent(agentId)}`;
|
|
33
|
+
}
|
|
@@ -130,6 +130,11 @@ export interface AgentSandboxConnectionInfo {
|
|
|
130
130
|
agentId?: string;
|
|
131
131
|
agentBaseUrl?: string;
|
|
132
132
|
runtimeEnvironment?: RuntimeEnvironmentDetails;
|
|
133
|
+
/**
|
|
134
|
+
* The runtime answers only the application's own routes (OwnRoutesOnly):
|
|
135
|
+
* its agent's status is not asked, and the ingress given is used.
|
|
136
|
+
*/
|
|
137
|
+
ownRoutesOnly?: boolean;
|
|
133
138
|
}
|
|
134
139
|
export interface RuntimeEnvironmentDetails {
|
|
135
140
|
environmentName?: string;
|
|
@@ -24,6 +24,7 @@ import { parseAgentStreamMessage, } from '../types/stream';
|
|
|
24
24
|
import { DEFAULT_AGENT_CONFIG } from '../types/config';
|
|
25
25
|
import { ServiceManager } from '@jupyterlab/services/lib/manager';
|
|
26
26
|
import { disposeSandboxServiceManagers } from '../services/sandboxServiceManagers';
|
|
27
|
+
import { agentDeletionUrl, launchesOwnRoutesOnly, runtimeStatusUrl, } from './ownRoutes';
|
|
27
28
|
import { runtimeUrl, runtimesUrl } from '../runtimes/lifecycle';
|
|
28
29
|
import { legacyTargetOf, locationOf, runsInBrowser, toAgentRuntimeVariant, } from '../runtimes/variants';
|
|
29
30
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -232,26 +233,22 @@ export async function createServiceManagerFromAgentSandbox(info, authToken) {
|
|
|
232
233
|
.replace(/\/$/, '');
|
|
233
234
|
const agentId = String(info.agentId || '').trim();
|
|
234
235
|
const bearer = String(authToken || '').trim();
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
const payload = (await response
|
|
236
|
+
const statusUrl = agentBaseUrl && agentId && bearer
|
|
237
|
+
? runtimeStatusUrl(agentBaseUrl, agentId, Boolean(info.ownRoutesOnly))
|
|
238
|
+
: undefined;
|
|
239
|
+
if (statusUrl) {
|
|
240
|
+
try {
|
|
241
|
+
const response = await fetch(statusUrl, {
|
|
242
|
+
headers: {
|
|
243
|
+
Authorization: `Bearer ${bearer}`,
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
const payload = response.ok
|
|
247
|
+
? (await response
|
|
250
248
|
.json()
|
|
251
|
-
.catch(() => null))
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
249
|
+
.catch(() => null))
|
|
250
|
+
: null;
|
|
251
|
+
if (payload) {
|
|
255
252
|
payloadFromStatus = payload;
|
|
256
253
|
const ingressFromStatus = resolveSandboxIngress(payload);
|
|
257
254
|
if (ingressFromStatus) {
|
|
@@ -268,12 +265,11 @@ export async function createServiceManagerFromAgentSandbox(info, authToken) {
|
|
|
268
265
|
}
|
|
269
266
|
}
|
|
270
267
|
tokenFromStatus = resolveSandboxToken(payload);
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
catch {
|
|
274
|
-
// Keep fallback ingress/token when status endpoint is unavailable.
|
|
275
268
|
}
|
|
276
269
|
}
|
|
270
|
+
catch {
|
|
271
|
+
// Keep fallback ingress/token when status endpoint is unavailable.
|
|
272
|
+
}
|
|
277
273
|
}
|
|
278
274
|
let ingress = resolvedIngress.replace(/\/$/, '');
|
|
279
275
|
let tokenFromIngress = '';
|
|
@@ -366,6 +362,9 @@ export function useAgentRuntimes(options = {}) {
|
|
|
366
362
|
// Both vocabularies funnel into one value here, so no branch below has to
|
|
367
363
|
// remember that the old names exist.
|
|
368
364
|
const variant = toAgentRuntimeVariant(variantOption ?? runtimeCreationTarget);
|
|
365
|
+
// Launched for a deployment, its runtime answers only the application's
|
|
366
|
+
// own routes (OwnRoutesOnly): nothing else is asked of it.
|
|
367
|
+
const ownRoutesOnly = launchesOwnRoutesOnly(appLaunch);
|
|
369
368
|
const { configuration } = useCoreStore();
|
|
370
369
|
// Base store state
|
|
371
370
|
const runtime = useAgentRuntimeConnection();
|
|
@@ -575,10 +574,14 @@ export function useAgentRuntimes(options = {}) {
|
|
|
575
574
|
const teardown = useCallback(async () => {
|
|
576
575
|
const agentId = runtime?.agentId;
|
|
577
576
|
const agentBaseUrl = runtime?.agentBaseUrl;
|
|
578
|
-
|
|
577
|
+
// A deployment's runtime keeps its agent: nobody outside deletes it.
|
|
578
|
+
const deletion = agentId && agentBaseUrl
|
|
579
|
+
? agentDeletionUrl(agentBaseUrl, agentId, ownRoutesOnly)
|
|
580
|
+
: undefined;
|
|
581
|
+
if (deletion) {
|
|
579
582
|
try {
|
|
580
583
|
const { token } = await getAuthHeaders();
|
|
581
|
-
await fetch(
|
|
584
|
+
await fetch(deletion, {
|
|
582
585
|
method: 'DELETE',
|
|
583
586
|
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
584
587
|
});
|
|
@@ -593,7 +596,7 @@ export function useAgentRuntimes(options = {}) {
|
|
|
593
596
|
setLifecycleStatus('idle');
|
|
594
597
|
setLifecycleError(null);
|
|
595
598
|
agentRuntimeStore.getState().reset();
|
|
596
|
-
}, [runtime?.agentId, runtime?.agentBaseUrl, getAuthHeaders]);
|
|
599
|
+
}, [runtime?.agentId, runtime?.agentBaseUrl, getAuthHeaders, ownRoutesOnly]);
|
|
597
600
|
// ─── Auto-create agent when runtime is ready (connect mode) ───────
|
|
598
601
|
useEffect(() => {
|
|
599
602
|
if (!hasSpec &&
|
package/lib/specs/voices.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export interface SpeechModelSpec {
|
|
|
47
47
|
name: string;
|
|
48
48
|
/** What it is for, in a sentence or two. */
|
|
49
49
|
description: string;
|
|
50
|
+
/** Who published it: the folder Datalayer's storage keeps it under, `<provider>/<id>/<path>`. */
|
|
51
|
+
provider: string;
|
|
50
52
|
task: 'stt' | 'tts' | 'vad';
|
|
51
53
|
engine: string;
|
|
52
54
|
dtype: string;
|
package/lib/specs/voices.js
CHANGED
|
@@ -73,6 +73,7 @@ export const SPEECH_MODEL_CATALOGUE = {
|
|
|
73
73
|
version: '0.0.1',
|
|
74
74
|
name: 'Kokoro 82M',
|
|
75
75
|
description: "Text to speech on Datalayer's servers, on CPU: hexgrad's Kokoro-82M v1.0 exported to ONNX, in full precision, with the voices file that holds its 54 voices, run by kokoro-onnx. Its phonemes come from eSpeak NG (GPL-3.0), which runs on the server and is never sent to a browser. Full precision, not the 8-bit export: on a 16-core CPU the 8-bit one speaks slower than real time (6 s for 3.9 s of speech), this one about four times faster than real time (1 s).",
|
|
76
|
+
provider: 'hexgrad',
|
|
76
77
|
task: 'tts',
|
|
77
78
|
engine: 'kokoro-onnx',
|
|
78
79
|
dtype: 'fp32',
|
|
@@ -104,6 +105,7 @@ export const SPEECH_MODEL_CATALOGUE = {
|
|
|
104
105
|
version: '0.0.1',
|
|
105
106
|
name: 'Moonshine Base (English)',
|
|
106
107
|
description: "Speech to text in the browser, in English: Useful Sensors' Moonshine Base (61M parameters), its ONNX export quantized to 8 bits, run by transformers.js. One of the English models whose weights are MIT; the legacy non-English Moonshine models are under a non-commercial licence and are not listed.",
|
|
108
|
+
provider: 'usefulsensors',
|
|
107
109
|
task: 'stt',
|
|
108
110
|
engine: 'transformers.js',
|
|
109
111
|
dtype: 'q8',
|
|
@@ -165,6 +167,7 @@ export const SPEECH_MODEL_CATALOGUE = {
|
|
|
165
167
|
version: '0.0.1',
|
|
166
168
|
name: 'Moonshine Tiny (English)',
|
|
167
169
|
description: "Speech to text in the browser, in English: Useful Sensors' Moonshine Tiny (27M parameters), its ONNX export quantized to 8 bits, run by transformers.js. One of the English models whose weights are MIT; the legacy non-English Moonshine models are under a non-commercial licence and are not listed.",
|
|
170
|
+
provider: 'usefulsensors',
|
|
168
171
|
task: 'stt',
|
|
169
172
|
engine: 'transformers.js',
|
|
170
173
|
dtype: 'q8',
|
|
@@ -226,6 +229,7 @@ export const SPEECH_MODEL_CATALOGUE = {
|
|
|
226
229
|
version: '0.0.1',
|
|
227
230
|
name: 'Silero VAD',
|
|
228
231
|
description: 'Where speech starts and ends in what the microphone heard, in the browser: Silero VAD (about 2 MB), the build @ricky0123/vad-web 0.0.31 ships and runs on onnxruntime-web. Push-to-talk keeps the speech it finds and drops the rest.',
|
|
232
|
+
provider: 'snakers4',
|
|
229
233
|
task: 'vad',
|
|
230
234
|
engine: 'vad-web',
|
|
231
235
|
dtype: 'fp32',
|
|
@@ -252,6 +256,7 @@ export const SPEECH_MODEL_CATALOGUE = {
|
|
|
252
256
|
version: '0.0.1',
|
|
253
257
|
name: 'Whisper Base',
|
|
254
258
|
description: "Speech to text in the browser for the languages Moonshine's MIT models do not speak, French first: OpenAI's Whisper base (74M parameters, 99 languages), its ONNX export quantized to 8 bits, run by transformers.js. A clip at a time.",
|
|
259
|
+
provider: 'openai',
|
|
255
260
|
task: 'stt',
|
|
256
261
|
engine: 'transformers.js',
|
|
257
262
|
dtype: 'q8',
|
package/lib/voice/hearing.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @module voice/hearing
|
|
13
13
|
*/
|
|
14
14
|
import { SPEECH_MODEL_CATALOGUE, transcriberFor } from '../specs/voices';
|
|
15
|
-
import { pinnedBytes, pinnedFetch, downloadSize } from './pinned';
|
|
15
|
+
import { pinnedBytes, pinnedFetch, downloadSize, modelFolder } from './pinned';
|
|
16
16
|
import { HEARING_RATE } from './capture';
|
|
17
17
|
/** A language no device model hears. */
|
|
18
18
|
export class NotHeardHere extends Error {
|
|
@@ -84,7 +84,9 @@ export class DeviceHearing {
|
|
|
84
84
|
}
|
|
85
85
|
const total = downloadSize(model.id);
|
|
86
86
|
const loaded = new Map();
|
|
87
|
-
const recognizer = await transformers.pipeline('automatic-speech-recognition',
|
|
87
|
+
const recognizer = await transformers.pipeline('automatic-speech-recognition',
|
|
88
|
+
// Read at `<origin>/<provider>/<model id>/`, as the store keeps it.
|
|
89
|
+
modelFolder(model.id), {
|
|
88
90
|
dtype: model.dtype,
|
|
89
91
|
device: 'wasm',
|
|
90
92
|
progress_callback: (info) => {
|
|
@@ -106,7 +108,7 @@ export class DeviceHearing {
|
|
|
106
108
|
activity() {
|
|
107
109
|
if (!this.vad) {
|
|
108
110
|
const file = SPEECH_MODEL_CATALOGUE['silero-vad'].files[0].path;
|
|
109
|
-
const url = `${this.modelsUrl.replace(/\/+$/, '')}
|
|
111
|
+
const url = `${this.modelsUrl.replace(/\/+$/, '')}/${modelFolder('silero-vad')}/${file}`;
|
|
110
112
|
this.vad = this.engines.vad().then(module => module.NonRealTimeVAD.new({
|
|
111
113
|
modelURL: url,
|
|
112
114
|
modelFetcher: path => pinnedBytes(this.modelsUrl, path),
|
package/lib/voice/pinned.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The browser's models, from Datalayer's origin and as pinned (VOICE.md
|
|
3
3
|
* VO-49, VO-03): every file a model is made of is fetched from the models'
|
|
4
|
-
* origin, laid out as the pinned store is (`<model id>/<path>`), and its
|
|
4
|
+
* origin, laid out as the pinned store is (`<provider>/<model id>/<path>`), and its
|
|
5
5
|
* SHA-256 checked against the catalogue before anything reads it. A file
|
|
6
6
|
* that is not the one pinned is refused; nothing is asked of another origin.
|
|
7
7
|
*
|
|
@@ -24,5 +24,7 @@ export declare function sha256Hex(bytes: ArrayBuffer): Promise<string>;
|
|
|
24
24
|
export declare function pinnedFetch(base: string, fetcher?: typeof fetch): (input: string | URL, init?: RequestInit) => Promise<Response>;
|
|
25
25
|
/** A model's file as bytes, checked against its pin. */
|
|
26
26
|
export declare function pinnedBytes(base: string, url: string, fetcher?: typeof fetch): Promise<ArrayBuffer>;
|
|
27
|
+
/** Where a model's files are, under the models' origin: `<provider>/<model id>` (VO-48). */
|
|
28
|
+
export declare function modelFolder(modelId: string): string;
|
|
27
29
|
/** What a first use downloads for a model, in bytes. */
|
|
28
30
|
export declare function downloadSize(modelId: string): number;
|
package/lib/voice/pinned.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* The browser's models, from Datalayer's origin and as pinned (VOICE.md
|
|
7
7
|
* VO-49, VO-03): every file a model is made of is fetched from the models'
|
|
8
|
-
* origin, laid out as the pinned store is (`<model id>/<path>`), and its
|
|
8
|
+
* origin, laid out as the pinned store is (`<provider>/<model id>/<path>`), and its
|
|
9
9
|
* SHA-256 checked against the catalogue before anything reads it. A file
|
|
10
10
|
* that is not the one pinned is refused; nothing is asked of another origin.
|
|
11
11
|
*
|
|
@@ -21,9 +21,15 @@ export function pinOf(base, url) {
|
|
|
21
21
|
if (!url.startsWith(root)) {
|
|
22
22
|
return undefined;
|
|
23
23
|
}
|
|
24
|
-
const [model, ...rest] = url
|
|
24
|
+
const [provider, model, ...rest] = url
|
|
25
|
+
.slice(root.length)
|
|
26
|
+
.split('?')[0]
|
|
27
|
+
.split('/');
|
|
25
28
|
const path = rest.join('/');
|
|
26
|
-
|
|
29
|
+
const spec = SPEECH_MODEL_CATALOGUE[model];
|
|
30
|
+
return spec?.provider === provider
|
|
31
|
+
? spec.files.find(file => file.path === path)
|
|
32
|
+
: undefined;
|
|
27
33
|
}
|
|
28
34
|
/** The SHA-256 of some bytes, in hex. */
|
|
29
35
|
export async function sha256Hex(bytes) {
|
|
@@ -69,6 +75,14 @@ export async function pinnedBytes(base, url, fetcher) {
|
|
|
69
75
|
}
|
|
70
76
|
return answered.arrayBuffer();
|
|
71
77
|
}
|
|
78
|
+
/** Where a model's files are, under the models' origin: `<provider>/<model id>` (VO-48). */
|
|
79
|
+
export function modelFolder(modelId) {
|
|
80
|
+
const model = SPEECH_MODEL_CATALOGUE[modelId];
|
|
81
|
+
if (!model) {
|
|
82
|
+
throw new PinRefused(`The voice catalogue has no speech model ${modelId}.`);
|
|
83
|
+
}
|
|
84
|
+
return `${model.provider}/${model.id}`;
|
|
85
|
+
}
|
|
72
86
|
/** What a first use downloads for a model, in bytes. */
|
|
73
87
|
export function downloadSize(modelId) {
|
|
74
88
|
return (SPEECH_MODEL_CATALOGUE[modelId]?.files ?? []).reduce((total, file) => total + file.size, 0);
|
package/package.json
CHANGED
|
@@ -46,6 +46,7 @@ def _model(model: Any) -> dict[str, Any]:
|
|
|
46
46
|
"version": model.version,
|
|
47
47
|
"name": model.name,
|
|
48
48
|
"description": " ".join(model.description.split()),
|
|
49
|
+
"provider": model.provider,
|
|
49
50
|
"task": model.task,
|
|
50
51
|
"engine": model.engine,
|
|
51
52
|
"dtype": model.dtype,
|
|
@@ -195,6 +196,8 @@ def generate_typescript_code(
|
|
|
195
196
|
" name: string;",
|
|
196
197
|
" /** What it is for, in a sentence or two. */",
|
|
197
198
|
" description: string;",
|
|
199
|
+
" /** Who published it: the folder Datalayer's storage keeps it under, `<provider>/<id>/<path>`. */",
|
|
200
|
+
" provider: string;",
|
|
198
201
|
" task: 'stt' | 'tts' | 'vad';",
|
|
199
202
|
" engine: string;",
|
|
200
203
|
" dtype: string;",
|
package/scripts/voice/measure.py
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
"""Measure the speech models on the recorded fixtures (VOICE.md VO-05, VO-51, VO-52).
|
|
6
6
|
|
|
7
|
-
python scripts/voice/measure.py --store ~/.cache/
|
|
7
|
+
python scripts/voice/measure.py --store ~/.cache/voice-work/store
|
|
8
8
|
|
|
9
9
|
Writes ``tests/voice/measured/*.json``, which ``test_voice_wer.py`` checks
|
|
10
10
|
against ``tests/voice/baselines.json``:
|
|
@@ -136,7 +136,7 @@ def main() -> int:
|
|
|
136
136
|
print(f"{model['id']} on {len(clips)} {language} clips", flush=True)
|
|
137
137
|
heard = transcribe(
|
|
138
138
|
args.store,
|
|
139
|
-
model[
|
|
139
|
+
f"{model['provider']}/{model['id']}",
|
|
140
140
|
language,
|
|
141
141
|
[wavs[c["id"]] for c in clips],
|
|
142
142
|
env,
|
|
@@ -168,7 +168,8 @@ def main() -> int:
|
|
|
168
168
|
# --- text to speech, and what the device hears of it -----------------------
|
|
169
169
|
from kokoro_onnx import Kokoro
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
kokoro_spec = voices.SPEECH_MODEL_CATALOGUE["kokoro-82m"]
|
|
172
|
+
kokoro_dir = args.store / kokoro_spec["provider"] / "kokoro-82m"
|
|
172
173
|
files = {
|
|
173
174
|
item["path"]
|
|
174
175
|
for item in voices.SPEECH_MODEL_CATALOGUE["kokoro-82m"]["files"]
|
|
@@ -206,7 +207,11 @@ def main() -> int:
|
|
|
206
207
|
]
|
|
207
208
|
items = [item for item in spoken if item["language"] == base]
|
|
208
209
|
heard = transcribe(
|
|
209
|
-
args.store,
|
|
210
|
+
args.store,
|
|
211
|
+
f"{model['provider']}/{model['id']}",
|
|
212
|
+
base,
|
|
213
|
+
[item["wav"] for item in items],
|
|
214
|
+
env,
|
|
210
215
|
)
|
|
211
216
|
for item, result in zip(items, heard["results"]):
|
|
212
217
|
round_trips.append(
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
"""The pinned-file store of the speech models (VOICE.md VO-03, VO-48, VO-49).
|
|
6
6
|
|
|
7
7
|
Every file of every speech model of the catalogue, laid out as
|
|
8
|
-
``<store>/<model id>/<path>``
|
|
8
|
+
``<store>/<provider>/<model id>/<path>`` — as Datalayer's storage keeps them,
|
|
9
|
+
``s3://datalayer-models-speech`` behind ``https://models-speech.datalayer.tech`` — and checked against the SHA-256 and the size
|
|
9
10
|
the catalogue pins. The store is filled **once**, from where each model was
|
|
10
11
|
published, and then copied to Datalayer's storage; the browser and the speech
|
|
11
12
|
service read it from there and never from a third party's hub.
|
|
12
13
|
|
|
13
|
-
python scripts/voice/pin_store.py --store ~/.cache/
|
|
14
|
-
python scripts/voice/pin_store.py --store ~/.cache/
|
|
14
|
+
python scripts/voice/pin_store.py --store ~/.cache/voice-work/store [--from DIR]
|
|
15
|
+
python scripts/voice/pin_store.py --store ~/.cache/voice-work/store --verify
|
|
15
16
|
|
|
16
17
|
``--from`` takes files already downloaded (any layout) whose hash matches,
|
|
17
18
|
instead of downloading them again. ``--verify`` downloads nothing and fails
|
|
@@ -102,6 +103,11 @@ def _download(url: str, target: Path) -> None:
|
|
|
102
103
|
stream.write(block)
|
|
103
104
|
|
|
104
105
|
|
|
106
|
+
def folder_of(model: Dict[str, Any]) -> str:
|
|
107
|
+
"""Where a model's files are kept: `<provider>/<model id>`, as Datalayer's storage keeps them (VO-48)."""
|
|
108
|
+
return f"{model['provider']}/{model['id']}"
|
|
109
|
+
|
|
110
|
+
|
|
105
111
|
def files() -> Iterator[tuple[Dict[str, Any], Dict[str, Any]]]:
|
|
106
112
|
for model in SPEECH_MODEL_CATALOGUE.values():
|
|
107
113
|
for item in model["files"]:
|
|
@@ -117,7 +123,7 @@ def main() -> int:
|
|
|
117
123
|
problems = []
|
|
118
124
|
total = 0
|
|
119
125
|
for model, item in files():
|
|
120
|
-
target = args.store / model
|
|
126
|
+
target = args.store / folder_of(model) / item["path"]
|
|
121
127
|
total += item["size"]
|
|
122
128
|
if (
|
|
123
129
|
target.is_file()
|
|
@@ -127,7 +133,7 @@ def main() -> int:
|
|
|
127
133
|
continue
|
|
128
134
|
if args.verify:
|
|
129
135
|
problems.append(
|
|
130
|
-
f"{model
|
|
136
|
+
f"{folder_of(model)}/{item['path']} is missing or does not match its pin"
|
|
131
137
|
)
|
|
132
138
|
continue
|
|
133
139
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
"""Serve the pinned store to a page on this machine, as Datalayer's origin serves it (VOICE.md VO-49).
|
|
6
6
|
|
|
7
|
-
python scripts/voice/serve_store.py --store ~/.cache/
|
|
7
|
+
python scripts/voice/serve_store.py --store ~/.cache/voice-work/store [--port 8770]
|
|
8
8
|
|
|
9
|
-
The browser's models at ``/<model id>/<path>`` and onnxruntime-web's own
|
|
9
|
+
The browser's models at ``/<provider>/<model id>/<path>`` and onnxruntime-web's own
|
|
10
10
|
files at ``/onnxruntime-web/<version>/``, from the onnxruntime-web the page
|
|
11
11
|
bundles (``--node-modules`` when it is not this checkout's), with the CORS
|
|
12
12
|
headers a page on another port needs. For a local run only: in production
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import{E as N,eN as fo,r as o,j as t,eO as po,eP as mo,b_ as Cn,B as f,H as dt,T as H,c as G,cu as Ot,eu as Nt,eQ as ae,co as ut,e as go,eR as ho,eS as bo,e3 as xo,eT as So,aH as vo,dX as Un,dV as yo,dY as Bt,eU as wo,eV as Co,eW as jo,eX as ko,eY as jn,eZ as Eo,e_ as Io,e$ as To,d3 as Ro,a_ as Ao,f0 as Po,f1 as Mo,f2 as $o,f3 as Oo,f4 as Uo,f5 as Fo,x as Ut,f6 as Lo,f7 as _o,f8 as zo,f9 as No,fa as Bo,fb as Vo,fc as Ho,fd as Wo,fe as Do,ff as Go,fg as Ko,fh as Yo,fi as qo,fj as Jo,fk as Qo,fl as Xo,fm as Zo,fn as es,fo as ts,fp as ns,fq as Ge,fr as os,fs as ss,ft as as,fu as is,fv as kn,fw as rs,fx as Pe,fy as ls,fz as cs,a$ as ft,fA as ds,fB as us,fC as En,fD as fs,fE as ps,eC as ms,fF as Ft,fG as ve,fH as gs,fI as hs,fJ as In,fK as bs,fL as xs,fM as Ss,fN as vs,fO as ys,fP as ws,fQ as Cs,fR as js,fS as ks,fT as pt,fU as Es,fV as Is,I as Ts,fW as Rs,fX as As,fY as Tn,fZ as Ps,f_ as Ms,f$ as $s,g0 as Vt,g1 as Os,g2 as Us,ek as Lt,g3 as Fs,g4 as Ls}from"../datalayer-app-main.js";import{S as _s,E as zs,a as Ns}from"./SignInIcon-4HkE48mS.js";import{F as Bs,a as Vs,b as Hs}from"./LinkedInGreyIcon-BoWXE-HS.js";function Fn(){const n=N(fo);return o.useMemo(()=>n.map(s=>s.value),[n])}const _t={github:{name:"github",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/github/callback"},google:{name:"google",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/google/callback"},linkedin:{name:"linkedin",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/linkedin/callback"}},Rn=()=>{if(typeof document>"u")return"";const n=document.getElementById("datalayer-config-data");if(!n?.textContent)return"";try{const s=JSON.parse(n.textContent);return String(s?.iamUrl||"").replace(/\/$/,"")}catch{return""}},Ws=(n,s="Unable to start social sign-in.")=>{if(n instanceof Error&&n.message)return n.message;if(typeof n=="string"&&n.trim())return n;if(n&&typeof n=="object"&&"message"in n){const c=n.message;if(typeof c=="string"&&c.trim())return c}return s},Ds=So`
|
|
2
|
-
.signin-input-theme-scope input:-webkit-autofill,
|
|
3
|
-
.signin-input-theme-scope input:-webkit-autofill:hover,
|
|
4
|
-
.signin-input-theme-scope input:-webkit-autofill:focus,
|
|
5
|
-
.signin-input-theme-scope input:-webkit-autofill:active,
|
|
6
|
-
.signin-input-theme-scope input:-webkit-autofill:disabled,
|
|
7
|
-
.signin-input-theme-scope textarea:-webkit-autofill,
|
|
8
|
-
.signin-input-theme-scope textarea:-webkit-autofill:hover,
|
|
9
|
-
.signin-input-theme-scope textarea:-webkit-autofill:focus,
|
|
10
|
-
.signin-input-theme-scope textarea:-webkit-autofill:active,
|
|
11
|
-
.signin-input-theme-scope textarea:-webkit-autofill:disabled {
|
|
12
|
-
-webkit-text-fill-color: var(--fgColor-default) !important;
|
|
13
|
-
caret-color: var(--fgColor-default) !important;
|
|
14
|
-
-webkit-box-shadow: 0 0 0 1000px var(--bgColor-default) inset !important;
|
|
15
|
-
box-shadow: 0 0 0 1000px var(--bgColor-default) inset !important;
|
|
16
|
-
background-color: var(--bgColor-default) !important;
|
|
17
|
-
transition: background-color 9999s ease-in-out 0s !important;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.signin-input-theme-scope input:disabled,
|
|
21
|
-
.signin-input-theme-scope textarea:disabled {
|
|
22
|
-
-webkit-text-fill-color: var(--fgColor-muted) !important;
|
|
23
|
-
-webkit-box-shadow: 0 0 0 1000px var(--bgColor-default) inset !important;
|
|
24
|
-
box-shadow: 0 0 0 1000px var(--bgColor-default) inset !important;
|
|
25
|
-
background-color: var(--bgColor-default) !important;
|
|
26
|
-
opacity: 1 !important;
|
|
27
|
-
}
|
|
28
|
-
`,Gs=({onSignIn:n,onApiKeySignIn:s,loginUrl:c,name:a,title:d="Datalayer OTEL",description:b="Sign in to access the observability dashboard.",icon:S,leadingIcon:w=t.jsx(xo,{size:24}),github:p=!1,google:K=!1,linkedin:B=!1,apiKey:Ke=!1,signUp:F=!0,socialSignInNavigationTarget:Z,asDoc:v=!1,fillHeight:I=!0,hideHero:ee=!1,calloutTitle:Me,calloutDescription:Ye,passwordToggleLabel:ie="Sign in with a password",signUpTitle:Ht="Don't have an account?",signUpDescription:Y="Create a free Datalayer account with your email address.",signUpLabel:mt="Sign up with email",signUpHref:$e="https://datalayer.ai/signup",onSignUp:V,forgotPasswordHref:q="/password",forgotPasswordLabel:Oe="Forgot password?",showForgotPassword:gt=!0,socialButtonMarginTop:x=3,actionButtonMaxWidth:J=320})=>{const te=v&&!ee,qe=a??(v&&d==="Datalayer OTEL"?"Datalayer Sign In":d),ht=S??(v?t.jsx(_s,{size:24}):w),L=o.useMemo(()=>{if(c)return c;const i=Rn();return i?`${i}/api/iam/v1/login`:"/api/iam/v1/login"},[c]),[W,ye]=o.useState(""),[re,bt]=o.useState(""),[Je,le]=o.useState(!1),[ce,Qe]=o.useState(!1),[j,we]=o.useState(!1),[de,Ce]=o.useState(!1),[Ue,Xe]=o.useState(null),[_,je]=o.useState(null),[ne,Ze]=o.useState(""),[ue,et]=o.useState(null),[Fe,M]=o.useState(null),{enqueueToast:fe}=po(),[pe,E]=o.useState(!1),[Q,oe]=o.useState(""),D=o.useRef(null),Le=o.useCallback(i=>mo()?Cn.URLExt.join(Cn.PageConfig.getBaseUrl(),i.oauth2CallbackServerRoute):`${window.location.protocol}//${window.location.hostname}${window.location.port?`:${window.location.port}`:""}${i.oauth2CallbackUIRoute}`,[]),me=o.useMemo(()=>{if(typeof window>"u")return"/";const i=`${window.location.pathname}${window.location.search}${window.location.hash}`;return i.startsWith("/")?i:"/"},[]),ke=o.useCallback(async i=>{if(!de){M(null),Xe(i.name),Ce(!0);try{const g=Rn(),m=new URLSearchParams({provider:i.name,callback_uri:Le(i)}),R=Z===void 0?void 0:String(Z||"").trim(),y=R===void 0?me&&me!=="/"?me:void 0:R&&R.startsWith("/")&&!R.startsWith("//")?R:void 0;y&&m.set("post_auth_redirect",y);const ze=`${g||""}/api/iam/v1/oauth2/authz/url?${m.toString()}`,k=await fetch(ze),se=await k.json(),Ne=se?.autorization_url;if(!k.ok||!Ne)throw new Error(se?.message||"Unable to start social sign-in.");window.location.assign(Ne)}catch(g){const m=Ws(g);M(m),fe(m,{variant:"error"}),Xe(null),Ce(!1)}}},[Le,me,fe,de,Z]);o.useEffect(()=>{pe&&D.current?.focus()},[pe]);const $=o.useCallback(()=>{E(!1),oe("")},[]),xt=o.useCallback(()=>{!Q.trim()||!s||(s(Q.trim()),$())},[Q,s,$]),St=o.useCallback(()=>{if(V){V();return}window.location.assign($e)},[V,$e]),vt=o.useCallback(()=>{if(q){if(q.startsWith("http://")||q.startsWith("https://")){window.open(q,"_blank","noopener,noreferrer");return}window.location.assign(q)}},[q]),_e=o.useCallback(async()=>{if(!(v||!W||!re||j)){we(!0),M(null);try{const i=await fetch(L,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({handle:W,password:re})});if(!i.ok)throw new Error(`HTTP ${i.status}`);const g=await i.json();if(g.success&&g.token){const m=String(g?.user?.id||g?.user?.uid||"").trim();if(!!g?.user?.mfaUrl&&m){je(m),et(g.token),M(null);return}n&&n(g.token,W)}else M(g.message||"Invalid username or password.")}catch(i){M(i instanceof Error?i.message:String(i))}finally{we(!1)}}},[v,W,re,j,L,n]),ge=o.useCallback(async()=>{if(!(v||j||!_||!ne.trim()||!ue)){we(!0),M(null);try{const i=new URL(L,window.location.origin),g=i.pathname.endsWith("/api/iam/v1/login")?i.href.replace(/\/api\/iam\/v1\/login$/,""):`${i.origin}`,m=await fetch(`${g}/api/iam/v1/users/${_}/mfa/validate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userUid:_,code:ne.trim()})}),R=await m.json();if(!m.ok||!R?.success)throw new Error(R?.message||"Failed to validate your MFA code.");n&&n(ue,W)}catch(i){const g=i instanceof Error?i.message:String(i);M(g),fe(g,{variant:"error"})}finally{we(!1)}}},[v,fe,W,j,L,ne,ue,_,n]),Ee=o.useCallback(i=>{i.key==="Enter"&&(_?ge():_e())},[_,_e,ge]),he=de||j||v;return t.jsxs(f,{className:"signin-input-theme-scope",display:"flex",alignItems:ee||te||!I?"flex-start":"center",justifyContent:"center",minHeight:ee||te||!I?"auto":"100vh",bg:ee?"transparent":"canvas.default",color:"fg.default",py:ee?0:te?2:4,children:[t.jsx(Ds,{}),t.jsxs(f,{width:"100%",maxWidth:440,p:0,children:[!ee&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,mb:te?2:3,justifyContent:"center",children:[ht,t.jsx(dt,{sx:{fontSize:3},children:qe})]}),t.jsx(H,{as:"p",sx:{fontSize:1,color:"fg.muted",mb:te?2:3,textAlign:"center"},children:b})]}),(Me||Ye)&&t.jsxs(f,{mb:3,textAlign:"center",children:[Me&&t.jsx(dt,{as:"h3",sx:{fontSize:2,mb:1},children:Me}),Ye&&t.jsx(H,{sx:{color:"fg.muted",fontSize:1},children:Ye})]}),!_&&(p||K||B)&&t.jsxs(t.Fragment,{children:[p&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="github"?()=>t.jsx(Ot,{size:"small"}):Bs,disabled:he,onClick:()=>ke(_t.github),sx:{mt:x,maxWidth:J,mx:"auto"},children:"Sign in with GitHub"}),K&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="google"?()=>t.jsx(Ot,{size:"small"}):Vs,disabled:he,onClick:()=>ke(_t.google),sx:{mt:x,maxWidth:J,mx:"auto"},children:"Sign in with Google"}),B&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="linkedin"?()=>t.jsx(Ot,{size:"small"}):Hs,disabled:he,onClick:()=>ke(_t.linkedin),sx:{mt:x,maxWidth:J,mx:"auto"},children:"Sign in with LinkedIn"})]}),!_&&!Je&&t.jsx(f,{mt:3,display:"flex",justifyContent:"center",children:t.jsx(G,{leadingVisual:Nt,size:"large",block:!0,disabled:v||j||de,onClick:()=>le(!0),sx:{maxWidth:J,mx:"auto"},children:ie})}),!_&&Je&&t.jsxs(f,{mt:4,children:[t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Username"}),t.jsx(ut,{autoFocus:!0,block:!0,placeholder:"Your username",value:W,disabled:j||v,onChange:i=>ye(i.target.value),onKeyDown:Ee})]}),t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Password"}),t.jsx(ut,{block:!0,placeholder:"Your password",type:ce?"text":"password",value:re,disabled:j||v,onChange:i=>bt(i.target.value),onKeyDown:Ee,trailingAction:t.jsx(ut.Action,{onClick:()=>Qe(!ce),disabled:j||v,icon:ce?zs:Ns,"aria-label":ce?"Hide password":"Show password",sx:{color:"var(--fgColor-muted)"}})})]}),t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"space-between",mt:3,children:[t.jsx(G,{variant:"primary",disabled:j||v||!W||!re,onClick:_e,children:j?"Signing in…":"Sign In"}),gt&&t.jsx(go,{as:"button",sx:{fontSize:1,cursor:v?"not-allowed":"pointer",background:"none",border:"none",opacity:v?.6:1},onClick:()=>{v||j||vt()},children:Oe})]})]}),_&&t.jsxs(t.Fragment,{children:[t.jsxs(ae,{required:!0,sx:{mb:3,mt:2},children:[t.jsx(ae.Label,{children:"MFA Code"}),t.jsx(ut,{autoFocus:!0,block:!0,placeholder:"Your MFA code",value:ne,disabled:j||v,onChange:i=>Ze(i.target.value),onKeyDown:Ee})]}),t.jsx(G,{variant:"primary",block:!0,disabled:j||v||!ne.trim(),onClick:ge,sx:{maxWidth:J,mx:"auto"},children:j?"Validating…":"Validate MFA Code"})]}),Fe&&t.jsx(H,{sx:{color:"danger.fg",fontSize:1,mt:3,display:"block"},children:Fe}),F&&t.jsxs(f,{mt:4,pt:4,textAlign:"center",borderTop:"1px solid",borderColor:"border.muted",children:[t.jsx(dt,{as:"h3",sx:{fontSize:2,mb:2},children:Ht}),t.jsx(H,{as:"p",sx:{color:"fg.muted",fontSize:1,mb:3},children:Y}),t.jsx(f,{display:"flex",justifyContent:"center",children:t.jsx(G,{variant:"primary",size:"large",leadingVisual:ho,disabled:v||j,onClick:St,children:mt})})]}),Ke&&s&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,my:3,children:[t.jsx(f,{flex:1,height:"1px",bg:"border.default"}),t.jsx(H,{sx:{fontSize:0,color:"fg.muted"},children:"or"}),t.jsx(f,{flex:1,height:"1px",bg:"border.default"})]}),t.jsx(G,{block:!0,leadingVisual:Nt,disabled:v||j||de,onClick:()=>E(!0),sx:{maxWidth:J,mx:"auto"},children:"Sign in with an API Key"}),pe&&t.jsx(f,{role:"dialog","aria-modal":"true","aria-labelledby":"signin-api-key-title",onKeyDown:i=>{i.key==="Escape"&&$()},onClick:$,position:"fixed",inset:0,zIndex:200,p:3,bg:"canvas.backdrop",display:"flex",alignItems:"center",justifyContent:"center",children:t.jsxs(f,{as:"form",onClick:i=>i.stopPropagation(),onSubmit:i=>{i.preventDefault(),xt()},width:"min(560px, 100%)",p:3,borderRadius:2,border:"1px solid",borderColor:"border.default",bg:"canvas.overlay",color:"fg.default",boxShadow:"shadow.large",children:[t.jsx(dt,{id:"signin-api-key-title",sx:{fontSize:2,mb:2},children:"Enter your API Key"}),t.jsxs(ae,{required:!0,children:[t.jsx(ae.Label,{children:"API Key"}),t.jsx(bo,{block:!0,required:!0,autoFocus:!0,placeholder:"Paste your API key here",value:Q,onInput:i=>oe(i.currentTarget.value),ref:D})]}),t.jsxs(f,{mt:3,display:"flex",justifyContent:"flex-end",gap:2,children:[t.jsx(G,{type:"button",onClick:$,children:"Cancel"}),t.jsx(G,{type:"submit",variant:"primary",disabled:!Q.trim(),children:"Authenticate"})]})]})})]})]})]})};function Ks(n){const{agentId:s,instructions:c,model:a,frontendTools:d,inference:b,subagents:S,sharing:w,onSubagentEvent:p,modeEffect:K}=n;return{type:"browser-vercel-ai",endpoint:"",agentId:s,enableConfigQuery:!1,options:{instructions:c,model:a,frontendTools:d,inference:b,subagents:S,sharing:w,onSubagentEvent:p,modeEffect:K}}}const An=vo((n,s)=>({pending:void 0,suggest:(c,a)=>{const d=c.trim();d&&n({pending:{text:d,submit:a?.submit??!1,nonce:(s().pending?.nonce??0)+1}})},consume:()=>n({pending:void 0})}));function Ys({agentName:n,sandboxStillRuns:s=!1,temporary:c=!0,onSignedIn:a,onSignUp:d}){const{configuration:b}=Un(),S=o.useCallback(w=>{yo.getState().checkIAMToken(w),a?.()},[a]);return t.jsx(f,{height:"100%",minHeight:0,overflowY:"auto",bg:"canvas.default",px:4,py:4,children:t.jsxs(f,{maxWidth:440,mx:"auto",children:[t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"center",gap:2,color:"attention.fg",mb:2,children:[t.jsx(Nt,{size:20}),t.jsx(H,{sx:{fontSize:2,fontWeight:"semibold",color:"fg.default"},children:c?"This demo runs on a shared key":"Your key has expired"})]}),t.jsxs(H,{as:"p",sx:{fontSize:1,color:"fg.muted",textAlign:"center",mb:3},children:[c?`${n??"The agent"} has used the time this key allows. Sign in to point your own agent at it, use your own data, and drop the time limit.`:`${n??"The agent"} stopped because your session ran out.`,s?" Your notebook is still running in this page.":""]}),t.jsx(Gs,{hideHero:!0,fillHeight:!1,calloutTitle:"Sign in to keep going",github:!0,google:!0,linkedin:!0,socialSignInNavigationTarget:typeof window>"u"?void 0:`${window.location.pathname}${window.location.search}`,loginUrl:b?.iamUrl?`${b.iamUrl}/api/iam/v1/login`:void 0,onSignIn:S,onSignUp:d})]})})}const qs="https://r1.datalayer.run";function Js(n=!0){const{configuration:s}=Un(),c=Bt(w=>w.token),a=s?.aiInferenceUrl||qs,d=wo(a,n&&!c),b=c||d.token,S=o.useMemo(()=>({inferenceUrl:a,token:b||void 0}),[a,b]);return{inference:S,needsSignIn:Co(S),anonymous:d,inferenceUrl:a}}const Qs={name:"general-purpose",description:"A capable generalist for a task none of the specialists covers: research, reasoning, drafting, checking.",instructions:"You are a capable general-purpose assistant. Carry out the task you are given completely and report the result plainly, saying what you could not do."};function Pn(n){const s=n?.subagents;if(!s)return[];const c=(s.subagents??[]).map(a=>{const d=a.ref?jo(a.ref):void 0;return{name:a.name,description:a.description||d?.description||a.name,instructions:a.instructions??d?.systemPrompt,model:a.model??d?.model??s.defaultModel,icon:d?.icon}});return s.includeGeneralPurpose?[...c,Qs]:c}function Xs(n){return n.replace(/^datalayer_/,"").replace(/_lexical$/,"")}function Zs(n){const s=Xs(n);return/^executeCodeIn(Notebook|Document)$/.test(s)||/^(read|list)[A-Z]/.test(s)}function ea(n,s){return n.filter(c=>s?.has(c.name)||Zs(c.name))}function ta(n,s){const c=a=>s&&a.value.id===`${s}-tools`?0:a.value.id==="notebook-tools"?1:2;return n.map((a,d)=>({entry:a,index:d,rank:c(a)})).sort((a,d)=>a.rank-d.rank||a.index-d.index).map(a=>a.entry)}function na(n,s,c){if(!c||!n.endsWith("-tools"))return!1;const a=n.slice(0,-6);return s.has(a)&&a!==c}const oa={type:"object",properties:{}};function sa(n,s){const c=new Set(n.toolset);return n.commands.filter(a=>c.has(a.name)).map(a=>({name:a.name,description:a.description,parameters:a.parameters??oa,location:"frontend",handler:async d=>{if(!s)throw new Error(`${a.name}: the ${n.plugin??n.id} plugin is not mounted on this page.`);const b=Object.keys(d??{}).length>0?d:void 0,S=await s.executeCommand(a.command,b);return S===void 0?{ok:!0,command:a.command,argument:b}:S}}))}function Ln(n,s){return n.flatMap(c=>sa(c,s))}function aa(){const n=ko(),s=Fn();return o.useMemo(()=>Ln(s,n),[s,n])}const Mn={opening:"Opening your conversation…",notOpened:n=>`Your conversation could not be opened, so this is a new one: ${n}`};function ia(n){const s=n?.app_instance;if(!s||typeof s!="object")return"";const c=s.deployment_uid;return typeof c=="string"?c.trim():""}function ra(n,s,c){return n||!s?n:{id:c,messages:[]}}function la(n){let s;for(const c of n.split(/\r?\n\r?\n/)){const a=c.split(/\r?\n/).filter(d=>d.startsWith("data:")).map(d=>d.slice(5).trim()).join("");if(a)try{const d=JSON.parse(a);d.type==="MESSAGES_SNAPSHOT"&&Array.isArray(d.messages)&&(s=d.messages)}catch{}}return s}async function $n(n){try{const s=await n.json();if(typeof s.detail=="string"&&s.detail)return s.detail}catch{}return`${n.status}`}async function ca({agentBaseUrl:n,agentId:s,uid:c,token:a,fetcher:d=fetch}){const b=`${n.replace(/\/+$/,"")}/api/v1/apps/sessions/${encodeURIComponent(c)}`,S=a?{Authorization:`Bearer ${a}`}:{},w=await d(`${b}/messages`,{headers:S});if(w.ok){const B=await w.json();return jn(B.messages)}if(w.status!==404)throw new Error(await $n(w));const p=await d(`${b}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...S},body:JSON.stringify({agent:s})});if(!p.ok)throw new Error(await $n(p));const K=la(await p.text());if(!K)throw new Error(`The runtime said nothing of session ${c}.`);return jn(K)}const da="var(--theme-accent)";function _n({face:n,size:s}){return typeof n=="string"?t.jsx(Eo,{emoji:n,size:s,label:""}):t.jsx(t.Fragment,{children:n})}function ua({face:n,size:s,state:c}){const a=c==="thinking"||c==="working",d=c==="paused";return t.jsxs(f,{as:"span","aria-hidden":!0,"data-presence":c,position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",width:s+8,height:s+8,flexShrink:0,fontSize:s,lineHeight:1,children:[t.jsx(f,{as:"span",position:"absolute",inset:0,borderRadius:"50%",boxShadow:d?"none":`0 0 0 2px ${da}`,border:d?"2px dashed":"none",borderColor:"border.default",opacity:a||c==="waiting"||d?.9:0,transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",animation:a?"loopPresenceBreath 1.8s ease-in-out infinite":"none",reducedMotion:{animation:"none"},sx:{"@keyframes loopPresenceBreath":{"0%, 100%":{transform:"scale(0.92)",opacity:.35},"50%":{transform:"scale(1.06)",opacity:.9}}}}),t.jsx(f,{as:"span",display:"inline-flex",opacity:d?.55:1,filter:d?"grayscale(0.6)":"none",transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",children:t.jsx(_n,{face:n,size:s})})]})}function fa({state:n}){return t.jsx(H,{role:"status","aria-live":"polite","data-presence-line":n,sx:{fontSize:0,color:n==="waiting"?"fg.default":"fg.muted",fontWeight:n==="waiting"?"semibold":"normal",whiteSpace:"nowrap",flexShrink:0},children:Io[n]})}const pa=Vt(void 0),ma=Vt(""),ga=Vt({}),X="",ha=1400,On=parseInt(Fs["--loop-face-large"],10);function ya({workspace:n}){const s=To(),c=Ro(),a=o.useRef(null),{setViewControls:d}=n,[b,S]=o.useState(null),w=Ao(),p=w.getConfig(Po),K=p?.placeholder||s.placeholder,B=p?.defaultSurface??"notebook",Ke=w.getConfig(Mo),[F,Z]=o.useState(X),v=o.useRef(!1),I=N($o),ee=N(Oo),Me=N(Uo),ie=N(Fo)[0]?.value,Y=Ut(ie?.promptStance??pa)??ie?.prompt,mt=N(Lo),$e=_o(mt[0]?.value),V=o.useRef($e);V.current=$e;const q=o.useRef(""),Oe=N(zo),gt=o.useMemo(()=>No(()=>Oe.reduce((e,r)=>({...e,...r.value.extras.value}),{})),[Oe]),x=Ut(Oe.length>0?gt:ga),J=o.useRef(new Set),te=Bo(Os,n),qe=!te.allowed,ht=qe?te.reason??"Chat is unavailable for this sandbox":void 0,[L,W]=o.useState(!1),[ye,re]=o.useState(!1),[bt,Je]=o.useState({open:!1,pendingApproval:!1}),le=Vo(L,bt,p?.presence?.paused===!0),ce=p?.presence?.onPresence;o.useEffect(()=>{ce?.(le),V.current?.setPresence(le)},[ce,le]);const Qe=o.useRef(p?.presence?.onSaying);Qe.current=p?.presence?.onSaying;const j=o.useRef({answering:!1}),we=o.useCallback(e=>{a.current=e,re(!!e)},[]),de=o.useCallback(e=>{const{open:r,pendingApproval:l}=Ho(e);Je(Se=>Se.open===r&&Se.pendingApproval===l?Se:{open:r,pendingApproval:l});const h={saying:Do(e),answering:Wo(e)},u=j.current;(u.saying?.id!==h.saying?.id||u.saying?.text!==h.saying?.text||u.answering!==h.answering)&&(j.current=h,Qe.current?.(h));const U=V.current;if(!U)return;U.items(e);const P=new Set(["complete","completed","done","error","failed","cancelled","canceled","rejected","denied","stopped"]),A={insertcell:"adding a cell",updatecell:"editing a cell",runcell:"running a cell",deletecells:"removing cells",readallcells:"reading the notebook",readcell:"reading a cell",executecode:"running code",insertblock:"adding a block",updateblock:"editing a block",runblock:"running a block",readdocument:"reading the document"};let C;for(let Se=e.length-1;Se>=0;Se-=1){const ct=e[Se];if(typeof ct.toolName=="string"&&ct.toolCallId){P.has(String(ct.status).toLowerCase())||(C=ct);break}}if(!C){U.activity(void 0);return}const $t=C.toolName.toLowerCase().replace(/^datalayer_/,"").replace(/_lexical$/,"").replace(/[^a-z]/g,""),uo=A[$t]??`using ${C.toolName}`;U.activity(`${q.current||"The agent"} is ${uo}…`)},[]),Ce=o.useRef(x);Ce.current=x;const Ue=o.useCallback(e=>{Yn(e),V.current?.usage(e),Ce.current.onUsage?.(e)},[]),Xe=o.useCallback(e=>{W(e),e||V.current?.end("done")},[]),_=o.useCallback(e=>{const r=V.current;if(!r)return;let l=-1;for(let u=e.length-1;u>=0;u-=1)if(e[u].role==="user"){l=u;break}const h=e.slice(l+1).filter(u=>u.role==="assistant").map(Go).filter(u=>u.trim().length>0).join(`
|
|
29
|
-
|
|
30
|
-
`);r.assistant(h)},[]),je=o.useRef([]),ne=o.useRef(!1),Ze=o.useRef(void 0),ue=o.useRef(void 0),et=N(Ko),Fe=o.useRef(et);Fe.current=et;const M=o.useCallback((e,r)=>{if(ue.current)return ue.current;const l=Yo(Fe.current.map(U=>U.value),r),h=l?.loop;if(ne.current&&h?.files&&h.files.length>0){const U=Ze.current;if(!U)return"A file is given to an application running on a runtime: run it on Datalayer or on your machine to give it one.";let P;try{P=h.files.map(A=>({file:Jo(String(A.name??"")),base64:qo(String(A.data_url??""))}))}catch(A){return A instanceof Error?A.message:String(A)}U.execute(Qo(P)).then(A=>{if(!A.success){S(`The files could not be put in the sandbox: ${A.error??"it failed"}.`);return}M(`${e}
|
|
31
|
-
|
|
32
|
-
${Xo(P.map(C=>C.file))}`,{...l,loop:Object.fromEntries(Object.entries(h).filter(([C])=>C!=="files"))})});return}V.current?.begin(e,a.current?.thread());const u=a.current?.send;if(!u){je.current.push([e,l]);return}u(e,l)},[]);o.useEffect(()=>{d(ye?{busy:L,stop:a.current?.stop,newChat:a.current?.newChat,send:M}:null)},[L,ye,d,M]),o.useEffect(()=>()=>d(null),[d]),o.useEffect(()=>n.prompts.subscribe(M),[n.prompts,M]),o.useEffect(()=>{if(!ye||je.current.length===0)return;const e=je.current.splice(0,je.current.length);for(const[r,l]of e)a.current?.send(r,l)},[ye]);const fe=o.useRef(!1),pe=o.useCallback(async e=>{S(null);const r=await Zo(Ce.current,e);if(r){r.sent?st(""):S(r.refused);return}fe.current||(fe.current=!0,Ke?.firstPromptHook?.());const l=await n.submit(e);if(!l.handled){S(l.reason??null);return}st(""),l.result?.content&&S(l.result.content)},[n,Ke?.firstPromptHook]),E=o.useMemo(()=>I.find(e=>e.value.surfaceId===F)?.value,[I,F]),Q=o.useCallback(e=>{v.current=!0,Z(e)},[]);o.useEffect(()=>es(Q),[Q]),o.useEffect(()=>{ts(I.map(e=>e.value.surfaceId))},[I]),o.useEffect(()=>{ns(F&&F!==X?F:Ls)},[F]);const oe=o.useMemo(()=>B===X||B==="none"?void 0:I.find(e=>e.value.surfaceId===B),[I,B]);o.useEffect(()=>{v.current||!oe||Ge(oe.value,n)&&Z(B)},[oe,n,B]);const[D,Le]=o.useState(null),me=o.useRef(null),ke=p?.fullScreenTopOffset??0,{fullScreen:$,usingApi:xt,toggle:St,topOffsetPx:vt}=os(me,{forceOverlay:!!ke,topOffset:ke}),[_e,ge]=o.useState(!1),Ee=o.useRef(!1);o.useEffect(()=>{!L||Ee.current||$||(Ee.current=!0,ge(!0))},[L,$]),o.useEffect(()=>{$&&ge(!1)},[$]),o.useEffect(()=>{E&&!Ge(E,n)&&(Le(E.surfaceId),Z(X))},[E,n]);const he=o.useMemo(()=>{if(D)return I.find(e=>e.value.surfaceId===D)?.value;if(!v.current&&F===X)return oe?.value},[I,D,F,oe]);o.useEffect(()=>{if(!D||F!==X)return;const e=I.find(r=>r.value.surfaceId===D);e&&Ge(e.value,n)&&(Le(null),Z(D))},[I,F,D,n]);const i=n.agentId?.trim()||"default",g=ss(n.sandbox.target??"local");ne.current=g;const m=as(),R=Ut(m?.selected??ma),y=m?.members.find(e=>e.id===R),yt=N(is)[0]?.value,ze=yt?.specId,k=kn(y?.specId??i)??(ze?kn(ze):void 0),se=y?void 0:yt,Ne=g&&!y?$s(ze,k):void 0;q.current=y?.name??k?.name??i;const Wt=N(rs),Dt=x.hiddenOpeners,Gt=x.hideOpeners,wt=x.openers,Ct=o.useMemo(()=>{if(Gt)return[];const e=new Set(Dt??[]),r=C=>e.size===0?C:C.filter($t=>!e.has($t.text));if(wt)return r(wt);const l=Wt.flatMap(C=>C.value.suggestions);if(l.length>0)return r(l);const h=r(k?.suggestions??[]),u=r(m?.team.suggestions??[]);if(u.length===0)return h;const U=new Set(u.map(C=>C.text)),P=m?.team.name??"Team",A=y?.name??k?.name??i;return[...u.map(C=>({...C,group:P})),...h.filter(C=>!U.has(C.text)).map(C=>({...C,group:A}))]},[Wt,m,k,y,i,Dt,Gt,wt]),tt=o.useMemo(()=>Ct.map(e=>({title:e.summary??e.text,message:e.message??e.text,group:e.group})),[Ct]),jt=Pe(k?.icon),z=p?.presence,zn=Pe(m?.team.icon),Kt=N(ls),nt=o.useMemo(()=>{const e=[],r=new Map,l=new Set,h=new Set(I.map(u=>u.value.surfaceId));for(const u of ta(Kt,E?.surfaceId)){if(na(u.value.id,h,E?.surfaceId))continue;let U;try{U=u.value.tools(n)}catch(P){console.warn(`[loop] frontend tools from '${u.plugin}' failed:`,P);continue}for(const P of U){const A=r.get(P.name);if(A){console.warn(`[loop] frontend tool '${P.name}' from '${u.plugin}' is shadowed by the one from '${A}'.`);continue}r.set(P.name,u.plugin),e.push(P),u.value.chatView&&l.add(P.name)}}for(const u of x.frontendTools??[])r.has(u.name)||(r.set(u.name,"chat-extras"),e.push(u),l.add(u.name));return E?e:ea(e,l)},[Kt,n.surfaceId,n.agentId,x.frontendTools,E?.surfaceId,I]),kt=aa(),Be=o.useMemo(()=>{if(kt.length===0)return nt;const e=new Set(nt.map(r=>r.name));return[...nt,...kt.filter(r=>!e.has(r.name))]},[nt,kt]),Yt=Fn(),Et=x.agentToolBundles,Nn=o.useMemo(()=>{const e=x.frontendTools??[];if(!Et?.length)return x.frontendTools;const r=Ln(Yt.filter(h=>Et.includes(h.id)),w),l=new Set(e.map(h=>h.name));return[...e,...r.filter(h=>!l.has(h.name))]},[x.frontendTools,Et,Yt,w]);Ze.current=g&&Be.some(e=>e.name===cs)?w.getOutput(ft)?.sandbox:void 0;const T=ds(n.sandbox,n.serverUrl),qt=N(us),Bn=o.useMemo(()=>qt.filter(e=>e.value.composer).map(e=>({name:e.value.name,description:e.value.description})),[qt]),Vn=o.useMemo(()=>{if(!m||!y)return Pn(k).map(l=>({name:l.name,description:l.description,icon:Pe(l.icon)}));const e=m.members.map(l=>({name:l.name,description:l.description,emoji:l.emoji,icon:Pe(l.icon),disabled:l.id===y.id,disabledReason:l.id===y.id?`You are already talking to ${l.name}`:void 0})),r=En(m.team,y.id).filter(l=>!m.members.some(h=>h.name===l.name)).map(l=>({name:l.name,description:l.description,icon:Pe(l.icon)}));return[...e,...r]},[m,y,k]),{inference:Jt,anonymous:Hn}=Js(g),Wn=Bt(e=>e.user),It=g&&Hn.status==="expired",Qt=!Wn,Ve=fs();ue.current=Ve.disabled?Ve.disableReason||"This conversation is closed here.":void 0;const Tt=T===void 0?ps(n.sandbox,s):void 0,ot=qe||It||!!Ne||!!Tt||Ve.disabled,Xt=It?Qt?s.demoKeyExpired:s.keyExpired:Ne??Tt??ht??(Ve.disabled?Ve.disableReason:void 0),[Zt,st]=o.useState(""),[Dn,en]=o.useState(),at=Dn??se?.model??k?.model??n.model??"",Ie=ms(),tn=o.useRef(Ie),nn=o.useRef(R),on=o.useRef(Ie);on.current=Ie,o.useEffect(()=>{nn.current!==R&&(nn.current=R,tn.current=on.current,en(void 0))},[R]);const Gn=Ie&&Ie!==tn.current?Ie:null,[Kn,Yn]=o.useState(),qn=Gn??Kn??null,Jn=Ft(ve.inpromptMenu),Qn=Ft(ve.promptAction),sn=Ft(ve.chatHeader),Xn=o.useMemo(()=>m?.members.map(e=>({id:e.id,name:e.name,description:e.description,icon:Pe(e.icon)}))??[],[m]),be=An(e=>e.pending),[an,Zn]=o.useState(0);o.useEffect(()=>gs(()=>Zn(e=>e+1)),[]),o.useEffect(()=>{be&&(st(be.text),An.getState().consume(),be.submit&&pe(be.text))},[be]);const rn=w.getConfig(ft)?.datalayerCreatePayload,xe=!!(se?.createPayload?.app_spec||rn?.app_spec),Rt=ia(rn),eo=Bt(e=>e.token),At=w.getConfig(ft)?.datalayerVisitors,to=hs(At),no=w.getConfig(ft)?.embedToken,He=At?to.token:no||eo,Te=!!(Rt||At);if(Te&&!xe)throw new Error("A deployment’s page runs its application: its host gave no app_spec.");const[ln]=o.useState(In),O=o.useMemo(()=>ra(p?.thread,Rt,ln),[p?.thread,Rt,ln]),[Re,cn]=o.useState(null),oo=!!(O?.fromRuntime&&Re?.given!==O.id);o.useEffect(()=>{if(!O?.fromRuntime||!xe||!T)return;let e=!0;return(async()=>{let r="";for(let l=0;l<4&&e;l+=1)try{const h=await ca({agentBaseUrl:T,agentId:i,uid:O.id,token:He});e&&cn({given:O.id,thread:{...O,fromRuntime:!1,messages:h}});return}catch(h){r=h instanceof Error?h.message:String(h),await new Promise(u=>setTimeout(u,1500))}e&&cn({given:O.id,thread:{id:In(),messages:[],onStarted:O.onStarted},said:Mn.notOpened(r)})})(),()=>{e=!1}},[O?.id,O?.fromRuntime,xe,T,i,He]);const dn=O?.fromRuntime?Re?.given===O.id?Re.thread:void 0:O,Pt=o.useMemo(()=>g?Ks({agentId:y?.specId??i,instructions:bs(k,se?.instructions),model:at||void 0,inference:Jt,frontendTools:Be,subagents:m&&y?En(m.team,y.id):Pn(k),sharing:m?.sharing,onSubagentEvent:e=>Us.getState().appendSubagentEvent(e),modeEffect:se?.modeEffect}):T!==void 0?{type:"ag-ui",endpoint:xe?`${T}/api/v1/apps/agents/${encodeURIComponent(i)}/ag-ui/`:`${T}/api/v1/ag-ui/${i}/`,...xe&&He?{authToken:He}:{},...xe?{uiSocket:`${T.replace(/^http/,"ws")}/api/v1/apps/ui`,uiFiles:`${T}/api/v1/apps/agents/${encodeURIComponent(i)}/files`,appSessions:`${T}/api/v1/apps/sessions`,...Te?{ownRoutesOnly:!0}:{}}:{},agentId:i,configEndpoint:`${T}/api/v1/configure`,enableConfigQuery:!0}:void 0,[i,g,Jt,y,Be,m,k,se,at,T,xe,He,Te]),it=xs(!g,Pt?.type==="ag-ui"?Pt.configEndpoint:void 0,void 0,i),We=Ss(),rt=vs(i),[un,fn]=o.useState(void 0),[so,ao]=o.useState(void 0);o.useEffect(()=>{if(g||T===void 0)return;let e=!1;return fetch(`${T}/api/v1/configure/models?agent_id=${encodeURIComponent(i)}`).then(r=>r.ok?r.json():null).then(r=>{e||(fn(r?ys(r):[]),ao(r?ws(r):void 0))}).catch(()=>{e||fn([])}),()=>{e=!0}},[T,i,g]);const io=o.useMemo(()=>Cs(un,()=>Object.values(js).filter(e=>e.available&&ks(e)).map(e=>({id:e.id,name:e.name,provider:e.provider}))),[un]),pn=o.useMemo(()=>{const e=it.data?.builtinTools??[],r=new Set(e.map(l=>l.name));return{runtime:e,frontend:Be.filter(l=>!r.has(l.name)).map(l=>({id:l.name,name:l.name}))}},[it.data?.builtinTools,Be]),mn=o.useMemo(()=>new Set((We.data?.skills??[]).filter(e=>e.status==="enabled"||e.status==="loaded").map(e=>e.id)),[We.data]),ro=o.useCallback(async e=>{if(Te)throw new Error("A deployment’s chat does not switch its runtime’s model.");en(e),!(g||T===void 0)&&await fetch(`${T}/api/v1/configure/inference/provider`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({model:e})}).catch(()=>{})},[T,g,Te]),gn=p?.promptPlacement==="bottom-chat",lo=p?.promptPlacement==="floating",Ae=p?.promptPlacement==="top",De=p?.hidePrompt===!0||x.hidePrompt===!0,co={onSend:()=>{pe(Zt)},input:Zt,setInput:st,focusTrigger:be||an?(be?.nonce??0)+an:void 0,placement:lo||Y==="floating"||Y==="floating-top"||Y==="floating-bottom"?"floating":"docked",floatingAnchor:Y==="floating-top"?"top":"bottom",isLoading:L,onStop:()=>n.viewControls.stop?.(),placeholder:Xt??x.sendInstead?.says??K,typingSuggestions:Ct.map(e=>e.text),suggestions:tt,disableInputPrompt:ot,connectionConfirmed:!ot,padding:Ae||Y==="floating-top"||Y==="floating-bottom"||Y==="docked-top"?2:3,promptVariant:"lexical",autoFocus:p?.autoFocusPrompt??!0,mentionableAgents:Vn,promptCommands:Bn,headerContent:Jn.length>0?t.jsx(pt,{slot:ve.inpromptMenu,props:{workspace:n}}):void 0,footerExtras:Qn.length>0?t.jsx(pt,{slot:ve.promptAction,props:{workspace:n}}):void 0,showAgentsMenu:!z,showInlineAgentsMenu:!1,agents:Xn,selectedAgentId:R,onSelectAgent:e=>m?.select(e),showTokenUsage:x.showTokenUsage??p?.showTokenUsage??!0,showContextRing:!0,agentUsage:qn??void 0,showModelSelector:!z&&!Te,models:io,decisions:so,selectedModel:at,onModelSelect:e=>{ro(e)},showToolsMenu:!z,availableTools:pn.runtime,availableFrontendTools:pn.frontend,mcpServers:it.data?.mcpServers??[],mcpStatusData:x.mcpStatusData??void 0,showSkillsMenu:!z,skills:We.data?.skills??[],skillsLoading:We.isLoading,enabledSkills:mn,onToggleSkill:e=>mn.has(e)?rt.disableSkill(e):rt.enableSkill(e),onToggleAllSkills:(e,r)=>e.forEach(l=>r?rt.enableSkill(l):rt.disableSkill(l)),codemodeEnabled:x.codemodeEnabled??!1,onToggleCodemode:x.onToggleCodemode,isA2AProtocol:!1,hasConfigData:!!it.data,hasSkillsData:!!We.data},hn=ee[0]?.value.Component,Mt=Me[0]?.value.Component,bn=!p?.hideHeader&&!!Mt,lt=hn?t.jsx(hn,{workspace:n,composer:co}):null,xn=I.length>0&&p?.showSurfaceSelector!==!1?t.jsx(ba,{surfaces:I.map(e=>e.value),active:E?.surfaceId??he?.surfaceId??X,onChange:Q,workspace:n}):null,Sn=t.jsxs(t.Fragment,{children:[I.map(e=>{const r=e.value,l=E?.surfaceId===r.surfaceId;return l||J.current.has(r.surfaceId)||Ge(r,n)?(J.current.add(r.surfaceId),t.jsx(f,{sx:l?{flex:"1 1 0",minWidth:0,minHeight:0}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none",zIndex:-1},children:t.jsx(Es,{load:r.load,props:{surfaceId:r.surfaceId,workspace:n},fallback:t.jsxs(zt,{children:["Loading ",r.title,"…"]}),errorFallback:u=>t.jsxs(zt,{children:[r.title," failed to load: ",u.message]})})},r.surfaceId)):null}),!E&&he?t.jsx(f,{flex:"1 1 0",minWidth:0,minHeight:0,children:t.jsxs(zt,{children:["Starting ",he.title,"…"]})}):null]}),vn=t.jsx(t.Fragment,{children:t.jsxs(f,{flex:Ae&&E?"0 0 34%":"1 1 0",maxWidth:Ae&&E?460:void 0,minWidth:0,minHeight:0,display:"flex",flexDirection:"column",borderLeft:E?"1px solid":void 0,borderColor:"border.default",position:"relative",children:[x.errorBanner?t.jsx(f,{flexShrink:0,px:3,py:2,fontSize:1,borderBottom:"1px solid",bg:x.errorBanner.variant==="warning"?"attention.subtle":"danger.subtle",color:x.errorBanner.variant==="warning"?"attention.fg":"danger.fg",borderColor:x.errorBanner.variant==="warning"?"attention.muted":"danger.muted",children:x.errorBanner.message}):null,Re?.said&&Re.given===O?.id?t.jsx(H,{as:"p",role:"status",sx:{m:0,px:3,py:2,fontSize:1,color:"fg.muted"},children:Re.said}):null,t.jsx(f,{flex:"1 1 auto",minHeight:0,display:"flex",children:oo?t.jsx(H,{as:"p",role:"status",sx:{m:0,p:3,fontSize:1,color:"fg.muted"},children:Mn.opening}):t.jsx(Is,{themeVariant:p?.themeVariant,themeOverrides:p?.themeOverrides,colorMode:p?.colorMode,thread:dn,disabled:ot,disableReason:Xt,protocol:Pt,frontendTools:g?void 0:Nn,initialModel:at||void 0,title:z?.name??y?.name??k?.name??i,description:z?.welcome??k?.description,brandIcon:z?.face?t.jsx(ua,{face:z.face,size:20,state:le}):t.jsx(jt,{size:20}),headerContent:z&&!Tt?t.jsx(fa,{state:le}):void 0,emptyState:{icon:z?.face?t.jsx("span",{"aria-hidden":!0,style:{fontSize:On,lineHeight:1},children:t.jsx(_n,{face:z.face,size:On})}):t.jsx(jt,{size:48}),title:z?.name??y?.name??k?.name??i,...m&&y?{sections:[{group:m.team.name,icon:t.jsx(zn,{size:48}),title:m.team.name,subtitle:m.team.description},{group:y.name,icon:t.jsx(jt,{size:32}),title:y.name,subtitle:k?.description}]}:null},suggestions:Ae||ie||p?.suggestionLabels===!1?[]:tt,showHeader:bn,headerButtons:{showNewChat:p?.headerButtons?.newChat??!1,showClear:p?.headerButtons?.clear??!1},renderHeader:Mt?e=>t.jsx(Mt,{workspace:n,header:n.chatViewModes?{...e,chatViewMode:n.chatViewModes.value,onChatViewModeChange:n.chatViewModes.onChange,offeredViewModes:n.chatViewModes.offered}:e}):void 0,showInformation:!0,headerActions:t.jsxs(f,{display:"inline-flex",alignItems:"center",gap:2,children:[n.chatHeaderActions,sn.length>0?t.jsx(pt,{slot:ve.chatHeader,props:{workspace:n}}):null,t.jsx(Ts,{icon:$?Rs:As,"aria-label":$?"Exit full screen":"Enter full screen",variant:"invisible",size:"small",onClick:()=>{ge(!1),St()},sx:_e?{"@keyframes dla-fullscreen-hint":{"0%, 100%":{opacity:1},"50%":{opacity:.4}},"&&":{bg:`color-mix(in srgb, ${c.primary} 16%, transparent)`,boxShadow:`inset 0 0 0 1.5px ${c.primary}`,animation:`dla-fullscreen-hint ${ha}ms ease-in-out infinite`},"@media (prefers-reduced-motion: reduce)":{"&&":{animation:"none"}}}:void 0})]}),showInput:!1,onSendReady:we,notebookToolSurfacesId:E?void 0:n.surfaceId,showTurnFooter:x.showTokenUsage??p?.showTokenUsage??!0,onContextSnapshot:Ue,onLoadingChange:Xe,onItemsChange:_,onDisplayItemsChange:de,enableStreaming:!0},dn?.id)}),!bn&&sn.length>0?t.jsx(f,{hidden:!0,children:t.jsx(pt,{slot:ve.chatHeader,props:{workspace:n}})}):null,gn&&!De?lt:null]})}),yn=p?.suggestionLabels!==!1&&tt.length>0?t.jsx(f,{"aria-label":s.suggestedPrompts,display:"flex",flexWrap:"wrap",gap:2,px:2,pb:"6px",children:tt.map(e=>t.jsx(f,{as:"button",type:"button",title:e.message,disabled:L||ot,onClick:()=>{pe(e.message)},appearance:"none",font:"inherit",fontSize:0,fontWeight:"semibold",lineHeight:1.25,px:"10px",py:"5px",width:Tn,flex:`0 0 ${Tn}px`,borderRadius:"999px",border:"1px solid",bg:"canvas.subtle",whiteSpace:"nowrap",sx:{borderColor:"border.default",color:"fg.default",cursor:"pointer","&:hover:not(:disabled)":{borderColor:"accent.fg",color:"accent.fg"},"&:disabled":{opacity:.5,cursor:"default"}},children:t.jsx(Ps,{title:e.title,maxWidth:"100%",sx:{minWidth:0},children:e.title})},e.title))}):null,wn=b?t.jsx(f,{flex:"0 0 auto",px:3,py:2,borderTop:"1px solid",borderColor:"border.default",bg:"canvas.subtle",fontSize:1,maxHeight:"40%",overflowY:"auto",children:b}):null;return t.jsxs(f,{ref:me,sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",position:"relative",...$?{bg:"canvas.default"}:null,...$&&!xt.current?{position:"fixed",top:vt,right:0,bottom:0,left:0,height:"auto",zIndex:1e3}:null},children:[ie?t.jsx(ie.Component,{workspace:n,editors:Sn,hasEditor:!!E,transcript:vn,prompt:De?null:lt,chips:De?null:yn,picker:xn,transient:wn}):t.jsxs(t.Fragment,{children:[Ae&&!De?t.jsxs(f,{flex:"0 0 auto",borderBottom:"1px solid",borderColor:"border.default",children:[lt,yn]}):null,xn,t.jsxs(f,{flex:"1 1 auto",minHeight:0,display:"flex",position:"relative",children:[Sn,vn]}),wn,gn||De||Ae?null:lt]}),It?t.jsx(f,{position:"absolute",inset:0,zIndex:5,bg:"canvas.default",display:"flex",flexDirection:"column",minHeight:0,children:t.jsx(Ys,{agentName:y?.name??k?.name,sandboxStillRuns:g,temporary:Qt,onSignedIn:()=>Ms.getState().clear()})}):null]})}function ba({surfaces:n,active:s,onChange:c,workspace:a}){const d=[...n].sort((b,S)=>(b.order??100)-(S.order??100));return t.jsxs(f,{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[t.jsx(H,{sx:{fontSize:0,color:"fg.muted"},children:"Beside the chat"}),t.jsxs(Lt,{"aria-label":"Editor beside the chat",size:"small",children:[t.jsx(Lt.Button,{selected:s===X,onClick:()=>c(X),children:"Chat"}),d.map(b=>{const S=Ge(b,a),w=S?void 0:b.unavailableReason?.(a)??"Not available right now";return t.jsx(Lt.Button,{selected:s===b.surfaceId,"aria-disabled":!S,title:w??b.title,leadingIcon:b.icon,onClick:()=>{S&&c(b.surfaceId)},children:b.title},b.surfaceId)})]})]})}function zt({children:n}){return t.jsx(f,{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.muted",fontSize:1,px:3,textAlign:"center",children:n})}export{ya as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g8 as se,g9 as fe,ga as te,gb as _e,gc as le,gd as ge,ge as ve,gf as qe,gg as de,gh as Ae,gi as ye}from"../datalayer-app-main.js";var D,X;function ce(){if(X)return D;X=1;var u="__lodash_hash_undefined__";function e(_){return this.__data__.set(_,u),this}return D=e,D}var H,Y;function pe(){if(Y)return H;Y=1;function u(e){return this.__data__.has(e)}return H=u,H}var B,Z;function Te(){if(Z)return B;Z=1;var u=se(),e=ce(),_=pe();function a(f){var t=-1,r=f==null?0:f.length;for(this.__data__=new u;++t<r;)this.add(f[t])}return a.prototype.add=a.prototype.push=e,a.prototype.has=_,B=a,B}var M,$;function Ee(){if($)return M;$=1;function u(e,_){for(var a=-1,f=e==null?0:e.length;++a<f;)if(_(e[a],a,e))return!0;return!1}return M=u,M}var x,W;function Oe(){if(W)return x;W=1;function u(e,_){return e.has(_)}return x=u,x}var G,j;function ue(){if(j)return G;j=1;var u=Te(),e=Ee(),_=Oe(),a=1,f=2;function t(r,v,T,O,d,l){var S=T&a,R=r.length,I=v.length;if(R!=I&&!(S&&I>R))return!1;var A=l.get(r),q=l.get(v);if(A&&q)return A==v&&q==r;var g=-1,y=!0,c=T&f?new u:void 0;for(l.set(r,v),l.set(v,r);++g<R;){var i=r[g],p=v[g];if(O)var s=S?O(p,i,g,v,r,l):O(i,p,g,r,v,l);if(s!==void 0){if(s)continue;y=!1;break}if(c){if(!e(v,function(n,E){if(!_(c,E)&&(i===n||d(i,n,T,O,l)))return c.push(E)})){y=!1;break}}else if(!(i===p||d(i,p,T,O,l))){y=!1;break}}return l.delete(r),l.delete(v),y}return G=t,G}var N,z;function Re(){if(z)return N;z=1;function u(e){var _=-1,a=Array(e.size);return e.forEach(function(f,t){a[++_]=[t,f]}),a}return N=u,N}var U,V;function he(){if(V)return U;V=1;function u(e){var _=-1,a=Array(e.size);return e.forEach(function(f){a[++_]=f}),a}return U=u,U}var m,k;function Se(){if(k)return m;k=1;var u=fe(),e=te(),_=_e(),a=ue(),f=Re(),t=he(),r=1,v=2,T="[object Boolean]",O="[object Date]",d="[object Error]",l="[object Map]",S="[object Number]",R="[object RegExp]",I="[object Set]",A="[object String]",q="[object Symbol]",g="[object ArrayBuffer]",y="[object DataView]",c=u?u.prototype:void 0,i=c?c.valueOf:void 0;function p(s,n,E,h,w,C,P){switch(E){case y:if(s.byteLength!=n.byteLength||s.byteOffset!=n.byteOffset)return!1;s=s.buffer,n=n.buffer;case g:return!(s.byteLength!=n.byteLength||!C(new e(s),new e(n)));case T:case O:case S:return _(+s,+n);case d:return s.name==n.name&&s.message==n.message;case R:case A:return s==n+"";case l:var L=f;case I:var o=h&r;if(L||(L=t),s.size!=n.size&&!o)return!1;var b=P.get(s);if(b)return b==n;h|=v,P.set(s,n);var ie=a(L(s),L(n),h,w,C,P);return P.delete(s),ie;case q:if(i)return i.call(s)==i.call(n)}return!1}return m=p,m}var F,ee;function Ie(){if(ee)return F;ee=1;var u=le(),e=1,_=Object.prototype,a=_.hasOwnProperty;function f(t,r,v,T,O,d){var l=v&e,S=u(t),R=S.length,I=u(r),A=I.length;if(R!=A&&!l)return!1;for(var q=R;q--;){var g=S[q];if(!(l?g in r:a.call(r,g)))return!1}var y=d.get(t),c=d.get(r);if(y&&c)return y==r&&c==t;var i=!0;d.set(t,r),d.set(r,t);for(var p=l;++q<R;){g=S[q];var s=t[g],n=r[g];if(T)var E=l?T(n,s,g,r,t,d):T(s,n,g,t,r,d);if(!(E===void 0?s===n||O(s,n,v,T,d):E)){i=!1;break}p||(p=g=="constructor")}if(i&&!p){var h=t.constructor,w=r.constructor;h!=w&&"constructor"in t&&"constructor"in r&&!(typeof h=="function"&&h instanceof h&&typeof w=="function"&&w instanceof w)&&(i=!1)}return d.delete(t),d.delete(r),i}return F=f,F}var K,re;function we(){if(re)return K;re=1;var u=ge(),e=ue(),_=Se(),a=Ie(),f=ve(),t=qe(),r=de(),v=Ae(),T=1,O="[object Arguments]",d="[object Array]",l="[object Object]",S=Object.prototype,R=S.hasOwnProperty;function I(A,q,g,y,c,i){var p=t(A),s=t(q),n=p?d:f(A),E=s?d:f(q);n=n==O?l:n,E=E==O?l:E;var h=n==l,w=E==l,C=n==E;if(C&&r(A)){if(!r(q))return!1;p=!0,h=!1}if(C&&!h)return i||(i=new u),p||v(A)?e(A,q,g,y,c,i):_(A,q,n,g,y,c,i);if(!(g&T)){var P=h&&R.call(A,"__wrapped__"),L=w&&R.call(q,"__wrapped__");if(P||L){var o=P?A.value():A,b=L?q.value():q;return i||(i=new u),c(o,b,g,y,i)}}return C?(i||(i=new u),a(A,q,g,y,c,i)):!1}return K=I,K}var J,ae;function Pe(){if(ae)return J;ae=1;var u=we(),e=ye();function _(a,f,t,r,v){return a===f?!0:a==null||f==null||!e(a)&&!e(f)?a!==a&&f!==f:u(a,f,t,r,_,v)}return J=_,J}var Q,ne;function Ce(){if(ne)return Q;ne=1;var u=Pe();function e(_,a){return u(_,a)}return Q=e,Q}export{Pe as a,he as b,Te as c,Oe as d,Ce as r};
|