agent-webui 2.2.0__tar.gz → 2.4.0__tar.gz
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.
- {agent_webui-2.2.0 → agent_webui-2.4.0}/PKG-INFO +20 -15
- {agent_webui-2.2.0 → agent_webui-2.4.0}/README.md +19 -14
- agent_webui-2.4.0/agent/agent_webui/dist/assets/AdminView-DdIl1J2T.js +1 -0
- agent_webui-2.4.0/agent/agent_webui/dist/assets/AgentLibraryView-ixBX4oSu.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/BrokerView-vR0lvxdI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/BrokerView-CLLvP2bT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CapabilityWorkbench-Y2CVYnpu.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/CapabilityWorkbench-DgoNJQln.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/CatalogueView-DVQEH2FU.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CodeGraphView-DeJaeSnX.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/CodeGraphView-B-4YSp6t.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ConfigurationView-_zuzsaoc.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ConfigurationView-vx-k_OFa.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CypherReplView-CQ0JowvA.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/CypherReplView-C2pGdpgy.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/DashboardView-CLyo1wAx.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/DataAnalystView-DuyC_7IO.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/DataAnalystView-Bh0404iH.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/EcosystemView-DLcG4Tbo.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ExtractionView-BNiRbb4O.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ExtractionView-BBPzCe0y.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/FilesView--qqeR2-6.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/FilesView-lf-w9_sf.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/FleetView-CZ-eX8Qg.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GoalsView-GI5hexq-.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/GoalsView-4eph2QUc.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GraphCanvas-DCRZaLc0.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/GraphCanvas-CRjIf0Eq.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GraphView-DMuEwdYU.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/GraphView-CPgRwGcK.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ImportExportModal-BMSlKSDJ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ImportExportModal-CmYwHimu.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/KnowledgeBaseView-MME12Rpi.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/KnowledgeBaseView-kzSGlDWM.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/KnowledgeView-Dlk8Udoq.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/KnowledgeView-9si-OxUT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LLMTemplatesView-BRrLxeh-.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/LLMTemplatesView-CP6WW-Ix.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LearnView-DF_Zjucl.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/LearnView-BPJN8pYK.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LiveDashboardsView-D8Xq4fNb.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/LiveDashboardsView-B7vUCGf9.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/MagmaView-DXlVkthD.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/MagmaView-BfPq_Cme.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/MemoryView-D_UZLCRW.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/MemoryView-B8juhQCI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObjectExplorerView-BBqerMIg.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ObjectExplorerView-DkEaCB_T.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObjectView-4kkBxzhA.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ObjectView-OKwzMVM6.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObservabilityView-CyQjjdV3.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ObservabilityView-7corUyDB.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/OpsPanelView-BL7u1cKR.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/PromptsView-BaIvihki.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/PromptsView-Di3xXTQU.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SDDView-CmY6_loH.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SDDView-DkRw4wod.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/SchedulingView-DuVnlC7u.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SchemaView-DFLXzBzI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SchemaView-DNDUQCYs.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SessionExpiredNotice-BuEU0kEv.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SessionExpiredNotice-DRgIunzu.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SessionsView-C7Peouw0.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SessionsView-Bb5cIZGO.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SkillsView-DHgt0J4F.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SkillsView-DllVhOam.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SparqlView-DGYuVnlI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SparqlView-yg8k4YOm.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SystemStatusView-De0q3UI5.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/SystemStatusView-B8bFBR30.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/TemporalGraphView-ChnIx6vs.js +1 -0
- agent_webui-2.4.0/agent/agent_webui/dist/assets/UsageView-DLsFXcLZ.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/VertexView-DzfCLEk3.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/VertexView-Ds4c-TjP.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/VizDemoView-DH_wV8ee.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/VizDemoView-BCW9LhXy.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/WorkflowEditorView-CZDweAjr.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/WorkflowEditorView-CCULvC6K.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/WorkspaceIDEView-e2SoQH5v.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/WorkspaceIDEView-BxqEM3wd.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/abnfDiagram-VRR7QNED-3TEv1zsc.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/abnfDiagram-VRR7QNED-H2XXduqj.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/arc-GJ_Vi1QI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/arc-lM2b0hLG.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/architectureDiagram-ZJ3FMSHR-GMBWd-VO.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/architectureDiagram-ZJ3FMSHR-BMtizQ0W.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/blockDiagram-677ZJIJ3-pjA0Y0-8.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/blockDiagram-677ZJIJ3-D71T3fZ4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/c4Diagram-LMCZKHZV-BcoB9t6Q.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/c4Diagram-LMCZKHZV-hArFFPIw.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/card-jA_uRyRo.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/card-B8Y9xTh8.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/channel-BBelYpwX.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chevron-left-DbMjdPv6.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chevron-left-BOhdSPVl.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chevron-right-DxomHGl9.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chevron-right-CcqMO7bs.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-2Q5K7J3B-CqPW6Rdz.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-2Q5K7J3B-Dg2QJ7Vy.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-32BRIVSS--I6oESLC.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-32BRIVSS-CWrp8olR.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-5VM5RSS4-B6fUpg4Y.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-5VM5RSS4-NIMiyex7.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-EX3LRPZG-BFMjpYVq.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-EX3LRPZG-BIxHFkC-.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-JWPE2WC7-79AlCAVu.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-JWPE2WC7-DmLod2hg.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-MOJQB5TN-DlsoJRZ4.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-MOJQB5TN-BuR0vTVY.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-RYQCIY6F-E6KibJz4.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-RYQCIY6F-DcQbTDme.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-V7JOEXUC-BuVZTkjM.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-V7JOEXUC-Bg9heOGF.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-VR4S4FIN-YOxEBC9s.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-VR4S4FIN-BlZabCP4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-XXDRQBXY-vL6oqeFy.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/chunk-XXDRQBXY-DETF_YpO.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/circle-alert-CPLBudeH.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/circle-alert-BAG8GWpt.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/classDiagram-OUVF2IWQ-BYX5lF1j.js +1 -0
- agent_webui-2.4.0/agent/agent_webui/dist/assets/classDiagram-v2-EOCWNBFH-BYX5lF1j.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/code-block-IT6T5CEO-CDKiy4tN.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/code-block-IT6T5CEO-Bu8iEo2x.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cose-bilkent-JH36ORCC-HZMFN04k.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/cose-bilkent-JH36ORCC-euE2VkX5.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cynefin-VYW2F7L2-BekMfbT7.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/cynefin-VYW2F7L2-C78PJBVx.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cynefinDiagram-TSTJHNR4-D6aroQKr.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/cynefinDiagram-TSTJHNR4-yNJBOovg.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/dagre-VKFMJZFB-D8qo4zpo.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/dagre-VKFMJZFB-DKurkZZO.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-FQU43EPY-Fuc4aNv0.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/diagram-FQU43EPY-BSgmOc4m.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-G47NLZAW-N0UdMXoP.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/diagram-G47NLZAW-BjKpgfyr.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-NH7WQ7WH-BhJhvkhN.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/diagram-NH7WQ7WH-CoBVqoVd.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-OA4YK3LP-DJRxh-8V.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/diagram-OA4YK3LP-H4zifzg5.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-WEI45ONY-DCsIsNLl.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/diagram-WEI45ONY-CgQfyiKG.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ebnfDiagram-CCIWWBDH-BSCnchkI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ebnfDiagram-CCIWWBDH-BnU1p8QJ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/erDiagram-Q63AITRT-WwX18LRl.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/erDiagram-Q63AITRT-CYrBTLeE.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/external-link-YPQMSrZp.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/external-link-ChibGV02.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/eye-DKU_Vxqu.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/eye-J1X8tfEC.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/file-text-0-ZYk3PT.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/file-text-DYSSeu61.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/flowDiagram-23GEKE2U-B6zzZZMZ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/flowDiagram-23GEKE2U-BPni-4Uq.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/folder-open-h3hDBh4O.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/folder-open-DorowgiR.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ganttDiagram-NO4QXBWP-D0RtDz18.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ganttDiagram-NO4QXBWP-BPC8uYoE.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/gateway-C8WFquVE.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/gateway-CigIg5Ky.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/git-fork-B0gGRpXI.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/git-fork-DRJTpbOa.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/gitGraphDiagram-IHSO6WYX-D3NlU05q.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/gitGraphDiagram-IHSO6WYX-BlLFjDRR.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/hard-drive-NUWTCMBa.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/hard-drive-CTKxvTH_.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/index-BcmMgPFv.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/index-5905FP-_.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/index-gYfOaG28.css → agent_webui-2.4.0/agent/agent_webui/dist/assets/index-BiEkWcna.css +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/index-3scWiDq2.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/index-oJW-_XBm.js +98 -98
- agent_webui-2.2.0/agent/agent_webui/dist/assets/infoDiagram-FWYZ7A6U-B-zirRQA.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/infoDiagram-FWYZ7A6U-DQJ67tM4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ishikawaDiagram-FXEZZL3T-D8q0QUEo.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/ishikawaDiagram-FXEZZL3T-CUlQaGb3.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/journeyDiagram-5HDEW3XC-Ct8z5Tfv.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/journeyDiagram-5HDEW3XC-Cxtzej1n.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/kanban-definition-HUTT4EX6-DNwtWpKz.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/kanban-definition-HUTT4EX6-DgguyhjP.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/layers-aPODrU0l.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/layers-BhkOkAA4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/layout-grid-DtHbnzSQ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/layout-grid-CnXSizVw.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/link-2-B2qYw4JB.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/link-2-Buc-uFN8.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/mermaid.core-DKdh7Zm3.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/mermaid.core-BtOOpj-u.js +5 -5
- agent_webui-2.2.0/agent/agent_webui/dist/assets/mindmap-definition-LN4V7U3C-DDU8prGg.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/mindmap-definition-LN4V7U3C-Dizgk25m.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/pegDiagram-2B236MQR-C4QIRbO3.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/pegDiagram-2B236MQR-BZtJpqSh.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/pieDiagram-ENE6RG2P-1SnqMuF5.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/pieDiagram-ENE6RG2P-DsqTDQhC.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/play-BPB0BcIT.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/play-D6f5O0-7.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/plus-Brq5VcI1.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/plus-54fL5QKg.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/quadrantDiagram-ABIIQ3AL-Cfyw_s6s.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/quadrantDiagram-ABIIQ3AL-D8jyLdoV.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/railroadDiagram-RFXS5EU6-DK49Lnoj.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/railroadDiagram-RFXS5EU6-DjUZztPK.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/refresh-cw-s6crI3ZZ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/refresh-cw-DW_113QE.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/requirementDiagram-TGXJPOKE-v1mZ5FHi.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/requirementDiagram-TGXJPOKE-CF-heiDJ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sankeyDiagram-HTMAVEWB-lHuuywyR.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/sankeyDiagram-HTMAVEWB-DUcFNIxb.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/save-74UDVfFR.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/save-9us-oTb8.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/scroll-area-DQ8wpa4y.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/scroll-area-DESuUYBV.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/separator-B8MH7879.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/separator-zDhOPLiO.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sequenceDiagram-DBY2YBRQ-Cr_oZUPF.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/sequenceDiagram-DBY2YBRQ-DdWICNzc.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/server-CBht6nOR.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/server-CnnwkO12.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/shield-BR-971Wy.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/shield-P_xYMus_.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sizeCapture-X5ZJPWSS-CrE7CuZ_.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/sizeCapture-X5ZJPWSS-Bux0kKMF.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/slider-BfRr_Tq4.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/slider-D4ispnNX.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sliders-vertical-lF2NtKX3.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/sliders-vertical-VQFfrq91.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/stateDiagram-2N3HPSRC-BZZOM04a.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/stateDiagram-2N3HPSRC-Dt78Xk2-.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/stateDiagram-v2-6OUMAXLB-CD1Fbi3p.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/swimlanes-5IMT3BWC-CU05g8Np.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/swimlanes-5IMT3BWC-CC-1PXz6.js +2 -2
- agent_webui-2.4.0/agent/agent_webui/dist/assets/swimlanesDiagram-G3AALYLV-LSgkiJFK.js +8 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/tabs-EB-_lbXY.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/tabs-D-bKS-GJ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/timeline-definition-FHXFAJF6-C3uNZaAQ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/timeline-definition-FHXFAJF6-BWL60Xat.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/trash-2-DbeLRKY6.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/trash-2-DeGIbUgN.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/unavailable-notice-Ce6qen9e.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/upload-CGgEKIDN.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/upload-DmuzS9eW.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/useMutation-DveurLYM.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/useMutation-DV8r6JGu.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/users-D5E5Tsnq.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/users--f66Eji2.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/vennDiagram-L72KCM5P-CxKKCC7j.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/vennDiagram-L72KCM5P-DNRDnQ_c.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/wardleyDiagram-EHGQE667-DlhPQHCp.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/wardleyDiagram-EHGQE667-C9HdCyDU.js +1 -1
- agent_webui-2.4.0/agent/agent_webui/dist/assets/wifi-off-Dx38TebK.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/xychartDiagram-FW5EYKEG-DqYg6bWZ.js → agent_webui-2.4.0/agent/agent_webui/dist/assets/xychartDiagram-FW5EYKEG-C_eLikf8.js +1 -1
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/index.html +2 -2
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/server.py +1 -1
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/PKG-INFO +20 -15
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/SOURCES.txt +134 -131
- {agent_webui-2.2.0 → agent_webui-2.4.0}/pyproject.toml +1 -1
- agent_webui-2.4.0/tests/test_provision_identity_tier2_admission.py +287 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/AdminView-BoPQbgL-.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/AgentLibraryView-CGjC7raC.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CatalogueView-C6Vj7S8I.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/DashboardView-CEVI-BO5.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/EcosystemView-BZQzZw0o.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/FleetView-SKJMl4dK.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/OpsPanelView-BYs3EYhg.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SchedulingView-BIYIXmhD.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/TemporalGraphView-BioupZo9.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/UsageView-DhiU3aZI.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/channel-DPg-zdes.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/classDiagram-OUVF2IWQ-B2EpMKtb.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/classDiagram-v2-EOCWNBFH-B2EpMKtb.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/stateDiagram-v2-6OUMAXLB-CfpHxN4T.js +0 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/swimlanesDiagram-G3AALYLV-BX1Z5A4e.js +0 -8
- {agent_webui-2.2.0 → agent_webui-2.4.0}/LICENSE +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__init__.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/conftest.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_agent_library_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_api_extensions.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_canonical_gateway_mount.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_engine_construction_wiring.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_files_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_graph_identity.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_graph_kb_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_identity_middleware_boundary.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_integration.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_mcp_delegation_routes.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_mcp_server_inventory.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_observability.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_oidc_session.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_ontology_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_parity_contract.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_pydantic_ai_compat.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_rbac.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_security_boundaries.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_skill_kg_classification.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_workflow_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_workspace_helpers_chokepoint.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/__tests__/test_ws_dashboard_denial_diagnostics.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/api_extensions.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/apple-touch-icon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/WorkflowEditorView-BnuhLJ6X.css +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/abap-BdImnpbu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/actionscript-3-CoDkCxhg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ada-bCR0ucgS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/andromeeda-C4gqWexZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/angular-html-CU67Zn6k.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/angular-ts-BwZT4LLn.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/apache-Pmp26Uib.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/apex-D8_7TLub.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/apl-dKokRX4l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/applescript-Co6uUVPk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ara-BRHolxvo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/asciidoc-Ve4PFQV2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/asm-D_Q5rh1f.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/astro-CbQHKStN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/aurora-x-D-2ljcwZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/awk-DMzUqQB5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ayu-dark-DYE7WIF3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ayu-light-BA47KaF1.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ayu-mirage-32ctXXKs.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ballerina-BFfxhgS-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/bat-BkioyH1T.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/beancount-k_qm7-4y.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/berry-uYugtg8r.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/bibtex-CHM0blh-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/bicep-Bmn6On1c.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/bird2-DPOp833l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/blade-D4QpJJKB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/bsl-BO_Y6i37.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/c-BIGW1oBm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/c3-eo99z4R2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cadence-Bv_4Rxtq.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cairo-KRGpt6FW.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/clarity-D53aC0YG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/clojure-P80f7IUj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cmake-D1j8_8rp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cobol-nwyudZeR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/codeowners-Bp6g37R7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/codeql-DsOJ9woJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/coffee-Ch7k5sss.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/common-lisp-Cg-RD9OK.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/coq-DkFqJrB1.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cpp-CofmeUqb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/crystal-tKQVLTB8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/csharp-COcwbKMJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/css-DPfMkruS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/csv-fuZLfV_i.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cue-D82EKSYY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cypher-COkxafJQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/cytoscape.esm-D3_iZ_3b.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/d-85-TOEBH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dark-plus-C3mMm8J8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dart-CF10PKvl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dax-CEL-wOlO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/defaultLocale-DX6XiGOO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/desktop-BmXAJ9_W.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/diff-D97Zzqfu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/docker-BcOcwvcX.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dotenv-Da5cRb03.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dracula-BzJJZx-M.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dracula-soft-BXkSAIEj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/dream-maker-BtqSS_iP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/edge-BkV0erSs.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/elixir-CDX3lj18.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/elm-DbKCFpqz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/emacs-lisp-C9XAeP06.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/erb-B12qg9BL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/erlang-DsQrWhSR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/everforest-dark-BgDCqdQA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/everforest-light-C8M2exoo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fennel-BYunw83y.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fish-BvzEVeQv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fluent-C4IJs8-o.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/fsharp-CXgrBDvD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gdresource-BOOCDP_w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gdscript-C5YyOfLZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gdshader-DkwncUOv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/genie-D0YGMca9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gherkin-DyxjwDmM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/git-commit-F4YmCXRG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/git-rebase-r7XF79zn.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-dark-DHJKELXO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-light-DAi9KRSo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-light-default-D7oLnXFd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gleam-BspZqrRM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/glimmer-ts-U6CK756n.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/glsl-DplSGwfg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gn-n2N0HUVH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gnuplot-DdkO51Og.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/go-CxLEBnE3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/graph-DOmOIIwC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/graphql-ChdNCCLP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/groovy-gcz8RCvz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hack-CaT9iCJl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/haml-B8DHNrY2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/handlebars-BL8al0AC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/haskell-Df6bDoY_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/haxe-CzTSHFRz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hcl-BWvSN4gD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hjson-D5-asLiD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hlsl-D3lLCCz7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/horizon-BUw7H-hv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/horizon-bright-Cn-bp-IR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/houston-DnULxvSX.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/html-GMplVEZG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/html-derivative-BFtXZ54Q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/http-jrhK8wxY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hurl-irOxFIW8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hxml-Bvhsp5Yf.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/hy-DFXneXwc.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/imba-DGztddWO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ini-BEwlwnbL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/init-Gi6I4Gst.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/java-CylS5w8V.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/javascript-wDzz0qaB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jinja-4LBKfQ-Z.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jison-wvAkD_A8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/json-Cp-IABpG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/json5-C9tS-k6U.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jsonc-Des-eS-w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jsonl-DcaNXYhu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jsonnet-DFQXde-d.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jssm-C2t-YnRu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/jsx-g9-lgVsj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/julia-CxzCAyBv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/just-Cw27pwNe.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/katex-DLVrwanO.css +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kdl-DV7GczEv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kotlin-BdnUsdx6.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/kusto-DZf3V79B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/laserwave-DUszq2jm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/latex-CWtU0Tv5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/layout-D-LzfAck.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/lean-BZvkOJ9d.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/less-B1dDrJ26.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/light-plus-B7mTdjB0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/linear-D1g5s_fh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/liquid-DYVedYrR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/llvm-DjAJT7YJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/log-2UxHyX5q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/logo-BtOb2qkB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/lua-BaeVxFsk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/luau-C-HG3fhB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/make-CHLpvVh8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/map-DxJ2ADlA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/markdown-Cvjx9yec.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/marko-CnJfTvn9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/material-theme-D5KoaKCx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/material-theme-ocean-CyktbL80.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/matlab-D7o27uSR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/mdc-BMNejdWA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/mdx-Cmh6b_Ma.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/mermaid-mWjccvbQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/min-dark-CafNBF8u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/min-light-CTRr51gU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/mipsasm-CKIfxQSi.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/mojo-rZm6bMo-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/monokai-D4h5O-jR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/moonbit-_H4v1dQx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/move-IF9eRakj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/narrat-DRg8JJMk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nextflow-Zz6hmt5N.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nginx-BpAMiNFr.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/night-owl-C39BiMTA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/night-owl-light-CMTm3GFP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nim-CVrawwO9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nix-CwoSXNpI.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nord-Ddv68eIx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/nushell-Cz2AlsmD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/objective-c-DXmwc3jG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/objective-cpp-CLxacb5B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ocaml-C0hk2d4L.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/odin-BBf5iR-q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/one-light-C3Wv6jpd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/openscad-C4EeE6gA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ordinal-Cboi1Yqb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/pascal-D93ZcfNL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/perl-C0TMdlhV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/php-Dhbhpdrm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/pkl-u5AG7uiY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/plastic-3e1v2bzS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/plsql-ChMvpjG-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/po-BTJTHyun.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/poimandres-CS3Unz2-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/polar-C0HS_06l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/postcss-CXtECtnM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/powerquery-CEu0bR-o.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/powershell-Dpen1YoG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/prisma-Dd19v3D-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/prolog-CbFg5uaA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/proto-C7zT0LnQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/pug-CGlum2m_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/puppet-BMWR74SV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/purescript-CklMAg4u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/python-B6aJPvgy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/qml-3beO22l8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/qmldir-C8lEn-DE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/qss-IeuSbFQv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/r-Dspwwk_N.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/racket-BqYA7rlc.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/raku-DXvB9xmW.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/razor-Uh8Bk_45.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/red-bN70gL4F.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/reg-C-SQnVFl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/regexp-CDVJQ6XC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rel-C3B-1QV4.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/riscv-BM1_JUlF.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ron-D8l8udqQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rose-pine-qdsjHGoJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rosmsg-BJDFO7_C.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rst-BrH8l1NY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ruby-Dw2BHqvy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/rust-B1yitclQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/sas-cz2c8ADy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/sass-Cj5Yp3dK.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/scala-C151Ov-r.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/scheme-C98Dy4si.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/scss-OYdSNvt2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/sdbl-DVxCFoDh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/shellscript-Yzrsuije.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/shellsession-BADoaaVG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/slack-dark-BthQWCQV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/slack-ochin-DqwNpetd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/smalltalk-BERRCDM3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/snazzy-light-Bw305WKR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/solarized-dark-DXbdFlpD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/solarized-light-L9t79GZl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/solidity-rGO070M0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/soy-Brmx7dQM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/sparql-rVzFXLq3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/splunk-BtCnVYZw.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/sql-BLtJtn59.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ssh-config-_ykCGR6B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/stata-BH5u7GGu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/stylus-BEDo0Tqx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/surrealql-Bq5Q-fJD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/svelte-C_ipcX3V.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/swift-D82vCrfD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/synthwave-84-CbfX1IO0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/system-verilog-CnnmHF94.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/systemd-4A_iFExJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/talonscript-CkByrt1z.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tasl-QIJgUcNo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tcl-dwOrl1Do.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/templ-P3uqSqPl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/terraform-BETggiCN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tex-idrVyKtj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tokyo-night-hegEt444.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/toml-vGWfd6FD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/transform-CpIVI4vC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/ts-tags-zn1MmPIZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tsv-B_m7g4N7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/tsx-COt5Ahok.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/turtle-BsS91CYL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/twig-DNn4PbVi.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/typescript-BPQ3VLAy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/typespec-BGHnOYBU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/typst-DHCkPAjA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/v-BcVCzyr7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/v4-Dnyct6Ft.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vala-CsfeWuGM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/value-DIujSiJ7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vb-D17OF-Vu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/verilog-BQ8w6xss.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vesper-DU1UobuO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vhdl-CeAyd5Ju.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/viml-CJc9bBzg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vitesse-light-CVO1_9PV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vue-DN_0RTcg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vue-html-AaS7Mt5G.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vue-vine-CQOfvN7w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/vyper-CDx5xZoG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wasm-CG6Dc4jp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wasm-MzD3tlZU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wenyan-BV7otONQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wgsl-Dx-B1_4e.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wikitext-BhOHFoWU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wit-5i3qLPDT.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/wolfram-lXgVvXCa.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/xml-sdJ4AIDG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/xsl-CtQFsRM5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/yaml-Buea-lGh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/zenscript-DVFEvuxE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/assets/zig-VOosw3JB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/favicon.ico +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/favicon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/dist/favicon.svg +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/graph_identity.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/icon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/observability.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/oidc_session.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/orchestrator_model.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/rbac.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/__init__.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-admin/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-dashboards/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-extraction/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-graphviz/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-ontology-operator/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui/skills/kg-webui-swe/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/dependency_links.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/entry_points.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/requires.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/agent/agent_webui.egg-info/top_level.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/setup.cfg +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/tests/test_destubbed_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/tests/test_graph_visualization.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/tests/test_init.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/tests/test_privacy_boundaries.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.4.0}/tests/test_startup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-webui
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Agent Web Interface for Pydantic AI Agents
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -58,7 +58,7 @@ Dynamic: license-file
|
|
|
58
58
|

