@geminilight/mindos 0.6.58 → 0.6.60

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 (410) 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 +23 -22
  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 +1 -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/agents/copy-skill/route.js +1 -0
  41. package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -0
  42. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -0
  43. package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -1
  44. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/agents/custom/route.js +1 -1
  46. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/ask/route.js +18 -7
  48. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/extract-pdf/route.js +2 -2
  56. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
  67. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  79. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/changes/page.js +2 -2
  95. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  96. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/echo/[segment]/page.js +3 -3
  98. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  99. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/echo/page.js +1 -1
  101. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  102. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/explore/page.js +2 -2
  104. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  105. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/help/page.js +2 -2
  107. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  108. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  109. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  110. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  111. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/login/page.js +2 -2
  113. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  114. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/page.js +2 -8
  116. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  117. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/_standalone/.next/server/app/setup/page.js +2 -2
  119. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  120. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  121. package/_standalone/.next/server/app/trash/page.js +3 -3
  122. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  123. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  124. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  125. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  126. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  127. package/_standalone/.next/server/app/wiki/page.js +2 -2
  128. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
  129. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
  130. package/_standalone/.next/server/app-paths-manifest.json +23 -22
  131. package/_standalone/.next/server/chunks/1550.js +1 -1
  132. package/_standalone/.next/server/chunks/3484.js +1 -1
  133. package/_standalone/.next/server/chunks/530.js +70 -71
  134. package/_standalone/.next/server/chunks/{6793.js → 9753.js} +2 -2
  135. package/_standalone/.next/server/chunks/9787.js +2 -0
  136. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  137. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  138. package/_standalone/.next/server/pages/500.html +2 -2
  139. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  141. package/_standalone/.next/static/K3wZNf5bj_AFYwtqcRXIf/_buildManifest.js +1 -0
  142. package/_standalone/.next/static/chunks/1369-7d0ac5d1564eed1e.js +1 -0
  143. package/_standalone/.next/static/chunks/{1814.a7c127b2c73d1f70.js → 1814.a79b84d37df75c43.js} +1 -1
  144. package/_standalone/.next/static/chunks/3427-2e61a5df1f5e55fb.js +1 -0
  145. package/_standalone/.next/static/chunks/{1053-fe009233cff06e72.js → 5581-974dfb26d1d1b38f.js} +3 -3
  146. package/_standalone/.next/static/chunks/6297-085daa21037d5f81.js +1 -0
  147. package/_standalone/.next/static/chunks/7249-b0a9c77b9a84b11c.js +11 -0
  148. package/_standalone/.next/static/chunks/7637-904b0a381dc3ec02.js +1 -0
  149. package/_standalone/.next/static/chunks/8520-76d1b05072178b43.js +22 -0
  150. package/_standalone/.next/static/chunks/9186-ead47513192f658b.js +1 -0
  151. package/_standalone/.next/static/chunks/9905-a19d379cb225246e.js +1 -0
  152. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-2f4705aa66819b86.js → route-2ceea6eabf25b1f2.js} +1 -1
  153. package/_standalone/.next/static/chunks/app/_global-error/{page-2f4705aa66819b86.js → page-2ceea6eabf25b1f2.js} +1 -1
  154. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-0ea3571c8fbae823.js +1 -0
  155. package/_standalone/.next/static/chunks/app/agents/page-66858acbcd1d4bf8.js +1 -0
  156. package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-2f4705aa66819b86.js → route-2ceea6eabf25b1f2.js} +1 -1
  157. package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-2f4705aa66819b86.js → route-2ceea6eabf25b1f2.js} +1 -1
  158. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-2ceea6eabf25b1f2.js +1 -0
  159. package/_standalone/.next/static/chunks/app/api/a2a/route-2ceea6eabf25b1f2.js +1 -0
  160. package/_standalone/.next/static/chunks/app/api/acp/config/route-2ceea6eabf25b1f2.js +1 -0
  161. package/_standalone/.next/static/chunks/app/api/acp/detect/route-2ceea6eabf25b1f2.js +1 -0
  162. package/_standalone/.next/static/chunks/app/api/acp/install/route-2ceea6eabf25b1f2.js +1 -0
  163. package/_standalone/.next/static/chunks/app/api/acp/registry/route-2ceea6eabf25b1f2.js +1 -0
  164. package/_standalone/.next/static/chunks/app/api/acp/session/route-2ceea6eabf25b1f2.js +1 -0
  165. package/_standalone/.next/static/chunks/app/api/agent-activity/route-2ceea6eabf25b1f2.js +1 -0
  166. package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-2ceea6eabf25b1f2.js +1 -0
  167. package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-2ceea6eabf25b1f2.js +1 -0
  168. package/_standalone/.next/static/chunks/app/api/agents/custom/route-2ceea6eabf25b1f2.js +1 -0
  169. package/_standalone/.next/static/chunks/app/api/ask/route-2ceea6eabf25b1f2.js +1 -0
  170. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-2ceea6eabf25b1f2.js +1 -0
  171. package/_standalone/.next/static/chunks/app/api/auth/route-2ceea6eabf25b1f2.js +1 -0
  172. package/_standalone/.next/static/chunks/app/api/backlinks/route-2ceea6eabf25b1f2.js +1 -0
  173. package/_standalone/.next/static/chunks/app/api/bootstrap/route-2ceea6eabf25b1f2.js +1 -0
  174. package/_standalone/.next/static/chunks/app/api/changes/route-2ceea6eabf25b1f2.js +1 -0
  175. package/_standalone/.next/static/chunks/app/api/export/route-2ceea6eabf25b1f2.js +1 -0
  176. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-2ceea6eabf25b1f2.js +1 -0
  177. package/_standalone/.next/static/chunks/app/api/file/import/route-2ceea6eabf25b1f2.js +1 -0
  178. package/_standalone/.next/static/chunks/app/api/file/raw/route-2ceea6eabf25b1f2.js +1 -0
  179. package/_standalone/.next/static/chunks/app/api/file/route-2ceea6eabf25b1f2.js +1 -0
  180. package/_standalone/.next/static/chunks/app/api/files/route-2ceea6eabf25b1f2.js +1 -0
  181. package/_standalone/.next/static/chunks/app/api/git/route-2ceea6eabf25b1f2.js +1 -0
  182. package/_standalone/.next/static/chunks/app/api/graph/route-2ceea6eabf25b1f2.js +1 -0
  183. package/_standalone/.next/static/chunks/app/api/health/route-2ceea6eabf25b1f2.js +1 -0
  184. package/_standalone/.next/static/chunks/app/api/inbox/route-2ceea6eabf25b1f2.js +1 -0
  185. package/_standalone/.next/static/chunks/app/api/init/route-2ceea6eabf25b1f2.js +1 -0
  186. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-2ceea6eabf25b1f2.js +1 -0
  187. package/_standalone/.next/static/chunks/app/api/mcp/install/route-2ceea6eabf25b1f2.js +1 -0
  188. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-2ceea6eabf25b1f2.js +1 -0
  189. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-2ceea6eabf25b1f2.js +1 -0
  190. package/_standalone/.next/static/chunks/app/api/mcp/status/route-2ceea6eabf25b1f2.js +1 -0
  191. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-2ceea6eabf25b1f2.js +1 -0
  192. package/_standalone/.next/static/chunks/app/api/monitoring/route-2ceea6eabf25b1f2.js +1 -0
  193. package/_standalone/.next/static/chunks/app/api/recent-files/route-2ceea6eabf25b1f2.js +1 -0
  194. package/_standalone/.next/static/chunks/app/api/restart/route-2ceea6eabf25b1f2.js +1 -0
  195. package/_standalone/.next/static/chunks/app/api/search/route-2ceea6eabf25b1f2.js +1 -0
  196. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-2ceea6eabf25b1f2.js +1 -0
  197. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-2ceea6eabf25b1f2.js +1 -0
  198. package/_standalone/.next/static/chunks/app/api/settings/route-2ceea6eabf25b1f2.js +1 -0
  199. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-2ceea6eabf25b1f2.js +1 -0
  200. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-2ceea6eabf25b1f2.js +1 -0
  201. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-2ceea6eabf25b1f2.js +1 -0
  202. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-2ceea6eabf25b1f2.js +1 -0
  203. package/_standalone/.next/static/chunks/app/api/setup/ls/route-2ceea6eabf25b1f2.js +1 -0
  204. package/_standalone/.next/static/chunks/app/api/setup/route-2ceea6eabf25b1f2.js +1 -0
  205. package/_standalone/.next/static/chunks/app/api/skills/route-2ceea6eabf25b1f2.js +1 -0
  206. package/_standalone/.next/static/chunks/app/api/sync/route-2ceea6eabf25b1f2.js +1 -0
  207. package/_standalone/.next/static/chunks/app/api/tree-version/route-2ceea6eabf25b1f2.js +1 -0
  208. package/_standalone/.next/static/chunks/app/api/uninstall/route-2ceea6eabf25b1f2.js +1 -0
  209. package/_standalone/.next/static/chunks/app/api/update/route-2ceea6eabf25b1f2.js +1 -0
  210. package/_standalone/.next/static/chunks/app/api/update-check/route-2ceea6eabf25b1f2.js +1 -0
  211. package/_standalone/.next/static/chunks/app/api/update-status/route-2ceea6eabf25b1f2.js +1 -0
  212. package/_standalone/.next/static/chunks/app/api/workflows/route-2ceea6eabf25b1f2.js +1 -0
  213. package/_standalone/.next/static/chunks/app/changes/page-dd0b00a7b81f74e2.js +1 -0
  214. package/_standalone/.next/static/chunks/app/echo/[segment]/page-bf5c290fa3ccff09.js +11 -0
  215. package/_standalone/.next/static/chunks/app/echo/page-2ceea6eabf25b1f2.js +1 -0
  216. package/_standalone/.next/static/chunks/app/explore/{page-d3d99308146c2240.js → page-d9f58000bc445360.js} +2 -2
  217. package/_standalone/.next/static/chunks/app/help/{page-222df603080b5fab.js → page-f8cb806371b3175f.js} +1 -1
  218. package/_standalone/.next/static/chunks/app/inbox/history/{page-07819cf95cb0805f.js → page-3279585360df132c.js} +1 -1
  219. package/_standalone/.next/static/chunks/app/layout-6a0169582db11a08.js +164 -0
  220. package/_standalone/.next/static/chunks/app/loading-2ceea6eabf25b1f2.js +1 -0
  221. package/_standalone/.next/static/chunks/app/login/{page-0eeef685052869a6.js → page-18fb00d568cd1f0e.js} +1 -1
  222. package/_standalone/.next/static/chunks/app/page-6a1f8d21c12b829e.js +1 -0
  223. package/_standalone/.next/static/chunks/app/setup/{page-99fcfc460fa29733.js → page-821714e7477be46c.js} +1 -1
  224. package/_standalone/.next/static/chunks/app/trash/page-ed7ba3b0b50223a6.js +1 -0
  225. package/_standalone/.next/static/chunks/app/view/[...path]/loading-2ceea6eabf25b1f2.js +1 -0
  226. package/_standalone/.next/static/chunks/app/view/[...path]/{not-found-fc04c2bd4f35bc6f.js → not-found-6e0c75ad26ce8572.js} +1 -1
  227. package/_standalone/.next/static/chunks/app/view/[...path]/page-678139779971cfcb.js +12 -0
  228. package/_standalone/.next/static/chunks/app/wiki/page-194ae9af2d461481.js +1 -0
  229. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-2ceea6eabf25b1f2.js +1 -0
  230. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-2ceea6eabf25b1f2.js +1 -0
  231. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-2ceea6eabf25b1f2.js +1 -0
  232. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2ceea6eabf25b1f2.js +1 -0
  233. package/_standalone/.next/static/chunks/{webpack-2c19436659aa657b.js → webpack-72e8d9e9073fd1f9.js} +1 -1
  234. package/_standalone/.next/static/css/9c558c42831fae58.css +1 -0
  235. package/_standalone/.next/trace +65 -64
  236. package/_standalone/.next/types/routes.d.ts +2 -1
  237. package/_standalone/.next/types/validator.ts +9 -0
  238. package/_standalone/__tests__/api/mcp-install.test.ts +4 -2
  239. package/_standalone/app/globals.css +2 -1
  240. package/_standalone/components/AskFab.tsx +11 -5
  241. package/_standalone/components/AskModal.tsx +1 -1
  242. package/_standalone/components/FileTree.tsx +83 -1
  243. package/_standalone/components/GuideCard.tsx +101 -152
  244. package/_standalone/components/Panel.tsx +6 -1
  245. package/_standalone/components/RightAskPanel.tsx +2 -2
  246. package/_standalone/components/agents/AgentsOverviewSection.tsx +13 -11
  247. package/_standalone/components/agents/CustomAgentModal.tsx +72 -18
  248. package/_standalone/components/ask/AskContent.tsx +109 -54
  249. package/_standalone/components/ask/AskHeader.tsx +218 -18
  250. package/_standalone/components/ask/FileChip.tsx +93 -12
  251. package/_standalone/components/ask/MessageList.tsx +66 -47
  252. package/_standalone/components/ask/SessionHistory.tsx +86 -60
  253. package/_standalone/components/ask/SessionTabBar.tsx +29 -21
  254. package/_standalone/components/ask/ThinkingBlock.tsx +6 -5
  255. package/_standalone/components/ask/ToolCallBlock.tsx +10 -9
  256. package/_standalone/components/changes/ChangesBanner.tsx +1 -1
  257. package/_standalone/components/settings/SettingsContent.tsx +1 -1
  258. package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +3 -1
  259. package/_standalone/components/walkthrough/steps.ts +1 -1
  260. package/_standalone/data/skills/mindos/SKILL.md +67 -15
  261. package/_standalone/data/skills/mindos-zh/SKILL.md +67 -11
  262. package/_standalone/hooks/useAskChat.ts +10 -8
  263. package/_standalone/hooks/useAskSession.ts +23 -1
  264. package/_standalone/hooks/useFileUpload.ts +97 -43
  265. package/_standalone/hooks/useImageUpload.ts +1 -1
  266. package/_standalone/lib/inbox-upload.ts +86 -0
  267. package/_standalone/lib/stores/locale-store.ts +20 -6
  268. package/_standalone/package-lock.json +2 -2
  269. package/_standalone/package.json +1 -1
  270. package/_standalone/scripts/extract-pdf.cjs +110 -3
  271. package/_standalone/tsconfig.tsbuildinfo +1 -1
  272. package/app/app/api/agents/copy-skill/route.ts +110 -0
  273. package/app/app/api/agents/custom/detect/route.ts +16 -1
  274. package/app/app/api/ask/route.ts +7 -1
  275. package/app/app/api/extract-pdf/route.ts +12 -5
  276. package/app/app/api/mcp/agents/route.ts +64 -2
  277. package/app/app/globals.css +2 -1
  278. package/app/app/layout.tsx +16 -4
  279. package/app/components/AskFab.tsx +11 -5
  280. package/app/components/AskModal.tsx +1 -1
  281. package/app/components/FileTree.tsx +83 -1
  282. package/app/components/GuideCard.tsx +101 -152
  283. package/app/components/HomeContent.tsx +123 -574
  284. package/app/components/Panel.tsx +6 -1
  285. package/app/components/RightAskPanel.tsx +2 -2
  286. package/app/components/WikiHomeContent.tsx +151 -3
  287. package/app/components/agents/AgentDetailContent.tsx +58 -1
  288. package/app/components/agents/AgentsOverviewSection.tsx +13 -11
  289. package/app/components/agents/CustomAgentModal.tsx +72 -18
  290. package/app/components/ask/AskContent.tsx +109 -54
  291. package/app/components/ask/AskHeader.tsx +218 -18
  292. package/app/components/ask/FileChip.tsx +93 -12
  293. package/app/components/ask/MessageList.tsx +66 -47
  294. package/app/components/ask/SessionHistory.tsx +86 -60
  295. package/app/components/ask/SessionTabBar.tsx +29 -21
  296. package/app/components/ask/ThinkingBlock.tsx +6 -5
  297. package/app/components/ask/ToolCallBlock.tsx +10 -9
  298. package/app/components/changes/ChangesBanner.tsx +1 -1
  299. package/app/components/changes/ChangesContentPage.tsx +368 -168
  300. package/app/components/settings/SettingsContent.tsx +1 -1
  301. package/app/components/walkthrough/WalkthroughTooltip.tsx +3 -1
  302. package/app/components/walkthrough/steps.ts +1 -1
  303. package/app/data/skills/mindos/SKILL.md +67 -15
  304. package/app/data/skills/mindos-zh/SKILL.md +67 -11
  305. package/app/hooks/useAskChat.ts +10 -8
  306. package/app/hooks/useAskSession.ts +23 -1
  307. package/app/hooks/useFileUpload.ts +97 -43
  308. package/app/hooks/useImageUpload.ts +1 -1
  309. package/app/lib/agent/prompt.ts +15 -4
  310. package/app/lib/custom-agents.ts +109 -1
  311. package/app/lib/file-ops.ts +58 -0
  312. package/app/lib/i18n/modules/ai-chat.ts +134 -10
  313. package/app/lib/i18n/modules/knowledge.ts +2 -0
  314. package/app/lib/i18n/modules/onboarding.ts +12 -12
  315. package/app/lib/inbox-upload.ts +86 -0
  316. package/app/lib/mcp-agents.ts +21 -1
  317. package/app/lib/stores/LocaleStoreInit.tsx +24 -1
  318. package/app/lib/stores/locale-store.ts +20 -6
  319. package/app/lib/types.ts +13 -0
  320. package/app/package.json +1 -1
  321. package/app/scripts/extract-pdf.cjs +110 -3
  322. package/package.json +1 -1
  323. package/skills/mindos/SKILL.md +67 -15
  324. package/skills/mindos/references/knowledge-health.md +120 -0
  325. package/skills/mindos-max/SKILL.md +52 -5
  326. package/skills/mindos-max-zh/SKILL.md +55 -6
  327. package/skills/mindos-zh/SKILL.md +67 -11
  328. package/_standalone/.next/server/chunks/2364.js +0 -2
  329. package/_standalone/.next/server/chunks/357.js +0 -1
  330. package/_standalone/.next/static/2ksXveDzEcnCMRIElDkLq/_buildManifest.js +0 -1
  331. package/_standalone/.next/static/chunks/178-105779afb62d36d9.js +0 -1
  332. package/_standalone/.next/static/chunks/2218-d54538000574ffef.js +0 -1
  333. package/_standalone/.next/static/chunks/2549-e63cf57fa927a41d.js +0 -1
  334. package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +0 -1
  335. package/_standalone/.next/static/chunks/6878-e2c5459e1c608f89.js +0 -1
  336. package/_standalone/.next/static/chunks/7249-fa98ca10e9a10f39.js +0 -11
  337. package/_standalone/.next/static/chunks/9274-296ab35f9f09e42e.js +0 -1
  338. package/_standalone/.next/static/chunks/9286-5b09baa5200318c2.js +0 -1
  339. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-7bdeab5af8e4f5f2.js +0 -1
  340. package/_standalone/.next/static/chunks/app/agents/page-5d1446665ddb3801.js +0 -1
  341. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-2f4705aa66819b86.js +0 -1
  342. package/_standalone/.next/static/chunks/app/api/a2a/route-2f4705aa66819b86.js +0 -1
  343. package/_standalone/.next/static/chunks/app/api/acp/config/route-2f4705aa66819b86.js +0 -1
  344. package/_standalone/.next/static/chunks/app/api/acp/detect/route-2f4705aa66819b86.js +0 -1
  345. package/_standalone/.next/static/chunks/app/api/acp/install/route-2f4705aa66819b86.js +0 -1
  346. package/_standalone/.next/static/chunks/app/api/acp/registry/route-2f4705aa66819b86.js +0 -1
  347. package/_standalone/.next/static/chunks/app/api/acp/session/route-2f4705aa66819b86.js +0 -1
  348. package/_standalone/.next/static/chunks/app/api/agent-activity/route-2f4705aa66819b86.js +0 -1
  349. package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-2f4705aa66819b86.js +0 -1
  350. package/_standalone/.next/static/chunks/app/api/agents/custom/route-2f4705aa66819b86.js +0 -1
  351. package/_standalone/.next/static/chunks/app/api/ask/route-2f4705aa66819b86.js +0 -1
  352. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-2f4705aa66819b86.js +0 -1
  353. package/_standalone/.next/static/chunks/app/api/auth/route-2f4705aa66819b86.js +0 -1
  354. package/_standalone/.next/static/chunks/app/api/backlinks/route-2f4705aa66819b86.js +0 -1
  355. package/_standalone/.next/static/chunks/app/api/bootstrap/route-2f4705aa66819b86.js +0 -1
  356. package/_standalone/.next/static/chunks/app/api/changes/route-2f4705aa66819b86.js +0 -1
  357. package/_standalone/.next/static/chunks/app/api/export/route-2f4705aa66819b86.js +0 -1
  358. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-2f4705aa66819b86.js +0 -1
  359. package/_standalone/.next/static/chunks/app/api/file/import/route-2f4705aa66819b86.js +0 -1
  360. package/_standalone/.next/static/chunks/app/api/file/raw/route-2f4705aa66819b86.js +0 -1
  361. package/_standalone/.next/static/chunks/app/api/file/route-2f4705aa66819b86.js +0 -1
  362. package/_standalone/.next/static/chunks/app/api/files/route-2f4705aa66819b86.js +0 -1
  363. package/_standalone/.next/static/chunks/app/api/git/route-2f4705aa66819b86.js +0 -1
  364. package/_standalone/.next/static/chunks/app/api/graph/route-2f4705aa66819b86.js +0 -1
  365. package/_standalone/.next/static/chunks/app/api/health/route-2f4705aa66819b86.js +0 -1
  366. package/_standalone/.next/static/chunks/app/api/inbox/route-2f4705aa66819b86.js +0 -1
  367. package/_standalone/.next/static/chunks/app/api/init/route-2f4705aa66819b86.js +0 -1
  368. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-2f4705aa66819b86.js +0 -1
  369. package/_standalone/.next/static/chunks/app/api/mcp/install/route-2f4705aa66819b86.js +0 -1
  370. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-2f4705aa66819b86.js +0 -1
  371. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-2f4705aa66819b86.js +0 -1
  372. package/_standalone/.next/static/chunks/app/api/mcp/status/route-2f4705aa66819b86.js +0 -1
  373. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-2f4705aa66819b86.js +0 -1
  374. package/_standalone/.next/static/chunks/app/api/monitoring/route-2f4705aa66819b86.js +0 -1
  375. package/_standalone/.next/static/chunks/app/api/recent-files/route-2f4705aa66819b86.js +0 -1
  376. package/_standalone/.next/static/chunks/app/api/restart/route-2f4705aa66819b86.js +0 -1
  377. package/_standalone/.next/static/chunks/app/api/search/route-2f4705aa66819b86.js +0 -1
  378. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-2f4705aa66819b86.js +0 -1
  379. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-2f4705aa66819b86.js +0 -1
  380. package/_standalone/.next/static/chunks/app/api/settings/route-2f4705aa66819b86.js +0 -1
  381. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-2f4705aa66819b86.js +0 -1
  382. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-2f4705aa66819b86.js +0 -1
  383. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-2f4705aa66819b86.js +0 -1
  384. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-2f4705aa66819b86.js +0 -1
  385. package/_standalone/.next/static/chunks/app/api/setup/ls/route-2f4705aa66819b86.js +0 -1
  386. package/_standalone/.next/static/chunks/app/api/setup/route-2f4705aa66819b86.js +0 -1
  387. package/_standalone/.next/static/chunks/app/api/skills/route-2f4705aa66819b86.js +0 -1
  388. package/_standalone/.next/static/chunks/app/api/sync/route-2f4705aa66819b86.js +0 -1
  389. package/_standalone/.next/static/chunks/app/api/tree-version/route-2f4705aa66819b86.js +0 -1
  390. package/_standalone/.next/static/chunks/app/api/uninstall/route-2f4705aa66819b86.js +0 -1
  391. package/_standalone/.next/static/chunks/app/api/update/route-2f4705aa66819b86.js +0 -1
  392. package/_standalone/.next/static/chunks/app/api/update-check/route-2f4705aa66819b86.js +0 -1
  393. package/_standalone/.next/static/chunks/app/api/update-status/route-2f4705aa66819b86.js +0 -1
  394. package/_standalone/.next/static/chunks/app/api/workflows/route-2f4705aa66819b86.js +0 -1
  395. package/_standalone/.next/static/chunks/app/changes/page-5a72144d1080a699.js +0 -1
  396. package/_standalone/.next/static/chunks/app/echo/[segment]/page-b0103509ce34444b.js +0 -11
  397. package/_standalone/.next/static/chunks/app/echo/page-2f4705aa66819b86.js +0 -1
  398. package/_standalone/.next/static/chunks/app/layout-7e02ddf4144b01f1.js +0 -186
  399. package/_standalone/.next/static/chunks/app/loading-2f4705aa66819b86.js +0 -1
  400. package/_standalone/.next/static/chunks/app/page-6a6a12bd6d6812d0.js +0 -7
  401. package/_standalone/.next/static/chunks/app/trash/page-54cbd5c98d9de69b.js +0 -1
  402. package/_standalone/.next/static/chunks/app/view/[...path]/loading-2f4705aa66819b86.js +0 -1
  403. package/_standalone/.next/static/chunks/app/view/[...path]/page-ca7bdcbf27f88a46.js +0 -12
  404. package/_standalone/.next/static/chunks/app/wiki/page-d492256a93f0b8bc.js +0 -1
  405. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-2f4705aa66819b86.js +0 -1
  406. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-2f4705aa66819b86.js +0 -1
  407. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-2f4705aa66819b86.js +0 -1
  408. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2f4705aa66819b86.js +0 -1
  409. package/_standalone/.next/static/css/fd84c8316ead16eb.css +0 -1
  410. /package/_standalone/.next/static/{2ksXveDzEcnCMRIElDkLq → K3wZNf5bj_AFYwtqcRXIf}/_ssgManifest.js +0 -0
