@geminilight/mindos 0.6.56 → 0.6.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +21 -19
- 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 +8 -8
- package/_standalone/.next/routes-manifest.json +12 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +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 +2 -6
- 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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/detect/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route.js +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/ask/route.js +5 -5
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +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 +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +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 +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +21 -19
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/1750.js +1 -1
- package/_standalone/.next/server/chunks/{2190.js → 3484.js} +1 -1
- package/_standalone/.next/server/chunks/530.js +30 -30
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/6793.js +52 -0
- package/_standalone/.next/server/chunks/8388.js +3 -3
- package/_standalone/.next/server/chunks/953.js +2 -2
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/2ksXveDzEcnCMRIElDkLq/_buildManifest.js +1 -0
- package/_standalone/.next/static/chunks/1053-fe009233cff06e72.js +29 -0
- package/_standalone/.next/static/chunks/1477.33df3cce509578c2.js +1 -0
- package/_standalone/.next/static/chunks/{1814.b08e9fb85dd3b13c.js → 1814.a7c127b2c73d1f70.js} +1 -1
- package/_standalone/.next/static/chunks/2549-e63cf57fa927a41d.js +1 -0
- package/_standalone/.next/static/chunks/{1007.c11404e50b39d165.js → 2647.e0b67d0c432ad7e7.js} +10 -10
- package/_standalone/.next/static/chunks/{2872.c8c8593be1ba4735.js → 2872.045858d00bd8307f.js} +2 -2
- package/_standalone/.next/static/chunks/362.3978790a2e636c3c.js +2 -0
- package/_standalone/.next/static/chunks/3637.38c4f28d8f698e0e.js +1 -0
- package/_standalone/.next/static/chunks/54a60aa6.7a74f547ec1bdd5a.js +79 -0
- package/_standalone/.next/static/chunks/6087.4b6102dc0bcd07a7.js +1 -0
- package/_standalone/.next/static/chunks/6878-e2c5459e1c608f89.js +1 -0
- package/_standalone/.next/static/chunks/7249-fa98ca10e9a10f39.js +11 -0
- package/_standalone/.next/static/chunks/8252-e5ae7ced3a41e0ed.js +1 -0
- package/_standalone/.next/static/chunks/{8753-ea9db680b0f70f25.js → 8658-16ff58b75ae37fbb.js} +1 -1
- package/_standalone/.next/static/chunks/{7322-d67d05067544864c.js → 9274-296ab35f9f09e42e.js} +1 -1
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/_global-error/page-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-7bdeab5af8e4f5f2.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-5d1446665ddb3801.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agents/custom/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/raw/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/{page-6710da1f581b2854.js → page-b0103509ce34444b.js} +4 -4
- package/_standalone/.next/static/chunks/app/echo/page-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/{layout-d5f28933c5e14d74.js → layout-7e02ddf4144b01f1.js} +11 -11
- package/_standalone/.next/static/chunks/app/loading-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/page-6a6a12bd6d6812d0.js +7 -0
- package/_standalone/.next/static/chunks/app/setup/{page-9a81fa4d82c6351b.js → page-99fcfc460fa29733.js} +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-54cbd5c98d9de69b.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-ca7bdcbf27f88a46.js +12 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2f4705aa66819b86.js +1 -0
- package/_standalone/.next/static/chunks/webpack-2c19436659aa657b.js +1 -0
- package/_standalone/.next/static/css/fd84c8316ead16eb.css +1 -0
- package/_standalone/.next/trace +64 -64
- package/_standalone/.next/types/routes.d.ts +3 -1
- package/_standalone/.next/types/validator.ts +18 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +3 -2
- package/_standalone/__tests__/ask/non-streaming-api.test.ts +281 -0
- package/_standalone/__tests__/core/skill-install-logic.test.ts +1 -0
- package/_standalone/components/Editor.tsx +124 -6
- package/_standalone/components/MarkdownView.tsx +3 -1
- package/_standalone/components/WysiwygEditor.tsx +90 -0
- package/_standalone/components/agents/AgentsOverviewSection.tsx +100 -8
- package/_standalone/components/agents/CustomAgentModal.tsx +637 -0
- package/_standalone/components/settings/types.ts +4 -0
- package/_standalone/data/skills/mindos/SKILL.md +14 -9
- package/_standalone/data/skills/mindos-zh/SKILL.md +13 -4
- package/_standalone/hooks/useEditorImageUpload.ts +113 -0
- package/_standalone/lib/image.ts +47 -0
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/agents/custom/detect/route.ts +31 -0
- package/app/app/api/agents/custom/route.ts +158 -0
- package/app/app/api/ask/route.ts +171 -10
- package/app/app/api/file/import/route.ts +42 -0
- package/app/app/api/mcp/agents/route.ts +62 -8
- package/app/app/api/settings/list-models/route.ts +16 -2
- package/app/app/api/settings/route.ts +9 -0
- package/app/app/api/settings/test-key/route.ts +13 -1
- package/app/components/Editor.tsx +124 -6
- package/app/components/MarkdownView.tsx +3 -1
- package/app/components/WysiwygEditor.tsx +90 -0
- package/app/components/agents/AgentDetailContent.tsx +74 -1
- package/app/components/agents/AgentsContentPage.tsx +76 -1
- package/app/components/agents/AgentsOverviewSection.tsx +100 -8
- package/app/components/agents/CustomAgentModal.tsx +637 -0
- package/app/components/settings/types.ts +4 -0
- package/app/data/skills/mindos/SKILL.md +14 -9
- package/app/data/skills/mindos-zh/SKILL.md +13 -4
- package/app/hooks/useEditorImageUpload.ts +113 -0
- package/app/lib/agent/model.ts +7 -1
- package/app/lib/agent/providers.ts +31 -6
- package/app/lib/core/organize.ts +1 -1
- package/app/lib/core/tree.ts +1 -1
- package/app/lib/custom-agents.ts +322 -0
- package/app/lib/fs.ts +1 -1
- package/app/lib/i18n/modules/panels.ts +104 -0
- package/app/lib/image.ts +47 -0
- package/app/lib/mcp-agents.ts +10 -0
- package/app/lib/settings.ts +4 -0
- package/bin/commands/start.js +5 -4
- package/bin/commands/update.js +6 -2
- package/bin/lib/gateway.js +6 -2
- package/bin/lib/mcp-agents.js +10 -0
- package/mcp/dist/index.cjs +1 -1
- package/mcp/src/index.ts +6 -1
- package/package.json +1 -1
- package/skills/mindos/SKILL.md +10 -4
- package/skills/mindos-max/SKILL.md +191 -0
- package/skills/mindos-max-workspace/evals/evals.json +23 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/outputs/transcript.md +203 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/outputs/transcript.md +271 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/outputs/transcript.md +121 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/outputs/transcript.md +168 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/outputs/transcript.md +143 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/outputs/transcript.md +233 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/SKILL.md +165 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/README.md +12 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/post-task-hooks.md +27 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/preference-capture.md +41 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/sop-template.md +74 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/write-supplement.md +119 -0
- package/skills/mindos-max-zh/SKILL.md +192 -0
- package/skills/mindos-zh/SKILL.md +11 -3
- package/_standalone/.next/server/chunks/7543.js +0 -52
- package/_standalone/.next/static/3gMJ8EaZfDgHmB0NR0Q4T/_buildManifest.js +0 -1
- package/_standalone/.next/static/chunks/1053-2874859f7caefa0f.js +0 -29
- package/_standalone/.next/static/chunks/1880-7abf971bcfd2389b.js +0 -11
- package/_standalone/.next/static/chunks/254-32719a9bea2e74f0.js +0 -1
- package/_standalone/.next/static/chunks/362.a77be2f206db7b19.js +0 -1
- package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +0 -1
- package/_standalone/.next/static/chunks/54a60aa6.b97ba5e6900c089b.js +0 -79
- package/_standalone/.next/static/chunks/6087.0c32d26d0262c8e7.js +0 -1
- package/_standalone/.next/static/chunks/7035-2af69391c7b1ad95.js +0 -1
- package/_standalone/.next/static/chunks/8131.5e0bdb36bb91f212.js +0 -1
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/_global-error/page-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-f006a70f6889eb56.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-bd522e428e3acb78.js +0 -5
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/raw/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/page-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/loading-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/page-45140253e07a135a.js +0 -7
- package/_standalone/.next/static/chunks/app/trash/page-c7f14311f040009e.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-62cfae628e31d411.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e240db6d5049d336.js +0 -1
- package/_standalone/.next/static/chunks/webpack-521ae5a2ddf0e396.js +0 -1
- package/_standalone/.next/static/css/66f8a81e4eda06d4.css +0 -1
- /package/_standalone/.next/static/{3gMJ8EaZfDgHmB0NR0Q4T → 2ksXveDzEcnCMRIElDkLq}/_ssgManifest.js +0 -0
|
@@ -313,6 +313,58 @@ export const panelsEn = {
|
|
|
313
313
|
recentActivity: 'Recent Activity',
|
|
314
314
|
viewAll: 'View all',
|
|
315
315
|
showLess: 'Show less',
|
|
316
|
+
addCustomAgent: 'Add your own agent',
|
|
317
|
+
addCustomAgentTitle: 'Add Custom Agent',
|
|
318
|
+
editCustomAgentTitle: (name: string) => `Edit ${name}`,
|
|
319
|
+
customAgentName: 'Agent Name',
|
|
320
|
+
customAgentNamePlaceholder: 'e.g. QCLaw, WorkBuddy',
|
|
321
|
+
customAgentDir: 'Config Directory',
|
|
322
|
+
customAgentDirPlaceholder: '~/.qclaw/',
|
|
323
|
+
customAgentDirHint: 'Common: ~/.xxx/ or ~/Library/Application Support/',
|
|
324
|
+
customAgentKeyPreview: (key: string) => `Key: ${key}`,
|
|
325
|
+
customAgentContinue: 'Continue',
|
|
326
|
+
customAgentDetecting: 'Detecting...',
|
|
327
|
+
customAgentDirFound: 'Directory found',
|
|
328
|
+
customAgentDirNotFound: 'Not found yet — agent will appear when installed',
|
|
329
|
+
customAgentDetectTimeout: 'Detection timed out, using defaults',
|
|
330
|
+
customAgentDetectedTitle: 'Detected Configuration',
|
|
331
|
+
customAgentDefaultTitle: 'Default Configuration',
|
|
332
|
+
customAgentConfigLabel: 'MCP Config',
|
|
333
|
+
customAgentFormatLabel: 'Format',
|
|
334
|
+
customAgentTransportLabel: 'Transport',
|
|
335
|
+
customAgentSkillsLabel: 'Skills',
|
|
336
|
+
customAgentSkillsFound: (n: number) => `${n} skill${n !== 1 ? 's' : ''} found`,
|
|
337
|
+
customAgentSkillsNone: 'Not detected',
|
|
338
|
+
customAgentSkillDir: 'Skills Directory',
|
|
339
|
+
customAgentSkillDirHint: 'Where skills are installed for this agent',
|
|
340
|
+
customAgentSkillDirPlaceholder: '~/.xxx/skills/',
|
|
341
|
+
customAgentCustomize: 'Customize these settings',
|
|
342
|
+
customAgentAdd: 'Add Agent',
|
|
343
|
+
customAgentAdding: 'Adding...',
|
|
344
|
+
customAgentSave: 'Save Changes',
|
|
345
|
+
customAgentSaving: 'Saving...',
|
|
346
|
+
customAgentRetry: 'Retry',
|
|
347
|
+
customAgentAdded: (name: string) => `${name} added`,
|
|
348
|
+
customAgentUpdated: (name: string) => `${name} updated`,
|
|
349
|
+
customAgentRemoved: (name: string) => `${name} removed`,
|
|
350
|
+
customAgentRemoveTitle: (name: string) => `Remove "${name}"?`,
|
|
351
|
+
customAgentRemoveMessage: 'This removes the agent from MindOS. No files will be deleted on disk.',
|
|
352
|
+
customAgentRemoveConfirm: 'Remove',
|
|
353
|
+
customAgentConfigPath: 'MCP Config File Path',
|
|
354
|
+
customAgentConfigKey: 'Config Key',
|
|
355
|
+
customAgentFormat: 'Format',
|
|
356
|
+
customAgentTransport: 'Transport',
|
|
357
|
+
customAgentProjectConfig: 'Project Config (optional)',
|
|
358
|
+
customAgentCliBinary: 'CLI Binary (optional)',
|
|
359
|
+
customAgentCliBinaryPlaceholder: 'e.g. qclaw',
|
|
360
|
+
customAgentEdit: 'Edit',
|
|
361
|
+
customAgentRemove: 'Remove',
|
|
362
|
+
customAgentCancel: 'Cancel',
|
|
363
|
+
customAgentNetworkError: 'Network error. Please try again.',
|
|
364
|
+
customAgentFailedSave: 'Failed to save',
|
|
365
|
+
customAgentFailedRemove: 'Failed to remove',
|
|
366
|
+
customAgentKeyConflict: (key: string) => `An agent with key "${key}" already exists`,
|
|
367
|
+
customAgentBuiltinConflict: (name: string) => `Conflicts with built-in agent "${name}"`,
|
|
316
368
|
},
|
|
317
369
|
mcp: {
|
|
318
370
|
title: 'MCP Connections',
|
|
@@ -949,6 +1001,58 @@ export const panelsZh = {
|
|
|
949
1001
|
recentActivity: '最近活动',
|
|
950
1002
|
viewAll: '查看全部',
|
|
951
1003
|
showLess: '收起',
|
|
1004
|
+
addCustomAgent: '添加自定义 Agent',
|
|
1005
|
+
addCustomAgentTitle: '添加自定义 Agent',
|
|
1006
|
+
editCustomAgentTitle: (name: string) => `编辑 ${name}`,
|
|
1007
|
+
customAgentName: 'Agent 名称',
|
|
1008
|
+
customAgentNamePlaceholder: '例如 QCLaw、WorkBuddy',
|
|
1009
|
+
customAgentDir: '配置目录',
|
|
1010
|
+
customAgentDirPlaceholder: '~/.qclaw/',
|
|
1011
|
+
customAgentDirHint: '常见路径:~/.xxx/ 或 ~/Library/Application Support/',
|
|
1012
|
+
customAgentKeyPreview: (key: string) => `标识符:${key}`,
|
|
1013
|
+
customAgentContinue: '继续',
|
|
1014
|
+
customAgentDetecting: '检测中...',
|
|
1015
|
+
customAgentDirFound: '目录已找到',
|
|
1016
|
+
customAgentDirNotFound: '目录尚未创建,安装后将自动检测',
|
|
1017
|
+
customAgentDetectTimeout: '检测超时,使用默认配置',
|
|
1018
|
+
customAgentDetectedTitle: '检测到的配置',
|
|
1019
|
+
customAgentDefaultTitle: '默认配置',
|
|
1020
|
+
customAgentConfigLabel: 'MCP 配置',
|
|
1021
|
+
customAgentFormatLabel: '格式',
|
|
1022
|
+
customAgentTransportLabel: '传输协议',
|
|
1023
|
+
customAgentSkillsLabel: '技能',
|
|
1024
|
+
customAgentSkillsFound: (n: number) => `发现 ${n} 个技能`,
|
|
1025
|
+
customAgentSkillsNone: '未检测到',
|
|
1026
|
+
customAgentSkillDir: '技能目录',
|
|
1027
|
+
customAgentSkillDirHint: '此 Agent 安装技能的目录',
|
|
1028
|
+
customAgentSkillDirPlaceholder: '~/.xxx/skills/',
|
|
1029
|
+
customAgentCustomize: '自定义配置',
|
|
1030
|
+
customAgentAdd: '添加 Agent',
|
|
1031
|
+
customAgentAdding: '添加中...',
|
|
1032
|
+
customAgentSave: '保存更改',
|
|
1033
|
+
customAgentSaving: '保存中...',
|
|
1034
|
+
customAgentRetry: '重试',
|
|
1035
|
+
customAgentAdded: (name: string) => `${name} 已添加`,
|
|
1036
|
+
customAgentUpdated: (name: string) => `${name} 已更新`,
|
|
1037
|
+
customAgentRemoved: (name: string) => `${name} 已移除`,
|
|
1038
|
+
customAgentRemoveTitle: (name: string) => `移除「${name}」?`,
|
|
1039
|
+
customAgentRemoveMessage: '这将从 MindOS 中移除该 Agent,不会删除磁盘上的任何文件。',
|
|
1040
|
+
customAgentRemoveConfirm: '移除',
|
|
1041
|
+
customAgentConfigPath: 'MCP 配置文件路径',
|
|
1042
|
+
customAgentConfigKey: '配置键名',
|
|
1043
|
+
customAgentFormat: '格式',
|
|
1044
|
+
customAgentTransport: '传输协议',
|
|
1045
|
+
customAgentProjectConfig: '项目配置路径(可选)',
|
|
1046
|
+
customAgentCliBinary: 'CLI 命令名(可选)',
|
|
1047
|
+
customAgentCliBinaryPlaceholder: '例如 qclaw',
|
|
1048
|
+
customAgentEdit: '编辑',
|
|
1049
|
+
customAgentRemove: '移除',
|
|
1050
|
+
customAgentCancel: '取消',
|
|
1051
|
+
customAgentNetworkError: '网络错误,请重试。',
|
|
1052
|
+
customAgentFailedSave: '保存失败',
|
|
1053
|
+
customAgentFailedRemove: '移除失败',
|
|
1054
|
+
customAgentKeyConflict: (key: string) => `已存在标识为 "${key}" 的 Agent`,
|
|
1055
|
+
customAgentBuiltinConflict: (name: string) => `与内置 Agent "${name}" 冲突`,
|
|
952
1056
|
},
|
|
953
1057
|
mcp: {
|
|
954
1058
|
title: 'MCP 连接',
|
package/app/lib/image.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image path resolution utilities for Markdown.
|
|
3
|
+
*
|
|
4
|
+
* Converts markdown image paths (e.g., ``) to API URLs
|
|
5
|
+
* that can be served by `/api/file/raw?path=...`
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Checks if a path is an absolute path (starts with `/`).
|
|
10
|
+
*/
|
|
11
|
+
function isAbsolutePath(path: string): boolean {
|
|
12
|
+
return path.startsWith('/');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a path is a URL (starts with protocol like http://, https://, file://).
|
|
17
|
+
*/
|
|
18
|
+
function isUrl(path: string): boolean {
|
|
19
|
+
return /^(https?|file):\/\//.test(path);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Resolves an image path to a URL for the API endpoint.
|
|
24
|
+
*
|
|
25
|
+
* Rules:
|
|
26
|
+
* - Absolute paths (start with `/`) → `/api/file/raw?path=...` (strip leading slash)
|
|
27
|
+
* - URLs (http/https/file) → return as-is
|
|
28
|
+
* - Relative paths → return as-is (browser handles relative URLs)
|
|
29
|
+
*
|
|
30
|
+
* @param imagePath - The image path from markdown syntax
|
|
31
|
+
* @returns The resolved URL or path
|
|
32
|
+
*/
|
|
33
|
+
export function resolveImagePath(imagePath: string): string {
|
|
34
|
+
// Already a URL
|
|
35
|
+
if (isUrl(imagePath)) {
|
|
36
|
+
return imagePath;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Absolute path like `/.media/image.png` or `/path/to/image.png`
|
|
40
|
+
if (isAbsolutePath(imagePath)) {
|
|
41
|
+
const cleanPath = imagePath.slice(1); // Remove leading `/`
|
|
42
|
+
return `/api/file/raw?path=${encodeURIComponent(cleanPath)}`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Relative path — return as-is for browser to resolve
|
|
46
|
+
return imagePath;
|
|
47
|
+
}
|
package/app/lib/mcp-agents.ts
CHANGED
|
@@ -235,6 +235,15 @@ export const MCP_AGENTS: Record<string, AgentDef> = {
|
|
|
235
235
|
presenceCli: 'codex',
|
|
236
236
|
presenceDirs: ['~/.codex/'],
|
|
237
237
|
},
|
|
238
|
+
'antigravity': {
|
|
239
|
+
name: 'Antigravity',
|
|
240
|
+
project: '.antigravity/mcp_config.json',
|
|
241
|
+
global: '~/.gemini/antigravity/mcp_config.json',
|
|
242
|
+
key: 'mcpServers',
|
|
243
|
+
preferredTransport: 'stdio',
|
|
244
|
+
presenceCli: 'agy',
|
|
245
|
+
presenceDirs: ['~/.gemini/antigravity/'],
|
|
246
|
+
},
|
|
238
247
|
};
|
|
239
248
|
|
|
240
249
|
/**
|
|
@@ -261,6 +270,7 @@ export const SKILL_AGENT_REGISTRY: Record<string, SkillAgentRegistration> = {
|
|
|
261
270
|
'roo': { mode: 'additional', skillAgentName: 'roo' },
|
|
262
271
|
'github-copilot': { mode: 'universal' },
|
|
263
272
|
'codex': { mode: 'universal' },
|
|
273
|
+
'antigravity': { mode: 'additional', skillAgentName: 'antigravity' },
|
|
264
274
|
};
|
|
265
275
|
|
|
266
276
|
export interface SkillWorkspaceProfile {
|
package/app/lib/settings.ts
CHANGED
|
@@ -58,6 +58,8 @@ export interface ServerSettings {
|
|
|
58
58
|
cli: boolean; // Always true (CLI is mandatory)
|
|
59
59
|
mcp: boolean; // User's explicit choice during onboarding
|
|
60
60
|
};
|
|
61
|
+
/** User-defined agents not built into MindOS. */
|
|
62
|
+
customAgents?: import('./custom-agents').CustomAgentDef[];
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
const DEFAULTS: ServerSettings = {
|
|
@@ -216,6 +218,7 @@ export function readSettings(): ServerSettings {
|
|
|
216
218
|
return Object.keys(result).length > 0 ? result : undefined;
|
|
217
219
|
})(),
|
|
218
220
|
connectionMode: inferConnectionMode(parsed),
|
|
221
|
+
customAgents: Array.isArray(parsed.customAgents) ? parsed.customAgents as import('./custom-agents').CustomAgentDef[] : undefined,
|
|
219
222
|
};
|
|
220
223
|
} catch {
|
|
221
224
|
// Config file missing or corrupt → force setup wizard
|
|
@@ -246,6 +249,7 @@ export function writeSettings(settings: ServerSettings): void {
|
|
|
246
249
|
if (settings.acpAgents !== undefined) merged.acpAgents = settings.acpAgents;
|
|
247
250
|
if (settings.baseUrlCompat !== undefined) merged.baseUrlCompat = settings.baseUrlCompat;
|
|
248
251
|
if (settings.connectionMode !== undefined) merged.connectionMode = settings.connectionMode;
|
|
252
|
+
if (settings.customAgents !== undefined) merged.customAgents = settings.customAgents;
|
|
249
253
|
// setupPending: false/undefined → remove the field (cleanup); true → set it
|
|
250
254
|
if ('setupPending' in settings) {
|
|
251
255
|
if (settings.setupPending) merged.setupPending = true;
|
package/bin/commands/start.js
CHANGED
|
@@ -59,7 +59,11 @@ export const meta = {
|
|
|
59
59
|
* @returns {Promise<void>}
|
|
60
60
|
*/
|
|
61
61
|
export const run = async (args, flags) => {
|
|
62
|
-
|
|
62
|
+
// Must be checked BEFORE isDaemon — when a daemon manager has already launched
|
|
63
|
+
// us, re-entering the daemon installation path causes a recursive loop.
|
|
64
|
+
const launchedByDaemon =
|
|
65
|
+
process.env.LAUNCHED_BY_LAUNCHD === '1' || !!process.env.INVOCATION_ID;
|
|
66
|
+
const isDaemon = !launchedByDaemon && (Boolean(flags.daemon) || isDaemonMode());
|
|
63
67
|
const isVerbose = Boolean(flags.verbose);
|
|
64
68
|
const extra = args.join(' ');
|
|
65
69
|
|
|
@@ -212,9 +216,6 @@ export const run = async (args, flags) => {
|
|
|
212
216
|
// When launched by a daemon manager (launchd/systemd), wait for ports to
|
|
213
217
|
// free instead of exiting immediately — the previous instance may still be
|
|
214
218
|
// shutting down after a restart/update.
|
|
215
|
-
const launchedByDaemon =
|
|
216
|
-
process.env.LAUNCHED_BY_LAUNCHD === '1' || !!process.env.INVOCATION_ID; /* systemd sets INVOCATION_ID */
|
|
217
|
-
|
|
218
219
|
if (launchedByDaemon) {
|
|
219
220
|
const { waitForPortFree } = await import('../lib/gateway.js');
|
|
220
221
|
const webOk = await waitForPortFree(Number(webPort), { retries: 60, intervalMs: 500 });
|
package/bin/commands/update.js
CHANGED
|
@@ -8,7 +8,7 @@ import { execSync, spawn as nodeSpawn } from 'node:child_process';
|
|
|
8
8
|
import { existsSync, readFileSync, writeFileSync, rmSync, realpathSync } from 'node:fs';
|
|
9
9
|
import { dirname, resolve } from 'node:path';
|
|
10
10
|
|
|
11
|
-
import { ROOT, BUILD_STAMP, CONFIG_PATH, LOG_PATH } from '../lib/constants.js';
|
|
11
|
+
import { ROOT, BUILD_STAMP, CONFIG_PATH, LOG_PATH, MINDOS_DIR } from '../lib/constants.js';
|
|
12
12
|
import { bold, dim, cyan, green, red, yellow } from '../lib/colors.js';
|
|
13
13
|
import { execInherited } from '../lib/shell.js';
|
|
14
14
|
import { EXIT } from '../lib/command.js';
|
|
@@ -21,15 +21,19 @@ import { stripBom } from '../lib/jsonc.js';
|
|
|
21
21
|
/**
|
|
22
22
|
* Dynamically resolve the new ROOT after `npm install -g`.
|
|
23
23
|
* This is needed because constants are evaluated at module load time.
|
|
24
|
+
*
|
|
25
|
+
* Skips ~/.mindos/bin/ — that directory contains our own shell shim
|
|
26
|
+
* (not a JS file); resolving ROOT from it yields ~/.mindos/ which is wrong.
|
|
24
27
|
*/
|
|
25
28
|
function getUpdatedRoot() {
|
|
29
|
+
const shimBinDir = resolve(MINDOS_DIR, 'bin');
|
|
26
30
|
try {
|
|
27
31
|
const whichCmd = process.platform === 'win32' ? 'where mindos' : 'which mindos';
|
|
28
32
|
const mindosBin = execSync(whichCmd, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] }).trim().split(/\r?\n/)[0];
|
|
29
33
|
if (mindosBin) {
|
|
30
34
|
let cliPath;
|
|
31
35
|
try { cliPath = realpathSync(mindosBin); } catch { cliPath = mindosBin; }
|
|
32
|
-
if (cliPath) {
|
|
36
|
+
if (cliPath && resolve(dirname(cliPath)) !== shimBinDir) {
|
|
33
37
|
return resolve(dirname(cliPath), '..');
|
|
34
38
|
}
|
|
35
39
|
}
|
package/bin/lib/gateway.js
CHANGED
|
@@ -13,8 +13,12 @@ import { stripBom } from './jsonc.js';
|
|
|
13
13
|
* Dynamically resolve the current mindos CLI path.
|
|
14
14
|
* This is needed because CLI_PATH is evaluated at module load time,
|
|
15
15
|
* but after `npm install -g @geminilight/mindos@latest`, the path may have changed.
|
|
16
|
+
*
|
|
17
|
+
* Skips ~/.mindos/bin/ — that directory contains our own shell shim
|
|
18
|
+
* (not a JS file), which must not be passed to `node` as ExecStart.
|
|
16
19
|
*/
|
|
17
20
|
function getCurrentCliPath() {
|
|
21
|
+
const shimBinDir = resolve(MINDOS_DIR, 'bin');
|
|
18
22
|
try {
|
|
19
23
|
const whichCmd = process.platform === 'win32' ? 'where mindos' : 'which mindos';
|
|
20
24
|
// `where` on Windows can return multiple lines; take the first match
|
|
@@ -22,9 +26,9 @@ function getCurrentCliPath() {
|
|
|
22
26
|
if (mindosBin) {
|
|
23
27
|
try {
|
|
24
28
|
const realPath = realpathSync(mindosBin);
|
|
25
|
-
if (existsSync(realPath)) return realPath;
|
|
29
|
+
if (existsSync(realPath) && resolve(dirname(realPath)) !== shimBinDir) return realPath;
|
|
26
30
|
} catch {}
|
|
27
|
-
if (existsSync(mindosBin)) return mindosBin;
|
|
31
|
+
if (existsSync(mindosBin) && resolve(dirname(mindosBin)) !== shimBinDir) return mindosBin;
|
|
28
32
|
}
|
|
29
33
|
} catch {}
|
|
30
34
|
return CLI_PATH;
|
package/bin/lib/mcp-agents.js
CHANGED
|
@@ -217,6 +217,15 @@ export const MCP_AGENTS = {
|
|
|
217
217
|
presenceCli: 'codex',
|
|
218
218
|
presenceDirs: ['~/.codex/'],
|
|
219
219
|
},
|
|
220
|
+
'antigravity': {
|
|
221
|
+
name: 'Antigravity',
|
|
222
|
+
project: '.antigravity/mcp_config.json',
|
|
223
|
+
global: '~/.gemini/antigravity/mcp_config.json',
|
|
224
|
+
key: 'mcpServers',
|
|
225
|
+
preferredTransport: 'stdio',
|
|
226
|
+
presenceCli: 'agy',
|
|
227
|
+
presenceDirs: ['~/.gemini/antigravity/'],
|
|
228
|
+
},
|
|
220
229
|
};
|
|
221
230
|
|
|
222
231
|
/**
|
|
@@ -243,6 +252,7 @@ export const SKILL_AGENT_REGISTRY = {
|
|
|
243
252
|
'roo': { mode: 'additional', skillAgentName: 'roo' },
|
|
244
253
|
'github-copilot': { mode: 'universal' },
|
|
245
254
|
'codex': { mode: 'universal' },
|
|
255
|
+
'antigravity': { mode: 'additional', skillAgentName: 'antigravity' },
|
|
246
256
|
};
|
|
247
257
|
|
|
248
258
|
export function detectAgentPresence(agentKey) {
|
package/mcp/dist/index.cjs
CHANGED
|
@@ -123,7 +123,7 @@ ${l}`).join(`
|
|
|
123
123
|
`);return de(Av(c))}catch(o){return xe(String(o))}}),t.registerTool("mindos_get_history",{title:"Get File Git History",description:"Get git commit history for a file.",inputSchema:E.object({path:E.string().min(1),limit:E.number().int().min(1).max(50).default(10)}),annotations:{readOnlyHint:!0}},async({path:i,limit:o})=>{try{let c=(await r("/api/git",{op:"history",path:i,limit:String(o)})).entries;if(c.length===0)return de(`No git history found for "${i}"`);let u=[`# Git History: ${i}`,"",`${c.length} commit(s):`,""];for(let l of c)u.push(`- **${l.date}** \`${l.hash.slice(0,8)}\` \u2014 ${l.message} (${l.author})`);return de(u.join(`
|
|
124
124
|
`))}catch(s){return xe(String(s))}}),t.registerTool("mindos_get_file_at_version",{title:"Read File at Git Version",description:"Read file content at a specific git commit.",inputSchema:E.object({path:E.string().min(1),commit:E.string().min(4)}),annotations:{readOnlyHint:!0}},async({path:i,commit:o})=>{try{let c=(await r("/api/git",{op:"show",path:i,commit:o})).content;return de(Av(`# ${i} @ ${o.slice(0,8)}
|
|
125
125
|
|
|
126
|
-
${c}`))}catch(s){return xe(String(s))}})}function _E(){let t=new yc({name:"mindos-mcp-server",version:"1.0.0"});return fL(t),t}async function mL(){if(uL==="http"){let t=new Map,e=xE({host:Ru});e.get("/api/health",(
|
|
126
|
+
${c}`))}catch(s){return xe(String(s))}})}function _E(){let t=new yc({name:"mindos-mcp-server",version:"1.0.0"});return fL(t),t}async function mL(){if(uL==="http"){let t=new Map,e=xE({host:Ru});e.get("/api/health",(a,i)=>{i.json({ok:!0,service:"mindos"})}),Cu&&e.use(jv,(a,i,o)=>{if(a.headers.authorization?.replace("Bearer ","")!==Cu){i.status(401).json({error:"Unauthorized"});return}o()}),e.all(jv,async(a,i)=>{let o=a.headers["mcp-session-id"];if(o&&t.has(o)){await t.get(o).transport.handleRequest(a,i,a.body);return}if(o&&!t.has(o)){i.status(404).json({jsonrpc:"2.0",error:{code:-32e3,message:"Session not found"}});return}let s=new Ec({sessionIdGenerator:()=>(0,wE.randomUUID)()}),c=_E();s.onclose=()=>{let l=s.sessionId;l&&t.delete(l),console.error(`[MCP] Session ${l?.slice(0,8)} closed (${t.size} active)`)},await c.connect(s),await s.handleRequest(a,i,a.body);let u=s.sessionId;if(u){t.set(u,{transport:s,server:c});let l=c.server.getClientVersion(),p=l?.name?` (${l.name})`:"";console.error(`[MCP] New session ${u.slice(0,8)}${p} (${t.size} active)`)}});let r=(0,kE.createServer)(e);r.listen(bE,Ru,()=>{console.error(`MindOS MCP server (HTTP) listening on http://${Ru==="0.0.0.0"?"127.0.0.1":Ru}:${bE}${jv}`),console.error(`API backend: ${Co}`)});let n=process.env.LAUNCHED_BY_LAUNCHD==="1"||!!process.env.INVOCATION_ID;!process.stdin.isTTY&&!n&&(process.stdin.resume(),process.stdin.on("end",()=>{console.error("[MindOS MCP] Parent process exited (stdin closed), shutting down"),r.close(),setTimeout(()=>process.exit(0),1e3)}),process.stdin.on("error",()=>{}))}else{let t=_E(),e=new bc;await t.connect(e),console.error(`MindOS MCP server started (stdio, API: ${Co})`)}}mL().catch(t=>{console.error("Fatal:",t),process.exit(1)});
|
|
127
127
|
/*! Bundled license information:
|
|
128
128
|
|
|
129
129
|
depd/index.js:
|
package/mcp/src/index.ts
CHANGED
|
@@ -675,7 +675,12 @@ async function main() {
|
|
|
675
675
|
console.error(`API backend: ${BASE_URL}`);
|
|
676
676
|
});
|
|
677
677
|
|
|
678
|
-
|
|
678
|
+
// Detect parent-exit via stdin EOF — but only when stdin is a real pipe
|
|
679
|
+
// from a parent process (e.g. Desktop/Electron). Under launchd/systemd,
|
|
680
|
+
// stdin is /dev/null which emits EOF immediately and would kill the server.
|
|
681
|
+
const launchedByDaemon =
|
|
682
|
+
process.env.LAUNCHED_BY_LAUNCHD === '1' || !!process.env.INVOCATION_ID;
|
|
683
|
+
if (!process.stdin.isTTY && !launchedByDaemon) {
|
|
679
684
|
process.stdin.resume();
|
|
680
685
|
process.stdin.on('end', () => {
|
|
681
686
|
console.error('[MindOS MCP] Parent process exited (stdin closed), shutting down');
|
package/package.json
CHANGED
package/skills/mindos/SKILL.md
CHANGED
|
@@ -4,12 +4,18 @@ description: >
|
|
|
4
4
|
Operate a MindOS knowledge base: update notes, search, organize files, execute SOPs/workflows,
|
|
5
5
|
retrospective, append CSV, cross-agent handoff, route unstructured input to the right files,
|
|
6
6
|
distill experience, sync related docs.
|
|
7
|
-
|
|
7
|
+
更新笔记, 搜索知识库, 整理文件, 执行SOP/工作流, 复盘, 追加CSV, 跨Agent交接,
|
|
8
|
+
路由非结构化输入到对应文件, 提炼经验, 同步关联文档.
|
|
8
9
|
NOT for editing app source, project docs, or paths outside the KB.
|
|
9
10
|
Core concepts: Space, Instruction (INSTRUCTION.md), Skill (SKILL.md); notes can embody both.
|
|
10
|
-
Trigger when user asks to: save or record
|
|
11
|
-
a file, organize notes, run a workflow or SOP, capture decisions from a session, append rows
|
|
12
|
-
to a table or CSV, hand off context to another agent
|
|
11
|
+
Trigger when user asks to: save or record anything, search for prior notes or context, update or
|
|
12
|
+
edit a file, organize notes, run a workflow or SOP, capture decisions from a session, append rows
|
|
13
|
+
to a table or CSV, hand off context to another agent, check if something was discussed before,
|
|
14
|
+
look up a past decision, distill lessons learned, prepare context for a meeting.
|
|
15
|
+
Also trigger on Chinese: 帮我记下来, 搜一下笔记, 更新知识库, 整理文件, 复盘, 提炼经验,
|
|
16
|
+
保存, 记录, 交接, 查一下之前的, 有没有相关笔记, 把这个存起来.
|
|
17
|
+
When the user's question implies stored context may exist (past decisions, previous discussions,
|
|
18
|
+
meeting records), consider searching MindOS even if they don't explicitly mention it.
|
|
13
19
|
---
|
|
14
20
|
|
|
15
21
|
# MindOS Skill
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mindos-max
|
|
3
|
+
description: >
|
|
4
|
+
The user's second brain — a persistent, shared knowledge base that ALL agents read from and write to.
|
|
5
|
+
MindOS is the global memory layer: decisions, meeting notes, SOPs, debugging lessons, architecture
|
|
6
|
+
choices, research findings, preferences, and conversation summaries all live here.
|
|
7
|
+
|
|
8
|
+
PROACTIVE USE — do not wait for the user to say "save to knowledge base":
|
|
9
|
+
(1) Before answering any question about past decisions, discussions, or context → search MindOS first.
|
|
10
|
+
(2) After any valuable output (decision made, bug fixed, lesson learned, meeting summarized) → offer to save it.
|
|
11
|
+
(3) When handing off to another agent or ending a session → persist key context to MindOS.
|
|
12
|
+
|
|
13
|
+
Trigger on ALL of these, even without explicit "MindOS" mention: save/record anything,
|
|
14
|
+
search prior notes, update files, organize/restructure, run SOPs or workflows, retrospective,
|
|
15
|
+
append CSV/table data, cross-agent handoff, distill experience, sync related docs, check if
|
|
16
|
+
something was discussed before, look up a past decision, find a template, prepare meeting context,
|
|
17
|
+
daily logging, track goals. Also trigger on Chinese equivalents: 帮我记下来, 搜一下笔记,
|
|
18
|
+
更新知识库, 整理文件, 复盘, 提炼经验, 保存, 记录, 交接.
|
|
19
|
+
|
|
20
|
+
When in doubt whether MindOS applies — it probably does. Check anyway.
|
|
21
|
+
NOT for editing app source code or project repos outside the KB.
|
|
22
|
+
Core concepts: Space, Instruction (INSTRUCTION.md), Skill (SKILL.md).
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# MindOS Skill
|
|
26
|
+
|
|
27
|
+
<!-- version: 3.1.0-max — aggressive global memory mode -->
|
|
28
|
+
|
|
29
|
+
> **You are the user's memory.** Every agent shares MindOS. If something is worth remembering, save it.
|
|
30
|
+
> If you need context, check MindOS first. Be proactive — don't wait to be asked.
|
|
31
|
+
|
|
32
|
+
## Proactive memory behavior
|
|
33
|
+
|
|
34
|
+
Unlike the conservative version of this skill, you should **actively look for opportunities** to use MindOS:
|
|
35
|
+
|
|
36
|
+
- **Before answering questions about past work**: If the user asks "what did we decide about X?" or "how did we handle Y?", search MindOS before guessing. Even if they don't mention MindOS, their question implies stored context exists.
|
|
37
|
+
- **After completing meaningful work**: If you just helped debug something, made an architecture decision, summarized a meeting, or resolved a complex issue — proactively ask: "Want me to save this to MindOS so the team can reference it later?"
|
|
38
|
+
- **During handoffs**: When ending a session or passing context to another agent, persist the key decisions and context to MindOS so nothing is lost.
|
|
39
|
+
- **When you notice knowledge gaps**: If you search MindOS and find nothing for a topic the user clearly has opinions about, suggest creating a note for it.
|
|
40
|
+
|
|
41
|
+
The goal: the user should never have to remember to use MindOS. You remember for them.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## CLI commands
|
|
46
|
+
|
|
47
|
+
Use `mindos file <subcommand>` for all knowledge base operations. Add `--json` for structured output.
|
|
48
|
+
|
|
49
|
+
| Operation | Command |
|
|
50
|
+
|-----------|---------|
|
|
51
|
+
| List files | `mindos file list` |
|
|
52
|
+
| Read file | `mindos file read <path>` |
|
|
53
|
+
| Write/overwrite | `mindos file write <path> --content "..."` |
|
|
54
|
+
| Create new file | `mindos file create <path> --content "..."` |
|
|
55
|
+
| Append to file | `mindos file append <path> --content "..."` |
|
|
56
|
+
| Edit section | `mindos file edit-section <path> -H "## Heading" --content "..."` |
|
|
57
|
+
| Insert after heading | `mindos file insert-heading <path> -H "## Heading" --content "..."` |
|
|
58
|
+
| Append CSV row | `mindos file append-csv <path> --row "col1,col2,col3"` |
|
|
59
|
+
| Delete file | `mindos file delete <path>` |
|
|
60
|
+
| Rename/move | `mindos file rename <old> <new>` |
|
|
61
|
+
| Search | `mindos search "query"` |
|
|
62
|
+
| Backlinks | `mindos file backlinks <path>` |
|
|
63
|
+
| Recent files | `mindos file recent --limit 10` |
|
|
64
|
+
| Git history | `mindos file history <path>` |
|
|
65
|
+
| List spaces | `mindos space list` |
|
|
66
|
+
| Create space | `mindos space create "name"` |
|
|
67
|
+
|
|
68
|
+
> **MCP users:** If you only have MCP tools (`mindos_*`), use them directly — they are self-describing via their schemas. Prefer CLI when available (lower token cost).
|
|
69
|
+
|
|
70
|
+
### CLI setup
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install -g @geminilight/mindos
|
|
74
|
+
# Remote mode: mindos config set url http://<IP>:<PORT> && mindos config set authToken <token>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Rules
|
|
80
|
+
|
|
81
|
+
1. **Bootstrap first** — list the KB tree to understand structure before searching or writing.
|
|
82
|
+
2. **Default to read-only.** Only write when the user explicitly asks to save, record, organize, or edit. Lookup / summarize / quote = no writes.
|
|
83
|
+
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.
|
|
84
|
+
4. **Multi-file edits require a plan first.** Present the full change list; execute only after approval.
|
|
85
|
+
5. After create/delete/move/rename > **sync affected READMEs** automatically.
|
|
86
|
+
6. **Read before write.** Always read a file before overwriting it. Never write based on assumptions.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## NEVER do (hard-won pitfalls)
|
|
91
|
+
|
|
92
|
+
- **NEVER write to the KB root** unless explicitly told. Root is for governance files only. New content goes under the most fitting subdirectory.
|
|
93
|
+
- **NEVER assume directory names.** Infer from the actual bootstrap tree — the KB may use Chinese names or flat layout.
|
|
94
|
+
- **NEVER use full-file overwrite for a small edit.** Use `mindos file edit-section` or `mindos file insert-heading` for targeted changes. Full rewrites destroy git diffs.
|
|
95
|
+
- **NEVER search with a single keyword.** Fire 2-4 parallel searches (synonyms, abbreviations, Chinese/English variants).
|
|
96
|
+
- **NEVER modify `INSTRUCTION.md` or `README.md` without confirmation.** Governance docs — treat as high-sensitivity.
|
|
97
|
+
- **NEVER create a file without checking siblings.** Read 1-2 files in the target directory to learn local style.
|
|
98
|
+
- **NEVER leave orphan references.** After rename/move, check backlinks and update every referring file.
|
|
99
|
+
- **NEVER skip routing confirmation for multi-file writes.** The user's mental model may differ from yours.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## MindOS concepts
|
|
104
|
+
|
|
105
|
+
- **Space** — Knowledge partitions organized the way you think. Agents follow the same structure.
|
|
106
|
+
- **Instruction** — A rules file (`INSTRUCTION.md`) all connected agents obey.
|
|
107
|
+
- **Skill** — Teaches agents how to read, write, and organize the KB.
|
|
108
|
+
|
|
109
|
+
Notes can embody both Instruction and Skill — they're just Markdown files in the tree.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Decision tree
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
User request
|
|
117
|
+
|
|
|
118
|
+
|- Lookup / summarize / quote?
|
|
119
|
+
| -> [Read-only]: search -> read -> answer with citations. No writes.
|
|
120
|
+
|
|
|
121
|
+
|- Save / record / update / organize specific content?
|
|
122
|
+
| |- Single file -> [Single-file edit]
|
|
123
|
+
| -> Multiple files or unclear -> [Multi-file routing] -- plan first
|
|
124
|
+
|
|
|
125
|
+
|- Structural change (rename / move / delete / reorganize)?
|
|
126
|
+
| -> [Structural path] -- check backlinks before and after
|
|
127
|
+
|
|
|
128
|
+
|- Procedural / repeatable task?
|
|
129
|
+
| -> [SOP path] -- find and follow existing SOP, or create one
|
|
130
|
+
|
|
|
131
|
+
|- Retrospective / distill / handoff?
|
|
132
|
+
| -> [Retrospective path]
|
|
133
|
+
|
|
|
134
|
+
-> Ambiguous?
|
|
135
|
+
-> ASK. Propose 2-3 specific options based on KB state.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Judgment heuristics
|
|
141
|
+
|
|
142
|
+
**Save intent boundary:**
|
|
143
|
+
- "save this" / "record" / "write down" = write
|
|
144
|
+
- "search" / "summarize" / "look up" = read-only
|
|
145
|
+
- "organize" -> ask: display only, or write back?
|
|
146
|
+
|
|
147
|
+
**File location uncertainty:**
|
|
148
|
+
- Can't decide in 5 seconds -> use nearest existing directory, inform user
|
|
149
|
+
- "Just put it somewhere" -> inbox, propose classification after
|
|
150
|
+
|
|
151
|
+
**Scope creep:**
|
|
152
|
+
- Input routes to >5 files -> pause, confirm scope
|
|
153
|
+
- "Update all of these" spanning multiple topics -> split into batches
|
|
154
|
+
|
|
155
|
+
**Citation:** KB-cited facts must include the file path.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Post-task hooks
|
|
160
|
+
|
|
161
|
+
After write tasks (not simple reads), scan this table. At most 1 proposal; highest priority wins. Check `.mindos/user-preferences.md` suppression first.
|
|
162
|
+
|
|
163
|
+
| Hook | Priority | Condition |
|
|
164
|
+
|------|----------|-----------|
|
|
165
|
+
| Experience capture | high | Debugging, troubleshooting, or multi-round work |
|
|
166
|
+
| Consistency sync | high | Edited file with backlinks |
|
|
167
|
+
| SOP drift | medium | Followed SOP but diverged |
|
|
168
|
+
| Linked update | medium | Changed CSV/TODO status with related docs |
|
|
169
|
+
| Structure classification | medium | Created file in inbox/temp location |
|
|
170
|
+
| Pattern extraction | low | 3+ similar operations this session |
|
|
171
|
+
|
|
172
|
+
If a hook triggers -> read [references/post-task-hooks.md](../mindos/references/post-task-hooks.md).
|
|
173
|
+
|
|
174
|
+
## Preference capture
|
|
175
|
+
|
|
176
|
+
When user expresses a standing preference -> read [references/preference-capture.md](../mindos/references/preference-capture.md) and follow confirm-then-write flow.
|
|
177
|
+
|
|
178
|
+
## SOP authoring
|
|
179
|
+
|
|
180
|
+
When creating/rewriting an SOP -> read [references/sop-template.md](../mindos/references/sop-template.md).
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Error handling (CLI)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
"command not found: mindos" -> npm install -g @geminilight/mindos
|
|
188
|
+
"Mind root not configured" -> mindos onboard
|
|
189
|
+
"401 Unauthorized" -> Check AUTH_TOKEN: mindos token (on server)
|
|
190
|
+
"ECONNREFUSED" -> Start server: mindos start
|
|
191
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "mindos-max",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "我昨天跟产品经理开会讨论了一个新的用户反馈系统的方案,他们建议用NPS打分加上开放式评论,我觉得挺好的。帮我把这个决策记下来,以后其他同事问起来可以查到。",
|
|
7
|
+
"expected_output": "Agent should recognize this as a 'save decision from meeting' task, use MindOS to store the meeting note with proper structure (date, attendees implied, decision, rationale), and place it in an appropriate directory in the KB.",
|
|
8
|
+
"files": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 2,
|
|
12
|
+
"prompt": "上周我记得我们讨论过API限流的方案,具体是怎么定的来着?好像是每分钟100次还是200次?我找不到了。",
|
|
13
|
+
"expected_output": "Agent should recognize this as a 'search for past decision' task, use MindOS search to find the API rate limiting discussion, and return the relevant content with file path citation.",
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 3,
|
|
18
|
+
"prompt": "I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again.",
|
|
19
|
+
"expected_output": "Agent should recognize this as 'capture debugging experience/lessons learned', use MindOS to save a structured troubleshooting note with problem description, root cause, solution, and prevention tips.",
|
|
20
|
+
"files": []
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/eval_metadata.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "capture-debugging-experience-en",
|
|
4
|
+
"prompt": "I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{"text": "Uses mindos CLI to save debugging experience note", "type": "behavioral"},
|
|
7
|
+
{"text": "Structured note includes: problem description, root cause, solution, prevention tips", "type": "content"},
|
|
8
|
+
{"text": "Bootstraps KB tree before writing", "type": "behavioral"},
|
|
9
|
+
{"text": "Recognizes this as experience capture / lessons learned scenario", "type": "behavioral"}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "capture-debugging-experience-en",
|
|
4
|
+
"run_type": "old_skill",
|
|
5
|
+
"skill": "mindos-original",
|
|
6
|
+
"expectations": [
|
|
7
|
+
{
|
|
8
|
+
"text": "Uses mindos CLI to save debugging experience note",
|
|
9
|
+
"passed": true,
|
|
10
|
+
"evidence": "Uses `mindos file insert-heading \"engineering/debugging-experiences.md\"` in Step 5 — chose to append to existing file rather than create new."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"text": "Structured note includes: problem description, root cause, solution, prevention tips",
|
|
14
|
+
"passed": true,
|
|
15
|
+
"evidence": "Content has Problem, Root Cause, Solution, Rule (with code review checklist), Debugging Approach, Tags sections."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"text": "Bootstraps KB tree before writing",
|
|
19
|
+
"passed": true,
|
|
20
|
+
"evidence": "Step 1 runs `mindos file list`."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"text": "Recognizes this as experience capture / lessons learned scenario",
|
|
24
|
+
"passed": true,
|
|
25
|
+
"evidence": "Decision tree analysis identifies 'save / record' path and Experience capture hook (high priority)."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|