@geminilight/mindos 0.6.39 → 0.6.40
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 +18 -17
- 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 -6
- 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_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 +18 -17
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/1750.js +1 -0
- package/_standalone/.next/server/chunks/1955.js +11 -0
- package/_standalone/.next/server/chunks/3680.js +1 -0
- package/_standalone/.next/server/chunks/4497.js +219 -0
- package/_standalone/.next/server/chunks/5560.js +2 -0
- package/_standalone/.next/server/chunks/6365.js +52 -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/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/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/chunks/1053-0adaccc98a752a58.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/{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.4bcd01a4db78b894.js → 3637.f9a42cca59fd5bb5.js} +1 -1
- package/_standalone/.next/static/chunks/4033.6666700547b20141.js +1 -0
- package/_standalone/.next/static/chunks/4563-c2afaeacb241d1d0.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/6090-c98268ca726a68d3.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/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/{1384-55276d40a9da4e88.js → 8663-de911d2d395622be.js} +2 -2
- package/_standalone/.next/static/chunks/9300.118b8c840634383f.js +28 -0
- package/_standalone/.next/static/chunks/9371-575600301da5d6bb.js +1 -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-3e08abb495ecd5fd.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-e7e0f87ad3d765ac.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-3d0e1ceaa4abc243.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-9378c1c8d3e5761b.js +186 -0
- package/_standalone/.next/static/chunks/app/login/page-24236460fa7c11d0.js +1 -0
- package/_standalone/.next/static/chunks/app/page-9bae420fbbdc5fff.js +7 -0
- package/_standalone/.next/static/chunks/app/setup/page-99ed3d1bb6b8f4ef.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/page-b61ef2d5cd4f8d73.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-44fa78cbea613a78.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-c28c55d0a6021a6b.js +1 -0
- package/_standalone/.next/static/css/d300701f384db50d.css +1 -0
- package/_standalone/.next/static/rZLs1krFuduixvcVNe6q3/_buildManifest.js +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 +9 -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__/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 +11 -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 +64 -79
- 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 +11 -1
- 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 +58 -22
- package/_standalone/components/SearchModal.tsx +1 -1
- package/_standalone/components/Sidebar.tsx +1 -1
- 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 +7 -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/agent-inspector/manifest.ts +16 -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 +1 -1
- package/_standalone/components/settings/McpSkillsSection.tsx +1 -1
- package/_standalone/components/settings/McpTab.tsx +145 -7
- package/_standalone/components/settings/PluginsTab.tsx +1 -1
- package/_standalone/components/settings/SettingsContent.tsx +5 -2
- 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 +4 -5
- package/_standalone/components/setup/StepAI.tsx +70 -49
- package/_standalone/components/setup/StepDots.tsx +1 -1
- package/_standalone/components/setup/StepReview.tsx +176 -8
- package/_standalone/components/setup/types.ts +11 -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 +3 -3
- package/_standalone/data/skills/mindos-zh/SKILL.md +3 -3
- 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 +2 -2
- package/_standalone/lib/i18n/modules/knowledge.ts +82 -2
- package/_standalone/lib/i18n/modules/navigation.ts +6 -2
- package/_standalone/lib/i18n/modules/onboarding.ts +39 -9
- package/_standalone/lib/i18n/modules/panels.ts +78 -29
- package/_standalone/lib/i18n/modules/settings.ts +207 -23
- package/_standalone/lib/inbox-upload.ts +93 -0
- 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 +103 -29
- 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/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 +10 -10
- 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 +64 -79
- 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 +11 -1
- 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 +58 -22
- package/app/components/SearchModal.tsx +1 -1
- package/app/components/Sidebar.tsx +1 -1
- 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 +7 -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 +1 -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 +1 -1
- package/app/components/settings/McpSkillsSection.tsx +1 -1
- package/app/components/settings/McpTab.tsx +145 -7
- package/app/components/settings/PluginsTab.tsx +1 -1
- package/app/components/settings/SettingsContent.tsx +5 -2
- 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 +4 -5
- package/app/components/setup/StepAI.tsx +70 -49
- package/app/components/setup/StepDots.tsx +1 -1
- package/app/components/setup/StepReview.tsx +176 -8
- package/app/components/setup/index.tsx +73 -39
- package/app/components/setup/types.ts +11 -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 +3 -3
- package/app/data/skills/mindos-zh/SKILL.md +3 -3
- 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 +26 -2
- package/app/lib/i18n/modules/ai-chat.ts +35 -13
- package/app/lib/i18n/modules/features.ts +2 -2
- package/app/lib/i18n/modules/knowledge.ts +82 -2
- package/app/lib/i18n/modules/navigation.ts +6 -2
- package/app/lib/i18n/modules/onboarding.ts +39 -9
- package/app/lib/i18n/modules/panels.ts +78 -29
- package/app/lib/i18n/modules/settings.ts +207 -23
- package/app/lib/inbox-upload.ts +93 -0
- package/app/lib/mcp-agents.ts +6 -7
- package/app/lib/renderers/index.ts +1 -2
- 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 +46 -27
- package/bin/commands/file.js +7 -4
- package/bin/commands/space.js +4 -0
- package/bin/lib/mcp-agents.js +26 -2
- package/bin/lib/mcp-install.js +11 -3
- 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 +1 -1
- package/scripts/setup.js +1 -1
- package/skills/mindos/SKILL.md +3 -3
- package/skills/mindos/references/preference-capture.md +4 -4
- package/skills/mindos/references/write-supplement.md +2 -2
- package/skills/mindos-zh/SKILL.md +3 -3
- 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/server/chunks/9414.js +0 -11
- 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/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 → rZLs1krFuduixvcVNe6q3}/_ssgManifest.js +0 -0
package/mcp/package.json
CHANGED
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@modelcontextprotocol/sdk": "^1.25.0",
|
|
13
|
-
"tsx": "^4.19.0",
|
|
14
13
|
"zod": "^3.23.8"
|
|
15
14
|
},
|
|
16
15
|
"devDependencies": {
|
|
17
16
|
"@types/node": "^22",
|
|
18
17
|
"esbuild": "^0.25.0",
|
|
18
|
+
"tsx": "^4.19.0",
|
|
19
19
|
"typescript": "^5"
|
|
20
20
|
}
|
|
21
21
|
}
|
package/mcp/src/index.ts
CHANGED
|
@@ -30,31 +30,33 @@ const MCP_PORT = parseInt(process.env.MCP_PORT ?? "8781", 10);
|
|
|
30
30
|
const MCP_ENDPOINT = process.env.MCP_ENDPOINT ?? "/mcp";
|
|
31
31
|
const CHARACTER_LIMIT = 25_000;
|
|
32
32
|
|
|
33
|
-
function headers(): Record<string, string> {
|
|
33
|
+
function headers(agentName?: string): Record<string, string> {
|
|
34
34
|
const h: Record<string, string> = { "Content-Type": "application/json" };
|
|
35
35
|
if (AUTH_TOKEN) h["Authorization"] = `Bearer ${AUTH_TOKEN}`;
|
|
36
|
+
// Sanitize: strip control chars, limit to 100 chars
|
|
37
|
+
if (agentName) h["x-mindos-agent"] = agentName.replace(/[\x00-\x1f]/g, '').slice(0, 100);
|
|
36
38
|
return h;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
// ─── HTTP helpers ────────────────────────────────────────────────────────────
|
|
40
42
|
|
|
41
|
-
async function get(path: string, params?: Record<string, string
|
|
43
|
+
async function get(path: string, params?: Record<string, string>, agentName?: string): Promise<Record<string, unknown>> {
|
|
42
44
|
const url = new URL(path, BASE_URL);
|
|
43
45
|
if (params) {
|
|
44
46
|
for (const [k, v] of Object.entries(params)) {
|
|
45
47
|
if (v !== undefined && v !== null) url.searchParams.set(k, v);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
|
-
const res = await fetch(url.toString(), { headers: headers() });
|
|
50
|
+
const res = await fetch(url.toString(), { headers: headers(agentName) });
|
|
49
51
|
const json = await res.json() as Record<string, unknown>;
|
|
50
52
|
if (!res.ok) throw new Error((json.error as string) ?? `HTTP ${res.status}`);
|
|
51
53
|
return json;
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
async function post(path: string, body: Record<string, unknown
|
|
56
|
+
async function post(path: string, body: Record<string, unknown>, agentName?: string): Promise<Record<string, unknown>> {
|
|
55
57
|
const res = await fetch(new URL(path, BASE_URL).toString(), {
|
|
56
58
|
method: "POST",
|
|
57
|
-
headers: headers(),
|
|
59
|
+
headers: headers(agentName),
|
|
58
60
|
body: JSON.stringify(body),
|
|
59
61
|
});
|
|
60
62
|
const json = await res.json() as Record<string, unknown>;
|
|
@@ -77,14 +79,14 @@ function truncate(text: string, limit = CHARACTER_LIMIT): string {
|
|
|
77
79
|
|
|
78
80
|
// ─── Agent operation logging ────────────────────────────────────────────────
|
|
79
81
|
|
|
80
|
-
async function logOp(tool: string, params: Record<string, unknown>, result: 'ok' | 'error', message: string) {
|
|
82
|
+
async function logOp(tool: string, params: Record<string, unknown>, result: 'ok' | 'error', message: string, agentName?: string) {
|
|
81
83
|
try {
|
|
82
|
-
const entry = { ts: new Date().toISOString(), tool, params, result, message: message.slice(0, 200) };
|
|
84
|
+
const entry = { ts: new Date().toISOString(), tool, params, result, message: message.slice(0, 200), agentName: agentName || undefined };
|
|
83
85
|
const line = JSON.stringify(entry) + '\n';
|
|
84
86
|
// Append to .agent-log.json via the app API
|
|
85
87
|
await fetch(new URL("/api/file", BASE_URL).toString(), {
|
|
86
88
|
method: "POST",
|
|
87
|
-
headers: headers(),
|
|
89
|
+
headers: headers(agentName),
|
|
88
90
|
body: JSON.stringify({ op: "append_to_file", path: ".agent-log.json", content: line }),
|
|
89
91
|
}).catch(() => {});
|
|
90
92
|
} catch {
|
|
@@ -96,6 +98,17 @@ async function logOp(tool: string, params: Record<string, unknown>, result: 'ok'
|
|
|
96
98
|
|
|
97
99
|
function registerTools(server: McpServer) {
|
|
98
100
|
|
|
101
|
+
/** Get the MCP client name for this server session (e.g. "claude-code", "cursor"). */
|
|
102
|
+
function clientName(): string | undefined {
|
|
103
|
+
return server.server.getClientVersion()?.name || undefined;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Session-aware wrappers that auto-inject client identity into every API call
|
|
107
|
+
const _get = (path: string, params?: Record<string, string>) => get(path, params, clientName());
|
|
108
|
+
const _post = (path: string, body: Record<string, unknown>) => post(path, body, clientName());
|
|
109
|
+
const _logOp = (tool: string, params: Record<string, unknown>, result: 'ok' | 'error', msg: string) =>
|
|
110
|
+
logOp(tool, params, result, msg, clientName());
|
|
111
|
+
|
|
99
112
|
// ── mindos_list_files ───────────────────────────────────────────────────────
|
|
100
113
|
|
|
101
114
|
server.registerTool("mindos_list_files", {
|
|
@@ -107,11 +120,11 @@ server.registerTool("mindos_list_files", {
|
|
|
107
120
|
annotations: { readOnlyHint: true },
|
|
108
121
|
}, async ({ response_format }) => {
|
|
109
122
|
try {
|
|
110
|
-
const json = await
|
|
123
|
+
const json = await _get("/api/files", { format: response_format });
|
|
111
124
|
const result = typeof json.tree === "string" ? json.tree : JSON.stringify(json.tree ?? json, null, 2);
|
|
112
|
-
|
|
125
|
+
_logOp("mindos_list_files", { response_format }, "ok", `${result.length} chars`);
|
|
113
126
|
return ok(result);
|
|
114
|
-
} catch (e) {
|
|
127
|
+
} catch (e) { _logOp("mindos_list_files", { response_format }, "error", String(e)); return error(String(e)); }
|
|
115
128
|
});
|
|
116
129
|
|
|
117
130
|
// ── mindos_list_spaces ──────────────────────────────────────────────────────
|
|
@@ -126,20 +139,20 @@ server.registerTool("mindos_list_spaces", {
|
|
|
126
139
|
annotations: { readOnlyHint: true },
|
|
127
140
|
}, async ({ response_format }) => {
|
|
128
141
|
try {
|
|
129
|
-
const json = await
|
|
142
|
+
const json = await _get("/api/file", { op: "list_spaces" });
|
|
130
143
|
const spaces = json.spaces as Array<{ name: string; path: string; fileCount: number; description: string }>;
|
|
131
144
|
if (response_format === "json") {
|
|
132
|
-
|
|
145
|
+
_logOp("mindos_list_spaces", { response_format }, "ok", `${spaces?.length ?? 0} spaces`);
|
|
133
146
|
return ok(JSON.stringify({ spaces: spaces ?? [] }, null, 2));
|
|
134
147
|
}
|
|
135
148
|
const lines = (spaces ?? []).map(
|
|
136
149
|
(s) => `- **${s.name}** (\`${s.path}/\`) — ${s.fileCount} file(s)${s.description ? ` — ${s.description}` : ""}`,
|
|
137
150
|
);
|
|
138
151
|
const text = lines.length ? lines.join("\n") : "(no top-level spaces in tree)";
|
|
139
|
-
|
|
152
|
+
_logOp("mindos_list_spaces", { response_format }, "ok", `${spaces?.length ?? 0} spaces`);
|
|
140
153
|
return ok(text);
|
|
141
154
|
} catch (e) {
|
|
142
|
-
|
|
155
|
+
_logOp("mindos_list_spaces", { response_format }, "error", String(e));
|
|
143
156
|
return error(String(e));
|
|
144
157
|
}
|
|
145
158
|
});
|
|
@@ -157,16 +170,16 @@ server.registerTool("mindos_read_file", {
|
|
|
157
170
|
annotations: { readOnlyHint: true },
|
|
158
171
|
}, async ({ path, offset, limit }) => {
|
|
159
172
|
try {
|
|
160
|
-
const json = await
|
|
173
|
+
const json = await _get("/api/file", { path, op: "read_file" });
|
|
161
174
|
const content = json.content as string;
|
|
162
175
|
const slice = content.slice(offset, offset + limit);
|
|
163
176
|
const hasMore = offset + limit < content.length;
|
|
164
177
|
const header = hasMore
|
|
165
178
|
? `[Showing characters ${offset}–${offset + slice.length} of ${content.length}. Use offset=${offset + limit} for next page.]\n\n`
|
|
166
179
|
: offset > 0 ? `[Showing characters ${offset}–${offset + slice.length} of ${content.length}]\n\n` : "";
|
|
167
|
-
|
|
180
|
+
_logOp("mindos_read_file", { path }, "ok", `${content.length} chars`);
|
|
168
181
|
return ok(header + slice);
|
|
169
|
-
} catch (e) {
|
|
182
|
+
} catch (e) { _logOp("mindos_read_file", { path }, "error", String(e)); return error(String(e)); }
|
|
170
183
|
});
|
|
171
184
|
|
|
172
185
|
// ── mindos_write_file ───────────────────────────────────────────────────────
|
|
@@ -180,10 +193,10 @@ server.registerTool("mindos_write_file", {
|
|
|
180
193
|
}),
|
|
181
194
|
}, async ({ path, content }) => {
|
|
182
195
|
try {
|
|
183
|
-
await
|
|
184
|
-
|
|
196
|
+
await _post("/api/file", { op: "save_file", path, content });
|
|
197
|
+
_logOp("mindos_write_file", { path }, "ok", `Wrote ${content.length} chars`);
|
|
185
198
|
return ok(`Successfully wrote ${content.length} characters to "${path}"`);
|
|
186
|
-
} catch (e) {
|
|
199
|
+
} catch (e) { _logOp("mindos_write_file", { path }, "error", String(e)); return error(String(e)); }
|
|
187
200
|
});
|
|
188
201
|
|
|
189
202
|
// ── mindos_create_file ──────────────────────────────────────────────────────
|
|
@@ -197,10 +210,10 @@ server.registerTool("mindos_create_file", {
|
|
|
197
210
|
}),
|
|
198
211
|
}, async ({ path, content }) => {
|
|
199
212
|
try {
|
|
200
|
-
await
|
|
201
|
-
|
|
213
|
+
await _post("/api/file", { op: "create_file", path, content });
|
|
214
|
+
_logOp("mindos_create_file", { path }, "ok", `Created ${content.length} chars`);
|
|
202
215
|
return ok(`Created "${path}" (${content.length} characters)`);
|
|
203
|
-
} catch (e) {
|
|
216
|
+
} catch (e) { _logOp("mindos_create_file", { path }, "error", String(e)); return error(String(e)); }
|
|
204
217
|
});
|
|
205
218
|
|
|
206
219
|
// ── mindos_batch_create_files ────────────────────────────────────────────────
|
|
@@ -220,7 +233,7 @@ server.registerTool("mindos_batch_create_files", {
|
|
|
220
233
|
const errors: string[] = [];
|
|
221
234
|
for (const file of files) {
|
|
222
235
|
try {
|
|
223
|
-
await
|
|
236
|
+
await _post("/api/file", { op: "create_file", path: file.path, content: file.content });
|
|
224
237
|
created.push(file.path);
|
|
225
238
|
} catch (e) {
|
|
226
239
|
errors.push(`${file.path}: ${String(e)}`);
|
|
@@ -228,7 +241,7 @@ server.registerTool("mindos_batch_create_files", {
|
|
|
228
241
|
}
|
|
229
242
|
let msg = `Batch creation complete.\nCreated ${created.length} file(s): ${created.join(", ")}`;
|
|
230
243
|
if (errors.length > 0) msg += `\n\nFailed to create ${errors.length} file(s):\n${errors.join("\n")}`;
|
|
231
|
-
|
|
244
|
+
_logOp("mindos_batch_create_files", { count: files.length }, created.length === files.length ? "ok" : "error", msg.slice(0, 200));
|
|
232
245
|
return created.length === files.length ? ok(msg) : error(msg);
|
|
233
246
|
});
|
|
234
247
|
|
|
@@ -245,7 +258,7 @@ server.registerTool("mindos_create_space", {
|
|
|
245
258
|
}),
|
|
246
259
|
}, async ({ name, description, parent_path }) => {
|
|
247
260
|
try {
|
|
248
|
-
const json = await
|
|
261
|
+
const json = await _post("/api/file", {
|
|
249
262
|
op: "create_space",
|
|
250
263
|
path: "_",
|
|
251
264
|
name,
|
|
@@ -253,10 +266,10 @@ server.registerTool("mindos_create_space", {
|
|
|
253
266
|
parent_path,
|
|
254
267
|
});
|
|
255
268
|
const p = json.path as string;
|
|
256
|
-
|
|
269
|
+
_logOp("mindos_create_space", { name, parent_path }, "ok", p);
|
|
257
270
|
return ok(`Created Mind Space at "${p}"`);
|
|
258
271
|
} catch (e) {
|
|
259
|
-
|
|
272
|
+
_logOp("mindos_create_space", { name, parent_path }, "error", String(e));
|
|
260
273
|
return error(String(e));
|
|
261
274
|
}
|
|
262
275
|
});
|
|
@@ -273,11 +286,11 @@ server.registerTool("mindos_rename_space", {
|
|
|
273
286
|
}),
|
|
274
287
|
}, async ({ path: spacePath, new_name }) => {
|
|
275
288
|
try {
|
|
276
|
-
const json = await
|
|
277
|
-
|
|
289
|
+
const json = await _post("/api/file", { op: "rename_space", path: spacePath, new_name });
|
|
290
|
+
_logOp("mindos_rename_space", { path: spacePath, new_name }, "ok", String(json.newPath));
|
|
278
291
|
return ok(`Renamed space "${spacePath}" → "${json.newPath}"`);
|
|
279
292
|
} catch (e) {
|
|
280
|
-
|
|
293
|
+
_logOp("mindos_rename_space", { path: spacePath, new_name }, "error", String(e));
|
|
281
294
|
return error(String(e));
|
|
282
295
|
}
|
|
283
296
|
});
|
|
@@ -286,17 +299,18 @@ server.registerTool("mindos_rename_space", {
|
|
|
286
299
|
|
|
287
300
|
server.registerTool("mindos_delete_file", {
|
|
288
301
|
title: "Delete File",
|
|
289
|
-
description: "
|
|
302
|
+
description: "Delete a file from the knowledge base. The file is moved to trash and can be recovered within 30 days.",
|
|
290
303
|
inputSchema: z.object({
|
|
291
304
|
path: z.string().min(1),
|
|
292
305
|
}),
|
|
293
306
|
annotations: { destructiveHint: true },
|
|
294
307
|
}, async ({ path }) => {
|
|
295
308
|
try {
|
|
296
|
-
await
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
309
|
+
const res = await _post("/api/file", { op: "delete_file", path });
|
|
310
|
+
const trashId = res?.trashId ? ` (trashId: ${res.trashId})` : '';
|
|
311
|
+
_logOp("mindos_delete_file", { path }, "ok", `Moved to trash: "${path}"${trashId}`);
|
|
312
|
+
return ok(`Moved to trash: "${path}"${trashId}`);
|
|
313
|
+
} catch (e) { _logOp("mindos_delete_file", { path }, "error", String(e)); return error(String(e)); }
|
|
300
314
|
});
|
|
301
315
|
|
|
302
316
|
// ── mindos_rename_file ──────────────────────────────────────────────────────
|
|
@@ -310,7 +324,7 @@ server.registerTool("mindos_rename_file", {
|
|
|
310
324
|
}),
|
|
311
325
|
}, async ({ path, new_name }) => {
|
|
312
326
|
try {
|
|
313
|
-
const json = await
|
|
327
|
+
const json = await _post("/api/file", { op: "rename_file", path, new_name });
|
|
314
328
|
return ok(`Renamed "${path}" → "${json.newPath}"`);
|
|
315
329
|
} catch (e) { return error(String(e)); }
|
|
316
330
|
});
|
|
@@ -326,7 +340,7 @@ server.registerTool("mindos_move_file", {
|
|
|
326
340
|
}),
|
|
327
341
|
}, async ({ from_path, to_path }) => {
|
|
328
342
|
try {
|
|
329
|
-
const json = await
|
|
343
|
+
const json = await _post("/api/file", { op: "move_file", path: from_path, to_path });
|
|
330
344
|
const affected = json.affectedFiles as string[] ?? [];
|
|
331
345
|
const lines = [`Moved "${from_path}" → "${json.newPath}"`];
|
|
332
346
|
if (affected.length > 0) {
|
|
@@ -358,10 +372,10 @@ server.registerTool("mindos_search_notes", {
|
|
|
358
372
|
if (file_type !== "all") params.file_type = file_type;
|
|
359
373
|
if (modified_after) params.modified_after = modified_after;
|
|
360
374
|
if (response_format) params.format = response_format;
|
|
361
|
-
const json = await
|
|
362
|
-
|
|
375
|
+
const json = await _get("/api/search", params);
|
|
376
|
+
_logOp("mindos_search_notes", { query, limit }, "ok", `Search completed`);
|
|
363
377
|
return ok(truncate(JSON.stringify(json, null, 2)));
|
|
364
|
-
} catch (e) {
|
|
378
|
+
} catch (e) { _logOp("mindos_search_notes", { query }, "error", String(e)); return error(String(e)); }
|
|
365
379
|
});
|
|
366
380
|
|
|
367
381
|
// ── mindos_get_recent ───────────────────────────────────────────────────────
|
|
@@ -376,7 +390,7 @@ server.registerTool("mindos_get_recent", {
|
|
|
376
390
|
annotations: { readOnlyHint: true },
|
|
377
391
|
}, async ({ limit, response_format }) => {
|
|
378
392
|
try {
|
|
379
|
-
const json = await
|
|
393
|
+
const json = await _get("/api/recent-files", { limit: String(limit), format: response_format });
|
|
380
394
|
return ok(JSON.stringify(json, null, 2));
|
|
381
395
|
} catch (e) { return error(String(e)); }
|
|
382
396
|
});
|
|
@@ -392,7 +406,7 @@ server.registerTool("mindos_read_lines", {
|
|
|
392
406
|
annotations: { readOnlyHint: true },
|
|
393
407
|
}, async ({ path }) => {
|
|
394
408
|
try {
|
|
395
|
-
const json = await
|
|
409
|
+
const json = await _get("/api/file", { path, op: "read_lines" });
|
|
396
410
|
const lines = json.lines as string[];
|
|
397
411
|
const numbered = lines.map((l, i) => `${i}: ${l}`).join("\n");
|
|
398
412
|
return ok(`${lines.length} lines total:\n\n${numbered}`);
|
|
@@ -411,7 +425,7 @@ server.registerTool("mindos_insert_lines", {
|
|
|
411
425
|
}),
|
|
412
426
|
}, async ({ path, after_index, lines }) => {
|
|
413
427
|
try {
|
|
414
|
-
await
|
|
428
|
+
await _post("/api/file", { op: "insert_lines", path, after_index, lines });
|
|
415
429
|
return ok(`Inserted ${lines.length} line(s) after index ${after_index} in "${path}"`);
|
|
416
430
|
} catch (e) { return error(String(e)); }
|
|
417
431
|
});
|
|
@@ -429,7 +443,7 @@ server.registerTool("mindos_update_lines", {
|
|
|
429
443
|
}),
|
|
430
444
|
}, async ({ path, start, end, lines }) => {
|
|
431
445
|
try {
|
|
432
|
-
await
|
|
446
|
+
await _post("/api/file", { op: "update_lines", path, start, end, lines });
|
|
433
447
|
return ok(`Replaced lines ${start}–${end} in "${path}" with ${lines.length} new line(s)`);
|
|
434
448
|
} catch (e) { return error(String(e)); }
|
|
435
449
|
});
|
|
@@ -445,10 +459,10 @@ server.registerTool("mindos_append_to_file", {
|
|
|
445
459
|
}),
|
|
446
460
|
}, async ({ path, content }) => {
|
|
447
461
|
try {
|
|
448
|
-
await
|
|
449
|
-
|
|
462
|
+
await _post("/api/file", { op: "append_to_file", path, content });
|
|
463
|
+
_logOp("mindos_append_to_file", { path }, "ok", `Appended ${content.length} chars`);
|
|
450
464
|
return ok(`Appended ${content.length} character(s) to "${path}"`);
|
|
451
|
-
} catch (e) {
|
|
465
|
+
} catch (e) { _logOp("mindos_append_to_file", { path }, "error", String(e)); return error(String(e)); }
|
|
452
466
|
});
|
|
453
467
|
|
|
454
468
|
// ── mindos_insert_after_heading ─────────────────────────────────────────────
|
|
@@ -463,10 +477,10 @@ server.registerTool("mindos_insert_after_heading", {
|
|
|
463
477
|
}),
|
|
464
478
|
}, async ({ path, heading, content }) => {
|
|
465
479
|
try {
|
|
466
|
-
await
|
|
467
|
-
|
|
480
|
+
await _post("/api/file", { op: "insert_after_heading", path, heading, content });
|
|
481
|
+
_logOp("mindos_insert_after_heading", { path, heading }, "ok", `Inserted after "${heading}"`);
|
|
468
482
|
return ok(`Inserted content after heading "${heading}" in "${path}"`);
|
|
469
|
-
} catch (e) {
|
|
483
|
+
} catch (e) { _logOp("mindos_insert_after_heading", { path, heading }, "error", String(e)); return error(String(e)); }
|
|
470
484
|
});
|
|
471
485
|
|
|
472
486
|
// ── mindos_update_section ───────────────────────────────────────────────────
|
|
@@ -481,10 +495,10 @@ server.registerTool("mindos_update_section", {
|
|
|
481
495
|
}),
|
|
482
496
|
}, async ({ path, heading, content }) => {
|
|
483
497
|
try {
|
|
484
|
-
await
|
|
485
|
-
|
|
498
|
+
await _post("/api/file", { op: "update_section", path, heading, content });
|
|
499
|
+
_logOp("mindos_update_section", { path, heading }, "ok", `Updated section "${heading}"`);
|
|
486
500
|
return ok(`Updated section "${heading}" in "${path}"`);
|
|
487
|
-
} catch (e) {
|
|
501
|
+
} catch (e) { _logOp("mindos_update_section", { path, heading }, "error", String(e)); return error(String(e)); }
|
|
488
502
|
});
|
|
489
503
|
|
|
490
504
|
// ── mindos_append_csv ───────────────────────────────────────────────────────
|
|
@@ -498,7 +512,7 @@ server.registerTool("mindos_append_csv", {
|
|
|
498
512
|
}),
|
|
499
513
|
}, async ({ path, row }) => {
|
|
500
514
|
try {
|
|
501
|
-
const json = await
|
|
515
|
+
const json = await _post("/api/file", { op: "append_csv", path, row });
|
|
502
516
|
return ok(`Appended row to "${path}". File now has ${json.newRowCount} rows.`);
|
|
503
517
|
} catch (e) { return error(String(e)); }
|
|
504
518
|
});
|
|
@@ -514,7 +528,7 @@ server.registerTool("mindos_get_backlinks", {
|
|
|
514
528
|
annotations: { readOnlyHint: true },
|
|
515
529
|
}, async ({ path }) => {
|
|
516
530
|
try {
|
|
517
|
-
const json = await
|
|
531
|
+
const json = await _get("/api/backlinks", { path });
|
|
518
532
|
return ok(JSON.stringify(json, null, 2));
|
|
519
533
|
} catch (e) { return error(String(e)); }
|
|
520
534
|
});
|
|
@@ -532,7 +546,7 @@ server.registerTool("mindos_bootstrap", {
|
|
|
532
546
|
try {
|
|
533
547
|
const params: Record<string, string> = {};
|
|
534
548
|
if (target_dir) params.target_dir = target_dir;
|
|
535
|
-
const json = await
|
|
549
|
+
const json = await _get("/api/bootstrap", params);
|
|
536
550
|
const sections = Object.entries(json)
|
|
537
551
|
.filter(([, v]) => v !== undefined && v !== null)
|
|
538
552
|
.map(([key, val]) => `--- ${key} ---\n\n${val}`)
|
|
@@ -553,7 +567,7 @@ server.registerTool("mindos_get_history", {
|
|
|
553
567
|
annotations: { readOnlyHint: true },
|
|
554
568
|
}, async ({ path, limit }) => {
|
|
555
569
|
try {
|
|
556
|
-
const json = await
|
|
570
|
+
const json = await _get("/api/git", { op: "history", path, limit: String(limit) });
|
|
557
571
|
const entries = json.entries as Array<{ hash: string; date: string; message: string; author: string }>;
|
|
558
572
|
if (entries.length === 0) return ok(`No git history found for "${path}"`);
|
|
559
573
|
const lines = [`# Git History: ${path}`, "", `${entries.length} commit(s):`, ""];
|
|
@@ -576,7 +590,7 @@ server.registerTool("mindos_get_file_at_version", {
|
|
|
576
590
|
annotations: { readOnlyHint: true },
|
|
577
591
|
}, async ({ path, commit }) => {
|
|
578
592
|
try {
|
|
579
|
-
const json = await
|
|
593
|
+
const json = await _get("/api/git", { op: "show", path, commit });
|
|
580
594
|
const content = json.content as string;
|
|
581
595
|
return ok(truncate(`# ${path} @ ${commit.slice(0, 8)}\n\n${content}`));
|
|
582
596
|
} catch (e) { return error(String(e)); }
|
|
@@ -648,7 +662,9 @@ async function main() {
|
|
|
648
662
|
const sid = transport.sessionId;
|
|
649
663
|
if (sid) {
|
|
650
664
|
sessions.set(sid, { transport, server });
|
|
651
|
-
|
|
665
|
+
const client = server.server.getClientVersion();
|
|
666
|
+
const clientLabel = client?.name ? ` (${client.name})` : '';
|
|
667
|
+
console.error(`[MCP] New session ${sid.slice(0, 8)}${clientLabel} (${sessions.size} active)`);
|
|
652
668
|
}
|
|
653
669
|
});
|
|
654
670
|
|
package/package.json
CHANGED
package/scripts/setup.js
CHANGED
|
@@ -1228,7 +1228,7 @@ async function main() {
|
|
|
1228
1228
|
console.log(`\n${c.green(t('cfgSaved'))}: ${c.dim(CONFIG_PATH)}`);
|
|
1229
1229
|
|
|
1230
1230
|
// ── Skill rules are now built into SKILL.md — no install needed ──────────
|
|
1231
|
-
// user-
|
|
1231
|
+
// .mindos/user-preferences.md will be created on first preference capture or via `mindos init-skills`.
|
|
1232
1232
|
|
|
1233
1233
|
// ── Step 7: MCP Agent Install ──────────────────────────────────────────────
|
|
1234
1234
|
write('\n');
|
package/skills/mindos/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ description: >
|
|
|
21
21
|
|
|
22
22
|
1. The **bootstrap directory tree is the primary index** — reason from names and hierarchy before calling search. Most questions can be answered by reading what's already in context.
|
|
23
23
|
2. **Default to read-only.** Only invoke write tools when the user explicitly asks to save, record, organize, or edit. Lookup / summarize / quote = no writes.
|
|
24
|
-
3. **Rule precedence** (highest wins): user's current-turn instruction →
|
|
24
|
+
3. **Rule precedence** (highest wins): user's current-turn instruction → `.mindos/user-preferences.md` → nearest directory `INSTRUCTION.md` → root `INSTRUCTION.md` → this SKILL's defaults.
|
|
25
25
|
4. **Multi-file edits require a plan first.** Present the full change list; execute only after approval.
|
|
26
26
|
5. After create/delete/move/rename → **sync affected READMEs** automatically.
|
|
27
27
|
|
|
@@ -141,7 +141,7 @@ For write, SOP, structural, and handoff patterns → see Write & Workflow Supple
|
|
|
141
141
|
|
|
142
142
|
## Post-task hooks
|
|
143
143
|
|
|
144
|
-
After **write tasks** (not simple single-file edits or read-only), scan this table. If a condition matches, make a one-line proposal. At most 1 proposal; pick highest priority. Check
|
|
144
|
+
After **write tasks** (not simple single-file edits or read-only), scan this table. If a condition matches, make a one-line proposal. At most 1 proposal; pick highest priority. Check `.mindos/user-preferences.md` suppression section first. Skip all if user asked for quiet mode.
|
|
145
145
|
|
|
146
146
|
| Hook | Priority | Condition |
|
|
147
147
|
|------|----------|-----------|
|
|
@@ -157,7 +157,7 @@ If a hook triggers → read [references/post-task-hooks.md](./references/post-ta
|
|
|
157
157
|
|
|
158
158
|
## Preference capture
|
|
159
159
|
|
|
160
|
-
When the user expresses a standing preference ("don't do X", "always put Y in Z"), read [references/preference-capture.md](./references/preference-capture.md) and follow the confirm-then-write flow to
|
|
160
|
+
When the user expresses a standing preference ("don't do X", "always put Y in Z"), read [references/preference-capture.md](./references/preference-capture.md) and follow the confirm-then-write flow to `.mindos/user-preferences.md`.
|
|
161
161
|
**Do NOT read** preference-capture unless the user actually expressed a preference to persist.
|
|
162
162
|
|
|
163
163
|
## SOP authoring
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Preference capture (`user-
|
|
1
|
+
# Preference capture (`user-preferences.md`)
|
|
2
2
|
|
|
3
3
|
## When to capture
|
|
4
4
|
|
|
@@ -7,14 +7,14 @@ The user expresses a preference correction (e.g. "don't do X", "next time rememb
|
|
|
7
7
|
## Confirm-then-write flow
|
|
8
8
|
|
|
9
9
|
1. **First occurrence of a new preference**: propose the rule and target file before writing.
|
|
10
|
-
- "Record this preference to `user-
|
|
10
|
+
- "Record this preference to `user-preferences.md`? Rule: _{summary}_"
|
|
11
11
|
- Write only after user confirms.
|
|
12
|
-
2. **Repeated confirmation on similar category**: after the user confirms the same category of preference 3+ times, auto-write future rules in that category without asking. Add an `auto-confirm: true` flag to the category header in `user-
|
|
12
|
+
2. **Repeated confirmation on similar category**: after the user confirms the same category of preference 3+ times, auto-write future rules in that category without asking. Add an `auto-confirm: true` flag to the category header in `user-preferences.md`.
|
|
13
13
|
3. **User explicitly grants blanket permission** (e.g. "just record preferences directly"): set a top-level `auto-confirm-all: true` flag and skip confirmation for all future captures.
|
|
14
14
|
|
|
15
15
|
## File location
|
|
16
16
|
|
|
17
|
-
- Target:
|
|
17
|
+
- Target: `.mindos/user-preferences.md` in the knowledge base (read by `mindos_bootstrap` when present).
|
|
18
18
|
- If the file does not exist, create it with the template below on first confirmed write.
|
|
19
19
|
|
|
20
20
|
## File template
|
|
@@ -94,7 +94,7 @@ Read the handoff document or last agent's progress notes → identify: current s
|
|
|
94
94
|
|
|
95
95
|
## Post-task hooks
|
|
96
96
|
|
|
97
|
-
After **write tasks** (not simple single-file edits or read-only), scan this table. If a condition matches, make a one-line proposal. At most 1 proposal; pick highest priority. Check
|
|
97
|
+
After **write tasks** (not simple single-file edits or read-only), scan this table. If a condition matches, make a one-line proposal. At most 1 proposal; pick highest priority. Check `.mindos/user-preferences.md` suppression section first. Skip all if user asked for quiet mode.
|
|
98
98
|
|
|
99
99
|
| Hook | Priority | Condition |
|
|
100
100
|
|------|----------|-----------|
|
|
@@ -110,7 +110,7 @@ If a hook triggers → read [references/post-task-hooks.md](./references/post-ta
|
|
|
110
110
|
|
|
111
111
|
## Preference capture
|
|
112
112
|
|
|
113
|
-
When the user expresses a standing preference ("don't do X", "always put Y in Z"), read [references/preference-capture.md](./references/preference-capture.md) and follow the confirm-then-write flow to
|
|
113
|
+
When the user expresses a standing preference ("don't do X", "always put Y in Z"), read [references/preference-capture.md](./references/preference-capture.md) and follow the confirm-then-write flow to `.mindos/user-preferences.md`.
|
|
114
114
|
**Do NOT read** preference-capture unless the user actually expressed a preference to persist.
|
|
115
115
|
|
|
116
116
|
## SOP authoring
|
|
@@ -20,7 +20,7 @@ description: >
|
|
|
20
20
|
|
|
21
21
|
1. **bootstrap 目录树是首要索引** — 先从目录名和层级推断,再搜索。大多数定位不需要工具调用。
|
|
22
22
|
2. **默认只读。** 只有用户明确要求保存、记录、整理、修改时才调写入工具。查阅/总结/引用 = 不写。
|
|
23
|
-
3. **规则优先级**(越上越优先):用户当轮指令 →
|
|
23
|
+
3. **规则优先级**(越上越优先):用户当轮指令 → `.mindos/user-preferences.md` → 就近目录 `INSTRUCTION.md` → 根 `INSTRUCTION.md` → 本 SKILL 默认。
|
|
24
24
|
4. **多文件编辑必须先出计划。** 展示完整变更清单,确认后再执行。
|
|
25
25
|
5. 增删/移动/重命名后 → **自动同步受影响 README**。
|
|
26
26
|
|
|
@@ -140,7 +140,7 @@ description: >
|
|
|
140
140
|
|
|
141
141
|
## 任务后 Hooks
|
|
142
142
|
|
|
143
|
-
**写入任务**完成后(简单单文件修改或只读查阅跳过),扫描下表。命中则发起一句话提议,最多 1 条,选优先级最高项。先查
|
|
143
|
+
**写入任务**完成后(简单单文件修改或只读查阅跳过),扫描下表。命中则发起一句话提议,最多 1 条,选优先级最高项。先查 `.mindos/user-preferences.md` 的抑制区;用户要求安静模式时全部跳过。
|
|
144
144
|
|
|
145
145
|
| Hook | 优先级 | 触发条件 |
|
|
146
146
|
|------|--------|---------|
|
|
@@ -156,7 +156,7 @@ description: >
|
|
|
156
156
|
|
|
157
157
|
## 偏好捕获
|
|
158
158
|
|
|
159
|
-
用户表达要长期记住的偏好(「以后不要…」「这个该放在…」)时,读 [references/preference-capture.md](./references/preference-capture.md) 并按确认后写入流程存入
|
|
159
|
+
用户表达要长期记住的偏好(「以后不要…」「这个该放在…」)时,读 [references/preference-capture.md](./references/preference-capture.md) 并按确认后写入流程存入 `.mindos/user-preferences.md`。
|
|
160
160
|
**不要读** preference-capture 除非用户真的表达了要持久化的偏好。
|
|
161
161
|
|
|
162
162
|
## SOP 编写
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 偏好捕获(`user-
|
|
1
|
+
# 偏好捕获(`user-preferences.md`)
|
|
2
2
|
|
|
3
3
|
## 何时捕获
|
|
4
4
|
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
## 确认后写入流程
|
|
8
8
|
|
|
9
9
|
1. **某类偏好首次出现**:先提议,用户确认后再写入。
|
|
10
|
-
- 「记录此偏好到 `user-
|
|
10
|
+
- 「记录此偏好到 `user-preferences.md`?规则:_{摘要}_」
|
|
11
11
|
- 仅在用户确认后写入。
|
|
12
|
-
2. **同类偏好确认 3 次以上**:该类别在 `user-
|
|
12
|
+
2. **同类偏好确认 3 次以上**:该类别在 `user-preferences.md` 中标记 `auto-confirm: true`,后续同类偏好自动写入,不再询问。
|
|
13
13
|
3. **用户明确授权**(如「偏好直接记就行」):设置顶层 `auto-confirm-all: true`,之后所有偏好跳过确认直接写入。
|
|
14
14
|
|
|
15
15
|
## 文件位置
|
|
16
16
|
|
|
17
|
-
-
|
|
17
|
+
- 目标:知识库 `.mindos/user-preferences.md`(存在时由 `mindos_bootstrap` 读取)。
|
|
18
18
|
- 若文件不存在,在首次确认写入时按下方模板创建。
|
|
19
19
|
|
|
20
20
|
## 文件模板
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
|
|
95
95
|
## 任务后 Hooks
|
|
96
96
|
|
|
97
|
-
**写入任务**完成后(简单单文件修改或只读查阅跳过),扫描下表。命中则发起一句话提议,最多 1 条,选优先级最高项。先查
|
|
97
|
+
**写入任务**完成后(简单单文件修改或只读查阅跳过),扫描下表。命中则发起一句话提议,最多 1 条,选优先级最高项。先查 `.mindos/user-preferences.md` 的抑制区;用户要求安静模式时全部跳过。
|
|
98
98
|
|
|
99
99
|
| Hook | 优先级 | 触发条件 |
|
|
100
100
|
|------|--------|---------|
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
|
|
111
111
|
## 偏好捕获
|
|
112
112
|
|
|
113
|
-
用户表达要长期记住的偏好(「以后不要…」「这个该放在…」)时,读 [references/preference-capture.md](./references/preference-capture.md) 并按确认后写入流程存入
|
|
113
|
+
用户表达要长期记住的偏好(「以后不要…」「这个该放在…」)时,读 [references/preference-capture.md](./references/preference-capture.md) 并按确认后写入流程存入 `.mindos/user-preferences.md`。
|
|
114
114
|
**不要读** preference-capture 除非用户真的表达了要持久化的偏好。
|
|
115
115
|
|
|
116
116
|
## SOP 编写
|
|
@@ -174,4 +174,3 @@ Create it only when local rules are reusable and meaningful. Avoid creating them
|
|
|
174
174
|
|
|
175
175
|
- `CONFIG.json` is the single source of truth for all configuration.
|
|
176
176
|
- Field semantics are embedded in `keySpecs`; directory naming rules in `naming`.
|
|
177
|
-
- No separate `CONFIG.md` is needed.
|
|
@@ -174,4 +174,3 @@ Create it only when local rules are reusable and meaningful. Avoid creating them
|
|
|
174
174
|
|
|
175
175
|
- `CONFIG.json` is the single source of truth for all configuration.
|
|
176
176
|
- Field semantics are embedded in `keySpecs`; directory naming rules in `naming`.
|
|
177
|
-
- No separate `CONFIG.md` is needed.
|