@@ -1,26 +1,33 @@
1
1
  ---
2
2
  name: mindos
3
3
  description: >
4
- Operate a MindOS knowledge base: update notes, search, organize files, execute SOPs/workflows,
5
- retrospective, append CSV, cross-agent handoff, route unstructured input to the right files,
6
- distill experience, sync related docs.
4
+ The user's shared knowledge base persistent across sessions and agents. MindOS stores decisions,
5
+ meeting notes, SOPs, debugging lessons, architecture choices, research findings, and preferences.
7
6
  更新笔记, 搜索知识库, 整理文件, 执行SOP/工作流, 复盘, 追加CSV, 跨Agent交接,
8
7
  路由非结构化输入到对应文件, 提炼经验, 同步关联文档.
9
8
  NOT for editing app source, project docs, or paths outside the KB.
10
9
  Core concepts: Space, Instruction (INSTRUCTION.md), Skill (SKILL.md); notes can embody both.
11
- Trigger when user asks to: save or record anything, search for prior notes or context, update or
12
- edit a file, organize notes, run a workflow or SOP, capture decisions from a session, append rows
13
- to a table or CSV, hand off context to another agent, check if something was discussed before,
14
- look up a past decision, distill lessons learned, prepare context for a meeting.
15
- Also trigger on Chinese: 帮我记下来, 搜一下笔记, 更新知识库, 整理文件, 复盘, 提炼经验,
16
- 保存, 记录, 交接, 查一下之前的, 有没有相关笔记, 把这个存起来.
17
- When the user's question implies stored context may exist (past decisions, previous discussions,
18
- meeting records), consider searching MindOS even if they don't explicitly mention it.
10
+
11
+ Trigger on: save or record anything, search for prior notes or context, update or edit a file,
12
+ organize notes, run a workflow or SOP, capture decisions, append rows to a table or CSV,
13
+ hand off context to another agent, check if something was discussed before, look up a past
14
+ decision, distill lessons learned, prepare context for a meeting, quick-capture to staging area,
15
+ organize inbox, check knowledge health, detect conflicts or contradictions, find stale content.
16
+ Chinese triggers: 帮我记下来, 搜一下笔记, 更新知识库, 整理文件, 复盘, 提炼经验,
17
+ 保存, 记录, 交接, 查一下之前的, 有没有相关笔记, 把这个存起来, 放到暂存台,
18
+ 整理暂存台, 知识健康检查, 检测知识冲突.
19
+
20
+ Proactive behavior — do not wait for the user to mention MindOS:
21
+ (1) When user's question implies stored context may exist (past decisions, previous discussions,
22
+ meeting records) → search MindOS first, even if they don't explicitly mention it.
23
+ (2) After completing valuable work (bug fixed, decision made, lesson learned, architecture chosen,
24
+ meeting summarized) → offer to save it to MindOS for future reference.
25
+ (3) After a long or multi-topic conversation → suggest persisting key decisions and context.
19
26
  ---
