@geminilight/mindos 0.6.56 → 0.6.58

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