@geminilight/mindos 0.6.40 â 0.6.42
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 +17 -16
- 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 +5 -1
- package/_standalone/.next/routes-manifest.json +6 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +2 -2
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +1 -1
- 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.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.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.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.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route.js +1 -0
- package/_standalone/.next/server/app/api/mcp/uninstall/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.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_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +4 -4
- 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 +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +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 +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 +2 -2
- 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-paths-manifest.json +17 -16
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/2190.js +11 -0
- package/_standalone/.next/server/chunks/{6365.js â 3262.js} +2 -2
- package/_standalone/.next/server/chunks/5648.js +2 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +1 -1
- package/_standalone/.next/server/chunks/953.js +1 -1
- package/_standalone/.next/server/chunks/9539.js +219 -0
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/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/GB-YReQ58tsvCuwlzrkMZ/_buildManifest.js +1 -0
- package/_standalone/.next/static/chunks/1053-67f0ce444d1227e2.js +29 -0
- package/_standalone/.next/static/chunks/{8663-de911d2d395622be.js â 1880-c2a9e76201841c86.js} +1 -1
- package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +1 -0
- package/_standalone/.next/static/chunks/4563-b2a2ce80aff845af.js +6 -0
- package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +1 -0
- package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/_global-error/page-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-773071a99c4daac2.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-eac6c5f6650dbf62.js +5 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/page-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +1 -0
- package/_standalone/.next/static/chunks/app/{layout-9378c1c8d3e5761b.js â layout-7cb442df92212140.js} +55 -55
- package/_standalone/.next/static/chunks/app/{page-9bae420fbbdc5fff.js â page-aaee2d9bd3d3eabb.js} +1 -1
- package/_standalone/.next/static/chunks/app/setup/page-6132ea7632e08a9b.js +1 -0
- package/_standalone/.next/static/chunks/app/trash/{page-b61ef2d5cd4f8d73.js â page-7b5cbf541c315db2.js} +1 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-b72e4f88c8c48181.js +12 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-84943536516b00b2.js +1 -0
- package/_standalone/.next/static/chunks/{webpack-c28c55d0a6021a6b.js â webpack-7b276daaa930d480.js} +1 -1
- package/_standalone/.next/static/css/bc9179074eaf65ae.css +1 -0
- package/_standalone/.next/trace +63 -63
- package/_standalone/.next/types/routes.d.ts +2 -1
- package/_standalone/.next/types/validator.ts +9 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +23 -0
- package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
- package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
- package/_standalone/__tests__/core/tools.test.ts +3 -6
- package/_standalone/components/FileTree.tsx +3 -2
- package/_standalone/components/MarkdownView.tsx +30 -15
- package/_standalone/components/RightAskPanel.tsx +36 -6
- package/_standalone/components/Sidebar.tsx +3 -3
- package/_standalone/components/agents/AgentsMcpSection.tsx +27 -5
- package/_standalone/components/settings/McpAgentInstall.tsx +94 -27
- package/_standalone/components/settings/McpSkillsSection.tsx +1 -1
- package/_standalone/components/settings/McpTab.tsx +484 -340
- package/_standalone/components/settings/SettingsContent.tsx +12 -6
- package/_standalone/components/settings/types.ts +3 -0
- package/_standalone/components/setup/StepAgents.tsx +113 -47
- package/_standalone/components/setup/StepReview.tsx +14 -27
- package/_standalone/components/setup/types.ts +7 -0
- package/_standalone/data/skills/mindos/SKILL.md +92 -92
- package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
- package/_standalone/data/skills/mindos-zh/SKILL.md +100 -104
- package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/_standalone/lib/i18n/modules/features.ts +4 -4
- package/_standalone/lib/i18n/modules/knowledge.ts +4 -0
- package/_standalone/lib/i18n/modules/onboarding.ts +40 -30
- package/_standalone/lib/i18n/modules/panels.ts +6 -2
- package/_standalone/lib/i18n/modules/settings.ts +78 -6
- package/_standalone/lib/mcp-snippets.ts +5 -1
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/ask/route.ts +3 -2
- package/app/app/api/mcp/install/route.ts +15 -3
- package/app/app/api/mcp/status/route.ts +14 -6
- package/app/app/api/mcp/uninstall/route.ts +130 -0
- package/app/app/api/skills/route.ts +14 -1
- package/app/app/view/[...path]/ViewPageClient.tsx +12 -27
- package/app/components/FileTree.tsx +3 -2
- package/app/components/MarkdownView.tsx +30 -15
- package/app/components/RightAskPanel.tsx +36 -6
- package/app/components/Sidebar.tsx +3 -3
- package/app/components/agents/AgentsMcpSection.tsx +27 -5
- package/app/components/help/HelpContent.tsx +1 -0
- package/app/components/settings/McpAgentInstall.tsx +94 -27
- package/app/components/settings/McpSkillsSection.tsx +1 -1
- package/app/components/settings/McpTab.tsx +484 -340
- package/app/components/settings/SettingsContent.tsx +12 -6
- package/app/components/settings/types.ts +3 -0
- package/app/components/setup/StepAgents.tsx +113 -47
- package/app/components/setup/StepReview.tsx +14 -27
- package/app/components/setup/index.tsx +16 -14
- package/app/components/setup/types.ts +7 -0
- package/app/data/skills/mindos/SKILL.md +92 -92
- package/app/data/skills/mindos/references/write-supplement.md +119 -0
- package/app/data/skills/mindos-zh/SKILL.md +100 -104
- package/app/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/app/lib/fs.ts +0 -6
- package/app/lib/i18n/modules/features.ts +4 -4
- package/app/lib/i18n/modules/knowledge.ts +4 -0
- package/app/lib/i18n/modules/onboarding.ts +40 -30
- package/app/lib/i18n/modules/panels.ts +6 -2
- package/app/lib/i18n/modules/settings.ts +78 -6
- package/app/lib/mcp-agents.ts +1 -2
- package/app/lib/mcp-snippets.ts +5 -1
- package/app/lib/renderers/index.ts +2 -1
- package/app/lib/settings.ts +32 -0
- package/bin/cli.js +168 -1404
- package/bin/commands/agent.js +156 -20
- package/bin/commands/api.js +14 -11
- package/bin/commands/ask.js +79 -68
- package/bin/commands/build.js +26 -0
- package/bin/commands/config.js +170 -0
- package/bin/commands/dev.js +58 -0
- package/bin/commands/doctor.js +205 -0
- package/bin/commands/file.js +551 -36
- package/bin/commands/gateway.js +42 -0
- package/bin/commands/init-skills.js +56 -0
- package/bin/commands/logs.js +32 -0
- package/bin/commands/mcp-cmd.js +57 -0
- package/bin/commands/onboard.js +25 -0
- package/bin/commands/open.js +41 -0
- package/bin/commands/restart.js +48 -0
- package/bin/commands/search.js +16 -14
- package/bin/commands/space.js +96 -25
- package/bin/commands/start.js +272 -0
- package/bin/commands/status.js +2 -2
- package/bin/commands/stop.js +14 -0
- package/bin/commands/sync-cmd.js +134 -0
- package/bin/commands/token.js +98 -0
- package/bin/commands/uninstall.js +154 -0
- package/bin/commands/update.js +286 -0
- package/bin/lib/build.js +1 -1
- package/bin/lib/colors.js +8 -7
- package/bin/lib/command.js +37 -96
- package/bin/lib/config.js +5 -0
- package/bin/lib/csv.js +19 -0
- package/bin/lib/jsonc.js +12 -0
- package/bin/lib/markdown.js +69 -0
- package/bin/lib/mcp-agents.js +1 -6
- package/bin/lib/mcp-build.js +1 -1
- package/bin/lib/mcp-install.js +2 -1
- package/bin/lib/one-shot.js +88 -0
- package/bin/lib/path-expand.js +9 -0
- package/bin/lib/remote.js +65 -0
- package/bin/lib/repl.js +167 -0
- package/bin/lib/{utils.js â shell.js} +10 -26
- package/bin/lib/skill-check.js +116 -21
- package/bin/lib/sse-stream.js +167 -0
- package/package.json +2 -2
- package/scripts/setup.js +210 -120
- package/skills/mindos/SKILL.md +94 -95
- package/skills/mindos-zh/SKILL.md +103 -106
- package/_standalone/.next/server/chunks/1955.js +0 -11
- package/_standalone/.next/server/chunks/3680.js +0 -1
- package/_standalone/.next/server/chunks/4497.js +0 -219
- package/_standalone/.next/server/chunks/5560.js +0 -2
- package/_standalone/.next/static/chunks/1053-0adaccc98a752a58.js +0 -29
- package/_standalone/.next/static/chunks/3637.f9a42cca59fd5bb5.js +0 -1
- package/_standalone/.next/static/chunks/4563-c2afaeacb241d1d0.js +0 -6
- package/_standalone/.next/static/chunks/6090-c98268ca726a68d3.js +0 -1
- package/_standalone/.next/static/chunks/9371-575600301da5d6bb.js +0 -1
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/_global-error/page-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-3e08abb495ecd5fd.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-e7e0f87ad3d765ac.js +0 -5
- package/_standalone/.next/static/chunks/app/api/a2a/agents/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/page-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/help/page-3d0e1ceaa4abc243.js +0 -1
- package/_standalone/.next/static/chunks/app/setup/page-99ed3d1bb6b8f4ef.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-44fa78cbea613a78.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-400c3c09b1540c14.js +0 -1
- package/_standalone/.next/static/css/d300701f384db50d.css +0 -1
- package/_standalone/.next/static/rZLs1krFuduixvcVNe6q3/_buildManifest.js +0 -1
- package/_standalone/components/renderers/agent-inspector/manifest.ts +0 -16
- /package/_standalone/.next/static/{rZLs1krFuduixvcVNe6q3 â GB-YReQ58tsvCuwlzrkMZ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos gateway â Manage MindOS as a background OS service
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { bold, dim, cyan } from '../lib/colors.js';
|
|
6
|
+
|
|
7
|
+
export const meta = {
|
|
8
|
+
name: 'gateway',
|
|
9
|
+
group: 'Gateway',
|
|
10
|
+
summary: 'Manage background service (launchd/systemd)',
|
|
11
|
+
usage: 'mindos gateway <subcommand>',
|
|
12
|
+
examples: [
|
|
13
|
+
'mindos gateway install',
|
|
14
|
+
'mindos gateway start',
|
|
15
|
+
'mindos gateway stop',
|
|
16
|
+
'mindos gateway status',
|
|
17
|
+
'mindos gateway logs',
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const run = async (args) => {
|
|
22
|
+
const sub = args[0];
|
|
23
|
+
if (!sub) {
|
|
24
|
+
const row = (c, d) => ` ${cyan(c.padEnd(32))}${dim(d)}`;
|
|
25
|
+
console.log(`
|
|
26
|
+
${bold('mindos gateway')} â manage MindOS as a background OS service
|
|
27
|
+
|
|
28
|
+
${bold('Subcommands:')}
|
|
29
|
+
${row('mindos gateway install', 'Install and enable the service (systemd/launchd)')}
|
|
30
|
+
${row('mindos gateway uninstall', 'Disable and remove the service')}
|
|
31
|
+
${row('mindos gateway start', 'Start the service')}
|
|
32
|
+
${row('mindos gateway stop', 'Stop the service')}
|
|
33
|
+
${row('mindos gateway status', 'Show service status')}
|
|
34
|
+
${row('mindos gateway logs', 'Tail service logs')}
|
|
35
|
+
|
|
36
|
+
${dim('Shortcut: mindos start --daemon â install + start in one step')}
|
|
37
|
+
`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const { runGatewayCommand } = await import('../lib/gateway.js');
|
|
41
|
+
await runGatewayCommand(sub);
|
|
42
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos init-skills â Initialize skill rules
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { existsSync, readFileSync, mkdirSync, cpSync } from 'node:fs';
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { ROOT, CONFIG_PATH } from '../lib/constants.js';
|
|
8
|
+
import { bold, dim, cyan, green, red } from '../lib/colors.js';
|
|
9
|
+
import { EXIT } from '../lib/command.js';
|
|
10
|
+
|
|
11
|
+
export const meta = {
|
|
12
|
+
name: 'init-skills',
|
|
13
|
+
group: 'Config',
|
|
14
|
+
summary: 'Initialize skill rules',
|
|
15
|
+
usage: 'mindos init-skills',
|
|
16
|
+
hidden: true,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const run = () => {
|
|
20
|
+
console.log(`\n${bold('ðĶ Initialize Skill Rules')}\n`);
|
|
21
|
+
|
|
22
|
+
if (!existsSync(CONFIG_PATH)) {
|
|
23
|
+
console.log(` ${red('â')} Config not found. Run ${cyan('mindos onboard')} first.\n`);
|
|
24
|
+
process.exit(EXIT.ERROR);
|
|
25
|
+
}
|
|
26
|
+
let config;
|
|
27
|
+
try {
|
|
28
|
+
config = JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'));
|
|
29
|
+
} catch {
|
|
30
|
+
console.log(` ${red('â')} Failed to parse config at ${dim(CONFIG_PATH)}\n`);
|
|
31
|
+
process.exit(EXIT.ERROR);
|
|
32
|
+
}
|
|
33
|
+
const mindRoot = config.mindRoot;
|
|
34
|
+
if (!mindRoot || !existsSync(mindRoot)) {
|
|
35
|
+
console.log(` ${red('â')} Knowledge base not found: ${dim(mindRoot || '(not set)')}\n`);
|
|
36
|
+
process.exit(EXIT.ERROR);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const mindosDir = resolve(mindRoot, '.mindos');
|
|
40
|
+
const dest = resolve(mindosDir, 'user-preferences.md');
|
|
41
|
+
if (existsSync(dest)) {
|
|
42
|
+
console.log(` ${dim('skip')} .mindos/user-preferences.md (already exists)\n`);
|
|
43
|
+
} else {
|
|
44
|
+
if (!existsSync(mindosDir)) mkdirSync(mindosDir, { recursive: true });
|
|
45
|
+
const isZh = config.disabledSkills?.includes('mindos');
|
|
46
|
+
const lang = isZh ? 'zh' : 'en';
|
|
47
|
+
const src = resolve(ROOT, 'templates', 'skill-rules', lang, 'user-rules.md');
|
|
48
|
+
if (existsSync(src)) {
|
|
49
|
+
cpSync(src, dest);
|
|
50
|
+
console.log(` ${green('â')} .mindos/user-preferences.md created at ${dim(mindosDir)}\n`);
|
|
51
|
+
} else {
|
|
52
|
+
console.log(` ${dim('skip')} Template not found, create .mindos/user-preferences.md manually if needed.\n`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.log(` ${dim('Note: Operating rules are now built into the app. No install needed.')}\n`);
|
|
56
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos logs â Tail service logs
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { execSync } from 'node:child_process';
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { LOG_PATH } from '../lib/constants.js';
|
|
8
|
+
import { dim } from '../lib/colors.js';
|
|
9
|
+
|
|
10
|
+
export const meta = {
|
|
11
|
+
name: 'logs',
|
|
12
|
+
group: 'Config',
|
|
13
|
+
summary: 'Tail service logs',
|
|
14
|
+
usage: 'mindos logs',
|
|
15
|
+
examples: [
|
|
16
|
+
'mindos logs',
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const run = async (args, flags) => {
|
|
21
|
+
const { ensureMindosDir } = await import('../lib/gateway.js');
|
|
22
|
+
await ensureMindosDir();
|
|
23
|
+
|
|
24
|
+
if (!existsSync(LOG_PATH)) {
|
|
25
|
+
console.log(dim(`No log file yet at ${LOG_PATH}`));
|
|
26
|
+
console.log(dim('Logs are created when starting MindOS (mindos start, mindos onboard, or daemon mode).'));
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const noFollow = flags['no-follow'] === true;
|
|
31
|
+
execSync(noFollow ? `tail -n 100 ${LOG_PATH}` : `tail -f ${LOG_PATH}`, { stdio: 'inherit' });
|
|
32
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos mcp â MCP server management
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import { ROOT } from '../lib/constants.js';
|
|
7
|
+
import { loadConfig } from '../lib/config.js';
|
|
8
|
+
import { execInherited } from '../lib/shell.js';
|
|
9
|
+
import { printCommandHelp } from '../lib/command.js';
|
|
10
|
+
|
|
11
|
+
export const meta = {
|
|
12
|
+
name: 'mcp',
|
|
13
|
+
group: 'Connections',
|
|
14
|
+
summary: 'Manage AI agent connections',
|
|
15
|
+
usage: 'mindos mcp [install [agent]]',
|
|
16
|
+
examples: [
|
|
17
|
+
'mindos mcp',
|
|
18
|
+
'mindos mcp install',
|
|
19
|
+
'mindos mcp install cursor',
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const run = async (args) => {
|
|
24
|
+
const sub = args[0];
|
|
25
|
+
const hasInstallFlags = args.some(a => ['-g', '--global', '-y', '--yes'].includes(a));
|
|
26
|
+
|
|
27
|
+
if (sub === 'install' || hasInstallFlags) {
|
|
28
|
+
const { mcpInstall } = await import('../lib/mcp-install.js');
|
|
29
|
+
await mcpInstall();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// No subcommand in interactive terminal â show help
|
|
34
|
+
// (stdio mode is only meaningful when piped by an AI agent)
|
|
35
|
+
if (!sub && process.stdin.isTTY) {
|
|
36
|
+
printCommandHelp({ meta });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
loadConfig();
|
|
41
|
+
|
|
42
|
+
const { ensureMcpBundle } = await import('../lib/mcp-build.js');
|
|
43
|
+
await ensureMcpBundle();
|
|
44
|
+
|
|
45
|
+
if (!process.env.MCP_TRANSPORT) {
|
|
46
|
+
process.env.MCP_TRANSPORT = 'stdio';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const webPort = process.env.MINDOS_WEB_PORT || '3456';
|
|
50
|
+
process.env.MINDOS_URL = process.env.MINDOS_URL || `http://localhost:${webPort}`;
|
|
51
|
+
|
|
52
|
+
if (process.env.MCP_TRANSPORT === 'http') {
|
|
53
|
+
process.env.MCP_PORT = process.env.MINDOS_MCP_PORT || '8781';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
execInherited(`node dist/index.cjs`, resolve(ROOT, 'mcp'));
|
|
57
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos onboard â Interactive setup wizard
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import { ROOT } from '../lib/constants.js';
|
|
7
|
+
import { execInherited } from '../lib/shell.js';
|
|
8
|
+
|
|
9
|
+
export const meta = {
|
|
10
|
+
name: 'onboard',
|
|
11
|
+
aliases: ['init', 'setup'],
|
|
12
|
+
group: 'Config',
|
|
13
|
+
summary: 'First-time setup wizard',
|
|
14
|
+
usage: 'mindos onboard',
|
|
15
|
+
examples: [
|
|
16
|
+
'mindos onboard',
|
|
17
|
+
'mindos init',
|
|
18
|
+
'mindos setup',
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const run = (args, flags) => {
|
|
23
|
+
const daemonFlag = flags['install-daemon'] ? ' --install-daemon' : '';
|
|
24
|
+
execInherited(`node ${resolve(ROOT, 'scripts/setup.js')}${daemonFlag}`);
|
|
25
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos open â Open Web UI in browser
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { execSync } from 'node:child_process';
|
|
6
|
+
import { loadConfig } from '../lib/config.js';
|
|
7
|
+
import { cyan, green, dim } from '../lib/colors.js';
|
|
8
|
+
|
|
9
|
+
export const meta = {
|
|
10
|
+
name: 'open',
|
|
11
|
+
group: 'Service',
|
|
12
|
+
summary: 'Open Web UI in browser',
|
|
13
|
+
usage: 'mindos open',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const run = () => {
|
|
17
|
+
loadConfig();
|
|
18
|
+
const webPort = process.env.MINDOS_WEB_PORT || '3456';
|
|
19
|
+
const url = `http://localhost:${webPort}`;
|
|
20
|
+
|
|
21
|
+
let cmd;
|
|
22
|
+
if (process.platform === 'darwin') {
|
|
23
|
+
cmd = 'open';
|
|
24
|
+
} else if (process.platform === 'linux') {
|
|
25
|
+
try {
|
|
26
|
+
const uname = execSync('uname -r', { encoding: 'utf-8' });
|
|
27
|
+
cmd = uname.toLowerCase().includes('microsoft') ? 'wslview' : 'xdg-open';
|
|
28
|
+
} catch {
|
|
29
|
+
cmd = 'xdg-open';
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
cmd = 'start';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
execSync(`${cmd} ${url}`, { stdio: 'ignore' });
|
|
37
|
+
console.log(`${green('â')} Opening ${cyan(url)}`);
|
|
38
|
+
} catch {
|
|
39
|
+
console.log(dim(`Could not open browser automatically. Visit: ${cyan(url)}`));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mindos restart â Stop then start again
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { loadConfig, getStartMode } from '../lib/config.js';
|
|
6
|
+
import { stopMindos } from '../lib/stop.js';
|
|
7
|
+
import { isPortInUse } from '../lib/port.js';
|
|
8
|
+
|
|
9
|
+
export const meta = {
|
|
10
|
+
name: 'restart',
|
|
11
|
+
group: 'Service',
|
|
12
|
+
summary: 'Restart services',
|
|
13
|
+
usage: 'mindos restart',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const run = async (args, flags) => {
|
|
17
|
+
const oldWebPort = process.env.MINDOS_OLD_WEB_PORT || process.env.MINDOS_WEB_PORT;
|
|
18
|
+
const oldMcpPort = process.env.MINDOS_OLD_MCP_PORT || process.env.MINDOS_MCP_PORT;
|
|
19
|
+
|
|
20
|
+
loadConfig();
|
|
21
|
+
|
|
22
|
+
const newWebPort = Number(process.env.MINDOS_WEB_PORT || '3456');
|
|
23
|
+
const newMcpPort = Number(process.env.MINDOS_MCP_PORT || '8781');
|
|
24
|
+
|
|
25
|
+
const extraPorts = [];
|
|
26
|
+
if (oldWebPort && Number(oldWebPort) !== newWebPort) extraPorts.push(oldWebPort);
|
|
27
|
+
if (oldMcpPort && Number(oldMcpPort) !== newMcpPort) extraPorts.push(oldMcpPort);
|
|
28
|
+
|
|
29
|
+
stopMindos({ extraPorts });
|
|
30
|
+
|
|
31
|
+
const allPorts = new Set([newWebPort, newMcpPort]);
|
|
32
|
+
for (const p of extraPorts) allPorts.add(Number(p));
|
|
33
|
+
|
|
34
|
+
const deadline = Date.now() + 15_000;
|
|
35
|
+
while (Date.now() < deadline) {
|
|
36
|
+
let anyBusy = false;
|
|
37
|
+
for (const p of allPorts) {
|
|
38
|
+
if (await isPortInUse(p)) { anyBusy = true; break; }
|
|
39
|
+
}
|
|
40
|
+
if (!anyBusy) break;
|
|
41
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Dynamically resolve start mode and dispatch
|
|
45
|
+
const mode = getStartMode();
|
|
46
|
+
const startCmd = await import(`./${mode}.js`);
|
|
47
|
+
await startCmd.run(args, flags);
|
|
48
|
+
};
|
package/bin/commands/search.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import { bold, dim, cyan, red } from '../lib/colors.js';
|
|
2
2
|
import { loadConfig } from '../lib/config.js';
|
|
3
|
-
import { output, isJsonMode, EXIT } from '../lib/command.js';
|
|
3
|
+
import { output, isJsonMode, EXIT, printCommandHelp } from '../lib/command.js';
|
|
4
|
+
import { getBaseUrl, getAuthHeaders } from '../lib/remote.js';
|
|
4
5
|
|
|
5
6
|
export const meta = {
|
|
6
7
|
name: 'search', group: 'Knowledge',
|
|
7
|
-
summary: 'Search knowledge base
|
|
8
|
+
summary: 'Search your knowledge base',
|
|
8
9
|
usage: 'mindos search "<query>"',
|
|
9
|
-
|
|
10
|
+
flags: {
|
|
11
|
+
'--limit <n>': 'Max results (default: 20)',
|
|
12
|
+
'--json': 'Output as JSON',
|
|
13
|
+
},
|
|
14
|
+
examples: [
|
|
15
|
+
'mindos search "meeting notes"',
|
|
16
|
+
'mindos search "RAG" --limit 5 --json',
|
|
17
|
+
],
|
|
10
18
|
};
|
|
11
19
|
|
|
12
20
|
export async function run(args, flags) {
|
|
13
21
|
const query = args.join(' ');
|
|
14
|
-
if (!query
|
|
15
|
-
|
|
16
|
-
console.log('');
|
|
17
|
-
console.log('Usage: mindos search "<query>"');
|
|
18
|
-
console.log('Flags: --limit <n> (default 20), --json');
|
|
19
|
-
console.log('Note: MindOS must be running. Offline: mindos file search "<query>"');
|
|
22
|
+
if (!query) {
|
|
23
|
+
printCommandHelp({ meta });
|
|
20
24
|
return;
|
|
21
25
|
}
|
|
22
26
|
loadConfig();
|
|
23
|
-
const
|
|
24
|
-
const token = process.env.MINDOS_AUTH_TOKEN || '';
|
|
27
|
+
const baseUrl = getBaseUrl();
|
|
25
28
|
const limit = parseInt(flags.limit) || 20;
|
|
26
|
-
const headers =
|
|
27
|
-
if (token) headers['Authorization'] = 'Bearer ' + token;
|
|
29
|
+
const headers = getAuthHeaders();
|
|
28
30
|
try {
|
|
29
|
-
const res = await fetch(
|
|
31
|
+
const res = await fetch(`${baseUrl}/api/search?q=${encodeURIComponent(query)}&limit=${limit}`, { headers });
|
|
30
32
|
if (!res.ok) throw new Error('API error (' + res.status + ')');
|
|
31
33
|
const data = await res.json();
|
|
32
34
|
const results = data.results || data || [];
|
package/bin/commands/space.js
CHANGED
|
@@ -11,6 +11,7 @@ import { resolve, basename } from 'node:path';
|
|
|
11
11
|
import { bold, dim, cyan, green, red, yellow } from '../lib/colors.js';
|
|
12
12
|
import { loadConfig } from '../lib/config.js';
|
|
13
13
|
import { output, isJsonMode, EXIT } from '../lib/command.js';
|
|
14
|
+
import { isRemoteMode, apiCall } from '../lib/remote.js';
|
|
14
15
|
|
|
15
16
|
function getMindRoot() {
|
|
16
17
|
loadConfig();
|
|
@@ -25,7 +26,7 @@ function getMindRoot() {
|
|
|
25
26
|
export const meta = {
|
|
26
27
|
name: 'space',
|
|
27
28
|
group: 'Knowledge',
|
|
28
|
-
summary: '
|
|
29
|
+
summary: 'Manage spaces (list, tree, create, rename)',
|
|
29
30
|
usage: 'mindos space <subcommand>',
|
|
30
31
|
examples: [
|
|
31
32
|
'mindos space ls',
|
|
@@ -42,34 +43,20 @@ export const meta = {
|
|
|
42
43
|
|
|
43
44
|
export async function run(args, flags) {
|
|
44
45
|
const sub = args[0];
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (!sub || flags.help || flags.h) {
|
|
48
|
-
console.log(`
|
|
49
|
-
${bold('mindos space')} â Knowledge base structure management
|
|
50
|
-
|
|
51
|
-
${bold('Browse:')}
|
|
52
|
-
${cyan('ls [path]'.padEnd(24))}${dim('List contents of a directory (default: root)')}
|
|
53
|
-
${cyan('tree [path]'.padEnd(24))}${dim('Show directory tree recursively')}
|
|
54
|
-
${cyan('info <path>'.padEnd(24))}${dim('Show directory details (type, files, modified)')}
|
|
55
|
-
|
|
56
|
-
${bold('Structure:')}
|
|
57
|
-
${cyan('create <name>'.padEnd(24))}${dim('Create a new Space (directory + INSTRUCTION.md)')}
|
|
58
|
-
${cyan('mkdir <path>'.padEnd(24))}${dim('Create a directory (no INSTRUCTION.md)')}
|
|
59
|
-
${cyan('rmdir <path>'.padEnd(24))}${dim('Delete a directory and all its contents')}
|
|
60
|
-
${cyan('rename <old> <new>'.padEnd(24))}${dim('Rename or move a directory')}
|
|
61
|
-
${cyan('init <path>'.padEnd(24))}${dim('Upgrade a directory to a Space (add INSTRUCTION.md)')}
|
|
46
|
+
loadConfig();
|
|
62
47
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
${dim('mindos space ls "ð įŽčŪ°" --json')}
|
|
66
|
-
${dim('mindos space tree "âïļ é
į―Ū"')}
|
|
67
|
-
${dim('mindos space mkdir "ð įŽčŪ°/æ°åįąŧ/ååįąŧ"')}
|
|
68
|
-
${dim('mindos space init "exploration"')}
|
|
69
|
-
`);
|
|
48
|
+
if (!sub) {
|
|
49
|
+
printHelp();
|
|
70
50
|
return;
|
|
71
51
|
}
|
|
72
52
|
|
|
53
|
+
// Remote mode: delegate to HTTP API
|
|
54
|
+
if (isRemoteMode()) {
|
|
55
|
+
return remoteSpaceDispatch(sub, args, flags);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const root = getMindRoot();
|
|
59
|
+
|
|
73
60
|
switch (sub) {
|
|
74
61
|
case 'ls': case 'list': return spaceLs(root, args[1], flags);
|
|
75
62
|
case 'tree': return spaceTree(root, args[1], flags);
|
|
@@ -381,3 +368,87 @@ function spaceInit(root, relPath, flags) {
|
|
|
381
368
|
}
|
|
382
369
|
console.log(`${green('â')} Initialized Space: ${cyan(relPath)}`);
|
|
383
370
|
}
|
|
371
|
+
|
|
372
|
+
// ââ Remote mode: space operations via HTTP API âââââââââââââââââââââââââââââ
|
|
373
|
+
|
|
374
|
+
async function remoteSpaceDispatch(sub, args, flags) {
|
|
375
|
+
try {
|
|
376
|
+
switch (sub) {
|
|
377
|
+
case 'ls':
|
|
378
|
+
case 'list': {
|
|
379
|
+
const res = await apiCall('/api/file?op=list_spaces');
|
|
380
|
+
const data = await res.json();
|
|
381
|
+
const spaces = data.spaces || [];
|
|
382
|
+
if (isJsonMode(flags)) { output({ count: spaces.length, spaces }, flags); return; }
|
|
383
|
+
if (spaces.length === 0) { console.log(dim('No spaces found.')); return; }
|
|
384
|
+
console.log(`\n${bold(`Spaces (${spaces.length}):`)}\n`);
|
|
385
|
+
for (const s of spaces) {
|
|
386
|
+
const name = s.name || s.path || s;
|
|
387
|
+
const files = s.fileCount != null ? dim(` (${s.fileCount} files)`) : '';
|
|
388
|
+
console.log(` ${cyan(name)}${files}`);
|
|
389
|
+
}
|
|
390
|
+
console.log();
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
case 'create': {
|
|
395
|
+
const name = args[1];
|
|
396
|
+
if (!name) { console.error(red('Usage: mindos space create <name>')); process.exit(EXIT.ERROR); }
|
|
397
|
+
const res = await apiCall('/api/file', {
|
|
398
|
+
method: 'POST',
|
|
399
|
+
body: JSON.stringify({ action: 'create_space', name }),
|
|
400
|
+
});
|
|
401
|
+
await res.json();
|
|
402
|
+
if (isJsonMode(flags)) { output({ ok: true, name }, flags); return; }
|
|
403
|
+
console.log(`${green('â')} Created Space: ${cyan(name)}`);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
case 'rename':
|
|
408
|
+
case 'mv': {
|
|
409
|
+
const oldName = args[1], newName = args[2];
|
|
410
|
+
if (!oldName || !newName) { console.error(red('Usage: mindos space rename <old> <new>')); process.exit(EXIT.ERROR); }
|
|
411
|
+
const res = await apiCall('/api/file', {
|
|
412
|
+
method: 'POST',
|
|
413
|
+
body: JSON.stringify({ action: 'rename_space', oldName, newName }),
|
|
414
|
+
});
|
|
415
|
+
await res.json();
|
|
416
|
+
if (isJsonMode(flags)) { output({ ok: true, from: oldName, to: newName }, flags); return; }
|
|
417
|
+
console.log(`${green('â')} Renamed: ${oldName} â ${cyan(newName)}`);
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
default:
|
|
422
|
+
console.error(red(`Remote mode does not support 'space ${sub}'. Use: list, create, rename`));
|
|
423
|
+
process.exit(EXIT.ERROR);
|
|
424
|
+
}
|
|
425
|
+
} catch (e) {
|
|
426
|
+
console.error(red(`Remote error: ${e.message}`));
|
|
427
|
+
process.exit(EXIT.ERROR);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export function printHelp() {
|
|
432
|
+
console.log(`
|
|
433
|
+
${bold('mindos space')} â Knowledge base structure management
|
|
434
|
+
|
|
435
|
+
${bold('Browse:')}
|
|
436
|
+
${cyan('ls [path]'.padEnd(24))}${dim('List contents of a directory (default: root)')}
|
|
437
|
+
${cyan('tree [path]'.padEnd(24))}${dim('Show directory tree recursively')}
|
|
438
|
+
${cyan('info <path>'.padEnd(24))}${dim('Show directory details (type, files, modified)')}
|
|
439
|
+
|
|
440
|
+
${bold('Structure:')}
|
|
441
|
+
${cyan('create <name>'.padEnd(24))}${dim('Create a new Space (directory + INSTRUCTION.md)')}
|
|
442
|
+
${cyan('mkdir <path>'.padEnd(24))}${dim('Create a directory (no INSTRUCTION.md)')}
|
|
443
|
+
${cyan('rmdir <path>'.padEnd(24))}${dim('Delete a directory and all its contents')}
|
|
444
|
+
${cyan('rename <old> <new>'.padEnd(24))}${dim('Rename or move a directory')}
|
|
445
|
+
${cyan('init <path>'.padEnd(24))}${dim('Upgrade a directory to a Space (add INSTRUCTION.md)')}
|
|
446
|
+
|
|
447
|
+
${bold('Examples:')}
|
|
448
|
+
${dim('mindos space ls')}
|
|
449
|
+
${dim('mindos space ls "ð įŽčŪ°" --json')}
|
|
450
|
+
${dim('mindos space tree "âïļ é
į―Ū"')}
|
|
451
|
+
${dim('mindos space mkdir "ð įŽčŪ°/æ°åįąŧ/ååįąŧ"')}
|
|
452
|
+
${dim('mindos space init "exploration"')}
|
|
453
|
+
`);
|
|
454
|
+
}
|