@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.
Files changed (422) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +17 -16
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +5 -1
  10. package/_standalone/.next/routes-manifest.json +6 -0
  11. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  12. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/_standalone/.next/server/app/_global-error.html +2 -2
  14. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  21. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  22. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  23. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  26. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  27. package/_standalone/.next/server/app/agents/page.js +2 -2
  28. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  29. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/ask/route.js +1 -1
  41. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  42. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  46. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  48. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  50. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  52. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  55. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  56. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  57. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  59. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  61. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  63. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  66. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  68. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  70. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
  72. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/mcp/install-skill/route.js.nft.json +1 -1
  74. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  77. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/uninstall/route.js +1 -0
  79. package/_standalone/.next/server/app/api/mcp/uninstall/route.js.nft.json +1 -0
  80. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -0
  81. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  82. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  84. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  87. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  91. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/skills/route.js +4 -4
  99. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  102. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  108. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  109. package/_standalone/.next/server/app/changes/page.js +1 -1
  110. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  111. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  113. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  114. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/echo/page.js +1 -1
  116. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  117. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  118. package/_standalone/.next/server/app/explore/page.js +1 -1
  119. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  120. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  121. package/_standalone/.next/server/app/help/page.js +2 -2
  122. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  123. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  124. package/_standalone/.next/server/app/login/page.js +1 -1
  125. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  126. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  127. package/_standalone/.next/server/app/page.js +2 -2
  128. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  129. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  130. package/_standalone/.next/server/app/setup/page.js +2 -2
  131. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  132. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  133. package/_standalone/.next/server/app/trash/page.js +3 -3
  134. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  135. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  136. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  137. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  138. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  139. package/_standalone/.next/server/app-paths-manifest.json +17 -16
  140. package/_standalone/.next/server/chunks/1550.js +1 -1
  141. package/_standalone/.next/server/chunks/2190.js +11 -0
  142. package/_standalone/.next/server/chunks/{6365.js → 3262.js} +2 -2
  143. package/_standalone/.next/server/chunks/5648.js +2 -0
  144. package/_standalone/.next/server/chunks/6539.js +1 -1
  145. package/_standalone/.next/server/chunks/8388.js +1 -1
  146. package/_standalone/.next/server/chunks/953.js +1 -1
  147. package/_standalone/.next/server/chunks/9539.js +219 -0
  148. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  149. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  150. package/_standalone/.next/server/next-font-manifest.js +1 -1
  151. package/_standalone/.next/server/next-font-manifest.json +1 -1
  152. package/_standalone/.next/server/pages/500.html +2 -2
  153. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  154. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  155. package/_standalone/.next/static/GB-YReQ58tsvCuwlzrkMZ/_buildManifest.js +1 -0
  156. package/_standalone/.next/static/chunks/1053-67f0ce444d1227e2.js +29 -0
  157. package/_standalone/.next/static/chunks/{8663-de911d2d395622be.js → 1880-c2a9e76201841c86.js} +1 -1
  158. package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +1 -0
  159. package/_standalone/.next/static/chunks/4563-b2a2ce80aff845af.js +6 -0
  160. package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +1 -0
  161. package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +1 -0
  162. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-84943536516b00b2.js +1 -0
  163. package/_standalone/.next/static/chunks/app/_global-error/page-84943536516b00b2.js +1 -0
  164. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-773071a99c4daac2.js +1 -0
  165. package/_standalone/.next/static/chunks/app/agents/page-eac6c5f6650dbf62.js +5 -0
  166. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-84943536516b00b2.js +1 -0
  167. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-84943536516b00b2.js +1 -0
  168. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-84943536516b00b2.js +1 -0
  169. package/_standalone/.next/static/chunks/app/api/a2a/route-84943536516b00b2.js +1 -0
  170. package/_standalone/.next/static/chunks/app/api/acp/config/route-84943536516b00b2.js +1 -0
  171. package/_standalone/.next/static/chunks/app/api/acp/detect/route-84943536516b00b2.js +1 -0
  172. package/_standalone/.next/static/chunks/app/api/acp/install/route-84943536516b00b2.js +1 -0
  173. package/_standalone/.next/static/chunks/app/api/acp/registry/route-84943536516b00b2.js +1 -0
  174. package/_standalone/.next/static/chunks/app/api/acp/session/route-84943536516b00b2.js +1 -0
  175. package/_standalone/.next/static/chunks/app/api/agent-activity/route-84943536516b00b2.js +1 -0
  176. package/_standalone/.next/static/chunks/app/api/ask/route-84943536516b00b2.js +1 -0
  177. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-84943536516b00b2.js +1 -0
  178. package/_standalone/.next/static/chunks/app/api/auth/route-84943536516b00b2.js +1 -0
  179. package/_standalone/.next/static/chunks/app/api/backlinks/route-84943536516b00b2.js +1 -0
  180. package/_standalone/.next/static/chunks/app/api/bootstrap/route-84943536516b00b2.js +1 -0
  181. package/_standalone/.next/static/chunks/app/api/changes/route-84943536516b00b2.js +1 -0
  182. package/_standalone/.next/static/chunks/app/api/export/route-84943536516b00b2.js +1 -0
  183. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-84943536516b00b2.js +1 -0
  184. package/_standalone/.next/static/chunks/app/api/file/import/route-84943536516b00b2.js +1 -0
  185. package/_standalone/.next/static/chunks/app/api/file/route-84943536516b00b2.js +1 -0
  186. package/_standalone/.next/static/chunks/app/api/files/route-84943536516b00b2.js +1 -0
  187. package/_standalone/.next/static/chunks/app/api/git/route-84943536516b00b2.js +1 -0
  188. package/_standalone/.next/static/chunks/app/api/graph/route-84943536516b00b2.js +1 -0
  189. package/_standalone/.next/static/chunks/app/api/health/route-84943536516b00b2.js +1 -0
  190. package/_standalone/.next/static/chunks/app/api/inbox/route-84943536516b00b2.js +1 -0
  191. package/_standalone/.next/static/chunks/app/api/init/route-84943536516b00b2.js +1 -0
  192. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-84943536516b00b2.js +1 -0
  193. package/_standalone/.next/static/chunks/app/api/mcp/install/route-84943536516b00b2.js +1 -0
  194. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-84943536516b00b2.js +1 -0
  195. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-84943536516b00b2.js +1 -0
  196. package/_standalone/.next/static/chunks/app/api/mcp/status/route-84943536516b00b2.js +1 -0
  197. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-84943536516b00b2.js +1 -0
  198. package/_standalone/.next/static/chunks/app/api/monitoring/route-84943536516b00b2.js +1 -0
  199. package/_standalone/.next/static/chunks/app/api/recent-files/route-84943536516b00b2.js +1 -0
  200. package/_standalone/.next/static/chunks/app/api/restart/route-84943536516b00b2.js +1 -0
  201. package/_standalone/.next/static/chunks/app/api/search/route-84943536516b00b2.js +1 -0
  202. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-84943536516b00b2.js +1 -0
  203. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-84943536516b00b2.js +1 -0
  204. package/_standalone/.next/static/chunks/app/api/settings/route-84943536516b00b2.js +1 -0
  205. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-84943536516b00b2.js +1 -0
  206. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-84943536516b00b2.js +1 -0
  207. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-84943536516b00b2.js +1 -0
  208. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-84943536516b00b2.js +1 -0
  209. package/_standalone/.next/static/chunks/app/api/setup/ls/route-84943536516b00b2.js +1 -0
  210. package/_standalone/.next/static/chunks/app/api/setup/route-84943536516b00b2.js +1 -0
  211. package/_standalone/.next/static/chunks/app/api/skills/route-84943536516b00b2.js +1 -0
  212. package/_standalone/.next/static/chunks/app/api/sync/route-84943536516b00b2.js +1 -0
  213. package/_standalone/.next/static/chunks/app/api/tree-version/route-84943536516b00b2.js +1 -0
  214. package/_standalone/.next/static/chunks/app/api/uninstall/route-84943536516b00b2.js +1 -0
  215. package/_standalone/.next/static/chunks/app/api/update/route-84943536516b00b2.js +1 -0
  216. package/_standalone/.next/static/chunks/app/api/update-check/route-84943536516b00b2.js +1 -0
  217. package/_standalone/.next/static/chunks/app/api/update-status/route-84943536516b00b2.js +1 -0
  218. package/_standalone/.next/static/chunks/app/api/workflows/route-84943536516b00b2.js +1 -0
  219. package/_standalone/.next/static/chunks/app/echo/page-84943536516b00b2.js +1 -0
  220. package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +1 -0
  221. package/_standalone/.next/static/chunks/app/{layout-9378c1c8d3e5761b.js → layout-7cb442df92212140.js} +55 -55
  222. package/_standalone/.next/static/chunks/app/{page-9bae420fbbdc5fff.js → page-aaee2d9bd3d3eabb.js} +1 -1
  223. package/_standalone/.next/static/chunks/app/setup/page-6132ea7632e08a9b.js +1 -0
  224. package/_standalone/.next/static/chunks/app/trash/{page-b61ef2d5cd4f8d73.js → page-7b5cbf541c315db2.js} +1 -1
  225. package/_standalone/.next/static/chunks/app/view/[...path]/loading-84943536516b00b2.js +1 -0
  226. package/_standalone/.next/static/chunks/app/view/[...path]/page-b72e4f88c8c48181.js +12 -0
  227. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-84943536516b00b2.js +1 -0
  228. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-84943536516b00b2.js +1 -0
  229. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-84943536516b00b2.js +1 -0
  230. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-84943536516b00b2.js +1 -0
  231. package/_standalone/.next/static/chunks/{webpack-c28c55d0a6021a6b.js → webpack-7b276daaa930d480.js} +1 -1
  232. package/_standalone/.next/static/css/bc9179074eaf65ae.css +1 -0
  233. package/_standalone/.next/trace +63 -63
  234. package/_standalone/.next/types/routes.d.ts +2 -1
  235. package/_standalone/.next/types/validator.ts +9 -0
  236. package/_standalone/__tests__/api/mcp-install.test.ts +23 -0
  237. package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
  238. package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
  239. package/_standalone/__tests__/core/tools.test.ts +3 -6
  240. package/_standalone/components/FileTree.tsx +3 -2
  241. package/_standalone/components/MarkdownView.tsx +30 -15
  242. package/_standalone/components/RightAskPanel.tsx +36 -6
  243. package/_standalone/components/Sidebar.tsx +3 -3
  244. package/_standalone/components/agents/AgentsMcpSection.tsx +27 -5
  245. package/_standalone/components/settings/McpAgentInstall.tsx +94 -27
  246. package/_standalone/components/settings/McpSkillsSection.tsx +1 -1
  247. package/_standalone/components/settings/McpTab.tsx +484 -340
  248. package/_standalone/components/settings/SettingsContent.tsx +12 -6
  249. package/_standalone/components/settings/types.ts +3 -0
  250. package/_standalone/components/setup/StepAgents.tsx +113 -47
  251. package/_standalone/components/setup/StepReview.tsx +14 -27
  252. package/_standalone/components/setup/types.ts +7 -0
  253. package/_standalone/data/skills/mindos/SKILL.md +92 -92
  254. package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
  255. package/_standalone/data/skills/mindos-zh/SKILL.md +100 -104
  256. package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
  257. package/_standalone/lib/i18n/modules/features.ts +4 -4
  258. package/_standalone/lib/i18n/modules/knowledge.ts +4 -0
  259. package/_standalone/lib/i18n/modules/onboarding.ts +40 -30
  260. package/_standalone/lib/i18n/modules/panels.ts +6 -2
  261. package/_standalone/lib/i18n/modules/settings.ts +78 -6
  262. package/_standalone/lib/mcp-snippets.ts +5 -1
  263. package/_standalone/tsconfig.tsbuildinfo +1 -1
  264. package/app/app/api/ask/route.ts +3 -2
  265. package/app/app/api/mcp/install/route.ts +15 -3
  266. package/app/app/api/mcp/status/route.ts +14 -6
  267. package/app/app/api/mcp/uninstall/route.ts +130 -0
  268. package/app/app/api/skills/route.ts +14 -1
  269. package/app/app/view/[...path]/ViewPageClient.tsx +12 -27
  270. package/app/components/FileTree.tsx +3 -2
  271. package/app/components/MarkdownView.tsx +30 -15
  272. package/app/components/RightAskPanel.tsx +36 -6
  273. package/app/components/Sidebar.tsx +3 -3
  274. package/app/components/agents/AgentsMcpSection.tsx +27 -5
  275. package/app/components/help/HelpContent.tsx +1 -0
  276. package/app/components/settings/McpAgentInstall.tsx +94 -27
  277. package/app/components/settings/McpSkillsSection.tsx +1 -1
  278. package/app/components/settings/McpTab.tsx +484 -340
  279. package/app/components/settings/SettingsContent.tsx +12 -6
  280. package/app/components/settings/types.ts +3 -0
  281. package/app/components/setup/StepAgents.tsx +113 -47
  282. package/app/components/setup/StepReview.tsx +14 -27
  283. package/app/components/setup/index.tsx +16 -14
  284. package/app/components/setup/types.ts +7 -0
  285. package/app/data/skills/mindos/SKILL.md +92 -92
  286. package/app/data/skills/mindos/references/write-supplement.md +119 -0
  287. package/app/data/skills/mindos-zh/SKILL.md +100 -104
  288. package/app/data/skills/mindos-zh/references/write-supplement.md +119 -0
  289. package/app/lib/fs.ts +0 -6
  290. package/app/lib/i18n/modules/features.ts +4 -4
  291. package/app/lib/i18n/modules/knowledge.ts +4 -0
  292. package/app/lib/i18n/modules/onboarding.ts +40 -30
  293. package/app/lib/i18n/modules/panels.ts +6 -2
  294. package/app/lib/i18n/modules/settings.ts +78 -6
  295. package/app/lib/mcp-agents.ts +1 -2
  296. package/app/lib/mcp-snippets.ts +5 -1
  297. package/app/lib/renderers/index.ts +2 -1
  298. package/app/lib/settings.ts +32 -0
  299. package/bin/cli.js +168 -1404
  300. package/bin/commands/agent.js +156 -20
  301. package/bin/commands/api.js +14 -11
  302. package/bin/commands/ask.js +79 -68
  303. package/bin/commands/build.js +26 -0
  304. package/bin/commands/config.js +170 -0
  305. package/bin/commands/dev.js +58 -0
  306. package/bin/commands/doctor.js +205 -0
  307. package/bin/commands/file.js +551 -36
  308. package/bin/commands/gateway.js +42 -0
  309. package/bin/commands/init-skills.js +56 -0
  310. package/bin/commands/logs.js +32 -0
  311. package/bin/commands/mcp-cmd.js +57 -0
  312. package/bin/commands/onboard.js +25 -0
  313. package/bin/commands/open.js +41 -0
  314. package/bin/commands/restart.js +48 -0
  315. package/bin/commands/search.js +16 -14
  316. package/bin/commands/space.js +96 -25
  317. package/bin/commands/start.js +272 -0
  318. package/bin/commands/status.js +2 -2
  319. package/bin/commands/stop.js +14 -0
  320. package/bin/commands/sync-cmd.js +134 -0
  321. package/bin/commands/token.js +98 -0
  322. package/bin/commands/uninstall.js +154 -0
  323. package/bin/commands/update.js +286 -0
  324. package/bin/lib/build.js +1 -1
  325. package/bin/lib/colors.js +8 -7
  326. package/bin/lib/command.js +37 -96
  327. package/bin/lib/config.js +5 -0
  328. package/bin/lib/csv.js +19 -0
  329. package/bin/lib/jsonc.js +12 -0
  330. package/bin/lib/markdown.js +69 -0
  331. package/bin/lib/mcp-agents.js +1 -6
  332. package/bin/lib/mcp-build.js +1 -1
  333. package/bin/lib/mcp-install.js +2 -1
  334. package/bin/lib/one-shot.js +88 -0
  335. package/bin/lib/path-expand.js +9 -0
  336. package/bin/lib/remote.js +65 -0
  337. package/bin/lib/repl.js +167 -0
  338. package/bin/lib/{utils.js → shell.js} +10 -26
  339. package/bin/lib/skill-check.js +116 -21
  340. package/bin/lib/sse-stream.js +167 -0
  341. package/package.json +2 -2
  342. package/scripts/setup.js +210 -120
  343. package/skills/mindos/SKILL.md +94 -95
  344. package/skills/mindos-zh/SKILL.md +103 -106
  345. package/_standalone/.next/server/chunks/1955.js +0 -11
  346. package/_standalone/.next/server/chunks/3680.js +0 -1
  347. package/_standalone/.next/server/chunks/4497.js +0 -219
  348. package/_standalone/.next/server/chunks/5560.js +0 -2
  349. package/_standalone/.next/static/chunks/1053-0adaccc98a752a58.js +0 -29
  350. package/_standalone/.next/static/chunks/3637.f9a42cca59fd5bb5.js +0 -1
  351. package/_standalone/.next/static/chunks/4563-c2afaeacb241d1d0.js +0 -6
  352. package/_standalone/.next/static/chunks/6090-c98268ca726a68d3.js +0 -1
  353. package/_standalone/.next/static/chunks/9371-575600301da5d6bb.js +0 -1
  354. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-400c3c09b1540c14.js +0 -1
  355. package/_standalone/.next/static/chunks/app/_global-error/page-400c3c09b1540c14.js +0 -1
  356. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-3e08abb495ecd5fd.js +0 -1
  357. package/_standalone/.next/static/chunks/app/agents/page-e7e0f87ad3d765ac.js +0 -5
  358. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-400c3c09b1540c14.js +0 -1
  359. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-400c3c09b1540c14.js +0 -1
  360. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-400c3c09b1540c14.js +0 -1
  361. package/_standalone/.next/static/chunks/app/api/a2a/route-400c3c09b1540c14.js +0 -1
  362. package/_standalone/.next/static/chunks/app/api/acp/config/route-400c3c09b1540c14.js +0 -1
  363. package/_standalone/.next/static/chunks/app/api/acp/detect/route-400c3c09b1540c14.js +0 -1
  364. package/_standalone/.next/static/chunks/app/api/acp/install/route-400c3c09b1540c14.js +0 -1
  365. package/_standalone/.next/static/chunks/app/api/acp/registry/route-400c3c09b1540c14.js +0 -1
  366. package/_standalone/.next/static/chunks/app/api/acp/session/route-400c3c09b1540c14.js +0 -1
  367. package/_standalone/.next/static/chunks/app/api/agent-activity/route-400c3c09b1540c14.js +0 -1
  368. package/_standalone/.next/static/chunks/app/api/ask/route-400c3c09b1540c14.js +0 -1
  369. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-400c3c09b1540c14.js +0 -1
  370. package/_standalone/.next/static/chunks/app/api/auth/route-400c3c09b1540c14.js +0 -1
  371. package/_standalone/.next/static/chunks/app/api/backlinks/route-400c3c09b1540c14.js +0 -1
  372. package/_standalone/.next/static/chunks/app/api/bootstrap/route-400c3c09b1540c14.js +0 -1
  373. package/_standalone/.next/static/chunks/app/api/changes/route-400c3c09b1540c14.js +0 -1
  374. package/_standalone/.next/static/chunks/app/api/export/route-400c3c09b1540c14.js +0 -1
  375. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-400c3c09b1540c14.js +0 -1
  376. package/_standalone/.next/static/chunks/app/api/file/import/route-400c3c09b1540c14.js +0 -1
  377. package/_standalone/.next/static/chunks/app/api/file/route-400c3c09b1540c14.js +0 -1
  378. package/_standalone/.next/static/chunks/app/api/files/route-400c3c09b1540c14.js +0 -1
  379. package/_standalone/.next/static/chunks/app/api/git/route-400c3c09b1540c14.js +0 -1
  380. package/_standalone/.next/static/chunks/app/api/graph/route-400c3c09b1540c14.js +0 -1
  381. package/_standalone/.next/static/chunks/app/api/health/route-400c3c09b1540c14.js +0 -1
  382. package/_standalone/.next/static/chunks/app/api/inbox/route-400c3c09b1540c14.js +0 -1
  383. package/_standalone/.next/static/chunks/app/api/init/route-400c3c09b1540c14.js +0 -1
  384. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-400c3c09b1540c14.js +0 -1
  385. package/_standalone/.next/static/chunks/app/api/mcp/install/route-400c3c09b1540c14.js +0 -1
  386. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-400c3c09b1540c14.js +0 -1
  387. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-400c3c09b1540c14.js +0 -1
  388. package/_standalone/.next/static/chunks/app/api/mcp/status/route-400c3c09b1540c14.js +0 -1
  389. package/_standalone/.next/static/chunks/app/api/monitoring/route-400c3c09b1540c14.js +0 -1
  390. package/_standalone/.next/static/chunks/app/api/recent-files/route-400c3c09b1540c14.js +0 -1
  391. package/_standalone/.next/static/chunks/app/api/restart/route-400c3c09b1540c14.js +0 -1
  392. package/_standalone/.next/static/chunks/app/api/search/route-400c3c09b1540c14.js +0 -1
  393. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-400c3c09b1540c14.js +0 -1
  394. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-400c3c09b1540c14.js +0 -1
  395. package/_standalone/.next/static/chunks/app/api/settings/route-400c3c09b1540c14.js +0 -1
  396. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-400c3c09b1540c14.js +0 -1
  397. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-400c3c09b1540c14.js +0 -1
  398. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-400c3c09b1540c14.js +0 -1
  399. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-400c3c09b1540c14.js +0 -1
  400. package/_standalone/.next/static/chunks/app/api/setup/ls/route-400c3c09b1540c14.js +0 -1
  401. package/_standalone/.next/static/chunks/app/api/setup/route-400c3c09b1540c14.js +0 -1
  402. package/_standalone/.next/static/chunks/app/api/skills/route-400c3c09b1540c14.js +0 -1
  403. package/_standalone/.next/static/chunks/app/api/sync/route-400c3c09b1540c14.js +0 -1
  404. package/_standalone/.next/static/chunks/app/api/tree-version/route-400c3c09b1540c14.js +0 -1
  405. package/_standalone/.next/static/chunks/app/api/uninstall/route-400c3c09b1540c14.js +0 -1
  406. package/_standalone/.next/static/chunks/app/api/update/route-400c3c09b1540c14.js +0 -1
  407. package/_standalone/.next/static/chunks/app/api/update-check/route-400c3c09b1540c14.js +0 -1
  408. package/_standalone/.next/static/chunks/app/api/update-status/route-400c3c09b1540c14.js +0 -1
  409. package/_standalone/.next/static/chunks/app/api/workflows/route-400c3c09b1540c14.js +0 -1
  410. package/_standalone/.next/static/chunks/app/echo/page-400c3c09b1540c14.js +0 -1
  411. package/_standalone/.next/static/chunks/app/help/page-3d0e1ceaa4abc243.js +0 -1
  412. package/_standalone/.next/static/chunks/app/setup/page-99ed3d1bb6b8f4ef.js +0 -1
  413. package/_standalone/.next/static/chunks/app/view/[...path]/loading-400c3c09b1540c14.js +0 -1
  414. package/_standalone/.next/static/chunks/app/view/[...path]/page-44fa78cbea613a78.js +0 -12
  415. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-400c3c09b1540c14.js +0 -1
  416. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-400c3c09b1540c14.js +0 -1
  417. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-400c3c09b1540c14.js +0 -1
  418. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-400c3c09b1540c14.js +0 -1
  419. package/_standalone/.next/static/css/d300701f384db50d.css +0 -1
  420. package/_standalone/.next/static/rZLs1krFuduixvcVNe6q3/_buildManifest.js +0 -1
  421. package/_standalone/components/renderers/agent-inspector/manifest.ts +0 -16
  422. /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
+ };
@@ -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 via API',
8
+ summary: 'Search your knowledge base',
8
9
  usage: 'mindos search "<query>"',
9
- examples: ['mindos search "meeting notes"', 'mindos search "RAG" --limit 5 --json'],
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 || flags.help || flags.h) {
15
- console.log(bold('mindos search') + ' — Knowledge base search');
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 port = flags.port || process.env.MINDOS_WEB_PORT || '3456';
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('http://localhost:' + port + '/api/search?q=' + encodeURIComponent(query) + '&limit=' + limit, { headers });
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 || [];
@@ -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: 'Knowledge base structure (ls, mkdir, rmdir, init, info, tree)',
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
- const root = getMindRoot();
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
- ${bold('Examples:')}
64
- ${dim('mindos space ls')}
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
+ }