@geminilight/mindos 0.6.39 → 0.6.41

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 (759) hide show
  1. package/README.md +31 -15
  2. package/README_zh.md +31 -15
  3. package/_standalone/.mindos-build-version +1 -1
  4. package/_standalone/.next/BUILD_ID +1 -1
  5. package/_standalone/.next/app-path-routes-manifest.json +19 -18
  6. package/_standalone/.next/build-manifest.json +3 -3
  7. package/_standalone/.next/cache/.previewinfo +1 -1
  8. package/_standalone/.next/cache/.rscinfo +1 -1
  9. package/_standalone/.next/cache/config.json +3 -3
  10. package/_standalone/.next/prerender-manifest.json +3 -3
  11. package/_standalone/.next/react-loadable-manifest.json +68 -2
  12. package/_standalone/.next/routes-manifest.json +6 -0
  13. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  14. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  15. package/_standalone/.next/server/app/_global-error.html +2 -2
  16. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  21. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  22. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  23. package/_standalone/.next/server/app/_not-found/page.js +2 -2
  24. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  25. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  26. package/_standalone/.next/server/app/agents/[agentKey]/page.js +2 -2
  27. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  28. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/agents/page.js +3 -3
  30. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  31. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/config/route.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/config/route.js.nft.json +1 -1
  38. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
  40. package/_standalone/.next/server/app/api/acp/detect/route.js.nft.json +1 -1
  41. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/acp/session/route.js +1 -1
  45. package/_standalone/.next/server/app/api/acp/session/route.js.nft.json +1 -1
  46. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/agent-activity/route.js +1 -1
  48. package/_standalone/.next/server/app/api/agent-activity/route.js.nft.json +1 -1
  49. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/ask/route.js +137 -99
  51. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  52. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/backlinks/route.js +1 -1
  56. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  57. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/bootstrap/route.js +1 -1
  59. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  60. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  61. package/_standalone/.next/server/app/api/changes/route.js +1 -1
  62. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  63. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/export/route.js +3 -3
  65. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  66. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/file/import/route.js +2 -19
  69. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  70. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/file/route.js +1 -18
  72. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  73. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/files/route.js +1 -1
  75. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  76. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/git/route.js +1 -1
  78. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  79. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/graph/route.js +1 -1
  81. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  82. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/inbox/route.js +1 -0
  85. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -0
  86. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
  87. package/_standalone/.next/server/app/api/init/route.js +1 -1
  88. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  89. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
  91. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  92. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
  94. package/_standalone/.next/server/app/api/mcp/install/route.js.nft.json +1 -1
  95. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/mcp/install-skill/route.js.nft.json +1 -1
  97. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  100. package/_standalone/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  101. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/monitoring/route.js +1 -1
  103. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  104. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/recent-files/route.js +1 -1
  106. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  107. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  108. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  109. package/_standalone/.next/server/app/api/search/route.js +1 -1
  110. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  111. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -1
  113. package/_standalone/.next/server/app/api/settings/list-models/route.js.nft.json +1 -1
  114. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -1
  116. package/_standalone/.next/server/app/api/settings/reset-token/route.js.nft.json +1 -1
  117. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  118. package/_standalone/.next/server/app/api/settings/route.js +1 -1
  119. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  120. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  121. package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
  122. package/_standalone/.next/server/app/api/settings/test-key/route.js.nft.json +1 -1
  123. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  124. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  126. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  127. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/api/setup/route.js +1 -1
  129. package/_standalone/.next/server/app/api/setup/route.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/api/skills/route.js +2 -2
  132. package/_standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app/api/sync/route.js +1 -1
  135. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  136. package/_standalone/.next/server/app/api/tree-version/route.js +1 -1
  137. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  138. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  139. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  141. package/_standalone/.next/server/app/api/update-check/route.js +1 -1
  142. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  144. package/_standalone/.next/server/app/api/workflows/route.js +2 -2
  145. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  146. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  147. package/_standalone/.next/server/app/changes/page.js +2 -2
  148. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  149. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  150. package/_standalone/.next/server/app/echo/[segment]/page.js +6 -6
  151. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  152. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  153. package/_standalone/.next/server/app/echo/page.js +2 -2
  154. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  155. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  156. package/_standalone/.next/server/app/explore/page.js +3 -3
  157. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  158. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  159. package/_standalone/.next/server/app/help/page.js +2 -2
  160. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  161. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  162. package/_standalone/.next/server/app/login/page.js +2 -2
  163. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  164. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  165. package/_standalone/.next/server/app/page.js +3 -3
  166. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  167. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  168. package/_standalone/.next/server/app/setup/page.js +2 -2
  169. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  170. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  171. package/_standalone/.next/server/app/trash/page.js +3 -3
  172. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  173. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  174. package/_standalone/.next/server/app/view/[...path]/page.js +4 -4
  175. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  176. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  177. package/_standalone/.next/server/app-paths-manifest.json +19 -18
  178. package/_standalone/.next/server/chunks/1550.js +1 -1
  179. package/_standalone/.next/server/chunks/1750.js +1 -0
  180. package/_standalone/.next/server/chunks/{9414.js → 2190.js} +1 -1
  181. package/_standalone/.next/server/chunks/2536.js +52 -0
  182. package/_standalone/.next/server/chunks/5648.js +2 -0
  183. package/_standalone/.next/server/chunks/6539.js +1 -1
  184. package/_standalone/.next/server/chunks/8388.js +15 -0
  185. package/_standalone/.next/server/chunks/953.js +42 -2
  186. package/_standalone/.next/server/chunks/9539.js +219 -0
  187. package/_standalone/.next/server/functions-config-manifest.json +2 -1
  188. package/_standalone/.next/server/instrumentation.js +1 -1
  189. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  190. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  191. package/_standalone/.next/server/pages/500.html +2 -2
  192. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  193. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  194. package/_standalone/.next/static/Ij3PFh-a0zi5K_ANoSAW0/_buildManifest.js +1 -0
  195. package/_standalone/.next/static/chunks/1053-b70535785cc5aaee.js +29 -0
  196. package/_standalone/.next/static/chunks/1239.10a0710c2772ab34.js +1 -0
  197. package/_standalone/.next/static/chunks/{1814.e2da5460ded71d71.js → 1814.2ee1d03297c0bccd.js} +1 -1
  198. package/_standalone/.next/static/chunks/{1384-55276d40a9da4e88.js → 1880-c2a9e76201841c86.js} +2 -2
  199. package/_standalone/.next/static/chunks/{1a258343-030e4d6735874dd4.js → 1a258343-9803591e4aaee1f6.js} +1 -1
  200. package/_standalone/.next/static/chunks/2631.dc56e83472bde281.js +1 -0
  201. package/_standalone/.next/static/chunks/2872.045858d00bd8307f.js +8 -0
  202. package/_standalone/.next/static/chunks/2968.f10ccee9e7e2324d.js +2 -0
  203. package/_standalone/.next/static/chunks/3160-83a7e0b94414b3ac.js +1 -0
  204. package/_standalone/.next/static/chunks/3637.0541ac2d0ea7de1f.js +1 -0
  205. package/_standalone/.next/static/chunks/4033.6666700547b20141.js +1 -0
  206. package/_standalone/.next/static/chunks/4563-b2a2ce80aff845af.js +6 -0
  207. package/_standalone/.next/static/chunks/516.24ee058b1d4b1fed.js +8 -0
  208. package/_standalone/.next/static/chunks/5627.c4337d7289acb31f.js +1 -0
  209. package/_standalone/.next/static/chunks/5956.b445072b35915129.js +1 -0
  210. package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +1 -0
  211. package/_standalone/.next/static/chunks/6826.7b7d94dd0fd83812.js +1 -0
  212. package/_standalone/.next/static/chunks/{8409-de5726a4a278d28f.js → 6926-4af497b83952fa87.js} +1 -1
  213. package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +1 -0
  214. package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +1 -0
  215. package/_standalone/.next/static/chunks/7266-bb7be1128eccd48e.js +13 -0
  216. package/_standalone/.next/static/chunks/7753.63831cfc54a55fbb.js +1 -0
  217. package/_standalone/.next/static/chunks/862.9f526e964489e2e5.js +1 -0
  218. package/_standalone/.next/static/chunks/9300.118b8c840634383f.js +28 -0
  219. package/_standalone/.next/static/chunks/95247769.3b5caae1c1a76ce1.js +4 -0
  220. package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +1 -0
  221. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-400c3c09b1540c14.js +1 -0
  222. package/_standalone/.next/static/chunks/app/_global-error/page-400c3c09b1540c14.js +1 -0
  223. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-773071a99c4daac2.js +1 -0
  224. package/_standalone/.next/static/chunks/app/agents/page-6102a884b2cb3cfe.js +5 -0
  225. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-400c3c09b1540c14.js +1 -0
  226. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-400c3c09b1540c14.js +1 -0
  227. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-400c3c09b1540c14.js +1 -0
  228. package/_standalone/.next/static/chunks/app/api/a2a/route-400c3c09b1540c14.js +1 -0
  229. package/_standalone/.next/static/chunks/app/api/acp/config/route-400c3c09b1540c14.js +1 -0
  230. package/_standalone/.next/static/chunks/app/api/acp/detect/route-400c3c09b1540c14.js +1 -0
  231. package/_standalone/.next/static/chunks/app/api/acp/install/route-400c3c09b1540c14.js +1 -0
  232. package/_standalone/.next/static/chunks/app/api/acp/registry/route-400c3c09b1540c14.js +1 -0
  233. package/_standalone/.next/static/chunks/app/api/acp/session/route-400c3c09b1540c14.js +1 -0
  234. package/_standalone/.next/static/chunks/app/api/agent-activity/route-400c3c09b1540c14.js +1 -0
  235. package/_standalone/.next/static/chunks/app/api/ask/route-400c3c09b1540c14.js +1 -0
  236. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-400c3c09b1540c14.js +1 -0
  237. package/_standalone/.next/static/chunks/app/api/auth/route-400c3c09b1540c14.js +1 -0
  238. package/_standalone/.next/static/chunks/app/api/backlinks/route-400c3c09b1540c14.js +1 -0
  239. package/_standalone/.next/static/chunks/app/api/bootstrap/route-400c3c09b1540c14.js +1 -0
  240. package/_standalone/.next/static/chunks/app/api/changes/route-400c3c09b1540c14.js +1 -0
  241. package/_standalone/.next/static/chunks/app/api/export/route-400c3c09b1540c14.js +1 -0
  242. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-400c3c09b1540c14.js +1 -0
  243. package/_standalone/.next/static/chunks/app/api/file/import/route-400c3c09b1540c14.js +1 -0
  244. package/_standalone/.next/static/chunks/app/api/file/route-400c3c09b1540c14.js +1 -0
  245. package/_standalone/.next/static/chunks/app/api/files/route-400c3c09b1540c14.js +1 -0
  246. package/_standalone/.next/static/chunks/app/api/git/route-400c3c09b1540c14.js +1 -0
  247. package/_standalone/.next/static/chunks/app/api/graph/route-400c3c09b1540c14.js +1 -0
  248. package/_standalone/.next/static/chunks/app/api/health/route-400c3c09b1540c14.js +1 -0
  249. package/_standalone/.next/static/chunks/app/api/inbox/route-400c3c09b1540c14.js +1 -0
  250. package/_standalone/.next/static/chunks/app/api/init/route-400c3c09b1540c14.js +1 -0
  251. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-400c3c09b1540c14.js +1 -0
  252. package/_standalone/.next/static/chunks/app/api/mcp/install/route-400c3c09b1540c14.js +1 -0
  253. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-400c3c09b1540c14.js +1 -0
  254. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-400c3c09b1540c14.js +1 -0
  255. package/_standalone/.next/static/chunks/app/api/mcp/status/route-400c3c09b1540c14.js +1 -0
  256. package/_standalone/.next/static/chunks/app/api/monitoring/route-400c3c09b1540c14.js +1 -0
  257. package/_standalone/.next/static/chunks/app/api/recent-files/route-400c3c09b1540c14.js +1 -0
  258. package/_standalone/.next/static/chunks/app/api/restart/route-400c3c09b1540c14.js +1 -0
  259. package/_standalone/.next/static/chunks/app/api/search/route-400c3c09b1540c14.js +1 -0
  260. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-400c3c09b1540c14.js +1 -0
  261. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-400c3c09b1540c14.js +1 -0
  262. package/_standalone/.next/static/chunks/app/api/settings/route-400c3c09b1540c14.js +1 -0
  263. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-400c3c09b1540c14.js +1 -0
  264. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-400c3c09b1540c14.js +1 -0
  265. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-400c3c09b1540c14.js +1 -0
  266. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-400c3c09b1540c14.js +1 -0
  267. package/_standalone/.next/static/chunks/app/api/setup/ls/route-400c3c09b1540c14.js +1 -0
  268. package/_standalone/.next/static/chunks/app/api/setup/route-400c3c09b1540c14.js +1 -0
  269. package/_standalone/.next/static/chunks/app/api/skills/route-400c3c09b1540c14.js +1 -0
  270. package/_standalone/.next/static/chunks/app/api/sync/route-400c3c09b1540c14.js +1 -0
  271. package/_standalone/.next/static/chunks/app/api/tree-version/route-400c3c09b1540c14.js +1 -0
  272. package/_standalone/.next/static/chunks/app/api/uninstall/route-400c3c09b1540c14.js +1 -0
  273. package/_standalone/.next/static/chunks/app/api/update/route-400c3c09b1540c14.js +1 -0
  274. package/_standalone/.next/static/chunks/app/api/update-check/route-400c3c09b1540c14.js +1 -0
  275. package/_standalone/.next/static/chunks/app/api/update-status/route-400c3c09b1540c14.js +1 -0
  276. package/_standalone/.next/static/chunks/app/api/workflows/route-400c3c09b1540c14.js +1 -0
  277. package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +1 -0
  278. package/_standalone/.next/static/chunks/app/echo/[segment]/page-addf014fcf23fad5.js +11 -0
  279. package/_standalone/.next/static/chunks/app/echo/page-400c3c09b1540c14.js +1 -0
  280. package/_standalone/.next/static/chunks/app/explore/page-5eb2835e9e3ab4bb.js +4 -0
  281. package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +1 -0
  282. package/_standalone/.next/static/chunks/app/layout-42cdbce19f404567.js +186 -0
  283. package/_standalone/.next/static/chunks/app/login/page-24236460fa7c11d0.js +1 -0
  284. package/_standalone/.next/static/chunks/app/page-8c9643b649e01735.js +7 -0
  285. package/_standalone/.next/static/chunks/app/setup/page-d158b8cb533feb1e.js +1 -0
  286. package/_standalone/.next/static/chunks/app/trash/page-e9ab74ffeb96af41.js +1 -0
  287. package/_standalone/.next/static/chunks/app/view/[...path]/loading-400c3c09b1540c14.js +1 -0
  288. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +1 -0
  289. package/_standalone/.next/static/chunks/app/view/[...path]/page-764a69a1c8bd4eef.js +12 -0
  290. package/_standalone/.next/static/chunks/e71f6c19-4df85185bf989b49.js +1 -0
  291. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-400c3c09b1540c14.js +1 -0
  292. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-400c3c09b1540c14.js +1 -0
  293. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-400c3c09b1540c14.js +1 -0
  294. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-400c3c09b1540c14.js +1 -0
  295. package/_standalone/.next/static/chunks/webpack-7b276daaa930d480.js +1 -0
  296. package/_standalone/.next/static/css/bc9179074eaf65ae.css +1 -0
  297. package/_standalone/.next/trace +63 -53
  298. package/_standalone/.next/types/routes.d.ts +2 -1
  299. package/_standalone/.next/types/validator.ts +9 -0
  300. package/_standalone/__tests__/agent/chat-mode.test.ts +103 -0
  301. package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +4 -3
  302. package/_standalone/__tests__/api/bootstrap.test.ts +0 -2
  303. package/_standalone/__tests__/api/file.test.ts +22 -1
  304. package/_standalone/__tests__/api/install-skill.test.ts +2 -2
  305. package/_standalone/__tests__/api/mcp-install.test.ts +32 -10
  306. package/_standalone/__tests__/api/setup.test.ts +2 -2
  307. package/_standalone/__tests__/api/test-key.test.ts +73 -147
  308. package/_standalone/__tests__/ask/ask-content-input-during-run.test.tsx +1 -1
  309. package/_standalone/__tests__/ask/mode-capsule.test.ts +95 -0
  310. package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
  311. package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
  312. package/_standalone/__tests__/core/inbox.test.ts +250 -0
  313. package/_standalone/__tests__/core/skill-install-logic.test.ts +3 -3
  314. package/_standalone/__tests__/core/sync-status.test.ts +1 -1
  315. package/_standalone/__tests__/core/tools.test.ts +8 -6
  316. package/_standalone/__tests__/lib/echo-pages-visual-i18n.test.ts +2 -2
  317. package/_standalone/__tests__/lib/i18n-new-keys.test.ts +2 -2
  318. package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +2 -2
  319. package/_standalone/__tests__/settings/activity-bar-update-badge.test.tsx +1 -1
  320. package/_standalone/__tests__/settings/settings-update-badge.test.tsx +1 -1
  321. package/_standalone/__tests__/settings/update-tab-availability-sync.test.tsx +1 -1
  322. package/_standalone/__tests__/settings/update-tab-browser.test.tsx +1 -1
  323. package/_standalone/__tests__/settings/update-tab-desktop.test.tsx +1 -1
  324. package/_standalone/__tests__/setup.ts +3 -5
  325. package/_standalone/app/globals.css +11 -1
  326. package/_standalone/components/ActivityBar.tsx +26 -10
  327. package/_standalone/components/AskFab.tsx +1 -1
  328. package/_standalone/components/AskModal.tsx +1 -1
  329. package/_standalone/components/Backlinks.tsx +1 -1
  330. package/_standalone/components/CreateSpaceModal.tsx +7 -55
  331. package/_standalone/components/EchoSpotlight.tsx +1 -1
  332. package/_standalone/components/ExportModal.tsx +1 -1
  333. package/_standalone/components/FileTree.tsx +66 -80
  334. package/_standalone/components/FindInPage.tsx +1 -1
  335. package/_standalone/components/GuideCard.tsx +1 -1
  336. package/_standalone/components/ImportModal.tsx +1 -1
  337. package/_standalone/components/KeyboardShortcuts.tsx +1 -1
  338. package/_standalone/components/MarkdownView.tsx +41 -16
  339. package/_standalone/components/OnboardingView.tsx +1 -1
  340. package/_standalone/components/OrganizeToast.tsx +1 -1
  341. package/_standalone/components/Panel.tsx +82 -4
  342. package/_standalone/components/QuickSuggestion.tsx +1 -1
  343. package/_standalone/components/RightAgentDetailPanel.tsx +2 -2
  344. package/_standalone/components/RightAskPanel.tsx +88 -22
  345. package/_standalone/components/SearchModal.tsx +1 -1
  346. package/_standalone/components/Sidebar.tsx +4 -4
  347. package/_standalone/components/SidebarLayout.tsx +52 -16
  348. package/_standalone/components/SpaceInitToast.tsx +1 -1
  349. package/_standalone/components/SyncStatusBar.tsx +2 -2
  350. package/_standalone/components/SystemPulse.tsx +12 -6
  351. package/_standalone/components/TableOfContents.tsx +86 -39
  352. package/_standalone/components/agents/AgentActivitySection.tsx +225 -0
  353. package/_standalone/components/agents/AgentsMcpSection.tsx +10 -16
  354. package/_standalone/components/agents/AgentsOverviewSection.tsx +28 -27
  355. package/_standalone/components/agents/AgentsPanelA2aTab.tsx +1 -1
  356. package/_standalone/components/agents/AgentsPanelSessionsTab.tsx +6 -1
  357. package/_standalone/components/agents/AgentsSkillsSection.tsx +1 -1
  358. package/_standalone/components/agents/DiscoverAgentModal.tsx +1 -1
  359. package/_standalone/components/agents/RecentActivityFeed.tsx +49 -88
  360. package/_standalone/components/agents/agent-activity-shared.tsx +110 -0
  361. package/_standalone/components/ask/AgentSelectorCapsule.tsx +1 -1
  362. package/_standalone/components/ask/AskContent.tsx +332 -486
  363. package/_standalone/components/ask/AskHeader.tsx +61 -0
  364. package/_standalone/components/ask/FileChip.tsx +9 -5
  365. package/_standalone/components/ask/MessageList.tsx +88 -21
  366. package/_standalone/components/ask/ModeCapsule.tsx +180 -0
  367. package/_standalone/components/ask/ProviderModelCapsule.tsx +284 -0
  368. package/_standalone/components/ask/SessionHistory.tsx +63 -10
  369. package/_standalone/components/ask/SessionTabBar.tsx +1 -1
  370. package/_standalone/components/ask/ThinkingBlock.tsx +1 -1
  371. package/_standalone/components/ask/ToolCallBlock.tsx +28 -24
  372. package/_standalone/components/changes/ChangesBanner.tsx +1 -1
  373. package/_standalone/components/echo/EchoInsightCollapsible.tsx +1 -1
  374. package/_standalone/components/echo/EchoSegmentNav.tsx +1 -1
  375. package/_standalone/components/home/InboxSection.tsx +268 -0
  376. package/_standalone/components/panels/AgentsPanel.tsx +3 -2
  377. package/_standalone/components/panels/AgentsPanelHubNav.tsx +2 -6
  378. package/_standalone/components/panels/DiscoverPanel.tsx +1 -1
  379. package/_standalone/components/panels/EchoPanel.tsx +1 -1
  380. package/_standalone/components/panels/EchoSidebarStats.tsx +1 -1
  381. package/_standalone/components/panels/ImportHistoryPanel.tsx +1 -1
  382. package/_standalone/components/panels/PanelHeader.tsx +1 -1
  383. package/_standalone/components/panels/PluginsPanel.tsx +1 -1
  384. package/_standalone/components/panels/SearchPanel.tsx +5 -2
  385. package/_standalone/components/panels/SyncPopover.tsx +1 -1
  386. package/_standalone/components/panels/WorkflowsPanel.tsx +1 -1
  387. package/_standalone/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +18 -0
  388. package/_standalone/components/renderers/todo/TodoRenderer.tsx +489 -75
  389. package/_standalone/components/settings/AiTab.tsx +198 -127
  390. package/_standalone/components/settings/AppearanceTab.tsx +48 -50
  391. package/_standalone/components/settings/KnowledgeTab.tsx +92 -27
  392. package/_standalone/components/settings/McpAgentInstall.tsx +95 -28
  393. package/_standalone/components/settings/McpSkillsSection.tsx +2 -2
  394. package/_standalone/components/settings/McpTab.tsx +498 -216
  395. package/_standalone/components/settings/PluginsTab.tsx +1 -1
  396. package/_standalone/components/settings/SettingsContent.tsx +17 -8
  397. package/_standalone/components/settings/SyncTab.tsx +615 -230
  398. package/_standalone/components/settings/UninstallTab.tsx +1 -1
  399. package/_standalone/components/settings/UpdateTab.tsx +2 -2
  400. package/_standalone/components/settings/types.ts +7 -5
  401. package/_standalone/components/setup/StepAI.tsx +70 -49
  402. package/_standalone/components/setup/StepAgents.tsx +113 -47
  403. package/_standalone/components/setup/StepDots.tsx +1 -1
  404. package/_standalone/components/setup/StepReview.tsx +186 -31
  405. package/_standalone/components/setup/types.ts +17 -8
  406. package/_standalone/components/shared/ProviderSelect.tsx +134 -0
  407. package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +2 -2
  408. package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +2 -2
  409. package/_standalone/components/walkthrough/index.ts +1 -1
  410. package/_standalone/data/skills/mindos/SKILL.md +93 -93
  411. package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
  412. package/_standalone/data/skills/mindos-zh/SKILL.md +100 -104
  413. package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
  414. package/_standalone/hooks/useAcpDetection.ts +1 -1
  415. package/_standalone/hooks/useAskChat.ts +248 -0
  416. package/_standalone/hooks/useAskPanel.ts +24 -4
  417. package/_standalone/hooks/useAskSession.ts +15 -0
  418. package/_standalone/lib/acp/types.ts +1 -1
  419. package/_standalone/lib/api.ts +3 -1
  420. package/_standalone/lib/core/types.ts +2 -0
  421. package/_standalone/lib/i18n/modules/ai-chat.ts +35 -13
  422. package/_standalone/lib/i18n/modules/features.ts +5 -5
  423. package/_standalone/lib/i18n/modules/knowledge.ts +86 -2
  424. package/_standalone/lib/i18n/modules/navigation.ts +6 -2
  425. package/_standalone/lib/i18n/modules/onboarding.ts +69 -29
  426. package/_standalone/lib/i18n/modules/panels.ts +78 -29
  427. package/_standalone/lib/i18n/modules/settings.ts +280 -24
  428. package/_standalone/lib/inbox-upload.ts +93 -0
  429. package/_standalone/lib/mcp-snippets.ts +5 -1
  430. package/_standalone/lib/settings-ai-client.ts +13 -12
  431. package/_standalone/lib/space-ai-init.ts +66 -0
  432. package/_standalone/lib/stores/McpStoreInit.tsx +18 -0
  433. package/_standalone/lib/stores/WalkthroughInit.tsx +20 -0
  434. package/_standalone/lib/stores/locale-store.ts +55 -0
  435. package/_standalone/lib/stores/mcp-store.ts +156 -0
  436. package/_standalone/lib/stores/walkthrough-store.ts +118 -0
  437. package/_standalone/package-lock.json +40 -8
  438. package/_standalone/package.json +3 -1
  439. package/_standalone/tsconfig.json +1 -1
  440. package/_standalone/tsconfig.tsbuildinfo +1 -1
  441. package/app/app/api/acp/detect/route.ts +29 -20
  442. package/app/app/api/agent-activity/route.ts +1 -1
  443. package/app/app/api/ask/route.ts +105 -30
  444. package/app/app/api/ask-sessions/route.ts +1 -0
  445. package/app/app/api/bootstrap/route.ts +1 -3
  446. package/app/app/api/file/route.ts +34 -4
  447. package/app/app/api/inbox/route.ts +61 -0
  448. package/app/app/api/mcp/install/route.ts +2 -1
  449. package/app/app/api/mcp/status/route.ts +14 -6
  450. package/app/app/api/settings/list-models/route.ts +73 -53
  451. package/app/app/api/settings/route.ts +46 -55
  452. package/app/app/api/settings/test-key/route.ts +57 -114
  453. package/app/app/api/setup/route.ts +31 -21
  454. package/app/app/api/sync/route.ts +122 -12
  455. package/app/app/api/update-check/route.ts +2 -2
  456. package/app/app/globals.css +11 -1
  457. package/app/app/layout.tsx +2 -3
  458. package/app/app/login/page.tsx +1 -1
  459. package/app/app/view/[...path]/ViewPageClient.tsx +22 -37
  460. package/app/app/view/[...path]/not-found.tsx +1 -1
  461. package/app/components/ActivityBar.tsx +26 -10
  462. package/app/components/AskFab.tsx +1 -1
  463. package/app/components/AskModal.tsx +1 -1
  464. package/app/components/Backlinks.tsx +1 -1
  465. package/app/components/CreateSpaceModal.tsx +7 -55
  466. package/app/components/DirView.tsx +93 -11
  467. package/app/components/EchoSpotlight.tsx +1 -1
  468. package/app/components/ExportModal.tsx +1 -1
  469. package/app/components/FileTree.tsx +66 -80
  470. package/app/components/FindInPage.tsx +1 -1
  471. package/app/components/GuideCard.tsx +1 -1
  472. package/app/components/HomeContent.tsx +21 -14
  473. package/app/components/ImportModal.tsx +1 -1
  474. package/app/components/KeyboardShortcuts.tsx +1 -1
  475. package/app/components/MarkdownView.tsx +41 -16
  476. package/app/components/OnboardingView.tsx +1 -1
  477. package/app/components/OrganizeToast.tsx +1 -1
  478. package/app/components/Panel.tsx +82 -4
  479. package/app/components/QuickSuggestion.tsx +1 -1
  480. package/app/components/RightAgentDetailPanel.tsx +2 -2
  481. package/app/components/RightAskPanel.tsx +88 -22
  482. package/app/components/SearchModal.tsx +1 -1
  483. package/app/components/Sidebar.tsx +4 -4
  484. package/app/components/SidebarLayout.tsx +52 -16
  485. package/app/components/SpaceInitToast.tsx +1 -1
  486. package/app/components/SyncStatusBar.tsx +2 -2
  487. package/app/components/SystemPulse.tsx +12 -6
  488. package/app/components/TableOfContents.tsx +86 -39
  489. package/app/components/TrashPageClient.tsx +1 -1
  490. package/app/components/UpdateOverlay.tsx +2 -2
  491. package/app/components/agents/AgentActivitySection.tsx +225 -0
  492. package/app/components/agents/AgentDetailContent.tsx +234 -3
  493. package/app/components/agents/AgentsContentPage.tsx +13 -2
  494. package/app/components/agents/AgentsMcpSection.tsx +10 -16
  495. package/app/components/agents/AgentsOverviewSection.tsx +28 -27
  496. package/app/components/agents/AgentsPanelA2aTab.tsx +1 -1
  497. package/app/components/agents/AgentsPanelSessionsTab.tsx +6 -1
  498. package/app/components/agents/AgentsSkillsSection.tsx +1 -1
  499. package/app/components/agents/DiscoverAgentModal.tsx +1 -1
  500. package/app/components/agents/RecentActivityFeed.tsx +49 -88
  501. package/app/components/agents/agent-activity-shared.tsx +110 -0
  502. package/app/components/agents/agents-content-model.ts +2 -2
  503. package/app/components/ask/AgentSelectorCapsule.tsx +1 -1
  504. package/app/components/ask/AskContent.tsx +332 -486
  505. package/app/components/ask/AskHeader.tsx +61 -0
  506. package/app/components/ask/FileChip.tsx +9 -5
  507. package/app/components/ask/MessageList.tsx +88 -21
  508. package/app/components/ask/ModeCapsule.tsx +180 -0
  509. package/app/components/ask/ProviderModelCapsule.tsx +284 -0
  510. package/app/components/ask/SessionHistory.tsx +63 -10
  511. package/app/components/ask/SessionTabBar.tsx +1 -1
  512. package/app/components/ask/ThinkingBlock.tsx +1 -1
  513. package/app/components/ask/ToolCallBlock.tsx +28 -24
  514. package/app/components/changes/ChangesBanner.tsx +1 -1
  515. package/app/components/changes/ChangesContentPage.tsx +1 -1
  516. package/app/components/echo/EchoInsightCollapsible.tsx +1 -1
  517. package/app/components/echo/EchoSegmentNav.tsx +1 -1
  518. package/app/components/echo/EchoSegmentPageClient.tsx +1 -1
  519. package/app/components/explore/ExploreContent.tsx +1 -1
  520. package/app/components/help/HelpContent.tsx +2 -1
  521. package/app/components/home/InboxSection.tsx +268 -0
  522. package/app/components/panels/AgentsPanel.tsx +3 -2
  523. package/app/components/panels/AgentsPanelHubNav.tsx +2 -6
  524. package/app/components/panels/DiscoverPanel.tsx +1 -1
  525. package/app/components/panels/EchoPanel.tsx +1 -1
  526. package/app/components/panels/EchoSidebarStats.tsx +1 -1
  527. package/app/components/panels/ImportHistoryPanel.tsx +1 -1
  528. package/app/components/panels/PanelHeader.tsx +1 -1
  529. package/app/components/panels/PluginsPanel.tsx +1 -1
  530. package/app/components/panels/SearchPanel.tsx +5 -2
  531. package/app/components/panels/SyncPopover.tsx +1 -1
  532. package/app/components/panels/WorkflowsPanel.tsx +1 -1
  533. package/app/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +18 -0
  534. package/app/components/renderers/todo/TodoRenderer.tsx +489 -75
  535. package/app/components/settings/AiTab.tsx +198 -127
  536. package/app/components/settings/AppearanceTab.tsx +48 -50
  537. package/app/components/settings/KnowledgeTab.tsx +92 -27
  538. package/app/components/settings/McpAgentInstall.tsx +95 -28
  539. package/app/components/settings/McpSkillsSection.tsx +2 -2
  540. package/app/components/settings/McpTab.tsx +498 -216
  541. package/app/components/settings/PluginsTab.tsx +1 -1
  542. package/app/components/settings/SettingsContent.tsx +17 -8
  543. package/app/components/settings/SyncTab.tsx +615 -230
  544. package/app/components/settings/UninstallTab.tsx +1 -1
  545. package/app/components/settings/UpdateTab.tsx +2 -2
  546. package/app/components/settings/types.ts +7 -5
  547. package/app/components/setup/StepAI.tsx +70 -49
  548. package/app/components/setup/StepAgents.tsx +113 -47
  549. package/app/components/setup/StepDots.tsx +1 -1
  550. package/app/components/setup/StepReview.tsx +186 -31
  551. package/app/components/setup/index.tsx +83 -48
  552. package/app/components/setup/types.ts +17 -8
  553. package/app/components/shared/ProviderSelect.tsx +134 -0
  554. package/app/components/walkthrough/WalkthroughOverlay.tsx +2 -2
  555. package/app/components/walkthrough/WalkthroughTooltip.tsx +2 -2
  556. package/app/components/walkthrough/index.ts +1 -1
  557. package/app/data/skills/mindos/SKILL.md +93 -93
  558. package/app/data/skills/mindos/references/write-supplement.md +119 -0
  559. package/app/data/skills/mindos-zh/SKILL.md +100 -104
  560. package/app/data/skills/mindos-zh/references/write-supplement.md +119 -0
  561. package/app/hooks/useAcpDetection.ts +1 -1
  562. package/app/hooks/useAskChat.ts +248 -0
  563. package/app/hooks/useAskPanel.ts +24 -4
  564. package/app/hooks/useAskSession.ts +15 -0
  565. package/app/lib/acp/types.ts +1 -1
  566. package/app/lib/actions.ts +13 -0
  567. package/app/lib/agent/log.ts +2 -0
  568. package/app/lib/agent/model.ts +69 -81
  569. package/app/lib/agent/prompt.ts +27 -0
  570. package/app/lib/agent/providers.ts +299 -0
  571. package/app/lib/agent/tools.ts +26 -4
  572. package/app/lib/api.ts +3 -1
  573. package/app/lib/core/agent-audit-log.ts +7 -0
  574. package/app/lib/core/fs-ops.ts +9 -4
  575. package/app/lib/core/inbox.ts +181 -0
  576. package/app/lib/core/index.ts +4 -0
  577. package/app/lib/core/tree.ts +3 -0
  578. package/app/lib/core/types.ts +2 -0
  579. package/app/lib/fs.ts +20 -2
  580. package/app/lib/i18n/modules/ai-chat.ts +35 -13
  581. package/app/lib/i18n/modules/features.ts +5 -5
  582. package/app/lib/i18n/modules/knowledge.ts +86 -2
  583. package/app/lib/i18n/modules/navigation.ts +6 -2
  584. package/app/lib/i18n/modules/onboarding.ts +69 -29
  585. package/app/lib/i18n/modules/panels.ts +78 -29
  586. package/app/lib/i18n/modules/settings.ts +280 -24
  587. package/app/lib/inbox-upload.ts +93 -0
  588. package/app/lib/mcp-agents.ts +7 -9
  589. package/app/lib/mcp-snippets.ts +5 -1
  590. package/app/lib/settings-ai-client.ts +13 -12
  591. package/app/lib/settings.ts +48 -33
  592. package/app/lib/space-ai-init.ts +66 -0
  593. package/app/lib/stores/LocaleStoreInit.tsx +18 -0
  594. package/app/lib/stores/McpStoreInit.tsx +18 -0
  595. package/app/lib/stores/WalkthroughInit.tsx +20 -0
  596. package/app/lib/stores/locale-store.ts +55 -0
  597. package/app/lib/stores/mcp-store.ts +156 -0
  598. package/app/lib/stores/walkthrough-store.ts +118 -0
  599. package/app/lib/types.ts +20 -0
  600. package/app/package.json +3 -1
  601. package/app/tsconfig.json +1 -1
  602. package/bin/cli.js +168 -1385
  603. package/bin/commands/agent.js +156 -20
  604. package/bin/commands/api.js +14 -11
  605. package/bin/commands/ask.js +79 -68
  606. package/bin/commands/build.js +26 -0
  607. package/bin/commands/config.js +170 -0
  608. package/bin/commands/dev.js +58 -0
  609. package/bin/commands/doctor.js +205 -0
  610. package/bin/commands/file.js +558 -40
  611. package/bin/commands/gateway.js +42 -0
  612. package/bin/commands/init-skills.js +56 -0
  613. package/bin/commands/logs.js +32 -0
  614. package/bin/commands/mcp-cmd.js +57 -0
  615. package/bin/commands/onboard.js +25 -0
  616. package/bin/commands/open.js +41 -0
  617. package/bin/commands/restart.js +48 -0
  618. package/bin/commands/search.js +16 -14
  619. package/bin/commands/space.js +100 -25
  620. package/bin/commands/start.js +262 -0
  621. package/bin/commands/status.js +2 -2
  622. package/bin/commands/stop.js +14 -0
  623. package/bin/commands/sync-cmd.js +134 -0
  624. package/bin/commands/token.js +98 -0
  625. package/bin/commands/uninstall.js +154 -0
  626. package/bin/commands/update.js +286 -0
  627. package/bin/lib/build.js +1 -1
  628. package/bin/lib/colors.js +8 -7
  629. package/bin/lib/command.js +37 -96
  630. package/bin/lib/config.js +5 -0
  631. package/bin/lib/csv.js +19 -0
  632. package/bin/lib/jsonc.js +12 -0
  633. package/bin/lib/markdown.js +69 -0
  634. package/bin/lib/mcp-agents.js +27 -8
  635. package/bin/lib/mcp-build.js +1 -1
  636. package/bin/lib/mcp-install.js +13 -4
  637. package/bin/lib/one-shot.js +88 -0
  638. package/bin/lib/path-expand.js +9 -0
  639. package/bin/lib/remote.js +65 -0
  640. package/bin/lib/repl.js +167 -0
  641. package/bin/lib/{utils.js → shell.js} +10 -26
  642. package/bin/lib/skill-check.js +1 -1
  643. package/bin/lib/sse-stream.js +167 -0
  644. package/bin/lib/sync.js +140 -34
  645. package/mcp/README.md +2 -2
  646. package/mcp/dist/index.cjs +43 -43
  647. package/mcp/package.json +1 -1
  648. package/mcp/src/index.ts +77 -61
  649. package/package.json +2 -2
  650. package/scripts/setup.js +183 -121
  651. package/skills/mindos/SKILL.md +93 -93
  652. package/skills/mindos/references/preference-capture.md +4 -4
  653. package/skills/mindos/references/write-supplement.md +2 -2
  654. package/skills/mindos-zh/SKILL.md +100 -104
  655. package/skills/mindos-zh/references/preference-capture.md +4 -4
  656. package/skills/mindos-zh/references/write-supplement.md +2 -2
  657. package/templates/empty/INSTRUCTION.md +0 -1
  658. package/templates/en/INSTRUCTION.md +0 -1
  659. package/templates/template-generation-skill.md +0 -1
  660. package/templates/zh/INSTRUCTION.md +0 -1
  661. package/_standalone/.next/server/chunks/1473.js +0 -52
  662. package/_standalone/.next/server/chunks/248.js +0 -15
  663. package/_standalone/.next/server/chunks/359.js +0 -2
  664. package/_standalone/.next/server/chunks/4931.js +0 -202
  665. package/_standalone/.next/server/chunks/7670.js +0 -1
  666. package/_standalone/.next/static/chunks/1038-ed04d6651ec92312.js +0 -1
  667. package/_standalone/.next/static/chunks/1263-6df1734e4273adb1.js +0 -25
  668. package/_standalone/.next/static/chunks/275-ebcaaedabe706903.js +0 -1
  669. package/_standalone/.next/static/chunks/3637.4bcd01a4db78b894.js +0 -1
  670. package/_standalone/.next/static/chunks/5637-b97c869adf70c82e.js +0 -1
  671. package/_standalone/.next/static/chunks/5681-a53362a1cd629dc6.js +0 -1
  672. package/_standalone/.next/static/chunks/9602-35ca17b688f1a4fe.js +0 -1
  673. package/_standalone/.next/static/chunks/9670-d59e4d45ed705f58.js +0 -6
  674. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-d4762cc48529e566.js +0 -1
  675. package/_standalone/.next/static/chunks/app/_global-error/page-d4762cc48529e566.js +0 -1
  676. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-519d4da1142db5ef.js +0 -1
  677. package/_standalone/.next/static/chunks/app/agents/page-b709cf3103321609.js +0 -5
  678. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-d4762cc48529e566.js +0 -1
  679. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-d4762cc48529e566.js +0 -1
  680. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-d4762cc48529e566.js +0 -1
  681. package/_standalone/.next/static/chunks/app/api/a2a/route-d4762cc48529e566.js +0 -1
  682. package/_standalone/.next/static/chunks/app/api/acp/config/route-d4762cc48529e566.js +0 -1
  683. package/_standalone/.next/static/chunks/app/api/acp/detect/route-d4762cc48529e566.js +0 -1
  684. package/_standalone/.next/static/chunks/app/api/acp/install/route-d4762cc48529e566.js +0 -1
  685. package/_standalone/.next/static/chunks/app/api/acp/registry/route-d4762cc48529e566.js +0 -1
  686. package/_standalone/.next/static/chunks/app/api/acp/session/route-d4762cc48529e566.js +0 -1
  687. package/_standalone/.next/static/chunks/app/api/agent-activity/route-d4762cc48529e566.js +0 -1
  688. package/_standalone/.next/static/chunks/app/api/ask/route-d4762cc48529e566.js +0 -1
  689. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-d4762cc48529e566.js +0 -1
  690. package/_standalone/.next/static/chunks/app/api/auth/route-d4762cc48529e566.js +0 -1
  691. package/_standalone/.next/static/chunks/app/api/backlinks/route-d4762cc48529e566.js +0 -1
  692. package/_standalone/.next/static/chunks/app/api/bootstrap/route-d4762cc48529e566.js +0 -1
  693. package/_standalone/.next/static/chunks/app/api/changes/route-d4762cc48529e566.js +0 -1
  694. package/_standalone/.next/static/chunks/app/api/export/route-d4762cc48529e566.js +0 -1
  695. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-d4762cc48529e566.js +0 -1
  696. package/_standalone/.next/static/chunks/app/api/file/import/route-d4762cc48529e566.js +0 -1
  697. package/_standalone/.next/static/chunks/app/api/file/route-d4762cc48529e566.js +0 -1
  698. package/_standalone/.next/static/chunks/app/api/files/route-d4762cc48529e566.js +0 -1
  699. package/_standalone/.next/static/chunks/app/api/git/route-d4762cc48529e566.js +0 -1
  700. package/_standalone/.next/static/chunks/app/api/graph/route-d4762cc48529e566.js +0 -1
  701. package/_standalone/.next/static/chunks/app/api/health/route-d4762cc48529e566.js +0 -1
  702. package/_standalone/.next/static/chunks/app/api/init/route-d4762cc48529e566.js +0 -1
  703. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-d4762cc48529e566.js +0 -1
  704. package/_standalone/.next/static/chunks/app/api/mcp/install/route-d4762cc48529e566.js +0 -1
  705. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-d4762cc48529e566.js +0 -1
  706. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-d4762cc48529e566.js +0 -1
  707. package/_standalone/.next/static/chunks/app/api/mcp/status/route-d4762cc48529e566.js +0 -1
  708. package/_standalone/.next/static/chunks/app/api/monitoring/route-d4762cc48529e566.js +0 -1
  709. package/_standalone/.next/static/chunks/app/api/recent-files/route-d4762cc48529e566.js +0 -1
  710. package/_standalone/.next/static/chunks/app/api/restart/route-d4762cc48529e566.js +0 -1
  711. package/_standalone/.next/static/chunks/app/api/search/route-d4762cc48529e566.js +0 -1
  712. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-d4762cc48529e566.js +0 -1
  713. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-d4762cc48529e566.js +0 -1
  714. package/_standalone/.next/static/chunks/app/api/settings/route-d4762cc48529e566.js +0 -1
  715. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-d4762cc48529e566.js +0 -1
  716. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-d4762cc48529e566.js +0 -1
  717. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-d4762cc48529e566.js +0 -1
  718. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-d4762cc48529e566.js +0 -1
  719. package/_standalone/.next/static/chunks/app/api/setup/ls/route-d4762cc48529e566.js +0 -1
  720. package/_standalone/.next/static/chunks/app/api/setup/route-d4762cc48529e566.js +0 -1
  721. package/_standalone/.next/static/chunks/app/api/skills/route-d4762cc48529e566.js +0 -1
  722. package/_standalone/.next/static/chunks/app/api/sync/route-d4762cc48529e566.js +0 -1
  723. package/_standalone/.next/static/chunks/app/api/tree-version/route-d4762cc48529e566.js +0 -1
  724. package/_standalone/.next/static/chunks/app/api/uninstall/route-d4762cc48529e566.js +0 -1
  725. package/_standalone/.next/static/chunks/app/api/update/route-d4762cc48529e566.js +0 -1
  726. package/_standalone/.next/static/chunks/app/api/update-check/route-d4762cc48529e566.js +0 -1
  727. package/_standalone/.next/static/chunks/app/api/update-status/route-d4762cc48529e566.js +0 -1
  728. package/_standalone/.next/static/chunks/app/api/workflows/route-d4762cc48529e566.js +0 -1
  729. package/_standalone/.next/static/chunks/app/changes/page-def5210095f8698d.js +0 -1
  730. package/_standalone/.next/static/chunks/app/echo/[segment]/page-be28eff31b1a186e.js +0 -11
  731. package/_standalone/.next/static/chunks/app/echo/page-d4762cc48529e566.js +0 -1
  732. package/_standalone/.next/static/chunks/app/explore/page-e4b8098dca200389.js +0 -4
  733. package/_standalone/.next/static/chunks/app/help/page-d5e57d73d94bad19.js +0 -1
  734. package/_standalone/.next/static/chunks/app/layout-d91cdbe2ecf135e1.js +0 -173
  735. package/_standalone/.next/static/chunks/app/login/page-321875768b70938a.js +0 -1
  736. package/_standalone/.next/static/chunks/app/page-718fdf170428b43c.js +0 -7
  737. package/_standalone/.next/static/chunks/app/setup/page-01ab1f549d636057.js +0 -1
  738. package/_standalone/.next/static/chunks/app/trash/page-89b1430cc8a16f18.js +0 -1
  739. package/_standalone/.next/static/chunks/app/view/[...path]/loading-d4762cc48529e566.js +0 -1
  740. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-f22c513bbc348cc8.js +0 -1
  741. package/_standalone/.next/static/chunks/app/view/[...path]/page-6e3dc47699a01de1.js +0 -12
  742. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-d4762cc48529e566.js +0 -1
  743. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-d4762cc48529e566.js +0 -1
  744. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-d4762cc48529e566.js +0 -1
  745. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d4762cc48529e566.js +0 -1
  746. package/_standalone/.next/static/chunks/webpack-3489a2b6c2882b0c.js +0 -1
  747. package/_standalone/.next/static/css/f16595bc58a16d5d.css +0 -1
  748. package/_standalone/.next/static/ushZ_NJ8rE3rG5hZfaYOX/_buildManifest.js +0 -1
  749. package/_standalone/components/walkthrough/WalkthroughProvider.tsx +0 -133
  750. package/_standalone/hooks/useMcpData.tsx +0 -169
  751. package/_standalone/lib/i18n-en.ts +0 -2
  752. package/_standalone/lib/i18n-zh.ts +0 -2
  753. package/_standalone/lib/types.ts +0 -70
  754. package/app/components/walkthrough/WalkthroughProvider.tsx +0 -133
  755. package/app/hooks/useMcpData.tsx +0 -169
  756. package/app/lib/LocaleContext.tsx +0 -60
  757. package/app/lib/i18n-en.ts +0 -2
  758. package/app/lib/i18n-zh.ts +0 -2
  759. /package/_standalone/.next/static/{ushZ_NJ8rE3rG5hZfaYOX → Ij3PFh-a0zi5K_ANoSAW0}/_ssgManifest.js +0 -0