|
|
59
59
|

|
|
60
60
|
|
|
61
|
-
_Version: 2.
|
|
61
|
+
_Version: 2.4.0_
|
|
62
62
|
|
|
63
63
|
> **Documentation** — The architecture, graph-activity event model, feature surface,
|
|
64
64
|
> and ecosystem integration of Agent WebUI are maintained in the
|
|
@@ -502,7 +502,7 @@ docker/deploy.sh --skip-deploy # build + verify + push; does NOT touch the clu
|
|
|
502
502
|
half, kept as its own file for a standalone build-only smoke test. Do not
|
|
503
503
|
hand-roll a `docker build`/`kubectl set image` sequence outside these two
|
|
504
504
|
scripts -- see their headers for the full contract, including every env var
|
|
505
|
-
override (`AU_SRC_PATH`, `
|
|
505
|
+
override (`AU_SRC_PATH`, `CANONICAL_CHECKOUT`, etc.).
|
|
506
506
|
|
|
507
507
|
#### Coordinating concurrent deploys
|
|
508
508
|
|
|
@@ -514,18 +514,23 @@ digest `--skip-deploy` just printed) once it's clear.
|
|
|
514
514
|
|
|
515
515
|
### Production image (GitHub CI)
|
|
516
516
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
and
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
`
|
|
528
|
-
|
|
517
|
+
`.github/workflows/release.yml` is the **only** workflow that can publish this
|
|
518
|
+
repo. Its `publish-docker` job runs after `publish-pypi` succeeds (`needs:`),
|
|
519
|
+
so PyPI always publishes first and the container build always comes second --
|
|
520
|
+
see that workflow's own top-of-file comment for the two-workflow model
|
|
521
|
+
(`release.yml` blocking, `advisory.yml` everything else). `publish-docker`
|
|
522
|
+
builds and publishes `knucklessg1/agent-webui` from the same `docker/Dockerfile`
|
|
523
|
+
-- no second, divergent CI-only build definition -- checking out
|
|
524
|
+
`agent-utilities` from source as the `au-src` build-context (never PyPI, same
|
|
525
|
+
rule as the local script) and running the identical served-bundle verification
|
|
526
|
+
before the job is considered successful. Before any of that, it verifies that
|
|
527
|
+
agent-utilities' declared `epistemic-graph` floor is actually resolvable on
|
|
528
|
+
PyPI (`scripts/release/check_eg_pypi_resolvable.py`) and fails with one clear
|
|
529
|
+
line naming the missing version if not, rather than dying inside a pip
|
|
530
|
+
resolver backtrace -- see that workflow file's header comments for why it
|
|
531
|
+
can't simply call the fleet's shared `container_pipeline.yml` reusable
|
|
532
|
+
workflow (that workflow's interface has no way to pass this Dockerfile's extra
|
|
533
|
+
build-context).
|
|
529
534
|
|
|
530
535
|
### k8s manifest
|
|
531
536
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|

|
|
21
21
|

|
|
22
22
|
|
|
23
|
-
_Version: 2.
|
|
23
|
+
_Version: 2.4.0_
|
|
24
24
|
|
|
25
25
|
> **Documentation** — The architecture, graph-activity event model, feature surface,
|
|
26
26
|
> and ecosystem integration of Agent WebUI are maintained in the
|
|
@@ -464,7 +464,7 @@ docker/deploy.sh --skip-deploy # build + verify + push; does NOT touch the clu
|
|
|
464
464
|
half, kept as its own file for a standalone build-only smoke test. Do not
|
|
465
465
|
hand-roll a `docker build`/`kubectl set image` sequence outside these two
|
|
466
466
|
scripts -- see their headers for the full contract, including every env var
|
|
467
|
-
override (`AU_SRC_PATH`, `
|
|
467
|
+
override (`AU_SRC_PATH`, `CANONICAL_CHECKOUT`, etc.).
|
|
468
468
|
|
|
469
469
|
#### Coordinating concurrent deploys
|
|
470
470
|
|
|
@@ -476,18 +476,23 @@ digest `--skip-deploy` just printed) once it's clear.
|
|
|
476
476
|
|
|
477
477
|
### Production image (GitHub CI)
|
|
478
478
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
and
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
`
|
|
490
|
-
|
|
479
|
+
`.github/workflows/release.yml` is the **only** workflow that can publish this
|
|
480
|
+
repo. Its `publish-docker` job runs after `publish-pypi` succeeds (`needs:`),
|
|
481
|
+
so PyPI always publishes first and the container build always comes second --
|
|
482
|
+
see that workflow's own top-of-file comment for the two-workflow model
|
|
483
|
+
(`release.yml` blocking, `advisory.yml` everything else). `publish-docker`
|
|
484
|
+
builds and publishes `knucklessg1/agent-webui` from the same `docker/Dockerfile`
|
|
485
|
+
-- no second, divergent CI-only build definition -- checking out
|
|
486
|
+
`agent-utilities` from source as the `au-src` build-context (never PyPI, same
|
|
487
|
+
rule as the local script) and running the identical served-bundle verification
|
|
488
|
+
before the job is considered successful. Before any of that, it verifies that
|
|
489
|
+
agent-utilities' declared `epistemic-graph` floor is actually resolvable on
|
|
490
|
+
PyPI (`scripts/release/check_eg_pypi_resolvable.py`) and fails with one clear
|
|
491
|
+
line naming the missing version if not, rather than dying inside a pip
|
|
492
|
+
resolver backtrace -- see that workflow file's header comments for why it
|
|
493
|
+
can't simply call the fleet's shared `container_pipeline.yml` reusable
|
|
494
|
+
workflow (that workflow's interface has no way to pass this Dockerfile's extra
|
|
495
|
+
build-context).
|
|
491
496
|
|
|
492
497
|
### k8s manifest
|
|
493
498
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{v as _,o as B,ab as V,q as A,s as k,l as I,_ as F,p as L,r as t,j as e,aS as O,a as w,a5 as K,B as l,D as H,av as X,L as S,P as J,d as M,a7 as Q,H as W,aA as Y}from"./index-oJW-_XBm.js";import{T as Z,a as ee,b as C,c as R}from"./tabs-D-bKS-GJ.js";import{C as o,a as N,b,c as y,d as m}from"./card-B8Y9xTh8.js";import{U as D}from"./unavailable-notice-Ce6qen9e.js";import{b as E,g as U,c as se}from"./gateway-CigIg5Ky.js";import{R as P}from"./refresh-cw-DW_113QE.js";import{L as ae}from"./layers-BhkOkAA4.js";import{S as te}from"./server-CnnwkO12.js";import"./wifi-off-Dx38TebK.js";const ne=[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]],le=_("archive",ne);const re=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 12a9 3 0 0 0 5 2.69",key:"1ui2ym"}],["path",{d:"M21 9.3V5",key:"6k6cib"}],["path",{d:"M3 5v14a9 3 0 0 0 6.47 2.88",key:"i62tjy"}],["path",{d:"M12 12v4h4",key:"1bxaet"}],["path",{d:"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16",key:"1f4ei9"}]],ie=_("database-backup",re);const ce=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],de=_("key-round",ce);const oe=[["path",{d:"M10 15H6a4 4 0 0 0-4 4v2",key:"1nfge6"}],["path",{d:"m14.305 16.53.923-.382",key:"1itpsq"}],["path",{d:"m15.228 13.852-.923-.383",key:"eplpkm"}],["path",{d:"m16.852 12.228-.383-.923",key:"13v3q0"}],["path",{d:"m16.852 17.772-.383.924",key:"1i8mnm"}],["path",{d:"m19.148 12.228.383-.923",key:"1q8j1v"}],["path",{d:"m19.53 18.696-.382-.924",key:"vk1qj3"}],["path",{d:"m20.772 13.852.924-.383",key:"n880s0"}],["path",{d:"m20.772 16.148.924.383",key:"1g6xey"}],["circle",{cx:"18",cy:"15",r:"3",key:"gjjjvw"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],$=_("user-cog",oe),me=B({endpoint:k(),local:L(),reachable:L().optional(),breaker:k().optional()}),xe=B({mode:F(["single","sharded"]),default_graph:k().optional(),endpoints:I(me)});function q(){return E("/dashboard/daemon/shards",xe)}function he(){return E("/dashboard/daemon/status")}const ue=B({total_nodes:A(),total_relationships:A(),by_type:V(k(),A())}),pe=B({source_systems:I(k())});function je(){return E("/enhanced/graph/stats",ue)}function fe(){return E("/enhanced/code/instances",pe)}function ge(){return U("/configure",{action:"rbac_list"})}function Ne(){return U("/configure",{action:"backup_status"})}function be(){return se("/graph/configure",{action:"backup_create"})}function G(s){return s===void 0?"-":s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}k`:String(s)}function ve(){const[s,h]=t.useState(null),[r,p]=t.useState(null),[u,v]=t.useState([]),[f,g]=t.useState(!1),[x,j]=t.useState(!1),a=async()=>{j(!0);const[c,T,z]=await Promise.all([je(),q(),fe()]);h(c.ok?c.data:null),p(T.ok?T.data:null),v(z.ok&&z.data?z.data.source_systems:[]),g(!z.ok),j(!1)};t.useEffect(()=>{a()},[]);const d=r?.default_graph??"__commons__",i=r?.endpoints??[],n=s?.by_type??{};return e.jsxs("div",{className:"space-y-6","data-testid":"admin-tenants-panel",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[e.jsx(O,{className:"size-5"}),"Tenants & Graphs"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Per-tenant node/edge counts and shard placement."})]}),e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>{a()},disabled:x,children:[e.jsx(P,{className:x?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),e.jsxs(o,{children:[e.jsxs(N,{children:[e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx(K,{className:"size-4"}),e.jsx("span",{className:"font-mono",children:d}),e.jsx(l,{variant:"secondary",children:"active"})]}),e.jsx(y,{children:"The active graph tenant served by this backend."})]}),e.jsxs(m,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded border p-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nodes"}),e.jsx("p",{className:"text-2xl font-bold",children:G(s?.total_nodes)})]}),e.jsxs("div",{className:"rounded border p-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Relationships"}),e.jsx("p",{className:"text-2xl font-bold",children:G(s?.total_relationships)})]}),e.jsxs("div",{className:"rounded border p-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Shard placement"}),e.jsx("p",{className:"text-lg font-semibold",children:i.length?`${String(i.length)} shard(s)`:"-"})]})]}),Object.keys(n).length>0&&e.jsxs("div",{children:[e.jsxs("p",{className:"text-sm font-medium mb-2 flex items-center gap-1",children:[e.jsx(H,{className:"size-3.5"}),"Counts by type"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Object.entries(n).map(([c,T])=>e.jsxs(l,{variant:"outline",className:"gap-1",children:[c,e.jsx("span",{className:"text-muted-foreground",children:G(T)})]},c))})]}),i.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"Placed on"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:i.map(c=>e.jsxs(l,{variant:c.reachable?"default":"destructive",className:"font-mono text-xs gap-1",children:[c.endpoint,c.local&&e.jsx("span",{className:"opacity-70",children:"· local"})]},c.endpoint))})]})]})]}),e.jsxs(o,{children:[e.jsxs(N,{children:[e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx(X,{className:"size-4"}),"Indexed source tenants"]}),e.jsx(y,{children:"Ingested source-systems that carry code in the graph."})]}),e.jsx(m,{children:x?e.jsx(S,{className:"size-4 animate-spin text-muted-foreground"}):f?e.jsx(D,{what:"Indexed source tenants"}):u.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No indexed source tenants reported."}):e.jsx("div",{className:"flex flex-wrap gap-2",children:u.map(c=>e.jsx(l,{variant:"secondary",className:"font-mono text-xs",children:c},c))})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Note: full multi-tenant enumeration (a per-tenant catalog with per-tenant counts) is not yet exposed over the REST surface — the engine tenant catalog is reachable only over the UDS client. This panel shows the active graph with real statistics and shard placement plus indexed source tenants."})]})}function ye(s){if(!s)return"outline";const h=s.toLowerCase();return h==="closed"?"default":h==="open"?"destructive":"secondary"}function ke(){const[s,h]=t.useState(null),[r,p]=t.useState(null),[u,v]=t.useState(!1),[f,g]=t.useState(null),[x,j]=t.useState(!1),a=async()=>{j(!0);const[n,c]=await Promise.all([q(),he()]);v(n.unavailable),g(!n.ok&&!n.unavailable?n.error??"The shard topology request failed.":null),h(n.ok?n.data:null),p(c.ok?c.data:null),j(!1)};t.useEffect(()=>{a()},[]);const d=s?.endpoints??[],i=d.filter(n=>n.reachable).length;return e.jsxs("div",{className:"space-y-6","data-testid":"admin-shards-panel",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[e.jsx(ae,{className:"size-5"}),"Shard Topology",s&&e.jsx(l,{variant:"secondary",className:"uppercase",children:s.mode})]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"K-way writer layout, per-shard reachability and circuit-breaker state."})]}),e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>{a()},disabled:x,children:[e.jsx(P,{className:x?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),u?e.jsxs("p",{className:"text-muted-foreground text-sm",children:["The ",e.jsx("code",{children:"/api/dashboard/daemon/shards"})," route is not activated on this backend yet."]}):f?e.jsx(D,{what:`Shard topology (${f})`}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Mode"}),e.jsx("p",{className:"text-2xl font-bold capitalize",children:s?.mode??"-"})]})}),e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Shards"}),e.jsx("p",{className:"text-2xl font-bold",children:d.length||"-"})]})}),e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Reachable"}),e.jsx("p",{className:"text-2xl font-bold",children:d.length?`${String(i)}/${String(d.length)}`:"-"})]})}),e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Default graph"}),e.jsx("p",{className:"text-lg font-semibold font-mono truncate",children:s?.default_graph??"-"})]})})]}),e.jsxs(o,{children:[e.jsxs(N,{children:[e.jsx(b,{className:"text-base",children:"Shards"}),e.jsx(y,{children:"Each configured engine endpoint and its live health."})]}),e.jsx(m,{children:d.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No shard endpoints reported."}):e.jsx("div",{className:"space-y-2",children:d.map((n,c)=>e.jsxs("div",{className:"flex items-center justify-between rounded border p-3 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(te,{className:"size-4 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"flex flex-col min-w-0",children:[e.jsx("span",{className:"font-mono truncate",children:n.endpoint}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["writer #",c," ",n.local?"· local":"· remote"]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[n.local&&e.jsx(l,{variant:"outline",children:"local"}),n.breaker&&e.jsx(l,{variant:ye(n.breaker),className:"font-mono text-xs",children:n.breaker}),n.reachable?e.jsxs(l,{variant:"default",className:"gap-1",children:[e.jsx(J,{className:"size-3"}),"up"]}):e.jsxs(l,{variant:"destructive",className:"gap-1",children:[e.jsx(M,{className:"size-3"}),"down"]})]})]},n.endpoint))})})]}),e.jsxs(o,{children:[e.jsxs(N,{children:[e.jsx(b,{className:"text-base",children:"Daemon"}),e.jsx(y,{children:"The consolidated KG background daemon that hosts the local shard."})]}),e.jsx(m,{children:r?e.jsxs("div",{className:"flex flex-wrap gap-2 text-sm",children:[r.role!==void 0&&e.jsxs(l,{variant:"secondary",className:"gap-1",children:["role: ",r.role]}),e.jsxs(l,{variant:r.running?"default":"outline",className:"gap-1",children:[r.running?e.jsx(S,{className:"size-3 animate-spin"}):e.jsx(M,{className:"size-3"}),r.running?"running":"stopped"]}),r.queue_depth!==void 0&&e.jsxs(l,{variant:"secondary",children:["queue: ",String(r.queue_depth)]})]}):e.jsx("p",{className:"text-muted-foreground text-sm",children:"Daemon status unavailable."})})]})]})]})}function we(){const[s,h]=t.useState(null),[r,p]=t.useState(!1),[u,v]=t.useState(!1),f=async()=>{v(!0);const a=await ge();p(!a.ok),h(a.ok?a.data:null),v(!1)};t.useEffect(()=>{f()},[]);const g=s?.roles??[],x=s?.grants??[],j=s?.identities??[];return e.jsxs("div",{className:"space-y-6","data-testid":"admin-rbac-panel",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[e.jsx(Q,{className:"size-5"}),"RBAC"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Roles, resource/action grants and agent identities (EG-092 / EG-303)."})]}),e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>{f()},disabled:u,children:[e.jsx(P,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),u?e.jsx(S,{className:"size-5 animate-spin text-muted-foreground"}):r?e.jsxs(o,{className:"border-dashed",children:[e.jsxs(N,{children:[e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx(l,{variant:"outline",children:"read-only · not wired"}),"RBAC admin not exposed over REST yet"]}),e.jsxs(y,{children:["The engine RBAC admin surface (EG-092 roles/grants + EG-303 durable persistence) is reachable today only over the epistemic-graph UDS client (",e.jsx("code",{children:"client.rbac.*"})," — AddRole / RemoveRole / AddGrant / RemoveGrant / List). This panel will render the live policy — and enable editing where the API allows — as soon as the REST twin is wired; until then it is read-only by design and shows no fabricated data."]})]}),e.jsxs(m,{className:"space-y-2 text-sm text-muted-foreground",children:[e.jsx("p",{className:"font-medium text-foreground",children:"The engine RBAC model:"}),e.jsxs("ul",{className:"list-disc pl-5 space-y-1",children:[e.jsxs("li",{children:[e.jsx("span",{className:"font-medium text-foreground",children:"Roles"})," — durable named roles with a role hierarchy (EG-092), persisted to redb and reloaded at boot (EG-303)."]}),e.jsxs("li",{children:[e.jsx("span",{className:"font-medium text-foreground",children:"Grants"})," — resource/action grants bound to a role, enforced over per-agent row-level security + ACLs with a hash-chained audit log."]}),e.jsxs("li",{children:[e.jsx("span",{className:"font-medium text-foreground",children:"Agent identities"})," — the agent principals the grants are evaluated against."]})]})]})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs(o,{children:[e.jsx(N,{children:e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx($,{className:"size-4"}),"Roles",e.jsx(l,{variant:"secondary",children:g.length})]})}),e.jsx(m,{className:"space-y-2",children:g.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No roles."}):g.map(a=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-medium font-mono",children:a.name}),a.description&&e.jsx("p",{className:"text-xs text-muted-foreground",children:a.description})]},a.name))})]}),e.jsxs(o,{children:[e.jsx(N,{children:e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx(de,{className:"size-4"}),"Grants",e.jsx(l,{variant:"secondary",children:x.length})]})}),e.jsx(m,{className:"space-y-2",children:x.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No grants."}):x.map((a,d)=>e.jsxs("div",{className:"rounded border p-2 text-xs font-mono",children:[e.jsx("span",{className:"font-medium",children:a.role})," → ",a.action??"*"," on ",a.resource??"*",a.effect&&e.jsx(l,{variant:"outline",className:"ml-2",children:a.effect})]},`${a.role}-${String(d)}`))})]}),e.jsxs(o,{children:[e.jsx(N,{children:e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx($,{className:"size-4"}),"Agent identities",e.jsx(l,{variant:"secondary",children:j.length})]})}),e.jsx(m,{className:"space-y-2",children:j.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No identities."}):j.map(a=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-mono",children:a.id}),a.roles&&a.roles.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:a.roles.map(d=>e.jsx(l,{variant:"outline",className:"text-xs",children:d},d))})]},a.id))})]})]})})]})}function Se(s){if(s===void 0)return"-";const h=["B","KB","MB","GB","TB"];let r=s,p=0;for(;r>=1024&&p<h.length-1;)r/=1024,p++;return`${r.toFixed(1)} ${h[p]}`}function Te(){const[s,h]=t.useState(null),[r,p]=t.useState(!1),[u,v]=t.useState(!1),[f,g]=t.useState(!1),x=async()=>{v(!0);const i=await Ne();p(!i.ok),h(i.ok?i.data:null),v(!1)};t.useEffect(()=>{x()},[]);const j=async()=>{g(!0),await be(),await x(),g(!1)},a=s?.backups??[],d=!r;return e.jsxs("div",{className:"space-y-6","data-testid":"admin-backup-panel",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[e.jsx(ie,{className:"size-5"}),"Backup & PITR"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Online backups and point-in-time restore (CONCEPT:EG-090)."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:u,children:[e.jsx(P,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]}),e.jsxs(w,{size:"sm",onClick:()=>{j()},disabled:!d||f,title:d?"Trigger an online backup":"Backup REST twin not wired yet",children:[f?e.jsx(S,{className:"size-4 animate-spin"}):e.jsx(le,{className:"size-4"}),e.jsx("span",{className:"ml-2",children:"Trigger backup"})]})]})]}),u?e.jsx(S,{className:"size-5 animate-spin text-muted-foreground"}):d?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Snapshots"}),e.jsx("p",{className:"text-2xl font-bold",children:a.length})]})}),e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Last backup"}),e.jsx("p",{className:"text-lg font-semibold",children:s?.last_backup_at??"-"})]})}),e.jsx(o,{children:e.jsxs(m,{className:"pt-6",children:[e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[e.jsx(W,{className:"size-3.5"}),"PITR window"]}),e.jsxs("p",{className:"text-xs font-mono",children:[s?.pitr_window?.earliest??"-"," → ",s?.pitr_window?.latest??"-"]})]})})]}),e.jsxs(o,{children:[e.jsxs(N,{children:[e.jsx(b,{className:"text-base",children:"Snapshots"}),e.jsx(y,{children:"Retained backups available for point-in-time restore."})]}),e.jsx(m,{children:a.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No snapshots yet."}):e.jsx("div",{className:"space-y-2",children:a.map(i=>e.jsxs("div",{className:"flex items-center justify-between rounded border p-2 text-sm",children:[e.jsxs("div",{className:"flex flex-col min-w-0",children:[e.jsx("span",{className:"font-mono truncate",children:i.id}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[i.created_at??"-"," ",i.shard?`· ${i.shard}`:""," ",i.lsn?`· LSN ${i.lsn}`:""]})]}),e.jsx(l,{variant:"secondary",children:Se(i.size_bytes)})]},i.id))})})]})]}):e.jsxs(o,{className:"border-dashed",children:[e.jsxs(N,{children:[e.jsxs(b,{className:"text-base flex items-center gap-2",children:[e.jsx(l,{variant:"outline",children:"read-only · not wired"}),"Backup/PITR not exposed over REST yet"]}),e.jsxs(y,{children:["Online backup / restore (EG-090) is reachable today only over the epistemic-graph UDS client (a",e.jsx("code",{children:" Method::Backup"})," op streaming a per-shard MVCC snapshot). This panel will list snapshots, show the PITR window, and enable the trigger control as soon as the REST twin is wired; until then it is read-only by design and shows no fabricated backups."]})]}),e.jsxs(m,{className:"text-sm text-muted-foreground space-y-2",children:[e.jsx("p",{className:"font-medium text-foreground",children:"The engine backup model:"}),e.jsxs("ul",{className:"list-disc pl-5 space-y-1",children:[e.jsx("li",{children:"Online per-shard MVCC snapshot streamed verbatim (no write-stall)."}),e.jsx("li",{children:"Point-in-time restore to a chosen LSN / timestamp within the retained window."})]})]})]})]})}function Le(){return e.jsxs("div",{className:"space-y-6","data-testid":"admin-view",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(Y,{className:"size-6"}),"Admin Console"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Tenants, shard topology, RBAC and backup/PITR for the epistemic-graph engine."})]}),e.jsxs(Z,{defaultValue:"tenants",children:[e.jsxs(ee,{children:[e.jsx(C,{value:"tenants",children:"Tenants"}),e.jsx(C,{value:"shards",children:"Shards"}),e.jsx(C,{value:"rbac",children:"RBAC"}),e.jsx(C,{value:"backup",children:"Backup / PITR"})]}),e.jsx(R,{value:"tenants",className:"mt-4",children:e.jsx(ve,{})}),e.jsx(R,{value:"shards",className:"mt-4",children:e.jsx(ke,{})}),e.jsx(R,{value:"rbac",className:"mt-4",children:e.jsx(we,{})}),e.jsx(R,{value:"backup",className:"mt-4",children:e.jsx(Te,{})})]})]})}export{Le as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,j as e,a as d,U as ee,V as se,z as te,B as o,y as Ce,I as f,W as ke,Y as Se,m as ae,Z as _e,t as r}from"./index-oJW-_XBm.js";import{C as Ae,a as Le,b as Te,c as ze,d as Ue}from"./card-B8Y9xTh8.js";import{S as Re}from"./scroll-area-DESuUYBV.js";import{U as z}from"./unavailable-notice-Ce6qen9e.js";import{E as re}from"./external-link-ChibGV02.js";import{P as U}from"./plus-54fL5QKg.js";import{R}from"./refresh-cw-DW_113QE.js";import{T as Ee}from"./trash-2-DeGIbUgN.js";import"./wifi-off-Dx38TebK.js";function ne(n){window.history.pushState({},"",n),window.dispatchEvent(new Event("history-state-changed"))}function x(n){return Array.isArray(n)?n:[]}const E={app_profile:"",deployment_profile:"",chat_models:[],embedding_models:[]};function qe(){const[n,p]=t.useState("library"),[oe,le]=t.useState([]),[b,$]=t.useState(!0),[v,ie]=t.useState(""),[O,de]=t.useState([]),[ce,I]=t.useState(!0),[g,me]=t.useState([]),[xe,P]=t.useState(!1),[i,j]=t.useState(E),[pe,F]=t.useState(!0),[ge,N]=t.useState(!1),[he,y]=t.useState(!1),[w,C]=t.useState(!1),[c,k]=t.useState(""),[J,S]=t.useState(""),[h,B]=t.useState(""),[D,_]=t.useState(""),[M,q]=t.useState(""),[G,Y]=t.useState(new Set),[V,W]=t.useState(!1),[u,H]=t.useState(""),[A,Q]=t.useState(""),[Z,K]=t.useState(!1),m=async()=>{try{$(!0);const s=await fetch("/api/enhanced/agent-library/agents");if(!s.ok){r.error("Failed to load the Agent Library"),N(!0);return}le(x(await s.json())),N(!1)}catch{r.error("Failed to connect to the Agent Library"),N(!0)}finally{$(!1)}},L=async()=>{try{I(!0);const s=await fetch("/api/enhanced/agent-library/suggestions");if(!s.ok)return;de(x(await s.json()))}catch{}finally{I(!1)}},T=async s=>{try{P(!0);const a=s?`?mcp_server=${encodeURIComponent(s)}`:"",l=await fetch(`/api/enhanced/agent-library/tools${a}`);if(!l.ok){y(!0);return}me(x(await l.json())),y(!1)}catch{y(!0)}finally{P(!1)}},ue=async()=>{try{F(!0);const s=await fetch("/api/enhanced/agent-library/config-summary");if(!s.ok){j(E),C(!0);return}const a=await s.json();j({app_profile:a?.app_profile??"",deployment_profile:a?.deployment_profile??"",chat_models:x(a?.chat_models),embedding_models:x(a?.embedding_models)}),C(!1)}catch{j(E),C(!0)}finally{F(!1)}};t.useEffect(()=>{m(),L(),T(),ue()},[]);const fe=t.useMemo(()=>{const s=new Set;for(const a of g)a.mcp_server&&s.add(a.mcp_server);return Array.from(s).sort()},[g]),be=s=>{Y(a=>{const l=new Set(a);return l.has(s)?l.delete(s):l.add(s),l})},ve=s=>{p("compose"),_(s.mcp_server),k(a=>a||`${s.mcp_server} agent`),S(a=>a||`Uses the ${s.mcp_server} tools: ${s.sample_tools.join(", ")}.`),T(s.mcp_server),r.message(`Composing an agent for '${s.mcp_server}'`)},je=async()=>{if(!c.trim()||!h.trim()){r.error("Name and instructions are required");return}W(!0);try{const s=await fetch("/api/enhanced/agent-library/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.trim(),description:J.trim(),instructions:h.trim(),bind_server:D||void 0,model_preference:M||void 0,tool_ids:Array.from(G)})});if(!s.ok){const a=await s.json().catch(()=>null);r.error(a?.detail??"Failed to compose the agent");return}r.success(`Agent '${c.trim()}' saved and ready to delegate to`),k(""),S(""),B(""),_(""),q(""),Y(new Set),p("library"),m(),L()}catch{r.error("Network error composing the agent")}finally{W(!1)}},Ne=async s=>{try{if(!(await fetch(`/api/enhanced/agent-library/agents/${encodeURIComponent(s.id)}`,{method:"DELETE"})).ok){r.error("Failed to archive that agent");return}r.success(`Archived '${s.name}'`),m()}catch{r.error("Network error archiving the agent")}},ye=async()=>{if(!u.trim()){r.error("An agent URL is required");return}let s;if(A.trim())try{s=JSON.parse(A)}catch{r.error("The pasted agent card is not valid JSON");return}K(!0);try{const a=await fetch("/api/enhanced/agent-library/a2a",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:u.trim(),agent_card:s})});if(!a.ok){const l=await a.json().catch(()=>null);r.error(l?.detail??"Failed to register that agent");return}r.success("External agent registered"),H(""),Q(""),m()}catch{r.error("Network error registering the external agent")}finally{K(!1)}},X=oe.filter(s=>s.name.toLowerCase().includes(v.toLowerCase())||s.description.toLowerCase().includes(v.toLowerCase())),we=[{id:"library",label:"Library",icon:ee},{id:"compose",label:"Compose an Agent",icon:U},{id:"external",label:"External Agents",icon:se},{id:"config",label:"Model & Config",icon:te}];return e.jsx("div",{className:"space-y-6",children:e.jsxs(Ae,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(Le,{children:[e.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx(Te,{className:"text-2xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-teal-400 via-emerald-400 to-green-500",children:"Agent Library"}),e.jsx(ze,{children:"Compose agents from prompts and tools you already have, register outside A2A agents, and call on any of them whenever you need — stored in the knowledge graph, not your browser."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>{ne("/prompts")},children:["Prompts Registry ",e.jsx(re,{className:"size-3.5 ml-1.5"})]}),e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>{ne("/skills")},children:["Tools & Skills ",e.jsx(re,{className:"size-3.5 ml-1.5"})]})]})]}),e.jsx("div",{className:"flex flex-wrap gap-2 mt-4 border-b border-border/40 pb-2",children:we.map(s=>e.jsxs("button",{onClick:()=>{p(s.id)},className:`flex items-center gap-2 px-3 py-1.5 rounded-md text-xs font-semibold transition-all border ${n===s.id?"bg-emerald-500/10 border-emerald-500/30 text-emerald-400 font-bold":"bg-transparent border-transparent text-muted-foreground hover:text-foreground"}`,children:[e.jsx(s.icon,{className:"size-3.5"}),e.jsx("span",{children:s.label})]},s.id))})]}),e.jsxs(Ue,{children:[n==="library"&&e.jsxs("div",{className:"space-y-6",children:[!ce&&O.length>0&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5",children:[e.jsx(te,{className:"size-3.5 text-emerald-400"})," Suggested, from what is installed"]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:O.slice(0,6).map(s=>e.jsxs("div",{className:"p-3.5 rounded-lg border border-emerald-500/20 bg-emerald-500/5 flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"font-bold text-sm text-foreground",children:s.mcp_server}),e.jsxs(o,{variant:"secondary",className:"text-[10px]",children:[s.tool_count," tool",s.tool_count===1?"":"s"]})]}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:s.reason}),e.jsxs(d,{size:"sm",variant:"outline",className:"self-start h-7 text-xs",onClick:()=>{ve(s)},children:[e.jsx(U,{className:"size-3.5 mr-1"})," Build this agent"]})]},s.mcp_server))})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Ce,{className:"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground"}),e.jsx(f,{placeholder:"Search your agents...",value:v,onChange:s=>{ie(s.target.value)},className:"pl-9 h-9 bg-muted/20"})]}),e.jsx(d,{variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:()=>{m(),L()},disabled:b,children:e.jsx(R,{className:`size-4 ${b?"animate-spin":""}`})}),e.jsxs(d,{size:"sm",onClick:()=>{p("compose")},children:[e.jsx(U,{className:"size-4 mr-1.5"})," New agent"]})]}),e.jsx(Re,{className:"h-[calc(100vh-32rem)] min-h-[16rem] pr-2",children:b?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 gap-3",children:[e.jsx(R,{className:"size-8 text-emerald-500 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground font-medium",children:"Querying the graph..."})]}):ge?e.jsx("div",{className:"text-center py-12",children:e.jsx(z,{what:"The Agent Library",className:"justify-center"})}):X.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground text-sm",children:"No agents yet. Compose one, or register an external A2A agent."}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:X.map(s=>e.jsxs("div",{className:"p-4 rounded-xl border border-border/40 bg-muted/10 backdrop-blur-sm hover:border-emerald-500/30 transition-all flex flex-col justify-between",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.kind==="a2a"?e.jsx(se,{className:"size-4 text-teal-400 shrink-0"}):e.jsx(ee,{className:"size-4 text-emerald-400 shrink-0"}),e.jsx("h4",{className:"font-bold text-sm text-foreground truncate",children:s.name})]}),e.jsx(o,{variant:"outline",className:`text-[10px] font-semibold shrink-0 ${s.kind==="a2a"?"bg-teal-500/10 border-teal-500/30 text-teal-400":"bg-emerald-500/10 border-emerald-500/30 text-emerald-400"}`,children:s.kind==="a2a"?"External · A2A":"Local"})]}),e.jsx("p",{className:"text-xs text-muted-foreground leading-normal line-clamp-3",children:s.description||"No description."}),s.mcp_server&&e.jsxs("div",{className:"text-[10px] text-muted-foreground mt-2",children:[e.jsx(ke,{className:"size-3 inline mr-1"}),"bound to ",e.jsx("code",{className:"font-mono",children:s.mcp_server})]})]}),e.jsxs("div",{className:"mt-4 flex items-center justify-between border-t border-border/30 pt-3",children:[e.jsxs("div",{className:"flex items-center gap-1 text-[10px] text-emerald-400 font-bold",children:[e.jsx(Se,{className:"size-3"}),s.runnable_bound===!1?"Prompt only":"Delegatable"]}),e.jsx("button",{onClick:()=>{Ne(s)},className:"p-1.5 rounded text-muted-foreground hover:text-red-400 hover:bg-red-500/10 transition-all","aria-label":`Archive ${s.name}`,children:e.jsx(Ee,{className:"size-3.5"})})]})]},s.id))})})]}),n==="compose"&&e.jsxs("div",{className:"max-w-2xl space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Name"}),e.jsx(f,{value:c,onChange:s=>{k(s.target.value)},placeholder:"e.g. release-notes-writer",className:"mt-1 bg-muted/20"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Description"}),e.jsx(f,{value:J,onChange:s=>{S(s.target.value)},placeholder:"One line: what does this agent do for you?",className:"mt-1 bg-muted/20"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Instructions (its system prompt)"}),e.jsx(ae,{value:h,onChange:s=>{B(s.target.value)},placeholder:"You are a specialist that...",className:"mt-1 bg-muted/20 font-mono text-xs leading-relaxed",rows:8})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Bind an entire MCP server's tools (optional)"}),e.jsxs("select",{value:D,onChange:s=>{_(s.target.value),T(s.target.value||void 0)},className:"w-full h-9 mt-1 px-3 rounded-md border border-input bg-muted/20 text-xs",children:[e.jsx("option",{value:"",children:"— none —"}),fe.map(s=>e.jsx("option",{value:s,children:s},s))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Preferred model (optional, advisory)"}),e.jsxs("select",{value:M,onChange:s=>{q(s.target.value)},className:"w-full h-9 mt-1 px-3 rounded-md border border-input bg-muted/20 text-xs",children:[e.jsx("option",{value:"",children:"— default —"}),i.chat_models.map(s=>e.jsxs("option",{value:s.id,children:[s.id," (",s.provider,")"]},s.id))]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Or pick individual tools"}),e.jsx("div",{className:"mt-2 max-h-56 overflow-y-auto rounded-lg border border-border/20 bg-muted/5 p-2 space-y-1",children:xe?e.jsx("div",{className:"text-xs text-muted-foreground p-2",children:"Loading tools..."}):he?e.jsx("div",{className:"p-2",children:e.jsx(z,{what:"The tool catalog"})}):g.length===0?e.jsx("div",{className:"text-xs text-muted-foreground p-2",children:"No tools ingested yet for this filter — the agent can still run prompt-only."}):g.map(s=>e.jsxs("label",{className:"flex items-center gap-2 px-2 py-1.5 rounded hover:bg-muted/20 cursor-pointer",children:[e.jsx(_e,{checked:G.has(s.id),onCheckedChange:()=>{be(s.id)}}),e.jsx("span",{className:"text-xs font-mono",children:s.name}),s.mcp_server&&e.jsx("span",{className:"text-[10px] text-muted-foreground ml-auto",children:s.mcp_server})]},s.id))})]}),e.jsx(d,{onClick:()=>{je()},disabled:V||!c.trim()||!h.trim(),className:"bg-emerald-600 hover:bg-emerald-700",children:V?"Saving...":"Save agent to the Library"})]}),n==="external"&&e.jsxs("div",{className:"max-w-2xl space-y-5",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Register an outside agent that speaks the A2A protocol. Give its URL and, if it doesn't publish a discoverable agent card, paste the card JSON yourself."}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Agent URL"}),e.jsx(f,{value:u,onChange:s=>{H(s.target.value)},placeholder:"https://agent.example.com",className:"mt-1 bg-muted/20 font-mono text-xs"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] font-bold uppercase tracking-wider text-muted-foreground",children:"Agent card JSON (optional — auto-fetched from the URL if left blank)"}),e.jsx(ae,{value:A,onChange:s=>{Q(s.target.value)},placeholder:'{"name": "...", "description": "...", "capabilities": []}',className:"mt-1 bg-muted/20 font-mono text-xs",rows:8})]}),e.jsx(d,{onClick:()=>{ye()},disabled:Z||!u.trim(),className:"bg-teal-600 hover:bg-teal-700",children:Z?"Registering...":"Register external agent"})]}),n==="config"&&e.jsx("div",{className:"space-y-6",children:pe?e.jsx("div",{className:"flex items-center justify-center py-12 gap-3",children:e.jsx(R,{className:"size-8 text-emerald-500 animate-spin"})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap gap-4 text-xs",children:[e.jsxs("div",{className:"rounded-md border border-border/30 bg-muted/10 px-3 py-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"App profile"}),e.jsx("div",{className:"font-bold",children:i.app_profile||"—"})]}),e.jsxs("div",{className:"rounded-md border border-border/30 bg-muted/10 px-3 py-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Deployment profile"}),e.jsx("div",{className:"font-bold",children:i.deployment_profile||"—"})]})]}),w&&e.jsx(z,{what:"The model configuration summary"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:"Chat models"}),w?null:i.chat_models.length===0?e.jsx("div",{className:"text-xs text-muted-foreground",children:"No chat models configured."}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:i.chat_models.map(s=>e.jsxs("div",{className:"p-3 rounded-lg border border-border/30 bg-muted/5 space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-mono font-bold text-xs",children:s.id}),e.jsx(o,{variant:"outline",className:"text-[9px]",children:s.provider})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[s.intelligence_level&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:s.intelligence_level}),s.can_route&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:"router"}),s.can_kg&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:"kg"}),s.vision&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:"vision"}),s.reasoning&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:"reasoning"}),s.tools_enabled&&e.jsx(o,{variant:"secondary",className:"text-[9px]",children:"tools"})]}),s.context_window?e.jsxs("div",{className:"text-[10px] text-muted-foreground",children:[s.context_window.toLocaleString()," token context"]}):null]},s.id))})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:"Embedding models"}),w?null:i.embedding_models.length===0?e.jsx("div",{className:"text-xs text-muted-foreground",children:"No embedding models configured."}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:i.embedding_models.map(s=>e.jsxs("div",{className:"p-3 rounded-lg border border-border/30 bg-muted/5 space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-mono font-bold text-xs",children:s.id}),e.jsx(o,{variant:"outline",className:"text-[9px]",children:s.provider})]}),e.jsxs("div",{className:"text-[10px] text-muted-foreground",children:["chunk ",s.chunk_size??"—",s.context_window?` · ${s.context_window.toLocaleString()} token context`:""]})]},s.id))})]}),e.jsxs("p",{className:"text-[11px] text-muted-foreground",children:["Read-only view of the active ",e.jsx("code",{children:"AgentConfig"})," model registry. Secrets and provider credentials are never sent to the browser."]})]})})]})]})})}export{qe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,j as e,a8 as L,a as T,a9 as R,B as $,I,m as J,L as O,n as q,t as d}from"./index-
|
|
1
|
+
import{r as l,j as e,a8 as L,a as T,a9 as R,B as $,I,m as J,L as O,n as q,t as d}from"./index-oJW-_XBm.js";import{C as u,a as x,b as h,c as f,d as b}from"./card-B8Y9xTh8.js";import{g as B}from"./gateway-CigIg5Ky.js";import{R as D}from"./refresh-cw-DW_113QE.js";async function g(a,r={}){const i=await B("/broker",{action:a,...r});return i.ok||!i.unavailable?i:B("/bus",{action:a,...r})}function j(a,r=""){return typeof a=="string"?a:typeof a=="number"||typeof a=="boolean"?String(a):r}function H(a){if(!a||typeof a!="object")return[];const r=a;return(Array.isArray(r)?r:r.topics??r.queues??[]).map(t=>{if(typeof t=="string")return{name:t};const n=t??{};return{name:j(n.name)||j(n.topic)||j(n.id,"topic"),depth:typeof n.depth=="number"?n.depth:typeof n.pending=="number"?n.pending:void 0,consumers:typeof n.consumers=="number"?n.consumers:void 0,subscribers:typeof n.subscribers=="number"?n.subscribers:void 0}})}function U(a){if(!a||typeof a!="object")return[];const r=a;return(Array.isArray(r)?r:r.messages??[]).map(t=>({id:typeof t.id=="string"?t.id:void 0,topic:typeof t.topic=="string"?t.topic:void 0,payload:t.payload??t.body??t.content,sender:typeof t.sender=="string"?t.sender:typeof t.from=="string"?t.from:void 0,timestamp:typeof t.timestamp=="number"||typeof t.timestamp=="string"?t.timestamp:void 0}))}function K(){const[a,r]=l.useState([]),[i,t]=l.useState(null),[n,y]=l.useState([]),[v,N]=l.useState(!1),[z,A]=l.useState(!1),[k,M]=l.useState(""),[c,w]=l.useState(""),[S,C]=l.useState(!1),p=async()=>{N(!0);const s=await g("topics");if(A(s.unavailable),s.ok){const o=H(s.data);r(o),!i&&o[0]&&t(o[0].name)}else r([]);N(!1)},P=async s=>{const o=await g("messages",{topic:s,limit:25});o.ok?y(U(o.data)):y([])};l.useEffect(()=>{p()},[]),l.useEffect(()=>{i&&P(i)},[i]);const E=async()=>{const s=k.trim()||i;if(!s){d.warning("Choose or enter a topic to publish to.");return}C(!0);let o=c;try{o=JSON.parse(c)}catch{}const m=await g("publish",{topic:s,payload:o});m.ok?(d.success(`Published to ${s}`),w(""),s===i&&P(s),p()):m.unavailable?d.error("Broker route not activated on this backend."):d.error(`Publish failed: ${m.error??"unknown error"}`),C(!1)};return e.jsxs("div",{className:"space-y-6","data-testid":"broker-view",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(L,{className:"size-6"}),"Message Broker"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Topics, queue depth, and message flow over the agent bus."})]}),e.jsxs(T,{variant:"outline",size:"sm",onClick:()=>{p()},disabled:v,children:[e.jsx(D,{className:v?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),z&&e.jsxs("div",{className:"rounded-md border border-amber-500/50 bg-amber-50/50 dark:bg-amber-500/10 p-3 flex items-start gap-2 text-sm",children:[e.jsx(R,{className:"size-4 mt-0.5 shrink-0 text-amber-600 dark:text-amber-400"}),e.jsxs("p",{className:"text-muted-foreground",children:["Neither ",e.jsx("span",{className:"font-mono",children:"/graph/broker"})," nor ",e.jsx("span",{className:"font-mono",children:"/graph/bus"})," ","is serving on this backend yet."]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[18rem_1fr] gap-6",children:[e.jsxs(u,{className:"h-fit",children:[e.jsxs(x,{children:[e.jsx(h,{className:"text-base",children:"Topics"}),e.jsxs(f,{children:[a.length," topic(s)"]})]}),e.jsx(b,{children:a.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No topics reported."}):e.jsx("div",{className:"space-y-1",children:a.map(s=>e.jsxs("button",{type:"button",onClick:()=>{t(s.name)},className:"w-full text-left rounded border p-2 hover:bg-muted/50 transition-colors "+(s.name===i?"bg-accent":""),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"truncate font-mono text-xs",children:s.name}),s.depth!==void 0&&e.jsx($,{variant:"outline",children:s.depth})]}),(s.consumers!==void 0||s.subscribers!==void 0)&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[s.consumers??s.subscribers," consumer(s)"]})]},s.name))})})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(u,{children:[e.jsxs(x,{children:[e.jsxs(h,{className:"text-base",children:["Messages",i?` · ${i}`:""]}),e.jsxs(f,{children:[n.length," recent message(s)"]})]}),e.jsx(b,{children:n.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No messages."}):e.jsx("div",{className:"space-y-2",children:n.map((s,o)=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground mb-1",children:[e.jsx("span",{children:s.sender??"unknown"}),e.jsx("span",{children:s.timestamp?new Date(s.timestamp).toLocaleString():""})]}),e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-words",children:typeof s.payload=="string"?s.payload:JSON.stringify(s.payload,null,2)})]},s.id??`msg-${String(o)}`))})})]}),e.jsxs(u,{children:[e.jsxs(x,{children:[e.jsx(h,{className:"text-base",children:"Publish"}),e.jsx(f,{children:"Send a test message (JSON or raw string)."})]}),e.jsxs(b,{className:"space-y-3",children:[e.jsx(I,{"aria-label":"Publish topic",placeholder:i??"topic",value:k,onChange:s=>{M(s.target.value)}}),e.jsx(J,{"aria-label":"Publish body",placeholder:'{"hello": "world"}',value:c,onChange:s=>{w(s.target.value)},rows:3,className:"font-mono text-sm"}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(T,{onClick:()=>{E()},disabled:S||!c.trim(),children:[S?e.jsx(O,{className:"size-4 mr-2 animate-spin"}):e.jsx(q,{className:"size-4 mr-2"}),"Publish"]})})]})]})]})]})]})}export{K as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{v as K,r as c,j as e,P as Ue,Z as De,m as xt,I as fe,a as z,B as N,b8 as ft,au as Ve,bo as pt,bp as ht,b9 as ue,z as $e,W as gt,c as pe,L as ee,y as bt,aA as vt,a7 as ze}from"./index-
|
|
1
|
+
import{v as K,r as c,j as e,P as Ue,Z as De,m as xt,I as fe,a as z,B as N,b8 as ft,au as Ve,bo as pt,bp as ht,b9 as ue,z as $e,W as gt,c as pe,L as ee,y as bt,aA as vt,a7 as ze}from"./index-oJW-_XBm.js";import{S as me}from"./scroll-area-DESuUYBV.js";import{G as jt}from"./git-fork-DRJTpbOa.js";import{E as yt}from"./external-link-ChibGV02.js";import{R as Nt}from"./refresh-cw-DW_113QE.js";import{P as ve}from"./play-D6f5O0-7.js";import{C as je}from"./circle-alert-BAG8GWpt.js";import{v as wt}from"./v4-Dnyct6Ft.js";const _t=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],St=K("arrow-left",_t);const kt=[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]],Ge=K("braces",kt);const Rt=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],Ct=K("pause",Rt);const At=[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]],Et=K("quote",At);const It=[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]],$t=K("table-2",It);class We extends Error{status;detail;constructor(s,n,r){super(s),this.name="CapabilityApiError",this.status=n,this.detail=r}}async function He(t){if((t.headers.get("content-type")??"").includes("application/json"))return t.json();const n=await t.text();if(!n)return null;try{return JSON.parse(n)}catch{return n}}function Qe(t,s){if(typeof t=="string"&&t.trim())return t;if(t&&typeof t=="object"){const n=t;for(const r of["detail","message"])if(typeof n[r]=="string"&&n[r])return n[r];if(n.policy&&typeof n.policy=="object"){const r=n.policy.reason;if(typeof r=="string"&&r)return r}if(Array.isArray(n.validation_issues)&&n.validation_issues.length>0){const r=n.validation_issues[0];if(r&&typeof r=="object"){const l=r;if(typeof l.message=="string")return l.message}}}return s}async function B(t,s,n){const r=await fetch(t,{credentials:"same-origin",...s}),l=await He(r);if(!r.ok)throw new We(Qe(l,`Request failed (${r.status})`),r.status,l);return l}function zt(t){return B("/api/capabilities?include_actions=true",{headers:{Accept:"application/json"},signal:t})}function qt(t,s){return B(`/api/capabilities/${encodeURIComponent(t)}`,{headers:{Accept:"application/json"},signal:s})}function Ot(t,s,n){return B(`/api/capabilities/${encodeURIComponent(t)}/preflight`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s),signal:n})}function Tt(t,s,n){return B(`/api/capabilities/${encodeURIComponent(t)}/invoke`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(s),signal:n})}function Lt(t,s){return B(`/api/runs/${encodeURIComponent(t)}`,{headers:{Accept:"application/json"},signal:s})}function Pt(t={}){const s=new URLSearchParams({limit:String(t.limit??50)});return t.sessionId&&s.set("session_id",t.sessionId),t.status&&s.set("status",t.status),B(`/api/runs?${s}`,{headers:{Accept:"application/json"},signal:t.signal})}function Ft(t,s={}){const n=new URLSearchParams({after:String(s.after??0),limit:String(s.limit??1e3)});return B(`/api/runs/${encodeURIComponent(t)}/events?${n}`,{headers:{Accept:"application/json"},signal:s.signal})}async function Mt(t,s={}){const n=s.after??0,r=Math.max(1,Math.min(s.pageSize??500,1e3)),l=Math.max(1,s.maxEvents??5e3),a=[];let o=n,x="1.0",h,v,d=!1;for(;a.length<l;){const k=Math.min(r,l-a.length),f=await Ft(t,{after:o,limit:k,signal:s.signal});if(x=f.schema_version,h=f.retained_from??h,v=f.has_more,typeof f.retained_from=="number"&&n<f.retained_from-1&&(d=!0),a.push(...f.events),f.events.length===0||f.next_after<=o||f.has_more===!1){o=Math.max(o,f.next_after);break}o=f.next_after}return{schema_version:x,run_id:t,after:n,events:a,next_after:o,has_more:v,retained_from:h,client_truncated:d||a.length>=l&&v!==!1}}function Ke(t){const s=t.split(/\r?\n/).filter(n=>n.startsWith("data:")).map(n=>n.slice(5).trimStart()).join(`
|
|
2
2
|
`);if(!s)return null;try{return JSON.parse(s)}catch{return null}}function qe(t){const s=Ke(t);return!s||typeof s.event_id!="string"||typeof s.sequence!="number"||typeof s.type!="string"||typeof s.run_id!="string"?null:s}function Oe(t){const s=Ke(t);return s?.type!=="stream_reset"||typeof s.run_id!="string"||typeof s.first_available!="number"||typeof s.last_available!="number"?null:s}class Te extends Error{reset;constructor(s){super(`${s.reason||"Run history is no longer retained"}. Replay begins at sequence ${s.first_available}.`),this.name="RunEventStreamResetError",this.reset=s}}const Bt=new Set(["run_completed","graph_complete","run_failed","error","run_cancelled","run_interrupted"]);function he(t){return Bt.has(t.type)}async function Jt(t,s){const n=new URLSearchParams({after:String(s.after??0),follow:"true"}),r=await fetch(`/api/runs/${encodeURIComponent(t)}/events?${n}`,{credentials:"same-origin",headers:{Accept:"text/event-stream"},signal:s.signal});if(!r.ok){const d=await He(r);throw new We(Qe(d,`Follow failed (${r.status})`),r.status,d)}if(!r.body)throw new Error("Run event stream is unavailable in this browser");s.onOpen?.();const l=r.body.getReader(),a=new TextDecoder;let o="",x=!1;for(;!x;){const{done:d,value:k}=await l.read();x=d,k&&(o+=a.decode(k,{stream:!d}));let f=o.search(/\r?\n\r?\n/),A=!1,w=null;for(;f>=0;){const u=o.slice(0,f),R=/^\r?\n\r?\n/.exec(o.slice(f))?.[0]??`
|
|
3
3
|
|
|
4
4
|
`;if(o=o.slice(f+R.length),w=Oe(u),w)break;const m=qe(u);if(m&&(s.onEvent(m),A=he(m)),A)break;f=o.search(/\r?\n\r?\n/)}if(A||w){if(await l.cancel(),w)throw new Te(w);return}}const h=Oe(o);if(h)throw new Te(h);const v=qe(o);v&&s.onEvent(v)}function Ye(t,s=0){if(!t||typeof t!="object"||s>5)return null;const n=t;for(const r of["run_id","runId"])if(typeof n[r]=="string"&&n[r])return n[r];for(const r of["result","data","run","metadata"]){const l=Ye(n[r],s+1);if(l)return l}return null}function Ze(t,s){if(!s.startsWith("#/"))return;let n=t;for(const r of s.slice(2).split("/")){if(!n||typeof n!="object")return;const l=r.replaceAll("~1","/").replaceAll("~0","~");n=n[l]}return n&&typeof n=="object"?n:void 0}function se(t,s){const n=t.$ref?Ze(s,t.$ref):void 0,r=n?{...n,...t,$ref:void 0}:t,a=(r.anyOf??r.oneOf)?.find(o=>M(o,s)!=="null");return a?{...r,...se(a,s),anyOf:void 0,oneOf:void 0}:r}function M(t,s){if(t.$ref){const r=Ze(s,t.$ref);if(r)return M(r,s)}if(Array.isArray(t.type))return t.type.find(r=>r!=="null");if(t.type)return t.type;const n=t.anyOf??t.oneOf;if(n)for(const r of n){const l=M(r,s);if(l&&l!=="null")return l}if(t.properties)return"object"}function Ut(t,s,n){const r=t.toLowerCase(),l=M(s,s),a=n.selection.at(0);if(t in n.filters)return n.filters[t];const o=Object.entries(n.filters).find(([x])=>x.toLowerCase()===r);if(o)return o[1];if(r==="page_context"||r==="context")return l==="object"?n:void 0;if(r==="filters")return l==="object"?n.filters:void 0;if(r==="route"||r==="page_route")return n.route;if(r==="view"||r==="page_view")return n.view;if(n.timeRange){if(["as_of","asof","timestamp"].includes(r))return n.timeRange.asOf;if(["from","start","start_time"].includes(r))return n.timeRange.start;if(["to","end","end_time"].includes(r))return n.timeRange.end;if(r==="timezone")return n.timeRange.timezone}if(a){if(["id","selection_id","node_id","object_id","memory_id","vertex_id","target"].includes(r))return a.id;if(l==="array"&&["ids","node_ids","object_ids","selection_ids"].includes(r))return n.selection.map(x=>x.id);if(r==="label"||r==="name")return a.label}}function Xe(t,s){return s==="boolean"?!!t:s==="object"||s==="array"?JSON.stringify(t,null,2):t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"||typeof t=="bigint"?`${t}`:JSON.stringify(t)}function Dt(t,s){const n={};for(const[r,l]of Object.entries(t.properties??{})){const a=se(l,t),o=M(a,t),x=a.const??a.default??Ut(r,a,s);x!==void 0?n[r]=Xe(x,o):o==="boolean"?n[r]=!1:n[r]=""}return n}function Vt(t){return t===void 0||typeof t=="string"&&t.trim()===""}function Gt(t,s){const n={},r=[],l=new Set(t.required??[]);for(const[a,o]of Object.entries(t.properties??{})){const x=se(o,t),h=M(x,t),v=x.const!==void 0?Xe(x.const,h):s[a];if(Vt(v)){l.has(a)&&r.push({field:a,message:"Required value is missing"});continue}if(x.const!==void 0){n[a]=x.const;continue}if(h==="boolean"){n[a]=typeof v=="boolean"?v:v==="true";continue}if(h==="number"||h==="integer"){const d=Number(v);!Number.isFinite(d)||h==="integer"&&!Number.isInteger(d)?r.push({field:a,message:`Expected ${h}`}):n[a]=d;continue}if(h==="object"||h==="array"){try{const d=JSON.parse(String(v));(h==="array"?Array.isArray(d):!!d&&typeof d=="object"&&!Array.isArray(d))?n[a]=d:r.push({field:a,message:`Expected a JSON ${h}`})}catch{r.push({field:a,message:`Expected valid JSON ${h}`})}continue}n[a]=String(v)}return{inputs:n,issues:r}}function Wt(t,s){const n=new Set(s.allowedActions.map(a=>a.id.toLowerCase()));let r=t.actions.reduce((a,o)=>a+(n.has(o.id.toLowerCase())?100:0),0);const l=[t.id,t.title,...t.typed_io.tags,...t.actions.map(a=>a.id)].join(" ").toLowerCase();l.includes(s.view.toLowerCase())&&(r+=20);for(const a of s.selection)l.includes(a.kind.toLowerCase())&&(r+=10);return r}function Ht(t,s){return s.title?s.title:t.replaceAll("_"," ").replace(/\b\w/g,n=>n.toUpperCase())}function Qt(t,s,n){return s.format==="password"||s.writeOnly||s["x-sensitive"]?!1:n==="object"||n==="array"||["query","cypher","content","prompt","description","expression"].includes(t.toLowerCase())||!!(s.description&&s.description.length>100)}function Kt({schema:t,context:s,busy:n=!1,onDirty:r,onSubmit:l}){const a=c.useId(),o=c.useMemo(()=>Dt(t,s),[s,t]),[x,h]=c.useState(o),[v,d]=c.useState([]);c.useEffect(()=>{h(o),d([])},[o]);const k=(u,R)=>{h(m=>({...m,[u]:R})),d(m=>m.filter(S=>S.field!==u)),r?.()},f=u=>{u.preventDefault();const R=Gt(t,x);d(R.issues),R.issues.length===0&&l(R.inputs)},A=Object.entries(t.properties??{}),w=new Set(t.required??[]);return e.jsxs("form",{className:"space-y-4",onSubmit:f,children:[e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border bg-muted/30 px-3 py-2 text-xs text-muted-foreground",children:[e.jsx(Ue,{className:"mt-0.5 size-4 shrink-0 text-emerald-500"}),e.jsxs("span",{children:["Inputs are generated from the live schema. Matching selection, filters, route, and time fields are prefilled from the current ",e.jsx("strong",{className:"text-foreground",children:s.view})," context."]})]}),A.length===0&&e.jsx("div",{className:"rounded-lg border border-dashed px-4 py-6 text-center text-sm text-muted-foreground",children:"This action takes no inputs."}),A.map(([u,R])=>{const m=se(R,t),S=M(m,t),E=`${a}-${u}`,I=v.find(p=>p.field===u),g=Ht(u,m);if(m.const!==void 0)return e.jsxs("div",{className:"flex items-center justify-between rounded-lg border bg-muted/20 px-3 py-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-medium",children:g}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Fixed by the selected action schema"})]}),e.jsx("code",{className:"rounded bg-muted px-2 py-1 text-xs",children:JSON.stringify(m.const)})]},u);if(S==="boolean")return e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("label",{htmlFor:E,className:"flex items-start gap-2 rounded-lg border px-3 py-2.5",children:[e.jsx(De,{id:E,checked:!!x[u],onCheckedChange:p=>{k(u,p===!0)}}),e.jsxs("span",{children:[e.jsxs("span",{className:"block text-sm font-medium",children:[g," ",w.has(u)&&e.jsx("span",{className:"text-destructive",children:"*"})]}),m.description&&e.jsx("span",{className:"block text-xs text-muted-foreground",children:m.description})]})]}),I&&e.jsx("p",{className:"text-xs text-destructive",children:I.message})]},u);const _={id:E,name:u,value:String(x[u]??""),"aria-invalid":!!I,"aria-describedby":m.description?`${E}-description`:void 0};return e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("label",{htmlFor:E,className:"text-sm font-medium",children:[g," ",w.has(u)&&e.jsx("span",{className:"text-destructive",children:"*"})]}),m.enum?e.jsxs("select",{..._,className:"border-input bg-background h-9 w-full rounded-md border px-3 text-sm shadow-xs outline-none focus-visible:ring-2 focus-visible:ring-ring",onChange:p=>{k(u,p.target.value)},children:[!w.has(u)&&e.jsx("option",{value:"",children:"Not set"}),m.enum.map(p=>e.jsx("option",{value:String(p),children:String(p)},JSON.stringify(p)))]}):Qt(u,m,S)?e.jsxs("div",{className:"relative",children:[e.jsx(xt,{..._,className:"min-h-24 resize-y pr-9 font-mono text-xs",onChange:p=>{k(u,p.target.value)}}),(S==="object"||S==="array")&&e.jsx(Ge,{className:"absolute right-3 top-3 size-4 text-muted-foreground"})]}):e.jsx(fe,{..._,type:m.format==="password"||m.writeOnly||m["x-sensitive"]?"password":S==="number"||S==="integer"?"number":m.format==="date-time"?"datetime-local":"text",autoComplete:m.format==="password"||m.writeOnly||m["x-sensitive"]?"new-password":void 0,step:S==="integer"?1:S==="number"?"any":void 0,onChange:p=>{k(u,p.target.value)}}),m.description&&e.jsx("p",{id:`${E}-description`,className:"text-xs text-muted-foreground",children:m.description}),I&&e.jsx("p",{className:"text-xs text-destructive",children:I.message})]},u)}),e.jsx(z,{type:"submit",disabled:n,className:"w-full sm:w-auto",children:n?"Checking…":"Review preflight"})]})}function J(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function Yt(t){const s=J(t);return s&&"result"in s&&("status"in s||Object.keys(s).length<=2)?s.result:t}function et(t,s){if(Array.isArray(t))return t;const n=J(t);if(!n)return null;for(const r of s)if(Array.isArray(n[r]))return n[r];return null}function ge(t){const s=et(t,["rows","items","results","records","data"]);return!s?.length||!s.every(n=>!!J(n))?null:s}function be(t){const s=et(t,["evidence","citations","sources","claims"]);if(!s?.length)return null;const n=s.map(J).filter(r=>!!r);return n.length?n:null}function te(t){const s=J(t);if(!s)return null;const n=Array.isArray(s.nodes)?s.nodes:Array.isArray(s.vertices)?s.vertices:null,r=Array.isArray(s.edges)?s.edges:Array.isArray(s.relationships)?s.relationships:Array.isArray(s.links)?s.links:null;if(n||r)return{nodes:n??[],edges:r??[]};for(const l of["graph","result","data"]){const a=te(s[l]);if(a)return a}return null}function Zt(t,s){return t==="graph"&&te(s)?"graph":t==="evidence"&&be(s)?"evidence":t==="table"&&ge(s)?"table":te(s)?"graph":be(s)?"evidence":ge(s)?"table":"json"}function L(t){return t==null?"—":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):JSON.stringify(t)}function Q({value:t}){return e.jsxs("div",{className:"overflow-hidden rounded-lg border bg-muted/20",children:[e.jsxs("div",{className:"flex items-center gap-2 border-b px-3 py-2 text-xs font-medium text-muted-foreground",children:[e.jsx(Ge,{className:"size-3.5"})," JSON"]}),e.jsx("pre",{className:"max-h-96 overflow-auto p-3 text-xs leading-relaxed",children:typeof t=="string"?t:JSON.stringify(t,null,2)})]})}function Xt({value:t}){const s=ge(t);if(!s)return e.jsx(Q,{value:t});const n=Array.from(new Set(s.slice(0,50).flatMap(r=>Object.keys(r)))).slice(0,10);return e.jsxs("div",{className:"overflow-hidden rounded-lg border",children:[e.jsxs("div",{className:"flex items-center justify-between border-b bg-muted/20 px-3 py-2 text-xs font-medium text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx($t,{className:"size-3.5"})," Table"]}),e.jsxs("span",{children:[s.length," rows"]})]}),e.jsx("div",{className:"max-h-96 overflow-auto",children:e.jsxs("table",{className:"w-full min-w-max text-left text-xs",children:[e.jsx("thead",{className:"sticky top-0 bg-background",children:e.jsx("tr",{className:"border-b",children:n.map(r=>e.jsx("th",{className:"px-3 py-2 font-medium",children:r},r))})}),e.jsx("tbody",{children:s.slice(0,200).map((r,l)=>e.jsx("tr",{className:"border-b last:border-0 hover:bg-muted/30",children:n.map(a=>e.jsx("td",{className:"max-w-72 truncate px-3 py-2",title:L(r[a]),children:L(r[a])},a))},l))})]})}),s.length>200&&e.jsx("div",{className:"border-t px-3 py-2 text-xs text-muted-foreground",children:"Showing first 200 rows."})]})}function es({value:t}){const s=be(t);return s?e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(Et,{className:"size-3.5"})," Evidence"]}),e.jsxs("span",{children:[s.length," items"]})]}),s.slice(0,50).map((n,r)=>{const l=L(n.title??n.label??n.source??`Evidence ${r+1}`),a=L(n.snippet??n.excerpt??n.content??n.claim??""),o=ft(n.url??n.uri??n.href),x=n.confidence??n.score;return e.jsxs("article",{className:"rounded-lg border p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsx("div",{className:"font-medium text-sm",children:l}),x!==void 0&&e.jsx(N,{variant:"outline",children:L(x)})]}),a&&e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:a}),o&&e.jsxs("a",{className:"mt-2 inline-flex items-center gap-1 text-xs text-primary hover:underline",href:o,target:"_blank",rel:"noopener noreferrer",children:["Open source ",e.jsx(yt,{className:"size-3"})]})]},r)})]}):e.jsx(Q,{value:t})}function Le(t,s){const n=J(t);return L(n?n.label??n.name??n.title??n.id??s:t)}function ts({value:t}){const s=te(t);return s?e.jsxs("div",{className:"space-y-3 rounded-lg border p-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(jt,{className:"size-4"})," Graph result"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(N,{variant:"secondary",children:[s.nodes.length," nodes"]}),e.jsxs(N,{variant:"outline",children:[s.edges.length," edges"]})]})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Nodes"}),e.jsxs("div",{className:"space-y-1",children:[s.nodes.slice(0,12).map((n,r)=>e.jsx("div",{className:"truncate rounded bg-muted/40 px-2 py-1 text-xs",title:L(n),children:Le(n,`Node ${r+1}`)},r)),s.nodes.length===0&&e.jsx("div",{className:"text-xs text-muted-foreground",children:"No nodes returned."})]})]}),e.jsxs("div",{children:[e.jsx("div",{className:"mb-1 text-xs font-medium text-muted-foreground",children:"Relationships"}),e.jsxs("div",{className:"space-y-1",children:[s.edges.slice(0,12).map((n,r)=>e.jsx("div",{className:"truncate rounded bg-muted/40 px-2 py-1 text-xs",title:L(n),children:Le(n,`Edge ${r+1}`)},r)),s.edges.length===0&&e.jsx("div",{className:"text-xs text-muted-foreground",children:"No relationships returned."})]})]})]}),e.jsxs("details",{children:[e.jsx("summary",{className:"cursor-pointer text-xs text-muted-foreground",children:"Raw graph payload"}),e.jsx("div",{className:"mt-2",children:e.jsx(Q,{value:t})})]})]}):e.jsx(Q,{value:t})}const ss={json:Q,table:Xt,evidence:es,graph:ts};function tt({value:t,hint:s}){const n=Yt(t),r=Zt(s,n),l=ss[r];return e.jsx(l,{value:n})}function Pe(t){return t instanceof Error?t.message:"The run event surface is unavailable."}function Fe(t){return t instanceof Error&&t.name==="AbortError"}function xe(t){t.catch(()=>{})}function ns(t,s){const n=new Map(t.map(r=>[r.event_id,r]));for(const r of s)n.set(r.event_id,r);return[...n.values()].sort((r,l)=>r.sequence-l.sequence).slice(-1e3)}function rs(t){const s=new Date(t);return Number.isNaN(s.valueOf())?t:s.toLocaleTimeString()}function is(t){if(t==="run_completed"||t==="graph_complete")return"completed";if(t==="run_cancelled")return"cancelled";if(t==="run_failed"||t==="error"||t==="run_interrupted")return"failed"}function Me({runId:t,autoFollow:s=!1,renderHint:n}){const[r,l]=c.useState(null),[a,o]=c.useState([]),[x,h]=c.useState(!0),[v,d]=c.useState(null),[k,f]=c.useState(!1),[A,w]=c.useState("idle"),u=c.useRef(null),R=c.useCallback(()=>{u.current?.abort(),u.current=null,w("idle")},[]),m=c.useCallback(g=>{u.current?.abort();const _=new AbortController;u.current=_,d(null),w("connecting"),xe(Jt(t,{after:g,signal:_.signal,onOpen:()=>{w("live")},onEvent:p=>{o($=>ns($,[p])),he(p)&&l($=>$&&{...$,status:is(p.type),last_sequence:p.sequence,last_timestamp:p.timestamp,last_event_type:p.type})}}).catch(p=>{Fe(p)||d(Pe(p))}).finally(()=>{u.current===_&&(u.current=null,w("idle"))}))},[t]),S=c.useCallback(async g=>{R(),h(!0),d(null);try{const[_,p]=await Promise.all([Lt(t,g),Mt(t,{after:0,pageSize:500,maxEvents:5e3,signal:g})]);l(_),o(p.events),f(!!_.truncated||p.client_truncated);const $=p.events.some(he),Y=["completed","failed","cancelled"].includes(_.status??"");s&&!$&&!Y&&!g?.aborted&&m(p.next_after)}catch(_){Fe(_)||d(Pe(_))}finally{g?.aborted||h(!1)}},[s,m,t,R]);c.useEffect(()=>{const g=new AbortController;return l(null),o([]),f(!1),xe(S(g.signal)),()=>{g.abort(),u.current?.abort()}},[S]);const E=c.useCallback(()=>{m(a.at(-1)?.sequence??0)},[a,m]),I=[...a].reverse().find(g=>g.type==="tool_result"&&"result"in g.payload);return e.jsxs("section",{className:"space-y-3 rounded-xl border bg-card p-4","aria-label":`Run ${t} event timeline`,children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ve,{className:"size-4 text-primary"}),e.jsx("h3",{className:"font-semibold",children:"Run inspector"}),A==="live"&&e.jsx(N,{className:"bg-emerald-600",children:"Live"}),A==="connecting"&&e.jsx(N,{variant:"secondary",children:"Connecting"})]}),e.jsx("code",{className:"mt-1 block truncate text-xs text-muted-foreground",title:t,children:t})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(z,{type:"button",variant:"outline",size:"sm",disabled:x,onClick:()=>{xe(S())},children:[e.jsx(Nt,{className:x?"animate-spin":""})," Replay"]}),A==="idle"?e.jsxs(z,{type:"button",size:"sm",onClick:E,children:[e.jsx(ve,{})," Follow"]}):e.jsxs(z,{type:"button",size:"sm",variant:"secondary",onClick:R,children:[e.jsx(Ct,{})," Stop"]})]})]}),r&&e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs sm:grid-cols-4",children:[e.jsxs("div",{className:"rounded-md bg-muted/40 p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Events"}),e.jsx("div",{className:"font-semibold",children:r.event_count})]}),e.jsxs("div",{className:"rounded-md bg-muted/40 p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Last sequence"}),e.jsx("div",{className:"font-semibold",children:r.last_sequence})]}),e.jsxs("div",{className:"rounded-md bg-muted/40 p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Last type"}),e.jsx("div",{className:"truncate font-semibold",children:r.last_event_type??"—"})]}),e.jsxs("div",{className:"rounded-md bg-muted/40 p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Session"}),e.jsx("div",{className:"truncate font-semibold",children:r.session_id??"—"})]})]}),v&&e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm text-destructive",children:[e.jsx(je,{className:"mt-0.5 size-4 shrink-0"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"Run events unavailable"}),e.jsx("div",{className:"text-xs opacity-90",children:v})]})]}),k&&e.jsx("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300",children:"This timeline is bounded; earlier or additional events may exist in the canonical store."}),I&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-sm font-semibold",children:"Run result"}),e.jsx(tt,{value:I.payload.result,hint:n})]}),x&&a.length===0?e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:"Replaying canonical events…"}):a.length===0&&!v?e.jsx("div",{className:"rounded-lg border border-dashed py-8 text-center text-sm text-muted-foreground",children:"No events have been recorded for this run yet."}):e.jsx("ol",{className:"max-h-96 space-y-0 overflow-auto pr-1","aria-label":"Run event timeline",children:a.map((g,_)=>e.jsxs("li",{className:"relative flex gap-3 pb-3 last:pb-0",children:[_<a.length-1&&e.jsx("span",{className:"absolute bottom-0 left-[7px] top-4 w-px bg-border"}),e.jsx("span",{className:"relative mt-1.5 size-[15px] shrink-0 rounded-full border-2 border-background bg-primary"}),e.jsxs("div",{className:"min-w-0 flex-1 rounded-lg border px-3 py-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsx("span",{className:"font-mono text-xs font-medium",children:g.type}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["#",g.sequence," · ",rs(g.timestamp)]})]}),e.jsx("div",{className:"mt-1 text-[11px] text-muted-foreground",children:g.source}),Object.keys(g.payload).length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"cursor-pointer text-xs text-muted-foreground",children:"Payload"}),e.jsx("pre",{className:"mt-1 max-h-48 overflow-auto rounded bg-muted/40 p-2 text-[11px]",children:JSON.stringify(g.payload,null,2)})]})]})]},g.event_id))})]})}const Be="capabilityWorkbenchSessionId";function W(t){return t instanceof Error?t.message:"The capability service is unavailable."}function H(t){t.catch(()=>{})}function as(){const t=window.localStorage.getItem(Be);if(t)return t;const s=`webui-${wt()}`;return window.localStorage.setItem(Be,s),s}function ls(t){return!t.approval_id||!t.run_id||!t.session_id?null:{approvalId:t.approval_id,runId:t.run_id,sessionId:t.session_id}}function os(t,s){const n=t.policy.target_input;if(!n)return;const r=s[n];if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")return String(r)}function st(t){return t==="available"?"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300":t==="degraded"?"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300":"border-destructive/30 bg-destructive/10 text-destructive"}function Je(t,s){return t.actions.find(n=>s.has(n.id.toLowerCase()))??t.actions[0]}function cs({descriptor:t}){const s=t.availability.status,n=t.availability.readiness,r=[...t.availability.reasons,...t.availability.missing_preconditions];return e.jsxs("div",{className:pe("rounded-lg border px-3 py-2 text-xs",st(s)),children:[e.jsxs("div",{className:"font-medium capitalize",children:[s,n==="cold"?" · cold start":n&&n!=="warm"?` · ${n}`:""]}),n==="cold"&&e.jsx("div",{className:"mt-0.5 opacity-90",children:"Callable now; the engine warms on first use."}),r.length>0&&e.jsx("div",{className:"mt-0.5 opacity-90",children:r.join(" · ")})]})}function ds({action:t,preflight:s,confirmed:n,invoking:r,approvalPending:l,executionError:a,onConfirmedChange:o,onInvoke:x}){const h=t.side_effects.mutates===null,v=t.side_effects.mutates!==!1||s.policy.approval_required,d=s.eligible&&s.policy.approval_required&&s.availability.status==="available",k=(s.executable_now||d)&&!l&&(!v||n);return e.jsxs("section",{className:"space-y-3 rounded-xl border bg-muted/15 p-4","aria-label":"Preflight review",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[s.executable_now?e.jsx(vt,{className:"mt-0.5 size-5 text-emerald-600"}):d?e.jsx(ze,{className:"mt-0.5 size-5 text-amber-600"}):e.jsx(ze,{className:"mt-0.5 size-5 text-destructive"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Preflight preview"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Policy is rechecked authoritatively with execution identity when you invoke."})]})]}),e.jsx(N,{variant:s.executable_now||d?"secondary":"destructive",children:s.executable_now?"Eligible now":d?"Approval needed":"Blocked"})]}),e.jsxs("div",{className:"grid gap-2 text-xs sm:grid-cols-3",children:[e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Decision"}),e.jsx("div",{className:"font-semibold capitalize",children:s.policy.decision.replaceAll("_"," ")})]}),e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Tier"}),e.jsx("div",{className:"font-semibold",children:s.policy.tier})]}),e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Side effects"}),e.jsx("div",{className:"font-semibold",children:t.side_effects.mutates===!0?"Mutating":h?"Unknown — treated as mutating":"Read-only"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s.policy.reason}),s.validation_issues.length>0&&e.jsx("ul",{className:"rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive",children:s.validation_issues.map(f=>e.jsxs("li",{children:[f.field,": ",f.message]},`${f.field}:${f.message}`))}),v&&e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/5 p-3",children:[e.jsx(De,{checked:n,onCheckedChange:f=>{o(f===!0)}}),e.jsxs("span",{className:"text-xs",children:[e.jsx("span",{className:"block font-medium",children:s.policy.approval_required?"Confirm submission to the approval policy":"Confirm this state-changing action"}),e.jsx("span",{className:"text-muted-foreground",children:"I reviewed the target, inputs, and side-effect declaration. Execution may still be denied or queued."})]})]}),a&&e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive",children:[e.jsx(je,{className:"mt-0.5 size-4 shrink-0"})," ",a]}),e.jsx(z,{type:"button",disabled:!k||r,onClick:x,children:r?e.jsxs(e.Fragment,{children:[e.jsx(ee,{className:"animate-spin"})," Invoking…"]}):e.jsxs(e.Fragment,{children:[e.jsx(ve,{}),l?"Approval pending":s.policy.approval_required?"Request approval":"Invoke action"]})})]})}function vs(){const t=pt(),[s]=ht(),[n]=c.useState(as),r=s==="/"?n:s.replace(/^\/+/,""),l=t.selection.at(0),a=JSON.stringify({route:t.route,selection:t.selection,filters:t.filters,timeRange:t.timeRange}),[o,x]=c.useState("capabilities"),[h,v]=c.useState(""),[d,k]=c.useState("all"),[f,A]=c.useState(null),[w,u]=c.useState(null),[R,m]=c.useState(null),[S,E]=c.useState(null),[I,g]=c.useState(void 0),[_,p]=c.useState(!1),[$,Y]=c.useState(null),[nt,ye]=c.useState(!1),[ne,re]=c.useState(!1),[rt,U]=c.useState(null),[it,Ne]=c.useState(void 0),[at,we]=c.useState(!1),[ie,_e]=c.useState(null),[q,ae]=c.useState(null),[le,Z]=c.useState(null),[oe,Se]=c.useState(""),[ce,ke]=c.useState(null),[X,lt]=c.useState("all"),O=c.useRef(0),D=ue({queryKey:["capability-catalog"],queryFn:({signal:i})=>zt(i),staleTime:3e4,retry:1}),V=ue({queryKey:["capability-detail",f],queryFn:({signal:i})=>qt(f,i),enabled:!!f,staleTime:3e4,retry:1}),G=ue({queryKey:["canonical-runs",X],queryFn:({signal:i})=>Pt({status:X==="all"?void 0:X,limit:50,signal:i}),enabled:o==="run",staleTime:5e3,retry:1}),de=c.useMemo(()=>new Set(t.allowedActions.map(i=>i.id.toLowerCase())),[t.allowedActions]),j=V.data;c.useEffect(()=>{if(!j)return;j.actions.some(b=>b.id===w)||u(Je(j,de)?.id??null)},[de,j,w]);const C=j?.actions.find(i=>i.id===w),ot=j?j.execution.governed_invoke_route??`/api/capabilities/${encodeURIComponent(j.id)}/invoke`:null,Re=C?.typed_io.legacy_rest_route??C?.typed_io.rest_route,Ce=C?.typed_io.legacy_request_encoding??C?.typed_io.request_encoding,F=c.useCallback(()=>{O.current+=1,p(!1),re(!1),m(null),E(null),g(void 0),Y(null),ye(!1),U(null),Ne(void 0),we(!1),_e(null),ae(null),Z(null)},[]);c.useEffect(()=>{F()},[a,F]);const ct=i=>{A(i.id),u(Je(i,de)?.id??null),F()},dt=i=>{u(i),F()},T=D.data,Ae=Array.isArray(T?.capabilities)?T.capabilities:[],Ee=c.useMemo(()=>{const i=h.trim().toLowerCase();return Ae.map(b=>({capability:b,score:Wt(b,t)})).filter(({capability:b})=>d!=="all"&&b.availability.status!==d?!1:i?[b.id,b.title,b.one_line,...b.typed_io.tags,...b.actions.map(P=>P.id),...b.intent_verbs??[]].join(" ").toLowerCase().includes(i):!0).sort((b,y)=>y.score-b.score||b.capability.title.localeCompare(y.capability.title))},[d,Ae,t,h]),ut=async i=>{if(!j||!C)return;const b=os(C,i);F();const y=O.current;p(!0),E(i),g(b);try{const P=await Ot(j.id,{action:C.id,inputs:i,target:b});y===O.current&&m(P)}catch(P){y===O.current&&Y(W(P))}finally{y===O.current&&p(!1)}},Ie=async i=>{if(!j||!C||!S)return;const b=O.current;re(!0),U(null);try{const y=await Tt(j.id,{action:C.id,inputs:S,target:I,session_id:i?.sessionId??r,approval_id:i?.approvalId,run_id:i?.runId});if(b!==O.current)return;if(Ne(y),we(y.result!==void 0),_e(Ye(y)),y.status==="approval_required"){Z(null);const P=ls(y);P?ae(P):U("The approval response did not bind both a run and approval ID.")}else ae(null),y.status==="running"&&(!y.run_id||!y.session_id)?(Z(null),U("The running response did not include its bound run and session IDs.")):Z(y.status==="running"?y:null)}catch(y){b===O.current&&U(W(y))}finally{b===O.current&&re(!1)}},mt=i=>{i.preventDefault();const b=oe.trim();b&&ke(b)};return e.jsxs("div",{className:"flex h-[calc(100vh-6rem)] flex-col gap-0 overflow-hidden rounded-xl border bg-card",children:[e.jsx("div",{className:"shrink-0 border-b px-5 py-4",children:e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"flex items-center gap-2 text-lg font-semibold leading-none",children:[e.jsx($e,{className:"size-5 text-primary"})," Unified Agent View"]}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Discover live actions, review policy, invoke through the governed gateway, and inspect run events."})]}),e.jsxs("div",{className:"flex rounded-lg bg-muted p-1",children:[e.jsxs("button",{type:"button",className:pe("rounded-md px-3 py-1.5 text-xs font-medium",o==="capabilities"&&"bg-background shadow-sm"),onClick:()=>{x("capabilities")},children:[e.jsx(gt,{className:"mr-1 inline size-3.5"})," Capabilities"]}),e.jsxs("button",{type:"button",className:pe("rounded-md px-3 py-1.5 text-xs font-medium",o==="run"&&"bg-background shadow-sm"),onClick:()=>{x("run")},children:[e.jsx(Ve,{className:"mr-1 inline size-3.5"})," Runs"]})]})]})}),o==="run"?e.jsx(me,{className:"min-h-0 flex-1",children:e.jsxs("div",{className:"mx-auto max-w-3xl space-y-5 p-5",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold",children:"Replay or follow a run"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Enter a canonical run ID. Missing event infrastructure is reported as unavailable."})]}),e.jsxs("form",{className:"flex gap-2",onSubmit:mt,children:[e.jsx(fe,{value:oe,onChange:i=>{Se(i.target.value)},placeholder:"run_…","aria-label":"Run ID"}),e.jsx(z,{type:"submit",disabled:!oe.trim(),children:"Inspect"})]}),ce&&e.jsx(Me,{runId:ce},ce),e.jsxs("section",{className:"space-y-3","aria-label":"Recent runs",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Recent runs"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Newest-first lifecycle summaries from the canonical event store."})]}),e.jsxs("select",{"aria-label":"Run status filter",value:X,className:"border-input bg-background h-8 rounded-md border px-2 text-xs shadow-xs",onChange:i=>{lt(i.target.value)},children:[e.jsx("option",{value:"all",children:"All statuses"}),e.jsx("option",{value:"running",children:"Running"}),e.jsx("option",{value:"waiting_for_input",children:"Waiting for input"}),e.jsx("option",{value:"completed",children:"Completed"}),e.jsx("option",{value:"failed",children:"Failed"}),e.jsx("option",{value:"cancelled",children:"Cancelled"})]})]}),G.isPending?e.jsx("div",{className:"py-6 text-center text-sm text-muted-foreground",children:"Loading recent runs…"}):G.error?e.jsxs("div",{className:"rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive",children:["Run discovery unavailable: ",W(G.error)]}):G.data.runs.length?e.jsx("div",{className:"space-y-2",children:G.data.runs.map(i=>e.jsxs("button",{type:"button",className:"flex w-full items-center justify-between gap-3 rounded-lg border p-3 text-left hover:border-primary/40 hover:bg-accent/30",onClick:()=>{Se(i.run_id),ke(i.run_id)},children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("code",{className:"block truncate text-xs font-medium",children:i.run_id}),e.jsxs("div",{className:"mt-1 text-[11px] text-muted-foreground",children:[i.event_count," events · ",i.last_event_type??"no last event",i.session_id?` · session ${i.session_id}`:""]})]}),e.jsx(N,{variant:"outline",children:i.status?.replaceAll("_"," ")??"unknown"})]},i.run_id))}):e.jsx("div",{className:"rounded-lg border border-dashed py-6 text-center text-sm text-muted-foreground",children:"No runs match this status."})]})]})}):f?e.jsx(me,{className:"min-h-0 flex-1",children:e.jsxs("div",{className:"mx-auto max-w-3xl space-y-5 p-5",children:[e.jsxs(z,{type:"button",variant:"ghost",size:"sm",className:"-ml-2",onClick:()=>{A(null),F()},children:[e.jsx(St,{})," Back to catalog"]}),V.isPending?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[e.jsx(ee,{className:"animate-spin"})," Loading live descriptor…"]}):V.error||!j?e.jsxs("div",{className:"rounded-xl border border-destructive/30 bg-destructive/5 p-4 text-sm text-destructive",children:[e.jsx("div",{className:"font-semibold",children:"Capability detail unavailable"}),e.jsx("div",{className:"mt-1 text-xs",children:W(V.error)}),e.jsx(z,{type:"button",variant:"outline",size:"sm",className:"mt-3",onClick:()=>{H(V.refetch())},children:"Retry"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-semibold",children:j.title}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:j.one_line}),e.jsx("code",{className:"mt-1 block text-xs text-muted-foreground",children:j.id})]}),e.jsx(N,{variant:"outline",children:j.render.renderer})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:j.typed_io.tags.map(i=>e.jsx(N,{variant:"secondary",children:i},i))}),e.jsx(cs,{descriptor:j})]}),j.actions.length===0?e.jsx("div",{className:"rounded-xl border border-dashed p-6 text-center text-sm text-muted-foreground",children:"The live descriptor exposes no invocable actions."}):C?e.jsxs("div",{className:"space-y-5",children:[j.actions.length>1&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{htmlFor:"capability-action",className:"text-sm font-medium",children:"Action"}),e.jsx("select",{id:"capability-action",value:C.id,className:"border-input bg-background h-9 w-full rounded-md border px-3 text-sm shadow-xs",onChange:i=>{dt(i.target.value)},children:j.actions.map(i=>e.jsx("option",{value:i.id,children:i.id},i.id))})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(N,{variant:"outline",children:C.id}),e.jsx(N,{className:"bg-sky-600",children:"Governed invoke"}),e.jsx("code",{children:ot}),C.side_effects.mutates!==!1&&e.jsx(N,{className:"bg-amber-600",children:"Confirmation required"})]}),Re&&e.jsxs("details",{className:"rounded-lg border bg-muted/20 px-3 py-2 text-xs text-muted-foreground",children:[e.jsx("summary",{className:"cursor-pointer font-medium",children:"Legacy transport metadata · display only"}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:[e.jsx("code",{children:Re}),Ce&&e.jsx(N,{variant:"outline",children:Ce.replaceAll("_"," ")}),e.jsx("span",{children:"Direct frontend execution is disabled."})]})]}),e.jsx(Kt,{schema:C.input_schema,context:t,busy:_,onDirty:F,onSubmit:i=>{H(ut(i))}},`${j.id}:${C.id}`),$&&e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/5 p-3 text-sm text-destructive",children:[e.jsx(je,{className:"mt-0.5 size-4 shrink-0"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:"Preflight unavailable"}),e.jsx("div",{className:"text-xs",children:$})]})]}),R&&e.jsx(ds,{action:C,preflight:R,confirmed:nt,invoking:ne,approvalPending:!!q,executionError:rt,onConfirmedChange:ye,onInvoke:()=>{H(Ie())}}),q&&e.jsxs("section",{className:"space-y-3 rounded-xl border border-amber-500/30 bg-amber-500/5 p-4","aria-label":"Pending capability approval",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Approval required"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Grant this request in an authorized approval surface, then resume this exact invocation."})]}),e.jsx(N,{className:"bg-amber-600",children:"Waiting for input"})]}),e.jsxs("div",{className:"grid gap-2 text-xs sm:grid-cols-3",children:[e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Approval"}),e.jsx("code",{className:"block truncate",title:q.approvalId,children:q.approvalId})]}),e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Run"}),e.jsx("code",{className:"block truncate",title:q.runId,children:q.runId})]}),e.jsxs("div",{className:"rounded-md border bg-background p-2",children:[e.jsx("div",{className:"text-muted-foreground",children:"Session"}),e.jsx("code",{className:"block truncate",title:q.sessionId,children:q.sessionId})]})]}),e.jsxs(z,{type:"button",disabled:ne,onClick:()=>{H(Ie(q))},children:[ne?e.jsx(ee,{className:"animate-spin"}):e.jsx(ve,{}),"Resume approved action"]})]}),le&&e.jsxs("section",{className:"space-y-2 rounded-xl border border-sky-500/30 bg-sky-500/5 p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Execution accepted"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"The governed run is executing asynchronously. Live results appear in its timeline."})]}),e.jsx(N,{className:"bg-sky-600",children:"Accepted"})]}),e.jsxs("div",{className:"flex flex-wrap gap-3 text-xs text-muted-foreground",children:[e.jsxs("span",{children:["Run: ",e.jsx("code",{children:le.run_id})]}),e.jsxs("span",{children:["Session: ",e.jsx("code",{children:le.session_id})]})]})]}),at&&e.jsxs("section",{className:"space-y-3","aria-label":"Capability result",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ue,{className:"size-5 text-emerald-600"}),e.jsx("h3",{className:"font-semibold",children:"Result"})]}),e.jsx(tt,{value:it,hint:j.render.renderer})]}),ie&&e.jsx(Me,{runId:ie,autoFollow:!0,renderHint:j.render.renderer},ie)]}):null]})]})}):e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[e.jsxs("div",{className:"space-y-3 border-b p-4",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(bt,{className:"absolute left-3 top-2.5 size-4 text-muted-foreground"}),e.jsx(fe,{autoFocus:!0,className:"pl-9",value:h,onChange:i=>{v(i.target.value)},placeholder:"Search capabilities, actions, intents, and tags…"})]}),e.jsxs("select",{value:d,"aria-label":"Availability filter",className:"border-input bg-background h-9 rounded-md border px-3 text-sm shadow-xs",onChange:i=>{k(i.target.value)},children:[e.jsx("option",{value:"all",children:"All availability"}),e.jsx("option",{value:"available",children:"Available"}),e.jsx("option",{value:"degraded",children:"Degraded"}),e.jsx("option",{value:"unavailable",children:"Unavailable"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:["Context: ",e.jsx("strong",{className:"text-foreground",children:t.view}),l?` · ${l.label??l.id}`:""]}),T&&e.jsxs("span",{children:[T.action_count," actions · catalog ",T.catalog_version]})]}),T?.runtime.status==="initializing"&&e.jsx("div",{className:"rounded-lg border border-sky-500/30 bg-sky-500/5 p-2 text-xs text-sky-700 dark:text-sky-300",children:"Runtime is cold but callable; the engine initializes on the first action."}),T?.runtime.status==="degraded"&&e.jsxs("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/5 p-2 text-xs text-amber-700 dark:text-amber-300",children:["Runtime degraded",T.runtime.reason?`: ${T.runtime.reason}`:""]})]}),e.jsx(me,{className:"min-h-0 flex-1",children:e.jsx("div",{className:"space-y-2 p-4",children:D.isPending?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[e.jsx(ee,{className:"animate-spin"})," Loading live catalog…"]}):D.error?e.jsxs("div",{className:"rounded-xl border border-destructive/30 bg-destructive/5 p-5 text-sm text-destructive",children:[e.jsx("div",{className:"font-semibold",children:"Capability catalog unavailable"}),e.jsx("div",{className:"mt-1 text-xs",children:W(D.error)}),e.jsx(z,{type:"button",variant:"outline",size:"sm",className:"mt-3",onClick:()=>{H(D.refetch())},children:"Retry"})]}):Ee.length===0?e.jsx("div",{className:"rounded-xl border border-dashed py-16 text-center text-sm text-muted-foreground",children:"No live capabilities match this search and availability filter."}):Ee.map(({capability:i,score:b})=>e.jsx("button",{type:"button",className:"group w-full rounded-xl border bg-card p-4 text-left transition-colors hover:border-primary/40 hover:bg-accent/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:()=>{ct(i)},children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-semibold",children:i.title}),b>0&&e.jsxs(N,{variant:"secondary",children:[e.jsx($e,{})," Contextual"]})]}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:i.one_line}),e.jsxs("div",{className:"mt-2 flex flex-wrap gap-1.5",children:[i.actions.slice(0,5).map(y=>e.jsx(N,{variant:"outline",children:y.id},y.id)),i.actions.length>5&&e.jsxs(N,{variant:"outline",children:["+",i.actions.length-5]})]})]}),e.jsx(N,{variant:"outline",className:st(i.availability.status),children:i.availability.status})]})},i.id))})})]})]})}export{vs as CapabilityWorkbench};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as a,j as e,ag as f,a as r,I as n,L as C,B as i,b as w}from"./index-oJW-_XBm.js";import{C as E,a as S,b as z,d as k}from"./card-B8Y9xTh8.js";import{I}from"./ImportExportModal-CmYwHimu.js";import{U as L}from"./unavailable-notice-Ce6qen9e.js";import{U as O}from"./upload-DmuzS9eW.js";import{R as T}from"./refresh-cw-DW_113QE.js";import"./tabs-D-bKS-GJ.js";import"./wifi-off-Dx38TebK.js";function A(){const[l,c]=a.useState([]),[o,d]=a.useState(!0),[v,x]=a.useState(!1),[m,j]=a.useState(""),[g,N]=a.useState(""),[p,y]=a.useState(""),[b,u]=a.useState(!1),t=async()=>{d(!0);try{const s=await w.getOntologyCatalogue({search:m,category:g,tag:p});c(s.ontologies),x(!1)}catch{c([]),x(!0)}finally{d(!1)}};return a.useEffect(()=>{t()},[]),e.jsxs("div",{className:"space-y-6","data-testid":"catalogue-view",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(f,{className:"size-6 text-emerald-400"}),"Ontology Catalogue"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Every ontology hosted in the running KG — browse, search, and filter by category/tag, then import a new one or export an existing one."})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(r,{variant:"outline",size:"sm",onClick:()=>{u(!0)},children:[e.jsx(O,{className:"size-4 mr-1"}),"Import / Export"]}),e.jsx(r,{variant:"outline",size:"sm",onClick:()=>{t()},disabled:o,children:e.jsx(T,{className:`size-4 ${o?"animate-spin":""}`})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-2",children:[e.jsx(n,{"aria-label":"Search",placeholder:"Search iri/version/source...",value:m,onChange:s=>{j(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&t()}}),e.jsx(n,{"aria-label":"Category",placeholder:"Category",value:g,onChange:s=>{N(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&t()}}),e.jsx(n,{"aria-label":"Tag",placeholder:"Tag",value:p,onChange:s=>{y(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&t()}})]}),e.jsx(r,{variant:"secondary",size:"sm",onClick:()=>{t()},children:"Apply filters"}),o&&l.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-muted-foreground",children:[e.jsx(C,{className:"size-8 animate-spin mb-3"}),e.jsx("p",{className:"text-sm",children:"Loading catalogue..."})]}):v?e.jsx("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:e.jsx(L,{what:"The ontology catalogue"})}):l.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center text-muted-foreground",children:[e.jsx(f,{className:"size-12 text-muted-foreground/30 mb-3"}),e.jsx("p",{className:"text-sm",children:"No hosted ontologies match these filters."})]}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:l.map(s=>e.jsxs(E,{className:"border-border/40 bg-card/60",children:[e.jsx(S,{className:"pb-2",children:e.jsx(z,{className:"text-sm font-bold truncate",title:s.iri,children:s.iri})}),e.jsxs(k,{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[e.jsxs(i,{variant:"outline",className:"text-[10px]",children:["v",s.version]}),s.active!==void 0&&e.jsx(i,{variant:s.active?"secondary":"outline",className:"text-[10px]",children:s.active?"active":"inactive"}),s.category&&e.jsx(i,{variant:"outline",className:"text-[10px]",children:s.category}),(s.tags??[]).map(h=>e.jsxs(i,{variant:"outline",className:"text-[10px]",children:["#",h]},h))]}),e.jsxs("p",{className:"text-muted-foreground",children:[s.n_classes??0," classes · ",s.n_properties??0," properties · ",s.n_axioms??0," axioms"]})]})]},`${s.iri}@${s.version}`))}),e.jsx(I,{open:b,onOpenChange:u,onImported:()=>{t()}})]})}export{A as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{v as F,r as t,j as e,aG as M,y as R,a5 as D,I as v,av as B,a9 as K,a as E,B as i,t as o,b as $}from"./index-
|
|
1
|
+
import{v as F,r as t,j as e,aG as M,y as R,a5 as D,I as v,av as B,a9 as K,a as E,B as i,t as o,b as $}from"./index-oJW-_XBm.js";import{C as u,a as b,b as C,c as k,d as j}from"./card-B8Y9xTh8.js";import{S as L}from"./scroll-area-DESuUYBV.js";import{T as H,a as O,b as G,c as A}from"./tabs-D-bKS-GJ.js";import{G as P,c as V,a as q}from"./GraphCanvas-CRjIf0Eq.js";import{R as I}from"./refresh-cw-DW_113QE.js";import"./index-5905FP-_.js";const J=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],U=F("map-pin",J),W=[{id:"find_definition",label:"Definition",icon:U,hint:"Where the symbol is defined"},{id:"find_references",label:"References",icon:R,hint:"Callers of the symbol"},{id:"trace_call_graph",label:"Call graph",icon:B,hint:"Transitive callees (downstream)"},{id:"impact_of_change",label:"Impact",icon:K,hint:"Transitive callers (blast radius)"}];function ne(){const[c,S]=t.useState(""),[d,w]=t.useState(""),[m,f]=t.useState(3),[n,_]=t.useState([]),[h,x]=t.useState(!1),[p,g]=t.useState("find_definition"),[y,a]=t.useState([]);t.useEffect(()=>{fetch("/api/enhanced/code/instances").then(s=>s.ok?s.json():{source_systems:[]}).then(s=>{a(s.source_systems??[])}).catch(()=>{a([])})},[]);const r=async s=>{if(!c.trim()){o.error("Enter a symbol name");return}g(s),x(!0);try{const l=await fetch("/api/enhanced/code/nav",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:s,symbol:c,source_system:d,depth:m})});if(!l.ok)throw new Error(await l.text());const T=await l.json(),z=T.results??[];_(z),o.success(`${T.count??z.length} result(s)`)}catch(l){o.error("Code navigation failed"),console.error(l)}finally{x(!1)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(M,{className:"size-6"})," Code Graph Navigator"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Navigate the resolved code symbol graph across your indexed GitLab instances."})]}),e.jsxs(H,{defaultValue:"navigator",children:[e.jsxs(O,{children:[e.jsxs(G,{value:"navigator",children:[e.jsx(R,{className:"size-4 mr-1.5"})," Navigator"]}),e.jsxs(G,{value:"canvas",children:[e.jsx(D,{className:"size-4 mr-1.5"})," Call Graph"]})]}),e.jsxs(A,{value:"navigator",className:"space-y-6 mt-4",children:[e.jsxs(u,{children:[e.jsxs(b,{children:[e.jsx(C,{className:"text-sm",children:"Symbol"}),e.jsx(k,{children:"Function, class, or method name — optionally scoped to one source system."})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row",children:[e.jsx(v,{placeholder:"Symbol name (e.g. NewAnalyzer)",value:c,onChange:s=>{S(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&r(p)},className:"flex-1"}),e.jsxs("select",{className:"h-9 rounded-md border bg-background px-2 text-sm",value:d,onChange:s=>{w(s.target.value)},"aria-label":"Source system",children:[e.jsx("option",{value:"",children:"All instances"}),y.map(s=>e.jsx("option",{value:s,children:s},s))]}),e.jsx(v,{type:"number",min:1,max:10,value:m,onChange:s=>{const l=Number(s.target.value);f(Number.isFinite(l)&&l>0?l:3)},className:"w-24","aria-label":"Traversal depth",title:"Depth for call graph / impact"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[W.map(s=>e.jsxs(E,{variant:p===s.id?"default":"outline",size:"sm",disabled:h,onClick:()=>{r(s.id)},title:s.hint,children:[e.jsx(s.icon,{className:"size-4 mr-1.5"}),s.label]},s.id)),h&&e.jsx(I,{className:"size-4 animate-spin self-center"})]})]})]}),e.jsxs(u,{children:[e.jsx(b,{children:e.jsxs(C,{className:"text-sm flex items-center gap-2",children:["Results ",e.jsx(i,{variant:"secondary",children:n.length}),e.jsx("span",{className:"text-xs font-normal text-muted-foreground",children:p.replace(/_/g," ")})]})}),e.jsx(j,{children:e.jsx(L,{className:"h-[480px]",children:n.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No results yet — enter a symbol and pick an action."}):e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{className:"text-left text-muted-foreground",children:e.jsxs("tr",{children:[e.jsx("th",{className:"py-1 pr-3",children:"Name"}),e.jsx("th",{className:"py-1 pr-3",children:"File"}),e.jsx("th",{className:"py-1 pr-3",children:"Line"}),e.jsx("th",{className:"py-1 pr-3",children:"Lang"}),e.jsx("th",{className:"py-1 pr-3",children:"Instance"})]})}),e.jsx("tbody",{children:n.map(s=>e.jsxs("tr",{className:"border-t",children:[e.jsx("td",{className:"py-1 pr-3 font-mono",children:s.name??"—"}),e.jsx("td",{className:"py-1 pr-3 font-mono text-xs",children:s.file_path??"—"}),e.jsx("td",{className:"py-1 pr-3",children:s.line??"—"}),e.jsx("td",{className:"py-1 pr-3",children:s.language??s.kind??"—"}),e.jsx("td",{className:"py-1 pr-3 text-xs",children:s.instance??s.source_system??"—"})]},s.id))})]})})})]})]}),e.jsx(A,{value:"canvas",className:"mt-4",children:e.jsx(X,{})})]})]})}const N=()=>{};function X(){const[c,S]=t.useState(""),[d,w]=t.useState(12),[m,f]=t.useState(!1),[n,_]=t.useState(null),[h,x]=t.useState([]),[p,g]=t.useState([]),y=async()=>{f(!0);try{const a=await $.getCodeMetrics(c.trim(),d);if(_(a),a.status!=="ok"){x([]),g([]),o.message(a.message??"No code graph found — ingest a repo or widen scope.");return}const r=q(a.graph);x(r.nodes),g(r.relationships),o.success(`${a.nodes} symbols · ${a.community_count} communities`)}catch(a){o.error("Failed to load code metrics"),console.error(a)}finally{f(!1)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(u,{children:[e.jsxs(b,{children:[e.jsx(C,{className:"text-sm",children:"Code architecture canvas"}),e.jsx(k,{children:"God nodes (size = centrality), communities (color), and cross-community bridges over the resolved code graph. Scope to a repo/path substring to focus."})]}),e.jsxs(j,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row",children:[e.jsx(v,{placeholder:"Scope substring (file path or source system) — blank = whole graph",value:c,onChange:a=>{S(a.target.value)},onKeyDown:a=>{a.key==="Enter"&&y()},className:"flex-1"}),e.jsx(v,{type:"number",min:1,max:50,value:d,onChange:a=>{const r=Number(a.target.value);w(Number.isFinite(r)&&r>0?r:12)},className:"w-24","aria-label":"Top god nodes / communities",title:"How many god nodes / communities / bridges to surface"}),e.jsxs(E,{size:"sm",disabled:m,onClick:()=>{y()},children:[m?e.jsx(I,{className:"size-4 mr-1.5 animate-spin"}):e.jsx(D,{className:"size-4 mr-1.5"}),"Render"]})]}),n?.status==="ok"&&e.jsxs("div",{className:"flex flex-wrap gap-2 text-xs",children:[e.jsxs(i,{variant:"secondary",children:[n.nodes," symbols"]}),e.jsxs(i,{variant:"secondary",children:[n.edges," edges"]}),e.jsxs(i,{variant:"secondary",children:[n.community_count," communities"]}),n.graph.truncated&&e.jsx(i,{variant:"outline",children:"render truncated"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_280px] gap-4",children:[e.jsx(u,{className:"min-h-[520px]",children:e.jsx(j,{className:"p-0 h-[520px]",children:h.length>0?e.jsx(P,{nodes:h,relationships:p,onUpdateNode:N,onDeleteNode:N,onAddNode:N,onSelectNode:N}):e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Render the code graph to see god nodes and communities."})})}),e.jsxs(u,{children:[e.jsxs(b,{children:[e.jsx(C,{className:"text-sm",children:"God nodes"}),e.jsx(k,{children:"Highest-degree hubs"})]}),e.jsx(j,{children:e.jsx(L,{className:"h-[440px]",children:n?.god_nodes.length?e.jsx("ul",{className:"space-y-1.5 text-sm",children:n.god_nodes.map(a=>e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"inline-block size-3 rounded-full shrink-0",style:{backgroundColor:V(a.community)},title:`community ${a.community??"—"}`}),e.jsx("span",{className:"font-mono truncate",title:a.file_path??void 0,children:a.label??a.id}),e.jsx(i,{variant:"outline",className:"ml-auto shrink-0",children:a.degree})]},a.id))}):e.jsx("p",{className:"text-sm text-muted-foreground",children:"No data yet."})})})]})]})]})}export{ne as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{v as u,r,t as o,as as O,j as e,E as U,a as R,I as d,bb as J,bc as W,B as A,bd as Q,aw as G,ab as I,s as c,o as X}from"./index-
|
|
1
|
+
import{v as u,r,t as o,as as O,j as e,E as U,a as R,I as d,bb as J,bc as W,B as A,bd as Q,aw as G,ab as I,s as c,o as X}from"./index-oJW-_XBm.js";import{C as m,a as p,b as x,c as h,d as g}from"./card-B8Y9xTh8.js";import{S as Y}from"./scroll-area-DESuUYBV.js";import{R as E}from"./refresh-cw-DW_113QE.js";import{S as Z}from"./save-9us-oTb8.js";import{S as ee}from"./shield-P_xYMus_.js";import{E as se}from"./eye-J1X8tfEC.js";import{S as ae}from"./sliders-vertical-VQFfrq91.js";import{C as te}from"./chevron-right-CcqMO7bs.js";const re=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],oe=u("eye-off",re);const le=[["path",{d:"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3",key:"128dxu"}],["path",{d:"m14.305 19.53.923-.382",key:"3m78fa"}],["path",{d:"m15.228 16.852-.923-.383",key:"npixar"}],["path",{d:"m16.852 15.228-.383-.923",key:"5xggr7"}],["path",{d:"m16.852 20.772-.383.924",key:"dpfhf9"}],["path",{d:"m19.148 15.228.383-.923",key:"1reyyz"}],["path",{d:"m19.53 21.696-.382-.924",key:"1goivc"}],["path",{d:"m20.772 16.852.924-.383",key:"htqkph"}],["path",{d:"m20.772 19.148.924.383",key:"9w9pjp"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}]],ne=u("folder-cog",le);const ie=[["path",{d:"M8 21s-4-3-4-9 4-9 4-9",key:"uto9ud"}],["path",{d:"M16 3s4 3 4 9-4 9-4 9",key:"4w2vsq"}],["line",{x1:"15",x2:"9",y1:"9",y2:"15",key:"f7djnv"}],["line",{x1:"9",x2:"15",y1:"9",y2:"15",key:"1shsy8"}]],ce=u("variable",ie),de=G(t=>t??{},I(c(),c().optional())),me=G(t=>t??{},X({fields:I(c(),c()).optional()}));function pe(t){return t.replace(/\s*\(CONCEPT:[^)]*\)\s*$/,"").trim()||t}function ke(){const[t,f]=r.useState({}),[K,F]=r.useState({}),[y,P]=r.useState({}),[b,j]=r.useState(!0),[N,v]=r.useState(!1),[k,C]=r.useState(!1),[w,T]=r.useState({});r.useEffect(()=>{M()},[]);const M=async()=>{try{j(!0);const[s,a]=await Promise.all([fetch("/api/enhanced/config"),fetch("/api/enhanced/config/groups").catch(()=>null)]);if(!s.ok){o.error("Failed to load active configuration");return}const l=await s.json(),D=O(de,l,"/api/enhanced/config");if(f(D),a?.ok){const L=await a.json(),H=O(me,L,"/api/enhanced/config/groups");F(H.fields??{})}}catch{o.error("Failed to connect to configuration service")}finally{j(!1)}},q=async()=>{v(!0);try{(await fetch("/api/enhanced/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok?o.success("Central config.json updated successfully"):o.error("Failed to update config.json")}catch{o.error("Network error saving configuration")}finally{v(!1)}},V=async()=>{C(!0);try{(await fetch("/api/enhanced/reload",{method:"POST"})).ok?o.success("Agent-utilities background workers reloaded"):o.error("Reload trigger failed")}catch{o.error("Network error during reload trigger")}finally{C(!1)}},i=(s,a)=>{f(l=>({...l,[s]:a}))},$=s=>{T(a=>({...a,[s]:!a[s]}))},S=[{key:"openai_api_key",label:"OpenAI API Key",placeholder:"sk-proj-..."},{key:"anthropic_api_key",label:"Anthropic API Key",placeholder:"sk-ant-..."},{key:"gemini_api_key",label:"Gemini API Key",placeholder:"AIzaSy..."},{key:"github_token",label:"GitHub Personal Access Token",placeholder:"ghp_..."}],_=[{key:"graph_timeout",label:"Knowledge Graph Request Timeout (ms)",type:"number"},{key:"log_level",label:"System Log Level Verbosity",type:"select",options:["DEBUG","INFO","WARNING","ERROR"]}],n=Object.keys(t).filter(s=>!S.some(a=>a.key===s)&&!_.some(a=>a.key===s)).reduce((s,a)=>{const l=pe(K[a]??"Other");return(s[l]??=[]).push(a),s},{}),z=Object.keys(n).sort((s,a)=>s==="Other"?1:a==="Other"?-1:n[a].length-n[s].length||s.localeCompare(a)),B=s=>{P(a=>({...a,[s]:!a[s]}))};return e.jsxs("div",{className:"space-y-6 max-w-5xl mx-auto h-[calc(100vh-12rem)] flex flex-col",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 shrink-0",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-emerald-400 via-teal-400 to-cyan-500 flex items-center gap-2",children:[e.jsx(U,{className:"size-6 text-emerald-400"}),"Configuration Dashboard"]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Manage your agent central parameters, provider API credentials, and query boundaries."})]}),e.jsxs("div",{className:"flex items-center gap-2 w-full sm:w-auto",children:[e.jsxs(R,{variant:"outline",size:"sm",onClick:()=>{V()},disabled:k,className:"border-emerald-500/20 hover:bg-emerald-500/5 text-emerald-400",children:[e.jsx(E,{className:`size-4 mr-1.5 ${k?"animate-spin":""}`}),"Reload Engine"]}),e.jsxs(R,{size:"sm",onClick:()=>{q()},disabled:N||b,className:"bg-emerald-600 hover:bg-emerald-700",children:[e.jsx(Z,{className:"size-4 mr-1.5"}),N?"Saving...":"Save Settings"]})]})]}),e.jsx(Y,{className:"flex-1 pr-4",children:b?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 gap-3",children:[e.jsx(E,{className:"size-8 text-emerald-500 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Reading config.json parameters..."})]}):e.jsxs("div",{className:"space-y-6 pb-12",children:[e.jsxs(m,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(p,{className:"pb-3 flex flex-row items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(ee,{className:"size-5"})}),e.jsxs("div",{children:[e.jsx(x,{className:"text-base font-bold",children:"API Credentials"}),e.jsx(h,{children:"Secure tokens for AI model providers and platforms."})]})]}),e.jsx(g,{className:"space-y-4",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:S.map(s=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-xs font-semibold text-muted-foreground",children:s.label}),e.jsxs("div",{className:"relative",children:[e.jsx(d,{type:w[s.key]?"text":"password",value:t[s.key]??"",placeholder:s.placeholder,onChange:a=>{i(s.key,a.target.value)},className:"bg-muted/20 pr-10 font-mono text-xs"}),e.jsx("button",{type:"button",onClick:()=>{$(s.key)},className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:w[s.key]?e.jsx(oe,{className:"size-4"}):e.jsx(se,{className:"size-4"})})]})]},s.key))})})]}),e.jsxs(m,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(p,{className:"pb-3 flex flex-row items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(ae,{className:"size-5"})}),e.jsxs("div",{children:[e.jsx(x,{className:"text-base font-bold",children:"Operational Thresholds"}),e.jsx(h,{children:"Set query timeout margins and verbosity filters."})]})]}),e.jsx(g,{className:"space-y-4",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:_.map(s=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("label",{className:"text-xs font-semibold text-muted-foreground",children:s.label}),s.type==="select"?e.jsx("select",{value:t[s.key]??"INFO",onChange:a=>{i(s.key,a.target.value)},className:"w-full h-10 px-3 rounded-md border border-input bg-muted/20 text-sm focus:outline-none focus:ring-2 focus:ring-emerald-500",children:s.options?.map(a=>e.jsx("option",{value:a,className:"bg-background text-foreground",children:a},a))}):e.jsx(d,{type:"number",value:t[s.key]??"",onChange:a=>{i(s.key,a.target.value)},className:"bg-muted/20 font-mono text-xs"})]},s.key))})})]}),z.length>0&&e.jsxs(m,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(p,{className:"pb-3 flex flex-row items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(ce,{className:"size-5"})}),e.jsxs("div",{children:[e.jsx(x,{className:"text-base font-bold",children:"Everything Else"}),e.jsx(h,{children:"Every other value your active config profile has set, grouped the same way `agent_utilities/core/config.py` organizes its ~500 settings fields."})]})]}),e.jsx(g,{className:"space-y-2",children:z.map(s=>e.jsxs(J,{open:y[s]??!1,onOpenChange:()=>{B(s)},className:"rounded-md border border-border/40",children:[e.jsx(W,{asChild:!0,children:e.jsxs("button",{type:"button",className:"flex w-full items-center justify-between gap-2 px-3 py-2 text-left hover:bg-muted/20",children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(ne,{className:"size-4 text-muted-foreground"}),s,e.jsx(A,{variant:"outline",className:"text-[10px]",children:n[s].length})]}),e.jsx(te,{className:`size-4 text-muted-foreground transition-transform ${y[s]?"rotate-90":""}`})]})}),e.jsx(Q,{className:"border-t border-border/40 p-3",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:n[s].map(a=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("label",{className:"text-xs font-semibold text-muted-foreground flex items-center gap-1.5",children:[a,e.jsx(A,{variant:"outline",className:"text-[8px] px-1 py-0.25",children:"env"})]}),e.jsx(d,{value:t[a]??"",onChange:l=>{i(a,l.target.value)},className:"bg-muted/20 font-mono text-xs"})]},a))})})]},s))})]})]})})]})}export{ke as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d,j as e,T as z,a9 as T,a as R,L as I,m as M,ac as P,B as C,t as u,af as J}from"./index-
|
|
1
|
+
import{r as d,j as e,T as z,a9 as T,a as R,L as I,m as M,ac as P,B as C,t as u,af as J}from"./index-oJW-_XBm.js";import{C as N,a as w,b,c as S,d as v}from"./card-B8Y9xTh8.js";import{S as Q}from"./scroll-area-DESuUYBV.js";import{P as _}from"./play-D6f5O0-7.js";import{T as U}from"./trash-2-DeGIbUgN.js";import{C as Y}from"./chevron-right-CcqMO7bs.js";const k="MATCH (n) RETURN n LIMIT 10",D="cypher-repl-history",E=10,B=/\b(DELETE|REMOVE|DROP|DETACH\s+DELETE|CREATE|MERGE|SET)\b/i;function V(){try{const r=window.localStorage.getItem(D);if(!r)return[];const l=JSON.parse(r);return Array.isArray(l)?l.slice(0,E):[]}catch{return[]}}function q(r){try{window.localStorage.setItem(D,JSON.stringify(r.slice(0,E)))}catch{}}function F({row:r,index:l}){const[n,x]=d.useState(!1),h=Object.keys(r),y=h.slice(0,3).map(m=>{const i=r[m],c=typeof i=="string"?i:i===null?"null":JSON.stringify(i),p=c.length>48?`${c.slice(0,48)}…`:c;return`${m}: ${p}`}).join(" · ");return e.jsxs("div",{className:"rounded border",children:[e.jsxs("button",{type:"button",onClick:()=>{x(!n)},className:"w-full flex items-center justify-between p-2 text-left text-sm hover:bg-muted/50",children:[e.jsxs("span",{className:"flex items-center gap-2 min-w-0",children:[n?e.jsx(J,{className:"size-3 shrink-0"}):e.jsx(Y,{className:"size-3 shrink-0"}),e.jsxs("span",{className:"font-mono text-xs text-muted-foreground shrink-0",children:["#",l+1]}),e.jsx("span",{className:"truncate font-mono text-xs",children:y||"(empty row)"})]}),e.jsxs(C,{variant:"outline",className:"shrink-0",children:[h.length," cols"]})]}),n&&e.jsx("pre",{className:"border-t bg-muted/30 p-2 text-xs overflow-x-auto whitespace-pre-wrap break-words",children:JSON.stringify(r,null,2)})]})}function se(){const[r,l]=d.useState(k),[n,x]=d.useState([]),[h,y]=d.useState(!1),[m,i]=d.useState([]),[c,p]=d.useState(null);d.useEffect(()=>{i(V())},[]);const H=async()=>{const s=r.trim();if(!s){u.warning("Enter a Cypher query to run.");return}const t=Date.now();y(!0),p(null);try{const a=await fetch("/api/enhanced/graph/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:s})});if(!a.ok){const O=await a.text().catch(()=>String(a.status)),g=`HTTP ${a.status}: ${O}`;p(g),x([]),f({query:s,timestamp:t,durationMs:Date.now()-t,rowCount:0,error:g}),u.error(`Cypher query failed: ${g}`);return}const o=await a.json(),j=Array.isArray(o)?o:Array.isArray(o.results)?o.results:[];x(j),f({query:s,timestamp:t,durationMs:Date.now()-t,rowCount:j.length}),j.length===0?u.info("Query returned no rows."):u.success(`Returned ${j.length} row(s).`)}catch(a){const o=String(a);p(o),x([]),f({query:s,timestamp:t,durationMs:Date.now()-t,rowCount:0,error:o}),u.error(`Cypher query failed: ${o}`)}finally{y(!1)}},f=s=>{i(t=>{const a=[s,...t].slice(0,E);return q(a),a})},A=()=>{i([]),q([]),u.success("History cleared.")},L=s=>{l(s.query)},$=B.test(r);return e.jsxs("div",{className:"space-y-6","data-testid":"cypher-repl",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(z,{className:"size-6"}),"Cypher REPL"]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Execute ad-hoc Cypher queries against the knowledge graph."})]})}),e.jsxs("div",{className:"rounded-md border border-amber-500/50 bg-amber-50/50 dark:bg-amber-500/10 p-3 flex items-start gap-2 text-sm",children:[e.jsx(T,{className:"size-4 mt-0.5 shrink-0 text-amber-600 dark:text-amber-400"}),e.jsx("p",{className:"text-muted-foreground",children:"Read-only queries recommended; destructive queries may alter the graph."})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_18rem] gap-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs(N,{children:[e.jsxs(w,{className:"flex flex-row items-center justify-between space-y-0",children:[e.jsxs("div",{children:[e.jsx(b,{children:"Query"}),e.jsxs(S,{children:["Default: ",e.jsx("span",{className:"font-mono text-xs",children:k})]})]}),e.jsxs(R,{onClick:()=>{H()},disabled:h,children:[h?e.jsx(I,{className:"size-4 mr-2 animate-spin"}):e.jsx(_,{className:"size-4 mr-2"}),"Run"]})]}),e.jsxs(v,{className:"space-y-3",children:[e.jsx(M,{"aria-label":"Cypher query",value:r,onChange:s=>{l(s.target.value)},rows:8,className:"font-mono text-sm",spellCheck:!1}),$&&e.jsxs("div",{className:"flex items-center gap-2 text-sm text-destructive",children:[e.jsx(T,{className:"size-4"}),e.jsx("span",{children:"This query appears to be destructive. Double-check before running."})]})]})]}),e.jsxs(N,{children:[e.jsxs(w,{children:[e.jsx(b,{children:"Results"}),e.jsx(S,{children:c?"Last query returned an error.":n.length===0?"No rows returned yet.":`Returned ${n.length} row(s). Click a row to expand.`})]}),e.jsx(v,{children:c?e.jsx("pre",{className:"rounded border border-destructive/50 bg-destructive/5 p-3 text-xs text-destructive whitespace-pre-wrap break-words",children:c}):n.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No results."}):e.jsx("div",{className:"space-y-2",children:n.map((s,t)=>e.jsx(F,{row:s,index:t},`row-${t}`))})})]})]}),e.jsxs(N,{className:"h-fit",children:[e.jsxs(w,{className:"flex flex-row items-center justify-between space-y-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(P,{className:"size-4"}),e.jsx(b,{className:"text-base",children:"History"})]}),e.jsx(R,{variant:"ghost",size:"sm",onClick:A,disabled:m.length===0,"aria-label":"Clear history",children:e.jsx(U,{className:"size-3"})})]}),e.jsx(v,{children:m.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No queries yet. Run a query to populate history."}):e.jsx(Q,{className:"max-h-[60vh]",children:e.jsx("div",{className:"space-y-2",children:m.map((s,t)=>e.jsxs("button",{type:"button",onClick:()=>{L(s)},className:"w-full text-left rounded border p-2 hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground mb-1",children:[e.jsx("span",{children:new Date(s.timestamp).toLocaleTimeString()}),e.jsx("span",{children:s.error?e.jsx(C,{variant:"destructive",children:"error"}):e.jsxs(C,{variant:"outline",children:[s.rowCount," rows"]})})]}),e.jsx("p",{className:"font-mono text-xs line-clamp-2 break-words",children:s.query})]},`${s.timestamp}-${t}`))})})})]})]})]})}export{se as default};
|