20
27
 
21
28
  # MindOS Skill
22
29
 
23
- <!-- version: 3.0.0 — CLI-first, MCP optional -->
30
+ <!-- version: 3.2.0 — CLI-first, MCP optional -->
24
31
 
25
32
  ## CLI commands
26
33
 
@@ -85,6 +92,7 @@ npm install -g @geminilight/mindos
85
92
  - **Space** — Knowledge partitions organized the way you think. Agents follow the same structure.
86
93
  - **Instruction** — A rules file (`INSTRUCTION.md`) all connected agents obey.
87
94
  - **Skill** — Teaches agents how to read, write, and organize the KB.
95
+ - **Inbox** — The `Inbox/` directory is a staging area for quick capture. Files land here when there's no obvious home yet. They get organized later — by the user manually or via AI-assisted batch organization.
88
96
 
89
97
  Notes can embody both Instruction and Skill — they're just Markdown files in the tree.
90
98
 
@@ -99,9 +107,13 @@ User request
99
107
  │ └─ [Read-only]: search → read → answer with citations. No writes.
100
108
 
101
109
  ├─ Save / record / update / organize specific content?
102
- │ ├─ Single file → [Single-file edit]
110
+ │ ├─ Know where it goes → [Single-file edit]
111
+ │ ├─ Don't know where it goes → [Inbox path] — save to Inbox/, classify later
103
112
  │ └─ Multiple files or unclear → [Multi-file routing] — plan first