@@ -3,14 +3,15 @@
3
3
  export const settingsEn = {
4
4
  settings: {
5
5
  title: 'Settings',
6
- tabs: { ai: 'AI', appearance: 'Appearance', knowledge: 'General', sync: 'Sync', mcp: 'MCP & Skills', plugins: 'Plugins', shortcuts: 'Shortcuts', monitoring: 'Monitoring', agents: 'Agents', update: 'Update', uninstall: 'Uninstall' },
6
+ tabs: { ai: 'AI', appearance: 'Appearance', knowledge: 'General', sync: 'Sync', mcp: 'Connections', plugins: 'Plugins', shortcuts: 'Shortcuts', monitoring: 'Monitoring', agents: 'Agents', update: 'Update', uninstall: 'Uninstall' },
7
7
  ai: {
8
8
  provider: 'Provider',
9
9
  model: 'Model',
10
10
  apiKey: 'API Key',
11
11
  baseUrl: 'Base URL',
12
- baseUrlHint: 'Optional. Use for proxies or OpenAI-compatible APIs.',
12
+ baseUrlHint: 'Optional. Use for proxies or custom API endpoints.',
13
13
  keyHint: 'Stored locally in ~/.mindos/config.json',
14
+ keyOptionalHint: 'Optional for local providers. Stored in ~/.mindos/config.json',
14
15
  envHint: 'Fields marked env have a value from environment variables. You can override them here, or restore all to env defaults.',
15
16
  envFieldNote: (key: string) => `Env var ${key} is set. Clear this field to fall back to it.`,
16
17
  resetToEnv: 'Reset to env value',
@@ -58,12 +59,40 @@ export const settingsEn = {
58
59
  light: 'Light',
59
60
  language: 'Language',
60
61
  browserNote: 'Appearance settings are saved in your browser.',
62
+ labsTitle: 'Labs',
63
+ labsDesc: 'Experimental features still in development. May change or be removed.',
64
+ labsEcho: 'Echo',
65
+ labsEchoDesc: 'Reflective journaling powered by your notes.',
66
+ labsWorkflows: 'Flows',
67
+ labsWorkflowsDesc: 'Visual workflow automation for agents.',
61
68
  fontPreview: 'The quick brown fox jumps over the lazy dog.',
62
69
  },
63
70
  knowledge: {
64
- sopRoot: 'Knowledge base root',
65
- sopRootHint: 'Absolute path to your notes directory. Requires server restart to take effect.',
66
- sopRootEnvHint: (key: string) => `MIND_ROOT env var is set to "${key}". Fill in above to override it.`,
71
+ cardTitle: 'Knowledge Base',
72
+ securityTitle: 'Security',
73
+ passwordPlaceholder: 'Leave empty to disable',
74
+ passwordShow: 'Show',
75
+ passwordHide: 'Hide',
76
+ tokenNotSet: '— not set —',
77
+ mcpUrl: 'MCP URL',
78
+ tokenGenerated: 'New token generated. Copy it now — it won\'t be shown in full again.',
79
+ monitoringTitle: 'System Monitoring',
80
+ monitoringFailed: 'Failed to load monitoring data',
81
+ monitorHeap: 'Heap',
82
+ monitorRss: 'RSS',
83
+ monitorUptime: 'Uptime',
84
+ monitorNode: 'Node',
85
+ monitorRequests: 'Requests',
86
+ monitorToolCalls: 'Tool Calls',
87
+ monitorTokens: 'Tokens',
88
+ monitorFiles: 'Files',
89
+ monitorErrors: 'Errors',
90
+ monitorMcpRunning: (port: number) => `Running :${port}`,
91
+ monitorMcpStopped: 'Stopped',
92
+ cancel: 'Cancel',
93
+ mindRoot: 'Knowledge base root',
94
+ mindRootHint: 'Absolute path to your notes directory. Requires server restart to take effect.',
95
+ mindRootEnvHint: (key: string) => `MIND_ROOT env var is set to "${key}". Fill in above to override it.`,
67
96
  envNote: 'MIND_ROOT env var is set. Fill in above to override it — your value takes priority.',
68
97
  webPassword: 'Web UI password',
69
98
  webPasswordHint: 'Protect the browser UI with a password. Leave empty to disable. Changes take effect on next page load.',
@@ -97,17 +126,63 @@ export const settingsEn = {
97
126
  featureMultiDevice: 'Works across devices',
98
127
  remoteUrl: 'Git Remote URL',
99
128
  invalidUrl: 'Invalid Git URL — use HTTPS (https://...) or SSH (git@...)',
100
- sshHint: 'SSH URLs require SSH key configured on this machine. HTTPS with token recommended.',
129
+ sshBrief: 'one-time key setup, no token needed',
130
+ httpsBrief: 'works anywhere, token recommended',
131
+ sshHint: 'Requires SSH key on this machine. Verify with: ssh -T git@github.com',
101
132
  accessToken: 'Access Token',
102
133
  optional: '(optional, for private repos)',
103
- tokenHint: 'GitHub: Settings → Developer settings → Personal access tokens → repo scope',
134
+ tokenHint: 'GitHub:',
135
+ tokenLink: 'Create a token (repo scope)',
104
136
  branchLabel: 'Branch',
105
137
  connectButton: 'Connect & Start Sync',
106
138
  connecting: 'Connecting...',
139
+ stepConnecting: 'Connecting to remote...',
140
+ stepAuthenticating: 'Authenticating...',
141
+ stepSyncing: 'Syncing data...',
142
+ stepAlmostDone: 'Almost done...',
143
+ stepDone: 'Sync configured successfully!',
144
+ gitignoreTitle: 'Excluded files',
145
+ gitignorePlaceholder: '# Files to exclude from sync\n*.tmp\nsecret/',
146
+ gitignoreSave: 'Save',
147
+ gitignoreSaved: 'Saved',
148
+ conflictExplain: 'These files were changed on both this device and the remote. Choose which version to keep.',
149
+ keepLocal: 'Keep local',
150
+ keepRemote: 'Keep remote',
151
+ keepLocalHint: 'Keep this device\'s version',
152
+ keepRemoteHint: 'Replace with the remote version',
153
+ viewDiff: 'Click to compare versions',
154
+ localVersion: 'Local (this device)',
155
+ remoteVersion: 'Remote',
156
+ emptyFile: '(empty)',
157
+ sectionTitle: 'Sync',
158
+ labelProvider: 'Provider',
159
+ labelRemote: 'Remote',
160
+ labelBranch: 'Branch',
161
+ labelLastSync: 'Last sync',
162
+ labelUnpushed: 'Unpushed',
163
+ labelAutoSync: 'Auto-sync',
164
+ unpushedCommits: (n: number) => `${n} commits`,
165
+ syncNow: 'Sync Now',
166
+ disableAutoSync: 'Disable Auto-sync',
167
+ enableAutoSync: 'Enable Auto-sync',
168
+ syncComplete: 'Sync complete',
169
+ syncFailed: 'Sync failed',
170
+ autoSyncDisabled: 'Auto-sync disabled',
171
+ autoSyncEnabled: 'Auto-sync enabled',
172
+ toggleFailed: 'Failed to toggle sync',
173
+ conflictsTitle: (n: number) => `Conflicts (${n})`,
174
+ conflictHint: 'Click a file to view your version. Hover and click',
175
+ conflictHintSuffix: 'to see the remote version.',
176
+ timeNever: 'never',
177
+ timeJustNow: 'just now',
178
+ timeMinAgo: (m: number) => `${m}m ago`,
179
+ timeHourAgo: (h: number) => `${h}h ago`,
180
+ timeDayAgo: (d: number) => `${d}d ago`,
107
181
  },
108
182
  plugins: {
109
183
  title: 'Installed Renderers',
110
184
  builtinBadge: 'built-in',
185
+ coreBadge: 'core',
111
186
  enabled: 'Enabled',
112
187
  disabled: 'Disabled',
113
188
  matchHint: 'Auto-activates on',
@@ -151,6 +226,7 @@ export const settingsEn = {
151
226
  portLabel: 'MCP Port',
152
227
  portHint: 'Changes require server restart',
153
228
  skillsTitle: 'Skills',
229
+ skillsDesc: 'Teach agents how to operate your knowledge base.',
154
230
  skillAutoLoaded: 'Auto-loaded on every request',
155
231
  skillSource: 'Source',
156
232
  skillBuiltin: 'Built-in',
@@ -193,6 +269,58 @@ export const settingsEn = {
193
269
  noAuthWarning: '⚠ No auth token — set one in Settings → General before enabling remote access.',
194
270
  showJson: 'Show JSON',
195
271
  hideJson: 'Hide JSON',
272
+ connectionTitle: 'Connect Agents',
273
+ connectionHint: 'Choose how your AI agents connect to MindOS.',
274
+ tokenCardTitle: 'Auth Token',
275
+ tokenCardDesc: 'Used by CLI remote mode and MCP connections.',
276
+ mcpHint: 'For Claude Desktop, Cursor, and agents that use MCP tool protocol.',
277
+ tokenLabel: 'Auth Token',
278
+ tokenMasked: 'Click Show to reveal the full token',
279
+ tokenShow: 'Show',
280
+ tokenHide: 'Hide',
281
+ tokenCopy: 'Copy',
282
+ tokenCopied: 'Token copied!',
283
+ tokenNone: 'No token set — your MCP server is open to all requests.',
284
+ tokenNoneAction: 'Generate a token in Settings → General → Security.',
285
+ serverUrl: 'MCP Server URL',
286
+ serverUrlCopy: 'Copy URL',
287
+ howToConnect: 'How to connect an AI agent',
288
+ howToStep1: 'Open your agent\'s MCP settings (e.g. Claude Code, Cursor)',
289
+ howToStep2: 'Add a new MCP server with the URL above',
290
+ howToStep3: 'Set the Auth Token as the bearer token',
291
+ howToStep4: 'Save and verify the connection',
292
+ // CLI Skill
293
+ cliSkillTitle: 'CLI Skill',
294
+ cliSkillHint: 'For agents with bash (Claude Code, Gemini CLI, Codex) — lower token cost, no MCP needed.',
295
+ cliSkillDesc: 'Lower token cost, Skill included — just install and go.',
296
+ cliLocalDesc: 'MindOS Skill is built-in. Install the CLI and you\'re good to go.',
297
+ cliRemoteDesc: 'Install the CLI on another machine and connect to this MindOS server.',
298
+ cliSkillInstall: 'Install',
299
+ cliSkillInstallCmd: 'npm install -g @geminilight/mindos',
300
+ cliSkillRemote: 'Remote',
301
+ cliSkillVerify: 'Verify',
302
+ cliSkillVerifyCmd: 'mindos file list',
303
+ cliRemoteConfigure: 'Configure',
304
+ cliInstallSkill: 'Install Skill',
305
+ cliAgents: 'Claude Code · Gemini CLI · Codex',
306
+ mcpAgents: 'Claude Desktop · Cursor',
307
+ mcpDesc: 'Requires per-agent MCP config. Install Skill separately via',
308
+ mcpLocalDesc: 'Copy the config snippet and paste into your agent\'s MCP settings.',
309
+ mcpRunningLabel: 'MCP Running',
310
+ mcpServerStatus: 'MCP Server',
311
+ autoInstallAgents: 'Auto-install to detected agents',
312
+ detectedAgentsTitle: 'Detected Agents',
313
+ cliInstallDesc: 'Install the MindOS Skill to your agent so it can operate your knowledge base.',
314
+ mcpInstallDesc: 'Install MCP config + Skill to detected agents on this machine.',
315
+ tokenCopyFullHint: 'Copies full token',
316
+ skillsInstalled: 'skills installed',
317
+ recommended: 'Recommended',
318
+ localTitle: 'Local',
319
+ localReady: 'Ready to use',
320
+ remoteTitle: 'Remote Access',
321
+ remoteSubtitle: 'Connect from another device',
322
+ restarting: 'Restarting...',
323
+ restart: 'Restart',
196
324
  },
197
325
  monitoring: {
198
326
  system: 'System',
@@ -317,14 +445,15 @@ export const settingsEn = {
317
445
  export const settingsZh = {
318
446
  settings: {
319
447
  title: '设置',
320
- tabs: { ai: 'AI', appearance: '外观', knowledge: '通用', sync: '同步', mcp: 'MCP & Skills', plugins: '插件', shortcuts: '快捷键', monitoring: '监控', agents: 'Agents', update: '更新', uninstall: '卸载' },
448
+ tabs: { ai: 'AI', appearance: '外观', knowledge: '通用', sync: '同步', mcp: '连接', plugins: '插件', shortcuts: '快捷键', monitoring: '监控', agents: '智能体', update: '更新', uninstall: '卸载' },
321
449
  ai: {
322
450
  provider: '服务商',
323
451
  model: '模型',
324
452
  apiKey: 'API 密钥',
325
453
  baseUrl: '接口地址',
326
- baseUrlHint: '可选。用于代理或 OpenAI 兼容 API。',
454
+ baseUrlHint: '可选。用于代理或自定义 API 端点。',
327
455
  keyHint: '本地存储于 ~/.mindos/config.json',
456
+ keyOptionalHint: '本地服务商可选。存储于 ~/.mindos/config.json',
328
457
  envHint: '标有 env 的字段存在环境变量值。你可以在此覆盖,或一键恢复为环境变量默认值。',
329
458
  envFieldNote: (key: string) => `环境变量 ${key} 已设置。清空此字段将回退到环境变量值。`,
330
459
  resetToEnv: '恢复为环境变量',
@@ -372,12 +501,40 @@ export const settingsZh = {
372
501
  light: '浅色',
373
502
  language: '语言',
374
503
  browserNote: '外观设置保存在浏览器本地。',
504
+ labsTitle: '实验性功能',
505
+ labsDesc: '仍在开发中的功能,可能会变更或移除。',
506
+ labsEcho: '回响',
507
+ labsEchoDesc: '基于笔记的反思性日记。',
508
+ labsWorkflows: '工作流',
509
+ labsWorkflowsDesc: 'Agent 可视化工作流自动化。',
375
510
  fontPreview: '人之初,性本善;性相近,习相远。',
376
511
  },
377
512
  knowledge: {
378
- sopRoot: '知识库根目录',
379
- sopRootHint: '笔记目录的绝对路径,修改后需要重启服务器。',
380
- sopRootEnvHint: (key: string) => `MIND_ROOT 环境变量已设置为 "${key}",填写上方路径可覆盖它。`,
513
+ cardTitle: '知识库',
514
+ securityTitle: '安全',
515
+ passwordPlaceholder: '留空可禁用',
516
+ passwordShow: '显示',
517
+ passwordHide: '隐藏',
518
+ tokenNotSet: '— 未设置 —',
519
+ mcpUrl: 'MCP 地址',
520
+ tokenGenerated: '已生成新令牌。请立即复制 — 之后不会再次完整显示。',
521
+ monitoringTitle: '系统监控',
522
+ monitoringFailed: '加载监控数据失败',
523
+ monitorHeap: '堆内存',
524
+ monitorRss: 'RSS',
525
+ monitorUptime: '运行时间',
526
+ monitorNode: 'Node',
527
+ monitorRequests: '请求数',
528
+ monitorToolCalls: '工具调用',
529
+ monitorTokens: 'Token',
530
+ monitorFiles: '文件',
531
+ monitorErrors: '错误',
532
+ monitorMcpRunning: (port: number) => `运行中 :${port}`,
533
+ monitorMcpStopped: '已停止',
534
+ cancel: '取消',
535
+ mindRoot: '知识库根目录',
536
+ mindRootHint: '笔记目录的绝对路径,修改后需要重启服务器。',
537
+ mindRootEnvHint: (key: string) => `MIND_ROOT 环境变量已设置为 "${key}",填写上方路径可覆盖它。`,
381
538
  envNote: 'MIND_ROOT 环境变量已设置。填写上方路径后,你的值优先生效。',
382
539
  webPassword: '网页访问密码',
383
540
  webPasswordHint: '设置后访问浏览器 UI 需要登录,留空则关闭密码保护。下次刷新页面后生效。',
@@ -411,17 +568,63 @@ export const settingsZh = {
411
568
  featureMultiDevice: '多设备同步',
412
569
  remoteUrl: 'Git 远程仓库 URL',
413
570
  invalidUrl: '无效的 Git URL — 请使用 HTTPS (https://...) 或 SSH (git@...) 格式',
414
- sshHint: 'SSH URL 需要在本机配置 SSH 密钥。推荐使用 HTTPS + Token。',
571
+ sshBrief: '一次配置,无需令牌',
572
+ httpsBrief: '通用性强,建议配令牌',
573
+ sshHint: '需要本机已配置 SSH 密钥。验证命令:ssh -T git@github.com',
415
574
  accessToken: '访问令牌',
416
575
  optional: '(可选,私有仓库需要)',
417
- tokenHint: 'GitHub: Settings → Developer settings → Personal access tokens → repo scope',
576
+ tokenHint: 'GitHub:',
577
+ tokenLink: '创建令牌(勾选 repo 权限)',
418
578
  branchLabel: '分支',
419
579
  connectButton: '连接并开始同步',
420
580
  connecting: '连接中...',
581
+ stepConnecting: '正在连接远程仓库...',
582
+ stepAuthenticating: '正在验证身份...',
583
+ stepSyncing: '正在同步数据...',
584
+ stepAlmostDone: '即将完成...',
585
+ stepDone: '同步配置成功!',
586
+ gitignoreTitle: '排除文件',
587
+ gitignorePlaceholder: '# 不同步的文件\n*.tmp\nsecret/',
588
+ gitignoreSave: '保存',
589
+ gitignoreSaved: '已保存',
590
+ conflictExplain: '这些文件在本机和远程都被修改了。请选择保留哪个版本。',
591
+ keepLocal: '保留本地',
592
+ keepRemote: '保留远程',
593
+ keepLocalHint: '保留本机的版本',
594
+ keepRemoteHint: '替换为远程版本',
595
+ viewDiff: '点击查看两个版本的差异',
596
+ localVersion: '本地(本机)',
597
+ remoteVersion: '远程',
598
+ emptyFile: '(空)',
599
+ sectionTitle: '同步',
600
+ labelProvider: '提供商',
601
+ labelRemote: '远程',
602
+ labelBranch: '分支',
603
+ labelLastSync: '最后同步',
604
+ labelUnpushed: '未推送',
605
+ labelAutoSync: '自动同步',
606
+ unpushedCommits: (n: number) => `${n} 次提交`,
607
+ syncNow: '立即同步',
608
+ disableAutoSync: '禁用自动同步',
609
+ enableAutoSync: '启用自动同步',
610
+ syncComplete: '同步完成',
611
+ syncFailed: '同步失败',
612
+ autoSyncDisabled: '已禁用自动同步',
613
+ autoSyncEnabled: '已启用自动同步',
614
+ toggleFailed: '切换同步失败',
615
+ conflictsTitle: (n: number) => `冲突 (${n})`,
616
+ conflictHint: '单击文件查看你的版本。悬停并单击',
617
+ conflictHintSuffix: '查看远程版本。',
618
+ timeNever: '从未',
619
+ timeJustNow: '刚刚',
620
+ timeMinAgo: (m: number) => `${m} 分钟前`,
621
+ timeHourAgo: (h: number) => `${h} 小时前`,
622
+ timeDayAgo: (d: number) => `${d} 天前`,
421
623
  },
422
624
  plugins: {
423
625
  title: '已安装渲染器',
424
626
  builtinBadge: '内置',
627
+ coreBadge: '核心',
425
628
  enabled: '已启用',
426
629
  disabled: '已禁用',
427
630
  matchHint: '自动匹配',
@@ -464,14 +667,15 @@ export const settingsZh = {
464
667
  installFailed: '安装失败',
465
668
  portLabel: 'MCP 端口',
466
669
  portHint: '修改后需重启服务',
467
- skillsTitle: 'Skills',
670
+ skillsTitle: '技能',
671
+ skillsDesc: '教 Agent 如何操作你的知识库。',
468
672
  skillAutoLoaded: '每次请求自动加载',
469
673
  skillSource: '来源',
470
674
  skillBuiltin: '内置',
471
675
  skillUser: '自定义',
472
- addSkill: '+ 添加 Skill',
676
+ addSkill: '+ 添加技能',
473
677
  cliInstallHint: '通过命令行安装:',
474
- skillPathHint: 'Skill 文件安装路径:',
678
+ skillPathHint: '技能文件安装路径:',
475
679
  deleteSkill: '删除',
476
680
  editSkill: '编辑',
477
681
  saveSkill: '保存',
@@ -479,15 +683,15 @@ export const settingsZh = {
479
683
  skillName: '名称',
480
684
  skillDesc: '描述',
481
685
  skillContent: '内容',
482
- skillNameConflict: '同名 skill 已存在',
686
+ skillNameConflict: '同名技能已存在',
483
687
  skillDeleteConfirm: (name: string) => `确定删除「${name}」?此操作不可撤销。`,
484
- skillLanguage: 'Skill 语言',
688
+ skillLanguage: '技能语言',
485
689
  skillLangEn: 'English',
486
690
  skillLangZh: '中文',
487
- searchSkills: '搜索 Skill...',
691
+ searchSkills: '搜索技能...',
488
692
  customGroup: '自定义',
489
693
  builtinGroup: '内置',
490
- noSkillsMatch: (query: string) => `没有匹配「${query}」的 Skill`,
694
+ noSkillsMatch: (query: string) => `没有匹配「${query}」的技能`,
491
695
  skillTemplate: '模板',
492
696
  skillTemplateGeneral: '通用',
493
697
  skillTemplateToolUse: '工具调用',
@@ -507,6 +711,58 @@ export const settingsZh = {
507
711
  noAuthWarning: '⚠ 未设置认证令牌 — 请先在 设置 → 通用 中配置,再启用远程访问。',
508
712
  showJson: '显示 JSON',
509
713
  hideJson: '隐藏 JSON',
714
+ connectionTitle: '连接 Agent',
715
+ connectionHint: '选择 AI Agent 连接 MindOS 的方式。',
716
+ tokenCardTitle: '认证令牌',
717
+ tokenCardDesc: '用于 CLI 远程模式和 MCP 连接。',
718
+ mcpHint: '适用于 Claude Desktop、Cursor 等使用 MCP 工具协议的 Agent。',
719
+ tokenLabel: '认证令牌',
720
+ tokenMasked: '点击「显示」查看完整令牌',
721
+ tokenShow: '显示',
722
+ tokenHide: '隐藏',
723
+ tokenCopy: '复制',
724
+ tokenCopied: '令牌已复制!',
725
+ tokenNone: '未设置令牌 — MCP 服务对所有请求开放。',
726
+ tokenNoneAction: '请在 设置 → 通用 → 安全 中生成令牌。',
727
+ serverUrl: 'MCP 服务地址',
728
+ serverUrlCopy: '复制地址',
729
+ howToConnect: '如何连接 AI 助手',
730
+ howToStep1: '打开你的 AI 助手的 MCP 设置(如 Claude Code、Cursor)',
731
+ howToStep2: '添加一个新的 MCP 服务,填入上方地址',
732
+ howToStep3: '将认证令牌设为 Bearer Token',
733
+ howToStep4: '保存并验证连接',
734
+ // CLI Skill
735
+ cliSkillTitle: 'CLI 技能',
736
+ cliSkillHint: '适用于支持 bash 的 Agent(Claude Code、Gemini CLI、Codex)——更省 token,无需 MCP。',
737
+ cliSkillDesc: '更省 token,技能内置——安装即可使用。',
738
+ cliLocalDesc: 'MindOS Skill 已内置,安装 CLI 即可直接使用。',
739
+ cliRemoteDesc: '在其他设备上安装 CLI,远程连接到此 MindOS 服务器。',
740
+ cliSkillInstall: '安装',
741
+ cliSkillInstallCmd: 'npm install -g @geminilight/mindos',
742
+ cliSkillRemote: '远程',
743
+ cliSkillVerify: '验证',
744
+ cliSkillVerifyCmd: 'mindos file list',
745
+ cliRemoteConfigure: '配置',
746
+ cliInstallSkill: '安装技能',
747
+ cliAgents: 'Claude Code · Gemini CLI · Codex',
748
+ mcpAgents: 'Claude Desktop · Cursor',
749
+ mcpDesc: '需要逐个 Agent 配置 MCP,通过以下命令单独安装技能:',
750
+ mcpLocalDesc: '复制下方配置代码,粘贴到你的 Agent 的 MCP 设置中。',
751
+ mcpRunningLabel: 'MCP 运行中',
752
+ mcpServerStatus: 'MCP 服务',
753
+ autoInstallAgents: '自动安装到已检测的 Agent',
754
+ detectedAgentsTitle: '检测到的 Agent',
755
+ cliInstallDesc: '为你的 Agent 安装 MindOS Skill,让它能操作你的知识库。',
756
+ mcpInstallDesc: '为本机检测到的 Agent 安装 MCP 配置和 Skill。',
757
+ tokenCopyFullHint: '复制完整令牌',
758
+ skillsInstalled: '个技能已安装',
759
+ recommended: '推荐',
760
+ localTitle: '本机',
761
+ localReady: '可直接使用',
762
+ remoteTitle: '远程访问',
763
+ remoteSubtitle: '从其他设备连接',
764
+ restarting: '重启中...',
765
+ restart: '重启',
510
766
  },
511
767
  monitoring: {
512
768
  system: '系统',
@@ -587,7 +843,7 @@ export const settingsZh = {
587
843
  desktopHint: '更新通过桌面端自动更新推送。',
588
844
  // Core Hot Update
589
845
  coreTitle: 'MindOS Core',
590
- coreUpToDate: 'Core 已是最新',
846
+ coreUpToDate: '核心已是最新',
591
847
  coreAvailable: (size: string) => `有新版本可用(${size})`,
592
848
  coreDownloading: '下载中...',
593
849
  coreCancel: '取消',
@@ -595,11 +851,11 @@ export const settingsZh = {
595
851
  coreRestartServices: '重启服务',
596
852
  coreApplying: '正在应用更新...',
597
853
  coreApplied: '更新成功!正在刷新...',
598
- coreError: 'Core 更新失败。',
854
+ coreError: '核心更新失败。',
599
855
  coreRetry: '重试',
600
856
  coreDesktopTooOld: (version: string) => `v${version} 需要更新版本的 Desktop。`,
601
857
  coreDesktopTooOldHint: '请先更新 MindOS Desktop。',
602
- coreHint: 'Core 更新只需重启服务,无需重启应用。',
858
+ coreHint: '核心更新只需重启服务,无需重启应用。',
603
859
  shellTitle: 'MindOS Desktop',
604
860
  },
605
861
  uninstall: {
@@ -0,0 +1,93 @@
1
+ import { toast } from '@/lib/toast';
2
+ import type { useLocale } from '@/lib/stores/locale-store';
3
+
4
+ const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB per file
5
+
6
+ function arrayBufferToBase64(buf: ArrayBuffer): string {
7
+ const bytes = new Uint8Array(buf);
8
+ const chunks: string[] = [];
9
+ for (let i = 0; i < bytes.length; i += 8192) {
10
+ chunks.push(String.fromCharCode(...bytes.subarray(i, i + 8192)));
11
+ }
12
+ return btoa(chunks.join(''));
13
+ }
14
+
15
+ function showQuickDropToast(
16
+ saved: number,
17
+ formatSkipped: number,
18
+ oversized: number,
19
+ t: ReturnType<typeof useLocale>['t'],
20
+ ) {
21
+ if (saved > 0 && oversized > 0 && formatSkipped === 0) {
22
+ toast.success(t.inbox.savedWithOversized(saved, oversized), 4000);
23
+ } else if (saved > 0 && (formatSkipped + oversized) > 0) {
24
+ toast.success(t.inbox.savedWithSkipped(saved, formatSkipped + oversized), 4000);
25
+ } else if (saved > 0) {
26
+ toast.success(t.inbox.savedToast(saved), 3000);
27
+ } else {
28
+ if (oversized > 0) toast.error(t.inbox.tooLarge(oversized), 4000);
29
+ if (formatSkipped > 0) toast.error(t.inbox.savedWithSkipped(0, formatSkipped), 4000);
30
+ if (oversized === 0 && formatSkipped === 0) toast.error(t.inbox.saveFailed, 4000);
31
+ }
32
+ }
33
+
34
+ export async function quickDropToInbox(
35
+ files: File[],
36
+ t: ReturnType<typeof useLocale>['t'],
37
+ ) {
38
+ const payload: Array<{ name: string; content: string; encoding?: string }> = [];
39
+ let oversizedCount = 0;
40
+
41
+ for (const file of files) {
42
+ if (file.size > MAX_FILE_SIZE) {
43
+ oversizedCount++;
44
+ continue;
45
+ }
46
+ try {
47
+ if (file.name.toLowerCase().endsWith('.pdf')) {
48
+ const buf = await file.arrayBuffer();
49
+ payload.push({ name: file.name, content: arrayBufferToBase64(buf), encoding: 'base64' });
50
+ } else {
51
+ const text = await file.text();
52
+ payload.push({ name: file.name, content: text });
53
+ }
54
+ } catch {
55
+ /* skip unreadable files */
56
+ }
57
+ }
58
+
59
+ if (payload.length === 0) {
60
+ if (oversizedCount > 0) {
61
+ toast.error(t.inbox.tooLarge(oversizedCount), 4000);
62
+ } else if (files.length > 0) {
63
+ toast.error(t.inbox.saveFailed, 4000);
64
+ }
65
+ return;
66
+ }
67
+
68
+ try {
69
+ const res = await fetch('/api/inbox', {
70
+ method: 'POST',
71
+ headers: { 'Content-Type': 'application/json' },
72
+ body: JSON.stringify({ files: payload }),
73
+ });
74
+
75
+ if (!res.ok) {
76
+ const data = await res.json().catch(() => ({}));
77
+ console.error('[QuickDrop] Save failed:', data.error);
78
+ toast.error(t.inbox.saveFailed, 4000);
79
+ return;
80
+ }
81
+
82
+ const result = await res.json();
83
+ const saved = result.saved?.length ?? 0;
84
+ const formatSkipped = result.skipped?.length ?? 0;
85
+
86
+ showQuickDropToast(saved, formatSkipped, oversizedCount, t);
87
+ window.dispatchEvent(new Event('mindos:files-changed'));
88
+ window.dispatchEvent(new Event('mindos:inbox-updated'));
89
+ } catch (err) {
90
+ console.error('[QuickDrop] Network error:', err);
91
+ toast.error(t.inbox.saveFailed, 4000);
92
+ }
93
+ }
@@ -94,9 +94,13 @@ export function generateSnippet(
94
94
  if (transport === 'stdio') {
95
95
  return generateStdioSnippet(agent);
96
96
  }
97
+ // For remote/http mode, prefer localIP over endpoint (which is always localhost)
98
+ const endpoint = status?.localIP
99
+ ? `http://${status.localIP}:${status.port}/mcp`
100
+ : (status?.endpoint ?? 'http://127.0.0.1:8781/mcp');
97
101
  return generateHttpSnippet(
98
102
  agent,
99
- status?.endpoint ?? 'http://127.0.0.1:8781/mcp',
103
+ endpoint,
100
104
  status?.authToken,
101
105
  status?.maskedToken,
102
106
  );
@@ -2,25 +2,26 @@
2
2
  * Client-side mirror of "can /api/ask run?" using GET /api/settings payload.
3
3
  * Must stay aligned with server `effectiveAiConfig()` provider + key resolution.
4
4
  */
5
+ import { type ProviderId, PROVIDER_PRESETS, isProviderId, getApiKeyEnvVar } from './agent/providers';
5
6
 
6
7
  export type SettingsJsonForAi = {
7
8
  ai?: {
8
9
  provider?: string;
9
- providers?: {
10
- anthropic?: { apiKey?: string };
11
- openai?: { apiKey?: string };
12
- };
10
+ providers?: Partial<Record<string, { apiKey?: string }>>;
13
11
  };
14
- envOverrides?: Partial<Record<'ANTHROPIC_API_KEY' | 'OPENAI_API_KEY', boolean>>;
12
+ envOverrides?: Partial<Record<string, boolean>>;
15
13
  };
16
14
 
17
15
  export function isAiConfiguredForAsk(data: SettingsJsonForAi): boolean {
18
- const prov = data.ai?.provider === 'openai' ? 'openai' : 'anthropic';
16
+ const provId = data.ai?.provider;
17
+ const provider: ProviderId = (provId && isProviderId(provId)) ? provId : 'anthropic';
19
18
  const env = data.envOverrides ?? {};
20
- if (prov === 'openai') {
21
- const k = data.ai?.providers?.openai?.apiKey;
22
- return (typeof k === 'string' && k.length > 0) || !!env.OPENAI_API_KEY;
23
- }
24
- const k = data.ai?.providers?.anthropic?.apiKey;
25
- return (typeof k === 'string' && k.length > 0) || !!env.ANTHROPIC_API_KEY;
19
+
20
+ const k = data.ai?.providers?.[provider]?.apiKey;
21
+ if (typeof k === 'string' && k.length > 0) return true;
22
+
23
+ const envVar = getApiKeyEnvVar(provider);
24
+ if (envVar && env[envVar]) return true;
25
+
26
+ return false;
26
27
  }
@@ -0,0 +1,66 @@
1
+ import { apiFetch } from '@/lib/api';
2
+
3
+ /**
4
+ * Check if AI is available by inspecting the active provider's API key.
5
+ */
6
+ export async function checkAiAvailable(): Promise<boolean> {
7
+ try {
8
+ const data = await apiFetch<{
9
+ ai?: { provider?: string; providers?: Record<string, { apiKey?: string }> };
10
+ }>('/api/settings');
11
+ const provider = data.ai?.provider ?? '';
12
+ const providers = data.ai?.providers ?? {};
13
+ const active = providers[provider as keyof typeof providers];
14
+ return !!(active?.apiKey);
15
+ } catch {
16
+ return false;
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Trigger AI to generate README.md and INSTRUCTION.md for a space.
22
+ * Dispatches `mindos:ai-init` events consumed by SpaceInitToast.
23
+ * The call is fire-and-forget — returns immediately after starting the stream.
24
+ */
25
+ export function triggerSpaceAiInit(
26
+ spaceName: string,
27
+ spacePath: string,
28
+ description = '',
29
+ ): void {
30
+ const isZh = typeof document !== 'undefined' && document.documentElement.lang === 'zh';
31
+ const prompt = isZh
32
+ ? `初始化新建的心智空间「${spaceName}」,路径为「${spacePath}/」。${description ? `描述:「${description}」。` : ''}两个文件均已存在模板,用 write_file 覆盖:\n1. 「${spacePath}/README.md」— 写入空间用途、结构概览、使用指南\n2. 「${spacePath}/INSTRUCTION.md」— 写入 AI Agent 在此空间中的行为规则和操作约定\n\n内容简洁实用,直接使用工具写入。`
33
+ : `Initialize the new Mind Space "${spaceName}" at "${spacePath}/". ${description ? `Description: "${description}". ` : ''}Both files already exist with templates — use write_file to overwrite:\n1. "${spacePath}/README.md" — write purpose, structure overview, usage guidelines\n2. "${spacePath}/INSTRUCTION.md" — write rules for AI agents operating in this space\n\nKeep content concise and actionable. Write files directly using tools.`;
34
+
35
+ window.dispatchEvent(new CustomEvent('mindos:ai-init', {
36
+ detail: { spaceName, spacePath, description, state: 'working' },
37
+ }));
38
+
39
+ fetch('/api/ask', {
40
+ method: 'POST',
41
+ headers: { 'Content-Type': 'application/json' },
42
+ body: JSON.stringify({
43
+ messages: [{ role: 'user', content: prompt }],
44
+ currentFile: spacePath + '/INSTRUCTION.md',
45
+ }),
46
+ }).then(async (res) => {
47
+ if (!res.ok || !res.body) throw new Error(`HTTP ${res.status}`);
48
+ const reader = res.body.getReader();
49
+ try {
50
+ while (true) {
51
+ const { done } = await reader.read();
52
+ if (done) break;
53
+ }
54
+ } finally {
55
+ reader.releaseLock();
56
+ }
57
+ window.dispatchEvent(new CustomEvent('mindos:ai-init', {
58
+ detail: { spacePath, state: 'done' },
59
+ }));
60
+ window.dispatchEvent(new Event('mindos:files-changed'));
61
+ }).catch(() => {
62
+ window.dispatchEvent(new CustomEvent('mindos:ai-init', {
63
+ detail: { spacePath, state: 'error' },
64
+ }));
65
+ });
66
+ }