@geminilight/mindos 0.6.53 → 0.6.54

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 (508) hide show
  1. package/README.md +27 -5
  2. package/README_zh.md +27 -5
  3. package/_standalone/.mindos-build-version +1 -1
  4. package/_standalone/.next/BUILD_ID +1 -1
  5. package/_standalone/.next/app-path-routes-manifest.json +23 -20
  6. package/_standalone/.next/build-manifest.json +3 -3
  7. package/_standalone/.next/cache/.previewinfo +1 -1
  8. package/_standalone/.next/cache/.rscinfo +1 -1
  9. package/_standalone/.next/cache/config.json +3 -3
  10. package/_standalone/.next/prerender-manifest.json +3 -3
  11. package/_standalone/.next/react-loadable-manifest.json +18 -2
  12. package/_standalone/.next/routes-manifest.json +18 -0
  13. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  14. package/_standalone/.next/server/app/_global-error/page.js +1 -1
  15. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  16. package/_standalone/.next/server/app/_global-error.html +2 -2
  17. package/_standalone/.next/server/app/_global-error.rsc +2 -2
  18. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  19. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  21. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  22. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  23. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  24. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  25. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  26. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  27. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  28. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  29. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/agents/page.js +3 -3
  31. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  32. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/ask/route.js +5 -5
  44. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  45. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  49. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  51. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/changes/route.js.nft.json +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.js +2 -2
  55. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  56. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  59. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/file/raw/route.js +1 -0
  61. package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
  62. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
  63. package/_standalone/.next/server/app/api/file/route.js +1 -1
  64. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  65. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  67. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  69. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  71. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/inbox/route.js +1 -1
  74. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  75. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  77. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  79. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  84. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  87. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  89. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  92. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/settings/route.js +1 -1
  96. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  97. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/setup/route.js +1 -1
  104. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/sync/route.js +1 -1
  107. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  108. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  109. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  111. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  114. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  115. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/changes/page.js +2 -2
  117. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/echo/[segment]/page.js +3 -3
  120. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/echo/page.js +1 -1
  123. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/explore/page.js +2 -2
  126. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/help/page.js +2 -2
  129. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/inbox/history/page.js +2 -0
  132. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
  133. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
  134. package/_standalone/.next/server/app/login/page.js +2 -2
  135. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  136. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  137. package/_standalone/.next/server/app/page.js +3 -3
  138. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  139. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/setup/page.js +2 -2
  141. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  142. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/app/trash/page.js +3 -3
  144. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  145. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  146. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  147. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  148. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  149. package/_standalone/.next/server/app/wiki/page.js +2 -0
  150. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
  151. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
  152. package/_standalone/.next/server/app-paths-manifest.json +23 -20
  153. package/_standalone/.next/server/chunks/2190.js +2 -2
  154. package/_standalone/.next/server/chunks/2364.js +2 -0
  155. package/_standalone/.next/server/chunks/357.js +1 -0
  156. package/_standalone/.next/server/chunks/530.js +219 -0
  157. package/_standalone/.next/server/chunks/6054.js +52 -0
  158. package/_standalone/.next/server/chunks/6539.js +1 -1
  159. package/_standalone/.next/server/chunks/8388.js +2 -2
  160. package/_standalone/.next/server/chunks/953.js +4 -4
  161. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  162. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  163. package/_standalone/.next/server/next-font-manifest.js +1 -1
  164. package/_standalone/.next/server/next-font-manifest.json +1 -1
  165. package/_standalone/.next/server/pages/500.html +2 -2
  166. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  167. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  168. package/_standalone/.next/static/2hrwFOLEOZhHQHfrIt-Dw/_buildManifest.js +1 -0
  169. package/_standalone/.next/static/chunks/1053-2874859f7caefa0f.js +29 -0
  170. package/_standalone/.next/static/chunks/178-105779afb62d36d9.js +1 -0
  171. package/_standalone/.next/static/chunks/1814.b08e9fb85dd3b13c.js +1 -0
  172. package/_standalone/.next/static/chunks/{1880-3ec02adc80531825.js → 1880-7abf971bcfd2389b.js} +2 -2
  173. package/_standalone/.next/static/chunks/{3160-83a7e0b94414b3ac.js → 2218-d54538000574ffef.js} +1 -1
  174. package/_standalone/.next/static/chunks/254-32719a9bea2e74f0.js +1 -0
  175. package/_standalone/.next/static/chunks/362.a77be2f206db7b19.js +1 -0
  176. package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
  177. package/_standalone/.next/static/chunks/7035-2af69391c7b1ad95.js +1 -0
  178. package/_standalone/.next/static/chunks/7322-d67d05067544864c.js +1 -0
  179. package/_standalone/.next/static/chunks/{6926-4af497b83952fa87.js → 8409-de5726a4a278d28f.js} +1 -1
  180. package/_standalone/.next/static/chunks/8753-ea9db680b0f70f25.js +1 -0
  181. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  182. package/_standalone/.next/static/chunks/app/_global-error/{page-b07a5983e85bc5e3.js → page-e240db6d5049d336.js} +1 -1
  183. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-f006a70f6889eb56.js +1 -0
  184. package/_standalone/.next/static/chunks/app/agents/page-bd522e428e3acb78.js +5 -0
  185. package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  186. package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  187. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e240db6d5049d336.js +1 -0
  188. package/_standalone/.next/static/chunks/app/api/a2a/route-e240db6d5049d336.js +1 -0
  189. package/_standalone/.next/static/chunks/app/api/acp/config/route-e240db6d5049d336.js +1 -0
  190. package/_standalone/.next/static/chunks/app/api/acp/detect/route-e240db6d5049d336.js +1 -0
  191. package/_standalone/.next/static/chunks/app/api/acp/install/route-e240db6d5049d336.js +1 -0
  192. package/_standalone/.next/static/chunks/app/api/acp/registry/route-e240db6d5049d336.js +1 -0
  193. package/_standalone/.next/static/chunks/app/api/acp/session/route-e240db6d5049d336.js +1 -0
  194. package/_standalone/.next/static/chunks/app/api/agent-activity/route-e240db6d5049d336.js +1 -0
  195. package/_standalone/.next/static/chunks/app/api/ask/route-e240db6d5049d336.js +1 -0
  196. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e240db6d5049d336.js +1 -0
  197. package/_standalone/.next/static/chunks/app/api/auth/route-e240db6d5049d336.js +1 -0
  198. package/_standalone/.next/static/chunks/app/api/backlinks/route-e240db6d5049d336.js +1 -0
  199. package/_standalone/.next/static/chunks/app/api/bootstrap/route-e240db6d5049d336.js +1 -0
  200. package/_standalone/.next/static/chunks/app/api/changes/route-e240db6d5049d336.js +1 -0
  201. package/_standalone/.next/static/chunks/app/api/export/route-e240db6d5049d336.js +1 -0
  202. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e240db6d5049d336.js +1 -0
  203. package/_standalone/.next/static/chunks/app/api/file/import/route-e240db6d5049d336.js +1 -0
  204. package/_standalone/.next/static/chunks/app/api/file/raw/route-e240db6d5049d336.js +1 -0
  205. package/_standalone/.next/static/chunks/app/api/file/route-e240db6d5049d336.js +1 -0
  206. package/_standalone/.next/static/chunks/app/api/files/route-e240db6d5049d336.js +1 -0
  207. package/_standalone/.next/static/chunks/app/api/git/route-e240db6d5049d336.js +1 -0
  208. package/_standalone/.next/static/chunks/app/api/graph/route-e240db6d5049d336.js +1 -0
  209. package/_standalone/.next/static/chunks/app/api/health/route-e240db6d5049d336.js +1 -0
  210. package/_standalone/.next/static/chunks/app/api/inbox/route-e240db6d5049d336.js +1 -0
  211. package/_standalone/.next/static/chunks/app/api/init/route-e240db6d5049d336.js +1 -0
  212. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e240db6d5049d336.js +1 -0
  213. package/_standalone/.next/static/chunks/app/api/mcp/install/route-e240db6d5049d336.js +1 -0
  214. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e240db6d5049d336.js +1 -0
  215. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e240db6d5049d336.js +1 -0
  216. package/_standalone/.next/static/chunks/app/api/mcp/status/route-e240db6d5049d336.js +1 -0
  217. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e240db6d5049d336.js +1 -0
  218. package/_standalone/.next/static/chunks/app/api/monitoring/route-e240db6d5049d336.js +1 -0
  219. package/_standalone/.next/static/chunks/app/api/recent-files/route-e240db6d5049d336.js +1 -0
  220. package/_standalone/.next/static/chunks/app/api/restart/route-e240db6d5049d336.js +1 -0
  221. package/_standalone/.next/static/chunks/app/api/search/route-e240db6d5049d336.js +1 -0
  222. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e240db6d5049d336.js +1 -0
  223. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e240db6d5049d336.js +1 -0
  224. package/_standalone/.next/static/chunks/app/api/settings/route-e240db6d5049d336.js +1 -0
  225. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e240db6d5049d336.js +1 -0
  226. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e240db6d5049d336.js +1 -0
  227. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e240db6d5049d336.js +1 -0
  228. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e240db6d5049d336.js +1 -0
  229. package/_standalone/.next/static/chunks/app/api/setup/ls/route-e240db6d5049d336.js +1 -0
  230. package/_standalone/.next/static/chunks/app/api/setup/route-e240db6d5049d336.js +1 -0
  231. package/_standalone/.next/static/chunks/app/api/skills/route-e240db6d5049d336.js +1 -0
  232. package/_standalone/.next/static/chunks/app/api/sync/route-e240db6d5049d336.js +1 -0
  233. package/_standalone/.next/static/chunks/app/api/tree-version/route-e240db6d5049d336.js +1 -0
  234. package/_standalone/.next/static/chunks/app/api/uninstall/route-e240db6d5049d336.js +1 -0
  235. package/_standalone/.next/static/chunks/app/api/update/route-e240db6d5049d336.js +1 -0
  236. package/_standalone/.next/static/chunks/app/api/update-check/route-e240db6d5049d336.js +1 -0
  237. package/_standalone/.next/static/chunks/app/api/update-status/route-e240db6d5049d336.js +1 -0
  238. package/_standalone/.next/static/chunks/app/api/workflows/route-e240db6d5049d336.js +1 -0
  239. package/_standalone/.next/static/chunks/app/changes/page-5a72144d1080a699.js +1 -0
  240. package/_standalone/.next/static/chunks/app/echo/[segment]/{page-88df174dd64b2c76.js → page-6710da1f581b2854.js} +2 -2
  241. package/_standalone/.next/static/chunks/app/echo/page-e240db6d5049d336.js +1 -0
  242. package/_standalone/.next/static/chunks/app/explore/{page-5eb2835e9e3ab4bb.js → page-d3d99308146c2240.js} +1 -1
  243. package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
  244. package/_standalone/.next/static/chunks/app/help/page-222df603080b5fab.js +1 -0
  245. package/_standalone/.next/static/chunks/app/inbox/history/page-07819cf95cb0805f.js +1 -0
  246. package/_standalone/.next/static/chunks/app/layout-8eacff5813458190.js +186 -0
  247. package/_standalone/.next/static/chunks/app/loading-e240db6d5049d336.js +1 -0
  248. package/_standalone/.next/static/chunks/app/login/{page-24236460fa7c11d0.js → page-0eeef685052869a6.js} +1 -1
  249. package/_standalone/.next/static/chunks/app/page-5a6c9455efe8a0df.js +7 -0
  250. package/_standalone/.next/static/chunks/app/setup/{page-99f40e9337388cda.js → page-9a81fa4d82c6351b.js} +1 -1
  251. package/_standalone/.next/static/chunks/app/trash/page-72d0ae3649ac4b6c.js +1 -0
  252. package/_standalone/.next/static/chunks/app/view/[...path]/loading-e240db6d5049d336.js +1 -0
  253. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fc04c2bd4f35bc6f.js +1 -0
  254. package/_standalone/.next/static/chunks/app/view/[...path]/page-e8699f96589c0979.js +12 -0
  255. package/_standalone/.next/static/chunks/app/wiki/page-d492256a93f0b8bc.js +1 -0
  256. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e240db6d5049d336.js +1 -0
  257. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e240db6d5049d336.js +1 -0
  258. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e240db6d5049d336.js +1 -0
  259. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e240db6d5049d336.js +1 -0
  260. package/_standalone/.next/static/chunks/{webpack-bbd44cbc83dc0aa4.js → webpack-73c9da80c6c1ebfe.js} +1 -1
  261. package/_standalone/.next/static/css/66f8a81e4eda06d4.css +1 -0
  262. package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
  263. package/_standalone/.next/trace +64 -64
  264. package/_standalone/.next/types/routes.d.ts +5 -2
  265. package/_standalone/.next/types/validator.ts +27 -0
  266. package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +1 -0
  267. package/_standalone/__tests__/agents/agents-content-model.test.ts +13 -0
  268. package/_standalone/__tests__/core/inbox.test.ts +168 -0
  269. package/_standalone/__tests__/core/sync.test.ts +37 -0
  270. package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +1 -0
  271. package/_standalone/app/globals.css +29 -3
  272. package/_standalone/components/ActivityBar.tsx +9 -9
  273. package/_standalone/components/AskFab.tsx +1 -1
  274. package/_standalone/components/Backlinks.tsx +1 -1
  275. package/_standalone/components/Breadcrumb.tsx +1 -1
  276. package/_standalone/components/CreateSpaceModal.tsx +1 -1
  277. package/_standalone/components/EchoSpotlight.tsx +14 -10
  278. package/_standalone/components/Editor.tsx +1 -1
  279. package/_standalone/components/ExportModal.tsx +3 -3
  280. package/_standalone/components/FileTree.tsx +6 -11
  281. package/_standalone/components/GuideCard.tsx +1 -1
  282. package/_standalone/components/ImportModal.tsx +1 -2
  283. package/_standalone/components/KeyboardShortcuts.tsx +1 -1
  284. package/_standalone/components/MarkdownEditor.tsx +1 -1
  285. package/_standalone/components/OnboardingView.tsx +2 -2
  286. package/_standalone/components/OrganizeToast.tsx +3 -1
  287. package/_standalone/components/Panel.tsx +27 -6
  288. package/_standalone/components/Sidebar.tsx +1 -1
  289. package/_standalone/components/SidebarLayout.tsx +30 -7
  290. package/_standalone/components/SystemPulse.tsx +16 -16
  291. package/_standalone/components/agents/AgentsOverviewSection.tsx +18 -92
  292. package/_standalone/components/agents/AgentsPanelA2aTab.tsx +67 -66
  293. package/_standalone/components/agents/AgentsPrimitives.tsx +1 -1
  294. package/_standalone/components/agents/RecentActivityFeed.tsx +6 -6
  295. package/_standalone/components/agents/SkillDetailPopover.tsx +1 -1
  296. package/_standalone/components/ask/AskHeader.tsx +1 -1
  297. package/_standalone/components/echo/EchoHero.tsx +1 -1
  298. package/_standalone/components/echo/EchoPageSections.tsx +1 -1
  299. package/_standalone/components/explore/UseCaseCard.tsx +1 -1
  300. package/_standalone/components/home/InboxSection.tsx +262 -54
  301. package/_standalone/components/panels/AgentsPanel.tsx +4 -3
  302. package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +1 -1
  303. package/_standalone/components/panels/AgentsPanelHubNav.tsx +10 -6
  304. package/_standalone/components/panels/PanelHeader.tsx +1 -1
  305. package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
  306. package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
  307. package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
  308. package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
  309. package/_standalone/components/settings/McpTab.tsx +154 -28
  310. package/_standalone/components/settings/PluginsTab.tsx +1 -1
  311. package/_standalone/components/settings/SettingsContent.tsx +41 -7
  312. package/_standalone/components/settings/types.ts +7 -1
  313. package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +1 -1
  314. package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +1 -1
  315. package/_standalone/hooks/useAiOrganize.ts +14 -1
  316. package/_standalone/lib/organize-history.ts +6 -0
  317. package/_standalone/tsconfig.tsbuildinfo +1 -1
  318. package/app/app/api/file/raw/route.ts +121 -0
  319. package/app/app/api/file/route.ts +21 -0
  320. package/app/app/api/inbox/route.ts +38 -2
  321. package/app/app/api/mcp/status/route.ts +1 -0
  322. package/app/app/api/settings/route.ts +13 -0
  323. package/app/app/api/setup/route.ts +11 -1
  324. package/app/app/api/sync/route.ts +36 -13
  325. package/app/app/global-error.tsx +3 -3
  326. package/app/app/globals.css +29 -3
  327. package/app/app/inbox/history/page.tsx +250 -0
  328. package/app/app/layout.tsx +5 -11
  329. package/app/app/login/page.tsx +1 -1
  330. package/app/app/view/[...path]/ViewPageClient.tsx +15 -10
  331. package/app/app/view/[...path]/not-found.tsx +1 -1
  332. package/app/app/view/[...path]/page.tsx +32 -1
  333. package/app/app/wiki/page.tsx +58 -0
  334. package/app/components/ActivityBar.tsx +9 -9
  335. package/app/components/AskFab.tsx +1 -1
  336. package/app/components/Backlinks.tsx +1 -1
  337. package/app/components/Breadcrumb.tsx +1 -1
  338. package/app/components/CreateSpaceModal.tsx +1 -1
  339. package/app/components/DirView.tsx +2 -2
  340. package/app/components/EchoSpotlight.tsx +14 -10
  341. package/app/components/Editor.tsx +1 -1
  342. package/app/components/ExportModal.tsx +3 -3
  343. package/app/components/FileTree.tsx +6 -11
  344. package/app/components/GuideCard.tsx +1 -1
  345. package/app/components/HomeContent.tsx +50 -39
  346. package/app/components/ImportModal.tsx +1 -2
  347. package/app/components/KeyboardShortcuts.tsx +1 -1
  348. package/app/components/MarkdownEditor.tsx +1 -1
  349. package/app/components/OnboardingView.tsx +2 -2
  350. package/app/components/OrganizeToast.tsx +3 -1
  351. package/app/components/Panel.tsx +27 -6
  352. package/app/components/Sidebar.tsx +1 -1
  353. package/app/components/SidebarLayout.tsx +30 -7
  354. package/app/components/SystemPulse.tsx +16 -16
  355. package/app/components/TrashPageClient.tsx +8 -6
  356. package/app/components/UpdateOverlay.tsx +1 -1
  357. package/app/components/WikiHomeContent.tsx +273 -0
  358. package/app/components/agents/AgentDetailContent.tsx +5 -5
  359. package/app/components/agents/AgentsContentPage.tsx +14 -3
  360. package/app/components/agents/AgentsOverviewSection.tsx +18 -92
  361. package/app/components/agents/AgentsPanelA2aTab.tsx +67 -66
  362. package/app/components/agents/AgentsPrimitives.tsx +1 -1
  363. package/app/components/agents/RecentActivityFeed.tsx +6 -6
  364. package/app/components/agents/SkillDetailPopover.tsx +1 -1
  365. package/app/components/agents/agents-content-model.ts +4 -1
  366. package/app/components/ask/AskHeader.tsx +1 -1
  367. package/app/components/changes/ChangesContentPage.tsx +10 -6
  368. package/app/components/echo/EchoHero.tsx +1 -1
  369. package/app/components/echo/EchoPageSections.tsx +1 -1
  370. package/app/components/explore/ExploreContent.tsx +1 -1
  371. package/app/components/explore/UseCaseCard.tsx +1 -1
  372. package/app/components/help/HelpContent.tsx +3 -3
  373. package/app/components/home/InboxSection.tsx +262 -54
  374. package/app/components/panels/AgentsPanel.tsx +4 -3
  375. package/app/components/panels/AgentsPanelAgentDetail.tsx +1 -1
  376. package/app/components/panels/AgentsPanelHubNav.tsx +10 -6
  377. package/app/components/panels/PanelHeader.tsx +1 -1
  378. package/app/components/renderers/audio/AudioRenderer.tsx +79 -0
  379. package/app/components/renderers/audio/manifest.ts +17 -0
  380. package/app/components/renderers/image/ImageRenderer.tsx +203 -0
  381. package/app/components/renderers/image/manifest.ts +17 -0
  382. package/app/components/renderers/pdf/PdfRenderer.tsx +57 -0
  383. package/app/components/renderers/pdf/manifest.ts +15 -0
  384. package/app/components/renderers/video/VideoRenderer.tsx +91 -0
  385. package/app/components/renderers/video/manifest.ts +17 -0
  386. package/app/components/settings/McpTab.tsx +154 -28
  387. package/app/components/settings/PluginsTab.tsx +1 -1
  388. package/app/components/settings/SettingsContent.tsx +41 -7
  389. package/app/components/settings/types.ts +7 -1
  390. package/app/components/setup/index.tsx +4 -3
  391. package/app/components/walkthrough/WalkthroughOverlay.tsx +1 -1
  392. package/app/components/walkthrough/WalkthroughTooltip.tsx +1 -1
  393. package/app/hooks/useAiOrganize.ts +14 -1
  394. package/app/lib/core/inbox.ts +131 -2
  395. package/app/lib/core/pdf-text.ts +28 -0
  396. package/app/lib/core/search-index.ts +29 -5
  397. package/app/lib/core/tree.ts +6 -1
  398. package/app/lib/fs.ts +31 -3
  399. package/app/lib/i18n/modules/ai-chat.ts +34 -0
  400. package/app/lib/i18n/modules/knowledge.ts +30 -0
  401. package/app/lib/i18n/modules/navigation.ts +4 -2
  402. package/app/lib/i18n/modules/panels.ts +22 -4
  403. package/app/lib/i18n/modules/settings.ts +26 -0
  404. package/app/lib/organize-history.ts +6 -0
  405. package/app/lib/renderers/index.ts +5 -1
  406. package/app/lib/settings.ts +28 -0
  407. package/bin/commands/doctor.js +12 -6
  408. package/bin/commands/file.js +7 -4
  409. package/bin/commands/logs.js +39 -4
  410. package/bin/commands/onboard.js +1 -1
  411. package/bin/commands/open.js +6 -1
  412. package/bin/commands/space.js +7 -4
  413. package/bin/commands/update.js +8 -18
  414. package/bin/lib/build.js +19 -8
  415. package/bin/lib/cli-shim.js +67 -2
  416. package/bin/lib/config.js +4 -5
  417. package/bin/lib/gateway.js +10 -23
  418. package/bin/lib/jsonc.js +7 -2
  419. package/bin/lib/mcp-agents.js +26 -5
  420. package/bin/lib/path-expand.js +6 -3
  421. package/bin/lib/port.js +5 -1
  422. package/bin/lib/stop.js +72 -51
  423. package/bin/lib/sync.js +1 -1
  424. package/package.json +1 -1
  425. package/scripts/setup.js +7 -5
  426. package/_standalone/.next/server/chunks/3436.js +0 -52
  427. package/_standalone/.next/server/chunks/5648.js +0 -2
  428. package/_standalone/.next/server/chunks/8408.js +0 -219
  429. package/_standalone/.next/static/W-wLgvhPtPJ5Psq9V4i3M/_buildManifest.js +0 -1
  430. package/_standalone/.next/static/chunks/1053-17786066ecd6f216.js +0 -29
  431. package/_standalone/.next/static/chunks/1814.72f7fe7c61e2b647.js +0 -1
  432. package/_standalone/.next/static/chunks/362.4c226d7887d5f696.js +0 -1
  433. package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +0 -1
  434. package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +0 -1
  435. package/_standalone/.next/static/chunks/7035-032641fb6f4e07b2.js +0 -1
  436. package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +0 -1
  437. package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +0 -1
  438. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-074d6aafc2606561.js +0 -1
  439. package/_standalone/.next/static/chunks/app/agents/page-710d8c80fa86e93e.js +0 -5
  440. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-b07a5983e85bc5e3.js +0 -1
  441. package/_standalone/.next/static/chunks/app/api/a2a/route-b07a5983e85bc5e3.js +0 -1
  442. package/_standalone/.next/static/chunks/app/api/acp/config/route-b07a5983e85bc5e3.js +0 -1
  443. package/_standalone/.next/static/chunks/app/api/acp/detect/route-b07a5983e85bc5e3.js +0 -1
  444. package/_standalone/.next/static/chunks/app/api/acp/install/route-b07a5983e85bc5e3.js +0 -1
  445. package/_standalone/.next/static/chunks/app/api/acp/registry/route-b07a5983e85bc5e3.js +0 -1
  446. package/_standalone/.next/static/chunks/app/api/acp/session/route-b07a5983e85bc5e3.js +0 -1
  447. package/_standalone/.next/static/chunks/app/api/agent-activity/route-b07a5983e85bc5e3.js +0 -1
  448. package/_standalone/.next/static/chunks/app/api/ask/route-b07a5983e85bc5e3.js +0 -1
  449. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-b07a5983e85bc5e3.js +0 -1
  450. package/_standalone/.next/static/chunks/app/api/auth/route-b07a5983e85bc5e3.js +0 -1
  451. package/_standalone/.next/static/chunks/app/api/backlinks/route-b07a5983e85bc5e3.js +0 -1
  452. package/_standalone/.next/static/chunks/app/api/bootstrap/route-b07a5983e85bc5e3.js +0 -1
  453. package/_standalone/.next/static/chunks/app/api/changes/route-b07a5983e85bc5e3.js +0 -1
  454. package/_standalone/.next/static/chunks/app/api/export/route-b07a5983e85bc5e3.js +0 -1
  455. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-b07a5983e85bc5e3.js +0 -1
  456. package/_standalone/.next/static/chunks/app/api/file/import/route-b07a5983e85bc5e3.js +0 -1
  457. package/_standalone/.next/static/chunks/app/api/file/route-b07a5983e85bc5e3.js +0 -1
  458. package/_standalone/.next/static/chunks/app/api/files/route-b07a5983e85bc5e3.js +0 -1
  459. package/_standalone/.next/static/chunks/app/api/git/route-b07a5983e85bc5e3.js +0 -1
  460. package/_standalone/.next/static/chunks/app/api/graph/route-b07a5983e85bc5e3.js +0 -1
  461. package/_standalone/.next/static/chunks/app/api/health/route-b07a5983e85bc5e3.js +0 -1
  462. package/_standalone/.next/static/chunks/app/api/inbox/route-b07a5983e85bc5e3.js +0 -1
  463. package/_standalone/.next/static/chunks/app/api/init/route-b07a5983e85bc5e3.js +0 -1
  464. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-b07a5983e85bc5e3.js +0 -1
  465. package/_standalone/.next/static/chunks/app/api/mcp/install/route-b07a5983e85bc5e3.js +0 -1
  466. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-b07a5983e85bc5e3.js +0 -1
  467. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-b07a5983e85bc5e3.js +0 -1
  468. package/_standalone/.next/static/chunks/app/api/mcp/status/route-b07a5983e85bc5e3.js +0 -1
  469. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-b07a5983e85bc5e3.js +0 -1
  470. package/_standalone/.next/static/chunks/app/api/monitoring/route-b07a5983e85bc5e3.js +0 -1
  471. package/_standalone/.next/static/chunks/app/api/recent-files/route-b07a5983e85bc5e3.js +0 -1
  472. package/_standalone/.next/static/chunks/app/api/restart/route-b07a5983e85bc5e3.js +0 -1
  473. package/_standalone/.next/static/chunks/app/api/search/route-b07a5983e85bc5e3.js +0 -1
  474. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-b07a5983e85bc5e3.js +0 -1
  475. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-b07a5983e85bc5e3.js +0 -1
  476. package/_standalone/.next/static/chunks/app/api/settings/route-b07a5983e85bc5e3.js +0 -1
  477. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-b07a5983e85bc5e3.js +0 -1
  478. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-b07a5983e85bc5e3.js +0 -1
  479. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-b07a5983e85bc5e3.js +0 -1
  480. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-b07a5983e85bc5e3.js +0 -1
  481. package/_standalone/.next/static/chunks/app/api/setup/ls/route-b07a5983e85bc5e3.js +0 -1
  482. package/_standalone/.next/static/chunks/app/api/setup/route-b07a5983e85bc5e3.js +0 -1
  483. package/_standalone/.next/static/chunks/app/api/skills/route-b07a5983e85bc5e3.js +0 -1
  484. package/_standalone/.next/static/chunks/app/api/sync/route-b07a5983e85bc5e3.js +0 -1
  485. package/_standalone/.next/static/chunks/app/api/tree-version/route-b07a5983e85bc5e3.js +0 -1
  486. package/_standalone/.next/static/chunks/app/api/uninstall/route-b07a5983e85bc5e3.js +0 -1
  487. package/_standalone/.next/static/chunks/app/api/update/route-b07a5983e85bc5e3.js +0 -1
  488. package/_standalone/.next/static/chunks/app/api/update-check/route-b07a5983e85bc5e3.js +0 -1
  489. package/_standalone/.next/static/chunks/app/api/update-status/route-b07a5983e85bc5e3.js +0 -1
  490. package/_standalone/.next/static/chunks/app/api/workflows/route-b07a5983e85bc5e3.js +0 -1
  491. package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +0 -1
  492. package/_standalone/.next/static/chunks/app/echo/page-b07a5983e85bc5e3.js +0 -1
  493. package/_standalone/.next/static/chunks/app/global-error-e1ad0e18236ba26c.js +0 -1
  494. package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +0 -1
  495. package/_standalone/.next/static/chunks/app/layout-e5d2fb384207d821.js +0 -186
  496. package/_standalone/.next/static/chunks/app/loading-b07a5983e85bc5e3.js +0 -1
  497. package/_standalone/.next/static/chunks/app/page-54edd045d3448df5.js +0 -7
  498. package/_standalone/.next/static/chunks/app/trash/page-6372bb3f5463affa.js +0 -1
  499. package/_standalone/.next/static/chunks/app/view/[...path]/loading-b07a5983e85bc5e3.js +0 -1
  500. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +0 -1
  501. package/_standalone/.next/static/chunks/app/view/[...path]/page-f3d1d87190dcfe28.js +0 -12
  502. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-b07a5983e85bc5e3.js +0 -1
  503. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-b07a5983e85bc5e3.js +0 -1
  504. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-b07a5983e85bc5e3.js +0 -1
  505. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b07a5983e85bc5e3.js +0 -1
  506. package/_standalone/.next/static/css/bbf51803eade6c50.css +0 -31
  507. package/_standalone/.next/static/css/ef1151f74f00d91a.css +0 -1
  508. /package/_standalone/.next/static/{W-wLgvhPtPJ5Psq9V4i3M → 2hrwFOLEOZhHQHfrIt-Dw}/_ssgManifest.js +0 -0