104
113
 
114
+ ├─ Organize inbox / classify staged files?
115
+ │ └─ [Inbox organize] — read Inbox/ files, propose destinations, move after approval
116
+
105
117
  ├─ Structural change (rename / move / delete / reorganize)?
106
118
  │ └─ [Structural path] — check backlinks before and after
107
119
 
@@ -111,6 +123,9 @@ User request
111
123
  ├─ Retrospective / distill / handoff?
112
124
  │ └─ [Retrospective path]
113
125
 
126
+ ├─ Knowledge health check / detect conflicts?
127
+ │ └─ [Health check path] — read references/knowledge-health.md
128
+
114
129
  └─ Ambiguous?
115
130
  └─ ASK. Propose 2-3 specific options based on KB state.
116
131
  ```
@@ -125,8 +140,9 @@ User request
125
140
  - "organize" → ask: display only, or write back?
126
141
 
127
142
  **File location uncertainty:**
128
- - Can't decide in 5 seconds → use nearest existing directory, inform user
129
- - "Just put it somewhere" → inbox, propose classification after
143
+ - Can't decide in 5 seconds → save to `Inbox/`, inform user, propose classification later
144
+ - "Just put it somewhere" / "先放着" save to `Inbox/`
145
+ - User drags files or pastes unstructured content without specifying location → `Inbox/`
130
146
 
131
147
  **Scope creep:**
132
148
  - Input routes to >5 files → pause, confirm scope
@@ -159,6 +175,42 @@ When user expresses a standing preference → read [references/preference-captur
159
175
 
160
176
  When creating/rewriting an SOP → read [references/sop-template.md](./references/sop-template.md).
161
177
 
178
+ ## Inbox (staging area)
179
+
180
+ The `Inbox/` directory is the KB's quick-capture zone. It has its own `INSTRUCTION.md` that governs behavior.
181
+
182
+ **When to use Inbox:**
183
+ - User says "just save it" / "先放着" / "放到暂存台" without specifying a location
184
+ - Content doesn't clearly fit any existing Space or directory
185
+ - Batch import of multiple files that need individual classification
186
+
187
+ **How to save to Inbox:**
188
+ ```bash
189
+ mindos file create "Inbox/<filename>.md" --content "..."
190
+ ```
191
+
192
+ **How to organize Inbox:**
193
+ 1. List Inbox files: `mindos file list Inbox/`
194
+ 2. Read each file to understand its content
195
+ 3. For each file, propose the best destination directory based on KB structure
196
+ 4. Present the full routing plan to user for approval
197
+ 5. Move files: `mindos file rename "Inbox/<file>" "<target-dir>/<file>"`
198
+ 6. After moving, check if the target directory's README needs updating
199
+
200
+ **Aging reminder:** Files in Inbox older than 7 days are considered "aging". If you notice aging files during bootstrap, mention it: "You have N files in Inbox that have been sitting there for over a week. Want me to help organize them?"
201
+
202
+ ## Knowledge health check
203
+
204
+ When user asks to check knowledge health, detect conflicts, audit quality, or says "知识健康检查" / "检测冲突" → read [references/knowledge-health.md](./references/knowledge-health.md) for the full procedure.
205
+
206
+ Quick summary of what gets checked:
207
+ - **Contradictions**: conflicting facts across files on the same topic
208
+ - **Broken links**: references to files that no longer exist
209
+ - **Stale content**: files with outdated date markers or untouched for >6 months
210
+ - **Duplicates**: two files covering the same ground without cross-referencing
211
+ - **Orphan files**: files with zero backlinks, hard to discover
212
+ - **Structural issues**: wrong directory, missing READMEs, aging Inbox files
213
+
162
214
  ---
163
215
 
164
216
  ## Error handling (CLI)
@@ -1,25 +1,34 @@
1
1
  ---
2
2
  name: mindos-zh
3
3
  description: >
4
- MindOS 知识库操作:更新笔记、搜索知识库、整理文件、执行SOP/工作流、复盘、追加CSV、跨Agent交接、
5
- 路由非结构化输入到对应文件、提炼经验、同步关联文档。
4
+ 用户的共享知识库——跨会话、跨 Agent 持久存在。MindOS 存储决策记录、会议纪要、SOP
5
+ 排错经验、架构选型、调研结论和偏好设置。
6
6
  仅 mindRoot 知识库内任务。不用于:改代码仓库、项目源码、KB 外路径。
7
7
  核心概念:空间、指令(INSTRUCTION.md)、技能(SKILL.md);笔记可承载指令与技能。
8
+
8
9
  触发场景:保存或记录任何内容、搜索历史笔记或上下文、更新或编辑文件、整理或重组文件结构、
9
10
  执行SOP或工作流、捕获对话中的决策、复盘或总结经验、追加表格或CSV数据、跨Agent交接上下文、
10
11
  提炼经验教训、同步关联文档、查找之前是否讨论过某事、查询历史决策、查找模板或SOP、
11
- 为会议准备上下文。
12
+ 为会议准备上下文、快速暂存到暂存台、整理暂存台、知识健康检查、检测知识冲突或矛盾、
13
+ 查找过期内容。
12
14
  触发词:帮我记下来、搜一下我的笔记、更新知识库、整理文件、执行工作流、保存到知识库、
13
15
  记录一下、整理笔记、复盘、提炼经验、同步文档、查一下之前的记录、有没有相关的笔记、
14
- 我之前写过什么、把这个存起来、总结一下保存、交接给其他Agent、追加到表格。
15
- English triggers: save, record, search notes, organize, retrospective, handoff, lessons learned.
16
- 当用户的问题暗示可能存在历史记录(过去的决策、之前的讨论、会议纪要)时,
17
- 即使没有明确提到知识库,也应该考虑搜索 MindOS。
16
+ 我之前写过什么、把这个存起来、总结一下保存、交接给其他Agent、追加到表格、
17
+ 放到暂存台、整理暂存台、知识健康检查、检测知识冲突。
18
+ English triggers: save, record, search notes, organize, retrospective, handoff, lessons learned,
19
+ inbox, staging, knowledge health, detect conflicts.
20
+
21
+ 主动行为——不要等用户提到 MindOS:
22
+ (1) 用户的问题暗示可能存在历史记录(过去的决策、之前的讨论、会议纪要)→ 先搜 MindOS,
23
+ 即使没有明确提到知识库。
24
+ (2) 完成有价值的工作后(修了 bug、做了决策、总结了经验、选定了架构、开完了会)→
25
+ 主动提议保存到 MindOS,方便以后查阅。
26
+ (3) 经历了较长或多主题的对话后 → 建议把关键决策和上下文持久化。
18
27
  ---
19
28
 
20
29
  # MindOS 技能
21
30
 
22
- <!-- version: 3.0.0 — CLI 优先,MCP 可选 -->
31
+ <!-- version: 3.2.0 — CLI 优先,MCP 可选 -->
23
32
 
24
33
  ## CLI 命令
25
34
 
@@ -84,6 +93,7 @@ npm install -g @geminilight/mindos
84
93
  - **空间 (Space)** — 按你的思维方式组织的知识分区。Agent 遵循相同结构。
85
94
  - **指令 (Instruction)** — `INSTRUCTION.md`,所有连接的 Agent 都遵守的规则文件。
86
95
  - **技能 (Skill)** — 教 Agent 如何读写和整理知识库。
96
+ - **暂存台 (Inbox)** — `Inbox/` 目录是快速捕获区。内容暂时找不到归属时先放这里,之后再统一整理——用户手动或 AI 辅助批量归类。
87
97
 
88
98
  笔记可以同时承载指令和技能——它们只是目录树中的 Markdown 文件。
89
99
 
@@ -98,9 +108,13 @@ npm install -g @geminilight/mindos
98
108
  │ └─ [只读路径]:搜索 → 读取 → 带引用回答。不写入。
99
109
 
100
110
  ├─ 保存 / 记录 / 更新 / 整理具体内容?
101
- │ ├─ 单文件 → [单文件编辑]
111
+ │ ├─ 知道放哪 → [单文件编辑]
112
+ │ ├─ 不知道放哪 → [暂存台路径] — 存到 Inbox/,之后再归类
102
113
  │ └─ 多文件或不确定 → [多文件路由] — 先出方案
103
114
 
115
+ ├─ 整理暂存台 / 归类暂存文件?
116
+ │ └─ [暂存台整理] — 读 Inbox/ 文件,提议目标位置,获批后移动
117
+
104
118
  ├─ 结构变更(重命名 / 移动 / 删除 / 重组)?
105
119
  │ └─ [结构路径] — 变更前后检查反向链接
106
120
 
@@ -110,6 +124,9 @@ npm install -g @geminilight/mindos
110
124
  ├─ 复盘 / 提炼 / 交接?
111
125
  │ └─ [复盘路径]
112
126
 
127
+ ├─ 知识健康检查 / 检测冲突?
128
+ │ └─ [健康检查路径] — 读取 references/knowledge-health.md
129
+
113
130
  └─ 模糊?
114
131
  └─ 提问。基于知识库状态提出 2-3 个具体选项。
115
132
  ```
