@geminilight/mindos 0.6.52 → 0.6.54
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 +27 -5
- package/README_zh.md +27 -5
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +17 -14
- 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 +18 -2
- package/_standalone/.next/routes-manifest.json +18 -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.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 +2 -2
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- 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 +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_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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +44 -16
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js +2 -2
- 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.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 +1 -0
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/file/route.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_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.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.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +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 +3 -3
- 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 +2 -2
- 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/inbox/history/page.js +2 -0
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
- 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 +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 +2 -0
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app-paths-manifest.json +17 -14
- package/_standalone/.next/server/chunks/2190.js +2 -2
- package/_standalone/.next/server/chunks/2364.js +2 -0
- package/_standalone/.next/server/chunks/357.js +1 -0
- package/_standalone/.next/server/chunks/530.js +219 -0
- package/_standalone/.next/server/chunks/6054.js +52 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +2 -2
- package/_standalone/.next/server/chunks/953.js +4 -4
- 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/next-font-manifest.js +1 -1
- package/_standalone/.next/server/next-font-manifest.json +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/2hrwFOLEOZhHQHfrIt-Dw/_buildManifest.js +1 -0
- package/_standalone/.next/static/chunks/1053-2874859f7caefa0f.js +29 -0
- package/_standalone/.next/static/chunks/178-105779afb62d36d9.js +1 -0
- package/_standalone/.next/static/chunks/1814.b08e9fb85dd3b13c.js +1 -0
- package/_standalone/.next/static/chunks/{1880-3ec02adc80531825.js → 1880-7abf971bcfd2389b.js} +2 -2
- package/_standalone/.next/static/chunks/{3160-83a7e0b94414b3ac.js → 2218-d54538000574ffef.js} +1 -1
- package/_standalone/.next/static/chunks/254-32719a9bea2e74f0.js +1 -0
- package/_standalone/.next/static/chunks/362.a77be2f206db7b19.js +1 -0
- package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
- package/_standalone/.next/static/chunks/7035-2af69391c7b1ad95.js +1 -0
- package/_standalone/.next/static/chunks/7322-d67d05067544864c.js +1 -0
- package/_standalone/.next/static/chunks/{6926-4af497b83952fa87.js → 8409-de5726a4a278d28f.js} +1 -1
- package/_standalone/.next/static/chunks/8753-ea9db680b0f70f25.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/_global-error/{page-b07a5983e85bc5e3.js → page-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-f006a70f6889eb56.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-bd522e428e3acb78.js +5 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/raw/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/changes/page-5a72144d1080a699.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/{page-88df174dd64b2c76.js → page-6710da1f581b2854.js} +2 -2
- package/_standalone/.next/static/chunks/app/echo/page-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/explore/{page-5eb2835e9e3ab4bb.js → page-d3d99308146c2240.js} +1 -1
- package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
- package/_standalone/.next/static/chunks/app/help/page-222df603080b5fab.js +1 -0
- package/_standalone/.next/static/chunks/app/inbox/history/page-07819cf95cb0805f.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-8eacff5813458190.js +186 -0
- package/_standalone/.next/static/chunks/app/loading-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/login/{page-24236460fa7c11d0.js → page-0eeef685052869a6.js} +1 -1
- package/_standalone/.next/static/chunks/app/page-5a6c9455efe8a0df.js +7 -0
- package/_standalone/.next/static/chunks/app/setup/{page-99f40e9337388cda.js → page-9a81fa4d82c6351b.js} +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-72d0ae3649ac4b6c.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fc04c2bd4f35bc6f.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-e8699f96589c0979.js +12 -0
- package/_standalone/.next/static/chunks/app/wiki/page-d492256a93f0b8bc.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/{webpack-bbd44cbc83dc0aa4.js → webpack-73c9da80c6c1ebfe.js} +1 -1
- package/_standalone/.next/static/css/66f8a81e4eda06d4.css +1 -0
- package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
- package/_standalone/.next/trace +64 -64
- package/_standalone/.next/types/routes.d.ts +5 -2
- package/_standalone/.next/types/validator.ts +27 -0
- package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +1 -0
- package/_standalone/__tests__/agents/agents-content-model.test.ts +13 -0
- package/_standalone/__tests__/core/inbox.test.ts +168 -0
- package/_standalone/__tests__/core/sync.test.ts +37 -0
- package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +1 -0
- package/_standalone/app/globals.css +29 -3
- package/_standalone/components/ActivityBar.tsx +9 -9
- package/_standalone/components/AskFab.tsx +1 -1
- package/_standalone/components/Backlinks.tsx +1 -1
- package/_standalone/components/Breadcrumb.tsx +1 -1
- package/_standalone/components/CreateSpaceModal.tsx +1 -1
- package/_standalone/components/EchoSpotlight.tsx +14 -10
- package/_standalone/components/Editor.tsx +1 -1
- package/_standalone/components/ExportModal.tsx +3 -3
- package/_standalone/components/FileTree.tsx +6 -11
- package/_standalone/components/GuideCard.tsx +1 -1
- package/_standalone/components/ImportModal.tsx +1 -2
- package/_standalone/components/KeyboardShortcuts.tsx +1 -1
- package/_standalone/components/MarkdownEditor.tsx +1 -1
- package/_standalone/components/OnboardingView.tsx +2 -2
- package/_standalone/components/OrganizeToast.tsx +3 -1
- package/_standalone/components/Panel.tsx +27 -6
- package/_standalone/components/Sidebar.tsx +1 -1
- package/_standalone/components/SidebarLayout.tsx +30 -7
- package/_standalone/components/SystemPulse.tsx +16 -16
- package/_standalone/components/agents/AgentsOverviewSection.tsx +18 -92
- package/_standalone/components/agents/AgentsPanelA2aTab.tsx +67 -66
- package/_standalone/components/agents/AgentsPrimitives.tsx +1 -1
- package/_standalone/components/agents/RecentActivityFeed.tsx +6 -6
- package/_standalone/components/agents/SkillDetailPopover.tsx +1 -1
- package/_standalone/components/ask/AskHeader.tsx +1 -1
- package/_standalone/components/echo/EchoHero.tsx +1 -1
- package/_standalone/components/echo/EchoPageSections.tsx +1 -1
- package/_standalone/components/explore/UseCaseCard.tsx +1 -1
- package/_standalone/components/home/InboxSection.tsx +262 -54
- package/_standalone/components/panels/AgentsPanel.tsx +4 -3
- package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +1 -1
- package/_standalone/components/panels/AgentsPanelHubNav.tsx +10 -6
- package/_standalone/components/panels/PanelHeader.tsx +1 -1
- package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
- package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
- package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
- package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
- package/_standalone/components/settings/McpTab.tsx +154 -28
- package/_standalone/components/settings/PluginsTab.tsx +1 -1
- package/_standalone/components/settings/SettingsContent.tsx +41 -7
- package/_standalone/components/settings/types.ts +7 -1
- package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +40 -11
- package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +1 -1
- package/_standalone/hooks/useAiOrganize.ts +14 -1
- package/_standalone/lib/organize-history.ts +6 -0
- package/_standalone/lib/stores/walkthrough-store.ts +33 -1
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/ask/route.ts +193 -3
- package/app/app/api/file/raw/route.ts +121 -0
- package/app/app/api/file/route.ts +21 -0
- package/app/app/api/inbox/route.ts +38 -2
- package/app/app/api/mcp/status/route.ts +1 -0
- package/app/app/api/restart/route.ts +26 -21
- package/app/app/api/settings/route.ts +13 -0
- package/app/app/api/setup/route.ts +11 -1
- package/app/app/api/sync/route.ts +36 -13
- package/app/app/api/update/route.ts +24 -10
- package/app/app/global-error.tsx +3 -3
- package/app/app/globals.css +29 -3
- package/app/app/inbox/history/page.tsx +250 -0
- package/app/app/layout.tsx +5 -11
- package/app/app/login/page.tsx +1 -1
- package/app/app/view/[...path]/ViewPageClient.tsx +15 -10
- package/app/app/view/[...path]/not-found.tsx +1 -1
- package/app/app/view/[...path]/page.tsx +32 -1
- package/app/app/wiki/page.tsx +58 -0
- package/app/components/ActivityBar.tsx +9 -9
- package/app/components/AskFab.tsx +1 -1
- package/app/components/Backlinks.tsx +1 -1
- package/app/components/Breadcrumb.tsx +1 -1
- package/app/components/CreateSpaceModal.tsx +1 -1
- package/app/components/DirView.tsx +2 -2
- package/app/components/EchoSpotlight.tsx +14 -10
- package/app/components/Editor.tsx +1 -1
- package/app/components/ExportModal.tsx +3 -3
- package/app/components/FileTree.tsx +6 -11
- package/app/components/GuideCard.tsx +1 -1
- package/app/components/HomeContent.tsx +50 -39
- package/app/components/ImportModal.tsx +1 -2
- package/app/components/KeyboardShortcuts.tsx +1 -1
- package/app/components/MarkdownEditor.tsx +1 -1
- package/app/components/OnboardingView.tsx +2 -2
- package/app/components/OrganizeToast.tsx +3 -1
- package/app/components/Panel.tsx +27 -6
- package/app/components/Sidebar.tsx +1 -1
- package/app/components/SidebarLayout.tsx +30 -7
- package/app/components/SystemPulse.tsx +16 -16
- package/app/components/TrashPageClient.tsx +8 -6
- package/app/components/UpdateOverlay.tsx +1 -1
- package/app/components/WikiHomeContent.tsx +273 -0
- package/app/components/agents/AgentDetailContent.tsx +5 -5
- package/app/components/agents/AgentsContentPage.tsx +14 -3
- package/app/components/agents/AgentsOverviewSection.tsx +18 -92
- package/app/components/agents/AgentsPanelA2aTab.tsx +67 -66
- package/app/components/agents/AgentsPrimitives.tsx +1 -1
- package/app/components/agents/RecentActivityFeed.tsx +6 -6
- package/app/components/agents/SkillDetailPopover.tsx +1 -1
- package/app/components/agents/agents-content-model.ts +4 -1
- package/app/components/ask/AskHeader.tsx +1 -1
- package/app/components/changes/ChangesContentPage.tsx +10 -6
- package/app/components/echo/EchoHero.tsx +1 -1
- package/app/components/echo/EchoPageSections.tsx +1 -1
- package/app/components/explore/ExploreContent.tsx +1 -1
- package/app/components/explore/UseCaseCard.tsx +1 -1
- package/app/components/help/HelpContent.tsx +3 -3
- package/app/components/home/InboxSection.tsx +262 -54
- package/app/components/panels/AgentsPanel.tsx +4 -3
- package/app/components/panels/AgentsPanelAgentDetail.tsx +1 -1
- package/app/components/panels/AgentsPanelHubNav.tsx +10 -6
- package/app/components/panels/PanelHeader.tsx +1 -1
- package/app/components/renderers/audio/AudioRenderer.tsx +79 -0
- package/app/components/renderers/audio/manifest.ts +17 -0
- package/app/components/renderers/image/ImageRenderer.tsx +203 -0
- package/app/components/renderers/image/manifest.ts +17 -0
- package/app/components/renderers/pdf/PdfRenderer.tsx +57 -0
- package/app/components/renderers/pdf/manifest.ts +15 -0
- package/app/components/renderers/video/VideoRenderer.tsx +91 -0
- package/app/components/renderers/video/manifest.ts +17 -0
- package/app/components/settings/McpTab.tsx +154 -28
- package/app/components/settings/PluginsTab.tsx +1 -1
- package/app/components/settings/SettingsContent.tsx +41 -7
- package/app/components/settings/types.ts +7 -1
- package/app/components/setup/index.tsx +4 -3
- package/app/components/walkthrough/WalkthroughOverlay.tsx +40 -11
- package/app/components/walkthrough/WalkthroughTooltip.tsx +1 -1
- package/app/hooks/useAiOrganize.ts +14 -1
- package/app/lib/agent/model.ts +2 -1
- package/app/lib/core/inbox.ts +131 -2
- package/app/lib/core/pdf-text.ts +28 -0
- package/app/lib/core/search-index.ts +29 -5
- package/app/lib/core/tree.ts +6 -1
- package/app/lib/fs.ts +31 -3
- package/app/lib/i18n/modules/ai-chat.ts +42 -0
- package/app/lib/i18n/modules/knowledge.ts +30 -0
- package/app/lib/i18n/modules/navigation.ts +4 -2
- package/app/lib/i18n/modules/panels.ts +22 -4
- package/app/lib/i18n/modules/settings.ts +26 -0
- package/app/lib/organize-history.ts +6 -0
- package/app/lib/renderers/index.ts +5 -1
- package/app/lib/settings.ts +60 -0
- package/app/lib/stores/walkthrough-store.ts +33 -1
- package/bin/commands/doctor.js +12 -6
- package/bin/commands/file.js +7 -4
- package/bin/commands/logs.js +39 -4
- package/bin/commands/onboard.js +1 -1
- package/bin/commands/open.js +6 -1
- package/bin/commands/space.js +7 -4
- package/bin/commands/update.js +31 -29
- package/bin/lib/build.js +19 -8
- package/bin/lib/clean-env.js +38 -0
- package/bin/lib/cli-shim.js +67 -2
- package/bin/lib/config.js +4 -5
- package/bin/lib/gateway.js +51 -27
- package/bin/lib/jsonc.js +7 -2
- package/bin/lib/mcp-agents.js +26 -5
- package/bin/lib/path-expand.js +6 -3
- package/bin/lib/port.js +5 -1
- package/bin/lib/stop.js +98 -41
- package/bin/lib/sync.js +1 -1
- package/package.json +1 -1
- package/scripts/setup.js +7 -5
- package/_standalone/.next/server/chunks/2673.js +0 -52
- package/_standalone/.next/server/chunks/5648.js +0 -2
- package/_standalone/.next/server/chunks/8408.js +0 -219
- package/_standalone/.next/static/IiTZbEzZo8l5MSUxlDwKp/_buildManifest.js +0 -1
- package/_standalone/.next/static/chunks/1053-c519cb347faa75e2.js +0 -29
- package/_standalone/.next/static/chunks/1814.72f7fe7c61e2b647.js +0 -1
- package/_standalone/.next/static/chunks/362.4c226d7887d5f696.js +0 -1
- package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +0 -1
- package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +0 -1
- package/_standalone/.next/static/chunks/7035-032641fb6f4e07b2.js +0 -1
- package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +0 -1
- package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-074d6aafc2606561.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-710d8c80fa86e93e.js +0 -5
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/page-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/global-error-e1ad0e18236ba26c.js +0 -1
- package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +0 -1
- package/_standalone/.next/static/chunks/app/layout-e706f9a963b177ba.js +0 -186
- package/_standalone/.next/static/chunks/app/loading-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/page-2595175820acfd65.js +0 -7
- package/_standalone/.next/static/chunks/app/trash/page-61c6210fac1e9710.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-798359c36f10ef8d.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/css/bbf51803eade6c50.css +0 -31
- package/_standalone/.next/static/css/ef1151f74f00d91a.css +0 -1
- package/_standalone/lib/i18n/generated/explore-i18n.generated.ts +0 -138
- package/_standalone/lib/i18n/index.ts +0 -38
- package/_standalone/lib/i18n/modules/ai-chat.ts +0 -237
- package/_standalone/lib/i18n/modules/common.ts +0 -71
- package/_standalone/lib/i18n/modules/features.ts +0 -153
- package/_standalone/lib/i18n/modules/knowledge.ts +0 -727
- package/_standalone/lib/i18n/modules/navigation.ts +0 -157
- package/_standalone/lib/i18n/modules/onboarding.ts +0 -445
- package/_standalone/lib/i18n/modules/panels.ts +0 -1255
- package/_standalone/lib/i18n/modules/settings.ts +0 -889
- package/_standalone/lib/i18n.ts +0 -3
- /package/_standalone/.next/static/{IiTZbEzZo8l5MSUxlDwKp → 2hrwFOLEOZhHQHfrIt-Dw}/_ssgManifest.js +0 -0
|
@@ -438,7 +438,6 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
438
438
|
<button
|
|
439
439
|
type="button"
|
|
440
440
|
onClick={handleSingleClick}
|
|
441
|
-
onDoubleClick={handleDoubleClick}
|
|
442
441
|
draggable
|
|
443
442
|
onDragStart={(e) => {
|
|
444
443
|
e.dataTransfer.setData('text/mindos-path', node.path);
|
|
@@ -448,7 +447,7 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
448
447
|
className={`
|
|
449
448
|
flex-1 flex items-center gap-1.5 px-1 py-1 rounded text-left min-w-0 pr-16
|
|
450
449
|
text-sm transition-colors duration-100
|
|
451
|
-
hover:bg-muted cursor-
|
|
450
|
+
hover:bg-muted cursor-default
|
|
452
451
|
${isActive ? 'text-foreground' : 'text-muted-foreground hover:text-foreground'}
|
|
453
452
|
`}
|
|
454
453
|
>
|
|
@@ -461,9 +460,6 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
461
460
|
: <Folder size={14} className="text-yellow-400 shrink-0" />
|
|
462
461
|
}
|
|
463
462
|
<span className="truncate leading-5" suppressHydrationWarning>{node.name}</span>
|
|
464
|
-
<span className="ml-auto text-xs text-muted-foreground/30 group-hover/dir:text-muted-foreground/60 transition-colors shrink-0 hidden group-hover/dir:inline-flex items-center gap-1">
|
|
465
|
-
<Pencil size={10} />
|
|
466
|
-
</span>
|
|
467
463
|
{isSpace && !open && (
|
|
468
464
|
<span className="ml-auto text-xs text-muted-foreground shrink-0 tabular-nums pr-1">{contentCount}</span>
|
|
469
465
|
)}
|
|
@@ -657,14 +653,13 @@ function FileNodeItem({ node, depth, currentPath, onNavigate }: {
|
|
|
657
653
|
<div className="relative group/file">
|
|
658
654
|
<button
|
|
659
655
|
onClick={handleClick}
|
|
660
|
-
onDoubleClick={isProtected ? undefined : startRename}
|
|
661
656
|
onContextMenu={handleContextMenu}
|
|
662
657
|
draggable
|
|
663
658
|
onDragStart={handleDragStart}
|
|
664
659
|
data-filepath={node.path}
|
|
665
660
|
className={`
|
|
666
661
|
w-full flex items-center gap-1.5 px-2 py-1 rounded text-left
|
|
667
|
-
text-sm transition-colors duration-100 cursor-
|
|
662
|
+
text-sm transition-colors duration-100 cursor-default pr-16
|
|
668
663
|
${isActive
|
|
669
664
|
? 'bg-accent text-foreground'
|
|
670
665
|
: 'hover:bg-muted text-muted-foreground hover:text-foreground'
|
|
@@ -674,9 +669,6 @@ function FileNodeItem({ node, depth, currentPath, onNavigate }: {
|
|
|
674
669
|
>
|
|
675
670
|
{getIcon(node)}
|
|
676
671
|
<span className="truncate leading-5" suppressHydrationWarning>{node.name}</span>
|
|
677
|
-
<span className="ml-auto text-xs text-muted-foreground/30 group-hover/file:text-muted-foreground/60 transition-colors shrink-0 hidden group-hover/file:inline-flex items-center gap-1">
|
|
678
|
-
<Pencil size={10} />
|
|
679
|
-
</span>
|
|
680
672
|
{pinned && <Star size={10} className="shrink-0 fill-[var(--amber)] text-[var(--amber)] opacity-60" />}
|
|
681
673
|
</button>
|
|
682
674
|
<div className="absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/file:flex items-center gap-0.5">
|
|
@@ -759,7 +751,10 @@ export default function FileTree({ nodes, depth = 0, onNavigate, maxOpenDepth, p
|
|
|
759
751
|
const showHidden = useShowHiddenFiles();
|
|
760
752
|
|
|
761
753
|
const isRoot = depth === 0;
|
|
762
|
-
const
|
|
754
|
+
const filtered = showHidden ? nodes : filterHiddenNodes(nodes, isRoot);
|
|
755
|
+
const visibleNodes = isRoot
|
|
756
|
+
? filtered.filter(n => !(n.type === 'directory' && n.name === 'Inbox'))
|
|
757
|
+
: filtered;
|
|
763
758
|
|
|
764
759
|
useEffect(() => {
|
|
765
760
|
if (!currentPath || depth !== 0) return;
|
|
@@ -232,7 +232,7 @@ export default function GuideCard() {
|
|
|
232
232
|
{/* Header */}
|
|
233
233
|
<div className="flex items-center gap-3 px-5 pt-4 pb-2">
|
|
234
234
|
<Sparkles size={16} className="text-[var(--amber)]" />
|
|
235
|
-
<span className="text-sm font-semibold flex-1
|
|
235
|
+
<span className="text-sm font-semibold flex-1 text-foreground">
|
|
236
236
|
{g.title}
|
|
237
237
|
</span>
|
|
238
238
|
<button onClick={handleDismiss} className="p-1 rounded hover:bg-muted transition-colors text-muted-foreground">
|
|
@@ -114,8 +114,7 @@ export default function ImportModal({ open, onClose, defaultSpace, initialFiles,
|
|
|
114
114
|
const prompt = attachments.length === 1
|
|
115
115
|
? (t.fileImport.digestPromptSingle as (name: string, space?: string) => string)(attachments[0].name, space)
|
|
116
116
|
: (t.fileImport.digestPromptMulti as (n: number, space?: string) => string)(attachments.length, space);
|
|
117
|
-
|
|
118
|
-
aiOrganize.start(attachments, prompt);
|
|
117
|
+
aiOrganize.start(attachments, prompt, 'import-modal');
|
|
119
118
|
onClose();
|
|
120
119
|
im.reset();
|
|
121
120
|
}
|
|
@@ -54,7 +54,7 @@ export default function KeyboardShortcuts() {
|
|
|
54
54
|
>
|
|
55
55
|
{/* Header */}
|
|
56
56
|
<div className="flex items-center justify-between px-5 py-3.5 border-b border-border">
|
|
57
|
-
<span className="text-sm font-medium
|
|
57
|
+
<span className="text-sm font-medium text-foreground">{s.title}</span>
|
|
58
58
|
<button
|
|
59
59
|
onClick={() => setOpen(false)}
|
|
60
60
|
className="p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors"
|
|
@@ -35,7 +35,7 @@ export default function MarkdownEditor({ value, onChange, viewMode, onViewModeCh
|
|
|
35
35
|
<button
|
|
36
36
|
key={m.id}
|
|
37
37
|
onClick={() => onViewModeChange(m.id)}
|
|
38
|
-
className={`flex items-center gap-1.5 px-2.5 py-1.5 rounded text-xs font-medium transition-colors
|
|
38
|
+
className={`flex items-center gap-1.5 px-2.5 py-1.5 rounded text-xs font-medium transition-colors ${
|
|
39
39
|
viewMode === m.id
|
|
40
40
|
? 'bg-card text-foreground shadow-sm'
|
|
41
41
|
: 'text-muted-foreground hover:text-foreground'
|
|
@@ -64,7 +64,7 @@ export default function OnboardingView() {
|
|
|
64
64
|
<div className="text-center mb-10">
|
|
65
65
|
<div className="inline-flex items-center gap-2 mb-4">
|
|
66
66
|
<Sparkles size={18} className="text-[var(--amber)]" />
|
|
67
|
-
<h1 className="text-2xl font-
|
|
67
|
+
<h1 className="text-2xl font-brand text-foreground">
|
|
68
68
|
MindOS
|
|
69
69
|
</h1>
|
|
70
70
|
</div>
|
|
@@ -131,7 +131,7 @@ export default function OnboardingView() {
|
|
|
131
131
|
</div>
|
|
132
132
|
|
|
133
133
|
{/* Import hint */}
|
|
134
|
-
<p className="text-center text-xs leading-relaxed max-w-sm mx-auto
|
|
134
|
+
<p className="text-center text-xs leading-relaxed max-w-sm mx-auto text-muted-foreground/60">
|
|
135
135
|
{ob.importHint}
|
|
136
136
|
</p>
|
|
137
137
|
<p className="text-center mt-2">
|
|
@@ -119,10 +119,12 @@ export default function OrganizeToast({
|
|
|
119
119
|
undone: c.undone,
|
|
120
120
|
})),
|
|
121
121
|
status: 'completed',
|
|
122
|
+
source: aiOrganize.source,
|
|
123
|
+
durationMs: aiOrganize.durationMs,
|
|
122
124
|
});
|
|
123
125
|
onHistoryUpdate?.();
|
|
124
126
|
}
|
|
125
|
-
}, [isDone, aiOrganize.changes, aiOrganize.sourceFileNames, onHistoryUpdate]);
|
|
127
|
+
}, [isDone, aiOrganize.changes, aiOrganize.sourceFileNames, aiOrganize.source, aiOrganize.durationMs, onHistoryUpdate]);
|
|
126
128
|
|
|
127
129
|
// Auto-dismiss timer (3 min after done, reset on user interaction)
|
|
128
130
|
const resetTimer = useCallback(() => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useMemo, useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { useRouter } from 'next/navigation';
|
|
5
|
-
import { ChevronsDownUp, ChevronsUpDown, Plus, Import, FileText, Layers, MoreHorizontal, Eye, EyeOff, Trash2 } from 'lucide-react';
|
|
5
|
+
import { ChevronsDownUp, ChevronsUpDown, Plus, Import, FileText, Layers, MoreHorizontal, Eye, EyeOff, Trash2, Inbox } from 'lucide-react';
|
|
6
6
|
import type { PanelId } from './ActivityBar';
|
|
7
7
|
import type { FileNode } from '@/lib/types';
|
|
8
8
|
import FileTree, { setShowHiddenFiles, useShowHiddenFiles } from './FileTree';
|
|
@@ -128,14 +128,25 @@ export default function Panel({
|
|
|
128
128
|
};
|
|
129
129
|
}, [morePopover]);
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
const [inboxCount, setInboxCount] = useState(0);
|
|
132
|
+
|
|
132
133
|
useEffect(() => {
|
|
133
|
-
const
|
|
134
|
+
const fetchTrash = () => {
|
|
134
135
|
listTrashAction().then(items => setTrashCount(items.length)).catch(() => {});
|
|
135
136
|
};
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
const fetchInbox = () => {
|
|
138
|
+
fetch('/api/inbox').then(r => r.json()).then(d => {
|
|
139
|
+
if (Array.isArray(d.files)) setInboxCount(d.files.length);
|
|
140
|
+
}).catch(() => {});
|
|
141
|
+
};
|
|
142
|
+
fetchTrash();
|
|
143
|
+
fetchInbox();
|
|
144
|
+
window.addEventListener('mindos:files-changed', fetchTrash);
|
|
145
|
+
window.addEventListener('mindos:inbox-updated', fetchInbox);
|
|
146
|
+
return () => {
|
|
147
|
+
window.removeEventListener('mindos:files-changed', fetchTrash);
|
|
148
|
+
window.removeEventListener('mindos:inbox-updated', fetchInbox);
|
|
149
|
+
};
|
|
139
150
|
}, []);
|
|
140
151
|
|
|
141
152
|
// Double-click hint: show only until user has used it once.
|
|
@@ -280,6 +291,16 @@ export default function Panel({
|
|
|
280
291
|
{showHidden && <span className="text-[var(--amber)] text-xs">✓</span>}
|
|
281
292
|
</button>
|
|
282
293
|
<div className="my-1 border-t border-border/50" />
|
|
294
|
+
<button
|
|
295
|
+
className="w-full flex items-center gap-2 px-3 py-1.5 text-sm text-foreground hover:bg-muted transition-colors text-left"
|
|
296
|
+
onClick={() => { setMorePopover(false); router.push('/view/Inbox/'); }}
|
|
297
|
+
>
|
|
298
|
+
<Inbox size={14} className="shrink-0 text-[var(--amber)]" />
|
|
299
|
+
<span className="flex-1">{t.sidebar.capture}</span>
|
|
300
|
+
{inboxCount > 0 && (
|
|
301
|
+
<span className="text-xs font-medium text-[var(--amber)] tabular-nums">{inboxCount}</span>
|
|
302
|
+
)}
|
|
303
|
+
</button>
|
|
283
304
|
<button
|
|
284
305
|
className="w-full flex items-center gap-2 px-3 py-1.5 text-sm text-foreground hover:bg-muted transition-colors text-left"
|
|
285
306
|
onClick={() => { setMorePopover(false); router.push('/trash'); }}
|
|
@@ -94,7 +94,7 @@ export default function Sidebar({ fileTree, collapsed = false, onCollapse, onExp
|
|
|
94
94
|
<div className="flex items-center justify-between px-4 py-4 border-b border-border shrink-0">
|
|
95
95
|
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
|
96
96
|
<Logo id="desktop" />
|
|
97
|
-
<span className="
|
|
97
|
+
<span className="text-foreground text-sm font-brand">MindOS</span>
|
|
98
98
|
</Link>
|
|
99
99
|
{/* Mobile close */}
|
|
100
100
|
<button onClick={() => setMobileOpen(false)} className="md:hidden p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors">
|
|
@@ -184,12 +184,14 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
184
184
|
}, [handleOpenImport]);
|
|
185
185
|
|
|
186
186
|
// ── Inbox: batch AI organize from InboxSection ──
|
|
187
|
+
const organizedFileNamesRef = useRef<string[]>([]);
|
|
187
188
|
useEffect(() => {
|
|
188
189
|
const handler = (e: Event) => {
|
|
189
190
|
const files = (e as CustomEvent).detail?.files as Array<{ name: string; path: string }> | undefined;
|
|
190
191
|
if (!files || files.length === 0 || aiOrganize.phase === 'organizing') return;
|
|
191
192
|
|
|
192
193
|
const prompt = t.inbox.organizePrompt(files.map(f => f.name));
|
|
194
|
+
organizedFileNamesRef.current = files.map(f => f.name);
|
|
193
195
|
|
|
194
196
|
(async () => {
|
|
195
197
|
const attachments: Array<{ name: string; content: string }> = [];
|
|
@@ -203,7 +205,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
203
205
|
} catch { /* skip unreadable files */ }
|
|
204
206
|
}
|
|
205
207
|
if (attachments.length > 0) {
|
|
206
|
-
aiOrganize.start(attachments, prompt);
|
|
208
|
+
aiOrganize.start(attachments, prompt, 'inbox-organize');
|
|
207
209
|
} else {
|
|
208
210
|
toast.error(t.inbox.organizeFailed, 4000);
|
|
209
211
|
window.dispatchEvent(new Event('mindos:organize-done'));
|
|
@@ -214,12 +216,28 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
214
216
|
return () => window.removeEventListener('mindos:inbox-organize', handler);
|
|
215
217
|
}, [aiOrganize, t]);
|
|
216
218
|
|
|
217
|
-
// Notify InboxSection when organize finishes
|
|
219
|
+
// Notify InboxSection when organize finishes + clean up source inbox files
|
|
218
220
|
useEffect(() => {
|
|
219
|
-
if (aiOrganize.phase === 'done'
|
|
221
|
+
if (aiOrganize.phase === 'done') {
|
|
222
|
+
const hasSuccessfulChanges = aiOrganize.changes.some(c => c.ok);
|
|
223
|
+
const names = organizedFileNamesRef.current;
|
|
224
|
+
if (hasSuccessfulChanges && names.length > 0) {
|
|
225
|
+
fetch('/api/inbox', {
|
|
226
|
+
method: 'DELETE',
|
|
227
|
+
headers: { 'Content-Type': 'application/json' },
|
|
228
|
+
body: JSON.stringify({ names }),
|
|
229
|
+
})
|
|
230
|
+
.then(() => {
|
|
231
|
+
window.dispatchEvent(new Event('mindos:inbox-updated'));
|
|
232
|
+
})
|
|
233
|
+
.catch(() => { /* best-effort cleanup */ });
|
|
234
|
+
organizedFileNamesRef.current = [];
|
|
235
|
+
}
|
|
236
|
+
window.dispatchEvent(new Event('mindos:organize-done'));
|
|
237
|
+
} else if (aiOrganize.phase === 'error') {
|
|
220
238
|
window.dispatchEvent(new Event('mindos:organize-done'));
|
|
221
239
|
}
|
|
222
|
-
}, [aiOrganize.phase]);
|
|
240
|
+
}, [aiOrganize.phase, aiOrganize.changes]);
|
|
223
241
|
|
|
224
242
|
// Listen for cross-component "open panel" events (e.g. GuideCard → Agents)
|
|
225
243
|
useEffect(() => {
|
|
@@ -381,7 +399,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
381
399
|
{/* Skip link */}
|
|
382
400
|
<a
|
|
383
401
|
href="#main-content"
|
|
384
|
-
className="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[60] focus:px-4 focus:py-2 focus:rounded-lg focus:text-sm focus:font-medium
|
|
402
|
+
className="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[60] focus:px-4 focus:py-2 focus:rounded-lg focus:text-sm focus:font-medium bg-[var(--amber)] text-[var(--amber-foreground)]"
|
|
385
403
|
>
|
|
386
404
|
Skip to main content
|
|
387
405
|
</a>
|
|
@@ -406,6 +424,11 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
406
424
|
lp.setActivePanel(wasActive ? null : 'discover');
|
|
407
425
|
if (!wasActive) router.push('/explore');
|
|
408
426
|
}}
|
|
427
|
+
onSpacesClick={() => {
|
|
428
|
+
const wasActive = lp.activePanel === 'files';
|
|
429
|
+
lp.setActivePanel(wasActive ? null : 'files');
|
|
430
|
+
if (!wasActive) router.push('/wiki');
|
|
431
|
+
}}
|
|
409
432
|
syncStatus={syncStatus}
|
|
410
433
|
expanded={lp.railExpanded}
|
|
411
434
|
onExpandedChange={handleExpandedChange}
|
|
@@ -509,7 +532,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
509
532
|
</button>
|
|
510
533
|
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
|
511
534
|
<Logo id="mobile" />
|
|
512
|
-
<span className="
|
|
535
|
+
<span className="text-foreground text-sm font-brand">MindOS</span>
|
|
513
536
|
</Link>
|
|
514
537
|
<div className="flex items-center gap-0.5">
|
|
515
538
|
<button onClick={openSyncSettings} className="p-3 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors active:bg-accent flex items-center justify-center" aria-label="Sync status">
|
|
@@ -529,7 +552,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
|
|
|
529
552
|
<div className="flex items-center justify-between px-4 py-4 border-b border-border shrink-0">
|
|
530
553
|
<Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
|
|
531
554
|
<Logo id="drawer" />
|
|
532
|
-
<span className="
|
|
555
|
+
<span className="text-foreground text-sm font-brand">MindOS</span>
|
|
533
556
|
</Link>
|
|
534
557
|
<button onClick={() => setMobileOpen(false)} className="p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors">
|
|
535
558
|
<X size={16} />
|
|
@@ -78,14 +78,14 @@ export default function SystemPulse() {
|
|
|
78
78
|
return (
|
|
79
79
|
<section className="mb-10">
|
|
80
80
|
{/* Use same title style as other sections */}
|
|
81
|
-
<div className="flex items-center gap-2 mb-
|
|
82
|
-
<
|
|
83
|
-
<h2 className="text-
|
|
81
|
+
<div className="flex items-center gap-2.5 mb-5">
|
|
82
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
|
|
83
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
|
|
84
84
|
</div>
|
|
85
|
-
<div className="rounded-xl border border-
|
|
85
|
+
<div className="rounded-xl border border-border/40 bg-card/30 p-5">
|
|
86
86
|
<div className="flex items-center gap-4">
|
|
87
|
-
<div className="w-
|
|
88
|
-
<Bot size={
|
|
87
|
+
<div className="w-10 h-10 rounded-full bg-[var(--amber-subtle)] flex items-center justify-center shrink-0">
|
|
88
|
+
<Bot size={18} className="text-[var(--amber)]" />
|
|
89
89
|
</div>
|
|
90
90
|
<div className="flex-1 min-w-0">
|
|
91
91
|
<p className="text-sm font-medium text-foreground">{pulse.connectTitle}</p>
|
|
@@ -114,10 +114,10 @@ export default function SystemPulse() {
|
|
|
114
114
|
onClick={toggleCollapsed}
|
|
115
115
|
className="w-full flex items-center gap-2 group cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded"
|
|
116
116
|
>
|
|
117
|
-
<
|
|
118
|
-
<h2 className="text-
|
|
117
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
|
|
118
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
|
|
119
119
|
{totalConnected > 0 && (
|
|
120
|
-
<span className="text-
|
|
120
|
+
<span className="inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[10px] font-semibold rounded-full bg-muted text-muted-foreground tabular-nums">{totalConnected}</span>
|
|
121
121
|
)}
|
|
122
122
|
{/* Inline status */}
|
|
123
123
|
<div className="flex items-center gap-2 ml-1">
|
|
@@ -144,11 +144,11 @@ export default function SystemPulse() {
|
|
|
144
144
|
return (
|
|
145
145
|
<section className="mb-10">
|
|
146
146
|
{/* Section title — same pattern as Spaces / Recently Edited */}
|
|
147
|
-
<div className="flex items-center gap-2 mb-
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
<div className="flex items-center gap-2.5 mb-5">
|
|
148
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
|
|
149
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
|
|
150
|
+
{totalConnected > 0 && (
|
|
151
|
+
<span className="inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[10px] font-semibold rounded-full bg-muted text-muted-foreground tabular-nums">{totalConnected}</span>
|
|
152
152
|
)}
|
|
153
153
|
{mcpRunning && (
|
|
154
154
|
<span className="inline-flex items-center gap-1 text-xs text-muted-foreground/50 ml-1">
|
|
@@ -159,7 +159,7 @@ export default function SystemPulse() {
|
|
|
159
159
|
<div className="flex items-center gap-2 ml-auto">
|
|
160
160
|
<Link
|
|
161
161
|
href="/agents"
|
|
162
|
-
className="text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity
|
|
162
|
+
className="text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity"
|
|
163
163
|
>
|
|
164
164
|
{pulse.manage}
|
|
165
165
|
</Link>
|
|
@@ -181,7 +181,7 @@ export default function SystemPulse() {
|
|
|
181
181
|
<Link
|
|
182
182
|
key={agent.key}
|
|
183
183
|
href={`/agents/${encodeURIComponent(agent.key)}`}
|
|
184
|
-
className="flex items-center gap-3 px-3.5 py-3 rounded-xl border border-border hover:border-[var(--amber)]/30 hover:shadow-
|
|
184
|
+
className="flex items-center gap-3 px-3.5 py-3 rounded-xl border border-border hover:border-[var(--amber)]/30 hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 hover:bg-muted/30 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
185
185
|
>
|
|
186
186
|
{/* Avatar */}
|
|
187
187
|
<div className="relative w-8 h-8 rounded-lg bg-[var(--amber)]/8 text-[var(--amber-text)] ring-1 ring-[var(--amber)]/15 flex items-center justify-center text-xs font-semibold font-display shrink-0">
|
|
@@ -4,7 +4,6 @@ import Link from 'next/link';
|
|
|
4
4
|
import { useMemo, useState } from 'react';
|
|
5
5
|
import {
|
|
6
6
|
AlertTriangle,
|
|
7
|
-
ArrowRight,
|
|
8
7
|
Cable,
|
|
9
8
|
ChevronDown,
|
|
10
9
|
Globe,
|
|
@@ -62,6 +61,7 @@ export default function AgentsOverviewSection({
|
|
|
62
61
|
mcpRunning,
|
|
63
62
|
mcpPort,
|
|
64
63
|
mcpToolCount,
|
|
64
|
+
mcpEnabled = true,
|
|
65
65
|
enabledSkillCount,
|
|
66
66
|
allAgents,
|
|
67
67
|
pulseCopy,
|
|
@@ -73,12 +73,13 @@ export default function AgentsOverviewSection({
|
|
|
73
73
|
mcpRunning: boolean;
|
|
74
74
|
mcpPort: number | null;
|
|
75
75
|
mcpToolCount: number;
|
|
76
|
+
mcpEnabled?: boolean;
|
|
76
77
|
enabledSkillCount: number;
|
|
77
78
|
allAgents: AgentInfo[];
|
|
78
79
|
pulseCopy: PulseCopy;
|
|
79
80
|
a2aCount?: number;
|
|
80
81
|
}) {
|
|
81
|
-
const allHealthy = riskQueue.length === 0 && mcpRunning;
|
|
82
|
+
const allHealthy = riskQueue.length === 0 && (!mcpEnabled || mcpRunning);
|
|
82
83
|
const [riskOpen, setRiskOpen] = useState(false);
|
|
83
84
|
|
|
84
85
|
const sortedAgents = useMemo(
|
|
@@ -113,26 +114,20 @@ export default function AgentsOverviewSection({
|
|
|
113
114
|
value={buckets.detected.length}
|
|
114
115
|
tone={buckets.detected.length > 0 ? 'warn' : 'muted'}
|
|
115
116
|
/>
|
|
116
|
-
{buckets.notFound.length > 0 && (
|
|
117
|
-
<StatCell
|
|
118
|
-
icon={<AlertTriangle size={14} aria-hidden="true" />}
|
|
119
|
-
label={pulseCopy.notFound}
|
|
120
|
-
value={buckets.notFound.length}
|
|
121
|
-
tone="muted"
|
|
122
|
-
/>
|
|
123
|
-
)}
|
|
124
117
|
<StatCell
|
|
125
118
|
icon={<Zap size={14} aria-hidden="true" />}
|
|
126
119
|
label={pulseCopy.enabledSkills}
|
|
127
120
|
value={enabledSkillCount}
|
|
128
121
|
tone="ok"
|
|
129
122
|
/>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
123
|
+
{mcpEnabled && (
|
|
124
|
+
<StatCell
|
|
125
|
+
icon={<Server size={14} aria-hidden="true" />}
|
|
126
|
+
label={copy.pulseMcp as string}
|
|
127
|
+
value={mcpRunning ? `:${mcpPort}` : '—'}
|
|
128
|
+
tone={mcpRunning ? 'ok' : 'warn'}
|
|
129
|
+
/>
|
|
130
|
+
)}
|
|
136
131
|
{a2aCount != null && (
|
|
137
132
|
<StatCell
|
|
138
133
|
icon={<Globe size={14} aria-hidden="true" />}
|
|
@@ -144,26 +139,6 @@ export default function AgentsOverviewSection({
|
|
|
144
139
|
</div>
|
|
145
140
|
</section>
|
|
146
141
|
|
|
147
|
-
{/* ═══════════ QUICK NAVIGATION ═══════════ */}
|
|
148
|
-
<nav className="grid grid-cols-1 md:grid-cols-2 gap-3" aria-label="Quick navigation">
|
|
149
|
-
<QuickNavCard
|
|
150
|
-
href="/agents?tab=mcp"
|
|
151
|
-
icon={<Server size={18} aria-hidden="true" />}
|
|
152
|
-
title="MCP"
|
|
153
|
-
stat={mcpRunning ? copy.toolsUnit(mcpToolCount) : copy.mcpOffline}
|
|
154
|
-
statTone={mcpRunning ? 'ok' : 'warn'}
|
|
155
|
-
description={copy.nextActionHint as string}
|
|
156
|
-
/>
|
|
157
|
-
<QuickNavCard
|
|
158
|
-
href="/agents?tab=skills"
|
|
159
|
-
icon={<Zap size={18} aria-hidden="true" />}
|
|
160
|
-
title="Skills"
|
|
161
|
-
stat={copy.enabledUnit(enabledSkillCount)}
|
|
162
|
-
statTone="ok"
|
|
163
|
-
description={`${pulseCopy.enabledSkills}: ${enabledSkillCount}`}
|
|
164
|
-
/>
|
|
165
|
-
</nav>
|
|
166
|
-
|
|
167
142
|
{/* ═══════════ RISK CAPSULE ═══════════ */}
|
|
168
143
|
{riskQueue.length > 0 && (
|
|
169
144
|
<div>
|
|
@@ -241,13 +216,13 @@ export default function AgentsOverviewSection({
|
|
|
241
216
|
</div>
|
|
242
217
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
|
|
243
218
|
{sortedAgents.map((agent, i) => (
|
|
244
|
-
<AgentCard key={agent.key} agent={agent} copy={copy} index={i} />
|
|
219
|
+
<AgentCard key={agent.key} agent={agent} copy={copy} index={i} mcpEnabled={mcpEnabled} />
|
|
245
220
|
))}
|
|
246
221
|
</div>
|
|
247
222
|
</section>
|
|
248
223
|
) : (
|
|
249
224
|
<section
|
|
250
|
-
className="rounded-xl border border-
|
|
225
|
+
className="rounded-xl border border-border/40 bg-card/30 p-12 text-center"
|
|
251
226
|
aria-label={copy.usagePulse}
|
|
252
227
|
>
|
|
253
228
|
<div className="w-14 h-14 rounded-2xl bg-muted/40 flex items-center justify-center mx-auto mb-4">
|
|
@@ -316,69 +291,18 @@ function StatCell({
|
|
|
316
291
|
);
|
|
317
292
|
}
|
|
318
293
|
|
|
319
|
-
/* ────────── Quick Nav Card ────────── */
|
|
320
|
-
|
|
321
|
-
function QuickNavCard({
|
|
322
|
-
href,
|
|
323
|
-
icon,
|
|
324
|
-
title,
|
|
325
|
-
stat,
|
|
326
|
-
statTone,
|
|
327
|
-
description,
|
|
328
|
-
}: {
|
|
329
|
-
href: string;
|
|
330
|
-
icon: React.ReactNode;
|
|
331
|
-
title: string;
|
|
332
|
-
stat: string;
|
|
333
|
-
statTone: 'ok' | 'warn';
|
|
334
|
-
description: string;
|
|
335
|
-
}) {
|
|
336
|
-
return (
|
|
337
|
-
<Link
|
|
338
|
-
href={href}
|
|
339
|
-
className="group rounded-xl border border-border bg-card p-4 flex items-start gap-3.5
|
|
340
|
-
hover:border-[var(--amber)]/30 hover:shadow-[0_2px_12px_rgba(0,0,0,0.04)]
|
|
341
|
-
active:scale-[0.99]
|
|
342
|
-
transition-all duration-200
|
|
343
|
-
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
344
|
-
>
|
|
345
|
-
<div className="shrink-0 w-10 h-10 rounded-xl bg-muted/50 flex items-center justify-center text-muted-foreground/70 group-hover:text-[var(--amber)] group-hover:bg-[var(--amber)]/[0.08] transition-all duration-200">
|
|
346
|
-
{icon}
|
|
347
|
-
</div>
|
|
348
|
-
<div className="flex-1 min-w-0">
|
|
349
|
-
<div className="flex items-center gap-2 mb-1">
|
|
350
|
-
<span className="text-sm font-semibold text-foreground">{title}</span>
|
|
351
|
-
<span
|
|
352
|
-
className={`text-2xs px-2 py-0.5 rounded-full font-medium select-none ${
|
|
353
|
-
statTone === 'ok'
|
|
354
|
-
? 'bg-muted text-muted-foreground'
|
|
355
|
-
: 'bg-[var(--amber-dim)] text-[var(--amber-text)]'
|
|
356
|
-
}`}
|
|
357
|
-
>
|
|
358
|
-
{stat}
|
|
359
|
-
</span>
|
|
360
|
-
</div>
|
|
361
|
-
<p className="text-xs text-muted-foreground/70 leading-relaxed line-clamp-2">{description}</p>
|
|
362
|
-
</div>
|
|
363
|
-
<ArrowRight
|
|
364
|
-
size={14}
|
|
365
|
-
className="shrink-0 mt-1.5 text-muted-foreground/20 group-hover:text-[var(--amber)] group-hover:translate-x-0.5 transition-all duration-200"
|
|
366
|
-
aria-hidden="true"
|
|
367
|
-
/>
|
|
368
|
-
</Link>
|
|
369
|
-
);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
294
|
/* ────────── Agent Card ────────── */
|
|
373
295
|
|
|
374
296
|
function AgentCard({
|
|
375
297
|
agent,
|
|
376
298
|
copy,
|
|
377
299
|
index,
|
|
300
|
+
mcpEnabled = true,
|
|
378
301
|
}: {
|
|
379
302
|
agent: AgentInfo;
|
|
380
303
|
copy: OverviewCopy;
|
|
381
304
|
index: number;
|
|
305
|
+
mcpEnabled?: boolean;
|
|
382
306
|
}) {
|
|
383
307
|
const status = resolveAgentStatus(agent);
|
|
384
308
|
const mcpCount = agent.configuredMcpServerCount ?? agent.configuredMcpServers?.length ?? 0;
|
|
@@ -421,7 +345,9 @@ function AgentCard({
|
|
|
421
345
|
|
|
422
346
|
{/* Metrics row */}
|
|
423
347
|
<div className="flex items-center gap-1 pt-2.5 border-t border-border/40">
|
|
424
|
-
|
|
348
|
+
{mcpEnabled && (
|
|
349
|
+
<MetricChip icon={<Server size={11} aria-hidden="true" />} value={mcpCount} label={copy.colMcp as string} />
|
|
350
|
+
)}
|
|
425
351
|
<MetricChip icon={<Zap size={11} aria-hidden="true" />} value={skillCount} label={copy.colSkills as string} />
|
|
426
352
|
<span className="flex-1 min-w-[4px]" />
|
|
427
353
|
{hasRuntime && (
|