agent-webui 2.2.0__tar.gz → 2.3.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.3.0}/PKG-INFO +20 -15
- {agent_webui-2.2.0 → agent_webui-2.3.0}/README.md +19 -14
- agent_webui-2.2.0/agent/agent_webui/dist/assets/AdminView-BoPQbgL-.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/AdminView-BRC8dIA-.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/AgentLibraryView-CGjC7raC.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/AgentLibraryView-CjSnXvr3.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/BrokerView-vR0lvxdI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/BrokerView-FAlZwNpM.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CapabilityWorkbench-Y2CVYnpu.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/CapabilityWorkbench-BkBX-Qb4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CatalogueView-C6Vj7S8I.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/CatalogueView-DQ8B5GPo.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CodeGraphView-DeJaeSnX.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/CodeGraphView-Dxbi58dI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ConfigurationView-_zuzsaoc.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ConfigurationView-DxNUMxgs.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/CypherReplView-CQ0JowvA.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/CypherReplView-_NeSYUZt.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/DashboardView-CEVI-BO5.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/DashboardView-C0M84wz2.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/DataAnalystView-DuyC_7IO.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/DataAnalystView-CgvVVWdI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/EcosystemView-BZQzZw0o.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/EcosystemView-3sl45bq2.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ExtractionView-BNiRbb4O.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ExtractionView-D0iZXxR_.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/FilesView--qqeR2-6.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/FilesView-DNMG6fbT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/FleetView-SKJMl4dK.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/FleetView-DYJpiq9N.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GoalsView-GI5hexq-.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/GoalsView-25Ti1_CP.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GraphCanvas-DCRZaLc0.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/GraphCanvas-BO6KW87o.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/GraphView-DMuEwdYU.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/GraphView-bGUlTiCN.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ImportExportModal-BMSlKSDJ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ImportExportModal-BFrCKOb2.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/KnowledgeBaseView-MME12Rpi.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/KnowledgeBaseView-B8gwUCSQ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/KnowledgeView-Dlk8Udoq.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/KnowledgeView-DHf2S2Qe.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LLMTemplatesView-BRrLxeh-.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/LLMTemplatesView-BA3q13x6.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LearnView-DF_Zjucl.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/LearnView-Cc4Y9_R1.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/LiveDashboardsView-D8Xq4fNb.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/LiveDashboardsView-B8Pk7ejB.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/MagmaView-DXlVkthD.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/MagmaView-qqjc1Tnx.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/MemoryView-D_UZLCRW.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/MemoryView-CFZDB1qu.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObjectExplorerView-BBqerMIg.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ObjectExplorerView-u3FCcU4b.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObjectView-4kkBxzhA.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ObjectView-CZv6uCgh.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ObservabilityView-CyQjjdV3.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ObservabilityView-CTtHYnqT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/OpsPanelView-BYs3EYhg.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/OpsPanelView-BqpnBl4L.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/PromptsView-BaIvihki.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/PromptsView-B5FT3Lsr.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SDDView-CmY6_loH.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SDDView-D13_YPL4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SchedulingView-BIYIXmhD.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SchedulingView-BTGEvZF8.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SchemaView-DFLXzBzI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SchemaView-1PLw_SJn.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SessionExpiredNotice-BuEU0kEv.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SessionExpiredNotice-B18hU-AV.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SessionsView-C7Peouw0.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SessionsView-CRw17rNg.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SkillsView-DHgt0J4F.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SkillsView-wPUC2q8e.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SparqlView-DGYuVnlI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SparqlView-D1SP5oPR.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/SystemStatusView-De0q3UI5.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/SystemStatusView-DQ8-zoMT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/TemporalGraphView-BioupZo9.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/TemporalGraphView-BMFqqKIS.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/UsageView-DhiU3aZI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/UsageView-Ced4xJPO.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/VertexView-DzfCLEk3.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/VertexView-C7vS4c1B.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/VizDemoView-DH_wV8ee.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/VizDemoView-B9tpgUbi.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/WorkflowEditorView-CZDweAjr.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/WorkflowEditorView-WEiBzV08.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/WorkspaceIDEView-e2SoQH5v.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/WorkspaceIDEView-BY7M-DVl.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/abnfDiagram-VRR7QNED-3TEv1zsc.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/abnfDiagram-VRR7QNED-ESchVjTE.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/arc-GJ_Vi1QI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/arc-iuBdeXIH.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/architectureDiagram-ZJ3FMSHR-GMBWd-VO.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/architectureDiagram-ZJ3FMSHR-Dv-d0XaU.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/blockDiagram-677ZJIJ3-pjA0Y0-8.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/blockDiagram-677ZJIJ3-Bu7u3pBI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/c4Diagram-LMCZKHZV-BcoB9t6Q.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/c4Diagram-LMCZKHZV-DJGr45L-.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/card-jA_uRyRo.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/card-CnUxt1R2.js +1 -1
- agent_webui-2.3.0/agent/agent_webui/dist/assets/channel-B60NI3bx.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chevron-left-DbMjdPv6.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chevron-left-BDRE3evd.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chevron-right-DxomHGl9.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chevron-right-C-XOXBAW.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-2Q5K7J3B-CqPW6Rdz.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-2Q5K7J3B-AmmbmxjS.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-32BRIVSS--I6oESLC.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-32BRIVSS-mdpwI3mx.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-5VM5RSS4-B6fUpg4Y.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-5VM5RSS4-Bp2u6tAu.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-EX3LRPZG-BFMjpYVq.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-EX3LRPZG-DKUf1Tje.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-JWPE2WC7-79AlCAVu.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-JWPE2WC7-Bs0znsUp.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-MOJQB5TN-DlsoJRZ4.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-MOJQB5TN-y8o-qZRB.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-RYQCIY6F-E6KibJz4.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-RYQCIY6F-WQ-caPSp.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-V7JOEXUC-BuVZTkjM.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-V7JOEXUC-BVf3zXcl.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-VR4S4FIN-YOxEBC9s.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-VR4S4FIN-BUHa-tML.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/chunk-XXDRQBXY-vL6oqeFy.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/chunk-XXDRQBXY-Bek5x4iU.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/circle-alert-CPLBudeH.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/circle-alert-4VchbwJH.js +1 -1
- agent_webui-2.3.0/agent/agent_webui/dist/assets/classDiagram-OUVF2IWQ-FFlFXRh5.js +1 -0
- agent_webui-2.3.0/agent/agent_webui/dist/assets/classDiagram-v2-EOCWNBFH-FFlFXRh5.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/code-block-IT6T5CEO-CDKiy4tN.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/code-block-IT6T5CEO-BeXhOVal.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cose-bilkent-JH36ORCC-HZMFN04k.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/cose-bilkent-JH36ORCC-OPbajNjL.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cynefin-VYW2F7L2-BekMfbT7.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/cynefin-VYW2F7L2-t22TeX6F.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/cynefinDiagram-TSTJHNR4-D6aroQKr.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/cynefinDiagram-TSTJHNR4-DFMuIx2E.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/dagre-VKFMJZFB-D8qo4zpo.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/dagre-VKFMJZFB-DkgTNgWJ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-FQU43EPY-Fuc4aNv0.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/diagram-FQU43EPY-VfxI7YEA.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-G47NLZAW-N0UdMXoP.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/diagram-G47NLZAW-BvmMVZbM.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-NH7WQ7WH-BhJhvkhN.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/diagram-NH7WQ7WH--MiDr2q4.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-OA4YK3LP-DJRxh-8V.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/diagram-OA4YK3LP-pp2fCKqK.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/diagram-WEI45ONY-DCsIsNLl.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/diagram-WEI45ONY-Cgijhl1K.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ebnfDiagram-CCIWWBDH-BSCnchkI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ebnfDiagram-CCIWWBDH-Cs63t4l8.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/erDiagram-Q63AITRT-WwX18LRl.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/erDiagram-Q63AITRT-CYa42zO7.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/external-link-YPQMSrZp.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/external-link-By_CytLQ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/eye-DKU_Vxqu.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/eye-afzYNM7j.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/file-text-0-ZYk3PT.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/file-text-BSAphrwj.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/flowDiagram-23GEKE2U-B6zzZZMZ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/flowDiagram-23GEKE2U-CUP-dKRZ.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/folder-open-h3hDBh4O.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/folder-open-DFANazmI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ganttDiagram-NO4QXBWP-D0RtDz18.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ganttDiagram-NO4QXBWP-C6TtXsGU.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/gateway-C8WFquVE.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/gateway-BnVKZh3I.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/git-fork-B0gGRpXI.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/git-fork-RpZe5ejU.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/gitGraphDiagram-IHSO6WYX-D3NlU05q.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/gitGraphDiagram-IHSO6WYX-CnVTpgnM.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/hard-drive-NUWTCMBa.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/hard-drive-DQIf2Zu1.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/index-BcmMgPFv.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/index-CYdBHcEe.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/index-3scWiDq2.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/index-CeCvwMfU.js +98 -98
- agent_webui-2.2.0/agent/agent_webui/dist/assets/infoDiagram-FWYZ7A6U-B-zirRQA.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/infoDiagram-FWYZ7A6U-DmC8vbf_.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/ishikawaDiagram-FXEZZL3T-D8q0QUEo.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/ishikawaDiagram-FXEZZL3T-B0z8zidM.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/journeyDiagram-5HDEW3XC-Ct8z5Tfv.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/journeyDiagram-5HDEW3XC-C1Ur303r.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/kanban-definition-HUTT4EX6-DNwtWpKz.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/kanban-definition-HUTT4EX6-Dwmj6dTF.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/layers-aPODrU0l.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/layers-EmV_krPI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/layout-grid-DtHbnzSQ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/layout-grid-DDgqUr2z.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/link-2-B2qYw4JB.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/link-2-DPvQKFAT.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/mermaid.core-DKdh7Zm3.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/mermaid.core-DtME1QEL.js +5 -5
- agent_webui-2.2.0/agent/agent_webui/dist/assets/mindmap-definition-LN4V7U3C-DDU8prGg.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/mindmap-definition-LN4V7U3C-CLwvylAR.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/pegDiagram-2B236MQR-C4QIRbO3.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/pegDiagram-2B236MQR-BdKwYDyf.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/pieDiagram-ENE6RG2P-1SnqMuF5.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/pieDiagram-ENE6RG2P-Du0gCboG.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/play-BPB0BcIT.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/play-CibH7bIK.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/plus-Brq5VcI1.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/plus-D0LoS734.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/quadrantDiagram-ABIIQ3AL-Cfyw_s6s.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/quadrantDiagram-ABIIQ3AL-DbklmtrI.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/railroadDiagram-RFXS5EU6-DK49Lnoj.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/railroadDiagram-RFXS5EU6-Bfy0cYet.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/refresh-cw-s6crI3ZZ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/refresh-cw-BgiUT__R.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/requirementDiagram-TGXJPOKE-v1mZ5FHi.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/requirementDiagram-TGXJPOKE-C0235SWr.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sankeyDiagram-HTMAVEWB-lHuuywyR.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/sankeyDiagram-HTMAVEWB-CPMk2d39.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/save-74UDVfFR.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/save-CtkCMTJ5.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/scroll-area-DQ8wpa4y.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/scroll-area-BW2dl8V6.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/separator-B8MH7879.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/separator-KG9WqQea.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sequenceDiagram-DBY2YBRQ-Cr_oZUPF.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/sequenceDiagram-DBY2YBRQ-B9Ay6bpl.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/server-CBht6nOR.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/server-DgnPOsGe.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/shield-BR-971Wy.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/shield-DhOvP8qH.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sizeCapture-X5ZJPWSS-CrE7CuZ_.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/sizeCapture-X5ZJPWSS-BV6_YPUf.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/slider-BfRr_Tq4.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/slider-Dv4iFU6G.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/sliders-vertical-lF2NtKX3.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/sliders-vertical-CM1UVAe6.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/stateDiagram-2N3HPSRC-BZZOM04a.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/stateDiagram-2N3HPSRC-CU_w1uxV.js +1 -1
- agent_webui-2.3.0/agent/agent_webui/dist/assets/stateDiagram-v2-6OUMAXLB-DiEBgGMU.js +1 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/swimlanes-5IMT3BWC-CU05g8Np.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/swimlanes-5IMT3BWC-DkkusImo.js +2 -2
- agent_webui-2.3.0/agent/agent_webui/dist/assets/swimlanesDiagram-G3AALYLV-Ck_Wh2KN.js +8 -0
- agent_webui-2.2.0/agent/agent_webui/dist/assets/tabs-EB-_lbXY.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/tabs-CRRvF5P0.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/timeline-definition-FHXFAJF6-C3uNZaAQ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/timeline-definition-FHXFAJF6-DoY5gxFw.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/trash-2-DbeLRKY6.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/trash-2-yZtTAi3L.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/upload-CGgEKIDN.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/upload-CeP5851i.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/useMutation-DveurLYM.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/useMutation-BnD6FYPx.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/users-D5E5Tsnq.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/users-8JDnnQYN.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/vennDiagram-L72KCM5P-CxKKCC7j.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/vennDiagram-L72KCM5P-BoVem2VA.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/wardleyDiagram-EHGQE667-DlhPQHCp.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/wardleyDiagram-EHGQE667-DTttuHu8.js +1 -1
- agent_webui-2.2.0/agent/agent_webui/dist/assets/xychartDiagram-FW5EYKEG-DqYg6bWZ.js → agent_webui-2.3.0/agent/agent_webui/dist/assets/xychartDiagram-FW5EYKEG-D5omCoC7.js +1 -1
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/index.html +1 -1
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/server.py +1 -1
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/PKG-INFO +20 -15
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/SOURCES.txt +130 -130
- {agent_webui-2.2.0 → agent_webui-2.3.0}/pyproject.toml +1 -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.3.0}/LICENSE +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__init__.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/conftest.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_agent_library_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_api_extensions.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_canonical_gateway_mount.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_engine_construction_wiring.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_files_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_graph_identity.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_graph_kb_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_identity_middleware_boundary.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_integration.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_mcp_delegation_routes.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_mcp_server_inventory.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_observability.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_oidc_session.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_ontology_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_parity_contract.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_pydantic_ai_compat.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_rbac.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_security_boundaries.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_skill_kg_classification.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_workflow_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_workspace_helpers_chokepoint.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/__tests__/test_ws_dashboard_denial_diagnostics.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/api_extensions.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/apple-touch-icon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/WorkflowEditorView-BnuhLJ6X.css +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/abap-BdImnpbu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/actionscript-3-CoDkCxhg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ada-bCR0ucgS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/andromeeda-C4gqWexZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/angular-html-CU67Zn6k.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/angular-ts-BwZT4LLn.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/apache-Pmp26Uib.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/apex-D8_7TLub.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/apl-dKokRX4l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/applescript-Co6uUVPk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ara-BRHolxvo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/asciidoc-Ve4PFQV2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/asm-D_Q5rh1f.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/astro-CbQHKStN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/aurora-x-D-2ljcwZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/awk-DMzUqQB5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ayu-dark-DYE7WIF3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ayu-light-BA47KaF1.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ayu-mirage-32ctXXKs.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ballerina-BFfxhgS-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/bat-BkioyH1T.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/beancount-k_qm7-4y.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/berry-uYugtg8r.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/bibtex-CHM0blh-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/bicep-Bmn6On1c.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/bird2-DPOp833l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/blade-D4QpJJKB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/bsl-BO_Y6i37.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/c-BIGW1oBm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/c3-eo99z4R2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cadence-Bv_4Rxtq.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cairo-KRGpt6FW.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/clarity-D53aC0YG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/clojure-P80f7IUj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cmake-D1j8_8rp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cobol-nwyudZeR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/codeowners-Bp6g37R7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/codeql-DsOJ9woJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/coffee-Ch7k5sss.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/common-lisp-Cg-RD9OK.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/coq-DkFqJrB1.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cpp-CofmeUqb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/crystal-tKQVLTB8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/csharp-COcwbKMJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/css-DPfMkruS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/csv-fuZLfV_i.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cue-D82EKSYY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cypher-COkxafJQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/cytoscape.esm-D3_iZ_3b.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/d-85-TOEBH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dark-plus-C3mMm8J8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dart-CF10PKvl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dax-CEL-wOlO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/defaultLocale-DX6XiGOO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/desktop-BmXAJ9_W.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/diff-D97Zzqfu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/docker-BcOcwvcX.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dotenv-Da5cRb03.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dracula-BzJJZx-M.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dracula-soft-BXkSAIEj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/dream-maker-BtqSS_iP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/edge-BkV0erSs.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/elixir-CDX3lj18.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/elm-DbKCFpqz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/emacs-lisp-C9XAeP06.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/erb-B12qg9BL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/erlang-DsQrWhSR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/everforest-dark-BgDCqdQA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/everforest-light-C8M2exoo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fennel-BYunw83y.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fish-BvzEVeQv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fluent-C4IJs8-o.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fortran-free-form-BxgE0vQu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/fsharp-CXgrBDvD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gdresource-BOOCDP_w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gdscript-C5YyOfLZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gdshader-DkwncUOv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/genie-D0YGMca9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gherkin-DyxjwDmM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/git-commit-F4YmCXRG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/git-rebase-r7XF79zn.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-dark-DHJKELXO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-dark-default-Cuk6v7N8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-light-DAi9KRSo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-light-default-D7oLnXFd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gleam-BspZqrRM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/glimmer-js-Rg0-pVw9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/glimmer-ts-U6CK756n.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/glsl-DplSGwfg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gn-n2N0HUVH.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gnuplot-DdkO51Og.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/go-CxLEBnE3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/graph-DOmOIIwC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/graphql-ChdNCCLP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/groovy-gcz8RCvz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hack-CaT9iCJl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/haml-B8DHNrY2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/handlebars-BL8al0AC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/haskell-Df6bDoY_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/haxe-CzTSHFRz.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hcl-BWvSN4gD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hjson-D5-asLiD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hlsl-D3lLCCz7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/horizon-BUw7H-hv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/horizon-bright-Cn-bp-IR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/houston-DnULxvSX.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/html-GMplVEZG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/html-derivative-BFtXZ54Q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/http-jrhK8wxY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hurl-irOxFIW8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hxml-Bvhsp5Yf.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/hy-DFXneXwc.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/imba-DGztddWO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/index-gYfOaG28.css +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ini-BEwlwnbL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/init-Gi6I4Gst.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/java-CylS5w8V.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/javascript-wDzz0qaB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jinja-4LBKfQ-Z.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jison-wvAkD_A8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/json-Cp-IABpG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/json5-C9tS-k6U.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jsonc-Des-eS-w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jsonl-DcaNXYhu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jsonnet-DFQXde-d.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jssm-C2t-YnRu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/jsx-g9-lgVsj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/julia-CxzCAyBv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/just-Cw27pwNe.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kanagawa-wave-DWedfzmr.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/katex-DLVrwanO.css +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kdl-DV7GczEv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kotlin-BdnUsdx6.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/kusto-DZf3V79B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/laserwave-DUszq2jm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/latex-CWtU0Tv5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/layout-D-LzfAck.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/lean-BZvkOJ9d.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/less-B1dDrJ26.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/light-plus-B7mTdjB0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/linear-D1g5s_fh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/liquid-DYVedYrR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/llvm-DjAJT7YJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/log-2UxHyX5q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/logo-BtOb2qkB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/lua-BaeVxFsk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/luau-C-HG3fhB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/make-CHLpvVh8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/map-DxJ2ADlA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/markdown-Cvjx9yec.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/marko-CnJfTvn9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/material-theme-D5KoaKCx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/material-theme-darker-BfHTSMKl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/material-theme-ocean-CyktbL80.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/matlab-D7o27uSR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/mdc-BMNejdWA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/mdx-Cmh6b_Ma.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/mermaid-mWjccvbQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/min-dark-CafNBF8u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/min-light-CTRr51gU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/mipsasm-CKIfxQSi.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/mojo-rZm6bMo-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/monokai-D4h5O-jR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/moonbit-_H4v1dQx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/move-IF9eRakj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/narrat-DRg8JJMk.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nextflow-Zz6hmt5N.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nginx-BpAMiNFr.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/night-owl-C39BiMTA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/night-owl-light-CMTm3GFP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nim-CVrawwO9.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nix-CwoSXNpI.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nord-Ddv68eIx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/nushell-Cz2AlsmD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/objective-c-DXmwc3jG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/objective-cpp-CLxacb5B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ocaml-C0hk2d4L.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/odin-BBf5iR-q.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/one-light-C3Wv6jpd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/openscad-C4EeE6gA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ordinal-Cboi1Yqb.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/pascal-D93ZcfNL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/perl-C0TMdlhV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/php-Dhbhpdrm.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/pkl-u5AG7uiY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/plastic-3e1v2bzS.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/plsql-ChMvpjG-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/po-BTJTHyun.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/poimandres-CS3Unz2-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/polar-C0HS_06l.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/postcss-CXtECtnM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/powerquery-CEu0bR-o.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/powershell-Dpen1YoG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/prisma-Dd19v3D-.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/prolog-CbFg5uaA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/proto-C7zT0LnQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/pug-CGlum2m_.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/puppet-BMWR74SV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/purescript-CklMAg4u.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/python-B6aJPvgy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/qml-3beO22l8.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/qmldir-C8lEn-DE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/qss-IeuSbFQv.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/r-Dspwwk_N.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/racket-BqYA7rlc.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/raku-DXvB9xmW.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/razor-Uh8Bk_45.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/red-bN70gL4F.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/reg-C-SQnVFl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/regexp-CDVJQ6XC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rel-C3B-1QV4.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/riscv-BM1_JUlF.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ron-D8l8udqQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rose-pine-qdsjHGoJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rosmsg-BJDFO7_C.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rst-BrH8l1NY.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ruby-Dw2BHqvy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/rust-B1yitclQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/sas-cz2c8ADy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/sass-Cj5Yp3dK.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/scala-C151Ov-r.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/scheme-C98Dy4si.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/scss-OYdSNvt2.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/sdbl-DVxCFoDh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/shaderlab-Dg9Lc6iA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/shellscript-Yzrsuije.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/shellsession-BADoaaVG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/slack-dark-BthQWCQV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/slack-ochin-DqwNpetd.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/smalltalk-BERRCDM3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/snazzy-light-Bw305WKR.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/solarized-dark-DXbdFlpD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/solarized-light-L9t79GZl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/solidity-rGO070M0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/soy-Brmx7dQM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/sparql-rVzFXLq3.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/splunk-BtCnVYZw.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/sql-BLtJtn59.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ssh-config-_ykCGR6B.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/stata-BH5u7GGu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/stylus-BEDo0Tqx.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/surrealql-Bq5Q-fJD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/svelte-C_ipcX3V.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/swift-D82vCrfD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/synthwave-84-CbfX1IO0.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/system-verilog-CnnmHF94.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/systemd-4A_iFExJ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/talonscript-CkByrt1z.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tasl-QIJgUcNo.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tcl-dwOrl1Do.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/templ-P3uqSqPl.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/terraform-BETggiCN.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tex-idrVyKtj.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tokyo-night-hegEt444.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/toml-vGWfd6FD.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/transform-CpIVI4vC.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/ts-tags-zn1MmPIZ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tsv-B_m7g4N7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/tsx-COt5Ahok.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/turtle-BsS91CYL.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/twig-DNn4PbVi.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/typescript-BPQ3VLAy.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/typespec-BGHnOYBU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/typst-DHCkPAjA.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/v-BcVCzyr7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/v4-Dnyct6Ft.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vala-CsfeWuGM.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/value-DIujSiJ7.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vb-D17OF-Vu.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/verilog-BQ8w6xss.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vesper-DU1UobuO.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vhdl-CeAyd5Ju.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/viml-CJc9bBzg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vitesse-black-Bkuqu6BP.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vitesse-dark-D0r3Knsf.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vitesse-light-CVO1_9PV.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vue-DN_0RTcg.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vue-html-AaS7Mt5G.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vue-vine-CQOfvN7w.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/vyper-CDx5xZoG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wasm-CG6Dc4jp.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wasm-MzD3tlZU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wenyan-BV7otONQ.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wgsl-Dx-B1_4e.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wikitext-BhOHFoWU.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wit-5i3qLPDT.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/wolfram-lXgVvXCa.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/xml-sdJ4AIDG.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/xsl-CtQFsRM5.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/yaml-Buea-lGh.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/zenscript-DVFEvuxE.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/assets/zig-VOosw3JB.js +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/favicon.ico +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/favicon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/dist/favicon.svg +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/graph_identity.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/icon.png +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/observability.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/oidc_session.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/orchestrator_model.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/rbac.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/__init__.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-admin/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-dashboards/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-extraction/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-graphviz/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-ontology-operator/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui/skills/kg-webui-swe/SKILL.md +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/dependency_links.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/entry_points.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/requires.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/agent/agent_webui.egg-info/top_level.txt +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/setup.cfg +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/tests/test_destubbed_endpoints.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/tests/test_graph_visualization.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/tests/test_init.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.0}/tests/test_privacy_boundaries.py +0 -0
- {agent_webui-2.2.0 → agent_webui-2.3.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.3.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.3.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.3.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
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{v as z,o as C,ab as I,q as E,s as v,l as M,_ as q,p as A,r as i,j as e,aS as V,a as y,a5 as U,B as l,D as F,av as O,L as k,P as K,d as G,a7 as H,H as X,aA as J}from"./index-3scWiDq2.js";import{T as Q,a as W,b as S,c as T}from"./tabs-EB-_lbXY.js";import{C as c,a as f,b as g,c as b,d}from"./card-jA_uRyRo.js";import{b as R,g as $,c as Y}from"./gateway-C8WFquVE.js";import{R as _}from"./refresh-cw-s6crI3ZZ.js";import{L as Z}from"./layers-aPODrU0l.js";import{S as ee}from"./server-CBht6nOR.js";const se=[["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"}]],ae=z("archive",se);const te=[["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"}]],ne=z("database-backup",te);const le=[["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"}]],re=z("key-round",le);const ie=[["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"}]],L=z("user-cog",ie),ce=C({endpoint:v(),local:A(),reachable:A().optional(),breaker:v().optional()}),de=C({mode:q(["single","sharded"]),default_graph:v().optional(),endpoints:M(ce)});function D(){return R("/dashboard/daemon/shards",de)}function oe(){return R("/dashboard/daemon/status")}const me=C({total_nodes:E(),total_relationships:E(),by_type:I(v(),E())}),xe=C({source_systems:M(v())});function he(){return R("/enhanced/graph/stats",me)}function ue(){return R("/enhanced/code/instances",xe)}function pe(){return $("/configure",{action:"rbac_list"})}function je(){return $("/configure",{action:"backup_status"})}function fe(){return Y("/graph/configure",{action:"backup_create"})}function P(a){return a===void 0?"-":a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}k`:String(a)}function ge(){const[a,m]=i.useState(null),[r,j]=i.useState(null),[h,N]=i.useState([]),[u,p]=i.useState(!1),x=async()=>{p(!0);const[t,w,B]=await Promise.all([he(),D(),ue()]);m(t.ok?t.data:null),j(w.ok?w.data:null),N(B.ok&&B.data?B.data.source_systems:[]),p(!1)};i.useEffect(()=>{x()},[]);const o=r?.default_graph??"__commons__",s=r?.endpoints??[],n=a?.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(V,{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(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:u,children:[e.jsx(_,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(U,{className:"size-4"}),e.jsx("span",{className:"font-mono",children:o}),e.jsx(l,{variant:"secondary",children:"active"})]}),e.jsx(b,{children:"The active graph tenant served by this backend."})]}),e.jsxs(d,{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:P(a?.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:P(a?.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:s.length?`${String(s.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(F,{className:"size-3.5"}),"Counts by type"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Object.entries(n).map(([t,w])=>e.jsxs(l,{variant:"outline",className:"gap-1",children:[t,e.jsx("span",{className:"text-muted-foreground",children:P(w)})]},t))})]}),s.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:s.map(t=>e.jsxs(l,{variant:t.reachable?"default":"destructive",className:"font-mono text-xs gap-1",children:[t.endpoint,t.local&&e.jsx("span",{className:"opacity-70",children:"· local"})]},t.endpoint))})]})]})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(O,{className:"size-4"}),"Indexed source tenants"]}),e.jsx(b,{children:"Ingested source-systems that carry code in the graph."})]}),e.jsx(d,{children:u?e.jsx(k,{className:"size-4 animate-spin text-muted-foreground"}):h.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:h.map(t=>e.jsx(l,{variant:"secondary",className:"font-mono text-xs",children:t},t))})})]}),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 Ne(a){if(!a)return"outline";const m=a.toLowerCase();return m==="closed"?"default":m==="open"?"destructive":"secondary"}function be(){const[a,m]=i.useState(null),[r,j]=i.useState(null),[h,N]=i.useState(!1),[u,p]=i.useState(!1),x=async()=>{p(!0);const[n,t]=await Promise.all([D(),oe()]);N(n.unavailable),m(n.ok?n.data:null),j(t.ok?t.data:null),p(!1)};i.useEffect(()=>{x()},[]);const o=a?.endpoints??[],s=o.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(Z,{className:"size-5"}),"Shard Topology",a&&e.jsx(l,{variant:"secondary",className:"uppercase",children:a.mode})]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"K-way writer layout, per-shard reachability and circuit-breaker state."})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:u,children:[e.jsx(_,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),h?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."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(c,{children:e.jsxs(d,{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:a?.mode??"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Shards"}),e.jsx("p",{className:"text-2xl font-bold",children:o.length||"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Reachable"}),e.jsx("p",{className:"text-2xl font-bold",children:o.length?`${String(s)}/${String(o.length)}`:"-"})]})}),e.jsx(c,{children:e.jsxs(d,{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:a?.default_graph??"-"})]})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Shards"}),e.jsx(b,{children:"Each configured engine endpoint and its live health."})]}),e.jsx(d,{children:o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No shard endpoints reported."}):e.jsx("div",{className:"space-y-2",children:o.map((n,t)=>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(ee,{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 #",t," ",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:Ne(n.breaker),className:"font-mono text-xs",children:n.breaker}),n.reachable?e.jsxs(l,{variant:"default",className:"gap-1",children:[e.jsx(K,{className:"size-3"}),"up"]}):e.jsxs(l,{variant:"destructive",className:"gap-1",children:[e.jsx(G,{className:"size-3"}),"down"]})]})]},n.endpoint))})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Daemon"}),e.jsx(b,{children:"The consolidated KG background daemon that hosts the local shard."})]}),e.jsx(d,{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(k,{className:"size-3 animate-spin"}):e.jsx(G,{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 ve(){const[a,m]=i.useState(null),[r,j]=i.useState(!1),[h,N]=i.useState(!1),u=async()=>{N(!0);const s=await pe();j(!s.ok),m(s.ok?s.data:null),N(!1)};i.useEffect(()=>{u()},[]);const p=a?.roles??[],x=a?.grants??[],o=a?.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(H,{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(y,{variant:"outline",size:"sm",onClick:()=>{u()},disabled:h,children:[e.jsx(_,{className:h?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),h?e.jsx(k,{className:"size-5 animate-spin text-muted-foreground"}):r?e.jsxs(c,{className:"border-dashed",children:[e.jsxs(f,{children:[e.jsxs(g,{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(b,{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(d,{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(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(L,{className:"size-4"}),"Roles",e.jsx(l,{variant:"secondary",children:p.length})]})}),e.jsx(d,{className:"space-y-2",children:p.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No roles."}):p.map(s=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-medium font-mono",children:s.name}),s.description&&e.jsx("p",{className:"text-xs text-muted-foreground",children:s.description})]},s.name))})]}),e.jsxs(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(re,{className:"size-4"}),"Grants",e.jsx(l,{variant:"secondary",children:x.length})]})}),e.jsx(d,{className:"space-y-2",children:x.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No grants."}):x.map((s,n)=>e.jsxs("div",{className:"rounded border p-2 text-xs font-mono",children:[e.jsx("span",{className:"font-medium",children:s.role})," → ",s.action??"*"," on ",s.resource??"*",s.effect&&e.jsx(l,{variant:"outline",className:"ml-2",children:s.effect})]},`${s.role}-${String(n)}`))})]}),e.jsxs(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(L,{className:"size-4"}),"Agent identities",e.jsx(l,{variant:"secondary",children:o.length})]})}),e.jsx(d,{className:"space-y-2",children:o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No identities."}):o.map(s=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-mono",children:s.id}),s.roles&&s.roles.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:s.roles.map(n=>e.jsx(l,{variant:"outline",className:"text-xs",children:n},n))})]},s.id))})]})]})})]})}function ye(a){if(a===void 0)return"-";const m=["B","KB","MB","GB","TB"];let r=a,j=0;for(;r>=1024&&j<m.length-1;)r/=1024,j++;return`${r.toFixed(1)} ${m[j]}`}function ke(){const[a,m]=i.useState(null),[r,j]=i.useState(!1),[h,N]=i.useState(!1),[u,p]=i.useState(!1),x=async()=>{N(!0);const t=await je();j(!t.ok),m(t.ok?t.data:null),N(!1)};i.useEffect(()=>{x()},[]);const o=async()=>{p(!0),await fe(),await x(),p(!1)},s=a?.backups??[],n=!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(ne,{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(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:h,children:[e.jsx(_,{className:h?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]}),e.jsxs(y,{size:"sm",onClick:()=>{o()},disabled:!n||u,title:n?"Trigger an online backup":"Backup REST twin not wired yet",children:[u?e.jsx(k,{className:"size-4 animate-spin"}):e.jsx(ae,{className:"size-4"}),e.jsx("span",{className:"ml-2",children:"Trigger backup"})]})]})]}),h?e.jsx(k,{className:"size-5 animate-spin text-muted-foreground"}):n?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Snapshots"}),e.jsx("p",{className:"text-2xl font-bold",children:s.length})]})}),e.jsx(c,{children:e.jsxs(d,{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:a?.last_backup_at??"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[e.jsx(X,{className:"size-3.5"}),"PITR window"]}),e.jsxs("p",{className:"text-xs font-mono",children:[a?.pitr_window?.earliest??"-"," → ",a?.pitr_window?.latest??"-"]})]})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Snapshots"}),e.jsx(b,{children:"Retained backups available for point-in-time restore."})]}),e.jsx(d,{children:s.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No snapshots yet."}):e.jsx("div",{className:"space-y-2",children:s.map(t=>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:t.id}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.created_at??"-"," ",t.shard?`· ${t.shard}`:""," ",t.lsn?`· LSN ${t.lsn}`:""]})]}),e.jsx(l,{variant:"secondary",children:ye(t.size_bytes)})]},t.id))})})]})]}):e.jsxs(c,{className:"border-dashed",children:[e.jsxs(f,{children:[e.jsxs(g,{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(b,{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(d,{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 Be(){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(J,{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(Q,{defaultValue:"tenants",children:[e.jsxs(W,{children:[e.jsx(S,{value:"tenants",children:"Tenants"}),e.jsx(S,{value:"shards",children:"Shards"}),e.jsx(S,{value:"rbac",children:"RBAC"}),e.jsx(S,{value:"backup",children:"Backup / PITR"})]}),e.jsx(T,{value:"tenants",className:"mt-4",children:e.jsx(ge,{})}),e.jsx(T,{value:"shards",className:"mt-4",children:e.jsx(be,{})}),e.jsx(T,{value:"rbac",className:"mt-4",children:e.jsx(ve,{})}),e.jsx(T,{value:"backup",className:"mt-4",children:e.jsx(ke,{})})]})]})}export{Be as default};
|
|
1
|
+
import{v as z,o as C,ab as I,q as E,s as v,l as M,_ as q,p as A,r as i,j as e,aS as V,a as y,a5 as U,B as l,D as F,av as O,L as k,P as K,d as G,a7 as H,H as X,aA as J}from"./index-CeCvwMfU.js";import{T as Q,a as W,b as S,c as T}from"./tabs-CRRvF5P0.js";import{C as c,a as f,b as g,c as b,d}from"./card-CnUxt1R2.js";import{b as R,g as $,c as Y}from"./gateway-BnVKZh3I.js";import{R as _}from"./refresh-cw-BgiUT__R.js";import{L as Z}from"./layers-EmV_krPI.js";import{S as ee}from"./server-DgnPOsGe.js";const se=[["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"}]],ae=z("archive",se);const te=[["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"}]],ne=z("database-backup",te);const le=[["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"}]],re=z("key-round",le);const ie=[["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"}]],L=z("user-cog",ie),ce=C({endpoint:v(),local:A(),reachable:A().optional(),breaker:v().optional()}),de=C({mode:q(["single","sharded"]),default_graph:v().optional(),endpoints:M(ce)});function D(){return R("/dashboard/daemon/shards",de)}function oe(){return R("/dashboard/daemon/status")}const me=C({total_nodes:E(),total_relationships:E(),by_type:I(v(),E())}),xe=C({source_systems:M(v())});function he(){return R("/enhanced/graph/stats",me)}function ue(){return R("/enhanced/code/instances",xe)}function pe(){return $("/configure",{action:"rbac_list"})}function je(){return $("/configure",{action:"backup_status"})}function fe(){return Y("/graph/configure",{action:"backup_create"})}function P(a){return a===void 0?"-":a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}k`:String(a)}function ge(){const[a,m]=i.useState(null),[r,j]=i.useState(null),[h,N]=i.useState([]),[u,p]=i.useState(!1),x=async()=>{p(!0);const[t,w,B]=await Promise.all([he(),D(),ue()]);m(t.ok?t.data:null),j(w.ok?w.data:null),N(B.ok&&B.data?B.data.source_systems:[]),p(!1)};i.useEffect(()=>{x()},[]);const o=r?.default_graph??"__commons__",s=r?.endpoints??[],n=a?.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(V,{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(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:u,children:[e.jsx(_,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(U,{className:"size-4"}),e.jsx("span",{className:"font-mono",children:o}),e.jsx(l,{variant:"secondary",children:"active"})]}),e.jsx(b,{children:"The active graph tenant served by this backend."})]}),e.jsxs(d,{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:P(a?.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:P(a?.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:s.length?`${String(s.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(F,{className:"size-3.5"}),"Counts by type"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Object.entries(n).map(([t,w])=>e.jsxs(l,{variant:"outline",className:"gap-1",children:[t,e.jsx("span",{className:"text-muted-foreground",children:P(w)})]},t))})]}),s.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:s.map(t=>e.jsxs(l,{variant:t.reachable?"default":"destructive",className:"font-mono text-xs gap-1",children:[t.endpoint,t.local&&e.jsx("span",{className:"opacity-70",children:"· local"})]},t.endpoint))})]})]})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(O,{className:"size-4"}),"Indexed source tenants"]}),e.jsx(b,{children:"Ingested source-systems that carry code in the graph."})]}),e.jsx(d,{children:u?e.jsx(k,{className:"size-4 animate-spin text-muted-foreground"}):h.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:h.map(t=>e.jsx(l,{variant:"secondary",className:"font-mono text-xs",children:t},t))})})]}),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 Ne(a){if(!a)return"outline";const m=a.toLowerCase();return m==="closed"?"default":m==="open"?"destructive":"secondary"}function be(){const[a,m]=i.useState(null),[r,j]=i.useState(null),[h,N]=i.useState(!1),[u,p]=i.useState(!1),x=async()=>{p(!0);const[n,t]=await Promise.all([D(),oe()]);N(n.unavailable),m(n.ok?n.data:null),j(t.ok?t.data:null),p(!1)};i.useEffect(()=>{x()},[]);const o=a?.endpoints??[],s=o.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(Z,{className:"size-5"}),"Shard Topology",a&&e.jsx(l,{variant:"secondary",className:"uppercase",children:a.mode})]}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"K-way writer layout, per-shard reachability and circuit-breaker state."})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:u,children:[e.jsx(_,{className:u?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),h?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."]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(c,{children:e.jsxs(d,{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:a?.mode??"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Shards"}),e.jsx("p",{className:"text-2xl font-bold",children:o.length||"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Reachable"}),e.jsx("p",{className:"text-2xl font-bold",children:o.length?`${String(s)}/${String(o.length)}`:"-"})]})}),e.jsx(c,{children:e.jsxs(d,{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:a?.default_graph??"-"})]})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Shards"}),e.jsx(b,{children:"Each configured engine endpoint and its live health."})]}),e.jsx(d,{children:o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No shard endpoints reported."}):e.jsx("div",{className:"space-y-2",children:o.map((n,t)=>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(ee,{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 #",t," ",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:Ne(n.breaker),className:"font-mono text-xs",children:n.breaker}),n.reachable?e.jsxs(l,{variant:"default",className:"gap-1",children:[e.jsx(K,{className:"size-3"}),"up"]}):e.jsxs(l,{variant:"destructive",className:"gap-1",children:[e.jsx(G,{className:"size-3"}),"down"]})]})]},n.endpoint))})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Daemon"}),e.jsx(b,{children:"The consolidated KG background daemon that hosts the local shard."})]}),e.jsx(d,{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(k,{className:"size-3 animate-spin"}):e.jsx(G,{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 ve(){const[a,m]=i.useState(null),[r,j]=i.useState(!1),[h,N]=i.useState(!1),u=async()=>{N(!0);const s=await pe();j(!s.ok),m(s.ok?s.data:null),N(!1)};i.useEffect(()=>{u()},[]);const p=a?.roles??[],x=a?.grants??[],o=a?.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(H,{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(y,{variant:"outline",size:"sm",onClick:()=>{u()},disabled:h,children:[e.jsx(_,{className:h?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]})]}),h?e.jsx(k,{className:"size-5 animate-spin text-muted-foreground"}):r?e.jsxs(c,{className:"border-dashed",children:[e.jsxs(f,{children:[e.jsxs(g,{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(b,{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(d,{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(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(L,{className:"size-4"}),"Roles",e.jsx(l,{variant:"secondary",children:p.length})]})}),e.jsx(d,{className:"space-y-2",children:p.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No roles."}):p.map(s=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-medium font-mono",children:s.name}),s.description&&e.jsx("p",{className:"text-xs text-muted-foreground",children:s.description})]},s.name))})]}),e.jsxs(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(re,{className:"size-4"}),"Grants",e.jsx(l,{variant:"secondary",children:x.length})]})}),e.jsx(d,{className:"space-y-2",children:x.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No grants."}):x.map((s,n)=>e.jsxs("div",{className:"rounded border p-2 text-xs font-mono",children:[e.jsx("span",{className:"font-medium",children:s.role})," → ",s.action??"*"," on ",s.resource??"*",s.effect&&e.jsx(l,{variant:"outline",className:"ml-2",children:s.effect})]},`${s.role}-${String(n)}`))})]}),e.jsxs(c,{children:[e.jsx(f,{children:e.jsxs(g,{className:"text-base flex items-center gap-2",children:[e.jsx(L,{className:"size-4"}),"Agent identities",e.jsx(l,{variant:"secondary",children:o.length})]})}),e.jsx(d,{className:"space-y-2",children:o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No identities."}):o.map(s=>e.jsxs("div",{className:"rounded border p-2 text-sm",children:[e.jsx("span",{className:"font-mono",children:s.id}),s.roles&&s.roles.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:s.roles.map(n=>e.jsx(l,{variant:"outline",className:"text-xs",children:n},n))})]},s.id))})]})]})})]})}function ye(a){if(a===void 0)return"-";const m=["B","KB","MB","GB","TB"];let r=a,j=0;for(;r>=1024&&j<m.length-1;)r/=1024,j++;return`${r.toFixed(1)} ${m[j]}`}function ke(){const[a,m]=i.useState(null),[r,j]=i.useState(!1),[h,N]=i.useState(!1),[u,p]=i.useState(!1),x=async()=>{N(!0);const t=await je();j(!t.ok),m(t.ok?t.data:null),N(!1)};i.useEffect(()=>{x()},[]);const o=async()=>{p(!0),await fe(),await x(),p(!1)},s=a?.backups??[],n=!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(ne,{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(y,{variant:"outline",size:"sm",onClick:()=>{x()},disabled:h,children:[e.jsx(_,{className:h?"size-4 animate-spin":"size-4"}),e.jsx("span",{className:"ml-2",children:"Refresh"})]}),e.jsxs(y,{size:"sm",onClick:()=>{o()},disabled:!n||u,title:n?"Trigger an online backup":"Backup REST twin not wired yet",children:[u?e.jsx(k,{className:"size-4 animate-spin"}):e.jsx(ae,{className:"size-4"}),e.jsx("span",{className:"ml-2",children:"Trigger backup"})]})]})]}),h?e.jsx(k,{className:"size-5 animate-spin text-muted-foreground"}):n?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Snapshots"}),e.jsx("p",{className:"text-2xl font-bold",children:s.length})]})}),e.jsx(c,{children:e.jsxs(d,{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:a?.last_backup_at??"-"})]})}),e.jsx(c,{children:e.jsxs(d,{className:"pt-6",children:[e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[e.jsx(X,{className:"size-3.5"}),"PITR window"]}),e.jsxs("p",{className:"text-xs font-mono",children:[a?.pitr_window?.earliest??"-"," → ",a?.pitr_window?.latest??"-"]})]})})]}),e.jsxs(c,{children:[e.jsxs(f,{children:[e.jsx(g,{className:"text-base",children:"Snapshots"}),e.jsx(b,{children:"Retained backups available for point-in-time restore."})]}),e.jsx(d,{children:s.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No snapshots yet."}):e.jsx("div",{className:"space-y-2",children:s.map(t=>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:t.id}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.created_at??"-"," ",t.shard?`· ${t.shard}`:""," ",t.lsn?`· LSN ${t.lsn}`:""]})]}),e.jsx(l,{variant:"secondary",children:ye(t.size_bytes)})]},t.id))})})]})]}):e.jsxs(c,{className:"border-dashed",children:[e.jsxs(f,{children:[e.jsxs(g,{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(b,{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(d,{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 Be(){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(J,{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(Q,{defaultValue:"tenants",children:[e.jsxs(W,{children:[e.jsx(S,{value:"tenants",children:"Tenants"}),e.jsx(S,{value:"shards",children:"Shards"}),e.jsx(S,{value:"rbac",children:"RBAC"}),e.jsx(S,{value:"backup",children:"Backup / PITR"})]}),e.jsx(T,{value:"tenants",className:"mt-4",children:e.jsx(ge,{})}),e.jsx(T,{value:"shards",className:"mt-4",children:e.jsx(be,{})}),e.jsx(T,{value:"rbac",className:"mt-4",children:e.jsx(ve,{})}),e.jsx(T,{value:"backup",className:"mt-4",children:e.jsx(ke,{})})]})]})}export{Be as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,j as e,a as d,U as H,V as Q,z as Z,B as n,y as fe,I as f,W as be,Y as ve,m as K,Z as je,t as a}from"./index-3scWiDq2.js";import{C as Ne,a as ye,b as we,c as Ce,d as ke}from"./card-jA_uRyRo.js";import{S as Se}from"./scroll-area-DQ8wpa4y.js";import{E as X}from"./external-link-YPQMSrZp.js";import{P as _}from"./plus-Brq5VcI1.js";import{R as A}from"./refresh-cw-s6crI3ZZ.js";import{T as _e}from"./trash-2-DbeLRKY6.js";function ee(o){window.history.pushState({},"",o),window.dispatchEvent(new Event("history-state-changed"))}function x(o){return Array.isArray(o)?o:[]}const L={app_profile:"",deployment_profile:"",chat_models:[],embedding_models:[]};function Oe(){const[o,p]=t.useState("library"),[se,te]=t.useState([]),[b,z]=t.useState(!0),[v,re]=t.useState(""),[T,ae]=t.useState([]),[oe,R]=t.useState(!0),[g,ne]=t.useState([]),[ie,E]=t.useState(!1),[l,j]=t.useState(L),[le,$]=t.useState(!0),[c,N]=t.useState(""),[O,y]=t.useState(""),[h,I]=t.useState(""),[U,w]=t.useState(""),[P,F]=t.useState(""),[J,B]=t.useState(new Set),[D,M]=t.useState(!1),[u,q]=t.useState(""),[C,G]=t.useState(""),[Y,V]=t.useState(!1),m=async()=>{try{z(!0);const s=await fetch("/api/enhanced/agent-library/agents");if(!s.ok){a.error("Failed to load the Agent Library");return}te(x(await s.json()))}catch{a.error("Failed to connect to the Agent Library")}finally{z(!1)}},k=async()=>{try{R(!0);const s=await fetch("/api/enhanced/agent-library/suggestions");if(!s.ok)return;ae(x(await s.json()))}catch{}finally{R(!1)}},S=async s=>{try{E(!0);const r=s?`?mcp_server=${encodeURIComponent(s)}`:"",i=await fetch(`/api/enhanced/agent-library/tools${r}`);if(!i.ok)return;ne(x(await i.json()))}catch{}finally{E(!1)}},de=async()=>{try{$(!0);const s=await fetch("/api/enhanced/agent-library/config-summary");if(!s.ok){j(L);return}const r=await s.json();j({app_profile:r?.app_profile??"",deployment_profile:r?.deployment_profile??"",chat_models:x(r?.chat_models),embedding_models:x(r?.embedding_models)})}catch{j(L)}finally{$(!1)}};t.useEffect(()=>{m(),k(),S(),de()},[]);const ce=t.useMemo(()=>{const s=new Set;for(const r of g)r.mcp_server&&s.add(r.mcp_server);return Array.from(s).sort()},[g]),me=s=>{B(r=>{const i=new Set(r);return i.has(s)?i.delete(s):i.add(s),i})},xe=s=>{p("compose"),w(s.mcp_server),N(r=>r||`${s.mcp_server} agent`),y(r=>r||`Uses the ${s.mcp_server} tools: ${s.sample_tools.join(", ")}.`),S(s.mcp_server),a.message(`Composing an agent for '${s.mcp_server}'`)},pe=async()=>{if(!c.trim()||!h.trim()){a.error("Name and instructions are required");return}M(!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:O.trim(),instructions:h.trim(),bind_server:U||void 0,model_preference:P||void 0,tool_ids:Array.from(J)})});if(!s.ok){const r=await s.json().catch(()=>null);a.error(r?.detail??"Failed to compose the agent");return}a.success(`Agent '${c.trim()}' saved and ready to delegate to`),N(""),y(""),I(""),w(""),F(""),B(new Set),p("library"),m(),k()}catch{a.error("Network error composing the agent")}finally{M(!1)}},ge=async s=>{try{if(!(await fetch(`/api/enhanced/agent-library/agents/${encodeURIComponent(s.id)}`,{method:"DELETE"})).ok){a.error("Failed to archive that agent");return}a.success(`Archived '${s.name}'`),m()}catch{a.error("Network error archiving the agent")}},he=async()=>{if(!u.trim()){a.error("An agent URL is required");return}let s;if(C.trim())try{s=JSON.parse(C)}catch{a.error("The pasted agent card is not valid JSON");return}V(!0);try{const r=await fetch("/api/enhanced/agent-library/a2a",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:u.trim(),agent_card:s})});if(!r.ok){const i=await r.json().catch(()=>null);a.error(i?.detail??"Failed to register that agent");return}a.success("External agent registered"),q(""),G(""),m()}catch{a.error("Network error registering the external agent")}finally{V(!1)}},W=se.filter(s=>s.name.toLowerCase().includes(v.toLowerCase())||s.description.toLowerCase().includes(v.toLowerCase())),ue=[{id:"library",label:"Library",icon:H},{id:"compose",label:"Compose an Agent",icon:_},{id:"external",label:"External Agents",icon:Q},{id:"config",label:"Model & Config",icon:Z}];return e.jsx("div",{className:"space-y-6",children:e.jsxs(Ne,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(ye,{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(we,{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(Ce,{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:()=>{ee("/prompts")},children:["Prompts Registry ",e.jsx(X,{className:"size-3.5 ml-1.5"})]}),e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>{ee("/skills")},children:["Tools & Skills ",e.jsx(X,{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:ue.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 ${o===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(ke,{children:[o==="library"&&e.jsxs("div",{className:"space-y-6",children:[!oe&&T.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(Z,{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:T.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(n,{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:()=>{xe(s)},children:[e.jsx(_,{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(fe,{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=>{re(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(),k()},disabled:b,children:e.jsx(A,{className:`size-4 ${b?"animate-spin":""}`})}),e.jsxs(d,{size:"sm",onClick:()=>{p("compose")},children:[e.jsx(_,{className:"size-4 mr-1.5"})," New agent"]})]}),e.jsx(Se,{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(A,{className:"size-8 text-emerald-500 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground font-medium",children:"Querying the graph..."})]}):W.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:W.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(Q,{className:"size-4 text-teal-400 shrink-0"}):e.jsx(H,{className:"size-4 text-emerald-400 shrink-0"}),e.jsx("h4",{className:"font-bold text-sm text-foreground truncate",children:s.name})]}),e.jsx(n,{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(be,{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(ve,{className:"size-3"}),s.runnable_bound===!1?"Prompt only":"Delegatable"]}),e.jsx("button",{onClick:()=>{ge(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(_e,{className:"size-3.5"})})]})]},s.id))})})]}),o==="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=>{N(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:O,onChange:s=>{y(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(K,{value:h,onChange:s=>{I(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:U,onChange:s=>{w(s.target.value),S(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 —"}),ce.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:P,onChange:s=>{F(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 —"}),l.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:ie?e.jsx("div",{className:"text-xs text-muted-foreground p-2",children:"Loading tools..."}):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(je,{checked:J.has(s.id),onCheckedChange:()=>{me(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:()=>{pe()},disabled:D||!c.trim()||!h.trim(),className:"bg-emerald-600 hover:bg-emerald-700",children:D?"Saving...":"Save agent to the Library"})]}),o==="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=>{q(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(K,{value:C,onChange:s=>{G(s.target.value)},placeholder:'{"name": "...", "description": "...", "capabilities": []}',className:"mt-1 bg-muted/20 font-mono text-xs",rows:8})]}),e.jsx(d,{onClick:()=>{he()},disabled:Y||!u.trim(),className:"bg-teal-600 hover:bg-teal-700",children:Y?"Registering...":"Register external agent"})]}),o==="config"&&e.jsx("div",{className:"space-y-6",children:le?e.jsx("div",{className:"flex items-center justify-center py-12 gap-3",children:e.jsx(A,{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:l.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:l.deployment_profile||"—"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:"Chat models"}),l.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:l.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(n,{variant:"outline",className:"text-[9px]",children:s.provider})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[s.intelligence_level&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:s.intelligence_level}),s.can_route&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"router"}),s.can_kg&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"kg"}),s.vision&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"vision"}),s.reasoning&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"reasoning"}),s.tools_enabled&&e.jsx(n,{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"}),l.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:l.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(n,{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{Oe as default};
|
|
1
|
+
import{r as t,j as e,a as d,U as H,V as Q,z as Z,B as n,y as fe,I as f,W as be,Y as ve,m as K,Z as je,t as a}from"./index-CeCvwMfU.js";import{C as Ne,a as ye,b as we,c as Ce,d as ke}from"./card-CnUxt1R2.js";import{S as Se}from"./scroll-area-BW2dl8V6.js";import{E as X}from"./external-link-By_CytLQ.js";import{P as _}from"./plus-D0LoS734.js";import{R as A}from"./refresh-cw-BgiUT__R.js";import{T as _e}from"./trash-2-yZtTAi3L.js";function ee(o){window.history.pushState({},"",o),window.dispatchEvent(new Event("history-state-changed"))}function x(o){return Array.isArray(o)?o:[]}const L={app_profile:"",deployment_profile:"",chat_models:[],embedding_models:[]};function Oe(){const[o,p]=t.useState("library"),[se,te]=t.useState([]),[b,z]=t.useState(!0),[v,re]=t.useState(""),[T,ae]=t.useState([]),[oe,R]=t.useState(!0),[g,ne]=t.useState([]),[ie,E]=t.useState(!1),[l,j]=t.useState(L),[le,$]=t.useState(!0),[c,N]=t.useState(""),[O,y]=t.useState(""),[h,I]=t.useState(""),[U,w]=t.useState(""),[P,F]=t.useState(""),[J,B]=t.useState(new Set),[D,M]=t.useState(!1),[u,q]=t.useState(""),[C,G]=t.useState(""),[Y,V]=t.useState(!1),m=async()=>{try{z(!0);const s=await fetch("/api/enhanced/agent-library/agents");if(!s.ok){a.error("Failed to load the Agent Library");return}te(x(await s.json()))}catch{a.error("Failed to connect to the Agent Library")}finally{z(!1)}},k=async()=>{try{R(!0);const s=await fetch("/api/enhanced/agent-library/suggestions");if(!s.ok)return;ae(x(await s.json()))}catch{}finally{R(!1)}},S=async s=>{try{E(!0);const r=s?`?mcp_server=${encodeURIComponent(s)}`:"",i=await fetch(`/api/enhanced/agent-library/tools${r}`);if(!i.ok)return;ne(x(await i.json()))}catch{}finally{E(!1)}},de=async()=>{try{$(!0);const s=await fetch("/api/enhanced/agent-library/config-summary");if(!s.ok){j(L);return}const r=await s.json();j({app_profile:r?.app_profile??"",deployment_profile:r?.deployment_profile??"",chat_models:x(r?.chat_models),embedding_models:x(r?.embedding_models)})}catch{j(L)}finally{$(!1)}};t.useEffect(()=>{m(),k(),S(),de()},[]);const ce=t.useMemo(()=>{const s=new Set;for(const r of g)r.mcp_server&&s.add(r.mcp_server);return Array.from(s).sort()},[g]),me=s=>{B(r=>{const i=new Set(r);return i.has(s)?i.delete(s):i.add(s),i})},xe=s=>{p("compose"),w(s.mcp_server),N(r=>r||`${s.mcp_server} agent`),y(r=>r||`Uses the ${s.mcp_server} tools: ${s.sample_tools.join(", ")}.`),S(s.mcp_server),a.message(`Composing an agent for '${s.mcp_server}'`)},pe=async()=>{if(!c.trim()||!h.trim()){a.error("Name and instructions are required");return}M(!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:O.trim(),instructions:h.trim(),bind_server:U||void 0,model_preference:P||void 0,tool_ids:Array.from(J)})});if(!s.ok){const r=await s.json().catch(()=>null);a.error(r?.detail??"Failed to compose the agent");return}a.success(`Agent '${c.trim()}' saved and ready to delegate to`),N(""),y(""),I(""),w(""),F(""),B(new Set),p("library"),m(),k()}catch{a.error("Network error composing the agent")}finally{M(!1)}},ge=async s=>{try{if(!(await fetch(`/api/enhanced/agent-library/agents/${encodeURIComponent(s.id)}`,{method:"DELETE"})).ok){a.error("Failed to archive that agent");return}a.success(`Archived '${s.name}'`),m()}catch{a.error("Network error archiving the agent")}},he=async()=>{if(!u.trim()){a.error("An agent URL is required");return}let s;if(C.trim())try{s=JSON.parse(C)}catch{a.error("The pasted agent card is not valid JSON");return}V(!0);try{const r=await fetch("/api/enhanced/agent-library/a2a",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:u.trim(),agent_card:s})});if(!r.ok){const i=await r.json().catch(()=>null);a.error(i?.detail??"Failed to register that agent");return}a.success("External agent registered"),q(""),G(""),m()}catch{a.error("Network error registering the external agent")}finally{V(!1)}},W=se.filter(s=>s.name.toLowerCase().includes(v.toLowerCase())||s.description.toLowerCase().includes(v.toLowerCase())),ue=[{id:"library",label:"Library",icon:H},{id:"compose",label:"Compose an Agent",icon:_},{id:"external",label:"External Agents",icon:Q},{id:"config",label:"Model & Config",icon:Z}];return e.jsx("div",{className:"space-y-6",children:e.jsxs(Ne,{className:"border-border/40 bg-card/60 backdrop-blur-md",children:[e.jsxs(ye,{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(we,{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(Ce,{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:()=>{ee("/prompts")},children:["Prompts Registry ",e.jsx(X,{className:"size-3.5 ml-1.5"})]}),e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>{ee("/skills")},children:["Tools & Skills ",e.jsx(X,{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:ue.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 ${o===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(ke,{children:[o==="library"&&e.jsxs("div",{className:"space-y-6",children:[!oe&&T.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(Z,{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:T.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(n,{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:()=>{xe(s)},children:[e.jsx(_,{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(fe,{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=>{re(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(),k()},disabled:b,children:e.jsx(A,{className:`size-4 ${b?"animate-spin":""}`})}),e.jsxs(d,{size:"sm",onClick:()=>{p("compose")},children:[e.jsx(_,{className:"size-4 mr-1.5"})," New agent"]})]}),e.jsx(Se,{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(A,{className:"size-8 text-emerald-500 animate-spin"}),e.jsx("span",{className:"text-sm text-muted-foreground font-medium",children:"Querying the graph..."})]}):W.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:W.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(Q,{className:"size-4 text-teal-400 shrink-0"}):e.jsx(H,{className:"size-4 text-emerald-400 shrink-0"}),e.jsx("h4",{className:"font-bold text-sm text-foreground truncate",children:s.name})]}),e.jsx(n,{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(be,{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(ve,{className:"size-3"}),s.runnable_bound===!1?"Prompt only":"Delegatable"]}),e.jsx("button",{onClick:()=>{ge(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(_e,{className:"size-3.5"})})]})]},s.id))})})]}),o==="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=>{N(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:O,onChange:s=>{y(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(K,{value:h,onChange:s=>{I(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:U,onChange:s=>{w(s.target.value),S(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 —"}),ce.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:P,onChange:s=>{F(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 —"}),l.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:ie?e.jsx("div",{className:"text-xs text-muted-foreground p-2",children:"Loading tools..."}):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(je,{checked:J.has(s.id),onCheckedChange:()=>{me(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:()=>{pe()},disabled:D||!c.trim()||!h.trim(),className:"bg-emerald-600 hover:bg-emerald-700",children:D?"Saving...":"Save agent to the Library"})]}),o==="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=>{q(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(K,{value:C,onChange:s=>{G(s.target.value)},placeholder:'{"name": "...", "description": "...", "capabilities": []}',className:"mt-1 bg-muted/20 font-mono text-xs",rows:8})]}),e.jsx(d,{onClick:()=>{he()},disabled:Y||!u.trim(),className:"bg-teal-600 hover:bg-teal-700",children:Y?"Registering...":"Register external agent"})]}),o==="config"&&e.jsx("div",{className:"space-y-6",children:le?e.jsx("div",{className:"flex items-center justify-center py-12 gap-3",children:e.jsx(A,{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:l.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:l.deployment_profile||"—"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-bold uppercase tracking-wider text-muted-foreground mb-2",children:"Chat models"}),l.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:l.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(n,{variant:"outline",className:"text-[9px]",children:s.provider})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[s.intelligence_level&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:s.intelligence_level}),s.can_route&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"router"}),s.can_kg&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"kg"}),s.vision&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"vision"}),s.reasoning&&e.jsx(n,{variant:"secondary",className:"text-[9px]",children:"reasoning"}),s.tools_enabled&&e.jsx(n,{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"}),l.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:l.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(n,{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{Oe 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-CeCvwMfU.js";import{C as u,a as x,b as h,c as f,d as b}from"./card-CnUxt1R2.js";import{g as B}from"./gateway-BnVKZh3I.js";import{R as D}from"./refresh-cw-BgiUT__R.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-CeCvwMfU.js";import{S as me}from"./scroll-area-BW2dl8V6.js";import{G as jt}from"./git-fork-RpZe5ejU.js";import{E as yt}from"./external-link-By_CytLQ.js";import{R as Nt}from"./refresh-cw-BgiUT__R.js";import{P as ve}from"./play-CibH7bIK.js";import{C as je}from"./circle-alert-4VchbwJH.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,j as e,ag as h,a as l,I as n,L as C,B as i,b as y}from"./index-
|
|
1
|
+
import{r as t,j as e,ag as h,a as l,I as n,L as C,B as i,b as y}from"./index-CeCvwMfU.js";import{C as b,a as w,b as E,d as S}from"./card-CnUxt1R2.js";import{I as z}from"./ImportExportModal-BFrCKOb2.js";import{U as k}from"./upload-CeP5851i.js";import{R as I}from"./refresh-cw-BgiUT__R.js";import"./tabs-CRRvF5P0.js";function R(){const[r,c]=t.useState([]),[o,d]=t.useState(!0),[x,v]=t.useState(""),[m,f]=t.useState(""),[g,j]=t.useState(""),[N,p]=t.useState(!1),a=async()=>{d(!0);try{const s=await y.getOntologyCatalogue({search:x,category:m,tag:g});c(s.ontologies)}catch{c([])}finally{d(!1)}};return t.useEffect(()=>{a()},[]),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(h,{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(l,{variant:"outline",size:"sm",onClick:()=>{p(!0)},children:[e.jsx(k,{className:"size-4 mr-1"}),"Import / Export"]}),e.jsx(l,{variant:"outline",size:"sm",onClick:()=>{a()},disabled:o,children:e.jsx(I,{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:x,onChange:s=>{v(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&a()}}),e.jsx(n,{"aria-label":"Category",placeholder:"Category",value:m,onChange:s=>{f(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&a()}}),e.jsx(n,{"aria-label":"Tag",placeholder:"Tag",value:g,onChange:s=>{j(s.target.value)},onKeyDown:s=>{s.key==="Enter"&&a()}})]}),e.jsx(l,{variant:"secondary",size:"sm",onClick:()=>{a()},children:"Apply filters"}),o&&r.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..."})]}):r.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center text-muted-foreground",children:[e.jsx(h,{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:r.map(s=>e.jsxs(b,{className:"border-border/40 bg-card/60",children:[e.jsx(w,{className:"pb-2",children:e.jsx(E,{className:"text-sm font-bold truncate",title:s.iri,children:s.iri})}),e.jsxs(S,{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(u=>e.jsxs(i,{variant:"outline",className:"text-[10px]",children:["#",u]},u))]}),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(z,{open:N,onOpenChange:p,onImported:()=>{a()}})]})}export{R as default};
|