@@ -124,8 +141,9 @@ npm install -g @geminilight/mindos
124
141
  - "整理一下" → 先问:仅展示,还是写回知识库?
125
142
 
126
143
  **文件位置不确定:**
127
- - 5 秒内定不了 → 用最近的现有目录,告知用户
128
- - "随便放哪" → 收件箱,之后提议分类
144
+ - 5 秒内定不了 → 存到 `Inbox/`,告知用户,之后提议归类
145
+ - "随便放哪" / "先放着" 存到 `Inbox/`
146
+ - 用户拖拽文件或粘贴非结构化内容但没指定位置 → `Inbox/`
129
147
 
130
148
  **范围蔓延:**
131
149
  - 输入路由到 >5 个文件 → 暂停确认
@@ -158,6 +176,44 @@ npm install -g @geminilight/mindos
158
176
 
159
177
  创建/重写工作流 SOP 时 → 读取 [references/sop-template.md](./references/sop-template.md)。
160
178
 
179
+ ## 暂存台 (Inbox)
180
+
181
+ `Inbox/` 目录是知识库的快速捕获区,有自己的 `INSTRUCTION.md` 约束行为。
182
+
183
+ **何时使用暂存台:**
184
+ - 用户说"先存着" / "放到暂存台" / "随便放哪",没指定具体位置
185
+ - 内容明显不属于任何现有空间或目录
186
+ - 批量导入多个文件,需要逐个归类
187
+
188
+ **如何存到暂存台:**
189
+ ```bash
190
+ mindos file create "Inbox/<文件名>.md" --content "..."
191
+ ```
192
+
193
+ **如何整理暂存台:**
194
+ 1. 列出暂存文件:`mindos file list Inbox/`
195
+ 2. 读取每个文件,理解其内容
196
+ 3. 根据知识库结构,为每个文件提议最佳目标目录
197
+ 4. 向用户展示完整路由方案,获批后执行
198
+ 5. 移动文件:`mindos file rename "Inbox/<文件>" "<目标目录>/<文件>"`
199
+ 6. 移动后检查目标目录的 README 是否需要更新
200
+
201
+ **老化提醒:** Inbox 中超过 7 天的文件视为"老化"。如果在 bootstrap 时发现老化文件,主动提醒:
202
+ "暂存台有 N 个文件已经放了一周以上了,要我帮你整理一下吗?"
203
+
204
+ ## 知识健康检查
205
+
206
+ 用户要求检查知识库健康度、检测冲突、审计质量,或说"知识健康检查" / "检测冲突" / "check knowledge health" 时
207
+ → 读取 [references/knowledge-health.md](./references/knowledge-health.md) 获取完整流程。
208
+
209
+ 检查维度速览:
210
+ - **矛盾/冲突**:同一主题的不同文件说法互相矛盾
211
+ - **断裂链接**:引用了不存在的文件
212
+ - **过期内容**:带有过期日期标记的文件,或超过 6 个月未更新的活跃主题
213
+ - **重复内容**:两个文件覆盖同一主题且没有互相引用
214
+ - **孤立文件**:零反向链接,难以被发现
215
+ - **结构问题**:文件放错目录、缺少 README、暂存台老化文件
216
+
161
217
  ---
