@geminilight/mindos 0.6.72 → 0.6.73

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 (1028) hide show
  1. package/_standalone/.antigravity/mcp_config.json +14 -0
  2. package/_standalone/.mindos-build-version +1 -0
  3. package/_standalone/.next/BUILD_ID +1 -0
  4. package/_standalone/.next/app-path-routes-manifest.json +92 -0
  5. package/_standalone/.next/build-manifest.json +20 -0
  6. package/_standalone/.next/cache/.previewinfo +1 -0
  7. package/_standalone/.next/cache/.rscinfo +1 -0
  8. package/_standalone/.next/cache/config.json +7 -0
  9. package/_standalone/.next/diagnostics/build-diagnostics.json +6 -0
  10. package/_standalone/.next/diagnostics/framework.json +1 -0
  11. package/_standalone/.next/lock +0 -0
  12. package/_standalone/.next/package.json +1 -0
  13. package/_standalone/.next/prerender-manifest.json +65 -0
  14. package/_standalone/.next/react-loadable-manifest.json +179 -0
  15. package/_standalone/.next/required-server-files.json +339 -0
  16. package/_standalone/.next/routes-manifest.json +591 -0
  17. package/_standalone/.next/server/app/.well-known/agent-card.json/route.js +1 -0
  18. package/_standalone/.next/server/app/.well-known/agent-card.json/route.js.nft.json +1 -0
  19. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -0
  20. package/_standalone/.next/server/app/_global-error/page.js +3 -0
  21. package/_standalone/.next/server/app/_global-error/page.js.nft.json +1 -0
  22. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  23. package/_standalone/.next/server/app/_global-error.html +2 -0
  24. package/_standalone/.next/server/app/_global-error.meta +16 -0
  25. package/_standalone/.next/server/app/_global-error.rsc +18 -0
  26. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
  27. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  28. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +4 -0
  29. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  30. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +10 -0
  31. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  32. package/_standalone/.next/server/app/_not-found/page.js +2 -0
  33. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
  34. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  35. package/_standalone/.next/server/app/agents/[agentKey]/page.js +2 -0
  36. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -0
  37. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -0
  38. package/_standalone/.next/server/app/agents/page.js +2 -0
  39. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -0
  40. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -0
  41. package/_standalone/.next/server/app/api/a2a/agents/route.js +1 -0
  42. package/_standalone/.next/server/app/api/a2a/agents/route.js.nft.json +1 -0
  43. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -0
  44. package/_standalone/.next/server/app/api/a2a/delegations/route.js +1 -0
  45. package/_standalone/.next/server/app/api/a2a/delegations/route.js.nft.json +1 -0
  46. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -0
  47. package/_standalone/.next/server/app/api/a2a/discover/route.js +1 -0
  48. package/_standalone/.next/server/app/api/a2a/discover/route.js.nft.json +1 -0
  49. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -0
  50. package/_standalone/.next/server/app/api/a2a/route.js +1 -0
  51. package/_standalone/.next/server/app/api/a2a/route.js.nft.json +1 -0
  52. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -0
  53. package/_standalone/.next/server/app/api/acp/config/route.js +1 -0
  54. package/_standalone/.next/server/app/api/acp/config/route.js.nft.json +1 -0
  55. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -0
  56. package/_standalone/.next/server/app/api/acp/detect/route.js +1 -0
  57. package/_standalone/.next/server/app/api/acp/detect/route.js.nft.json +1 -0
  58. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -0
  59. package/_standalone/.next/server/app/api/acp/install/route.js +1 -0
  60. package/_standalone/.next/server/app/api/acp/install/route.js.nft.json +1 -0
  61. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -0
  62. package/_standalone/.next/server/app/api/acp/registry/route.js +1 -0
  63. package/_standalone/.next/server/app/api/acp/registry/route.js.nft.json +1 -0
  64. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -0
  65. package/_standalone/.next/server/app/api/acp/session/route.js +1 -0
  66. package/_standalone/.next/server/app/api/acp/session/route.js.nft.json +1 -0
  67. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -0
  68. package/_standalone/.next/server/app/api/agent-activity/route.js +1 -0
  69. package/_standalone/.next/server/app/api/agent-activity/route.js.nft.json +1 -0
  70. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -0
  71. package/_standalone/.next/server/app/api/agents/copy-skill/route.js +1 -0
  72. package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -0
  73. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -0
  74. package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -0
  75. package/_standalone/.next/server/app/api/agents/custom/detect/route.js.nft.json +1 -0
  76. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -0
  77. package/_standalone/.next/server/app/api/agents/custom/route.js +1 -0
  78. package/_standalone/.next/server/app/api/agents/custom/route.js.nft.json +1 -0
  79. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -0
  80. package/_standalone/.next/server/app/api/ask/route.js +130 -0
  81. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -0
  82. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -0
  83. package/_standalone/.next/server/app/api/ask-sessions/route.js +1 -0
  84. package/_standalone/.next/server/app/api/ask-sessions/route.js.nft.json +1 -0
  85. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -0
  86. package/_standalone/.next/server/app/api/auth/route.js +1 -0
  87. package/_standalone/.next/server/app/api/auth/route.js.nft.json +1 -0
  88. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -0
  89. package/_standalone/.next/server/app/api/backlinks/route.js +1 -0
  90. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -0
  91. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -0
  92. package/_standalone/.next/server/app/api/bootstrap/route.js +1 -0
  93. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -0
  94. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -0
  95. package/_standalone/.next/server/app/api/changes/route.js +1 -0
  96. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -0
  97. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -0
  98. package/_standalone/.next/server/app/api/channels/verify/route.js +1 -0
  99. package/_standalone/.next/server/app/api/channels/verify/route.js.nft.json +1 -0
  100. package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -0
  101. package/_standalone/.next/server/app/api/connect/route.js +1 -0
  102. package/_standalone/.next/server/app/api/connect/route.js.nft.json +1 -0
  103. package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -0
  104. package/_standalone/.next/server/app/api/embedding/route.js +1 -0
  105. package/_standalone/.next/server/app/api/embedding/route.js.nft.json +1 -0
  106. package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -0
  107. package/_standalone/.next/server/app/api/export/route.js +57 -0
  108. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -0
  109. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -0
  110. package/_standalone/.next/server/app/api/extract-pdf/route.js +3 -0
  111. package/_standalone/.next/server/app/api/extract-pdf/route.js.nft.json +1 -0
  112. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -0
  113. package/_standalone/.next/server/app/api/file/import/route.js +4 -0
  114. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -0
  115. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -0
  116. package/_standalone/.next/server/app/api/file/raw/route.js +1 -0
  117. package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
  118. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
  119. package/_standalone/.next/server/app/api/file/route.js +1 -0
  120. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -0
  121. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -0
  122. package/_standalone/.next/server/app/api/files/route.js +1 -0
  123. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -0
  124. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -0
  125. package/_standalone/.next/server/app/api/git/route.js +1 -0
  126. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -0
  127. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -0
  128. package/_standalone/.next/server/app/api/graph/route.js +1 -0
  129. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -0
  130. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -0
  131. package/_standalone/.next/server/app/api/health/route.js +1 -0
  132. package/_standalone/.next/server/app/api/health/route.js.nft.json +1 -0
  133. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
  134. package/_standalone/.next/server/app/api/im/activity/route.js +1 -0
  135. package/_standalone/.next/server/app/api/im/activity/route.js.nft.json +1 -0
  136. package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -0
  137. package/_standalone/.next/server/app/api/im/config/route.js +1 -0
  138. package/_standalone/.next/server/app/api/im/config/route.js.nft.json +1 -0
  139. package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -0
  140. package/_standalone/.next/server/app/api/im/status/route.js +7 -0
  141. package/_standalone/.next/server/app/api/im/status/route.js.nft.json +1 -0
  142. package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -0
  143. package/_standalone/.next/server/app/api/im/test/route.js +1 -0
  144. package/_standalone/.next/server/app/api/im/test/route.js.nft.json +1 -0
  145. package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -0
  146. package/_standalone/.next/server/app/api/im/webhook/feishu/route.js +7 -0
  147. package/_standalone/.next/server/app/api/im/webhook/feishu/route.js.nft.json +1 -0
  148. package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -0
  149. package/_standalone/.next/server/app/api/im/webhook-status/route.js +7 -0
  150. package/_standalone/.next/server/app/api/im/webhook-status/route.js.nft.json +1 -0
  151. package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -0
  152. package/_standalone/.next/server/app/api/inbox/clip/route.js +8 -0
  153. package/_standalone/.next/server/app/api/inbox/clip/route.js.nft.json +1 -0
  154. package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -0
  155. package/_standalone/.next/server/app/api/inbox/route.js +1 -0
  156. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -0
  157. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
  158. package/_standalone/.next/server/app/api/init/route.js +1 -0
  159. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -0
  160. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -0
  161. package/_standalone/.next/server/app/api/lint/route.js +1 -0
  162. package/_standalone/.next/server/app/api/lint/route.js.nft.json +1 -0
  163. package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -0
  164. package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -0
  165. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -0
  166. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -0
  167. package/_standalone/.next/server/app/api/mcp/direct-tools/route.js +1 -0
  168. package/_standalone/.next/server/app/api/mcp/direct-tools/route.js.nft.json +1 -0
  169. package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -0
  170. package/_standalone/.next/server/app/api/mcp/install/route.js +1 -0
  171. package/_standalone/.next/server/app/api/mcp/install/route.js.nft.json +1 -0
  172. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -0
  173. package/_standalone/.next/server/app/api/mcp/install-skill/route.js +1 -0
  174. package/_standalone/.next/server/app/api/mcp/install-skill/route.js.nft.json +1 -0
  175. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -0
  176. package/_standalone/.next/server/app/api/mcp/restart/route.js +1 -0
  177. package/_standalone/.next/server/app/api/mcp/restart/route.js.nft.json +1 -0
  178. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -0
  179. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -0
  180. package/_standalone/.next/server/app/api/mcp/status/route.js.nft.json +1 -0
  181. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -0
  182. package/_standalone/.next/server/app/api/mcp/tools/route.js +1 -0
  183. package/_standalone/.next/server/app/api/mcp/tools/route.js.nft.json +1 -0
  184. package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -0
  185. package/_standalone/.next/server/app/api/mcp/uninstall/route.js +1 -0
  186. package/_standalone/.next/server/app/api/mcp/uninstall/route.js.nft.json +1 -0
  187. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -0
  188. package/_standalone/.next/server/app/api/monitoring/route.js +1 -0
  189. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -0
  190. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -0
  191. package/_standalone/.next/server/app/api/recent-files/route.js +1 -0
  192. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -0
  193. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -0
  194. package/_standalone/.next/server/app/api/restart/route.js +1 -0
  195. package/_standalone/.next/server/app/api/restart/route.js.nft.json +1 -0
  196. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -0
  197. package/_standalone/.next/server/app/api/search/route.js +1 -0
  198. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -0
  199. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -0
  200. package/_standalone/.next/server/app/api/settings/list-models/route.js +1 -0
  201. package/_standalone/.next/server/app/api/settings/list-models/route.js.nft.json +1 -0
  202. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -0
  203. package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -0
  204. package/_standalone/.next/server/app/api/settings/reset-token/route.js.nft.json +1 -0
  205. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -0
  206. package/_standalone/.next/server/app/api/settings/route.js +1 -0
  207. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
  208. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
  209. package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -0
  210. package/_standalone/.next/server/app/api/settings/test-key/route.js.nft.json +1 -0
  211. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -0
  212. package/_standalone/.next/server/app/api/setup/check-path/route.js +1 -0
  213. package/_standalone/.next/server/app/api/setup/check-path/route.js.nft.json +1 -0
  214. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -0
  215. package/_standalone/.next/server/app/api/setup/check-port/route.js +1 -0
  216. package/_standalone/.next/server/app/api/setup/check-port/route.js.nft.json +1 -0
  217. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -0
  218. package/_standalone/.next/server/app/api/setup/generate-token/route.js +1 -0
  219. package/_standalone/.next/server/app/api/setup/generate-token/route.js.nft.json +1 -0
  220. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -0
  221. package/_standalone/.next/server/app/api/setup/ls/route.js +1 -0
  222. package/_standalone/.next/server/app/api/setup/ls/route.js.nft.json +1 -0
  223. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -0
  224. package/_standalone/.next/server/app/api/setup/route.js +1 -0
  225. package/_standalone/.next/server/app/api/setup/route.js.nft.json +1 -0
  226. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -0
  227. package/_standalone/.next/server/app/api/skills/route.js +6 -0
  228. package/_standalone/.next/server/app/api/skills/route.js.nft.json +1 -0
  229. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  230. package/_standalone/.next/server/app/api/space-overview/route.js +60 -0
  231. package/_standalone/.next/server/app/api/space-overview/route.js.nft.json +1 -0
  232. package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -0
  233. package/_standalone/.next/server/app/api/sync/route.js +1 -0
  234. package/_standalone/.next/server/app/api/sync/route.js.nft.json +1 -0
  235. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -0
  236. package/_standalone/.next/server/app/api/tree-version/route.js +1 -0
  237. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -0
  238. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -0
  239. package/_standalone/.next/server/app/api/uninstall/route.js +4 -0
  240. package/_standalone/.next/server/app/api/uninstall/route.js.nft.json +1 -0
  241. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -0
  242. package/_standalone/.next/server/app/api/update/route.js +1 -0
  243. package/_standalone/.next/server/app/api/update/route.js.nft.json +1 -0
  244. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -0
  245. package/_standalone/.next/server/app/api/update-check/route.js +1 -0
  246. package/_standalone/.next/server/app/api/update-check/route.js.nft.json +1 -0
  247. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -0
  248. package/_standalone/.next/server/app/api/update-status/route.js +1 -0
  249. package/_standalone/.next/server/app/api/update-status/route.js.nft.json +1 -0
  250. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -0
  251. package/_standalone/.next/server/app/api/workflows/route.js +9 -0
  252. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -0
  253. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -0
  254. package/_standalone/.next/server/app/changelog/page.js +2 -0
  255. package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -0
  256. package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -0
  257. package/_standalone/.next/server/app/changes/page.js +2 -0
  258. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -0
  259. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -0
  260. package/_standalone/.next/server/app/echo/[segment]/page.js +158 -0
  261. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -0
  262. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -0
  263. package/_standalone/.next/server/app/echo/page.js +2 -0
  264. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -0
  265. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -0
  266. package/_standalone/.next/server/app/explore/page.js +5 -0
  267. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -0
  268. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -0
  269. package/_standalone/.next/server/app/help/page.js +2 -0
  270. package/_standalone/.next/server/app/help/page.js.nft.json +1 -0
  271. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -0
  272. package/_standalone/.next/server/app/icon.svg/route.js +1 -0
  273. package/_standalone/.next/server/app/icon.svg/route.js.nft.json +1 -0
  274. package/_standalone/.next/server/app/icon.svg.body +37 -0
  275. package/_standalone/.next/server/app/icon.svg.meta +1 -0
  276. package/_standalone/.next/server/app/inbox/history/page.js +2 -0
  277. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
  278. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
  279. package/_standalone/.next/server/app/login/page.js +2 -0
  280. package/_standalone/.next/server/app/login/page.js.nft.json +1 -0
  281. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -0
  282. package/_standalone/.next/server/app/page.js +2 -0
  283. package/_standalone/.next/server/app/page.js.nft.json +1 -0
  284. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -0
  285. package/_standalone/.next/server/app/setup/page.js +2 -0
  286. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -0
  287. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -0
  288. package/_standalone/.next/server/app/trash/page.js +3 -0
  289. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -0
  290. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -0
  291. package/_standalone/.next/server/app/view/[...path]/page.js +13 -0
  292. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -0
  293. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -0
  294. package/_standalone/.next/server/app-paths-manifest.json +92 -0
  295. package/_standalone/.next/server/chunks/1076.js +1 -0
  296. package/_standalone/.next/server/chunks/1104.js +1 -0
  297. package/_standalone/.next/server/chunks/1299.js +133 -0
  298. package/_standalone/.next/server/chunks/1546.js +1 -0
  299. package/_standalone/.next/server/chunks/1549.js +1 -0
  300. package/_standalone/.next/server/chunks/1550.js +1 -0
  301. package/_standalone/.next/server/chunks/206.js +2 -0
  302. package/_standalone/.next/server/chunks/2250.js +38 -0
  303. package/_standalone/.next/server/chunks/2449.js +54 -0
  304. package/_standalone/.next/server/chunks/3036.js +1 -0
  305. package/_standalone/.next/server/chunks/3123.js +3 -0
  306. package/_standalone/.next/server/chunks/3437.js +60 -0
  307. package/_standalone/.next/server/chunks/3445.js +22 -0
  308. package/_standalone/.next/server/chunks/3528.js +1 -0
  309. package/_standalone/.next/server/chunks/3800.js +1 -0
  310. package/_standalone/.next/server/chunks/3965.js +11 -0
  311. package/_standalone/.next/server/chunks/4241.js +1 -0
  312. package/_standalone/.next/server/chunks/5165.js +1 -0
  313. package/_standalone/.next/server/chunks/5299.js +1 -0
  314. package/_standalone/.next/server/chunks/5464.js +9 -0
  315. package/_standalone/.next/server/chunks/5576.js +36 -0
  316. package/_standalone/.next/server/chunks/5592.js +1 -0
  317. package/_standalone/.next/server/chunks/5945.js +1 -0
  318. package/_standalone/.next/server/chunks/6022.js +193 -0
  319. package/_standalone/.next/server/chunks/6117.js +13 -0
  320. package/_standalone/.next/server/chunks/6140.js +1 -0
  321. package/_standalone/.next/server/chunks/6539.js +1 -0
  322. package/_standalone/.next/server/chunks/6949.js +1 -0
  323. package/_standalone/.next/server/chunks/7032.js +1 -0
  324. package/_standalone/.next/server/chunks/7198.js +23 -0
  325. package/_standalone/.next/server/chunks/7712.js +1 -0
  326. package/_standalone/.next/server/chunks/791.js +1 -0
  327. package/_standalone/.next/server/chunks/7948.js +2 -0
  328. package/_standalone/.next/server/chunks/8326.js +1 -0
  329. package/_standalone/.next/server/chunks/8388.js +17 -0
  330. package/_standalone/.next/server/chunks/9503.js +1 -0
  331. package/_standalone/.next/server/chunks/953.js +57 -0
  332. package/_standalone/.next/server/chunks/9938.js +24 -0
  333. package/_standalone/.next/server/functions-config-manifest.json +22 -0
  334. package/_standalone/.next/server/instrumentation.js +1 -0
  335. package/_standalone/.next/server/middleware-build-manifest.js +1 -0
  336. package/_standalone/.next/server/middleware-manifest.json +6 -0
  337. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -0
  338. package/_standalone/.next/server/middleware.js +15 -0
  339. package/_standalone/.next/server/next-font-manifest.js +1 -0
  340. package/_standalone/.next/server/next-font-manifest.json +1 -0
  341. package/_standalone/.next/server/pages/500.html +2 -0
  342. package/_standalone/.next/server/pages-manifest.json +3 -0
  343. package/_standalone/.next/server/server-reference-manifest.js +1 -0
  344. package/_standalone/.next/server/server-reference-manifest.json +1 -0
  345. package/_standalone/.next/server/webpack-runtime.js +1 -0
  346. package/_standalone/.next/static/Dn8EHqUedSzanCfrM8WWS/_buildManifest.js +1 -0
  347. package/_standalone/.next/static/Dn8EHqUedSzanCfrM8WWS/_ssgManifest.js +1 -0
  348. package/_standalone/.next/static/chunks/1239.10a0710c2772ab34.js +1 -0
  349. package/_standalone/.next/static/chunks/1477.33df3cce509578c2.js +1 -0
  350. package/_standalone/.next/static/chunks/1814.8a1fef15856dce84.js +1 -0
  351. package/_standalone/.next/static/chunks/1a258343-9803591e4aaee1f6.js +2 -0
  352. package/_standalone/.next/static/chunks/2631.dc56e83472bde281.js +1 -0
  353. package/_standalone/.next/static/chunks/2647.e0b67d0c432ad7e7.js +18 -0
  354. package/_standalone/.next/static/chunks/2872.045858d00bd8307f.js +8 -0
  355. package/_standalone/.next/static/chunks/2935.a7fdb3a7fb681d61.js +1 -0
  356. package/_standalone/.next/static/chunks/2968.f10ccee9e7e2324d.js +2 -0
  357. package/_standalone/.next/static/chunks/3013-3d4aa69636f4a7bd.js +1 -0
  358. package/_standalone/.next/static/chunks/3523-4e4bb442a2d2f4f5.js +1 -0
  359. package/_standalone/.next/static/chunks/3562-fadd7213646defa8.js +1 -0
  360. package/_standalone/.next/static/chunks/362.2bfa40005767b578.js +2 -0
  361. package/_standalone/.next/static/chunks/363642f4.1ab94f095d889c3a.js +1 -0
  362. package/_standalone/.next/static/chunks/3637.2b2697198968d83f.js +1 -0
  363. package/_standalone/.next/static/chunks/3794-c66343cd6a42366f.js +2 -0
  364. package/_standalone/.next/static/chunks/4033.6666700547b20141.js +1 -0
  365. package/_standalone/.next/static/chunks/4094.09364c01df411380.js +1 -0
  366. package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
  367. package/_standalone/.next/static/chunks/4568-6791c1bc47a63f80.js +1 -0
  368. package/_standalone/.next/static/chunks/4925-6e9a5eb97c10d532.js +1 -0
  369. package/_standalone/.next/static/chunks/4bd1b696-10cb4c9d2844a506.js +1 -0
  370. package/_standalone/.next/static/chunks/516.24ee058b1d4b1fed.js +8 -0
  371. package/_standalone/.next/static/chunks/5331.c89084fd7f67887d.js +48 -0
  372. package/_standalone/.next/static/chunks/5358-15618fc9b20018ee.js +28 -0
  373. package/_standalone/.next/static/chunks/54a60aa6.7a74f547ec1bdd5a.js +79 -0
  374. package/_standalone/.next/static/chunks/5576.c468f41f1126e837.js +9 -0
  375. package/_standalone/.next/static/chunks/5581-c3be891101a3e511.js +29 -0
  376. package/_standalone/.next/static/chunks/5592-85f69f6161d7a028.js +1 -0
  377. package/_standalone/.next/static/chunks/5627.c4337d7289acb31f.js +1 -0
  378. package/_standalone/.next/static/chunks/5956.b445072b35915129.js +1 -0
  379. package/_standalone/.next/static/chunks/6087.e4ec392aa2239719.js +1 -0
  380. package/_standalone/.next/static/chunks/6636-1b6d7047cffa7dbc.js +6 -0
  381. package/_standalone/.next/static/chunks/6826.7b7d94dd0fd83812.js +1 -0
  382. package/_standalone/.next/static/chunks/6902-edc5c487c696bd0b.js +3 -0
  383. package/_standalone/.next/static/chunks/7025-9a4369e5f94b3915.js +1 -0
  384. package/_standalone/.next/static/chunks/70e0d97a.6903b8594c742784.js +1 -0
  385. package/_standalone/.next/static/chunks/7249-b0a9c77b9a84b11c.js +11 -0
  386. package/_standalone/.next/static/chunks/7540-811b466ff82538ac.js +13 -0
  387. package/_standalone/.next/static/chunks/7753.63831cfc54a55fbb.js +1 -0
  388. package/_standalone/.next/static/chunks/8252-888b87f30fde5786.js +1 -0
  389. package/_standalone/.next/static/chunks/8409-de5726a4a278d28f.js +1 -0
  390. package/_standalone/.next/static/chunks/862.9f526e964489e2e5.js +1 -0
  391. package/_standalone/.next/static/chunks/8719-becd06dd739825ea.js +1 -0
  392. package/_standalone/.next/static/chunks/9207-3b19c55a3c974a09.js +1 -0
  393. package/_standalone/.next/static/chunks/9300.118b8c840634383f.js +28 -0
  394. package/_standalone/.next/static/chunks/95247769.3b5caae1c1a76ce1.js +4 -0
  395. package/_standalone/.next/static/chunks/9688-85f7c423a1dce82c.js +1 -0
  396. package/_standalone/.next/static/chunks/9748-3e19c82c77c98c0a.js +1 -0
  397. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-2471b275cd82ff8d.js +1 -0
  398. package/_standalone/.next/static/chunks/app/_global-error/page-2471b275cd82ff8d.js +1 -0
  399. package/_standalone/.next/static/chunks/app/_not-found/page-a4fd983951533d8f.js +1 -0
  400. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-d4d8277433073461.js +1 -0
  401. package/_standalone/.next/static/chunks/app/agents/page-6f021b5bec8169d5.js +1 -0
  402. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-2471b275cd82ff8d.js +1 -0
  403. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-2471b275cd82ff8d.js +1 -0
  404. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-2471b275cd82ff8d.js +1 -0
  405. package/_standalone/.next/static/chunks/app/api/a2a/route-2471b275cd82ff8d.js +1 -0
  406. package/_standalone/.next/static/chunks/app/api/acp/config/route-2471b275cd82ff8d.js +1 -0
  407. package/_standalone/.next/static/chunks/app/api/acp/detect/route-2471b275cd82ff8d.js +1 -0
  408. package/_standalone/.next/static/chunks/app/api/acp/install/route-2471b275cd82ff8d.js +1 -0
  409. package/_standalone/.next/static/chunks/app/api/acp/registry/route-2471b275cd82ff8d.js +1 -0
  410. package/_standalone/.next/static/chunks/app/api/acp/session/route-2471b275cd82ff8d.js +1 -0
  411. package/_standalone/.next/static/chunks/app/api/agent-activity/route-2471b275cd82ff8d.js +1 -0
  412. package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-2471b275cd82ff8d.js +1 -0
  413. package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-2471b275cd82ff8d.js +1 -0
  414. package/_standalone/.next/static/chunks/app/api/agents/custom/route-2471b275cd82ff8d.js +1 -0
  415. package/_standalone/.next/static/chunks/app/api/ask/route-2471b275cd82ff8d.js +1 -0
  416. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-2471b275cd82ff8d.js +1 -0
  417. package/_standalone/.next/static/chunks/app/api/auth/route-2471b275cd82ff8d.js +1 -0
  418. package/_standalone/.next/static/chunks/app/api/backlinks/route-2471b275cd82ff8d.js +1 -0
  419. package/_standalone/.next/static/chunks/app/api/bootstrap/route-2471b275cd82ff8d.js +1 -0
  420. package/_standalone/.next/static/chunks/app/api/changes/route-2471b275cd82ff8d.js +1 -0
  421. package/_standalone/.next/static/chunks/app/api/channels/verify/route-2471b275cd82ff8d.js +1 -0
  422. package/_standalone/.next/static/chunks/app/api/connect/route-2471b275cd82ff8d.js +1 -0
  423. package/_standalone/.next/static/chunks/app/api/embedding/route-2471b275cd82ff8d.js +1 -0
  424. package/_standalone/.next/static/chunks/app/api/export/route-2471b275cd82ff8d.js +1 -0
  425. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-2471b275cd82ff8d.js +1 -0
  426. package/_standalone/.next/static/chunks/app/api/file/import/route-2471b275cd82ff8d.js +1 -0
  427. package/_standalone/.next/static/chunks/app/api/file/raw/route-2471b275cd82ff8d.js +1 -0
  428. package/_standalone/.next/static/chunks/app/api/file/route-2471b275cd82ff8d.js +1 -0
  429. package/_standalone/.next/static/chunks/app/api/files/route-2471b275cd82ff8d.js +1 -0
  430. package/_standalone/.next/static/chunks/app/api/git/route-2471b275cd82ff8d.js +1 -0
  431. package/_standalone/.next/static/chunks/app/api/graph/route-2471b275cd82ff8d.js +1 -0
  432. package/_standalone/.next/static/chunks/app/api/health/route-2471b275cd82ff8d.js +1 -0
  433. package/_standalone/.next/static/chunks/app/api/im/activity/route-2471b275cd82ff8d.js +1 -0
  434. package/_standalone/.next/static/chunks/app/api/im/config/route-2471b275cd82ff8d.js +1 -0
  435. package/_standalone/.next/static/chunks/app/api/im/status/route-2471b275cd82ff8d.js +1 -0
  436. package/_standalone/.next/static/chunks/app/api/im/test/route-2471b275cd82ff8d.js +1 -0
  437. package/_standalone/.next/static/chunks/app/api/im/webhook/feishu/route-2471b275cd82ff8d.js +1 -0
  438. package/_standalone/.next/static/chunks/app/api/im/webhook-status/route-2471b275cd82ff8d.js +1 -0
  439. package/_standalone/.next/static/chunks/app/api/inbox/clip/route-2471b275cd82ff8d.js +1 -0
  440. package/_standalone/.next/static/chunks/app/api/inbox/route-2471b275cd82ff8d.js +1 -0
  441. package/_standalone/.next/static/chunks/app/api/init/route-2471b275cd82ff8d.js +1 -0
  442. package/_standalone/.next/static/chunks/app/api/lint/route-2471b275cd82ff8d.js +1 -0
  443. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-2471b275cd82ff8d.js +1 -0
  444. package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-2471b275cd82ff8d.js +1 -0
  445. package/_standalone/.next/static/chunks/app/api/mcp/install/route-2471b275cd82ff8d.js +1 -0
  446. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-2471b275cd82ff8d.js +1 -0
  447. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-2471b275cd82ff8d.js +1 -0
  448. package/_standalone/.next/static/chunks/app/api/mcp/status/route-2471b275cd82ff8d.js +1 -0
  449. package/_standalone/.next/static/chunks/app/api/mcp/tools/route-2471b275cd82ff8d.js +1 -0
  450. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-2471b275cd82ff8d.js +1 -0
  451. package/_standalone/.next/static/chunks/app/api/monitoring/route-2471b275cd82ff8d.js +1 -0
  452. package/_standalone/.next/static/chunks/app/api/recent-files/route-2471b275cd82ff8d.js +1 -0
  453. package/_standalone/.next/static/chunks/app/api/restart/route-2471b275cd82ff8d.js +1 -0
  454. package/_standalone/.next/static/chunks/app/api/search/route-2471b275cd82ff8d.js +1 -0
  455. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-2471b275cd82ff8d.js +1 -0
  456. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-2471b275cd82ff8d.js +1 -0
  457. package/_standalone/.next/static/chunks/app/api/settings/route-2471b275cd82ff8d.js +1 -0
  458. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-2471b275cd82ff8d.js +1 -0
  459. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-2471b275cd82ff8d.js +1 -0
  460. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-2471b275cd82ff8d.js +1 -0
  461. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-2471b275cd82ff8d.js +1 -0
  462. package/_standalone/.next/static/chunks/app/api/setup/ls/route-2471b275cd82ff8d.js +1 -0
  463. package/_standalone/.next/static/chunks/app/api/setup/route-2471b275cd82ff8d.js +1 -0
  464. package/_standalone/.next/static/chunks/app/api/skills/route-2471b275cd82ff8d.js +1 -0
  465. package/_standalone/.next/static/chunks/app/api/space-overview/route-2471b275cd82ff8d.js +1 -0
  466. package/_standalone/.next/static/chunks/app/api/sync/route-2471b275cd82ff8d.js +1 -0
  467. package/_standalone/.next/static/chunks/app/api/tree-version/route-2471b275cd82ff8d.js +1 -0
  468. package/_standalone/.next/static/chunks/app/api/uninstall/route-2471b275cd82ff8d.js +1 -0
  469. package/_standalone/.next/static/chunks/app/api/update/route-2471b275cd82ff8d.js +1 -0
  470. package/_standalone/.next/static/chunks/app/api/update-check/route-2471b275cd82ff8d.js +1 -0
  471. package/_standalone/.next/static/chunks/app/api/update-status/route-2471b275cd82ff8d.js +1 -0
  472. package/_standalone/.next/static/chunks/app/api/workflows/route-2471b275cd82ff8d.js +1 -0
  473. package/_standalone/.next/static/chunks/app/changelog/page-297e0af14471e935.js +1 -0
  474. package/_standalone/.next/static/chunks/app/changes/page-2471b275cd82ff8d.js +1 -0
  475. package/_standalone/.next/static/chunks/app/echo/[segment]/page-75a6330292613587.js +157 -0
  476. package/_standalone/.next/static/chunks/app/echo/page-2471b275cd82ff8d.js +1 -0
  477. package/_standalone/.next/static/chunks/app/error-fc1491d554a28327.js +1 -0
  478. package/_standalone/.next/static/chunks/app/explore/page-d9f58000bc445360.js +4 -0
  479. package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
  480. package/_standalone/.next/static/chunks/app/help/page-f8cb806371b3175f.js +1 -0
  481. package/_standalone/.next/static/chunks/app/inbox/history/page-26e71fb6f716a4c4.js +1 -0
  482. package/_standalone/.next/static/chunks/app/layout-fcbde5bee626d21a.js +133 -0
  483. package/_standalone/.next/static/chunks/app/loading-2471b275cd82ff8d.js +1 -0
  484. package/_standalone/.next/static/chunks/app/login/page-686d7c84262f2e7c.js +1 -0
  485. package/_standalone/.next/static/chunks/app/page-174dadc481ca9c86.js +1 -0
  486. package/_standalone/.next/static/chunks/app/setup/page-e40f3c5704c3c857.js +1 -0
  487. package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
  488. package/_standalone/.next/static/chunks/app/view/[...path]/error-ec03f5d0a5b93073.js +1 -0
  489. package/_standalone/.next/static/chunks/app/view/[...path]/loading-2471b275cd82ff8d.js +1 -0
  490. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-6e0c75ad26ce8572.js +1 -0
  491. package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
  492. package/_standalone/.next/static/chunks/e71f6c19-4df85185bf989b49.js +1 -0
  493. package/_standalone/.next/static/chunks/framework-a17258b880e6120c.js +1 -0
  494. package/_standalone/.next/static/chunks/main-app-85439cf6d0f88401.js +1 -0
  495. package/_standalone/.next/static/chunks/main-dbbd70b57dd91565.js +5 -0
  496. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-2471b275cd82ff8d.js +1 -0
  497. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-2471b275cd82ff8d.js +1 -0
  498. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-2471b275cd82ff8d.js +1 -0
  499. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2471b275cd82ff8d.js +1 -0
  500. package/_standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  501. package/_standalone/.next/static/chunks/webpack-dc486b68118d1328.js +1 -0
  502. package/_standalone/.next/static/css/86153be34ee0f215.css +1 -0
  503. package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
  504. package/_standalone/.next/static/media/0086f8992871c45b-s.woff2 +0 -0
  505. package/_standalone/.next/static/media/011e180705008d6f-s.woff2 +0 -0
  506. package/_standalone/.next/static/media/03b436aa846269de-s.woff2 +0 -0
  507. package/_standalone/.next/static/media/05a58683eb2ffca7-s.woff2 +0 -0
  508. package/_standalone/.next/static/media/08aedeceaf1dcd57-s.woff2 +0 -0
  509. package/_standalone/.next/static/media/110cbef534704ef8-s.p.woff2 +0 -0
  510. package/_standalone/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  511. package/_standalone/.next/static/media/20535187d867b7b9-s.woff2 +0 -0
  512. package/_standalone/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  513. package/_standalone/.next/static/media/26d4368bf94c0ec4-s.p.woff2 +0 -0
  514. package/_standalone/.next/static/media/2801417b65625cf5-s.woff2 +0 -0
  515. package/_standalone/.next/static/media/28793f5c5e3d822d-s.woff2 +0 -0
  516. package/_standalone/.next/static/media/36008747766f78c6-s.woff2 +0 -0
  517. package/_standalone/.next/static/media/4f19a67e08e18f3c-s.woff2 +0 -0
  518. package/_standalone/.next/static/media/5356a6a4f2c8c8d8-s.woff2 +0 -0
  519. package/_standalone/.next/static/media/58f386aa6b1a2a92-s.woff2 +0 -0
  520. package/_standalone/.next/static/media/5c0c2bcbaa4149ca-s.p.woff2 +0 -0
  521. package/_standalone/.next/static/media/6d38f9d4e0f4772b-s.woff2 +0 -0
  522. package/_standalone/.next/static/media/714ad00c3d008517-s.woff2 +0 -0
  523. package/_standalone/.next/static/media/73cb51aac9c97f90-s.woff2 +0 -0
  524. package/_standalone/.next/static/media/7b19b489dc6743ba-s.woff2 +0 -0
  525. package/_standalone/.next/static/media/7ba5fb2a8c88521c-s.woff2 +0 -0
  526. package/_standalone/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  527. package/_standalone/.next/static/media/92eeb95d069020cc-s.woff2 +0 -0
  528. package/_standalone/.next/static/media/99bbede094da1c3f-s.woff2 +0 -0
  529. package/_standalone/.next/static/media/ab00a911ac2adf48-s.woff2 +0 -0
  530. package/_standalone/.next/static/media/b3bf17a9041d9433-s.woff2 +0 -0
  531. package/_standalone/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  532. package/_standalone/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  533. package/_standalone/.next/static/media/c80eef6a0c97798e-s.woff2 +0 -0
  534. package/_standalone/.next/static/media/c9c3823090ec8b55-s.woff2 +0 -0
  535. package/_standalone/.next/static/media/d26bbd13d6b70f89-s.woff2 +0 -0
  536. package/_standalone/.next/static/media/d2f466e69dd54845-s.woff2 +0 -0
  537. package/_standalone/.next/static/media/d3ebbfd689654d3a-s.p.woff2 +0 -0
  538. package/_standalone/.next/static/media/db96af6b531dc71f-s.p.woff2 +0 -0
  539. package/_standalone/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  540. package/_standalone/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  541. package/_standalone/.next/trace +72 -0
  542. package/_standalone/.next/types/routes.d.ts +158 -0
  543. package/_standalone/.next/types/validator.ts +844 -0
  544. package/_standalone/__tests__/a2a/agent-card.test.ts +60 -0
  545. package/_standalone/__tests__/a2a/client.test.ts +264 -0
  546. package/_standalone/__tests__/a2a/delegation-history.test.ts +133 -0
  547. package/_standalone/__tests__/a2a/orchestrator.test.ts +280 -0
  548. package/_standalone/__tests__/a2a/task-handler.test.ts +86 -0
  549. package/_standalone/__tests__/acp/acp-types.test.ts +273 -0
  550. package/_standalone/__tests__/acp/agent-descriptors.test.ts +284 -0
  551. package/_standalone/__tests__/acp/bridge.test.ts +188 -0
  552. package/_standalone/__tests__/acp/registry.test.ts +193 -0
  553. package/_standalone/__tests__/acp/session.test.ts +466 -0
  554. package/_standalone/__tests__/agent/backend-retry.test.ts +143 -0
  555. package/_standalone/__tests__/agent/chat-mode.test.ts +103 -0
  556. package/_standalone/__tests__/agent/loop-detection.test.ts +85 -0
  557. package/_standalone/__tests__/agent/paragraph-extract.test.ts +76 -0
  558. package/_standalone/__tests__/agent/prompt.test.ts +21 -0
  559. package/_standalone/__tests__/agent/provider-endpoints.test.ts +70 -0
  560. package/_standalone/__tests__/agent/retry-reconnect.test.ts +120 -0
  561. package/_standalone/__tests__/agent/stream-consumer-status.test.ts +103 -0
  562. package/_standalone/__tests__/agent/token-estimation.test.ts +54 -0
  563. package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +181 -0
  564. package/_standalone/__tests__/agents/agents-content-model.test.ts +209 -0
  565. package/_standalone/__tests__/api/ask-attachments.test.ts +194 -0
  566. package/_standalone/__tests__/api/backlinks.test.ts +55 -0
  567. package/_standalone/__tests__/api/bootstrap.test.ts +70 -0
  568. package/_standalone/__tests__/api/changes.test.ts +96 -0
  569. package/_standalone/__tests__/api/channels-verify.test.ts +75 -0
  570. package/_standalone/__tests__/api/check-port.test.ts +100 -0
  571. package/_standalone/__tests__/api/extract-pdf.test.ts +265 -0
  572. package/_standalone/__tests__/api/file.test.ts +423 -0
  573. package/_standalone/__tests__/api/files.test.ts +43 -0
  574. package/_standalone/__tests__/api/git.test.ts +80 -0
  575. package/_standalone/__tests__/api/im-activity.test.ts +36 -0
  576. package/_standalone/__tests__/api/im-config-feishu-conversation.test.ts +103 -0
  577. package/_standalone/__tests__/api/im-webhook-feishu.test.ts +88 -0
  578. package/_standalone/__tests__/api/install-skill.test.ts +283 -0
  579. package/_standalone/__tests__/api/mcp-install.test.ts +400 -0
  580. package/_standalone/__tests__/api/recent-files.test.ts +43 -0
  581. package/_standalone/__tests__/api/retry.test.ts +49 -0
  582. package/_standalone/__tests__/api/search.test.ts +48 -0
  583. package/_standalone/__tests__/api/settings.test.ts +56 -0
  584. package/_standalone/__tests__/api/setup-paths.test.ts +81 -0
  585. package/_standalone/__tests__/api/setup.test.ts +428 -0
  586. package/_standalone/__tests__/api/skills.test.ts +362 -0
  587. package/_standalone/__tests__/api/space-overview.test.ts +79 -0
  588. package/_standalone/__tests__/api/test-key.test.ts +187 -0
  589. package/_standalone/__tests__/ask/ask-content-agent-selection.test.tsx +266 -0
  590. package/_standalone/__tests__/ask/ask-content-attach-menu.test.tsx +205 -0
  591. package/_standalone/__tests__/ask/ask-content-input-during-run.test.tsx +248 -0
  592. package/_standalone/__tests__/ask/auto-reconnect.test.ts +142 -0
  593. package/_standalone/__tests__/ask/message-list-agent-attribution.test.tsx +71 -0
  594. package/_standalone/__tests__/ask/mode-capsule.test.ts +95 -0
  595. package/_standalone/__tests__/ask/non-streaming-api.test.ts +281 -0
  596. package/_standalone/__tests__/ask/save-insight.test.ts +84 -0
  597. package/_standalone/__tests__/ask/save-session.test.ts +73 -0
  598. package/_standalone/__tests__/channel-cli-layers.test.ts +108 -0
  599. package/_standalone/__tests__/channel-cli-subprocess.test.ts +73 -0
  600. package/_standalone/__tests__/channel-command-env.test.ts +82 -0
  601. package/_standalone/__tests__/channel-mgmt.test.js +75 -0
  602. package/_standalone/__tests__/channel-prompts.test.ts +48 -0
  603. package/_standalone/__tests__/cli/agent-routing.test.ts +232 -0
  604. package/_standalone/__tests__/cli/file-subcommands.test.ts +379 -0
  605. package/_standalone/__tests__/compile/compile-incremental.test.ts +103 -0
  606. package/_standalone/__tests__/compile/compile-meta.test.ts +74 -0
  607. package/_standalone/__tests__/compile/compile.test.ts +98 -0
  608. package/_standalone/__tests__/components/UpdateToast.test.ts +344 -0
  609. package/_standalone/__tests__/components/breadcrumb-header-ux.test.ts +14 -0
  610. package/_standalone/__tests__/components/channel-detail-redesign.test.tsx +222 -0
  611. package/_standalone/__tests__/components/header-toc-vertical-alignment.test.ts +23 -0
  612. package/_standalone/__tests__/components/line-diff.test.ts +37 -0
  613. package/_standalone/__tests__/components/search-modal-drag-drop.test.tsx +466 -0
  614. package/_standalone/__tests__/components/table-of-contents-header-layout.test.ts +15 -0
  615. package/_standalone/__tests__/components/view-page-header-layout.test.ts +13 -0
  616. package/_standalone/__tests__/components/view-page-header-scroll-stability.test.ts +34 -0
  617. package/_standalone/__tests__/core/agent-audit-log.test.ts +71 -0
  618. package/_standalone/__tests__/core/api.test.ts +135 -0
  619. package/_standalone/__tests__/core/atomic-append.test.ts +47 -0
  620. package/_standalone/__tests__/core/backlinks.test.ts +72 -0
  621. package/_standalone/__tests__/core/bm25-search.test.ts +78 -0
  622. package/_standalone/__tests__/core/chinese-segmentation.test.ts +69 -0
  623. package/_standalone/__tests__/core/config.test.ts +101 -0
  624. package/_standalone/__tests__/core/content-changes.test.ts +131 -0
  625. package/_standalone/__tests__/core/context.test.ts +50 -0
  626. package/_standalone/__tests__/core/create-space.test.ts +39 -0
  627. package/_standalone/__tests__/core/csv.test.ts +49 -0
  628. package/_standalone/__tests__/core/detect-agents.test.ts +139 -0
  629. package/_standalone/__tests__/core/errors.test.ts +119 -0
  630. package/_standalone/__tests__/core/file-convert.test.ts +148 -0
  631. package/_standalone/__tests__/core/fs-ops.test.ts +162 -0
  632. package/_standalone/__tests__/core/helpers.ts +35 -0
  633. package/_standalone/__tests__/core/hybrid-search.test.ts +109 -0
  634. package/_standalone/__tests__/core/inbox-url-utils.test.ts +37 -0
  635. package/_standalone/__tests__/core/inbox.test.ts +418 -0
  636. package/_standalone/__tests__/core/jwt.test.ts +62 -0
  637. package/_standalone/__tests__/core/lines.test.ts +148 -0
  638. package/_standalone/__tests__/core/link-index.test.ts +107 -0
  639. package/_standalone/__tests__/core/list-spaces.test.ts +45 -0
  640. package/_standalone/__tests__/core/metrics.test.ts +103 -0
  641. package/_standalone/__tests__/core/organize.test.ts +90 -0
  642. package/_standalone/__tests__/core/request-scoped-tools.test.ts +19 -0
  643. package/_standalone/__tests__/core/resolve-script.test.ts +115 -0
  644. package/_standalone/__tests__/core/search-index.test.ts +239 -0
  645. package/_standalone/__tests__/core/search.test.ts +68 -0
  646. package/_standalone/__tests__/core/security.test.ts +85 -0
  647. package/_standalone/__tests__/core/skill-install-logic.test.ts +230 -0
  648. package/_standalone/__tests__/core/space-aware-tree.test.ts +162 -0
  649. package/_standalone/__tests__/core/space-scaffold.test.ts +120 -0
  650. package/_standalone/__tests__/core/sync-status.test.ts +121 -0
  651. package/_standalone/__tests__/core/sync.test.ts +354 -0
  652. package/_standalone/__tests__/core/tools.test.ts +339 -0
  653. package/_standalone/__tests__/core/tree-async.test.ts +43 -0
  654. package/_standalone/__tests__/core/tree.test.ts +160 -0
  655. package/_standalone/__tests__/core/web-clip.test.ts +229 -0
  656. package/_standalone/__tests__/hooks/useAiOrganize.test.ts +633 -0
  657. package/_standalone/__tests__/hooks/useMention.test.ts +92 -0
  658. package/_standalone/__tests__/hooks/useSlashCommand.test.ts +152 -0
  659. package/_standalone/__tests__/im/activity.test.ts +74 -0
  660. package/_standalone/__tests__/im/config.test.ts +114 -0
  661. package/_standalone/__tests__/im/dingtalk.test.ts +23 -0
  662. package/_standalone/__tests__/im/feishu-conversation-processing.test.ts +96 -0
  663. package/_standalone/__tests__/im/feishu-webhook.test.ts +159 -0
  664. package/_standalone/__tests__/im/format.test.ts +134 -0
  665. package/_standalone/__tests__/im/qq.test.ts +23 -0
  666. package/_standalone/__tests__/im/types.test.ts +97 -0
  667. package/_standalone/__tests__/im/wechat.test.ts +23 -0
  668. package/_standalone/__tests__/integration/drag-drop-format-verification.test.ts +289 -0
  669. package/_standalone/__tests__/integration/search-askcontent-drag-drop.test.tsx +565 -0
  670. package/_standalone/__tests__/lib/ask-agent.test.ts +84 -0
  671. package/_standalone/__tests__/lib/daily-echo-aggregation.test.ts +225 -0
  672. package/_standalone/__tests__/lib/daily-echo-config.test.ts +254 -0
  673. package/_standalone/__tests__/lib/daily-echo-prompts.test.ts +236 -0
  674. package/_standalone/__tests__/lib/daily-echo-snapshot.test.ts +86 -0
  675. package/_standalone/__tests__/lib/daily-echo-storage.test.ts +392 -0
  676. package/_standalone/__tests__/lib/echo-insight-prompt.test.ts +57 -0
  677. package/_standalone/__tests__/lib/echo-pages-visual-i18n.test.ts +31 -0
  678. package/_standalone/__tests__/lib/echo-segments.test.ts +48 -0
  679. package/_standalone/__tests__/lib/explore-use-cases.test.ts +70 -0
  680. package/_standalone/__tests__/lib/i18n-new-keys.test.ts +153 -0
  681. package/_standalone/__tests__/lib/mcp-snippets.test.ts +163 -0
  682. package/_standalone/__tests__/lib/mindos-copy-alignment.test.ts +36 -0
  683. package/_standalone/__tests__/lib/pi-extensions.test.ts +42 -0
  684. package/_standalone/__tests__/lib/pi-skills.test.ts +117 -0
  685. package/_standalone/__tests__/lib/session-store.test.ts +58 -0
  686. package/_standalone/__tests__/lib/settings-ai-client.test.ts +93 -0
  687. package/_standalone/__tests__/lib/walkthrough-steps.test.ts +25 -0
  688. package/_standalone/__tests__/lib/web-search.test.ts +141 -0
  689. package/_standalone/__tests__/lint/lint.test.ts +257 -0
  690. package/_standalone/__tests__/middleware.test.ts +112 -0
  691. package/_standalone/__tests__/obsidian-compat/command-registry.test.ts +56 -0
  692. package/_standalone/__tests__/obsidian-compat/component-plugin.test.ts +130 -0
  693. package/_standalone/__tests__/obsidian-compat/integration.test.ts +160 -0
  694. package/_standalone/__tests__/obsidian-compat/loader.test.ts +130 -0
  695. package/_standalone/__tests__/obsidian-compat/manifest.test.ts +58 -0
  696. package/_standalone/__tests__/obsidian-compat/plugin-manager.test.ts +112 -0
  697. package/_standalone/__tests__/obsidian-compat/ui.test.ts +71 -0
  698. package/_standalone/__tests__/obsidian-compat/vault.test.ts +93 -0
  699. package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +66 -0
  700. package/_standalone/__tests__/panels/search-panel-drag-drop.test.tsx +259 -0
  701. package/_standalone/__tests__/renderers/csv-core-builtin.test.ts +11 -0
  702. package/_standalone/__tests__/renderers/plugin-renderers-filtering.test.ts +49 -0
  703. package/_standalone/__tests__/renderers/renderer-surface-classification.test.ts +45 -0
  704. package/_standalone/__tests__/renderers/workflow-yaml-execution.test.ts +232 -0
  705. package/_standalone/__tests__/renderers/workflow-yaml-parser.test.ts +181 -0
  706. package/_standalone/__tests__/renderers/workflow-yaml-serializer.test.ts +64 -0
  707. package/_standalone/__tests__/settings/activity-bar-rail-navigation.test.tsx +178 -0
  708. package/_standalone/__tests__/settings/activity-bar-update-badge.test.tsx +91 -0
  709. package/_standalone/__tests__/settings/settings-update-badge.test.tsx +134 -0
  710. package/_standalone/__tests__/settings/update-tab-availability-sync.test.tsx +115 -0
  711. package/_standalone/__tests__/settings/update-tab-browser.test.tsx +159 -0
  712. package/_standalone/__tests__/settings/update-tab-desktop.test.tsx +169 -0
  713. package/_standalone/__tests__/setup.ts +100 -0
  714. package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +27 -0
  715. package/_standalone/app/globals.css +534 -0
  716. package/_standalone/app/icon.svg +37 -0
  717. package/_standalone/components/ActivityBar.tsx +293 -0
  718. package/_standalone/components/AskFab.tsx +57 -0
  719. package/_standalone/components/AskModal.tsx +48 -0
  720. package/_standalone/components/Backlinks.tsx +75 -0
  721. package/_standalone/components/Breadcrumb.tsx +72 -0
  722. package/_standalone/components/CreateSpaceModal.tsx +235 -0
  723. package/_standalone/components/CsvView.tsx +346 -0
  724. package/_standalone/components/CustomSelect.tsx +256 -0
  725. package/_standalone/components/DirPicker.tsx +217 -0
  726. package/_standalone/components/EchoSpotlight.tsx +115 -0
  727. package/_standalone/components/Editor.tsx +242 -0
  728. package/_standalone/components/EditorWrapper.tsx +17 -0
  729. package/_standalone/components/ExportModal.tsx +223 -0
  730. package/_standalone/components/FileTree.tsx +619 -0
  731. package/_standalone/components/FindInPage.tsx +211 -0
  732. package/_standalone/components/GuideCard.tsx +358 -0
  733. package/_standalone/components/ImportModal.tsx +521 -0
  734. package/_standalone/components/JsonView.tsx +23 -0
  735. package/_standalone/components/KeyboardShortcuts.tsx +102 -0
  736. package/_standalone/components/Logo.tsx +39 -0
  737. package/_standalone/components/MarkdownEditor.tsx +94 -0
  738. package/_standalone/components/MarkdownView.tsx +192 -0
  739. package/_standalone/components/OnboardingView.tsx +164 -0
  740. package/_standalone/components/OrganizeToast.tsx +543 -0
  741. package/_standalone/components/Panel.tsx +385 -0
  742. package/_standalone/components/QuickSuggestion.tsx +69 -0
  743. package/_standalone/components/RightAgentDetailPanel.tsx +125 -0
  744. package/_standalone/components/RightAskPanel.tsx +174 -0
  745. package/_standalone/components/SearchModal.tsx +446 -0
  746. package/_standalone/components/SettingsModal.tsx +30 -0
  747. package/_standalone/components/Sidebar.tsx +190 -0
  748. package/_standalone/components/SidebarLayout.tsx +713 -0
  749. package/_standalone/components/SpaceInitToast.tsx +173 -0
  750. package/_standalone/components/SyncStatusBar.tsx +294 -0
  751. package/_standalone/components/SystemPulse.tsx +216 -0
  752. package/_standalone/components/TableOfContents.tsx +207 -0
  753. package/_standalone/components/ThemeToggle.tsx +36 -0
  754. package/_standalone/components/WysiwygEditor.tsx +165 -0
  755. package/_standalone/components/agents/AcpRegistrySection.tsx +457 -0
  756. package/_standalone/components/agents/ActivitySection.tsx +35 -0
  757. package/_standalone/components/agents/AgentActivitySection.tsx +225 -0
  758. package/_standalone/components/agents/AgentsContentChannelDetail.tsx +815 -0
  759. package/_standalone/components/agents/AgentsContentChannels.tsx +150 -0
  760. package/_standalone/components/agents/AgentsMcpSection.tsx +568 -0
  761. package/_standalone/components/agents/AgentsOverviewSection.tsx +488 -0
  762. package/_standalone/components/agents/AgentsPanelA2aTab.tsx +298 -0
  763. package/_standalone/components/agents/AgentsPanelSessionsTab.tsx +171 -0
  764. package/_standalone/components/agents/AgentsPrimitives.tsx +360 -0
  765. package/_standalone/components/agents/AgentsSkillsByAgent.tsx +231 -0
  766. package/_standalone/components/agents/AgentsSkillsSection.tsx +655 -0
  767. package/_standalone/components/agents/CustomAgentModal.tsx +691 -0
  768. package/_standalone/components/agents/DiscoverAgentModal.tsx +149 -0
  769. package/_standalone/components/agents/EnvPermSection.tsx +82 -0
  770. package/_standalone/components/agents/KnowledgeInteractionSection.tsx +241 -0
  771. package/_standalone/components/agents/RecentActivityFeed.tsx +137 -0
  772. package/_standalone/components/agents/RuntimeDiagSection.tsx +93 -0
  773. package/_standalone/components/agents/SkillDetailPopover.tsx +584 -0
  774. package/_standalone/components/agents/agent-activity-shared.tsx +110 -0
  775. package/_standalone/components/agents/agent-detail-primitives.tsx +43 -0
  776. package/_standalone/components/ask/AgentSelectorCapsule.tsx +218 -0
  777. package/_standalone/components/ask/AskContent.tsx +849 -0
  778. package/_standalone/components/ask/AskHeader.tsx +279 -0
  779. package/_standalone/components/ask/FileChip.tsx +181 -0
  780. package/_standalone/components/ask/HighlightMatch.tsx +14 -0
  781. package/_standalone/components/ask/MentionPopover.tsx +92 -0
  782. package/_standalone/components/ask/MessageList.tsx +371 -0
  783. package/_standalone/components/ask/ModeCapsule.tsx +180 -0
  784. package/_standalone/components/ask/ProviderModelCapsule.tsx +589 -0
  785. package/_standalone/components/ask/SaveInsightInline.tsx +286 -0
  786. package/_standalone/components/ask/SaveSessionInline.tsx +491 -0
  787. package/_standalone/components/ask/SessionHistory.tsx +164 -0
  788. package/_standalone/components/ask/SessionHistoryPanel.tsx +398 -0
  789. package/_standalone/components/ask/SessionTabBar.tsx +78 -0
  790. package/_standalone/components/ask/SlashCommandPopover.tsx +82 -0
  791. package/_standalone/components/ask/ThinkingBlock.tsx +56 -0
  792. package/_standalone/components/ask/ToolCallBlock.tsx +187 -0
  793. package/_standalone/components/ask/save-insight-utils.ts +101 -0
  794. package/_standalone/components/changes/ChangesBanner.tsx +145 -0
  795. package/_standalone/components/changes/ChangesContentPage.tsx +540 -0
  796. package/_standalone/components/echo/DailyEcho/DailyEchoReportButton.tsx +88 -0
  797. package/_standalone/components/echo/DailyEcho/DailyEchoReportDrawer.tsx +129 -0
  798. package/_standalone/components/echo/DailyEcho/sections/DailyEchoAlignmentSection.tsx +76 -0
  799. package/_standalone/components/echo/DailyEcho/sections/DailyEchoReflectionSection.tsx +37 -0
  800. package/_standalone/components/echo/DailyEcho/sections/DailyEchoSnapshotSection.tsx +39 -0
  801. package/_standalone/components/echo/DailyEcho/sections/DailyEchoThemesSection.tsx +44 -0
  802. package/_standalone/components/echo/EchoHero.tsx +35 -0
  803. package/_standalone/components/echo/EchoInsightCollapsible.tsx +197 -0
  804. package/_standalone/components/echo/EchoPageSections.tsx +51 -0
  805. package/_standalone/components/echo/EchoSegmentNav.tsx +57 -0
  806. package/_standalone/components/explore/UseCaseCard.tsx +56 -0
  807. package/_standalone/components/explore/use-cases.generated.ts +76 -0
  808. package/_standalone/components/explore/use-cases.yaml +185 -0
  809. package/_standalone/components/file-tree/FileTreeContextMenus.tsx +160 -0
  810. package/_standalone/components/home/InboxSection.tsx +707 -0
  811. package/_standalone/components/panels/AgentsPanel.tsx +203 -0
  812. package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +191 -0
  813. package/_standalone/components/panels/AgentsPanelAgentGroups.tsx +113 -0
  814. package/_standalone/components/panels/AgentsPanelAgentListRow.tsx +133 -0
  815. package/_standalone/components/panels/AgentsPanelHubNav.tsx +76 -0
  816. package/_standalone/components/panels/DiscoverPanel.tsx +212 -0
  817. package/_standalone/components/panels/EchoPanel.tsx +49 -0
  818. package/_standalone/components/panels/EchoSidebarStats.tsx +136 -0
  819. package/_standalone/components/panels/IMChannelsView.tsx +114 -0
  820. package/_standalone/components/panels/ImportHistoryPanel.tsx +195 -0
  821. package/_standalone/components/panels/PanelHeader.tsx +35 -0
  822. package/_standalone/components/panels/PanelNavRow.tsx +77 -0
  823. package/_standalone/components/panels/PluginsPanel.tsx +168 -0
  824. package/_standalone/components/panels/SearchPanel.tsx +283 -0
  825. package/_standalone/components/panels/SyncPopover.tsx +105 -0
  826. package/_standalone/components/panels/WorkflowsPanel.tsx +206 -0
  827. package/_standalone/components/panels/agents-panel-resolve-status.ts +13 -0
  828. package/_standalone/components/renderers/agent-inspector/AgentInspectorRenderer.tsx +322 -0
  829. package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
  830. package/_standalone/components/renderers/backlinks/BacklinksRenderer.tsx +147 -0
  831. package/_standalone/components/renderers/change-log/ChangeLogRenderer.tsx +472 -0
  832. package/_standalone/components/renderers/config/ConfigRenderer.tsx +236 -0
  833. package/_standalone/components/renderers/csv/BoardView.tsx +146 -0
  834. package/_standalone/components/renderers/csv/ConfigPanel.tsx +119 -0
  835. package/_standalone/components/renderers/csv/CsvRenderer.tsx +70 -0
  836. package/_standalone/components/renderers/csv/EditableCell.tsx +43 -0
  837. package/_standalone/components/renderers/csv/GalleryView.tsx +40 -0
  838. package/_standalone/components/renderers/csv/TableView.tsx +163 -0
  839. package/_standalone/components/renderers/csv/types.ts +87 -0
  840. package/_standalone/components/renderers/graph/GraphRenderer.tsx +427 -0
  841. package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
  842. package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
  843. package/_standalone/components/renderers/summary/SummaryRenderer.tsx +226 -0
  844. package/_standalone/components/renderers/timeline/TimelineRenderer.tsx +213 -0
  845. package/_standalone/components/renderers/todo/FilterBar.tsx +106 -0
  846. package/_standalone/components/renderers/todo/SectionCard.tsx +354 -0
  847. package/_standalone/components/renderers/todo/TodoRenderer.tsx +137 -0
  848. package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
  849. package/_standalone/components/renderers/workflow-yaml/StepEditor.tsx +164 -0
  850. package/_standalone/components/renderers/workflow-yaml/WorkflowEditor.tsx +201 -0
  851. package/_standalone/components/renderers/workflow-yaml/WorkflowRunner.tsx +282 -0
  852. package/_standalone/components/renderers/workflow-yaml/WorkflowYamlRenderer.tsx +126 -0
  853. package/_standalone/components/renderers/workflow-yaml/execution.ts +229 -0
  854. package/_standalone/components/renderers/workflow-yaml/index.ts +6 -0
  855. package/_standalone/components/renderers/workflow-yaml/parser.ts +172 -0
  856. package/_standalone/components/renderers/workflow-yaml/selectors.tsx +574 -0
  857. package/_standalone/components/renderers/workflow-yaml/serializer.ts +56 -0
  858. package/_standalone/components/renderers/workflow-yaml/types.ts +46 -0
  859. package/_standalone/components/settings/AiTab.tsx +610 -0
  860. package/_standalone/components/settings/AppearanceTab.tsx +268 -0
  861. package/_standalone/components/settings/CustomProviderFields.tsx +121 -0
  862. package/_standalone/components/settings/CustomProvidersCard.tsx +154 -0
  863. package/_standalone/components/settings/DesktopUpdateCards.tsx +517 -0
  864. package/_standalone/components/settings/KnowledgeTab.tsx +719 -0
  865. package/_standalone/components/settings/McpAgentInstall.tsx +280 -0
  866. package/_standalone/components/settings/McpConnectGuides.tsx +439 -0
  867. package/_standalone/components/settings/McpExternalTools.tsx +252 -0
  868. package/_standalone/components/settings/McpPortSection.tsx +207 -0
  869. package/_standalone/components/settings/McpSkillCreateForm.tsx +177 -0
  870. package/_standalone/components/settings/McpSkillRow.tsx +144 -0
  871. package/_standalone/components/settings/McpSkillsSection.tsx +460 -0
  872. package/_standalone/components/settings/McpTab.tsx +310 -0
  873. package/_standalone/components/settings/MonitoringTab.tsx +202 -0
  874. package/_standalone/components/settings/PluginsTab.tsx +75 -0
  875. package/_standalone/components/settings/Primitives.tsx +325 -0
  876. package/_standalone/components/settings/ProviderModal.tsx +87 -0
  877. package/_standalone/components/settings/SettingsContent.tsx +437 -0
  878. package/_standalone/components/settings/ShortcutsTab.tsx +20 -0
  879. package/_standalone/components/settings/SyncEmptyState.tsx +233 -0
  880. package/_standalone/components/settings/SyncTab.tsx +556 -0
  881. package/_standalone/components/settings/TestButton.tsx +65 -0
  882. package/_standalone/components/settings/UninstallTab.tsx +169 -0
  883. package/_standalone/components/settings/UpdateTab.tsx +362 -0
  884. package/_standalone/components/settings/WebPortSection.tsx +263 -0
  885. package/_standalone/components/settings/types.ts +210 -0
  886. package/_standalone/components/settings/useCustomProviderForm.ts +132 -0
  887. package/_standalone/components/setup/StepAI.tsx +217 -0
  888. package/_standalone/components/setup/StepAgents.tsx +324 -0
  889. package/_standalone/components/setup/StepDots.tsx +51 -0
  890. package/_standalone/components/setup/StepKB.tsx +263 -0
  891. package/_standalone/components/setup/StepPorts.tsx +121 -0
  892. package/_standalone/components/setup/StepReview.tsx +414 -0
  893. package/_standalone/components/setup/StepSecurity.tsx +77 -0
  894. package/_standalone/components/setup/constants.tsx +14 -0
  895. package/_standalone/components/setup/types.ts +61 -0
  896. package/_standalone/components/shared/ModelInput.tsx +220 -0
  897. package/_standalone/components/shared/ProviderSelect.tsx +224 -0
  898. package/_standalone/components/ui/button.tsx +60 -0
  899. package/_standalone/components/ui/dialog.tsx +157 -0
  900. package/_standalone/components/ui/input.tsx +20 -0
  901. package/_standalone/components/ui/scroll-area.tsx +55 -0
  902. package/_standalone/components/ui/toggle.tsx +44 -0
  903. package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +266 -0
  904. package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +131 -0
  905. package/_standalone/components/walkthrough/index.ts +3 -0
  906. package/_standalone/components/walkthrough/steps.ts +23 -0
  907. package/_standalone/components.json +25 -0
  908. package/_standalone/eslint.config.mjs +18 -0
  909. package/_standalone/hooks/useA2aRegistry.ts +58 -0
  910. package/_standalone/hooks/useAcpConfig.ts +96 -0
  911. package/_standalone/hooks/useAcpDetection.ts +126 -0
  912. package/_standalone/hooks/useAcpRegistry.ts +86 -0
  913. package/_standalone/hooks/useAiOrganize.ts +464 -0
  914. package/_standalone/hooks/useAskChat.ts +339 -0
  915. package/_standalone/hooks/useAskModal.ts +51 -0
  916. package/_standalone/hooks/useAskPanel.ts +164 -0
  917. package/_standalone/hooks/useAskSession.ts +310 -0
  918. package/_standalone/hooks/useComposerVerticalResize.ts +74 -0
  919. package/_standalone/hooks/useDelegationHistory.ts +49 -0
  920. package/_standalone/hooks/useEditorImageUpload.ts +113 -0
  921. package/_standalone/hooks/useFileImport.ts +233 -0
  922. package/_standalone/hooks/useFileUpload.ts +206 -0
  923. package/_standalone/hooks/useImageUpload.ts +153 -0
  924. package/_standalone/hooks/useLeftPanel.ts +81 -0
  925. package/_standalone/hooks/useMention.ts +108 -0
  926. package/_standalone/hooks/useResizeDrag.ts +84 -0
  927. package/_standalone/hooks/useSettingsAiAvailable.ts +35 -0
  928. package/_standalone/hooks/useSlashCommand.ts +128 -0
  929. package/_standalone/instrumentation.ts +60 -0
  930. package/_standalone/lib/a2a/index.ts +31 -0
  931. package/_standalone/lib/acp/bridge.ts +144 -0
  932. package/_standalone/lib/acp/index.ts +38 -0
  933. package/_standalone/lib/acp/types.ts +247 -0
  934. package/_standalone/lib/agent/diff-worker.ts +51 -0
  935. package/_standalone/lib/agent/file-context.ts +116 -0
  936. package/_standalone/lib/agent/index.ts +8 -0
  937. package/_standalone/lib/agent/stream-consumer.ts +231 -0
  938. package/_standalone/lib/api/request-utils.ts +57 -0
  939. package/_standalone/lib/api.ts +83 -0
  940. package/_standalone/lib/ask-agent.ts +46 -0
  941. package/_standalone/lib/clipboard.ts +29 -0
  942. package/_standalone/lib/config/animation.ts +76 -0
  943. package/_standalone/lib/config/icon-scale.ts +35 -0
  944. package/_standalone/lib/config/panel-sizes.ts +58 -0
  945. package/_standalone/lib/core/types.ts +53 -0
  946. package/_standalone/lib/daily-echo/aggregator.ts +149 -0
  947. package/_standalone/lib/daily-echo/ask-llm.ts +77 -0
  948. package/_standalone/lib/daily-echo/config.ts +72 -0
  949. package/_standalone/lib/daily-echo/generator.ts +192 -0
  950. package/_standalone/lib/daily-echo/prompts.ts +200 -0
  951. package/_standalone/lib/daily-echo/snapshot.ts +19 -0
  952. package/_standalone/lib/daily-echo/types.ts +340 -0
  953. package/_standalone/lib/db/daily-echo-db.ts +194 -0
  954. package/_standalone/lib/echo-insight-prompt.ts +38 -0
  955. package/_standalone/lib/hooks/useDirectoryDragDrop.ts +94 -0
  956. package/_standalone/lib/hooks/useFocusTrap.ts +65 -0
  957. package/_standalone/lib/hooks/usePinnedFiles.ts +95 -0
  958. package/_standalone/lib/i18n/_core.ts +22 -0
  959. package/_standalone/lib/im/adapters/dingtalk.ts +210 -0
  960. package/_standalone/lib/im/adapters/discord.ts +128 -0
  961. package/_standalone/lib/im/adapters/feishu.ts +248 -0
  962. package/_standalone/lib/im/adapters/qq.ts +176 -0
  963. package/_standalone/lib/im/adapters/slack.ts +150 -0
  964. package/_standalone/lib/im/adapters/telegram.ts +156 -0
  965. package/_standalone/lib/im/adapters/wechat.ts +127 -0
  966. package/_standalone/lib/im/adapters/wecom.ts +160 -0
  967. package/_standalone/lib/im/index.ts +122 -0
  968. package/_standalone/lib/im/platforms.ts +152 -0
  969. package/_standalone/lib/image.ts +47 -0
  970. package/_standalone/lib/inbox-upload.ts +260 -0
  971. package/_standalone/lib/mcp-snippets.ts +107 -0
  972. package/_standalone/lib/obsidian-compat/command-registry.ts +85 -0
  973. package/_standalone/lib/obsidian-compat/component.ts +84 -0
  974. package/_standalone/lib/obsidian-compat/errors.ts +27 -0
  975. package/_standalone/lib/obsidian-compat/events.ts +50 -0
  976. package/_standalone/lib/obsidian-compat/index.ts +18 -0
  977. package/_standalone/lib/obsidian-compat/loader.ts +225 -0
  978. package/_standalone/lib/obsidian-compat/manifest.ts +90 -0
  979. package/_standalone/lib/obsidian-compat/plugin-manager.ts +149 -0
  980. package/_standalone/lib/obsidian-compat/shims/app.ts +74 -0
  981. package/_standalone/lib/obsidian-compat/shims/metadata-cache.ts +125 -0
  982. package/_standalone/lib/obsidian-compat/shims/obsidian.ts +25 -0
  983. package/_standalone/lib/obsidian-compat/shims/plugin.ts +111 -0
  984. package/_standalone/lib/obsidian-compat/shims/settings.ts +173 -0
  985. package/_standalone/lib/obsidian-compat/shims/ui.ts +73 -0
  986. package/_standalone/lib/obsidian-compat/shims/vault.ts +247 -0
  987. package/_standalone/lib/obsidian-compat/types.ts +197 -0
  988. package/_standalone/lib/organize-history.ts +80 -0
  989. package/_standalone/lib/parsing/parse-todos.ts +325 -0
  990. package/_standalone/lib/pdf-extract.ts +37 -0
  991. package/_standalone/lib/pi-integration/session-store.ts +62 -0
  992. package/_standalone/lib/renderers/useRendererState.ts +114 -0
  993. package/_standalone/lib/settings-ai-client.ts +36 -0
  994. package/_standalone/lib/space-ai-init.ts +66 -0
  995. package/_standalone/lib/stores/McpStoreInit.tsx +18 -0
  996. package/_standalone/lib/stores/WalkthroughInit.tsx +20 -0
  997. package/_standalone/lib/stores/hidden-files.ts +43 -0
  998. package/_standalone/lib/stores/locale-store.ts +69 -0
  999. package/_standalone/lib/stores/mcp-store.ts +166 -0
  1000. package/_standalone/lib/stores/walkthrough-store.ts +150 -0
  1001. package/_standalone/lib/toast.ts +85 -0
  1002. package/_standalone/lib/utils.ts +45 -0
  1003. package/_standalone/next-env.d.ts +6 -0
  1004. package/_standalone/next.config.ts +44 -0
  1005. package/_standalone/package-lock.json +18646 -0
  1006. package/_standalone/package.json +104 -0
  1007. package/_standalone/postcss.config.mjs +7 -0
  1008. package/_standalone/proxy.ts +88 -0
  1009. package/_standalone/public/file.svg +1 -0
  1010. package/_standalone/public/globe.svg +1 -0
  1011. package/_standalone/public/icons/icon-192.png +0 -0
  1012. package/_standalone/public/icons/icon-512.png +0 -0
  1013. package/_standalone/public/logo-square.svg +37 -0
  1014. package/_standalone/public/logo.svg +37 -0
  1015. package/_standalone/public/manifest.json +26 -0
  1016. package/_standalone/public/next.svg +1 -0
  1017. package/_standalone/public/sw.js +66 -0
  1018. package/_standalone/public/vercel.svg +1 -0
  1019. package/_standalone/public/window.svg +1 -0
  1020. package/_standalone/scripts/extract-pdf.cjs +163 -0
  1021. package/_standalone/scripts/generate-explore.ts +145 -0
  1022. package/_standalone/server.js +38 -0
  1023. package/_standalone/tsconfig.json +34 -0
  1024. package/_standalone/tsconfig.tsbuildinfo +1 -0
  1025. package/_standalone/types/semver.d.ts +8 -0
  1026. package/_standalone/vitest.config.ts +14 -0
  1027. package/app/package.json +1 -1
  1028. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5331],{439:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]])},5331:(e,t,s)=>{s.r(t),s.d(t,{default:()=>tu});var r=s(95155),a=s(12115),n=s(86901),l=s(68806),o=s(89363),i=s(90425);let d=(0,i.A)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]);var c=s(91958),u=s(6962),m=s(68459),x=s(13545),p=s(6296),h=s(9199),g=s(12651),b=s(33210),f=s(94961),v=s(73321),j=s(35581),y=s(22356),N=s(22164),k=s(49619),w=s(92972),S=s(20171),C=s(47376),A=s(51842),z=s(79704),T=s(60112);function M({form:e,t,locale:s,layout:a="full"}){let n=C.T_[e.protocol],l="zh"===s?"名称":"Name",o="zh"===s?"协议":"Protocol",i="zh"===s?"输入名称":"Enter name",d=e.isDuplicateName?"zh"===s?"名称已存在":"Name already exists":void 0;return(0,r.jsxs)("div",{className:"space-y-3",children:["compact"===a?(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)(S.D0,{label:l,hint:d,hintError:e.isDuplicateName,children:(0,r.jsx)(S.pd,{value:e.name,onChange:t=>e.setName(t.target.value),placeholder:i,autoFocus:!0})}),(0,r.jsx)(S.D0,{label:o,children:(0,r.jsx)(S.l6,{value:e.protocol,onChange:t=>e.setProtocol(t.target.value),children:C.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===s?C.T_[e].nameZh:C.T_[e].name},e))})})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.D0,{label:l,hint:d,hintError:e.isDuplicateName,children:(0,r.jsx)(S.pd,{value:e.name,onChange:t=>e.setName(t.target.value),placeholder:i})}),(0,r.jsx)(S.D0,{label:o,children:(0,r.jsx)(S.l6,{value:e.protocol,onChange:t=>e.setProtocol(t.target.value),children:C.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===s?C.T_[e].nameZh:C.T_[e].name},e))})})]}),(0,r.jsx)(S.D0,{label:"Base URL",children:(0,r.jsx)(S.pd,{value:e.baseUrl,onChange:t=>e.setBaseUrl(t.target.value),placeholder:n.fixedBaseUrl||"https://api.example.com/v1"})}),(0,r.jsx)(S.D0,{label:(0,r.jsxs)(r.Fragment,{children:["API Key ",(0,r.jsx)("span",{className:"text-muted-foreground/50 font-normal",children:"zh"===s?"(可选)":"(optional)"})]}),children:(0,r.jsx)(S.yA,{value:e.apiKey,onChange:e.setApiKey,placeholder:"sk-..."})}),(0,r.jsx)(S.D0,{label:"zh"===s?"模型":"Model",children:(0,r.jsx)(z.A,{value:e.model,onChange:e.setModel,placeholder:n.defaultModel,provider:e.protocol,apiKey:e.apiKey,baseUrl:e.baseUrl,supportsListModels:!!e.baseUrl.trim(),allowNoKey:!0,browseLabel:t.settings.ai.listModels,noModelsLabel:t.settings.ai.noModelsFound})})]})}var E=s(94514),R=s(53961);function I({result:e,disabled:t,onTest:s,t:a}){let n="testing"===e.state,l="ok"===e.state,o="error"===e.state;return(0,r.jsxs)("button",{type:"button",disabled:t||n,onClick:s,className:`inline-flex items-center gap-1.5 px-3.5 py-1.5 text-sm font-medium rounded-lg transition-all duration-200 disabled:cursor-not-allowed ${l?"bg-success/10 text-success border border-success/20":o?"bg-destructive/8 text-destructive border border-destructive/20 hover:bg-destructive/12":"border border-border text-muted-foreground hover:text-foreground hover:border-foreground/20 disabled:opacity-40"}`,children:[n?(0,r.jsx)(p.A,{size:13,className:"animate-spin"}):l?(0,r.jsx)(E.A,{size:13}):o?(0,r.jsx)(x.A,{size:13}):(0,r.jsx)(R.A,{size:13}),n?a.settings.ai.testKeyTesting:l&&null!=e.latency?a.settings.ai.testKeyOk(e.latency):o?function(e,t){switch(t){case"auth_error":return e.settings.ai.testKeyAuthError;case"model_not_found":return e.settings.ai.testKeyModelNotFound;case"endpoint_error":return e.settings.ai.testKeyEndpointError;case"rate_limited":return e.settings.ai.testKeyRateLimited;case"network_error":return e.settings.ai.testKeyNetworkError;default:return e.settings.ai.testKeyUnknown}}(a,e.code):a.settings.ai.testKey]})}var P=s(41585),U=s(4235);let D={checking:!1,available:null,isSelf:!1,suggestion:null};function $({label:e,hint:t,value:s,onChange:n,status:l,onCheckPort:o,m:i}){let d=(0,a.useRef)(void 0);return(0,a.useEffect)(()=>()=>clearTimeout(d.current),[]),(0,r.jsxs)("div",{className:"space-y-1",children:[e&&(0,r.jsx)("label",{className:"text-xs font-medium text-foreground",children:e}),t&&(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:t}),(0,r.jsx)("input",{type:"number",min:1024,max:65535,value:s,onChange:e=>{let t=parseInt(e.target.value,10)||s;n(t),clearTimeout(d.current),t>=1024&&t<=65535&&(d.current=setTimeout(()=>o(t),500))},onBlur:()=>{clearTimeout(d.current),s>=1024&&s<=65535&&o(s)},className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-border bg-muted/30 text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring tabular-nums"}),l.checking&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-muted-foreground",children:[(0,r.jsx)(p.A,{size:11,className:"animate-spin"})," ",i.portChecking]}),!l.checking&&!1===l.available&&!l.invalid&&(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-[var(--amber)]",children:[(0,r.jsx)(P.A,{size:11})," ",i.portInUse(s)]}),null!==l.suggestion&&(0,r.jsx)("button",{type:"button",onClick:()=>{n(l.suggestion),setTimeout(()=>o(l.suggestion),0)},className:"text-xs px-2 py-0.5 rounded border border-[var(--amber)] text-[var(--amber)] transition-colors hover:bg-[var(--amber-subtle)]",children:i.portSuggest(l.suggestion)})]}),!l.checking&&l.invalid&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-destructive",children:[(0,r.jsx)(P.A,{size:11})," 1024 – 65535"]}),!l.checking&&!0===l.available&&(0,r.jsxs)("p",{className:"text-xs flex items-center gap-1 text-success",children:[(0,r.jsx)(g.A,{size:11})," ",l.isSelf?i.portSelf:i.portAvailable]})]})}function F({message:e,sub:t}){return(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"text-center space-y-4 max-w-sm px-6",children:[(0,r.jsx)(p.A,{size:32,className:"animate-spin mx-auto text-[var(--amber)]"}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:e}),t&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:t})]})})}function L({m:e}){let[t,s]=(0,a.useState)(0),[n,l]=(0,a.useState)(0),[o,i]=(0,a.useState)(D),[d,c]=(0,a.useState)(!1),[u,m]=(0,a.useState)(null),[x,p]=(0,a.useState)(void 0),h=(0,a.useRef)(void 0);(0,a.useEffect)(()=>{(0,y.n)("/api/settings").then(e=>{let t=e.port||3456;s(t),l(t)}).catch(()=>{})},[]),(0,a.useEffect)(()=>()=>clearInterval(h.current),[]);let g=n!==t,b=n<1024||n>65535,f=o.checking||!1===o.available&&!o.isSelf,v=(0,a.useCallback)(async e=>{if(e<1024||e>65535)return void i({...D,available:!1,invalid:!0});i({...D,checking:!0});try{let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})});i({checking:!1,available:t.available,isSelf:t.isSelf??!1,suggestion:t.suggestion??null})}catch{i(D)}},[]),j=async()=>{if(g&&!b&&!f&&!d){c(!0);try{let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:n})});if(!t.available&&!t.isSelf){i({checking:!1,available:!1,isSelf:!1,suggestion:t.suggestion??null}),c(!1),U.oR.error(e.portInUse(n));return}await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:n})}),m(e.portWebRestarting),p(e.portRedirecting);try{await (0,y.n)("/api/restart",{method:"POST"})}catch{}let s=`${window.location.protocol}//${window.location.hostname}:${n}`,r=Date.now()+3e4;h.current=setInterval(async()=>{if(Date.now()>r){clearInterval(h.current),m(null),c(!1),U.oR.error(e.portRestartTimeout);return}try{(await fetch(`${s}/api/health`,{signal:AbortSignal.timeout(2e3)})).ok&&(clearInterval(h.current),window.location.href=s)}catch{}},1500)}catch{c(!1),U.oR.error(e.portUpdateFailed)}}};return 0===t?null:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(w.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:e.webPortLabel}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:e.webPortHint})]})]}),(0,r.jsxs)("div",{className:"px-4 pb-4 space-y-3",children:[(0,r.jsx)($,{label:"",hint:"",value:n,onChange:e=>{l(e),i(D)},status:o,onCheckPort:v,m:e}),(0,r.jsx)("button",{type:"button",onClick:j,disabled:!g||b||f||d,className:"w-full py-2 rounded-lg text-xs font-medium transition-colors bg-[var(--amber)] text-[var(--amber-foreground)] hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:d?e.portUpdating:e.portUpdateBtn})]})]}),u&&(0,r.jsx)(F,{message:u,sub:x})]})}function O({data:e,updateAi:t,updateAgent:s,t:l}){let{locale:o}=(0,j.Y)(),i=e.envOverrides??{},d=e.ai.providers.find(t=>t.id===e.ai.activeProvider),c=d?C.T_[d.protocol]:null,[u,m]=(0,a.useState)({}),[p,h]=(0,a.useState)(!1),g=(0,a.useRef)(void 0),b=(0,a.useRef)(e.ai.activeProvider);(0,a.useEffect)(()=>{b.current!==e.ai.activeProvider&&(b.current=e.ai.activeProvider,m({}),g.current&&(clearTimeout(g.current),g.current=void 0))},[e.ai.activeProvider]),(0,a.useEffect)(()=>()=>{g.current&&clearTimeout(g.current)},[]),(0,a.useEffect)(()=>{let t=e.agent?.reconnectRetries??3;try{localStorage.setItem("mindos-reconnect-retries",String(t))}catch(e){console.warn("[AiTab] localStorage setItem reconnectRetries failed:",e)}},[e.agent?.reconnectRetries]);let f=(0,a.useCallback)(async()=>{if(!d)return;let e=d.id;m(t=>({...t,[e]:{state:"testing"}}));try{let t={provider:d.protocol};d.apiKey&&(t.apiKey=d.apiKey),d.model&&(t.model=d.model),d.baseUrl&&(t.baseUrl=d.baseUrl);let s=await fetch("/api/settings/test-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await s.json();r.ok?(m(t=>({...t,[e]:{state:"ok",latency:r.latency}})),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{m(t=>({...t,[e]:{state:"idle"}}))},8e3)):m(t=>({...t,[e]:{state:"error",error:r.error,code:r.code}}))}catch{m(t=>({...t,[e]:{state:"error",code:"network_error",error:"Network error"}}))}},[d]),v=(0,a.useCallback)(s=>{d&&("apiKey"in s&&m(e=>({...e,[d.id]:{state:"idle"}})),t({providers:e.ai.providers.map(e=>e.id===d.id?{...e,...s}:e)}))},[d,e.ai.providers,t]),y=d?(0,C.Ux)(d.protocol):void 0,w=!!y&&i[y],M=!!c?.apiKeyFallback,E=(0,a.useCallback)(()=>{if(!d)return;let s=C.T_[d.protocol];m(e=>({...e,[d.id]:{state:"idle"}})),t({providers:e.ai.providers.map(e=>e.id===d.id?{...e,apiKey:"",model:"",baseUrl:s?.fixedBaseUrl??""}:e)})},[d,e.ai.providers,t]),R=(0,a.useCallback)(()=>{if(!d)return;let s=e.ai.providers.filter(e=>e.id!==d.id);t({activeProvider:s.length>0?s[0].id:"",providers:s}),m(e=>{let t={...e};return delete t[d.id],t})},[d,e.ai.providers,t]),I=(0,a.useCallback)(s=>{let r={id:s.id||(0,T.mV)(),name:s.name,protocol:s.protocol,apiKey:s.apiKey,model:s.model,baseUrl:s.baseUrl};t({activeProvider:r.id,providers:[...e.ai.providers,r]}),h(!1)},[e.ai.providers,t]),P=d?.name??("zh"===o?"未选择":"No provider");return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(n.A,{size:15}),title:l.settings.ai.provider,description:P,children:[(0,r.jsx)(A.A,{value:e.ai.activeProvider,onChange:e=>{"skip"!==e&&t({activeProvider:e}),h(!1)},compact:!0,customProviders:e.ai.providers,onAdd:()=>{let t=C.T_.openai,s="zh"===o?t.nameZh:t.name,r=new Set(e.ai.providers.map(e=>e.name.toLowerCase())),a=s;if(r.has(a.toLowerCase())){let e=2;for(;r.has(`${s} (${e})`.toLowerCase());)e++;a=`${s} (${e})`}h(!0)}}),p&&(0,r.jsx)(_,{onSave:I,onCancel:()=>h(!1),t:l,existingNames:e.ai.providers.map(e=>e.name)},"new"),!p&&d&&(0,r.jsxs)("div",{className:"space-y-3 pt-3 border-t border-border",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,r.jsx)(S.D0,{label:"zh"===o?"名称":"Name",children:(0,r.jsx)(S.pd,{value:d.name,onChange:e=>v({name:e.target.value}),placeholder:"zh"===o?"输入名称":"Enter name"})}),(0,r.jsx)(S.D0,{label:"zh"===o?"协议":"Protocol",children:(0,r.jsx)(S.l6,{value:d.protocol,onChange:e=>v({protocol:e.target.value}),children:C.jt.map(e=>(0,r.jsx)("option",{value:e,children:"zh"===o?C.T_[e].nameZh:C.T_[e].name},e))})})]}),(0,r.jsxs)(S.D0,{label:(0,r.jsxs)(r.Fragment,{children:[l.settings.ai.apiKey," ",y&&(0,r.jsx)(S.Bt,{overridden:i[y]})]}),hint:c&&w?l.settings.ai.envFieldNote(y):c&&M?l.settings.ai.keyOptionalHint:void 0,children:[(0,r.jsx)(S.yA,{value:d.apiKey,onChange:e=>v({apiKey:e}),placeholder:"sk-..."}),c?.signupUrl&&!d.apiKey&&!w&&(0,r.jsxs)("a",{href:c.signupUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs mt-1.5 hover:underline",style:{color:"var(--amber)"},children:[(0,r.jsx)(N.A,{size:10}),M?"zh"===o?`下载 ${c.nameZh}`:`Download ${c.name}`:"zh"===o?`获取 ${c.nameZh} API Key`:`Get ${c.name} API Key`]})]}),(c?.supportsBaseUrl||d.baseUrl)&&(0,r.jsx)(S.D0,{label:"Base URL",children:(0,r.jsx)(S.pd,{value:d.baseUrl,onChange:e=>v({baseUrl:e.target.value}),placeholder:c?.fixedBaseUrl||(0,C.Ot)(d.protocol)||"https://api.openai.com/v1"})}),(0,r.jsx)(S.D0,{label:"zh"===o?"模型":"Model",children:(0,r.jsx)(z.A,{value:d.model,onChange:e=>v({model:e}),placeholder:c?.defaultModel??"",provider:d.protocol,apiKey:d.apiKey,envKey:!!w,baseUrl:d.baseUrl,supportsListModels:!!d.baseUrl?.trim()||!!c?.supportsListModels,allowNoKey:!!d.baseUrl?.trim(),browseLabel:l.settings.ai.listModels,noModelsLabel:l.settings.ai.noModelsFound})}),(0,r.jsx)(B,{provider:d.protocol,result:u[d.id]??{state:"idle"},hasKey:!!d.apiKey,hasEnv:!!w,hasConfig:!!(d.apiKey||d.model||d.baseUrl),onTest:f,onReset:E,onDelete:R,t:l})]}),!p&&Object.values(i).some(Boolean)&&(0,r.jsxs)("div",{className:"flex items-start gap-2 text-xs text-[var(--amber)] bg-[var(--amber-subtle)] border border-[var(--amber)]/20 rounded-lg px-3 py-2.5",children:[(0,r.jsx)(x.A,{size:13,className:"shrink-0 mt-0.5"}),(0,r.jsx)("span",{children:l.settings.ai.envHint})]})]}),(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(k.A,{size:15}),title:l.settings.agent.title,description:l.settings.agent.subtitle??"Configure how the AI agent operates",children:[(0,r.jsx)(S.pM,{label:l.settings.agent.maxSteps,hint:l.settings.agent.maxStepsHint,children:(0,r.jsxs)(S.l6,{value:String(e.agent?.maxSteps??20),onChange:e=>s({maxSteps:Number(e.target.value)}),className:"w-20",children:[(0,r.jsx)("option",{value:"5",children:"5"}),(0,r.jsx)("option",{value:"10",children:"10"}),(0,r.jsx)("option",{value:"15",children:"15"}),(0,r.jsx)("option",{value:"20",children:"20"}),(0,r.jsx)("option",{value:"25",children:"25"}),(0,r.jsx)("option",{value:"30",children:"30"})]})}),(0,r.jsx)(S.pM,{label:l.settings.agent.contextStrategy,hint:l.settings.agent.contextStrategyHint,children:(0,r.jsxs)(S.l6,{value:e.agent?.contextStrategy??"auto",onChange:e=>s({contextStrategy:e.target.value}),className:"w-24",children:[(0,r.jsx)("option",{value:"auto",children:l.settings.agent.contextStrategyAuto}),(0,r.jsx)("option",{value:"off",children:l.settings.agent.contextStrategyOff})]})}),(0,r.jsx)(S.pM,{label:l.settings.agent.reconnectRetries,hint:l.settings.agent.reconnectRetriesHint,children:(0,r.jsxs)(S.l6,{value:String(e.agent?.reconnectRetries??3),onChange:e=>{let t=Number(e.target.value);s({reconnectRetries:t});try{localStorage.setItem("mindos-reconnect-retries",String(t))}catch(e){console.warn("[AiTab] localStorage setItem reconnectRetries failed:",e)}},className:"w-20",children:[(0,r.jsx)("option",{value:"0",children:"Off"}),(0,r.jsx)("option",{value:"1",children:"1"}),(0,r.jsx)("option",{value:"2",children:"2"}),(0,r.jsx)("option",{value:"3",children:"3"}),(0,r.jsx)("option",{value:"5",children:"5"}),(0,r.jsx)("option",{value:"10",children:"10"})]})}),c?.supportsThinking&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.pM,{label:l.settings.agent.thinking,hint:l.settings.agent.thinkingHint,children:(0,r.jsx)(S.lM,{checked:e.agent?.enableThinking??!1,onChange:()=>s({enableThinking:!e.agent?.enableThinking})})}),e.agent?.enableThinking&&(0,r.jsx)(S.D0,{label:l.settings.agent.thinkingBudget,hint:l.settings.agent.thinkingBudgetHint,children:(0,r.jsx)(S.pd,{type:"number",value:String(e.agent?.thinkingBudget??5e3),onChange:e=>{let t=parseInt(e.target.value,10);isNaN(t)||s({thinkingBudget:Math.max(1e3,Math.min(5e4,t))})},min:1e3,max:5e4,step:1e3})})]})]}),(0,r.jsx)(L,{m:l.settings?.mcp??{}}),(0,r.jsx)(K,{})]})}function B({provider:e,result:t,hasKey:s,hasEnv:n,hasConfig:l,onTest:o,onReset:i,onDelete:d,t:c}){let[u,x]=(0,a.useState)(null),p=(0,a.useRef)(void 0),g=!!C.T_[e]?.apiKeyFallback;(0,a.useEffect)(()=>()=>{p.current&&clearTimeout(p.current)},[]);let b=e=>{u===e?("reset"===e?i?.():d?.(),x(null),p.current&&clearTimeout(p.current)):(x(e),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>x(null),3e3))},{locale:f}=(0,j.Y)();return(0,r.jsx)("div",{className:"space-y-2 pt-2",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)(I,{result:t,disabled:!(s||n||g),onTest:o,t:c}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[i&&l&&(0,r.jsxs)("button",{type:"button",onClick:()=>b("reset"),onBlur:()=>{"reset"===u&&(x(null),p.current&&clearTimeout(p.current))},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${"reset"===u?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(h.A,{size:12}),"reset"===u?"zh"===f?"确认重置?":"Confirm?":"zh"===f?"重置":"Reset"]}),d&&(0,r.jsxs)("button",{type:"button",onClick:()=>b("delete"),onBlur:()=>{"delete"===u&&(x(null),p.current&&clearTimeout(p.current))},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${"delete"===u?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(m.A,{size:12}),"delete"===u?"zh"===f?"确认删除?":"Confirm?":"zh"===f?"删除":"Delete"]})]})]})})}function _({initial:e,onSave:t,onCancel:s,onDelete:n,t:l,existingNames:o}){let{locale:i}=(0,j.Y)(),d=function({initial:e,onSave:t,locale:s,existingNames:r}){let[n,l]=(0,a.useState)(e?.name??""),[o,i]=(0,a.useState)(e?.protocol??"openai"),[d,c]=(0,a.useState)(e?.apiKey??""),[u,m]=(0,a.useState)(e?.model??""),[x,p]=(0,a.useState)(e?.baseUrl??""),[h,g]=(0,a.useState)({state:"idle"}),b=n.trim(),f=!!(b&&r?.some(e=>e.toLowerCase()===b.toLowerCase())),v=!!(b&&x.trim()&&u.trim()&&!f),j=(0,a.useCallback)(async()=>{if(!v)return void g({state:"error",error:"zh"===s?"名称、接口地址和模型为必填":"Name, base URL, and model are required"});g({state:"testing"});try{let t=await fetch("/api/settings/test-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e?.id?{provider:e.id,apiKey:d,model:u,baseUrl:x}:{provider:o,apiKey:d,model:u,baseUrl:x,baseProviderId:o})}),s=await t.json();s.ok?g({state:"ok",latency:s.latency}):g({state:"error",error:s.error||"Test failed",code:s.code})}catch{g({state:"error",code:"network_error",error:"Network error"})}},[v,d,u,x,o,s,e?.id]),y=(0,a.useCallback)(()=>{f?g({state:"error",error:"zh"===s?"名称已存在,请使用其他名称":"Name already exists, please use a different name"}):v?t({id:e?.id||(0,T.mV)(),name:n.trim(),protocol:o,apiKey:d,model:u.trim(),baseUrl:x.trim()}):g({state:"error",error:"zh"===s?"名称、接口地址和模型为必填":"Name, base URL, and model are required"})},[v,f,n,o,d,u,x,e?.id,t,s]);return{name:n,setName:l,protocol:o,setProtocol:i,apiKey:d,setApiKey:c,model:u,setModel:m,baseUrl:x,setBaseUrl:p,testResult:h,canSave:v,isDuplicateName:f,handleTest:j,handleSave:y}}({initial:e,onSave:t,locale:i,existingNames:o}),[c,u]=(0,a.useState)(!1),x=(0,a.useRef)(void 0);(0,a.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let p=e?.id?"zh"===i?"编辑 Provider":"Edit Provider":"zh"===i?"添加 Provider":"Add Provider",h=[];return d.name.trim()||h.push("zh"===i?"名称":"Name"),d.baseUrl.trim()||h.push("zh"===i?"接口地址":"Base URL"),d.model.trim()||h.push("zh"===i?"模型":"Model"),(0,r.jsxs)("div",{className:"mt-3 rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-border",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:p}),(0,r.jsx)("button",{type:"button",onClick:s,className:"p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors","aria-label":"zh"===i?"关闭":"Close",children:(0,r.jsx)(b.A,{size:14})})]}),(0,r.jsxs)("div",{className:"p-4",children:[(0,r.jsx)(M,{form:d,t:l,locale:i,layout:"compact"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-4",children:[(0,r.jsx)(I,{result:d.testResult,disabled:!d.canSave,onTest:d.handleTest,t:l}),n&&e?.id&&(0,r.jsxs)("button",{type:"button",onClick:()=>{c?(n(),x.current&&clearTimeout(x.current)):(u(!0),x.current=setTimeout(()=>u(!1),3e3))},onBlur:()=>{u(!1),x.current&&clearTimeout(x.current)},className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-all duration-200 ${c?"bg-destructive/10 text-destructive border border-destructive/25 font-medium":"text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(m.A,{size:12}),c?"zh"===i?"确认删除?":"Confirm?":"zh"===i?"删除":"Delete"]}),(0,r.jsxs)("div",{className:"flex-1",children:[d.isDuplicateName&&(0,r.jsx)("span",{className:"text-2xs text-destructive pl-2",children:"zh"===i?"名称已存在":"Name already exists"}),!d.isDuplicateName&&!d.canSave&&h.length>0&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/60 pl-2",children:"zh"===i?`需要: ${h.join("、")}`:`Required: ${h.join(", ")}`})]}),(0,r.jsx)("button",{type:"button",onClick:s,className:"px-3 py-1.5 text-sm rounded-lg text-muted-foreground hover:text-foreground transition-colors",children:l.settings?.customProviders?.modal?.buttonCancel??"Cancel"}),(0,r.jsx)("button",{type:"button",onClick:d.handleSave,disabled:!d.canSave,className:"px-4 py-1.5 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] hover:bg-[var(--amber)]/90 transition-colors disabled:opacity-40 disabled:cursor-not-allowed",children:"zh"===i?"保存":"Save"})]})]})]})}function K(){let{t:e}=(0,j.Y)(),[t,s]=(0,a.useState)("panel");return(0,a.useEffect)(()=>{try{let e=localStorage.getItem("ask-mode");"popup"===e&&s("popup")}catch(e){console.warn("[AiTab] localStorage getItem ask-mode failed:",e)}},[]),(0,r.jsx)(S.L7,{icon:(0,r.jsx)(w.A,{size:15}),title:e.settings.askDisplayMode?.label??"Display Mode",description:e.settings.askDisplayMode?.hint??"Side panel stays docked on the right. Popup opens a floating dialog.",children:(0,r.jsxs)(S.l6,{value:t,onChange:e=>(e=>{s(e);try{localStorage.setItem("ask-mode",e)}catch(e){console.warn("[AiTab] localStorage setItem ask-mode failed:",e)}window.dispatchEvent(new StorageEvent("storage",{key:"ask-mode",newValue:e}))})(e.target.value),children:[(0,r.jsx)("option",{value:"panel",children:e.settings.askDisplayMode?.panel??"Side Panel"}),(0,r.jsx)("option",{value:"popup",children:e.settings.askDisplayMode?.popup??"Popup"})]})})}var H=s(51900),G=s(36999),V=s(92451),J=s(97810);let q=(0,i.A)("type",[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]]),W=(0,i.A)("a-large-small",[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16",key:"xik6mr"}],["path",{d:"M15.697 14h5.606",key:"1stdlc"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16",key:"d5nyq2"}],["path",{d:"M3.304 13h6.392",key:"1q3zxz"}]]),Y=(0,i.A)("columns-3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);var Z=s(66088),X=s(21362);let Q=[{value:"680px",label:"Narrow",width:42},{value:"780px",label:"Default",width:56},{value:"960px",label:"Wide",width:75},{value:"100%",label:"Full",width:100}],ee=[{value:"lora",label:"Lora",category:"Serif",style:{fontFamily:"Lora, Georgia, serif"}},{value:"ibm-plex-sans",label:"IBM Plex Sans",category:"Sans",style:{fontFamily:"'IBM Plex Sans', sans-serif"}},{value:"inter",label:"Inter",category:"Sans",style:{fontFamily:"var(--font-inter), sans-serif"}},{value:"ibm-plex-mono",label:"IBM Plex Mono",category:"Mono",style:{fontFamily:"'IBM Plex Mono', monospace"}}];function et({icon:e,label:t,children:s}){return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t})]}),s]})}function es({options:e,value:t,onChange:s}){return(0,r.jsx)("div",{className:"flex gap-2",children:e.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>s(e.value),className:`flex items-center gap-1.5 px-3.5 py-2 text-sm font-medium rounded-xl transition-all ${t===e.value?"bg-[var(--amber)] text-[var(--amber-foreground)] shadow-sm":"bg-muted/50 text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:[e.icon,e.label]},e.value))})}function er({font:e,setFont:t,fontSize:s,setFontSize:n,contentWidth:l,setContentWidth:o,dark:i,setDark:c,locale:u,setLocale:m,t:x}){let[p,h]=(0,a.useState)(!1),[g,b]=(0,a.useState)(()=>localStorage.getItem("theme")??"system"),[f,v]=(0,a.useState)(()=>localStorage.getItem("locale")??"system"),j=x.settings.appearance;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(d,{size:15}),title:j.preferencesTitle??"Preferences",children:[(0,r.jsx)(et,{icon:(0,r.jsx)(H.A,{size:14}),label:j.colorTheme,children:(0,r.jsx)(es,{options:[{value:"system",label:j.system,icon:(0,r.jsx)(w.A,{size:14})},{value:"dark",label:j.dark,icon:(0,r.jsx)(G.A,{size:14})},{value:"light",label:j.light,icon:(0,r.jsx)(H.A,{size:14})}],value:g,onChange:e=>{b(e),localStorage.setItem("theme",e);let t="system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches:"dark"===e;c(t),document.documentElement.classList.toggle("dark",t)}})}),(0,r.jsx)(et,{icon:(0,r.jsx)(V.A,{size:14}),label:j.language,children:(0,r.jsx)(es,{options:[{value:"system",label:j.system,icon:(0,r.jsx)(w.A,{size:14})},{value:"en",label:"EN"},{value:"zh",label:"中文"}],value:f,onChange:e=>{v(e),localStorage.setItem("locale",e);let t="system"===e?navigator.language.startsWith("zh")?"zh":"en":e;m(t),document.cookie=`locale=${t};path=/;max-age=31536000;SameSite=Lax`}})})]}),(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(J.A,{size:15}),title:j.readingTitle??"Reading",description:j.readingDesc??"Customize how your notes look",children:[(0,r.jsx)(et,{icon:(0,r.jsx)(q,{size:14}),label:j.readingFont,children:(0,r.jsx)("div",{className:"space-y-0.5",children:ee.map(s=>{let a=e===s.value;return(0,r.jsxs)("button",{type:"button",onClick:()=>t(s.value),className:`flex items-center gap-4 w-full px-3 py-2.5 rounded-lg transition-all text-left relative ${a?"bg-[var(--amber-subtle)]":"hover:bg-muted/50"}`,children:[a&&(0,r.jsx)("div",{className:"absolute left-0 top-2 bottom-2 w-[3px] rounded-r-full bg-[var(--amber)]"}),(0,r.jsx)("span",{className:`text-xl font-medium w-10 text-center shrink-0 ${a?"text-foreground":"text-muted-foreground/60"}`,style:{fontFamily:s.style.fontFamily},children:"Aa"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,r.jsx)("span",{className:`text-sm font-medium ${a?"text-foreground":"text-muted-foreground"}`,style:{fontFamily:s.style.fontFamily},children:s.label}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground/50",children:s.category})]}),(0,r.jsx)("p",{className:`text-sm truncate mt-0.5 ${a?"text-muted-foreground":"text-muted-foreground/40"}`,style:{fontFamily:s.style.fontFamily},children:j.fontPreview})]})]},s.value)})})}),(0,r.jsx)(et,{icon:(0,r.jsx)(W,{size:14}),label:j.fontSize,children:(0,r.jsxs)("div",{className:"px-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground/60 shrink-0",style:{fontSize:"11px"},children:"A"}),(0,r.jsx)("input",{type:"range",min:14,max:17,step:1,value:parseInt(s),onChange:e=>n(`${e.target.value}px`),className:"flex-1 h-1.5 rounded-full appearance-none bg-muted cursor-pointer accent-[var(--amber)] [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-[var(--amber)] [&::-webkit-slider-thumb]:shadow-sm [&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:transition-transform [&::-webkit-slider-thumb]:hover:scale-110 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-[var(--amber)] [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:shadow-sm [&::-moz-range-thumb]:cursor-pointer"}),(0,r.jsx)("span",{className:"text-base text-muted-foreground/60 shrink-0",children:"A"})]}),(0,r.jsx)("div",{className:"text-center mt-1.5",children:(0,r.jsxs)("span",{className:"text-xs tabular-nums text-muted-foreground",children:[parseInt(s),"px"]})}),(0,r.jsx)("p",{className:"text-muted-foreground leading-relaxed mt-2 px-1",style:{fontSize:s,fontFamily:ee.find(t=>t.value===e)?.style.fontFamily},children:j.fontSizePreview})]})}),(0,r.jsx)(et,{icon:(0,r.jsx)(Y,{size:14}),label:j.contentWidth,children:(0,r.jsx)("div",{className:"space-y-1",children:Q.map(e=>{let t=l===e.value;return(0,r.jsxs)("button",{type:"button",onClick:()=>o(e.value),className:`flex items-center gap-3 w-full px-3 py-2 rounded-lg transition-all ${t?"bg-[var(--amber-subtle)]":"hover:bg-muted/50"}`,children:[(0,r.jsx)("div",{className:"flex-1 h-2 rounded-full bg-muted/40 overflow-hidden",children:(0,r.jsx)("div",{className:`h-full rounded-full transition-all ${t?"bg-[var(--amber)]":"bg-muted-foreground/20"}`,style:{width:`${e.width}%`}})}),(0,r.jsx)("span",{className:`text-sm shrink-0 w-14 text-right ${t?"text-foreground font-medium":"text-muted-foreground"}`,children:e.label})]},e.value)})})})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground/40 px-0.5",children:j.browserNote}),(0,r.jsxs)("div",{className:"border-t border-border pt-4",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>h(!p),className:"flex items-center gap-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors",children:[p?(0,r.jsx)(Z.A,{size:14}):(0,r.jsx)(X.A,{size:14}),x.settings.tabs.shortcuts]}),p&&(0,r.jsx)("div",{className:"mt-3 space-y-0.5",children:x.shortcuts.map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center justify-between py-1.5 px-1",children:[(0,r.jsx)("span",{className:"text-sm text-foreground",children:e.description}),(0,r.jsx)("div",{className:"flex items-center gap-1",children:e.keys.map((e,t)=>(0,r.jsx)("kbd",{className:"px-1.5 py-0.5 text-2xs font-mono bg-muted border border-border rounded text-muted-foreground",children:e},t))})]},t))})]})]})}let ea=(0,i.A)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]),en=(0,i.A)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);var el=s(67635),eo=s(61878);let ei=(0,i.A)("flask-conical",[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]);var ed=s(65576),ec=s(39498),eu=s(7834);function em(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<0x40000000?`${(e/1048576).toFixed(1)} MB`:`${(e/0x40000000).toFixed(2)} GB`}var ex=s(28774),ep=s(9339);let eh=(0,ep.createServerReference)("00f20fa32e51987475aff2943f980c699273a21515",ep.callServer,void 0,ep.findSourceMapURL,"scanExampleFilesAction"),eg=(0,ep.createServerReference)("00a32b751868ea5031b06dc80cd3869f66c886452e",ep.callServer,void 0,ep.findSourceMapURL,"cleanupExamplesAction");function eb({data:e,setData:t,t:s}){let l=e.envOverrides??{},o=s.settings.knowledge,i=s.settings.appearance,[d,x]=(0,a.useState)(()=>"1"===localStorage.getItem("mindos:labs-echo")),[g,b]=(0,a.useState)(()=>"1"===localStorage.getItem("mindos:labs-workflows")),[f,v]=(0,a.useState)(()=>"true"===localStorage.getItem("show-hidden-files")),[j,N]=(0,a.useState)(null),[k,w]=(0,a.useState)(!1),[C,A]=(0,a.useState)(null);(0,a.useEffect)(()=>{eh().then(e=>N(e.files.length)).catch(e=>{console.warn("[KnowledgeTab] scanExampleFilesAction failed:",e)})},[]);let[z,T]=(0,a.useState)(null),[M,R]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(0,y.n)("/api/setup").then(e=>{let t=e.guideState;t&&(T(t.active),R(!!t.dismissed))}).catch(e=>{console.error("Failed to fetch guide state:",e)})},[]);let I=(0,a.useCallback)(()=>{let e=!M;R(e);let t={dismissed:e};e||(t.active=!0),(0,y.n)("/api/setup",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({guideState:t})}).then(()=>window.dispatchEvent(new Event("guide-state-updated"))).catch(t=>{console.error("Failed to update guide state:",t),R(!e)})},[M]),P=(0,a.useCallback)(()=>{(0,y.n)("/api/setup",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({guideState:{active:!0,dismissed:!1,walkthroughStep:0,walkthroughDismissed:!1}})}).then(()=>{T(!0),R(!1),window.dispatchEvent(new Event("guide-state-updated"))}).catch(e=>console.error("Failed to restart walkthrough:",e))},[]),D=e.embedding??{enabled:!1,provider:"local",baseUrl:"",apiKey:"",model:""},$=e.embeddingStatus??{enabled:!1,ready:!1,building:!1,docCount:0},F=D.provider||"local",[L,O]=(0,a.useState)(null),[B,_]=(0,a.useState)(!1);(0,a.useEffect)(()=>{D.enabled&&"local"===F&&(0,y.n)("/api/embedding").then(e=>O(e.downloaded)).catch(()=>O(!1))},[D.enabled,F]),(0,a.useEffect)(()=>{if(!B)return;let e=setInterval(()=>{(0,y.n)("/api/embedding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"status"})}).then(e=>{e.downloaded&&(O(!0),_(!1),U.oR.success?.("Model downloaded successfully")??(0,U.oR)("Model downloaded")),e.error&&(_(!1),U.oR.error?.(e.error)??(0,U.oR)(e.error))}).catch(()=>{})},3e3);return()=>clearInterval(e)},[B]);let K=(0,a.useCallback)(()=>{_(!0),(0,y.n)("/api/embedding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"download",model:D.model||void 0})}).catch(()=>_(!1))},[D.model]),H=(0,a.useSyncExternalStore)(()=>()=>{},()=>`${window.location.protocol}//${window.location.hostname}`,()=>"http://localhost"),[G,V]=(0,a.useState)(!1),[J,q]=(0,a.useState)(null),[W,Y]=(0,a.useState)(!1),[Z,X]=(0,a.useState)(!1),Q=!!e.authToken,ee=J??e.authToken??"";async function et(){V(!0);try{let e=await (0,y.n)("/api/settings/reset-token",{method:"POST"});q(e.token),t(t=>t?{...t,authToken:e.token}:t)}finally{V(!1)}}async function es(){t(e=>e?{...e,authToken:""}:e),q(null)}return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(ea,{size:15}),title:o.cardTitle??"Knowledge Base",description:o.mindRootHint,children:[(0,r.jsx)(S.D0,{label:(0,r.jsxs)(r.Fragment,{children:[o.mindRoot," ",(0,r.jsx)(S.Bt,{overridden:l.MIND_ROOT})]}),hint:l.MIND_ROOT?o.envNote:o.mindRootHint,children:(0,r.jsx)(S.pd,{value:e.mindRoot,onChange:e=>t(t=>t?{...t,mindRoot:e.target.value}:t),placeholder:"/path/to/your/notes"})}),(0,r.jsx)(S.pM,{label:o.showHiddenFiles,hint:o.showHiddenFilesHint,children:(0,r.jsx)(S.lM,{checked:f,onChange:()=>{let e=!f;v(e),(0,ex.Fo)(e)}})}),null!==j&&j>0&&null===C&&(0,r.jsx)(S.pM,{label:o.cleanupExamples,hint:o.cleanupExamplesHint,children:(0,r.jsxs)("button",{onClick:()=>X(!0),disabled:k,title:k?s.hints.cleanupInProgress:void 0,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0 disabled:opacity-50",children:[k?(0,r.jsx)(p.A,{size:12,className:"animate-spin"}):(0,r.jsx)(m.A,{size:12}),o.cleanupExamplesButton,(0,r.jsx)("span",{className:"ml-1 tabular-nums text-2xs opacity-70",children:j})]})}),null!==C&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(E.A,{size:14}),o.cleanupExamplesDone(C)]})]}),(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(en,{size:15}),title:o.securityTitle??"Security",children:[(0,r.jsx)(S.D0,{label:o.webPassword,hint:o.webPasswordHint,children:(0,r.jsx)(S.yA,{value:e.webPassword??"",onChange:e=>t(t=>t?{...t,webPassword:e}:t),placeholder:o.passwordPlaceholder??"Leave empty to disable"})}),(0,r.jsx)(S.D0,{label:o.authToken,hint:Q?o.authTokenHint:o.authTokenNone,children:(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 bg-background border border-border rounded-lg min-h-[38px]",children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground break-all select-all",children:ee||(0,r.jsx)("span",{className:"text-muted-foreground italic",children:o.tokenNotSet??"— not set —"})}),ee&&(0,r.jsx)("button",{type:"button",onClick:function(){let t=J??e.authToken??"";t&&(0,eu.l)(t).then(e=>{e&&U.oR.copy()})},className:"shrink-0 p-1 rounded text-muted-foreground hover:text-foreground transition-colors",title:o.authTokenCopy,children:(0,r.jsx)(el.A,{size:13})})]}),e.mcpPort&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:[o.authTokenMcpPort,": ",(0,r.jsx)("code",{className:"font-mono",children:e.mcpPort}),ee&&(0,r.jsxs)(r.Fragment,{children:[" \xa0\xb7\xa0 ",o.mcpUrl??"MCP URL",": ",(0,r.jsx)("code",{className:"font-mono select-all",children:`${H}:${e.mcpPort}/mcp`})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:function(){Y(!0)},disabled:G,title:G?s.hints.tokenResetInProgress:void 0,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:G?"animate-spin":""}),o.authTokenReset]}),Q&&(0,r.jsxs)("button",{type:"button",onClick:es,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-destructive hover:border-destructive/50 transition-colors",children:[(0,r.jsx)(m.A,{size:14}),o.authTokenClear]})]}),J&&(0,r.jsx)("p",{className:"text-xs text-[var(--amber-text)]",children:o.tokenGenerated})]})})]}),null!==z&&(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(n.A,{size:15}),title:s.guide?.title??"Getting Started",children:[(0,r.jsx)(S.pM,{label:s.guide?.showGuide??"Show getting started guide",children:(0,r.jsx)(S.lM,{checked:!M,onChange:()=>I()})}),(0,r.jsxs)("button",{onClick:P,className:"flex items-center gap-1.5 mt-2 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(h.A,{size:14}),o.restartWalkthrough??"Restart walkthrough"]})]}),(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(eo.A,{size:15}),title:"Embedding Search",description:"Enable semantic search with vector embeddings. Finds notes by meaning, not just exact words.",children:[(0,r.jsx)(S.pM,{label:"Enable embedding search",hint:"Combines keyword matching (BM25) with semantic similarity.",children:(0,r.jsx)(S.lM,{checked:D.enabled,onChange:()=>{t(e=>e?{...e,embedding:{...D,enabled:!D.enabled}}:e)}})}),D.enabled&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>t(e=>e?{...e,embedding:{...D,provider:"local",model:D.model||"Xenova/bge-small-zh-v1.5"}}:e),className:`flex-1 px-3 py-2 text-sm rounded-lg border transition-colors text-center ${"local"===F?"border-[var(--amber)] text-[var(--amber)] bg-[var(--amber)]/10":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:[(0,r.jsx)("span",{className:"font-medium",children:"Local (Free)"}),(0,r.jsx)("span",{className:"block text-xs opacity-70 mt-0.5",children:"Runs on your machine, no API key needed"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>t(e=>e?{...e,embedding:{...D,provider:"api",model:D.model||"text-embedding-3-small"}}:e),className:`flex-1 px-3 py-2 text-sm rounded-lg border transition-colors text-center ${"api"===F?"border-[var(--amber)] text-[var(--amber)] bg-[var(--amber)]/10":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:[(0,r.jsx)("span",{className:"font-medium",children:"API"}),(0,r.jsx)("span",{className:"block text-xs opacity-70 mt-0.5",children:"OpenAI, DeepSeek, Ollama, etc."})]})]}),"local"===F&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.D0,{label:"Model",hint:"Choose a model. Smaller models are faster.",children:(0,r.jsx)("div",{className:"space-y-1.5",children:[{id:"Xenova/bge-small-zh-v1.5",label:"BGE Small ZH (33MB)",desc:"Chinese + English"},{id:"Xenova/all-MiniLM-L6-v2",label:"MiniLM L6 (23MB)",desc:"English only"},{id:"Xenova/bge-small-en-v1.5",label:"BGE Small EN (33MB)",desc:"English only"}].map(e=>(0,r.jsxs)("label",{className:`flex items-center gap-3 px-3 py-2 rounded-lg border cursor-pointer transition-colors ${D.model===e.id?"border-[var(--amber)] bg-[var(--amber)]/5":"border-border hover:bg-muted"}`,children:[(0,r.jsx)("input",{type:"radio",name:"local-model",checked:D.model===e.id,onChange:()=>t(t=>t?{...t,embedding:{...D,model:e.id}}:t),className:"accent-[var(--amber)]"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:e.label}),(0,r.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:e.desc})]})]},e.id))})}),!1===L&&!B&&(0,r.jsxs)("button",{type:"button",onClick:K,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] hover:opacity-90 transition-opacity",children:[(0,r.jsx)(u.A,{size:14}),"Download Model"]}),B&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,r.jsx)(p.A,{size:14,className:"animate-spin"}),(0,r.jsx)("span",{children:"Downloading model... This may take a minute."})]}),!0===L&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(E.A,{size:12}),(0,r.jsx)("span",{children:"Model ready"})]})]}),"api"===F&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"flex gap-2 flex-wrap",children:[{label:"OpenAI",baseUrl:"https://api.openai.com/v1",model:"text-embedding-3-small"},{label:"DeepSeek",baseUrl:"https://api.deepseek.com/v1",model:"deepseek-embed"},{label:"Ollama",baseUrl:"http://localhost:11434/v1",model:"nomic-embed-text"}].map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>{t(t=>t?{...t,embedding:{...D,baseUrl:e.baseUrl,model:e.model}}:t)},className:`px-2.5 py-1 text-xs rounded-md border transition-colors ${D.baseUrl===e.baseUrl?"border-[var(--amber)] text-[var(--amber)] bg-[var(--amber)]/10":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:e.label},e.label))}),(0,r.jsx)(S.D0,{label:"Base URL",hint:"OpenAI-compatible embedding endpoint",children:(0,r.jsx)(S.pd,{value:D.baseUrl,onChange:e=>t(t=>t?{...t,embedding:{...D,baseUrl:e.target.value}}:t),placeholder:"https://api.openai.com/v1"})}),(0,r.jsx)(S.D0,{label:"API Key",hint:"Leave empty for local providers (e.g., Ollama)",children:(0,r.jsx)(S.yA,{value:D.apiKey,onChange:e=>t(t=>t?{...t,embedding:{...D,apiKey:e}}:t),placeholder:"sk-..."})}),(0,r.jsx)(S.D0,{label:"Model",hint:"Embedding model name",children:(0,r.jsx)(S.pd,{value:D.model,onChange:e=>t(t=>t?{...t,embedding:{...D,model:e.target.value}}:t),placeholder:"text-embedding-3-small"})})]}),(0,r.jsx)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground pt-1",children:$.building?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.A,{size:12,className:"animate-spin"}),(0,r.jsx)("span",{children:"Building embedding index..."})]}):$.ready?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(E.A,{size:12,className:"text-success"}),(0,r.jsxs)("span",{children:[$.docCount," documents indexed"]})]}):(0,r.jsx)("span",{children:"Index will be built on first search"})})]})]}),(0,r.jsx)(S.L7,{icon:(0,r.jsx)(ei,{size:15}),title:i.labsTitle??"Labs",description:i.labsDesc??"Experimental features that are still in development.",children:(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)(ef,{label:i.labsEcho??"Echo",description:i.labsEchoDesc??"Reflective journaling powered by your notes.",checked:d,onChange:e=>{x(e),localStorage.setItem("mindos:labs-echo",e?"1":"0"),window.dispatchEvent(new Event("mindos:labs-changed"))}}),(0,r.jsx)(ef,{label:i.labsWorkflows??"Flows",description:i.labsWorkflowsDesc??"Visual workflow automation for agents.",checked:g,onChange:e=>{b(e),localStorage.setItem("mindos:labs-workflows",e?"1":"0"),window.dispatchEvent(new Event("mindos:labs-changed"))}})]})}),(0,r.jsx)(ev,{k:o}),(0,r.jsx)(ec.TM,{open:W,title:o.authTokenReset??"Regenerate Token",message:o.authTokenResetConfirm,confirmLabel:o.authTokenReset??"Regenerate",cancelLabel:o.cancel??"Cancel",onConfirm:()=>{Y(!1),et()},onCancel:()=>Y(!1)}),(0,r.jsx)(ec.TM,{open:Z,title:o.cleanupExamples??"Cleanup Examples",message:null!==j?o.cleanupExamplesConfirm(j):"",confirmLabel:o.cleanupExamplesButton??"Clean up",cancelLabel:o.cancel??"Cancel",variant:"destructive",onConfirm:async()=>{X(!1),w(!0);let e=await eg();w(!1),e.success&&(A(e.deleted),N(0))},onCancel:()=>X(!1)})]})}function ef({label:e,description:t,checked:s,onChange:a}){return(0,r.jsxs)("label",{className:"flex items-center gap-3 cursor-pointer group",children:[(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground block",children:e}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:t})]}),(0,r.jsx)("button",{type:"button",role:"switch","aria-checked":s,onClick:()=>a(!s),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 ${s?"bg-[var(--amber)]":"bg-muted-foreground/20"}`,children:(0,r.jsx)("span",{className:`absolute top-0.5 left-0.5 w-4 h-4 rounded-full bg-white shadow-sm transition-transform ${s?"translate-x-4":"translate-x-0"}`})})]})}function ev({k:e}){let[t,s]=(0,a.useState)(!1),[n,l]=(0,a.useState)(null),[o,i]=(0,a.useState)(!1),d=(0,a.useCallback)(async()=>{i(!0);try{let e=await (0,y.n)("/api/monitoring",{timeout:5e3});l(e)}catch{}i(!1)},[]),c=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{if(!t){c.current=!1;return}c.current||(d(),c.current=!0);let e=setInterval(d,1e4);return()=>clearInterval(e)},[t,d]),(0,r.jsxs)("div",{className:"border-t border-border pt-5",children:[(0,r.jsxs)("button",{onClick:()=>s(e=>!e),className:"flex items-center gap-1.5 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors w-full",children:[t?(0,r.jsx)(Z.A,{size:14}):(0,r.jsx)(X.A,{size:14}),(0,r.jsx)(ed.A,{size:12}),e.monitoringTitle??"System Monitoring",o&&(0,r.jsx)(p.A,{size:10,className:"animate-spin ml-1"})]}),t&&n&&(0,r.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-x-6 gap-y-2 text-xs",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorHeap??"Heap"}),(0,r.jsxs)("span",{className:"ml-2 tabular-nums",children:[em(n.system.memory.heapUsed)," / ",em(n.system.memory.heapTotal)]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorRss??"RSS"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:em(n.system.memory.rss)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorUptime??"Uptime"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:function(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let s=Math.floor(t/60);if(s<60)return`${s}m ${t%60}s`;let r=Math.floor(s/60);if(r<24)return`${r}h ${s%60}m`;let a=Math.floor(r/24);return`${a}d ${r%24}h`}(n.system.uptimeMs)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorNode??"Node"}),(0,r.jsx)("span",{className:"ml-2",children:n.system.nodeVersion})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorRequests??"Requests"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.agentRequests})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorToolCalls??"Tool Calls"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.toolExecutions})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorTokens??"Tokens"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:(n.application.totalTokens.input+n.application.totalTokens.output).toLocaleString()})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorFiles??"Files"}),(0,r.jsxs)("span",{className:"ml-2 tabular-nums",children:[n.knowledgeBase.fileCount," (",em(n.knowledgeBase.totalSizeBytes),")"]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"MCP"}),(0,r.jsx)("span",{className:"ml-2",children:n.mcp.running?e.monitorMcpRunning?.(n.mcp.port)??`Running :${n.mcp.port}`:e.monitorMcpStopped??"Stopped"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:e.monitorErrors??"Errors"}),(0,r.jsx)("span",{className:"ml-2 tabular-nums",children:n.application.errors})]})]}),t&&!n&&!o&&(0,r.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:e.monitoringFailed??"Failed to load monitoring data"})]})}var ej=s(402),ey=s(10762),eN=s(439),ek=s(15411),ew=s(7915),eS=s(70617),eC=s(51914),eA=s(49387);let ez=(0,s(37206).default)(()=>Promise.all([s.e(3013),s.e(3637)]).then(s.bind(s,63637)),{loadableGenerated:{webpack:()=>[63637]},ssr:!1});function eT({skill:e,expanded:t,onExpand:s,onToggle:a,onDelete:n,onEditStart:l,onEditSave:o,onEditCancel:i,editing:d,editContent:c,setEditContent:u,editError:h,saving:g,fullContent:b,loadingContent:f,loadErrors:v,m:j}){return(0,r.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors",onClick:()=>s(e.name),children:[t?(0,r.jsx)(Z.A,{size:12}):(0,r.jsx)(X.A,{size:12}),(0,r.jsx)("span",{className:"text-xs font-medium flex-1",children:e.name}),(0,r.jsx)("span",{className:`text-2xs px-1.5 py-0.5 rounded ${"builtin"===e.source?"bg-muted text-muted-foreground":"bg-[var(--amber-subtle)] text-[var(--amber-text)]"}`,children:"builtin"===e.source?j?.skillBuiltin??"Built-in":j?.skillUser??"Custom"}),(0,r.jsx)(S.lM,{size:"sm",checked:e.enabled,onClick:t=>{t.stopPropagation(),a(e.name,!e.enabled)}})]}),t&&(0,r.jsxs)("div",{className:"px-3 py-2 border-t border-border text-xs space-y-2 bg-muted/20",children:[(0,r.jsx)("p",{className:"text-muted-foreground",children:e.description||"No description"}),(0,r.jsx)("p",{className:"text-muted-foreground font-mono text-2xs",children:e.path}),f===e.name?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),(0,r.jsx)("span",{className:"text-2xs",children:"Loading..."})]}):b[e.name]?(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-2xs text-muted-foreground font-medium",children:j?.skillContent??"Content"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[e.editable&&d!==e.name&&(0,r.jsxs)("button",{onClick:()=>l(e.name),className:"flex items-center gap-1 text-2xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(eA.A,{size:10}),j?.editSkill??"Edit"]}),e.editable&&(0,r.jsxs)("button",{onClick:()=>n(e.name),className:"flex items-center gap-1 text-2xs text-destructive hover:underline",children:[(0,r.jsx)(m.A,{size:10}),j?.deleteSkill??"Delete"]})]})]}),d===e.name?(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("textarea",{value:c,onChange:e=>u(e.target.value),rows:Math.min(20,(c.match(/\n/g)||[]).length+3),className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y font-mono"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{onClick:()=>o(e.name),disabled:g,className:"flex items-center gap-1 px-2.5 py-1 text-xs rounded-md disabled:opacity-40 disabled:cursor-not-allowed transition-colors bg-[var(--amber)] text-[var(--amber-foreground)]",children:[g&&(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),j?.saveSkill??"Save"]}),(0,r.jsx)("button",{onClick:i,className:"px-2.5 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground transition-colors",children:j?.cancelSkill??"Cancel"})]}),h&&(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),h]})]}):(0,r.jsx)("div",{className:"w-full rounded-md border border-border bg-background/50 max-h-[300px] overflow-y-auto px-2.5 py-1.5 text-xs [&_.prose]:max-w-none [&_.prose]:text-xs [&_h1]:text-sm [&_h2]:text-xs [&_h3]:text-xs [&_pre]:text-2xs [&_code]:text-2xs",children:(0,r.jsx)(ez,{content:function(e){if(!e.startsWith("---"))return e;let t=e.indexOf("\n---",3);return -1===t?e:e.slice(t+4).replace(/^\n+/,"")}(b[e.name])})})]}):v[e.name]?(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),v[e.name]]}):null]})]})}let eM=e=>`---
2
+ name: ${e}
3
+ description: >
4
+ Describe WHEN the agent should use this
5
+ skill. Be specific about trigger conditions.
6
+ ---`,eE={general:e=>`${eM(e)}
7
+
8
+ # Instructions
9
+
10
+ ## Context
11
+ <!-- Background knowledge for the agent -->
12
+
13
+ ## Steps
14
+ 1.
15
+ 2.
16
+
17
+ ## Rules
18
+ <!-- Constraints, edge cases, formats -->
19
+ - `,"tool-use":e=>`${eM(e)}
20
+
21
+ # Instructions
22
+
23
+ ## Available Tools
24
+ <!-- List tools the agent can use -->
25
+ -
26
+
27
+ ## When to Use
28
+ <!-- Conditions that trigger this skill -->
29
+
30
+ ## Output Format
31
+ <!-- Expected response structure -->
32
+ `,workflow:e=>`${eM(e)}
33
+
34
+ # Instructions
35
+
36
+ ## Trigger
37
+ <!-- What triggers this workflow -->
38
+
39
+ ## Steps
40
+ 1.
41
+ 2.
42
+
43
+ ## Validation
44
+ <!-- How to verify success -->
45
+
46
+ ## Rollback
47
+ <!-- What to do on failure -->
48
+ `};function eR({onSave:e,onCancel:t,saving:s,error:n,m:l}){let[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(""),[u,m]=(0,a.useState)("general"),h=(e,t)=>(eE[t||u]||eE.general)(e||"my-skill");return(0,r.jsxs)("div",{className:"border border-border rounded-lg p-3 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xs font-medium",children:l?.addSkill??"+ Add Skill"}),(0,r.jsx)("button",{onClick:t,className:"p-0.5 rounded hover:bg-muted text-muted-foreground",children:(0,r.jsx)(b.A,{size:12})})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillName??"Name"}),(0,r.jsx)("input",{type:"text",value:o,onChange:e=>{let t,s;return t=e.target.value.toLowerCase().replace(/[^a-z0-9-]/g,""),s=h(o||"my-skill"),void((!d||d===s)&&c(h(t||"my-skill")),i(t))},placeholder:"my-skill",className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background font-mono text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillTemplate??"Template"}),(0,r.jsx)("div",{className:"flex rounded-md border border-border overflow-hidden w-fit",children:["general","tool-use","workflow"].map((e,t)=>(0,r.jsx)("button",{onClick:()=>{let t;return t=h(o||"my-skill",u),void(m(e),(!d||d===t)&&c(h(o||"my-skill",e)))},className:`px-2.5 py-1 text-xs transition-colors ${t>0?"border-l border-border":""} ${u===e?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:"general"===e?l?.skillTemplateGeneral??"General":"tool-use"===e?l?.skillTemplateToolUse??"Tool-use":l?.skillTemplateWorkflow??"Workflow"},e))})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-2xs text-muted-foreground",children:l?.skillContent??"Content"}),(0,r.jsx)("textarea",{value:d||h(o||"my-skill"),onChange:e=>c(e.target.value),rows:16,placeholder:"Skill instructions (markdown)...",className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y font-mono"})]}),n&&(0,r.jsxs)("p",{className:"text-2xs text-destructive flex items-center gap-1",children:[(0,r.jsx)(x.A,{size:10}),n]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{onClick:()=>e(o.trim(),d||h(o.trim()||"my-skill")),disabled:!o.trim()||s,className:"flex items-center gap-1 px-2.5 py-1 text-xs rounded-md disabled:opacity-40 disabled:cursor-not-allowed transition-colors bg-[var(--amber)] text-[var(--amber-foreground)]",children:[s&&(0,r.jsx)(p.A,{size:10,className:"animate-spin"}),l?.saveSkill??"Save"]}),(0,r.jsx)("button",{onClick:t,className:"px-2.5 py-1 text-xs rounded-md border border-border text-muted-foreground hover:text-foreground transition-colors",children:l?.cancelSkill??"Cancel"})]})]})}var eI=s(27996);function eP({t:e}){let t,s,n=e.settings?.mcp,l=(0,eS.cd)(),[o,i]=(0,a.useState)([]),[d,c]=(0,a.useState)(!0),[u,m]=(0,a.useState)(null),[x,h]=(0,a.useState)(!1),[g,f]=(0,a.useState)(!1),[v,j]=(0,a.useState)(""),[N,k]=(0,a.useState)(""),[w,S]=(0,a.useState)(!0),[C,A]=(0,a.useState)(null),[z,T]=(0,a.useState)(""),[M,E]=(0,a.useState)(""),[R,I]=(0,a.useState)({}),[P,U]=(0,a.useState)(null),[D,$]=(0,a.useState)({}),[F,L]=(0,a.useState)(!1),[O,B]=(0,a.useState)(null),_=(0,a.useCallback)(async()=>{try{let e=await (0,y.n)("/api/skills");i(e.skills),$({})}catch(t){let e=t instanceof Error?t.message:"Failed to load skills";console.error("fetchSkills error:",e),$(t=>({...t,_root:e}))}c(!1)},[]);(0,a.useEffect)(()=>{_()},[_]);let K=(0,a.useMemo)(()=>{if(!N)return o;let e=N.toLowerCase();return o.filter(t=>t.name.toLowerCase().includes(e)||t.description.toLowerCase().includes(e))},[o,N]),H=(0,a.useMemo)(()=>K.filter(e=>"user"===e.source),[K]),G=(0,a.useMemo)(()=>K.filter(e=>"builtin"===e.source),[K]),V=async(e,t)=>{if(l){await l.toggleSkill(e,t),i(s=>s.map(s=>s.name===e?{...s,enabled:t}:s));return}try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"toggle",name:e,enabled:t})}),i(s=>s.map(s=>s.name===e?{...s,enabled:t}:s)),$(t=>{let s={...t};return delete s[e],s})}catch(s){let t=s instanceof Error?s.message:"Failed to toggle skill";console.error("handleToggle error:",t),$(s=>({...s,[e]:t}))}},J=e=>{B(e)},q=async e=>{try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",name:e})}),I(t=>{let s={...t};return delete s[e],s}),C===e&&A(null),u===e&&m(null),$(t=>{let s={...t};return delete s[e],s}),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(s){let t=s instanceof Error?s.message:"Failed to delete skill";console.error("handleDelete error:",t),$(s=>({...s,[e]:t}))}},W=async e=>{if(!R[e]){U(e);try{let t=await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"read",name:e})});I(s=>({...s,[e]:t.content})),$(t=>{let s={...t};return delete s[e],s})}catch(t){$(s=>({...s,[e]:t instanceof Error?t.message:"Failed to load skill content"}))}finally{U(null)}}},Y=e=>{let t=u===e?null:e;m(t),t&&W(e),C&&C!==e&&A(null)},Q=e=>{A(e),T(R[e]||""),E("")},ee=async e=>{f(!0),E("");try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update",name:e,content:z})}),I(t=>({...t,[e]:z})),A(null),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(e){E(e instanceof Error?e.message:"Failed to save skill")}finally{f(!1)}},et=()=>{A(null),T(""),E("")},es=async(e,t)=>{if(e){f(!0),j("");try{await (0,y.n)("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create",name:e,content:t})}),h(!1),_(),window.dispatchEvent(new Event("mindos:skills-changed"))}catch(e){j(e instanceof Error?e.message:"Failed to create skill")}finally{f(!1)}}};return d?(0,r.jsx)("div",{className:"flex justify-center py-4",children:(0,r.jsx)(p.A,{size:16,className:"animate-spin text-muted-foreground"})}):(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(eo.A,{size:12,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)("input",{type:"text",value:N,onChange:e=>k(e.target.value),placeholder:n?.searchSkills??"Search skills...",className:"w-full pl-7 pr-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"}),N&&(0,r.jsx)("button",{onClick:()=>k(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:(0,r.jsx)(b.A,{size:10})})]}),(t=o.find(e=>"mindos"===e.name)?.enabled??!0?"en":"zh",s=async e=>{if(e!==t&&!F){L(!0);try{"en"===e?(await V("mindos",!0),await V("mindos-zh",!1)):(await V("mindos-zh",!0),await V("mindos",!1))}catch(e){console.error("Lang switch failed:",e)}finally{L(!1)}}},(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:n?.skillLanguage??"Skill Language"}),(0,r.jsxs)("div",{className:"flex rounded-md border border-border overflow-hidden",children:[(0,r.jsx)("button",{onClick:()=>s("en"),disabled:F,className:`px-2.5 py-1 text-xs transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${"en"===t?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:n?.skillLangEn??"English"}),(0,r.jsx)("button",{onClick:()=>s("zh"),disabled:F,className:`px-2.5 py-1 text-xs transition-colors disabled:opacity-50 disabled:cursor-not-allowed border-l border-border ${"zh"===t?"bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium":"text-muted-foreground hover:bg-muted"}`,children:n?.skillLangZh??"中文"})]})]})),0===K.length&&N&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground text-center py-3",children:n?.noSkillsMatch?n.noSkillsMatch(N):`No skills match "${N}"`}),H.length>0&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground",children:(0,r.jsxs)("span",{children:[n?.customGroup??"Custom"," (",H.length,")"]})}),(0,r.jsx)("div",{className:"space-y-1.5",children:H.map(e=>(0,r.jsx)(eT,{skill:e,expanded:u===e.name,onExpand:Y,onToggle:V,onDelete:J,onEditStart:Q,onEditSave:ee,onEditCancel:et,editing:C,editContent:z,setEditContent:T,editError:M,saving:g,fullContent:R,loadingContent:P,loadErrors:D,m:n},e.name))})]}),G.length>0&&(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium text-muted-foreground cursor-pointer hover:text-foreground transition-colors",onClick:()=>S(!w),children:[w?(0,r.jsx)(X.A,{size:12}):(0,r.jsx)(Z.A,{size:12}),(0,r.jsxs)("span",{children:[n?.builtinGroup??"Built-in"," (",G.length,")"]})]}),!w&&(0,r.jsx)("div",{className:"space-y-1.5",children:G.map(e=>(0,r.jsx)(eT,{skill:e,expanded:u===e.name,onExpand:Y,onToggle:V,onDelete:J,onEditStart:Q,onEditSave:ee,onEditCancel:et,editing:C,editContent:z,setEditContent:T,editError:M,saving:g,fullContent:R,loadingContent:P,loadErrors:D,m:n},e.name))})]}),x?(0,r.jsx)(eR,{onSave:es,onCancel:()=>{h(!1),j("")},saving:g,error:v,m:n}):(0,r.jsxs)("button",{onClick:()=>h(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(eC.A,{size:12}),n?.addSkill??"+ Add Skill"]}),(0,r.jsx)(eU,{agents:l?.agents??[],skillName:o.find(e=>"mindos"===e.name)?.enabled??!0?"mindos":"mindos-zh",m:n}),(0,r.jsx)(ec.TM,{open:!!O,title:"Delete skill?",message:O?n?.skillDeleteConfirm?.(O)??`Delete skill "${O}"?`:"",confirmLabel:"Delete",cancelLabel:"Cancel",variant:"destructive",onConfirm:async()=>{B(null),await q(O)},onCancel:()=>B(null)})]})}function eU({agents:e,skillName:t,m:s}){let[n,l]=(0,a.useState)("claude-code"),o=`npx skills add GeminiLight/MindOS --skill ${t} -a ${n} -g -y`,i=`~/.agents/skills/${t}/SKILL.md`,d=async()=>{await (0,eu.l)(o)&&U.oR.copy()},c=e.filter(e=>e.present&&e.installed),u=e.filter(e=>e.present&&!e.installed),m=e.filter(e=>!e.present);return(0,r.jsxs)("div",{className:"border-t border-border pt-3 mt-3 space-y-2.5",children:[(0,r.jsx)("p",{className:"text-2xs font-medium text-muted-foreground",children:s?.cliInstallHint??"Install via CLI:"}),(0,r.jsx)(eI.A,{value:n,onChange:l,size:"sm",options:[...c.length>0?[{label:s?.connectedGroup??"Connected",options:c.map(e=>({value:e.key,label:e.name}))}]:[],...u.length>0?[{label:s?.detectedGroup??"Detected",options:u.map(e=>({value:e.key,label:e.name}))}]:[],...m.length>0?[{label:s?.notFoundGroup??"Not Installed",options:m.map(e=>({value:e.key,label:e.name}))}]:[]]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("code",{className:"flex-1 text-[10px] font-mono bg-muted/50 border border-border rounded-lg px-2.5 py-2 text-muted-foreground select-all overflow-x-auto whitespace-nowrap",children:o}),(0,r.jsx)("button",{onClick:d,className:"p-1.5 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:(0,r.jsx)(el.A,{size:11})})]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground",children:[s?.skillPathHint??"Skill files installed at:"," ",(0,r.jsx)("code",{className:"font-mono text-[10px] bg-muted px-1 py-0.5 rounded",children:i})]})]})}var eD=s(32967);function e$(e){return Array.isArray(e)?new Set(e):new Set}function eF(){let[e,t]=(0,a.useState)([]),[s,n]=(0,a.useState)(!0),[l,o]=(0,a.useState)(null),[i,d]=(0,a.useState)(null),c=(0,a.useCallback)(async()=>{try{let e=await (0,y.n)("/api/mcp/tools");t(e.servers)}catch{t([])}n(!1)},[]);(0,a.useEffect)(()=>{c()},[c]);let u=async(e,s,r)=>{d(e);try{let a="all"===s||"select"===s&&(r??[]);await (0,y.n)("/api/mcp/direct-tools",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({server:e,directTools:a})}),t(t=>t.map(t=>t.name===e?{...t,directTools:a}:t)),U.oR.success("Saved")}catch{U.oR.error("Failed to save")}d(null)},m=async(t,s,r)=>{let a=e.find(e=>e.name===t);if(!a)return;let n=e$(a.directTools);r?n.add(s):n.delete(s);let l=[...n];await u(t,l.length>0?"select":"proxy",l)};return s?(0,r.jsx)("div",{className:"flex justify-center py-4",children:(0,r.jsx)(p.A,{size:16,className:"animate-spin text-muted-foreground"})}):0===e.length?(0,r.jsx)("div",{className:"px-1 py-3",children:(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["No external MCP servers configured. Add servers to ",(0,r.jsx)("code",{className:"text-2xs bg-muted px-1 py-0.5 rounded",children:"~/.mindos/mcp.json"})," to get started."]})}):(0,r.jsxs)("div",{className:"space-y-1.5",children:[e.map(e=>{var t;let s=!0===(t=e.directTools)?"all":Array.isArray(t)&&t.length>0?"select":"proxy",a=e$(e.directTools),n=l===e.name,d=i===e.name;return(0,r.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>o(n?null:e.name),className:"w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-muted/30 transition-colors",children:[n?(0,r.jsx)(Z.A,{size:12,className:"text-muted-foreground shrink-0"}):(0,r.jsx)(X.A,{size:12,className:"text-muted-foreground shrink-0"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground truncate",children:e.name}),(0,r.jsxs)("span",{className:"text-2xs text-muted-foreground",children:[e.toolCount," ",1===e.toolCount?"tool":"tools"]}),(0,r.jsx)("div",{className:"flex-1"}),(0,r.jsx)(eL,{mode:s,count:a.size}),d&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"})]}),n&&(0,r.jsxs)("div",{className:"border-t border-border bg-muted/10 px-3 py-2.5 space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(eO,{active:"proxy"===s,onClick:()=>u(e.name,"proxy"),icon:(0,r.jsx)(eN.A,{size:11}),label:"Proxy only"}),(0,r.jsx)(eO,{active:"all"===s,onClick:()=>u(e.name,"all"),icon:(0,r.jsx)(R.A,{size:11}),label:"All direct"}),(0,r.jsx)(eO,{active:"select"===s,onClick:()=>{"select"!==s&&u(e.name,"select",[])},icon:(0,r.jsx)(eD.A,{size:11}),label:"Select"})]}),e.tools.length>0&&("select"===s||"all"===s)&&(0,r.jsx)("div",{className:"space-y-0.5 max-h-48 overflow-y-auto",children:e.tools.map(t=>{let n="all"===s||a.has(t.name);return(0,r.jsxs)("label",{className:"flex items-start gap-2 px-2 py-1 rounded hover:bg-muted/30 cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:n,disabled:"all"===s,onChange:s=>m(e.name,t.name,s.target.checked),className:"mt-0.5 w-3 h-3 rounded accent-[var(--amber)] cursor-pointer"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("span",{className:"text-xs font-mono text-foreground",children:t.name}),t.description&&(0,r.jsx)("p",{className:"text-2xs text-muted-foreground line-clamp-1",children:t.description})]})]},t.name)})}),!e.cached&&(0,r.jsx)("p",{className:"text-2xs text-muted-foreground italic",children:"Tool list not yet cached. Tools will appear after the first connection."})]})]},e.name)}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground px-1 pt-1 leading-relaxed",children:[(0,r.jsx)("strong",{children:"Direct"})," tools (~150 tokens each) can be called directly by the agent."," ",(0,r.jsx)("strong",{children:"Proxy"})," tools (~200 tokens total) require ",(0,r.jsx)("code",{className:"text-2xs bg-muted px-0.5 rounded",children:"mcp({search/call})"})," but save context."," ","Changes take effect on the next agent session."]})]})}function eL({mode:e,count:t}){return"all"===e?(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:"All direct"}):"select"===e&&t>0?(0,r.jsxs)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:[t," direct"]}):(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-muted text-muted-foreground font-medium leading-none",children:"Proxy only"})}function eO({active:e,onClick:t,icon:s,label:a}){return(0,r.jsxs)("button",{type:"button",onClick:t,className:`flex items-center gap-1 px-2 py-1 rounded-md text-2xs font-medium transition-colors ${e?"bg-[var(--amber-subtle)] text-[var(--amber-text)] border border-[var(--amber)]/30":"bg-muted/50 text-muted-foreground border border-border/50 hover:bg-muted hover:text-foreground"}`,children:[s,a]})}var eB=s(97233);let e_=(0,i.A)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var eK=s(13845);function eH({agents:e,t,onRefresh:s,mode:n="mcp",activeSkillName:l="mindos"}){let o=t.settings?.mcp,[i,d]=(0,a.useState)(new Set),[c,u]=(0,a.useState)("auto"),[m,h]=(0,a.useState)("http://localhost:8781/mcp"),[b,f]=(0,a.useState)(""),[v,j]=(0,a.useState)({}),[N,k]=(0,a.useState)(!1),[w,C]=(0,a.useState)(null),A=async()=>{if(0!==i.size){k(!0),C(null);try{let t={agents:[...i].map(t=>{let s=e.find(e=>e.key===t),r="auto"===c?s?.preferredTransport||"stdio":c;return{key:t,scope:v[t]||(s?.hasProjectScope?"project":"global"),transport:r}}),transport:c,..."http"===c?{url:m,token:b}:{},..."auto"===c?{url:m,token:b}:{}},r=await (0,y.n)("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=r.results.filter(e=>"ok"===e.status).length,n=r.results.filter(e=>"error"===e.status);n.length>0?C({type:"error",text:n.map(e=>`${e.agent}: ${e.message}`).join("; ")}):C({type:"success",text:o?.installSuccess?o.installSuccess(a):`${a} agent(s) configured`}),d(new Set),s()}catch{C({type:"error",text:o?.installFailed??"Install failed"})}finally{k(!1),setTimeout(()=>C(null),4e3)}}},z="http"===c||"auto"===c&&[...i].some(t=>{let s=e.find(e=>e.key===t);return s?.preferredTransport==="http"});return"cli"===n?(0,r.jsx)(eG,{agents:e,m:o,activeSkillName:l}):(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:o?.mcpInstallDesc??"Install MCP config + Skill to detected agents on this machine."}),(0,r.jsx)("div",{className:"space-y-1",children:e.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-3 py-1.5 text-sm",children:[(0,r.jsx)("input",{type:"checkbox",checked:i.has(e.key),onChange:()=>{var t;return t=e.key,void d(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},className:"form-check"}),(0,r.jsx)("span",{className:"w-28 shrink-0 text-xs",children:e.name}),(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded font-mono bg-muted",children:"auto"===c?e.preferredTransport:c}),e.installed?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-success/15 text-success font-mono",children:e.transport}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground",children:e.scope})]}):(0,r.jsx)("span",{className:"text-2xs text-muted-foreground",children:e.present?o?.detected??"Detected":o?.notFound??"Not found"}),i.has(e.key)&&e.hasProjectScope&&e.hasGlobalScope&&(0,r.jsx)(eI.A,{value:v[e.key]||"project",onChange:t=>j({...v,[e.key]:t}),size:"sm",className:"ml-auto",options:[{value:"project",label:o?.project??"Project"},{value:"global",label:o?.global??"Global"}]})]},e.key))}),(0,r.jsxs)("div",{className:"flex gap-2 text-xs pt-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>d(new Set(e.filter(e=>!e.installed&&e.present).map(e=>e.key))),className:"px-2.5 py-1 rounded-md border border-[var(--amber)] text-[var(--amber)] transition-colors hover:bg-muted/50",children:o?.selectDetected??"Select Detected"}),(0,r.jsx)("button",{type:"button",onClick:()=>d(new Set),className:"px-2.5 py-1 rounded-md border border-border text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground",children:o?.clearSelection??"Clear"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-4 text-xs pt-1",children:[(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"auto"===c,onChange:()=>u("auto"),className:"form-radio"}),o?.transportAuto??"auto (recommended)"]}),(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"stdio"===c,onChange:()=>u("stdio"),className:"form-radio"}),o?.transportStdio??"stdio"]}),(0,r.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,r.jsx)("input",{type:"radio",name:"transport",checked:"http"===c,onChange:()=>u("http"),className:"form-radio"}),o?.transportHttp??"http"]})]}),z&&(0,r.jsxs)("div",{className:"space-y-2 pl-5 text-xs",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-muted-foreground",children:o?.httpUrl??"MCP URL"}),(0,r.jsx)("input",{type:"text",value:m,onChange:e=>h(e.target.value),className:"w-full px-2.5 py-1.5 text-xs rounded-md border border-border bg-background font-mono text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring"})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("label",{className:"text-muted-foreground",children:o?.httpToken??"Auth Token"}),(0,r.jsx)(S.yA,{value:b,onChange:f,placeholder:"Bearer token",size:"sm"})]})]}),(0,r.jsxs)("button",{onClick:A,disabled:0===i.size||N,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg transition-colors disabled:opacity-40 disabled:cursor-not-allowed bg-[var(--amber)] text-[var(--amber-foreground)]",children:[N&&(0,r.jsx)(p.A,{size:12,className:"animate-spin"}),N?o?.installing??"Installing...":o?.installSelected??"Install Selected"]}),w&&(0,r.jsx)("div",{className:"flex items-center gap-1.5 text-xs",role:"status",children:"success"===w.type?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:w.text})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:w.text})]})})]})}function eG({agents:e,m:t,activeSkillName:s}){let[n,l]=(0,a.useState)(e[0]?.key??"claude-code"),o=e.find(e=>e.key===n),i=`npx skills add GeminiLight/MindOS --skill ${s} -a ${n} -g -y`,d=async()=>{await (0,eu.l)(i)&&U.oR.copy()},c=e.filter(e=>e.present&&e.installed),u=e.filter(e=>e.present&&!e.installed),m=e.filter(e=>!e.present);return(0,r.jsxs)("div",{className:"space-y-3 pt-2",children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:t?.cliInstallDesc??"Install the MindOS Skill to your agent so it can operate your knowledge base."}),(0,r.jsx)(eI.A,{value:n,onChange:l,size:"sm",options:[...c.length>0?[{label:t?.connectedGroup??"Connected",options:c.map(e=>({value:e.key,label:e.name}))}]:[],...u.length>0?[{label:t?.detectedGroup??"Detected",options:u.map(e=>({value:e.key,label:e.name}))}]:[],...m.length>0?[{label:t?.notFoundGroup??"Not Installed",options:m.map(e=>({value:e.key,label:e.name}))}]:[]]}),o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-2xs",children:[o.present&&o.installed?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10})," ",t?.tagConnected??"Connected"]}):o.present?(0,r.jsx)("span",{className:"text-muted-foreground",children:t?.detected??"Detected"}):(0,r.jsx)("span",{className:"text-muted-foreground",children:t?.notFound??"Not found"}),null!=o.installedSkillCount&&o.installedSkillCount>0&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:[o.installedSkillCount," ",t?.skillsInstalled??"skills installed"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("code",{className:"flex-1 text-[10px] font-mono bg-muted/50 border border-border rounded-lg px-2.5 py-2 text-muted-foreground select-all overflow-x-auto whitespace-nowrap",children:i}),(0,r.jsx)("button",{onClick:d,className:"p-1.5 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:(0,r.jsx)(el.A,{size:11})})]})]})}let eV={checking:!1,available:null,isSelf:!1,suggestion:null};function eJ({m:e}){let[t,s]=(0,a.useState)(0),[n,l]=(0,a.useState)(0),[i,d]=(0,a.useState)(eV),[c,u]=(0,a.useState)(!1),m=(0,a.useRef)(void 0),x=(0,a.useRef)(void 0);(0,a.useEffect)(()=>{(0,y.n)("/api/settings").then(e=>{let t=e.mcpPort||8781;s(t),l(t)}).catch(()=>{})},[]),(0,a.useEffect)(()=>()=>{clearTimeout(m.current),clearInterval(x.current)},[]);let h=n!==t,b=n<1024||n>65535,f=i.checking||!1===i.available&&!i.isSelf,v=(0,a.useCallback)(async e=>{if(e<1024||e>65535)return void d({...eV,available:!1,invalid:!0});d({...eV,checking:!0});try{let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})});d({checking:!1,available:t.available,isSelf:t.isSelf??!1,suggestion:t.suggestion??null})}catch{d(eV)}},[]),j=async()=>{if(h&&!b&&!f&&!c){u(!0);try{let t=await (0,y.n)("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:n})});if(!t.available&&!t.isSelf){d({checking:!1,available:!1,isSelf:!1,suggestion:t.suggestion??null}),u(!1),U.oR.error(e.portInUse(n));return}await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mcpPort:n})});try{await (0,y.n)("/api/mcp/restart",{method:"POST"})}catch{u(!1),U.oR.error(e.portUpdateFailed);return}let r=Date.now()+6e4;x.current=setInterval(async()=>{if(Date.now()>r){clearInterval(x.current),u(!1),U.oR.error(e.portRestartTimeout);return}try{(await (0,y.n)("/api/mcp/status",{timeout:3e3})).running&&(clearInterval(x.current),u(!1),s(n),U.oR.success(e.portUpdateSuccess))}catch{}},3e3)}catch{u(!1),U.oR.error(e.portUpdateFailed)}}};return 0===t?null:(0,r.jsxs)("div",{className:"rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 bg-muted/30",children:[(0,r.jsx)(o.A,{size:11,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:e.mcpPortLabel})]}),(0,r.jsxs)("div",{className:"px-3 py-2.5 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"number",min:1024,max:65535,value:n,onChange:e=>{let t=parseInt(e.target.value,10)||n;l(t),d(eV),clearTimeout(m.current),t>=1024&&t<=65535&&(m.current=setTimeout(()=>v(t),500))},onBlur:()=>{clearTimeout(m.current),n>=1024&&n<=65535&&v(n)},className:"flex-1 px-2.5 py-1.5 text-sm rounded-lg border border-border bg-muted/30 text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring tabular-nums"}),(0,r.jsx)("button",{type:"button",onClick:j,disabled:!h||b||f||c,className:"px-3 py-1.5 rounded-lg text-xs font-medium transition-colors shrink-0 bg-[var(--amber)] text-[var(--amber-foreground)] hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:c?(0,r.jsx)(p.A,{size:12,className:"animate-spin"}):e.portUpdateBtn})]}),i.checking&&(0,r.jsxs)("p",{className:"text-2xs flex items-center gap-1 text-muted-foreground",children:[(0,r.jsx)(p.A,{size:10,className:"animate-spin"})," ",e.portChecking]}),!i.checking&&!1===i.available&&!i.invalid&&(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("p",{className:"text-2xs flex items-center gap-1 text-[var(--amber)]",children:[(0,r.jsx)(P.A,{size:10})," ",e.portInUse(n)]}),null!==i.suggestion&&(0,r.jsx)("button",{type:"button",onClick:()=>{l(i.suggestion),d(eV),setTimeout(()=>v(i.suggestion),0)},className:"text-2xs px-1.5 py-0.5 rounded border border-[var(--amber)] text-[var(--amber)] transition-colors hover:bg-[var(--amber-subtle)]",children:e.portSuggest(i.suggestion)})]}),!i.checking&&i.invalid&&(0,r.jsxs)("p",{className:"text-2xs flex items-center gap-1 text-destructive",children:[(0,r.jsx)(P.A,{size:10})," 1024 – 65535"]}),!i.checking&&!0===i.available&&(0,r.jsxs)("p",{className:"text-2xs flex items-center gap-1 text-success",children:[(0,r.jsx)(g.A,{size:10})," ",i.isSelf?e.portSelf:e.portAvailable]})]})]})}function eq(){let[e,t]=(0,a.useState)(null);return(0,a.useEffect)(()=>{if(!e)return;let s=setTimeout(()=>t(null),2e3);return()=>clearTimeout(s)},[e]),{copiedField:e,handleCopy:(0,a.useCallback)(async(e,s)=>{!e||await (0,eu.l)(e)&&(t(s),U.oR.copy())},[])}}function eW({mode:e,onModeChange:t,status:s,agents:a,connectedAgents:n,detectedAgents:o,notFoundAgents:i,currentAgent:d,selectedAgent:c,onSelectAgent:u,restarting:m,onRestart:x,onRefresh:p,activeSkillName:h,mcpEnabled:g,m:b,t:f}){if(!s)return null;let v=g?e:"cli";return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-[var(--amber-subtle)] flex items-center justify-center shrink-0",children:(0,r.jsx)(eB.A,{size:14,className:"text-[var(--amber)]"})}),(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:b?.connectionTitle??"Connect Agents"})]}),g?(0,r.jsxs)("div",{className:"grid grid-cols-2 mx-4 mb-3 rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("button",{onClick:()=>t("cli"),className:`flex flex-col items-start px-3 py-2.5 text-left transition-colors ${"cli"===v?"bg-muted":"hover:bg-muted/50"}`,children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(ey.A,{size:12,className:"cli"===v?"text-[var(--amber)]":"text-muted-foreground"}),(0,r.jsx)("span",{className:`text-xs font-semibold ${"cli"===v?"text-foreground":"text-muted-foreground"}`,children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:b?.recommended??"Recommended"})]}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground mt-0.5",children:b?.cliAgents??"Claude Code \xb7 Gemini CLI \xb7 Codex"})]}),(0,r.jsxs)("button",{onClick:()=>t("mcp"),className:`flex flex-col items-start px-3 py-2.5 text-left transition-colors border-l border-border ${"mcp"===v?"bg-muted":"hover:bg-muted/50"}`,children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(l.A,{size:12,className:"mcp"===v?"text-foreground":"text-muted-foreground"}),(0,r.jsx)("span",{className:`text-xs font-semibold ${"mcp"===v?"text-foreground":"text-muted-foreground"}`,children:"MCP"})]}),(0,r.jsx)("span",{className:"text-2xs text-muted-foreground mt-0.5",children:b?.mcpAgents??"Claude Desktop \xb7 Cursor"})]})]}):(0,r.jsx)("div",{className:"mx-4 mb-3 px-3 py-2 rounded-lg border border-border bg-muted/30",children:(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(ey.A,{size:12,className:"text-[var(--amber)]"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-medium leading-none",children:b?.recommended??"Recommended"})]})}),(0,r.jsx)("div",{className:"px-4 pb-4 space-y-4",children:"cli"===v?(0,r.jsx)(eY,{status:s,activeSkillName:h,agents:a,connectedAgents:n,detectedAgents:o,notFoundAgents:i,onRefresh:p,m:b,t:f}):(0,r.jsx)(eZ,{status:s,agents:a,activeSkillName:h,connectedAgents:n,detectedAgents:o,notFoundAgents:i,currentAgent:d,selectedAgent:c,onSelectAgent:u,restarting:m,onRestart:x,onRefresh:p,m:b,t:f})})]})}function eY({status:e,activeSkillName:t,agents:s,connectedAgents:a,detectedAgents:n,notFoundAgents:l,onRefresh:o,m:i,t:d}){let{copiedField:c,handleCopy:u}=eq(),m=e.authConfigured&&!!e.authToken,x=e.localIP||"localhost",p=window.location.port||"3456",h=`http://${x}:${p}`,b=e.maskedToken??"";return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:i?.localTitle??"Local"}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-2xs font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10}),i?.localReady??"Ready to use"]})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:i?.cliLocalDesc??"MindOS Skill is built-in. Install the CLI and you're good to go."}),(0,r.jsx)(e1,{code:"mindos file list",label:i?.cliSkillVerify??"Verify",onCopy:u,copiedField:c,fieldId:"cli-verify"}),s.length>0&&(0,r.jsx)(eX,{icon:(0,r.jsx)(e_,{size:12,className:"text-muted-foreground"}),title:i?.detectedAgentsTitle??"Detected Agents",badge:`${a.length+n.length}/${s.length}`,children:(0,r.jsx)(eH,{agents:s,t:d,onRefresh:o,mode:"cli",activeSkillName:t})})]}),(0,r.jsxs)("div",{className:"border-t border-border pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(V.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:i?.remoteTitle??"Remote Access"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:i?.cliRemoteDesc??"Install the CLI on another machine and connect to this MindOS server."}),(0,r.jsx)(eQ,{step:"1",label:i?.cliSkillInstall??"Install",children:(0,r.jsx)(e1,{code:"npm install -g @geminilight/mindos",onCopy:u,copiedField:c,fieldId:"cli-install",compact:!0})}),(0,r.jsx)(eQ,{step:"2",label:i?.cliRemoteConfigure??"Configure",children:(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)(e1,{code:`mindos config set url ${h}`,onCopy:u,copiedField:c,fieldId:"cli-url",compact:!0}),(0,r.jsx)(e1,{code:`mindos config set authToken ${m?b:"<token>"}`,onCopy:(t,s)=>{u(`mindos config set authToken ${e.authToken??"<token>"}`,s)},copiedField:c,fieldId:"cli-token",compact:!0,hint:m?i?.tokenCopyFullHint??"Copies full token":void 0})]})}),(0,r.jsx)(eQ,{step:"3",label:i?.cliInstallSkill??"Install Skill",children:(0,r.jsx)(e1,{code:`npx skills add GeminiLight/MindOS --skill ${t} -g -y`,onCopy:u,copiedField:c,fieldId:"cli-skill",compact:!0})}),(0,r.jsx)(eQ,{step:"4",label:i?.cliSkillVerify??"Verify",children:(0,r.jsx)(e1,{code:"mindos file list",onCopy:u,copiedField:c,fieldId:"cli-remote-verify",compact:!0})})]})]})}function eZ({status:e,agents:t,activeSkillName:s,connectedAgents:n,detectedAgents:l,notFoundAgents:o,currentAgent:i,selectedAgent:d,onSelectAgent:c,restarting:u,onRestart:m,onRefresh:p,m:h,t:b}){let{copiedField:f,handleCopy:v}=eq(),j=e.authConfigured&&!!e.authToken,y=e.localIP||"localhost",N=`http://${y}:${e.port}/mcp`,k=(0,a.useMemo)(()=>i?(0,eK.$k)(i,e,"stdio"):null,[i,e]),S=(0,a.useMemo)(()=>i?(0,eK.$k)(i,e,"http"):null,[i,e]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e0,{status:e,restarting:u,onRestart:m,onRefresh:p,m:h}),h&&(0,r.jsx)(eJ,{m:h}),(0,r.jsxs)("div",{className:"space-y-2.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:12,className:e.running?"text-success":"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:h?.localTitle??"Local"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:h?.mcpLocalDesc??"Copy the config snippet and paste into your agent's MCP settings."}),t.length>0&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)(eI.A,{value:d,onChange:c,options:[...n.length>0?[{label:h?.connectedGroup??"Connected",options:n.map(e=>({value:e.key,label:e.name}))}]:[],...l.length>0?[{label:h?.detectedGroup??"Detected",options:l.map(e=>({value:e.key,label:e.name}))}]:[],...o.length>0?[{label:h?.notFoundGroup??"Not Installed",options:o.map(e=>({value:e.key,label:e.name}))}]:[]]}),i&&k&&(0,r.jsxs)(r.Fragment,{children:[i.present&&i.installed&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-2xs font-medium bg-success/10 text-success",children:[(0,r.jsx)(g.A,{size:10})," ",h?.tagConnected??"Connected"]}),(0,r.jsx)("pre",{className:"text-[11px] font-mono bg-muted/50 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre select-all max-h-[200px] overflow-y-auto",children:k.displaySnippet}),(0,r.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,r.jsxs)("button",{onClick:async()=>{await (0,eu.l)(k.snippet)&&U.oR.copy()},className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:[(0,r.jsx)(el.A,{size:14})," ",h?.copyConfig??"Copy"]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,r.jsx)("span",{className:"font-mono text-muted-foreground truncate text-2xs",children:k.path})]})]})]})]}),t.length>0&&(0,r.jsx)(eX,{icon:(0,r.jsx)(e_,{size:12,className:"text-muted-foreground"}),title:h?.detectedAgentsTitle??"Detected Agents",badge:`${n.length+l.length}/${t.length}`,children:(0,r.jsx)(eH,{agents:t,t:b,onRefresh:p,mode:"mcp",activeSkillName:s})}),(0,r.jsxs)("div",{className:"border-t border-border pt-3 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(V.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:h?.remoteTitle??"Remote Access"})]}),!j&&(0,r.jsxs)("p",{className:"flex items-center gap-1.5 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:12})," ",h?.noAuthWarning??"Set an Auth Token in Settings → General before enabling remote access."]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:h?.serverUrl??"MCP Server URL"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 px-2.5 py-1.5 bg-muted/50 border border-border rounded-lg",children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground select-all truncate",children:N}),(0,r.jsx)(e2,{onCopy:()=>v(N,"mcp-url"),copied:"mcp-url"===f,size:"sm"})]})]}),t.length>0&&i&&S&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("pre",{className:"text-[11px] font-mono bg-muted/50 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre select-all max-h-[200px] overflow-y-auto",children:S.displaySnippet}),(0,r.jsxs)("div",{className:"flex items-center gap-3 text-sm",children:[(0,r.jsxs)("button",{onClick:async()=>{await (0,eu.l)(S.snippet)&&U.oR.copy()},className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors shrink-0",children:[(0,r.jsx)(el.A,{size:14})," ",h?.copyConfig??"Copy"]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,r.jsx)("span",{className:"font-mono text-muted-foreground truncate text-2xs",children:S.path})]})]})]})]})}function eX({icon:e,title:t,badge:s,defaultOpen:n=!1,children:l}){let[o,i]=(0,a.useState)(n);return(0,r.jsxs)("div",{className:"rounded-lg border border-border overflow-hidden",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>i(e=>!e),className:"flex items-center gap-2 w-full px-3 py-2 text-left bg-muted/30 hover:bg-muted/60 transition-colors",children:[o?(0,r.jsx)(Z.A,{size:11,className:"text-muted-foreground"}):(0,r.jsx)(X.A,{size:11,className:"text-muted-foreground"}),e,(0,r.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:t}),s&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/70 ml-auto",children:s})]}),o&&(0,r.jsx)("div",{className:"px-3 py-2.5 border-t border-border",children:l})]})}function eQ({step:e,label:t,children:s}){return(0,r.jsxs)("div",{className:"space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"w-4 h-4 rounded-full bg-muted flex items-center justify-center text-2xs font-semibold text-muted-foreground shrink-0",children:e}),(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:t})]}),(0,r.jsx)("div",{className:"pl-6",children:s})]})}function e0({status:e,restarting:t,onRestart:s,onRefresh:a,m:n}){return(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 rounded-lg border border-border bg-muted/30",children:[(0,r.jsx)("div",{className:"flex items-center gap-2 text-xs",children:t?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.A,{size:11,className:"animate-spin text-[var(--amber)]"}),(0,r.jsx)("span",{className:"text-[var(--amber)]",children:n?.restarting??"Restarting..."})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${e.running?"bg-success":"bg-muted-foreground"}`}),(0,r.jsxs)("span",{className:"font-medium text-foreground",children:["MCP ",e.running?n?.running??"Running":n?.stopped??"Stopped"]}),e.running&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"\xb7"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",e.port]}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"\xb7"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[e.toolCount," ",n?.tools??"tools"]})]})]})}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[!e.running&&!t&&(0,r.jsxs)("button",{onClick:s,className:"flex items-center gap-1 px-2 py-1 text-2xs rounded-md font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(h.A,{size:11})," ",n?.restart??"Restart"]}),(0,r.jsx)("button",{onClick:a,className:"p-1 rounded-md border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:(0,r.jsx)(c.A,{size:11})})]})]})}function e1({label:e,code:t,onCopy:s,copiedField:a,fieldId:n,compact:l,hint:o}){return(0,r.jsxs)("div",{className:l?"":"space-y-1",children:[e&&(0,r.jsx)("span",{className:"text-2xs font-medium text-muted-foreground uppercase tracking-wider",children:e}),(0,r.jsxs)("div",{className:`flex items-center gap-2 ${l?"px-2.5 py-1.5":"px-3 py-2"} bg-muted/50 border border-border rounded-lg`,children:[(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground select-all truncate",children:t}),o&&(0,r.jsx)("span",{className:"text-2xs text-muted-foreground/60 shrink-0 hidden sm:inline",children:o}),(0,r.jsx)(e2,{onCopy:()=>s(t,n),copied:a===n,size:"sm"})]})]})}function e2({onCopy:e,copied:t,title:s,size:a}){let n="sm"===a?11:14;return(0,r.jsx)("button",{type:"button",onClick:e,title:s??"Copy",className:`shrink-0 ${"sm"===a?"p-1":"p-2"} rounded-lg border transition-colors focus-visible:ring-2 focus-visible:ring-ring ${t?"border-success/50 bg-success/10 text-success":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"}`,children:t?(0,r.jsx)(E.A,{size:n}):(0,r.jsx)(el.A,{size:n})})}function e5({t:e}){let t=(0,eS.cd)(),s=e.settings?.mcp,[o,i]=(0,a.useState)("cli"),[d,c]=(0,a.useState)(!1),[u,m]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),g=(0,a.useRef)(void 0),b=t?.status?.connectionMode,f=b?.mcp??!1;if((0,a.useEffect)(()=>()=>clearInterval(g.current),[]),!t||t.loading)return(0,r.jsx)("div",{className:"flex justify-center py-8",children:(0,r.jsx)(p.A,{size:18,className:"animate-spin text-muted-foreground"})});let v=t.agents.filter(e=>e.present&&e.installed),j=t.agents.filter(e=>e.present&&!e.installed),N=t.agents.filter(e=>!e.present),k=u||(t.agents[0]?.key??""),w=t.agents.find(e=>e.key===k),S=t.skills?.find(e=>"mindos"===e.name)?.enabled??!0,C=async e=>{h(!0);try{await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionMode:{cli:!0,mcp:e}})}),await t.refresh(),e&&i("mcp")}catch{U.oR.error("Failed to toggle connection mode")}finally{h(!1)}},A=async()=>{c(!0);try{await (0,y.n)("/api/mcp/restart",{method:"POST"})}catch(e){console.error("[McpTab] Restart request failed:",e),c(!1);return}let e=Date.now()+6e4;clearInterval(g.current),g.current=setInterval(async()=>{if(Date.now()>e){clearInterval(g.current),c(!1);return}try{(await (0,y.n)("/api/mcp/status",{timeout:3e3})).running&&(clearInterval(g.current),c(!1),t.refresh())}catch{}},3e3)};return(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(e3,{mcpEnabled:f,onToggle:C,saving:x,mcpRunning:t.status?.running??!1,m:s}),(0,r.jsx)(e4,{status:t.status,m:s}),(0,r.jsx)(eW,{mode:o,onModeChange:i,status:t.status,agents:t.agents,connectedAgents:v,detectedAgents:j,notFoundAgents:N,currentAgent:w??null,selectedAgent:k,onSelectAgent:m,restarting:d,onRestart:A,onRefresh:t.refresh,activeSkillName:S?"mindos":"mindos-zh",mcpEnabled:f,m:s,t:e}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(l.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:s?.externalToolsTitle??"External MCP Tools"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.externalToolsDesc??"Configure tool access mode for external MCP servers."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:(0,r.jsx)(eF,{})})]}),(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(n.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:s?.skillsTitle??"Skills"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.skillsDesc??"Teach agents how to operate your knowledge base."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:(0,r.jsx)(eP,{t:e})})]})]})}function e3({mcpEnabled:e,onToggle:t,saving:s,mcpRunning:a,m:n}){return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-[var(--amber-subtle)] flex items-center justify-center shrink-0",children:(0,r.jsx)(l.A,{size:14,className:"text-[var(--amber)]"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:n?.modeCardTitle??"Connection Mode"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:n?.modeCardDesc??"Choose how agents connect to MindOS."})]})]}),(0,r.jsxs)("div",{className:"px-4 pb-4 space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2.5 rounded-lg bg-muted/30 border border-border/50",children:[(0,r.jsx)("input",{type:"checkbox",checked:!0,disabled:!0,className:"w-3.5 h-3.5 rounded accent-[var(--amber)]"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(ey.A,{size:12,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"CLI"}),(0,r.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded-full bg-success/10 text-success font-medium leading-none",children:n?.alwaysOn??"Always On"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:n?.cliModeDesc??"Claude Code, Gemini CLI, Codex, etc."})]})]}),(0,r.jsxs)("label",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg border cursor-pointer transition-colors ${e?"border-[var(--amber)]/40 bg-[var(--amber)]/[0.03]":"border-border/50 bg-muted/30 hover:bg-muted/50"}`,children:[(0,r.jsx)("input",{type:"checkbox",checked:e,disabled:s,onChange:e=>t(e.target.checked),className:"w-3.5 h-3.5 rounded accent-[var(--amber)] cursor-pointer"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(l.A,{size:12,className:e?"text-[var(--amber)]":"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-semibold text-foreground",children:"MCP"}),e&&(0,r.jsx)("span",{className:`text-2xs px-1.5 py-0.5 rounded-full font-medium leading-none ${a?"bg-success/10 text-success":"bg-[var(--amber-subtle)] text-[var(--amber-text)]"}`,children:a?n?.mcpRunning??"Running":n?.mcpStopped??"Stopped"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:n?.mcpModeDesc??"Claude Desktop, Cursor, Windsurf, etc."})]}),s&&(0,r.jsx)(p.A,{size:14,className:"animate-spin text-[var(--amber)] shrink-0"})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground px-1 leading-relaxed",children:e?n?.mcpEnabledHint??"MCP mode enabled. Disable to simplify the interface if you only use CLI agents.":n?.mcpDisabledHint??"Enable MCP to connect Desktop clients like Claude Desktop or Cursor."})]})]})}function e4({status:e,m:t}){let[s,n]=(0,a.useState)(null),[l,o]=(0,a.useState)(!1);(0,a.useEffect)(()=>()=>o(!1),[]),(0,a.useEffect)(()=>{if(!s)return;let e=setTimeout(()=>n(null),2e3);return()=>clearTimeout(e)},[s]);let i=(0,a.useCallback)(async(e,t)=>{!e||await (0,eu.l)(e)&&(n(t),U.oR.copy())},[]);if(!e)return null;let d=e.authConfigured&&!!e.authToken,c=l?e.authToken??"":e.maskedToken??"";return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 pt-4 pb-3",children:[(0,r.jsx)("div",{className:"w-7 h-7 rounded-lg bg-muted flex items-center justify-center shrink-0",children:(0,r.jsx)(eN.A,{size:14,className:"text-muted-foreground"})}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:t?.tokenCardTitle??"Auth Token"}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:t?.tokenCardDesc??"Used by CLI remote mode and MCP connections."})]})]}),(0,r.jsx)("div",{className:"px-4 pb-4",children:d?(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"flex-1 flex items-center gap-2 px-2.5 py-1.5 bg-muted/50 border border-border rounded-lg min-h-[34px]",children:(0,r.jsx)("code",{className:"flex-1 text-xs font-mono text-foreground break-all select-all leading-relaxed",children:c})}),(0,r.jsx)("button",{type:"button",onClick:()=>o(e=>!e),className:"shrink-0 p-1.5 rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:ring-2 focus-visible:ring-ring",title:l?t?.tokenHide??"Hide":t?.tokenShow??"Show",children:l?(0,r.jsx)(ek.A,{size:13}):(0,r.jsx)(ew.A,{size:13})}),(0,r.jsx)(e2,{onCopy:()=>i(e.authToken??"","token-card"),copied:"token-card"===s,title:t?.tokenCopy??"Copy",size:"sm"})]}):(0,r.jsxs)("div",{className:"px-2.5 py-2 bg-[var(--amber-subtle)] border border-[var(--amber)]/20 rounded-lg",children:[(0,r.jsx)("p",{className:"text-xs text-[var(--amber-text)]",children:t?.tokenNone??"No token set."}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground mt-0.5",children:t?.tokenNoneAction??"Generate one in Settings → General → Security."})]})})]})}var e6=s(16950);function e7(){let e=window;return e.mindos?.checkUpdate?e.mindos:null}let e9="https://github.com/GeminiLight/MindOS/releases",e8="mindos_update_in_progress",te={downloading:{en:"Downloading update",zh:"下载更新"},skills:{en:"Updating skills",zh:"更新 Skills"},rebuilding:{en:"Rebuilding app",zh:"重新构建应用"},restarting:{en:"Restarting server",zh:"重启服务"}};function tt({status:e}){switch(e){case"done":return(0,r.jsx)(g.A,{size:14,className:"text-success shrink-0"});case"running":return(0,r.jsx)(p.A,{size:14,className:"animate-spin shrink-0 text-[var(--amber)]"});case"failed":return(0,r.jsx)(x.A,{size:14,className:"text-destructive shrink-0"});default:return(0,r.jsx)(e6.A,{size:14,className:"text-muted-foreground/40 shrink-0"})}}function ts(e){return e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}function tr(){let{t:e}=(0,j.Y)(),t=e.settings.update,s=e7(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(""),[d,m]=(0,a.useState)(""),[h,b]=(0,a.useState)(null),[f,v]=(0,a.useState)(0),[y,N]=(0,a.useState)(""),[k,w]=(0,a.useState)("");(0,a.useEffect)(()=>{(async()=>{try{let e=await s.checkCoreUpdate?.();if(e&&(i(e.currentVersion),!e.available))return void l("idle")}catch{}try{let e=await s.getCoreUpdatePending?.();if(e?.version){m(e.version),l("ready");return}}catch{}S()})();let e=[];return s.onCoreUpdateProgress&&e.push(s.onCoreUpdateProgress(e=>v(Math.round(e.percent)))),s.onCoreUpdateAvailable&&e.push(s.onCoreUpdateAvailable(e=>{i(e.current),m(e.latest),l(e.ready?"ready":"available")})),()=>e.forEach(e=>e())},[]);let S=async()=>{if(s.checkCoreUpdate){l("checking"),N("");try{let e=await s.checkCoreUpdate();i(e.currentVersion),e.desktopTooOld?(m(e.latestVersion),w(e.minDesktopVersion),l("desktopTooOld")):e.available?(m(e.latestVersion),b({urls:e.urls,size:e.size,sha256:e.sha256}),l("available")):l("idle")}catch{l("idle")}}},C=async()=>{if(s.downloadCoreUpdate&&h){l("downloading"),v(0);try{await s.downloadCoreUpdate(h.urls,d,h.size,h.sha256),l("ready")}catch(t){let e=t instanceof Error?t.message:String(t);e.includes("aborted")?l("available"):(l("error"),N(e||"Download failed"))}}},A=async()=>{if(s.applyCoreUpdate){l("applying");try{let e=await s.applyCoreUpdate();e?.version&&i(e.version),l("idle")}catch(e){l("error"),N(e instanceof Error?e.message:"Apply failed")}}};return s.checkCoreUpdate?(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t?.coreTitle??"MindOS Core"}),o&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",o]})]}),"checking"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),t?.checking??"Checking for updates..."]}),"idle"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.coreUpToDate??"Core is up to date"]}),"available"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),"v",d," ",t?.coreAvailable?t.coreAvailable(ts(h?.size??0)):`available (${ts(h?.size??0)})`]}),("downloading"===n||"cancelling"===n)&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),"cancelling"===n?t?.coreCancel??"Cancelling...":(0,r.jsxs)(r.Fragment,{children:[t?.coreDownloading??"Downloading..."," v",d]})]}),"downloading"===n&&(0,r.jsx)("button",{onClick:()=>{s.cancelCoreDownload?.(),l("cancelling")},className:"text-muted-foreground hover:text-foreground transition-colors",children:t?.coreCancel??"Cancel"})]}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-300",style:{width:`${Math.max(f,3)}%`}})})]}),"ready"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),"v",d," ",t?.coreReady??"ready — restart services to apply"]}),"applying"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),t?.coreApplying??"Applying update..."]}),"desktopTooOld"===n&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:13}),t?.coreDesktopTooOld?t.coreDesktopTooOld(d):`v${d} requires a newer Desktop.`]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground",children:[t?.coreDesktopTooOldHint??"Please update MindOS Desktop first."," (Desktop ≥ v",k,")"]})]}),"error"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),y||(t?.coreError??"Core update failed.")]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[("idle"===n||"error"===n)&&(0,r.jsxs)("button",{onClick:S,disabled:"idle"!==n&&"error"!==n,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.checkButton??"Check for Updates"]}),"available"===n&&(0,r.jsxs)("button",{onClick:C,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),t?.updateButton?t.updateButton(d):`Update to v${d}`]}),"ready"===n&&(0,r.jsxs)("button",{onClick:A,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.coreRestartServices??"Restart Services"]}),"error"===n&&(0,r.jsxs)("button",{onClick:h?C:S,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.coreRetry??"Retry"]})]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground/60",children:t?.coreHint??"Core updates only restart services — no app restart needed."})]}):null}function ta(){let{t:e}=(0,j.Y)(),t=e.settings.update,s=e7(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(!1),[d,m]=(0,a.useState)(null),[h,b]=(0,a.useState)(""),[f,v]=(0,a.useState)(0),[y,k]=(0,a.useState)("");(0,a.useEffect)(()=>{l("idle"),s.getAppInfo?.().then(e=>{e?.version&&b(e.version)}).catch(e=>{console.warn("[UpdateTab] getAppInfo failed:",e)}),S();let e=[];return s.onUpdateAvailable&&e.push(s.onUpdateAvailable(e=>{i(!0),e?.version&&m(e.version),l(e=>"checking"===e?"idle":e)})),s.onUpdateProgress&&e.push(s.onUpdateProgress(e=>v(Math.round(e.percent)))),s.onUpdateReady&&e.push(s.onUpdateReady(()=>l("ready"))),s.onUpdateError&&e.push(s.onUpdateError(e=>{l("error"),k(e?.message||"Update failed. Please try again.")})),()=>e.forEach(e=>e())},[]);let S=async()=>{l("checking"),k("");try{let e=await s.checkUpdate();i(e.available),e.version&&m(e.version),l("idle")}catch{l("error"),k(t?.error??"Failed to check for updates.")}},C=async()=>{l("downloading"),v(0);try{await s.installUpdate()}catch{l("error"),k("Update failed. Please try again.")}};return(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(w.A,{size:14,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t?.shellTitle??"MindOS Desktop"})]}),h&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",h]})]}),"checking"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),t?.checking??"Checking for updates..."]}),"idle"===n&&!o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.upToDate??"You're up to date"]}),"idle"===n&&o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),d?`Update available: v${d}`:"Update available"]}),"downloading"===n&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin text-[var(--amber)]"}),t?.desktopDownloading??"Downloading update..."]}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-300",style:{width:`${Math.max(f,3)}%`}})})]}),"ready"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),t?.desktopReady??"Update downloaded. Restart to apply."]}),"error"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),y]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,r.jsxs)("button",{onClick:S,disabled:"checking"===n||"downloading"===n,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:"checking"===n?"animate-spin":""}),t?.checkButton??"Check for Updates"]}),"idle"===n&&o&&(0,r.jsxs)("button",{onClick:C,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),d?`Update to v${d}`:"Update"]}),"ready"===n&&(0,r.jsxs)("button",{onClick:async()=>{try{await s.installUpdate()}catch{l("error"),k(t?.error??"Failed to install update.")}},className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(c.A,{size:14}),t?.desktopRestart??"Restart Now"]})]}),(0,r.jsxs)("div",{className:"border-t border-border/50 pt-3 space-y-2",children:[(0,r.jsxs)("a",{href:e9,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(N.A,{size:12}),t?.releaseNotes??"View release notes"]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground/60",children:t?.desktopHint??"Updates are delivered through the Desktop app auto-updater."})]})]})}function tn(){let[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(!0);return((0,a.useEffect)(()=>{let e=e7();t(!!e),e?.getAppInfo&&e.getAppInfo().then(e=>{e&&"mode"in e&&n("remote"!==e.mode)}).catch(()=>{})},[]),e)?(0,r.jsxs)("div",{className:"space-y-6",children:[s&&(0,r.jsx)(tr,{}),(0,r.jsx)(ta,{})]}):(0,r.jsx)(tl,{})}function tl(){let{t:e,locale:t}=(0,j.Y)(),s=e.settings.update,[n,l]=(0,a.useState)(null),[o,i]=(0,a.useState)("idle"),[d,m]=(0,a.useState)(""),[h,b]=(0,a.useState)([]),[f,v]=(0,a.useState)(null),[k,w]=(0,a.useState)(!1),S=(0,a.useRef)(void 0),C=(0,a.useRef)(void 0),A=(0,a.useRef)(""),z=(0,a.useCallback)(async()=>{i("checking"),m("");try{let e=await (0,y.n)("/api/update-check");if(l(e),A.current||(A.current=e.current),e.hasUpdate){let t=localStorage.getItem("mindos_update_dismissed");localStorage.setItem("mindos_update_latest",e.latest),window.dispatchEvent(new Event(e.latest===t?"mindos:update-dismissed":"mindos:update-available"))}else localStorage.removeItem("mindos_update_latest"),localStorage.removeItem("mindos_update_dismissed"),window.dispatchEvent(new Event("mindos:update-dismissed"));i("idle")}catch{i("error"),m(s?.error??"Failed to check for updates.")}},[s]),T=(0,a.useCallback)(()=>{clearInterval(S.current),clearTimeout(C.current)},[]),M=(0,a.useCallback)(e=>{T(),l(e),i("updated"),localStorage.removeItem("mindos_update_latest"),localStorage.removeItem("mindos_update_dismissed"),localStorage.removeItem(e8),window.dispatchEvent(new Event("mindos:update-dismissed")),setTimeout(()=>window.location.reload(),2e3)},[T]),E=(0,a.useCallback)(()=>{S.current=setInterval(async()=>{try{let e=await (0,y.n)("/api/update-status",{timeout:5e3});if(w(!1),e.stages?.length>0&&b(e.stages),"failed"===e.stage){T(),localStorage.removeItem(e8),v(e.error||"Update failed"),i("error");return}if("done"===e.stage)try{let e=await (0,y.n)("/api/update-check");if(e.current!==A.current)return void M(e)}catch{}}catch{w(!0);try{let e=await (0,y.n)("/api/update-check",{timeout:5e3});e.current&&e.current!==A.current&&(b(e=>e.map(e=>({...e,status:"done"}))),M(e))}catch{}}},3e3),C.current=setTimeout(()=>{T(),localStorage.removeItem(e8),i("timeout")},9e5)},[T,M]);(0,a.useEffect)(()=>{let e=localStorage.getItem(e8);if(e)try{let{originalVer:t}=JSON.parse(e);A.current=t,i("updating"),w(!0),b([{id:"downloading",status:"done"},{id:"skills",status:"done"},{id:"rebuilding",status:"done"},{id:"restarting",status:"running"}]),E()}catch{localStorage.removeItem(e8),z()}else z()},[]),(0,a.useEffect)(()=>T,[T]);let R=(0,a.useCallback)(async()=>{i("updating"),m(""),v(null),w(!1),b([{id:"downloading",status:"pending"},{id:"skills",status:"pending"},{id:"rebuilding",status:"pending"},{id:"restarting",status:"pending"}]),localStorage.setItem(e8,JSON.stringify({originalVer:A.current||n?.current,startedAt:Date.now()})),window.dispatchEvent(new Event("mindos:update-started"));try{await (0,y.n)("/api/update",{method:"POST"})}catch(e){if(e instanceof y.h){localStorage.removeItem(e8),v(e.message||"Update failed"),i("error");return}}E()},[E,n]),I=(0,a.useCallback)(()=>{v(null),R()},[R]),P="zh"===t?"zh":"en",U=h.filter(e=>"done"===e.status).length,D=h.length>0?Math.round(U/h.length*100):0;return(0,r.jsx)("div",{className:"space-y-6",children:(0,r.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:"MindOS"}),n&&(0,r.jsxs)("span",{className:"text-xs font-mono text-muted-foreground",children:["v",n.current]})]}),"checking"===o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)(p.A,{size:13,className:"animate-spin"}),s?.checking??"Checking for updates..."]}),"idle"===o&&n&&!n.hasUpdate&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),s?.upToDate??"You're up to date"]}),"idle"===o&&n?.hasUpdate&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(u.A,{size:13}),s?.available?s.available(n.current,n.latest):`Update available: v${n.current} → v${n.latest}`]}),"updating"===o&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("div",{className:"space-y-1.5",children:h.map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,r.jsx)(tt,{status:e.status}),(0,r.jsx)("span",{className:"pending"===e.status?"text-muted-foreground/50":"running"===e.status?"text-foreground":"text-muted-foreground",children:te[e.id]?.[P]??e.id})]},e.id))}),(0,r.jsx)("div",{className:"h-1 rounded-full bg-muted overflow-hidden",children:(0,r.jsx)("div",{className:"h-full rounded-full bg-[var(--amber)] transition-all duration-500 ease-out",style:{width:`${Math.max(D,5)}%`}})}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:k?s?.serverRestarting??"Server is restarting, please wait...":s?.updatingHint??"This may take 1–3 minutes. Do not close this page."})]}),"updated"===o&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-success",children:[(0,r.jsx)(g.A,{size:13}),s?.updated??"Updated successfully! Reloading..."]}),"timeout"===o&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--amber-text)]",children:[(0,r.jsx)(x.A,{size:13}),s?.timeout??"Update may still be in progress."]}),(0,r.jsx)("p",{className:"text-2xs text-muted-foreground",children:s?.timeoutHint??"The server may need more time to rebuild. Try refreshing."}),(0,r.jsxs)("button",{onClick:()=>window.location.reload(),className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:12}),s?.refreshButton??"Refresh Page"]})]}),"error"===o&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive",children:[(0,r.jsx)(x.A,{size:13}),f||d]}),f&&(0,r.jsxs)("button",{onClick:I,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:[(0,r.jsx)(c.A,{size:12}),s?.retryButton??"Retry Update"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,r.jsxs)("button",{onClick:z,disabled:"checking"===o||"updating"===o,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,r.jsx)(c.A,{size:14,className:"checking"===o?"animate-spin":""}),s?.checkButton??"Check for Updates"]}),n?.hasUpdate&&"updating"!==o&&"updated"!==o&&(0,r.jsxs)("button",{onClick:R,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg font-medium text-[var(--amber-foreground)] bg-[var(--amber)] transition-colors",children:[(0,r.jsx)(u.A,{size:14}),s?.updateButton?s.updateButton(n.latest):`Update to v${n.latest}`]})]}),(0,r.jsxs)("div",{className:"border-t border-border/50 pt-3 space-y-2",children:[(0,r.jsxs)("a",{href:e9,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(N.A,{size:12}),s?.releaseNotes??"View release notes"]}),(0,r.jsxs)("p",{className:"text-2xs text-muted-foreground/60",children:[s?.hint??"Updates are installed via npm. Equivalent to running"," ",(0,r.jsx)("code",{className:"font-mono bg-muted px-1 py-0.5 rounded",children:"mindos update"})," ",s?.inTerminal??"in your terminal."]})]})]})})}var to=s(44478);function ti(){let e=window;return e.mindos?.uninstallApp?e.mindos:null}function td(){let{t:e}=(0,j.Y)(),t=e.settings.uninstall,s=!!ti(),[n,l]=(0,a.useState)("idle"),[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(!0),[u,x]=(0,a.useState)(!0),h=async()=>{l("running"),i("");try{if(await (0,y.n)("/api/uninstall",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({removeConfig:d})}),s&&u){let e=ti();if(e?.uninstallApp){let t=await e.uninstallApp();if(!t.ok)throw Error(t.error||"Failed to remove app");l("success");return}}l("success")}catch(e){i(e instanceof Error?e.message:String(e)),l("error")}},b=({checked:e,onChange:t,label:s,desc:a,disabled:n})=>(0,r.jsxs)("label",{className:`flex items-start gap-2.5 p-2.5 rounded bg-muted/30 cursor-pointer select-none ${n?"opacity-50 cursor-not-allowed":"hover:bg-muted/50"}`,children:[(0,r.jsx)("input",{type:"checkbox",checked:e,onChange:e=>!n&&t(e.target.checked),disabled:n,className:"mt-0.5 form-check"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:s}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:a})]})]});return(0,r.jsxs)(S.L7,{icon:(0,r.jsx)(m.A,{size:15}),title:t.title,description:s?t.descDesktop:t.descCli,children:[(0,r.jsxs)("div",{className:"flex gap-2.5 p-3 rounded-md bg-muted/50 border border-border",children:[(0,r.jsx)(to.A,{size:14,className:"text-success shrink-0 mt-0.5"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:t.kbSafe})]}),"idle"===n||"confirming"===n?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(b,{checked:!0,disabled:!0,label:t.stopServices,desc:t.stopServicesDesc,onChange:()=>{}}),(0,r.jsx)(b,{checked:d,onChange:c,label:t.removeConfig,desc:t.removeConfigDesc}),!s&&(0,r.jsx)(b,{checked:!0,disabled:!0,label:t.removeNpm,desc:t.removeNpmDesc,onChange:()=>{}}),s&&(0,r.jsx)(b,{checked:u,onChange:x,label:t.removeApp,desc:t.removeAppDesc})]}):null,"idle"===n&&(0,r.jsxs)("button",{onClick:()=>l("confirming"),className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-error/10 text-error border border-error/20 hover:bg-error/20 transition-colors focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-40 disabled:cursor-not-allowed",children:[(0,r.jsx)(m.A,{size:12,className:"inline mr-1.5 -mt-px"}),t.confirmButton]}),"confirming"===n&&(0,r.jsxs)("div",{className:"p-3 rounded-md border border-error/30 bg-error/5 space-y-2.5",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-error",children:t.confirmTitle}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{onClick:h,className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-error text-destructive-foreground hover:bg-error/90 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.confirmButton}),(0,r.jsx)("button",{onClick:()=>l("idle"),className:"px-3.5 py-2 text-sm font-medium rounded-lg bg-muted text-foreground hover:bg-muted/80 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.cancelButton})]})]}),"running"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,r.jsx)(p.A,{size:14,className:"animate-spin text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:t.running})]}),"success"===n&&(0,r.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,r.jsx)(g.A,{size:14,className:"text-success"}),(0,r.jsx)("span",{className:"text-xs text-success font-medium",children:s&&u?t.successDesktop:t.success})]}),"error"===n&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(P.A,{size:14,className:"text-error"}),(0,r.jsx)("span",{className:"text-xs text-error font-medium",children:t.error})]}),o&&(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground font-mono",children:o}),(0,r.jsx)("button",{onClick:()=>l("idle"),className:"px-3 py-1.5 text-xs font-medium rounded-md bg-muted text-foreground hover:bg-muted/80 transition-colors focus-visible:ring-1 focus-visible:ring-ring",children:t.cancelButton})]})]})}function tc({visible:e,initialTab:t,variant:s,onClose:i}){let[N,k]=(0,a.useState)("ai"),[w,S]=(0,a.useState)(null),[C,A]=(0,a.useState)(!1),[z,T]=(0,a.useState)("idle"),{t:M,locale:E,setLocale:R}=(0,j.Y)(),I=(0,v.useRouter)(),P=(0,a.useRef)(void 0),U=(0,a.useRef)(!1),D=(0,a.useRef)(null),[$,F]=(0,a.useState)("lora"),[L,B]=(0,a.useState)("15px"),[_,K]=(0,a.useState)("780px"),[H,G]=(0,a.useState)(!0),[V,J]=(0,a.useState)(()=>{let e=localStorage.getItem("mindos_update_dismissed"),t=localStorage.getItem("mindos_update_latest");return!!t&&t!==e});(0,a.useEffect)(()=>{let e=()=>J(!0),t=()=>J(!1);return window.addEventListener("mindos:update-available",e),window.addEventListener("mindos:update-dismissed",t),()=>{window.removeEventListener("mindos:update-available",e),window.removeEventListener("mindos:update-dismissed",t)}},[]);let q="panel"===s,W=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(q?e&&!W.current:e){(0,y.n)("/api/settings").then(e=>{S(e),U.current=!0}).catch(()=>T("load-error")),F("geist"===localStorage.getItem("prose-font")?"inter":localStorage.getItem("prose-font")??"ibm-plex-sans"),B(localStorage.getItem("prose-font-size")??"15px"),K(localStorage.getItem("content-width")??"780px");let e=localStorage.getItem("theme");G(e?"dark"===e:window.matchMedia("(prefers-color-scheme: dark)").matches),T("idle")}e||(U.current=!1),W.current=e},[e,q]),(0,a.useEffect)(()=>{e&&t&&Y(t)},[e,t]);let Y=(0,a.useCallback)(e=>{k(e),D.current?.scrollTo?.(0,0)},[]);(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--prose-font-override",{lora:"'Lora', Georgia, serif","ibm-plex-sans":"'IBM Plex Sans', sans-serif",inter:"var(--font-inter), sans-serif","ibm-plex-mono":"'IBM Plex Mono', monospace"}[$]??""),localStorage.setItem("prose-font",$)},[$]),(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--prose-font-size-override",L),localStorage.setItem("prose-font-size",L)},[L]),(0,a.useEffect)(()=>{document.documentElement.style.setProperty("--content-width-override",_),localStorage.setItem("content-width",_)},[_]),(0,a.useEffect)(()=>{if("modal"!==s||!e||!i)return;let t=e=>{"Escape"===e.key&&i()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[s,e,i]);let Z=(0,a.useCallback)(async e=>{A(!0);try{await (0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ai:e.ai,agent:e.agent,mindRoot:e.mindRoot,webPassword:e.webPassword,authToken:e.authToken})}),T("saved"),window.dispatchEvent(new Event("mindos:settings-changed")),setTimeout(()=>T("idle"),2500)}catch{T("error"),setTimeout(()=>T("idle"),2500)}finally{A(!1)}},[]),X=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(w&&U.current)return X.current=w,clearTimeout(P.current),P.current=setTimeout(()=>{X.current=null,Z(w)},800),()=>clearTimeout(P.current)},[w,Z]),(0,a.useEffect)(()=>{if(!e&&X.current){let e=X.current;X.current=null,clearTimeout(P.current),Z(e)}},[e,Z]),(0,a.useEffect)(()=>()=>{if(X.current){clearTimeout(P.current);let e=X.current;X.current=null,(0,y.n)("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ai:e.ai,agent:e.agent,mindRoot:e.mindRoot,webPassword:e.webPassword,authToken:e.authToken})}).catch(()=>{})}},[]);let Q=(0,a.useCallback)(e=>{S(t=>t?{...t,ai:{...t.ai,...e}}:t)},[]),ee=(0,a.useCallback)(e=>{S(t=>t?{...t,agent:{...t.agent??{},...e}}:t)},[]),et=(0,a.useCallback)(async()=>{if(!w)return;let e={activeProvider:"",providers:[]};S(t=>t?{...t,ai:e}:t),setTimeout(()=>{(0,y.n)("/api/settings").then(e=>{S(e)}).catch(()=>T("error"))},1300)},[w]),es=w?.envOverrides??{},ea=q?12:13,en=[{id:"ai",label:M.settings.tabs.ai,icon:(0,r.jsx)(n.A,{size:ea})},{id:"mcp",label:M.settings.tabs.mcp??"Connections",icon:(0,r.jsx)(l.A,{size:ea})},{id:"knowledge",label:M.settings.tabs.knowledge,icon:(0,r.jsx)(o.A,{size:ea})},{id:"appearance",label:M.settings.tabs.appearance,icon:(0,r.jsx)(d,{size:ea})},{id:"sync",label:M.settings.tabs.sync??"Sync",icon:(0,r.jsx)(c.A,{size:ea})},{id:"update",label:M.settings.tabs.update??"Update",icon:(0,r.jsx)(u.A,{size:ea}),badge:V},{id:"uninstall",label:M.settings.tabs.uninstall??"Uninstall",icon:(0,r.jsx)(m.A,{size:ea})}],el=en.find(e=>e.id===N)?.label??"",eo=()=>(0,r.jsx)("div",{ref:D,className:`flex-1 overflow-y-auto min-h-0 ${q?"px-4 py-4 space-y-4":"px-5 py-5 space-y-5"}`,children:"load-error"===z&&("ai"===N||"knowledge"===N)?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 py-8 text-center",children:[(0,r.jsx)(x.A,{size:q?18:20,className:"text-destructive"}),(0,r.jsx)("p",{className:`${q?"text-xs":"text-sm"} text-destructive font-medium`,children:"Failed to load settings"}),!q&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Check that the server is running and AUTH_TOKEN is configured correctly."})]}):w||"appearance"===N||"mcp"===N||"sync"===N||"update"===N||"uninstall"===N?(0,r.jsxs)(r.Fragment,{children:["ai"===N&&w?.ai&&(0,r.jsx)(O,{data:w,updateAi:Q,updateAgent:ee,t:M}),"appearance"===N&&(0,r.jsx)(er,{font:$,setFont:F,fontSize:L,setFontSize:B,contentWidth:_,setContentWidth:K,dark:H,setDark:G,locale:E,setLocale:R,t:M}),"knowledge"===N&&w&&(0,r.jsx)(eb,{data:w,setData:S,t:M}),"sync"===N&&(0,r.jsx)(ej.vP,{t:M,visible:e}),"mcp"===N&&(0,r.jsx)(e5,{t:M}),"update"===N&&(0,r.jsx)(tn,{}),"uninstall"===N&&(0,r.jsx)(td,{})]}):(0,r.jsx)("div",{className:"flex justify-center py-8",children:(0,r.jsx)(p.A,{size:q?16:18,className:"animate-spin text-muted-foreground"})})}),ei=()=>"ai"===N||"knowledge"===N?(0,r.jsxs)("div",{className:`${q?"px-4 py-2":"px-5 py-2.5"} border-t border-border shrink-0 flex items-center justify-between`,children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:["ai"===N&&Object.values(es).some(Boolean)&&(0,r.jsxs)("button",{onClick:et,disabled:C||!w,className:`flex items-center gap-1.5 ${q?"px-2.5 py-1 text-xs rounded-md":"px-3 py-1.5 text-sm rounded-lg"} border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:[(0,r.jsx)(h.A,{size:q?12:13}),M.settings.ai.restoreFromEnv]}),"knowledge"===N&&(0,r.jsxs)("a",{href:"/setup?force=1",className:`flex items-center gap-1.5 ${q?"px-2.5 py-1 text-xs rounded-md":"px-3 py-1.5 text-sm rounded-lg"} border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:[(0,r.jsx)(h.A,{size:q?12:13}),M.settings.reconfigure]})]}),!q&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",role:"status","aria-live":"polite",children:[C&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[M.settings.save,"..."]})]}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]})]}):null;return q?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border shrink-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,r.jsx)(o.A,{size:14,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Settings"})]}),(0,r.jsx)("div",{className:"flex items-center gap-1.5",children:(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[C&&(0,r.jsx)(p.A,{size:10,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsx)(g.A,{size:10,className:"text-success"}),"error"===z&&(0,r.jsx)(x.A,{size:10,className:"text-destructive"})]})})]}),(0,r.jsx)("div",{className:"flex border-b border-border px-3 shrink-0 overflow-x-auto scrollbar-none gap-0",children:en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-1 px-2 py-2 text-xs font-medium transition-colors border-b-2 -mb-px whitespace-nowrap ${N===e.id?"border-[var(--amber)] text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,children:[e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id))}),eo(),ei()]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-col h-full md:hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border shrink-0",children:[(0,r.jsx)("div",{className:"flex justify-center pt-2 pb-0 absolute top-0 left-1/2 -translate-x-1/2",children:(0,r.jsx)("div",{className:"w-8 h-1 rounded-full bg-muted-foreground/20"})}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,r.jsx)(o.A,{size:15,className:"text-muted-foreground"}),(0,r.jsx)("span",{children:M.settings.title})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[C&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]}),i&&(0,r.jsx)("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",children:(0,r.jsx)(b.A,{size:15})})]})]}),(0,r.jsxs)("div",{className:"flex border-b border-border px-4 shrink-0 overflow-x-auto scrollbar-none gap-0",children:[en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium transition-colors border-b-2 -mb-px whitespace-nowrap ${N===e.id?"border-[var(--amber)] text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`,children:[e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id)),(0,r.jsxs)("button",{onClick:()=>{i?.(),I.push("/help")},className:"flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium transition-colors border-b-2 -mb-px whitespace-nowrap border-transparent text-muted-foreground hover:text-foreground",children:[(0,r.jsx)(f.A,{size:ea}),M.sidebar.help]})]}),eo(),ei()]}),(0,r.jsxs)("div",{className:"hidden md:flex flex-row h-full min-h-0",children:[(0,r.jsxs)("div",{className:"w-[180px] shrink-0 border-r border-border flex flex-col",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-border",children:[(0,r.jsx)(o.A,{size:15,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:M.settings.title})]}),(0,r.jsx)("nav",{className:"flex-1 overflow-y-auto py-1.5",children:en.map(e=>(0,r.jsxs)("button",{onClick:()=>Y(e.id),className:`flex items-center gap-2 w-full px-4 py-2 text-sm font-medium transition-colors relative ${N===e.id?"text-foreground bg-muted":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[N===e.id&&(0,r.jsx)("div",{className:"absolute left-0 top-1 bottom-1 w-[3px] rounded-r-full bg-[var(--amber)]"}),e.icon,e.label,e.badge&&(0,r.jsx)("span",{className:"ml-auto w-1.5 h-1.5 rounded-full bg-error shrink-0"})]},e.id))}),(0,r.jsx)("div",{className:"shrink-0 border-t border-border px-4 py-2",children:(0,r.jsxs)("button",{onClick:()=>{i?.(),I.push("/help")},className:"flex items-center gap-2 w-full px-0 py-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,r.jsx)(f.A,{size:13}),M.sidebar.help]})})]}),(0,r.jsxs)("div",{className:"flex-1 flex flex-col min-w-0 min-h-0",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-b border-border shrink-0",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:el}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px]",role:"status","aria-live":"polite",children:[C&&(0,r.jsx)(p.A,{size:12,className:"animate-spin text-muted-foreground"}),"saved"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.A,{size:12,className:"text-success"}),(0,r.jsx)("span",{className:"text-success",children:M.settings.saved})]}),"error"===z&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{size:12,className:"text-destructive"}),(0,r.jsx)("span",{className:"text-destructive",children:M.settings.saveFailed})]})]}),i&&(0,r.jsx)("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors",children:(0,r.jsx)(b.A,{size:15})})]})]}),eo(),ei()]})]})]})}function tu({open:e,onClose:t,initialTab:s}){return(0,r.jsx)("div",{style:{display:e?void 0:"none"},children:(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[10vh] modal-backdrop",onClick:e=>e.target===e.currentTarget&&t(),children:(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Settings",className:"w-full md:max-w-3xl md:mx-4 bg-card border-t md:border border-border rounded-t-2xl md:rounded-xl shadow-2xl flex flex-col h-[88vh] md:h-[80vh] md:max-h-[85vh]",children:(0,r.jsx)(tc,{visible:e,variant:"modal",onClose:t,initialTab:s})})})})}},36999:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]])},51900:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},68806:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]])},94961:(e,t,s)=>{s.d(t,{A:()=>r});let r=(0,s(90425).A)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]])}}]);