@geminilight/mindos 0.6.69 → 0.6.70
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/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +22 -21
- package/_standalone/.next/build-manifest.json +3 -3
- 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/react-loadable-manifest.json +7 -7
- package/_standalone/.next/routes-manifest.json +6 -0
- 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_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.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route.js.nft.json +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 +13 -13
- 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/channels/verify/route.js +1 -0
- package/_standalone/.next/server/app/api/channels/verify/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/connect/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.js +2 -2
- 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/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/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/lint/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.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/direct-tools/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/tools/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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route.js +2 -2
- package/_standalone/.next/server/app/api/space-overview/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/space-overview/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/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_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 +1 -1
- 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 +1 -1
- 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 +3 -3
- 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 +22 -21
- package/_standalone/.next/server/chunks/3437.js +2 -2
- package/_standalone/.next/server/chunks/5299.js +1 -0
- package/_standalone/.next/server/chunks/6022.js +42 -42
- package/_standalone/.next/server/chunks/6133.js +54 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8326.js +1 -0
- package/_standalone/.next/server/chunks/8388.js +5 -3
- package/_standalone/.next/server/chunks/953.js +6 -4
- package/_standalone/.next/server/chunks/9938.js +24 -0
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- 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/1814.8a1fef15856dce84.js +1 -0
- package/_standalone/.next/static/chunks/2654-e07c692d6c99f25b.js +1 -0
- package/_standalone/.next/static/chunks/{2935.7d75923daaf448d3.js → 2935.9b08eeade3644806.js} +1 -1
- package/_standalone/.next/static/chunks/3269.a7343771e3f0ff58.js +48 -0
- package/_standalone/.next/static/chunks/3637.2b2697198968d83f.js +1 -0
- package/_standalone/.next/static/chunks/{5550-b7c97fc13628db15.js → 4327-d70a8d457e2d03fe.js} +1 -1
- package/_standalone/.next/static/chunks/48-c88ea6a2a45f15b4.js +28 -0
- package/_standalone/.next/static/chunks/5581-6d403608b5dfb20b.js +29 -0
- package/_standalone/.next/static/chunks/6902-edc5c487c696bd0b.js +3 -0
- package/_standalone/.next/static/chunks/808.72eb7bdd399e9a24.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-e0c1e2c67572781c.js → route-930dfa67e2789df5.js} +1 -1
- package/_standalone/.next/static/chunks/app/_global-error/{page-e0c1e2c67572781c.js → page-930dfa67e2789df5.js} +1 -1
- package/_standalone/.next/static/chunks/app/agents/page-3dc2bf2f6bc7334c.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-e0c1e2c67572781c.js → route-930dfa67e2789df5.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-e0c1e2c67572781c.js → route-930dfa67e2789df5.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/channels/verify/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/connect/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/raw/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/config/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/status/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/im/test/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/clip/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/lint/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/tools/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/space-overview/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/changes/page-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-75a6330292613587.js +157 -0
- package/_standalone/.next/static/chunks/app/echo/page-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-8aa53b34ef34a246.js +133 -0
- package/_standalone/.next/static/chunks/app/loading-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/{page-c3be6477dbcf182d.js → page-318332501426ef5b.js} +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-17bd5aedcfea9b65.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-d5c37c41c556013d.js +12 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-930dfa67e2789df5.js +1 -0
- package/_standalone/.next/static/chunks/webpack-1c2d44f6d86f3986.js +1 -0
- package/_standalone/.next/static/css/a8cadde78aea8585.css +1 -0
- package/_standalone/.next/static/ixCTELNH6V05Z00pC6ZMO/_buildManifest.js +1 -0
- package/_standalone/.next/trace +72 -71
- package/_standalone/.next/types/routes.d.ts +2 -1
- package/_standalone/.next/types/validator.ts +9 -0
- package/_standalone/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
- package/_standalone/MINDOS_EXPLORATION_SUMMARY.md +229 -0
- package/_standalone/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
- package/_standalone/__tests__/acp/agent-descriptors.test.ts +36 -0
- package/_standalone/__tests__/acp/session.test.ts +346 -167
- package/_standalone/__tests__/agent/provider-endpoints.test.ts +70 -0
- package/_standalone/__tests__/api/channels-verify.test.ts +75 -0
- package/_standalone/__tests__/api/extract-pdf.test.ts +265 -0
- package/_standalone/__tests__/api/test-key.test.ts +15 -3
- package/_standalone/__tests__/channel-mgmt.test.js +11 -0
- package/_standalone/__tests__/components/breadcrumb-header-ux.test.ts +14 -0
- package/_standalone/__tests__/components/header-toc-vertical-alignment.test.ts +23 -0
- package/_standalone/__tests__/components/table-of-contents-header-layout.test.ts +15 -0
- package/_standalone/__tests__/components/view-page-header-layout.test.ts +13 -0
- package/_standalone/__tests__/components/view-page-header-scroll-stability.test.ts +34 -0
- package/_standalone/__tests__/core/hybrid-search.test.ts +109 -0
- package/_standalone/components/Breadcrumb.tsx +11 -11
- package/_standalone/components/FindInPage.tsx +1 -1
- package/_standalone/components/MarkdownView.tsx +4 -0
- package/_standalone/components/Panel.tsx +17 -10
- package/_standalone/components/TableOfContents.tsx +9 -9
- package/_standalone/components/agents/AgentsContentChannelDetail.tsx +168 -54
- package/_standalone/components/agents/AgentsContentChannels.tsx +22 -22
- package/_standalone/components/ask/AskContent.tsx +68 -28
- package/_standalone/components/ask/AskHeader.tsx +6 -2
- package/_standalone/components/ask/ProviderModelCapsule.tsx +11 -9
- package/_standalone/components/ask/SessionHistoryPanel.tsx +398 -0
- package/_standalone/components/settings/AiTab.tsx +5 -1
- package/_standalone/components/settings/KnowledgeTab.tsx +92 -1
- package/_standalone/components/settings/McpConnectGuides.tsx +4 -0
- package/_standalone/components/settings/McpPortSection.tsx +207 -0
- package/_standalone/components/settings/McpTab.tsx +1 -5
- package/_standalone/components/settings/TestButton.tsx +1 -0
- package/_standalone/components/settings/{ServerPortsCard.tsx → WebPortSection.tsx} +66 -151
- package/_standalone/components/settings/types.ts +12 -0
- package/_standalone/components/settings/useCustomProviderForm.ts +2 -2
- package/_standalone/data/skills/mindos/SKILL.md +45 -1
- package/_standalone/hooks/useAcpDetection.ts +1 -1
- package/_standalone/hooks/useAcpRegistry.ts +1 -1
- package/_standalone/hooks/useFileImport.ts +7 -2
- package/_standalone/hooks/useFileUpload.ts +17 -10
- package/_standalone/lib/acp/index.ts +3 -7
- package/_standalone/lib/acp/types.ts +0 -29
- package/_standalone/lib/im/platforms.ts +6 -2
- package/_standalone/lib/pdf-extract.ts +6 -2
- package/_standalone/package-lock.json +12 -2
- package/_standalone/package.json +2 -1
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
- package/app/MINDOS_EXPLORATION_SUMMARY.md +229 -0
- package/app/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
- package/app/app/api/channels/verify/route.ts +54 -0
- package/app/app/api/extract-pdf/route.ts +17 -3
- package/app/app/api/settings/list-models/route.ts +40 -44
- package/app/app/api/settings/route.ts +16 -0
- package/app/app/api/settings/test-key/route.ts +5 -2
- package/app/app/view/[...path]/ViewPageClient.tsx +1 -1
- package/app/components/Breadcrumb.tsx +11 -11
- package/app/components/DirView.tsx +1 -1
- package/app/components/FindInPage.tsx +1 -1
- package/app/components/InboxView.tsx +2 -2
- package/app/components/MarkdownView.tsx +4 -0
- package/app/components/Panel.tsx +17 -10
- package/app/components/TableOfContents.tsx +9 -9
- package/app/components/agents/AgentsContentChannelDetail.tsx +168 -54
- package/app/components/agents/AgentsContentChannels.tsx +22 -22
- package/app/components/ask/AskContent.tsx +68 -28
- package/app/components/ask/AskHeader.tsx +6 -2
- package/app/components/ask/ProviderModelCapsule.tsx +11 -9
- package/app/components/ask/SessionHistoryPanel.tsx +398 -0
- package/app/components/settings/AiTab.tsx +5 -1
- package/app/components/settings/KnowledgeTab.tsx +92 -1
- package/app/components/settings/McpConnectGuides.tsx +4 -0
- package/app/components/settings/McpPortSection.tsx +207 -0
- package/app/components/settings/McpTab.tsx +1 -5
- package/app/components/settings/TestButton.tsx +1 -0
- package/app/components/settings/{ServerPortsCard.tsx → WebPortSection.tsx} +66 -151
- package/app/components/settings/types.ts +12 -0
- package/app/components/settings/useCustomProviderForm.ts +2 -2
- package/app/data/skills/mindos/SKILL.md +45 -1
- package/app/hooks/useAcpDetection.ts +1 -1
- package/app/hooks/useAcpRegistry.ts +1 -1
- package/app/hooks/useFileImport.ts +7 -2
- package/app/hooks/useFileUpload.ts +17 -10
- package/app/lib/acp/agent-descriptors.ts +18 -0
- package/app/lib/acp/index.ts +3 -7
- package/app/lib/acp/registry.ts +1 -1
- package/app/lib/acp/session.ts +237 -530
- package/app/lib/acp/subprocess.ts +224 -427
- package/app/lib/acp/types.ts +0 -29
- package/app/lib/agent/model.ts +20 -4
- package/app/lib/agent/non-streaming.ts +37 -20
- package/app/lib/agent/providers.ts +31 -0
- package/app/lib/agent/tools.ts +2 -1
- package/app/lib/core/embedding-index.ts +285 -0
- package/app/lib/core/embedding-provider.ts +164 -0
- package/app/lib/core/hybrid-search.ts +160 -0
- package/app/lib/core/search.ts +11 -21
- package/app/lib/i18n/modules/ai-chat.ts +26 -0
- package/app/lib/i18n/modules/panels.ts +14 -0
- package/app/lib/i18n/modules/settings.ts +2 -0
- package/app/lib/im/platforms.ts +6 -2
- package/app/lib/im/verify.ts +94 -0
- package/app/lib/pdf-extract.ts +6 -2
- package/app/lib/settings.ts +23 -0
- package/app/package.json +2 -1
- package/bin/cli.js +3 -1
- package/bin/commands/channel.js +342 -0
- package/bin/commands/update.js +11 -4
- package/bin/lib/build.js +34 -16
- package/bin/lib/channel-config.js +168 -0
- package/bin/lib/channel-constants.js +88 -0
- package/bin/lib/channel-mgmt.js +244 -0
- package/bin/lib/channel-prompts.js +72 -0
- package/bin/lib/channel-validate.js +57 -0
- package/bin/lib/safe-rm.js +165 -0
- package/package.json +1 -1
- package/skills/mindos/SKILL.md +45 -1
- package/_standalone/.next/server/chunks/1750.js +0 -1
- package/_standalone/.next/server/chunks/7200.js +0 -52
- package/_standalone/.next/static/HL8b6d3NCfyoAXNuY2kcn/_buildManifest.js +0 -1
- package/_standalone/.next/static/chunks/1814.a79b84d37df75c43.js +0 -1
- package/_standalone/.next/static/chunks/3466.bc6ab3172ad66091.js +0 -1
- package/_standalone/.next/static/chunks/3637.38c4f28d8f698e0e.js +0 -1
- package/_standalone/.next/static/chunks/4351-9ab695985bb808ad.js +0 -1
- package/_standalone/.next/static/chunks/5133-3779d65f4fdfb041.js +0 -30
- package/_standalone/.next/static/chunks/5581-4dd3d32f6e8606ec.js +0 -29
- package/_standalone/.next/static/chunks/8735.66a049abcf0971fb.js +0 -48
- package/_standalone/.next/static/chunks/app/agents/page-4c0637183e46c8d3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agents/custom/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/connect/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/raw/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/im/config/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/im/status/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/im/test/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/clip/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/lint/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/tools/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/space-overview/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/changes/page-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-5333ab47257fab7f.js +0 -159
- package/_standalone/.next/static/chunks/app/echo/page-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/layout-bd0652768781e726.js +0 -133
- package/_standalone/.next/static/chunks/app/loading-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-8280ba2f5c20861e.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-b942374e2f88c53e.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e0c1e2c67572781c.js +0 -1
- package/_standalone/.next/static/chunks/webpack-9e42857d6c44fe70.js +0 -1
- package/_standalone/.next/static/css/8b1f248d6540e52f.css +0 -1
- package/_standalone/lib/core/__tests__/synonym-dict.test.ts +0 -82
- package/app/lib/core/__tests__/synonym-dict.test.ts +0 -82
- package/app/lib/core/synonym-dict.ts +0 -139
- /package/_standalone/.next/static/{HL8b6d3NCfyoAXNuY2kcn → ixCTELNH6V05Z00pC6ZMO}/_ssgManifest.js +0 -0
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8735],{439:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("shield",[["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"}]])},36999:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]])},51900:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},68806:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]])},94961:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},98735:(e,t,s)=>{s.r(t),s.d(t,{default:()=>td});var r=s(95155),a=s(12115),n=s(86901),l=s(68806),o=s(89363),i=s(90425);let d=(0,i.A)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]);var c=s(91958),u=s(6962),m=s(68459),x=s(13545),p=s(6296),h=s(9199),g=s(12651),f=s(33210),b=s(94961),v=s(73321),j=s(35581),y=s(22356),N=s(22164),k=s(49619),w=s(92972),C=s(20171),S=s(47376),A=s(51842),z=s(79704),T=s(60112);function M({form:e,t,locale:s,layout:a="full"}){let n=S.T_[e.protocol],l="zh"===s?"名称":"Name",o="zh"===s?"协议":"Protocol",i="zh"===s?"输入名称":"Enter name",d=e.isDuplicateName?"zh"===s?"名称已存在":"Name already exists":void 0;return(0,r.jsxs)("div",{className:"space-y-3",children:["compact"===a?(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)(C.D0,{label:l,hint:d,hintError:e.isDuplicateName,children:(0,r.jsx)(C.pd,{value:e.name,onChange:t=>e.setName(t.target.value),placeholder:i,autoFocus:!0})}),(0,r.jsx)(C.D0,{label:o,children:(0,r.jsx)(C.l6,{value:e.protocol,onChange:t=>e.setProtocol(t.target.value),children:S.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===s?S.T_[e].nameZh:S.T_[e].name},e))})})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(C.D0,{label:l,hint:d,hintError:e.isDuplicateName,children:(0,r.jsx)(C.pd,{value:e.name,onChange:t=>e.setName(t.target.value),placeholder:i})}),(0,r.jsx)(C.D0,{label:o,children:(0,r.jsx)(C.l6,{value:e.protocol,onChange:t=>e.setProtocol(t.target.value),children:S.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===s?S.T_[e].nameZh:S.T_[e].name},e))})})]}),(0,r.jsx)(C.D0,{label:"Base URL",children:(0,r.jsx)(C.pd,{value:e.baseUrl,onChange:t=>e.setBaseUrl(t.target.value),placeholder:n.fixedBaseUrl||"https://api.example.com/v1"})}),(0,r.jsx)(C.D0,{label:(0,r.jsxs)(r.Fragment,{children:["API Key ",(0,r.jsx)("span",{className:"text-muted-foreground/50 font-normal",children:"zh"===s?"(可选)":"(optional)"})]}),children:(0,r.jsx)(C.yA,{value:e.apiKey,onChange:e.setApiKey,placeholder:"sk-..."})}),(0,r.jsx)(C.D0,{label:"zh"===s?"模型":"Model",children:(0,r.jsx)(z.A,{value:e.model,onChange:e.setModel,placeholder:n.defaultModel,provider:e.protocol,apiKey:e.apiKey,baseUrl:e.baseUrl,supportsListModels:!!e.baseUrl.trim(),allowNoKey:!0,browseLabel:t.settings.ai.listModels,noModelsLabel:t.settings.ai.noModelsFound})})]})}var E=s(94514),R=s(53961);function I({result:e,disabled:t,onTest:s,t:a}){let n="testing"===e.state,l="ok"===e.state,o="error"===e.state;return(0,r.jsxs)("button",{type:"button",disabled:t||n,onClick:s,className:`inline-flex items-center gap-1.5 px-3.5 py-1.5 text-sm font-medium rounded-lg transition-all duration-200 disabled:cursor-not-allowed ${l?"bg-success/10 text-success border border-success/20":o?"bg-destructive/8 text-destructive border border-destructive/20 hover:bg-destructive/12":"border border-border text-muted-foreground hover:text-foreground hover:border-foreground/20 disabled:opacity-40"}`,children:[n?(0,r.jsx)(p.A,{size:13,className:"animate-spin"}):l?(0,r.jsx)(E.A,{size:13}):o?(0,r.jsx)(x.A,{size:13}):(0,r.jsx)(R.A,{size:13}),n?a.settings.ai.testKeyTesting:l&&null!=e.latency?a.settings.ai.testKeyOk(e.latency):o?function(e,t){switch(t){case"auth_error":return e.settings.ai.testKeyAuthError;case"model_not_found":return e.settings.ai.testKeyModelNotFound;case"rate_limited":return e.settings.ai.testKeyRateLimited;case"network_error":return e.settings.ai.testKeyNetworkError;default:return e.settings.ai.testKeyUnknown}}(a,e.code):a.settings.ai.testKey]})}function P({data:e,updateAi:t,updateAgent:s,t:l}){let{locale:o}=(0,j.Y)(),i=e.envOverrides??{},d=e.ai.providers.find(t=>t.id===e.ai.activeProvider),c=d?S.T_[d.protocol]:null,[u,m]=(0,a.useState)({}),[p,h]=(0,a.useState)(!1),g=(0,a.useRef)(void 0),f=(0,a.useRef)(e.ai.activeProvider);(0,a.useEffect)(()=>{f.current!==e.ai.activeProvider&&(f.current=e.ai.activeProvider,m({}),g.current&&(clearTimeout(g.current),g.current=void 0))},[e.ai.activeProvider]),(0,a.useEffect)(()=>()=>{g.current&&clearTimeout(g.current)},[]),(0,a.useEffect)(()=>{let t=e.agent?.reconnectRetries??3;try{localStorage.setItem("mindos-reconnect-retries",String(t))}catch(e){console.warn("[AiTab] localStorage setItem reconnectRetries failed:",e)}},[e.agent?.reconnectRetries]);let b=(0,a.useCallback)(async()=>{if(!d)return;let e=d.id;m(t=>({...t,[e]:{state:"testing"}}));try{let t={provider:d.protocol};d.apiKey&&(t.apiKey=d.apiKey),d.model&&(t.model=d.model),d.baseUrl&&(t.baseUrl=d.baseUrl);let s=await fetch("/api/settings/test-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await s.json();r.ok?(m(t=>({...t,[e]:{state:"ok",latency:r.latency}})),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{m(t=>({...t,[e]:{state:"idle"}}))},8e3)):m(t=>({...t,[e]:{state:"error",error:r.error,code:r.code}}))}catch{m(t=>({...t,[e]:{state:"error",code:"network_error",error:"Network error"}}))}},[d]),v=(0,a.useCallback)(s=>{d&&("apiKey"in s&&m(e=>({...e,[d.id]:{state:"idle"}})),t({providers:e.ai.providers.map(e=>e.id===d.id?{...e,...s}:e)}))},[d,e.ai.providers,t]),y=d?(0,S.Ux)(d.protocol):void 0,w=!!y&&i[y],M=!!c?.apiKeyFallback,E=(0,a.useCallback)(()=>{if(!d)return;let s=S.T_[d.protocol];m(e=>({...e,[d.id]:{state:"idle"}})),t({providers:e.ai.providers.map(e=>e.id===d.id?{...e,apiKey:"",model:"",baseUrl:s?.fixedBaseUrl??""}:e)})},[d,e.ai.providers,t]),R=(0,a.useCallback)(()=>{if(!d)return;let s=e.ai.providers.filter(e=>e.id!==d.id);t({activeProvider:s.length>0?s[0].id:"",providers:s}),m(e=>{let t={...e};return delete t[d.id],t})},[d,e.ai.providers,t]),I=(0,a.useCallback)(s=>{let r={id:s.id||(0,T.mV)(),name:s.name,protocol:s.protocol,apiKey:s.apiKey,model:s.model,baseUrl:s.baseUrl};t({activeProvider:r.id,providers:[...e.ai.providers,r]}),h(!1)},[e.ai.providers,t]),P=d?.name??("zh"===o?"未选择":"No provider");return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(n.A,{size:15}),title:l.settings.ai.provider,description:P,children:[(0,r.jsx)(A.A,{value:e.ai.activeProvider,onChange:e=>{"skip"!==e&&t({activeProvider:e}),h(!1)},compact:!0,customProviders:e.ai.providers,onAdd:()=>{let t=S.T_.openai,s="zh"===o?t.nameZh:t.name,r=new Set(e.ai.providers.map(e=>e.name.toLowerCase())),a=s;if(r.has(a.toLowerCase())){let e=2;for(;r.has(`${s} (${e})`.toLowerCase());)e++;a=`${s} (${e})`}h(!0)}}),p&&(0,r.jsx)($,{onSave:I,onCancel:()=>h(!1),t:l,existingNames:e.ai.providers.map(e=>e.name)},"new"),!p&&d&&(0,r.jsxs)("div",{className:"space-y-3 pt-3 border-t border-border",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)(C.D0,{label:"zh"===o?"名称":"Name",children:(0,r.jsx)(C.pd,{value:d.name,onChange:e=>v({name:e.target.value}),placeholder:"zh"===o?"输入名称":"Enter name"})}),(0,r.jsx)(C.D0,{label:"zh"===o?"协议":"Protocol",children:(0,r.jsx)(C.l6,{value:d.protocol,onChange:e=>v({protocol:e.target.value}),children:S.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===o?S.T_[e].nameZh:S.T_[e].name},e))})})]}),(0,r.jsxs)(C.D0,{label:(0,r.jsxs)(r.Fragment,{children:[l.settings.ai.apiKey," ",y&&(0,r.jsx)(C.Bt,{overridden:i[y]})]}),hint:c&&w?l.settings.ai.envFieldNote(y):c&&M?l.settings.ai.keyOptionalHint:void 0,children:[(0,r.jsx)(C.yA,{value:d.apiKey,onChange:e=>v({apiKey:e}),placeholder:"sk-..."}),c?.signupUrl&&!d.apiKey&&!w&&(0,r.jsxs)("a",{href:c.signupUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs mt-1.5 hover:underline",style:{color:"var(--amber)"},children:[(0,r.jsx)(N.A,{size:10}),M?"zh"===o?`下载 ${c.nameZh}`:`Download ${c.name}`:"zh"===o?`获取 ${c.nameZh} API Key`:`Get ${c.name} API Key`]})]}),(c?.supportsBaseUrl||d.baseUrl)&&(0,r.jsx)(C.D0,{label:"Base URL",children:(0,r.jsx)(C.pd,{value:d.baseUrl,onChange:e=>v({baseUrl:e.target.value}),placeholder:c?.fixedBaseUrl||(0,S.Ot)(d.protocol)||"https://api.openai.com/v1"})}),(0,r.jsx)(C.D0,{label:"zh"===o?"模型":"Model",children:(0,r.jsx)(z.A,{value:d.model,onChange:e=>v({model:e}),placeholder:c?.defaultModel??"",provider:d.protocol,apiKey:d.apiKey,envKey:!!w,baseUrl:d.baseUrl,supportsListModels:!!d.baseUrl?.trim()||!!c?.supportsListModels,allowNoKey:!!d.baseUrl?.trim(),browseLabel:l.settings.ai.listModels,noModelsLabel:l.settings.ai.noModelsFound})}),(0,r.jsx)(U,{provider:d.protocol,result:u[d.id]??{state:"idle"},hasKey:!!d.apiKey,hasEnv:!!w,hasConfig:!!(d.apiKey||d.model||d.baseUrl),onTest:b,onReset:E,onDelete:R,t:l})]}),!p&&Object.values(i).some(Boolean)&&(0,r.jsxs)("div",{className:"flex items-start gap-2 text-xs text-[var(--amber)] bg-[var(--amber-subtle)] border border-[var(--amber)]/20 rounded-lg px-3 py-2.5",children:[(0,r.jsx)(x.A,{size:13,className:"shrink-0 mt-0.5"}),(0,r.jsx)("span",{children:l.settings.ai.envHint})]})]}),(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(k.A,{size:15}),title:l.settings.agent.title,description:l.settings.agent.subtitle??"Configure how the AI agent operates",children:[(0,r.jsx)(C.pM,{label:l.settings.agent.maxSteps,hint:l.settings.agent.maxStepsHint,children:(0,r.jsxs)(C.l6,{value:String(e.agent?.maxSteps??20),onChange:e=>s({maxSteps:Number(e.target.value)}),className:"w-20",children:[(0,r.jsx)("option",{value:"5",children:"5"}),(0,r.jsx)("option",{value:"10",children:"10"}),(0,r.jsx)("option",{value:"15",children:"15"}),(0,r.jsx)("option",{value:"20",children:"20"}),(0,r.jsx)("option",{value:"25",children:"25"}),(0,r.jsx)("option",{value:"30",children:"30"})]})}),(0,r.jsx)(C.pM,{label:l.settings.agent.contextStrategy,hint:l.settings.agent.contextStrategyHint,children:(0,r.jsxs)(C.l6,{value:e.agent?.contextStrategy??"auto",onChange:e=>s({contextStrategy:e.target.value}),className:"w-24",children:[(0,r.jsx)("option",{value:"auto",children:l.settings.agent.contextStrategyAuto}),(0,r.jsx)("option",{value:"off",children:l.settings.agent.contextStrategyOff})]})}),(0,r.jsx)(C.pM,{label:l.settings.agent.reconnectRetries,hint:l.settings.agent.reconnectRetriesHint,children:(0,r.jsxs)(C.l6,{value:String(e.agent?.reconnectRetries??3),onChange:e=>{let t=Number(e.target.value);s({reconnectRetries:t});try{localStorage.setItem("mindos-reconnect-retries",String(t))}catch(e){console.warn("[AiTab] localStorage setItem reconnectRetries failed:",e)}},className:"w-20",children:[(0,r.jsx)("option",{value:"0",children:"Off"}),(0,r.jsx)("option",{value:"1",children:"1"}),(0,r.jsx)("option",{value:"2",children:"2"}),(0,r.jsx)("option",{value:"3",children:"3"}),(0,r.jsx)("option",{value:"5",children:"5"}),(0,r.jsx)("option",{value:"10",children:"10"})]})}),c?.supportsThinking&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(C.pM,{label:l.settings.agent.thinking,hint:l.settings.agent.thinkingHint,children:(0,r.jsx)(C.lM,{checked:e.agent?.enableThinking??!1,onChange:()=>s({enableThinking:!e.agent?.enableThinking})})}),e.agent?.enableThinking&&(0,r.jsx)(C.D0,{label:l.settings.agent.thinkingBudget,hint:l.settings.agent.thinkingBudgetHint,children:(0,r.jsx)(C.pd,{type:"number",value:String(e.agent?.thinkingBudget??5e3),onChange:e=>{let t=parseInt(e.target.value,10);isNaN(t)||s({thinkingBudget:Math.max(1e3,Math.min(5e4,t))})},min:1e3,max:5e4,step:1e3})})]})]}),(0,r.jsx)(D,{})]})}function U({provider:e,result:t,hasKey:s,hasEnv:n,hasConfig:l,onTest:o,onReset:i,onDelete:d,t:c}){let[u,x]=(0,a.useState)(null),p=(0,a.useRef)(void 0),g=!!S.T_[e]?.apiKeyFallback;(0,a.useEffect)(()=>()=>{p.current&&clearTimeout(p.current)},[]);let f=e=>{u===e?("reset"===e?i?.():d?.(),x(null),p.current&&clearTimeout(p.current)):(x(e),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>x(null),3e3))},{locale:b}=(0,j.Y)();return(0,r.jsx)("div",{className:"space-y-2 pt-2",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)(I,{result:t,disabled:!(s||n||g),onTest:o,t:c}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[i&&l&&(0,r.jsxs)("button",{type:"button",onClick:()=>f("reset"),onBlur:()=>{"reset"===u&&(x(null),p.current&&clearTimeout(p.current))},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${"reset"===u?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(h.A,{size:12}),"reset"===u?"zh"===b?"确认重置?":"Confirm?":"zh"===b?"重置":"Reset"]}),d&&(0,r.jsxs)("button",{type:"button",onClick:()=>f("delete"),onBlur:()=>{"delete"===u&&(x(null),p.current&&clearTimeout(p.current))},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${"delete"===u?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(m.A,{size:12}),"delete"===u?"zh"===b?"确认删除?":"Confirm?":"zh"===b?"删除":"Delete"]})]})]})})}function $({initial:e,onSave:t,onCancel:s,onDelete:n,t:l,existingNames:o}){let{locale:i}=(0,j.Y)(),d=function({initial:e,onSave:t,locale:s,existingNames:r}){let[n,l]=(0,a.useState)(e?.name??""),[o,i]=(0,a.useState)(e?.protocol??"openai"),[d,c]=(0,a.useState)(e?.apiKey??""),[u,m]=(0,a.useState)(e?.model??""),[x,p]=(0,a.useState)(e?.baseUrl??""),[h,g]=(0,a.useState)({state:"idle"}),f=n.trim(),b=!!(f&&r?.some(e=>e.toLowerCase()===f.toLowerCase())),v=!!(f&&x.trim()&&u.trim()&&!b),j=(0,a.useCallback)(async()=>{if(!v)return void g({state:"error",error:"zh"===s?"名称、接口地址和模型为必填":"Name, base URL, and model are required"});g({state:"testing"});try{let t=await fetch("/api/settings/test-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e?.id?{provider:e.id,apiKey:d,model:u,baseUrl:x}:{protocol:o,apiKey:d,model:u,baseUrl:x})}),s=await t.json();s.ok?g({state:"ok",latency:s.latency}):g({state:"error",error:s.error||"Test failed",code:s.code})}catch{g({state:"error",code:"network_error",error:"Network error"})}},[v,d,u,x,o,s,e?.id]),y=(0,a.useCallback)(()=>{b?g({state:"error",error:"zh"===s?"名称已存在,请使用其他名称":"Name already exists, please use a different name"}):v?t({id:e?.id||(0,T.mV)(),name:n.trim(),protocol:o,apiKey:d,model:u.trim(),baseUrl:x.trim()}):g({state:"error",error:"zh"===s?"名称、接口地址和模型为必填":"Name, base URL, and model are required"})},[v,b,n,o,d,u,x,e?.id,t,s]);return{name:n,setName:l,protocol:o,setProtocol:i,apiKey:d,setApiKey:c,model:u,setModel:m,baseUrl:x,setBaseUrl:p,testResult:h,canSave:v,isDuplicateName:b,handleTest:j,handleSave:y}}({initial:e,onSave:t,locale:i,existingNames:o}),[c,u]=(0,a.useState)(!1),x=(0,a.useRef)(void 0);(0,a.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let p=e?.id?"zh"===i?"编辑 Provider":"Edit Provider":"zh"===i?"添加 Provider":"Add Provider",h=[];return d.name.trim()||h.push("zh"===i?"名称":"Name"),d.baseUrl.trim()||h.push("zh"===i?"接口地址":"Base URL"),d.model.trim()||h.push("zh"===i?"模型":"Model"),(0,r.jsxs)("div",{className:"mt-3 rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-border",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:p}),(0,r.jsx)("button",{type:"button",onClick:s,className:"p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors","aria-label":"zh"===i?"关闭":"Close",children:(0,r.jsx)(f.A,{size:14})})]}),(0,r.jsxs)("div",{className:"p-4",children:[(0,r.jsx)(M,{form:d,t:l,locale:i,layout:"compact"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-4",children:[(0,r.jsx)(I,{result:d.testResult,disabled:!d.canSave,onTest:d.handleTest,t:l}),n&&e?.id&&(0,r.jsxs)("button",{type:"button",onClick:()=>{c?(n(),x.current&&clearTimeout(x.current)):(u(!0),x.current=setTimeout(()=>u(!1),3e3))},onBlur:()=>{u(!1),x.current&&clearTimeout(x.current)},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${c?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(m.A,{size:12}),c?"zh"===i?"确认删除?":"Confirm?":"zh"===i?"删除":"Delete"]}),(0,r.jsxs)("div",{className:"flex-1",children:[d.isDuplicateName&&(0,r.jsx)("span",{className:"text-2xs text-destructive pl-2",children:"zh"===i?"名称已存在":"Name already exists"}),!d.isDuplicateName&&!d.canSave&&h.length>0&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/60 pl-2",children:"zh"===i?`需要: ${h.join("、")}`:`Required: ${h.join(", ")}`})]}),(0,r.jsx)("button",{type:"button",onClick:s,className:"px-3 py-1.5 text-sm rounded-lg text-muted-foreground hover:text-foreground transition-colors",children:l.settings?.customProviders?.modal?.buttonCancel??"Cancel"}),(0,r.jsx)("button",{type:"button",onClick:d.handleSave,disabled:!d.canSave,className:"px-4 py-1.5 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] hover:bg-[var(--amber)]/90 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:"zh"===i?"保存":"Save"})]})]})]})}function D(){let{t:e}=(0,j.Y)(),[t,s]=(0,a.useState)("panel");return(0,a.useEffect)(()=>{try{let e=localStorage.getItem("ask-mode");"popup"===e&&s("popup")}catch(e){console.warn("[AiTab] localStorage getItem ask-mode failed:",e)}},[]),(0,r.jsx)(C.L7,{icon:(0,r.jsx)(w.A,{size:15}),title:e.settings.askDisplayMode?.label??"Display Mode",description:e.settings.askDisplayMode?.hint??"Side panel stays docked on the right. Popup opens a floating dialog.",children:(0,r.jsxs)(C.l6,{value:t,onChange:e=>(e=>{s(e);try{localStorage.setItem("ask-mode",e)}catch(e){console.warn("[AiTab] localStorage setItem ask-mode failed:",e)}window.dispatchEvent(new StorageEvent("storage",{key:"ask-mode",newValue:e}))})(e.target.value),children:[(0,r.jsx)("option",{value:"panel",children:e.settings.askDisplayMode?.panel??"Side Panel"}),(0,r.jsx)("option",{value:"popup",children:e.settings.askDisplayMode?.popup??"Popup"})]})})}var F=s(51900),L=s(36999),O=s(92451),B=s(97810);let _=(0,i.A)("type",[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]]),K=(0,i.A)("a-large-small",[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16",key:"xik6mr"}],["path",{d:"M15.697 14h5.606",key:"1stdlc"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16",key:"d5nyq2"}],["path",{d:"M3.304 13h6.392",key:"1q3zxz"}]]),H=(0,i.A)("columns-3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);var G=s(66088),V=s(21362);let J=[{value:"680px",label:"Narrow",width:42},{value:"780px",label:"Default",width:56},{value:"960px",label:"Wide",width:75},{value:"100%",label:"Full",width:100}],q=[{value:"lora",label:"Lora",category:"Serif",style:{fontFamily:"Lora, Georgia, serif"}},{value:"ibm-plex-sans",label:"IBM Plex Sans",category:"Sans",style:{fontFamily:"'IBM Plex Sans', sans-serif"}},{value:"inter",label:"Inter",category:"Sans",style:{fontFamily:"var(--font-inter), sans-serif"}},{value:"ibm-plex-mono",label:"IBM Plex Mono",category:"Mono",style:{fontFamily:"'IBM Plex Mono', monospace"}}];function W({icon:e,label:t,children:s}){return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t})]}),s]})}function Y({options:e,value:t,onChange:s}){return(0,r.jsx)("div",{className:"flex gap-2",children:e.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>s(e.value),className:`flex items-center gap-1.5 px-3.5 py-2 text-sm font-medium rounded-xl transition-all ${t===e.value?"bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm":"bg-muted/50 text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:[e.icon,e.label]},e.value))})}function Z({font:e,setFont:t,fontSize:s,setFontSize:n,contentWidth:l,setContentWidth:o,dark:i,setDark:c,locale:u,setLocale:m,t:x}){let[p,h]=(0,a.useState)(!1),[g,f]=(0,a.useState)(()=>localStorage.getItem("theme")??"system"),[b,v]=(0,a.useState)(()=>localStorage.getItem("locale")??"system"),j=x.settings.appearance;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(d,{size:15}),title:j.preferencesTitle??"Preferences",children:[(0,r.jsx)(W,{icon:(0,r.jsx)(F.A,{size:14}),label:j.colorTheme,children:(0,r.jsx)(Y,{options:[{value:"system",label:j.system,icon:(0,r.jsx)(w.A,{size:14})},{value:"dark",label:j.dark,icon:(0,r.jsx)(L.A,{size:14})},{value:"light",label:j.light,icon:(0,r.jsx)(F.A,{size:14})}],value:g,onChange:e=>{f(e),localStorage.setItem("theme",e);let t="system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches:"dark"===e;c(t),document.documentElement.classList.toggle("dark",t)}})}),(0,r.jsx)(W,{icon:(0,r.jsx)(O.A,{size:14}),label:j.language,children:(0,r.jsx)(Y,{options:[{value:"system",label:j.system,icon:(0,r.jsx)(w.A,{size:14})},{value:"en",label:"EN"},{value:"zh",label:"中文"}],value:b,onChange:e=>{v(e),localStorage.setItem("locale",e);let t="system"===e?navigator.language.startsWith("zh")?"zh":"en":e;m(t),document.cookie=`locale=${t};path=/;max-age=31536000;SameSite=Lax`}})})]}),(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(B.A,{size:15}),title:j.readingTitle??"Reading",description:j.readingDesc??"Customize how your notes look",children:[(0,r.jsx)(W,{icon:(0,r.jsx)(_,{size:14}),label:j.readingFont,children:(0,r.jsx)("div",{className:"space-y-0.5",children:q.map(s=>{let a=e===s.value;return(0,r.jsxs)("button",{type:"button",onClick:()=>t(s.value),className:`flex items-center gap-4 w-full px-3 py-2.5 rounded-lg transition-all text-left relative ${a?"bg-[var(--amber-subtle)]":"hover:bg-muted/50"}`,children:[a&&(0,r.jsx)("div",{className:"absolute left-0 top-2 bottom-2 w-[3px] rounded-r-full bg-[var(--amber)]"}),(0,r.jsx)("span",{className:`text-xl font-medium w-10 text-center shrink-0 ${a?"text-foreground":"text-muted-foreground/60"}`,style:{fontFamily:s.style.fontFamily},children:"Aa"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,r.jsx)("span",{className:`text-sm font-medium ${a?"text-foreground":"text-muted-foreground"}`,style:{fontFamily:s.style.fontFamily},children:s.label}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground/50",children:s.category})]}),(0,r.jsx)("p",{className:`text-sm truncate mt-0.5 ${a?"text-muted-foreground":"text-muted-foreground/40"}`,style:{fontFamily:s.style.fontFamily},children:j.fontPreview})]})]},s.value)})})}),(0,r.jsx)(W,{icon:(0,r.jsx)(K,{size:14}),label:j.fontSize,children:(0,r.jsxs)("div",{className:"px-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground/60 shrink-0",style:{fontSize:"11px"},children:"A"}),(0,r.jsx)("input",{type:"range",min:14,max:17,step:1,value:parseInt(s),onChange:e=>n(`${e.target.value}px`),className:"flex-1 h-1.5 rounded-full appearance-none bg-muted cursor-pointer accent-[var(--amber)] [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-[var(--amber)] [&::-webkit-slider-thumb]:shadow-sm [&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:transition-transform [&::-webkit-slider-thumb]:hover:scale-110 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-[var(--amber)] [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:shadow-sm [&::-moz-range-thumb]:cursor-pointer"}),(0,r.jsx)("span",{className:"text-base text-muted-foreground/60 shrink-0",children:"A"})]}),(0,r.jsx)("div",{className:"text-center mt-1.5",children:(0,r.jsxs)("span",{className:"text-xs tabular-nums text-muted-foreground",children:[parseInt(s),"px"]})}),(0,r.jsx)("p",{className:"text-muted-foreground leading-relaxed mt-2 px-1",style:{fontSize:s,fontFamily:q.find(t=>t.value===e)?.style.fontFamily},children:j.fontSizePreview})]})}),(0,r.jsx)(W,{icon:(0,r.jsx)(H,{size:14}),label:j.contentWidth,children:(0,r.jsx)("div",{className:"space-y-1",children:J.map(e=>{let t=l===e.value;return(0,r.jsxs)("button",{type:"button",onClick:()=>o(e.value),className:`flex items-center gap-3 w-full px-3 py-2 rounded-lg transition-all ${t?"bg-[var(--amber-subtle)]":"hover:bg-muted/50"}`,children:[(0,r.jsx)("div",{className:"flex-1 h-2 rounded-full bg-muted/40 overflow-hidden",children:(0,r.jsx)("div",{className:`h-full rounded-full transition-all ${t?"bg-[var(--amber)]":"bg-muted-foreground/20"}`,style:{width:`${e.width}%`}})}),(0,r.jsx)("span",{className:`text-sm shrink-0 w-14 text-right ${t?"text-foreground font-medium":"text-muted-foreground"}`,children:e.label})]},e.value)})})})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground/40 px-0.5",children:j.browserNote}),(0,r.jsxs)("div",{className:"border-t border-border pt-4",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>h(!p),className:"flex items-center gap-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",children:[p?(0,r.jsx)(G.A,{size:14}):(0,r.jsx)(V.A,{size:14}),x.settings.tabs.shortcuts]}),p&&(0,r.jsx)("div",{className:"mt-3 space-y-0.5",children:x.shortcuts.map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center justify-between py-1.5 px-1",children:[(0,r.jsx)("span",{className:"text-sm text-foreground",children:e.description}),(0,r.jsx)("div",{className:"flex items-center gap-1",children:e.keys.map((e,t)=>(0,r.jsx)("kbd",{className:"px-1.5 py-0.5 text-2xs font-mono bg-muted border border-border rounded text-muted-foreground",children:e},t))})]},t))})]})]})}let Q=(0,i.A)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]),X=(0,i.A)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);var ee=s(67635);let et=(0,i.A)("flask-conical",[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]);var es=s(65576),er=s(4235),ea=s(39498),en=s(7834);function el(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<0x40000000?`${(e/1048576).toFixed(1)} MB`:`${(e/0x40000000).toFixed(2)} GB`}var eo=s(36782),ei=s(9339);let ed=(0,ei.createServerReference)("002e61729c61ae376f40594e88ecc52f7ecf1756ca",ei.callServer,void 0,ei.findSourceMapURL,"scanExampleFilesAction"),ec=(0,ei.createServerReference)("00a0581aceaf63a9553dd9e3ff60ca02ca9d3e7bb9",ei.callServer,void 0,ei.findSourceMapURL,"cleanupExamplesAction");function eu({data:e,setData:t,t:s}){let l=e.envOverrides??{},o=s.settings.knowledge,i=s.settings.appearance,[d,u]=(0,a.useState)(()=>"1"===localStorage.getItem("mindos:labs-echo")),[x,g]=(0,a.useState)(()=>"1"===localStorage.getItem("mindos:labs-workflows")),[f,b]=(0,a.useState)(()=>"true"===localStorage.getItem("show-hidden-files")),[v,j]=(0,a.useState)(null),[N,k]=(0,a.useState)(!1),[w,S]=(0,a.useState)(null);(0,a.useEffect)(()=>{ed().then(e=>j(e.files.length)).catch(e=>{console.warn("[KnowledgeTab] scanExampleFilesAction failed:",e)})},[]);let[A,z]=(0,a.useState)(null),[T,M]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(0,y.n)("/api/setup").then(e=>{let t=e.guideState;t&&(z(t.active),M(!!t.dismissed))}).catch(e=>{console.error("Failed to fetch guide state:",e)})},[]);let R=(0,a.useCallback)(()=>{let e=!T;M(e);let t={dismissed:e};e||(t.active=!0),(0,y.n)("/api/setup",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({guideState:t})}).then(()=>window.dispatchEvent(new Event("guide-state-updated"))).catch(t=>{console.error("Failed to update guide state:",t),M(!e)})},[T]),I=(0,a.useCallback)(()=>{(0,y.n)("/api/setup",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({guideState:{active:!0,dismissed:!1,walkthroughStep:0,walkthroughDismissed:!1}})}).then(()=>{z(!0),M(!1),window.dispatchEvent(new Event("guide-state-updated"))}).catch(e=>console.error("Failed to restart walkthrough:",e))},[]),P=(0,a.useSyncExternalStore)(()=>()=>{},()=>`${window.location.protocol}//${window.location.hostname}`,()=>"http://localhost"),[U,$]=(0,a.useState)(!1),[D,F]=(0,a.useState)(null),[L,O]=(0,a.useState)(!1),[B,_]=(0,a.useState)(!1),K=!!e.authToken,H=D??e.authToken??"";async function G(){$(!0);try{let e=await (0,y.n)("/api/settings/reset-token",{method:"POST"});F(e.token),t(t=>t?{...t,authToken:e.token}:t)}finally{$(!1)}}async function V(){t(e=>e?{...e,authToken:""}:e),F(null)}return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(Q,{size:15}),title:o.cardTitle??"Knowledge Base",description:o.mindRootHint,children:[(0,r.jsx)(C.D0,{label:(0,r.jsxs)(r.Fragment,{children:[o.mindRoot," ",(0,r.jsx)(C.Bt,{overridden:l.MIND_ROOT})]}),hint:l.MIND_ROOT?o.envNote:o.mindRootHint,children:(0,r.jsx)(C.pd,{value:e.mindRoot,onChange:e=>t(t=>t?{...t,mindRoot:e.target.value}:t),placeholder:"/path/to/your/notes"})}),(0,r.jsx)(C.pM,{label:o.showHiddenFiles,hint:o.showHiddenFilesHint,children:(0,r.jsx)(C.lM,{checked:f,onChange:()=>{let e=!f;b(e),(0,eo.Fo)(e)}})}),null!==v&&v>0&&null===w&&(0,r.jsx)(C.pM,{label:o.cleanupExamples,hint:o.cleanupExamplesHint,children:(0,r.jsxs)("button",{onClick:()=>_(!0),disabled:N,title:N?s.hints.cleanupInProgress:void 0,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0 disabled:opacity-50",children:[N?(0,r.jsx)(p.A,{size:12,className:"animate-spin"}):(0,r.jsx)(m.A,{size:12}),o.cleanupExamplesButton,(0,r.jsx)("span",{className:"ml-1 tabular-nums text-2xs opacity-70",children:v})]})}),null!==w&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(E.A,{size:14}),o.cleanupExamplesDone(w)]})]}),(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(X,{size:15}),title:o.securityTitle??"Security",children:[(0,r.jsx)(C.D0,{label:o.webPassword,hint:o.webPasswordHint,children:(0,r.jsx)(C.yA,{value:e.webPassword??"",onChange:e=>t(t=>t?{...t,webPassword:e}:t),placeholder:o.passwordPlaceholder??"Leave empty to disable"})}),(0,r.jsx)(C.D0,{label:o.authToken,hint:K?o.authTokenHint:o.authTokenNone,children:(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 bg-background border border-border rounded-lg min-h-[38px]",children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground break-all select-all",children:H||(0,r.jsx)("span",{className:"text-muted-foreground italic",children:o.tokenNotSet??"— not set —"})}),H&&(0,r.jsx)("button",{type:"button",onClick:function(){let t=D??e.authToken??"";t&&(0,en.l)(t).then(e=>{e&&er.oR.copy()})},className:"shrink-0 p-1 rounded text-muted-foreground hover:text-foreground transition-colors",title:o.authTokenCopy,children:(0,r.jsx)(ee.A,{size:13})})]}),e.mcpPort&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:[o.authTokenMcpPort,": ",(0,r.jsx)("code",{className:"font-mono",children:e.mcpPort}),H&&(0,r.jsxs)(r.Fragment,{children:[" \xa0\xb7\xa0 ",o.mcpUrl??"MCP URL",": ",(0,r.jsx)("code",{className:"font-mono select-all",children:`${P}:${e.mcpPort}/mcp`})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:function(){O(!0)},disabled:U,title:U?s.hints.tokenResetInProgress:void 0,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:U?"animate-spin":""}),o.authTokenReset]}),K&&(0,r.jsxs)("button",{type:"button",onClick:V,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-destructive hover:border-destructive/50 transition-colors",children:[(0,r.jsx)(m.A,{size:14}),o.authTokenClear]})]}),D&&(0,r.jsx)("p",{className:"text-xs text-[var(--amber-text)]",children:o.tokenGenerated})]})})]}),null!==A&&(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(n.A,{size:15}),title:s.guide?.title??"Getting Started",children:[(0,r.jsx)(C.pM,{label:s.guide?.showGuide??"Show getting started guide",children:(0,r.jsx)(C.lM,{checked:!T,onChange:()=>R()})}),(0,r.jsxs)("button",{onClick:I,className:"flex items-center gap-1.5 mt-2 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(h.A,{size:14}),o.restartWalkthrough??"Restart walkthrough"]})]}),(0,r.jsx)(C.L7,{icon:(0,r.jsx)(et,{size:15}),title:i.labsTitle??"Labs",description:i.labsDesc??"Experimental features that are still in development.",children:(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)(em,{label:i.labsEcho??"Echo",description:i.labsEchoDesc??"Reflective journaling powered by your notes.",checked:d,onChange:e=>{u(e),localStorage.setItem("mindos:labs-echo",e?"1":"0"),window.dispatchEvent(new Event("mindos:labs-changed"))}}),(0,r.jsx)(em,{label:i.labsWorkflows??"Flows",description:i.labsWorkflowsDesc??"Visual workflow automation for agents.",checked:x,onChange:e=>{g(e),localStorage.setItem("mindos:labs-workflows",e?"1":"0"),window.dispatchEvent(new Event("mindos:labs-changed"))}})]})}),(0,r.jsx)(ex,{k:o}),(0,r.jsx)(ea.TM,{open:L,title:o.authTokenReset??"Regenerate Token",message:o.authTokenResetConfirm,confirmLabel:o.authTokenReset??"Regenerate",cancelLabel:o.cancel??"Cancel",onConfirm:()=>{O(!1),G()},onCancel:()=>O(!1)}),(0,r.jsx)(ea.TM,{open:B,title:o.cleanupExamples??"Cleanup Examples",message:null!==v?o.cleanupExamplesConfirm(v):"",confirmLabel:o.cleanupExamplesButton??"Clean up",cancelLabel:o.cancel??"Cancel",variant:"destructive",onConfirm:async()=>{_(!1),k(!0);let e=await ec();k(!1),e.success&&(S(e.deleted),j(0))},onCancel:()=>_(!1)})]})}function em({label:e,description:t,checked:s,onChange:a}){return(0,r.jsxs)("label",{className:"flex items-center gap-3 cursor-pointer group",children:[(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground block",children:e}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:t})]}),(0,r.jsx)("button",{type:"button",role:"switch","aria-checked":s,onClick:()=>a(!s),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 ${s?"bg-[var(--amber)]":"bg-muted-foreground/20"}`,children:(0,r.jsx)("span",{className:`absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform ${s?"translate-x-4":"translate-x-0"}`})})]})}function ex({k:e}){let[t,s]=(0,a.useState)(!1),[n,l]=(0,a.useState)(null),[o,i]=(0,a.useState)(!1),d=(0,a.useCallback)(async()=>{i(!0);try{let e=await (0,y.n)("/api/monitoring",{timeout:5e3});l(e)}catch{}i(!1)},[]),c=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{if(!t){c.current=!1;return}c.current||(d(),c.current=!0);let e=setInterval(d,1e4);return()=>clearInterval(e)},[t,d]),(0,r.jsxs)("div",{className:"border-t border-border pt-5",children:[(0,r.jsxs)("button",{onClick:()=>s(e=>!e),className:"flex items-center gap-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors w-full",children:[t?(0,r.jsx)(G.A,{size:14}):(0,r.jsx)(V.A,{size:14}),(0,r.jsx)(es.A,{size:12}),e.monitoringTitle??"System Monitoring",o&&(0,r.jsx)(p.A,{size:10,className:"animate-spin ml-1"})]}),t&&n&&(0,r.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-x-6 gap-y-2 text-xs",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorHeap??"Heap"}),(0,r.jsxs)("span",{className:"ml-2 tabular-nums",children:[el(n.system.memory.heapUsed)," / ",el(n.system.memory.heapTotal)]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorRss??"RSS"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:el(n.system.memory.rss)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorUptime??"Uptime"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:function(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let s=Math.floor(t/60);if(s<60)return`${s}m ${t%60}s`;let r=Math.floor(s/60);if(r<24)return`${r}h ${s%60}m`;let a=Math.floor(r/24);return`${a}d ${r%24}h`}(n.system.uptimeMs)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorNode??"Node"}),(0,r.jsx)("span",{className:"ml-2",children:n.system.nodeVersion})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorRequests??"Requests"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.agentRequests})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorToolCalls??"Tool Calls"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.toolExecutions})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorTokens??"Tokens"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:(n.application.totalTokens.input+n.application.totalTokens.output).toLocaleString()})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorFiles??"Files"}),(0,r.jsxs)("span",{className:"ml-2 tabular-nums",children:[n.knowledgeBase.fileCount," (",el(n.knowledgeBase.totalSizeBytes),")"]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"MCP"}),(0,r.jsx)("span",{className:"ml-2",children:n.mcp.running?e.monitorMcpRunning?.(n.mcp.port)??`Running :${n.mcp.port}`:e.monitorMcpStopped??"Stopped"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorErrors??"Errors"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.errors})]})]}),t&&!n&&!o&&(0,r.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:e.monitoringFailed??"Failed to load monitoring data"})]})}var ep=s(402),eh=s(10762),eg=s(439),ef=s(15411),eb=s(7915),ev=s(70617),ej=s(61878),ey=s(51914),eN=s(49387);let ek=(0,s(37206).default)(()=>Promise.all([s.e(3013),s.e(3637)]).then(s.bind(s,63637)),{loadableGenerated:{webpack:()=>[63637]},ssr:!1});function ew({skill:e,expanded:t,onExpand:s,onToggle:a,onDelete:n,onEditStart:l,onEditSave:o,onEditCancel:i,editing:d,editContent:c,setEditContent:u,editError:h,saving:g,fullContent:f,loadingContent:b,loadErrors:v,m:j}){return(0,r.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors",onClick:()=>s(e.name),children:[t?(0,r.jsx)(G.A,{size:12}):(0,r.jsx)(V.A,{size:12}),(0,r.jsx)("span",{className:"text-xs font-medium flex-1",children:e.name}),(0,r.jsx)("span",{className:`text-2xs px-1.5 py-0.5 rounded ${"builtin"===e.source?"bg-muted text-muted-foreground":"bg-[var(--amber-subtle)] text-[var(--amber-text)]"}`,children:"builtin"===e.source?j?.skillBuiltin??"Built-in":j?.skillUser??"Custom"}),(0,r.jsx)(C.lM,{size:"sm",checked:e.enabled,onClick:t=>{t.stopPropagation(),a(e.name,!e.enabled)}})]}),t&&(0,r.jsxs)("div",{className:"px-3 py-2 border-t border-border text-xs space-y-2 bg-muted/20",children:[(0,r.jsx)("p",{className:"text-muted-foreground",children:e.description||"No description"}),(0,r.jsx)("p",{className:"text-muted-foreground font-mono text-2xs",children:e.path}),b===e.name?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),(0,r.jsx)("span",{className:"text-2xs",children:"Loading..."})]}):f[e.name]?(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-2xs text-muted-foreground font-medium",children:j?.skillContent??"Content"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[e.editable&&d!==e.name&&(0,r.jsxs)("button",{onClick:()=>l(e.name),className:"flex items-center gap-1 text-2xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(eN.A,{size:10}),j?.editSkill??"Edit"]}),e.editable&&(0,r.jsxs)("button",{onClick:()=>n(e.name),className:"flex items-center gap-1 text-2xs text-destructive hover:underline",children:[(0,r.jsx)(m.A,{size:10}),j?.deleteSkill??"Delete"]})]})]}),d===e.name?(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("textarea",{value:c,onChange:e=>u(e.target.value),rows:Math.min(20,(c.match(/\n/g)||[]).length+3),className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y font-mono"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{onClick:()=>o(e.name),disabled:g,className:"flex items-center gap-1 px-2.5 py-1 text-xs rounded-md disabled:opacity-40 disabled:cursor-not-allowed transition-colors bg-[var(--amber)] text-[var(--amber-foreground)]",children:[g&&(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),j?.saveSkill??"Save"]}),(0,r.jsx)("button",{onClick:i,className:"px-2.5 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground transition-colors",children:j?.cancelSkill??"Cancel"})]}),h&&(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),h]})]}):(0,r.jsx)("div",{className:"w-full rounded-md border border-border bg-background/50 max-h-[300px] overflow-y-auto px-2.5 py-1.5 text-xs [&_.prose]:max-w-none [&_.prose]:text-xs [&_h1]:text-sm [&_h2]:text-xs [&_h3]:text-xs [&_pre]:text-2xs [&_code]:text-2xs",children:(0,r.jsx)(ek,{content:function(e){if(!e.startsWith("---"))return e;let t=e.indexOf("\n---",3);return -1===t?e:e.slice(t+4).replace(/^\n+/,"")}(f[e.name])})})]}):v[e.name]?(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),v[e.name]]}):null]})]})}let eC=e=>`---
|
|
2
|
-
name: ${e}
|
|
3
|
-
description: >
|
|
4
|
-
Describe WHEN the agent should use this
|
|
5
|
-
skill. Be specific about trigger conditions.
|
|
6
|
-
---`,eS={general:e=>`${eC(e)}
|
|
7
|
-
|
|
8
|
-
# Instructions
|
|
9
|
-
|
|
10
|
-
## Context
|
|
11
|
-
<!-- Background knowledge for the agent -->
|
|
12
|
-
|
|
13
|
-
## Steps
|
|
14
|
-
1.
|
|
15
|
-
2.
|
|
16
|
-
|
|
17
|
-
## Rules
|
|
18
|
-
<!-- Constraints, edge cases, formats -->
|
|
19
|
-
- `,"tool-use":e=>`${eC(e)}
|
|
20
|
-
|
|
21
|
-
# Instructions
|
|
22
|
-
|
|
23
|
-
## Available Tools
|
|
24
|
-
<!-- List tools the agent can use -->
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
## When to Use
|
|
28
|
-
<!-- Conditions that trigger this skill -->
|
|
29
|
-
|
|
30
|
-
## Output Format
|
|
31
|
-
<!-- Expected response structure -->
|
|
32
|
-
`,workflow:e=>`${eC(e)}
|
|
33
|
-
|
|
34
|
-
# Instructions
|
|
35
|
-
|
|
36
|
-
## Trigger
|
|
37
|
-
<!-- What triggers this workflow -->
|
|
38
|
-
|
|
39
|
-
## Steps
|
|
40
|
-
1.
|
|
41
|
-
2.
|
|
42
|
-
|
|
43
|
-
## Validation
|
|
44
|
-
<!-- How to verify success -->
|
|
45
|
-
|
|
46
|
-
## Rollback
|
|
47
|
-
<!-- What to do on failure -->
|
|
48
|
-
`};function eA({onSave:e,onCancel:t,saving:s,error:n,m:l}){let[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(""),[u,m]=(0,a.useState)("general"),h=(e,t)=>(eS[t||u]||eS.general)(e||"my-skill");return(0,r.jsxs)("div",{className:"border border-border rounded-lg p-3 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xs font-medium",children:l?.addSkill??"+ Add Skill"}),(0,r.jsx)("button",{onClick:t,className:"p-0.5 rounded hover:bg-muted text-muted-foreground",children:(0,r.jsx)(f.A,{size:12})})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillName??"Name"}),(0,r.jsx)("input",{type:"text",value:o,onChange:e=>{let t,s;return t=e.target.value.toLowerCase().replace(/[^a-z0-9-]/g,""),s=h(o||"my-skill"),void((!d||d===s)&&c(h(t||"my-skill")),i(t))},placeholder:"my-skill",className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background font-mono text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillTemplate??"Template"}),(0,r.jsx)("div",{className:"flex rounded-md border border-border overflow-hidden w-fit",children:["general","tool-use","workflow"].map((e,t)=>(0,r.jsx)("button",{onClick:()=>{let t;return t=h(o||"my-skill",u),void(m(e),(!d||d===t)&&c(h(o||"my-skill",e)))},className:`px-2.5 py-1 text-xs transition-colors ${t>0?"border-l border-border":""} ${u===e?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:"general"===e?l?.skillTemplateGeneral??"General":"tool-use"===e?l?.skillTemplateToolUse??"Tool-use":l?.skillTemplateWorkflow??"Workflow"},e))})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillContent??"Content"}),(0,r.jsx)("textarea",{value:d||h(o||"my-skill"),onChange:e=>c(e.target.value),rows:16,placeholder:"Skill instructions (markdown)...",className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y font-mono"})]}),n&&(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),n]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{onClick:()=>e(o.trim(),d||h(o.trim()||"my-skill")),disabled:!o.trim()||s,className:"flex items-center gap-1 px-2.5 py-1 text-xs rounded-md disabled:opacity-40 disabled:cursor-not-allowed transition-colors bg-[var(--amber)] text-[var(--amber-foreground)]",children:[s&&(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),l?.saveSkill??"Save"]}),(0,r.jsx)("button",{onClick:t,className:"px-2.5 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground transition-colors",children:l?.cancelSkill??"Cancel"})]})]})}var ez=s(27996);function eT({t:e}){let t,s,n=e.settings?.mcp,l=(0,ev.cd)(),[o,i]=(0,a.useState)([]),[d,c]=(0,a.useState)(!0),[u,m]=(0,a.useState)(null),[x,h]=(0,a.useState)(!1),[g,b]=(0,a.useState)(!1),[v,j]=(0,a.useState)(""),[N,k]=(0,a.useState)(""),[w,C]=(0,a.useState)(!0),[S,A]=(0,a.useState)(null),[z,T]=(0,a.useState)(""),[M,E]=(0,a.useState)(""),[R,I]=(0,a.useState)({}),[P,U]=(0,a.useState)(null),[$,D]=(0,a.useState)({}),[F,L]=(0,a.useState)(!1),[O,B]=(0,a.useState)(null),_=(0,a.useCallback)(async()=>{try{let e=await (0,y.n)("/api/skills");i(e.skills),D({})}catch(t){let e=t instanceof Error?t.message:"Failed to load skills";console.error("fetchSkills error:",e),D(t=>({...t,_root:e}))}c(!1)},[]);(0,a.useEffect)(()=>{_()},[_]);let K=(0,a.useMemo)(()=>{if(!N)return o;let e=N.toLowerCase();return o.filter(t=>t.name.toLowerCase().includes(e)||t.description.toLowerCase().includes(e))},[o,N]),H=(0,a.useMemo)(()=>K.filter(e=>"user"===e.source),[K]),J=(0,a.useMemo)(()=>K.filter(e=>"builtin"===e.source),[K]),q=async(e,t)=>{if(l){await l.toggleSkill(e,t),i(s=>s.map(s=>s.name===e?{...s,enabled:t}:s));return}try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"toggle",name:e,enabled:t})}),i(s=>s.map(s=>s.name===e?{...s,enabled:t}:s)),D(t=>{let s={...t};return delete s[e],s})}catch(s){let t=s instanceof Error?s.message:"Failed to toggle skill";console.error("handleToggle error:",t),D(s=>({...s,[e]:t}))}},W=e=>{B(e)},Y=async e=>{try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",name:e})}),I(t=>{let s={...t};return delete s[e],s}),S===e&&A(null),u===e&&m(null),D(t=>{let s={...t};return delete s[e],s}),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(s){let t=s instanceof Error?s.message:"Failed to delete skill";console.error("handleDelete error:",t),D(s=>({...s,[e]:t}))}},Z=async e=>{if(!R[e]){U(e);try{let t=await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"read",name:e})});I(s=>({...s,[e]:t.content})),D(t=>{let s={...t};return delete s[e],s})}catch(t){D(s=>({...s,[e]:t instanceof Error?t.message:"Failed to load skill content"}))}finally{U(null)}}},Q=e=>{let t=u===e?null:e;m(t),t&&Z(e),S&&S!==e&&A(null)},X=e=>{A(e),T(R[e]||""),E("")},ee=async e=>{b(!0),E("");try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update",name:e,content:z})}),I(t=>({...t,[e]:z})),A(null),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(e){E(e instanceof Error?e.message:"Failed to save skill")}finally{b(!1)}},et=()=>{A(null),T(""),E("")},es=async(e,t)=>{if(e){b(!0),j("");try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create",name:e,content:t})}),h(!1),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(e){j(e instanceof Error?e.message:"Failed to create skill")}finally{b(!1)}}};return d?(0,r.jsx)("div",{className:"flex justify-center py-4",children:(0,r.jsx)(p.A,{size:16,className:"animate-spin text-muted-foreground"})}):(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(ej.A,{size:12,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)("input",{type:"text",value:N,onChange:e=>k(e.target.value),placeholder:n?.searchSkills??"Search skills...",className:"w-full pl-7 pr-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"}),N&&(0,r.jsx)("button",{onClick:()=>k(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:(0,r.jsx)(f.A,{size:10})})]}),(t=o.find(e=>"mindos"===e.name)?.enabled??!0?"en":"zh",s=async e=>{if(e!==t&&!F){L(!0);try{"en"===e?(await q("mindos",!0),await q("mindos-zh",!1)):(await q("mindos-zh",!0),await q("mindos",!1))}catch(e){console.error("Lang switch failed:",e)}finally{L(!1)}}},(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:n?.skillLanguage??"Skill Language"}),(0,r.jsxs)("div",{className:"flex rounded-md border border-border overflow-hidden",children:[(0,r.jsx)("button",{onClick:()=>s("en"),disabled:F,className:`px-2.5 py-1 text-xs transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${"en"===t?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:n?.skillLangEn??"English"}),(0,r.jsx)("button",{onClick:()=>s("zh"),disabled:F,className:`px-2.5 py-1 text-xs transition-colors disabled:opacity-50 disabled:cursor-not-allowed border-l border-border ${"zh"===t?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:n?.skillLangZh??"中文"})]})]})),0===K.length&&N&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground text-center py-3",children:n?.noSkillsMatch?n.noSkillsMatch(N):`No skills match "${N}"`}),H.length>0&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:(0,r.jsxs)("span",{children:[n?.customGroup??"Custom"," (",H.length,")"]})}),(0,r.jsx)("div",{className:"space-y-1.5",children:H.map(e=>(0,r.jsx)(ew,{skill:e,expanded:u===e.name,onExpand:Q,onToggle:q,onDelete:W,onEditStart:X,onEditSave:ee,onEditCancel:et,editing:S,editContent:z,setEditContent:T,editError:M,saving:g,fullContent:R,loadingContent:P,loadErrors:$,m:n},e.name))})]}),J.length>0&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground cursor-pointer hover:text-foreground transition-colors",onClick:()=>C(!w),children:[w?(0,r.jsx)(V.A,{size:12}):(0,r.jsx)(G.A,{size:12}),(0,r.jsxs)("span",{children:[n?.builtinGroup??"Built-in"," (",J.length,")"]})]}),!w&&(0,r.jsx)("div",{className:"space-y-1.5",children:J.map(e=>(0,r.jsx)(ew,{skill:e,expanded:u===e.name,onExpand:Q,onToggle:q,onDelete:W,onEditStart:X,onEditSave:ee,onEditCancel:et,editing:S,editContent:z,setEditContent:T,editError:M,saving:g,fullContent:R,loadingContent:P,loadErrors:$,m:n},e.name))})]}),x?(0,r.jsx)(eA,{onSave:es,onCancel:()=>{h(!1),j("")},saving:g,error:v,m:n}):(0,r.jsxs)("button",{onClick:()=>h(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(ey.A,{size:12}),n?.addSkill??"+ Add Skill"]}),(0,r.jsx)(eM,{agents:l?.agents??[],skillName:o.find(e=>"mindos"===e.name)?.enabled??!0?"mindos":"mindos-zh",m:n}),(0,r.jsx)(ea.TM,{open:!!O,title:"Delete skill?",message:O?n?.skillDeleteConfirm?.(O)??`Delete skill "${O}"?`:"",confirmLabel:"Delete",cancelLabel:"Cancel",variant:"destructive",onConfirm:async()=>{B(null),await Y(O)},onCancel:()=>B(null)})]})}function eM({agents:e,skillName:t,m:s}){let[n,l]=(0,a.useState)("claude-code"),o=`npx skills add GeminiLight/MindOS --skill ${t} -a ${n} -g -y`,i=`~/.agents/skills/${t}/SKILL.md`,d=async()=>{await (0,en.l)(o)&&er.oR.copy()},c=e.filter(e=>e.present&&e.installed),u=e.filter(e=>e.present&&!e.installed),m=e.filter(e=>!e.present);return(0,r.jsxs)("div",{className:"border-t border-border pt-3 mt-3 space-y-2.5",children:[(0,r.jsx)("p",{className:"text-2xs font-medium text-muted-foreground",children:s?.cliInstallHint??"Install via CLI:"}),(0,r.jsx)(ez.A,{value:n,onChange:l,size:"sm",options:[...c.length>0?[{label:s?.connectedGroup??"Connected",options:c.map(e=>({value:e.key,label:e.name}))}]:[],...u.length>0?[{label:s?.detectedGroup??"Detected",options:u.map(e=>({value:e.key,label:e.name}))}]:[],...m.length>0?[{label:s?.notFoundGroup??"Not Installed",options:m.map(e=>({value:e.key,label:e.name}))}]:[]]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("code",{className:"flex-1 text-[10px] font-mono bg-muted/50 border border-border rounded-lg px-2.5 py-2 text-muted-foreground select-all overflow-x-auto whitespace-nowrap",children:o}),(0,r.jsx)("button",{onClick:d,className:"p-1.5 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:(0,r.jsx)(ee.A,{size:11})})]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground",children:[s?.skillPathHint??"Skill files installed at:"," ",(0,r.jsx)("code",{className:"font-mono text-[10px] bg-muted px-1 py-0.5 rounded",children:i})]})]})}var eE=s(32967);function eR(e){return Array.isArray(e)?new Set(e):new Set}function eI(){let[e,t]=(0,a.useState)([]),[s,n]=(0,a.useState)(!0),[l,o]=(0,a.useState)(null),[i,d]=(0,a.useState)(null),c=(0,a.useCallback)(async()=>{try{let e=await (0,y.n)("/api/mcp/tools");t(e.servers)}catch{t([])}n(!1)},[]);(0,a.useEffect)(()=>{c()},[c]);let u=async(e,s,r)=>{d(e);try{let a="all"===s||"select"===s&&(r??[]);await (0,y.n)("/api/mcp/direct-tools",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({server:e,directTools:a})}),t(t=>t.map(t=>t.name===e?{...t,directTools:a}:t)),er.oR.success("Saved")}catch{er.oR.error("Failed to save")}d(null)},m=async(t,s,r)=>{let a=e.find(e=>e.name===t);if(!a)return;let n=eR(a.directTools);r?n.add(s):n.delete(s);let l=[...n];await u(t,l.length>0?"select":"proxy",l)};return s?(0,r.jsx)("div",{className:"flex justify-center py-4",children:(0,r.jsx)(p.A,{size:16,className:"animate-spin text-muted-foreground"})}):0===e.length?(0,r.jsx)("div",{className:"px-1 py-3",children:(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["No external MCP servers configured. Add servers to ",(0,r.jsx)("code",{className:"text-2xs bg-muted px-1 py-0.5 rounded",children:"~/.mindos/mcp.json"})," to get started."]})}):(0,r.jsxs)("div",{className:"space-y-1.5",children:[e.map(e=>{var t;let s=!0===(t=e.directTools)?"all":Array.isArray(t)&&t.length>0?"select":"proxy",a=eR(e.directTools),n=l===e.name,d=i===e.name;return(0,r.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>o(n?null:e.name),className:"w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors",children:[n?(0,r.jsx)(G.A,{size:12,className:"text-muted-foreground shrink-0"}):(0,r.jsx)(V.A,{size:12,className:"text-muted-foreground shrink-0"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground truncate",children:e.name}),(0,r.jsxs)("span",{className:"text-2xs text-muted-foreground",children:[e.toolCount," ",1===e.toolCount?"tool":"tools"]}),(0,r.jsx)("div",{className:"flex-1"}),(0,r.jsx)(eP,{mode:s,count:a.size}),d&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"})]}),n&&(0,r.jsxs)("div",{className:"border-t border-border bg-muted/10 px-3 py-2.5 space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(eU,{active:"proxy"===s,onClick:()=>u(e.name,"proxy"),icon:(0,r.jsx)(eg.A,{size:11}),label:"Proxy only"}),(0,r.jsx)(eU,{active:"all"===s,onClick:()=>u(e.name,"all"),icon:(0,r.jsx)(R.A,{size:11}),label:"All direct"}),(0,r.jsx)(eU,{active:"select"===s,onClick:()=>{"select"!==s&&u(e.name,"select",[])},icon:(0,r.jsx)(eE.A,{size:11}),label:"Select"})]}),e.tools.length>0&&("select"===s||"all"===s)&&(0,r.jsx)("div",{className:"space-y-0.5 max-h-48 overflow-y-auto",children:e.tools.map(t=>{let n="all"===s||a.has(t.name);return(0,r.jsxs)("label",{className:"flex items-start gap-2 px-2 py-1 rounded hover:bg-muted/30 cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:n,disabled:"all"===s,onChange:s=>m(e.name,t.name,s.target.checked),className:"mt-0.5 w-3 h-3 rounded accent-[var(--amber)] cursor-pointer"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("span",{className:"text-xs font-mono text-foreground",children:t.name}),t.description&&(0,r.jsx)("p",{className:"text-2xs text-muted-foreground line-clamp-1",children:t.description})]})]},t.name)})}),!e.cached&&(0,r.jsx)("p",{className:"text-2xs text-muted-foreground italic",children:"Tool list not yet cached. Tools will appear after the first connection."})]})]},e.name)}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground px-1 pt-1 leading-relaxed",children:[(0,r.jsx)("strong",{children:"Direct"})," tools (~150 tokens each) can be called directly by the agent."," ",(0,r.jsx)("strong",{children:"Proxy"})," tools (~200 tokens total) require ",(0,r.jsx)("code",{className:"text-2xs bg-muted px-0.5 rounded",children:"mcp({search/call})"})," but save context."," ","Changes take effect on the next agent session."]})]})}function eP({mode:e,count:t}){return"all"===e?(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:"All direct"}):"select"===e&&t>0?(0,r.jsxs)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:[t," direct"]}):(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-muted text-muted-foreground font-medium leading-none",children:"Proxy only"})}function eU({active:e,onClick:t,icon:s,label:a}){return(0,r.jsxs)("button",{type:"button",onClick:t,className:`flex items-center gap-1 px-2 py-1 rounded-md text-2xs font-medium transition-colors ${e?"bg-[var(--amber-subtle)] text-[var(--amber-text)] border border-[var(--amber)]/30":"bg-muted/50 text-muted-foreground border border-border/50 hover:bg-muted hover:text-foreground"}`,children:[s,a]})}var e$=s(41585);let eD={checking:!1,available:null,isSelf:!1,suggestion:null};function eF({label:e,hint:t,value:s,onChange:n,status:l,onCheckPort:o,m:i}){let d=(0,a.useRef)(void 0);return(0,a.useEffect)(()=>()=>clearTimeout(d.current),[]),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-xs font-medium text-foreground",children:e}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:t}),(0,r.jsx)("input",{type:"number",min:1024,max:65535,value:s,onChange:e=>{let t=parseInt(e.target.value,10)||s;n(t),clearTimeout(d.current),t>=1024&&t<=65535&&(d.current=setTimeout(()=>o(t),500))},onBlur:()=>{clearTimeout(d.current),s>=1024&&s<=65535&&o(s)},className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-border bg-muted/30 text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring tabular-nums"}),l.checking&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-muted-foreground",children:[(0,r.jsx)(p.A,{size:11,className:"animate-spin"})," ",i.portChecking]}),!l.checking&&!1===l.available&&!l.invalid&&(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-[var(--amber)]",children:[(0,r.jsx)(e$.A,{size:11})," ",i.portInUse(s)]}),null!==l.suggestion&&(0,r.jsx)("button",{type:"button",onClick:()=>{n(l.suggestion),setTimeout(()=>o(l.suggestion),0)},className:"text-xs px-2 py-0.5 rounded border border-[var(--amber)] text-[var(--amber)] transition-colors hover:bg-[var(--amber-subtle)]",children:i.portSuggest(l.suggestion)})]}),!l.checking&&l.invalid&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-destructive",children:[(0,r.jsx)(e$.A,{size:11})," 1024 – 65535"]}),!l.checking&&!0===l.available&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-success",children:[(0,r.jsx)(g.A,{size:11})," ",l.isSelf?i.portSelf:i.portAvailable]})]})}function eL({message:e,sub:t}){return(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"text-center space-y-4 max-w-sm px-6",children:[(0,r.jsx)(p.A,{size:32,className:"animate-spin mx-auto text-[var(--amber)]"}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:e}),t&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]})})}function eO({m:e}){let[t,s]=(0,a.useState)(0),[n,l]=(0,a.useState)(0),[o,i]=(0,a.useState)(0),[d,c]=(0,a.useState)(0),[u,m]=(0,a.useState)(eD),[x,p]=(0,a.useState)(eD),[h,g]=(0,a.useState)(!1),[f,b]=(0,a.useState)(null),[v,j]=(0,a.useState)(void 0),N=(0,a.useRef)(void 0);(0,a.useEffect)(()=>{(0,y.n)("/api/settings").then(e=>{let t=e.port||3456,r=e.mcpPort||8781;s(t),i(t),l(r),c(r)}).catch(()=>{})},[]),(0,a.useEffect)(()=>()=>clearInterval(N.current),[]);let k=o!==t||d!==n,C=o===d&&o>0,S=o<1024||o>65535||d<1024||d>65535,A=o!==t,z=d!==n,T=(0,a.useCallback)(async(e,t)=>{let s="web"===t?m:p;if(e<1024||e>65535)return void s({...eD,available:!1,invalid:!0});s({...eD,checking:!0});try{let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})});s({checking:!1,available:t.available,isSelf:t.isSelf??!1,suggestion:t.suggestion??null})}catch{s(eD)}},[]),M=async()=>{if(k&&!C&&!S&&!h){g(!0);try{let t=[];for(let{port:s,which:r}of(A&&t.push({port:o,which:"web"}),z&&t.push({port:d,which:"mcp"}),t)){let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:s})});if(!t.available&&!t.isSelf){("web"===r?m:p)({checking:!1,available:!1,isSelf:!1,suggestion:t.suggestion??null}),g(!1),er.oR.error(e.portInUse(s));return}}if(await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:o,mcpPort:d})}),A){b(e.portWebRestarting),j(e.portRedirecting);try{await (0,y.n)("/api/restart",{method:"POST"})}catch{}let t=`${window.location.protocol}//${window.location.hostname}:${o}`,s=Date.now()+3e4;N.current=setInterval(async()=>{if(Date.now()>s){clearInterval(N.current),b(null),g(!1),er.oR.error(e.portRestartTimeout);return}try{(await fetch(`${t}/api/health`,{signal:AbortSignal.timeout(2e3)})).ok&&(clearInterval(N.current),window.location.href=t)}catch{}},1500)}else if(z){b(e.portMcpRestarting);try{await (0,y.n)("/api/mcp/restart",{method:"POST"})}catch{b(null),g(!1),er.oR.error(e.portUpdateFailed);return}let t=Date.now()+6e4;N.current=setInterval(async()=>{if(Date.now()>t){clearInterval(N.current),b(null),g(!1),er.oR.error(e.portRestartTimeout);return}try{(await (0,y.n)("/api/mcp/status",{timeout:3e3})).running&&(clearInterval(N.current),b(null),g(!1),l(d),er.oR.success(e.portUpdateSuccess))}catch{}},3e3)}else g(!1),er.oR.success(e.portUpdateSuccess)}catch{g(!1),er.oR.error(e.portUpdateFailed)}}};return 0===t?null:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(w.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:e.portsCardTitle}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:e.portsCardDesc})]})]}),(0,r.jsxs)("div",{className:"px-4 pb-4 space-y-4",children:[(0,r.jsx)(eF,{label:e.webPortLabel,hint:e.webPortHint,value:o,onChange:e=>{i(e),m(eD)},status:u,onCheckPort:e=>T(e,"web"),m:e}),(0,r.jsx)(eF,{label:e.mcpPortLabel,hint:e.mcpPortHint,value:d,onChange:e=>{c(e),p(eD)},status:x,onCheckPort:e=>T(e,"mcp"),m:e}),C&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1.5 text-[var(--amber)]",children:[(0,r.jsx)(e$.A,{size:12})," ",e.portConflict]}),(0,r.jsx)("button",{type:"button",onClick:M,disabled:!k||C||S||h,className:"w-full py-2 rounded-lg text-xs font-medium transition-colors bg-[var(--amber)] text-[var(--amber-foreground)] hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:h?e.portUpdating:e.portUpdateBtn})]})]}),f&&(0,r.jsx)(eL,{message:f,sub:v})]})}var eB=s(97233);let e_=(0,i.A)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var eK=s(13845);function eH({agents:e,t,onRefresh:s,mode:n="mcp",activeSkillName:l="mindos"}){let o=t.settings?.mcp,[i,d]=(0,a.useState)(new Set),[c,u]=(0,a.useState)("auto"),[m,h]=(0,a.useState)("http://localhost:8781/mcp"),[f,b]=(0,a.useState)(""),[v,j]=(0,a.useState)({}),[N,k]=(0,a.useState)(!1),[w,S]=(0,a.useState)(null),A=async()=>{if(0!==i.size){k(!0),S(null);try{let t={agents:[...i].map(t=>{let s=e.find(e=>e.key===t),r="auto"===c?s?.preferredTransport||"stdio":c;return{key:t,scope:v[t]||(s?.hasProjectScope?"project":"global"),transport:r}}),transport:c,..."http"===c?{url:m,token:f}:{},..."auto"===c?{url:m,token:f}:{}},r=await (0,y.n)("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=r.results.filter(e=>"ok"===e.status).length,n=r.results.filter(e=>"error"===e.status);n.length>0?S({type:"error",text:n.map(e=>`${e.agent}: ${e.message}`).join("; ")}):S({type:"success",text:o?.installSuccess?o.installSuccess(a):`${a} agent(s) configured`}),d(new Set),s()}catch{S({type:"error",text:o?.installFailed??"Install failed"})}finally{k(!1),setTimeout(()=>S(null),4e3)}}},z="http"===c||"auto"===c&&[...i].some(t=>{let s=e.find(e=>e.key===t);return s?.preferredTransport==="http"});return"cli"===n?(0,r.jsx)(eG,{agents:e,m:o,activeSkillName:l}):(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:o?.mcpInstallDesc??"Install MCP config + Skill to detected agents on this machine."}),(0,r.jsx)("div",{className:"space-y-1",children:e.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-3 py-1.5 text-sm",children:[(0,r.jsx)("input",{type:"checkbox",checked:i.has(e.key),onChange:()=>{var t;return t=e.key,void d(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},className:"form-check"}),(0,r.jsx)("span",{className:"w-28 shrink-0 text-xs",children:e.name}),(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded font-mono bg-muted",children:"auto"===c?e.preferredTransport:c}),e.installed?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-success/15 text-success font-mono",children:e.transport}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground",children:e.scope})]}):(0,r.jsx)("span",{className:"text-2xs text-muted-foreground",children:e.present?o?.detected??"Detected":o?.notFound??"Not found"}),i.has(e.key)&&e.hasProjectScope&&e.hasGlobalScope&&(0,r.jsx)(ez.A,{value:v[e.key]||"project",onChange:t=>j({...v,[e.key]:t}),size:"sm",className:"ml-auto",options:[{value:"project",label:o?.project??"Project"},{value:"global",label:o?.global??"Global"}]})]},e.key))}),(0,r.jsxs)("div",{className:"flex gap-2 text-xs pt-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>d(new Set(e.filter(e=>!e.installed&&e.present).map(e=>e.key))),className:"px-2.5 py-1 rounded-md border border-[var(--amber)] text-[var(--amber)] transition-colors hover:bg-muted/50",children:o?.selectDetected??"Select Detected"}),(0,r.jsx)("button",{type:"button",onClick:()=>d(new Set),className:"px-2.5 py-1 rounded-md border border-border text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground",children:o?.clearSelection??"Clear"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs pt-1",children:[(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"auto"===c,onChange:()=>u("auto"),className:"form-radio"}),o?.transportAuto??"auto (recommended)"]}),(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"stdio"===c,onChange:()=>u("stdio"),className:"form-radio"}),o?.transportStdio??"stdio"]}),(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"http"===c,onChange:()=>u("http"),className:"form-radio"}),o?.transportHttp??"http"]})]}),z&&(0,r.jsxs)("div",{className:"space-y-2 pl-5 text-xs",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-muted-foreground",children:o?.httpUrl??"MCP URL"}),(0,r.jsx)("input",{type:"text",value:m,onChange:e=>h(e.target.value),className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background font-mono text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-muted-foreground",children:o?.httpToken??"Auth Token"}),(0,r.jsx)(C.yA,{value:f,onChange:b,placeholder:"Bearer token",size:"sm"})]})]}),(0,r.jsxs)("button",{onClick:A,disabled:0===i.size||N,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg transition-colors disabled:opacity-40 disabled:cursor-not-allowed bg-[var(--amber)] text-[var(--amber-foreground)]",children:[N&&(0,r.jsx)(p.A,{size:12,className:"animate-spin"}),N?o?.installing??"Installing...":o?.installSelected??"Install Selected"]}),w&&(0,r.jsx)("div",{className:"flex items-center gap-1.5 text-xs",role:"status",children:"success"===w.type?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:w.text})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:w.text})]})})]})}function eG({agents:e,m:t,activeSkillName:s}){let[n,l]=(0,a.useState)(e[0]?.key??"claude-code"),o=e.find(e=>e.key===n),i=`npx skills add GeminiLight/MindOS --skill ${s} -a ${n} -g -y`,d=async()=>{await (0,en.l)(i)&&er.oR.copy()},c=e.filter(e=>e.present&&e.installed),u=e.filter(e=>e.present&&!e.installed),m=e.filter(e=>!e.present);return(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:t?.cliInstallDesc??"Install the MindOS Skill to your agent so it can operate your knowledge base."}),(0,r.jsx)(ez.A,{value:n,onChange:l,size:"sm",options:[...c.length>0?[{label:t?.connectedGroup??"Connected",options:c.map(e=>({value:e.key,label:e.name}))}]:[],...u.length>0?[{label:t?.detectedGroup??"Detected",options:u.map(e=>({value:e.key,label:e.name}))}]:[],...m.length>0?[{label:t?.notFoundGroup??"Not Installed",options:m.map(e=>({value:e.key,label:e.name}))}]:[]]}),o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-2xs",children:[o.present&&o.installed?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10})," ",t?.tagConnected??"Connected"]}):o.present?(0,r.jsx)("span",{className:"text-muted-foreground",children:t?.detected??"Detected"}):(0,r.jsx)("span",{className:"text-muted-foreground",children:t?.notFound??"Not found"}),null!=o.installedSkillCount&&o.installedSkillCount>0&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:[o.installedSkillCount," ",t?.skillsInstalled??"skills installed"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("code",{className:"flex-1 text-[10px] font-mono bg-muted/50 border border-border rounded-lg px-2.5 py-2 text-muted-foreground select-all overflow-x-auto whitespace-nowrap",children:i}),(0,r.jsx)("button",{onClick:d,className:"p-1.5 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:(0,r.jsx)(ee.A,{size:11})})]})]})}function eV(){let[e,t]=(0,a.useState)(null);return(0,a.useEffect)(()=>{if(!e)return;let s=setTimeout(()=>t(null),2e3);return()=>clearTimeout(s)},[e]),{copiedField:e,handleCopy:(0,a.useCallback)(async(e,s)=>{!e||await (0,en.l)(e)&&(t(s),er.oR.copy())},[])}}function eJ({mode:e,onModeChange:t,status:s,agents:a,connectedAgents:n,detectedAgents:o,notFoundAgents:i,currentAgent:d,selectedAgent:c,onSelectAgent:u,restarting:m,onRestart:x,onRefresh:p,activeSkillName:h,mcpEnabled:g,m:f,t:b}){if(!s)return null;let v=g?e:"cli";return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-[var(--amber-subtle)] flex items-center justify-center shrink-0",children:(0,r.jsx)(eB.A,{size:14,className:"text-[var(--amber)]"})}),(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:f?.connectionTitle??"Connect Agents"})]}),g?(0,r.jsxs)("div",{className:"grid grid-cols-2 mx-4 mb-3 rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("button",{onClick:()=>t("cli"),className:`flex flex-col items-start px-3 py-2.5 text-left transition-colors ${"cli"===v?"bg-muted":"hover:bg-muted/50"}`,children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(eh.A,{size:12,className:"cli"===v?"text-[var(--amber)]":"text-muted-foreground"}),(0,r.jsx)("span",{className:`text-xs font-semibold ${"cli"===v?"text-foreground":"text-muted-foreground"}`,children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:f?.recommended??"Recommended"})]}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground mt-0.5",children:f?.cliAgents??"Claude Code \xb7 Gemini CLI \xb7 Codex"})]}),(0,r.jsxs)("button",{onClick:()=>t("mcp"),className:`flex flex-col items-start px-3 py-2.5 text-left transition-colors border-l border-border ${"mcp"===v?"bg-muted":"hover:bg-muted/50"}`,children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(l.A,{size:12,className:"mcp"===v?"text-foreground":"text-muted-foreground"}),(0,r.jsx)("span",{className:`text-xs font-semibold ${"mcp"===v?"text-foreground":"text-muted-foreground"}`,children:"MCP"})]}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground mt-0.5",children:f?.mcpAgents??"Claude Desktop \xb7 Cursor"})]})]}):(0,r.jsx)("div",{className:"mx-4 mb-3 px-3 py-2 rounded-lg border border-border bg-muted/30",children:(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(eh.A,{size:12,className:"text-[var(--amber)]"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:f?.recommended??"Recommended"})]})}),(0,r.jsx)("div",{className:"px-4 pb-4 space-y-4",children:"cli"===v?(0,r.jsx)(eq,{status:s,activeSkillName:h,agents:a,connectedAgents:n,detectedAgents:o,notFoundAgents:i,onRefresh:p,m:f,t:b}):(0,r.jsx)(eW,{status:s,agents:a,activeSkillName:h,connectedAgents:n,detectedAgents:o,notFoundAgents:i,currentAgent:d,selectedAgent:c,onSelectAgent:u,restarting:m,onRestart:x,onRefresh:p,m:f,t:b})})]})}function eq({status:e,activeSkillName:t,agents:s,connectedAgents:a,detectedAgents:n,notFoundAgents:l,onRefresh:o,m:i,t:d}){let{copiedField:c,handleCopy:u}=eV(),m=e.authConfigured&&!!e.authToken,x=e.localIP||"localhost",p=window.location.port||"3456",h=`http://${x}:${p}`,f=e.maskedToken??"";return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:i?.localTitle??"Local"}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-2xs font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10}),i?.localReady??"Ready to use"]})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:i?.cliLocalDesc??"MindOS Skill is built-in. Install the CLI and you're good to go."}),(0,r.jsx)(eX,{code:"mindos file list",label:i?.cliSkillVerify??"Verify",onCopy:u,copiedField:c,fieldId:"cli-verify"}),s.length>0&&(0,r.jsx)(eY,{icon:(0,r.jsx)(e_,{size:12,className:"text-muted-foreground"}),title:i?.detectedAgentsTitle??"Detected Agents",badge:`${a.length+n.length}/${s.length}`,children:(0,r.jsx)(eH,{agents:s,t:d,onRefresh:o,mode:"cli",activeSkillName:t})})]}),(0,r.jsxs)("div",{className:"border-t border-border pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(O.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:i?.remoteTitle??"Remote Access"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:i?.cliRemoteDesc??"Install the CLI on another machine and connect to this MindOS server."}),(0,r.jsx)(eZ,{step:"1",label:i?.cliSkillInstall??"Install",children:(0,r.jsx)(eX,{code:"npm install -g @geminilight/mindos",onCopy:u,copiedField:c,fieldId:"cli-install",compact:!0})}),(0,r.jsx)(eZ,{step:"2",label:i?.cliRemoteConfigure??"Configure",children:(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(eX,{code:`mindos config set url ${h}`,onCopy:u,copiedField:c,fieldId:"cli-url",compact:!0}),(0,r.jsx)(eX,{code:`mindos config set authToken ${m?f:"<token>"}`,onCopy:(t,s)=>{u(`mindos config set authToken ${e.authToken??"<token>"}`,s)},copiedField:c,fieldId:"cli-token",compact:!0,hint:m?i?.tokenCopyFullHint??"Copies full token":void 0})]})}),(0,r.jsx)(eZ,{step:"3",label:i?.cliInstallSkill??"Install Skill",children:(0,r.jsx)(eX,{code:`npx skills add GeminiLight/MindOS --skill ${t} -g -y`,onCopy:u,copiedField:c,fieldId:"cli-skill",compact:!0})}),(0,r.jsx)(eZ,{step:"4",label:i?.cliSkillVerify??"Verify",children:(0,r.jsx)(eX,{code:"mindos file list",onCopy:u,copiedField:c,fieldId:"cli-remote-verify",compact:!0})})]})]})}function eW({status:e,agents:t,activeSkillName:s,connectedAgents:n,detectedAgents:l,notFoundAgents:o,currentAgent:i,selectedAgent:d,onSelectAgent:c,restarting:u,onRestart:m,onRefresh:p,m:h,t:f}){let{copiedField:b,handleCopy:v}=eV(),j=e.authConfigured&&!!e.authToken,y=e.localIP||"localhost",N=`http://${y}:${e.port}/mcp`,k=(0,a.useMemo)(()=>i?(0,eK.$k)(i,e,"stdio"):null,[i,e]),C=(0,a.useMemo)(()=>i?(0,eK.$k)(i,e,"http"):null,[i,e]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(eQ,{status:e,restarting:u,onRestart:m,onRefresh:p,m:h}),(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:12,className:e.running?"text-success":"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:h?.localTitle??"Local"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:h?.mcpLocalDesc??"Copy the config snippet and paste into your agent's MCP settings."}),t.length>0&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)(ez.A,{value:d,onChange:c,options:[...n.length>0?[{label:h?.connectedGroup??"Connected",options:n.map(e=>({value:e.key,label:e.name}))}]:[],...l.length>0?[{label:h?.detectedGroup??"Detected",options:l.map(e=>({value:e.key,label:e.name}))}]:[],...o.length>0?[{label:h?.notFoundGroup??"Not Installed",options:o.map(e=>({value:e.key,label:e.name}))}]:[]]}),i&&k&&(0,r.jsxs)(r.Fragment,{children:[i.present&&i.installed&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-2xs font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10})," ",h?.tagConnected??"Connected"]}),(0,r.jsx)("pre",{className:"text-[11px] font-mono bg-muted/50 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre select-all max-h-[200px] overflow-y-auto",children:k.displaySnippet}),(0,r.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,r.jsxs)("button",{onClick:async()=>{await (0,en.l)(k.snippet)&&er.oR.copy()},className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:[(0,r.jsx)(ee.A,{size:14})," ",h?.copyConfig??"Copy"]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,r.jsx)("span",{className:"font-mono text-muted-foreground truncate text-2xs",children:k.path})]})]})]})]}),t.length>0&&(0,r.jsx)(eY,{icon:(0,r.jsx)(e_,{size:12,className:"text-muted-foreground"}),title:h?.detectedAgentsTitle??"Detected Agents",badge:`${n.length+l.length}/${t.length}`,children:(0,r.jsx)(eH,{agents:t,t:f,onRefresh:p,mode:"mcp",activeSkillName:s})}),(0,r.jsxs)("div",{className:"border-t border-border pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(O.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:h?.remoteTitle??"Remote Access"})]}),!j&&(0,r.jsxs)("p",{className:"flex items-center gap-1.5 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:12})," ",h?.noAuthWarning??"Set an Auth Token in Settings → General before enabling remote access."]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:h?.serverUrl??"MCP Server URL"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 px-2.5 py-1.5 bg-muted/50 border border-border rounded-lg",children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground select-all truncate",children:N}),(0,r.jsx)(e0,{onCopy:()=>v(N,"mcp-url"),copied:"mcp-url"===b,size:"sm"})]})]}),t.length>0&&i&&C&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("pre",{className:"text-[11px] font-mono bg-muted/50 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre select-all max-h-[200px] overflow-y-auto",children:C.displaySnippet}),(0,r.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,r.jsxs)("button",{onClick:async()=>{await (0,en.l)(C.snippet)&&er.oR.copy()},className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:[(0,r.jsx)(ee.A,{size:14})," ",h?.copyConfig??"Copy"]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,r.jsx)("span",{className:"font-mono text-muted-foreground truncate text-2xs",children:C.path})]})]})]})]})}function eY({icon:e,title:t,badge:s,defaultOpen:n=!1,children:l}){let[o,i]=(0,a.useState)(n);return(0,r.jsxs)("div",{className:"rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>i(e=>!e),className:"flex items-center gap-2 w-full px-3 py-2 text-left bg-muted/30 hover:bg-muted/60 transition-colors",children:[o?(0,r.jsx)(G.A,{size:11,className:"text-muted-foreground"}):(0,r.jsx)(V.A,{size:11,className:"text-muted-foreground"}),e,(0,r.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:t}),s&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/70 ml-auto",children:s})]}),o&&(0,r.jsx)("div",{className:"px-3 py-2.5 border-t border-border",children:l})]})}function eZ({step:e,label:t,children:s}){return(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"w-4 h-4 rounded-full bg-muted flex items-center justify-center text-2xs font-semibold text-muted-foreground shrink-0",children:e}),(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:t})]}),(0,r.jsx)("div",{className:"pl-6",children:s})]})}function eQ({status:e,restarting:t,onRestart:s,onRefresh:a,m:n}){return(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 rounded-lg border border-border bg-muted/30",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 text-xs",children:t?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.A,{size:11,className:"animate-spin text-[var(--amber)]"}),(0,r.jsx)("span",{className:"text-[var(--amber)]",children:n?.restarting??"Restarting..."})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${e.running?"bg-success":"bg-muted-foreground"}`}),(0,r.jsxs)("span",{className:"font-medium text-foreground",children:["MCP ",e.running?n?.running??"Running":n?.stopped??"Stopped"]}),e.running&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"\xb7"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",e.port]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"\xb7"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[e.toolCount," ",n?.tools??"tools"]})]})]})}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[!e.running&&!t&&(0,r.jsxs)("button",{onClick:s,className:"flex items-center gap-1 px-2 py-1 text-2xs rounded-md font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(h.A,{size:11})," ",n?.restart??"Restart"]}),(0,r.jsx)("button",{onClick:a,className:"p-1 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:(0,r.jsx)(c.A,{size:11})})]})]})}function eX({label:e,code:t,onCopy:s,copiedField:a,fieldId:n,compact:l,hint:o}){return(0,r.jsxs)("div",{className:l?"":"space-y-1",children:[e&&(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:e}),(0,r.jsxs)("div",{className:`flex items-center gap-2 ${l?"px-2.5 py-1.5":"px-3 py-2"} bg-muted/50 border border-border rounded-lg`,children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground select-all truncate",children:t}),o&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/60 shrink-0 hidden sm:inline",children:o}),(0,r.jsx)(e0,{onCopy:()=>s(t,n),copied:a===n,size:"sm"})]})]})}function e0({onCopy:e,copied:t,title:s,size:a}){let n="sm"===a?11:14;return(0,r.jsx)("button",{type:"button",onClick:e,title:s??"Copy",className:`shrink-0 ${"sm"===a?"p-1":"p-2"} rounded-lg border transition-colors focus-visible:ring-2 focus-visible:ring-ring ${t?"border-success/50 bg-success/10 text-success":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:t?(0,r.jsx)(E.A,{size:n}):(0,r.jsx)(ee.A,{size:n})})}function e1({t:e}){let t=(0,ev.cd)(),s=e.settings?.mcp,[o,i]=(0,a.useState)("cli"),[d,c]=(0,a.useState)(!1),[u,m]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),g=(0,a.useRef)(void 0),f=t?.status?.connectionMode,b=f?.mcp??!1;if((0,a.useEffect)(()=>()=>clearInterval(g.current),[]),!t||t.loading)return(0,r.jsx)("div",{className:"flex justify-center py-8",children:(0,r.jsx)(p.A,{size:18,className:"animate-spin text-muted-foreground"})});let v=t.agents.filter(e=>e.present&&e.installed),j=t.agents.filter(e=>e.present&&!e.installed),N=t.agents.filter(e=>!e.present),k=u||(t.agents[0]?.key??""),w=t.agents.find(e=>e.key===k),C=t.skills?.find(e=>"mindos"===e.name)?.enabled??!0,S=async e=>{h(!0);try{await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionMode:{cli:!0,mcp:e}})}),await t.refresh(),e&&i("mcp")}catch{er.oR.error("Failed to toggle connection mode")}finally{h(!1)}},A=async()=>{c(!0);try{await (0,y.n)("/api/mcp/restart",{method:"POST"})}catch(e){console.error("[McpTab] Restart request failed:",e),c(!1);return}let e=Date.now()+6e4;clearInterval(g.current),g.current=setInterval(async()=>{if(Date.now()>e){clearInterval(g.current),c(!1);return}try{(await (0,y.n)("/api/mcp/status",{timeout:3e3})).running&&(clearInterval(g.current),c(!1),t.refresh())}catch{}},3e3)};return(0,r.jsxs)("div",{className:"space-y-6",children:[s&&(0,r.jsx)(eO,{m:s}),(0,r.jsx)(e2,{mcpEnabled:b,onToggle:S,saving:x,mcpRunning:t.status?.running??!1,m:s}),(0,r.jsx)(e5,{status:t.status,m:s}),(0,r.jsx)(eJ,{mode:o,onModeChange:i,status:t.status,agents:t.agents,connectedAgents:v,detectedAgents:j,notFoundAgents:N,currentAgent:w??null,selectedAgent:k,onSelectAgent:m,restarting:d,onRestart:A,onRefresh:t.refresh,activeSkillName:C?"mindos":"mindos-zh",mcpEnabled:b,m:s,t:e}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(l.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:s?.externalToolsTitle??"External MCP Tools"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.externalToolsDesc??"Configure tool access mode for external MCP servers."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:(0,r.jsx)(eI,{})})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(n.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:s?.skillsTitle??"Skills"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.skillsDesc??"Teach agents how to operate your knowledge base."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:(0,r.jsx)(eT,{t:e})})]})]})}function e2({mcpEnabled:e,onToggle:t,saving:s,mcpRunning:a,m:n}){return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-[var(--amber-subtle)] flex items-center justify-center shrink-0",children:(0,r.jsx)(l.A,{size:14,className:"text-[var(--amber)]"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:n?.modeCardTitle??"Connection Mode"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:n?.modeCardDesc??"Choose how agents connect to MindOS."})]})]}),(0,r.jsxs)("div",{className:"px-4 pb-4 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2.5 rounded-lg bg-muted/30 border border-border/50",children:[(0,r.jsx)("input",{type:"checkbox",checked:!0,disabled:!0,className:"w-3.5 h-3.5 rounded accent-[var(--amber)]"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(eh.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-success/10 text-success font-medium leading-none",children:n?.alwaysOn??"Always On"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:n?.cliModeDesc??"Claude Code, Gemini CLI, Codex, etc."})]})]}),(0,r.jsxs)("label",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg border cursor-pointer transition-colors ${e?"border-[var(--amber)]/40 bg-[var(--amber)]/[0.03]":"border-border/50 bg-muted/30 hover:bg-muted/50"}`,children:[(0,r.jsx)("input",{type:"checkbox",checked:e,disabled:s,onChange:e=>t(e.target.checked),className:"w-3.5 h-3.5 rounded accent-[var(--amber)] cursor-pointer"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(l.A,{size:12,className:e?"text-[var(--amber)]":"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"MCP"}),e&&(0,r.jsx)("span",{className:`text-2xs px-1.5 py-0.5 rounded-full font-medium leading-none ${a?"bg-success/10 text-success":"bg-[var(--amber-subtle)] text-[var(--amber-text)]"}`,children:a?n?.mcpRunning??"Running":n?.mcpStopped??"Stopped"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:n?.mcpModeDesc??"Claude Desktop, Cursor, Windsurf, etc."})]}),s&&(0,r.jsx)(p.A,{size:14,className:"animate-spin text-[var(--amber)] shrink-0"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground px-1 leading-relaxed",children:e?n?.mcpEnabledHint??"MCP mode enabled. Disable to simplify the interface if you only use CLI agents.":n?.mcpDisabledHint??"Enable MCP to connect Desktop clients like Claude Desktop or Cursor."})]})]})}function e5({status:e,m:t}){let[s,n]=(0,a.useState)(null),[l,o]=(0,a.useState)(!1);(0,a.useEffect)(()=>()=>o(!1),[]),(0,a.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>n(null),2e3);return()=>clearTimeout(e)},[s]);let i=(0,a.useCallback)(async(e,t)=>{!e||await (0,en.l)(e)&&(n(t),er.oR.copy())},[]);if(!e)return null;let d=e.authConfigured&&!!e.authToken,c=l?e.authToken??"":e.maskedToken??"";return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(eg.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:t?.tokenCardTitle??"Auth Token"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:t?.tokenCardDesc??"Used by CLI remote mode and MCP connections."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:d?(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"flex-1 flex items-center gap-2 px-2.5 py-1.5 bg-muted/50 border border-border rounded-lg min-h-[34px]",children:(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground break-all select-all leading-relaxed",children:c})}),(0,r.jsx)("button",{type:"button",onClick:()=>o(e=>!e),className:"shrink-0 p-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:ring-2 focus-visible:ring-ring",title:l?t?.tokenHide??"Hide":t?.tokenShow??"Show",children:l?(0,r.jsx)(ef.A,{size:13}):(0,r.jsx)(eb.A,{size:13})}),(0,r.jsx)(e0,{onCopy:()=>i(e.authToken??"","token-card"),copied:"token-card"===s,title:t?.tokenCopy??"Copy",size:"sm"})]}):(0,r.jsxs)("div",{className:"px-2.5 py-2 bg-[var(--amber-subtle)] border border-[var(--amber)]/20 rounded-lg",children:[(0,r.jsx)("p",{className:"text-xs text-[var(--amber-text)]",children:t?.tokenNone??"No token set."}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:t?.tokenNoneAction??"Generate one in Settings → General → Security."})]})})]})}var e3=s(16950);function e4(){let e=window;return e.mindos?.checkUpdate?e.mindos:null}let e6="https://github.com/GeminiLight/MindOS/releases",e7="mindos_update_in_progress",e9={downloading:{en:"Downloading update",zh:"下载更新"},skills:{en:"Updating skills",zh:"更新 Skills"},rebuilding:{en:"Rebuilding app",zh:"重新构建应用"},restarting:{en:"Restarting server",zh:"重启服务"}};function e8({status:e}){switch(e){case"done":return(0,r.jsx)(g.A,{size:14,className:"text-success shrink-0"});case"running":return(0,r.jsx)(p.A,{size:14,className:"animate-spin shrink-0 text-[var(--amber)]"});case"failed":return(0,r.jsx)(x.A,{size:14,className:"text-destructive shrink-0"});default:return(0,r.jsx)(e3.A,{size:14,className:"text-muted-foreground/40 shrink-0"})}}function te(e){return e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}function tt(){let{t:e}=(0,j.Y)(),t=e.settings.update,s=e4(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(""),[d,m]=(0,a.useState)(""),[h,f]=(0,a.useState)(null),[b,v]=(0,a.useState)(0),[y,N]=(0,a.useState)(""),[k,w]=(0,a.useState)("");(0,a.useEffect)(()=>{(async()=>{try{let e=await s.checkCoreUpdate?.();if(e&&(i(e.currentVersion),!e.available))return void l("idle")}catch{}try{let e=await s.getCoreUpdatePending?.();if(e?.version){m(e.version),l("ready");return}}catch{}C()})();let e=[];return s.onCoreUpdateProgress&&e.push(s.onCoreUpdateProgress(e=>v(Math.round(e.percent)))),s.onCoreUpdateAvailable&&e.push(s.onCoreUpdateAvailable(e=>{i(e.current),m(e.latest),l(e.ready?"ready":"available")})),()=>e.forEach(e=>e())},[]);let C=async()=>{if(s.checkCoreUpdate){l("checking"),N("");try{let e=await s.checkCoreUpdate();i(e.currentVersion),e.desktopTooOld?(m(e.latestVersion),w(e.minDesktopVersion),l("desktopTooOld")):e.available?(m(e.latestVersion),f({urls:e.urls,size:e.size,sha256:e.sha256}),l("available")):l("idle")}catch{l("idle")}}},S=async()=>{if(s.downloadCoreUpdate&&h){l("downloading"),v(0);try{await s.downloadCoreUpdate(h.urls,d,h.size,h.sha256),l("ready")}catch(t){let e=t instanceof Error?t.message:String(t);e.includes("aborted")?l("available"):(l("error"),N(e||"Download failed"))}}},A=async()=>{if(s.applyCoreUpdate){l("applying");try{let e=await s.applyCoreUpdate();e?.version&&i(e.version),l("idle")}catch(e){l("error"),N(e instanceof Error?e.message:"Apply failed")}}};return s.checkCoreUpdate?(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t?.coreTitle??"MindOS Core"}),o&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",o]})]}),"checking"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),t?.checking??"Checking for updates..."]}),"idle"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.coreUpToDate??"Core is up to date"]}),"available"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),"v",d," ",t?.coreAvailable?t.coreAvailable(te(h?.size??0)):`available (${te(h?.size??0)})`]}),("downloading"===n||"cancelling"===n)&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),"cancelling"===n?t?.coreCancel??"Cancelling...":(0,r.jsxs)(r.Fragment,{children:[t?.coreDownloading??"Downloading..."," v",d]})]}),"downloading"===n&&(0,r.jsx)("button",{onClick:()=>{s.cancelCoreDownload?.(),l("cancelling")},className:"text-muted-foreground hover:text-foreground transition-colors",children:t?.coreCancel??"Cancel"})]}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-300",style:{width:`${Math.max(b,3)}%`}})})]}),"ready"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),"v",d," ",t?.coreReady??"ready — restart services to apply"]}),"applying"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),t?.coreApplying??"Applying update..."]}),"desktopTooOld"===n&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:13}),t?.coreDesktopTooOld?t.coreDesktopTooOld(d):`v${d} requires a newer Desktop.`]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground",children:[t?.coreDesktopTooOldHint??"Please update MindOS Desktop first."," (Desktop ≥ v",k,")"]})]}),"error"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),y||(t?.coreError??"Core update failed.")]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[("idle"===n||"error"===n)&&(0,r.jsxs)("button",{onClick:C,disabled:"idle"!==n&&"error"!==n,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.checkButton??"Check for Updates"]}),"available"===n&&(0,r.jsxs)("button",{onClick:S,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),t?.updateButton?t.updateButton(d):`Update to v${d}`]}),"ready"===n&&(0,r.jsxs)("button",{onClick:A,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.coreRestartServices??"Restart Services"]}),"error"===n&&(0,r.jsxs)("button",{onClick:h?S:C,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.coreRetry??"Retry"]})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground/60",children:t?.coreHint??"Core updates only restart services — no app restart needed."})]}):null}function ts(){let{t:e}=(0,j.Y)(),t=e.settings.update,s=e4(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(!1),[d,m]=(0,a.useState)(null),[h,f]=(0,a.useState)(""),[b,v]=(0,a.useState)(0),[y,k]=(0,a.useState)("");(0,a.useEffect)(()=>{l("idle"),s.getAppInfo?.().then(e=>{e?.version&&f(e.version)}).catch(e=>{console.warn("[UpdateTab] getAppInfo failed:",e)}),C();let e=[];return s.onUpdateAvailable&&e.push(s.onUpdateAvailable(e=>{i(!0),e?.version&&m(e.version),l(e=>"checking"===e?"idle":e)})),s.onUpdateProgress&&e.push(s.onUpdateProgress(e=>v(Math.round(e.percent)))),s.onUpdateReady&&e.push(s.onUpdateReady(()=>l("ready"))),s.onUpdateError&&e.push(s.onUpdateError(e=>{l("error"),k(e?.message||"Update failed. Please try again.")})),()=>e.forEach(e=>e())},[]);let C=async()=>{l("checking"),k("");try{let e=await s.checkUpdate();i(e.available),e.version&&m(e.version),l("idle")}catch{l("error"),k(t?.error??"Failed to check for updates.")}},S=async()=>{l("downloading"),v(0);try{await s.installUpdate()}catch{l("error"),k("Update failed. Please try again.")}};return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:14,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t?.shellTitle??"MindOS Desktop"})]}),h&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",h]})]}),"checking"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),t?.checking??"Checking for updates..."]}),"idle"===n&&!o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.upToDate??"You're up to date"]}),"idle"===n&&o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),d?`Update available: v${d}`:"Update available"]}),"downloading"===n&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),t?.desktopDownloading??"Downloading update..."]}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-300",style:{width:`${Math.max(b,3)}%`}})})]}),"ready"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.desktopReady??"Update downloaded. Restart to apply."]}),"error"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),y]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,r.jsxs)("button",{onClick:C,disabled:"checking"===n||"downloading"===n,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:"checking"===n?"animate-spin":""}),t?.checkButton??"Check for Updates"]}),"idle"===n&&o&&(0,r.jsxs)("button",{onClick:S,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),d?`Update to v${d}`:"Update"]}),"ready"===n&&(0,r.jsxs)("button",{onClick:async()=>{try{await s.installUpdate()}catch{l("error"),k(t?.error??"Failed to install update.")}},className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.desktopRestart??"Restart Now"]})]}),(0,r.jsxs)("div",{className:"border-t border-border/50 pt-3 space-y-2",children:[(0,r.jsxs)("a",{href:e6,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(N.A,{size:12}),t?.releaseNotes??"View release notes"]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground/60",children:t?.desktopHint??"Updates are delivered through the Desktop app auto-updater."})]})]})}function tr(){let[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(!0);return((0,a.useEffect)(()=>{let e=e4();t(!!e),e?.getAppInfo&&e.getAppInfo().then(e=>{e&&"mode"in e&&n("remote"!==e.mode)}).catch(()=>{})},[]),e)?(0,r.jsxs)("div",{className:"space-y-6",children:[s&&(0,r.jsx)(tt,{}),(0,r.jsx)(ts,{})]}):(0,r.jsx)(ta,{})}function ta(){let{t:e,locale:t}=(0,j.Y)(),s=e.settings.update,[n,l]=(0,a.useState)(null),[o,i]=(0,a.useState)("idle"),[d,m]=(0,a.useState)(""),[h,f]=(0,a.useState)([]),[b,v]=(0,a.useState)(null),[k,w]=(0,a.useState)(!1),C=(0,a.useRef)(void 0),S=(0,a.useRef)(void 0),A=(0,a.useRef)(""),z=(0,a.useCallback)(async()=>{i("checking"),m("");try{let e=await (0,y.n)("/api/update-check");if(l(e),A.current||(A.current=e.current),e.hasUpdate){let t=localStorage.getItem("mindos_update_dismissed");localStorage.setItem("mindos_update_latest",e.latest),window.dispatchEvent(new Event(e.latest===t?"mindos:update-dismissed":"mindos:update-available"))}else localStorage.removeItem("mindos_update_latest"),localStorage.removeItem("mindos_update_dismissed"),window.dispatchEvent(new Event("mindos:update-dismissed"));i("idle")}catch{i("error"),m(s?.error??"Failed to check for updates.")}},[s]),T=(0,a.useCallback)(()=>{clearInterval(C.current),clearTimeout(S.current)},[]),M=(0,a.useCallback)(e=>{T(),l(e),i("updated"),localStorage.removeItem("mindos_update_latest"),localStorage.removeItem("mindos_update_dismissed"),localStorage.removeItem(e7),window.dispatchEvent(new Event("mindos:update-dismissed")),setTimeout(()=>window.location.reload(),2e3)},[T]),E=(0,a.useCallback)(()=>{C.current=setInterval(async()=>{try{let e=await (0,y.n)("/api/update-status",{timeout:5e3});if(w(!1),e.stages?.length>0&&f(e.stages),"failed"===e.stage){T(),localStorage.removeItem(e7),v(e.error||"Update failed"),i("error");return}if("done"===e.stage)try{let e=await (0,y.n)("/api/update-check");if(e.current!==A.current)return void M(e)}catch{}}catch{w(!0);try{let e=await (0,y.n)("/api/update-check",{timeout:5e3});e.current&&e.current!==A.current&&(f(e=>e.map(e=>({...e,status:"done"}))),M(e))}catch{}}},3e3),S.current=setTimeout(()=>{T(),localStorage.removeItem(e7),i("timeout")},9e5)},[T,M]);(0,a.useEffect)(()=>{let e=localStorage.getItem(e7);if(e)try{let{originalVer:t}=JSON.parse(e);A.current=t,i("updating"),w(!0),f([{id:"downloading",status:"done"},{id:"skills",status:"done"},{id:"rebuilding",status:"done"},{id:"restarting",status:"running"}]),E()}catch{localStorage.removeItem(e7),z()}else z()},[]),(0,a.useEffect)(()=>T,[T]);let R=(0,a.useCallback)(async()=>{i("updating"),m(""),v(null),w(!1),f([{id:"downloading",status:"pending"},{id:"skills",status:"pending"},{id:"rebuilding",status:"pending"},{id:"restarting",status:"pending"}]),localStorage.setItem(e7,JSON.stringify({originalVer:A.current||n?.current,startedAt:Date.now()})),window.dispatchEvent(new Event("mindos:update-started"));try{await (0,y.n)("/api/update",{method:"POST"})}catch(e){if(e instanceof y.h){localStorage.removeItem(e7),v(e.message||"Update failed"),i("error");return}}E()},[E,n]),I=(0,a.useCallback)(()=>{v(null),R()},[R]),P="zh"===t?"zh":"en",U=h.filter(e=>"done"===e.status).length,$=h.length>0?Math.round(U/h.length*100):0;return(0,r.jsx)("div",{className:"space-y-6",children:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:"MindOS"}),n&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",n.current]})]}),"checking"===o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),s?.checking??"Checking for updates..."]}),"idle"===o&&n&&!n.hasUpdate&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),s?.upToDate??"You're up to date"]}),"idle"===o&&n?.hasUpdate&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),s?.available?s.available(n.current,n.latest):`Update available: v${n.current} → v${n.latest}`]}),"updating"===o&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("div",{className:"space-y-1.5",children:h.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,r.jsx)(e8,{status:e.status}),(0,r.jsx)("span",{className:"pending"===e.status?"text-muted-foreground/50":"running"===e.status?"text-foreground":"text-muted-foreground",children:e9[e.id]?.[P]??e.id})]},e.id))}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-500 ease-out",style:{width:`${Math.max($,5)}%`}})}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:k?s?.serverRestarting??"Server is restarting, please wait...":s?.updatingHint??"This may take 1–3 minutes. Do not close this page."})]}),"updated"===o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),s?.updated??"Updated successfully! Reloading..."]}),"timeout"===o&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:13}),s?.timeout??"Update may still be in progress."]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.timeoutHint??"The server may need more time to rebuild. Try refreshing."}),(0,r.jsxs)("button",{onClick:()=>window.location.reload(),className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:12}),s?.refreshButton??"Refresh Page"]})]}),"error"===o&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),b||d]}),b&&(0,r.jsxs)("button",{onClick:I,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:12}),s?.retryButton??"Retry Update"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,r.jsxs)("button",{onClick:z,disabled:"checking"===o||"updating"===o,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:"checking"===o?"animate-spin":""}),s?.checkButton??"Check for Updates"]}),n?.hasUpdate&&"updating"!==o&&"updated"!==o&&(0,r.jsxs)("button",{onClick:R,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),s?.updateButton?s.updateButton(n.latest):`Update to v${n.latest}`]})]}),(0,r.jsxs)("div",{className:"border-t border-border/50 pt-3 space-y-2",children:[(0,r.jsxs)("a",{href:e6,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(N.A,{size:12}),s?.releaseNotes??"View release notes"]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground/60",children:[s?.hint??"Updates are installed via npm. Equivalent to running"," ",(0,r.jsx)("code",{className:"font-mono bg-muted px-1 py-0.5 rounded",children:"mindos update"})," ",s?.inTerminal??"in your terminal."]})]})]})})}var tn=s(44478);function tl(){let e=window;return e.mindos?.uninstallApp?e.mindos:null}function to(){let{t:e}=(0,j.Y)(),t=e.settings.uninstall,s=!!tl(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(!0),[u,x]=(0,a.useState)(!0),h=async()=>{l("running"),i("");try{if(await (0,y.n)("/api/uninstall",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({removeConfig:d})}),s&&u){let e=tl();if(e?.uninstallApp){let t=await e.uninstallApp();if(!t.ok)throw Error(t.error||"Failed to remove app");l("success");return}}l("success")}catch(e){i(e instanceof Error?e.message:String(e)),l("error")}},f=({checked:e,onChange:t,label:s,desc:a,disabled:n})=>(0,r.jsxs)("label",{className:`flex items-start gap-2.5 p-2.5 rounded bg-muted/30 cursor-pointer select-none ${n?"opacity-50 cursor-not-allowed":"hover:bg-muted/50"}`,children:[(0,r.jsx)("input",{type:"checkbox",checked:e,onChange:e=>!n&&t(e.target.checked),disabled:n,className:"mt-0.5 form-check"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:s}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:a})]})]});return(0,r.jsxs)(C.L7,{icon:(0,r.jsx)(m.A,{size:15}),title:t.title,description:s?t.descDesktop:t.descCli,children:[(0,r.jsxs)("div",{className:"flex gap-2.5 p-3 rounded-md bg-muted/50 border border-border",children:[(0,r.jsx)(tn.A,{size:14,className:"text-success shrink-0 mt-0.5"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:t.kbSafe})]}),"idle"===n||"confirming"===n?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(f,{checked:!0,disabled:!0,label:t.stopServices,desc:t.stopServicesDesc,onChange:()=>{}}),(0,r.jsx)(f,{checked:d,onChange:c,label:t.removeConfig,desc:t.removeConfigDesc}),!s&&(0,r.jsx)(f,{checked:!0,disabled:!0,label:t.removeNpm,desc:t.removeNpmDesc,onChange:()=>{}}),s&&(0,r.jsx)(f,{checked:u,onChange:x,label:t.removeApp,desc:t.removeAppDesc})]}):null,"idle"===n&&(0,r.jsxs)("button",{onClick:()=>l("confirming"),className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-error/10 text-error border border-error/20 hover:bg-error/20 transition-colors focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-40 disabled:cursor-not-allowed",children:[(0,r.jsx)(m.A,{size:12,className:"inline mr-1.5 -mt-px"}),t.confirmButton]}),"confirming"===n&&(0,r.jsxs)("div",{className:"p-3 rounded-md border border-error/30 bg-error/5 space-y-2.5",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-error",children:t.confirmTitle}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:h,className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-error text-destructive-foreground hover:bg-error/90 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.confirmButton}),(0,r.jsx)("button",{onClick:()=>l("idle"),className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-muted text-foreground hover:bg-muted/80 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.cancelButton})]})]}),"running"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,r.jsx)(p.A,{size:14,className:"animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:t.running})]}),"success"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,r.jsx)(g.A,{size:14,className:"text-success"}),(0,r.jsx)("span",{className:"text-xs text-success font-medium",children:s&&u?t.successDesktop:t.success})]}),"error"===n&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(e$.A,{size:14,className:"text-error"}),(0,r.jsx)("span",{className:"text-xs text-error font-medium",children:t.error})]}),o&&(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground font-mono",children:o}),(0,r.jsx)("button",{onClick:()=>l("idle"),className:"px-3 py-1.5 text-xs font-medium rounded-md bg-muted text-foreground hover:bg-muted/80 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.cancelButton})]})]})}function ti({visible:e,initialTab:t,variant:s,onClose:i}){let[N,k]=(0,a.useState)("ai"),[w,C]=(0,a.useState)(null),[S,A]=(0,a.useState)(!1),[z,T]=(0,a.useState)("idle"),{t:M,locale:E,setLocale:R}=(0,j.Y)(),I=(0,v.useRouter)(),U=(0,a.useRef)(void 0),$=(0,a.useRef)(!1),D=(0,a.useRef)(null),[F,L]=(0,a.useState)("lora"),[O,B]=(0,a.useState)("15px"),[_,K]=(0,a.useState)("780px"),[H,G]=(0,a.useState)(!0),[V,J]=(0,a.useState)(()=>{let e=localStorage.getItem("mindos_update_dismissed"),t=localStorage.getItem("mindos_update_latest");return!!t&&t!==e});(0,a.useEffect)(()=>{let e=()=>J(!0),t=()=>J(!1);return window.addEventListener("mindos:update-available",e),window.addEventListener("mindos:update-dismissed",t),()=>{window.removeEventListener("mindos:update-available",e),window.removeEventListener("mindos:update-dismissed",t)}},[]);let q="panel"===s,W=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(q?e&&!W.current:e){(0,y.n)("/api/settings").then(e=>{C(e),$.current=!0}).catch(()=>T("load-error")),L("geist"===localStorage.getItem("prose-font")?"inter":localStorage.getItem("prose-font")??"ibm-plex-sans"),B(localStorage.getItem("prose-font-size")??"15px"),K(localStorage.getItem("content-width")??"780px");let e=localStorage.getItem("theme");G(e?"dark"===e:window.matchMedia("(prefers-color-scheme: dark)").matches),T("idle")}e||($.current=!1),W.current=e},[e,q]),(0,a.useEffect)(()=>{e&&t&&Y(t)},[e,t]);let Y=(0,a.useCallback)(e=>{k(e),D.current?.scrollTo?.(0,0)},[]);(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--prose-font-override",{lora:"'Lora', Georgia, serif","ibm-plex-sans":"'IBM Plex Sans', sans-serif",inter:"var(--font-inter), sans-serif","ibm-plex-mono":"'IBM Plex Mono', monospace"}[F]??""),localStorage.setItem("prose-font",F)},[F]),(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--prose-font-size-override",O),localStorage.setItem("prose-font-size",O)},[O]),(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--content-width-override",_),localStorage.setItem("content-width",_)},[_]),(0,a.useEffect)(()=>{if("modal"!==s||!e||!i)return;let t=e=>{"Escape"===e.key&&i()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[s,e,i]);let Q=(0,a.useCallback)(async e=>{A(!0);try{await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ai:e.ai,agent:e.agent,mindRoot:e.mindRoot,webPassword:e.webPassword,authToken:e.authToken})}),T("saved"),window.dispatchEvent(new Event("mindos:settings-changed")),setTimeout(()=>T("idle"),2500)}catch{T("error"),setTimeout(()=>T("idle"),2500)}finally{A(!1)}},[]),X=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(w&&$.current)return X.current=w,clearTimeout(U.current),U.current=setTimeout(()=>{X.current=null,Q(w)},800),()=>clearTimeout(U.current)},[w,Q]),(0,a.useEffect)(()=>{if(!e&&X.current){let e=X.current;X.current=null,clearTimeout(U.current),Q(e)}},[e,Q]),(0,a.useEffect)(()=>()=>{if(X.current){clearTimeout(U.current);let e=X.current;X.current=null,(0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ai:e.ai,agent:e.agent,mindRoot:e.mindRoot,webPassword:e.webPassword,authToken:e.authToken})}).catch(()=>{})}},[]);let ee=(0,a.useCallback)(e=>{C(t=>t?{...t,ai:{...t.ai,...e}}:t)},[]),et=(0,a.useCallback)(e=>{C(t=>t?{...t,agent:{...t.agent??{},...e}}:t)},[]),es=(0,a.useCallback)(async()=>{if(!w)return;let e={activeProvider:"",providers:[]};C(t=>t?{...t,ai:e}:t),setTimeout(()=>{(0,y.n)("/api/settings").then(e=>{C(e)}).catch(()=>T("error"))},1300)},[w]),er=w?.envOverrides??{},ea=q?12:13,en=[{id:"ai",label:M.settings.tabs.ai,icon:(0,r.jsx)(n.A,{size:ea})},{id:"mcp",label:M.settings.tabs.mcp??"Connections",icon:(0,r.jsx)(l.A,{size:ea})},{id:"knowledge",label:M.settings.tabs.knowledge,icon:(0,r.jsx)(o.A,{size:ea})},{id:"appearance",label:M.settings.tabs.appearance,icon:(0,r.jsx)(d,{size:ea})},{id:"sync",label:M.settings.tabs.sync??"Sync",icon:(0,r.jsx)(c.A,{size:ea})},{id:"update",label:M.settings.tabs.update??"Update",icon:(0,r.jsx)(u.A,{size:ea}),badge:V},{id:"uninstall",label:M.settings.tabs.uninstall??"Uninstall",icon:(0,r.jsx)(m.A,{size:ea})}],el=en.find(e=>e.id===N)?.label??"",eo=()=>(0,r.jsx)("div",{ref:D,className:`flex-1 overflow-y-auto min-h-0 ${q?"px-4 py-4 space-y-4":"px-5 py-5 space-y-5"}`,children:"load-error"===z&&("ai"===N||"knowledge"===N)?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 py-8 text-center",children:[(0,r.jsx)(x.A,{size:q?18:20,className:"text-destructive"}),(0,r.jsx)("p",{className:`${q?"text-xs":"text-sm"} text-destructive font-medium`,children:"Failed to load settings"}),!q&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Check that the server is running and AUTH_TOKEN is configured correctly."})]}):w||"appearance"===N||"mcp"===N||"sync"===N||"update"===N||"uninstall"===N?(0,r.jsxs)(r.Fragment,{children:["ai"===N&&w?.ai&&(0,r.jsx)(P,{data:w,updateAi:ee,updateAgent:et,t:M}),"appearance"===N&&(0,r.jsx)(Z,{font:F,setFont:L,fontSize:O,setFontSize:B,contentWidth:_,setContentWidth:K,dark:H,setDark:G,locale:E,setLocale:R,t:M}),"knowledge"===N&&w&&(0,r.jsx)(eu,{data:w,setData:C,t:M}),"sync"===N&&(0,r.jsx)(ep.vP,{t:M,visible:e}),"mcp"===N&&(0,r.jsx)(e1,{t:M}),"update"===N&&(0,r.jsx)(tr,{}),"uninstall"===N&&(0,r.jsx)(to,{})]}):(0,r.jsx)("div",{className:"flex justify-center py-8",children:(0,r.jsx)(p.A,{size:q?16:18,className:"animate-spin text-muted-foreground"})})}),ei=()=>"ai"===N||"knowledge"===N?(0,r.jsxs)("div",{className:`${q?"px-4 py-2":"px-5 py-2.5"} border-t border-border shrink-0 flex items-center justify-between`,children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:["ai"===N&&Object.values(er).some(Boolean)&&(0,r.jsxs)("button",{onClick:es,disabled:S||!w,className:`flex items-center gap-1.5 ${q?"px-2.5 py-1 text-xs rounded-md":"px-3 py-1.5 text-sm rounded-lg"} border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:[(0,r.jsx)(h.A,{size:q?12:13}),M.settings.ai.restoreFromEnv]}),"knowledge"===N&&(0,r.jsxs)("a",{href:"/setup?force=1",className:`flex items-center gap-1.5 ${q?"px-2.5 py-1 text-xs rounded-md":"px-3 py-1.5 text-sm rounded-lg"} border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,r.jsx)(h.A,{size:q?12:13}),M.settings.reconfigure]})]}),!q&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",role:"status","aria-live":"polite",children:[S&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[M.settings.save,"..."]})]}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]})]}):null;return q?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border shrink-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,r.jsx)(o.A,{size:14,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Settings"})]}),(0,r.jsx)("div",{className:"flex items-center gap-1.5",children:(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[S&&(0,r.jsx)(p.A,{size:10,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsx)(g.A,{size:10,className:"text-success"}),"error"===z&&(0,r.jsx)(x.A,{size:10,className:"text-destructive"})]})})]}),(0,r.jsx)("div",{className:"flex border-b border-border px-3 shrink-0 overflow-x-auto scrollbar-none gap-0",children:en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-1 px-2 py-2 text-xs font-medium transition-colors border-b-2 -mb-px whitespace-nowrap ${N===e.id?"border-[var(--amber)] text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,children:[e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id))}),eo(),ei()]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-col h-full md:hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border shrink-0",children:[(0,r.jsx)("div",{className:"flex justify-center pt-2 pb-0 absolute top-0 left-1/2 -translate-x-1/2",children:(0,r.jsx)("div",{className:"w-8 h-1 rounded-full bg-muted-foreground/20"})}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,r.jsx)(o.A,{size:15,className:"text-muted-foreground"}),(0,r.jsx)("span",{children:M.settings.title})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[S&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]}),i&&(0,r.jsx)("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",children:(0,r.jsx)(f.A,{size:15})})]})]}),(0,r.jsxs)("div",{className:"flex border-b border-border px-4 shrink-0 overflow-x-auto scrollbar-none gap-0",children:[en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium transition-colors border-b-2 -mb-px whitespace-nowrap ${N===e.id?"border-[var(--amber)] text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,children:[e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id)),(0,r.jsxs)("button",{onClick:()=>{i?.(),I.push("/help")},className:"flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium transition-colors border-b-2 -mb-px whitespace-nowrap border-transparent text-muted-foreground hover:text-foreground",children:[(0,r.jsx)(b.A,{size:ea}),M.sidebar.help]})]}),eo(),ei()]}),(0,r.jsxs)("div",{className:"hidden md:flex flex-row h-full min-h-0",children:[(0,r.jsxs)("div",{className:"w-[180px] shrink-0 border-r border-border flex flex-col",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-border",children:[(0,r.jsx)(o.A,{size:15,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:M.settings.title})]}),(0,r.jsx)("nav",{className:"flex-1 overflow-y-auto py-1.5",children:en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-2 w-full px-4 py-2 text-sm font-medium transition-colors relative ${N===e.id?"text-foreground bg-muted":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[N===e.id&&(0,r.jsx)("div",{className:"absolute left-0 top-1 bottom-1 w-[3px] rounded-r-full bg-[var(--amber)]"}),e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"ml-auto w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id))}),(0,r.jsx)("div",{className:"shrink-0 border-t border-border px-4 py-2",children:(0,r.jsxs)("button",{onClick:()=>{i?.(),I.push("/help")},className:"flex items-center gap-2 w-full px-0 py-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(b.A,{size:13}),M.sidebar.help]})})]}),(0,r.jsxs)("div",{className:"flex-1 flex flex-col min-w-0 min-h-0",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-b border-border shrink-0",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:el}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[S&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]}),i&&(0,r.jsx)("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",children:(0,r.jsx)(f.A,{size:15})})]})]}),eo(),ei()]})]})]})}function td({open:e,onClose:t,initialTab:s}){return(0,r.jsx)("div",{style:{display:e?void 0:"none"},children:(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[10vh] modal-backdrop",onClick:e=>e.target===e.currentTarget&&t(),children:(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Settings",className:"w-full md:max-w-3xl md:mx-4 bg-card border-t md:border border-border rounded-t-2xl md:rounded-xl shadow-2xl flex flex-col h-[88vh] md:h-[80vh] md:max-h-[85vh]",children:(0,r.jsx)(ti,{visible:e,variant:"modal",onClose:t,initialTab:s})})})})}}}]);
|