162
218
 
163
219
  ## 错误处理(CLI)
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useRef, useState, useCallback } from 'react';
4
- import type { Message, ImagePart, AskMode } from '@/lib/types';
4
+ import type { Message, ImagePart, AskMode, LocalAttachment } from '@/lib/types';
5
5
  import type { ProviderId } from '@/lib/agent/providers';
6
6
  import { consumeUIMessageStream } from '@/lib/agent/stream-consumer';
7
7
  import { isRetryableError, retryDelay, sleep } from '@/lib/agent/reconnect';
@@ -18,7 +18,7 @@ export interface AskChatRefs {
18
18
  setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
19
19
  }>;
20
20
  uploadRef: React.RefObject<{
21
- localAttachments: { name: string; content: string }[];
21
+ localAttachments: LocalAttachment[];
22
22
  }>;
23
23
  selectedSkillRef: React.RefObject<{ name: string } | null>;
24
24
  selectedAcpAgentRef: React.RefObject<unknown>;
@@ -103,12 +103,14 @@ export function useAskChat({
103
103
  messages: requestMessages,
104
104
  currentFile,
105
105
  attachedFiles: refs.attachedFilesRef.current,
106
- uploadedFiles: upl.localAttachments.map(f => ({
107
- name: f.name,
108
- content: f.content.length > 20_000
109
- ? f.content.slice(0, 20_000) + '\n\n[...truncated to first ~20000 chars]'
110
- : f.content,
111
- })),
106
+ uploadedFiles: upl.localAttachments
107
+ .filter(f => f.status !== 'loading')
108
+ .map(f => ({
109
+ name: f.name,
110
+ content: f.content.length > 80_000
111
+ ? f.content.slice(0, 80_000) + '\n\n[...truncated to first ~80000 chars]'
112
+ : f.content,
113
+ })),
112
114
  selectedAcpAgent: acpAgent,
113
115
  mode: chatMode,
114
116
  providerOverride: providerOverride ?? undefined,
@@ -227,6 +227,20 @@ export function useAskSession(currentFile?: string) {
227
227
  });
228
228
  }, []);
