@geminilight/mindos 0.6.39 → 0.6.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -15
- package/README_zh.md +31 -15
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +19 -18
- 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 +68 -2
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route.js.nft.json +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_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.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +137 -99
- 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 +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 +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 +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js +3 -3
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js +2 -19
- 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/route.js +1 -18
- 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 +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 +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 +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js +1 -0
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/init/route.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route.js.nft.json +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.js.nft.json +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.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.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 +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 +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.js.nft.json +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.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route.js.nft.json +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.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +2 -2
- package/_standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route.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 +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.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 +2 -2
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +2 -2
- 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 +6 -6
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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/login/page.js +2 -2
- 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 +3 -3
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +4 -4
- 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-paths-manifest.json +19 -18
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/1750.js +1 -0
- package/_standalone/.next/server/chunks/{9414.js → 2190.js} +1 -1
- package/_standalone/.next/server/chunks/2536.js +52 -0
- package/_standalone/.next/server/chunks/5648.js +2 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +15 -0
- package/_standalone/.next/server/chunks/953.js +42 -2
- package/_standalone/.next/server/chunks/9539.js +219 -0
- package/_standalone/.next/server/functions-config-manifest.json +2 -1
- package/_standalone/.next/server/instrumentation.js +1 -1
- 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/Ij3PFh-a0zi5K_ANoSAW0/_buildManifest.js +1 -0
- package/_standalone/.next/static/chunks/1053-b70535785cc5aaee.js +29 -0
- package/_standalone/.next/static/chunks/1239.10a0710c2772ab34.js +1 -0
- package/_standalone/.next/static/chunks/{1814.e2da5460ded71d71.js → 1814.2ee1d03297c0bccd.js} +1 -1
- package/_standalone/.next/static/chunks/{1384-55276d40a9da4e88.js → 1880-c2a9e76201841c86.js} +2 -2
- package/_standalone/.next/static/chunks/{1a258343-030e4d6735874dd4.js → 1a258343-9803591e4aaee1f6.js} +1 -1
- package/_standalone/.next/static/chunks/2631.dc56e83472bde281.js +1 -0
- package/_standalone/.next/static/chunks/2872.045858d00bd8307f.js +8 -0
- package/_standalone/.next/static/chunks/2968.f10ccee9e7e2324d.js +2 -0
- package/_standalone/.next/static/chunks/3160-83a7e0b94414b3ac.js +1 -0
- package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +1 -0
- package/_standalone/.next/static/chunks/4033.6666700547b20141.js +1 -0
- package/_standalone/.next/static/chunks/4563-b2a2ce80aff845af.js +6 -0
- package/_standalone/.next/static/chunks/516.24ee058b1d4b1fed.js +8 -0
- package/_standalone/.next/static/chunks/5627.c4337d7289acb31f.js +1 -0
- package/_standalone/.next/static/chunks/5956.b445072b35915129.js +1 -0
- package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +1 -0
- package/_standalone/.next/static/chunks/6826.7b7d94dd0fd83812.js +1 -0
- package/_standalone/.next/static/chunks/{8409-de5726a4a278d28f.js → 6926-4af497b83952fa87.js} +1 -1
- package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +1 -0
- package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +1 -0
- package/_standalone/.next/static/chunks/7266-bb7be1128eccd48e.js +13 -0
- package/_standalone/.next/static/chunks/7753.63831cfc54a55fbb.js +1 -0
- package/_standalone/.next/static/chunks/862.9f526e964489e2e5.js +1 -0
- package/_standalone/.next/static/chunks/9300.118b8c840634383f.js +28 -0
- package/_standalone/.next/static/chunks/95247769.3b5caae1c1a76ce1.js +4 -0
- package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/_global-error/page-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-773071a99c4daac2.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-6102a884b2cb3cfe.js +5 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-addf014fcf23fad5.js +11 -0
- package/_standalone/.next/static/chunks/app/echo/page-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/explore/page-5eb2835e9e3ab4bb.js +4 -0
- package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-42cdbce19f404567.js +186 -0
- package/_standalone/.next/static/chunks/app/login/page-24236460fa7c11d0.js +1 -0
- package/_standalone/.next/static/chunks/app/page-8c9643b649e01735.js +7 -0
- package/_standalone/.next/static/chunks/app/setup/page-d158b8cb533feb1e.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/page-e9ab74ffeb96af41.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-764a69a1c8bd4eef.js +12 -0
- package/_standalone/.next/static/chunks/e71f6c19-4df85185bf989b49.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-400c3c09b1540c14.js +1 -0
- package/_standalone/.next/static/chunks/webpack-7b276daaa930d480.js +1 -0
- package/_standalone/.next/static/css/bc9179074eaf65ae.css +1 -0
- package/_standalone/.next/trace +63 -53
- package/_standalone/.next/types/routes.d.ts +2 -1
- package/_standalone/.next/types/validator.ts +9 -0
- package/_standalone/__tests__/agent/chat-mode.test.ts +103 -0
- package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +4 -3
- package/_standalone/__tests__/api/bootstrap.test.ts +0 -2
- package/_standalone/__tests__/api/file.test.ts +22 -1
- package/_standalone/__tests__/api/install-skill.test.ts +2 -2
- package/_standalone/__tests__/api/mcp-install.test.ts +32 -10
- package/_standalone/__tests__/api/setup.test.ts +2 -2
- package/_standalone/__tests__/api/test-key.test.ts +73 -147
- package/_standalone/__tests__/ask/ask-content-input-during-run.test.tsx +1 -1
- package/_standalone/__tests__/ask/mode-capsule.test.ts +95 -0
- package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
- package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
- package/_standalone/__tests__/core/inbox.test.ts +250 -0
- package/_standalone/__tests__/core/skill-install-logic.test.ts +3 -3
- package/_standalone/__tests__/core/sync-status.test.ts +1 -1
- package/_standalone/__tests__/core/tools.test.ts +8 -6
- package/_standalone/__tests__/lib/echo-pages-visual-i18n.test.ts +2 -2
- package/_standalone/__tests__/lib/i18n-new-keys.test.ts +2 -2
- package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +2 -2
- package/_standalone/__tests__/settings/activity-bar-update-badge.test.tsx +1 -1
- package/_standalone/__tests__/settings/settings-update-badge.test.tsx +1 -1
- package/_standalone/__tests__/settings/update-tab-availability-sync.test.tsx +1 -1
- package/_standalone/__tests__/settings/update-tab-browser.test.tsx +1 -1
- package/_standalone/__tests__/settings/update-tab-desktop.test.tsx +1 -1
- package/_standalone/__tests__/setup.ts +3 -5
- package/_standalone/app/globals.css +11 -1
- package/_standalone/components/ActivityBar.tsx +26 -10
- package/_standalone/components/AskFab.tsx +1 -1
- package/_standalone/components/AskModal.tsx +1 -1
- package/_standalone/components/Backlinks.tsx +1 -1
- package/_standalone/components/CreateSpaceModal.tsx +7 -55
- package/_standalone/components/EchoSpotlight.tsx +1 -1
- package/_standalone/components/ExportModal.tsx +1 -1
- package/_standalone/components/FileTree.tsx +66 -80
- package/_standalone/components/FindInPage.tsx +1 -1
- package/_standalone/components/GuideCard.tsx +1 -1
- package/_standalone/components/ImportModal.tsx +1 -1
- package/_standalone/components/KeyboardShortcuts.tsx +1 -1
- package/_standalone/components/MarkdownView.tsx +41 -16
- package/_standalone/components/OnboardingView.tsx +1 -1
- package/_standalone/components/OrganizeToast.tsx +1 -1
- package/_standalone/components/Panel.tsx +82 -4
- package/_standalone/components/QuickSuggestion.tsx +1 -1
- package/_standalone/components/RightAgentDetailPanel.tsx +2 -2
- package/_standalone/components/RightAskPanel.tsx +88 -22
- package/_standalone/components/SearchModal.tsx +1 -1
- package/_standalone/components/Sidebar.tsx +4 -4
- package/_standalone/components/SidebarLayout.tsx +52 -16
- package/_standalone/components/SpaceInitToast.tsx +1 -1
- package/_standalone/components/SyncStatusBar.tsx +2 -2
- package/_standalone/components/SystemPulse.tsx +12 -6
- package/_standalone/components/TableOfContents.tsx +86 -39
- package/_standalone/components/agents/AgentActivitySection.tsx +225 -0
- package/_standalone/components/agents/AgentsMcpSection.tsx +10 -16
- package/_standalone/components/agents/AgentsOverviewSection.tsx +28 -27
- package/_standalone/components/agents/AgentsPanelA2aTab.tsx +1 -1
- package/_standalone/components/agents/AgentsPanelSessionsTab.tsx +6 -1
- package/_standalone/components/agents/AgentsSkillsSection.tsx +1 -1
- package/_standalone/components/agents/DiscoverAgentModal.tsx +1 -1
- package/_standalone/components/agents/RecentActivityFeed.tsx +49 -88
- package/_standalone/components/agents/agent-activity-shared.tsx +110 -0
- package/_standalone/components/ask/AgentSelectorCapsule.tsx +1 -1
- package/_standalone/components/ask/AskContent.tsx +332 -486
- package/_standalone/components/ask/AskHeader.tsx +61 -0
- package/_standalone/components/ask/FileChip.tsx +9 -5
- package/_standalone/components/ask/MessageList.tsx +88 -21
- package/_standalone/components/ask/ModeCapsule.tsx +180 -0
- package/_standalone/components/ask/ProviderModelCapsule.tsx +284 -0
- package/_standalone/components/ask/SessionHistory.tsx +63 -10
- package/_standalone/components/ask/SessionTabBar.tsx +1 -1
- package/_standalone/components/ask/ThinkingBlock.tsx +1 -1
- package/_standalone/components/ask/ToolCallBlock.tsx +28 -24
- package/_standalone/components/changes/ChangesBanner.tsx +1 -1
- package/_standalone/components/echo/EchoInsightCollapsible.tsx +1 -1
- package/_standalone/components/echo/EchoSegmentNav.tsx +1 -1
- package/_standalone/components/home/InboxSection.tsx +268 -0
- package/_standalone/components/panels/AgentsPanel.tsx +3 -2
- package/_standalone/components/panels/AgentsPanelHubNav.tsx +2 -6
- package/_standalone/components/panels/DiscoverPanel.tsx +1 -1
- package/_standalone/components/panels/EchoPanel.tsx +1 -1
- package/_standalone/components/panels/EchoSidebarStats.tsx +1 -1
- package/_standalone/components/panels/ImportHistoryPanel.tsx +1 -1
- package/_standalone/components/panels/PanelHeader.tsx +1 -1
- package/_standalone/components/panels/PluginsPanel.tsx +1 -1
- package/_standalone/components/panels/SearchPanel.tsx +5 -2
- package/_standalone/components/panels/SyncPopover.tsx +1 -1
- package/_standalone/components/panels/WorkflowsPanel.tsx +1 -1
- package/_standalone/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +18 -0
- package/_standalone/components/renderers/todo/TodoRenderer.tsx +489 -75
- package/_standalone/components/settings/AiTab.tsx +198 -127
- package/_standalone/components/settings/AppearanceTab.tsx +48 -50
- package/_standalone/components/settings/KnowledgeTab.tsx +92 -27
- package/_standalone/components/settings/McpAgentInstall.tsx +95 -28
- package/_standalone/components/settings/McpSkillsSection.tsx +2 -2
- package/_standalone/components/settings/McpTab.tsx +498 -216
- package/_standalone/components/settings/PluginsTab.tsx +1 -1
- package/_standalone/components/settings/SettingsContent.tsx +17 -8
- package/_standalone/components/settings/SyncTab.tsx +615 -230
- package/_standalone/components/settings/UninstallTab.tsx +1 -1
- package/_standalone/components/settings/UpdateTab.tsx +2 -2
- package/_standalone/components/settings/types.ts +7 -5
- package/_standalone/components/setup/StepAI.tsx +70 -49
- package/_standalone/components/setup/StepAgents.tsx +113 -47
- package/_standalone/components/setup/StepDots.tsx +1 -1
- package/_standalone/components/setup/StepReview.tsx +186 -31
- package/_standalone/components/setup/types.ts +17 -8
- package/_standalone/components/shared/ProviderSelect.tsx +134 -0
- package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +2 -2
- package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +2 -2
- package/_standalone/components/walkthrough/index.ts +1 -1
- package/_standalone/data/skills/mindos/SKILL.md +93 -93
- package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
- package/_standalone/data/skills/mindos-zh/SKILL.md +100 -104
- package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/_standalone/hooks/useAcpDetection.ts +1 -1
- package/_standalone/hooks/useAskChat.ts +248 -0
- package/_standalone/hooks/useAskPanel.ts +24 -4
- package/_standalone/hooks/useAskSession.ts +15 -0
- package/_standalone/lib/acp/types.ts +1 -1
- package/_standalone/lib/api.ts +3 -1
- package/_standalone/lib/core/types.ts +2 -0
- package/_standalone/lib/i18n/modules/ai-chat.ts +35 -13
- package/_standalone/lib/i18n/modules/features.ts +5 -5
- package/_standalone/lib/i18n/modules/knowledge.ts +86 -2
- package/_standalone/lib/i18n/modules/navigation.ts +6 -2
- package/_standalone/lib/i18n/modules/onboarding.ts +69 -29
- package/_standalone/lib/i18n/modules/panels.ts +78 -29
- package/_standalone/lib/i18n/modules/settings.ts +280 -24
- package/_standalone/lib/inbox-upload.ts +93 -0
- package/_standalone/lib/mcp-snippets.ts +5 -1
- package/_standalone/lib/settings-ai-client.ts +13 -12
- package/_standalone/lib/space-ai-init.ts +66 -0
- package/_standalone/lib/stores/McpStoreInit.tsx +18 -0
- package/_standalone/lib/stores/WalkthroughInit.tsx +20 -0
- package/_standalone/lib/stores/locale-store.ts +55 -0
- package/_standalone/lib/stores/mcp-store.ts +156 -0
- package/_standalone/lib/stores/walkthrough-store.ts +118 -0
- package/_standalone/package-lock.json +40 -8
- package/_standalone/package.json +3 -1
- package/_standalone/tsconfig.json +1 -1
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/acp/detect/route.ts +29 -20
- package/app/app/api/agent-activity/route.ts +1 -1
- package/app/app/api/ask/route.ts +105 -30
- package/app/app/api/ask-sessions/route.ts +1 -0
- package/app/app/api/bootstrap/route.ts +1 -3
- package/app/app/api/file/route.ts +34 -4
- package/app/app/api/inbox/route.ts +61 -0
- package/app/app/api/mcp/install/route.ts +2 -1
- package/app/app/api/mcp/status/route.ts +14 -6
- package/app/app/api/settings/list-models/route.ts +73 -53
- package/app/app/api/settings/route.ts +46 -55
- package/app/app/api/settings/test-key/route.ts +57 -114
- package/app/app/api/setup/route.ts +31 -21
- package/app/app/api/sync/route.ts +122 -12
- package/app/app/api/update-check/route.ts +2 -2
- package/app/app/globals.css +11 -1
- package/app/app/layout.tsx +2 -3
- package/app/app/login/page.tsx +1 -1
- package/app/app/view/[...path]/ViewPageClient.tsx +22 -37
- package/app/app/view/[...path]/not-found.tsx +1 -1
- package/app/components/ActivityBar.tsx +26 -10
- package/app/components/AskFab.tsx +1 -1
- package/app/components/AskModal.tsx +1 -1
- package/app/components/Backlinks.tsx +1 -1
- package/app/components/CreateSpaceModal.tsx +7 -55
- package/app/components/DirView.tsx +93 -11
- package/app/components/EchoSpotlight.tsx +1 -1
- package/app/components/ExportModal.tsx +1 -1
- package/app/components/FileTree.tsx +66 -80
- package/app/components/FindInPage.tsx +1 -1
- package/app/components/GuideCard.tsx +1 -1
- package/app/components/HomeContent.tsx +21 -14
- package/app/components/ImportModal.tsx +1 -1
- package/app/components/KeyboardShortcuts.tsx +1 -1
- package/app/components/MarkdownView.tsx +41 -16
- package/app/components/OnboardingView.tsx +1 -1
- package/app/components/OrganizeToast.tsx +1 -1
- package/app/components/Panel.tsx +82 -4
- package/app/components/QuickSuggestion.tsx +1 -1
- package/app/components/RightAgentDetailPanel.tsx +2 -2
- package/app/components/RightAskPanel.tsx +88 -22
- package/app/components/SearchModal.tsx +1 -1
- package/app/components/Sidebar.tsx +4 -4
- package/app/components/SidebarLayout.tsx +52 -16
- package/app/components/SpaceInitToast.tsx +1 -1
- package/app/components/SyncStatusBar.tsx +2 -2
- package/app/components/SystemPulse.tsx +12 -6
- package/app/components/TableOfContents.tsx +86 -39
- package/app/components/TrashPageClient.tsx +1 -1
- package/app/components/UpdateOverlay.tsx +2 -2
- package/app/components/agents/AgentActivitySection.tsx +225 -0
- package/app/components/agents/AgentDetailContent.tsx +234 -3
- package/app/components/agents/AgentsContentPage.tsx +13 -2
- package/app/components/agents/AgentsMcpSection.tsx +10 -16
- package/app/components/agents/AgentsOverviewSection.tsx +28 -27
- package/app/components/agents/AgentsPanelA2aTab.tsx +1 -1
- package/app/components/agents/AgentsPanelSessionsTab.tsx +6 -1
- package/app/components/agents/AgentsSkillsSection.tsx +1 -1
- package/app/components/agents/DiscoverAgentModal.tsx +1 -1
- package/app/components/agents/RecentActivityFeed.tsx +49 -88
- package/app/components/agents/agent-activity-shared.tsx +110 -0
- package/app/components/agents/agents-content-model.ts +2 -2
- package/app/components/ask/AgentSelectorCapsule.tsx +1 -1
- package/app/components/ask/AskContent.tsx +332 -486
- package/app/components/ask/AskHeader.tsx +61 -0
- package/app/components/ask/FileChip.tsx +9 -5
- package/app/components/ask/MessageList.tsx +88 -21
- package/app/components/ask/ModeCapsule.tsx +180 -0
- package/app/components/ask/ProviderModelCapsule.tsx +284 -0
- package/app/components/ask/SessionHistory.tsx +63 -10
- package/app/components/ask/SessionTabBar.tsx +1 -1
- package/app/components/ask/ThinkingBlock.tsx +1 -1
- package/app/components/ask/ToolCallBlock.tsx +28 -24
- package/app/components/changes/ChangesBanner.tsx +1 -1
- package/app/components/changes/ChangesContentPage.tsx +1 -1
- package/app/components/echo/EchoInsightCollapsible.tsx +1 -1
- package/app/components/echo/EchoSegmentNav.tsx +1 -1
- package/app/components/echo/EchoSegmentPageClient.tsx +1 -1
- package/app/components/explore/ExploreContent.tsx +1 -1
- package/app/components/help/HelpContent.tsx +2 -1
- package/app/components/home/InboxSection.tsx +268 -0
- package/app/components/panels/AgentsPanel.tsx +3 -2
- package/app/components/panels/AgentsPanelHubNav.tsx +2 -6
- package/app/components/panels/DiscoverPanel.tsx +1 -1
- package/app/components/panels/EchoPanel.tsx +1 -1
- package/app/components/panels/EchoSidebarStats.tsx +1 -1
- package/app/components/panels/ImportHistoryPanel.tsx +1 -1
- package/app/components/panels/PanelHeader.tsx +1 -1
- package/app/components/panels/PluginsPanel.tsx +1 -1
- package/app/components/panels/SearchPanel.tsx +5 -2
- package/app/components/panels/SyncPopover.tsx +1 -1
- package/app/components/panels/WorkflowsPanel.tsx +1 -1
- package/app/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +18 -0
- package/app/components/renderers/todo/TodoRenderer.tsx +489 -75
- package/app/components/settings/AiTab.tsx +198 -127
- package/app/components/settings/AppearanceTab.tsx +48 -50
- package/app/components/settings/KnowledgeTab.tsx +92 -27
- package/app/components/settings/McpAgentInstall.tsx +95 -28
- package/app/components/settings/McpSkillsSection.tsx +2 -2
- package/app/components/settings/McpTab.tsx +498 -216
- package/app/components/settings/PluginsTab.tsx +1 -1
- package/app/components/settings/SettingsContent.tsx +17 -8
- package/app/components/settings/SyncTab.tsx +615 -230
- package/app/components/settings/UninstallTab.tsx +1 -1
- package/app/components/settings/UpdateTab.tsx +2 -2
- package/app/components/settings/types.ts +7 -5
- package/app/components/setup/StepAI.tsx +70 -49
- package/app/components/setup/StepAgents.tsx +113 -47
- package/app/components/setup/StepDots.tsx +1 -1
- package/app/components/setup/StepReview.tsx +186 -31
- package/app/components/setup/index.tsx +83 -48
- package/app/components/setup/types.ts +17 -8
- package/app/components/shared/ProviderSelect.tsx +134 -0
- package/app/components/walkthrough/WalkthroughOverlay.tsx +2 -2
- package/app/components/walkthrough/WalkthroughTooltip.tsx +2 -2
- package/app/components/walkthrough/index.ts +1 -1
- package/app/data/skills/mindos/SKILL.md +93 -93
- package/app/data/skills/mindos/references/write-supplement.md +119 -0
- package/app/data/skills/mindos-zh/SKILL.md +100 -104
- package/app/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/app/hooks/useAcpDetection.ts +1 -1
- package/app/hooks/useAskChat.ts +248 -0
- package/app/hooks/useAskPanel.ts +24 -4
- package/app/hooks/useAskSession.ts +15 -0
- package/app/lib/acp/types.ts +1 -1
- package/app/lib/actions.ts +13 -0
- package/app/lib/agent/log.ts +2 -0
- package/app/lib/agent/model.ts +69 -81
- package/app/lib/agent/prompt.ts +27 -0
- package/app/lib/agent/providers.ts +299 -0
- package/app/lib/agent/tools.ts +26 -4
- package/app/lib/api.ts +3 -1
- package/app/lib/core/agent-audit-log.ts +7 -0
- package/app/lib/core/fs-ops.ts +9 -4
- package/app/lib/core/inbox.ts +181 -0
- package/app/lib/core/index.ts +4 -0
- package/app/lib/core/tree.ts +3 -0
- package/app/lib/core/types.ts +2 -0
- package/app/lib/fs.ts +20 -2
- package/app/lib/i18n/modules/ai-chat.ts +35 -13
- package/app/lib/i18n/modules/features.ts +5 -5
- package/app/lib/i18n/modules/knowledge.ts +86 -2
- package/app/lib/i18n/modules/navigation.ts +6 -2
- package/app/lib/i18n/modules/onboarding.ts +69 -29
- package/app/lib/i18n/modules/panels.ts +78 -29
- package/app/lib/i18n/modules/settings.ts +280 -24
- package/app/lib/inbox-upload.ts +93 -0
- package/app/lib/mcp-agents.ts +7 -9
- package/app/lib/mcp-snippets.ts +5 -1
- package/app/lib/settings-ai-client.ts +13 -12
- package/app/lib/settings.ts +48 -33
- package/app/lib/space-ai-init.ts +66 -0
- package/app/lib/stores/LocaleStoreInit.tsx +18 -0
- package/app/lib/stores/McpStoreInit.tsx +18 -0
- package/app/lib/stores/WalkthroughInit.tsx +20 -0
- package/app/lib/stores/locale-store.ts +55 -0
- package/app/lib/stores/mcp-store.ts +156 -0
- package/app/lib/stores/walkthrough-store.ts +118 -0
- package/app/lib/types.ts +20 -0
- package/app/package.json +3 -1
- package/app/tsconfig.json +1 -1
- package/bin/cli.js +168 -1385
- package/bin/commands/agent.js +156 -20
- package/bin/commands/api.js +14 -11
- package/bin/commands/ask.js +79 -68
- package/bin/commands/build.js +26 -0
- package/bin/commands/config.js +170 -0
- package/bin/commands/dev.js +58 -0
- package/bin/commands/doctor.js +205 -0
- package/bin/commands/file.js +558 -40
- package/bin/commands/gateway.js +42 -0
- package/bin/commands/init-skills.js +56 -0
- package/bin/commands/logs.js +32 -0
- package/bin/commands/mcp-cmd.js +57 -0
- package/bin/commands/onboard.js +25 -0
- package/bin/commands/open.js +41 -0
- package/bin/commands/restart.js +48 -0
- package/bin/commands/search.js +16 -14
- package/bin/commands/space.js +100 -25
- package/bin/commands/start.js +262 -0
- package/bin/commands/status.js +2 -2
- package/bin/commands/stop.js +14 -0
- package/bin/commands/sync-cmd.js +134 -0
- package/bin/commands/token.js +98 -0
- package/bin/commands/uninstall.js +154 -0
- package/bin/commands/update.js +286 -0
- package/bin/lib/build.js +1 -1
- package/bin/lib/colors.js +8 -7
- package/bin/lib/command.js +37 -96
- package/bin/lib/config.js +5 -0
- package/bin/lib/csv.js +19 -0
- package/bin/lib/jsonc.js +12 -0
- package/bin/lib/markdown.js +69 -0
- package/bin/lib/mcp-agents.js +27 -8
- package/bin/lib/mcp-build.js +1 -1
- package/bin/lib/mcp-install.js +13 -4
- package/bin/lib/one-shot.js +88 -0
- package/bin/lib/path-expand.js +9 -0
- package/bin/lib/remote.js +65 -0
- package/bin/lib/repl.js +167 -0
- package/bin/lib/{utils.js → shell.js} +10 -26
- package/bin/lib/skill-check.js +1 -1
- package/bin/lib/sse-stream.js +167 -0
- package/bin/lib/sync.js +140 -34
- package/mcp/README.md +2 -2
- package/mcp/dist/index.cjs +43 -43
- package/mcp/package.json +1 -1
- package/mcp/src/index.ts +77 -61
- package/package.json +2 -2
- package/scripts/setup.js +183 -121
- package/skills/mindos/SKILL.md +93 -93
- package/skills/mindos/references/preference-capture.md +4 -4
- package/skills/mindos/references/write-supplement.md +2 -2
- package/skills/mindos-zh/SKILL.md +100 -104
- package/skills/mindos-zh/references/preference-capture.md +4 -4
- package/skills/mindos-zh/references/write-supplement.md +2 -2
- package/templates/empty/INSTRUCTION.md +0 -1
- package/templates/en/INSTRUCTION.md +0 -1
- package/templates/template-generation-skill.md +0 -1
- package/templates/zh/INSTRUCTION.md +0 -1
- package/_standalone/.next/server/chunks/1473.js +0 -52
- package/_standalone/.next/server/chunks/248.js +0 -15
- package/_standalone/.next/server/chunks/359.js +0 -2
- package/_standalone/.next/server/chunks/4931.js +0 -202
- package/_standalone/.next/server/chunks/7670.js +0 -1
- package/_standalone/.next/static/chunks/1038-ed04d6651ec92312.js +0 -1
- package/_standalone/.next/static/chunks/1263-6df1734e4273adb1.js +0 -25
- package/_standalone/.next/static/chunks/275-ebcaaedabe706903.js +0 -1
- package/_standalone/.next/static/chunks/3637.4bcd01a4db78b894.js +0 -1
- package/_standalone/.next/static/chunks/5637-b97c869adf70c82e.js +0 -1
- package/_standalone/.next/static/chunks/5681-a53362a1cd629dc6.js +0 -1
- package/_standalone/.next/static/chunks/9602-35ca17b688f1a4fe.js +0 -1
- package/_standalone/.next/static/chunks/9670-d59e4d45ed705f58.js +0 -6
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/_global-error/page-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-519d4da1142db5ef.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-b709cf3103321609.js +0 -5
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/changes/page-def5210095f8698d.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/[segment]/page-be28eff31b1a186e.js +0 -11
- package/_standalone/.next/static/chunks/app/echo/page-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/explore/page-e4b8098dca200389.js +0 -4
- package/_standalone/.next/static/chunks/app/help/page-d5e57d73d94bad19.js +0 -1
- package/_standalone/.next/static/chunks/app/layout-d91cdbe2ecf135e1.js +0 -173
- package/_standalone/.next/static/chunks/app/login/page-321875768b70938a.js +0 -1
- package/_standalone/.next/static/chunks/app/page-718fdf170428b43c.js +0 -7
- package/_standalone/.next/static/chunks/app/setup/page-01ab1f549d636057.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-89b1430cc8a16f18.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-f22c513bbc348cc8.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-6e3dc47699a01de1.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d4762cc48529e566.js +0 -1
- package/_standalone/.next/static/chunks/webpack-3489a2b6c2882b0c.js +0 -1
- package/_standalone/.next/static/css/f16595bc58a16d5d.css +0 -1
- package/_standalone/.next/static/ushZ_NJ8rE3rG5hZfaYOX/_buildManifest.js +0 -1
- package/_standalone/components/walkthrough/WalkthroughProvider.tsx +0 -133
- package/_standalone/hooks/useMcpData.tsx +0 -169
- package/_standalone/lib/i18n-en.ts +0 -2
- package/_standalone/lib/i18n-zh.ts +0 -2
- package/_standalone/lib/types.ts +0 -70
- package/app/components/walkthrough/WalkthroughProvider.tsx +0 -133
- package/app/hooks/useMcpData.tsx +0 -169
- package/app/lib/LocaleContext.tsx +0 -60
- package/app/lib/i18n-en.ts +0 -2
- package/app/lib/i18n-zh.ts +0 -2
- /package/_standalone/.next/static/{ushZ_NJ8rE3rG5hZfaYOX → Ij3PFh-a0zi5K_ANoSAW0}/_ssgManifest.js +0 -0
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
export const settingsEn = {
|
|
4
4
|
settings: {
|
|
5
5
|
title: 'Settings',
|
|
6
|
-
tabs: { ai: 'AI', appearance: 'Appearance', knowledge: 'General', sync: 'Sync', mcp: '
|
|
6
|
+
tabs: { ai: 'AI', appearance: 'Appearance', knowledge: 'General', sync: 'Sync', mcp: 'Connections', plugins: 'Plugins', shortcuts: 'Shortcuts', monitoring: 'Monitoring', agents: 'Agents', update: 'Update', uninstall: 'Uninstall' },
|
|
7
7
|
ai: {
|
|
8
8
|
provider: 'Provider',
|
|
9
9
|
model: 'Model',
|
|
10
10
|
apiKey: 'API Key',
|
|
11
11
|
baseUrl: 'Base URL',
|
|
12
|
-
baseUrlHint: 'Optional. Use for proxies or
|
|
12
|
+
baseUrlHint: 'Optional. Use for proxies or custom API endpoints.',
|
|
13
13
|
keyHint: 'Stored locally in ~/.mindos/config.json',
|
|
14
|
+
keyOptionalHint: 'Optional for local providers. Stored in ~/.mindos/config.json',
|
|
14
15
|
envHint: 'Fields marked env have a value from environment variables. You can override them here, or restore all to env defaults.',
|
|
15
16
|
envFieldNote: (key: string) => `Env var ${key} is set. Clear this field to fall back to it.`,
|
|
16
17
|
resetToEnv: 'Reset to env value',
|
|
@@ -58,12 +59,40 @@ export const settingsEn = {
|
|
|
58
59
|
light: 'Light',
|
|
59
60
|
language: 'Language',
|
|
60
61
|
browserNote: 'Appearance settings are saved in your browser.',
|
|
62
|
+
labsTitle: 'Labs',
|
|
63
|
+
labsDesc: 'Experimental features still in development. May change or be removed.',
|
|
64
|
+
labsEcho: 'Echo',
|
|
65
|
+
labsEchoDesc: 'Reflective journaling powered by your notes.',
|
|
66
|
+
labsWorkflows: 'Flows',
|
|
67
|
+
labsWorkflowsDesc: 'Visual workflow automation for agents.',
|
|
61
68
|
fontPreview: 'The quick brown fox jumps over the lazy dog.',
|
|
62
69
|
},
|
|
63
70
|
knowledge: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
cardTitle: 'Knowledge Base',
|
|
72
|
+
securityTitle: 'Security',
|
|
73
|
+
passwordPlaceholder: 'Leave empty to disable',
|
|
74
|
+
passwordShow: 'Show',
|
|
75
|
+
passwordHide: 'Hide',
|
|
76
|
+
tokenNotSet: '— not set —',
|
|
77
|
+
mcpUrl: 'MCP URL',
|
|
78
|
+
tokenGenerated: 'New token generated. Copy it now — it won\'t be shown in full again.',
|
|
79
|
+
monitoringTitle: 'System Monitoring',
|
|
80
|
+
monitoringFailed: 'Failed to load monitoring data',
|
|
81
|
+
monitorHeap: 'Heap',
|
|
82
|
+
monitorRss: 'RSS',
|
|
83
|
+
monitorUptime: 'Uptime',
|
|
84
|
+
monitorNode: 'Node',
|
|
85
|
+
monitorRequests: 'Requests',
|
|
86
|
+
monitorToolCalls: 'Tool Calls',
|
|
87
|
+
monitorTokens: 'Tokens',
|
|
88
|
+
monitorFiles: 'Files',
|
|
89
|
+
monitorErrors: 'Errors',
|
|
90
|
+
monitorMcpRunning: (port: number) => `Running :${port}`,
|
|
91
|
+
monitorMcpStopped: 'Stopped',
|
|
92
|
+
cancel: 'Cancel',
|
|
93
|
+
mindRoot: 'Knowledge base root',
|
|
94
|
+
mindRootHint: 'Absolute path to your notes directory. Requires server restart to take effect.',
|
|
95
|
+
mindRootEnvHint: (key: string) => `MIND_ROOT env var is set to "${key}". Fill in above to override it.`,
|
|
67
96
|
envNote: 'MIND_ROOT env var is set. Fill in above to override it — your value takes priority.',
|
|
68
97
|
webPassword: 'Web UI password',
|
|
69
98
|
webPasswordHint: 'Protect the browser UI with a password. Leave empty to disable. Changes take effect on next page load.',
|
|
@@ -97,17 +126,63 @@ export const settingsEn = {
|
|
|
97
126
|
featureMultiDevice: 'Works across devices',
|
|
98
127
|
remoteUrl: 'Git Remote URL',
|
|
99
128
|
invalidUrl: 'Invalid Git URL — use HTTPS (https://...) or SSH (git@...)',
|
|
100
|
-
|
|
129
|
+
sshBrief: 'one-time key setup, no token needed',
|
|
130
|
+
httpsBrief: 'works anywhere, token recommended',
|
|
131
|
+
sshHint: 'Requires SSH key on this machine. Verify with: ssh -T git@github.com',
|
|
101
132
|
accessToken: 'Access Token',
|
|
102
133
|
optional: '(optional, for private repos)',
|
|
103
|
-
tokenHint: 'GitHub:
|
|
134
|
+
tokenHint: 'GitHub:',
|
|
135
|
+
tokenLink: 'Create a token (repo scope)',
|
|
104
136
|
branchLabel: 'Branch',
|
|
105
137
|
connectButton: 'Connect & Start Sync',
|
|
106
138
|
connecting: 'Connecting...',
|
|
139
|
+
stepConnecting: 'Connecting to remote...',
|
|
140
|
+
stepAuthenticating: 'Authenticating...',
|
|
141
|
+
stepSyncing: 'Syncing data...',
|
|
142
|
+
stepAlmostDone: 'Almost done...',
|
|
143
|
+
stepDone: 'Sync configured successfully!',
|
|
144
|
+
gitignoreTitle: 'Excluded files',
|
|
145
|
+
gitignorePlaceholder: '# Files to exclude from sync\n*.tmp\nsecret/',
|
|
146
|
+
gitignoreSave: 'Save',
|
|
147
|
+
gitignoreSaved: 'Saved',
|
|
148
|
+
conflictExplain: 'These files were changed on both this device and the remote. Choose which version to keep.',
|
|
149
|
+
keepLocal: 'Keep local',
|
|
150
|
+
keepRemote: 'Keep remote',
|
|
151
|
+
keepLocalHint: 'Keep this device\'s version',
|
|
152
|
+
keepRemoteHint: 'Replace with the remote version',
|
|
153
|
+
viewDiff: 'Click to compare versions',
|
|
154
|
+
localVersion: 'Local (this device)',
|
|
155
|
+
remoteVersion: 'Remote',
|
|
156
|
+
emptyFile: '(empty)',
|
|
157
|
+
sectionTitle: 'Sync',
|
|
158
|
+
labelProvider: 'Provider',
|
|
159
|
+
labelRemote: 'Remote',
|
|
160
|
+
labelBranch: 'Branch',
|
|
161
|
+
labelLastSync: 'Last sync',
|
|
162
|
+
labelUnpushed: 'Unpushed',
|
|
163
|
+
labelAutoSync: 'Auto-sync',
|
|
164
|
+
unpushedCommits: (n: number) => `${n} commits`,
|
|
165
|
+
syncNow: 'Sync Now',
|
|
166
|
+
disableAutoSync: 'Disable Auto-sync',
|
|
167
|
+
enableAutoSync: 'Enable Auto-sync',
|
|
168
|
+
syncComplete: 'Sync complete',
|
|
169
|
+
syncFailed: 'Sync failed',
|
|
170
|
+
autoSyncDisabled: 'Auto-sync disabled',
|
|
171
|
+
autoSyncEnabled: 'Auto-sync enabled',
|
|
172
|
+
toggleFailed: 'Failed to toggle sync',
|
|
173
|
+
conflictsTitle: (n: number) => `Conflicts (${n})`,
|
|
174
|
+
conflictHint: 'Click a file to view your version. Hover and click',
|
|
175
|
+
conflictHintSuffix: 'to see the remote version.',
|
|
176
|
+
timeNever: 'never',
|
|
177
|
+
timeJustNow: 'just now',
|
|
178
|
+
timeMinAgo: (m: number) => `${m}m ago`,
|
|
179
|
+
timeHourAgo: (h: number) => `${h}h ago`,
|
|
180
|
+
timeDayAgo: (d: number) => `${d}d ago`,
|
|
107
181
|
},
|
|
108
182
|
plugins: {
|
|
109
183
|
title: 'Installed Renderers',
|
|
110
184
|
builtinBadge: 'built-in',
|
|
185
|
+
coreBadge: 'core',
|
|
111
186
|
enabled: 'Enabled',
|
|
112
187
|
disabled: 'Disabled',
|
|
113
188
|
matchHint: 'Auto-activates on',
|
|
@@ -151,6 +226,7 @@ export const settingsEn = {
|
|
|
151
226
|
portLabel: 'MCP Port',
|
|
152
227
|
portHint: 'Changes require server restart',
|
|
153
228
|
skillsTitle: 'Skills',
|
|
229
|
+
skillsDesc: 'Teach agents how to operate your knowledge base.',
|
|
154
230
|
skillAutoLoaded: 'Auto-loaded on every request',
|
|
155
231
|
skillSource: 'Source',
|
|
156
232
|
skillBuiltin: 'Built-in',
|
|
@@ -193,6 +269,58 @@ export const settingsEn = {
|
|
|
193
269
|
noAuthWarning: '⚠ No auth token — set one in Settings → General before enabling remote access.',
|
|
194
270
|
showJson: 'Show JSON',
|
|
195
271
|
hideJson: 'Hide JSON',
|
|
272
|
+
connectionTitle: 'Connect Agents',
|
|
273
|
+
connectionHint: 'Choose how your AI agents connect to MindOS.',
|
|
274
|
+
tokenCardTitle: 'Auth Token',
|
|
275
|
+
tokenCardDesc: 'Used by CLI remote mode and MCP connections.',
|
|
276
|
+
mcpHint: 'For Claude Desktop, Cursor, and agents that use MCP tool protocol.',
|
|
277
|
+
tokenLabel: 'Auth Token',
|
|
278
|
+
tokenMasked: 'Click Show to reveal the full token',
|
|
279
|
+
tokenShow: 'Show',
|
|
280
|
+
tokenHide: 'Hide',
|
|
281
|
+
tokenCopy: 'Copy',
|
|
282
|
+
tokenCopied: 'Token copied!',
|
|
283
|
+
tokenNone: 'No token set — your MCP server is open to all requests.',
|
|
284
|
+
tokenNoneAction: 'Generate a token in Settings → General → Security.',
|
|
285
|
+
serverUrl: 'MCP Server URL',
|
|
286
|
+
serverUrlCopy: 'Copy URL',
|
|
287
|
+
howToConnect: 'How to connect an AI agent',
|
|
288
|
+
howToStep1: 'Open your agent\'s MCP settings (e.g. Claude Code, Cursor)',
|
|
289
|
+
howToStep2: 'Add a new MCP server with the URL above',
|
|
290
|
+
howToStep3: 'Set the Auth Token as the bearer token',
|
|
291
|
+
howToStep4: 'Save and verify the connection',
|
|
292
|
+
// CLI Skill
|
|
293
|
+
cliSkillTitle: 'CLI Skill',
|
|
294
|
+
cliSkillHint: 'For agents with bash (Claude Code, Gemini CLI, Codex) — lower token cost, no MCP needed.',
|
|
295
|
+
cliSkillDesc: 'Lower token cost, Skill included — just install and go.',
|
|
296
|
+
cliLocalDesc: 'MindOS Skill is built-in. Install the CLI and you\'re good to go.',
|
|
297
|
+
cliRemoteDesc: 'Install the CLI on another machine and connect to this MindOS server.',
|
|
298
|
+
cliSkillInstall: 'Install',
|
|
299
|
+
cliSkillInstallCmd: 'npm install -g @geminilight/mindos',
|
|
300
|
+
cliSkillRemote: 'Remote',
|
|
301
|
+
cliSkillVerify: 'Verify',
|
|
302
|
+
cliSkillVerifyCmd: 'mindos file list',
|
|
303
|
+
cliRemoteConfigure: 'Configure',
|
|
304
|
+
cliInstallSkill: 'Install Skill',
|
|
305
|
+
cliAgents: 'Claude Code · Gemini CLI · Codex',
|
|
306
|
+
mcpAgents: 'Claude Desktop · Cursor',
|
|
307
|
+
mcpDesc: 'Requires per-agent MCP config. Install Skill separately via',
|
|
308
|
+
mcpLocalDesc: 'Copy the config snippet and paste into your agent\'s MCP settings.',
|
|
309
|
+
mcpRunningLabel: 'MCP Running',
|
|
310
|
+
mcpServerStatus: 'MCP Server',
|
|
311
|
+
autoInstallAgents: 'Auto-install to detected agents',
|
|
312
|
+
detectedAgentsTitle: 'Detected Agents',
|
|
313
|
+
cliInstallDesc: 'Install the MindOS Skill to your agent so it can operate your knowledge base.',
|
|
314
|
+
mcpInstallDesc: 'Install MCP config + Skill to detected agents on this machine.',
|
|
315
|
+
tokenCopyFullHint: 'Copies full token',
|
|
316
|
+
skillsInstalled: 'skills installed',
|
|
317
|
+
recommended: 'Recommended',
|
|
318
|
+
localTitle: 'Local',
|
|
319
|
+
localReady: 'Ready to use',
|
|
320
|
+
remoteTitle: 'Remote Access',
|
|
321
|
+
remoteSubtitle: 'Connect from another device',
|
|
322
|
+
restarting: 'Restarting...',
|
|
323
|
+
restart: 'Restart',
|
|
196
324
|
},
|
|
197
325
|
monitoring: {
|
|
198
326
|
system: 'System',
|
|
@@ -317,14 +445,15 @@ export const settingsEn = {
|
|
|
317
445
|
export const settingsZh = {
|
|
318
446
|
settings: {
|
|
319
447
|
title: '设置',
|
|
320
|
-
tabs: { ai: 'AI', appearance: '外观', knowledge: '通用', sync: '同步', mcp: '
|
|
448
|
+
tabs: { ai: 'AI', appearance: '外观', knowledge: '通用', sync: '同步', mcp: '连接', plugins: '插件', shortcuts: '快捷键', monitoring: '监控', agents: '智能体', update: '更新', uninstall: '卸载' },
|
|
321
449
|
ai: {
|
|
322
450
|
provider: '服务商',
|
|
323
451
|
model: '模型',
|
|
324
452
|
apiKey: 'API 密钥',
|
|
325
453
|
baseUrl: '接口地址',
|
|
326
|
-
baseUrlHint: '
|
|
454
|
+
baseUrlHint: '可选。用于代理或自定义 API 端点。',
|
|
327
455
|
keyHint: '本地存储于 ~/.mindos/config.json',
|
|
456
|
+
keyOptionalHint: '本地服务商可选。存储于 ~/.mindos/config.json',
|
|
328
457
|
envHint: '标有 env 的字段存在环境变量值。你可以在此覆盖,或一键恢复为环境变量默认值。',
|
|
329
458
|
envFieldNote: (key: string) => `环境变量 ${key} 已设置。清空此字段将回退到环境变量值。`,
|
|
330
459
|
resetToEnv: '恢复为环境变量',
|
|
@@ -372,12 +501,40 @@ export const settingsZh = {
|
|
|
372
501
|
light: '浅色',
|
|
373
502
|
language: '语言',
|
|
374
503
|
browserNote: '外观设置保存在浏览器本地。',
|
|
504
|
+
labsTitle: '实验性功能',
|
|
505
|
+
labsDesc: '仍在开发中的功能,可能会变更或移除。',
|
|
506
|
+
labsEcho: '回响',
|
|
507
|
+
labsEchoDesc: '基于笔记的反思性日记。',
|
|
508
|
+
labsWorkflows: '工作流',
|
|
509
|
+
labsWorkflowsDesc: 'Agent 可视化工作流自动化。',
|
|
375
510
|
fontPreview: '人之初,性本善;性相近,习相远。',
|
|
376
511
|
},
|
|
377
512
|
knowledge: {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
513
|
+
cardTitle: '知识库',
|
|
514
|
+
securityTitle: '安全',
|
|
515
|
+
passwordPlaceholder: '留空可禁用',
|
|
516
|
+
passwordShow: '显示',
|
|
517
|
+
passwordHide: '隐藏',
|
|
518
|
+
tokenNotSet: '— 未设置 —',
|
|
519
|
+
mcpUrl: 'MCP 地址',
|
|
520
|
+
tokenGenerated: '已生成新令牌。请立即复制 — 之后不会再次完整显示。',
|
|
521
|
+
monitoringTitle: '系统监控',
|
|
522
|
+
monitoringFailed: '加载监控数据失败',
|
|
523
|
+
monitorHeap: '堆内存',
|
|
524
|
+
monitorRss: 'RSS',
|
|
525
|
+
monitorUptime: '运行时间',
|
|
526
|
+
monitorNode: 'Node',
|
|
527
|
+
monitorRequests: '请求数',
|
|
528
|
+
monitorToolCalls: '工具调用',
|
|
529
|
+
monitorTokens: 'Token',
|
|
530
|
+
monitorFiles: '文件',
|
|
531
|
+
monitorErrors: '错误',
|
|
532
|
+
monitorMcpRunning: (port: number) => `运行中 :${port}`,
|
|
533
|
+
monitorMcpStopped: '已停止',
|
|
534
|
+
cancel: '取消',
|
|
535
|
+
mindRoot: '知识库根目录',
|
|
536
|
+
mindRootHint: '笔记目录的绝对路径,修改后需要重启服务器。',
|
|
537
|
+
mindRootEnvHint: (key: string) => `MIND_ROOT 环境变量已设置为 "${key}",填写上方路径可覆盖它。`,
|
|
381
538
|
envNote: 'MIND_ROOT 环境变量已设置。填写上方路径后,你的值优先生效。',
|
|
382
539
|
webPassword: '网页访问密码',
|
|
383
540
|
webPasswordHint: '设置后访问浏览器 UI 需要登录,留空则关闭密码保护。下次刷新页面后生效。',
|
|
@@ -411,17 +568,63 @@ export const settingsZh = {
|
|
|
411
568
|
featureMultiDevice: '多设备同步',
|
|
412
569
|
remoteUrl: 'Git 远程仓库 URL',
|
|
413
570
|
invalidUrl: '无效的 Git URL — 请使用 HTTPS (https://...) 或 SSH (git@...) 格式',
|
|
414
|
-
|
|
571
|
+
sshBrief: '一次配置,无需令牌',
|
|
572
|
+
httpsBrief: '通用性强,建议配令牌',
|
|
573
|
+
sshHint: '需要本机已配置 SSH 密钥。验证命令:ssh -T git@github.com',
|
|
415
574
|
accessToken: '访问令牌',
|
|
416
575
|
optional: '(可选,私有仓库需要)',
|
|
417
|
-
tokenHint: 'GitHub:
|
|
576
|
+
tokenHint: 'GitHub:',
|
|
577
|
+
tokenLink: '创建令牌(勾选 repo 权限)',
|
|
418
578
|
branchLabel: '分支',
|
|
419
579
|
connectButton: '连接并开始同步',
|
|
420
580
|
connecting: '连接中...',
|
|
581
|
+
stepConnecting: '正在连接远程仓库...',
|
|
582
|
+
stepAuthenticating: '正在验证身份...',
|
|
583
|
+
stepSyncing: '正在同步数据...',
|
|
584
|
+
stepAlmostDone: '即将完成...',
|
|
585
|
+
stepDone: '同步配置成功!',
|
|
586
|
+
gitignoreTitle: '排除文件',
|
|
587
|
+
gitignorePlaceholder: '# 不同步的文件\n*.tmp\nsecret/',
|
|
588
|
+
gitignoreSave: '保存',
|
|
589
|
+
gitignoreSaved: '已保存',
|
|
590
|
+
conflictExplain: '这些文件在本机和远程都被修改了。请选择保留哪个版本。',
|
|
591
|
+
keepLocal: '保留本地',
|
|
592
|
+
keepRemote: '保留远程',
|
|
593
|
+
keepLocalHint: '保留本机的版本',
|
|
594
|
+
keepRemoteHint: '替换为远程版本',
|
|
595
|
+
viewDiff: '点击查看两个版本的差异',
|
|
596
|
+
localVersion: '本地(本机)',
|
|
597
|
+
remoteVersion: '远程',
|
|
598
|
+
emptyFile: '(空)',
|
|
599
|
+
sectionTitle: '同步',
|
|
600
|
+
labelProvider: '提供商',
|
|
601
|
+
labelRemote: '远程',
|
|
602
|
+
labelBranch: '分支',
|
|
603
|
+
labelLastSync: '最后同步',
|
|
604
|
+
labelUnpushed: '未推送',
|
|
605
|
+
labelAutoSync: '自动同步',
|
|
606
|
+
unpushedCommits: (n: number) => `${n} 次提交`,
|
|
607
|
+
syncNow: '立即同步',
|
|
608
|
+
disableAutoSync: '禁用自动同步',
|
|
609
|
+
enableAutoSync: '启用自动同步',
|
|
610
|
+
syncComplete: '同步完成',
|
|
611
|
+
syncFailed: '同步失败',
|
|
612
|
+
autoSyncDisabled: '已禁用自动同步',
|
|
613
|
+
autoSyncEnabled: '已启用自动同步',
|
|
614
|
+
toggleFailed: '切换同步失败',
|
|
615
|
+
conflictsTitle: (n: number) => `冲突 (${n})`,
|
|
616
|
+
conflictHint: '单击文件查看你的版本。悬停并单击',
|
|
617
|
+
conflictHintSuffix: '查看远程版本。',
|
|
618
|
+
timeNever: '从未',
|
|
619
|
+
timeJustNow: '刚刚',
|
|
620
|
+
timeMinAgo: (m: number) => `${m} 分钟前`,
|
|
621
|
+
timeHourAgo: (h: number) => `${h} 小时前`,
|
|
622
|
+
timeDayAgo: (d: number) => `${d} 天前`,
|
|
421
623
|
},
|
|
422
624
|
plugins: {
|
|
423
625
|
title: '已安装渲染器',
|
|
424
626
|
builtinBadge: '内置',
|
|
627
|
+
coreBadge: '核心',
|
|
425
628
|
enabled: '已启用',
|
|
426
629
|
disabled: '已禁用',
|
|
427
630
|
matchHint: '自动匹配',
|
|
@@ -464,14 +667,15 @@ export const settingsZh = {
|
|
|
464
667
|
installFailed: '安装失败',
|
|
465
668
|
portLabel: 'MCP 端口',
|
|
466
669
|
portHint: '修改后需重启服务',
|
|
467
|
-
skillsTitle: '
|
|
670
|
+
skillsTitle: '技能',
|
|
671
|
+
skillsDesc: '教 Agent 如何操作你的知识库。',
|
|
468
672
|
skillAutoLoaded: '每次请求自动加载',
|
|
469
673
|
skillSource: '来源',
|
|
470
674
|
skillBuiltin: '内置',
|
|
471
675
|
skillUser: '自定义',
|
|
472
|
-
addSkill: '+
|
|
676
|
+
addSkill: '+ 添加技能',
|
|
473
677
|
cliInstallHint: '通过命令行安装:',
|
|
474
|
-
skillPathHint: '
|
|
678
|
+
skillPathHint: '技能文件安装路径:',
|
|
475
679
|
deleteSkill: '删除',
|
|
476
680
|
editSkill: '编辑',
|
|
477
681
|
saveSkill: '保存',
|
|
@@ -479,15 +683,15 @@ export const settingsZh = {
|
|
|
479
683
|
skillName: '名称',
|
|
480
684
|
skillDesc: '描述',
|
|
481
685
|
skillContent: '内容',
|
|
482
|
-
skillNameConflict: '
|
|
686
|
+
skillNameConflict: '同名技能已存在',
|
|
483
687
|
skillDeleteConfirm: (name: string) => `确定删除「${name}」?此操作不可撤销。`,
|
|
484
|
-
skillLanguage: '
|
|
688
|
+
skillLanguage: '技能语言',
|
|
485
689
|
skillLangEn: 'English',
|
|
486
690
|
skillLangZh: '中文',
|
|
487
|
-
searchSkills: '
|
|
691
|
+
searchSkills: '搜索技能...',
|
|
488
692
|
customGroup: '自定义',
|
|
489
693
|
builtinGroup: '内置',
|
|
490
|
-
noSkillsMatch: (query: string) => `没有匹配「${query}
|
|
694
|
+
noSkillsMatch: (query: string) => `没有匹配「${query}」的技能`,
|
|
491
695
|
skillTemplate: '模板',
|
|
492
696
|
skillTemplateGeneral: '通用',
|
|
493
697
|
skillTemplateToolUse: '工具调用',
|
|
@@ -507,6 +711,58 @@ export const settingsZh = {
|
|
|
507
711
|
noAuthWarning: '⚠ 未设置认证令牌 — 请先在 设置 → 通用 中配置,再启用远程访问。',
|
|
508
712
|
showJson: '显示 JSON',
|
|
509
713
|
hideJson: '隐藏 JSON',
|
|
714
|
+
connectionTitle: '连接 Agent',
|
|
715
|
+
connectionHint: '选择 AI Agent 连接 MindOS 的方式。',
|
|
716
|
+
tokenCardTitle: '认证令牌',
|
|
717
|
+
tokenCardDesc: '用于 CLI 远程模式和 MCP 连接。',
|
|
718
|
+
mcpHint: '适用于 Claude Desktop、Cursor 等使用 MCP 工具协议的 Agent。',
|
|
719
|
+
tokenLabel: '认证令牌',
|
|
720
|
+
tokenMasked: '点击「显示」查看完整令牌',
|
|
721
|
+
tokenShow: '显示',
|
|
722
|
+
tokenHide: '隐藏',
|
|
723
|
+
tokenCopy: '复制',
|
|
724
|
+
tokenCopied: '令牌已复制!',
|
|
725
|
+
tokenNone: '未设置令牌 — MCP 服务对所有请求开放。',
|
|
726
|
+
tokenNoneAction: '请在 设置 → 通用 → 安全 中生成令牌。',
|
|
727
|
+
serverUrl: 'MCP 服务地址',
|
|
728
|
+
serverUrlCopy: '复制地址',
|
|
729
|
+
howToConnect: '如何连接 AI 助手',
|
|
730
|
+
howToStep1: '打开你的 AI 助手的 MCP 设置(如 Claude Code、Cursor)',
|
|
731
|
+
howToStep2: '添加一个新的 MCP 服务,填入上方地址',
|
|
732
|
+
howToStep3: '将认证令牌设为 Bearer Token',
|
|
733
|
+
howToStep4: '保存并验证连接',
|
|
734
|
+
// CLI Skill
|
|
735
|
+
cliSkillTitle: 'CLI 技能',
|
|
736
|
+
cliSkillHint: '适用于支持 bash 的 Agent(Claude Code、Gemini CLI、Codex)——更省 token,无需 MCP。',
|
|
737
|
+
cliSkillDesc: '更省 token,技能内置——安装即可使用。',
|
|
738
|
+
cliLocalDesc: 'MindOS Skill 已内置,安装 CLI 即可直接使用。',
|
|
739
|
+
cliRemoteDesc: '在其他设备上安装 CLI,远程连接到此 MindOS 服务器。',
|
|
740
|
+
cliSkillInstall: '安装',
|
|
741
|
+
cliSkillInstallCmd: 'npm install -g @geminilight/mindos',
|
|
742
|
+
cliSkillRemote: '远程',
|
|
743
|
+
cliSkillVerify: '验证',
|
|
744
|
+
cliSkillVerifyCmd: 'mindos file list',
|
|
745
|
+
cliRemoteConfigure: '配置',
|
|
746
|
+
cliInstallSkill: '安装技能',
|
|
747
|
+
cliAgents: 'Claude Code · Gemini CLI · Codex',
|
|
748
|
+
mcpAgents: 'Claude Desktop · Cursor',
|
|
749
|
+
mcpDesc: '需要逐个 Agent 配置 MCP,通过以下命令单独安装技能:',
|
|
750
|
+
mcpLocalDesc: '复制下方配置代码,粘贴到你的 Agent 的 MCP 设置中。',
|
|
751
|
+
mcpRunningLabel: 'MCP 运行中',
|
|
752
|
+
mcpServerStatus: 'MCP 服务',
|
|
753
|
+
autoInstallAgents: '自动安装到已检测的 Agent',
|
|
754
|
+
detectedAgentsTitle: '检测到的 Agent',
|
|
755
|
+
cliInstallDesc: '为你的 Agent 安装 MindOS Skill,让它能操作你的知识库。',
|
|
756
|
+
mcpInstallDesc: '为本机检测到的 Agent 安装 MCP 配置和 Skill。',
|
|
757
|
+
tokenCopyFullHint: '复制完整令牌',
|
|
758
|
+
skillsInstalled: '个技能已安装',
|
|
759
|
+
recommended: '推荐',
|
|
760
|
+
localTitle: '本机',
|
|
761
|
+
localReady: '可直接使用',
|
|
762
|
+
remoteTitle: '远程访问',
|
|
763
|
+
remoteSubtitle: '从其他设备连接',
|
|
764
|
+
restarting: '重启中...',
|
|
765
|
+
restart: '重启',
|
|
510
766
|
},
|
|
511
767
|
monitoring: {
|
|
512
768
|
system: '系统',
|
|
@@ -587,7 +843,7 @@ export const settingsZh = {
|
|
|
587
843
|
desktopHint: '更新通过桌面端自动更新推送。',
|
|
588
844
|
// Core Hot Update
|
|
589
845
|
coreTitle: 'MindOS Core',
|
|
590
|
-
coreUpToDate: '
|
|
846
|
+
coreUpToDate: '核心已是最新',
|
|
591
847
|
coreAvailable: (size: string) => `有新版本可用(${size})`,
|
|
592
848
|
coreDownloading: '下载中...',
|
|
593
849
|
coreCancel: '取消',
|
|
@@ -595,11 +851,11 @@ export const settingsZh = {
|
|
|
595
851
|
coreRestartServices: '重启服务',
|
|
596
852
|
coreApplying: '正在应用更新...',
|
|
597
853
|
coreApplied: '更新成功!正在刷新...',
|
|
598
|
-
coreError: '
|
|
854
|
+
coreError: '核心更新失败。',
|
|
599
855
|
coreRetry: '重试',
|
|
600
856
|
coreDesktopTooOld: (version: string) => `v${version} 需要更新版本的 Desktop。`,
|
|
601
857
|
coreDesktopTooOldHint: '请先更新 MindOS Desktop。',
|
|
602
|
-
coreHint: '
|
|
858
|
+
coreHint: '核心更新只需重启服务,无需重启应用。',
|
|
603
859
|
shellTitle: 'MindOS Desktop',
|
|
604
860
|
},
|
|
605
861
|
uninstall: {
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { toast } from '@/lib/toast';
|
|
2
|
+
import type { useLocale } from '@/lib/stores/locale-store';
|
|
3
|
+
|
|
4
|
+
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB per file
|
|
5
|
+
|
|
6
|
+
function arrayBufferToBase64(buf: ArrayBuffer): string {
|
|
7
|
+
const bytes = new Uint8Array(buf);
|
|
8
|
+
const chunks: string[] = [];
|
|
9
|
+
for (let i = 0; i < bytes.length; i += 8192) {
|
|
10
|
+
chunks.push(String.fromCharCode(...bytes.subarray(i, i + 8192)));
|
|
11
|
+
}
|
|
12
|
+
return btoa(chunks.join(''));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function showQuickDropToast(
|
|
16
|
+
saved: number,
|
|
17
|
+
formatSkipped: number,
|
|
18
|
+
oversized: number,
|
|
19
|
+
t: ReturnType<typeof useLocale>['t'],
|
|
20
|
+
) {
|
|
21
|
+
if (saved > 0 && oversized > 0 && formatSkipped === 0) {
|
|
22
|
+
toast.success(t.inbox.savedWithOversized(saved, oversized), 4000);
|
|
23
|
+
} else if (saved > 0 && (formatSkipped + oversized) > 0) {
|
|
24
|
+
toast.success(t.inbox.savedWithSkipped(saved, formatSkipped + oversized), 4000);
|
|
25
|
+
} else if (saved > 0) {
|
|
26
|
+
toast.success(t.inbox.savedToast(saved), 3000);
|
|
27
|
+
} else {
|
|
28
|
+
if (oversized > 0) toast.error(t.inbox.tooLarge(oversized), 4000);
|
|
29
|
+
if (formatSkipped > 0) toast.error(t.inbox.savedWithSkipped(0, formatSkipped), 4000);
|
|
30
|
+
if (oversized === 0 && formatSkipped === 0) toast.error(t.inbox.saveFailed, 4000);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function quickDropToInbox(
|
|
35
|
+
files: File[],
|
|
36
|
+
t: ReturnType<typeof useLocale>['t'],
|
|
37
|
+
) {
|
|
38
|
+
const payload: Array<{ name: string; content: string; encoding?: string }> = [];
|
|
39
|
+
let oversizedCount = 0;
|
|
40
|
+
|
|
41
|
+
for (const file of files) {
|
|
42
|
+
if (file.size > MAX_FILE_SIZE) {
|
|
43
|
+
oversizedCount++;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
if (file.name.toLowerCase().endsWith('.pdf')) {
|
|
48
|
+
const buf = await file.arrayBuffer();
|
|
49
|
+
payload.push({ name: file.name, content: arrayBufferToBase64(buf), encoding: 'base64' });
|
|
50
|
+
} else {
|
|
51
|
+
const text = await file.text();
|
|
52
|
+
payload.push({ name: file.name, content: text });
|
|
53
|
+
}
|
|
54
|
+
} catch {
|
|
55
|
+
/* skip unreadable files */
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (payload.length === 0) {
|
|
60
|
+
if (oversizedCount > 0) {
|
|
61
|
+
toast.error(t.inbox.tooLarge(oversizedCount), 4000);
|
|
62
|
+
} else if (files.length > 0) {
|
|
63
|
+
toast.error(t.inbox.saveFailed, 4000);
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
const res = await fetch('/api/inbox', {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: { 'Content-Type': 'application/json' },
|
|
72
|
+
body: JSON.stringify({ files: payload }),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
if (!res.ok) {
|
|
76
|
+
const data = await res.json().catch(() => ({}));
|
|
77
|
+
console.error('[QuickDrop] Save failed:', data.error);
|
|
78
|
+
toast.error(t.inbox.saveFailed, 4000);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const result = await res.json();
|
|
83
|
+
const saved = result.saved?.length ?? 0;
|
|
84
|
+
const formatSkipped = result.skipped?.length ?? 0;
|
|
85
|
+
|
|
86
|
+
showQuickDropToast(saved, formatSkipped, oversizedCount, t);
|
|
87
|
+
window.dispatchEvent(new Event('mindos:files-changed'));
|
|
88
|
+
window.dispatchEvent(new Event('mindos:inbox-updated'));
|
|
89
|
+
} catch (err) {
|
|
90
|
+
console.error('[QuickDrop] Network error:', err);
|
|
91
|
+
toast.error(t.inbox.saveFailed, 4000);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -94,9 +94,13 @@ export function generateSnippet(
|
|
|
94
94
|
if (transport === 'stdio') {
|
|
95
95
|
return generateStdioSnippet(agent);
|
|
96
96
|
}
|
|
97
|
+
// For remote/http mode, prefer localIP over endpoint (which is always localhost)
|
|
98
|
+
const endpoint = status?.localIP
|
|
99
|
+
? `http://${status.localIP}:${status.port}/mcp`
|
|
100
|
+
: (status?.endpoint ?? 'http://127.0.0.1:8781/mcp');
|
|
97
101
|
return generateHttpSnippet(
|
|
98
102
|
agent,
|
|
99
|
-
|
|
103
|
+
endpoint,
|
|
100
104
|
status?.authToken,
|
|
101
105
|
status?.maskedToken,
|
|
102
106
|
);
|
|
@@ -2,25 +2,26 @@
|
|
|
2
2
|
* Client-side mirror of "can /api/ask run?" using GET /api/settings payload.
|
|
3
3
|
* Must stay aligned with server `effectiveAiConfig()` provider + key resolution.
|
|
4
4
|
*/
|
|
5
|
+
import { type ProviderId, PROVIDER_PRESETS, isProviderId, getApiKeyEnvVar } from './agent/providers';
|
|
5
6
|
|
|
6
7
|
export type SettingsJsonForAi = {
|
|
7
8
|
ai?: {
|
|
8
9
|
provider?: string;
|
|
9
|
-
providers?: {
|
|
10
|
-
anthropic?: { apiKey?: string };
|
|
11
|
-
openai?: { apiKey?: string };
|
|
12
|
-
};
|
|
10
|
+
providers?: Partial<Record<string, { apiKey?: string }>>;
|
|
13
11
|
};
|
|
14
|
-
envOverrides?: Partial<Record<
|
|
12
|
+
envOverrides?: Partial<Record<string, boolean>>;
|
|
15
13
|
};
|
|
16
14
|
|
|
17
15
|
export function isAiConfiguredForAsk(data: SettingsJsonForAi): boolean {
|
|
18
|
-
const
|
|
16
|
+
const provId = data.ai?.provider;
|
|
17
|
+
const provider: ProviderId = (provId && isProviderId(provId)) ? provId : 'anthropic';
|
|
19
18
|
const env = data.envOverrides ?? {};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
19
|
+
|
|
20
|
+
const k = data.ai?.providers?.[provider]?.apiKey;
|
|
21
|
+
if (typeof k === 'string' && k.length > 0) return true;
|
|
22
|
+
|
|
23
|
+
const envVar = getApiKeyEnvVar(provider);
|
|
24
|
+
if (envVar && env[envVar]) return true;
|
|
25
|
+
|
|
26
|
+
return false;
|
|
26
27
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { apiFetch } from '@/lib/api';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check if AI is available by inspecting the active provider's API key.
|
|
5
|
+
*/
|
|
6
|
+
export async function checkAiAvailable(): Promise<boolean> {
|
|
7
|
+
try {
|
|
8
|
+
const data = await apiFetch<{
|
|
9
|
+
ai?: { provider?: string; providers?: Record<string, { apiKey?: string }> };
|
|
10
|
+
}>('/api/settings');
|
|
11
|
+
const provider = data.ai?.provider ?? '';
|
|
12
|
+
const providers = data.ai?.providers ?? {};
|
|
13
|
+
const active = providers[provider as keyof typeof providers];
|
|
14
|
+
return !!(active?.apiKey);
|
|
15
|
+
} catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Trigger AI to generate README.md and INSTRUCTION.md for a space.
|
|
22
|
+
* Dispatches `mindos:ai-init` events consumed by SpaceInitToast.
|
|
23
|
+
* The call is fire-and-forget — returns immediately after starting the stream.
|
|
24
|
+
*/
|
|
25
|
+
export function triggerSpaceAiInit(
|
|
26
|
+
spaceName: string,
|
|
27
|
+
spacePath: string,
|
|
28
|
+
description = '',
|
|
29
|
+
): void {
|
|
30
|
+
const isZh = typeof document !== 'undefined' && document.documentElement.lang === 'zh';
|
|
31
|
+
const prompt = isZh
|
|
32
|
+
? `初始化新建的心智空间「${spaceName}」,路径为「${spacePath}/」。${description ? `描述:「${description}」。` : ''}两个文件均已存在模板,用 write_file 覆盖:\n1. 「${spacePath}/README.md」— 写入空间用途、结构概览、使用指南\n2. 「${spacePath}/INSTRUCTION.md」— 写入 AI Agent 在此空间中的行为规则和操作约定\n\n内容简洁实用,直接使用工具写入。`
|
|
33
|
+
: `Initialize the new Mind Space "${spaceName}" at "${spacePath}/". ${description ? `Description: "${description}". ` : ''}Both files already exist with templates — use write_file to overwrite:\n1. "${spacePath}/README.md" — write purpose, structure overview, usage guidelines\n2. "${spacePath}/INSTRUCTION.md" — write rules for AI agents operating in this space\n\nKeep content concise and actionable. Write files directly using tools.`;
|
|
34
|
+
|
|
35
|
+
window.dispatchEvent(new CustomEvent('mindos:ai-init', {
|
|
36
|
+
detail: { spaceName, spacePath, description, state: 'working' },
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
fetch('/api/ask', {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: { 'Content-Type': 'application/json' },
|
|
42
|
+
body: JSON.stringify({
|
|
43
|
+
messages: [{ role: 'user', content: prompt }],
|
|
44
|
+
currentFile: spacePath + '/INSTRUCTION.md',
|
|
45
|
+
}),
|
|
46
|
+
}).then(async (res) => {
|
|
47
|
+
if (!res.ok || !res.body) throw new Error(`HTTP ${res.status}`);
|
|
48
|
+
const reader = res.body.getReader();
|
|
49
|
+
try {
|
|
50
|
+
while (true) {
|
|
51
|
+
const { done } = await reader.read();
|
|
52
|
+
if (done) break;
|
|
53
|
+
}
|
|
54
|
+
} finally {
|
|
55
|
+
reader.releaseLock();
|
|
56
|
+
}
|
|
57
|
+
window.dispatchEvent(new CustomEvent('mindos:ai-init', {
|
|
58
|
+
detail: { spacePath, state: 'done' },
|
|
59
|
+
}));
|
|
60
|
+
window.dispatchEvent(new Event('mindos:files-changed'));
|
|
61
|
+
}).catch(() => {
|
|
62
|
+
window.dispatchEvent(new CustomEvent('mindos:ai-init', {
|
|
63
|
+
detail: { spacePath, state: 'error' },
|
|
64
|
+
}));
|
|
65
|
+
});
|
|
66
|
+
}
|