@geminilight/mindos 0.6.61 → 0.6.65
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/_standalone/.antigravity/mcp_config.json +14 -0
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +23 -23
- package/_standalone/.next/build-manifest.json +2 -2
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +53 -47
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +2 -2
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +23 -23
- package/_standalone/.next/server/chunks/122.js +222 -0
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/1750.js +1 -1
- package/_standalone/.next/server/chunks/3113.js +52 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +3 -3
- package/_standalone/.next/server/chunks/953.js +3 -3
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/1001-99da82ec8d8c136f.js +1 -0
- package/_standalone/.next/static/chunks/1088-77544af0a50cb7a4.js +1 -0
- package/_standalone/.next/static/chunks/1467-87dde7eed498806f.js +1 -0
- package/_standalone/.next/static/chunks/5149-4d828886dda479fa.js +1 -0
- package/_standalone/.next/static/chunks/5581-c671163a2fe1b312.js +29 -0
- package/_standalone/.next/static/chunks/{7266-bb7be1128eccd48e.js → 5718-3837c3210a0e175f.js} +2 -2
- package/_standalone/.next/static/chunks/6636-53238eff89503f03.js +6 -0
- package/_standalone/.next/static/chunks/6757-1c1a89720fdda8f0.js +1 -0
- package/_standalone/.next/static/chunks/7129-20e9d2463a9da646.js +1 -0
- package/_standalone/.next/static/chunks/7294-cac25d97869afadc.js +1 -0
- package/_standalone/.next/static/chunks/8225-21e5cebc3731ddf0.js +1 -0
- package/_standalone/.next/static/chunks/8520-b51810e66293ceb8.js +22 -0
- package/_standalone/.next/static/chunks/9207-dc9c31b351a2ed78.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-2f5cf97e03dc1cc9.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-50eac58d511dcc6e.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-2a00f4686adf3885.js +11 -0
- package/_standalone/.next/static/chunks/app/layout-2cb7a6602d2e5d5f.js +168 -0
- package/_standalone/.next/static/chunks/app/{page-6a1f8d21c12b829e.js → page-5ab911b2226f6ff7.js} +1 -1
- package/_standalone/.next/static/chunks/app/setup/page-907b7c57fad2292b.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/page-11a511b065ea84c2.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-26e47dd4c533a58c.js +12 -0
- package/_standalone/.next/static/chunks/app/wiki/page-dce495b9048022fb.js +1 -0
- package/_standalone/.next/static/css/67e7918f5ed7d147.css +1 -0
- package/_standalone/.next/trace +65 -65
- package/_standalone/__tests__/acp/registry.test.ts +30 -20
- package/_standalone/__tests__/api/ask-attachments.test.ts +194 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +49 -2
- package/_standalone/__tests__/api/settings.test.ts +16 -12
- package/_standalone/__tests__/api/setup.test.ts +11 -9
- package/_standalone/__tests__/api/test-key.test.ts +0 -10
- package/_standalone/__tests__/components/UpdateToast.test.ts +344 -0
- package/_standalone/__tests__/core/context.test.ts +48 -426
- package/_standalone/__tests__/lib/pi-skills.test.ts +4 -4
- package/_standalone/__tests__/lib/settings-ai-client.test.ts +32 -12
- package/_standalone/__tests__/setup.ts +5 -5
- package/_standalone/app/globals.css +4 -4
- package/_standalone/components/ActivityBar.tsx +17 -6
- package/_standalone/components/Panel.tsx +24 -6
- package/_standalone/components/SidebarLayout.tsx +36 -8
- package/_standalone/components/agents/AgentsMcpSection.tsx +2 -2
- package/_standalone/components/agents/AgentsOverviewSection.tsx +5 -1
- package/_standalone/components/agents/AgentsPanelA2aTab.tsx +173 -113
- package/_standalone/components/agents/AgentsSkillsSection.tsx +2 -2
- package/_standalone/components/ask/AskContent.tsx +83 -44
- package/_standalone/components/ask/AskHeader.tsx +8 -1
- package/_standalone/components/ask/MessageList.tsx +37 -3
- package/_standalone/components/ask/ProviderModelCapsule.tsx +444 -174
- package/_standalone/components/home/InboxSection.tsx +25 -25
- package/_standalone/components/settings/AiTab.tsx +353 -298
- package/_standalone/components/settings/CustomProviderFields.tsx +121 -0
- package/_standalone/components/settings/CustomProvidersCard.tsx +154 -0
- package/_standalone/components/settings/KnowledgeTab.tsx +6 -20
- package/_standalone/components/settings/McpAgentInstall.tsx +7 -2
- package/_standalone/components/settings/Primitives.tsx +48 -104
- package/_standalone/components/settings/ProviderModal.tsx +87 -0
- package/_standalone/components/settings/SettingsContent.tsx +2 -5
- package/_standalone/components/settings/TestButton.tsx +64 -0
- package/_standalone/components/settings/types.ts +3 -9
- package/_standalone/components/settings/useCustomProviderForm.ts +132 -0
- package/_standalone/components/setup/StepAI.tsx +12 -5
- package/_standalone/components/shared/ModelInput.tsx +220 -0
- package/_standalone/components/shared/ProviderSelect.tsx +126 -36
- package/_standalone/hooks/useAskChat.ts +100 -13
- package/_standalone/hooks/useAskPanel.ts +17 -1
- package/_standalone/lib/settings-ai-client.ts +17 -8
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/.antigravity/mcp_config.json +14 -0
- package/app/app/api/ask/route.ts +154 -45
- package/app/app/api/mcp/agents/route.ts +3 -3
- package/app/app/api/settings/list-models/route.ts +36 -9
- package/app/app/api/settings/route.ts +14 -42
- package/app/app/api/settings/test-key/route.ts +78 -2
- package/app/app/api/setup/route.ts +36 -18
- package/app/app/api/skills/route.ts +1 -1
- package/app/app/globals.css +4 -4
- package/app/app/layout.tsx +5 -3
- package/app/app/view/[...path]/page.tsx +5 -0
- package/app/components/ActivityBar.tsx +17 -6
- package/app/components/HomeContent.tsx +11 -0
- package/app/components/InboxView.tsx +656 -0
- package/app/components/Panel.tsx +24 -6
- package/app/components/SidebarLayout.tsx +36 -8
- package/app/components/UpdateToast.tsx +255 -0
- package/app/components/agents/AgentDetailContent.tsx +8 -8
- package/app/components/agents/AgentsMcpSection.tsx +2 -2
- package/app/components/agents/AgentsOverviewSection.tsx +5 -1
- package/app/components/agents/AgentsPanelA2aTab.tsx +173 -113
- package/app/components/agents/AgentsSkillsSection.tsx +2 -2
- package/app/components/ask/AskContent.tsx +83 -44
- package/app/components/ask/AskHeader.tsx +8 -1
- package/app/components/ask/MessageList.tsx +37 -3
- package/app/components/ask/ProviderModelCapsule.tsx +444 -174
- package/app/components/home/InboxSection.tsx +25 -25
- package/app/components/settings/AiTab.tsx +353 -298
- package/app/components/settings/CustomProviderFields.tsx +121 -0
- package/app/components/settings/CustomProvidersCard.tsx +154 -0
- package/app/components/settings/KnowledgeTab.tsx +6 -20
- package/app/components/settings/McpAgentInstall.tsx +7 -2
- package/app/components/settings/Primitives.tsx +48 -104
- package/app/components/settings/ProviderModal.tsx +87 -0
- package/app/components/settings/SettingsContent.tsx +2 -5
- package/app/components/settings/TestButton.tsx +64 -0
- package/app/components/settings/types.ts +3 -9
- package/app/components/settings/useCustomProviderForm.ts +132 -0
- package/app/components/setup/StepAI.tsx +12 -5
- package/app/components/shared/ModelInput.tsx +220 -0
- package/app/components/shared/ProviderSelect.tsx +126 -36
- package/app/hooks/useAskChat.ts +100 -13
- package/app/hooks/useAskPanel.ts +17 -1
- package/app/lib/acp/registry.ts +92 -10
- package/app/lib/agent/context.ts +65 -0
- package/app/lib/agent/providers.ts +25 -0
- package/app/lib/agent/tools.ts +1 -1
- package/app/lib/custom-endpoints.ts +160 -0
- package/app/lib/fs.ts +8 -1
- package/app/lib/i18n/modules/ai-chat.ts +6 -0
- package/app/lib/i18n/modules/knowledge.ts +16 -0
- package/app/lib/i18n/modules/onboarding.ts +4 -0
- package/app/lib/i18n/modules/settings.ts +88 -2
- package/app/lib/mcp-agents.ts +11 -0
- package/app/lib/pi-integration/skills.ts +16 -4
- package/app/lib/settings-ai-client.ts +17 -8
- package/app/lib/settings.ts +68 -72
- package/app/lib/types.ts +4 -0
- package/bin/lib/mcp-agents.js +11 -0
- package/bin/lib/mcp-install.js +71 -7
- package/package.json +1 -1
- package/_standalone/.next/server/chunks/530.js +0 -218
- package/_standalone/.next/server/chunks/8955.js +0 -52
- package/_standalone/.next/static/chunks/1369-7d0ac5d1564eed1e.js +0 -1
- package/_standalone/.next/static/chunks/3427-2e61a5df1f5e55fb.js +0 -1
- package/_standalone/.next/static/chunks/5581-0c700c20718bd916.js +0 -29
- package/_standalone/.next/static/chunks/6297-085daa21037d5f81.js +0 -1
- package/_standalone/.next/static/chunks/6636-9bbc90fb3b8731fe.js +0 -6
- package/_standalone/.next/static/chunks/7637-904b0a381dc3ec02.js +0 -1
- package/_standalone/.next/static/chunks/8520-76d1b05072178b43.js +0 -22
- package/_standalone/.next/static/chunks/8658-16ff58b75ae37fbb.js +0 -1
- package/_standalone/.next/static/chunks/9905-a19d379cb225246e.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-0ea3571c8fbae823.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-66858acbcd1d4bf8.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-bf5c290fa3ccff09.js +0 -11
- package/_standalone/.next/static/chunks/app/layout-a5d5925b47e87cc3.js +0 -164
- package/_standalone/.next/static/chunks/app/setup/page-821714e7477be46c.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-40bc7316806acd62.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-6fbb14b8f322d0f0.js +0 -12
- package/_standalone/.next/static/chunks/app/wiki/page-ba36eccf4fe62cfe.js +0 -1
- package/_standalone/.next/static/css/b57c4eb3cc88308b.css +0 -1
- package/_standalone/lib/agent/context.ts +0 -403
- /package/_standalone/.next/static/{5GmVArEG8OX03azKICsGq → eIlwbGas1iRGonlPyEwj7}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{5GmVArEG8OX03azKICsGq → eIlwbGas1iRGonlPyEwj7}/_ssgManifest.js +0 -0
package/app/components/Panel.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useMemo, useState, useRef, useEffect, useCallback } from 'react';
|
|
4
|
-
import { useRouter } from 'next/navigation';
|
|
4
|
+
import { useRouter, usePathname } from 'next/navigation';
|
|
5
5
|
import { ChevronsDownUp, ChevronsUpDown, Plus, Import, FileText, Layers, MoreHorizontal, Eye, EyeOff, Trash2, Inbox } from 'lucide-react';
|
|
6
6
|
import type { PanelId } from './ActivityBar';
|
|
7
7
|
import type { FileNode } from '@/lib/types';
|
|
@@ -73,6 +73,8 @@ export default function Panel({
|
|
|
73
73
|
|
|
74
74
|
const { t } = useLocale();
|
|
75
75
|
const router = useRouter();
|
|
76
|
+
const pathname = usePathname();
|
|
77
|
+
const isInboxActive = pathname === '/view/Inbox' || pathname === '/view/Inbox/';
|
|
76
78
|
|
|
77
79
|
// File tree depth control: null = manual (no override), number = forced max open depth
|
|
78
80
|
const [maxOpenDepth, setMaxOpenDepth] = useState<number | null>(null);
|
|
@@ -298,7 +300,7 @@ export default function Panel({
|
|
|
298
300
|
<Inbox size={14} className="shrink-0 text-[var(--amber)]" />
|
|
299
301
|
<span className="flex-1">{t.sidebar.capture}</span>
|
|
300
302
|
{inboxCount > 0 && (
|
|
301
|
-
<span className="text-
|
|
303
|
+
<span className="text-2xs font-medium tabular-nums px-1.5 py-px rounded-full bg-[var(--amber)]/10 text-[var(--amber)]/70">{inboxCount}</span>
|
|
302
304
|
)}
|
|
303
305
|
</button>
|
|
304
306
|
<button
|
|
@@ -328,14 +330,30 @@ export default function Panel({
|
|
|
328
330
|
<button
|
|
329
331
|
type="button"
|
|
330
332
|
onClick={() => router.push('/view/Inbox/')}
|
|
331
|
-
className=
|
|
333
|
+
className={`flex items-center gap-2 mx-2 px-2 py-1.5 text-sm rounded-lg transition-all duration-150 group shrink-0 ${
|
|
334
|
+
isInboxActive
|
|
335
|
+
? 'bg-[var(--amber-dim)] text-[var(--amber)]'
|
|
336
|
+
: 'hover:bg-muted text-muted-foreground hover:text-foreground'
|
|
337
|
+
}`}
|
|
332
338
|
>
|
|
333
|
-
<
|
|
334
|
-
|
|
339
|
+
<div className={`flex items-center justify-center w-5 h-5 rounded-md shrink-0 transition-colors ${
|
|
340
|
+
isInboxActive ? 'bg-[var(--amber)]/15' : 'bg-transparent'
|
|
341
|
+
}`}>
|
|
342
|
+
<Inbox size={13} className={`shrink-0 transition-colors ${
|
|
343
|
+
isInboxActive ? 'text-[var(--amber)]' : 'text-[var(--amber)]/60 group-hover:text-[var(--amber)]'
|
|
344
|
+
}`} />
|
|
345
|
+
</div>
|
|
346
|
+
<span className={`flex-1 text-left text-xs transition-colors ${
|
|
347
|
+
isInboxActive ? 'font-medium text-[var(--amber)]' : 'text-muted-foreground group-hover:text-foreground'
|
|
348
|
+
}`}>
|
|
335
349
|
{t.sidebar.capture}
|
|
336
350
|
</span>
|
|
337
351
|
{inboxCount > 0 && (
|
|
338
|
-
<span className=
|
|
352
|
+
<span className={`text-2xs font-medium tabular-nums px-1.5 py-px rounded-full transition-colors ${
|
|
353
|
+
isInboxActive
|
|
354
|
+
? 'bg-[var(--amber)]/15 text-[var(--amber)]'
|
|
355
|
+
: 'bg-[var(--amber)]/10 text-[var(--amber)]/70'
|
|
356
|
+
}`}>{inboxCount}</span>
|
|
339
357
|
)}
|
|
340
358
|
</button>
|
|
341
359
|
<SyncStatusBar collapsed={false} onOpenSyncSettings={onOpenSyncSettings} />
|
|
@@ -410,24 +410,52 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
410
410
|
onPanelChange={lp.setActivePanel}
|
|
411
411
|
onEchoClick={() => {
|
|
412
412
|
const wasActive = lp.activePanel === 'echo';
|
|
413
|
-
|
|
414
|
-
if (!wasActive)
|
|
413
|
+
const onEchoRoute = pathname?.startsWith('/echo');
|
|
414
|
+
if (!wasActive) {
|
|
415
|
+
lp.setActivePanel('echo');
|
|
416
|
+
router.push('/echo/about-you');
|
|
417
|
+
} else if (!onEchoRoute) {
|
|
418
|
+
router.push('/echo/about-you');
|
|
419
|
+
} else {
|
|
420
|
+
lp.setActivePanel(null);
|
|
421
|
+
}
|
|
415
422
|
}}
|
|
416
423
|
onAgentsClick={() => {
|
|
417
424
|
const wasActive = lp.activePanel === 'agents';
|
|
418
|
-
|
|
419
|
-
if (!wasActive)
|
|
425
|
+
const onAgentsRoute = pathname?.startsWith('/agents');
|
|
426
|
+
if (!wasActive) {
|
|
427
|
+
lp.setActivePanel('agents');
|
|
428
|
+
router.push('/agents');
|
|
429
|
+
} else if (!onAgentsRoute) {
|
|
430
|
+
router.push('/agents');
|
|
431
|
+
} else {
|
|
432
|
+
lp.setActivePanel(null);
|
|
433
|
+
}
|
|
420
434
|
setAgentDetailKey(null);
|
|
421
435
|
}}
|
|
422
436
|
onDiscoverClick={() => {
|
|
423
437
|
const wasActive = lp.activePanel === 'discover';
|
|
424
|
-
|
|
425
|
-
if (!wasActive)
|
|
438
|
+
const onDiscoverRoute = pathname?.startsWith('/explore');
|
|
439
|
+
if (!wasActive) {
|
|
440
|
+
lp.setActivePanel('discover');
|
|
441
|
+
router.push('/explore');
|
|
442
|
+
} else if (!onDiscoverRoute) {
|
|
443
|
+
router.push('/explore');
|
|
444
|
+
} else {
|
|
445
|
+
lp.setActivePanel(null);
|
|
446
|
+
}
|
|
426
447
|
}}
|
|
427
448
|
onSpacesClick={() => {
|
|
428
449
|
const wasActive = lp.activePanel === 'files';
|
|
429
|
-
|
|
430
|
-
if (!wasActive)
|
|
450
|
+
const onFilesRoute = pathname === '/' || pathname === '/wiki' || pathname?.startsWith('/view/') || pathname?.startsWith('/wiki/');
|
|
451
|
+
if (!wasActive) {
|
|
452
|
+
lp.setActivePanel('files');
|
|
453
|
+
router.push('/wiki');
|
|
454
|
+
} else if (!onFilesRoute) {
|
|
455
|
+
router.push('/wiki');
|
|
456
|
+
} else {
|
|
457
|
+
lp.setActivePanel(null);
|
|
458
|
+
}
|
|
431
459
|
}}
|
|
432
460
|
syncStatus={syncStatus}
|
|
433
461
|
expanded={lp.railExpanded}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState, useCallback, useRef } from 'react';
|
|
4
|
+
import { X } from 'lucide-react';
|
|
5
|
+
import { useLocale } from '@/lib/stores/locale-store';
|
|
6
|
+
|
|
7
|
+
/* ── Bridge interface ──────────────────────────────────────────────── */
|
|
8
|
+
|
|
9
|
+
interface MindosDesktopBridge {
|
|
10
|
+
checkUpdate?: () => Promise<{ available: boolean; version?: string }>;
|
|
11
|
+
onUpdateAvailable?: (cb: (info: { version?: string }) => void) => () => void;
|
|
12
|
+
checkCoreUpdate?: () => Promise<{
|
|
13
|
+
available: boolean;
|
|
14
|
+
currentVersion: string;
|
|
15
|
+
latestVersion: string;
|
|
16
|
+
}>;
|
|
17
|
+
onCoreUpdateAvailable?: (
|
|
18
|
+
cb: (info: { current: string; latest: string; ready?: boolean }) => void,
|
|
19
|
+
) => () => void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getDesktopBridge(): MindosDesktopBridge | null {
|
|
23
|
+
if (typeof window === 'undefined') return null;
|
|
24
|
+
const w = window as unknown as { mindos?: MindosDesktopBridge };
|
|
25
|
+
return w.mindos?.checkUpdate ? (w.mindos as MindosDesktopBridge) : null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* ── Types ─────────────────────────────────────────────────────────── */
|
|
29
|
+
|
|
30
|
+
interface PendingUpdate {
|
|
31
|
+
type: 'desktop' | 'core';
|
|
32
|
+
version: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type ToastVisibility = 'hidden' | 'visible' | 'dismissing';
|
|
36
|
+
|
|
37
|
+
/* ── Constants ─────────────────────────────────────────────────────── */
|
|
38
|
+
|
|
39
|
+
const SKIP_DESKTOP_KEY = 'mindos_update_skip_desktop';
|
|
40
|
+
const SKIP_CORE_KEY = 'mindos_update_skip_core';
|
|
41
|
+
const SHOW_DELAY_MS = 10_000; // Wait 10 s after startup before showing
|
|
42
|
+
const DISMISS_MS = 200; // Match the CSS transition duration
|
|
43
|
+
|
|
44
|
+
/* ── Helpers ───────────────────────────────────────────────────────── */
|
|
45
|
+
|
|
46
|
+
/** Proper semantic-version comparison: returns true when `a` is strictly newer than `b`. */
|
|
47
|
+
function isNewer(a: string, b: string): boolean {
|
|
48
|
+
const pa = a.split('.').map(Number);
|
|
49
|
+
const pb = b.split('.').map(Number);
|
|
50
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
51
|
+
const va = pa[i] ?? 0;
|
|
52
|
+
const vb = pb[i] ?? 0;
|
|
53
|
+
if (va > vb) return true;
|
|
54
|
+
if (va < vb) return false;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── Component ─────────────────────────────────────────────────────── */
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Desktop-only update notification toast.
|
|
63
|
+
*
|
|
64
|
+
* Appears in the bottom-right corner when the Electron bridge reports a new
|
|
65
|
+
* Desktop shell or MindOS Core update. Persists until the user clicks
|
|
66
|
+
* "View Details" (→ Settings > Update tab) or "Skip Version" (→ stored in
|
|
67
|
+
* localStorage so it won't re-appear for that version).
|
|
68
|
+
*
|
|
69
|
+
* Renders `null` in browser/CLI mode (no bridge).
|
|
70
|
+
*/
|
|
71
|
+
export default function UpdateToast() {
|
|
72
|
+
const { t } = useLocale();
|
|
73
|
+
const ut = t.settings.update.updateToast;
|
|
74
|
+
|
|
75
|
+
const [visibility, setVisibility] = useState<ToastVisibility>('hidden');
|
|
76
|
+
const [updates, setUpdates] = useState<{
|
|
77
|
+
desktop?: PendingUpdate;
|
|
78
|
+
core?: PendingUpdate;
|
|
79
|
+
}>({});
|
|
80
|
+
|
|
81
|
+
// Stable ref for the bridge — avoids re-running the effect every render.
|
|
82
|
+
const bridgeRef = useRef<MindosDesktopBridge | null>(null);
|
|
83
|
+
const [isDesktop, setIsDesktop] = useState(false);
|
|
84
|
+
|
|
85
|
+
// Timeout bookkeeping — prevents stale setState after dismiss / unmount.
|
|
86
|
+
const timers = useRef(new Set<ReturnType<typeof setTimeout>>());
|
|
87
|
+
const queued = useRef<{ desktop?: string; core?: string }>({});
|
|
88
|
+
|
|
89
|
+
// ── Timeout helpers ─────────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
const clearTimers = useCallback(() => {
|
|
92
|
+
timers.current.forEach(clearTimeout);
|
|
93
|
+
timers.current.clear();
|
|
94
|
+
}, []);
|
|
95
|
+
|
|
96
|
+
const schedule = useCallback((state: ToastVisibility, ms: number) => {
|
|
97
|
+
const id = setTimeout(() => {
|
|
98
|
+
timers.current.delete(id);
|
|
99
|
+
setVisibility(state);
|
|
100
|
+
}, ms);
|
|
101
|
+
timers.current.add(id);
|
|
102
|
+
}, []);
|
|
103
|
+
|
|
104
|
+
// ── Detect Desktop bridge once on mount ─────────────────────────────
|
|
105
|
+
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
const b = getDesktopBridge();
|
|
108
|
+
bridgeRef.current = b;
|
|
109
|
+
setIsDesktop(!!b);
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
112
|
+
// ── Subscribe to IPC update events ──────────────────────────────────
|
|
113
|
+
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
const bridge = bridgeRef.current;
|
|
116
|
+
if (!bridge) return;
|
|
117
|
+
|
|
118
|
+
clearTimers();
|
|
119
|
+
const teardowns: Array<() => void> = [];
|
|
120
|
+
|
|
121
|
+
// Helper: queue an update unless already queued for this version.
|
|
122
|
+
const enqueue = (
|
|
123
|
+
key: 'desktop' | 'core',
|
|
124
|
+
version: string,
|
|
125
|
+
skipKey: string,
|
|
126
|
+
) => {
|
|
127
|
+
const skipped = localStorage.getItem(skipKey);
|
|
128
|
+
if (skipped && !isNewer(version, skipped)) return;
|
|
129
|
+
if (queued.current[key] === version) return; // de-dup
|
|
130
|
+
|
|
131
|
+
queued.current[key] = version;
|
|
132
|
+
setUpdates(prev => ({ ...prev, [key]: { type: key, version } }));
|
|
133
|
+
schedule('visible', SHOW_DELAY_MS);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
if (bridge.onUpdateAvailable) {
|
|
137
|
+
teardowns.push(
|
|
138
|
+
bridge.onUpdateAvailable(info => {
|
|
139
|
+
if (info?.version) enqueue('desktop', info.version, SKIP_DESKTOP_KEY);
|
|
140
|
+
}),
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (bridge.onCoreUpdateAvailable) {
|
|
145
|
+
teardowns.push(
|
|
146
|
+
bridge.onCoreUpdateAvailable(info => {
|
|
147
|
+
if (info?.latest && !info.ready) {
|
|
148
|
+
enqueue('core', info.latest, SKIP_CORE_KEY);
|
|
149
|
+
}
|
|
150
|
+
}),
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return () => {
|
|
155
|
+
teardowns.forEach(fn => fn());
|
|
156
|
+
clearTimers();
|
|
157
|
+
};
|
|
158
|
+
}, [isDesktop, clearTimers, schedule]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
159
|
+
|
|
160
|
+
// Clean up on unmount
|
|
161
|
+
useEffect(() => () => clearTimers(), [clearTimers]);
|
|
162
|
+
|
|
163
|
+
// ── Actions ─────────────────────────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
const handleViewDetails = useCallback(() => {
|
|
166
|
+
clearTimers();
|
|
167
|
+
window.dispatchEvent(
|
|
168
|
+
new CustomEvent('mindos:open-settings', { detail: { tab: 'update' } }),
|
|
169
|
+
);
|
|
170
|
+
setVisibility('dismissing');
|
|
171
|
+
schedule('hidden', DISMISS_MS);
|
|
172
|
+
}, [clearTimers, schedule]);
|
|
173
|
+
|
|
174
|
+
const handleSkip = useCallback(() => {
|
|
175
|
+
clearTimers();
|
|
176
|
+
if (updates.desktop) localStorage.setItem(SKIP_DESKTOP_KEY, updates.desktop.version);
|
|
177
|
+
if (updates.core) localStorage.setItem(SKIP_CORE_KEY, updates.core.version);
|
|
178
|
+
setVisibility('dismissing');
|
|
179
|
+
schedule('hidden', DISMISS_MS);
|
|
180
|
+
}, [updates, clearTimers, schedule]);
|
|
181
|
+
|
|
182
|
+
// ── Render ──────────────────────────────────────────────────────────
|
|
183
|
+
|
|
184
|
+
if (!isDesktop || visibility === 'hidden') return null;
|
|
185
|
+
|
|
186
|
+
const hasBoth = !!(updates.desktop && updates.core);
|
|
187
|
+
const title = hasBoth
|
|
188
|
+
? ut.titleMultiple
|
|
189
|
+
: updates.desktop
|
|
190
|
+
? ut.titleSingle(ut.desktopLabel, updates.desktop.version)
|
|
191
|
+
: updates.core
|
|
192
|
+
? ut.titleSingle(ut.coreLabel, updates.core.version)
|
|
193
|
+
: '';
|
|
194
|
+
|
|
195
|
+
const subtitle = hasBoth
|
|
196
|
+
? `${ut.desktopLabel} v${updates.desktop!.version} \u00B7 ${ut.coreLabel} v${updates.core!.version}`
|
|
197
|
+
: '';
|
|
198
|
+
|
|
199
|
+
const show = visibility === 'visible';
|
|
200
|
+
|
|
201
|
+
return (
|
|
202
|
+
<div
|
|
203
|
+
role="status"
|
|
204
|
+
aria-live="polite"
|
|
205
|
+
className={`
|
|
206
|
+
fixed bottom-14 right-4 z-40 pointer-events-none
|
|
207
|
+
transition-all duration-200
|
|
208
|
+
${show ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-2'}
|
|
209
|
+
`}
|
|
210
|
+
>
|
|
211
|
+
<div className="pointer-events-auto flex flex-col gap-2.5 bg-card border border-border rounded-xl shadow-lg px-4 py-3 w-[290px]">
|
|
212
|
+
{/* ── Title row ── */}
|
|
213
|
+
<div className="flex items-start gap-2">
|
|
214
|
+
{/* Amber indicator dot */}
|
|
215
|
+
<span className="mt-[5px] w-2 h-2 rounded-full bg-[var(--amber)] shrink-0" />
|
|
216
|
+
|
|
217
|
+
<div className="flex-1 min-w-0">
|
|
218
|
+
<p className="text-sm font-medium text-foreground leading-snug">{title}</p>
|
|
219
|
+
{subtitle && (
|
|
220
|
+
<p className="text-xs text-muted-foreground mt-0.5 truncate">{subtitle}</p>
|
|
221
|
+
)}
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
{/* Close = same as skip */}
|
|
225
|
+
<button
|
|
226
|
+
type="button"
|
|
227
|
+
onClick={handleSkip}
|
|
228
|
+
className="shrink-0 p-0.5 rounded text-muted-foreground hover:text-foreground transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
229
|
+
aria-label="Dismiss"
|
|
230
|
+
>
|
|
231
|
+
<X size={13} />
|
|
232
|
+
</button>
|
|
233
|
+
</div>
|
|
234
|
+
|
|
235
|
+
{/* ── Actions ── */}
|
|
236
|
+
<div className="flex gap-2">
|
|
237
|
+
<button
|
|
238
|
+
type="button"
|
|
239
|
+
onClick={handleViewDetails}
|
|
240
|
+
className="flex-1 px-3 py-1.5 text-xs font-medium rounded-lg text-[var(--amber-foreground)] bg-[var(--amber)] hover:opacity-90 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
241
|
+
>
|
|
242
|
+
{ut.viewDetails}
|
|
243
|
+
</button>
|
|
244
|
+
<button
|
|
245
|
+
type="button"
|
|
246
|
+
onClick={handleSkip}
|
|
247
|
+
className="flex-1 px-3 py-1.5 text-xs rounded-lg text-muted-foreground border border-border hover:text-foreground hover:bg-muted transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
248
|
+
>
|
|
249
|
+
{hasBoth ? ut.skipAll : ut.skipVersion}
|
|
250
|
+
</button>
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
);
|
|
255
|
+
}
|
|
@@ -356,7 +356,7 @@ export default function AgentDetailContent({ agentKey }: { agentKey: string }) {
|
|
|
356
356
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
357
357
|
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
358
358
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
359
|
-
<Server size={
|
|
359
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Server size={13} className="text-[var(--amber)]" /></div>
|
|
360
360
|
{a.detail.mcpManagement}
|
|
361
361
|
</h2>
|
|
362
362
|
<div className="flex flex-wrap items-center gap-1.5">
|
|
@@ -455,7 +455,7 @@ export default function AgentDetailContent({ agentKey }: { agentKey: string }) {
|
|
|
455
455
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
456
456
|
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
457
457
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
458
|
-
<Zap size={
|
|
458
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Zap size={13} className="text-[var(--amber)]" /></div>
|
|
459
459
|
{a.detail.skillAssignments}
|
|
460
460
|
</h2>
|
|
461
461
|
<div className="flex items-center gap-1.5 text-2xs text-muted-foreground/50 tabular-nums">
|
|
@@ -623,7 +623,7 @@ export default function AgentDetailContent({ agentKey }: { agentKey: string }) {
|
|
|
623
623
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
624
624
|
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
625
625
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
626
|
-
<Globe size={
|
|
626
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Globe size={13} className="text-[var(--amber)]" /></div>
|
|
627
627
|
{p.a2aCapabilities}
|
|
628
628
|
</h2>
|
|
629
629
|
<span className={`text-2xs px-1.5 py-0.5 rounded font-medium shrink-0 ${
|
|
@@ -797,7 +797,7 @@ function RuntimeDiagSection({
|
|
|
797
797
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
798
798
|
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
799
799
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
800
|
-
<Activity size={
|
|
800
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Activity size={13} className="text-[var(--amber)]" /></div>
|
|
801
801
|
{d.runtimeDiagTitle}
|
|
802
802
|
</h2>
|
|
803
803
|
<button
|
|
@@ -875,7 +875,7 @@ function EnvPermSection({
|
|
|
875
875
|
return (
|
|
876
876
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
877
877
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
878
|
-
<Key size={
|
|
878
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Key size={13} className="text-[var(--amber)]" /></div>
|
|
879
879
|
{d.envPermTitle}
|
|
880
880
|
</h2>
|
|
881
881
|
|
|
@@ -1029,7 +1029,7 @@ function KnowledgeInteractionSection() {
|
|
|
1029
1029
|
return (
|
|
1030
1030
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
1031
1031
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
1032
|
-
<BookOpen size={
|
|
1032
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><BookOpen size={13} className="text-[var(--amber)]" /></div>
|
|
1033
1033
|
{d?.knowledgeInteraction ?? 'Knowledge Interaction'}
|
|
1034
1034
|
</h2>
|
|
1035
1035
|
<div className="rounded-lg border border-border/40 bg-card/30 px-4 py-6 text-center">
|
|
@@ -1045,7 +1045,7 @@ function KnowledgeInteractionSection() {
|
|
|
1045
1045
|
{/* Header */}
|
|
1046
1046
|
<div className="flex items-center justify-between px-4 pt-4 pb-2">
|
|
1047
1047
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
1048
|
-
<BookOpen size={
|
|
1048
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><BookOpen size={13} className="text-[var(--amber)]" /></div>
|
|
1049
1049
|
{d?.knowledgeInteraction ?? 'Knowledge Interaction'}
|
|
1050
1050
|
</h2>
|
|
1051
1051
|
<Link
|
|
@@ -1158,7 +1158,7 @@ function ActivitySection({ agent }: { agent: AgentInfo }) {
|
|
|
1158
1158
|
return (
|
|
1159
1159
|
<section className="rounded-xl border border-border bg-card p-4 space-y-3">
|
|
1160
1160
|
<h2 className="text-xs font-semibold text-foreground flex items-center gap-2 shrink-0">
|
|
1161
|
-
<Activity size={
|
|
1161
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center"><Activity size={13} className="text-[var(--amber)]" /></div>
|
|
1162
1162
|
{d.activityTitle}
|
|
1163
1163
|
</h2>
|
|
1164
1164
|
|
|
@@ -146,8 +146,8 @@ export default function AgentsMcpSection({
|
|
|
146
146
|
<div className="flex items-center justify-between gap-2">
|
|
147
147
|
<div className="flex items-center gap-2.5">
|
|
148
148
|
<h2 className="text-sm font-semibold text-foreground flex items-center gap-2">
|
|
149
|
-
<div className="w-6 h-6 rounded-md bg-
|
|
150
|
-
<Server size={13} className="text-
|
|
149
|
+
<div className="w-6 h-6 rounded-md bg-[var(--amber-subtle)] flex items-center justify-center">
|
|
150
|
+
<Server size={13} className="text-[var(--amber)]" aria-hidden="true" />
|
|
151
151
|
</div>
|
|
152
152
|
{copy.title}
|
|
153
153
|
</h2>
|
|
@@ -4,6 +4,7 @@ import Link from 'next/link';
|
|
|
4
4
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import {
|
|
6
6
|
AlertTriangle,
|
|
7
|
+
Bot,
|
|
7
8
|
Cable,
|
|
8
9
|
ChevronDown,
|
|
9
10
|
Globe,
|
|
@@ -217,7 +218,10 @@ export default function AgentsOverviewSection({
|
|
|
217
218
|
{sortedAgents.length > 0 ? (
|
|
218
219
|
<section aria-label={copy.usagePulse}>
|
|
219
220
|
<div className="flex items-center justify-between mb-3">
|
|
220
|
-
<
|
|
221
|
+
<div className="flex items-center gap-2.5">
|
|
222
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
|
|
223
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{copy.usagePulse}</h2>
|
|
224
|
+
</div>
|
|
221
225
|
<span className="text-2xs text-muted-foreground tabular-nums select-none">
|
|
222
226
|
{copy.agentCount(sortedAgents.length)}
|
|
223
227
|
</span>
|