229
229
 
230
+ /** Toggle pin/unpin a session. Pinned sessions sort to top. */
231
+ const togglePinSession = useCallback((id: string) => {
232
+ setSessions((prev) => {
233
+ const idx = prev.findIndex((s) => s.id === id);
234
+ if (idx < 0) return prev;
235
+ const updated = { ...prev[idx], pinned: !prev[idx].pinned };
236
+ const next = [...prev];
237
+ next[idx] = updated;
238
+ // Only persist if session has messages
239
+ if (updated.messages.length > 0) void upsertSession(updated);
240
+ return next;
241
+ });
242
+ }, []);
243
+
230
244
  const clearAllSessions = useCallback(() => {
231
245
  // Only delete sessions that have messages (were persisted)
232
246
  const persistedIds = sessions.filter(s => s.messages.length > 0).map(s => s.id);
@@ -239,10 +253,17 @@ export function useAskSession(currentFile?: string) {
239
253
  // No upsertSession — memory only
240
254
  }, [currentFile, sessions]);
241
255
 
256
+ /** Sessions sorted: pinned first, then by updatedAt desc */
257
+ const sortedSessions = [...sessions].sort((a, b) => {
258
+ if (a.pinned && !b.pinned) return -1;
259
+ if (!a.pinned && b.pinned) return 1;
260
+ return b.updatedAt - a.updatedAt;
261
+ });
262
+
242
263
  return {
243
264
  messages,
244
265
  setMessages,
245
- sessions,
266
+ sessions: sortedSessions,
246
267
  activeSessionId,
247
268
  initSessions,
248
269
  persistSession,
@@ -251,6 +272,7 @@ export function useAskSession(currentFile?: string) {
251
272
  loadSession,
252
273
  deleteSession,
253
274
  renameSession,
275
+ togglePinSession,
254
276
  clearAllSessions,
255
277
  };
256
278
  }
@@ -22,28 +22,76 @@ function uint8ToBase64(bytes: Uint8Array): string {
22
22
  return btoa(binary);
23
23
  }
24
24
 
25
- async function extractPdfText(file: File): Promise<string> {
26
- const buffer = await file.arrayBuffer();
27
- const dataBase64 = uint8ToBase64(new Uint8Array(buffer));
25
+ /**
26
+ * Extract text from a PDF file via the backend API.
27
+ * Returns a LocalAttachment with `status` reflecting the outcome.
28
+ */
29
+ async function extractPdfToAttachment(file: File): Promise<LocalAttachment> {
30
+ const name = file.name;
28
31
 
29
- const res = await fetch('/api/extract-pdf', {
30
- method: 'POST',
31
- headers: { 'Content-Type': 'application/json' },
32
- body: JSON.stringify({ name: file.name, dataBase64 }),
33
- });
34
-
35
- let payload: { text?: string; extracted?: boolean; error?: string } = {};
36
32
  try {
37
- payload = await res.json();
38
- } catch {
39
- // ignore JSON parse error
40
- }
33
+ const buffer = await file.arrayBuffer();
34
+ const dataBase64 = uint8ToBase64(new Uint8Array(buffer));
41
35
 
42
- if (!res.ok) {
43
- throw new Error(payload.error || `PDF extraction failed (${res.status})`);
44
- }
36
+ const res = await fetch('/api/extract-pdf', {
37
+ method: 'POST',
38
+ headers: { 'Content-Type': 'application/json' },
39
+ body: JSON.stringify({ name, dataBase64 }),
40
+ });
41
+
42
+ let payload: {
43
+ text?: string;
44
+ extracted?: boolean;
45
+ error?: string;
46
+ truncated?: boolean;
47
+ totalChars?: number;
48
+ pagesParsed?: number;
49
+ } = {};
50
+ try {
51
+ payload = await res.json();
52
+ } catch {
53
+ throw new Error('Failed to parse extraction response');
54
+ }
55
+
56
+ if (!res.ok) {
57
+ throw new Error(payload.error || `PDF extraction failed (${res.status})`);
58
+ }
59
+
60
+ const extracted = payload.extracted ? (payload.text || '') : '';
61
+
62
+ if (!extracted) {
63
+ return {
64
+ name,
65
+ content: `[PDF: ${name}] Could not extract readable text (possibly scanned/image PDF).`,
66
+ status: 'error',
67
+ error: 'Scanned or image-only PDF — no extractable text',
68
+ };
69
+ }
70
+
71
+ const att: LocalAttachment = {
72
+ name,
73
+ content: `[PDF TEXT EXTRACTED: ${name}]\n\n${extracted}`,
74
+ status: 'success',
75
+ };
76
+
77
+ if (payload.truncated && payload.totalChars) {
78
+ att.truncatedInfo = {
79
+ totalChars: payload.totalChars,
80
+ includedChars: extracted.length,
81
+ totalPages: payload.pagesParsed ?? 0,
82
+ };
83
+ }
45
84
 
46
- return payload.extracted ? (payload.text || '') : '';
85
+ return att;
86
+ } catch (err) {
87
+ const msg = err instanceof Error ? err.message : 'Unknown error';
88
+ return {
89
+ name,
90
+ content: `[PDF: ${name}] Failed to extract text from this PDF.`,
91
+ status: 'error',
92
+ error: msg,
93
+ };
94
+ }
47
95
  }
48
96
 
49
97
  export function useFileUpload() {
@@ -73,37 +121,43 @@ export function useFileUpload() {
73
121
  setUploadError('');
74
122
  }
75
123
 
76
- const loaded = await Promise.all(
77
- accepted.map(async (f) => {
78
- const ext = getExt(f.name);
79
- if (ext === '.pdf') {
80
- try {
81
- const extracted = await extractPdfText(f);
82
- return {
83
- name: f.name,
84
- content: extracted
85
- ? `[PDF TEXT EXTRACTED: ${f.name}]\n\n${extracted}`
86
- : `[PDF: ${f.name}] Could not extract readable text (possibly scanned/image PDF).`,
87
- };
88
- } catch {
89
- return {
90
- name: f.name,
91
- content: `[PDF: ${f.name}] Failed to extract text from this PDF.`,
92
- };
93
- }
94
- }
95
- return { name: f.name, content: await f.text() };
96
- }),
97
- );
124
+ // Phase 1: Immediately add all files — PDFs start in 'loading' state
125
+ const pdfFiles: File[] = [];
126
+ const immediateItems: LocalAttachment[] = [];
127
+
128
+ for (const f of accepted) {
129
+ if (getExt(f.name) === '.pdf') {
130
+ immediateItems.push({ name: f.name, content: '', status: 'loading' });
131
+ pdfFiles.push(f);
132
+ } else {
133
+ immediateItems.push({
134
+ name: f.name,
135
+ content: await f.text(),
136
+ status: 'success',
137
+ });
138
+ }
139
+ }
98
140
 
99
141
  setLocalAttachments((prev) => {
100
142
  const merged = [...prev];
101
- for (const item of loaded) {
102
- if (!merged.some((m) => m.name === item.name && m.content === item.content))
103
- merged.push(item);
143
+ for (const item of immediateItems) {
144
+ if (!merged.some((m) => m.name === item.name)) merged.push(item);
104
145
  }
105
146
  return merged;
106
147
  });
148
+
149
+ // Phase 2: Extract PDFs in parallel, then update each one in-place
150
+ if (pdfFiles.length > 0) {
151
+ const results = await Promise.all(pdfFiles.map(extractPdfToAttachment));
152
+
153
+ setLocalAttachments((prev) =>
154
+ prev.map((att) => {
155
+ if (att.status !== 'loading') return att;
156
+ const result = results.find((r) => r.name === att.name);
157
+ return result ?? att;
158
+ }),
159
+ );
160
+ }
107
161
  }, []);
108
162
 
109
163
  const removeAttachment = useCallback((idx: number) => {
@@ -86,7 +86,7 @@ export function useImageUpload() {
86
86
  }
87
87
  try {
88
88
  const { data, mimeType } = await compressImage(file);
89
- results.push({ type: 'image', data, mimeType });
89
+ results.push({ type: 'image', data, mimeType, fileName: file.name || undefined });
90
90
  } catch {
91
91
  setImageError(`Failed to process image: ${file.name}`);
92
92
  }
@@ -6,12 +6,21 @@
6
6
  * - SKILL.md owns: knowledge-base-specific execution patterns, tool selection, safety rules
7
7
  * - Tool descriptions own: per-tool usage instructions (no duplication here)
8
8
  *
9
- * Token budget: ~600 tokens (down from ~900 in v2). Freed space = more room for
10
- * SKILL.md + bootstrap context within the same context window.
9
+ * Token budget: ~750 tokens (v4 added persona warmth + self-introduction).
10
+ * Freed space = more room for SKILL.md + bootstrap context within the same context window.
11
11
  */
12
12
  export const AGENT_SYSTEM_PROMPT = `You are MindOS Agent — the operator of the user's second brain.
13
13
 
14
- Persona: Methodical, strictly objective, execution-oriented. Zero fluff. Never use preambles like "Here is the result" or "I found...".
14
+ Persona: Warm yet precise, reliable, execution-oriented. Like a trusted notebook that understands you — quiet confidence, zero fluff. Be professional but never cold; be helpful but never verbose.
15
+
16
+ ## Self-Introduction
17
+
18
+ When the user greets you ("你好", "hi", "你是谁", "what can you do", etc.) or this appears to be their first message in a new conversation, introduce yourself briefly:
19
+
20
+ - Who: MindOS Agent, the operator of their personal knowledge base (second brain).
21
+ - What: You can search, read, write, and organize their notes; capture decisions and lessons; run workflows/SOPs; and help them build a lasting, structured memory.
22
+ - Tone: Warm, concise, confident. One short paragraph, then invite them to try something — e.g., "想查点什么,还是有东西要记下来?"
23
+ - Do NOT self-introduce when the user jumps straight into a task (search, save, edit, etc.).
15
24
 
16
25
  ## Core Directives
17
26
 
@@ -45,7 +54,9 @@ Persona: Methodical, strictly objective, execution-oriented. Zero fluff. Never u
45
54
  */
46
55
  export const CHAT_SYSTEM_PROMPT = `You are MindOS Agent — the operator of the user's second brain.
47
56
 
48
- Persona: Methodical, strictly objective, execution-oriented. Zero fluff. Never use preambles like "Here is the result" or "I found...".
57
+ Persona: Warm yet precise, reliable, execution-oriented. Like a trusted notebook that understands you — quiet confidence, zero fluff. Be professional but never cold; be helpful but never verbose.
58
+
59
+ When the user greets you or asks who you are, briefly introduce yourself: you're MindOS Agent, here to help them search and read their knowledge base. Keep it warm and concise, then invite them to ask something.
49
60
 
50
61
  ## Mode: Chat (Read-Only)
51
62