titan-agent 7.0.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -2
- package/dist/agent/agent.js +55 -10
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/contextManager.js +1 -1
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/honestyGuard.js +66 -0
- package/dist/agent/honestyGuard.js.map +1 -0
- package/dist/agent/selfCritique.js +101 -0
- package/dist/agent/selfCritique.js.map +1 -0
- package/dist/agent/toolSearch.js +9 -2
- package/dist/agent/toolSearch.js.map +1 -1
- package/dist/agent/trajectoryLogger.js +19 -2
- package/dist/agent/trajectoryLogger.js.map +1 -1
- package/dist/analytics/collector.js +1 -1
- package/dist/analytics/collector.js.map +1 -1
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/eval/harness.js +4 -1
- package/dist/eval/harness.js.map +1 -1
- package/dist/gateway/server.js +24 -8
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/slashCommands.js +31 -0
- package/dist/gateway/slashCommands.js.map +1 -1
- package/dist/mcp/agentTools.js +135 -0
- package/dist/mcp/agentTools.js.map +1 -0
- package/dist/mcp/server.js +19 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/graph.js +2 -0
- package/dist/memory/graph.js.map +1 -1
- package/dist/providers/errorTaxonomy.js +4 -0
- package/dist/providers/errorTaxonomy.js.map +1 -1
- package/dist/providers/moa.js +151 -0
- package/dist/providers/moa.js.map +1 -0
- package/dist/providers/modelCapabilities.js +65 -2
- package/dist/providers/modelCapabilities.js.map +1 -1
- package/dist/providers/ollama.js +1 -0
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai_compat.js +14 -2
- package/dist/providers/openai_compat.js.map +1 -1
- package/dist/providers/router.js +3 -1
- package/dist/providers/router.js.map +1 -1
- package/dist/utils/benchMode.js +8 -0
- package/dist/utils/benchMode.js.map +1 -0
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/package.json +26 -26
- package/ui/dist/assets/AboutYouMemory-57X5SqHQ.js +1 -0
- package/ui/dist/assets/AuditPanel-AyB8ciLZ.js +1 -0
- package/ui/dist/assets/AutonomyPanel-wmVPr-n3.js +1 -0
- package/ui/dist/assets/AutopilotPanel-CbLy4lJP.js +1 -0
- package/ui/dist/assets/AutoresearchPanel-DxRO1rBF.js +1 -0
- package/ui/dist/assets/BackupPanel-BUh9rQ-3.js +1 -0
- package/ui/dist/assets/BrowserPanel-OqKwGrIL.js +1 -0
- package/ui/dist/assets/CPActivity-DGfS7EY3.js +1 -0
- package/ui/dist/assets/CPAgentDetail-p0Kvzhhb.js +1 -0
- package/ui/dist/assets/CPAgents-B6wSSQZM.js +1 -0
- package/ui/dist/assets/CPApprovals-CYv9Do0i.js +1 -0
- package/ui/dist/assets/CPCosts-Dx6Q71rN.js +1 -0
- package/ui/dist/assets/CPDashboard-DA8-tE-l.js +1 -0
- package/ui/dist/assets/CPFiles-BJ49tzai.js +1 -0
- package/ui/dist/assets/CPGoals-h0dKL5V_.js +1 -0
- package/ui/dist/assets/CPInbox-CDvefgNH.js +1 -0
- package/ui/dist/assets/CPIssueDetail-CnmLzzDD.js +1 -0
- package/ui/dist/assets/CPIssues-DknAIMyl.js +1 -0
- package/ui/dist/assets/CPLayout-C2nqgkmY.js +2 -0
- package/ui/dist/assets/CPOrg-tDbHFphX.js +1 -0
- package/ui/dist/assets/CPRuns-UlrIURqG.js +1 -0
- package/ui/dist/assets/CPSocial-B-gHgvEw.js +1 -0
- package/ui/dist/assets/CPVoice-CJy938ZF.js +1 -0
- package/ui/dist/assets/ChannelsPanel-DLbxg1zO.js +1 -0
- package/ui/dist/assets/CheckpointsPanel-BB6TT0aE.js +1 -0
- package/ui/dist/assets/CommandPostHub-fIslwU_t.js +2 -0
- package/ui/dist/assets/ConfirmDialog-6hcNjmAh.js +9 -0
- package/ui/dist/assets/CronPanel-DLpw3Y25.js +1 -0
- package/ui/dist/assets/DataTable-KVqtDzvP.js +1 -0
- package/ui/dist/assets/DreamPanel-lcMXpbEb.js +5 -0
- package/ui/dist/assets/EmptyState-D-Dg8B8r.js +1 -0
- package/ui/dist/assets/EvalHarnessPanel-BKzRiiQw.js +2 -0
- package/ui/dist/assets/EvalPanel-Dtodacmj.js +1 -0
- package/ui/dist/assets/FileViewer-DjcVKkO2.js +60 -0
- package/ui/dist/assets/FilesPanel-BI90Pplh.js +1 -0
- package/ui/dist/assets/FleetPanel-tr0wjAwr.js +1 -0
- package/ui/dist/assets/HomelabPanel-m8vMm5rE.js +1 -0
- package/ui/dist/assets/InfraView-3WriJnyE.js +2 -0
- package/ui/dist/assets/IntegrationsPanel-BmL70fOw.js +1 -0
- package/ui/dist/assets/IntelligenceView-BGVxCKD3.js +2 -0
- package/ui/dist/assets/LearningPanel-CrYLQ6eV.js +1 -0
- package/ui/dist/assets/LiveStudio-CnW3eZYF.js +2 -0
- package/ui/dist/assets/LogsPanel-DbShr4Ic.js +1 -0
- package/ui/dist/assets/McpPanel-uMYEsPI4.js +1 -0
- package/ui/dist/assets/MemoryGraphPanel-C7-Z8f0v.js +1 -0
- package/ui/dist/assets/MemoryTaxonomyPanel-KrxN8U1G.js +1 -0
- package/ui/dist/assets/MemoryWikiPanel-DI3q6IHC.js +1 -0
- package/ui/dist/assets/MeshPanel-D4-g2tlu.js +1 -0
- package/ui/dist/assets/MissionCanvas-D8cjakJe.js +61 -0
- package/ui/dist/assets/MissionChat-BvqCUf1E.js +3 -0
- package/ui/dist/assets/MissionLibrary-CZoJQ9WD.js +1 -0
- package/ui/dist/assets/MissionStart-CXCq-_AD.js +1 -0
- package/ui/dist/assets/NvidiaPanel-BfI1K5Pg.js +1 -0
- package/ui/dist/assets/OrganismPanel-B7Gm9pP-.js +1 -0
- package/ui/dist/assets/OverviewPanel-B9tKWRK2.js +1 -0
- package/ui/dist/assets/PageHeader-CH85uoZG.js +1 -0
- package/ui/dist/assets/PersonaProfilesPanel-BPi8fl-U.js +3 -0
- package/ui/dist/assets/PersonasPanel-Dwr7sycT.js +1 -0
- package/ui/dist/assets/PhoneDeskPanel-D7qc6wUI.js +1 -0
- package/ui/dist/assets/RecipesPanel-DcqPWRSU.js +1 -0
- package/ui/dist/assets/SecurityPanel-Bv_B9Ahf.js +1 -0
- package/ui/dist/assets/SelfImprovePanel-Ca4rGwEG.js +1 -0
- package/ui/dist/assets/SelfProposalsPanel-DteMSASq.js +1 -0
- package/ui/dist/assets/SessionsPanel-BdbbKTbL.js +1 -0
- package/ui/dist/assets/SessionsTab-BJipiVJs.js +1 -0
- package/ui/dist/assets/SettingsPanel-mV7ykOCc.js +1 -0
- package/ui/dist/assets/SettingsView-Bu_wYTT5.js +2 -0
- package/ui/dist/assets/SkeletonLoader-9H7QWa9E.js +1 -0
- package/ui/dist/assets/SkillsPanel-CHwX2kDR.js +1 -0
- package/ui/dist/assets/SomaView-Bpsm4ZW7.js +5 -0
- package/ui/dist/assets/SomaView-Dghh9om4.css +1 -0
- package/ui/dist/assets/StatCard-wmSgMAM3.js +1 -0
- package/ui/dist/assets/TeamsPanel-XJiHxdDX.js +1 -0
- package/ui/dist/assets/TelemetryPanel-_pmGVxpO.js +1 -0
- package/ui/dist/assets/TitanCanvas-Cb7KG80W.css +1 -0
- package/ui/dist/assets/TitanCanvas-CmLy7p2N.js +883 -0
- package/ui/dist/assets/ToolsView-PHizHZBx.js +2 -0
- package/ui/dist/assets/TraceViewer-CYAzIcfB.js +1 -0
- package/ui/dist/assets/TracesPanel-CRSN_dzK.js +1 -0
- package/ui/dist/assets/TrainingPanel-B9rcuMsV.js +1 -0
- package/ui/dist/assets/VoiceOverlay-BL_ns1ZA.js +7 -0
- package/ui/dist/assets/VramPanel-BNPQ06_9.js +1 -0
- package/ui/dist/assets/WatchView-BgAkNnur.js +13 -0
- package/ui/dist/assets/WorkTab-RRpPpEOg.js +1 -0
- package/ui/dist/assets/WorkflowBuilderPanel-BPHIH8pf.js +1 -0
- package/ui/dist/assets/WorkflowsPanel-DqtmT0NB.js +1 -0
- package/ui/dist/assets/approvalHeadline-BRg3ReTi.js +1 -0
- package/ui/dist/assets/archive-DcK9HrbE.js +1 -0
- package/ui/dist/assets/arrow-left-4c2FnES1.js +1 -0
- package/ui/dist/assets/book-open-Ds_yciQm.js +1 -0
- package/ui/dist/assets/bot-CWDCc265.js +1 -0
- package/ui/dist/assets/chart-column-hhZMdCgB.js +1 -0
- package/ui/dist/assets/chevron-right-A_pvnRh_.js +1 -0
- package/ui/dist/assets/circle-check-big-C-JUM7wb.js +1 -0
- package/ui/dist/assets/circle-stop-yZuG9ZAE.js +1 -0
- package/ui/dist/assets/clipboard-list-C2HUEjZc.js +1 -0
- package/ui/dist/assets/clock-DSPgndSD.js +1 -0
- package/ui/dist/assets/clsx-CjueKrWZ.js +1 -0
- package/ui/dist/assets/createLucideIcon-qnlrxww7.js +1 -0
- package/ui/dist/assets/database-C1SgHa8T.js +1 -0
- package/ui/dist/assets/dollar-sign-D9siqK91.js +1 -0
- package/ui/dist/assets/download-CJZWQNfV.js +1 -0
- package/ui/dist/assets/external-link-CpQLWKKE.js +1 -0
- package/ui/dist/assets/file-text-BbGTi-Po.js +1 -0
- package/ui/dist/assets/flask-conical-B1YVft4E.js +1 -0
- package/ui/dist/assets/folder-EbR-w2Mq.js +1 -0
- package/ui/dist/assets/funnel-D2Dkn8Pf.js +1 -0
- package/ui/dist/assets/git-branch-CQ2yNSzU.js +1 -0
- package/ui/dist/assets/git-pull-request-BxL5wlGX.js +1 -0
- package/ui/dist/assets/index-Cz8190xO.css +2 -0
- package/ui/dist/assets/index-WI-E4I3h.js +243 -0
- package/ui/dist/assets/jsx-runtime-B15e6lOy.js +1 -0
- package/ui/dist/assets/layers-BPu5SRjI.js +1 -0
- package/ui/dist/assets/legacy-BIzifT-t.js +3 -0
- package/ui/dist/assets/lightbulb-BY7CpMte.js +1 -0
- package/ui/dist/assets/link-VDQkrGJw.js +1 -0
- package/ui/dist/assets/list-todo-DfnNUV_T.js +1 -0
- package/ui/dist/assets/message-square-BpzrINHz.js +1 -0
- package/ui/dist/assets/mic-De6oZFaV.js +1 -0
- package/ui/dist/assets/missions-y-qg_f9b.js +1 -0
- package/ui/dist/assets/network-CM7y1ats.js +1 -0
- package/ui/dist/assets/pause-C4TDJSfA.js +1 -0
- package/ui/dist/assets/pencil-Dd_vzHE-.js +1 -0
- package/ui/dist/assets/play-9WxZWVHA.js +1 -0
- package/ui/dist/assets/plug-Dm25Wbrc.js +1 -0
- package/ui/dist/assets/plus-CHryCIkk.js +1 -0
- package/ui/dist/assets/radio-D-XnoAVu.js +1 -0
- package/ui/dist/assets/refresh-cw-Disd5wRB.js +1 -0
- package/ui/dist/assets/rotate-ccw-Cw1T2W1T.js +1 -0
- package/ui/dist/assets/save-DP7oNar2.js +1 -0
- package/ui/dist/assets/search-aNVcX-nv.js +1 -0
- package/ui/dist/assets/send-D7iQD57b.js +1 -0
- package/ui/dist/assets/server-DFfeYjoM.js +1 -0
- package/ui/dist/assets/settings-5NWXzgyY.js +1 -0
- package/ui/dist/assets/shared-DLz_Jtg3.js +1 -0
- package/ui/dist/assets/shield-check-Cd50jCAn.js +1 -0
- package/ui/dist/assets/square-DlcoJ1ZM.js +1 -0
- package/ui/dist/assets/terminal-DgFz2Vsf.js +1 -0
- package/ui/dist/assets/test-tube-BimtS92_.js +1 -0
- package/ui/dist/assets/toggle-right-BMaR-sfT.js +1 -0
- package/ui/dist/assets/trash-2-CwUv7ww1.js +1 -0
- package/ui/dist/assets/trending-up-Ba9TwEow.js +1 -0
- package/ui/dist/assets/trophy-Gfv1QC45.js +1 -0
- package/ui/dist/assets/volume-2-BVlfVl2U.js +1 -0
- package/ui/dist/assets/wifi-off-CWLeusSV.js +1 -0
- package/ui/dist/assets/zoom-out-DeggJ7RM.js +1 -0
- package/ui/dist/index.html +4 -2
- package/ui/dist/sw.js +1 -1
- package/ui/dist/assets/AboutYouMemory-CZKEOd_O.js +0 -11
- package/ui/dist/assets/AuditPanel-Bu71N5Er.js +0 -1
- package/ui/dist/assets/AutonomyPanel-DB-39dX4.js +0 -11
- package/ui/dist/assets/AutopilotPanel-Cj8oKxWv.js +0 -1
- package/ui/dist/assets/AutoresearchPanel-3s8pjm6Z.js +0 -6
- package/ui/dist/assets/BackupPanel-EUQJMJE7.js +0 -1
- package/ui/dist/assets/BrowserPanel-Beo4F5Ar.js +0 -6
- package/ui/dist/assets/Button-MdXmb4_n.js +0 -1
- package/ui/dist/assets/CPActivity-B1Se9VVc.js +0 -1
- package/ui/dist/assets/CPAgentDetail-BYji6tT8.js +0 -1
- package/ui/dist/assets/CPAgents-BSUKucTe.js +0 -1
- package/ui/dist/assets/CPApprovals-B4v0em6e.js +0 -1
- package/ui/dist/assets/CPCosts-9ikh61Kv.js +0 -1
- package/ui/dist/assets/CPDashboard-sOok2T5v.js +0 -1
- package/ui/dist/assets/CPFiles-DB2nY5JE.js +0 -1
- package/ui/dist/assets/CPGoals-8Z1yOY8e.js +0 -1
- package/ui/dist/assets/CPInbox-Cq6-UY8F.js +0 -11
- package/ui/dist/assets/CPIssueDetail-NAGfmJg8.js +0 -1
- package/ui/dist/assets/CPIssues-BzX6Rckx.js +0 -1
- package/ui/dist/assets/CPLayout-BcRM6QSg.js +0 -2
- package/ui/dist/assets/CPOrg-B7DQ4UQP.js +0 -1
- package/ui/dist/assets/CPRuns-D-cpPw_M.js +0 -1
- package/ui/dist/assets/CPSocial-DshtmcK0.js +0 -11
- package/ui/dist/assets/CPVoice-DfXRnQVU.js +0 -1
- package/ui/dist/assets/ChannelsPanel-BnaTOeyf.js +0 -1
- package/ui/dist/assets/CheckpointsPanel-C62naE4U.js +0 -1
- package/ui/dist/assets/CommandPostHub-B_L1CAss.js +0 -24
- package/ui/dist/assets/ConfirmDialog-VErHWAbo.js +0 -1
- package/ui/dist/assets/CronPanel-BwMrrZ5d.js +0 -1
- package/ui/dist/assets/DataTable-BCqSUuN7.js +0 -1
- package/ui/dist/assets/DreamPanel-BNAcCLBB.js +0 -15
- package/ui/dist/assets/EmptyState-D9kQf1PX.js +0 -1
- package/ui/dist/assets/EvalHarnessPanel-BaMLdBNm.js +0 -2
- package/ui/dist/assets/EvalPanel-CW-SSjtg.js +0 -1
- package/ui/dist/assets/FileViewer-BL00nsd7.js +0 -61
- package/ui/dist/assets/FilesPanel-CeC6YUSd.js +0 -16
- package/ui/dist/assets/FleetPanel-EyWF7l3W.js +0 -1
- package/ui/dist/assets/HomelabPanel-BRfKRYe7.js +0 -6
- package/ui/dist/assets/InfraView-Jmqhg_Yc.js +0 -2
- package/ui/dist/assets/InlineEditableField-DgMrLDj1.js +0 -1
- package/ui/dist/assets/Input-CBTwa_Iw.js +0 -1
- package/ui/dist/assets/IntegrationsPanel-DQL-7Ec6.js +0 -1
- package/ui/dist/assets/IntelligenceView-DxD78qfP.js +0 -2
- package/ui/dist/assets/LearningPanel-C_JzSbJU.js +0 -1
- package/ui/dist/assets/LiveStudio-Db5yeaWo.js +0 -7
- package/ui/dist/assets/LogsPanel-CpinKwaZ.js +0 -1
- package/ui/dist/assets/McpPanel-D-MqN_f-.js +0 -1
- package/ui/dist/assets/MemoryGraphPanel-BnD5jRqf.js +0 -1
- package/ui/dist/assets/MemoryTaxonomyPanel-BBI202dd.js +0 -6
- package/ui/dist/assets/MemoryWikiPanel-Dn3XZHL0.js +0 -6
- package/ui/dist/assets/MeshPanel-C-mRJpr0.js +0 -11
- package/ui/dist/assets/MissionCanvas-CbZW83Ch.js +0 -72
- package/ui/dist/assets/MissionChat-Bs75jPAD.js +0 -7
- package/ui/dist/assets/MissionLibrary-BxQ6SxPe.js +0 -5
- package/ui/dist/assets/MissionStart-CBuBPasl.js +0 -1
- package/ui/dist/assets/Modal-ybPGvlQs.js +0 -9
- package/ui/dist/assets/NvidiaPanel-DdG13OX4.js +0 -1
- package/ui/dist/assets/OrganismPanel-xZWUJKyr.js +0 -1
- package/ui/dist/assets/OverviewPanel-B45ZYhJV.js +0 -1
- package/ui/dist/assets/PageHeader-DdrbS1aq.js +0 -1
- package/ui/dist/assets/PersonaProfilesPanel-CKER-EU5.js +0 -8
- package/ui/dist/assets/PersonasPanel-CMMQ3nh3.js +0 -1
- package/ui/dist/assets/PhoneDeskPanel-Bw_Y-cVE.js +0 -11
- package/ui/dist/assets/RecipesPanel-DzMcxpJJ.js +0 -1
- package/ui/dist/assets/SecurityPanel-BCq3Fzbr.js +0 -1
- package/ui/dist/assets/SelfImprovePanel-YE3hT8jK.js +0 -1
- package/ui/dist/assets/SelfProposalsPanel-DXuqBM6p.js +0 -1
- package/ui/dist/assets/SessionsPanel-DORz5goR.js +0 -1
- package/ui/dist/assets/SessionsTab-qYHDOuC8.js +0 -1
- package/ui/dist/assets/SettingsPanel-BbwPu1i7.js +0 -1
- package/ui/dist/assets/SettingsView-zgqkDDBJ.js +0 -2
- package/ui/dist/assets/SkeletonLoader-r6OGXaU9.js +0 -1
- package/ui/dist/assets/SkillsPanel-BjEOBMRo.js +0 -11
- package/ui/dist/assets/SomaView-BtCkeWfZ.css +0 -1
- package/ui/dist/assets/SomaView-DLzApZVW.js +0 -5
- package/ui/dist/assets/StatCard-DLq8aBps.js +0 -1
- package/ui/dist/assets/StatusBadge-BqlvIbdj.js +0 -1
- package/ui/dist/assets/Tabs-DdUThlp1.js +0 -1
- package/ui/dist/assets/TeamsPanel-uIIKoU7I.js +0 -1
- package/ui/dist/assets/TelemetryPanel-dVr3yQQr.js +0 -1
- package/ui/dist/assets/TitanCanvas-BfitWg9R.css +0 -1
- package/ui/dist/assets/TitanCanvas-xHAJqwG2.js +0 -945
- package/ui/dist/assets/ToolsView-CG1mZdiy.js +0 -2
- package/ui/dist/assets/Tooltip-C2tXJcrN.js +0 -6
- package/ui/dist/assets/TraceViewer-BIMD_Osr.js +0 -1
- package/ui/dist/assets/TracesPanel-nMUiyMj5.js +0 -1
- package/ui/dist/assets/TrainingPanel-CT5R4HWm.js +0 -1
- package/ui/dist/assets/VoiceOverlay-Br4QnCtw.js +0 -17
- package/ui/dist/assets/VramPanel-CdnJYytg.js +0 -1
- package/ui/dist/assets/WatchView-TNU6Ns1Q.js +0 -13
- package/ui/dist/assets/WorkTab-wTlX_UKP.js +0 -1
- package/ui/dist/assets/WorkflowBuilderPanel-CDpVt5ux.js +0 -6
- package/ui/dist/assets/WorkflowsPanel-zsFqsLdn.js +0 -11
- package/ui/dist/assets/approvalHeadline-DB9SgR-9.js +0 -1
- package/ui/dist/assets/archive-Bh689DNg.js +0 -6
- package/ui/dist/assets/arrow-left-WkVYLm80.js +0 -6
- package/ui/dist/assets/book-open-ohEXgUsS.js +0 -6
- package/ui/dist/assets/bot-DvEcyQcD.js +0 -6
- package/ui/dist/assets/chart-column-w3goFd5f.js +0 -6
- package/ui/dist/assets/check-CuRYh4Zh.js +0 -6
- package/ui/dist/assets/chevron-right-DbLSHmff.js +0 -6
- package/ui/dist/assets/circle-check-big-Bkba568b.js +0 -6
- package/ui/dist/assets/circle-stop-Bx2ohEg8.js +0 -6
- package/ui/dist/assets/clipboard-list-Dj9tORnu.js +0 -6
- package/ui/dist/assets/clock-JyQAYy6X.js +0 -6
- package/ui/dist/assets/clsx-B-dksMZM.js +0 -1
- package/ui/dist/assets/dollar-sign-XxwPAA2a.js +0 -6
- package/ui/dist/assets/download-D1izVEOL.js +0 -6
- package/ui/dist/assets/external-link-DZ_rZsIt.js +0 -6
- package/ui/dist/assets/file-text-Cfawu8Bs.js +0 -6
- package/ui/dist/assets/flask-conical-Ql8QxhgY.js +0 -6
- package/ui/dist/assets/folder-DAdIw-Pb.js +0 -6
- package/ui/dist/assets/funnel-FycfZcXo.js +0 -6
- package/ui/dist/assets/git-branch-C2qrhGGu.js +0 -6
- package/ui/dist/assets/index-Cml2x9pA.js +0 -507
- package/ui/dist/assets/index-yWybhcfI.css +0 -1
- package/ui/dist/assets/layers-yzjtGlHB.js +0 -6
- package/ui/dist/assets/legacy-D21WSMF1.js +0 -3
- package/ui/dist/assets/lightbulb-BZJNK69S.js +0 -6
- package/ui/dist/assets/link-CnFkBkaY.js +0 -6
- package/ui/dist/assets/list-todo-BlgfQHup.js +0 -6
- package/ui/dist/assets/message-square-CRsG9u6_.js +0 -6
- package/ui/dist/assets/mic-B32RHc7Y.js +0 -6
- package/ui/dist/assets/missions-1iw8Z2_0.js +0 -1
- package/ui/dist/assets/network-C9RXQGrV.js +0 -6
- package/ui/dist/assets/pause-BT1Bc2q3.js +0 -6
- package/ui/dist/assets/pencil-BK5IU6o0.js +0 -6
- package/ui/dist/assets/play-Cl1nC_gc.js +0 -6
- package/ui/dist/assets/plug-DvcpOalj.js +0 -6
- package/ui/dist/assets/plus-Dpo1qfrl.js +0 -6
- package/ui/dist/assets/radio-C5c9IyqX.js +0 -6
- package/ui/dist/assets/refresh-cw-C-iZkzuS.js +0 -6
- package/ui/dist/assets/rotate-ccw-qzrB3SNw.js +0 -6
- package/ui/dist/assets/save-DwR9wQVu.js +0 -6
- package/ui/dist/assets/search-D10l0m3-.js +0 -6
- package/ui/dist/assets/send-DtXGsaFW.js +0 -6
- package/ui/dist/assets/server-BzisF3LL.js +0 -6
- package/ui/dist/assets/settings-Dbwd1_-c.js +0 -6
- package/ui/dist/assets/shield-check-CXlDJyAW.js +0 -6
- package/ui/dist/assets/square-BBC-JKzY.js +0 -11
- package/ui/dist/assets/terminal-DaBIlWEM.js +0 -6
- package/ui/dist/assets/test-tube-CDATRD5t.js +0 -11
- package/ui/dist/assets/toggle-right-DTmrC5RD.js +0 -11
- package/ui/dist/assets/trash-2-CTeyjxD_.js +0 -6
- package/ui/dist/assets/trending-up-CXPRjRV4.js +0 -6
- package/ui/dist/assets/trophy-DbVdXRtU.js +0 -6
- package/ui/dist/assets/volume-2-DYDBmm3M.js +0 -6
- package/ui/dist/assets/wifi-off-BBuIGbiP.js +0 -6
- package/ui/dist/assets/zoom-out-D47_pRAO.js +0 -16
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as ee,r as d,b as m,j as e,Z as I,C as se,o as te,A as w,n as ae,U as ne,m as le,P as re}from"./index-Cml2x9pA.js";import{P as B}from"./PageHeader-DdrbS1aq.js";import{S as h}from"./StatCard-DLq8aBps.js";import{S as ie}from"./SkeletonLoader-r6OGXaU9.js";import{R as ce}from"./refresh-cw-C-iZkzuS.js";import{C as de}from"./clock-JyQAYy6X.js";import{M as oe}from"./message-square-CRsG9u6_.js";import{S as xe}from"./server-BzisF3LL.js";import{C as me}from"./chart-column-w3goFd5f.js";import{N as D}from"./network-C9RXQGrV.js";import{C as A}from"./circle-check-big-Bkba568b.js";import{W as he}from"./wifi-off-BBuIGbiP.js";import{D as ue}from"./dollar-sign-XxwPAA2a.js";import"./chevron-right-DbLSHmff.js";import"./clsx-B-dksMZM.js";/**
|
|
2
|
-
* @license lucide-react v0.513.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const pe=[["path",{d:"M6 5v11",key:"mdvv1e"}],["path",{d:"M12 5v6",key:"14ar3b"}],["path",{d:"M18 5v14",key:"7ji314"}]],ge=ee("kanban",pe),je=15e3;function be(n){const r=Math.floor(n/86400),g=Math.floor(n%86400/3600),f=Math.floor(n%3600/60);return r>0?`${r}d ${g}h ${f}m`:g>0?`${g}h ${f}m`:`${f}m`}function fe(n){return n>=1024?`${(n/1024).toFixed(1)} GB`:`${Math.round(n)} MB`}function S(n){return fe(n/1024/1024)}function Ne(n){const r=Math.floor((Date.now()-new Date(n).getTime())/1e3);return r<60?`${r}s ago`:r<3600?`${Math.floor(r/60)}m ago`:r<86400?`${Math.floor(r/3600)}h ago`:`${Math.floor(r/86400)}d ago`}function M({status:n}){const r={online:"bg-success shadow-success/40",offline:"bg-error shadow-error/40",working:"bg-warning shadow-warning/40 animate-pulse",unknown:"bg-text-muted shadow-none"};return e.jsx("div",{className:`h-2.5 w-2.5 rounded-full shadow-lg ${r[n]}`})}function b({title:n,icon:r,children:g}){return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(r,{className:"h-4 w-4 text-accent-hover"}),e.jsx("h3",{className:"text-sm font-semibold uppercase tracking-wider text-text-secondary",children:n})]}),g]})}function Ie(){var L,U,V;const[n,r]=d.useState(!0),[g,f]=d.useState([]),[i,P]=d.useState(null),[c,E]=d.useState(null),[x,F]=d.useState(null),[k,q]=d.useState([]),[G,O]=d.useState([]),[R,_]=d.useState([]),[$,W]=d.useState([]),[C,z]=d.useState([]),[K,Z]=d.useState(new Date),v=d.useCallback(async()=>{try{const[s,l,a,u,o,j,p,T,N]=await Promise.all([m("/api/homelab/machines").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/vram").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/stats").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/activity/summary").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/command-post/agents").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/command-post/issues").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/command-post/activity?limit=15").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/command-post/budgets").then(t=>t.ok?t.json():null).catch(()=>null),m("/api/mesh/peers").then(t=>t.ok?t.json():null).catch(()=>null)]);Array.isArray(s==null?void 0:s.machines)&&f(s.machines.map(t=>({name:String(t.name??"Unknown"),ip:String(t.ip??""),role:String(t.role??""),online:t.online===!0}))),l&&P(l),a&&E(a),u&&F(u),Array.isArray(o)&&q(o);const J=Array.isArray(j)?j:(j==null?void 0:j.issues)??[];O(J);const Q=Array.isArray(p)?p:(p==null?void 0:p.feed)??(p==null?void 0:p.activity)??[];_(Q),Array.isArray(T)&&W(T);const Y=(N==null?void 0:N.peers)??(Array.isArray(N)?N:[]);z(Y),Z(new Date)}finally{r(!1)}},[]);if(d.useEffect(()=>{v();const s=setInterval(v,je);return()=>clearInterval(s)},[v]),n)return e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{title:"Homelab",breadcrumbs:[{label:"Monitoring"},{label:"Homelab"}]}),e.jsx("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:e.jsx(ie,{variant:"metric",count:8})})]});const H=!!i&&typeof i.totalVRAM=="number"&&Number.isFinite(i.totalVRAM)&&i.totalVRAM>0&&typeof i.usedVRAM=="number"&&Number.isFinite(i.usedVRAM),y=H?Math.round(i.usedVRAM/i.totalVRAM*100):0,X=s=>G.filter(l=>l.status===s);return e.jsxs("div",{className:"space-y-6",children:[e.jsx(B,{title:"Homelab",breadcrumbs:[{label:"Monitoring"},{label:"Homelab"}],actions:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:v,className:"flex items-center gap-1.5 rounded-lg bg-bg-tertiary px-3 py-1.5 text-xs text-text-secondary hover:bg-border hover:text-text transition-colors",children:[e.jsx(ce,{className:"h-3.5 w-3.5"})," Refresh"]}),e.jsxs("span",{className:"text-[10px] text-text-muted",children:["Updated ",K.toLocaleTimeString()]})]})}),c&&e.jsxs("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[e.jsx(h,{title:"Uptime",value:be(c.uptime??0),icon:e.jsx(de,{className:"h-4 w-4"})}),e.jsx(h,{title:"Total Requests",value:(c.totalRequests??0).toLocaleString(),icon:e.jsx(I,{className:"h-4 w-4"})}),e.jsx(h,{title:"Active Sessions",value:c.activeSessions??0,icon:e.jsx(oe,{className:"h-4 w-4"})}),e.jsx(h,{title:"Active Model",value:((L=c.model)==null?void 0:L.split("/").pop())??"unknown",icon:e.jsx(se,{className:"h-4 w-4"}),subtitle:c.provider})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(b,{title:"Machines",icon:xe,children:e.jsx("div",{className:"grid gap-2",children:g.map(s=>e.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-border bg-bg-secondary px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(M,{status:s.online===null?"unknown":s.online?"online":"offline"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium text-text",children:s.name}),e.jsx("p",{className:"text-[11px] text-text-muted",children:s.role})]})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"text-xs font-mono text-text-secondary",children:s.ip}),e.jsx("p",{className:"text-[10px] text-text-muted",children:s.online?"Online":s.online===!1?"Offline":"Checking..."})]})]},s.ip))})}),e.jsx(b,{title:"GPU / VRAM",icon:te,children:H?e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4 space-y-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-xs mb-1",children:[e.jsx("span",{className:"text-text-secondary",children:"VRAM Usage"}),e.jsxs("span",{className:"text-text-muted",children:[S(i.usedVRAM)," / ",S(i.totalVRAM)," (",y,"%)"]})]}),e.jsx("div",{className:"h-3 rounded-full bg-bg-tertiary overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all ${y>90?"bg-error":y>70?"bg-warning":"bg-accent"}`,style:{width:`${y}%`}})})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx(M,{status:i.state==="idle"?"online":"working"}),e.jsx("span",{className:"text-text-secondary capitalize",children:i.state})]}),((U=i.models)==null?void 0:U.length)>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-text-muted mb-1",children:"Loaded Models"}),i.models.map(s=>e.jsxs("div",{className:"flex justify-between text-xs py-0.5",children:[e.jsx("span",{className:"text-text-secondary",children:s.name}),e.jsx("span",{className:"text-text-muted font-mono",children:S(s.vram)})]},s.id))]}),((V=i.leases)==null?void 0:V.length)>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-medium uppercase tracking-wider text-text-muted mb-1",children:"Active Leases"}),i.leases.map(s=>e.jsxs("div",{className:"flex justify-between text-xs py-0.5",children:[e.jsx("span",{className:"text-text-secondary",children:s.service}),e.jsxs("span",{className:"text-text-muted font-mono",children:[s.requiredMB," MB"]})]},s.leaseId))]})]}):e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-4 text-center text-xs text-text-muted",children:"No GPU detected on this gateway host. VRAM orchestration is inactive."})})]}),x&&e.jsxs("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-5",children:[e.jsx(h,{title:"Tool Calls (24h)",value:x.toolCallsLast24h,icon:e.jsx(I,{className:"h-4 w-4"})}),e.jsx(h,{title:"Active Goals",value:x.activeGoals,icon:e.jsx(me,{className:"h-4 w-4"})}),e.jsx(h,{title:"Autopilot",value:x.autopilotEnabled?"On":"Off",icon:e.jsx(w,{className:"h-4 w-4"}),subtitle:`${x.autopilotRunsToday} runs today`}),e.jsx(h,{title:"Knowledge Graph",value:x.graphStats.entities,icon:e.jsx(D,{className:"h-4 w-4"}),subtitle:`${x.graphStats.edges} edges`}),e.jsx(h,{title:"System Status",value:x.status==="idle"?"Idle":x.status,icon:x.status==="idle"?e.jsx(A,{className:"h-4 w-4"}):e.jsx(w,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(b,{title:"Mesh Network",icon:D,children:e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:C.length>0?e.jsx("div",{className:"space-y-2",children:C.map(s=>{var l;return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ae,{className:"h-3.5 w-3.5 text-success"}),e.jsx("span",{className:"text-text-secondary",children:s.host||s.nodeId.slice(0,12)})]}),e.jsxs("span",{className:"text-text-muted",children:[((l=s.models)==null?void 0:l.length)??0," models"]})]},s.nodeId)})}):e.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[e.jsx(he,{className:"h-3.5 w-3.5"}),"No mesh peers connected"]})})}),e.jsx(b,{title:"Active Agents",icon:ne,children:e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:k.length>0?e.jsx("div",{className:"space-y-2",children:k.map(s=>{const l=s.status==="active"||s.status==="running",a=s.lastHeartbeat&&Date.now()-new Date(s.lastHeartbeat).getTime()>36e5;return e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(M,{status:a?"offline":l?"working":"online"}),e.jsx("span",{className:"text-text font-medium",children:s.name||s.id.slice(0,12)}),s.role&&e.jsxs("span",{className:"text-text-muted",children:["(",s.role,")"]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"capitalize text-text-secondary",children:s.status}),s.lastHeartbeat&&e.jsx("span",{className:"text-text-muted",children:Ne(s.lastHeartbeat)})]})]},s.id)})}):e.jsx("p",{className:"text-xs text-text-muted",children:"No agents registered"})})})]}),e.jsx(b,{title:"Task Board",icon:ge,children:e.jsx("div",{className:"grid grid-cols-3 gap-3",children:["todo","in_progress","done"].map(s=>{const l=s==="in_progress"?"In Progress":s.charAt(0).toUpperCase()+s.slice(1),a=X(s),u=s==="todo"?"text-text-muted":s==="in_progress"?"text-warning":"text-success";return e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary/50 p-3 min-h-[120px]",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("p",{className:`text-[10px] font-semibold uppercase tracking-wider ${u}`,children:l}),e.jsxs("span",{className:"text-[10px] text-text-muted",children:["(",a==null?void 0:a.length,")"]})]}),(a==null?void 0:a.length)>0?e.jsxs("div",{className:"space-y-1.5",children:[a.slice(0,8).map(o=>e.jsxs("div",{className:"rounded-lg border border-border bg-bg p-2 text-xs",children:[e.jsxs("div",{className:"flex items-start gap-1.5",children:[e.jsx("span",{className:"text-accent font-semibold shrink-0",children:o.id.slice(0,6)}),e.jsx("span",{className:"text-text-secondary",children:o.title||o.description||"Untitled"})]}),o.assigneeAgentId&&e.jsxs("p",{className:"text-[10px] text-text-muted mt-0.5",children:["→ ",o.assigneeAgentId]})]},o.id)),(a==null?void 0:a.length)>8&&e.jsxs("p",{className:"text-[10px] text-text-muted text-center",children:["+",(a==null?void 0:a.length)-8," more"]})]}):e.jsx("p",{className:"text-[10px] text-text-muted italic text-center py-4",children:"Empty"})]},s)})})}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(b,{title:"Live Activity",icon:w,children:e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-3 max-h-[320px] overflow-y-auto",children:R.length>0?e.jsx("div",{className:"space-y-0",children:R.slice(0,15).map((s,l)=>{const a=s.timestamp?new Date(s.timestamp).toLocaleTimeString():"",u=s.type||"event",o=u.includes("agent"),j=u.includes("tool");return e.jsxs("div",{className:"flex gap-2.5 py-1.5 border-b border-border/50 last:border-0 text-xs",children:[e.jsx("span",{className:"text-text-muted shrink-0 w-[52px] text-[10px]",children:a}),e.jsx("span",{className:`shrink-0 rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase ${j?"bg-accent/15 text-accent":o?"bg-success/15 text-success":"bg-warning/15 text-warning"}`,children:u.slice(0,10)}),e.jsx("span",{className:"text-text-secondary truncate",children:s.message||s.detail||s.content||""})]},l)})}):e.jsx("p",{className:"text-xs text-text-muted italic text-center py-6",children:"No recent activity"})})}),e.jsx(b,{title:"Budget Tracking",icon:ue,children:e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:$.length>0?e.jsx("div",{className:"space-y-3",children:$.map(s=>{const l=s.limitUsd>0?Math.round(s.currentSpend/s.limitUsd*100):0;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-xs mb-1",children:[e.jsx("span",{className:"text-text-secondary font-medium",children:s.name}),e.jsxs("span",{className:"text-text-muted",children:["$",s.currentSpend.toFixed(2)," / $",s.limitUsd.toFixed(2)," (",s.period,")"]})]}),e.jsx("div",{className:"h-2 rounded-full bg-bg-tertiary overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all ${l>90?"bg-error":l>70?"bg-warning":"bg-success"}`,style:{width:`${Math.min(l,100)}%`}})})]},s.id)})}):e.jsx("p",{className:"text-xs text-text-muted",children:"No budget policies configured"})})})]}),(c==null?void 0:c.health)&&e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2.5 rounded-xl border border-border bg-bg-secondary px-4 py-3",children:[c.health.ollamaHealthy?e.jsx(A,{className:"h-4 w-4 text-success"}):e.jsx(le,{className:"h-4 w-4 text-error"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-text",children:"Ollama"}),e.jsx("p",{className:"text-[10px] text-text-muted",children:c.health.ollamaHealthy?"Healthy":"Unhealthy"})]})]}),e.jsxs("div",{className:"flex items-center gap-2.5 rounded-xl border border-border bg-bg-secondary px-4 py-3",children:[c.health.ttsHealthy?e.jsx(A,{className:"h-4 w-4 text-success"}):e.jsx(re,{className:"h-4 w-4 text-warning"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-text",children:"TTS"}),e.jsx("p",{className:"text-[10px] text-text-muted",children:c.health.ttsHealthy?"Healthy":"Unavailable"})]})]}),e.jsxs("div",{className:"flex items-center gap-2.5 rounded-xl border border-border bg-bg-secondary px-4 py-3",children:[e.jsx(w,{className:"h-4 w-4 text-accent"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-text",children:"LLM Requests"}),e.jsxs("p",{className:"text-[10px] text-text-muted",children:[c.health.activeLlmRequests," active"]})]})]})]})]})}export{Ie as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomelabPanel-BRfKRYe7.js","assets/index-Cml2x9pA.js","assets/index-yWybhcfI.css","assets/PageHeader-DdrbS1aq.js","assets/chevron-right-DbLSHmff.js","assets/StatCard-DLq8aBps.js","assets/SkeletonLoader-r6OGXaU9.js","assets/clsx-B-dksMZM.js","assets/refresh-cw-C-iZkzuS.js","assets/clock-JyQAYy6X.js","assets/message-square-CRsG9u6_.js","assets/server-BzisF3LL.js","assets/chart-column-w3goFd5f.js","assets/network-C9RXQGrV.js","assets/circle-check-big-Bkba568b.js","assets/wifi-off-BBuIGbiP.js","assets/dollar-sign-XxwPAA2a.js","assets/NvidiaPanel-DdG13OX4.js","assets/save-DwR9wQVu.js","assets/external-link-DZ_rZsIt.js","assets/search-D10l0m3-.js","assets/FilesPanel-CeC6YUSd.js","assets/plus-Dpo1qfrl.js","assets/arrow-left-WkVYLm80.js","assets/pencil-BK5IU6o0.js","assets/trash-2-CTeyjxD_.js","assets/download-D1izVEOL.js","assets/check-CuRYh4Zh.js","assets/TitanCanvas-xHAJqwG2.js","assets/zoom-out-D47_pRAO.js","assets/ConfirmDialog-VErHWAbo.js","assets/Modal-ybPGvlQs.js","assets/Button-MdXmb4_n.js","assets/square-BBC-JKzY.js","assets/file-text-Cfawu8Bs.js","assets/settings-Dbwd1_-c.js","assets/terminal-DaBIlWEM.js","assets/book-open-ohEXgUsS.js","assets/rotate-ccw-qzrB3SNw.js","assets/send-DtXGsaFW.js","assets/mic-B32RHc7Y.js","assets/flask-conical-Ql8QxhgY.js","assets/archive-Bh689DNg.js","assets/radio-C5c9IyqX.js","assets/test-tube-CDATRD5t.js","assets/VoiceOverlay-Br4QnCtw.js","assets/volume-2-DYDBmm3M.js","assets/folder-DAdIw-Pb.js","assets/shield-check-CXlDJyAW.js","assets/bot-DvEcyQcD.js","assets/link-CnFkBkaY.js","assets/TitanCanvas-BfitWg9R.css","assets/LogsPanel-CpinKwaZ.js","assets/TelemetryPanel-dVr3yQQr.js","assets/git-branch-C2qrhGGu.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as t,j as e,_ as a}from"./index-Cml2x9pA.js";import{c as i}from"./clsx-B-dksMZM.js";const r=t.lazy(()=>a(()=>import("./HomelabPanel-BRfKRYe7.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))),d=t.lazy(()=>a(()=>import("./NvidiaPanel-DdG13OX4.js"),__vite__mapDeps([17,1,2,3,4,8,18,14,19,20]))),n=t.lazy(()=>a(()=>import("./FilesPanel-CeC6YUSd.js"),__vite__mapDeps([21,1,2,22,8,4,23,9,24,25,18,26,27,28,29,30,31,7,32,33,34,35,11,13,36,37,38,20,39,10,40,41,42,43,44,45,46,47,48,19,49,15,12,50,51]))),c=t.lazy(()=>a(()=>import("./LogsPanel-CpinKwaZ.js"),__vite__mapDeps([52,1,2,3,4,8]))),m=t.lazy(()=>a(()=>import("./TelemetryPanel-dVr3yQQr.js"),__vite__mapDeps([53,1,2,5,9,54,12,11]))),x=[{id:"homelab",label:"Homelab"},{id:"gpu",label:"GPU / NVIDIA"},{id:"files",label:"Files"},{id:"logs",label:"Logs"},{id:"telemetry",label:"Telemetry"}];function p(){const[l,o]=t.useState("homelab");return e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"shrink-0 px-5 pt-4 pb-0",children:[e.jsx("h1",{className:"text-sm font-semibold text-text mb-3",children:"Infrastructure"}),e.jsx("div",{className:"flex items-center gap-0.5 border-b border-border/50",children:x.map(s=>e.jsxs("button",{onClick:()=>o(s.id),className:i("px-3 py-2 text-xs font-medium transition-colors relative",l===s.id?"text-accent":"text-text-muted hover:text-text-secondary"),children:[s.label,l===s.id&&e.jsx("div",{className:"absolute bottom-0 left-1 right-1 h-[2px] bg-accent rounded-full"})]},s.id))})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-auto p-5",children:e.jsxs(t.Suspense,{fallback:e.jsx("div",{className:"skeleton-shimmer h-40 rounded-lg"}),children:[l==="homelab"&&e.jsx(r,{}),l==="gpu"&&e.jsx(d,{}),l==="files"&&e.jsx(n,{}),l==="logs"&&e.jsx(c,{}),l==="telemetry"&&e.jsx(m,{})]})})]})}export{p as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,j as t,X as N}from"./index-Cml2x9pA.js";import{c as g}from"./clsx-B-dksMZM.js";import{C as w}from"./check-CuRYh4Zh.js";import{P as S}from"./pencil-BK5IU6o0.js";function P({value:s,onSave:h,placeholder:p,multiline:a=!1,className:k,displayValue:E,emptyLabel:j="—",hidePencil:C=!1,maxLength:x,title:v}){const[i,o]=r.useState(!1),[c,l]=r.useState(s),[f,y]=r.useState(!1),n=r.useRef(null);r.useEffect(()=>{i&&n.current&&(n.current.focus(),"select"in n.current&&n.current.select())},[i]),r.useEffect(()=>{i||l(s)},[s,i]);const u=async()=>{if(c===s){o(!1);return}y(!0);try{await h(c),o(!1)}catch{}finally{y(!1)}},m=()=>{l(s),o(!1)},b=e=>{e.key==="Enter"&&!a||e.key==="Enter"&&a&&e.metaKey?(e.preventDefault(),u()):e.key==="Escape"&&(e.preventDefault(),m())};if(i){const e=g("bg-bg-tertiary border border-accent/60 rounded px-2 py-1 text-sm text-text","focus:outline-none focus:border-accent","w-full",a&&"resize-none min-h-[60px]");return t.jsxs("span",{className:"inline-flex items-start gap-1 w-full",children:[a?t.jsx("textarea",{ref:n,value:c,onChange:d=>l(d.target.value),onKeyDown:b,placeholder:p,maxLength:x,className:e,disabled:f}):t.jsx("input",{ref:n,type:"text",value:c,onChange:d=>l(d.target.value),onKeyDown:b,placeholder:p,maxLength:x,className:e,disabled:f}),t.jsx("button",{onClick:u,disabled:f,className:"text-success hover:bg-success/10 rounded p-1 shrink-0",title:a?"Save (Cmd+Enter)":"Save (Enter)",type:"button",children:t.jsx(w,{size:14})}),t.jsx("button",{onClick:m,disabled:f,className:"text-text-muted hover:bg-bg-tertiary rounded p-1 shrink-0",title:"Cancel (Esc)",type:"button",children:t.jsx(N,{size:14})})]})}const D=E??(s&&s.length>0?s:j);return t.jsxs("span",{className:g("inline-flex items-center gap-1 cursor-pointer group","hover:bg-bg-tertiary rounded px-1 -mx-1",k),onClick:()=>o(!0),title:v??"Click to edit",role:"button",tabIndex:0,onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),o(!0))},children:[t.jsx("span",{children:D}),!C&&t.jsx(S,{size:10,className:"text-text-muted opacity-0 group-hover:opacity-60 transition-opacity shrink-0"})]})}export{P as I};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as e}from"./index-Cml2x9pA.js";import{c as u}from"./clsx-B-dksMZM.js";const m=l.forwardRef(({icon:s,error:t,label:o,className:a,id:n,...d},c)=>{const x=l.useId(),r=n??x,i=`${r}-error`;return e.jsxs("div",{className:"w-full",children:[o&&e.jsx("label",{htmlFor:r,className:"mb-1 block text-xs font-medium text-text",children:o}),e.jsxs("div",{className:"relative",children:[s&&e.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-text-muted pointer-events-none",children:s}),e.jsx("input",{ref:c,id:r,"aria-invalid":t?!0:void 0,"aria-describedby":t?i:void 0,className:u("w-full rounded-lg border bg-bg py-2 text-sm text-text outline-none transition-colors","placeholder:text-text-muted","focus-visible:ring-2 focus-visible:ring-accent/60 focus-visible:ring-offset-1 focus-visible:ring-offset-bg",s?"pl-10 pr-3":"px-3",t?"border-error focus:border-error":"border-border focus:border-accent",a),...d})]}),t&&e.jsx("p",{id:i,role:"alert",className:"mt-1 text-xs text-error",children:t})]})});m.displayName="Input";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,j as e,k as B,aq as A,E as T,aa as S,b as C,$ as F,ab as K}from"./index-Cml2x9pA.js";import{P as U}from"./PageHeader-DdrbS1aq.js";import{C as q}from"./circle-check-big-Bkba568b.js";import{P as R}from"./plug-DvcpOalj.js";import{S as I}from"./save-DwR9wQVu.js";import{C as M}from"./chevron-right-DbLSHmff.js";const k=[{id:"anthropic",label:"Anthropic",fieldKey:"anthropicKey",fieldType:"key",placeholder:"sk-ant-..."},{id:"openai",label:"OpenAI",fieldKey:"openaiKey",fieldType:"key",placeholder:"sk-..."},{id:"google",label:"Google AI",fieldKey:"googleKey",fieldType:"key",placeholder:"AIza..."},{id:"groq",label:"Groq",fieldKey:"groqKey",fieldType:"key",placeholder:"gsk_..."},{id:"mistral",label:"Mistral",fieldKey:"mistralKey",fieldType:"key",placeholder:"API key"},{id:"openrouter",label:"OpenRouter",fieldKey:"openrouterKey",fieldType:"key",placeholder:"sk-or-..."},{id:"fireworks",label:"Fireworks AI",fieldKey:"fireworksKey",fieldType:"key",placeholder:"API key"},{id:"xai",label:"xAI (Grok)",fieldKey:"xaiKey",fieldType:"key",placeholder:"xai-..."},{id:"together",label:"Together AI",fieldKey:"togetherKey",fieldType:"key",placeholder:"API key"},{id:"deepseek",label:"DeepSeek",fieldKey:"deepseekKey",fieldType:"key",placeholder:"sk-..."},{id:"perplexity",label:"Perplexity",fieldKey:"perplexityKey",fieldType:"key",placeholder:"pplx-..."},{id:"ollama",label:"Ollama",fieldKey:"ollamaUrl",fieldType:"url",placeholder:"http://localhost:11434"}];function O({configured:a}){return e.jsxs("span",{className:`inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium ${a?"bg-success/10 text-success":"bg-border-light/20 text-text-muted"}`,children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${a?"bg-success":"bg-border-light"}`}),a?"Configured":"Not configured"]})}function _({provider:a,configured:b,currentUrl:r,onSave:p,saving:v}){const[y,f]=o.useState(!1),[i,x]=o.useState(a.fieldType==="url"&&r||""),[u,g]=o.useState(!1),h=a.fieldType==="key",c=v===a.id;return e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary",children:[e.jsxs("button",{onClick:()=>f(!y),className:"flex w-full items-center justify-between px-4 py-3 text-left",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[y?e.jsx(F,{className:"h-4 w-4 text-text-muted"}):e.jsx(M,{className:"h-4 w-4 text-text-muted"}),e.jsx("span",{className:"text-sm font-medium text-text",children:a.label})]}),e.jsx(O,{configured:b})]}),y&&e.jsxs("div",{className:"border-t border-bg-tertiary px-4 py-4 space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-xs text-text-muted",children:h?"API Key":"Base URL"}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:`integration-${a.id}`,name:`integration-${a.id}`,type:h&&!u?"password":"text",value:i,onChange:j=>x(j.target.value),placeholder:a.placeholder,className:"w-full rounded-lg border border-border bg-bg px-3 py-2 pr-10 text-sm text-text outline-none focus:border-accent"}),h&&e.jsx("button",{type:"button",onClick:()=>g(!u),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary",children:u?e.jsx(A,{className:"h-4 w-4"}):e.jsx(T,{className:"h-4 w-4"})})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{onClick:()=>p(a.fieldKey,i),disabled:c||!i,className:"flex items-center gap-2 rounded-lg bg-accent px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-accent/80 disabled:opacity-50",children:[e.jsx(I,{className:"h-3.5 w-3.5"}),c?"Saving...":"Save"]})})]})]})}function W(){const[a,b]=o.useState({}),[r,p]=o.useState({clientIdSet:!1,clientSecretSet:!1}),[v,y]=o.useState(!0),[f,i]=o.useState(null),[x,u]=o.useState(null),[g,h]=o.useState(""),[c,j]=o.useState(""),[N,P]=o.useState(!1);o.useEffect(()=>{(async()=>{var t;try{const l=await S();if(l.providers&&b(l.providers),(t=l.oauth)!=null&&t.google){const m=l.oauth.google;try{const n=await(await C("/api/auth/google/status")).json();m.connected=n.connected,m.email=n.email}catch{}p(m)}}catch(l){d("error",`Couldn't load integrations — try again. (${l instanceof Error?l.message:"unknown error"})`)}finally{y(!1)}})()},[]);const G=()=>{window.location.href="/api/auth/google/start"},E=async()=>{try{await C("/api/auth/google/disconnect",{method:"POST"}),p(s=>({...s,connected:!1,email:void 0})),d("success","Google account disconnected")}catch{d("error","Failed to disconnect")}},d=(s,t)=>{u({type:s,message:t}),setTimeout(()=>u(null),3e3)},$=async(s,t)=>{var m,w;const l=((m=k.find(n=>n.fieldKey===s))==null?void 0:m.id)||s;i(l);try{await K({[s]:t});const n=await S();n.providers&&b(n.providers),d("success",`${((w=k.find(L=>L.fieldKey===s))==null?void 0:w.label)||"Provider"} saved`)}catch(n){d("error",n instanceof Error?n.message:"Failed to save")}finally{i(null)}},D=async()=>{var s;i("oauth");try{const t={};g&&(t.googleOAuthClientId=g),c&&(t.googleOAuthClientSecret=c),await K(t);const l=await S();(s=l.oauth)!=null&&s.google&&p(l.oauth.google),d("success","Google OAuth settings saved"),h(""),j("")}catch(t){d("error",t instanceof Error?t.message:"Failed to save")}finally{i(null)}};return v?e.jsx("div",{className:"space-y-4",children:Array.from({length:4}).map((s,t)=>e.jsx("div",{className:"h-14 animate-pulse rounded-xl border border-border bg-bg-secondary"},t))}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(U,{title:"Integrations",subtitle:"Configure LLM providers and external service connections",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Tools"},{label:"Integrations"}]}),x&&e.jsxs("div",{className:`flex items-center gap-2 rounded-lg border px-4 py-2 text-sm ${x.type==="success"?"border-success/50 text-success":"border-error/50 text-error"}`,children:[x.type==="success"?e.jsx(q,{className:"h-4 w-4"}):e.jsx(B,{className:"h-4 w-4"}),x.message]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-text-muted mb-3",children:"LLM Providers"}),e.jsx("div",{className:"space-y-2",children:k.map(s=>{const t=a[s.id],l=s.id==="ollama"?!!(t!=null&&t.baseUrl):!!(t!=null&&t.configured);return e.jsx(_,{provider:s,configured:l,currentUrl:s.fieldType==="url"?(t==null?void 0:t.baseUrl)||"":void 0,onSave:$,saving:f},s.id)})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-text-muted mb-3",children:"Google Services (OAuth)"}),e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium text-text",children:"Google OAuth 2.0"}),e.jsx("p",{className:"text-xs text-text-muted mt-0.5",children:r.connected&&r.email?`Connected as ${r.email}`:"Gmail, Drive, Calendar, Docs, Sheets, Tasks"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(O,{configured:!!r.connected}),r.clientIdSet&&!r.connected&&e.jsxs("button",{onClick:G,className:"flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-xs font-medium text-white hover:bg-accent/80 transition-colors",children:[e.jsx(R,{className:"h-3.5 w-3.5"}),"Connect Google"]}),r.connected&&e.jsx("button",{onClick:E,className:"flex items-center gap-1.5 rounded-lg border border-red-500/30 px-3 py-1.5 text-xs font-medium text-red-400 hover:bg-red-500/10 transition-colors",children:"Disconnect"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-xs text-text-muted",children:"Client ID"}),e.jsx("input",{id:"integration-google-client-id",name:"integration-google-client-id",type:"text",value:g,onChange:s=>h(s.target.value),placeholder:r.clientIdSet?"(configured)":"your-client-id.apps.googleusercontent.com",className:"w-full rounded-lg border border-border bg-bg px-3 py-2 text-sm text-text outline-none focus:border-accent"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-xs text-text-muted",children:"Client Secret"}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"integration-google-client-secret",name:"integration-google-client-secret",type:N?"text":"password",value:c,onChange:s=>j(s.target.value),placeholder:r.clientSecretSet?"(configured)":"GOCSPX-...",className:"w-full rounded-lg border border-border bg-bg px-3 py-2 pr-10 text-sm text-text outline-none focus:border-accent"}),e.jsx("button",{type:"button",onClick:()=>P(!N),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary",children:N?e.jsx(A,{className:"h-4 w-4"}):e.jsx(T,{className:"h-4 w-4"})})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("button",{onClick:D,disabled:f==="oauth"||!g&&!c,className:"flex items-center gap-2 rounded-lg bg-accent px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-accent/80 disabled:opacity-50",children:[e.jsx(I,{className:"h-3.5 w-3.5"}),f==="oauth"?"Saving...":"Save OAuth Settings"]})})]})]})]})}export{W as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AutopilotPanel-Cj8oKxWv.js","assets/index-Cml2x9pA.js","assets/index-yWybhcfI.css","assets/PageHeader-DdrbS1aq.js","assets/chevron-right-DbLSHmff.js","assets/WorkflowsPanel-zsFqsLdn.js","assets/Button-MdXmb4_n.js","assets/clsx-B-dksMZM.js","assets/Input-CBTwa_Iw.js","assets/InlineEditableField-DgMrLDj1.js","assets/check-CuRYh4Zh.js","assets/pencil-BK5IU6o0.js","assets/ConfirmDialog-VErHWAbo.js","assets/Modal-ybPGvlQs.js","assets/refresh-cw-C-iZkzuS.js","assets/plus-Dpo1qfrl.js","assets/play-Cl1nC_gc.js","assets/pause-BT1Bc2q3.js","assets/trash-2-CTeyjxD_.js","assets/clock-JyQAYy6X.js","assets/toggle-right-DTmrC5RD.js","assets/book-open-ohEXgUsS.js","assets/LearningPanel-C_JzSbJU.js","assets/lightbulb-BZJNK69S.js","assets/TitanCanvas-xHAJqwG2.js","assets/zoom-out-D47_pRAO.js","assets/square-BBC-JKzY.js","assets/file-text-Cfawu8Bs.js","assets/settings-Dbwd1_-c.js","assets/server-BzisF3LL.js","assets/network-C9RXQGrV.js","assets/terminal-DaBIlWEM.js","assets/save-DwR9wQVu.js","assets/rotate-ccw-qzrB3SNw.js","assets/search-D10l0m3-.js","assets/send-DtXGsaFW.js","assets/message-square-CRsG9u6_.js","assets/mic-B32RHc7Y.js","assets/flask-conical-Ql8QxhgY.js","assets/archive-Bh689DNg.js","assets/radio-C5c9IyqX.js","assets/test-tube-CDATRD5t.js","assets/VoiceOverlay-Br4QnCtw.js","assets/volume-2-DYDBmm3M.js","assets/folder-DAdIw-Pb.js","assets/shield-check-CXlDJyAW.js","assets/external-link-DZ_rZsIt.js","assets/bot-DvEcyQcD.js","assets/wifi-off-BBuIGbiP.js","assets/chart-column-w3goFd5f.js","assets/link-CnFkBkaY.js","assets/TitanCanvas-BfitWg9R.css","assets/trending-up-CXPRjRV4.js","assets/MemoryGraphPanel-BnD5jRqf.js","assets/SelfImprovePanel-YE3hT8jK.js","assets/circle-check-big-Bkba568b.js","assets/trophy-DbVdXRtU.js","assets/PersonasPanel-CMMQ3nh3.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as o,j as e,_ as t}from"./index-Cml2x9pA.js";import{c as a}from"./clsx-B-dksMZM.js";const i=o.lazy(()=>t(()=>import("./AutopilotPanel-Cj8oKxWv.js"),__vite__mapDeps([0,1,2,3,4]))),n=o.lazy(()=>t(()=>import("./WorkflowsPanel-zsFqsLdn.js"),__vite__mapDeps([5,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))),d=o.lazy(()=>t(()=>import("./LearningPanel-C_JzSbJU.js"),__vite__mapDeps([22,1,2,3,4,14,21,23,24,25,12,13,7,6,26,15,27,28,29,30,31,32,11,33,34,35,36,37,38,19,39,40,41,42,43,44,10,45,46,47,48,49,50,18,51,52]))),c=o.lazy(()=>t(()=>import("./MemoryGraphPanel-BnD5jRqf.js"),__vite__mapDeps([53,1,2,12,13,7,6,30,25,14,18,34]))),m=o.lazy(()=>t(()=>import("./SelfImprovePanel-YE3hT8jK.js"),__vite__mapDeps([54,1,2,3,4,14,55,19,56,52,47,28,16,31,40,18]))),x=o.lazy(()=>t(()=>import("./PersonasPanel-CMMQ3nh3.js"),__vite__mapDeps([57,1,2]))),p=[{id:"autopilot",label:"Autopilot"},{id:"workflows",label:"Workflows"},{id:"learning",label:"Learning"},{id:"memory",label:"Memory & Graph"},{id:"self-improve",label:"Self-Improve"},{id:"personas",label:"Personas"}];function f(){const[l,r]=o.useState("autopilot");return e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"shrink-0 px-5 pt-4 pb-0",children:[e.jsx("h1",{className:"text-sm font-semibold text-text mb-3",children:"Intelligence"}),e.jsx("div",{className:"flex items-center gap-0.5 border-b border-border/50",children:p.map(s=>e.jsxs("button",{onClick:()=>r(s.id),className:a("px-3 py-2 text-xs font-medium transition-colors relative",l===s.id?"text-accent":"text-text-muted hover:text-text-secondary"),children:[s.label,l===s.id&&e.jsx("div",{className:"absolute bottom-0 left-1 right-1 h-[2px] bg-accent rounded-full"})]},s.id))})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-auto p-5",children:e.jsxs(o.Suspense,{fallback:e.jsx("div",{className:"skeleton-shimmer h-40 rounded-lg"}),children:[l==="autopilot"&&e.jsx(i,{}),l==="workflows"&&e.jsx(n,{}),l==="learning"&&e.jsx(d,{}),l==="memory"&&e.jsx(c,{}),l==="self-improve"&&e.jsx(m,{}),l==="personas"&&e.jsx(x,{})]})})]})}export{f as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,j as e,W as g,P as j,b as c}from"./index-Cml2x9pA.js";import{P as f}from"./PageHeader-DdrbS1aq.js";import{R as N}from"./refresh-cw-C-iZkzuS.js";import{B as u}from"./book-open-ohEXgUsS.js";import{L as v}from"./lightbulb-BZJNK69S.js";import{D as y}from"./TitanCanvas-xHAJqwG2.js";import{T as C}from"./trending-up-CXPRjRV4.js";import"./chevron-right-DbLSHmff.js";import"./zoom-out-D47_pRAO.js";import"./ConfirmDialog-VErHWAbo.js";import"./Modal-ybPGvlQs.js";import"./clsx-B-dksMZM.js";import"./Button-MdXmb4_n.js";import"./square-BBC-JKzY.js";import"./plus-Dpo1qfrl.js";import"./file-text-Cfawu8Bs.js";import"./settings-Dbwd1_-c.js";import"./server-BzisF3LL.js";import"./network-C9RXQGrV.js";import"./terminal-DaBIlWEM.js";import"./save-DwR9wQVu.js";import"./pencil-BK5IU6o0.js";import"./rotate-ccw-qzrB3SNw.js";import"./search-D10l0m3-.js";import"./send-DtXGsaFW.js";import"./message-square-CRsG9u6_.js";import"./mic-B32RHc7Y.js";import"./flask-conical-Ql8QxhgY.js";import"./clock-JyQAYy6X.js";import"./archive-Bh689DNg.js";import"./radio-C5c9IyqX.js";import"./test-tube-CDATRD5t.js";import"./VoiceOverlay-Br4QnCtw.js";import"./volume-2-DYDBmm3M.js";import"./folder-DAdIw-Pb.js";import"./check-CuRYh4Zh.js";import"./shield-check-CXlDJyAW.js";import"./external-link-DZ_rZsIt.js";import"./bot-DvEcyQcD.js";import"./wifi-off-BBuIGbiP.js";import"./chart-column-w3goFd5f.js";import"./link-CnFkBkaY.js";import"./trash-2-CTeyjxD_.js";function w(t){return t<3600?`${Math.floor(t/60)}m`:t<86400?`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m`:`${Math.floor(t/86400)}d ${Math.floor(t%86400/3600)}h`}function k(t){return t<1e3?String(t):t<1e6?`${(t/1e3).toFixed(1)}K`:`${(t/1e6).toFixed(2)}M`}function a({icon:t,label:d,value:s,color:l,sub:o}){return e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{className:"flex h-6 w-6 items-center justify-center rounded-md",style:{backgroundColor:l+"15"},children:e.jsx(t,{className:"h-3.5 w-3.5",style:{color:l}})}),e.jsx("p",{className:"text-xs text-text-muted",children:d})]}),e.jsx("p",{className:"text-2xl font-bold text-text",children:s}),o&&e.jsx("p",{className:"text-[10px] text-text-muted mt-1",children:o})]})}function be(){const[t,d]=i.useState(null),[s,l]=i.useState(null),[o,b]=i.useState(null),[h,x]=i.useState(!0),p=()=>{x(!0),Promise.all([c("/api/learning").then(r=>r.ok?r.json():null).catch(()=>null),c("/api/stats").then(r=>r.ok?r.json():null).catch(()=>null),c("/api/graphiti").then(r=>r.ok?r.json():null).catch(()=>null)]).then(([r,m,n])=>{d(r),l(m),b(n?{nodeCount:n.nodeCount||0,edgeCount:n.edgeCount||0,episodeCount:n.episodeCount||0}:null)}).finally(()=>x(!1))};return i.useEffect(()=>{p()},[]),h?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"h-10 animate-pulse rounded-xl bg-bg-secondary"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Array.from({length:8}).map((r,m)=>e.jsx("div",{className:"h-24 animate-pulse rounded-xl bg-bg-secondary"},m))})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(f,{title:"Learning",subtitle:"Knowledge base, tool mastery, and memory systems",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Memory"},{label:"Learning"}],actions:e.jsxs("button",{onClick:p,className:"flex items-center gap-1.5 rounded-lg bg-bg-tertiary px-3 py-1.5 text-xs text-text-secondary hover:bg-border hover:text-text transition-colors",children:[e.jsx(N,{className:"h-3.5 w-3.5"})," Refresh"]})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-text-muted mb-3",children:"Knowledge Base"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(a,{icon:u,label:"Knowledge Entries",value:(t==null?void 0:t.knowledgeEntries)??0,color:"#6366f1",sub:"Facts, patterns, corrections"}),e.jsx(a,{icon:g,label:"Tools Tracked",value:(t==null?void 0:t.toolsTracked)??0,color:"#22d3ee",sub:"Success rates learned"}),e.jsx(a,{icon:j,label:"Error Patterns",value:(t==null?void 0:t.errorPatterns)??0,color:"#f59e0b",sub:"Known failure modes"}),e.jsx(a,{icon:v,label:"Corrections",value:(t==null?void 0:t.corrections)??0,color:"#34d399",sub:"User-taught improvements"})]})]}),o&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-text-muted mb-3",children:"Memory Graph"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(a,{icon:y,label:"Entities",value:o.nodeCount,color:"#818cf8",sub:"People, topics, projects"}),e.jsx(a,{icon:C,label:"Relationships",value:o.edgeCount,color:"#22d3ee",sub:"Connections between entities"}),e.jsx(a,{icon:u,label:"Episodes",value:o.episodeCount,color:"#34d399",sub:"Conversation memories"})]})]}),s&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium uppercase tracking-wider text-text-muted mb-3",children:"System"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-4",children:[e.jsx("p",{className:"text-xs text-text-muted",children:"Tokens Used"}),e.jsx("p",{className:"text-xl font-bold text-text",children:k(s.totalTokens)})]}),e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-4",children:[e.jsx("p",{className:"text-xs text-text-muted",children:"Requests"}),e.jsx("p",{className:"text-xl font-bold text-text",children:s.totalRequests})]}),e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-4",children:[e.jsx("p",{className:"text-xs text-text-muted",children:"Uptime"}),e.jsx("p",{className:"text-xl font-bold text-text",children:w(s.uptime)})]}),e.jsxs("div",{className:"rounded-xl border border-bg-tertiary bg-bg-secondary p-4",children:[e.jsx("p",{className:"text-xs text-text-muted",children:"Memory"}),e.jsxs("p",{className:"text-xl font-bold text-text",children:[s.memoryMB,"MB"]})]})]})]})]})}export{be as default};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{c as g,r as o,q as j,u as N,j as t,b}from"./index-Cml2x9pA.js";import{P as y}from"./PageHeader-DdrbS1aq.js";import{R as w}from"./radio-C5c9IyqX.js";import{G as S}from"./git-branch-C2qrhGGu.js";import"./chevron-right-DbLSHmff.js";/**
|
|
2
|
-
* @license lucide-react v0.513.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const k=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M9 10h6",key:"9gxzsh"}],["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"M9 17h6",key:"r8uit2"}]],M=g("file-diff",k),f=500;function I(){try{return localStorage.getItem("titan-token")||localStorage.getItem("titan_token")||""}catch{return""}}function P(u){const[h,d]=o.useState([]),[v,l]=o.useState(!1),a=o.useRef(null),p=o.useCallback(()=>{if(a.current&&(a.current.close(),a.current=null),d([]),l(!1),!u)return;const c=new URLSearchParams({sessionId:u}),n=I();n&&c.set("token",n);const i=new EventSource(`/api/studio/stream?${c.toString()}`);a.current=i,i.onopen=()=>l(!0),i.onerror=()=>l(!1),i.onmessage=m=>{try{const x=JSON.parse(m.data);if(x.type==="ready"){l(!0);return}x.type==="event"&&d(e=>{const s=[...e,x];return s.length>f&&s.splice(0,s.length-f),s})}catch{}}},[u]);return o.useEffect(()=>(p(),()=>{var c;(c=a.current)==null||c.close(),a.current=null}),[p]),{frames:h,connected:v}}function z(){var m,x;const{sessionId:u}=j(),h=N(),d=u||null,[v,l]=o.useState([]),{frames:a,connected:p}=P(d);o.useEffect(()=>{const e=()=>b("/api/studio/sessions",{headers:{"Content-Type":"application/json"}}).then(r=>r.json()).then(r=>l(r.sessions||[])).catch(()=>{});e();const s=setInterval(e,5e3);return()=>clearInterval(s)},[]);const c=o.useMemo(()=>a.filter(e=>{var s;return(s=e.raw)==null?void 0:s.diff}),[a]),n=c[c.length-1],i=o.useMemo(()=>{var s;const e=new Map;for(const r of a)(s=r.raw)!=null&&s.filePath&&e.set(r.raw.filePath,r);return[...e.values()]},[a]);return t.jsxs("div",{className:"space-y-4",children:[t.jsx(y,{title:"Live Studio",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Live Studio"}]}),t.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[t.jsx(w,{size:16,className:p?"text-green-400":"text-[var(--text-muted)]"}),t.jsx("span",{className:"text-[var(--text-secondary)]",children:p?"Watching live":d?"Connecting…":"Idle"}),t.jsxs("select",{value:d||"",onChange:e=>h(e.target.value?`/studio/${e.target.value}`:"/studio"),className:"ml-auto bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 text-xs text-[var(--text)]",children:[t.jsx("option",{value:"",children:"Select a session…"}),v.map(e=>t.jsxs("option",{value:e.sessionId,children:[e.sessionId," (",e.count,")"]},e.sessionId))]})]}),d?t.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[t.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-2 max-h-[68vh] overflow-auto",children:[t.jsxs("p",{className:"text-[10px] uppercase tracking-wide text-[var(--text-muted)] px-2 py-1",children:["Steps (",a.length,")"]}),a.length===0&&t.jsx("p",{className:"text-xs text-[var(--text-muted)] px-2",children:"Waiting for activity…"}),a.map((e,s)=>{var r;return t.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5 text-xs border-b border-[var(--border)] last:border-0",children:[t.jsx("span",{"aria-hidden":!0,children:e.icon||"•"}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("div",{className:"text-[var(--text)] truncate",children:e.captionControl||e.captionTitan||e.topic}),((r=e.raw)==null?void 0:r.tool)&&t.jsxs("div",{className:"text-[10px] text-[var(--text-muted)]",children:[e.raw.tool,e.raw.success===!1?" · failed":"",e.raw.durationMs?` · ${e.raw.durationMs}ms`:""]})]}),e.replay&&t.jsx("span",{className:"text-[9px] text-[var(--text-muted)]",children:"replay"})]},s)})]}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-2 max-h-[44vh] overflow-auto",children:[t.jsxs("div",{className:"flex items-center gap-2 px-2 py-1",children:[t.jsx(M,{size:14,className:"text-[var(--text-secondary)]"}),t.jsx("span",{className:"text-xs text-[var(--text-secondary)] truncate",children:((m=n==null?void 0:n.raw)==null?void 0:m.filePath)||"No diff yet"})]}),(x=n==null?void 0:n.raw)!=null&&x.diff?t.jsx("pre",{className:"text-[11px] leading-relaxed font-mono px-2 overflow-auto",children:n.raw.diff.split(`
|
|
7
|
-
`).map((e,s)=>t.jsx("div",{className:e.startsWith("+")?"text-green-400":e.startsWith("-")?"text-red-400":"text-[var(--text-muted)]",children:e||" "},s))}):t.jsx("p",{className:"text-xs text-[var(--text-muted)] px-2 py-3",children:"File diffs appear here as TITAN edits."})]}),t.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-2",children:[t.jsxs("div",{className:"flex items-center gap-2 px-2 py-1",children:[t.jsx(S,{size:14,className:"text-[var(--text-secondary)]"}),t.jsxs("span",{className:"text-xs text-[var(--text-secondary)]",children:["Changed files (",i.length,")"]})]}),i.length===0?t.jsx("p",{className:"text-xs text-[var(--text-muted)] px-2",children:"None yet."}):i.map((e,s)=>{var r;return t.jsx("div",{className:"text-xs px-2 py-1 text-[var(--text-secondary)] truncate",children:(r=e.raw)==null?void 0:r.filePath},s)})]})]})]}):t.jsx("div",{className:"text-[var(--text-muted)] text-sm p-6 text-center border border-[var(--border)] rounded-lg",children:"Pick a session to watch TITAN work — its steps stream on the left, file diffs on the right."})]})}export{z as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,aT as v,j as e}from"./index-Cml2x9pA.js";import{P as j}from"./PageHeader-DdrbS1aq.js";import{R as y}from"./refresh-cw-C-iZkzuS.js";import"./chevron-right-DbLSHmff.js";const x={debug:"bg-text-muted/20 text-text-secondary",info:"bg-info/20 text-info",warn:"bg-warning/20 text-warning",warning:"bg-warning/20 text-warning",error:"bg-error/20 text-error"};function R(){const[c,u]=r.useState([]),[g,m]=r.useState(!0),[i,d]=r.useState(null),[n,b]=r.useState(""),[o,h]=r.useState(100),[l,p]=r.useState(!1),s=r.useRef(null),a=r.useCallback(async()=>{try{const t=await v(n||void 0,o);u(t),d(null)}catch(t){d(t instanceof Error?t.message:"Failed to fetch logs")}finally{m(!1)}},[n,o]);return r.useEffect(()=>{a()},[a]),r.useEffect(()=>(l?s.current=setInterval(a,5e3):s.current&&(clearInterval(s.current),s.current=null),()=>{s.current&&clearInterval(s.current)}),[l,a]),g?e.jsx("div",{className:"h-96 animate-pulse rounded-xl border border-border bg-bg-secondary"}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(j,{title:"Logs",subtitle:"Recent gateway and skill activity",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"System"},{label:"Logs"}]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("select",{value:n,onChange:t=>b(t.target.value),className:"rounded-lg border border-border bg-bg px-3 py-2 text-sm text-text outline-none focus:border-accent",children:[e.jsx("option",{value:"",children:"All levels"}),e.jsx("option",{value:"debug",children:"Debug"}),e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warn",children:"Warn"}),e.jsx("option",{value:"error",children:"Error"})]}),e.jsxs("select",{value:o,onChange:t=>h(Number(t.target.value)),className:"rounded-lg border border-border bg-bg px-3 py-2 text-sm text-text outline-none focus:border-accent",children:[e.jsx("option",{value:50,children:"50 entries"}),e.jsx("option",{value:100,children:"100 entries"}),e.jsx("option",{value:200,children:"200 entries"})]}),e.jsxs("label",{className:"flex items-center gap-2 text-sm text-text-secondary",children:[e.jsx("input",{type:"checkbox",checked:l,onChange:t=>p(t.target.checked),className:"h-4 w-4 rounded border-border accent-accent"}),"Auto-refresh (5s)"]}),e.jsx("button",{onClick:a,className:"ml-auto rounded-lg p-2 text-text-secondary transition-colors hover:bg-bg-tertiary hover:text-text",title:"Refresh",children:e.jsx(y,{className:"h-4 w-4"})})]}),i&&e.jsx("div",{className:"rounded-lg border border-error/50 bg-bg-secondary px-4 py-2 text-sm text-error",children:i}),e.jsx("div",{className:"max-h-[600px] overflow-y-auto rounded-xl border border-border bg-bg-secondary",children:c.length===0?e.jsx("p",{className:"px-4 py-12 text-center text-text-muted",children:"No logs found"}):e.jsx("div",{className:"divide-y divide-border",children:c.map((t,f)=>e.jsxs("div",{className:"flex items-start gap-3 px-4 py-2.5",children:[e.jsx("span",{className:"shrink-0 font-mono text-xs text-text-muted",children:new Date(t.timestamp).toLocaleTimeString()}),e.jsx("span",{className:`shrink-0 rounded px-1.5 py-0.5 text-xs font-medium uppercase ${x[t.level]??x.debug}`,children:t.level}),e.jsx("span",{className:"min-w-0 break-all text-sm text-text",children:t.message})]},f))})})]})}export{R as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as R,r as d,j as e,G as z,ak as D,al as E,am as j,an as L,ao as F,ap as G}from"./index-Cml2x9pA.js";import{P as H}from"./PageHeader-DdrbS1aq.js";import{C as B}from"./ConfirmDialog-VErHWAbo.js";import{R as Q}from"./refresh-cw-C-iZkzuS.js";import{P as U}from"./plus-Dpo1qfrl.js";import{S as N}from"./server-BzisF3LL.js";import{P as W}from"./plug-DvcpOalj.js";import{T as q,P as J}from"./test-tube-CDATRD5t.js";import{T as K}from"./trash-2-CTeyjxD_.js";import"./chevron-right-DbLSHmff.js";import"./Modal-ybPGvlQs.js";import"./clsx-B-dksMZM.js";import"./Button-MdXmb4_n.js";function le(){const{toast:a}=R(),[n,y]=d.useState([]),[C,f]=d.useState([]),[P,u]=d.useState(!0),[p,i]=d.useState(!1),[b,g]=d.useState(null),[l,x]=d.useState(null),[m,v]=d.useState(null),[r,o]=d.useState({id:"",name:"",description:"",type:"stdio",command:"",args:"",url:""}),c=async()=>{u(!0);try{const[t,s]=await Promise.all([D(),E()]);y(t),f(s)}catch(t){a("error",`Couldn't load MCP servers — try again. (${t.message})`)}u(!1)};d.useEffect(()=>{c()},[]);const M=async()=>{try{await j({id:r.id,name:r.name,description:r.description,type:r.type,...r.type==="stdio"?{command:r.command,args:r.args.split(/\s+/).filter(Boolean)}:{url:r.url}}),i(!1),o({id:"",name:"",description:"",type:"stdio",command:"",args:"",url:""}),c(),a("success","MCP server added.")}catch(t){a("error",`Couldn't add MCP server — ${t.message}`)}},w=async t=>{try{await j({presetId:t}),c(),a("success","MCP server added.")}catch(s){a("error",`Couldn't add MCP server — ${s.message}`)}},T=async t=>{try{await G(t),c(),a("success","MCP server removed.")}catch(s){a("error",`Couldn't remove MCP server — try again. (${s.message})`)}},S=async(t,s)=>{try{await F(t,s),c(),a("success",s?"MCP server enabled.":"MCP server disabled.")}catch(I){a("error",`Couldn't update MCP server — try again. (${I.message})`)}},A=async t=>{g(t),x(null);try{const s=await L(t);x({id:t,...s})}catch(s){x({id:t,ok:!1,tools:0,error:s.message})}g(null)},k=t=>t==="connected"?"text-[var(--success)]":t==="error"?"text-[var(--error)]":"text-[var(--text-muted)]",$=t=>t==="connected"?"bg-[var(--success)]":t==="error"?"bg-[var(--error)]":"bg-[var(--text-muted)]",h=C.filter(t=>!n.some(s=>s.id===t.id));return e.jsxs("div",{className:"space-y-6",children:[e.jsx(H,{title:"MCP Connections",subtitle:"Connect to external tools via Model Context Protocol",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Tools"},{label:"MCP"}],actions:e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:c,className:"px-3 py-1.5 text-sm rounded-md border border-[var(--border)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors",children:e.jsx(Q,{size:14})}),e.jsxs("button",{onClick:()=>i(!p),className:"flex items-center gap-2 px-3 py-1.5 text-sm rounded-md bg-[var(--accent)] text-white hover:bg-[var(--accent-hover)] transition-colors",children:[e.jsx(U,{size:14})," Add Server"]})]})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:"Configured Servers"}),e.jsx("p",{className:"text-2xl font-bold text-[var(--text)]",children:n.length})]}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:"Connected"}),e.jsx("p",{className:"text-2xl font-bold text-[var(--success)]",children:n.filter(t=>t.status==="connected").length})]}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:"External Tools"}),e.jsx("p",{className:"text-2xl font-bold text-[var(--accent)]",children:n.reduce((t,s)=>t+s.toolCount,0)})]})]}),p&&e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4 space-y-4",children:[e.jsx("h2",{className:"text-sm font-semibold text-[var(--text)]",children:"Add MCP Server"}),h.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-[var(--text-muted)] mb-2",children:"Quick Add Presets"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:h.map(t=>e.jsxs("button",{onClick:()=>w(t.id),className:"flex items-center gap-2 px-3 py-1.5 text-xs rounded-md border border-[var(--border)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors",children:[e.jsx(N,{size:12})," ",t.name]},t.id))})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"ID"}),e.jsx("input",{id:"mcp-server-id",name:"mcp-server-id",value:r.id,onChange:t=>o({...r,id:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"my-server"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Name"}),e.jsx("input",{id:"mcp-server-name",name:"mcp-server-name",value:r.name,onChange:t=>o({...r,name:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"My MCP Server"})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Description"}),e.jsx("input",{id:"mcp-server-description",name:"mcp-server-description",value:r.description,onChange:t=>o({...r,description:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"What does this server do?"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Type"}),e.jsxs("select",{id:"mcp-server-type",name:"mcp-server-type",value:r.type,onChange:t=>o({...r,type:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",children:[e.jsx("option",{value:"stdio",children:"stdio (local process)"}),e.jsx("option",{value:"http",children:"HTTP (remote server)"})]})]}),r.type==="stdio"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Command"}),e.jsx("input",{id:"mcp-server-command",name:"mcp-server-command",value:r.command,onChange:t=>o({...r,command:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"npx @modelcontextprotocol/server-xxx"})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Arguments (space-separated)"}),e.jsx("input",{id:"mcp-server-args",name:"mcp-server-args",value:r.args,onChange:t=>o({...r,args:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"--port 3000"})]})]}):e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:"Server URL"}),e.jsx("input",{id:"mcp-server-url",name:"mcp-server-url",value:r.url,onChange:t=>o({...r,url:t.target.value}),className:"w-full mt-1 px-3 py-1.5 text-sm bg-[var(--bg)] border border-[var(--border)] rounded-md text-[var(--text)]",placeholder:"http://localhost:3000/mcp"})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:M,disabled:!r.id||!r.name,className:"px-4 py-1.5 text-sm rounded-md bg-[var(--accent)] text-white hover:bg-[var(--accent-hover)] disabled:opacity-40 transition-colors",children:"Add Server"}),e.jsx("button",{onClick:()=>i(!1),className:"px-4 py-1.5 text-sm rounded-md border border-[var(--border)] text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors",children:"Cancel"})]})]}),P?e.jsx("div",{className:"text-[var(--text-muted)] text-sm",children:"Loading MCP servers..."}):n.length===0?e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-8 text-center",children:[e.jsx(W,{className:"w-10 h-10 text-[var(--text-muted)] mx-auto mb-3"}),e.jsx("p",{className:"text-[var(--text-secondary)] mb-1",children:"No MCP servers configured"}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:"Add an MCP server to connect TITAN to external tools like databases, APIs, and services."})]}):e.jsx("div",{className:"space-y-3",children:n.map(t=>e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:t.type==="stdio"?e.jsx(N,{size:18,className:"text-[var(--text-muted)]"}):e.jsx(z,{size:18,className:"text-[var(--text-muted)]"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-[var(--text)]",children:t.name}),e.jsxs("span",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${$(t.status)}`}),e.jsx("span",{className:k(t.status),children:t.status})]}),t.toolCount>0&&e.jsxs("span",{className:"text-xs px-1.5 py-0.5 rounded bg-[var(--accent)]/10 text-[var(--accent)]",children:[t.toolCount," tools"]})]}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-0.5",children:t.description}),e.jsx("p",{className:"text-xs text-[var(--text-muted)] mt-1 font-mono",children:t.type==="stdio"?`${t.command} ${(t.args||[]).join(" ")}`:t.url})]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:()=>A(t.id),disabled:b===t.id,title:"Test connection",className:"p-1.5 rounded-md text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-40",children:e.jsx(q,{size:14,className:b===t.id?"animate-pulse":""})}),e.jsx("button",{onClick:()=>S(t.id,!t.enabled),title:t.enabled?"Disable":"Enable",className:`p-1.5 rounded-md transition-colors hover:bg-[var(--bg-tertiary)] ${t.enabled?"text-[var(--success)]":"text-[var(--text-muted)]"}`,children:e.jsx(J,{size:14})}),e.jsx("button",{onClick:()=>v(t.id),title:"Remove",className:"p-1.5 rounded-md text-[var(--text-muted)] hover:text-[var(--error)] hover:bg-[var(--bg-tertiary)] transition-colors",children:e.jsx(K,{size:14})})]})]}),(l==null?void 0:l.id)===t.id&&e.jsx("div",{className:`mt-3 px-3 py-2 rounded-md text-xs ${l.ok?"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20":"bg-red-500/10 text-red-400 border border-red-500/20"}`,children:l.ok?`Connected successfully — ${l.tools} tools discovered`:`Connection failed: ${l.error}`})]},t.id))}),e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsx("h2",{className:"text-sm font-semibold text-[var(--text)] mb-2",children:"About MCP"}),e.jsxs("p",{className:"text-xs text-[var(--text-muted)] leading-relaxed",children:["Model Context Protocol (MCP) is the universal standard for connecting AI agents to external tools. TITAN acts as both an MCP ",e.jsx("strong",{className:"text-[var(--text-secondary)]",children:"server"})," (exposing its tools to other agents) and an MCP ",e.jsx("strong",{className:"text-[var(--text-secondary)]",children:"client"})," (connecting to external MCP servers). Add any MCP-compatible server and its tools automatically become available in TITAN."]})]}),e.jsx(B,{open:m!==null,title:"Remove MCP server?",message:`This removes "${m}" and its tools from TITAN. This can't be undone.`,confirmLabel:"Remove",onConfirm:async()=>{const t=m;v(null),t&&await T(t)},onCancel:()=>v(null)})]})}export{le as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as ze,r as y,b as Me,j as o,X as Re}from"./index-Cml2x9pA.js";import{C as Pe}from"./ConfirmDialog-VErHWAbo.js";import{N as Ce}from"./network-C9RXQGrV.js";import{a as Te,Z as Fe,M as Ee}from"./zoom-out-D47_pRAO.js";import{R as Ie}from"./refresh-cw-C-iZkzuS.js";import{T as Ae}from"./trash-2-CTeyjxD_.js";import{S as Ye}from"./search-D10l0m3-.js";import"./Modal-ybPGvlQs.js";import"./clsx-B-dksMZM.js";import"./Button-MdXmb4_n.js";const Se={person:"#818cf8",topic:"#22d3ee",project:"#34d399",place:"#fbbf24",fact:"#f472b6",tool:"#fb923c",preference:"#a78bfa",software:"#38bdf8",system:"#e879f9",event:"#fb7185",product:"#4ade80",company:"#facc15",file:"#94a3b8",technology:"#2dd4bf",hardware:"#f97316",component:"#c084fc",feature:"#67e8f9",directory:"#a1a1aa",social_post:"#ec4899"},qe={person:"Person",topic:"Topic",project:"Project",place:"Place",fact:"Fact",tool:"Tool",preference:"Preference",software:"Software",system:"System",event:"Event",product:"Product",company:"Company",file:"File",technology:"Technology",hardware:"Hardware",component:"Component",feature:"Feature",directory:"Directory",social_post:"Social Post"},$e=["#f0abfc","#86efac","#fda4af","#7dd3fc","#d9f99d","#fcd34d"];function ce(l){const n=l==null?void 0:l.toLowerCase();if(Se[n])return Se[n];let v=0;for(let C=0;C<((n==null?void 0:n.length)??0);C++)v=(v<<5)-v+n.charCodeAt(C)|0;return $e[Math.abs(v)%$e.length]}function ke(l){const n=parseInt(l.slice(1),16);return[n>>16&255,n>>8&255,n&255]}function we(l){return typeof l=="number"&&Number.isFinite(l)}function Y(l){return we(l.x)&&we(l.y)}function De(l,n,v,C){var ee,le,he;const S=l.length;if(S===0||!Number.isFinite(v)||!Number.isFinite(C)||v<=0||C<=0)return;const q=v/2,O=C/2,$=new Map;for(let m=0;m<S;m++){const p=((ee=l[m].type)==null?void 0:ee.toLowerCase())??"unknown";$.has(p)||$.set(p,[]),$.get(p).push(m)}const P=[...$.keys()],x=new Map,F=Math.min(v,C)*.3;for(let m=0;m<P.length;m++){const p=m/P.length*Math.PI*2-Math.PI/2;x.set(P[m],{x:q+Math.cos(p)*F,y:O+Math.sin(p)*F})}for(let m=0;m<S;m++){const p=l[m];if(Y(p))continue;const W=x.get(((le=p.type)==null?void 0:le.toLowerCase())??"unknown")??{x:q,y:O},V=Math.min(v,C)*.12;p.x=W.x+(Math.random()-.5)*V,p.y=W.y+(Math.random()-.5)*V,p.vx=0,p.vy=0}const U=new Map(l.map(m=>[m.id,m])),K=Math.sqrt(S/50),D=Math.min(200,Math.max(80,Math.round(60+S*.2))),xe=4e3*K,ae=.003/K,pe=.003/K,fe=.015,Z=new Map;for(const m of n)Z.has(m.from)||Z.set(m.from,new Set),Z.has(m.to)||Z.set(m.to,new Set),Z.get(m.from).add(m.to),Z.get(m.to).add(m.from);for(let m=0;m<D;m++){const p=.9-m/D*.35,W=m/D;if(S>200)for(let r=0;r<S;r++){const u=l[r];if(!Y(u))continue;const z=Z.get(u.id)??new Set;for(let R=r+1;R<S;R++){if(!z.has(l[R].id)&&Math.random()>.2)continue;const k=l[R];if(!Y(k))continue;const t=u.x-k.x,e=u.y-k.y,s=t*t+e*e,a=Math.sqrt(s)||1,i=xe/(s+100),d=t/a*i,b=e/a*i;u.vx+=d,u.vy+=b,k.vx-=d,k.vy-=b}}else for(let r=0;r<S;r++)for(let u=r+1;u<S;u++){const z=l[r],R=l[u];if(!Y(z)||!Y(R))continue;const k=z.x-R.x,t=z.y-R.y,e=k*k+t*t,s=Math.sqrt(e)||1,a=xe/(e+100),i=k/s*a,d=t/s*a;z.vx+=i,z.vy+=d,R.vx-=i,R.vy-=d}for(const r of n){const u=U.get(r.from),z=U.get(r.to);if(!u||!z||!Y(u)||!Y(z))continue;const R=z.x-u.x,k=z.y-u.y,t=Math.sqrt(R*R+k*k)||1,e=t*ae,s=R/t*e,a=k/t*e;u.vx+=s,u.vy+=a,z.vx-=s,z.vy-=a}const V=fe*(1-W*.5);for(const r of l){if(!Y(r))continue;const u=x.get(((he=r.type)==null?void 0:he.toLowerCase())??"unknown");u&&(r.vx+=(u.x-r.x)*V,r.vy+=(u.y-r.y)*V)}for(const r of l)Y(r)&&(r.vx+=(q-r.x)*pe,r.vy+=(O-r.y)*pe);const te=40;for(const r of l)Y(r)&&(r.vx*=p,r.vy*=p,r.x+=r.vx,r.y+=r.vy,(!Number.isFinite(r.x)||!Number.isFinite(r.y))&&(r.x=q,r.y=O),r.x=Math.max(te,Math.min(Math.max(te,v-te),r.x)),r.y=Math.max(te,Math.min(Math.max(te,C-te),r.y)))}}function We(l,n,v,C,S){const q=(l+v)/2,O=(n+C)/2,$=v-l,x=-(C-n),F=$,U=Math.sqrt(x*x+F*F)||1;return{cx:q+x/U*S,cy:O+F/U*S}}function Xe(l,n,v,C,S,q,O){const $=Math.atan2(v-S,n-C),P=8,x=n-Math.cos($)*q,F=v-Math.sin($)*q;l.beginPath(),l.moveTo(x,F),l.lineTo(x-Math.cos($-Math.PI/6)*P,F-Math.sin($-Math.PI/6)*P),l.lineTo(x-Math.cos($)*P*.5,F-Math.sin($)*P*.5),l.lineTo(x-Math.cos($+Math.PI/6)*P,F-Math.sin($+Math.PI/6)*P),l.closePath(),l.fillStyle=O,l.fill()}function et(){const{toast:l}=ze(),[n,v]=y.useState(null),[C,S]=y.useState(!0),[q,O]=y.useState(null),[$,P]=y.useState(!1),[x,F]=y.useState(null),[U,K]=y.useState(null),[D,xe]=y.useState(""),[ae,pe]=y.useState(new Set),fe=y.useRef(null),Z=y.useRef(null),ee=y.useRef({x:0,y:0,zoom:1,dragging:!1,startX:0,startY:0}),le=y.useRef(0),he=y.useRef(0),m=y.useRef(new Map),p=y.useCallback(async()=>{var t;try{const e=await Me("/api/graphiti",{headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`${e.status}: ${e.statusText}`);const s=await e.json();if((t=s.nodes)!=null&&t.length){const a=Z.current,i=(a==null?void 0:a.clientWidth)??1200,d=(a==null?void 0:a.clientHeight)??600;for(const b of s.nodes){const X=m.current.get(b.id);X&&we(X.x)&&we(X.y)&&(b.x=X.x,b.y=X.y)}De(s.nodes,s.edges??[],i,d);for(const b of s.nodes)Y(b)&&m.current.set(b.id,{x:b.x,y:b.y})}v(s),O(null)}catch(e){O(e instanceof Error?e.message:"Failed to load graph"),v(null)}finally{S(!1)}},[]);y.useEffect(()=>{p()},[p]);const W=y.useMemo(()=>{if(!n)return{nodes:[],edges:[]};const t=D.toLowerCase().trim();let e=n.nodes;if(ae.size>0&&(e=e.filter(i=>{var d;return!ae.has((d=i.type)==null?void 0:d.toLowerCase())})),t){const i=new Set;for(const d of e)(d.label.toLowerCase().includes(t)||d.facts.some(b=>b.toLowerCase().includes(t)))&&i.add(d.id);for(const d of n.edges)i.has(d.from)&&i.add(d.to),i.has(d.to)&&i.add(d.from);e=e.filter(d=>i.has(d.id))}const s=new Set(e.map(i=>i.id)),a=(n.edges??[]).filter(i=>s.has(i.from)&&s.has(i.to));return{nodes:e,edges:a}},[n,D,ae]),V=y.useMemo(()=>{if(!D.trim()||!n)return null;const t=D.toLowerCase().trim(),e=n.nodes.find(s=>s.label.toLowerCase().includes(t));return(e==null?void 0:e.id)??null},[D,n]),te=async()=>{try{await Me("/api/graphiti",{method:"DELETE"}),l("success","Memory graph cleared."),p(),F(null)}catch(t){l("error",`Couldn't clear the memory graph — try again. ${t.message}`)}},r=t=>{const e=ee.current;e.zoom=Math.max(.2,Math.min(4,e.zoom*t)),K(s=>s)},u=()=>{ee.current={x:0,y:0,zoom:1,dragging:!1,startX:0,startY:0},K(t=>t)},z=t=>{pe(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})};y.useEffect(()=>{const t=fe.current;if(!t||!W.nodes.length)return;const e=t.getContext("2d");if(!e)return;const s=window.devicePixelRatio||1,a=t.getBoundingClientRect();if(!Number.isFinite(a.width)||!Number.isFinite(a.height)||a.width<=0||a.height<=0)return;t.width=a.width*s,t.height=a.height*s,e.scale(s,s);const i=a.width,d=a.height,{nodes:b,edges:X}=W,w=b.filter(Y),j=new Map(w.map(E=>[E.id,E])),H=()=>{he.current++;const E=he.current,f=ee.current;e.clearRect(0,0,i,d);const B=e.createRadialGradient(i/2,d/2,0,i/2,d/2,i*.7);B.addColorStop(0,"#0c0c14"),B.addColorStop(1,"#09090b"),e.fillStyle=B,e.fillRect(0,0,i,d),e.fillStyle="rgba(255,255,255,0.02)";const T=35*f.zoom,be=(f.x%T+T)%T,ye=(f.y%T+T)%T;for(let c=be;c<i;c+=T)for(let G=ye;G<d;G+=T)e.fillRect(c,G,1,1);for(let c=0;c<15;c++){const G=(E*.15+c*127)%i,M=(E*.1+c*173)%d,N=.02+Math.sin(E*.008+c)*.01;e.beginPath(),e.arc(G,M,1,0,Math.PI*2),e.fillStyle=`rgba(99,102,241,${N})`,e.fill()}const oe=new Set,_=(x==null?void 0:x.id)??U??V;if(_){oe.add(_);for(const c of X)c.from===_&&oe.add(c.to),c.to===_&&oe.add(c.from)}const ve=_!=null;for(const c of X){const G=j.get(c.from),M=j.get(c.to);if(!G||!M)continue;const N=ve&&(c.from===_||c.to===_);if(ve&&!N&&b.length>100)continue;const se=G.x*f.zoom+f.x,ne=G.y*f.zoom+f.y,h=M.x*f.zoom+f.x,g=M.y*f.zoom+f.y;if(se<-50&&h<-50||ne<-50&&g<-50||se>i+50&&h>i+50||ne>d+50&&g>d+50)continue;const L=X.indexOf(c),Ne=15+L%3*6,{cx:ie,cy:de}=We(se,ne,h,g,Ne*(L%2===0?1:-1));if(N&&(e.beginPath(),e.moveTo(se,ne),e.quadraticCurveTo(ie,de,h,g),e.strokeStyle="rgba(99,102,241,0.12)",e.lineWidth=5,e.stroke()),e.beginPath(),e.moveTo(se,ne),e.quadraticCurveTo(ie,de,h,g),N){const A=ce(G.type),[J,Q,me]=ke(A);e.strokeStyle=`rgba(${J},${Q},${me},0.5)`,e.lineWidth=1.8}else e.strokeStyle="rgba(100,116,139,0.04)",e.lineWidth=.5;if(e.stroke(),N){const A=Math.max(10,Math.min(24,M.size||14))*f.zoom;Xe(e,h,g,ie,de,A+3,"rgba(148,163,184,0.6)")}if(N&&c.label&&c.label!=="co_mentioned"){const J=.25*se+.5*ie+.25*h,Q=(1-.5)*(1-.5)*ne+2*(1-.5)*.5*de+.5*.5*g;e.font=`${Math.max(9,10*f.zoom)}px "Inter", system-ui, sans-serif`;const me=e.measureText(c.label).width+12;e.fillStyle="rgba(15,15,25,0.85)",e.beginPath(),e.roundRect(J-me/2,Q-11,me,18,4),e.fill(),e.strokeStyle="rgba(99,102,241,0.3)",e.lineWidth=.5,e.stroke(),e.fillStyle="var(--color-accent-light)",e.textAlign="center",e.textBaseline="middle",e.fillText(c.label,J,Q)}}for(const c of w){const G=ce(c.type),[M,N,I]=ke(G),se=Math.max(8,Math.min(24,c.size||12)),ne=Math.sin(E*.025+c.id.charCodeAt(0)*.5)*1,h=(se+ne)*f.zoom;if(!Number.isFinite(h)||h<=0)continue;const g=c.x*f.zoom+f.x,L=c.y*f.zoom+f.y;if(!Number.isFinite(g)||!Number.isFinite(L)||g<-h*3||L<-h*3||g>i+h*3||L>d+h*3)continue;const Ne=U===c.id,ie=(x==null?void 0:x.id)===c.id,de=V===c.id,A=Ne||ie||de,J=ve&&!oe.has(c.id);if(!J){const ue=A?.2:.05+Math.sin(E*.02+c.id.charCodeAt(0))*.015,ge=A?h*3.5:h*2,re=e.createRadialGradient(g,L,h*.3,g,L,ge);re.addColorStop(0,`rgba(${M},${N},${I},${ue})`),re.addColorStop(.5,`rgba(${M},${N},${I},${ue*.3})`),re.addColorStop(1,`rgba(${M},${N},${I},0)`),e.fillStyle=re,e.beginPath(),e.arc(g,L,ge,0,Math.PI*2),e.fill()}const Q=e.createRadialGradient(g-h*.3,L-h*.35,0,g,L,h);J?(Q.addColorStop(0,`rgba(${M},${N},${I},0.06)`),Q.addColorStop(1,`rgba(${M},${N},${I},0.02)`)):(Q.addColorStop(0,`rgba(${M},${N},${I},${A?.45:.25})`),Q.addColorStop(1,`rgba(${M},${N},${I},${A?.18:.07})`)),e.beginPath(),e.arc(g,L,h,0,Math.PI*2),e.fillStyle=Q,e.fill(),e.beginPath(),e.arc(g,L,h,0,Math.PI*2),J?(e.strokeStyle=`rgba(${M},${N},${I},0.08)`,e.lineWidth=.5):A?(e.strokeStyle=`rgba(${M},${N},${I},0.9)`,e.lineWidth=2.5):(e.strokeStyle=`rgba(${M},${N},${I},0.4)`,e.lineWidth=1),e.stroke(),ie&&(e.beginPath(),e.arc(g,L,h+5,0,Math.PI*2),e.setLineDash([4,4]),e.lineDashOffset=-E*.3,e.strokeStyle=`rgba(${M},${N},${I},0.4)`,e.lineWidth=1,e.stroke(),e.setLineDash([]));const me=c.facts.length>=3;if(!J&&(A||ve&&oe.has(c.id)||f.zoom>=1.3||f.zoom>=.8&&me)){const ue=f.zoom>1?20:12,ge=c.label.length>ue?c.label.slice(0,ue-1)+"…":c.label,re=Math.max(9,11*f.zoom);e.font=`600 ${re}px "Inter", system-ui, sans-serif`;const je=e.measureText(ge).width+8;if(e.fillStyle="rgba(9,9,11,0.75)",e.beginPath(),e.roundRect(g-je/2,L-re/2-1,je,re+2,3),e.fill(),e.fillStyle=A?"#fafafa":"#a1a1aa",e.textAlign="center",e.textBaseline="middle",e.fillText(ge,g,L),f.zoom>.7){const Le=Math.max(7,8*f.zoom);e.font=`500 ${Le}px "Inter", system-ui, sans-serif`,e.fillStyle=`rgba(${M},${N},${I},${A?.9:.5})`,e.fillText(c.type,g,L+h+Math.max(9,11*f.zoom))}}}le.current=requestAnimationFrame(H)};return le.current=requestAnimationFrame(H),()=>cancelAnimationFrame(le.current)},[W,U,x,V]),y.useEffect(()=>{const t=fe.current;if(!t||!W.nodes.length)return;const e=ee.current,s=(w,j)=>{const H=t.getBoundingClientRect(),E=w-H.left,f=j-H.top;for(const B of[...W.nodes].reverse()){const T=Math.max(8,Math.min(24,B.size||12))*e.zoom;if(!Y(B)||!Number.isFinite(T)||T<=0)continue;const be=B.x*e.zoom+e.x,ye=B.y*e.zoom+e.y;if(!Number.isFinite(be)||!Number.isFinite(ye))continue;const oe=E-be,_=f-ye;if(oe*oe+_*_<=(T+6)*(T+6))return B}return null},a=w=>{w.preventDefault();const j=t.getBoundingClientRect(),H=w.clientX-j.left,E=w.clientY-j.top,f=e.zoom,B=w.deltaY>0?.92:1.08;e.zoom=Math.max(.2,Math.min(4,e.zoom*B)),e.x=H-(H-e.x)*(e.zoom/f),e.y=E-(E-e.y)*(e.zoom/f),K(T=>T)},i=w=>{e.dragging=!0,e.startX=w.clientX-e.x,e.startY=w.clientY-e.y,t.style.cursor="grabbing"},d=w=>{if(e.dragging)e.x=w.clientX-e.startX,e.y=w.clientY-e.startY,K(j=>j);else{const j=s(w.clientX,w.clientY);K((j==null?void 0:j.id)??null),t.style.cursor=j?"pointer":"grab"}},b=()=>{e.dragging=!1,t.style.cursor="grab"},X=w=>{if(e.dragging)return;const j=s(w.clientX,w.clientY);F(H=>(H==null?void 0:H.id)===(j==null?void 0:j.id)?null:j??null)};return t.addEventListener("wheel",a,{passive:!1}),t.addEventListener("mousedown",i),t.addEventListener("mousemove",d),t.addEventListener("mouseup",b),t.addEventListener("mouseleave",b),t.addEventListener("click",X),()=>{t.removeEventListener("wheel",a),t.removeEventListener("mousedown",i),t.removeEventListener("mousemove",d),t.removeEventListener("mouseup",b),t.removeEventListener("mouseleave",b),t.removeEventListener("click",X)}},[W]);const R=y.useMemo(()=>{var e;if(!n)return[];const t=new Map;for(const s of n.nodes){const a=((e=s.type)==null?void 0:e.toLowerCase())??"unknown";t.set(a,(t.get(a)??0)+1)}return[...t.entries()].sort((s,a)=>a[1]-s[1]).map(([s,a])=>({type:s,count:a}))},[n]);if(C)return o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"h-12 animate-pulse rounded-xl bg-bg-secondary"}),o.jsx("div",{className:"animate-pulse rounded-xl border border-border bg-bg",style:{height:"60vh",minHeight:400}})]});const k=n&&n.nodes.length>0;return o.jsxs("div",{className:"space-y-4",ref:Z,children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-accent/10",children:o.jsx(Ce,{className:"h-4 w-4 text-accent-hover"})}),o.jsxs("div",{children:[o.jsx("h2",{className:"text-lg font-semibold text-text",children:"Memory Graph"}),o.jsx("p",{className:"text-xs text-text-muted",children:"Temporal knowledge graph powered by entity extraction"})]})]}),o.jsxs("div",{className:"flex items-center gap-1.5",children:[k&&o.jsxs(o.Fragment,{children:[o.jsx("button",{onClick:()=>r(1.2),className:"rounded-lg p-1.5 text-text-muted hover:bg-bg-tertiary hover:text-text transition-colors",title:"Zoom in",children:o.jsx(Te,{className:"h-4 w-4"})}),o.jsx("button",{onClick:()=>r(.8),className:"rounded-lg p-1.5 text-text-muted hover:bg-bg-tertiary hover:text-text transition-colors",title:"Zoom out",children:o.jsx(Fe,{className:"h-4 w-4"})}),o.jsx("button",{onClick:u,className:"rounded-lg p-1.5 text-text-muted hover:bg-bg-tertiary hover:text-text transition-colors",title:"Fit view",children:o.jsx(Ee,{className:"h-4 w-4"})}),o.jsx("div",{className:"mx-1 h-4 w-px bg-bg-tertiary"})]}),o.jsxs("button",{onClick:p,className:"flex items-center gap-1.5 rounded-lg bg-bg-tertiary px-3 py-1.5 text-xs text-text-secondary hover:bg-border hover:text-text transition-colors",children:[o.jsx(Ie,{className:"h-3.5 w-3.5"})," Refresh"]}),o.jsxs("button",{onClick:()=>P(!0),className:"flex items-center gap-1.5 rounded-lg bg-bg-tertiary px-3 py-1.5 text-xs text-error hover:bg-error/10 transition-colors",children:[o.jsx(Ae,{className:"h-3.5 w-3.5"})," Clear"]})]})]}),q&&o.jsx("div",{className:"rounded-xl border border-error/50 bg-error/5 p-4 text-sm text-error",children:q}),o.jsx("div",{className:"grid grid-cols-3 gap-3",children:[{label:"Entities",value:(n==null?void 0:n.nodeCount)??0,color:"var(--color-accent-hover)"},{label:"Relationships",value:(n==null?void 0:n.edgeCount)??0,color:"var(--color-cyan)"},{label:"Episodes",value:(n==null?void 0:n.episodeCount)??0,color:"var(--color-emerald)"}].map(({label:t,value:e,color:s})=>o.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary px-4 py-3",children:[o.jsx("p",{className:"text-xs text-text-muted",children:t}),o.jsxs("div",{className:"flex items-baseline gap-2",children:[o.jsx("p",{className:"text-2xl font-bold",style:{color:s},children:e.toLocaleString()}),e>0&&o.jsx("div",{className:"h-1.5 w-1.5 rounded-full animate-pulse",style:{backgroundColor:s}})]})]},t))}),k&&o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"relative",children:[o.jsx(Ye,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-text-muted"}),o.jsx("input",{type:"text",value:D,onChange:t=>xe(t.target.value),placeholder:"Search entities and facts...",className:"w-full rounded-lg border border-border bg-bg-secondary py-2 pl-9 pr-8 text-sm text-text placeholder:text-text-muted focus:border-accent focus:outline-none"}),D&&o.jsx("button",{onClick:()=>xe(""),className:"absolute right-2 top-1/2 -translate-y-1/2 rounded p-0.5 text-text-muted hover:text-text",children:o.jsx(Re,{className:"h-3.5 w-3.5"})})]}),o.jsx("div",{className:"flex flex-wrap gap-1.5",children:R.map(({type:t,count:e})=>{const s=ce(t),a=ae.has(t);return o.jsxs("button",{onClick:()=>z(t),className:`inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] font-medium transition-all ${a?"bg-bg-tertiary/50 text-text-muted opacity-40":"bg-bg-tertiary text-text-secondary hover:brightness-110"}`,children:[o.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:a?"var(--color-border-light)":s}}),qe[t]??t.charAt(0).toUpperCase()+t.slice(1),o.jsx("span",{className:"text-text-muted",children:e})]},t)})})]}),k?o.jsxs("div",{className:"relative rounded-xl border border-border bg-bg overflow-hidden shadow-2xl shadow-black/50",style:{height:"60vh",minHeight:400},children:[o.jsx("canvas",{ref:fe,style:{width:"100%",height:"100%",cursor:"grab"}}),o.jsxs("div",{className:"absolute bottom-3 right-3 rounded-md bg-bg/80 px-2 py-1 text-[10px] text-text-muted backdrop-blur-sm border border-bg-tertiary",children:[Math.round(ee.current.zoom*100),"%"]}),(D||ae.size>0)&&o.jsxs("div",{className:"absolute top-3 left-3 rounded-md bg-bg/80 px-2 py-1 text-[10px] text-text-muted backdrop-blur-sm border border-bg-tertiary",children:["Showing ",W.nodes.length," of ",(n==null?void 0:n.nodes.length)??0," entities"]})]}):o.jsxs("div",{className:"relative rounded-xl border border-border bg-bg-secondary overflow-hidden flex flex-col items-center justify-center",style:{height:"60vh",minHeight:400},children:[o.jsx("div",{className:"flex h-14 w-14 items-center justify-center rounded-2xl bg-accent/10 border border-accent/20 mb-4",children:o.jsx(Ce,{className:"h-7 w-7 text-accent-hover"})}),o.jsx("p",{className:"text-sm font-medium text-text-secondary",children:"No entities in the graph yet"}),o.jsx("p",{className:"mt-1 max-w-sm text-center text-xs text-text-muted",children:"Start chatting with TITAN to build the knowledge graph. Entities, relationships, and facts are extracted automatically from conversations."})]}),x&&o.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary overflow-hidden",children:[o.jsxs("div",{className:"flex items-center gap-3 border-b border-bg-tertiary px-4 py-3",children:[o.jsx("div",{className:"h-3.5 w-3.5 rounded-full shadow-lg",style:{backgroundColor:ce(x.type),boxShadow:`0 0 8px ${ce(x.type)}40`}}),o.jsx("span",{className:"font-semibold text-text",children:x.label}),o.jsx("span",{className:"rounded-md bg-bg-tertiary px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-text-secondary",children:x.type})]}),o.jsxs("div",{className:"space-y-3 p-4",children:[x.facts.length>0&&o.jsxs("div",{children:[o.jsx("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-text-muted",children:"Facts"}),o.jsx("div",{className:"space-y-1.5",children:x.facts.map((t,e)=>o.jsx("p",{className:"text-xs text-[#d4d4d8] pl-3 border-l-2",style:{borderColor:ce(x.type)+"40"},children:t},e))})]}),n&&(()=>{const t=n.edges.filter(s=>s.from===x.id||s.to===x.id);if(!t.length)return null;const e=new Map(n.nodes.map(s=>[s.id,s]));return o.jsxs("div",{children:[o.jsxs("p",{className:"mb-2 text-xs font-medium uppercase tracking-wider text-text-muted",children:["Relationships (",t.length,")"]}),o.jsxs("div",{className:"space-y-1.5 max-h-48 overflow-y-auto",children:[t.slice(0,30).map((s,a)=>{const i=e.get(s.from===x.id?s.to:s.from),d=i?ce(i.type):"#64748b";return o.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[o.jsx("span",{className:"text-text-secondary",children:s.label}),o.jsx("span",{className:"text-text-muted",children:"→"}),o.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[o.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:d}}),o.jsx("span",{className:"text-[#d4d4d8]",children:(i==null?void 0:i.label)??"?"})]})]},a)}),t.length>30&&o.jsxs("p",{className:"text-[10px] text-text-muted",children:["+ ",t.length-30," more"]})]})]})})()]})]}),o.jsx(Pe,{open:$,title:"Clear the entire memory graph?",message:"This permanently deletes every entity, relationship, and episode. This cannot be undone.",confirmLabel:"Clear graph",onConfirm:async()=>{P(!1),await te()},onCancel:()=>P(!1)})]})}export{et as default};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as o,r as s,b as i,j as e,B as c}from"./index-Cml2x9pA.js";import{P as d}from"./PageHeader-DdrbS1aq.js";import"./chevron-right-DbLSHmff.js";/**
|
|
2
|
-
* @license lucide-react v0.513.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const m=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],x=o("star",m),p={"always-on":"bg-green-500/10 text-green-400 border-green-500/30","opt-in":"bg-green-500/10 text-green-400 border-green-500/30",connected:"bg-blue-500/10 text-blue-400 border-blue-500/30",unavailable:"bg-slate-500/10 text-slate-400 border-slate-500/30"},b={"always-on":"always-on","opt-in":"enabled",connected:"connected",unavailable:"inactive"};function g(){const[t,r]=s.useState(null),[n,l]=s.useState(!0);return s.useEffect(()=>{i("/api/memory/taxonomy",{headers:{"Content-Type":"application/json"}}).then(a=>a.json()).then(r).catch(()=>r(null)).finally(()=>l(!1))},[]),n?e.jsx("div",{className:"text-[var(--text-muted)]",children:"Loading memory taxonomy…"}):t?e.jsxs("div",{className:"space-y-6",children:[e.jsx(d,{title:"Memory Taxonomy",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Knowledge"},{label:"Memory Taxonomy"}]}),e.jsxs("div",{className:"flex items-center gap-2 text-[var(--text-secondary)]",children:[e.jsx(c,{size:18}),e.jsxs("span",{className:"text-sm",children:[t.total," named memory types · ",t.active," active"]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:t.types.map(a=>e.jsxs("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("span",{className:"text-sm font-semibold text-[var(--text)]",children:a.label}),a.differentiator&&e.jsxs("span",{className:"flex items-center gap-1 text-[10px] text-amber-400",title:"Unique to TITAN — no competitor has a drive-backed emotional memory",children:[e.jsx(x,{size:11})," unique"]}),e.jsx("span",{className:`ml-auto text-[10px] px-2 py-0.5 rounded border ${p[a.availability]}`,children:b[a.availability]})]}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:a.captures}),e.jsxs("p",{className:"text-[11px] text-[var(--text-muted)] mt-1",children:[e.jsx("span",{className:"opacity-70",children:"Recall:"})," ",a.recall]}),e.jsx("p",{className:"text-[11px] text-[var(--text-muted)] mt-1 font-mono truncate",title:a.module,children:a.module})]},a.key))})]}):e.jsx("div",{className:"text-[var(--text-muted)]",children:"Memory taxonomy unavailable."})}export{g as default};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as v,t as w,r as n,b as h,j as e}from"./index-Cml2x9pA.js";import{P as u}from"./PageHeader-DdrbS1aq.js";import{A as k}from"./arrow-left-WkVYLm80.js";import{L as C}from"./link-CnFkBkaY.js";import{C as S}from"./clock-JyQAYy6X.js";import{S as $}from"./search-D10l0m3-.js";import{B as L}from"./book-open-ohEXgUsS.js";import"./chevron-right-DbLSHmff.js";/**
|
|
2
|
-
* @license lucide-react v0.513.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const M=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],A=v("tag",M),E={person:"var(--color-accent-hover)",topic:"var(--color-cyan)",project:"var(--color-emerald)",place:"#fbbf24",company:"#facc15",technology:"#2dd4bf",event:"#fb7185"};function d(r){return E[r==null?void 0:r.toLowerCase()]??"#94a3b8"}function b(r){const l=Math.floor((Date.now()-new Date(r).getTime())/1e3);return l<60?"just now":l<3600?`${Math.floor(l/60)}m ago`:l<86400?`${Math.floor(l/3600)}h ago`:`${Math.floor(l/86400)}d ago`}function H(){const{toast:r}=w(),[l,g]=n.useState([]),[t,i]=n.useState(null),[f,j]=n.useState(!0),[o,y]=n.useState(""),[c,N]=n.useState(""),x=n.useCallback(async()=>{try{const s=new URLSearchParams;o&&s.set("q",o),c&&s.set("type",c);const a=await h(`/api/wiki/entities?${s}`);a.ok?g(await a.json()):r("error",`Couldn't load the memory wiki — try again. (${a.status})`)}catch(s){r("error",`Couldn't load the memory wiki — try again. ${s.message}`)}finally{j(!1)}},[o,c,r]),m=async s=>{try{const a=await h(`/api/wiki/entity/${encodeURIComponent(s)}`);a.ok?i(await a.json()):r("error",`Couldn't open "${s}" — try again. (${a.status})`)}catch(a){r("error",`Couldn't open "${s}" — try again. ${a.message}`)}};n.useEffect(()=>{x()},[x]);const p=[...new Set(l.map(s=>s.type))].sort();return t?e.jsxs("div",{className:"space-y-4",children:[e.jsx(u,{title:t.name,breadcrumbs:[{label:"Memory"},{label:"Wiki",href:"/memory-wiki"},{label:t.name}],actions:e.jsxs("button",{onClick:()=>i(null),className:"flex items-center gap-1.5 rounded-lg bg-bg-tertiary px-3 py-1.5 text-xs text-text-secondary hover:text-text transition-colors",children:[e.jsx(k,{className:"h-3.5 w-3.5"})," Back to list"]})}),e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-5",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx("div",{className:"h-4 w-4 rounded-full",style:{backgroundColor:d(t.type),boxShadow:`0 0 10px ${d(t.type)}50`}}),e.jsx("h2",{className:"text-xl font-bold text-text",children:t.name}),e.jsx("span",{className:"rounded-md bg-bg-tertiary px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-text-secondary",children:t.type})]}),t.summary&&e.jsx("p",{className:"text-sm text-text-secondary mb-2",children:t.summary}),t.aliases.length>0&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[e.jsx(A,{className:"h-3 w-3"})," Also known as: ",t.aliases.join(", ")]}),e.jsxs("div",{className:"flex gap-4 mt-3 text-[10px] text-text-muted",children:[e.jsxs("span",{children:["First seen: ",new Date(t.firstSeen).toLocaleDateString()]}),e.jsxs("span",{children:["Last seen: ",b(t.lastSeen)]})]})]}),t.facts.length>0&&e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[e.jsxs("h3",{className:"text-xs font-semibold uppercase tracking-wider text-text-muted mb-3",children:["Facts (",t.facts.length,")"]}),e.jsx("div",{className:"space-y-2",children:t.facts.map((s,a)=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsx("span",{className:"text-accent mt-0.5",children:"•"}),e.jsx("span",{className:"text-text-secondary",children:s})]},a))})]}),t.related.length>0&&e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[e.jsxs("h3",{className:"text-xs font-semibold uppercase tracking-wider text-text-muted mb-3",children:[e.jsx(C,{className:"h-3 w-3 inline mr-1"})," Related (",t.related.length,")"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:t.related.map(s=>e.jsxs("button",{onClick:()=>m(s.name),className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-bg px-3 py-1.5 text-xs hover:border-accent transition-colors",children:[e.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:d(s.type)}}),e.jsx("span",{className:"text-text",children:s.name}),e.jsxs("span",{className:"text-text-muted",children:["(",s.relation,")"]})]},s.id))})]}),t.episodes.length>0&&e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[e.jsxs("h3",{className:"text-xs font-semibold uppercase tracking-wider text-text-muted mb-3",children:[e.jsx(S,{className:"h-3 w-3 inline mr-1"})," Episode History (",t.episodes.length,")"]}),e.jsx("div",{className:"space-y-2 max-h-[300px] overflow-y-auto",children:t.episodes.map(s=>e.jsxs("div",{className:"border-l-2 border-border pl-3 py-1",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-text-muted mb-0.5",children:[e.jsx("span",{children:new Date(s.createdAt).toLocaleString()}),e.jsx("span",{className:"rounded bg-bg-tertiary px-1.5 py-0.5",children:s.source})]}),e.jsx("p",{className:"text-xs text-text-secondary",children:s.content})]},s.id))})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(u,{title:"Memory Wiki",breadcrumbs:[{label:"Memory"},{label:"Wiki"}]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx($,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-text-muted"}),e.jsx("input",{type:"text",value:o,onChange:s=>y(s.target.value),placeholder:"Search entities, facts, summaries...",className:"w-full rounded-lg border border-border bg-bg-secondary py-2 pl-9 pr-4 text-sm text-text placeholder:text-text-muted focus:border-accent focus:outline-none"})]}),e.jsxs("select",{value:c,onChange:s=>N(s.target.value),className:"rounded-lg border border-border bg-bg-secondary px-3 py-2 text-sm text-text-secondary focus:border-accent focus:outline-none",children:[e.jsx("option",{value:"",children:"All types"}),p.map(s=>e.jsx("option",{value:s,children:s},s))]})]}),e.jsxs("div",{className:"flex gap-3 text-xs text-text-muted",children:[e.jsxs("span",{children:[l.length," entities"]}),e.jsx("span",{children:"•"}),e.jsxs("span",{children:[p.length," types"]})]}),f?e.jsx("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:9}).map((s,a)=>e.jsx("div",{className:"h-24 animate-pulse rounded-xl border border-border bg-bg-secondary"},a))}):e.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3",children:[l.map(s=>e.jsxs("button",{onClick:()=>m(s.name),className:"rounded-xl border border-border bg-bg-secondary p-4 text-left hover:border-accent transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full",style:{backgroundColor:d(s.type)}}),e.jsx("span",{className:"font-medium text-sm text-text truncate",children:s.name})]}),e.jsx("p",{className:"text-xs text-text-secondary line-clamp-2 mb-2",children:s.summary||"No summary"}),e.jsxs("div",{className:"flex items-center justify-between text-[10px] text-text-muted",children:[e.jsx("span",{className:"capitalize",children:s.type}),e.jsxs("span",{children:[s.factCount," facts"]}),e.jsx("span",{children:b(s.lastSeen)})]})]},s.id)),l.length===0&&e.jsxs("div",{className:"col-span-full py-12 text-center",children:[e.jsx(L,{className:"h-8 w-8 text-text-muted mx-auto mb-2"}),e.jsx("p",{className:"text-text-muted",children:"No entities found"})]})]})]})}export{H as default};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{c as l,r as n,j as e,au as y,av as j,aw as N,ax as f,ay as v}from"./index-Cml2x9pA.js";import{D as k}from"./DataTable-BCqSUuN7.js";import{P as w}from"./PageHeader-DdrbS1aq.js";import{R as P}from"./refresh-cw-C-iZkzuS.js";import{S as C}from"./shield-check-CXlDJyAW.js";import"./chevron-right-DbLSHmff.js";/**
|
|
2
|
-
* @license lucide-react v0.513.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const R=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]],M=l("shield-x",R);/**
|
|
7
|
-
* @license lucide-react v0.513.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const S=[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]],A=l("unplug",S);function q(){const[d,i]=n.useState([]),[o,m]=n.useState([]),[x,h]=n.useState(!0),[c,a]=n.useState(null),r=async()=>{try{const[s,t]=await Promise.all([y(),j()]);i(s),m(t),a(null)}catch(s){a(s instanceof Error?s.message:"Failed to fetch mesh data")}finally{h(!1)}};n.useEffect(()=>{r()},[]);const p=async s=>{try{await N(s),await r()}catch(t){a(t instanceof Error?t.message:"Failed to approve peer")}},g=async s=>{try{await f(s),await r()}catch(t){a(t instanceof Error?t.message:"Failed to reject peer")}},u=async s=>{try{await v(s),await r()}catch(t){a(t instanceof Error?t.message:"Failed to revoke peer")}},b=[{key:"nodeId",header:"Node ID",render:s=>e.jsx("span",{className:"font-mono text-xs",children:s.nodeId})},{key:"url",header:"URL"},{key:"status",header:"Status",render:s=>e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-success"}),e.jsx("span",{className:"capitalize",children:s.status})]})},{key:"connectedAt",header:"Connected At",render:s=>s.connectedAt?e.jsx("span",{children:new Date(s.connectedAt).toLocaleString()}):e.jsx("span",{className:"text-text-muted",children:"-"})},{key:"_actions",header:"",className:"w-16",render:s=>e.jsx("button",{onClick:t=>{t.stopPropagation(),u(s.id)},className:"rounded-md p-1.5 text-error transition-colors hover:bg-bg-tertiary",title:"Revoke peer",children:e.jsx(A,{className:"h-4 w-4"})})}];return x?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"h-32 animate-pulse rounded-xl border border-border bg-bg-secondary"}),e.jsx("div",{className:"h-48 animate-pulse rounded-xl border border-border bg-bg-secondary"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsx(w,{title:"Mesh Network",breadcrumbs:[{label:"Admin",href:"/overview"},{label:"Tools"},{label:"Mesh"}],actions:e.jsx("button",{onClick:r,className:"rounded-lg p-2 text-text-secondary transition-colors hover:bg-bg-tertiary hover:text-text",title:"Refresh",children:e.jsx(P,{className:"h-4 w-4"})})}),c&&e.jsx("div",{className:"rounded-lg border border-error/50 bg-bg-secondary px-4 py-2 text-sm text-error",children:c}),e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-3 text-sm font-medium text-text-secondary",children:["Pending Requests (",o.length,")"]}),o.length===0?e.jsx("div",{className:"rounded-xl border border-border bg-bg-secondary p-6 text-center text-text-muted",children:"No pending requests"}):e.jsx("div",{className:"grid gap-3 sm:grid-cols-2",children:o.map(s=>e.jsxs("div",{className:"rounded-xl border border-border bg-bg-secondary p-4",children:[e.jsx("p",{className:"font-mono text-sm text-text",children:s.nodeId}),e.jsx("p",{className:"mt-1 text-xs text-text-secondary",children:s.url}),s.name&&e.jsx("p",{className:"mt-1 text-xs text-text-muted",children:s.name}),e.jsxs("div",{className:"mt-3 flex gap-2",children:[e.jsxs("button",{onClick:()=>p(s.id),className:"flex items-center gap-1.5 rounded-lg bg-success px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-success/80",children:[e.jsx(C,{className:"h-3.5 w-3.5"}),"Approve"]}),e.jsxs("button",{onClick:()=>g(s.id),className:"flex items-center gap-1.5 rounded-lg bg-error px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-error/80",children:[e.jsx(M,{className:"h-3.5 w-3.5"}),"Reject"]})]})]},s.id))})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-3 text-sm font-medium text-text-secondary",children:["Connected Peers (",d.length,")"]}),e.jsx(k,{columns:b,data:d,emptyMessage:"No connected peers"})]})]})}export{q as default};
|