@datalayer/agent-runtimes 1.3.100 → 1.3.101
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-DDIhoGCr.js → AgentDetails-CO9iM59C.js} +8 -8
- package/dist-embed/chunks/{AgentDetailsDialog-DQfL7V4R.js → AgentDetailsDialog-DmD6xm6k.js} +1 -1
- package/dist-embed/chunks/{AgentInspector-DaMCROPs.js → AgentInspector-kDMuvh45.js} +1 -1
- package/dist-embed/chunks/{AgentInspectorDialog-zGMiFR5z.js → AgentInspectorDialog-fT96Pb4Z.js} +1 -1
- package/dist-embed/chunks/Avatar-Dqz3ZWjZ.js +1 -0
- package/dist-embed/chunks/{CellSidebarExtension-DAzWlyRN.js → CellSidebarExtension-B-vao30u.js} +1 -1
- package/dist-embed/chunks/ChatView-CubqJum2.js +288 -0
- package/dist-embed/chunks/{ContextPie-D1eAig1P.js → ContextPie-ltoJ11q_.js} +1 -1
- package/dist-embed/chunks/DatalayerAgentBridge-BmJbZ2Lk.js +1 -0
- package/dist-embed/chunks/{DeckComponent-lNZXX0qi.js → DeckComponent-Fp6Vw8vN.js} +2 -2
- package/dist-embed/chunks/{DocumentView-BKzeMFBq.js → DocumentView-DKUbyyJg.js} +1 -1
- package/dist-embed/chunks/{EphemeralDocument-DKtocZ3W.js → EphemeralDocument-CgYPEfGC.js} +1 -1
- package/dist-embed/chunks/{EphemeralNotebook-oX8GrXS3.js → EphemeralNotebook-DvDbCKnr.js} +2 -2
- package/dist-embed/chunks/{ExcalidrawComponent-B8nrxRST.js → ExcalidrawComponent-BehqBpwC.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawModal--K0C_WUL.js → ExcalidrawModal-B2sXbVJB.js} +1 -1
- package/dist-embed/chunks/{Flash-DTBPQ4yb.js → Flash-DdFxPtBI.js} +1 -1
- package/dist-embed/chunks/{JupyterLexicalExtension-CSMNnVr9.js → JupyterLexicalExtension-CUsjvchq.js} +9 -9
- package/dist-embed/chunks/{KernelVariables-D4s9Q5Ng.js → KernelVariables-BUmOt4yF.js} +2 -2
- package/dist-embed/chunks/{LexicalToolRegistry-_DH2qwSU.js → LexicalToolRegistry-DoZIM1lF.js} +1 -1
- package/dist-embed/chunks/{NotebookSkeleton-BTs2pK7B.js → NotebookSkeleton-D9WNoiWD.js} +1 -1
- package/dist-embed/chunks/{NotebookToolbar-B3BFk-WV.js → NotebookToolbar-C2_ZC9Ej.js} +1 -1
- package/dist-embed/chunks/{NotebookView-Dl-icjhk.js → NotebookView-BActuABH.js} +1 -1
- package/dist-embed/chunks/{SandboxDetailsDialog-22wdG0V-.js → SandboxDetailsDialog-C0afmOA7.js} +1 -1
- package/dist-embed/chunks/{SchemaForm-8b_dpfFK.js → SchemaForm-B351kd79.js} +1 -1
- package/dist-embed/chunks/{Toolbar-5oT8y_0g.js → Toolbar-B6ROXJ-2.js} +1 -1
- package/dist-embed/chunks/{YouTubePlugin-B6pgdGkU.js → YouTubePlugin-CqA-IwCx.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-CCRPX817.js → abnfDiagram-VCTEODGH-B2rXJzIG.js} +1 -1
- package/dist-embed/chunks/{abnfDiagram-VCTEODGH-Cc9J0KVQ.js → abnfDiagram-VCTEODGH-Celh8uSB.js} +1 -1
- package/dist-embed/chunks/{advancedFormat-IOT0HLTV.js → advancedFormat-9fBUVkZ9.js} +1 -1
- package/dist-embed/chunks/{ar-SA-G6X2FPQ2-DMIAxeqR.js → ar-SA-G6X2FPQ2-DhQlC4AZ.js} +1 -1
- package/dist-embed/chunks/{arc-CN-j54V6.js → arc-BcTWnMdT.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-BN7cGeVb.js → architectureDiagram-5GKGNRK7-B1nGp-ab.js} +1 -1
- package/dist-embed/chunks/{architectureDiagram-5GKGNRK7-De77ckgV.js → architectureDiagram-5GKGNRK7-BtvjVASE.js} +1 -1
- package/dist-embed/chunks/{az-AZ-76LH7QW2-DMFqBzG7.js → az-AZ-76LH7QW2-CDvJeI6H.js} +1 -1
- package/dist-embed/chunks/{bg-BG-XCXSNQG7-DM9S3yhg.js → bg-BG-XCXSNQG7-B_2t7dwS.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-868be97b-CoipBJ9g.js → blockDiagram-868be97b-Ctqgl81i.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-CYPYbqjz.js → blockDiagram-I7D4REHJ-B8cdJr95.js} +1 -1
- package/dist-embed/chunks/{blockDiagram-I7D4REHJ-Cs7aaFQh.js → blockDiagram-I7D4REHJ-BW7qedxT.js} +1 -1
- package/dist-embed/chunks/{bn-BD-2XOGV67Q-CK8aWMNS.js → bn-BD-2XOGV67Q-B7nTDj-4.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-3f4bdde3-UwJoyMng.js → c4Diagram-3f4bdde3-0ruvDNdG.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-C0lopX7r.js → c4Diagram-7LVT6UL2-D_oBILZn.js} +1 -1
- package/dist-embed/chunks/{c4Diagram-7LVT6UL2-DjTuau65.js → c4Diagram-7LVT6UL2-ujGlIhtL.js} +1 -1
- package/dist-embed/chunks/{ca-ES-6MX7JW3Y-HslrBDJw.js → ca-ES-6MX7JW3Y-llJD_i9l.js} +1 -1
- package/dist-embed/chunks/channel-o04upGuP.js +1 -0
- package/dist-embed/chunks/{chunk-2Q5K7J3B-D4cqUYAT.js → chunk-2Q5K7J3B-CwLcj_PJ.js} +1 -1
- package/dist-embed/chunks/{chunk-2Q5K7J3B-BVMKDBY8.js → chunk-2Q5K7J3B-DcyPc2RX.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-Xhg_BVSp.js → chunk-5VM5RSS4-BkRs7Fna.js} +1 -1
- package/dist-embed/chunks/{chunk-5VM5RSS4-CzKuJynz.js → chunk-5VM5RSS4-DMPUDDnV.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-Bt1Q0fHq.js → chunk-F27PBJKO-BzMwl8_q.js} +1 -1
- package/dist-embed/chunks/{chunk-F27PBJKO-BUIdY_4T.js → chunk-F27PBJKO-pG1_v10O.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-DpgCTHeS.js → chunk-IMKFNOWR-Bf_-T_nx.js} +1 -1
- package/dist-embed/chunks/{chunk-IMKFNOWR-Cy5BRScb.js → chunk-IMKFNOWR-DJta09Af.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-D3HcIpVU.js → chunk-JWPE2WC7-DC1wY1Ne.js} +1 -1
- package/dist-embed/chunks/{chunk-JWPE2WC7-Diz0u535.js → chunk-JWPE2WC7-SVeaXwdX.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-TbpwubqF.js → chunk-POPQ4Y6H-BHtANfps.js} +1 -1
- package/dist-embed/chunks/{chunk-POPQ4Y6H-CkAsArUm.js → chunk-POPQ4Y6H-Cl1LQa-a.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-_yTXReWy.js → chunk-SVP7TREG-0GCrhixv.js} +1 -1
- package/dist-embed/chunks/{chunk-SVP7TREG-Cw20-h7G.js → chunk-SVP7TREG-2ZP0qWw_.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-BPo6s9dS.js → chunk-TICWLB2K-BcegNV27.js} +1 -1
- package/dist-embed/chunks/{chunk-TICWLB2K-Df9jMrfB.js → chunk-TICWLB2K-CZYEMhEE.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-CizfVebu.js → chunk-XXDRQBXY-DlOeT6YV.js} +1 -1
- package/dist-embed/chunks/{chunk-XXDRQBXY-CQCJr_te.js → chunk-XXDRQBXY-NxzmpYaR.js} +1 -1
- package/dist-embed/chunks/classDiagram-ZZMXUADV-BXZxncqO.js +1 -0
- package/dist-embed/chunks/classDiagram-ZZMXUADV-DnNeD34Z.js +1 -0
- package/dist-embed/chunks/{classDiagram-f62afe4f-BPLoDclf.js → classDiagram-f62afe4f-BD1_NCwH.js} +1 -1
- package/dist-embed/chunks/{classDiagram-v2-604399ef-ByLL4G6w.js → classDiagram-v2-604399ef-CxmFuhFb.js} +1 -1
- package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-BXZxncqO.js +1 -0
- package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-DnNeD34Z.js +1 -0
- package/dist-embed/chunks/{code-block-IT6T5CEO-CZdOZWWc.js → code-block-IT6T5CEO-U73VXKeS.js} +1 -1
- package/dist-embed/chunks/{component-CCqdcSgN.js → component-COjBgUMr.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-D1KcELJ6.js → cose-bilkent-JH36ORCC-71p0f-kJ.js} +1 -1
- package/dist-embed/chunks/{cose-bilkent-JH36ORCC-DI7Z4av-.js → cose-bilkent-JH36ORCC-B-Oq7xUI.js} +1 -1
- package/dist-embed/chunks/{createText-aed3d8b3-qEBV_LAF.js → createText-aed3d8b3-CmAg0yKd.js} +1 -1
- package/dist-embed/chunks/{cs-CZ-2BRQDIVT-D2WZgYFZ.js → cs-CZ-2BRQDIVT-Cm_uiYT0.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-D_YG7HzO.js → cynefinDiagram-5FMLGOSQ-BdKZ7Rf2.js} +1 -1
- package/dist-embed/chunks/{cynefinDiagram-5FMLGOSQ-zmfGD2O2.js → cynefinDiagram-5FMLGOSQ-NbSU35d_.js} +1 -1
- package/dist-embed/chunks/{da-DK-5WZEPLOC-BZhZmwgX.js → da-DK-5WZEPLOC-B0lo6-wZ.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-BcPCMol6.js → dagre-GXQ25YYZ-C2NoVPqt.js} +1 -1
- package/dist-embed/chunks/{dagre-GXQ25YYZ-B-pyqr-3.js → dagre-GXQ25YYZ-Cq55WvUn.js} +1 -1
- package/dist-embed/chunks/{de-DE-XR44H4JA-CltJ8MP6.js → de-DE-XR44H4JA-DZrN-mJo.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-BmnkJuMF.js → diagram-S7CK7UJ4-CF7XYPSL.js} +1 -1
- package/dist-embed/chunks/{diagram-S7CK7UJ4-hhBlnYjW.js → diagram-S7CK7UJ4-Cq78dPrF.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-DPb8MAV_.js → diagram-UQ7AKVKN-BAi-uDI4.js} +1 -1
- package/dist-embed/chunks/{diagram-UQ7AKVKN-BN1Xspl9.js → diagram-UQ7AKVKN-DlMLGIyl.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-TMd-7Wmo.js → diagram-VSXAHHWV-DRNadpAk.js} +1 -1
- package/dist-embed/chunks/{diagram-VSXAHHWV-H5G6hU8P.js → diagram-VSXAHHWV-jJir7z_u.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-BrkFbK0K.js → diagram-VX7I27RA-BR-L0h0N.js} +1 -1
- package/dist-embed/chunks/{diagram-VX7I27RA-DiYNlqCO.js → diagram-VX7I27RA-D_LZ7ttC.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-DdG_O5h6.js → diagram-Z3DM3KII-CDeXGbsG.js} +1 -1
- package/dist-embed/chunks/{diagram-Z3DM3KII-D1vqz5Ew.js → diagram-Z3DM3KII-CwrX0YEI.js} +1 -1
- package/dist-embed/chunks/{document-zcF1SUIy.js → document-B3yvxR3p.js} +1 -1
- package/dist-embed/chunks/{drivecontents-Ckcp2ERS.js → drivecontents-BHpoQXqz.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-PMrBUO9H.js → ebnfDiagram-PWID7BFC-DJ-S4zNP.js} +1 -1
- package/dist-embed/chunks/{ebnfDiagram-PWID7BFC-DMXmlTDY.js → ebnfDiagram-PWID7BFC-DktGPWnR.js} +1 -1
- package/dist-embed/chunks/{edges-b2856ca0-zod3pf5J.js → edges-b2856ca0-Dl_I1_Tl.js} +1 -1
- package/dist-embed/chunks/{el-GR-BZB4AONW-C70uQp6T.js → el-GR-BZB4AONW-C4D5ZbOc.js} +1 -1
- package/dist-embed/chunks/{erDiagram-5d81789a-D4Y_ua8V.js → erDiagram-5d81789a-Xh6XZPYE.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-COpQ5gec.js → erDiagram-RLTQ6QDP-CvKed34U.js} +1 -1
- package/dist-embed/chunks/{erDiagram-RLTQ6QDP-CZNZ_893.js → erDiagram-RLTQ6QDP-Dn5o1zp3.js} +1 -1
- package/dist-embed/chunks/{es-ES-U4NZUMDT-Bsjo8e08.js → es-ES-U4NZUMDT-D1yiS-ZI.js} +1 -1
- package/dist-embed/chunks/{eu-ES-A7QVB2H4-SVPEle78.js → eu-ES-A7QVB2H4-Zm3lJsL6.js} +1 -1
- package/dist-embed/chunks/{fa-IR-HGAKTJCU-CpgfdtSo.js → fa-IR-HGAKTJCU-Dhv2lg_O.js} +1 -1
- package/dist-embed/chunks/{fi-FI-Z5N7JZ37-0AIruYqI.js → fi-FI-Z5N7JZ37-QeFFEfyg.js} +1 -1
- package/dist-embed/chunks/{flowDb-185abca5-8a6sWoVq.js → flowDb-185abca5-DCi2LSG3.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-1629c991-CCbNUYZl.js → flowDiagram-1629c991-1AzvuCps.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-lJ2Z3vFv.js → flowDiagram-HODETNUW-BjiuBN9U.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-HODETNUW-CMUxuQ7T.js → flowDiagram-HODETNUW-BoOyNxJY.js} +1 -1
- package/dist-embed/chunks/{flowDiagram-v2-1d953310-CEF2SgZr.js → flowDiagram-v2-1d953310-DNyM8Btq.js} +1 -1
- package/dist-embed/chunks/{flowchart-elk-definition-6df44142-RHeVm2Vk.js → flowchart-elk-definition-6df44142-DucxAUTE.js} +1 -1
- package/dist-embed/chunks/{fr-FR-RHASNOE6-Pv7-mObZ.js → fr-FR-RHASNOE6-DjbRpOS6.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-3b0b3873-wEiuIWcM.js → ganttDiagram-3b0b3873-DLJCN1HW.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-BYMiax7v.js → ganttDiagram-EL5Y4UJY-D3bfGcnP.js} +1 -1
- package/dist-embed/chunks/{ganttDiagram-EL5Y4UJY-B5WlwMpk.js → ganttDiagram-EL5Y4UJY-us782PXd.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-DYJQ-SIg.js → gitGraphDiagram-WWUBYQGX-BCKtisB_.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-WWUBYQGX-D8fVmtc9.js → gitGraphDiagram-WWUBYQGX-DpOwi5a_.js} +1 -1
- package/dist-embed/chunks/{gitGraphDiagram-f01e8bc2-DxDYtdab.js → gitGraphDiagram-f01e8bc2-B5VZrDor.js} +1 -1
- package/dist-embed/chunks/{gl-ES-HMX3MZ6V-CvVsi7_e.js → gl-ES-HMX3MZ6V-C-ev9dqC.js} +1 -1
- package/dist-embed/chunks/{hcl-BZsx9glM.js → hcl-hwLh11hJ.js} +1 -1
- package/dist-embed/chunks/{he-IL-6SHJWFNN-DR-LBFsb.js → he-IL-6SHJWFNN-DHoNpuA6.js} +1 -1
- package/dist-embed/chunks/{hi-IN-IWLTKZ5I-C-7x_jFk.js → hi-IN-IWLTKZ5I-JZJZPoWj.js} +1 -1
- package/dist-embed/chunks/{hu-HU-A5ZG7DT2-IRN8uyau.js → hu-HU-A5ZG7DT2-RzCikyBW.js} +1 -1
- package/dist-embed/chunks/{id-ID-SAP4L64H-B4acvKcJ.js → id-ID-SAP4L64H-Bn08nS9B.js} +1 -1
- package/dist-embed/chunks/{index-CzyPyDL7.js → index-1Ekpl0uC.js} +1 -1
- package/dist-embed/chunks/{index-9bae90f3-Byqvc_1J.js → index-9bae90f3-CqVDusDd.js} +1 -1
- package/dist-embed/chunks/{index-O05b1yOc.js → index-B1Egld01.js} +1 -1
- package/dist-embed/chunks/{index-CkcSokt2.js → index-B2dtLxcg.js} +1 -1
- package/dist-embed/chunks/{index-DrTOPxp7.js → index-B5MiaXUV.js} +1 -1
- package/dist-embed/chunks/{index-CML3IxdI.js → index-BOvsLtXe.js} +1 -1
- package/dist-embed/chunks/{index-C8PIFg_G.js → index-BUbwVG__.js} +4 -4
- package/dist-embed/chunks/{index-4cAPvEvs.js → index-BVAnvfbh.js} +1 -1
- package/dist-embed/chunks/{index-CBqbd-wN.js → index-BYofH50G.js} +1 -1
- package/dist-embed/chunks/{index-BvCNoy7C.js → index-Ba-Kv3yV.js} +1 -1
- package/dist-embed/chunks/{index-CFLgmNxm.js → index-BbsUSk_Q.js} +5 -5
- package/dist-embed/chunks/{index-DSqW3D0Y.js → index-Bs1pVq7E.js} +1 -1
- package/dist-embed/chunks/{index-CkHVrFkx.js → index-BtjXlYA2.js} +1 -1
- package/dist-embed/chunks/{index-qS3zZ9pt.js → index-C0iUgNwj.js} +2 -2
- package/dist-embed/chunks/{index-BNamX66v.js → index-C5xKtdLU.js} +13 -13
- package/dist-embed/chunks/{index-B3E7bXYK.js → index-CGscJbrF.js} +1 -1
- package/dist-embed/chunks/{index-CGSmsddM.js → index-Cjx6uk6z.js} +1 -1
- package/dist-embed/chunks/{index-DPibz6KG.js → index-CqKV027P.js} +1 -1
- package/dist-embed/chunks/{index-Dm4AUkEh.js → index-Cqur_rhw.js} +4 -4
- package/dist-embed/chunks/{index-CNx_s591.js → index-D7rnWGLu.js} +2 -2
- package/dist-embed/chunks/{index-qoRa7lfq.js → index-DCX_IqLg.js} +1 -1
- package/dist-embed/chunks/{index-BY3dr_Yb.js → index-DHVYKZ44.js} +6 -6
- package/dist-embed/chunks/{index-Begrz6qi.js → index-DIHzcHI1.js} +1 -1
- package/dist-embed/chunks/{index-NHZX5LFG.js → index-DJomc4za.js} +2 -2
- package/dist-embed/chunks/{index-DecCuztE.js → index-DLk6Znxv.js} +1 -1
- package/dist-embed/chunks/{index-BnowXurk.js → index-DYt0uAs-.js} +1 -1
- package/dist-embed/chunks/{index-kuItYEfY.js → index-DeYQGrTz.js} +8 -8
- package/dist-embed/chunks/{index-CDSBIJbt.js → index-DgnVcOqG.js} +1 -1
- package/dist-embed/chunks/{index-REv48H9T.js → index-DkY_OIbM.js} +1 -1
- package/dist-embed/chunks/{index-CaurkNaJ.js → index-DsX9nIHt.js} +1 -1
- package/dist-embed/chunks/{index-DKPjJ48t.js → index-DtYYe0Cw.js} +5 -5
- package/dist-embed/chunks/{index-CwFAduNg.js → index-aX9x7qni.js} +1 -1
- package/dist-embed/chunks/{index-74YA-L1Q.js → index-hib7vWC6.js} +1 -1
- package/dist-embed/chunks/{index-DYk4SAGn.js → index-p2ZGnxJX.js} +1 -1
- package/dist-embed/chunks/{index-CxSZtb0e.js → index-qzUKNibz.js} +1 -1
- package/dist-embed/chunks/{index-5Jo-nwZH.js → index-zr-b1Ds3.js} +1 -1
- package/dist-embed/chunks/{index.esm-DOzsYAbC.js → index.esm-CJLAKtMR.js} +1 -1
- package/dist-embed/chunks/{index.esm-BpcXmnkv.js → index.esm-DlPZAW-m.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-CV8wJO56.js → infoDiagram-27XIBGKW-CB1VZqVi.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-27XIBGKW-DNSrv0V4.js → infoDiagram-27XIBGKW-s9Lynuxa.js} +1 -1
- package/dist-embed/chunks/{infoDiagram-a29d40f1-E8D341jS.js → infoDiagram-a29d40f1-BSyalhIZ.js} +1 -1
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-BRfv59pP.js → ishikawaDiagram-5VMMS53U-BnyB2Q-F.js} +1 -1
- package/dist-embed/chunks/{ishikawaDiagram-5VMMS53U-DmZ-PvsF.js → ishikawaDiagram-5VMMS53U-D-b9zU7V.js} +1 -1
- package/dist-embed/chunks/{it-IT-JPQ66NNP-qA6LaRji.js → it-IT-JPQ66NNP-C2vJMuKM.js} +1 -1
- package/dist-embed/chunks/{ja-JP-DBVTYXUO-CHmLHAsr.js → ja-JP-DBVTYXUO-C8KOKQt9.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-3jE8sGmW.js → journeyDiagram-3NMN7TZE-CZXsMFjb.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-3NMN7TZE-itNV2GBs.js → journeyDiagram-3NMN7TZE-Cv3HlmqD.js} +1 -1
- package/dist-embed/chunks/{journeyDiagram-95396277-Ba7ZL7z3.js → journeyDiagram-95396277-DnkmTBAP.js} +1 -1
- package/dist-embed/chunks/{kaa-6HZHGXH3-CLJsweAJ.js → kaa-6HZHGXH3-CvxJbmMB.js} +1 -1
- package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-C5IJJXMt.js → kab-KAB-ZGHBKWFO-CQJhf9Nn.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-DraK1j1A.js → kanban-definition-UXKFOSKX-CZ0olp9z.js} +1 -1
- package/dist-embed/chunks/{kanban-definition-UXKFOSKX-DLigKnGA.js → kanban-definition-UXKFOSKX-LX8xxzUZ.js} +1 -1
- package/dist-embed/chunks/{kk-KZ-P5N5QNE5-CCaxEdfw.js → kk-KZ-P5N5QNE5-Dl6YC0GH.js} +1 -1
- package/dist-embed/chunks/{km-KH-HSX4SM5Z-My_ugj4j.js → km-KH-HSX4SM5Z-QYB-tJ4i.js} +1 -1
- package/dist-embed/chunks/{ko-KR-MTYHY66A-CHP-oWuX.js → ko-KR-MTYHY66A-D6yzBqJ5.js} +1 -1
- package/dist-embed/chunks/{ku-TR-6OUDTVRD-C52g9k3M.js → ku-TR-6OUDTVRD-C43l2362.js} +1 -1
- package/dist-embed/chunks/{layout-Dj1wRfbG.js → layout-DC1dN5QV.js} +1 -1
- package/dist-embed/chunks/{layout-DNotAWCv.js → layout-DfHqq7Y7.js} +1 -1
- package/dist-embed/chunks/{lexicalHooks-kxLGr2aO.js → lexicalHooks-PS_v7JyS.js} +1 -1
- package/dist-embed/chunks/{line-DuKLYeqR.js → line-BLnKxlFS.js} +1 -1
- package/dist-embed/chunks/{linear-Dg-Vn5Yx.js → linear-bDTv5gmU.js} +1 -1
- package/dist-embed/chunks/{lt-LT-XHIRWOB4-DcGTTOch.js → lt-LT-XHIRWOB4-BG1v5NwF.js} +1 -1
- package/dist-embed/chunks/{lv-LV-5QDEKY6T-Duj8GAiu.js → lv-LV-5QDEKY6T-CAwm1y_0.js} +1 -1
- package/dist-embed/chunks/{mermaid.core-C0gANONu.js → mermaid.core-BS7AlRW2.js} +3 -3
- package/dist-embed/chunks/{mermaid.core-BjUO4_Ly.js → mermaid.core-CLv-vCjs.js} +5 -5
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-x4oa4R6v.js → mindmap-definition-YA3MSWOX-BUr4hM7e.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-YA3MSWOX-qCMgaWWi.js → mindmap-definition-YA3MSWOX-CwwLX5oJ.js} +1 -1
- package/dist-embed/chunks/{mindmap-definition-e4c1d938-Dy5nnqlt.js → mindmap-definition-e4c1d938-B4xy2oKe.js} +1 -1
- package/dist-embed/chunks/{model-D8diDS02.js → model-D7a10Ag0.js} +1 -1
- package/dist-embed/chunks/{mr-IN-CRQNXWMA-Cm1jPr2r.js → mr-IN-CRQNXWMA-DSk6q1fp.js} +1 -1
- package/dist-embed/chunks/{my-MM-5M5IBNSE-CfTzX-Wc.js → my-MM-5M5IBNSE-BRiKXulk.js} +1 -1
- package/dist-embed/chunks/{nb-NO-T6EIAALU-DdPxuBWB.js → nb-NO-T6EIAALU-CCDnctVd.js} +1 -1
- package/dist-embed/chunks/{nl-NL-IS3SIHDZ-eOHjxC9z.js → nl-NL-IS3SIHDZ-DwStD_Ch.js} +1 -1
- package/dist-embed/chunks/{nn-NO-6E72VCQL-DjAv0k1C.js → nn-NO-6E72VCQL-DNcfjETk.js} +1 -1
- package/dist-embed/chunks/{oc-FR-POXYY2M6-C0T2Uif7.js → oc-FR-POXYY2M6-BOjjS12P.js} +1 -1
- package/dist-embed/chunks/{pa-IN-N4M65BXN-BpX0p08b.js → pa-IN-N4M65BXN-B4y5cv2_.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-5jUoEdYP.js → pegDiagram-XKGWAZYB-CVtSqLfc.js} +1 -1
- package/dist-embed/chunks/{pegDiagram-XKGWAZYB-Smos5ynL.js → pegDiagram-XKGWAZYB-pdjxeh5M.js} +1 -1
- package/dist-embed/chunks/{percentages-BXMCSKIN-CmsGG1KO.js → percentages-BXMCSKIN-BpahO1D1.js} +6 -6
- package/dist-embed/chunks/{pica-DvcVbjys.js → pica-CyDhZ1sv.js} +1 -1
- package/dist-embed/chunks/{pie-CrFPIYc9.js → pie-CktNGOxo.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-D0vDTcE9.js → pieDiagram-E7YTZNPT-D2I7Fwff.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-E7YTZNPT-COPe6fPR.js → pieDiagram-E7YTZNPT-JUXSTYxs.js} +1 -1
- package/dist-embed/chunks/{pieDiagram-c941bede-65qxkgxB.js → pieDiagram-c941bede-DWhYbfLm.js} +1 -1
- package/dist-embed/chunks/{pl-PL-T2D74RX3-ZCXWl-vX.js → pl-PL-T2D74RX3-CfuLoYHB.js} +1 -1
- package/dist-embed/chunks/{plugin-Ba5UScsV.js → plugin-DZPXm2dP.js} +1 -1
- package/dist-embed/chunks/{pt-BR-5N22H2LF-ClSeRSTv.js → pt-BR-5N22H2LF-Fk60PfdA.js} +1 -1
- package/dist-embed/chunks/{pt-PT-UZXXM6DQ-aI3iyXEY.js → pt-PT-UZXXM6DQ-SNAgJ5Vr.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-BoEDNaHO.js → quadrantDiagram-AXDQQJYC-Cw8ysOVS.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-AXDQQJYC-DvWSIFQv.js → quadrantDiagram-AXDQQJYC-zTpXZRnN.js} +1 -1
- package/dist-embed/chunks/{quadrantDiagram-cf8b8fe0-DiapetF0.js → quadrantDiagram-cf8b8fe0-DH_dNEld.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-LnW8lyjW.js → railroadDiagram-O6MQD6OU-CoMzy1dm.js} +1 -1
- package/dist-embed/chunks/{railroadDiagram-O6MQD6OU-XyeFPUFA.js → railroadDiagram-O6MQD6OU-DrPiQVOZ.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-53bda41b-NVu0cGYm.js → requirementDiagram-53bda41b-C7A0I5GT.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-wRDyhjvw.js → requirementDiagram-BXWQKSXE-B9trBsts.js} +1 -1
- package/dist-embed/chunks/{requirementDiagram-BXWQKSXE-CtpxXHY5.js → requirementDiagram-BXWQKSXE-BLQtV6jv.js} +1 -1
- package/dist-embed/chunks/{ro-RO-JPDTUUEW--yP8WH1q.js → ro-RO-JPDTUUEW-YkxpKkWn.js} +1 -1
- package/dist-embed/chunks/{round-BYqUt1IP.js → round-DymJ-a3G.js} +1 -1
- package/dist-embed/chunks/{ru-RU-B4JR7IUQ-S6Dpc8ej.js → ru-RU-B4JR7IUQ-CaI1rtvc.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-CWsU1zz9.js → sankeyDiagram-P5KCCOFB-Cvxdoq6D.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-P5KCCOFB-CkYpEh5o.js → sankeyDiagram-P5KCCOFB-Dwkp-ggM.js} +1 -1
- package/dist-embed/chunks/{sankeyDiagram-c3ef121a-D9xzSD-8.js → sankeyDiagram-c3ef121a-DeaFXwir.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-82a5b84f-DDCEPqNh.js → sequenceDiagram-82a5b84f-fDhOBU7A.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-CafPjz3k.js → sequenceDiagram-WJ2MYXX4-Bj9ikwM4.js} +1 -1
- package/dist-embed/chunks/{sequenceDiagram-WJ2MYXX4-D-ytwLdK.js → sequenceDiagram-WJ2MYXX4-Bp1oVZMs.js} +1 -1
- package/dist-embed/chunks/{sessions-BeSpcqDy.js → sessions-ZDYLkdi_.js} +2 -2
- package/dist-embed/chunks/{si-LK-N5RQ5JYF-Bh0-Jjfq.js → si-LK-N5RQ5JYF-CQz29xmh.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-FMWRuKPu.js → sizeCapture-INFHLROL-CMlzK5MC.js} +1 -1
- package/dist-embed/chunks/{sizeCapture-INFHLROL-5RviLAUl.js → sizeCapture-INFHLROL-ohpYHAcp.js} +1 -1
- package/dist-embed/chunks/{sk-SK-C5VTKIMK-TXk80Xbq.js → sk-SK-C5VTKIMK-CZg7PVzd.js} +1 -1
- package/dist-embed/chunks/{sl-SI-NN7IZMDC-DSdu_b8Y.js → sl-SI-NN7IZMDC-D-EjMWyZ.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-43e79a5f-Bd0gJvTB.js → stateDiagram-43e79a5f-BFR_IH5W.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-CsoLoQdw.js → stateDiagram-D77RDMKH-DpOxo9yl.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-D77RDMKH-anfAB1CI.js → stateDiagram-D77RDMKH-zWegA-O8.js} +1 -1
- package/dist-embed/chunks/{stateDiagram-v2-2041ed4f-Db6Ltf2q.js → stateDiagram-v2-2041ed4f-8TkUHVMG.js} +1 -1
- package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-BZAMPWr5.js +1 -0
- package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-DrTAroDB.js +1 -0
- package/dist-embed/chunks/{styles-455b33cd-DjZhq6rj.js → styles-455b33cd-Befvug13.js} +1 -1
- package/dist-embed/chunks/{styles-f932cba9-s39yhAcA.js → styles-f932cba9-eBHnVQaE.js} +1 -1
- package/dist-embed/chunks/{styles-fcc2142b-QdZsB9tg.js → styles-fcc2142b-BsjaKqGS.js} +1 -1
- package/dist-embed/chunks/{subset-shared.chunk-B1SUTh3f.js → subset-shared.chunk-BIvvzzX2.js} +1 -1
- package/dist-embed/chunks/{subset-worker.chunk-B24w3nw0.js → subset-worker.chunk-DGgI6iRY.js} +1 -1
- package/dist-embed/chunks/{sv-SE-XGPEYMSR-CT10IJuV.js → sv-SE-XGPEYMSR-D8CsNMON.js} +1 -1
- package/dist-embed/chunks/{svgDrawCommon-148a3cd9-B38JgGfg.js → svgDrawCommon-148a3cd9-BxzL4r3S.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-CPp_dpjU.js → swimlanes-42K2YHIH-B28jcYJ_.js} +1 -1
- package/dist-embed/chunks/{swimlanes-42K2YHIH-DHlC5c8j.js → swimlanes-42K2YHIH-BZP55aw9.js} +1 -1
- package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-BIQqrjYQ.js +8 -0
- package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-hQM0t42-.js +8 -0
- package/dist-embed/chunks/{ta-IN-2NMHFXQM-HSbClJ74.js → ta-IN-2NMHFXQM-CvuxKO7t.js} +1 -1
- package/dist-embed/chunks/{th-TH-HPSO5L25-B2hciv_c.js → th-TH-HPSO5L25-NgQJigwq.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-CKyPT4PB.js → timeline-definition-24CTP7MA-CficHg2r.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-24CTP7MA-D9gzYUYy.js → timeline-definition-24CTP7MA-De_e-NOu.js} +1 -1
- package/dist-embed/chunks/{timeline-definition-7545f45a-BWnp7J60.js → timeline-definition-7545f45a-DqfcISSR.js} +1 -1
- package/dist-embed/chunks/{tokens-C8cD27Uo.js → tokens-B5KQP74f.js} +1 -1
- package/dist-embed/chunks/{tr-TR-DEFEU3FU-BWwXpAYZ.js → tr-TR-DEFEU3FU-eu9-qLmi.js} +1 -1
- package/dist-embed/chunks/{uk-UA-QMV73CPH-Dj7E5VqN.js → uk-UA-QMV73CPH-CbjmuLVL.js} +1 -1
- package/dist-embed/chunks/{venn.esm-DCEZyyO1.js → venn.esm-QMuJZ7sT.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-bbhu-7hk.js → vennDiagram-4TSXK5OY-DIL1dW8w.js} +1 -1
- package/dist-embed/chunks/{vennDiagram-4TSXK5OY-F_ETYUiw.js → vennDiagram-4TSXK5OY-DmLAzLnR.js} +1 -1
- package/dist-embed/chunks/{vi-VN-M7AON7JQ-PsrEnccg.js → vi-VN-M7AON7JQ-u84yOuJ-.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-DOvpFGv3.js → wardleyDiagram-VM6X3IG4-Cb_52SC-.js} +1 -1
- package/dist-embed/chunks/{wardleyDiagram-VM6X3IG4-3pZGhbDZ.js → wardleyDiagram-VM6X3IG4-DfZqkrsZ.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-3f383b91-DZLtCOMM.js → xychartDiagram-3f383b91-DGvBSaRz.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-CFYS5J-K.js → xychartDiagram-S5SC5T6Z-6OM1k4o6.js} +1 -1
- package/dist-embed/chunks/{xychartDiagram-S5SC5T6Z-DSYuijxd.js → xychartDiagram-S5SC5T6Z-xYHAmg9u.js} +1 -1
- package/dist-embed/chunks/{zh-CN-LNUGB5OW-BaQu8uAz.js → zh-CN-LNUGB5OW-ojkSgl-t.js} +1 -1
- package/dist-embed/chunks/{zh-HK-E62DVLB3-BidFwl7n.js → zh-HK-E62DVLB3-C6M89-Da.js} +1 -1
- package/dist-embed/chunks/{zh-TW-RAJ6MFWO-Bm6PhMc5.js → zh-TW-RAJ6MFWO-BaTtFORh.js} +1 -1
- package/dist-embed/datalayer-app-main.js +19 -19
- package/lib/apps/apps/AppRenderer.d.ts +12 -0
- package/lib/apps/apps/AppRenderer.js +38 -5
- package/lib/apps/apps/visitorToken.d.ts +29 -0
- package/lib/apps/apps/visitorToken.js +57 -0
- package/lib/apps/plugins/agents/DatalayerAgentBridge.js +71 -2
- package/lib/apps/plugins/agents/switchable.js +3 -2
- package/lib/apps/plugins/chat/ChatView.js +11 -1
- package/package.json +1 -1
- package/scripts/record-scene-checks.py +80 -20
- package/dist-embed/chunks/Avatar-VyZWLCFE.js +0 -1
- package/dist-embed/chunks/ChatView-Bqiq0mvd.js +0 -288
- package/dist-embed/chunks/DatalayerAgentBridge-BhxfUyb7.js +0 -1
- package/dist-embed/chunks/channel-gqCIn1TE.js +0 -1
- package/dist-embed/chunks/classDiagram-ZZMXUADV-BmkR_bZ0.js +0 -1
- package/dist-embed/chunks/classDiagram-ZZMXUADV-Db5VIrmE.js +0 -1
- package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-BmkR_bZ0.js +0 -1
- package/dist-embed/chunks/classDiagram-v2-VYDZK3BY-Db5VIrmE.js +0 -1
- package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-CHSJtozR.js +0 -1
- package/dist-embed/chunks/stateDiagram-v2-MP3YSRHH-Grhw6_l4.js +0 -1
- package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-DA8nqWDf.js +0 -8
- package/dist-embed/chunks/swimlanesDiagram-VR7AAH4N-PPX_kI6A.js +0 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{v as te,r as z,j as e,B as n,H as F,
|
|
2
|
-
`),l=new Blob([r],{type:"text/csv;charset=utf-8;"}),s=URL.createObjectURL(l),a=document.createElement("a");a.href=s;const d=new Date().toISOString().replace(/[:.]/g,"-");a.download=`context-usage-${t.agentId}-${d}.csv`,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(s)}function Tt(t){switch(t.toLowerCase()){case"messages":case"history":return Ge;case"tools":case"tool definitions":return Be;case"system":case"system prompts":return qe;case"cache":return Pe;default:return me}}function At({agentId:t,apiBase:o,liveData:r,messageCount:l=0,defaultView:s="overview",chartHeight:a="200px"}){const[d,c]=z.useState(s),[h,f]=z.useState(!1),S=r!==void 0,u=r,b=!S,m=z.useMemo(()=>{if(!u?.perRequestUsage||u.perRequestUsage.length===0)return null;const g=u.perRequestUsage;let C=0,N=0;const B=[],M=[],w=[],X=[];return g.forEach(W=>{C+=W.inputTokens,N+=W.outputTokens,B.push(`#${W.requestNum}`),M.push(C),w.push(N),X.push(C+N)}),{tooltip:{trigger:"axis",formatter:W=>{let U=`<strong>${W[0]?.axisValue||""}</strong><br/>`;return W.forEach($=>{U+=`${$.marker} ${$.seriesName}: ${D($.value)}<br/>`}),U}},legend:{data:["Input","Output","Total"],bottom:0,textStyle:{fontSize:10}},grid:{left:45,right:15,top:10,bottom:35},xAxis:{type:"category",data:B,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10,formatter:W=>D(W)}},series:[{name:"Input",type:"line",data:M,smooth:!0,lineStyle:{width:2},areaStyle:{opacity:.2},itemStyle:{color:"#3B82F6"}},{name:"Output",type:"line",data:w,smooth:!0,lineStyle:{width:2},areaStyle:{opacity:.2},itemStyle:{color:"#10B981"}},{name:"Total",type:"line",data:X,smooth:!0,lineStyle:{width:2,type:"dashed"},itemStyle:{color:"#8B5CF6"}}]}},[u?.perRequestUsage]),R=z.useMemo(()=>{if(!u?.distribution)return null;const{distribution:g}=u,C=g.children&&g.children.length>0;return{tooltip:{formatter:N=>`${N.name}: ${D(N.value)} tokens`},series:[{type:"treemap",data:C?g.children:[{name:"No data",value:1}],roam:!1,breadcrumb:{show:!1},label:{show:!0,formatter:"{b}",fontSize:11},itemStyle:{borderColor:"#fff",borderWidth:2},levels:[{itemStyle:{borderColor:"#777",borderWidth:0,gapWidth:1}},{itemStyle:{borderColor:"#555",borderWidth:5,gapWidth:1},colorSaturation:[.35,.5]},{colorSaturation:[.35,.5]}]}]}},[u?.distribution]);if(b)return e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Context Usage"}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading context details..."})]})]});if(!u)return e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Context Usage"}),e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{fontSize:1,color:"attention.fg"},children:"Waiting for context data from WebSocket stream..."})})]});const{totalTokens:P,contextWindow:y,sessionUsage:p,turnUsage:j,distribution:E}=u,I=l>0?l:Math.max(p?.turns??0,u.perRequestUsage?.length>0?1:0),O=E?.children&&E.children.length>0;return e.jsxs(n,{children:[e.jsxs(n,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",color:"fg.muted"},children:"Context Usage"}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[I>0&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[I," ",I===1?"message sent":"messages sent"]}),e.jsx(L,{size:"small",variant:"invisible",leadingVisual:Re,onClick:()=>It(u),children:"Download"})]})]}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsx(n,{mb:3,children:e.jsxs(i,{sx:{fontSize:1,fontWeight:"semibold"},children:["Total usage: ",D(P)]})}),(p||j)&&e.jsxs(n,{display:"flex",gap:3,mb:3,flexWrap:"wrap",children:[p&&e.jsxs(n,{flex:1,minWidth:120,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:["Session (",p.turns," turns)"]}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold"},children:D(p.inputTokens+p.outputTokens)}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[" ","in ",Te(p.durationSeconds)]})]}),j&&e.jsxs(n,{flex:1,minWidth:120,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:["Last Turn (",j.requests," reqs)"]}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold"},children:D(j.inputTokens+j.outputTokens)}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[" ","in ",Te(j.durationSeconds)]})]})]}),e.jsxs(n,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[e.jsxs(le,{"aria-label":"View mode",size:"small",onChange:g=>{c(["overview","distribution","history"][g])},children:[e.jsx(le.IconButton,{"aria-label":"Overview",selected:d==="overview",icon:Ve}),e.jsx(le.IconButton,{"aria-label":"Distribution",selected:d==="distribution",icon:yt,disabled:!O}),e.jsx(le.IconButton,{"aria-label":"History",selected:d==="history",icon:He})]}),d==="overview"&&e.jsx(L,{size:"small",variant:"invisible",onClick:()=>f(!h),children:h?"Less":"More"})]}),d==="overview"&&e.jsxs(n,{children:[e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[O&&E.children.map(g=>{const C=Tt(g.name),N=g.value/y*100;return e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{color:"fg.muted",width:20,children:e.jsx(C,{size:16})}),e.jsx(i,{sx:{fontSize:1,flex:1},children:g.name}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",minWidth:60},children:D(g.value)}),e.jsx(n,{width:80,children:e.jsx(De,{progress:N,sx:{height:4}})})]},g.name)}),!O&&e.jsx(i,{sx:{color:"fg.muted",fontSize:1,textAlign:"center",py:2},children:"No context data yet. Start a conversation to see usage."})]}),h&&O&&e.jsxs(n,{mt:3,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",fontSize:0,children:[u.systemPromptTokens>0&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["System Prompts:"," ",D(u.systemPromptTokens)," tokens"]}),u.systemPrompts.slice(0,2).map((g,C)=>e.jsxs(i,{sx:{display:"block",ml:2,mt:1,color:"fg.muted"},children:["•"," ",g.length>80?g.slice(0,80)+"...":g]},C))]}),u.toolTokens>0&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["Tools: ",D(u.toolTokens)," tokens (",u.tools.length," tools)"]}),e.jsxs(n,{ml:2,mt:1,children:[u.tools.slice(0,4).map((g,C)=>e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• ",g.name,": ",D(g.totalTokens)]},C)),u.tools.length>4&&e.jsxs(i,{sx:{color:"fg.muted",fontStyle:"italic"},children:["...and ",u.tools.length-4," more"]})]})]}),(u.userMessageTokens>0||u.assistantMessageTokens>0)&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["Messages:"," ",D(u.userMessageTokens+u.assistantMessageTokens)," ","tokens"]}),e.jsxs(n,{ml:2,mt:1,children:[e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• User: ",D(u.userMessageTokens)]}),e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• Assistant:"," ",D(u.assistantMessageTokens)]}),u.toolCallTokens>0&&e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• Tool calls:"," ",D(u.toolCallTokens)]})]})]})]})]}),d==="distribution"&&R&&e.jsx(Ie,{option:R,style:{height:a},opts:{renderer:"svg"}}),d==="history"&&m&&e.jsxs(n,{children:[e.jsx(Ie,{option:m,style:{height:a},opts:{renderer:"svg"}}),h&&u.perRequestUsage.length>0&&e.jsx(n,{mt:2,maxHeight:"150px",overflowY:"auto",fontSize:0,children:u.perRequestUsage.slice(-10).reverse().map((g,C)=>e.jsxs(n,{display:"flex",gap:2,py:1,borderBottom:C<9?"1px solid":"none",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontWeight:"semibold",minWidth:30},children:["#",g.requestNum]}),e.jsxs(i,{sx:{color:"#3B82F6"},children:["↓",D(g.inputTokens)]}),e.jsxs(i,{sx:{color:"#10B981"},children:["↑",D(g.outputTokens)]}),g.toolNames.length>0&&e.jsxs(i,{sx:{color:"fg.muted"},children:["🔧 ",g.toolNames.join(", ")]})]},g.requestNum))})]}),d==="history"&&!m&&e.jsx(n,{py:3,children:e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No history"})})]})]})}function q(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function ee({title:t,icon:o,count:r,tokens:l,defaultExpanded:s=!1,children:a}){const[d,c]=z.useState(s);return e.jsxs(n,{mb:2,children:[e.jsxs(n,{as:"button",onClick:()=>c(!d),display:"flex",alignItems:"center",gap:2,width:"100%",p:2,bg:"canvas.subtle",border:"1px solid",borderColor:"border.default",borderRadius:2,cursor:"pointer",hover:{bg:"canvas.inset"},children:[d?e.jsx(Ye,{size:16}):e.jsx(Xe,{size:16}),te.createElement(o,{size:16}),e.jsx(i,{sx:{fontWeight:"semibold",flex:1,textAlign:"left"},children:t}),r!==void 0&&e.jsx(A,{variant:"secondary",size:"small",children:r}),l!==void 0&&l>0&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[q(l)," tokens"]})]}),d&&e.jsx(n,{border:"1px solid",borderColor:"border.default",borderTop:"none",borderRadius:"0 0 6px 6px",p:2,children:a})]})}function Et({tool:t}){const[o,r]=z.useState(!1),[l,s]=z.useState(!1);return e.jsxs(n,{p:2,mb:2,bg:"canvas.default",border:"1px solid",borderColor:"border.muted",borderRadius:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,mb:1,children:[e.jsx(i,{sx:{fontWeight:"bold",fontFamily:"mono",fontSize:1},children:t.name}),e.jsx(A,{size:"small",variant:"secondary",children:t.sourceType}),t.isAsync&&e.jsx(A,{size:"small",variant:"accent",children:"async"}),t.requiresApproval&&e.jsx(A,{size:"small",variant:"attention",children:"requires approval"}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",ml:"auto"},children:[q(t.totalTokens)," tokens"]})]}),t.description&&e.jsx(i,{sx:{fontSize:1,color:"fg.muted",display:"block",mb:2},children:t.description}),e.jsxs(n,{display:"flex",gap:2,children:[e.jsxs(L,{size:"small",variant:"invisible",onClick:()=>r(!o),children:[o?"Hide":"Show"," Schema"]}),t.sourceCode&&e.jsxs(L,{size:"small",variant:"invisible",onClick:()=>s(!l),children:[l?"Hide":"Show"," Source"]})]}),o&&e.jsx(n,{as:"pre",mt:2,p:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",maxHeight:200,children:JSON.stringify(t.parametersSchema,null,2)}),l&&t.sourceCode&&e.jsx(n,{as:"pre",mt:2,p:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",maxHeight:300,children:t.sourceCode})]})}function Ut({agentId:t,apiBase:o,liveData:r}){const l=r!==void 0,s=r;if(!l)return e.jsx(n,{p:3,display:"flex",alignItems:"center",justifyContent:"center",children:e.jsx(i,{sx:{color:"fg.muted"},children:"Waiting for context data from WebSocket stream..."})});if(!s)return e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{color:"attention.fg"},children:"No context data available."})});if(s.error)return e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{color:"attention.fg"},children:s.error})});const{tokenSummary:a,modelConfiguration:d}=s;return e.jsxs(n,{children:[e.jsxs(n,{mb:3,children:[e.jsxs(i,{sx:{fontSize:1,fontWeight:"semibold"},children:["Total usage: ",q(a.total)," /"," ",q(a.contextWindow)," (",Math.round(a.usagePercent),"%)"]}),e.jsx(De,{progress:Math.min(a.usagePercent,100),sx:{mt:2,height:8},bg:a.usagePercent>90?"danger.emphasis":a.usagePercent>70?"attention.emphasis":"success.emphasis"}),e.jsxs(n,{display:"flex",gap:3,mt:2,flexWrap:"wrap",fontSize:0,color:"fg.muted",children:[e.jsxs(i,{children:["System: ",q(a.systemPrompts)]}),e.jsxs(i,{children:["Tools: ",q(a.tools)]}),a.memory>0&&e.jsxs(i,{children:["Memory: ",q(a.memory)]}),e.jsxs(i,{children:["History: ",q(a.history)]}),e.jsxs(i,{children:["Current: ",q(a.current)]})]})]}),e.jsx(ee,{title:"Model Configuration",icon:Ke,defaultExpanded:!1,children:e.jsxs(n,{display:"grid",gridTemplateColumns:"1fr 2fr",gap:2,children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Model:"}),e.jsx(i,{sx:{fontSize:1,fontFamily:"mono"},children:d.modelName||"Not specified"}),e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Context Window:"}),e.jsxs(i,{sx:{fontSize:1},children:[q(d.contextWindow)," tokens"]}),Object.keys(d.settings).length>0&&e.jsxs(e.Fragment,{children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Settings:"}),e.jsx(n,{as:"pre",fontSize:0,p:2,bg:"canvas.inset",borderRadius:2,overflow:"auto",children:JSON.stringify(d.settings,null,2)})]})]})}),e.jsx(ee,{title:"System Prompts",icon:Je,count:s.systemPrompts.length,tokens:s.systemPromptTokens,children:s.systemPrompts.length===0?e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No system prompts configured"}):s.systemPrompts.map((c,h)=>e.jsxs(n,{p:2,mb:2,bg:"canvas.inset",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(n,{display:"flex",justifyContent:"space-between",mb:1,children:[e.jsxs(i,{sx:{fontWeight:"semibold",fontSize:0},children:["Prompt ",h+1]}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[q(c.tokens)," tokens"]})]}),e.jsx(i,{as:"pre",sx:{fontSize:0,whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:200,overflow:"auto"},children:c.content})]},h))}),e.jsx(ee,{title:"Tool Definitions",icon:jt,count:s.tools.length,tokens:s.toolTokens,children:s.tools.length===0?e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No tools configured"}):s.tools.map((c,h)=>e.jsx(Et,{tool:c},h))}),s.memoryBlocks.length>0&&e.jsx(ee,{title:"Memory Blocks",icon:Pe,count:s.memoryBlocks.length,tokens:s.memoryTokens,children:s.memoryBlocks.map((c,h)=>e.jsx(n,{as:"pre",p:2,mb:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",children:JSON.stringify(c,null,2)},h))}),Object.keys(s.toolEnvironment).length>0&&e.jsx(ee,{title:"Tool Environment",icon:V,count:Object.keys(s.toolEnvironment).length,children:e.jsx(n,{display:"grid",gridTemplateColumns:"1fr 2fr",gap:2,children:Object.entries(s.toolEnvironment).map(([c,h])=>e.jsxs(te.Fragment,{children:[e.jsx(i,{sx:{fontFamily:"mono",fontSize:1,fontWeight:"semibold"},children:c}),e.jsx(i,{sx:{fontFamily:"mono",fontSize:1,color:"fg.muted"},children:h})]},c))})}),s.toolRules.length>0&&e.jsx(ee,{title:"Tool Rules",icon:ce,count:s.toolRules.length,children:s.toolRules.map((c,h)=>e.jsx(n,{as:"pre",p:2,mb:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",children:JSON.stringify(c,null,2)},h))})]})}const ye={provider:"github",displayName:"GitHub",iconUrl:"https://github.githubassets.com/favicons/favicon.svg",authorizationUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",revocationUrl:"https://api.github.com/applications/{client_id}/token",defaultScopes:["read:user","user:email"]},je={provider:"google",displayName:"Google",iconUrl:"https://www.google.com/favicon.ico",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v2/userinfo",revocationUrl:"https://oauth2.googleapis.com/revoke",defaultScopes:["openid","email","profile"],additionalParams:{access_type:"offline",prompt:"consent"}},Se={provider:"kaggle",displayName:"Kaggle",iconUrl:"https://www.kaggle.com/static/images/favicon.ico",authorizationUrl:"https://www.kaggle.com/oauth/authorize",tokenUrl:"https://www.kaggle.com/oauth/token",userInfoUrl:"https://www.kaggle.com/api/v1/me",defaultScopes:["datasets:read","notebooks:read"]};function _t(t=64){const o=Math.max(43,Math.min(128,t)),r=new Uint8Array(o);return crypto.getRandomValues(r),we(r)}async function Rt(t){const r=new TextEncoder().encode(t),l=await crypto.subtle.digest("SHA-256",r);return we(new Uint8Array(l))}function Dt(){const t=new Uint8Array(32);return crypto.getRandomValues(t),we(t)}function we(t){let o="";const r=new Uint8Array(t);for(let l=0;l<r.length;l++)o+=String.fromCharCode(r[l]);return o=btoa(o),o.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Pt(){const t=_t(),o=await Rt(t);return{codeVerifier:t,codeChallenge:o}}const Ot="datalayer-agent-identities",Ae="/api/v1/identity/oauth/token",Mt="/api/v1/identity/oauth/userinfo",Wt="/api/v1/identity/oauth/revoke",$t={identities:new Map,pendingAuthorization:null,providerConfigs:new Map,isLoading:!1,error:null};function Nt(t,o,r,l){const s=new URLSearchParams({client_id:t.clientId,redirect_uri:t.redirectUri,response_type:"code",scope:o.join(" "),state:r,code_challenge:l,code_challenge_method:"S256",...t.additionalParams});return`${t.authorizationUrl}?${s.toString()}`}const T=Qe()(Ze(et(tt((t,o)=>({...$t,configureProvider:r=>{t(l=>{const s=new Map(l.providerConfigs);return s.set(r.provider,r),{providerConfigs:s}})},startAuthorization:async(r,l,s)=>{const d=o().providerConfigs.get(r);if(!d)throw new Error(`Provider ${r} is not configured`);const{codeVerifier:c,codeChallenge:h}=await Pt(),f=Dt(),S=l||d.defaultScopes,u=Nt(d,S,f,h),b={requestId:`auth-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,provider:r,authUrl:u,state:f,codeVerifier:c,scopes:S,requestedAt:Date.now(),onComplete:s?.onComplete,onError:s?.onError};return t({pendingAuthorization:b,error:null}),u},completeAuthorization:async r=>{const l=o(),s=l.pendingAuthorization;if(!s)throw new Error("No pending authorization request");if(r.state!==s.state){const a=new Error("State mismatch - possible CSRF attack");throw s.onError?.(a),t({pendingAuthorization:null,error:a}),a}if(r.error){const a=new Error(r.errorDescription||r.error);throw s.onError?.(a),t({pendingAuthorization:null,error:a}),a}t({isLoading:!0});try{const a=l.providerConfigs.get(s.provider);if(!a)throw new Error(`Provider ${s.provider} is not configured`);const d=a.redirectUri.split("/").slice(0,3).join("/"),c=await fetch(`${d}${Ae}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:s.provider,code:r.code,code_verifier:s.codeVerifier,redirect_uri:a.redirectUri})});if(!c.ok){const b=await c.json().catch(()=>({}));throw new Error(b.detail||`Token exchange failed: ${c.status}`)}const h=await c.json(),f={accessToken:h.access_token,tokenType:h.token_type||"Bearer",expiresAt:h.expires_in?Date.now()+h.expires_in*1e3:void 0,refreshToken:h.refresh_token,scopes:s.scopes};let S;if(a.userInfoUrl)try{const b=await fetch(`${d}${Mt}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:s.provider,access_token:f.accessToken})});if(b.ok){const m=await b.json();S={id:m.id?.toString()||m.sub,username:m.login||m.username,name:m.name,email:m.email,avatarUrl:m.avatar_url||m.picture,profileUrl:m.html_url||m.profile,raw:m}}}catch(b){console.warn("Failed to fetch user info:",b)}const u={provider:s.provider,displayName:a.displayName,iconUrl:a.iconUrl,scopes:s.scopes,isConnected:!0,connectedAt:Date.now(),userInfo:S,token:f};return t(b=>{const m=new Map(b.identities);return m.set(s.provider,u),{identities:m,pendingAuthorization:null,isLoading:!1,error:null}}),s.onComplete?.(u),u}catch(a){const d=a instanceof Error?a:new Error(String(a));throw s.onError?.(d),t({isLoading:!1,error:d,pendingAuthorization:null}),d}},cancelAuthorization:()=>{const r=o().pendingAuthorization;r?.onError&&r.onError(new Error("Authorization cancelled")),t({pendingAuthorization:null})},connectWithToken:async(r,l,s)=>{t({isLoading:!0,error:null});try{const a={accessToken:l,tokenType:"Bearer",scopes:[]},d={kaggle:{displayName:"Kaggle",iconUrl:"https://www.kaggle.com/static/images/favicon.ico"}}[r]||{displayName:r,iconUrl:void 0},c={provider:r,authType:"token",displayName:s?.displayName||d.displayName,iconUrl:s?.iconUrl||d.iconUrl,scopes:[],isConnected:!0,connectedAt:Date.now(),userInfo:s?.userInfo,token:a};return t(h=>{const f=new Map(h.identities);return f.set(r,c),{identities:f,isLoading:!1,error:null}}),c}catch(a){const d=a instanceof Error?a:new Error(String(a));throw t({isLoading:!1,error:d}),d}},disconnect:async r=>{const l=o(),s=l.identities.get(r),a=l.providerConfigs.get(r);if(!s||!s.token){t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}});return}if(s.authType==="token"){t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}});return}if(a?.revocationUrl)try{const d=a.redirectUri.split("/").slice(0,3).join("/");await fetch(`${d}${Wt}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r,access_token:s.token.accessToken})})}catch(d){console.warn("Failed to revoke token:",d)}t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}})},refreshToken:async r=>{const l=o(),s=l.identities.get(r),a=l.providerConfigs.get(r);if(!s||!s.token?.refreshToken)throw new Error(`No refresh token available for ${r}`);if(!a)throw new Error(`Provider ${r} is not configured`);const d=a.redirectUri.split("/").slice(0,3).join("/"),c=await fetch(`${d}${Ae}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r,grant_type:"refresh_token",refresh_token:s.token.refreshToken})});if(!c.ok)throw new Error(`Token refresh failed: ${c.status}`);const h=await c.json(),f={accessToken:h.access_token,tokenType:h.token_type||"Bearer",expiresAt:h.expires_in?Date.now()+h.expires_in*1e3:void 0,refreshToken:h.refresh_token||s.token.refreshToken,scopes:s.scopes};return t(S=>{const u=new Map(S.identities);return u.set(r,{...s,token:f}),{identities:u}}),f},getIdentity:r=>o().identities.get(r),isConnected:r=>o().identities.get(r)?.isConnected??!1,getToken:async r=>{const s=o().identities.get(r);if(!s||!s.token)return null;const a=s.token.expiresAt;if(a&&a-Date.now()<300*1e3){if(s.token.refreshToken)try{return await o().refreshToken(r)}catch(d){return console.warn("Token refresh failed:",d),null}return null}return s.token},clearAll:()=>{t({identities:new Map,pendingAuthorization:null,error:null})},setError:r=>{t({error:r})}}),{name:Ot,storage:{getItem:t=>{const o=localStorage.getItem(t);if(!o)return null;const r=JSON.parse(o),l=new URLSearchParams(window.location.search),s=l.has("code")&&l.has("state");return{state:{...r.state,identities:new Map(r.state.identities||[]),providerConfigs:new Map(r.state.providerConfigs||[]),pendingAuthorization:s&&r.state.pendingAuthorization||null,isLoading:!1,error:null}}},setItem:(t,o)=>{const r={state:{...o.state,identities:Array.from(o.state.identities.entries()),providerConfigs:Array.from(o.state.providerConfigs.entries()),pendingAuthorization:o.state.pendingAuthorization?{...o.state.pendingAuthorization,onComplete:void 0,onError:void 0}:null,isLoading:!1,error:null}};localStorage.setItem(t,JSON.stringify(r))},removeItem:t=>localStorage.removeItem(t)},partialize:t=>({identities:t.identities,providerConfigs:t.providerConfigs,pendingAuthorization:t.pendingAuthorization})})),{name:"IdentityStore"}));function Lt(){return T(Ne(t=>Array.from(t.identities.values()).filter(o=>o.isConnected)))}function Ft(){return T(Ne(t=>Array.from(t.identities.entries()).filter(([o,r])=>r.isConnected).map(([o])=>o)))}function Vt(){return T(t=>t.pendingAuthorization)}function Ht(){return T(t=>t.isLoading)}function qt(){return T(t=>t.error)}function pe(t){const o=T.getState();t.github&&o.configureProvider({...ye,clientId:t.github.clientId,redirectUri:t.github.redirectUri}),t.google&&o.configureProvider({...je,clientId:t.google.clientId,redirectUri:t.google.redirectUri}),t.kaggle&&o.configureProvider({...Se,clientId:t.kaggle.clientId,redirectUri:t.kaggle.redirectUri})}function ke(t={}){const{providers:o,baseUrl:r=typeof window<"u"?window.location.origin:"",callbackPath:l=typeof window<"u"?window.location.pathname:"/oauth/callback",autoHandleCallback:s=!0}=t,a=Lt(),d=Ft(),c=Vt(),h=Ht(),f=qt(),S=T(x=>x.startAuthorization),u=T(x=>x.completeAuthorization),b=T(x=>x.cancelAuthorization),m=T(x=>x.disconnect),R=T(x=>x.getIdentity),P=T(x=>x.isConnected),y=T(x=>x.getToken),p=T(x=>x.configureProvider);z.useEffect(()=>{if(!o)return;const x=`${r}${l}`;o.github&&pe({github:{clientId:o.github.clientId,redirectUri:o.github.redirectUri||x}}),o.google&&pe({google:{clientId:o.google.clientId,redirectUri:o.google.redirectUri||x}}),o.kaggle&&pe({kaggle:{clientId:o.kaggle.clientId,redirectUri:o.kaggle.redirectUri||x}}),o.custom&&o.custom.forEach(U=>{p(U)})},[o,r,l,p]),z.useEffect(()=>{if(!s||typeof window>"u")return;const x=new URLSearchParams(window.location.search),U=x.get("code"),$=x.get("state"),G=x.get("error"),H=x.get("error_description");(U&&$||G)&&u({code:U||"",state:$||"",error:G||void 0,errorDescription:H||void 0}).then(()=>{const K=window.location.pathname;window.history.replaceState({},"",K)}).catch(K=>{console.error("OAuth callback error:",K);const Q=window.location.pathname;window.history.replaceState({},"",Q)})},[s,u]);const j=z.useCallback(async(x,U)=>{const $=await S(x,U);window.location.href=$},[S]),E=z.useCallback(async(x,U)=>{const $=await S(x,U,{onComplete:()=>{},onError:()=>{}});return new Promise((G,H)=>{const K=T.getState();K.pendingAuthorization&&(K.pendingAuthorization.onComplete=G,K.pendingAuthorization.onError=H);const Q=600,k=700,ue=window.screenX+(window.outerWidth-Q)/2,v=window.screenY+(window.outerHeight-k)/2,_=window.open($,"oauth_popup",`width=${Q},height=${k},left=${ue},top=${v},toolbar=no,menubar=no`);if(!_){H(new Error("Failed to open popup window"));return}const J=Y=>{if(Y.origin===window.location.origin)if(Y.data?.type==="oauth-callback-success"){window.removeEventListener("message",J),clearInterval(se),_.close();const ie=Y.data.provider,re=Y.data.identity;if(console.debug("[Identity] Received oauth-callback-success for provider:",ie),console.debug("[Identity] Identity from popup:",re),re){const ve=T.getState().identities,Z=new Map(ve);Z.set(ie,re),T.setState({identities:Z,pendingAuthorization:null}),console.debug("[Identity] Store updated with identity from popup, identities count:",Z.size),G(re);return}setTimeout(()=>{const Z=localStorage.getItem("agent-runtimes-identity");if(console.debug("[Identity] Fallback: reading from localStorage"),Z)try{const Le=JSON.parse(Z).state?.identities||[],fe=new Map(Le).get(ie);if(fe){const Fe=T.getState().identities,Ce=new Map(Fe);Ce.set(ie,fe),T.setState({identities:Ce,pendingAuthorization:null}),G(fe);return}}catch(ze){console.error("[Identity] Failed to parse identity from localStorage:",ze)}T.setState({pendingAuthorization:null}),H(new Error("Identity not found after OAuth success"))},100)}else Y.data?.type==="oauth-callback-error"?(window.removeEventListener("message",J),clearInterval(se),_.close(),T.setState({pendingAuthorization:null}),H(new Error(Y.data.error||"OAuth authentication failed"))):Y.data?.type==="oauth_callback"&&(window.removeEventListener("message",J),clearInterval(se),_.close(),u(Y.data.payload).then(G).catch(H))};window.addEventListener("message",J);const se=setInterval(()=>{_.closed&&(clearInterval(se),window.removeEventListener("message",J),T.getState().pendingAuthorization&&(b(),H(new Error("Popup closed by user"))))},500)})},[S,u,b]),I=T(x=>x.connectWithToken),O=z.useCallback(async(x,U,$)=>I(x,U,$),[I]),g=z.useCallback(async x=>{await m(x)},[m]),C=z.useCallback(async x=>u(x),[u]),N=z.useCallback(()=>{b()},[b]),B=z.useCallback(x=>P(x),[P]),M=z.useCallback(x=>R(x),[R]),w=z.useCallback(async x=>(await y(x))?.accessToken??null,[y]),X=z.useCallback(x=>{p(x)},[p]),W=c!==null;return z.useMemo(()=>({identities:a,connectedProviders:d,isAuthorizing:W,isLoading:h,error:f,pendingAuthorization:c,connect:j,connectWithPopup:E,connectWithToken:O,disconnect:g,completeAuthorization:C,cancelAuthorization:N,isConnected:B,getIdentity:M,getAccessToken:w,configureProvider:X}),[a,d,W,h,f,c,j,E,O,g,C,N,B,M,w,X])}const Ee={github:{name:"GitHub",icon:We,color:"#24292f",description:"Access GitHub repositories and APIs"},google:{name:"Google",icon:V,color:"#4285f4",description:"Access Google services and APIs"},kaggle:{name:"Kaggle",icon:V,color:"#20beff",description:"Access Kaggle datasets and notebooks"},linkedin:{name:"LinkedIn",icon:V,color:"#0077b5",description:"Access LinkedIn profile and connections"},slack:{name:"Slack",icon:V,color:"#4a154b",description:"Access Slack workspaces and channels"},notion:{name:"Notion",icon:V,color:"#000000",description:"Access Notion pages and databases"},custom:{name:"Custom",icon:de,color:"#6f42c1",description:"Custom OAuth provider"}},Bt={github:["read:user","user:email"],google:["openid","profile","email"],kaggle:["read"],linkedin:["r_liteprofile","r_emailaddress"],slack:["users:read","channels:read"],notion:["read_content"],custom:[]},Gt=({provider:t,clientId:o,providerConfig:r,scopes:l,disabled:s=!1,size:a="medium",variant:d="full",onConnect:c,onDisconnect:h,onError:f})=>{const{identities:S,isAuthorizing:u,error:b,connectWithPopup:m,disconnect:R,configureProvider:P}=ke(),y=Ee[t]||Ee.custom,p=S.find(g=>g.provider===t),j=!!p,E=u;te.useEffect(()=>{if(o){const g=t==="github"?ye:t==="google"?je:t==="kaggle"?Se:void 0;if(g){const C=r?.redirectUri||(typeof window<"u"?`${window.location.origin}${window.location.pathname}`:"");P({...g,...r,provider:t,clientId:o,redirectUri:C})}}},[o,t,r,P]);const I=z.useCallback(async()=>{try{if(j)await R(t),h?.(t);else{const g=await m(t,l||Bt[t]);c?.(g)}}catch(g){const C=g instanceof Error?g.message:String(g);C!=="Popup closed by user"&&f?.(g instanceof Error?g:new Error(C))}},[j,t,l,m,R,c,h,f]);te.useEffect(()=>{b&&f?.(b instanceof Error?b:new Error(String(b)))},[b,f]);const O={onClick:I,disabled:s||E||!o&&!j,size:a==="large"?"large":a==="small"?"small":"medium"};return d==="icon"?e.jsx(L,{...O,variant:j?"primary":"default","aria-label":j?`Disconnect ${y.name}`:`Connect ${y.name}`,sx:{width:a==="small"?28:a==="large"?44:36,height:a==="small"?28:a==="large"?44:36,p:0},children:E?e.jsx(n,{as:"span",className:"anim-rotate",display:"inline-block",children:"⏳"}):e.jsx(y.icon,{size:a==="small"?14:18})}):d==="compact"?e.jsx(L,{...O,variant:j?"primary":"default",leadingVisual:y.icon,trailingVisual:j?Oe:void 0,children:E?"Connecting...":y.name}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:2,border:"1px solid",borderColor:j?"success.muted":"border.default",borderRadius:2,backgroundColor:j?"success.subtle":"canvas.subtle",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{width:40,height:40,borderRadius:2,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:y.color,color:"white",children:e.jsx(y.icon,{size:20})}),e.jsxs(n,{flex:1,children:[e.jsx(i,{sx:{fontWeight:"bold",display:"block"},children:y.name}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:j&&p?.userInfo?`Connected as ${p.userInfo.name||p.userInfo.email}`:y.description})]}),!j&&e.jsx(L,{...O,variant:"primary",leadingVisual:de,children:E?"Working...":"Connect"})]}),j&&p&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,pl:1,children:[p.userInfo?.avatarUrl&&e.jsx("a",{href:p.userInfo.profileUrl||`https://github.com/${p.userInfo.username}`,target:"_blank",rel:"noopener noreferrer",style:{display:"block",lineHeight:0},children:e.jsx("img",{src:p.userInfo.avatarUrl,alt:p.userInfo.name||"User avatar",style:{width:32,height:32,borderRadius:"50%",cursor:"pointer"}})}),e.jsxs(n,{flex:1,children:[p.userInfo?.username&&e.jsx("a",{href:p.userInfo.profileUrl||`https://github.com/${p.userInfo.username}`,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none"},children:e.jsxs(i,{sx:{fontSize:1,color:"fg.muted",display:"block",":hover":{textDecoration:"underline"}},children:["@",p.userInfo.username]})}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:p.token?.expiresAt?`Expires ${new Date(p.token.expiresAt).toLocaleDateString()}`:"Token does not expire"})]})]}),p.scopes&&p.scopes.length>0&&e.jsx(n,{display:"flex",flexWrap:"wrap",gap:1,pl:1,children:p.scopes.map(g=>e.jsx(i,{sx:{fontSize:0,px:2,py:1,bg:"neutral.muted",borderRadius:2,color:"fg.muted"},children:g},g))}),e.jsxs(L,{...O,variant:"danger",leadingVisual:$e,children:["Disconnect from ",y.name]})]})]})},Ue={github:{name:"GitHub",icon:We,color:"#24292f",description:"Access GitHub repositories and APIs"},google:{name:"Google",icon:V,color:"#4285f4",description:"Access Google services and APIs"},kaggle:{name:"Kaggle",icon:V,color:"#20beff",description:"Access Kaggle datasets and notebooks"},linkedin:{name:"LinkedIn",icon:V,color:"#0077b5",description:"Access LinkedIn profile"},slack:{name:"Slack",icon:V,color:"#4a154b",description:"Access Slack workspaces"},notion:{name:"Notion",icon:V,color:"#000000",description:"Access Notion pages"},custom:{name:"Custom",icon:de,color:"#6f42c1",description:"Custom OAuth provider"}},Kt={github:["read:user","user:email","repo"],google:["openid","profile","email"],kaggle:["read"],linkedin:["r_liteprofile","r_emailaddress"],slack:["users:read","channels:read"],notion:["read_content"],custom:[]};function Jt(t){if(!t)return{isExpired:!1,isExpiringSoon:!1};const o=Date.now(),r=new Date(t),l=t-o,s=o-t,a=300*1e3;return{isExpired:l<0,isExpiringSoon:l>0&&l<a,expiresAt:r,timeUntilExpiry:l>0?l:void 0,timeSinceExpiry:l<0?s:void 0}}function he(t){const o=Math.floor(t/1e3),r=Math.floor(o/60),l=Math.floor(r/60),s=Math.floor(l/24);return s>0?s===1?"1 day":`${s} days`:l>0?l===1?"1 hour":`${l} hours`:r>0?r===1?"1 minute":`${r} minutes`:o===1?"1 second":`${o} seconds`}function Yt(t){return t.isExpired&&t.timeSinceExpiry?`Expired ${he(t.timeSinceExpiry)} ago`:t.timeUntilExpiry?t.isExpiringSoon?`Expires in ${he(t.timeUntilExpiry)}`:`Expires in ${he(t.timeUntilExpiry)}`:"Token does not expire"}function Xt({identity:t,providerConfig:o,showExpirationDetails:r=!0,allowReconnect:l=!0,onConnect:s,onDisconnect:a,onError:d}){const{connect:c,disconnect:h,configureProvider:f,isAuthorizing:S}=ke(),u=t.provider,b=Ue[u]||Ue.custom,m=z.useMemo(()=>Jt(t.token?.expiresAt),[t.token?.expiresAt]);te.useEffect(()=>{if(o?.clientId){const y=u==="github"?ye:u==="google"?je:u==="kaggle"?Se:void 0;if(y){const p=o.config?.redirectUri||(typeof window<"u"?`${window.location.origin}${window.location.pathname}`:"");f({...y,...o.config,provider:u,clientId:o.clientId,redirectUri:p})}}},[o,u,f]);const R=z.useCallback(async()=>{try{const y=o?.scopes||Kt[u];await c(u,y)}catch(y){d?.(y instanceof Error?y:new Error(String(y)))}},[u,o?.scopes,c,d]),P=z.useCallback(async()=>{try{await h(u),a?.(u)}catch(y){d?.(y instanceof Error?y:new Error(String(y)))}},[u,h,a,d]);return e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:3,border:"1px solid",borderColor:m.isExpired?"danger.muted":m.isExpiringSoon?"attention.muted":"success.muted",borderRadius:2,backgroundColor:m.isExpired?"danger.subtle":m.isExpiringSoon?"attention.subtle":"success.subtle",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{width:32,height:32,borderRadius:2,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:b.color,color:"white",children:e.jsx(b.icon,{size:16})}),e.jsxs(n,{flex:1,display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:b.name}),e.jsx(A,{size:"small",variant:"secondary",children:t.authType==="token"?"API Key":"OAuth"})]}),m.isExpired?e.jsx(A,{variant:"danger",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(nt,{size:12})," Expired"]})}):m.isExpiringSoon?e.jsx(A,{variant:"attention",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(me,{size:12})," Expiring Soon"]})}):e.jsx(A,{variant:"success",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(Oe,{size:12})," Connected"]})})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[t.userInfo?.avatarUrl&&e.jsx("a",{href:t.userInfo.profileUrl||(u==="github"?`https://github.com/${t.userInfo.username}`:void 0),target:"_blank",rel:"noopener noreferrer",style:{display:"block",lineHeight:0},children:e.jsx(kt,{src:t.userInfo.avatarUrl,size:32,alt:t.userInfo.name||t.userInfo.username||b.name,sx:{cursor:"pointer"}})}),e.jsxs(n,{flex:1,minWidth:0,children:[t.userInfo?.name&&e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1,display:"block"},children:t.userInfo.name}),(t.userInfo?.username||t.userInfo?.email)&&e.jsx("a",{href:t.userInfo.profileUrl||(u==="github"?`https://github.com/${t.userInfo.username}`:void 0),target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none"},children:e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",":hover":{textDecoration:"underline"}},children:t.userInfo.username?`@${t.userInfo.username}`:t.userInfo.email})})]})]}),r&&e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(me,{size:12}),e.jsx(i,{sx:{fontSize:0,color:m.isExpired?"danger.fg":m.isExpiringSoon?"attention.fg":"fg.muted"},children:Yt(m)})]}),t.scopes&&t.scopes.length>0&&e.jsx(n,{display:"flex",flexWrap:"wrap",gap:1,children:t.scopes.map(y=>e.jsx(A,{size:"small",variant:"secondary",children:y},y))}),e.jsxs(n,{display:"flex",gap:2,mt:1,children:[m.isExpired&&l&&o?.clientId&&e.jsx(ot,{text:"Reconnect to refresh token",children:e.jsx(L,{variant:"primary",size:"small",leadingVisual:st,onClick:R,disabled:S,children:S?"Connecting...":"Reconnect"})}),e.jsxs(L,{variant:m.isExpired?"invisible":"danger",size:"small",leadingVisual:$e,onClick:P,disabled:S,children:["Disconnect from ",b.name]})]})]})}function Qt({providers:t,title:o="Connected Accounts",showHeader:r=!0,showDescription:l=!0,description:s="Connected identities for this agent. Agents can use these to access external services on your behalf.",showExpirationDetails:a=!0,allowReconnect:d=!0,onConnect:c,onDisconnect:h,onError:f}){const{identities:S,error:u}=ke(),b=z.useMemo(()=>{if(t){const p=Object.keys(t);return S.filter(j=>p.includes(j.provider)||j.authType==="token"&&j.isConnected)}return S},[S,t]),m=z.useMemo(()=>new Set(S.map(p=>p.provider)),[S]),R=z.useMemo(()=>{if(!t)return{};const p=Object.keys(t),j={};for(const E of p)m.has(E)||(j[E]=t[E]);return j},[t,m]),P=Object.keys(R).length>0,y=z.useCallback(p=>j=>{f?.(p,j)},[f]);return b.length===0&&!t?null:e.jsxs(n,{children:[r&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,mb:2,children:[e.jsx(V,{size:16}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold",color:"fg.muted"},children:o})]}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[l&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",mb:b.length>0?3:0},children:s}),u&&e.jsx(wt,{variant:"danger",sx:{mb:3},children:u instanceof Error?u.message:String(u)}),b.length>0?e.jsx(n,{display:"flex",flexDirection:"column",gap:2,children:b.map(p=>e.jsx(Xt,{identity:p,providerConfig:t?.[p.provider],showExpirationDetails:a,allowReconnect:d,onConnect:c,onDisconnect:h,onError:y(p.provider)},p.provider))}):P?null:e.jsxs(n,{display:"flex",alignItems:"center",gap:2,color:"fg.muted",children:[e.jsx(de,{size:16}),e.jsx(i,{sx:{fontSize:1},children:"No connected accounts"})]}),P&&e.jsxs(n,{mt:b.length>0?3:0,children:[b.length>0&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",mb:2},children:"Connect additional accounts:"}),e.jsx(n,{display:"flex",flexDirection:"column",gap:2,children:Object.keys(R).map(p=>{const j=R[p];return e.jsx(Gt,{provider:p,clientId:j.clientId,scopes:j.scopes,providerConfig:j.config,size:"medium",variant:"full",onConnect:c,onDisconnect:h,onError:y(p)},p)})})]})]})]})}const ge=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),xe=t=>{if(t==null)return"null";if(typeof t=="number"||typeof t=="boolean")return String(t);const o=String(t);return o===""?"''":/^[a-zA-Z0-9._/-]+$/.test(o)?o:JSON.stringify(o)},be=(t,o=0)=>{const r=" ".repeat(o);if(Array.isArray(t))return t.length===0?"[]":t.map(l=>ge(l)||Array.isArray(l)?`${r}-
|
|
3
|
-
${be(l,
|
|
4
|
-
`);if(ge(t)){const l=Object.entries(t).filter(([,
|
|
5
|
-
${be(a,
|
|
6
|
-
`)}return`${r}${xe(t)}`};function Zt(t){return be(t)}function en({spec:t,onClose:
|
|
7
|
-
`),d=new Blob([a],{type:"text/csv;charset=utf-8;"}),c=document.createElement("a"),h=URL.createObjectURL(d);c.setAttribute("href",h),c.setAttribute("download",`context-snapshot-${t}-${new Date().toISOString().slice(0,10)}.csv`),c.style.visibility="hidden",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(h)}function un({name:t="AI Agent",icon:o,emoji:r,protocol:l,url:s,messageCount:a,agentId:d,apiBase:c,identityProviders:h,onIdentityConnect:f,onIdentityDisconnect:S,onBack:u,showBackHeader:b=!0,showUsage:m=!0,padded:R=!0,mcpStatusData:P,codemodeStatusData:y,contextSnapshotData:p,fullContextData:j,runtime:E=!0,summary:I}){const O=rt(),g=lt(),C=at(),N=ct(),B=dt(),M=P??O,w=y??g,X=p??C,W=j??N,x=P!==void 0||B!=="closed",U=y!==void 0||B!=="closed",$=B==="connecting"&&!M,G=B==="connecting"&&!w,H=ut({mutationFn:async v=>{const _=_e(c),J=await fetch(`${_}/api/v1/configure/codemode/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:v})});if(!J.ok)throw new Error("Failed to toggle codemode");return J.json()},onSuccess:()=>{}}),[K,Q]=z.useState(!1),{data:k,isLoading:ue}=ft({queryKey:["agent-spec",d,c],queryFn:async()=>{const v=_e(c),_=await fetch(`${v}/api/v1/configure/agents/${encodeURIComponent(d)}/spec`);if(!_.ok)throw new Error("Failed to fetch agent spec");return _.json()},enabled:!!d&&E});return e.jsxs(n,{display:"flex",flexDirection:"column",height:"100%",bg:"canvas.default",overflow:"auto",children:[b&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,p:3,borderBottom:"1px solid",borderColor:"border.default",children:[e.jsx(Me,{icon:bt,"aria-label":"Back to chat",variant:"invisible",onClick:u}),e.jsx(F,{as:"h2",sx:{fontSize:3,fontWeight:"semibold"},children:"Agent Details"})]}),e.jsxs(n,{p:R?3:0,display:"flex",flexDirection:"column",gap:4,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:3,p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsx(n,{p:2,bg:"accent.subtle",borderRadius:2,children:o?e.jsx(n,{display:"inline-flex",color:"accent.fg",children:o}):r?e.jsx(i,{sx:{fontSize:5,lineHeight:1},children:r}):e.jsx(pt,{colored:!0,size:32})}),e.jsxs(n,{flex:1,children:[e.jsx(F,{as:"h3",sx:{fontSize:2,fontWeight:"semibold",mb:1},children:t}),d&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:["ID: ",d]})]})]}),I&&(I.spec||I.model||I.where||I.description||I.skills?.length)&&e.jsxs(n,{"data-agent-details-summary":"",children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Agent"}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",display:"flex",flexDirection:"column",gap:1,children:[I.description&&e.jsx(i,{as:"p",sx:{fontSize:1,m:0,mb:1},children:I.description}),[["Spec",I.spec],["Model",I.model],["Runs",I.where]].filter(([,v])=>v).map(([v,_])=>e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:[v,":"]}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono"},children:_})]},v)),I.skills&&I.skills.length>0&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Skills:"}),e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",children:I.skills.map(v=>e.jsx(A,{variant:"secondary",size:"small",children:v},v))})]})]})]}),s&&e.jsx(e.Fragment,{children:e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Connection"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(A,{variant:"accent",size:"small",children:l.toUpperCase().replace(/-/g," ")}),e.jsx(i,{sx:{fontSize:1,fontFamily:"mono",wordBreak:"break-all"},children:s})]})})]})}),E&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Agentspec"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:ue?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading agent spec..."})]}):k?e.jsxs(n,{display:"flex",flexDirection:"column",gap:3,children:[e.jsx(n,{children:e.jsx(L,{size:"small",leadingVisual:St,onClick:()=>Q(!0),children:"View spec payload"})}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Model:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default"},children:k.model})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Library:"}),e.jsx(A,{variant:"secondary",size:"small",children:k.agent_library})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Codemode:"}),e.jsx(A,{variant:k.enable_codemode?"accent":"secondary",size:"small",children:k.enable_codemode?"Enabled":"Disabled"})]}),k.enable_skills&&k.skills.length>0&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Skills:"}),e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",children:k.skills.map(v=>e.jsx(A,{variant:"secondary",size:"small",children:v},v))})]})]}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ht,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"System Prompt"})]}),e.jsx(n,{p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",maxHeight:200,overflow:"auto",children:e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:"fg.default"},children:k.system_prompt})})]}),k.system_prompt_codemode_addons&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Codemode Addon Prompt"}),k.enable_codemode?e.jsx(A,{variant:"accent",size:"small",children:"Active"}):e.jsx(A,{variant:"secondary",size:"small",children:"Inactive"})]}),e.jsx(n,{p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",maxHeight:200,overflow:"auto",children:e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:"fg.default"},children:k.system_prompt_codemode_addons})})]})]}):e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"No agent spec available"})})]}),k?.sandbox&&e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Code Sandbox"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(gt,{size:16}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Variant:"}),e.jsx(A,{variant:k.sandbox.variant==="jupyter-server"?"accent":"secondary",size:"small",children:k.sandbox.variant})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Running:"}),k.sandbox.sandbox_running?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Yes"})]}):e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(oe,{size:12,fill:"fg.muted"}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:"No"})]})]}),k.sandbox.variant==="jupyter-server"&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Jupyter URL:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k.jupyter_sandbox||k.sandbox.jupyter_url||"Not configured"})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Connection:"}),k.sandbox.jupyter_connected?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Connected"})]}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(oe,{size:12,fill:"danger.fg"}),e.jsx(i,{sx:{fontSize:0,color:"danger.fg"},children:"Not Connected"})]}),k.sandbox.jupyter_error&&e.jsx(i,{sx:{fontSize:0,color:"danger.fg",fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:k.sandbox.jupyter_error})]})]})]}),k.sandbox.generated_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Generated:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.generated_path,children:k.sandbox.generated_path})]}),k.sandbox.skills_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Skills:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.skills_path,children:k.sandbox.skills_path})]}),k.sandbox.python_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Python:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.python_path,children:k.sandbox.python_path})]})]})})]}),e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Config MCP Servers"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:!x&&$?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading MCP status..."})]}):M?e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsx(n,{display:"flex",alignItems:"center",gap:2,children:e.jsxs(i,{sx:{fontSize:1},children:[e.jsx(i,{as:"span",sx:{fontWeight:"semibold"},children:M.ready_count})," ","ready,"," ",e.jsx(i,{as:"span",sx:{fontWeight:"semibold"},children:M.failed_count})," ","failed"]})}),M.ready_servers.length>0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Ready:"}),M.ready_servers.map(v=>e.jsxs(n,{display:"flex",alignItems:"center",gap:2,pl:2,children:[e.jsx(ne,{size:16,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:1},children:v})]},v))]}),Object.keys(M.failed_servers).length>0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Failed:"}),Object.entries(M.failed_servers).map(([v,_])=>e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,pl:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(oe,{size:16,fill:"danger.fg"}),e.jsx(i,{sx:{fontSize:1},children:v})]}),e.jsx(i,{sx:{fontSize:0,color:"danger.fg",fontFamily:"mono",pl:4,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:_.split(`
|
|
8
|
-
`)[0]})]},v))]})]}):x?e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Waiting for MCP status from WebSocket stream..."}):e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Failed to load MCP status"})})]}),e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Codemode"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:!U&&G?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading Codemode status..."})]}):w?e.jsxs(n,{display:"flex",flexDirection:"column",gap:3,children:[e.jsxs(n,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsxs(n,{children:[e.jsx(i,{id:"codemode-toggle-label",sx:{fontSize:1,fontWeight:"semibold"},children:"Codemode"}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",marginLeft:1},children:"MCP servers become programmatic tools"})]})]}),e.jsx(xt,{"aria-labelledby":"codemode-toggle-label",checked:w.enabled,onClick:()=>H.mutate(!w.enabled),disabled:H.isPending,size:"small"})]}),w.sandbox&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Code Sandbox"})]}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,pl:4,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Variant:"}),e.jsx(A,{variant:w.sandbox.variant==="jupyter-server"?"accent":"secondary",size:"small",children:w.sandbox.variant})]}),w.sandbox.variant==="jupyter-server"&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"URL:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:w.sandbox.jupyter_url||"Not configured"})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Status:"}),w.sandbox.jupyter_connected?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Connected"})]}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(
|
|
1
|
+
import{v as te,r as z,j as e,B as n,H as F,cQ as ae,T as i,c as L,eN as Re,e$ as le,f0 as Ve,f1 as He,f2 as De,f3 as me,f4 as Pe,f5 as qe,f6 as Be,f7 as Ge,f8 as Ke,f9 as Je,fa as V,n as ce,bm as Ye,cP as Xe,L as A,aP as Qe,fb as Ze,fc as et,fd as tt,fe as Oe,ff as nt,dw as st,cN as ot,I as Me,eK as it,fg as rt,fh as lt,fi as at,fj as ct,fk as dt,fl as ut,fm as ft,fn as pt,fo as ht,fp as gt,fq as ne,fr as se,cO as xt,fs as mt}from"../datalayer-app-main.js";import{A as bt}from"./ArrowLeftIcon-Y3PTljcl.js";import{A as yt,T as jt,M as We,U as $e,F as St}from"./UnlinkIcon-DuVqPyB-.js";import Ie from"./index-hib7vWC6.js";import{L as de}from"./LinkIcon-DUI0jw25.js";import{F as wt}from"./Flash-DdFxPtBI.js";import{A as kt}from"./Avatar-Dqz3ZWjZ.js";function vt(t,s){if(Object.is(t,s))return!0;if(typeof t!="object"||t===null||typeof s!="object"||s===null)return!1;if(t instanceof Map&&s instanceof Map){if(t.size!==s.size)return!1;for(const[l,o]of t)if(!Object.is(o,s.get(l)))return!1;return!0}if(t instanceof Set&&s instanceof Set){if(t.size!==s.size)return!1;for(const l of t)if(!s.has(l))return!1;return!0}const r=Object.keys(t);if(r.length!==Object.keys(s).length)return!1;for(const l of r)if(!Object.prototype.hasOwnProperty.call(s,l)||!Object.is(t[l],s[l]))return!1;return!0}const{useRef:zt}=te;function Ne(t){const s=zt();return r=>{const l=t(r);return vt(s.current,l)?s.current:s.current=l}}function D(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function Te(t){if(!Number.isFinite(t)||Number.isNaN(t)||t<0)return"0ms";if(t<1)return`${Math.max(0,Math.round(t*1e3))}ms`;if(t<60)return`${t.toFixed(1)}s`;const s=Math.floor(t/60),r=Math.round(t%60);return`${s}m ${r}s`}function Ct(t){const s=String(t??"");return/[",\n]/.test(s)?`"${s.replace(/"/g,'""')}"`:s}function It(t){const s=[];s.push(["Context Usage Snapshot for Agent",t.agentId]),s.push(["Generated At",new Date().toISOString()]),s.push([]),s.push(["Summary"]),s.push(["Total Tokens",t.totalTokens]),s.push(["Context Window",t.contextWindow]),s.push(["System Prompt Tokens",t.systemPromptTokens]),s.push(["Tool Tokens",t.toolTokens]),s.push(["History Tokens",t.historyTokens]),s.push(["Current Message Tokens",t.currentMessageTokens]),s.push(["User Message Tokens",t.userMessageTokens]),s.push(["Assistant Message Tokens",t.assistantMessageTokens]),s.push([]),t.sessionUsage&&(s.push(["Session Usage"]),s.push(["Input Tokens",t.sessionUsage.inputTokens]),s.push(["Output Tokens",t.sessionUsage.outputTokens]),s.push(["Requests",t.sessionUsage.requests]),s.push(["Tool Calls",t.sessionUsage.toolCalls]),s.push(["Turns",t.sessionUsage.turns]),s.push(["Duration Seconds",t.sessionUsage.durationSeconds]),s.push([])),t.turnUsage&&(s.push(["Last Turn Usage"]),s.push(["Input Tokens",t.turnUsage.inputTokens]),s.push(["Output Tokens",t.turnUsage.outputTokens]),s.push(["Requests",t.turnUsage.requests]),s.push(["Tool Calls",t.turnUsage.toolCalls]),s.push(["Duration Seconds",t.turnUsage.durationSeconds]),s.push([])),s.push(["Distribution"]),s.push(["Category","Tokens"]);for(const c of t.distribution?.children??[])s.push([c.name,c.value]);if(s.push([]),t.perRequestUsage.length>0){s.push(["Per Request Usage"]),s.push(["Request #","Input Tokens","Output Tokens","Duration Ms","Tool Names","Timestamp","Turn ID"]);for(const c of t.perRequestUsage)s.push([c.requestNum,c.inputTokens,c.outputTokens,c.durationMs,c.toolNames.join("; "),c.timestamp??"",c.turnId??""])}const r=s.map(c=>c.map(Ct).join(",")).join(`
|
|
2
|
+
`),l=new Blob([r],{type:"text/csv;charset=utf-8;"}),o=URL.createObjectURL(l),a=document.createElement("a");a.href=o;const d=new Date().toISOString().replace(/[:.]/g,"-");a.download=`context-usage-${t.agentId}-${d}.csv`,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(o)}function Tt(t){switch(t.toLowerCase()){case"messages":case"history":return Ge;case"tools":case"tool definitions":return Be;case"system":case"system prompts":return qe;case"cache":return Pe;default:return me}}function At({agentId:t,apiBase:s,liveData:r,messageCount:l=0,defaultView:o="overview",chartHeight:a="200px"}){const[d,c]=z.useState(o),[h,f]=z.useState(!1),S=r!==void 0,u=r,b=!S,m=z.useMemo(()=>{if(!u?.perRequestUsage||u.perRequestUsage.length===0)return null;const g=u.perRequestUsage;let C=0,N=0;const B=[],M=[],w=[],X=[];return g.forEach(W=>{C+=W.inputTokens,N+=W.outputTokens,B.push(`#${W.requestNum}`),M.push(C),w.push(N),X.push(C+N)}),{tooltip:{trigger:"axis",formatter:W=>{let U=`<strong>${W[0]?.axisValue||""}</strong><br/>`;return W.forEach($=>{U+=`${$.marker} ${$.seriesName}: ${D($.value)}<br/>`}),U}},legend:{data:["Input","Output","Total"],bottom:0,textStyle:{fontSize:10}},grid:{left:45,right:15,top:10,bottom:35},xAxis:{type:"category",data:B,axisLabel:{fontSize:10}},yAxis:{type:"value",axisLabel:{fontSize:10,formatter:W=>D(W)}},series:[{name:"Input",type:"line",data:M,smooth:!0,lineStyle:{width:2},areaStyle:{opacity:.2},itemStyle:{color:"#3B82F6"}},{name:"Output",type:"line",data:w,smooth:!0,lineStyle:{width:2},areaStyle:{opacity:.2},itemStyle:{color:"#10B981"}},{name:"Total",type:"line",data:X,smooth:!0,lineStyle:{width:2,type:"dashed"},itemStyle:{color:"#8B5CF6"}}]}},[u?.perRequestUsage]),R=z.useMemo(()=>{if(!u?.distribution)return null;const{distribution:g}=u,C=g.children&&g.children.length>0;return{tooltip:{formatter:N=>`${N.name}: ${D(N.value)} tokens`},series:[{type:"treemap",data:C?g.children:[{name:"No data",value:1}],roam:!1,breadcrumb:{show:!1},label:{show:!0,formatter:"{b}",fontSize:11},itemStyle:{borderColor:"#fff",borderWidth:2},levels:[{itemStyle:{borderColor:"#777",borderWidth:0,gapWidth:1}},{itemStyle:{borderColor:"#555",borderWidth:5,gapWidth:1},colorSaturation:[.35,.5]},{colorSaturation:[.35,.5]}]}]}},[u?.distribution]);if(b)return e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Context Usage"}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading context details..."})]})]});if(!u)return e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Context Usage"}),e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{fontSize:1,color:"attention.fg"},children:"Waiting for context data from WebSocket stream..."})})]});const{totalTokens:P,contextWindow:y,sessionUsage:p,turnUsage:j,distribution:E}=u,I=l>0?l:Math.max(p?.turns??0,u.perRequestUsage?.length>0?1:0),O=E?.children&&E.children.length>0;return e.jsxs(n,{children:[e.jsxs(n,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",color:"fg.muted"},children:"Context Usage"}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[I>0&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[I," ",I===1?"message sent":"messages sent"]}),e.jsx(L,{size:"small",variant:"invisible",leadingVisual:Re,onClick:()=>It(u),children:"Download"})]})]}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsx(n,{mb:3,children:e.jsxs(i,{sx:{fontSize:1,fontWeight:"semibold"},children:["Total usage: ",D(P)]})}),(p||j)&&e.jsxs(n,{display:"flex",gap:3,mb:3,flexWrap:"wrap",children:[p&&e.jsxs(n,{flex:1,minWidth:120,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:["Session (",p.turns," turns)"]}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold"},children:D(p.inputTokens+p.outputTokens)}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[" ","in ",Te(p.durationSeconds)]})]}),j&&e.jsxs(n,{flex:1,minWidth:120,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:["Last Turn (",j.requests," reqs)"]}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold"},children:D(j.inputTokens+j.outputTokens)}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[" ","in ",Te(j.durationSeconds)]})]})]}),e.jsxs(n,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[e.jsxs(le,{"aria-label":"View mode",size:"small",onChange:g=>{c(["overview","distribution","history"][g])},children:[e.jsx(le.IconButton,{"aria-label":"Overview",selected:d==="overview",icon:Ve}),e.jsx(le.IconButton,{"aria-label":"Distribution",selected:d==="distribution",icon:yt,disabled:!O}),e.jsx(le.IconButton,{"aria-label":"History",selected:d==="history",icon:He})]}),d==="overview"&&e.jsx(L,{size:"small",variant:"invisible",onClick:()=>f(!h),children:h?"Less":"More"})]}),d==="overview"&&e.jsxs(n,{children:[e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[O&&E.children.map(g=>{const C=Tt(g.name),N=g.value/y*100;return e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{color:"fg.muted",width:20,children:e.jsx(C,{size:16})}),e.jsx(i,{sx:{fontSize:1,flex:1},children:g.name}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",minWidth:60},children:D(g.value)}),e.jsx(n,{width:80,children:e.jsx(De,{progress:N,sx:{height:4}})})]},g.name)}),!O&&e.jsx(i,{sx:{color:"fg.muted",fontSize:1,textAlign:"center",py:2},children:"No context data yet. Start a conversation to see usage."})]}),h&&O&&e.jsxs(n,{mt:3,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.muted",fontSize:0,children:[u.systemPromptTokens>0&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["System Prompts:"," ",D(u.systemPromptTokens)," tokens"]}),u.systemPrompts.slice(0,2).map((g,C)=>e.jsxs(i,{sx:{display:"block",ml:2,mt:1,color:"fg.muted"},children:["•"," ",g.length>80?g.slice(0,80)+"...":g]},C))]}),u.toolTokens>0&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["Tools: ",D(u.toolTokens)," tokens (",u.tools.length," tools)"]}),e.jsxs(n,{ml:2,mt:1,children:[u.tools.slice(0,4).map((g,C)=>e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• ",g.name,": ",D(g.totalTokens)]},C)),u.tools.length>4&&e.jsxs(i,{sx:{color:"fg.muted",fontStyle:"italic"},children:["...and ",u.tools.length-4," more"]})]})]}),(u.userMessageTokens>0||u.assistantMessageTokens>0)&&e.jsxs(n,{mb:2,children:[e.jsxs(i,{sx:{fontWeight:"semibold"},children:["Messages:"," ",D(u.userMessageTokens+u.assistantMessageTokens)," ","tokens"]}),e.jsxs(n,{ml:2,mt:1,children:[e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• User: ",D(u.userMessageTokens)]}),e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• Assistant:"," ",D(u.assistantMessageTokens)]}),u.toolCallTokens>0&&e.jsxs(i,{sx:{display:"block",color:"fg.muted"},children:["• Tool calls:"," ",D(u.toolCallTokens)]})]})]})]})]}),d==="distribution"&&R&&e.jsx(Ie,{option:R,style:{height:a},opts:{renderer:"svg"}}),d==="history"&&m&&e.jsxs(n,{children:[e.jsx(Ie,{option:m,style:{height:a},opts:{renderer:"svg"}}),h&&u.perRequestUsage.length>0&&e.jsx(n,{mt:2,maxHeight:"150px",overflowY:"auto",fontSize:0,children:u.perRequestUsage.slice(-10).reverse().map((g,C)=>e.jsxs(n,{display:"flex",gap:2,py:1,borderBottom:C<9?"1px solid":"none",borderColor:"border.muted",children:[e.jsxs(i,{sx:{fontWeight:"semibold",minWidth:30},children:["#",g.requestNum]}),e.jsxs(i,{sx:{color:"#3B82F6"},children:["↓",D(g.inputTokens)]}),e.jsxs(i,{sx:{color:"#10B981"},children:["↑",D(g.outputTokens)]}),g.toolNames.length>0&&e.jsxs(i,{sx:{color:"fg.muted"},children:["🔧 ",g.toolNames.join(", ")]})]},g.requestNum))})]}),d==="history"&&!m&&e.jsx(n,{py:3,children:e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No history"})})]})]})}function q(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function ee({title:t,icon:s,count:r,tokens:l,defaultExpanded:o=!1,children:a}){const[d,c]=z.useState(o);return e.jsxs(n,{mb:2,children:[e.jsxs(n,{as:"button",onClick:()=>c(!d),display:"flex",alignItems:"center",gap:2,width:"100%",p:2,bg:"canvas.subtle",border:"1px solid",borderColor:"border.default",borderRadius:2,cursor:"pointer",hover:{bg:"canvas.inset"},children:[d?e.jsx(Ye,{size:16}):e.jsx(Xe,{size:16}),te.createElement(s,{size:16}),e.jsx(i,{sx:{fontWeight:"semibold",flex:1,textAlign:"left"},children:t}),r!==void 0&&e.jsx(A,{variant:"secondary",size:"small",children:r}),l!==void 0&&l>0&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[q(l)," tokens"]})]}),d&&e.jsx(n,{border:"1px solid",borderColor:"border.default",borderTop:"none",borderRadius:"0 0 6px 6px",p:2,children:a})]})}function Et({tool:t}){const[s,r]=z.useState(!1),[l,o]=z.useState(!1);return e.jsxs(n,{p:2,mb:2,bg:"canvas.default",border:"1px solid",borderColor:"border.muted",borderRadius:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,mb:1,children:[e.jsx(i,{sx:{fontWeight:"bold",fontFamily:"mono",fontSize:1},children:t.name}),e.jsx(A,{size:"small",variant:"secondary",children:t.sourceType}),t.isAsync&&e.jsx(A,{size:"small",variant:"accent",children:"async"}),t.requiresApproval&&e.jsx(A,{size:"small",variant:"attention",children:"requires approval"}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",ml:"auto"},children:[q(t.totalTokens)," tokens"]})]}),t.description&&e.jsx(i,{sx:{fontSize:1,color:"fg.muted",display:"block",mb:2},children:t.description}),e.jsxs(n,{display:"flex",gap:2,children:[e.jsxs(L,{size:"small",variant:"invisible",onClick:()=>r(!s),children:[s?"Hide":"Show"," Schema"]}),t.sourceCode&&e.jsxs(L,{size:"small",variant:"invisible",onClick:()=>o(!l),children:[l?"Hide":"Show"," Source"]})]}),s&&e.jsx(n,{as:"pre",mt:2,p:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",maxHeight:200,children:JSON.stringify(t.parametersSchema,null,2)}),l&&t.sourceCode&&e.jsx(n,{as:"pre",mt:2,p:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",maxHeight:300,children:t.sourceCode})]})}function Ut({agentId:t,apiBase:s,liveData:r}){const l=r!==void 0,o=r;if(!l)return e.jsx(n,{p:3,display:"flex",alignItems:"center",justifyContent:"center",children:e.jsx(i,{sx:{color:"fg.muted"},children:"Waiting for context data from WebSocket stream..."})});if(!o)return e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{color:"attention.fg"},children:"No context data available."})});if(o.error)return e.jsx(n,{p:3,bg:"attention.subtle",borderRadius:2,border:"1px solid",borderColor:"attention.muted",children:e.jsx(i,{sx:{color:"attention.fg"},children:o.error})});const{tokenSummary:a,modelConfiguration:d}=o;return e.jsxs(n,{children:[e.jsxs(n,{mb:3,children:[e.jsxs(i,{sx:{fontSize:1,fontWeight:"semibold"},children:["Total usage: ",q(a.total)," /"," ",q(a.contextWindow)," (",Math.round(a.usagePercent),"%)"]}),e.jsx(De,{progress:Math.min(a.usagePercent,100),sx:{mt:2,height:8},bg:a.usagePercent>90?"danger.emphasis":a.usagePercent>70?"attention.emphasis":"success.emphasis"}),e.jsxs(n,{display:"flex",gap:3,mt:2,flexWrap:"wrap",fontSize:0,color:"fg.muted",children:[e.jsxs(i,{children:["System: ",q(a.systemPrompts)]}),e.jsxs(i,{children:["Tools: ",q(a.tools)]}),a.memory>0&&e.jsxs(i,{children:["Memory: ",q(a.memory)]}),e.jsxs(i,{children:["History: ",q(a.history)]}),e.jsxs(i,{children:["Current: ",q(a.current)]})]})]}),e.jsx(ee,{title:"Model Configuration",icon:Ke,defaultExpanded:!1,children:e.jsxs(n,{display:"grid",gridTemplateColumns:"1fr 2fr",gap:2,children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Model:"}),e.jsx(i,{sx:{fontSize:1,fontFamily:"mono"},children:d.modelName||"Not specified"}),e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Context Window:"}),e.jsxs(i,{sx:{fontSize:1},children:[q(d.contextWindow)," tokens"]}),Object.keys(d.settings).length>0&&e.jsxs(e.Fragment,{children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:"Settings:"}),e.jsx(n,{as:"pre",fontSize:0,p:2,bg:"canvas.inset",borderRadius:2,overflow:"auto",children:JSON.stringify(d.settings,null,2)})]})]})}),e.jsx(ee,{title:"System Prompts",icon:Je,count:o.systemPrompts.length,tokens:o.systemPromptTokens,children:o.systemPrompts.length===0?e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No system prompts configured"}):o.systemPrompts.map((c,h)=>e.jsxs(n,{p:2,mb:2,bg:"canvas.inset",borderRadius:2,border:"1px solid",borderColor:"border.muted",children:[e.jsxs(n,{display:"flex",justifyContent:"space-between",mb:1,children:[e.jsxs(i,{sx:{fontWeight:"semibold",fontSize:0},children:["Prompt ",h+1]}),e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:[q(c.tokens)," tokens"]})]}),e.jsx(i,{as:"pre",sx:{fontSize:0,whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:200,overflow:"auto"},children:c.content})]},h))}),e.jsx(ee,{title:"Tool Definitions",icon:jt,count:o.tools.length,tokens:o.toolTokens,children:o.tools.length===0?e.jsx(i,{sx:{color:"fg.muted",fontSize:1},children:"No tools configured"}):o.tools.map((c,h)=>e.jsx(Et,{tool:c},h))}),o.memoryBlocks.length>0&&e.jsx(ee,{title:"Memory Blocks",icon:Pe,count:o.memoryBlocks.length,tokens:o.memoryTokens,children:o.memoryBlocks.map((c,h)=>e.jsx(n,{as:"pre",p:2,mb:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",children:JSON.stringify(c,null,2)},h))}),Object.keys(o.toolEnvironment).length>0&&e.jsx(ee,{title:"Tool Environment",icon:V,count:Object.keys(o.toolEnvironment).length,children:e.jsx(n,{display:"grid",gridTemplateColumns:"1fr 2fr",gap:2,children:Object.entries(o.toolEnvironment).map(([c,h])=>e.jsxs(te.Fragment,{children:[e.jsx(i,{sx:{fontFamily:"mono",fontSize:1,fontWeight:"semibold"},children:c}),e.jsx(i,{sx:{fontFamily:"mono",fontSize:1,color:"fg.muted"},children:h})]},c))})}),o.toolRules.length>0&&e.jsx(ee,{title:"Tool Rules",icon:ce,count:o.toolRules.length,children:o.toolRules.map((c,h)=>e.jsx(n,{as:"pre",p:2,mb:2,bg:"canvas.inset",borderRadius:2,fontSize:0,overflow:"auto",children:JSON.stringify(c,null,2)},h))})]})}const ye={provider:"github",displayName:"GitHub",iconUrl:"https://github.githubassets.com/favicons/favicon.svg",authorizationUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",revocationUrl:"https://api.github.com/applications/{client_id}/token",defaultScopes:["read:user","user:email"]},je={provider:"google",displayName:"Google",iconUrl:"https://www.google.com/favicon.ico",authorizationUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v2/userinfo",revocationUrl:"https://oauth2.googleapis.com/revoke",defaultScopes:["openid","email","profile"],additionalParams:{access_type:"offline",prompt:"consent"}},Se={provider:"kaggle",displayName:"Kaggle",iconUrl:"https://www.kaggle.com/static/images/favicon.ico",authorizationUrl:"https://www.kaggle.com/oauth/authorize",tokenUrl:"https://www.kaggle.com/oauth/token",userInfoUrl:"https://www.kaggle.com/api/v1/me",defaultScopes:["datasets:read","notebooks:read"]};function _t(t=64){const s=Math.max(43,Math.min(128,t)),r=new Uint8Array(s);return crypto.getRandomValues(r),we(r)}async function Rt(t){const r=new TextEncoder().encode(t),l=await crypto.subtle.digest("SHA-256",r);return we(new Uint8Array(l))}function Dt(){const t=new Uint8Array(32);return crypto.getRandomValues(t),we(t)}function we(t){let s="";const r=new Uint8Array(t);for(let l=0;l<r.length;l++)s+=String.fromCharCode(r[l]);return s=btoa(s),s.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Pt(){const t=_t(),s=await Rt(t);return{codeVerifier:t,codeChallenge:s}}const Ot="datalayer-agent-identities",Ae="/api/v1/identity/oauth/token",Mt="/api/v1/identity/oauth/userinfo",Wt="/api/v1/identity/oauth/revoke",$t={identities:new Map,pendingAuthorization:null,providerConfigs:new Map,isLoading:!1,error:null};function Nt(t,s,r,l){const o=new URLSearchParams({client_id:t.clientId,redirect_uri:t.redirectUri,response_type:"code",scope:s.join(" "),state:r,code_challenge:l,code_challenge_method:"S256",...t.additionalParams});return`${t.authorizationUrl}?${o.toString()}`}const T=Qe()(Ze(et(tt((t,s)=>({...$t,configureProvider:r=>{t(l=>{const o=new Map(l.providerConfigs);return o.set(r.provider,r),{providerConfigs:o}})},startAuthorization:async(r,l,o)=>{const d=s().providerConfigs.get(r);if(!d)throw new Error(`Provider ${r} is not configured`);const{codeVerifier:c,codeChallenge:h}=await Pt(),f=Dt(),S=l||d.defaultScopes,u=Nt(d,S,f,h),b={requestId:`auth-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,provider:r,authUrl:u,state:f,codeVerifier:c,scopes:S,requestedAt:Date.now(),onComplete:o?.onComplete,onError:o?.onError};return t({pendingAuthorization:b,error:null}),u},completeAuthorization:async r=>{const l=s(),o=l.pendingAuthorization;if(!o)throw new Error("No pending authorization request");if(r.state!==o.state){const a=new Error("State mismatch - possible CSRF attack");throw o.onError?.(a),t({pendingAuthorization:null,error:a}),a}if(r.error){const a=new Error(r.errorDescription||r.error);throw o.onError?.(a),t({pendingAuthorization:null,error:a}),a}t({isLoading:!0});try{const a=l.providerConfigs.get(o.provider);if(!a)throw new Error(`Provider ${o.provider} is not configured`);const d=a.redirectUri.split("/").slice(0,3).join("/"),c=await fetch(`${d}${Ae}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:o.provider,code:r.code,code_verifier:o.codeVerifier,redirect_uri:a.redirectUri})});if(!c.ok){const b=await c.json().catch(()=>({}));throw new Error(b.detail||`Token exchange failed: ${c.status}`)}const h=await c.json(),f={accessToken:h.access_token,tokenType:h.token_type||"Bearer",expiresAt:h.expires_in?Date.now()+h.expires_in*1e3:void 0,refreshToken:h.refresh_token,scopes:o.scopes};let S;if(a.userInfoUrl)try{const b=await fetch(`${d}${Mt}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:o.provider,access_token:f.accessToken})});if(b.ok){const m=await b.json();S={id:m.id?.toString()||m.sub,username:m.login||m.username,name:m.name,email:m.email,avatarUrl:m.avatar_url||m.picture,profileUrl:m.html_url||m.profile,raw:m}}}catch(b){console.warn("Failed to fetch user info:",b)}const u={provider:o.provider,displayName:a.displayName,iconUrl:a.iconUrl,scopes:o.scopes,isConnected:!0,connectedAt:Date.now(),userInfo:S,token:f};return t(b=>{const m=new Map(b.identities);return m.set(o.provider,u),{identities:m,pendingAuthorization:null,isLoading:!1,error:null}}),o.onComplete?.(u),u}catch(a){const d=a instanceof Error?a:new Error(String(a));throw o.onError?.(d),t({isLoading:!1,error:d,pendingAuthorization:null}),d}},cancelAuthorization:()=>{const r=s().pendingAuthorization;r?.onError&&r.onError(new Error("Authorization cancelled")),t({pendingAuthorization:null})},connectWithToken:async(r,l,o)=>{t({isLoading:!0,error:null});try{const a={accessToken:l,tokenType:"Bearer",scopes:[]},d={kaggle:{displayName:"Kaggle",iconUrl:"https://www.kaggle.com/static/images/favicon.ico"}}[r]||{displayName:r,iconUrl:void 0},c={provider:r,authType:"token",displayName:o?.displayName||d.displayName,iconUrl:o?.iconUrl||d.iconUrl,scopes:[],isConnected:!0,connectedAt:Date.now(),userInfo:o?.userInfo,token:a};return t(h=>{const f=new Map(h.identities);return f.set(r,c),{identities:f,isLoading:!1,error:null}}),c}catch(a){const d=a instanceof Error?a:new Error(String(a));throw t({isLoading:!1,error:d}),d}},disconnect:async r=>{const l=s(),o=l.identities.get(r),a=l.providerConfigs.get(r);if(!o||!o.token){t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}});return}if(o.authType==="token"){t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}});return}if(a?.revocationUrl)try{const d=a.redirectUri.split("/").slice(0,3).join("/");await fetch(`${d}${Wt}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r,access_token:o.token.accessToken})})}catch(d){console.warn("Failed to revoke token:",d)}t(d=>{const c=new Map(d.identities);return c.delete(r),{identities:c}})},refreshToken:async r=>{const l=s(),o=l.identities.get(r),a=l.providerConfigs.get(r);if(!o||!o.token?.refreshToken)throw new Error(`No refresh token available for ${r}`);if(!a)throw new Error(`Provider ${r} is not configured`);const d=a.redirectUri.split("/").slice(0,3).join("/"),c=await fetch(`${d}${Ae}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r,grant_type:"refresh_token",refresh_token:o.token.refreshToken})});if(!c.ok)throw new Error(`Token refresh failed: ${c.status}`);const h=await c.json(),f={accessToken:h.access_token,tokenType:h.token_type||"Bearer",expiresAt:h.expires_in?Date.now()+h.expires_in*1e3:void 0,refreshToken:h.refresh_token||o.token.refreshToken,scopes:o.scopes};return t(S=>{const u=new Map(S.identities);return u.set(r,{...o,token:f}),{identities:u}}),f},getIdentity:r=>s().identities.get(r),isConnected:r=>s().identities.get(r)?.isConnected??!1,getToken:async r=>{const o=s().identities.get(r);if(!o||!o.token)return null;const a=o.token.expiresAt;if(a&&a-Date.now()<300*1e3){if(o.token.refreshToken)try{return await s().refreshToken(r)}catch(d){return console.warn("Token refresh failed:",d),null}return null}return o.token},clearAll:()=>{t({identities:new Map,pendingAuthorization:null,error:null})},setError:r=>{t({error:r})}}),{name:Ot,storage:{getItem:t=>{const s=localStorage.getItem(t);if(!s)return null;const r=JSON.parse(s),l=new URLSearchParams(window.location.search),o=l.has("code")&&l.has("state");return{state:{...r.state,identities:new Map(r.state.identities||[]),providerConfigs:new Map(r.state.providerConfigs||[]),pendingAuthorization:o&&r.state.pendingAuthorization||null,isLoading:!1,error:null}}},setItem:(t,s)=>{const r={state:{...s.state,identities:Array.from(s.state.identities.entries()),providerConfigs:Array.from(s.state.providerConfigs.entries()),pendingAuthorization:s.state.pendingAuthorization?{...s.state.pendingAuthorization,onComplete:void 0,onError:void 0}:null,isLoading:!1,error:null}};localStorage.setItem(t,JSON.stringify(r))},removeItem:t=>localStorage.removeItem(t)},partialize:t=>({identities:t.identities,providerConfigs:t.providerConfigs,pendingAuthorization:t.pendingAuthorization})})),{name:"IdentityStore"}));function Lt(){return T(Ne(t=>Array.from(t.identities.values()).filter(s=>s.isConnected)))}function Ft(){return T(Ne(t=>Array.from(t.identities.entries()).filter(([s,r])=>r.isConnected).map(([s])=>s)))}function Vt(){return T(t=>t.pendingAuthorization)}function Ht(){return T(t=>t.isLoading)}function qt(){return T(t=>t.error)}function pe(t){const s=T.getState();t.github&&s.configureProvider({...ye,clientId:t.github.clientId,redirectUri:t.github.redirectUri}),t.google&&s.configureProvider({...je,clientId:t.google.clientId,redirectUri:t.google.redirectUri}),t.kaggle&&s.configureProvider({...Se,clientId:t.kaggle.clientId,redirectUri:t.kaggle.redirectUri})}function ke(t={}){const{providers:s,baseUrl:r=typeof window<"u"?window.location.origin:"",callbackPath:l=typeof window<"u"?window.location.pathname:"/oauth/callback",autoHandleCallback:o=!0}=t,a=Lt(),d=Ft(),c=Vt(),h=Ht(),f=qt(),S=T(x=>x.startAuthorization),u=T(x=>x.completeAuthorization),b=T(x=>x.cancelAuthorization),m=T(x=>x.disconnect),R=T(x=>x.getIdentity),P=T(x=>x.isConnected),y=T(x=>x.getToken),p=T(x=>x.configureProvider);z.useEffect(()=>{if(!s)return;const x=`${r}${l}`;s.github&&pe({github:{clientId:s.github.clientId,redirectUri:s.github.redirectUri||x}}),s.google&&pe({google:{clientId:s.google.clientId,redirectUri:s.google.redirectUri||x}}),s.kaggle&&pe({kaggle:{clientId:s.kaggle.clientId,redirectUri:s.kaggle.redirectUri||x}}),s.custom&&s.custom.forEach(U=>{p(U)})},[s,r,l,p]),z.useEffect(()=>{if(!o||typeof window>"u")return;const x=new URLSearchParams(window.location.search),U=x.get("code"),$=x.get("state"),G=x.get("error"),H=x.get("error_description");(U&&$||G)&&u({code:U||"",state:$||"",error:G||void 0,errorDescription:H||void 0}).then(()=>{const K=window.location.pathname;window.history.replaceState({},"",K)}).catch(K=>{console.error("OAuth callback error:",K);const Q=window.location.pathname;window.history.replaceState({},"",Q)})},[o,u]);const j=z.useCallback(async(x,U)=>{const $=await S(x,U);window.location.href=$},[S]),E=z.useCallback(async(x,U)=>{const $=await S(x,U,{onComplete:()=>{},onError:()=>{}});return new Promise((G,H)=>{const K=T.getState();K.pendingAuthorization&&(K.pendingAuthorization.onComplete=G,K.pendingAuthorization.onError=H);const Q=600,k=700,ue=window.screenX+(window.outerWidth-Q)/2,v=window.screenY+(window.outerHeight-k)/2,_=window.open($,"oauth_popup",`width=${Q},height=${k},left=${ue},top=${v},toolbar=no,menubar=no`);if(!_){H(new Error("Failed to open popup window"));return}const J=Y=>{if(Y.origin===window.location.origin)if(Y.data?.type==="oauth-callback-success"){window.removeEventListener("message",J),clearInterval(oe),_.close();const ie=Y.data.provider,re=Y.data.identity;if(console.debug("[Identity] Received oauth-callback-success for provider:",ie),console.debug("[Identity] Identity from popup:",re),re){const ve=T.getState().identities,Z=new Map(ve);Z.set(ie,re),T.setState({identities:Z,pendingAuthorization:null}),console.debug("[Identity] Store updated with identity from popup, identities count:",Z.size),G(re);return}setTimeout(()=>{const Z=localStorage.getItem("agent-runtimes-identity");if(console.debug("[Identity] Fallback: reading from localStorage"),Z)try{const Le=JSON.parse(Z).state?.identities||[],fe=new Map(Le).get(ie);if(fe){const Fe=T.getState().identities,Ce=new Map(Fe);Ce.set(ie,fe),T.setState({identities:Ce,pendingAuthorization:null}),G(fe);return}}catch(ze){console.error("[Identity] Failed to parse identity from localStorage:",ze)}T.setState({pendingAuthorization:null}),H(new Error("Identity not found after OAuth success"))},100)}else Y.data?.type==="oauth-callback-error"?(window.removeEventListener("message",J),clearInterval(oe),_.close(),T.setState({pendingAuthorization:null}),H(new Error(Y.data.error||"OAuth authentication failed"))):Y.data?.type==="oauth_callback"&&(window.removeEventListener("message",J),clearInterval(oe),_.close(),u(Y.data.payload).then(G).catch(H))};window.addEventListener("message",J);const oe=setInterval(()=>{_.closed&&(clearInterval(oe),window.removeEventListener("message",J),T.getState().pendingAuthorization&&(b(),H(new Error("Popup closed by user"))))},500)})},[S,u,b]),I=T(x=>x.connectWithToken),O=z.useCallback(async(x,U,$)=>I(x,U,$),[I]),g=z.useCallback(async x=>{await m(x)},[m]),C=z.useCallback(async x=>u(x),[u]),N=z.useCallback(()=>{b()},[b]),B=z.useCallback(x=>P(x),[P]),M=z.useCallback(x=>R(x),[R]),w=z.useCallback(async x=>(await y(x))?.accessToken??null,[y]),X=z.useCallback(x=>{p(x)},[p]),W=c!==null;return z.useMemo(()=>({identities:a,connectedProviders:d,isAuthorizing:W,isLoading:h,error:f,pendingAuthorization:c,connect:j,connectWithPopup:E,connectWithToken:O,disconnect:g,completeAuthorization:C,cancelAuthorization:N,isConnected:B,getIdentity:M,getAccessToken:w,configureProvider:X}),[a,d,W,h,f,c,j,E,O,g,C,N,B,M,w,X])}const Ee={github:{name:"GitHub",icon:We,color:"#24292f",description:"Access GitHub repositories and APIs"},google:{name:"Google",icon:V,color:"#4285f4",description:"Access Google services and APIs"},kaggle:{name:"Kaggle",icon:V,color:"#20beff",description:"Access Kaggle datasets and notebooks"},linkedin:{name:"LinkedIn",icon:V,color:"#0077b5",description:"Access LinkedIn profile and connections"},slack:{name:"Slack",icon:V,color:"#4a154b",description:"Access Slack workspaces and channels"},notion:{name:"Notion",icon:V,color:"#000000",description:"Access Notion pages and databases"},custom:{name:"Custom",icon:de,color:"#6f42c1",description:"Custom OAuth provider"}},Bt={github:["read:user","user:email"],google:["openid","profile","email"],kaggle:["read"],linkedin:["r_liteprofile","r_emailaddress"],slack:["users:read","channels:read"],notion:["read_content"],custom:[]},Gt=({provider:t,clientId:s,providerConfig:r,scopes:l,disabled:o=!1,size:a="medium",variant:d="full",onConnect:c,onDisconnect:h,onError:f})=>{const{identities:S,isAuthorizing:u,error:b,connectWithPopup:m,disconnect:R,configureProvider:P}=ke(),y=Ee[t]||Ee.custom,p=S.find(g=>g.provider===t),j=!!p,E=u;te.useEffect(()=>{if(s){const g=t==="github"?ye:t==="google"?je:t==="kaggle"?Se:void 0;if(g){const C=r?.redirectUri||(typeof window<"u"?`${window.location.origin}${window.location.pathname}`:"");P({...g,...r,provider:t,clientId:s,redirectUri:C})}}},[s,t,r,P]);const I=z.useCallback(async()=>{try{if(j)await R(t),h?.(t);else{const g=await m(t,l||Bt[t]);c?.(g)}}catch(g){const C=g instanceof Error?g.message:String(g);C!=="Popup closed by user"&&f?.(g instanceof Error?g:new Error(C))}},[j,t,l,m,R,c,h,f]);te.useEffect(()=>{b&&f?.(b instanceof Error?b:new Error(String(b)))},[b,f]);const O={onClick:I,disabled:o||E||!s&&!j,size:a==="large"?"large":a==="small"?"small":"medium"};return d==="icon"?e.jsx(L,{...O,variant:j?"primary":"default","aria-label":j?`Disconnect ${y.name}`:`Connect ${y.name}`,sx:{width:a==="small"?28:a==="large"?44:36,height:a==="small"?28:a==="large"?44:36,p:0},children:E?e.jsx(n,{as:"span",className:"anim-rotate",display:"inline-block",children:"⏳"}):e.jsx(y.icon,{size:a==="small"?14:18})}):d==="compact"?e.jsx(L,{...O,variant:j?"primary":"default",leadingVisual:y.icon,trailingVisual:j?Oe:void 0,children:E?"Connecting...":y.name}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:2,border:"1px solid",borderColor:j?"success.muted":"border.default",borderRadius:2,backgroundColor:j?"success.subtle":"canvas.subtle",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{width:40,height:40,borderRadius:2,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:y.color,color:"white",children:e.jsx(y.icon,{size:20})}),e.jsxs(n,{flex:1,children:[e.jsx(i,{sx:{fontWeight:"bold",display:"block"},children:y.name}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:j&&p?.userInfo?`Connected as ${p.userInfo.name||p.userInfo.email}`:y.description})]}),!j&&e.jsx(L,{...O,variant:"primary",leadingVisual:de,children:E?"Working...":"Connect"})]}),j&&p&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,pl:1,children:[p.userInfo?.avatarUrl&&e.jsx("a",{href:p.userInfo.profileUrl||`https://github.com/${p.userInfo.username}`,target:"_blank",rel:"noopener noreferrer",style:{display:"block",lineHeight:0},children:e.jsx("img",{src:p.userInfo.avatarUrl,alt:p.userInfo.name||"User avatar",style:{width:32,height:32,borderRadius:"50%",cursor:"pointer"}})}),e.jsxs(n,{flex:1,children:[p.userInfo?.username&&e.jsx("a",{href:p.userInfo.profileUrl||`https://github.com/${p.userInfo.username}`,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none"},children:e.jsxs(i,{sx:{fontSize:1,color:"fg.muted",display:"block",":hover":{textDecoration:"underline"}},children:["@",p.userInfo.username]})}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block"},children:p.token?.expiresAt?`Expires ${new Date(p.token.expiresAt).toLocaleDateString()}`:"Token does not expire"})]})]}),p.scopes&&p.scopes.length>0&&e.jsx(n,{display:"flex",flexWrap:"wrap",gap:1,pl:1,children:p.scopes.map(g=>e.jsx(i,{sx:{fontSize:0,px:2,py:1,bg:"neutral.muted",borderRadius:2,color:"fg.muted"},children:g},g))}),e.jsxs(L,{...O,variant:"danger",leadingVisual:$e,children:["Disconnect from ",y.name]})]})]})},Ue={github:{name:"GitHub",icon:We,color:"#24292f",description:"Access GitHub repositories and APIs"},google:{name:"Google",icon:V,color:"#4285f4",description:"Access Google services and APIs"},kaggle:{name:"Kaggle",icon:V,color:"#20beff",description:"Access Kaggle datasets and notebooks"},linkedin:{name:"LinkedIn",icon:V,color:"#0077b5",description:"Access LinkedIn profile"},slack:{name:"Slack",icon:V,color:"#4a154b",description:"Access Slack workspaces"},notion:{name:"Notion",icon:V,color:"#000000",description:"Access Notion pages"},custom:{name:"Custom",icon:de,color:"#6f42c1",description:"Custom OAuth provider"}},Kt={github:["read:user","user:email","repo"],google:["openid","profile","email"],kaggle:["read"],linkedin:["r_liteprofile","r_emailaddress"],slack:["users:read","channels:read"],notion:["read_content"],custom:[]};function Jt(t){if(!t)return{isExpired:!1,isExpiringSoon:!1};const s=Date.now(),r=new Date(t),l=t-s,o=s-t,a=300*1e3;return{isExpired:l<0,isExpiringSoon:l>0&&l<a,expiresAt:r,timeUntilExpiry:l>0?l:void 0,timeSinceExpiry:l<0?o:void 0}}function he(t){const s=Math.floor(t/1e3),r=Math.floor(s/60),l=Math.floor(r/60),o=Math.floor(l/24);return o>0?o===1?"1 day":`${o} days`:l>0?l===1?"1 hour":`${l} hours`:r>0?r===1?"1 minute":`${r} minutes`:s===1?"1 second":`${s} seconds`}function Yt(t){return t.isExpired&&t.timeSinceExpiry?`Expired ${he(t.timeSinceExpiry)} ago`:t.timeUntilExpiry?t.isExpiringSoon?`Expires in ${he(t.timeUntilExpiry)}`:`Expires in ${he(t.timeUntilExpiry)}`:"Token does not expire"}function Xt({identity:t,providerConfig:s,showExpirationDetails:r=!0,allowReconnect:l=!0,onConnect:o,onDisconnect:a,onError:d}){const{connect:c,disconnect:h,configureProvider:f,isAuthorizing:S}=ke(),u=t.provider,b=Ue[u]||Ue.custom,m=z.useMemo(()=>Jt(t.token?.expiresAt),[t.token?.expiresAt]);te.useEffect(()=>{if(s?.clientId){const y=u==="github"?ye:u==="google"?je:u==="kaggle"?Se:void 0;if(y){const p=s.config?.redirectUri||(typeof window<"u"?`${window.location.origin}${window.location.pathname}`:"");f({...y,...s.config,provider:u,clientId:s.clientId,redirectUri:p})}}},[s,u,f]);const R=z.useCallback(async()=>{try{const y=s?.scopes||Kt[u];await c(u,y)}catch(y){d?.(y instanceof Error?y:new Error(String(y)))}},[u,s?.scopes,c,d]),P=z.useCallback(async()=>{try{await h(u),a?.(u)}catch(y){d?.(y instanceof Error?y:new Error(String(y)))}},[u,h,a,d]);return e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:3,border:"1px solid",borderColor:m.isExpired?"danger.muted":m.isExpiringSoon?"attention.muted":"success.muted",borderRadius:2,backgroundColor:m.isExpired?"danger.subtle":m.isExpiringSoon?"attention.subtle":"success.subtle",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(n,{width:32,height:32,borderRadius:2,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:b.color,color:"white",children:e.jsx(b.icon,{size:16})}),e.jsxs(n,{flex:1,display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1},children:b.name}),e.jsx(A,{size:"small",variant:"secondary",children:t.authType==="token"?"API Key":"OAuth"})]}),m.isExpired?e.jsx(A,{variant:"danger",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(nt,{size:12})," Expired"]})}):m.isExpiringSoon?e.jsx(A,{variant:"attention",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(me,{size:12})," Expiring Soon"]})}):e.jsx(A,{variant:"success",size:"small",children:e.jsxs(n,{display:"inline-flex",alignItems:"center",gap:1,children:[e.jsx(Oe,{size:12})," Connected"]})})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[t.userInfo?.avatarUrl&&e.jsx("a",{href:t.userInfo.profileUrl||(u==="github"?`https://github.com/${t.userInfo.username}`:void 0),target:"_blank",rel:"noopener noreferrer",style:{display:"block",lineHeight:0},children:e.jsx(kt,{src:t.userInfo.avatarUrl,size:32,alt:t.userInfo.name||t.userInfo.username||b.name,sx:{cursor:"pointer"}})}),e.jsxs(n,{flex:1,minWidth:0,children:[t.userInfo?.name&&e.jsx(i,{sx:{fontWeight:"semibold",fontSize:1,display:"block"},children:t.userInfo.name}),(t.userInfo?.username||t.userInfo?.email)&&e.jsx("a",{href:t.userInfo.profileUrl||(u==="github"?`https://github.com/${t.userInfo.username}`:void 0),target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none"},children:e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",":hover":{textDecoration:"underline"}},children:t.userInfo.username?`@${t.userInfo.username}`:t.userInfo.email})})]})]}),r&&e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(me,{size:12}),e.jsx(i,{sx:{fontSize:0,color:m.isExpired?"danger.fg":m.isExpiringSoon?"attention.fg":"fg.muted"},children:Yt(m)})]}),t.scopes&&t.scopes.length>0&&e.jsx(n,{display:"flex",flexWrap:"wrap",gap:1,children:t.scopes.map(y=>e.jsx(A,{size:"small",variant:"secondary",children:y},y))}),e.jsxs(n,{display:"flex",gap:2,mt:1,children:[m.isExpired&&l&&s?.clientId&&e.jsx(st,{text:"Reconnect to refresh token",children:e.jsx(L,{variant:"primary",size:"small",leadingVisual:ot,onClick:R,disabled:S,children:S?"Connecting...":"Reconnect"})}),e.jsxs(L,{variant:m.isExpired?"invisible":"danger",size:"small",leadingVisual:$e,onClick:P,disabled:S,children:["Disconnect from ",b.name]})]})]})}function Qt({providers:t,title:s="Connected Accounts",showHeader:r=!0,showDescription:l=!0,description:o="Connected identities for this agent. Agents can use these to access external services on your behalf.",showExpirationDetails:a=!0,allowReconnect:d=!0,onConnect:c,onDisconnect:h,onError:f}){const{identities:S,error:u}=ke(),b=z.useMemo(()=>{if(t){const p=Object.keys(t);return S.filter(j=>p.includes(j.provider)||j.authType==="token"&&j.isConnected)}return S},[S,t]),m=z.useMemo(()=>new Set(S.map(p=>p.provider)),[S]),R=z.useMemo(()=>{if(!t)return{};const p=Object.keys(t),j={};for(const E of p)m.has(E)||(j[E]=t[E]);return j},[t,m]),P=Object.keys(R).length>0,y=z.useCallback(p=>j=>{f?.(p,j)},[f]);return b.length===0&&!t?null:e.jsxs(n,{children:[r&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,mb:2,children:[e.jsx(V,{size:16}),e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold",color:"fg.muted"},children:s})]}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[l&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",mb:b.length>0?3:0},children:o}),u&&e.jsx(wt,{variant:"danger",sx:{mb:3},children:u instanceof Error?u.message:String(u)}),b.length>0?e.jsx(n,{display:"flex",flexDirection:"column",gap:2,children:b.map(p=>e.jsx(Xt,{identity:p,providerConfig:t?.[p.provider],showExpirationDetails:a,allowReconnect:d,onConnect:c,onDisconnect:h,onError:y(p.provider)},p.provider))}):P?null:e.jsxs(n,{display:"flex",alignItems:"center",gap:2,color:"fg.muted",children:[e.jsx(de,{size:16}),e.jsx(i,{sx:{fontSize:1},children:"No connected accounts"})]}),P&&e.jsxs(n,{mt:b.length>0?3:0,children:[b.length>0&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted",display:"block",mb:2},children:"Connect additional accounts:"}),e.jsx(n,{display:"flex",flexDirection:"column",gap:2,children:Object.keys(R).map(p=>{const j=R[p];return e.jsx(Gt,{provider:p,clientId:j.clientId,scopes:j.scopes,providerConfig:j.config,size:"medium",variant:"full",onConnect:c,onDisconnect:h,onError:y(p)},p)})})]})]})]})}const ge=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),xe=t=>{if(t==null)return"null";if(typeof t=="number"||typeof t=="boolean")return String(t);const s=String(t);return s===""?"''":/^[a-zA-Z0-9._/-]+$/.test(s)?s:JSON.stringify(s)},be=(t,s=0)=>{const r=" ".repeat(s);if(Array.isArray(t))return t.length===0?"[]":t.map(l=>ge(l)||Array.isArray(l)?`${r}-
|
|
3
|
+
${be(l,s+1)}`:`${r}- ${xe(l)}`).join(`
|
|
4
|
+
`);if(ge(t)){const l=Object.entries(t).filter(([,o])=>o!==void 0);return l.length===0?"{}":l.map(([o,a])=>ge(a)||Array.isArray(a)?`${r}${o}:
|
|
5
|
+
${be(a,s+1)}`:`${r}${o}: ${xe(a)}`).join(`
|
|
6
|
+
`)}return`${r}${xe(t)}`};function Zt(t){return be(t)}function en({spec:t,onClose:s,title:r="Spec Payload Preview (YAML)"}){return z.useEffect(()=>{const l=o=>{o.key==="Escape"&&s()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[s]),e.jsxs(n,{role:"dialog","aria-label":r,"aria-modal":"true",position:"fixed",inset:24,zIndex:300,bg:"canvas.default",border:"1px solid",borderColor:"border.default",borderRadius:1,boxShadow:"shadow.large",display:"flex",flexDirection:"column",children:[e.jsxs(n,{display:"flex",alignItems:"center",justifyContent:"space-between",px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[e.jsx(i,{sx:{fontWeight:"bold"},children:r}),e.jsx(Me,{icon:it,"aria-label":"Close spec preview",size:"small",variant:"invisible",onClick:s})]}),e.jsx(n,{p:3,overflow:"auto",flex:1,children:e.jsx(n,{as:"pre",m:0,whiteSpace:"pre",fontFamily:"monospace",fontSize:0,lineHeight:"20px",children:Zt(t)})})]})}function _e(t){if(t)return t.replace(/\/+$/,"").replace(/\/api\/v1\/configure$/,"");if(typeof window>"u")return"";const s=window.location.hostname;return s==="localhost"||s==="127.0.0.1"?"http://127.0.0.1:8765":""}async function tn(t,s,r){if(!r)throw new Error("No context data available for CSV export. Data is delivered via WebSocket.");const l=r,o=[];o.push(["Context Snapshot for Agent",l.agentId]),o.push(["Generated At",new Date().toISOString()]),o.push([]),o.push(["=== Model Configuration ==="]),o.push(["Model Name",l.modelConfiguration?.modelName||"Not specified"]),o.push(["Context Window",String(l.modelConfiguration?.contextWindow||0)]),o.push([]),o.push(["=== Token Summary ==="]),o.push(["Category","Tokens"]),o.push(["System Prompts",String(l.tokenSummary?.systemPrompts||0)]),o.push(["Tools",String(l.tokenSummary?.tools||0)]),o.push(["Memory",String(l.tokenSummary?.memory||0)]),o.push(["History",String(l.tokenSummary?.history||0)]),o.push(["Current",String(l.tokenSummary?.current||0)]),o.push(["Total",String(l.tokenSummary?.total||0)]),o.push(["Context Window",String(l.tokenSummary?.contextWindow||0)]),o.push(["Usage Percent",`${(l.tokenSummary?.usagePercent||0).toFixed(2)}%`]),o.push([]),l.systemPrompts?.length>0&&(o.push(["=== System Prompts ==="]),o.push(["Index","Tokens","Content"]),l.systemPrompts.forEach((f,S)=>{o.push([String(S+1),String(f.tokens),f.content.replace(/"/g,'""')])}),o.push([])),l.tools?.length>0&&(o.push(["=== Tools ==="]),o.push(["Name","Description","Source Type","Is Async","Requires Approval","Total Tokens"]),l.tools.forEach(f=>{o.push([f.name,(f.description||"").replace(/"/g,'""'),f.sourceType,String(f.isAsync),String(f.requiresApproval),String(f.totalTokens)])}),o.push([])),l.messages?.length>0&&(o.push(["=== Messages ==="]),o.push(["Role","In Context","Estimated Tokens","Tool Name","Is Tool Call","Is Tool Result","Timestamp","Content"]),l.messages.forEach(f=>{o.push([f.role,String(f.inContext),String(f.estimatedTokens),f.toolName||"",String(f.isToolCall),String(f.isToolResult),f.timestamp||"",f.content.replace(/"/g,'""')])}),o.push([])),l.memoryBlocks?.length>0&&(o.push(["=== Memory Blocks ==="]),o.push(["Index","Content (JSON)"]),l.memoryBlocks.forEach((f,S)=>{o.push([String(S+1),JSON.stringify(f).replace(/"/g,'""')])}),o.push([])),l.toolEnvironment&&Object.keys(l.toolEnvironment).length>0&&(o.push(["=== Tool Environment ==="]),o.push(["Key","Value"]),Object.entries(l.toolEnvironment).forEach(([f,S])=>{o.push([f,S])}),o.push([]));const a=o.map(f=>f.map(S=>`"${S}"`).join(",")).join(`
|
|
7
|
+
`),d=new Blob([a],{type:"text/csv;charset=utf-8;"}),c=document.createElement("a"),h=URL.createObjectURL(d);c.setAttribute("href",h),c.setAttribute("download",`context-snapshot-${t}-${new Date().toISOString().slice(0,10)}.csv`),c.style.visibility="hidden",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(h)}function un({name:t="AI Agent",icon:s,emoji:r,protocol:l,url:o,messageCount:a,agentId:d,apiBase:c,identityProviders:h,onIdentityConnect:f,onIdentityDisconnect:S,onBack:u,showBackHeader:b=!0,showUsage:m=!0,padded:R=!0,mcpStatusData:P,codemodeStatusData:y,contextSnapshotData:p,fullContextData:j,runtime:E=!0,summary:I}){const O=rt(),g=lt(),C=at(),N=ct(),B=dt(),M=P??O,w=y??g,X=p??C,W=j??N,x=P!==void 0||B!=="closed",U=y!==void 0||B!=="closed",$=B==="connecting"&&!M,G=B==="connecting"&&!w,H=ut({mutationFn:async v=>{const _=_e(c),J=await fetch(`${_}/api/v1/configure/codemode/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:v})});if(!J.ok)throw new Error("Failed to toggle codemode");return J.json()},onSuccess:()=>{}}),[K,Q]=z.useState(!1),{data:k,isLoading:ue}=ft({queryKey:["agent-spec",d,c],queryFn:async()=>{const v=_e(c),_=await fetch(`${v}/api/v1/configure/agents/${encodeURIComponent(d)}/spec`);if(!_.ok)throw new Error("Failed to fetch agent spec");return _.json()},enabled:!!d&&E});return e.jsxs(n,{display:"flex",flexDirection:"column",height:"100%",bg:"canvas.default",overflow:"auto",children:[b&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,p:3,borderBottom:"1px solid",borderColor:"border.default",children:[e.jsx(Me,{icon:bt,"aria-label":"Back to chat",variant:"invisible",onClick:u}),e.jsx(F,{as:"h2",sx:{fontSize:3,fontWeight:"semibold"},children:"Agent Details"})]}),e.jsxs(n,{p:R?3:0,display:"flex",flexDirection:"column",gap:4,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:3,p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsx(n,{p:2,bg:"accent.subtle",borderRadius:2,children:s?e.jsx(n,{display:"inline-flex",color:"accent.fg",children:s}):r?e.jsx(i,{sx:{fontSize:5,lineHeight:1},children:r}):e.jsx(pt,{colored:!0,size:32})}),e.jsxs(n,{flex:1,children:[e.jsx(F,{as:"h3",sx:{fontSize:2,fontWeight:"semibold",mb:1},children:t}),d&&e.jsxs(i,{sx:{fontSize:0,color:"fg.muted"},children:["ID: ",d]})]})]}),I&&(I.spec||I.model||I.where||I.description||I.skills?.length)&&e.jsxs(n,{"data-agent-details-summary":"",children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Agent"}),e.jsxs(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",display:"flex",flexDirection:"column",gap:1,children:[I.description&&e.jsx(i,{as:"p",sx:{fontSize:1,m:0,mb:1},children:I.description}),[["Spec",I.spec],["Model",I.model],["Runs",I.where]].filter(([,v])=>v).map(([v,_])=>e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsxs(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:[v,":"]}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono"},children:_})]},v)),I.skills&&I.skills.length>0&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Skills:"}),e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",children:I.skills.map(v=>e.jsx(A,{variant:"secondary",size:"small",children:v},v))})]})]})]}),o&&e.jsx(e.Fragment,{children:e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Connection"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(A,{variant:"accent",size:"small",children:l.toUpperCase().replace(/-/g," ")}),e.jsx(i,{sx:{fontSize:1,fontFamily:"mono",wordBreak:"break-all"},children:o})]})})]})}),E&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Agentspec"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:ue?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading agent spec..."})]}):k?e.jsxs(n,{display:"flex",flexDirection:"column",gap:3,children:[e.jsx(n,{children:e.jsx(L,{size:"small",leadingVisual:St,onClick:()=>Q(!0),children:"View spec payload"})}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Model:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default"},children:k.model})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Library:"}),e.jsx(A,{variant:"secondary",size:"small",children:k.agent_library})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Codemode:"}),e.jsx(A,{variant:k.enable_codemode?"accent":"secondary",size:"small",children:k.enable_codemode?"Enabled":"Disabled"})]}),k.enable_skills&&k.skills.length>0&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Skills:"}),e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",children:k.skills.map(v=>e.jsx(A,{variant:"secondary",size:"small",children:v},v))})]})]}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ht,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"System Prompt"})]}),e.jsx(n,{p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",maxHeight:200,overflow:"auto",children:e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:"fg.default"},children:k.system_prompt})})]}),k.system_prompt_codemode_addons&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Codemode Addon Prompt"}),k.enable_codemode?e.jsx(A,{variant:"accent",size:"small",children:"Active"}):e.jsx(A,{variant:"secondary",size:"small",children:"Inactive"})]}),e.jsx(n,{p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",maxHeight:200,overflow:"auto",children:e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:"fg.default"},children:k.system_prompt_codemode_addons})})]})]}):e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"No agent spec available"})})]}),k?.sandbox&&e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Code Sandbox"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(gt,{size:16}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100},children:"Variant:"}),e.jsx(A,{variant:k.sandbox.variant==="jupyter-server"?"accent":"secondary",size:"small",children:k.sandbox.variant})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Running:"}),k.sandbox.sandbox_running?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Yes"})]}):e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(se,{size:12,fill:"fg.muted"}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:"No"})]})]}),k.sandbox.variant==="jupyter-server"&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Jupyter URL:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k.jupyter_sandbox||k.sandbox.jupyter_url||"Not configured"})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Connection:"}),k.sandbox.jupyter_connected?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Connected"})]}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(se,{size:12,fill:"danger.fg"}),e.jsx(i,{sx:{fontSize:0,color:"danger.fg"},children:"Not Connected"})]}),k.sandbox.jupyter_error&&e.jsx(i,{sx:{fontSize:0,color:"danger.fg",fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:k.sandbox.jupyter_error})]})]})]}),k.sandbox.generated_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Generated:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.generated_path,children:k.sandbox.generated_path})]}),k.sandbox.skills_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Skills:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.skills_path,children:k.sandbox.skills_path})]}),k.sandbox.python_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:100,pl:4},children:"Python:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:k.sandbox.python_path,children:k.sandbox.python_path})]})]})})]}),e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Config MCP Servers"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:!x&&$?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading MCP status..."})]}):M?e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,children:[e.jsx(n,{display:"flex",alignItems:"center",gap:2,children:e.jsxs(i,{sx:{fontSize:1},children:[e.jsx(i,{as:"span",sx:{fontWeight:"semibold"},children:M.ready_count})," ","ready,"," ",e.jsx(i,{as:"span",sx:{fontWeight:"semibold"},children:M.failed_count})," ","failed"]})}),M.ready_servers.length>0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Ready:"}),M.ready_servers.map(v=>e.jsxs(n,{display:"flex",alignItems:"center",gap:2,pl:2,children:[e.jsx(ne,{size:16,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:1},children:v})]},v))]}),Object.keys(M.failed_servers).length>0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Failed:"}),Object.entries(M.failed_servers).map(([v,_])=>e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,pl:2,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(se,{size:16,fill:"danger.fg"}),e.jsx(i,{sx:{fontSize:1},children:v})]}),e.jsx(i,{sx:{fontSize:0,color:"danger.fg",fontFamily:"mono",pl:4,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:_.split(`
|
|
8
|
+
`)[0]})]},v))]})]}):x?e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Waiting for MCP status from WebSocket stream..."}):e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Failed to load MCP status"})})]}),e.jsxs(n,{children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",mb:2,color:"fg.muted"},children:"Codemode"}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:!U&&G?e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ae,{size:"small"}),e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Loading Codemode status..."})]}):w?e.jsxs(n,{display:"flex",flexDirection:"column",gap:3,children:[e.jsxs(n,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsxs(n,{children:[e.jsx(i,{id:"codemode-toggle-label",sx:{fontSize:1,fontWeight:"semibold"},children:"Codemode"}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted",marginLeft:1},children:"MCP servers become programmatic tools"})]})]}),e.jsx(xt,{"aria-labelledby":"codemode-toggle-label",checked:w.enabled,onClick:()=>H.mutate(!w.enabled),disabled:H.isPending,size:"small"})]}),w.sandbox&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:2,p:2,bg:"canvas.default",borderRadius:2,border:"1px solid",borderColor:"border.default",children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(ce,{size:16}),e.jsx(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:"Code Sandbox"})]}),e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,pl:4,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Variant:"}),e.jsx(A,{variant:w.sandbox.variant==="jupyter-server"?"accent":"secondary",size:"small",children:w.sandbox.variant})]}),w.sandbox.variant==="jupyter-server"&&e.jsxs(e.Fragment,{children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"URL:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:w.sandbox.jupyter_url||"Not configured"})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Status:"}),w.sandbox.jupyter_connected?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Connected"})]}):e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(se,{size:12,fill:"danger.fg"}),e.jsx(i,{sx:{fontSize:0,color:"danger.fg"},children:"Not Connected"})]}),w.sandbox.jupyter_error&&e.jsx(i,{sx:{fontSize:0,color:"danger.fg",fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:w.sandbox.jupyter_error})]})]})]}),e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Running:"}),w.sandbox.sandbox_running?e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(ne,{size:12,fill:"success.fg"}),e.jsx(i,{sx:{fontSize:0,color:"success.fg"},children:"Yes"})]}):e.jsxs(n,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(se,{size:12,fill:"fg.muted"}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:"No"})]})]}),w.sandbox.generated_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Generated:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:w.sandbox.generated_path,children:w.sandbox.generated_path})]}),w.sandbox.skills_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Skills:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:w.sandbox.skills_path,children:w.sandbox.skills_path})]}),w.sandbox.python_path&&e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(i,{sx:{fontSize:0,color:"fg.muted",width:80},children:"Python Path:"}),e.jsx(i,{sx:{fontSize:0,fontFamily:"mono",color:"fg.default",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:w.sandbox.python_path,children:w.sandbox.python_path})]})]})]}),w.skills.length>0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(n,{display:"flex",alignItems:"center",gap:2,children:[e.jsx(mt,{size:16}),e.jsxs(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:["Active Skills (",w.skills.length,")"]})]}),w.skills.map(v=>e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,pl:4,py:1,borderLeft:"2px solid",borderColor:"accent.emphasis",children:[e.jsx(i,{sx:{fontSize:1,fontWeight:"semibold"},children:v.name}),v.description&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:v.description}),v.tags&&v.tags.length>0&&e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",children:v.tags.map(_=>e.jsx(A,{variant:"secondary",size:"small",children:_},_))})]},v.name))]}),w.available_skills.length>0&&w.skills.length===0&&e.jsxs(n,{display:"flex",flexDirection:"column",gap:1,children:[e.jsxs(i,{sx:{fontSize:0,fontWeight:"semibold",color:"fg.muted"},children:["Available Skills (",w.available_skills.length,")"]}),e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:"Enable skills via CLI with --skills flag"}),e.jsx(n,{display:"flex",gap:1,flexWrap:"wrap",mt:1,children:w.available_skills.map(v=>e.jsx(A,{variant:"secondary",size:"small",children:v.name},v.name))})]}),w.available_skills.length===0&&e.jsx(i,{sx:{fontSize:0,color:"fg.muted"},children:"No CodeMode skills are available for this agent. You can still use MCP tools by selecting MCP servers."})]}):U?e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Waiting for Codemode status from WebSocket stream..."}):e.jsx(i,{sx:{fontSize:1,color:"fg.muted"},children:"Failed to load Codemode status"})})]}),m&&d&&e.jsx(At,{agentId:d,apiBase:c,liveData:X,messageCount:a,chartHeight:"200px"}),m&&d&&e.jsxs(n,{mt:3,children:[e.jsxs(n,{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2,children:[e.jsx(F,{as:"h4",sx:{fontSize:1,fontWeight:"semibold",color:"fg.muted"},children:"Context Snapshot"}),e.jsx(L,{size:"small",variant:"invisible",leadingVisual:Re,onClick:()=>tn(d,c,W),children:"Download"})]}),e.jsx(n,{p:3,bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",children:e.jsx(Ut,{agentId:d,apiBase:c,liveData:W})})]}),e.jsx(Qt,{providers:h,title:"Connected Accounts",showHeader:!0,showDescription:!0,description:"OAuth identities connected to this agent. Agents can use these to access external services like GitHub repositories on your behalf.",showExpirationDetails:!0,allowReconnect:!!h,onConnect:f,onDisconnect:S})]}),b&&e.jsx(n,{mt:2,children:e.jsx(L,{variant:"primary",onClick:u,sx:{width:"100%"},children:"Back to Chat"})})]}),K&&k?e.jsx(en,{spec:k,onClose:()=>Q(!1)}):null]})}export{un as AgentDetails,un as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,Q as l,j as s,D as o,a as m}from"../datalayer-app-main.js";import{AgentDetails as p}from"./AgentDetails-
|
|
1
|
+
import{r as n,Q as l,j as s,D as o,a as m}from"../datalayer-app-main.js";import{AgentDetails as p}from"./AgentDetails-CO9iM59C.js";import"./ArrowLeftIcon-Y3PTljcl.js";import"./UnlinkIcon-DuVqPyB-.js";import"./index-hib7vWC6.js";import"./LinkIcon-DUI0jw25.js";import"./Flash-DdFxPtBI.js";import"./Avatar-Dqz3ZWjZ.js";function B({about:e,name:r,onClose:t}){const a=n.useMemo(()=>new l,[]),i=!!(e.agentId&&e.apiBase);return s.jsx(o,{title:`${e.name??r} · Agent Details`,onClose:t,width:"xlarge",height:"large",children:s.jsx("div",{"data-assistant-agent-details":"",children:s.jsx(m,{client:a,children:s.jsx(p,{name:e.name??r,protocol:e.protocol??(i?"agent-runtimes":"browser"),url:e.url??"",messageCount:0,agentId:e.agentId,apiBase:e.apiBase,onBack:t,showBackHeader:!1,showUsage:i,padded:!1,runtime:i,summary:{spec:e.spec,model:e.model,where:e.where,description:e.description,skills:e.skills}})})})})}export{B as AgentDetailsDialog,B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as f,j as e,B as l,cP as ie,eI as se,T as c,bm as W,cO as F,L as D,I as oe,eJ as le,eK as V,c as U,P as ae,eL as de,k as ce,eM as ue,dw as H,bd as M,eN as xe,eO as fe,eP as K,eQ as pe,eR as he}from"../datalayer-app-main.js";import{B,U as $}from"./index-Begrz6qi.js";function E(t){const n=Number(t);return!isNaN(n)&&n>1e15?n/1e6:!isNaN(n)&&n>1e12?n/1e3:isNaN(n)?new Date(String(t)).getTime():n}function J(t){return t==null?"—":t<.001?"<1µs":t<1?`${(t*1e3).toFixed(0)}µs`:t<1e3?`${t.toFixed(1)}ms`:t<6e4?`${(t/1e3).toFixed(2)}s`:`${(t/6e4).toFixed(1)}m`}function me(t){if(t==null||t==="")return"—";try{const n=E(t),r=new Date(n);return isNaN(r.getTime())?String(t):r.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}catch{return String(t)}}const X=["#0969da","#1a7f37","#cf222e","#8250df","#bf8700","#0550ae","#116329","#a40e26","#6639ba","#953800","#0e8a16","#e36209"];function ge(t){let n=0;for(let r=0;r<t.length;r++)n=n*31+t.charCodeAt(r)|0;return X[Math.abs(n)%X.length]}function Q(t){const n=new Map,r=t.map(o=>({...o,children:[],depth:0}));for(const o of r)n.set(o.span_id,o);const i=[];for(const o of r)if(o.parent_span_id&&n.has(o.parent_span_id)){const x=n.get(o.parent_span_id);x.children=x.children??[],x.children.push(o)}else i.push(o);function a(o,x){o.depth=x;for(const p of o.children??[])a(p,x+1)}for(const o of i)a(o,0);return i}const be="peer.service";function je(t,n){return t.service_name===n||t.attributes?.[be]===n}function Se(t,n){return n?t.filter(r=>je(r,n)):[...t]}const Y=[],_e=()=>()=>{};function we(t){return f.useSyncExternalStore(t?t.subscribe:_e,()=>t?t.spans():Y,()=>t?t.spans():Y)}const ye="140px 1fr 160px 90px",ve="96px minmax(0, 1fr) 96px 64px";function ke(t){const n=t.attributes;if(!n)return null;const r=n["gen_ai.usage.input_tokens"]!=null?Number(n["gen_ai.usage.input_tokens"]):void 0,i=n["gen_ai.usage.output_tokens"]!=null?Number(n["gen_ai.usage.output_tokens"]):void 0;return r==null&&i==null?null:{input:r,output:i}}const Ce=({spans:t,loading:n,selectedSpanId:r,onSelectSpan:i,emptyText:a,compact:o=!1,defaultExpanded:x=!1,renderSpanMark:p,describeSpan:u})=>{const[h,d]=f.useState(new Set),m=f.useMemo(()=>({has:s=>x?!h.has(s):h.has(s)}),[h,x]),j=o?ve:ye,S=f.useMemo(()=>Q(t),[t]),g=f.useMemo(()=>{const s=[];function y(b,A){const v=b.children??[];if(s.push({span:b,depth:A,hasChildren:v.length>0}),m.has(b.span_id))for(const T of v)y(T,A+1)}for(const b of S)y(b,0);return s},[S,m]),O=f.useCallback(s=>{d(y=>{const b=new Set(y);return b.has(s)?b.delete(s):b.add(s),b})},[]);return n?e.jsx(l,{display:"flex",justifyContent:"center",p:5,children:e.jsx(ie,{size:"medium"})}):t.length===0?e.jsxs(B,{children:[e.jsx(B.Visual,{children:e.jsx(se,{size:24})}),e.jsx(B.Heading,{children:"No traces found"}),e.jsx(B.Description,{children:a??"Send some telemetry data first."})]}):e.jsxs(l,{width:"100%",flex:1,minHeight:0,overflow:"auto",children:[e.jsx(l,{display:"grid",gridTemplateColumns:j,gap:2,px:3,position:"sticky",top:0,bg:"canvas.subtle",zIndex:1,borderBottom:"2px solid",borderColor:"border.default",children:["Time","Message","Scope","Duration"].map(s=>e.jsx(c,{sx:{fontWeight:"bold",fontSize:0,color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em",py:2,...s==="Duration"?{textAlign:"right"}:{}},children:s},s))}),g.map(({span:s,depth:y,hasChildren:b},A)=>{const v=r===s.span_id,T=m.has(s.span_id),C=y*(o?12:20),k=u?.(s);return e.jsxs(l,{"data-otel-span":s.span_id,"data-otel-span-name":s.span_name,onClick:()=>{b&&O(s.span_id),i?.(s)},display:"grid",gridTemplateColumns:j,gap:2,px:3,py:"5px",cursor:"pointer",bg:v?"accent.subtle":y>0?"canvas.inset":"canvas.default",borderBottom:"1px solid",borderColor:"border.muted",hover:{bg:v?"accent.subtle":"canvas.subtle"},children:[e.jsx(c,{sx:{fontSize:o?0:1,fontFamily:"mono",color:"fg.muted",whiteSpace:"nowrap",lineHeight:"22px"},children:me(s.start_time)}),e.jsxs(l,{display:"flex",alignItems:"center",gap:1,overflow:"hidden",lineHeight:"22px",pl:`${C}px`,children:[b?e.jsx(l,{flexShrink:0,color:"fg.muted",display:"flex",alignItems:"center",children:T?e.jsx(W,{size:14}):e.jsx(F,{size:14})}):y>0?e.jsx(l,{flexShrink:0,width:"14px",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.subtle",fontSize:0,children:"─"}):null,p?.(s),e.jsx(c,{sx:{fontSize:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:k?0:1,maxWidth:k?"60%":void 0},title:s.span_name,children:s.span_name}),s.in_progress&&e.jsx(D,{variant:"attention",size:"small",children:"running"}),s.status_code==="ERROR"&&e.jsx(D,{variant:"danger",size:"small",children:"ERROR"}),(()=>{const I=ke(s);return I?e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"2px",border:"1px solid",borderColor:"border.default",borderRadius:2,px:1,fontSize:"10px",fontFamily:"mono",color:"fg.muted",flexShrink:0,lineHeight:"16px",children:[I.input!=null&&e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"1px",children:[e.jsx(c,{sx:{fontSize:"9px",color:"fg.subtle"},children:"↗"}),e.jsx(c,{children:I.input})]}),I.output!=null&&e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"1px",children:[e.jsx(c,{sx:{fontSize:"9px",color:"fg.subtle"},children:"↙"}),e.jsx(c,{children:I.output})]})]}):null})(),k&&e.jsx(c,{sx:{fontSize:1,color:"fg.muted",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},title:k,"data-otel-span-description":"",children:k}),s.otel_scope_name&&!o&&e.jsx(D,{size:"small",variant:"secondary",sx:{flexShrink:0,fontSize:"10px"},children:s.otel_scope_name})]}),e.jsx(c,{sx:{fontSize:1,color:"fg.muted",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:"22px"},title:`${s.service_name} / ${s.otel_scope_name??""}`,children:s.service_name}),e.jsx(c,{sx:{fontSize:1,fontFamily:"mono",textAlign:"right",lineHeight:"22px",color:s.duration_ms!=null&&s.duration_ms>1e3?"danger.fg":"fg.default"},children:s.in_progress?"…":J(s.duration_ms)})]},`${s.trace_id}-${s.span_id}-${A}`)})]})},ze=20,Z=({span:t,depth:n,selectedSpanId:r,onSelectSpan:i,expandedIds:a,toggleExpanded:o,traceMinTime:x,traceDuration:p})=>{const u=(t.children?.length??0)>0,h=a.has(t.span_id),d=r===t.span_id,m=ge(t.service_name),j=(E(t.start_time)-x)/p*100,S=Math.max((t.duration_ms||0)/p*100,.5);return e.jsxs(e.Fragment,{children:[e.jsxs(l,{display:"flex",alignItems:"center",height:28,pl:`${n*ze}px`,pr:2,cursor:"pointer",bg:d?"accent.subtle":"canvas.default",borderBottom:"1px solid",borderColor:"border.muted",hover:{bg:d?"accent.subtle":"canvas.subtle"},onClick:()=>i?.(t),children:[e.jsx(l,{width:20,textAlign:"center",color:"fg.muted",userSelect:"none",flexShrink:0,cursor:u?"pointer":"default",onClick:g=>{g.stopPropagation(),u&&o(t.span_id)},children:u?h?e.jsx(W,{size:12}):e.jsx(F,{size:12}):e.jsx(c,{sx:{color:"fg.subtle",fontSize:0},children:"·"})}),e.jsx(l,{width:8,height:8,borderRadius:"50%",bg:m,flexShrink:0,mr:1}),e.jsx(c,{sx:{flex:"0 0 200px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:1,fontWeight:d?"bold":"normal"},title:`${t.service_name} / ${t.span_name}`,children:t.span_name}),e.jsx(l,{flex:1,position:"relative",height:12,bg:"canvas.subtle",borderRadius:1,mx:2,overflow:"hidden",children:e.jsx(l,{position:"absolute",left:`${j}%`,width:`${S}%`,height:"100%",bg:m,borderRadius:1,opacity:d?1:.7})}),e.jsx(c,{sx:{minWidth:60,textAlign:"right",fontSize:0,fontFamily:"mono",color:"fg.muted",flexShrink:0},children:J(t.duration_ms)})]}),u&&h&&t.children.map(g=>e.jsx(Z,{span:g,depth:n+1,selectedSpanId:r,onSelectSpan:i,expandedIds:a,toggleExpanded:o,traceMinTime:x,traceDuration:p},g.span_id))]})},Ie=({spans:t,selectedSpanId:n,onSelectSpan:r,defaultExpandDepth:i=2})=>{const a=f.useMemo(()=>{const d=new Set;function m(j,S){for(const g of j)S<i&&d.add(g.span_id),g.children&&m(g.children,S+1)}return m(t,0),d},[t,i]),[o,x]=f.useState(a),p=f.useCallback(d=>{x(m=>{const j=new Set(m);return j.has(d)?j.delete(d):j.add(d),j})},[]),{traceMinTime:u,traceDuration:h}=f.useMemo(()=>{let d=1/0,m=-1/0;function j(S){for(const g of S){const O=E(g.start_time),s=E(g.end_time);O<d&&(d=O),s>m&&(m=s),g.children&&j(g.children)}}return j(t),d===1/0?{traceMinTime:0,traceDuration:1}:{traceMinTime:d,traceDuration:m-d||1}},[t]);return t.length===0?e.jsx(l,{p:3,color:"fg.muted",textAlign:"center",children:e.jsx(c,{children:"No span tree to display."})}):e.jsxs(l,{width:"100%",overflow:"auto",children:[e.jsxs(l,{display:"flex",alignItems:"center",height:28,px:2,borderBottom:"2px solid",borderColor:"border.default",bg:"canvas.subtle",children:[e.jsx(l,{width:20}),e.jsx(l,{width:8,mr:1}),e.jsx(c,{sx:{flex:"0 0 200px",fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Span"}),e.jsx(c,{sx:{flex:1,mx:2,fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Timeline"}),e.jsx(c,{sx:{minWidth:60,textAlign:"right",fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Duration"})]}),t.map(d=>e.jsx(Z,{span:d,depth:0,selectedSpanId:n,onSelectSpan:r,expandedIds:o,toggleExpanded:p,traceMinTime:u,traceDuration:h},d.span_id))]})},w=({label:t,value:n,mono:r=!1})=>n==null||n===""?null:e.jsxs(l,{display:"flex",py:1,borderBottom:"1px solid",borderColor:"border.muted",gap:2,children:[e.jsx(c,{sx:{width:140,minWidth:140,color:"fg.muted",fontSize:1,fontWeight:"bold"},children:t}),e.jsx(c,{sx:{fontSize:1,fontFamily:r?"mono":"normal",wordBreak:"break-all"},children:String(n)})]}),q=({title:t,data:n,defaultOpen:r=!1})=>{const[i,a]=f.useState(r);return!n||Object.keys(n).length===0?null:e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,cursor:"pointer",py:1,userSelect:"none",onClick:()=>a(!i),children:[i?e.jsx(W,{size:16}):e.jsx(F,{size:16}),e.jsx(c,{sx:{fontSize:1,fontWeight:"bold"},children:t}),e.jsx(V,{children:Object.keys(n).length})]}),i&&e.jsx(l,{bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",p:2,mt:1,overflowX:"auto",children:Object.entries(n).map(([o,x])=>e.jsx(L,{attrKey:o,value:x,depth:0},o))})]})};function Te(t){if(typeof t!="string")return t;const n=t.trim();if(!/^[[{]/.test(n))return t;try{const r=JSON.parse(n);return typeof r=="object"&&r!==null?r:t}catch{return t}}const L=({attrKey:t,value:n,depth:r})=>{const i=f.useMemo(()=>Te(n),[n]),[a,o]=f.useState(r<1),x=typeof i=="object"&&i!==null&&!Array.isArray(i),p=Array.isArray(i),u=x||p;return e.jsxs(l,{borderBottom:r===0?"1px solid":"none",borderColor:"border.muted",pb:r===0?1:0,mb:r===0?1:0,children:[e.jsxs(l,{display:"flex",gap:2,py:1,pl:r*16+"px",alignItems:"flex-start",children:[u?e.jsx(l,{cursor:"pointer",color:"fg.muted",userSelect:"none",width:16,flexShrink:0,onClick:()=>o(!a),children:a?e.jsx(W,{size:12}):e.jsx(F,{size:12})}):e.jsx(l,{width:16,flexShrink:0}),e.jsx(c,{sx:{color:"accent.fg",fontSize:1,fontFamily:"mono",minWidth:180,wordBreak:"break-all",flexShrink:0},children:t}),!u&&e.jsx(c,{sx:{fontSize:1,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:typeof i=="string"?"accent.emphasis":"attention.fg"},children:typeof i=="string"?i:JSON.stringify(i)}),u&&!a&&e.jsx(c,{sx:{fontSize:0,color:"fg.muted",fontFamily:"mono"},children:p?`[${i.length} items]`:`{${Object.keys(i).length} keys}`})]}),u&&a&&e.jsx(l,{children:p?i.map((h,d)=>e.jsx(L,{attrKey:`[${d}]`,value:h,depth:r+1},d)):Object.entries(i).map(([h,d])=>e.jsx(L,{attrKey:h,value:d,depth:r+1},h))})]})},Oe=({span:t,traceSpans:n,onClose:r})=>{const[i,a]=f.useState("details");if(!t)return e.jsx(l,{p:5,color:"fg.muted",textAlign:"center",children:e.jsx(c,{children:"Select a span to view details."})});const o={},x={};if(t.attributes)for(const[u,h]of Object.entries(t.attributes))u.startsWith("gen_ai.")||u.startsWith("model_request")?o[u]=h:x[u]=h;const p=n&&n.length>0?Q(n):void 0;return e.jsxs(l,{height:"100%",overflow:"auto",borderLeft:"1px solid",borderColor:"border.default",bg:"canvas.default",display:"flex",flexDirection:"column",children:[e.jsxs(l,{px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",display:"flex",justifyContent:"space-between",alignItems:"center",bg:"canvas.subtle",flexShrink:0,children:[e.jsx(c,{sx:{fontSize:2,fontWeight:"bold"},children:t.span_name}),r&&e.jsx(oe,{icon:le,"aria-label":"Close detail panel",variant:"invisible",size:"small",onClick:r})]}),e.jsxs($,{"aria-label":"Span detail tabs",children:[e.jsx($.Item,{"aria-current":i==="details"?"page":void 0,onClick:()=>a("details"),children:"Details"}),p&&e.jsx($.Item,{"aria-current":i==="tree"?"page":void 0,onClick:()=>a("tree"),children:"Trace Tree"}),e.jsx($.Item,{"aria-current":i==="raw"?"page":void 0,onClick:()=>a("raw"),children:"Raw Data"})]}),e.jsxs(l,{flex:1,overflow:"auto",children:[i==="details"&&e.jsxs(l,{p:3,children:[e.jsx(w,{label:"span_name",value:t.span_name}),e.jsx(w,{label:"service_name",value:t.service_name}),e.jsx(w,{label:"otel_scope_name",value:t.otel_scope_name}),e.jsx(w,{label:"kind",value:t.kind}),e.jsx(w,{label:"trace_id",value:t.trace_id,mono:!0}),e.jsx(w,{label:"span_id",value:t.span_id,mono:!0}),e.jsx(w,{label:"parent_span_id",value:t.parent_span_id,mono:!0}),e.jsx(w,{label:"duration",value:J(t.duration_ms)}),e.jsx(w,{label:"start_time",value:t.start_time,mono:!0}),e.jsx(w,{label:"end_time",value:t.end_time,mono:!0}),e.jsx(w,{label:"status_code",value:t.status_code}),e.jsx(w,{label:"status_message",value:t.status_message}),e.jsx(q,{title:"Arguments",data:o,defaultOpen:Object.keys(o).length>0}),e.jsx(q,{title:"Attributes",data:x}),t.events&&t.events.length>0&&e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(c,{sx:{fontWeight:"bold",fontSize:1},children:"Events"}),e.jsx(V,{children:t.events.length})]}),t.events.map((u,h)=>e.jsxs(l,{bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",p:2,mt:2,children:[e.jsxs(l,{display:"flex",gap:2,children:[e.jsx(D,{children:u.name}),e.jsx(c,{sx:{fontSize:0,color:"fg.muted",fontFamily:"mono"},children:u.timestamp})]}),u.attributes&&Object.keys(u.attributes).length>0&&e.jsx(l,{mt:1,children:Object.entries(u.attributes).map(([d,m])=>e.jsx(L,{attrKey:d,value:m,depth:0},d))})]},h))]}),t.links&&t.links.length>0&&e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(c,{sx:{fontWeight:"bold",fontSize:1},children:"Links"}),e.jsx(V,{children:t.links.length})]}),t.links.map((u,h)=>e.jsxs(c,{sx:{display:"block",fontSize:1,fontFamily:"mono",py:1,borderBottom:"1px solid",borderColor:"border.muted"},children:["trace: ",u.trace_id," → span: ",u.span_id]},h))]})]}),i==="tree"&&p&&e.jsx(Ie,{spans:p,selectedSpanId:t.span_id,defaultExpandDepth:4}),i==="raw"&&e.jsx(l,{as:"pre",p:3,fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",m:0,bg:"canvas.subtle",children:JSON.stringify(t,null,2)})]})]})},Ae=[{label:"Service",value:t=>t.service_name},{label:"Kind",value:t=>t.kind}];function Ne(t,n,r){return t.filter(i=>n.every((a,o)=>{const x=r[o];if(!x?.size)return!0;const p=a.value(i);return p!==void 0&&x.has(p)}))}function Re(t,n){const r=new Set(t);return r.has(n)?r.delete(n):r.add(n),r}function Ee({facet:t,options:n,selected:r,onChange:i}){const a=t.name??(o=>o);return e.jsxs(H,{children:[e.jsxs(H.Button,{size:"small","data-otel-facet":t.label.toLowerCase(),children:[t.label,r.size?` · ${r.size}`:""]}),e.jsx(H.Overlay,{width:"auto",children:e.jsxs(M,{selectionVariant:"multiple","aria-label":t.label,children:[e.jsx(M.Item,{selected:!r.size,onSelect:()=>i(new Set),children:"All"}),e.jsx(M.Divider,{}),n.map(o=>e.jsx(M.Item,{selected:r.has(o),onSelect:()=>i(Re(r,o)),children:a(o)},o))]})})]})}function Me(t,n){const r=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),i=URL.createObjectURL(r),a=document.createElement("a");a.href=i,a.download=`${t}.json`,a.click(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}const Be=({tracer:t,spans:n,service:r,facets:i=Ae,compact:a=!1,maxHeight:o=420,detailPlacement:x="below",emptyText:p="Nothing recorded yet.",exportName:u="otel-spans",label:h="Spans",renderSpanMark:d,describeSpan:m})=>{const j=we(n?null:t),S=n??j,[g,O]=f.useState(0),[s,y]=f.useState(null),[b,A]=f.useState(()=>i.map(()=>new Set)),[v,T]=f.useState(null),C=f.useMemo(()=>{const _=Se(S,r);return g?_.filter(z=>E(z.start_time)>=g):_},[S,r,g]),k=s??C,I=s?C.length-s.length:0,ee=f.useMemo(()=>i.map(_=>[...new Set(C.map(z=>_.value(z)).filter(z=>z!==void 0))].sort()),[i,C]),N=f.useMemo(()=>Ne(k,i,b),[k,i,b]),R=f.useMemo(()=>v?S.find(_=>_.span_id===v)??null:null,[S,v]),te=f.useMemo(()=>R?S.filter(_=>_.trace_id===R.trace_id):[],[S,R]),P=x==="side"&&!a;return e.jsxs(l,{"data-otel-live-spans":"",border:"1px solid",borderColor:"border.default",borderRadius:2,bg:"canvas.default",color:"fg.default",minWidth:0,children:[e.jsxs(l,{role:"toolbar","aria-label":h,display:"flex",flexWrap:"wrap",gap:2,alignItems:"center",p:2,borderBottom:"1px solid",borderColor:"border.default",children:[i.map((_,z)=>e.jsx(Ee,{facet:_,options:ee[z]??[],selected:b[z]??new Set,onChange:ne=>A(re=>i.map((Le,G)=>G===z?ne:re[G]??new Set))},_.label)),e.jsx(l,{flex:1}),e.jsxs(c,{sx:{fontSize:0,color:"fg.muted"},"data-otel-span-count":"",children:[N.length===k.length?`${N.length} ${N.length===1?"span":"spans"}`:`${N.length} of ${k.length}`,I>0?` · ${I} new`:""]}),e.jsx(U,{size:"small",leadingVisual:s?ae:de,"aria-pressed":s!==null,onClick:()=>y(s?null:C),"data-otel-pause":"",children:s?"Resume":"Pause"}),e.jsx(U,{size:"small",leadingVisual:ce,onClick:()=>{y(null),T(null),t&&!n&&!r?t.clear():O(Date.now())},"data-otel-clear":"",children:"Clear"}),e.jsx(U,{size:"small",leadingVisual:ue,disabled:!C.length,onClick:()=>Me(u,{exportedAt:new Date().toISOString(),spans:[...C]}),"data-otel-export":"",children:"Export"})]}),e.jsxs(l,{display:P?"grid":"block",gridTemplateColumns:P?"minmax(0, 3fr) minmax(0, 2fr)":void 0,children:[e.jsx(l,{maxHeight:o,overflowY:"auto",minWidth:0,children:e.jsx(Ce,{spans:N,selectedSpanId:v,onSelectSpan:_=>T(_.span_id),emptyText:p,compact:a,defaultExpanded:!0,renderSpanMark:d,describeSpan:m})}),R&&e.jsx(l,{"data-otel-live-detail":"",maxHeight:o,overflowY:"auto",minWidth:0,borderTop:P?"none":"1px solid",borderColor:"border.default",children:e.jsx(Oe,{span:R,traceSpans:te,onClose:()=>T(null)})})]})]})},$e=[{label:"Source",value:fe,name:t=>xe[t]??t},{label:"Operation",value:t=>{const n=t.attributes??{},r=n[K.operation]??n["rpc.method"];return r===void 0?void 0:String(r)}},{label:"Agent",value:t=>t.service_name}];function De(t){const n=t.attributes?.[K.markIcon],r=t.attributes?.[K.markEmoji];return n||r?e.jsx(he,{icon:typeof n=="string"?n:void 0,emoji:typeof r=="string"?r:void 0,size:14}):null}function Pe({tracer:t,spans:n,agent:r,maxHeight:i=420,compact:a=!1,emptyText:o="Nothing recorded yet.",exportName:x="agent-inspector"}){return e.jsx("div",{"data-agent-inspector":r??"",children:e.jsx(Be,{tracer:t,spans:n,service:r,facets:$e,compact:a,maxHeight:i,detailPlacement:"side",emptyText:o,exportName:x,label:r?`${r}'s Agent Inspector`:"Agent Inspector",renderSpanMark:De,describeSpan:pe})})}export{$e as AGENT_INSPECTOR_FACETS,Pe as AgentInspector,Pe as default};
|
|
1
|
+
import{r as f,j as e,B as l,cQ as ie,eJ as se,T as c,bm as W,cP as F,L as D,I as oe,eK as le,eL as V,c as U,P as ae,eM as de,k as ce,eN as ue,dx as H,bd as M,eO as xe,eP as fe,eQ as K,eR as pe,eS as he}from"../datalayer-app-main.js";import{B,U as $}from"./index-DIHzcHI1.js";function E(t){const n=Number(t);return!isNaN(n)&&n>1e15?n/1e6:!isNaN(n)&&n>1e12?n/1e3:isNaN(n)?new Date(String(t)).getTime():n}function J(t){return t==null?"—":t<.001?"<1µs":t<1?`${(t*1e3).toFixed(0)}µs`:t<1e3?`${t.toFixed(1)}ms`:t<6e4?`${(t/1e3).toFixed(2)}s`:`${(t/6e4).toFixed(1)}m`}function me(t){if(t==null||t==="")return"—";try{const n=E(t),r=new Date(n);return isNaN(r.getTime())?String(t):r.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3})}catch{return String(t)}}const X=["#0969da","#1a7f37","#cf222e","#8250df","#bf8700","#0550ae","#116329","#a40e26","#6639ba","#953800","#0e8a16","#e36209"];function ge(t){let n=0;for(let r=0;r<t.length;r++)n=n*31+t.charCodeAt(r)|0;return X[Math.abs(n)%X.length]}function q(t){const n=new Map,r=t.map(o=>({...o,children:[],depth:0}));for(const o of r)n.set(o.span_id,o);const i=[];for(const o of r)if(o.parent_span_id&&n.has(o.parent_span_id)){const x=n.get(o.parent_span_id);x.children=x.children??[],x.children.push(o)}else i.push(o);function a(o,x){o.depth=x;for(const p of o.children??[])a(p,x+1)}for(const o of i)a(o,0);return i}const be="peer.service";function je(t,n){return t.service_name===n||t.attributes?.[be]===n}function Se(t,n){return n?t.filter(r=>je(r,n)):[...t]}const Q=[],_e=()=>()=>{};function we(t){return f.useSyncExternalStore(t?t.subscribe:_e,()=>t?t.spans():Q,()=>t?t.spans():Q)}const ye="140px 1fr 160px 90px",ve="96px minmax(0, 1fr) 96px 64px";function ke(t){const n=t.attributes;if(!n)return null;const r=n["gen_ai.usage.input_tokens"]!=null?Number(n["gen_ai.usage.input_tokens"]):void 0,i=n["gen_ai.usage.output_tokens"]!=null?Number(n["gen_ai.usage.output_tokens"]):void 0;return r==null&&i==null?null:{input:r,output:i}}const Ce=({spans:t,loading:n,selectedSpanId:r,onSelectSpan:i,emptyText:a,compact:o=!1,defaultExpanded:x=!1,renderSpanMark:p,describeSpan:u})=>{const[h,d]=f.useState(new Set),m=f.useMemo(()=>({has:s=>x?!h.has(s):h.has(s)}),[h,x]),j=o?ve:ye,S=f.useMemo(()=>q(t),[t]),g=f.useMemo(()=>{const s=[];function y(b,O){const v=b.children??[];if(s.push({span:b,depth:O,hasChildren:v.length>0}),m.has(b.span_id))for(const T of v)y(T,O+1)}for(const b of S)y(b,0);return s},[S,m]),A=f.useCallback(s=>{d(y=>{const b=new Set(y);return b.has(s)?b.delete(s):b.add(s),b})},[]);return n?e.jsx(l,{display:"flex",justifyContent:"center",p:5,children:e.jsx(ie,{size:"medium"})}):t.length===0?e.jsxs(B,{children:[e.jsx(B.Visual,{children:e.jsx(se,{size:24})}),e.jsx(B.Heading,{children:"No traces found"}),e.jsx(B.Description,{children:a??"Send some telemetry data first."})]}):e.jsxs(l,{width:"100%",flex:1,minHeight:0,overflow:"auto",children:[e.jsx(l,{display:"grid",gridTemplateColumns:j,gap:2,px:3,position:"sticky",top:0,bg:"canvas.subtle",zIndex:1,borderBottom:"2px solid",borderColor:"border.default",children:["Time","Message","Scope","Duration"].map(s=>e.jsx(c,{sx:{fontWeight:"bold",fontSize:0,color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em",py:2,...s==="Duration"?{textAlign:"right"}:{}},children:s},s))}),g.map(({span:s,depth:y,hasChildren:b},O)=>{const v=r===s.span_id,T=m.has(s.span_id),C=y*(o?12:20),k=u?.(s);return e.jsxs(l,{"data-otel-span":s.span_id,"data-otel-span-name":s.span_name,onClick:()=>{b&&A(s.span_id),i?.(s)},display:"grid",gridTemplateColumns:j,gap:2,px:3,py:"5px",cursor:"pointer",bg:v?"accent.subtle":y>0?"canvas.inset":"canvas.default",borderBottom:"1px solid",borderColor:"border.muted",hover:{bg:v?"accent.subtle":"canvas.subtle"},children:[e.jsx(c,{sx:{fontSize:o?0:1,fontFamily:"mono",color:"fg.muted",whiteSpace:"nowrap",lineHeight:"22px"},children:me(s.start_time)}),e.jsxs(l,{display:"flex",alignItems:"center",gap:1,overflow:"hidden",lineHeight:"22px",pl:`${C}px`,children:[b?e.jsx(l,{flexShrink:0,color:"fg.muted",display:"flex",alignItems:"center",children:T?e.jsx(W,{size:14}):e.jsx(F,{size:14})}):y>0?e.jsx(l,{flexShrink:0,width:"14px",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.subtle",fontSize:0,children:"─"}):null,p?.(s),e.jsx(c,{sx:{fontSize:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:k?0:1,maxWidth:k?"60%":void 0},title:s.span_name,children:s.span_name}),s.in_progress&&e.jsx(D,{variant:"attention",size:"small",children:"running"}),s.status_code==="ERROR"&&e.jsx(D,{variant:"danger",size:"small",children:"ERROR"}),(()=>{const I=ke(s);return I?e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"2px",border:"1px solid",borderColor:"border.default",borderRadius:2,px:1,fontSize:"10px",fontFamily:"mono",color:"fg.muted",flexShrink:0,lineHeight:"16px",children:[I.input!=null&&e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"1px",children:[e.jsx(c,{sx:{fontSize:"9px",color:"fg.subtle"},children:"↗"}),e.jsx(c,{children:I.input})]}),I.output!=null&&e.jsxs(l,{display:"inline-flex",alignItems:"center",gap:"1px",children:[e.jsx(c,{sx:{fontSize:"9px",color:"fg.subtle"},children:"↙"}),e.jsx(c,{children:I.output})]})]}):null})(),k&&e.jsx(c,{sx:{fontSize:1,color:"fg.muted",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},title:k,"data-otel-span-description":"",children:k}),s.otel_scope_name&&!o&&e.jsx(D,{size:"small",variant:"secondary",sx:{flexShrink:0,fontSize:"10px"},children:s.otel_scope_name})]}),e.jsx(c,{sx:{fontSize:1,color:"fg.muted",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:"22px"},title:`${s.service_name} / ${s.otel_scope_name??""}`,children:s.service_name}),e.jsx(c,{sx:{fontSize:1,fontFamily:"mono",textAlign:"right",lineHeight:"22px",color:s.duration_ms!=null&&s.duration_ms>1e3?"danger.fg":"fg.default"},children:s.in_progress?"…":J(s.duration_ms)})]},`${s.trace_id}-${s.span_id}-${O}`)})]})},ze=20,Z=({span:t,depth:n,selectedSpanId:r,onSelectSpan:i,expandedIds:a,toggleExpanded:o,traceMinTime:x,traceDuration:p})=>{const u=(t.children?.length??0)>0,h=a.has(t.span_id),d=r===t.span_id,m=ge(t.service_name),j=(E(t.start_time)-x)/p*100,S=Math.max((t.duration_ms||0)/p*100,.5);return e.jsxs(e.Fragment,{children:[e.jsxs(l,{display:"flex",alignItems:"center",height:28,pl:`${n*ze}px`,pr:2,cursor:"pointer",bg:d?"accent.subtle":"canvas.default",borderBottom:"1px solid",borderColor:"border.muted",hover:{bg:d?"accent.subtle":"canvas.subtle"},onClick:()=>i?.(t),children:[e.jsx(l,{width:20,textAlign:"center",color:"fg.muted",userSelect:"none",flexShrink:0,cursor:u?"pointer":"default",onClick:g=>{g.stopPropagation(),u&&o(t.span_id)},children:u?h?e.jsx(W,{size:12}):e.jsx(F,{size:12}):e.jsx(c,{sx:{color:"fg.subtle",fontSize:0},children:"·"})}),e.jsx(l,{width:8,height:8,borderRadius:"50%",bg:m,flexShrink:0,mr:1}),e.jsx(c,{sx:{flex:"0 0 200px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:1,fontWeight:d?"bold":"normal"},title:`${t.service_name} / ${t.span_name}`,children:t.span_name}),e.jsx(l,{flex:1,position:"relative",height:12,bg:"canvas.subtle",borderRadius:1,mx:2,overflow:"hidden",children:e.jsx(l,{position:"absolute",left:`${j}%`,width:`${S}%`,height:"100%",bg:m,borderRadius:1,opacity:d?1:.7})}),e.jsx(c,{sx:{minWidth:60,textAlign:"right",fontSize:0,fontFamily:"mono",color:"fg.muted",flexShrink:0},children:J(t.duration_ms)})]}),u&&h&&t.children.map(g=>e.jsx(Z,{span:g,depth:n+1,selectedSpanId:r,onSelectSpan:i,expandedIds:a,toggleExpanded:o,traceMinTime:x,traceDuration:p},g.span_id))]})},Ie=({spans:t,selectedSpanId:n,onSelectSpan:r,defaultExpandDepth:i=2})=>{const a=f.useMemo(()=>{const d=new Set;function m(j,S){for(const g of j)S<i&&d.add(g.span_id),g.children&&m(g.children,S+1)}return m(t,0),d},[t,i]),[o,x]=f.useState(a),p=f.useCallback(d=>{x(m=>{const j=new Set(m);return j.has(d)?j.delete(d):j.add(d),j})},[]),{traceMinTime:u,traceDuration:h}=f.useMemo(()=>{let d=1/0,m=-1/0;function j(S){for(const g of S){const A=E(g.start_time),s=E(g.end_time);A<d&&(d=A),s>m&&(m=s),g.children&&j(g.children)}}return j(t),d===1/0?{traceMinTime:0,traceDuration:1}:{traceMinTime:d,traceDuration:m-d||1}},[t]);return t.length===0?e.jsx(l,{p:3,color:"fg.muted",textAlign:"center",children:e.jsx(c,{children:"No span tree to display."})}):e.jsxs(l,{width:"100%",overflow:"auto",children:[e.jsxs(l,{display:"flex",alignItems:"center",height:28,px:2,borderBottom:"2px solid",borderColor:"border.default",bg:"canvas.subtle",children:[e.jsx(l,{width:20}),e.jsx(l,{width:8,mr:1}),e.jsx(c,{sx:{flex:"0 0 200px",fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Span"}),e.jsx(c,{sx:{flex:1,mx:2,fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Timeline"}),e.jsx(c,{sx:{minWidth:60,textAlign:"right",fontSize:0,fontWeight:"bold",color:"fg.muted",textTransform:"uppercase",letterSpacing:"0.05em"},children:"Duration"})]}),t.map(d=>e.jsx(Z,{span:d,depth:0,selectedSpanId:n,onSelectSpan:r,expandedIds:o,toggleExpanded:p,traceMinTime:u,traceDuration:h},d.span_id))]})},w=({label:t,value:n,mono:r=!1})=>n==null||n===""?null:e.jsxs(l,{display:"flex",py:1,borderBottom:"1px solid",borderColor:"border.muted",gap:2,children:[e.jsx(c,{sx:{width:140,minWidth:140,color:"fg.muted",fontSize:1,fontWeight:"bold"},children:t}),e.jsx(c,{sx:{fontSize:1,fontFamily:r?"mono":"normal",wordBreak:"break-all"},children:String(n)})]}),Y=({title:t,data:n,defaultOpen:r=!1})=>{const[i,a]=f.useState(r);return!n||Object.keys(n).length===0?null:e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,cursor:"pointer",py:1,userSelect:"none",onClick:()=>a(!i),children:[i?e.jsx(W,{size:16}):e.jsx(F,{size:16}),e.jsx(c,{sx:{fontSize:1,fontWeight:"bold"},children:t}),e.jsx(V,{children:Object.keys(n).length})]}),i&&e.jsx(l,{bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",p:2,mt:1,overflowX:"auto",children:Object.entries(n).map(([o,x])=>e.jsx(L,{attrKey:o,value:x,depth:0},o))})]})};function Te(t){if(typeof t!="string")return t;const n=t.trim();if(!/^[[{]/.test(n))return t;try{const r=JSON.parse(n);return typeof r=="object"&&r!==null?r:t}catch{return t}}const L=({attrKey:t,value:n,depth:r})=>{const i=f.useMemo(()=>Te(n),[n]),[a,o]=f.useState(r<1),x=typeof i=="object"&&i!==null&&!Array.isArray(i),p=Array.isArray(i),u=x||p;return e.jsxs(l,{borderBottom:r===0?"1px solid":"none",borderColor:"border.muted",pb:r===0?1:0,mb:r===0?1:0,children:[e.jsxs(l,{display:"flex",gap:2,py:1,pl:r*16+"px",alignItems:"flex-start",children:[u?e.jsx(l,{cursor:"pointer",color:"fg.muted",userSelect:"none",width:16,flexShrink:0,onClick:()=>o(!a),children:a?e.jsx(W,{size:12}):e.jsx(F,{size:12})}):e.jsx(l,{width:16,flexShrink:0}),e.jsx(c,{sx:{color:"accent.fg",fontSize:1,fontFamily:"mono",minWidth:180,wordBreak:"break-all",flexShrink:0},children:t}),!u&&e.jsx(c,{sx:{fontSize:1,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",color:typeof i=="string"?"accent.emphasis":"attention.fg"},children:typeof i=="string"?i:JSON.stringify(i)}),u&&!a&&e.jsx(c,{sx:{fontSize:0,color:"fg.muted",fontFamily:"mono"},children:p?`[${i.length} items]`:`{${Object.keys(i).length} keys}`})]}),u&&a&&e.jsx(l,{children:p?i.map((h,d)=>e.jsx(L,{attrKey:`[${d}]`,value:h,depth:r+1},d)):Object.entries(i).map(([h,d])=>e.jsx(L,{attrKey:h,value:d,depth:r+1},h))})]})},Ae=({span:t,traceSpans:n,onClose:r})=>{const[i,a]=f.useState("details");if(!t)return e.jsx(l,{p:5,color:"fg.muted",textAlign:"center",children:e.jsx(c,{children:"Select a span to view details."})});const o={},x={};if(t.attributes)for(const[u,h]of Object.entries(t.attributes))u.startsWith("gen_ai.")||u.startsWith("model_request")?o[u]=h:x[u]=h;const p=n&&n.length>0?q(n):void 0;return e.jsxs(l,{height:"100%",overflow:"auto",borderLeft:"1px solid",borderColor:"border.default",bg:"canvas.default",display:"flex",flexDirection:"column",children:[e.jsxs(l,{px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",display:"flex",justifyContent:"space-between",alignItems:"center",bg:"canvas.subtle",flexShrink:0,children:[e.jsx(c,{sx:{fontSize:2,fontWeight:"bold"},children:t.span_name}),r&&e.jsx(oe,{icon:le,"aria-label":"Close detail panel",variant:"invisible",size:"small",onClick:r})]}),e.jsxs($,{"aria-label":"Span detail tabs",children:[e.jsx($.Item,{"aria-current":i==="details"?"page":void 0,onClick:()=>a("details"),children:"Details"}),p&&e.jsx($.Item,{"aria-current":i==="tree"?"page":void 0,onClick:()=>a("tree"),children:"Trace Tree"}),e.jsx($.Item,{"aria-current":i==="raw"?"page":void 0,onClick:()=>a("raw"),children:"Raw Data"})]}),e.jsxs(l,{flex:1,overflow:"auto",children:[i==="details"&&e.jsxs(l,{p:3,children:[e.jsx(w,{label:"span_name",value:t.span_name}),e.jsx(w,{label:"service_name",value:t.service_name}),e.jsx(w,{label:"otel_scope_name",value:t.otel_scope_name}),e.jsx(w,{label:"kind",value:t.kind}),e.jsx(w,{label:"trace_id",value:t.trace_id,mono:!0}),e.jsx(w,{label:"span_id",value:t.span_id,mono:!0}),e.jsx(w,{label:"parent_span_id",value:t.parent_span_id,mono:!0}),e.jsx(w,{label:"duration",value:J(t.duration_ms)}),e.jsx(w,{label:"start_time",value:t.start_time,mono:!0}),e.jsx(w,{label:"end_time",value:t.end_time,mono:!0}),e.jsx(w,{label:"status_code",value:t.status_code}),e.jsx(w,{label:"status_message",value:t.status_message}),e.jsx(Y,{title:"Arguments",data:o,defaultOpen:Object.keys(o).length>0}),e.jsx(Y,{title:"Attributes",data:x}),t.events&&t.events.length>0&&e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(c,{sx:{fontWeight:"bold",fontSize:1},children:"Events"}),e.jsx(V,{children:t.events.length})]}),t.events.map((u,h)=>e.jsxs(l,{bg:"canvas.subtle",borderRadius:2,border:"1px solid",borderColor:"border.default",p:2,mt:2,children:[e.jsxs(l,{display:"flex",gap:2,children:[e.jsx(D,{children:u.name}),e.jsx(c,{sx:{fontSize:0,color:"fg.muted",fontFamily:"mono"},children:u.timestamp})]}),u.attributes&&Object.keys(u.attributes).length>0&&e.jsx(l,{mt:1,children:Object.entries(u.attributes).map(([d,m])=>e.jsx(L,{attrKey:d,value:m,depth:0},d))})]},h))]}),t.links&&t.links.length>0&&e.jsxs(l,{mt:3,children:[e.jsxs(l,{display:"flex",alignItems:"center",gap:1,children:[e.jsx(c,{sx:{fontWeight:"bold",fontSize:1},children:"Links"}),e.jsx(V,{children:t.links.length})]}),t.links.map((u,h)=>e.jsxs(c,{sx:{display:"block",fontSize:1,fontFamily:"mono",py:1,borderBottom:"1px solid",borderColor:"border.muted"},children:["trace: ",u.trace_id," → span: ",u.span_id]},h))]})]}),i==="tree"&&p&&e.jsx(Ie,{spans:p,selectedSpanId:t.span_id,defaultExpandDepth:4}),i==="raw"&&e.jsx(l,{as:"pre",p:3,fontSize:0,fontFamily:"mono",whiteSpace:"pre-wrap",wordBreak:"break-word",m:0,bg:"canvas.subtle",children:JSON.stringify(t,null,2)})]})]})},Oe=[{label:"Service",value:t=>t.service_name},{label:"Kind",value:t=>t.kind}];function Ne(t,n,r){return t.filter(i=>n.every((a,o)=>{const x=r[o];if(!x?.size)return!0;const p=a.value(i);return p!==void 0&&x.has(p)}))}function Re(t,n){const r=new Set(t);return r.has(n)?r.delete(n):r.add(n),r}function Ee({facet:t,options:n,selected:r,onChange:i}){const a=t.name??(o=>o);return e.jsxs(H,{children:[e.jsxs(H.Button,{size:"small","data-otel-facet":t.label.toLowerCase(),children:[t.label,r.size?` · ${r.size}`:""]}),e.jsx(H.Overlay,{width:"auto",children:e.jsxs(M,{selectionVariant:"multiple","aria-label":t.label,children:[e.jsx(M.Item,{selected:!r.size,onSelect:()=>i(new Set),children:"All"}),e.jsx(M.Divider,{}),n.map(o=>e.jsx(M.Item,{selected:r.has(o),onSelect:()=>i(Re(r,o)),children:a(o)},o))]})})]})}function Me(t,n){const r=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),i=URL.createObjectURL(r),a=document.createElement("a");a.href=i,a.download=`${t}.json`,a.click(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}const Be=({tracer:t,spans:n,service:r,facets:i=Oe,compact:a=!1,maxHeight:o=420,detailPlacement:x="below",emptyText:p="Nothing recorded yet.",exportName:u="otel-spans",label:h="Spans",renderSpanMark:d,describeSpan:m})=>{const j=we(n?null:t),S=n??j,[g,A]=f.useState(0),[s,y]=f.useState(null),[b,O]=f.useState(()=>i.map(()=>new Set)),[v,T]=f.useState(null),C=f.useMemo(()=>{const _=Se(S,r);return g?_.filter(z=>E(z.start_time)>=g):_},[S,r,g]),k=s??C,I=s?C.length-s.length:0,ee=f.useMemo(()=>i.map(_=>[...new Set(C.map(z=>_.value(z)).filter(z=>z!==void 0))].sort()),[i,C]),N=f.useMemo(()=>Ne(k,i,b),[k,i,b]),R=f.useMemo(()=>v?S.find(_=>_.span_id===v)??null:null,[S,v]),te=f.useMemo(()=>R?S.filter(_=>_.trace_id===R.trace_id):[],[S,R]),P=x==="side"&&!a;return e.jsxs(l,{"data-otel-live-spans":"",border:"1px solid",borderColor:"border.default",borderRadius:2,bg:"canvas.default",color:"fg.default",minWidth:0,children:[e.jsxs(l,{role:"toolbar","aria-label":h,display:"flex",flexWrap:"wrap",gap:2,alignItems:"center",p:2,borderBottom:"1px solid",borderColor:"border.default",children:[i.map((_,z)=>e.jsx(Ee,{facet:_,options:ee[z]??[],selected:b[z]??new Set,onChange:ne=>O(re=>i.map((Le,G)=>G===z?ne:re[G]??new Set))},_.label)),e.jsx(l,{flex:1}),e.jsxs(c,{sx:{fontSize:0,color:"fg.muted"},"data-otel-span-count":"",children:[N.length===k.length?`${N.length} ${N.length===1?"span":"spans"}`:`${N.length} of ${k.length}`,I>0?` · ${I} new`:""]}),e.jsx(U,{size:"small",leadingVisual:s?ae:de,"aria-pressed":s!==null,onClick:()=>y(s?null:C),"data-otel-pause":"",children:s?"Resume":"Pause"}),e.jsx(U,{size:"small",leadingVisual:ce,onClick:()=>{y(null),T(null),t&&!n&&!r?t.clear():A(Date.now())},"data-otel-clear":"",children:"Clear"}),e.jsx(U,{size:"small",leadingVisual:ue,disabled:!C.length,onClick:()=>Me(u,{exportedAt:new Date().toISOString(),spans:[...C]}),"data-otel-export":"",children:"Export"})]}),e.jsxs(l,{display:P?"grid":"block",gridTemplateColumns:P?"minmax(0, 3fr) minmax(0, 2fr)":void 0,children:[e.jsx(l,{maxHeight:o,overflowY:"auto",minWidth:0,children:e.jsx(Ce,{spans:N,selectedSpanId:v,onSelectSpan:_=>T(_.span_id),emptyText:p,compact:a,defaultExpanded:!0,renderSpanMark:d,describeSpan:m})}),R&&e.jsx(l,{"data-otel-live-detail":"",maxHeight:o,overflowY:"auto",minWidth:0,borderTop:P?"none":"1px solid",borderColor:"border.default",children:e.jsx(Ae,{span:R,traceSpans:te,onClose:()=>T(null)})})]})]})},$e=[{label:"Source",value:fe,name:t=>xe[t]??t},{label:"Operation",value:t=>{const n=t.attributes??{},r=n[K.operation]??n["rpc.method"];return r===void 0?void 0:String(r)}},{label:"Agent",value:t=>t.service_name}];function De(t){const n=t.attributes?.[K.markIcon],r=t.attributes?.[K.markEmoji];return n||r?e.jsx(he,{icon:typeof n=="string"?n:void 0,emoji:typeof r=="string"?r:void 0,size:14}):null}function Pe({tracer:t,spans:n,agent:r,maxHeight:i=420,compact:a=!1,emptyText:o="Nothing recorded yet.",exportName:x="agent-inspector"}){return e.jsx("div",{"data-agent-inspector":r??"",children:e.jsx(Be,{tracer:t,spans:n,service:r,facets:$e,compact:a,maxHeight:i,detailPlacement:"side",emptyText:o,exportName:x,label:r?`${r}'s Agent Inspector`:"Agent Inspector",renderSpanMark:De,describeSpan:pe})})}export{$e as AGENT_INSPECTOR_FACETS,Pe as AgentInspector,Pe as default};
|
package/dist-embed/chunks/{AgentInspectorDialog-zGMiFR5z.js → AgentInspectorDialog-fT96Pb4Z.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,D as n,r as t,T as i,_ as c}from"../datalayer-app-main.js";const g=t.lazy(()=>c(()=>import("./AgentInspector-
|
|
1
|
+
import{j as e,D as n,r as t,T as i,_ as c}from"../datalayer-app-main.js";const g=t.lazy(()=>c(()=>import("./AgentInspector-kDMuvh45.js"),[],import.meta.url));function d({tracer:r,title:a="Agent Inspector",agent:o,onClose:s}){return e.jsx(n,{title:a,onClose:s,width:"xlarge",height:"large","data-agent-inspector-dialog":"",children:e.jsx(t.Suspense,{fallback:e.jsx(i,{sx:{color:"fg.muted"},children:"Loading the Agent Inspector…"}),children:e.jsx(g,{tracer:r,agent:o,maxHeight:"calc(80vh - 140px)",emptyText:"Nothing recorded yet: what the agent does shows here as it does it."})})})}export{d as AgentInspectorDialog,d as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{v as j,be as $,cD as q,cE as y,j as D,bg as V}from"../datalayer-app-main.js";var k={Avatar:"prc-Avatar-Avatar-ZRS-m"};const w=20,T=j.forwardRef(function(A,u){const s=$.c(29);let o,i,a,l,n,d,f;s[0]!==A?({alt:n,size:d,square:f,sx:l,className:o,style:a,...i}=A,s[0]=A,s[1]=o,s[2]=i,s[3]=a,s[4]=l,s[5]=n,s[6]=d,s[7]=f):(o=s[1],i=s[2],a=s[3],l=s[4],n=s[5],d=s[6],f=s[7]);const m=n===void 0?"":n,t=d===void 0?w:d,b=f===void 0?!1:f;let p;s[8]!==t?(p=q(t),s[8]=t,s[9]=p):p=s[9];const r=p;let e;if(s[10]!==r||s[11]!==t){if(e={},r)for(const[g,h]of Object.entries(t))e[`--avatarSize-${g}`]=`${h}px`;else e["--avatarSize-regular"]=`${t}px`;s[10]=r,s[11]=t,s[12]=e}else e=s[12];let c;s[13]!==o?(c=y(o,k.Avatar),s[13]=o,s[14]=c):c=s[14];const R=r?"":void 0,z=b?"":void 0,E=r?void 0:t,S=r?void 0:t;let v;s[15]!==e||s[16]!==a?(v=a?{...e,...a}:e,s[15]=e,s[16]=a,s[17]=v):v=s[17];let x;return s[18]!==m||s[19]!==u||s[20]!==i||s[21]!==l||s[22]!==v||s[23]!==c||s[24]!==R||s[25]!==z||s[26]!==E||s[27]!==S?(x=D.jsx(V,{as:"img","data-component":"Avatar",className:c,ref:u,alt:m,"data-responsive":R,"data-square":z,width:E,height:S,style:v,sx:l,...i}),s[18]=m,s[19]=u,s[20]=i,s[21]=l,s[22]=v,s[23]=c,s[24]=R,s[25]=z,s[26]=E,s[27]=S,s[28]=x):x=s[28],x});export{T as A,w as D};
|