@@ -4,7 +4,6 @@ import Link from 'next/link';
4
4
  import { useMemo, useState } from 'react';
5
5
  import {
6
6
  AlertTriangle,
7
- ArrowRight,
8
7
  Cable,
9
8
  ChevronDown,
10
9
  Globe,
@@ -62,6 +61,7 @@ export default function AgentsOverviewSection({
62
61
  mcpRunning,
63
62
  mcpPort,
64
63
  mcpToolCount,
64
+ mcpEnabled = true,
65
65
  enabledSkillCount,
66
66
  allAgents,
67
67
  pulseCopy,
@@ -73,12 +73,13 @@ export default function AgentsOverviewSection({
73
73
  mcpRunning: boolean;
74
74
  mcpPort: number | null;
75
75
  mcpToolCount: number;
76
+ mcpEnabled?: boolean;
76
77
  enabledSkillCount: number;
77
78
  allAgents: AgentInfo[];
78
79
  pulseCopy: PulseCopy;
79
80
  a2aCount?: number;
80
81
  }) {
81
- const allHealthy = riskQueue.length === 0 && mcpRunning;
82
+ const allHealthy = riskQueue.length === 0 && (!mcpEnabled || mcpRunning);
82
83
  const [riskOpen, setRiskOpen] = useState(false);
83
84
 
84
85
  const sortedAgents = useMemo(
@@ -113,26 +114,20 @@ export default function AgentsOverviewSection({
113
114
  value={buckets.detected.length}
114
115
  tone={buckets.detected.length > 0 ? 'warn' : 'muted'}
115
116
  />
116
- {buckets.notFound.length > 0 && (
117
- <StatCell
118
- icon={<AlertTriangle size={14} aria-hidden="true" />}
119
- label={pulseCopy.notFound}
120
- value={buckets.notFound.length}
121
- tone="muted"
122
- />
123
- )}
124
117
  <StatCell
125
118
  icon={<Zap size={14} aria-hidden="true" />}
126
119
  label={pulseCopy.enabledSkills}
127
120
  value={enabledSkillCount}
128
121
  tone="ok"
129
122
  />
130
- <StatCell
131
- icon={<Server size={14} aria-hidden="true" />}
132
- label={copy.pulseMcp as string}
133
- value={mcpRunning ? `:${mcpPort}` : '—'}
134
- tone={mcpRunning ? 'ok' : 'warn'}
135
- />
123
+ {mcpEnabled && (
124
+ <StatCell
125
+ icon={<Server size={14} aria-hidden="true" />}
126
+ label={copy.pulseMcp as string}
127
+ value={mcpRunning ? `:${mcpPort}` : ''}
128
+ tone={mcpRunning ? 'ok' : 'warn'}
129
+ />
130
+ )}
136
131
  {a2aCount != null && (
137
132
  <StatCell
138
133
  icon={<Globe size={14} aria-hidden="true" />}
@@ -144,26 +139,6 @@ export default function AgentsOverviewSection({
144
139
  </div>
145
140
  </section>
146
141
 
147
- {/* ═══════════ QUICK NAVIGATION ═══════════ */}
148
- <nav className="grid grid-cols-1 md:grid-cols-2 gap-3" aria-label="Quick navigation">
149
- <QuickNavCard
150
- href="/agents?tab=mcp"
151
- icon={<Server size={18} aria-hidden="true" />}
152
- title="MCP"
153
- stat={mcpRunning ? copy.toolsUnit(mcpToolCount) : copy.mcpOffline}
154
- statTone={mcpRunning ? 'ok' : 'warn'}
155
- description={copy.nextActionHint as string}
156
- />
157
- <QuickNavCard
158
- href="/agents?tab=skills"
159
- icon={<Zap size={18} aria-hidden="true" />}
160
- title="Skills"
161
- stat={copy.enabledUnit(enabledSkillCount)}
162
- statTone="ok"
163
- description={`${pulseCopy.enabledSkills}: ${enabledSkillCount}`}
164
- />
165
- </nav>
166
-
167
142
  {/* ═══════════ RISK CAPSULE ═══════════ */}
168
143
  {riskQueue.length > 0 && (
169
144
  <div>
@@ -241,13 +216,13 @@ export default function AgentsOverviewSection({
241
216
  </div>
242
217
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
243
218
  {sortedAgents.map((agent, i) => (
244
- <AgentCard key={agent.key} agent={agent} copy={copy} index={i} />
219
+ <AgentCard key={agent.key} agent={agent} copy={copy} index={i} mcpEnabled={mcpEnabled} />
245
220
  ))}
246
221
  </div>
247
222
  </section>
248
223
  ) : (
249
224
  <section
250
- className="rounded-xl border border-dashed border-border/60 bg-gradient-to-b from-card/80 to-card/40 p-12 text-center"
225
+ className="rounded-xl border border-border/40 bg-card/30 p-12 text-center"
251
226
  aria-label={copy.usagePulse}
252
227
  >
253
228
  <div className="w-14 h-14 rounded-2xl bg-muted/40 flex items-center justify-center mx-auto mb-4">
@@ -316,69 +291,18 @@ function StatCell({
316
291
  );
317
292
  }
318
293
 
319
- /* ────────── Quick Nav Card ────────── */
320
-
321
- function QuickNavCard({
322
- href,
323
- icon,
324
- title,
325
- stat,
326
- statTone,
327
- description,
328
- }: {
329
- href: string;
330
- icon: React.ReactNode;
331
- title: string;
332
- stat: string;
333
- statTone: 'ok' | 'warn';
334
- description: string;
335
- }) {
336
- return (
337
- <Link
338
- href={href}
339
- className="group rounded-xl border border-border bg-card p-4 flex items-start gap-3.5
340
- hover:border-[var(--amber)]/30 hover:shadow-[0_2px_12px_rgba(0,0,0,0.04)]
341
- active:scale-[0.99]
342
- transition-all duration-200
343
- focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
344
- >
345
- <div className="shrink-0 w-10 h-10 rounded-xl bg-muted/50 flex items-center justify-center text-muted-foreground/70 group-hover:text-[var(--amber)] group-hover:bg-[var(--amber)]/[0.08] transition-all duration-200">
346
- {icon}
347
- </div>
348
- <div className="flex-1 min-w-0">
349
- <div className="flex items-center gap-2 mb-1">
350
- <span className="text-sm font-semibold text-foreground">{title}</span>
351
- <span
352
- className={`text-2xs px-2 py-0.5 rounded-full font-medium select-none ${
353
- statTone === 'ok'
354
- ? 'bg-muted text-muted-foreground'
355
- : 'bg-[var(--amber-dim)] text-[var(--amber-text)]'
356
- }`}
357
- >
358
- {stat}
359
- </span>
360
- </div>
361
- <p className="text-xs text-muted-foreground/70 leading-relaxed line-clamp-2">{description}</p>
362
- </div>
363
- <ArrowRight
364
- size={14}
365
- className="shrink-0 mt-1.5 text-muted-foreground/20 group-hover:text-[var(--amber)] group-hover:translate-x-0.5 transition-all duration-200"
366
- aria-hidden="true"
367
- />
368
- </Link>
369
- );
370
- }
371
-
372
294
  /* ────────── Agent Card ────────── */
373
295
 
374
296
  function AgentCard({
375
297
  agent,
376
298
  copy,
377
299
  index,
300
+ mcpEnabled = true,
378
301
  }: {
379
302
  agent: AgentInfo;
380
303
  copy: OverviewCopy;
381
304
  index: number;
305
+ mcpEnabled?: boolean;
382
306
  }) {
383
307
  const status = resolveAgentStatus(agent);
384
308
  const mcpCount = agent.configuredMcpServerCount ?? agent.configuredMcpServers?.length ?? 0;
@@ -421,7 +345,9 @@ function AgentCard({
421
345
 
422
346
  {/* Metrics row */}
423
347
  <div className="flex items-center gap-1 pt-2.5 border-t border-border/40">
424
- <MetricChip icon={<Server size={11} aria-hidden="true" />} value={mcpCount} label={copy.colMcp as string} />
348
+ {mcpEnabled && (
349
+ <MetricChip icon={<Server size={11} aria-hidden="true" />} value={mcpCount} label={copy.colMcp as string} />
350
+ )}
425
351
  <MetricChip icon={<Zap size={11} aria-hidden="true" />} value={skillCount} label={copy.colSkills as string} />
426
352
  <span className="flex-1 min-w-[4px]" />
427
353
  {hasRuntime && (
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useState, useCallback } from 'react';
4
- import { Check, ChevronDown, ChevronUp, Clock, Code2, Download, Globe, Loader2, MessageSquare, Network, RefreshCw, RotateCcw, Save, Settings2, Trash2, Wifi, WifiOff, Wrench, Zap } from 'lucide-react';
4
+ import { Check, ChevronDown, ChevronUp, Clock, Code2, Globe, Loader2, MessageSquare, Network, RefreshCw, RotateCcw, Save, Settings2, Trash2, Wifi, WifiOff, Wrench, Zap } from 'lucide-react';
5
5
  import { useLocale } from '@/lib/stores/locale-store';
6
6
  import { useAcpConfig } from '@/hooks/useAcpConfig';
7
7
  import type { RemoteAgent, DelegationRecord } from '@/lib/a2a/types';
@@ -60,7 +60,7 @@ export default function AgentsPanelA2aTab({
60
60
  <>
61
61
  {/* Remote A2A agent list */}
62
62
  {agents.length === 0 ? (
63
- <div className="rounded-xl border border-dashed border-border/60 bg-gradient-to-b from-card/80 to-card/40 p-8 text-center">
63
+ <div className="rounded-xl border border-border/40 bg-card/30 p-8 text-center">
64
64
  <div className="w-12 h-12 rounded-2xl bg-muted/40 flex items-center justify-center mx-auto mb-3">
65
65
  <Globe size={20} className="text-muted-foreground/50" aria-hidden="true" />
66
66
  </div>
@@ -109,7 +109,7 @@ function NetworkEmptyState({
109
109
  const p = t.panels.agents;
110
110
 
111
111
  return (
112
- <div className="rounded-xl border border-dashed border-border/60 bg-gradient-to-b from-card/80 to-card/40 p-12 text-center">
112
+ <div className="rounded-xl border border-border/40 bg-card/30 p-12 text-center">
113
113
  <div className="w-14 h-14 rounded-2xl bg-muted/40 flex items-center justify-center mx-auto mb-4">
114
114
  <Network size={22} className="text-muted-foreground/50" aria-hidden="true" />
115
115
  </div>
@@ -161,6 +161,7 @@ function AcpRegistrySection() {
161
161
  const acp = useAcpRegistry();
162
162
  const detection = useAcpDetection();
163
163
  const acpConfig = useAcpConfig();
164
+ const [showAvailable, setShowAvailable] = useState(false);
164
165
 
165
166
  if (acp.loading) {
166
167
  return (
@@ -198,7 +199,6 @@ function AcpRegistrySection() {
198
199
 
199
200
  if (acp.agents.length === 0) return null;
200
201
 
201
- // Separate installed and not-installed agents
202
202
  const installedAgents: { agent: AcpRegistryEntry; info: { id: string; name: string; binaryPath: string } }[] = [];
203
203
  const notInstalledAgents: { agent: AcpRegistryEntry; installCmd: string | null; packageName: string | null }[] = [];
204
204
 
@@ -218,6 +218,7 @@ function AcpRegistrySection() {
218
218
 
219
219
  return (
220
220
  <div className="space-y-3">
221
+ {/* ── Installed Agents ── */}
221
222
  <div className="flex items-center justify-between">
222
223
  <h3 className="text-xs font-medium text-muted-foreground uppercase tracking-wide">
223
224
  {p.acpSectionTitle}
@@ -232,43 +233,61 @@ function AcpRegistrySection() {
232
233
  <RefreshCw size={10} className={detection.loading ? 'animate-spin' : ''} />
233
234
  {p.acpScan}
234
235
  </button>
235
- <span className="text-2xs text-muted-foreground/60">
236
- {p.acpSectionDesc(acp.agents.length)}
237
- </span>
236
+ {installedAgents.length > 0 && (
237
+ <span className="text-2xs text-muted-foreground/60">
238
+ {p.acpSectionDesc(installedAgents.length)}
239
+ </span>
240
+ )}
238
241
  </div>
239
242
  </div>
240
243
 
241
- {/* Installed agents prominent cards */}
242
- {installedAgents.length > 0 && (
244
+ {installedAgents.length > 0 ? (
243
245
  <div className="space-y-2">
244
246
  {installedAgents.map(({ agent, info }) => (
245
247
  <AcpAgentCard
246
248
  key={agent.id}
247
249
  agent={agent}
248
250
  installed={info}
249
- installCmd={null}
250
- packageName={null}
251
251
  detectionDone={!detection.loading}
252
- onInstalled={detection.refresh}
253
252
  acpConfig={acpConfig}
254
253
  />
255
254
  ))}
256
255
  </div>
257
- )}
256
+ ) : !detection.loading ? (
257
+ <div className="rounded-lg border border-border/40 bg-card/30 p-5 text-center">
258
+ <p className="text-xs text-muted-foreground/70 leading-relaxed max-w-xs mx-auto">
259
+ {p.acpNoInstalled}
260
+ </p>
261
+ </div>
262
+ ) : null}
258
263
 
259
- {/* Not-installed agentscompact rows grouped at bottom */}
260
- {notInstalledAgents.length > 0 && (
261
- <div className="space-y-1">
262
- {notInstalledAgents.map(({ agent, installCmd, packageName }) => (
263
- <AcpAgentCompactRow
264
- key={agent.id}
265
- agent={agent}
266
- installCmd={installCmd}
267
- packageName={packageName}
268
- detectionDone={!detection.loading}
269
- onInstalled={detection.refresh}
270
- />
271
- ))}
264
+ {/* ── Available (Not Installed)collapsed by default, shown only after detection completes ── */}
265
+ {!detection.loading && notInstalledAgents.length > 0 && (
266
+ <div className="space-y-2">
267
+ <button
268
+ type="button"
269
+ onClick={() => setShowAvailable(v => !v)}
270
+ className="flex items-center gap-1.5 text-xs text-muted-foreground/70 hover:text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm"
271
+ >
272
+ {showAvailable ? <ChevronUp size={12} /> : <ChevronDown size={12} />}
273
+ <span className="font-medium">{p.acpAvailableTitle}</span>
274
+ <span className="text-2xs">({p.acpAvailableDesc(notInstalledAgents.length)})</span>
275
+ </button>
276
+
277
+ {showAvailable && (
278
+ <div className="space-y-1 animate-in fade-in slide-in-from-top-1 duration-150">
279
+ {notInstalledAgents.map(({ agent, installCmd, packageName }) => (
280
+ <AcpAgentCompactRow
281
+ key={agent.id}
282
+ agent={agent}
283
+ installCmd={installCmd}
284
+ packageName={packageName}
285
+ detectionDone={!detection.loading}
286
+ onInstalled={detection.refresh}
287
+ />
288
+ ))}
289
+ </div>
290
+ )}
272
291
  </div>
273
292
  )}
274
293
  </div>
@@ -287,10 +306,7 @@ const TRANSPORT_STYLES: Record<string, string> = {
287
306
  function AcpAgentCard({ agent, installed, detectionDone, acpConfig }: {
288
307
  agent: AcpRegistryEntry;
289
308
  installed: { id: string; name: string; binaryPath: string; resolvedCommand?: { cmd: string; args: string[]; source: string } } | null;
290
- installCmd: string | null;
291
- packageName: string | null;
292
309
  detectionDone: boolean;
293
- onInstalled: () => void;
294
310
  acpConfig: ReturnType<typeof useAcpConfig>;
295
311
  }) {
296
312
  const { t } = useLocale();
@@ -477,7 +493,7 @@ function AcpAgentCard({ agent, installed, detectionDone, acpConfig }: {
477
493
 
478
494
  /* ────────── ACP Agent Compact Row (Not Installed — subtle) ────────── */
479
495
 
480
- function AcpAgentCompactRow({ agent, installCmd, packageName, detectionDone, onInstalled }: {
496
+ function AcpAgentCompactRow({ agent, installCmd }: {
481
497
  agent: AcpRegistryEntry;
482
498
  installCmd: string | null;
483
499
  packageName: string | null;
@@ -486,29 +502,17 @@ function AcpAgentCompactRow({ agent, installCmd, packageName, detectionDone, onI
486
502
  }) {
487
503
  const { t } = useLocale();
488
504
  const p = t.panels.agents;
489
- const [installState, setInstallState] = useState<'idle' | 'installing' | 'done' | 'error'>('idle');
490
-
491
- const handleInstall = async () => {
492
- if (!packageName || installState === 'installing') return;
493
- setInstallState('installing');
494
- try {
495
- const res = await fetch('/api/acp/install', {
496
- method: 'POST',
497
- headers: { 'Content-Type': 'application/json' },
498
- body: JSON.stringify({ agentId: agent.id, packageName }),
499
- });
500
- if (!res.ok) {
501
- setInstallState('error');
502
- return;
503
- }
504
- // Wait a bit for npm install to complete, then re-detect
505
- await new Promise((r) => setTimeout(r, 8000));
506
- onInstalled();
507
- setInstallState('done');
508
- } catch {
509
- setInstallState('error');
510
- }
511
- };
505
+ const [copied, setCopied] = useState(false);
506
+
507
+ const effectiveCmd = installCmd || (agent.packageName ? `npm install -g ${agent.packageName}` : null);
508
+
509
+ const handleCopy = useCallback(() => {
510
+ if (!effectiveCmd) return;
511
+ navigator.clipboard.writeText(effectiveCmd).then(() => {
512
+ setCopied(true);
513
+ setTimeout(() => setCopied(false), 2000);
514
+ }).catch(() => {});
515
+ }, [effectiveCmd]);
512
516
 
513
517
  return (
514
518
  <div className="group rounded-lg border border-border/60 bg-card/60 px-3 py-2 hover:border-border transition-all duration-150">
@@ -518,24 +522,21 @@ function AcpAgentCompactRow({ agent, installCmd, packageName, detectionDone, onI
518
522
  </div>
519
523
  <div className="flex-1 min-w-0">
520
524
  <p className="text-xs text-muted-foreground truncate">{agent.name}</p>
525
+ {agent.description && (
526
+ <p className="text-2xs text-muted-foreground/50 truncate">{agent.description}</p>
527
+ )}
521
528
  </div>
522
- {detectionDone && (
523
- <span className="text-2xs px-1.5 py-0.5 rounded font-medium shrink-0 bg-muted text-muted-foreground/60">
524
- {p.acpNotInstalled}
525
- </span>
526
- )}
527
- {detectionDone && packageName && (
529
+ {effectiveCmd && (
528
530
  <button
529
531
  type="button"
530
- disabled={installState === 'installing'}
531
- onClick={handleInstall}
532
- className="inline-flex items-center gap-1 px-2 py-0.5 text-2xs font-medium rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50"
533
- title={installCmd ? p.acpInstallHint(installCmd) : undefined}
532
+ onClick={handleCopy}
533
+ className="inline-flex items-center gap-1 px-2 py-0.5 text-2xs font-medium rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring shrink-0"
534
+ title={effectiveCmd}
534
535
  >
535
- {installState === 'installing' ? (
536
- <><Loader2 size={10} className="animate-spin" /> {p.acpInstalling}</>
536
+ {copied ? (
537
+ <><Check size={10} /> {p.acpCopied}</>
537
538
  ) : (
538
- <><Download size={10} /> {p.acpInstall}</>
539
+ <><Code2 size={10} /> {p.acpCopyCmd}</>
539
540
  )}
540
541
  </button>
541
542
  )}
@@ -119,7 +119,7 @@ export function BulkMessage({ message }: { message: string | null }) {
119
119
 
120
120
  export function EmptyState({ message, icon, className }: { message: string; icon?: React.ReactNode; className?: string }) {
121
121
  return (
122
- <div className={`rounded-xl border border-dashed border-border/60 bg-gradient-to-b from-card/80 to-card/40 p-10 text-center ${className ?? ''}`}>
122
+ <div className={`rounded-xl border border-border/40 bg-card/30 p-10 text-center ${className ?? ''}`}>
123
123
  {icon && (
124
124
  <div className="w-10 h-10 rounded-full bg-muted/50 flex items-center justify-center mx-auto mb-3 text-muted-foreground/40">
125
125
  {icon}
@@ -61,15 +61,15 @@ export default function RecentActivityFeed() {
61
61
 
62
62
  return (
63
63
  <section aria-label="Recent Activity">
64
- <div className="flex items-center gap-2 mb-4">
65
- <span className="text-[var(--amber)]"><Activity size={13} /></span>
66
- <h2 className="text-sm font-semibold font-display text-foreground">
64
+ <div className="flex items-center gap-2.5 mb-5">
65
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Activity size={13} /></div>
66
+ <h2 className="text-[13px] font-semibold text-foreground tracking-wide">
67
67
  {copy?.recentActivity ?? 'Recent Activity'}
68
68
  </h2>
69
69
  <div className="ml-auto">
70
70
  <Link
71
71
  href="/agents?tab=activity"
72
- className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-colors font-display"
72
+ className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-colors"
73
73
  >
74
74
  <ArrowRight size={12} />
75
75
  <span>{copy?.viewAll ?? 'View all'}</span>
@@ -105,7 +105,7 @@ export default function RecentActivityFeed() {
105
105
 
106
106
  {/* agent name badge */}
107
107
  {op.agentName && (
108
- <span className="text-[0.6rem] font-medium text-muted-foreground/70 bg-muted/60 px-1.5 py-0.5 rounded-full shrink-0 font-display" title={op.agentName}>
108
+ <span className="text-[0.6rem] font-medium text-muted-foreground/70 bg-muted/60 px-1.5 py-0.5 rounded-full shrink-0" title={op.agentName}>
109
109
  {op.agentName.length > 20 ? op.agentName.slice(0, 20) + '...' : op.agentName}
110
110
  </span>
111
111
  )}
@@ -115,7 +115,7 @@ export default function RecentActivityFeed() {
115
115
  : <AlertCircle size={11} className="shrink-0 text-[var(--error)]/60" />
116
116
  }
117
117
 
118
- <span className="text-2xs text-muted-foreground/40 tabular-nums shrink-0 font-display" title={op.ts}>
118
+ <span className="text-2xs text-muted-foreground/40 tabular-nums shrink-0" title={op.ts}>
119
119
  {relativeTs(op.ts)}
120
120
  </span>
121
121
  </div>
@@ -418,7 +418,7 @@ export default function SkillDetailPopover({
418
418
  ))}
419
419
  </div>
420
420
  ) : (
421
- <div className="rounded-lg border border-dashed border-border p-3 text-center">
421
+ <div className="rounded-lg border border-border/40 bg-card/30 p-3 text-center">
422
422
  <p className="text-xs text-muted-foreground">{copy.noAgents}</p>
423
423
  </div>
424
424
  )}
@@ -64,13 +64,15 @@ export interface RiskCopy {
64
64
 
65
65
  export function buildRiskQueue(args: {
66
66
  mcpRunning: boolean;
67
+ mcpEnabled: boolean;
67
68
  detectedCount: number;
68
69
  notFoundCount: number;
69
70
  allSkillsDisabled: boolean;
70
71
  copy: RiskCopy;
71
72
  }): RiskItem[] {
72
73
  const items: RiskItem[] = [];
73
- if (!args.mcpRunning) items.push({ id: 'mcp-stopped', severity: 'error', title: args.copy.riskMcpStopped });
74
+ // Only show MCP-related risks if MCP is explicitly enabled
75
+ if (args.mcpEnabled && !args.mcpRunning) items.push({ id: 'mcp-stopped', severity: 'error', title: args.copy.riskMcpStopped });
74
76
  if (args.detectedCount > 0) items.push({ id: 'detected-unconfigured', severity: 'warn', title: args.copy.riskDetected(args.detectedCount) });
75
77
  if (args.allSkillsDisabled) items.push({ id: 'skills-disabled', severity: 'warn', title: args.copy.riskSkillsDisabled });
76
78
  return items;
@@ -188,6 +190,7 @@ const defaultRiskCopy: RiskCopy = {
188
190
 
189
191
  export function buildMcpRiskQueue(args: {
190
192
  mcpRunning: boolean;
193
+ mcpEnabled: boolean;
191
194
  detectedCount: number;
192
195
  notFoundCount: number;
193
196
  }): RiskItem[] {
@@ -29,7 +29,7 @@ export default memo(function AskHeader({
29
29
  )}
30
30
  <div className="flex items-center gap-2 text-sm font-medium text-foreground">
31
31
  <Sparkles size={isPanel ? 14 : 15} className="text-[var(--amber)]" />
32
- <span className={isPanel ? 'font-display text-xs uppercase tracking-wider text-muted-foreground' : 'font-display'}>
32
+ <span className={isPanel ? 'text-xs uppercase tracking-wider text-muted-foreground' : ''}>
33
33
  {isPanel ? 'MindOS Agent' : t.ask.title}
34
34
  </span>
35
35
  </div>
@@ -128,13 +128,17 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
128
128
  return t.changes.filters.system;
129
129
  }, [t]);
130
130
 
131
+ const opLabel = useCallback((op: string) => {
132
+ return (t.changes.operations as Record<string, string>)?.[op] ?? op;
133
+ }, [t]);
134
+
131
135
  return (
132
136
  <div className="min-h-screen">
133
137
  <div className="px-4 md:px-6 pt-6 md:pt-8">
134
138
  <div className="content-width xl:mr-[220px] rounded-xl border border-border bg-card px-4 py-3 md:px-5 md:py-4">
135
139
  <div className="flex flex-wrap items-start justify-between gap-3">
136
140
  <div className="min-w-0">
137
- <div className="flex items-center gap-2 text-sm font-medium text-foreground font-display">
141
+ <div className="flex items-center gap-2 text-sm font-medium text-foreground">
138
142
  <History size={15} />
139
143
  {t.changes.title}
140
144
  </div>
@@ -173,7 +177,7 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
173
177
  <div className="rounded-lg border border-border bg-card p-3">
174
178
  <div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-4 gap-2.5">
175
179
  <label className="block">
176
- <span className="text-xs text-muted-foreground font-display">{t.changes.filters.filePath}</span>
180
+ <span className="text-xs text-muted-foreground">{t.changes.filters.filePath}</span>
177
181
  <input
178
182
  value={pathFilter}
179
183
  onChange={(e) => setPathFilter(e.target.value)}
@@ -182,7 +186,7 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
182
186
  />
183
187
  </label>
184
188
  <div className="block">
185
- <span className="text-xs text-muted-foreground font-display">{t.changes.filters.source}</span>
189
+ <span className="text-xs text-muted-foreground">{t.changes.filters.source}</span>
186
190
  <CustomSelect
187
191
  value={sourceFilter}
188
192
  onChange={(v) => setSourceFilter(v as 'all' | 'agent' | 'user' | 'system')}
@@ -191,7 +195,7 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
191
195
  />
192
196
  </div>
193
197
  <div className="block">
194
- <span className="text-xs text-muted-foreground font-display">{t.changes.filters.operation}</span>
198
+ <span className="text-xs text-muted-foreground">{t.changes.filters.operation}</span>
195
199
  <CustomSelect
196
200
  value={opFilter}
197
201
  onChange={setOpFilter}
@@ -200,7 +204,7 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
200
204
  />
201
205
  </div>
202
206
  <label className="block">
203
- <span className="text-xs text-muted-foreground font-display">{t.changes.filters.keyword}</span>
207
+ <span className="text-xs text-muted-foreground">{t.changes.filters.keyword}</span>
204
208
  <input
205
209
  value={queryFilter}
206
210
  onChange={(e) => setQueryFilter(e.target.value)}
@@ -256,7 +260,7 @@ export default function ChangesContentPage({ initialPath = '' }: { initialPath?:
256
260
  >
257
261
  {event.path}
258
262
  </span>
259
- <span className={opColorClass(event.op)}>{event.op}</span>
263
+ <span className={opColorClass(event.op)}>{opLabel(event.op)}</span>
260
264
  <span>·</span>
261
265
  <span>{sourceLabel(event.source)}</span>
262
266
  <span>·</span>
@@ -30,7 +30,7 @@ export function EchoHero({
30
30
  <p className="mb-4 font-sans text-2xs font-semibold uppercase tracking-[0.2em] text-[var(--amber-text)]">
31
31
  {heroKicker}
32
32
  </p>
33
- <h1 id={titleId} className="font-display text-2xl font-semibold tracking-tight text-foreground md:text-3xl">
33
+ <h1 id={titleId} className="text-2xl font-semibold tracking-tight text-foreground md:text-3xl">
34
34
  {pageTitle}
35
35
  </h1>
36
36
  <p className="mt-3 max-w-prose font-sans text-base leading-relaxed text-muted-foreground">{lead}</p>
@@ -69,7 +69,7 @@ export function EchoContinuedGroups({
69
69
  footer?: ReactNode;
70
70
  }) {
71
71
  const cell = (label: string, icon: ReactNode) => (
72
- <div className="flex min-h-[5.75rem] flex-col justify-center rounded-xl border border-dashed border-border/80 bg-muted/10 px-4 py-4 transition-colors duration-150 hover:border-[var(--amber)]/25 hover:bg-[var(--amber-dim)]/15">
72
+ <div className="flex min-h-[5.75rem] flex-col justify-center rounded-xl border border-border/40 bg-card/30 px-4 py-4 transition-colors duration-150 hover:border-[var(--amber)]/25 hover:bg-[var(--amber-dim)]/15">
73
73
  <div className="flex items-center gap-2">
74
74
  <span className="shrink-0 text-muted-foreground" aria-hidden>{icon}</span>
75
75
  <h3 className="font-sans text-sm font-medium text-foreground">{label}</h3>
@@ -28,7 +28,7 @@ export default function ExploreContent() {
28
28
  <div className="mb-8">
29
29
  <div className="flex items-center gap-2 mb-3">
30
30
  <div className="w-1 h-5 rounded-full bg-[var(--amber)]" />
31
- <h1 className="text-2xl font-semibold tracking-tight font-display text-foreground">
31
+ <h1 className="text-2xl font-semibold tracking-tight text-foreground">
32
32
  {e.title}
33
33
  </h1>
34
34
  </div>
@@ -37,7 +37,7 @@ export default function UseCaseCard({ icon, image, title, description, prompt, t
37
37
  {icon}
38
38
  </span>
39
39
  <div className="flex-1 min-w-0">
40
- <h3 className="text-sm font-semibold font-display truncate text-foreground" title={title}>
40
+ <h3 className="text-sm font-semibold truncate text-foreground" title={title}>
41
41
  {title}
42
42
  </h3>
43
43
  <p className="text-xs leading-relaxed mt-1 line-clamp-2 text-muted-foreground" title={description}>
@@ -24,8 +24,8 @@ function Section({ id, icon, title, defaultOpen = false, children }: {
24
24
  className="w-full flex items-center gap-3 px-5 py-4 text-left hover:bg-muted/50 transition-colors focus-visible:ring-2 focus-visible:ring-ring"
25
25
  aria-expanded={open}
26
26
  >
27
- <span className="text-[var(--amber)]">{icon}</span>
28
- <span className="text-base font-medium font-display text-foreground flex-1">{title}</span>
27
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)] shrink-0">{icon}</div>
28
+ <span className="text-[13px] font-semibold text-foreground flex-1 tracking-wide">{title}</span>
29
29
  <ChevronDown size={16} className={`text-muted-foreground transition-transform duration-200 ${open ? 'rotate-180' : ''}`} />
30
30
  </button>
31
31
  {open && (
@@ -186,7 +186,7 @@ export default function HelpContent() {
186
186
  <div className="mb-8">
187
187
  <div className="flex items-center gap-2 mb-1">
188
188
  <div className="w-1 h-6 rounded-full bg-[var(--amber)]" />
189
- <h1 className="text-2xl font-bold font-display text-foreground">{h.title}</h1>
189
+ <h1 className="text-2xl font-semibold tracking-tight text-foreground">{h.title}</h1>
190
190
  </div>
191
191
  <p className="text-muted-foreground text-sm ml-3 mt-1">{h.subtitle}</p>
192
192
  </div>