@geminilight/mindos 0.6.76 → 0.6.77

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 (425) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +30 -28
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +4 -4
  10. package/_standalone/.next/required-server-files.json +2 -1
  11. package/_standalone/.next/routes-manifest.json +12 -0
  12. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  13. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  14. package/_standalone/.next/server/app/_global-error.html +2 -2
  15. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  21. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  22. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  23. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  24. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  26. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  27. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  28. package/_standalone/.next/server/app/agents/page.js +1 -1
  29. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  30. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/agents/copy-skill/route.js.nft.json +1 -1
  43. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/ask/route.js +2 -2
  47. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  48. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  52. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  54. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  56. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  61. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  64. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
  66. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  68. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  70. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  72. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  74. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/im/feishu/long-connection/route.js.nft.json +1 -1
  79. package/_standalone/.next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/im/status/route.js.nft.json +1 -1
  81. package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/im/webhook/feishu/route.js.nft.json +1 -1
  84. package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/im/webhook-status/route.js.nft.json +1 -1
  86. package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/inbox/clip/route.js.nft.json +1 -1
  88. package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  90. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  92. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/lint/route.js.nft.json +1 -1
  94. package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  96. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  105. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/obsidian/compat-report/route.js +1 -0
  107. package/_standalone/.next/server/app/api/obsidian/compat-report/route.js.nft.json +1 -0
  108. package/_standalone/.next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -0
  109. package/_standalone/.next/server/app/api/obsidian/import/route.js +1 -0
  110. package/_standalone/.next/server/app/api/obsidian/import/route.js.nft.json +1 -0
  111. package/_standalone/.next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -0
  112. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  113. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  114. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  116. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  117. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  118. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  120. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  121. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/api/setup/check-path/route.js +1 -1
  123. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  124. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  126. package/_standalone/.next/server/app/api/setup/ls/route.js +1 -1
  127. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/api/setup/route.js +1 -1
  129. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  130. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/api/space-overview/route.js.nft.json +1 -1
  132. package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
  133. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  135. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  136. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  137. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  138. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  139. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  141. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  142. package/_standalone/.next/server/app/changelog/page.js +1 -1
  143. package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
  144. package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  145. package/_standalone/.next/server/app/changes/page.js +1 -1
  146. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  147. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  148. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  149. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  150. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  151. package/_standalone/.next/server/app/echo/page.js +1 -1
  152. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  153. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  154. package/_standalone/.next/server/app/explore/page.js +1 -1
  155. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  156. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  157. package/_standalone/.next/server/app/help/page.js +1 -1
  158. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  159. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  160. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  161. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  162. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  163. package/_standalone/.next/server/app/login/page.js +1 -1
  164. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  165. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  166. package/_standalone/.next/server/app/page.js +1 -1
  167. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  168. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  169. package/_standalone/.next/server/app/setup/page.js +2 -2
  170. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  171. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  172. package/_standalone/.next/server/app/trash/page.js +3 -3
  173. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  174. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  175. package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
  176. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  177. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  178. package/_standalone/.next/server/app-paths-manifest.json +30 -28
  179. package/_standalone/.next/server/chunks/4802.js +16 -16
  180. package/_standalone/.next/server/chunks/5299.js +1 -1
  181. package/_standalone/.next/server/chunks/{7686.js → 5913.js} +3 -3
  182. package/_standalone/.next/server/chunks/7531.js +1 -0
  183. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  184. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  185. package/_standalone/.next/server/pages/500.html +2 -2
  186. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  187. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  188. package/_standalone/.next/static/chunks/{5358-15ceeb8c1cd9889d.js → 5358-ac2733e1433981be.js} +2 -2
  189. package/_standalone/.next/static/chunks/{5581-c3be891101a3e511.js → 5581-c29703cc06a6c8dc.js} +2 -2
  190. package/_standalone/.next/static/chunks/{5484.a70877a2667d0779.js → 7011.223941e5ce187180.js} +2 -2
  191. package/_standalone/.next/static/chunks/{4878.ad1f431d34ff03fc.js → 8954.b927d1b38b3c3878.js} +1 -1
  192. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-6359573cc0d7ff3b.js +1 -0
  193. package/_standalone/.next/static/chunks/app/_global-error/page-6359573cc0d7ff3b.js +1 -0
  194. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-6359573cc0d7ff3b.js +1 -0
  195. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-6359573cc0d7ff3b.js +1 -0
  196. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-6359573cc0d7ff3b.js +1 -0
  197. package/_standalone/.next/static/chunks/app/api/a2a/route-6359573cc0d7ff3b.js +1 -0
  198. package/_standalone/.next/static/chunks/app/api/acp/config/route-6359573cc0d7ff3b.js +1 -0
  199. package/_standalone/.next/static/chunks/app/api/acp/detect/route-6359573cc0d7ff3b.js +1 -0
  200. package/_standalone/.next/static/chunks/app/api/acp/install/route-6359573cc0d7ff3b.js +1 -0
  201. package/_standalone/.next/static/chunks/app/api/acp/registry/route-6359573cc0d7ff3b.js +1 -0
  202. package/_standalone/.next/static/chunks/app/api/acp/session/route-6359573cc0d7ff3b.js +1 -0
  203. package/_standalone/.next/static/chunks/app/api/agent-activity/route-6359573cc0d7ff3b.js +1 -0
  204. package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-6359573cc0d7ff3b.js +1 -0
  205. package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-6359573cc0d7ff3b.js +1 -0
  206. package/_standalone/.next/static/chunks/app/api/agents/custom/route-6359573cc0d7ff3b.js +1 -0
  207. package/_standalone/.next/static/chunks/app/api/ask/route-6359573cc0d7ff3b.js +1 -0
  208. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-6359573cc0d7ff3b.js +1 -0
  209. package/_standalone/.next/static/chunks/app/api/auth/route-6359573cc0d7ff3b.js +1 -0
  210. package/_standalone/.next/static/chunks/app/api/backlinks/route-6359573cc0d7ff3b.js +1 -0
  211. package/_standalone/.next/static/chunks/app/api/bootstrap/route-6359573cc0d7ff3b.js +1 -0
  212. package/_standalone/.next/static/chunks/app/api/changes/route-6359573cc0d7ff3b.js +1 -0
  213. package/_standalone/.next/static/chunks/app/api/channels/verify/route-6359573cc0d7ff3b.js +1 -0
  214. package/_standalone/.next/static/chunks/app/api/connect/route-6359573cc0d7ff3b.js +1 -0
  215. package/_standalone/.next/static/chunks/app/api/embedding/route-6359573cc0d7ff3b.js +1 -0
  216. package/_standalone/.next/static/chunks/app/api/export/route-6359573cc0d7ff3b.js +1 -0
  217. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-6359573cc0d7ff3b.js +1 -0
  218. package/_standalone/.next/static/chunks/app/api/file/import/route-6359573cc0d7ff3b.js +1 -0
  219. package/_standalone/.next/static/chunks/app/api/file/raw/route-6359573cc0d7ff3b.js +1 -0
  220. package/_standalone/.next/static/chunks/app/api/file/route-6359573cc0d7ff3b.js +1 -0
  221. package/_standalone/.next/static/chunks/app/api/files/route-6359573cc0d7ff3b.js +1 -0
  222. package/_standalone/.next/static/chunks/app/api/git/route-6359573cc0d7ff3b.js +1 -0
  223. package/_standalone/.next/static/chunks/app/api/graph/route-6359573cc0d7ff3b.js +1 -0
  224. package/_standalone/.next/static/chunks/app/api/health/route-6359573cc0d7ff3b.js +1 -0
  225. package/_standalone/.next/static/chunks/app/api/im/activity/route-6359573cc0d7ff3b.js +1 -0
  226. package/_standalone/.next/static/chunks/app/api/im/config/route-6359573cc0d7ff3b.js +1 -0
  227. package/_standalone/.next/static/chunks/app/api/im/feishu/long-connection/route-6359573cc0d7ff3b.js +1 -0
  228. package/_standalone/.next/static/chunks/app/api/im/status/route-6359573cc0d7ff3b.js +1 -0
  229. package/_standalone/.next/static/chunks/app/api/im/test/route-6359573cc0d7ff3b.js +1 -0
  230. package/_standalone/.next/static/chunks/app/api/im/webhook/feishu/route-6359573cc0d7ff3b.js +1 -0
  231. package/_standalone/.next/static/chunks/app/api/im/webhook-status/route-6359573cc0d7ff3b.js +1 -0
  232. package/_standalone/.next/static/chunks/app/api/inbox/clip/route-6359573cc0d7ff3b.js +1 -0
  233. package/_standalone/.next/static/chunks/app/api/inbox/route-6359573cc0d7ff3b.js +1 -0
  234. package/_standalone/.next/static/chunks/app/api/init/route-6359573cc0d7ff3b.js +1 -0
  235. package/_standalone/.next/static/chunks/app/api/lint/route-6359573cc0d7ff3b.js +1 -0
  236. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-6359573cc0d7ff3b.js +1 -0
  237. package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-6359573cc0d7ff3b.js +1 -0
  238. package/_standalone/.next/static/chunks/app/api/mcp/install/route-6359573cc0d7ff3b.js +1 -0
  239. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-6359573cc0d7ff3b.js +1 -0
  240. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-6359573cc0d7ff3b.js +1 -0
  241. package/_standalone/.next/static/chunks/app/api/mcp/status/route-6359573cc0d7ff3b.js +1 -0
  242. package/_standalone/.next/static/chunks/app/api/mcp/tools/route-6359573cc0d7ff3b.js +1 -0
  243. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-6359573cc0d7ff3b.js +1 -0
  244. package/_standalone/.next/static/chunks/app/api/monitoring/route-6359573cc0d7ff3b.js +1 -0
  245. package/_standalone/.next/static/chunks/app/api/obsidian/compat-report/route-6359573cc0d7ff3b.js +1 -0
  246. package/_standalone/.next/static/chunks/app/api/obsidian/import/route-6359573cc0d7ff3b.js +1 -0
  247. package/_standalone/.next/static/chunks/app/api/recent-files/route-6359573cc0d7ff3b.js +1 -0
  248. package/_standalone/.next/static/chunks/app/api/restart/route-6359573cc0d7ff3b.js +1 -0
  249. package/_standalone/.next/static/chunks/app/api/search/route-6359573cc0d7ff3b.js +1 -0
  250. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-6359573cc0d7ff3b.js +1 -0
  251. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-6359573cc0d7ff3b.js +1 -0
  252. package/_standalone/.next/static/chunks/app/api/settings/route-6359573cc0d7ff3b.js +1 -0
  253. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-6359573cc0d7ff3b.js +1 -0
  254. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-6359573cc0d7ff3b.js +1 -0
  255. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-6359573cc0d7ff3b.js +1 -0
  256. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-6359573cc0d7ff3b.js +1 -0
  257. package/_standalone/.next/static/chunks/app/api/setup/ls/route-6359573cc0d7ff3b.js +1 -0
  258. package/_standalone/.next/static/chunks/app/api/setup/route-6359573cc0d7ff3b.js +1 -0
  259. package/_standalone/.next/static/chunks/app/api/skills/route-6359573cc0d7ff3b.js +1 -0
  260. package/_standalone/.next/static/chunks/app/api/space-overview/route-6359573cc0d7ff3b.js +1 -0
  261. package/_standalone/.next/static/chunks/app/api/sync/route-6359573cc0d7ff3b.js +1 -0
  262. package/_standalone/.next/static/chunks/app/api/tree-version/route-6359573cc0d7ff3b.js +1 -0
  263. package/_standalone/.next/static/chunks/app/api/uninstall/route-6359573cc0d7ff3b.js +1 -0
  264. package/_standalone/.next/static/chunks/app/api/update/route-6359573cc0d7ff3b.js +1 -0
  265. package/_standalone/.next/static/chunks/app/api/update-check/route-6359573cc0d7ff3b.js +1 -0
  266. package/_standalone/.next/static/chunks/app/api/update-status/route-6359573cc0d7ff3b.js +1 -0
  267. package/_standalone/.next/static/chunks/app/api/workflows/route-6359573cc0d7ff3b.js +1 -0
  268. package/_standalone/.next/static/chunks/app/changes/page-6359573cc0d7ff3b.js +1 -0
  269. package/_standalone/.next/static/chunks/app/echo/page-6359573cc0d7ff3b.js +1 -0
  270. package/_standalone/.next/static/chunks/app/{layout-55af7e1870f7d59b.js → layout-d17d1ec3d728ab91.js} +15 -15
  271. package/_standalone/.next/static/chunks/app/loading-6359573cc0d7ff3b.js +1 -0
  272. package/_standalone/.next/static/chunks/app/setup/page-6135642c48cbf4e8.js +1 -0
  273. package/_standalone/.next/static/chunks/app/trash/page-9b2798b1cd1c53e3.js +1 -0
  274. package/_standalone/.next/static/chunks/app/view/[...path]/loading-6359573cc0d7ff3b.js +1 -0
  275. package/_standalone/.next/static/chunks/app/view/[...path]/{page-6791166d03535cb7.js → page-283e9e8b07c8949e.js} +2 -2
  276. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-6359573cc0d7ff3b.js +1 -0
  277. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-6359573cc0d7ff3b.js +1 -0
  278. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-6359573cc0d7ff3b.js +1 -0
  279. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6359573cc0d7ff3b.js +1 -0
  280. package/_standalone/.next/static/chunks/webpack-8cda3cd172a0535c.js +1 -0
  281. package/_standalone/.next/static/xTjrONxqaI_ZUUPRRKA_X/_buildManifest.js +1 -0
  282. package/_standalone/.next/trace +72 -72
  283. package/_standalone/.next/types/routes.d.ts +3 -1
  284. package/_standalone/.next/types/validator.ts +18 -0
  285. package/_standalone/__tests__/acp/subprocess.test.ts +80 -0
  286. package/_standalone/__tests__/api/acp-detect.test.ts +4 -3
  287. package/_standalone/__tests__/api/obsidian-compat-report.test.ts +62 -0
  288. package/_standalone/__tests__/api/obsidian-import.test.ts +89 -0
  289. package/_standalone/__tests__/api/setup-path-utils.test.ts +188 -0
  290. package/_standalone/__tests__/ask/agent-selector-capsule.test.tsx +34 -0
  291. package/_standalone/__tests__/ask/ask-content-agent-capsule-visibility.test.tsx +195 -0
  292. package/_standalone/__tests__/fixtures/obsidian-community-fixtures.ts +92 -0
  293. package/_standalone/__tests__/obsidian-compat/community-smoke.test.ts +62 -0
  294. package/_standalone/__tests__/obsidian-compat/obsidian-import.test.ts +126 -0
  295. package/_standalone/__tests__/obsidian-compat/plugin-manager.test.ts +28 -0
  296. package/_standalone/__tests__/scripts/extract-pdf-runtime.test.ts +139 -0
  297. package/_standalone/components/ask/AgentSelectorCapsule.tsx +5 -4
  298. package/_standalone/components/ask/AskContent.tsx +1 -1
  299. package/_standalone/components/setup/StepKB.tsx +66 -17
  300. package/_standalone/lib/obsidian-compat/index.ts +1 -0
  301. package/_standalone/lib/obsidian-compat/plugin-manager.ts +13 -0
  302. package/_standalone/next.config.ts +2 -0
  303. package/_standalone/package-lock.json +2 -2
  304. package/_standalone/package.json +1 -1
  305. package/_standalone/server.js +1 -1
  306. package/_standalone/tsconfig.tsbuildinfo +1 -1
  307. package/app/__tests__/acp/subprocess.test.ts +80 -0
  308. package/app/__tests__/api/acp-detect.test.ts +4 -3
  309. package/app/__tests__/api/obsidian-compat-report.test.ts +62 -0
  310. package/app/__tests__/api/obsidian-import.test.ts +89 -0
  311. package/app/__tests__/api/setup-path-utils.test.ts +188 -0
  312. package/app/__tests__/ask/agent-selector-capsule.test.tsx +34 -0
  313. package/app/__tests__/ask/ask-content-agent-capsule-visibility.test.tsx +195 -0
  314. package/app/__tests__/fixtures/obsidian-community-fixtures.ts +92 -0
  315. package/app/__tests__/obsidian-compat/community-smoke.test.ts +62 -0
  316. package/app/__tests__/obsidian-compat/obsidian-import.test.ts +126 -0
  317. package/app/__tests__/obsidian-compat/plugin-manager.test.ts +28 -0
  318. package/app/__tests__/scripts/extract-pdf-runtime.test.ts +139 -0
  319. package/app/app/api/obsidian/compat-report/route.ts +33 -0
  320. package/app/app/api/obsidian/import/route.ts +37 -0
  321. package/app/app/api/setup/check-path/route.ts +16 -2
  322. package/app/app/api/setup/path-utils.ts +123 -1
  323. package/app/app/api/setup/route.ts +11 -1
  324. package/app/components/ask/AgentSelectorCapsule.tsx +5 -4
  325. package/app/components/ask/AskContent.tsx +1 -1
  326. package/app/components/setup/StepKB.tsx +66 -17
  327. package/app/components/setup/index.tsx +19 -1
  328. package/app/lib/acp/detect-local.ts +105 -24
  329. package/app/lib/acp/subprocess.ts +2 -1
  330. package/app/lib/i18n/modules/onboarding.ts +2 -0
  331. package/app/lib/obsidian-compat/index.ts +1 -0
  332. package/app/lib/obsidian-compat/obsidian-import.ts +118 -0
  333. package/app/lib/obsidian-compat/plugin-manager.ts +13 -0
  334. package/app/next.config.ts +2 -0
  335. package/app/package.json +1 -1
  336. package/package.json +1 -1
  337. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/route-6d0a0465c7af74d1.js +0 -1
  338. package/_standalone/.next/static/chunks/app/_global-error/page-6d0a0465c7af74d1.js +0 -1
  339. package/_standalone/.next/static/chunks/app/api/a2a/agents/route-6d0a0465c7af74d1.js +0 -1
  340. package/_standalone/.next/static/chunks/app/api/a2a/delegations/route-6d0a0465c7af74d1.js +0 -1
  341. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-6d0a0465c7af74d1.js +0 -1
  342. package/_standalone/.next/static/chunks/app/api/a2a/route-6d0a0465c7af74d1.js +0 -1
  343. package/_standalone/.next/static/chunks/app/api/acp/config/route-6d0a0465c7af74d1.js +0 -1
  344. package/_standalone/.next/static/chunks/app/api/acp/detect/route-6d0a0465c7af74d1.js +0 -1
  345. package/_standalone/.next/static/chunks/app/api/acp/install/route-6d0a0465c7af74d1.js +0 -1
  346. package/_standalone/.next/static/chunks/app/api/acp/registry/route-6d0a0465c7af74d1.js +0 -1
  347. package/_standalone/.next/static/chunks/app/api/acp/session/route-6d0a0465c7af74d1.js +0 -1
  348. package/_standalone/.next/static/chunks/app/api/agent-activity/route-6d0a0465c7af74d1.js +0 -1
  349. package/_standalone/.next/static/chunks/app/api/agents/copy-skill/route-6d0a0465c7af74d1.js +0 -1
  350. package/_standalone/.next/static/chunks/app/api/agents/custom/detect/route-6d0a0465c7af74d1.js +0 -1
  351. package/_standalone/.next/static/chunks/app/api/agents/custom/route-6d0a0465c7af74d1.js +0 -1
  352. package/_standalone/.next/static/chunks/app/api/ask/route-6d0a0465c7af74d1.js +0 -1
  353. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-6d0a0465c7af74d1.js +0 -1
  354. package/_standalone/.next/static/chunks/app/api/auth/route-6d0a0465c7af74d1.js +0 -1
  355. package/_standalone/.next/static/chunks/app/api/backlinks/route-6d0a0465c7af74d1.js +0 -1
  356. package/_standalone/.next/static/chunks/app/api/bootstrap/route-6d0a0465c7af74d1.js +0 -1
  357. package/_standalone/.next/static/chunks/app/api/changes/route-6d0a0465c7af74d1.js +0 -1
  358. package/_standalone/.next/static/chunks/app/api/channels/verify/route-6d0a0465c7af74d1.js +0 -1
  359. package/_standalone/.next/static/chunks/app/api/connect/route-6d0a0465c7af74d1.js +0 -1
  360. package/_standalone/.next/static/chunks/app/api/embedding/route-6d0a0465c7af74d1.js +0 -1
  361. package/_standalone/.next/static/chunks/app/api/export/route-6d0a0465c7af74d1.js +0 -1
  362. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-6d0a0465c7af74d1.js +0 -1
  363. package/_standalone/.next/static/chunks/app/api/file/import/route-6d0a0465c7af74d1.js +0 -1
  364. package/_standalone/.next/static/chunks/app/api/file/raw/route-6d0a0465c7af74d1.js +0 -1
  365. package/_standalone/.next/static/chunks/app/api/file/route-6d0a0465c7af74d1.js +0 -1
  366. package/_standalone/.next/static/chunks/app/api/files/route-6d0a0465c7af74d1.js +0 -1
  367. package/_standalone/.next/static/chunks/app/api/git/route-6d0a0465c7af74d1.js +0 -1
  368. package/_standalone/.next/static/chunks/app/api/graph/route-6d0a0465c7af74d1.js +0 -1
  369. package/_standalone/.next/static/chunks/app/api/health/route-6d0a0465c7af74d1.js +0 -1
  370. package/_standalone/.next/static/chunks/app/api/im/activity/route-6d0a0465c7af74d1.js +0 -1
  371. package/_standalone/.next/static/chunks/app/api/im/config/route-6d0a0465c7af74d1.js +0 -1
  372. package/_standalone/.next/static/chunks/app/api/im/feishu/long-connection/route-6d0a0465c7af74d1.js +0 -1
  373. package/_standalone/.next/static/chunks/app/api/im/status/route-6d0a0465c7af74d1.js +0 -1
  374. package/_standalone/.next/static/chunks/app/api/im/test/route-6d0a0465c7af74d1.js +0 -1
  375. package/_standalone/.next/static/chunks/app/api/im/webhook/feishu/route-6d0a0465c7af74d1.js +0 -1
  376. package/_standalone/.next/static/chunks/app/api/im/webhook-status/route-6d0a0465c7af74d1.js +0 -1
  377. package/_standalone/.next/static/chunks/app/api/inbox/clip/route-6d0a0465c7af74d1.js +0 -1
  378. package/_standalone/.next/static/chunks/app/api/inbox/route-6d0a0465c7af74d1.js +0 -1
  379. package/_standalone/.next/static/chunks/app/api/init/route-6d0a0465c7af74d1.js +0 -1
  380. package/_standalone/.next/static/chunks/app/api/lint/route-6d0a0465c7af74d1.js +0 -1
  381. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-6d0a0465c7af74d1.js +0 -1
  382. package/_standalone/.next/static/chunks/app/api/mcp/direct-tools/route-6d0a0465c7af74d1.js +0 -1
  383. package/_standalone/.next/static/chunks/app/api/mcp/install/route-6d0a0465c7af74d1.js +0 -1
  384. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-6d0a0465c7af74d1.js +0 -1
  385. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-6d0a0465c7af74d1.js +0 -1
  386. package/_standalone/.next/static/chunks/app/api/mcp/status/route-6d0a0465c7af74d1.js +0 -1
  387. package/_standalone/.next/static/chunks/app/api/mcp/tools/route-6d0a0465c7af74d1.js +0 -1
  388. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-6d0a0465c7af74d1.js +0 -1
  389. package/_standalone/.next/static/chunks/app/api/monitoring/route-6d0a0465c7af74d1.js +0 -1
  390. package/_standalone/.next/static/chunks/app/api/recent-files/route-6d0a0465c7af74d1.js +0 -1
  391. package/_standalone/.next/static/chunks/app/api/restart/route-6d0a0465c7af74d1.js +0 -1
  392. package/_standalone/.next/static/chunks/app/api/search/route-6d0a0465c7af74d1.js +0 -1
  393. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-6d0a0465c7af74d1.js +0 -1
  394. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-6d0a0465c7af74d1.js +0 -1
  395. package/_standalone/.next/static/chunks/app/api/settings/route-6d0a0465c7af74d1.js +0 -1
  396. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-6d0a0465c7af74d1.js +0 -1
  397. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-6d0a0465c7af74d1.js +0 -1
  398. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-6d0a0465c7af74d1.js +0 -1
  399. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-6d0a0465c7af74d1.js +0 -1
  400. package/_standalone/.next/static/chunks/app/api/setup/ls/route-6d0a0465c7af74d1.js +0 -1
  401. package/_standalone/.next/static/chunks/app/api/setup/route-6d0a0465c7af74d1.js +0 -1
  402. package/_standalone/.next/static/chunks/app/api/skills/route-6d0a0465c7af74d1.js +0 -1
  403. package/_standalone/.next/static/chunks/app/api/space-overview/route-6d0a0465c7af74d1.js +0 -1
  404. package/_standalone/.next/static/chunks/app/api/sync/route-6d0a0465c7af74d1.js +0 -1
  405. package/_standalone/.next/static/chunks/app/api/tree-version/route-6d0a0465c7af74d1.js +0 -1
  406. package/_standalone/.next/static/chunks/app/api/uninstall/route-6d0a0465c7af74d1.js +0 -1
  407. package/_standalone/.next/static/chunks/app/api/update/route-6d0a0465c7af74d1.js +0 -1
  408. package/_standalone/.next/static/chunks/app/api/update-check/route-6d0a0465c7af74d1.js +0 -1
  409. package/_standalone/.next/static/chunks/app/api/update-status/route-6d0a0465c7af74d1.js +0 -1
  410. package/_standalone/.next/static/chunks/app/api/workflows/route-6d0a0465c7af74d1.js +0 -1
  411. package/_standalone/.next/static/chunks/app/changes/page-6d0a0465c7af74d1.js +0 -1
  412. package/_standalone/.next/static/chunks/app/echo/page-6d0a0465c7af74d1.js +0 -1
  413. package/_standalone/.next/static/chunks/app/loading-6d0a0465c7af74d1.js +0 -1
  414. package/_standalone/.next/static/chunks/app/setup/page-64d7fa097ef3f367.js +0 -1
  415. package/_standalone/.next/static/chunks/app/trash/page-77dfe3df94abafb4.js +0 -1
  416. package/_standalone/.next/static/chunks/app/view/[...path]/loading-6d0a0465c7af74d1.js +0 -1
  417. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-6d0a0465c7af74d1.js +0 -1
  418. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-6d0a0465c7af74d1.js +0 -1
  419. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-6d0a0465c7af74d1.js +0 -1
  420. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6d0a0465c7af74d1.js +0 -1
  421. package/_standalone/.next/static/chunks/webpack-aeeb4e3ebba9ef3c.js +0 -1
  422. package/_standalone/.next/static/f4SL2Rxm_VRCg6oVg9EuX/_buildManifest.js +0 -1
  423. package/_standalone/lib/obsidian-compat/compatibility-report.ts +0 -131
  424. package/_standalone/lib/obsidian-compat/manifest.ts +0 -90
  425. /package/_standalone/.next/static/{f4SL2Rxm_VRCg6oVg9EuX → xTjrONxqaI_ZUUPRRKA_X}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[620],{4235:(e,t,r)=>{"use strict";r.d(t,{B1:()=>l,X8:()=>d,dV:()=>i,oR:()=>u});let s=[],a=[],o=0;function n(){for(let e of a)e()}function l(e){return a=[...a,e],()=>{a=a.filter(t=>t!==e)}}function i(){return s}function d(e){s=s.filter(t=>t.id!==e),n()}function c(e){let t=`toast-${++o}`,r={id:t,message:e.message,type:e.type??"info",duration:e.duration??2e3,action:e.action};s=[...s,r].slice(-3),n(),r.duration>0&&setTimeout(()=>d(t),r.duration)}function u(e,t){c({message:e,...t})}u.success=(e,t)=>c({message:e,type:"success",duration:t}),u.undo=(e,t,r)=>c({message:e,type:"info",duration:r?.duration??5e3,action:{label:r?.label??"Undo",onClick:t}}),u.error=(e,t)=>c({message:e,type:"error",duration:t}),u.copy=(e="Copied")=>c({message:e,type:"success",duration:1500})},7834:(e,t,r)=>{"use strict";async function s(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}}r.d(t,{l:()=>s})},15721:(e,t,r)=>{Promise.resolve().then(r.bind(r,22952))},20171:(e,t,r)=>{"use strict";r.d(t,{Bt:()=>m,D0:()=>d,L7:()=>g,jn:()=>h,l6:()=>p,lM:()=>x,pM:()=>b,pd:()=>c,yA:()=>u});var s=r(95155),a=r(12115),o=r(15411),n=r(7915),l=r(66088),i=r(94514);function d({label:e,hint:t,hintError:r,children:a}){return(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium",children:e}),a,t&&(0,s.jsx)("p",{className:`text-xs ${r?"text-destructive":"text-muted-foreground"}`,children:t})]})}function c({className:e="",...t}){return(0,s.jsx)("input",{...t,className:`w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground placeholder:text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 ${e}`})}function u({value:e,onChange:t,placeholder:r,disabled:l,className:i="",size:d="md"}){let[c,u]=(0,a.useState)(!1),p="sm"===d;return(0,s.jsxs)("div",{className:`flex items-center border border-border rounded-lg bg-background focus-within:ring-1 focus-within:ring-ring overflow-hidden ${i}`,children:[(0,s.jsx)("input",{type:c?"text":"password",value:e,onChange:e=>t(e.target.value),placeholder:r??"••••••••",disabled:l,className:`flex-1 bg-transparent text-foreground placeholder:text-muted-foreground outline-none disabled:opacity-50 ${p?"px-2.5 py-1.5 text-xs font-mono":"px-3 py-2 text-sm"}`}),!!e&&(0,s.jsx)("button",{type:"button",tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:()=>u(e=>!e),disabled:l,className:`shrink-0 text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50 ${p?"p-1.5":"p-2"}`,title:c?"Hide":"Show",children:c?(0,s.jsx)(o.A,{size:p?14:16}):(0,s.jsx)(n.A,{size:p?14:16})})]})}function p({value:e,onChange:t,children:r,className:o="",disabled:n}){let d=(0,a.useId)(),[c,u]=(0,a.useState)(!1),[p,m]=(0,a.useState)(-1),x=(0,a.useRef)(null),h=(0,a.useRef)(null),g=(0,a.useMemo)(()=>a.Children.toArray(r).filter(e=>a.isValidElement(e)&&"option"===e.type).map(e=>({value:String(e.props.value??""),label:String(e.props.children??e.props.value??"")})),[r]),b=g.findIndex(t=>t.value===e),f=g[b]?.label??"";(0,a.useEffect)(()=>{if(!c)return;let e=e=>{x.current&&!x.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]),(0,a.useEffect)(()=>{if(c&&h.current&&p>=0){let e=h.current.children[p];e?.scrollIntoView({block:"nearest"})}},[c,p]);let v=(0,a.useCallback)(e=>{e>=0&&e<g.length&&(t?.({target:{value:g[e].value}}),u(!1))},[g,t]),y=(0,a.useCallback)(e=>{if(!c){["Enter"," ","ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),u(!0),m(b>=0?b:0));return}switch(e.key){case"ArrowDown":e.preventDefault(),m(e=>Math.min(e+1,g.length-1));break;case"ArrowUp":e.preventDefault(),m(e=>Math.max(e-1,0));break;case"Enter":case" ":e.preventDefault(),v(p);break;case"Escape":e.preventDefault(),u(!1);break;case"Tab":u(!1)}},[c,g.length,b,p,v]);return(0,s.jsxs)("div",{ref:x,className:`relative ${o}`,children:[(0,s.jsxs)("button",{type:"button",disabled:n,onClick:()=>{u(e=>!e),m(b>=0?b:0)},onKeyDown:y,"aria-haspopup":"listbox","aria-expanded":c,className:"w-full px-3 py-2 text-sm bg-background border border-border rounded-lg text-foreground text-left flex items-center justify-between gap-2 outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,s.jsx)("span",{className:`truncate ${f?"":"text-muted-foreground"}`,children:f||"—"}),(0,s.jsx)(l.A,{size:14,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${c?"rotate-180":""}`})]}),c&&(0,s.jsx)("div",{ref:h,role:"listbox","aria-activedescendant":p>=0?`${d}-opt-${p}`:void 0,className:"absolute z-20 w-full mt-1 py-1 border border-border rounded-lg bg-card shadow-lg max-h-60 overflow-auto animate-in fade-in-0 zoom-in-95 duration-100",children:g.map((t,r)=>{let a=t.value===e,o=r===p;return(0,s.jsxs)("button",{id:`${d}-opt-${r}`,role:"option","aria-selected":a,type:"button",onMouseDown:e=>{e.preventDefault(),v(r)},onMouseEnter:()=>m(r),className:`w-full px-3 py-1.5 text-sm text-left flex items-center gap-2 transition-colors ${o?"bg-accent text-accent-foreground":"text-foreground"}`,children:[(0,s.jsx)(i.A,{size:14,className:`shrink-0 ${a?"text-[var(--amber)]":"invisible"}`}),(0,s.jsx)("span",{className:"truncate",children:t.label})]},t.value)})})]})}function m({overridden:e}){return e?(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-[var(--amber-subtle)] text-[var(--amber-text)] font-mono ml-1.5",children:"env"}):null}function x({checked:e,onChange:t,size:r="md",disabled:a,title:o,onClick:n}){let l="sm"===r;return(0,s.jsx)("button",{type:"button",role:"switch","aria-checked":e,disabled:a,title:o,onClick:n??(()=>t?.(!e)),className:`relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 ${l?"h-4 w-7":"h-5 w-9"} ${e?"bg-[var(--amber)]":"bg-muted"}`,children:(0,s.jsx)("span",{className:`pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform ${l?"h-3 w-3":"h-4 w-4"} ${e?l?"translate-x-3":"translate-x-4":"translate-x-0"}`})})}function h({children:e,disabled:t,onClick:r,type:a="button",className:o="",...n}){return(0,s.jsx)("button",{type:a,onClick:r,disabled:t,className:`px-4 py-2 text-sm font-medium rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] transition-colors disabled:opacity-40 disabled:cursor-not-allowed ${o}`,...n,children:e})}function g({icon:e,title:t,description:r,badge:a,children:o,className:n=""}){return(0,s.jsxs)("div",{className:`rounded-xl border border-border/50 bg-card/50 p-5 ${n}`,children:[(0,s.jsxs)("div",{className:"flex items-start gap-3 mb-4",children:[(0,s.jsx)("div",{className:"w-8 h-8 rounded-lg bg-muted/50 flex items-center justify-center shrink-0 mt-0.5",children:(0,s.jsx)("span",{className:"text-muted-foreground",children:e})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:t}),a]}),r&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 leading-relaxed",children:r})]})]}),(0,s.jsx)("div",{className:"space-y-4 pl-11",children:o})]})}function b({label:e,hint:t,children:r}){return(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("div",{className:"text-sm text-foreground",children:e}),t&&(0,s.jsx)("div",{className:"text-xs text-muted-foreground mt-0.5",children:t})]}),(0,s.jsx)("div",{className:"shrink-0",children:r})]})}},22952:(e,t,r)=>{"use strict";r.d(t,{default:()=>V});var s=r(95155),a=r(12115),o=r(86901),n=r(41641),l=r(21362),i=r(6296),d=r(35581),c=r(7834),u=r(4235),p=r(92451),m=r(97810),x=r(48368);let h=[{id:"en",icon:(0,s.jsx)(p.A,{size:18}),dirs:["Profile/","Connections/","Notes/","Workflows/","Resources/","Projects/"]},{id:"zh",icon:(0,s.jsx)(m.A,{size:18}),dirs:["画像/","关系/","笔记/","流程/","资源/","项目/"]},{id:"empty",icon:(0,s.jsx)(x.A,{size:18}),dirs:["README.md","CONFIG.json","INSTRUCTION.md"]}];var g=r(13545),b=r(20171);function f({state:e,update:t,t:r,homeDir:o}){let n=r.setup,[l,i]=(0,a.useState)(!1),d=o.includes("\\")?"\\":"/",c="~"!==o?[o,"MindOS","mind"].join(d):n.kbPathDefault,[u,p]=(0,a.useState)(null),[m,x]=(0,a.useState)([]),[f,v]=(0,a.useState)(!1),[y,k]=(0,a.useState)(-1),[j,N]=(0,a.useState)(!1),w=(0,a.useRef)(null),S=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(S.current){S.current=!1;return}if(!e.mindRoot.trim())return void x([]);let t=setTimeout(()=>{let t=function(e){if(!e.trim())return"";let t=e.trim();if(t.endsWith("/")||t.endsWith("\\"))return t;let r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return r>=0?t.slice(0,r+1):""}(e.mindRoot)||o;fetch("/api/setup/ls",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})}).then(e=>e.json()).then(r=>{if(!r.dirs?.length)return void x([]);let s=t.endsWith("/")||t.endsWith("\\"),a=t.includes("\\")?"\\":"/",o=s?t:t+a,n=e.mindRoot.trim(),l=r.dirs.map(e=>o+e),i=n.endsWith("/")||n.endsWith("\\")?l:l.filter(e=>e.startsWith(n));x(i.slice(0,20)),v(i.length>0),k(-1)}).catch(e=>{console.warn("[SetupWizard] autocomplete fetch failed:",e),x([])})},300);return()=>clearTimeout(t)},[e.mindRoot,o]),(0,a.useEffect)(()=>{if(!e.mindRoot.trim())return void p(null);let r=setTimeout(()=>{fetch("/api/setup/check-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.mindRoot})}).then(e=>e.json()).then(e=>{p(e),N(!1),e?.exists&&!e.empty&&t("template","")}).catch(e=>{console.warn("[SetupWizard] check-path failed:",e),p(null)})},600);return()=>clearTimeout(r)},[e.mindRoot,t]);let A=()=>{x([]),v(!1),k(-1)},P=e=>{S.current=!0,t("mindRoot",e),A(),w.current?.focus()};return(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)(b.D0,{label:n.kbPath,hint:n.kbPathHint,children:[(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("input",{ref:w,value:e.mindRoot,onChange:e=>{t("mindRoot",e.target.value),v(!0)},onKeyDown:e=>{f&&0!==m.length&&("ArrowDown"===e.key?(e.preventDefault(),k(e=>Math.min(e+1,m.length-1))):"ArrowUp"===e.key?(e.preventDefault(),k(e=>Math.max(e-1,-1))):"Enter"===e.key&&y>=0?(e.preventDefault(),P(m[y])):"Escape"===e.key&&v(!1))},onBlur:()=>setTimeout(()=>A(),150),onFocus:()=>m.length>0&&v(!0),placeholder:c,className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus-visible:ring-1 focus-visible:ring-ring",style:{background:"var(--input, var(--card))",borderColor:"var(--border)",color:"var(--foreground)"}}),f&&m.length>0&&(0,s.jsx)("div",{role:"listbox",className:"absolute z-50 left-0 right-0 top-full mt-1 rounded-lg border overflow-auto",style:{background:"var(--card)",borderColor:"var(--border)",boxShadow:"0 4px 16px rgba(0,0,0,0.12)",maxHeight:"220px"},children:m.map((e,t)=>(0,s.jsx)("button",{type:"button",role:"option","aria-selected":t===y,onMouseDown:()=>P(e),className:"w-full text-left px-3 py-2 text-sm font-mono transition-colors",style:{background:t===y?"var(--muted)":"transparent",color:"var(--foreground)",borderTop:t>0?"1px solid var(--border)":void 0},children:e},e))})]}),e.mindRoot!==c&&c!==n.kbPathDefault&&(0,s.jsx)("button",{type:"button",onClick:()=>t("mindRoot",c),className:"mt-1.5 px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:n.kbPathUseDefault(c)})]}),u&&u.exists&&!u.empty&&!j?(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,s.jsxs)("div",{className:"rounded-lg border p-3 text-sm",style:{borderColor:"var(--amber)",background:"color-mix(in srgb, var(--amber) 6%, transparent)"},children:[(0,s.jsx)("p",{style:{color:"var(--amber)"},children:n.kbPathHasFiles(u.count)}),(0,s.jsxs)("div",{className:"flex gap-2 mt-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>t("template",""),className:"px-2.5 py-1 text-xs rounded-md border transition-colors",style:{borderColor:"var(--amber)",color:""===e.template?"var(--background)":"var(--amber)",background:""===e.template?"var(--amber)":"transparent"},children:""===e.template?(0,s.jsxs)(s.Fragment,{children:[n.kbTemplateSkip," ✓"]}):n.kbTemplateSkip}),(0,s.jsx)("button",{type:"button",onClick:()=>N(!0),className:"px-2.5 py-1 text-xs rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:n.kbTemplateMerge})]})]})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm text-foreground font-medium mb-3 block",children:n.template}),(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:h.map(a=>(0,s.jsxs)("button",{onClick:()=>t("template",a.id),className:"flex flex-col items-start gap-2 p-4 rounded-xl border text-left transition-all duration-150",style:{background:e.template===a.id?"var(--amber-dim)":"var(--card)",borderColor:e.template===a.id?"var(--amber)":"var(--border)"},children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{style:{color:"var(--amber)"},children:a.icon}),(0,s.jsx)("span",{className:"text-sm font-medium",style:{color:"var(--foreground)"},children:r.onboarding.templates[a.id].title})]}),(0,s.jsx)("div",{className:"w-full rounded-lg px-2.5 py-1.5 text-xs leading-relaxed font-display",style:{background:"var(--muted)",color:"var(--muted-foreground)"},children:a.dirs.map(e=>(0,s.jsx)("div",{children:e},e))})]},a.id))})]}),(0,s.jsx)("div",{className:"pt-2 mt-2",style:{borderTop:"1px solid var(--border)"},children:(0,s.jsxs)(b.D0,{label:(0,s.jsxs)(s.Fragment,{children:[n.webPassword," ",(0,s.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),hint:n.webPasswordHint,children:[(0,s.jsx)("input",{type:"password",value:e.webPassword,onChange:e=>{t("webPassword",e.target.value),i(!0)},onBlur:()=>i(!0),placeholder:"••••••••",className:"w-full px-3 py-2 text-sm rounded-lg border outline-none transition-colors focus-visible:ring-1 focus-visible:ring-ring",style:{background:"var(--input, var(--card))",borderColor:l&&!e.webPassword.trim()?"var(--error)":"var(--border)",color:"var(--foreground)"}}),l&&!e.webPassword.trim()&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1 mt-1",style:{color:"var(--error)"},children:[(0,s.jsx)(g.A,{size:11})," ",n.webPasswordRequired]})]})})]})}var v=r(22164),y=r(66088),k=r(67635),j=r(47376),N=r(60112),w=r(51842),S=r(79704),A=r(41585),P=r(12651),T=r(68822);function C({label:e,hint:t,value:r,onChange:o,status:n,onCheckPort:l,s:d}){let c=(0,a.useRef)(void 0);return(0,a.useEffect)(()=>()=>clearTimeout(c.current),[]),(0,s.jsx)(b.D0,{label:e,hint:t,children:(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)(b.pd,{type:"number",min:1024,max:65535,value:r,onChange:e=>{let t=parseInt(e.target.value,10)||r;o(t),clearTimeout(c.current),t>=1024&&t<=65535&&(c.current=setTimeout(()=>l(t),500))},onBlur:()=>{clearTimeout(c.current),l(r)}}),n.checking&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",role:"status",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:11,className:"animate-spin"})," ",d.portChecking]}),!n.checking&&!1===n.available&&(0,s.jsxs)("div",{className:"flex items-center gap-2",role:"alert",children:[(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--amber)"},children:[(0,s.jsx)(A.A,{size:11})," ",d.portInUse(r)]}),null!==n.suggestion&&(0,s.jsx)("button",{type:"button",onClick:()=>{o(n.suggestion),setTimeout(()=>l(n.suggestion),0)},className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:d.portSuggest(n.suggestion)})]}),!n.checking&&!0===n.available&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1",style:{color:"var(--success)"},children:[(0,s.jsx)(P.A,{size:11})," ",n.isSelf?d.portSelf:d.portAvailable]})]})})}function M({state:e,update:t,webPortStatus:r,mcpPortStatus:a,setWebPortStatus:o,setMcpPortStatus:n,checkPort:l,portConflict:i,s:d}){return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsx)(C,{label:d.webPort,hint:d.portHint,value:e.webPort,onChange:e=>{t("webPort",e),o({checking:!1,available:null,isSelf:!1,suggestion:null})},status:r,onCheckPort:e=>l(e,"web"),s:d}),(0,s.jsx)(C,{label:d.mcpPort,hint:d.portHint,value:e.mcpPort,onChange:e=>{t("mcpPort",e),n({checking:!1,available:null,isSelf:!1,suggestion:null})},status:a,onCheckPort:e=>l(e,"mcp"),s:d}),i&&(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1.5",role:"alert",style:{color:"var(--amber)"},children:[(0,s.jsx)(A.A,{size:12})," ",d.portConflict]}),!i&&(null===r.available||null===a.available)&&!r.checking&&!a.checking&&(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:d.portVerifyHint}),(0,s.jsxs)("p",{className:"text-xs flex items-center gap-1.5",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(T.A,{size:12})," ",d.portRestartWarning]})]})}function z({state:e,update:t,s:r,onCopyToken:o,webPortStatus:n,mcpPortStatus:i,setWebPortStatus:c,setMcpPortStatus:u,checkPort:p,portConflict:m}){let{locale:x}=(0,d.Y)(),[h,g]=(0,a.useState)(!1);(0,a.useEffect)(()=>{!h&&m&&g(!0)},[m,h]);let f="skip"===e.activeProvider,A=f?null:e.providers.find(t=>t.id===e.activeProvider),P=A?j.T_[A.protocol]:null,T=(0,a.useCallback)(r=>{A&&t("providers",e.providers.map(e=>e.id===A.id?{...e,...r}:e))},[A,e.providers,t]),C=(0,a.useCallback)(r=>{if("skip"===r)return void t("activeProvider","skip");let s=e.providers.find(e=>e.id===r);if(s)return void t("activeProvider",s.id);if((0,j.rl)(r)){let s=e.providers.find(e=>e.protocol===r);if(s)return void t("activeProvider",s.id);let a=j.T_[r],o={id:(0,N.mV)(),name:"zh"===x?a.nameZh:a.name,protocol:r,apiKey:"",model:a.defaultModel,baseUrl:a.fixedBaseUrl??""};t("providers",[...e.providers,o]),t("activeProvider",o.id)}},[e.providers,t,x]),z=new Set(e.providers.filter(e=>e.apiKey||e.apiKeyMask||j.T_[e.protocol]?.apiKeyFallback).map(e=>e.protocol)),I=f?"skip":A?.protocol??"skip";return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsx)(w.A,{value:I,onChange:C,showSkip:!0,compact:!0,configuredProviders:z}),A&&P&&(0,s.jsxs)("div",{className:"space-y-4 pt-2",children:[(0,s.jsxs)(b.D0,{label:r.apiKey,children:[(0,s.jsx)(b.yA,{value:A.apiKey,onChange:e=>T({apiKey:e}),placeholder:A.apiKeyMask||`${(0,j.Ux)(A.protocol)??"API Key"}...`}),A.apiKeyMask&&!A.apiKey&&(0,s.jsx)("p",{className:"text-xs mt-1",style:{color:"var(--muted-foreground)"},children:r.apiKeyExisting??"Existing key configured. Leave blank to keep it."}),P.signupUrl&&!A.apiKey&&!A.apiKeyMask&&(0,s.jsxs)("a",{href:P.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,s.jsx)(v.A,{size:10}),P.apiKeyFallback?"zh"===x?`下载 ${P.nameZh}`:`Download ${P.name}`:"zh"===x?`获取 ${P.nameZh} API Key`:`Get ${P.name} API Key`]})]}),P.supportsBaseUrl&&(0,s.jsx)(b.D0,{label:r.baseUrl,hint:r.baseUrlHint,children:(0,s.jsx)(b.pd,{value:A.baseUrl??"",onChange:e=>T({baseUrl:e.target.value}),placeholder:P.fixedBaseUrl||(0,j.Ot)(A.protocol)||"https://api.openai.com/v1"})}),(0,s.jsx)(b.D0,{label:r.model,children:(0,s.jsx)(S.A,{value:A.model,onChange:e=>T({model:e}),placeholder:P.defaultModel,provider:A.protocol,apiKey:A.apiKey,baseUrl:A.baseUrl,supportsListModels:P.supportsListModels,browseLabel:r.listModels,noModelsLabel:r.noModelsFound})})]}),(0,s.jsxs)("div",{className:"pt-3 mt-1",style:{borderTop:"1px solid var(--border)"},children:[(0,s.jsxs)("button",{type:"button",onClick:()=>g(!h),className:"flex items-center gap-1.5 text-xs font-medium",style:{color:"var(--muted-foreground)"},children:[h?(0,s.jsx)(y.A,{size:12}):(0,s.jsx)(l.A,{size:12}),r.advancedPorts]}),h&&(0,s.jsxs)("div",{className:"mt-3 space-y-5",children:[(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--foreground)"},children:r.tokenSectionTitle}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("code",{className:"flex-1 truncate text-xs font-mono px-3 py-2 rounded-lg",style:{background:"var(--muted)",color:"var(--foreground)"},children:e.authToken}),(0,s.jsxs)("button",{type:"button",onClick:o,className:"flex items-center gap-1 px-2.5 py-2 text-xs rounded-lg border transition-colors hover:bg-muted shrink-0",style:{borderColor:"var(--border)",color:"var(--foreground)"},children:[(0,s.jsx)(k.A,{size:12})," ",r.copyToken]})]}),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:r.tokenSectionHint})]}),(0,s.jsx)(M,{state:e,update:t,webPortStatus:n,mcpPortStatus:i,setWebPortStatus:c,setMcpPortStatus:u,checkPort:p,portConflict:m,s:r})]})]})]})}var I=r(62791),O=r(10762),L=r(68806),E=r(90718);let U={"claude-code":"https://docs.anthropic.com/en/docs/claude-code/overview",cursor:"https://www.cursor.com/",windsurf:"https://codeium.com/windsurf",cline:"https://github.com/cline/cline",trae:"https://www.trae.ai/","gemini-cli":"https://github.com/google-gemini/gemini-cli",augment:"https://www.augmentcode.com/"};function R({agents:e,agentsLoading:t,selectedAgents:r,setSelectedAgents:o,connectionMode:n,setConnectionMode:l,agentTransport:d,setAgentTransport:c,agentScope:u,setAgentScope:p,agentStatuses:m,s:x,settingsMcp:h}){let[g,f]=(0,a.useState)(!1),[v,k]=(0,a.useState)(!1),{detected:j,other:N}=(0,a.useMemo)(()=>({detected:e.filter(e=>e.installed||e.present),other:e.filter(e=>!e.installed&&!e.present)}),[e]),w=(e,t)=>(0,s.jsxs)("label",{className:"flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-muted/50 transition-colors",style:{background:t%2==0?"var(--card)":"transparent",borderTop:t>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("input",{type:"checkbox",checked:r.has(e.key),onChange:()=>{var t;return t=e.key,void o(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"form-check",disabled:m[e.key]?.state==="installing"}),(0,s.jsx)("span",{className:"text-sm flex-1",style:{color:"var(--foreground)"},children:e.name}),n.mcp&&(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded font-mono",style:{background:"color-mix(in srgb, var(--muted-foreground) 8%, transparent)",color:"var(--muted-foreground)"},children:"auto"===d?e.preferredTransport:d}),((e,t)=>{let r=m[e];if(r){if("installing"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:10,className:"animate-spin"})," ",x.agentInstalling]});if("ok"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:[(0,s.jsx)(P.A,{size:10})," ",x.agentStatusOk]});if("error"===r.state)return(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)",color:"var(--error)"},children:[(0,s.jsx)(I.A,{size:10})," ",x.agentStatusError,r.message&&(0,s.jsxs)("span",{className:"ml-1 text-2xs",children:["(",r.message,")"]})]})}if(t.installed)return(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--success) 12%, transparent)",color:"var(--success)"},children:h.installed});if(t.present)return(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"var(--amber-dim)",color:"var(--amber)"},children:x.agentDetected});let a=U[e];return(0,s.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{background:"color-mix(in srgb, var(--muted-foreground) 10%, transparent)",color:"var(--muted-foreground)"},children:x.agentNotFound}),a&&(0,s.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"text-2xs hover:underline",style:{color:"var(--amber)"},children:x.agentGetIt})]})})(e.key,e)]},e.key);return(0,s.jsxs)("div",{className:"space-y-5",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--muted-foreground)"},children:x.connectionModeTitle}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,s.jsxs)("label",{className:"flex items-start gap-3 px-4 py-3 rounded-xl border cursor-pointer transition-all",style:{borderColor:n.cli?"var(--amber)":"var(--border)",background:n.cli?"color-mix(in srgb, var(--amber) 6%, transparent)":"transparent"},children:[(0,s.jsx)("input",{type:"checkbox",checked:n.cli,onChange:()=>l(e=>({...e,cli:!e.cli})),className:"form-check mt-0.5"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[(0,s.jsx)(O.A,{size:13,className:"shrink-0"})," CLI"]}),(0,s.jsx)("p",{className:"text-2xs mt-0.5",style:{color:"var(--muted-foreground)"},children:x.connectionModeCliHint})]})]}),(0,s.jsxs)("label",{className:"flex items-start gap-3 px-4 py-3 rounded-xl border cursor-pointer transition-all",style:{borderColor:n.mcp?"var(--amber)":"var(--border)",background:n.mcp?"color-mix(in srgb, var(--amber) 6%, transparent)":"transparent"},children:[(0,s.jsx)("input",{type:"checkbox",checked:n.mcp,onChange:()=>l(e=>({...e,mcp:!e.mcp})),className:"form-check mt-0.5"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[(0,s.jsx)(L.A,{size:13,className:"shrink-0"})," MCP"]}),(0,s.jsx)("p",{className:"text-2xs mt-0.5",style:{color:"var(--muted-foreground)"},children:x.connectionModeMcpHint})]})]})]})]}),n.cli||n.mcp?(0,s.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:!n.mcp&&n.cli?x.agentToolsHintCliOnly:x.agentToolsHint}):(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2.5 rounded-lg text-xs",style:{background:"color-mix(in srgb, var(--amber) 8%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(E.A,{size:13,className:"shrink-0"}),(0,s.jsx)("span",{children:x.agentToolsHintNone})]}),t?(0,s.jsxs)("div",{className:"flex items-center gap-2 py-4",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(i.A,{size:14,className:"animate-spin"}),(0,s.jsx)("span",{className:"text-sm",children:x.agentToolsLoading})]}):0===e.length?(0,s.jsx)("p",{className:"text-sm py-4 text-center",style:{color:"var(--muted-foreground)"},children:x.agentToolsEmpty}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex items-center gap-4 text-2xs",style:{color:"var(--muted-foreground)"},children:[(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--success)"}}),x.badgeInstalled]}),(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--amber)"}}),x.badgeDetected]}),(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full",style:{background:"var(--muted-foreground)"}}),x.badgeNotFound]})]}),j.length>0?(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:j.map((e,t)=>w(e,t))}):(0,s.jsx)("p",{className:"text-xs py-2",style:{color:"var(--muted-foreground)"},children:x.agentNoneDetected}),N.length>0&&(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>f(!g),"aria-expanded":g,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(y.A,{size:12,className:`transition-transform ${g?"rotate-180":""}`}),x.agentShowMore(N.length)]}),g&&(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden mt-1",style:{borderColor:"var(--border)"},children:N.map((e,t)=>w(e,t))})]}),n.mcp&&0===r.size&&(0,s.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2.5 rounded-lg text-xs",style:{background:"color-mix(in srgb, var(--amber) 8%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(E.A,{size:13,className:"shrink-0"}),(0,s.jsx)("span",{children:x.agentNoneSelected})]}),n.mcp&&(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>k(!v),"aria-expanded":v,className:"flex items-center gap-1.5 text-xs py-1.5 transition-colors",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(y.A,{size:12,className:`transition-transform ${v?"rotate-180":""}`}),x.agentAdvanced]}),v&&(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4 mt-2",children:[(0,s.jsx)(b.D0,{label:x.agentTransport,children:(0,s.jsxs)(b.l6,{value:d,onChange:e=>c(e.target.value),children:[(0,s.jsx)("option",{value:"auto",children:x.agentTransportAuto}),(0,s.jsx)("option",{value:"stdio",children:h.transportStdio}),(0,s.jsx)("option",{value:"http",children:h.transportHttp})]})}),(0,s.jsx)(b.D0,{label:x.agentScope,children:(0,s.jsxs)(b.l6,{value:u,onChange:e=>p(e.target.value),children:[(0,s.jsx)("option",{value:"global",children:x.agentScopeGlobal}),(0,s.jsx)("option",{value:"project",children:x.agentScopeProject})]})})]})]}),(0,s.jsxs)("div",{className:"flex gap-2 mt-1",children:[(0,s.jsx)("button",{type:"button",onClick:()=>o(new Set(e.filter(e=>e.installed||e.present).map(e=>e.key))),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--amber)",color:"var(--amber)"},children:x.agentSelectDetected}),(0,s.jsx)("button",{type:"button",onClick:()=>o(new Set),className:"text-xs px-2.5 py-1 rounded-md border transition-colors hover:bg-muted/50",style:{borderColor:"var(--border)",color:"var(--muted-foreground)"},children:x.agentSkipLater})]})]})]})}var _=r(42129),K=r(439),D=r(94514);function $({s:e}){return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"p-3 rounded-lg text-sm flex items-center gap-2",style:{background:"color-mix(in srgb, var(--amber) 10%, transparent)",color:"var(--amber)"},children:[(0,s.jsx)(A.A,{size:14})," ",e.restartRequired]}),(0,s.jsxs)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:[e.restartManual," ",(0,s.jsx)("code",{className:"font-mono",children:"mindos start"})]})]})}function B({s:e,newPort:t,webPassword:r}){let[o,n]=(0,a.useState)(!1),[l,d]=(0,a.useState)(!1),c=(0,a.useRef)(void 0),u=(0,a.useRef)(void 0);(0,a.useEffect)(()=>()=>{clearTimeout(u.current),clearInterval(c.current)},[]);let p=async()=>{n(!0);try{let e=await fetch("/api/restart",{method:"POST"});if(!e.ok)throw Error(`restart failed (${e.status})`);d(!0);let s=window.location.hostname||"localhost",a=s.includes(":")?`[${s}]`:s,o=`http://${a}:${t}`,n=()=>{window.location.href=`${o}/?welcome=1`},l=0;clearInterval(c.current),u.current=setTimeout(()=>{c.current=setInterval(async()=>{l++;try{if((await fetch(`${o}/api/health`)).status<500){if(clearInterval(c.current),r)try{await fetch(`${o}/api/auth`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:r}),credentials:"include"})}catch{}n();return}}catch{}l>=30&&(clearInterval(c.current),n())},800)},2e3)}catch(e){console.warn("[SetupWizard] restart request failed:",e),n(!1)}};return l?(0,s.jsxs)("span",{className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg",style:{background:"color-mix(in srgb, var(--success) 15%, transparent)",color:"var(--success)"},children:[(0,s.jsx)(P.A,{size:14})," ",e.restartDone]}):(0,s.jsxs)("button",{type:"button",onClick:p,disabled:o,className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[o?(0,s.jsx)(i.A,{size:13,className:"animate-spin"}):null,o?e.restarting:e.restartNow]})}function Z({state:e,selectedAgents:t,agentStatuses:r,onRetryAgent:a,error:o,needsRestart:n,s:l,setupPhase:d,cliEnabled:c,mcpEnabled:u,skillInstallStatus:p="pending"}){let m=Object.entries(r).filter(([,e])=>"error"===e.state),x=c&&u?"CLI + MCP":c?"CLI":u?"MCP":"—",h=[[l.kbPath,e.mindRoot],[l.webPort,`${e.webPort} / ${e.mcpPort}`],[l.agentToolsTitle,u&&t.size>0?`${x} \xb7 ${l.agentCountSummary(t.size)}`:x]],g=u&&t.size>0,b=t.size>0,f=[{key:"saving",label:l.phaseSaving},...g?[{key:"agents",label:l.phaseAgents}]:[],...b?[{key:"skills",label:l.phaseSkill??"Installing skills"}]:[],{key:"done",label:l.phaseDone}],v=f.map(e=>e.key),y=v.indexOf(d);return(0,s.jsxs)("div",{className:"space-y-5",children:["done"!==d&&(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:h.map(([e,t],r)=>(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 text-sm",style:{background:r%2==0?"var(--card)":"transparent",borderTop:r>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("span",{style:{color:"var(--muted-foreground)"},children:e}),(0,s.jsx)("span",{className:"font-mono text-xs truncate ml-4",style:{color:"var(--foreground)"},children:t})]},r))}),"review"===d&&(0,s.jsx)("p",{className:"text-sm",style:{color:"var(--muted-foreground)"},children:l.reviewHint}),"review"!==d&&"done"!==d&&(0,s.jsx)("div",{className:"space-y-2 py-2",children:f.map(({key:e,label:t},r)=>{let a=v.indexOf(e),o=y>a,n=d===e;return(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 text-2xs",style:{background:o?"color-mix(in srgb, var(--success) 15%, transparent)":n?"color-mix(in srgb, var(--amber) 15%, transparent)":"var(--muted)",color:o?"var(--success)":n?"var(--amber)":"var(--muted-foreground)"},children:o?(0,s.jsx)(P.A,{size:12}):n?(0,s.jsx)(i.A,{size:12,className:"animate-spin"}):r+1}),(0,s.jsx)("span",{className:"text-sm",style:{color:o?"var(--success)":n?"var(--foreground)":"var(--muted-foreground)",fontWeight:n?500:400,opacity:y<a?.5:1},children:t})]},e)})}),m.length>0&&"done"===d&&(0,s.jsxs)("div",{className:"p-3 rounded-lg space-y-2",style:{background:"color-mix(in srgb, var(--error) 8%, transparent)"},children:[(0,s.jsx)("p",{className:"text-xs font-medium",style:{color:"var(--error)"},children:l.agentFailedCount(m.length)}),m.map(([e,t])=>(0,s.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,s.jsxs)("span",{className:"text-xs flex items-center gap-1",style:{color:"var(--error)"},children:[(0,s.jsx)(I.A,{size:11})," ",e,t.message?` — ${t.message}`:""]}),(0,s.jsx)("button",{type:"button",onClick:()=>a(e),className:"text-xs px-2 py-0.5 rounded border transition-colors",style:{borderColor:"var(--error)",color:"var(--error)"},children:l.retryAgent})]},e)),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:l.agentFailureNote})]}),o&&(0,s.jsxs)("div",{className:"p-3 rounded-lg text-sm text-error",style:{background:"color-mix(in srgb, var(--error) 10%, transparent)"},children:[l.completeFailed,": ",o]}),"done"===d&&(0,s.jsx)(F,{state:e,selectedAgents:t,agentStatuses:r,needsRestart:n,skillInstallStatus:p,s:l})]})}function F({state:e,selectedAgents:t,agentStatuses:r,needsRestart:n,s:l,skillInstallStatus:i="pending"}){let[p,m]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!p)return;let e=setTimeout(()=>m(!1),2e3);return()=>clearTimeout(e)},[p]);let x=(0,a.useCallback)(async()=>{!e.authToken||await (0,c.l)(e.authToken)&&(m(!0),u.oR.copy())},[e.authToken]),{locale:h}=(0,d.Y)(),g=!!e.mindRoot,b="skip"!==e.activeProvider&&e.providers.length>0,f=Object.values(r).filter(e=>"ok"===e.state).length,v=f>0,y=!!e.authToken,N="",w="";if(b){let t=e.providers.find(t=>t.id===e.activeProvider);if(t){let e=j.T_[t.protocol];N="zh"===h?e.nameZh:e.name,w=t.model||e.defaultModel}}let S=[{ok:g,icon:(0,s.jsx)(_.A,{size:14}),title:l.healthKb??"Knowledge Base",detail:g?e.mindRoot:l.healthKbNone??"Not configured"},{ok:b,icon:(0,s.jsx)(E.A,{size:14}),title:l.healthAi??"AI Provider",detail:b?`${N} (${w||"default"})`:l.healthAiNone??"Not configured — AI features disabled",action:b?void 0:l.healthAiAction??"Add an API key in Settings → AI."},{ok:v,icon:(0,s.jsx)(L.A,{size:14}),title:l.healthAgents??"Agent Connection",detail:v?l.healthAgentsOk?.(f)??`${f} agent(s) configured`:t.size>0?l.healthAgentsPartial??"Configuration in progress...":l.healthAgentsNone??"No agents configured",action:v?void 0:l.healthAgentsAction??"You can add agents later in Settings → Connections."},...t.size>0?[{ok:"ok"===i,icon:(0,s.jsx)(o.A,{size:14}),title:l.healthSkills??"Skills",detail:"ok"===i?l.healthSkillsOk??"Skills installed successfully":"error"===i?l.healthSkillsError??"Skill installation failed":"skipped"===i?l.healthSkillsSkipped??"Skipped":l.healthSkillsInstalling??"Installing skills...",action:"error"===i?l.healthSkillsAction??"You can install skills manually later.":void 0}]:[]];return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)("div",{className:"rounded-xl border overflow-hidden",style:{borderColor:"var(--border)"},children:S.map(({ok:e,icon:t,title:r,detail:a,action:o},n)=>(0,s.jsxs)("div",{className:"flex items-start gap-3 px-4 py-3",style:{background:n%2==0?"var(--card)":"transparent",borderTop:n>0?"1px solid var(--border)":void 0},children:[(0,s.jsx)("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 mt-0.5",style:{background:e?"color-mix(in srgb, var(--success) 15%, transparent)":"color-mix(in srgb, var(--amber) 15%, transparent)",color:e?"var(--success)":"var(--amber)"},children:e?(0,s.jsx)(P.A,{size:12}):(0,s.jsx)(A.A,{size:10})}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-sm font-medium",style:{color:"var(--foreground)"},children:[t," ",r]}),(0,s.jsx)("p",{className:"text-xs mt-0.5 break-words",style:{color:e?"var(--muted-foreground)":"var(--amber-text)"},children:a}),o&&(0,s.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--muted-foreground)"},children:o})]})]},n))}),y&&(0,s.jsxs)("div",{className:"rounded-xl border p-4 space-y-2",style:{borderColor:"var(--border)",background:"var(--card)"},children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium uppercase tracking-wider",style:{color:"var(--muted-foreground)"},children:[(0,s.jsx)(K.A,{size:11}),l.healthTokenTitle??"Auth Token"]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex items-center px-3 py-2 rounded-lg min-h-[38px]",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:(0,s.jsx)("code",{className:"flex-1 text-xs font-mono break-all select-all leading-relaxed",style:{color:"var(--foreground)"},children:e.authToken})}),(0,s.jsx)("button",{type:"button",onClick:x,className:"shrink-0 p-2 rounded-lg border transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",style:{borderColor:p?"color-mix(in srgb, var(--success) 50%, transparent)":"var(--border)",background:p?"color-mix(in srgb, var(--success) 10%, transparent)":"transparent",color:p?"var(--success)":"var(--muted-foreground)"},title:l.healthTokenCopy??"Copy token",children:p?(0,s.jsx)(D.A,{size:14}):(0,s.jsx)(k.A,{size:14})})]}),(0,s.jsx)("p",{className:"text-xs",style:{color:"var(--muted-foreground)"},children:l.healthTokenHint??"Use this token when connecting AI agents. Also available in Settings → Connections."})]}),n&&(0,s.jsx)($,{s:l})]})}function W({step:e,setStep:t,stepTitles:r,disabled:a,numberedSteps:o}){let{t:n}=(0,d.Y)(),l=o??r.length,i=r.slice(0,l),c=e>=l;return(0,s.jsx)("div",{className:"flex items-center gap-2 mb-8",role:"navigation","aria-label":"Setup steps",children:i.map((r,o)=>(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[o>0&&(0,s.jsx)("div",{className:"w-8 h-px",style:{background:o<=e||c?"var(--amber)":"var(--border)"}}),(0,s.jsxs)("button",{onClick:()=>t(o),"aria-current":o===e?"step":void 0,"aria-label":r,className:"flex flex-col items-center gap-1 p-1 -m-1 disabled:cursor-not-allowed disabled:opacity-60",disabled:a||o>e,title:a||o>e?n.hints.cannotJumpForward:void 0,children:[(0,s.jsx)("div",{className:"w-6 h-6 rounded-full text-xs font-medium flex items-center justify-center transition-colors",style:{background:o<e||c||o===e?"var(--amber)":"var(--muted)",color:o<=e||c?"var(--amber-foreground)":"var(--muted-foreground)",opacity:o<=e||c?1:.5},children:o<e||c?(0,s.jsx)(P.A,{size:14}):o+1}),(0,s.jsx)("span",{className:"text-[10px] leading-tight hidden sm:inline max-w-[4rem] text-center truncate",style:{color:o!==e||c?"var(--muted-foreground)":"var(--foreground)",opacity:o<=e||c?1:.5},children:r})]})]},o))})}function H(e,t,r,s){let a=t.find(t=>t.key===e);return{key:e,scope:s,transport:"auto"===r?a?.preferredTransport||"stdio":r}}function G(e){return{state:"ok"===e.status?"ok":"error",message:e.message,transport:e.transport,verified:e.verified,verifyError:e.verifyError}}async function Y(e,t){let r="skip"===e.activeProvider||0===e.providers.length,s=e.providers.map(({apiKeyMask:e,...t})=>t),a={mindRoot:e.mindRoot,template:e.template||void 0,port:e.webPort,mcpPort:e.mcpPort,authToken:e.authToken,webPassword:e.webPassword,ai:r?void 0:{activeProvider:e.activeProvider,providers:s},connectionMode:t??{cli:!0,mcp:!1}},o=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),n=await o.json();if(!o.ok)throw Error(n.error||`HTTP ${o.status}`);return!!n.needsRestart}async function q(e,t,r,s,a,o){let n=e.map(e=>H(e,t,r,s)),l=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:n,transport:r,url:`http://localhost:${a}/mcp`,token:o||void 0})}),i=await l.json(),d={};if(i.results)for(let e of i.results)d[e.agent]=G(e);return d}async function J(e,t){if(0===t.length)return!0;try{let r=await fetch("/api/mcp/install-skill",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({skill:e,agents:t})}),s=await r.json();return!0===s.ok}catch(e){return console.warn("[SetupWizard] Skill installation failed:",e),!1}}function V(){let{t:e}=(0,d.Y)(),t=e.setup,[r,p]=(0,a.useState)(0),[m,x]=(0,a.useState)({mindRoot:"~/MindOS/mind",template:"en",activeProvider:"skip",providers:[],webPort:3456,mcpPort:8781,authToken:"",webPassword:""}),[h,g]=(0,a.useState)("~"),[b,v]=(0,a.useState)(!1),[y,k]=(0,a.useState)(!1),[j,N]=(0,a.useState)(""),[w,S]=(0,a.useState)(!1),[A,P]=(0,a.useState)("pending"),[T,C]=(0,a.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[M,I]=(0,a.useState)({checking:!1,available:null,isSelf:!1,suggestion:null}),[O,L]=(0,a.useState)([]),[E,U]=(0,a.useState)(!1),[_,K]=(0,a.useState)(!1),[D,$]=(0,a.useState)(new Set),[F,V]=(0,a.useState)("auto"),[X,Q]=(0,a.useState)("global"),[ee,et]=(0,a.useState)({}),[er,es]=(0,a.useState)({cli:!0,mcp:!1}),[ea,eo]=(0,a.useState)("review");(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.homeDir&&g(e.homeDir),x(t=>{let r=t.providers;Array.isArray(e.providerConfigs)&&e.providerConfigs.length>0&&(r=e.providerConfigs.map(e=>({id:e.id,name:e.name||"",protocol:e.protocol,apiKey:"",model:e.model||"",baseUrl:e.baseUrl||"",apiKeyMask:e.apiKeyMask||""})));let s=e.activeProvider||t.activeProvider;return{...t,mindRoot:e.mindRoot||t.mindRoot,webPort:"number"==typeof e.port?e.port:t.webPort,mcpPort:"number"==typeof e.mcpPort?e.mcpPort:t.mcpPort,authToken:e.authToken||t.authToken,webPassword:e.webPassword||t.webPassword,activeProvider:s,providers:r}}),e.authToken||fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&x(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Token generation failed:",e))}).catch(e=>{console.warn("[SetupWizard] Failed to load config, generating token as fallback:",e),fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).then(e=>e.json()).then(e=>{e.token&&x(t=>({...t,authToken:e.token}))}).catch(e=>console.warn("[SetupWizard] Fallback token generation also failed:",e))})},[]),(0,a.useEffect)(()=>{1===r&&(ei(m.webPort,"web",!0),ei(m.mcpPort,"mcp",!0))},[r]),(0,a.useEffect)(()=>{2!==r||_||E||(U(!0),fetch("/api/mcp/agents").then(e=>e.json()).then(e=>{if(e.agents){let t=e.agents.filter(e=>"builtin"!==e.scope);L(t),$(new Set(t.filter(e=>e.installed||e.present).map(e=>e.key)))}K(!0)}).catch(e=>{console.warn("[SetupWizard] Failed to load agents:",e),K(!0)}).finally(()=>U(!1)))},[r,_,E]);let en=(0,a.useCallback)((e,t)=>{x(r=>({...r,[e]:t}))},[]);(0,a.useCallback)(async e=>{try{let t=await fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({seed:e||void 0})}),r=await t.json();r.token&&x(e=>({...e,authToken:r.token}))}catch(e){console.warn("[SetupWizard] generateToken failed:",e)}},[]);let el=(0,a.useCallback)(()=>{(0,c.l)(m.authToken).then(e=>{e&&u.oR.copy()})},[m.authToken]),ei=(0,a.useCallback)(async(e,t,r=!1)=>{if(e<1024||e>65535)return;let s="web"===t?C:I;s({checking:!0,available:null,isSelf:!1,suggestion:null});try{let a=await fetch("/api/setup/check-port",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({port:e})}),o=await a.json(),n=o.available??null,l=o.suggestion??null;if(s({checking:!1,available:n,isSelf:!!o.isSelf,suggestion:l}),r&&!1===n&&l){let e="web"===t?"webPort":"mcpPort";x(t=>({...t,[e]:l})),setTimeout(()=>ei(l,t,!1),0)}}catch(e){console.warn("[SetupWizard] checkPort failed:",e),s({checking:!1,available:null,isSelf:!1,suggestion:null})}},[]),ed=m.webPort===m.mcpPort,ec=async()=>{v(!0),N("");let e=Array.from(D),t=m;if(!m.authToken)try{let e=await fetch("/api/setup/generate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}),r=await e.json();r.token&&(t={...m,authToken:r.token},x(t))}catch{}eo("saving");try{await Y(t,er)&&S(!0)}catch(e){N(e instanceof Error?e.message:String(e)),eo("review"),v(!1);return}if(er.mcp&&e.length>0){eo("agents");let r={};for(let t of e)r[t]={state:"installing"};et(r);try{let r=await q(e,O,F,X,t.mcpPort,t.authToken);et(r)}catch(r){console.warn("[SetupWizard] agent batch install failed:",r);let t={};for(let r of e)t[r]={state:"error"};et(t)}}if(e.length>0){eo("skills"),P("installing");let r="zh"===t.template?"mindos-zh":"mindos";try{let t=await J(r,e);P(t?"ok":"error")}catch(e){console.warn("[SetupWizard] skill install failed:",e),P("error")}}else P("skipped");v(!1),k(!0),eo("done")},eu=(0,a.useCallback)(async e=>{et(t=>({...t,[e]:{state:"installing"}}));try{let t=H(e,O,F,X),r=await fetch("/api/mcp/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:[t],transport:F,url:`http://localhost:${m.mcpPort}/mcp`,token:m.authToken||void 0})}),s=await r.json();if(s.results?.[0]){let t=s.results[0];et(r=>({...r,[e]:G(t)}))}}catch(t){console.warn("[SetupWizard] retryAgent failed:",t),et(t=>({...t,[e]:{state:"error"}}))}},[O,X,F,m.mcpPort,m.authToken]);return(0,s.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col overflow-y-auto",role:"dialog","aria-modal":"true","aria-labelledby":"setup-title",style:{background:"var(--background)"},children:[(0,s.jsx)("div",{className:"sticky top-0 z-10 pt-6 pb-3 px-6",style:{background:"var(--background)"},children:(0,s.jsxs)("div",{className:"max-w-xl mx-auto",children:[(0,s.jsx)("div",{className:"text-center mb-3",children:(0,s.jsxs)("div",{className:"inline-flex items-center gap-2",children:[(0,s.jsx)(o.A,{size:18,style:{color:"var(--amber)"}}),(0,s.jsx)("h1",{id:"setup-title",className:"text-2xl font-brand",style:{color:"var(--foreground)"},children:"MindOS"})]})}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(W,{step:r,setStep:p,stepTitles:t.stepTitles,disabled:b||y,numberedSteps:3})})]})}),(0,s.jsxs)("div",{className:"flex-1 w-full max-w-xl mx-auto px-6 pb-8",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold mb-5",style:{color:"var(--foreground)"},children:3===r?`✓ ${t.stepTitles[r]}`:t.stepTitles[r]}),0===r&&(0,s.jsx)(f,{state:m,update:en,t:e,homeDir:h}),1===r&&(0,s.jsx)(z,{state:m,update:en,s:t,onCopyToken:el,webPortStatus:T,mcpPortStatus:M,setWebPortStatus:C,setMcpPortStatus:I,checkPort:ei,portConflict:ed}),2===r&&(0,s.jsx)(R,{agents:O,agentsLoading:E,selectedAgents:D,setSelectedAgents:$,connectionMode:er,setConnectionMode:es,agentTransport:F,setAgentTransport:V,agentScope:X,setAgentScope:Q,agentStatuses:ee,s:t,settingsMcp:e.settings.mcp}),3===r&&(0,s.jsx)(Z,{state:m,selectedAgents:D,agentStatuses:ee,onRetryAgent:eu,error:j,needsRestart:w,s:t,setupPhase:ea,cliEnabled:er.cli,mcpEnabled:er.mcp,skillInstallStatus:A}),(0,s.jsxs)("div",{className:"flex items-center justify-between mt-8 pt-6",style:{borderTop:"1px solid var(--border)"},children:[(0,s.jsxs)("button",{onClick:()=>p(r-1),disabled:0===r||b||y,className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg border border-border hover:bg-muted transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{color:"var(--foreground)"},children:[(0,s.jsx)(n.A,{size:14})," ",t.back]}),r<3?(0,s.jsxs)("button",{onClick:()=>p(r+1),disabled:!(0===r?m.mindRoot.trim().length>0&&m.webPassword.trim().length>0:1===r?!ed&&!T.checking&&!M.checking&&!1!==T.available&&!1!==M.available:2!==r||er.cli||er.mcp),className:"flex items-center gap-1 px-4 py-2 text-sm rounded-lg transition-colors disabled:opacity-30 disabled:cursor-not-allowed",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.next," ",(0,s.jsx)(l.A,{size:14})]}):y?w?(0,s.jsx)(B,{s:t,newPort:m.webPort,webPassword:m.webPassword}):(0,s.jsxs)("a",{href:"/?welcome=1",className:"flex items-center gap-1.5 px-5 py-2 text-sm font-medium rounded-lg transition-colors hover:opacity-90 focus-visible:ring-2 focus-visible:ring-ring",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[t.healthGoHome??"Go to MindOS"," →"]}):(0,s.jsxs)("button",{onClick:ec,disabled:b,className:"flex items-center gap-1 px-5 py-2 text-sm font-medium rounded-lg transition-colors disabled:opacity-50",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[b&&(0,s.jsx)(i.A,{size:14,className:"animate-spin"}),b?t.completing:t.complete]})]})]})]})}},47376:(e,t,r)=>{"use strict";r.d(t,{Ot:()=>u,T_:()=>a,Ux:()=>c,bf:()=>l,jt:()=>o,rl:()=>n});var s=r(20699);r(87358);let a={anthropic:{id:"anthropic",name:"Anthropic",nameZh:"Anthropic",shortLabel:"Anthropic",defaultModel:"claude-sonnet-4-6",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://console.anthropic.com/settings/keys",category:"primary"},openai:{id:"openai",name:"OpenAI",nameZh:"OpenAI",shortLabel:"OpenAI",defaultModel:"gpt-5.4",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.openai.com/api-keys",category:"primary"},google:{id:"google",name:"Google Gemini",nameZh:"Google Gemini",shortLabel:"Gemini",defaultModel:"gemini-2.5-flash",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://aistudio.google.com/apikey",category:"primary"},groq:{id:"groq",name:"Groq",nameZh:"Groq",shortLabel:"Groq",defaultModel:"llama-3.3-70b-versatile",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://console.groq.com/keys",category:"more"},xai:{id:"xai",name:"xAI (Grok)",nameZh:"xAI (Grok)",shortLabel:"xAI",defaultModel:"grok-3",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},openrouter:{id:"openrouter",name:"OpenRouter",nameZh:"OpenRouter",shortLabel:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},mistral:{id:"mistral",name:"Mistral",nameZh:"Mistral",shortLabel:"Mistral",defaultModel:"mistral-large-latest",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},deepseek:{id:"deepseek",name:"DeepSeek",nameZh:"DeepSeek",shortLabel:"DeepSeek",defaultModel:"deepseek-chat",piProviderOverride:"openai",fixedBaseUrl:"https://api.deepseek.com/v1",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.deepseek.com/api_keys",category:"more"},zai:{id:"zai",name:"ZhipuAI (GLM)",nameZh:"智谱 AI (GLM 国际版)",shortLabel:"智谱GLM",defaultModel:"glm-4-plus",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"zai-cn":{id:"zai-cn",name:"ZhipuAI (GLM China)",nameZh:"智谱 AI (GLM 国内版)",shortLabel:"智谱GLM-CN",description:"China region version",descriptionZh:"中国区版本",defaultModel:"glm-4-plus",piProviderOverride:"zai",fixedBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://open.bigmodel.cn/",category:"more"},"kimi-coding":{id:"kimi-coding",name:"Kimi Coding",nameZh:"Kimi Coding (月之暗面)",shortLabel:"Kimi Coding",defaultModel:"kimi-k2-thinking",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},cerebras:{id:"cerebras",name:"Cerebras",nameZh:"Cerebras",shortLabel:"Cerebras",defaultModel:"llama-4-scout-17b-16e",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},minimax:{id:"minimax",name:"MiniMax",nameZh:"MiniMax (国际版)",shortLabel:"MiniMax",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"minimax-cn":{id:"minimax-cn",name:"MiniMax (China)",nameZh:"MiniMax (国内版)",shortLabel:"MiniMax-CN",description:"China region version",descriptionZh:"中国区版本",defaultModel:"MiniMax-M2.5",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},huggingface:{id:"huggingface",name:"Hugging Face",nameZh:"Hugging Face",shortLabel:"HuggingFace",defaultModel:"Qwen/Qwen3-235B-A22B-Thinking-2507",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},ollama:{id:"ollama",name:"Ollama",nameZh:"Ollama (本地)",shortLabel:"Ollama",description:"Local server (requires setup)",descriptionZh:"本地服务器 (需要本地部署)",defaultModel:"llama3.2",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:11434/v1",apiKeyFallback:"ollama",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://ollama.com/download",category:"local"},"lm-studio":{id:"lm-studio",name:"LM Studio",nameZh:"LM Studio (本地)",shortLabel:"LM Studio",description:"Local OpenAI-compatible server",descriptionZh:"本地 OpenAI 兼容服务",defaultModel:"local-model",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:1234/v1",apiKeyFallback:"lm-studio",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://lmstudio.ai/",category:"local"},vllm:{id:"vllm",name:"vLLM",nameZh:"vLLM (本地)",shortLabel:"vLLM",description:"Local OpenAI-compatible server",descriptionZh:"本地 OpenAI 兼容服务",defaultModel:"local-model",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:8000/v1",apiKeyFallback:"vllm",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://docs.vllm.ai/",category:"local"}},o=Object.keys(a);function n(e){return e in a}function l(){let e=[],t=[],r=[];for(let s of o){let o=a[s].category;"primary"===o?e.push(s):"local"===o?t.push(s):r.push(s)}return t.sort((e,t)=>a[e].name.localeCompare(a[t].name)),r.sort((e,t)=>a[e].name.localeCompare(a[t].name)),{primary:e,local:t,more:r}}function i(e){return a[e].piProviderOverride??e}let d={deepseek:"DEEPSEEK_API_KEY"};function c(e){return d[e]?d[e]:p[i(e)]}function u(e){let t=a[e];if(t.fixedBaseUrl)return t.fixedBaseUrl;try{let t=(0,s.zr)(i(e));return t[0]?.baseUrl??""}catch{return""}}let p={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY","azure-openai-responses":"AZURE_OPENAI_API_KEY",google:"GEMINI_API_KEY",groq:"GROQ_API_KEY",cerebras:"CEREBRAS_API_KEY",xai:"XAI_API_KEY",openrouter:"OPENROUTER_API_KEY",zai:"ZAI_API_KEY","zai-cn":"ZAI_API_KEY",mistral:"MISTRAL_API_KEY",minimax:"MINIMAX_API_KEY","minimax-cn":"MINIMAX_API_KEY",huggingface:"HF_TOKEN","kimi-coding":"KIMI_API_KEY"}},60112:(e,t,r)=>{"use strict";function s(){return"p_"+Math.random().toString(36).slice(2,10)}function a(e){return"string"==typeof e&&e.startsWith("p_")}function o(e,t){return e.find(e=>e.id===t)}r.d(t,{Ny:()=>a,lh:()=>o,mV:()=>s}),r(47376)},60392:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=60392,e.exports=t},84825:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=84825,e.exports=t}},e=>{e.O(0,[4913,7540,3523,5581,9207,8441,3794,7358],()=>e(e.s=15721)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1227],{1934:(e,t,r)=>{"use strict";r.d(t,{v:()=>i});var s=r(12115);let a=e=>{let t,r=new Set,s=(e,s)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=s?s:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,l={setState:s,getState:a,getInitialState:()=>i,subscribe:e=>(r.add(e),()=>r.delete(e))},i=t=e(s,a,l);return l},l=e=>{let t=e?a(e):a,r=e=>(function(e,t=e=>e){let r=s.useSyncExternalStore(e.subscribe,s.useCallback(()=>t(e.getState()),[e,t]),s.useCallback(()=>t(e.getInitialState()),[e,t]));return s.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},i=e=>e?l(e):l},6296:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},9199:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},9339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={callServer:function(){return l.callServer},createServerReference:function(){return n.createServerReference},findSourceMapURL:function(){return i.findSourceMapURL}};for(var a in s)Object.defineProperty(t,a,{enumerable:!0,get:s[a]});let l=r(77304),i=r(4060),n=r(77197)},33078:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("table",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]])},33210:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},38798:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},41585:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},48368:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},51914:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},54839:(e,t,r)=>{Promise.resolve().then(r.bind(r,63663))},63663:(e,t,r)=>{"use strict";r.d(t,{default:()=>j});var s=r(95155),a=r(12115),l=r(68459),i=r(38798),n=r(33078),d=r(48368),o=r(41585),c=r(6296),u=r(9199),m=r(33210),h=r(73321),x=r(35581),f=r(9339);let p=(0,f.createServerReference)("601747cd15a589496d62beaa279b5b8911dfcfe572",f.callServer,void 0,f.findSourceMapURL,"restoreFromTrashAction"),b=(0,f.createServerReference)("4022d328729a12ca4871fe4c3640b20022e9431299",f.callServer,void 0,f.findSourceMapURL,"permanentlyDeleteAction"),v=(0,f.createServerReference)("002f52929330de4f7cd1e23bc2137b1cc750dca711",f.callServer,void 0,f.findSourceMapURL,"emptyTrashAction");var g=r(39498),y=r(4235);function j({initialItems:e}){let{t}=(0,x.Y)(),r=(0,h.useRouter)(),[f,j]=(0,a.useState)(e),[N,k]=(0,a.useTransition)(),[A,w]=(0,a.useState)(!1),[M,C]=(0,a.useState)(null),[S,R]=(0,a.useState)(null),[z,P]=(0,a.useState)(null),L=(0,a.useCallback)(async e=>{P(e.id);try{let s=await p(e.id,"restore");s.success?(j(t=>t.filter(t=>t.id!==e.id)),y.oR.success(t.trash.restored),r.refresh()):s.conflict?R(e):y.oR.error(s.error??t.trash.restoreFailed)}finally{P(null)}},[t,r]),T=(0,a.useCallback)(async e=>{if(!S)return;let s=await p(S.id,e);s.success?(j(e=>e.filter(e=>e.id!==S.id)),y.oR.success(t.trash.restored),R(null),r.refresh()):y.oR.error(s.error??t.trash.restoreFailed)},[S,t,r]),_=(0,a.useCallback)(async()=>{if(!M)return;let e=await b(M.id);e.success?(j(e=>e.filter(e=>e.id!==M.id)),y.oR.success(t.trash.deleted)):y.oR.error(e.error??t.trash.deleteFailed),C(null)},[M,t]),E=(0,a.useCallback)(async()=>{k(async()=>{let e=await v();e.success?(j([]),y.oR.success(t.trash.emptied(e.count??0))):y.oR.error(e.error??t.trash.emptyFailed),w(!1)})},[t]);return(0,s.jsxs)("div",{className:"min-h-screen",children:[(0,s.jsx)("div",{className:"px-4 md:px-6 pt-6 md:pt-8",children:(0,s.jsx)("div",{className:"content-width xl:mr-[220px] rounded-xl border border-border bg-card px-4 py-3 md:px-5 md:py-4",children:(0,s.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[(0,s.jsx)(l.A,{size:15}),t.trash.title]}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:t.trash.subtitle}),f.length>0&&(0,s.jsx)("div",{className:"mt-2 text-xs text-muted-foreground",children:t.trash.itemCount(f.length)})]}),f.length>0&&(0,s.jsx)("button",{type:"button",onClick:()=>w(!0),disabled:N,className:"px-2.5 py-1.5 rounded-md text-xs font-medium bg-error/10 text-error hover:bg-error/20 transition-colors disabled:opacity-50",children:t.trash.emptyTrash})]})})}),(0,s.jsx)("div",{className:"px-4 md:px-6 py-4 md:py-6",children:(0,s.jsx)("div",{className:"content-width xl:mr-[220px]",children:0===f.length?(0,s.jsxs)("div",{className:"rounded-xl border border-border/40 bg-card/30 p-12 text-center",children:[(0,s.jsx)("div",{className:"inline-flex items-center justify-center w-12 h-12 rounded-full bg-muted/60 mb-4",children:(0,s.jsx)(l.A,{size:22,className:"text-muted-foreground/40"})}),(0,s.jsx)("p",{className:"text-sm font-medium text-muted-foreground/70",children:t.trash.empty}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground/40 mt-1 max-w-xs mx-auto leading-relaxed",children:t.trash.emptySubtext})]}):(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:f.map(e=>{let r=Math.max(0,Math.ceil((new Date(e.expiresAt).getTime()-Date.now())/864e5)),a=r<=3;return(0,s.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 flex flex-col gap-3 hover:border-border/80 transition-colors",children:[(0,s.jsxs)("div",{className:"flex items-start gap-3 min-w-0",children:[(0,s.jsx)("div",{className:"w-9 h-9 rounded-lg bg-muted/50 flex items-center justify-center shrink-0",children:e.isDirectory?(0,s.jsx)(i.A,{size:16,className:"text-muted-foreground"}):e.fileName.endsWith(".csv")?(0,s.jsx)(n.A,{size:16,className:"text-success"}):(0,s.jsx)(d.A,{size:16,className:"text-muted-foreground"})}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-foreground truncate",title:e.fileName,children:e.fileName}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground truncate mt-0.5",title:e.originalPath,children:[t.trash.from,": ",e.originalPath.split("/").slice(0,-1).join("/")||"/"]})]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,s.jsx)("span",{className:"text-2xs text-muted-foreground",children:t.trash.deletedAgo(function(e,t){let r=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(r<1)return t.justNow??"just now";if(r<60)return t.minutesAgo?.(r)??`${r}m ago`;let s=Math.floor(r/60);if(s<24)return t.hoursAgo?.(s)??`${s}h ago`;let a=Math.floor(s/24);return t.daysAgo?.(a)??`${a}d ago`}(e.deletedAt,t.trash))}),(0,s.jsxs)("span",{className:`text-2xs ${a?"text-error":"text-muted-foreground/60"}`,children:[a&&(0,s.jsx)(o.A,{size:9,className:"inline mr-0.5"}),t.trash.expiresIn(r)]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>L(e),disabled:z===e.id,className:"inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs font-medium bg-success/10 text-success hover:bg-success/20 transition-colors disabled:opacity-50",children:[z===e.id?(0,s.jsx)(c.A,{size:11,className:"animate-spin"}):(0,s.jsx)(u.A,{size:11}),t.trash.restore]}),(0,s.jsx)("button",{type:"button",onClick:()=>C(e),className:"p-1 rounded-md text-muted-foreground hover:text-error hover:bg-error/10 transition-colors",title:t.trash.deletePermanently,children:(0,s.jsx)(m.A,{size:13})})]})]})]},e.id)})})})}),(0,s.jsx)(g.TM,{open:A,title:t.trash.emptyTrash,message:t.trash.emptyTrashConfirm,confirmLabel:t.trash.emptyTrash,cancelLabel:t.trash.cancel??"Cancel",onConfirm:()=>void E(),onCancel:()=>w(!1),variant:"destructive"}),(0,s.jsx)(g.TM,{open:!!M,title:t.trash.deletePermanently,message:M?t.trash.deletePermanentlyConfirm(M.fileName):"",confirmLabel:t.trash.deletePermanently,cancelLabel:t.trash.cancel??"Cancel",onConfirm:()=>void _(),onCancel:()=>C(null),variant:"destructive"}),S&&(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center modal-backdrop",children:(0,s.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-xl max-w-sm w-full mx-4 p-5",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,s.jsx)(o.A,{size:16,className:"text-[var(--amber)]"}),(0,s.jsx)("h3",{className:"text-sm font-semibold",children:t.trash.restoreConflict})]}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground mb-4",children:['"',S.fileName,'" — ',S.originalPath]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 justify-end",children:[(0,s.jsx)("button",{type:"button",onClick:()=>R(null),className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:t.trash.cancel??"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>void T("copy"),className:"px-3 py-1.5 rounded-md text-xs font-medium bg-muted text-foreground hover:bg-muted/80 transition-colors",children:t.trash.saveAsCopy}),(0,s.jsx)("button",{type:"button",onClick:()=>void T("overwrite"),className:"px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--amber-dim)] text-[var(--amber-text)] hover:opacity-80 transition-colors",children:t.trash.overwrite})]})]})})]})}},68459:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]])},73321:(e,t,r)=>{"use strict";var s=r(74645);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},90425:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var s=r(12115);let a=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),l=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,s.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:n="",children:d,iconNode:o,...c},u)=>(0,s.createElement)("svg",{ref:u,...i,width:t,height:t,stroke:e,strokeWidth:l?24*Number(r)/Number(t):r,className:a("lucide",n),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(d)?d:[d]])),d=(e,t)=>{let r=(0,s.forwardRef)(({className:r,...i},d)=>(0,s.createElement)(n,{ref:d,iconNode:t,className:a(`lucide-${l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...i}));return r.displayName=l(e),r}}},e=>{e.O(0,[5581,8252,8441,3794,7358],()=>e(e.s=54839)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,160,165,332,635,706,910,1124,1131,1150,1165,1212,1288,2036,2092,2191,2229,2287,2437,2522,2772,2839,2920,2950,3358,3390,3757,3896,3945,4048,4209,4230,4473,4503,4558,4828,4888,4896,5177,5245,5411,5620,5684,5704,5931,6047,6202,6306,6540,6739,6819,6828,6988,7113,7330,7538,7581,7607,7646,7711,7822,7839,7851,7858,8141,8167,8181,8232,8372,8529,8616,8641,9120,9188,9249,9303,9336,9491,9596,9725,9861,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,160,165,332,635,706,910,1124,1131,1150,1165,1212,1288,2036,2092,2191,2229,2287,2437,2522,2772,2839,2920,2950,3358,3390,3757,3896,3945,4048,4209,4230,4473,4503,4558,4828,4888,4896,5177,5245,5411,5620,5684,5704,5931,6047,6202,6306,6540,6739,6819,6828,6988,7113,7330,7538,7581,7607,7646,7711,7822,7839,7851,7858,8141,8167,8181,8232,8372,8529,8616,8641,9120,9188,9249,9303,9336,9491,9596,9725,9861,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,160,165,332,635,706,910,1124,1131,1150,1165,1212,1288,2036,2092,2191,2229,2287,2437,2522,2772,2839,2920,2950,3358,3390,3757,3896,3945,4048,4209,4230,4473,4503,4558,4828,4888,4896,5177,5245,5411,5620,5684,5704,5931,6047,6202,6306,6540,6739,6819,6828,6988,7113,7330,7538,7581,7607,7646,7711,7822,7839,7851,7858,8141,8167,8181,8232,8372,8529,8616,8641,9120,9188,9249,9303,9336,9491,9596,9725,9861,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,160,165,332,635,706,910,1124,1131,1150,1165,1212,1288,2036,2092,2191,2229,2287,2437,2522,2772,2839,2920,2950,3358,3390,3757,3896,3945,4048,4209,4230,4473,4503,4558,4828,4888,4896,5177,5245,5411,5620,5684,5704,5931,6047,6202,6306,6540,6739,6819,6828,6988,7113,7330,7538,7581,7607,7646,7711,7822,7839,7851,7858,8141,8167,8181,8232,8372,8529,8616,8641,9120,9188,9249,9303,9336,9491,9596,9725,9861,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,160,165,332,635,706,910,1124,1131,1150,1165,1212,1288,2036,2092,2191,2229,2287,2437,2522,2772,2839,2920,2950,3358,3390,3757,3896,3945,4048,4209,4230,4473,4503,4558,4828,4888,4896,5177,5245,5411,5620,5684,5704,5931,6047,6202,6306,6540,6739,6819,6828,6988,7113,7330,7538,7581,7607,7646,7711,7822,7839,7851,7858,8141,8167,8181,8232,8372,8529,8616,8641,9120,9188,9249,9303,9336,9491,9596,9725,9861,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (()=>{"use strict";var e,t,r,a,o,f,c,n,d={},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}},a=!0;try{d[e].call(r.exports,r,r.exports,u),a=!1}finally{a&&delete i[e]}return r.exports}u.m=d,e=[],u.O=(t,r,a,o)=>{if(r){o=o||0;for(var f=e.length;f>0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[r,a,o];return}for(var c=1/0,f=0;f<e.length;f++){for(var[r,a,o]=e[f],n=!0,d=0;d<r.length;d++)(!1&o||c>=o)&&Object.keys(u.O).every(e=>u.O[e](r[d]))?r.splice(d--,1):(n=!1,o<c&&(c=o));if(n){e.splice(f--,1);var i=a();void 0!==i&&(t=i)}}return t},u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.t=function(e,a){if(1&a&&(e=this(e)),8&a||"object"==typeof e&&e&&(4&a&&e.__esModule||16&a&&"function"==typeof e.then))return e;var o=Object.create(null);u.r(o);var f={};t=t||[null,r({}),r([]),r(r)];for(var c=2&a&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach(t=>f[t]=()=>e[t]);return f.default=()=>e,u.d(o,f),o},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce((t,r)=>(u.f[r](e,t),t),[])),u.u=e=>9207===e?"static/chunks/9207-456dc6941d557f33.js":3013===e?"static/chunks/3013-3d4aa69636f4a7bd.js":"static/chunks/"+(({277:"54a60aa6",3798:"95247769",5004:"70e0d97a",6079:"363642f4"})[e]||e)+"."+({277:"7a74f547ec1bdd5a",362:"2bfa40005767b578",516:"24ee058b1d4b1fed",862:"9f526e964489e2e5",1239:"10a0710c2772ab34",1477:"33df3cce509578c2",1814:"8a1fef15856dce84",2631:"dc56e83472bde281",2647:"e0b67d0c432ad7e7",2872:"045858d00bd8307f",2935:"a7fdb3a7fb681d61",2968:"f10ccee9e7e2324d",3637:"2b2697198968d83f",3798:"3b5caae1c1a76ce1",4033:"6666700547b20141",4878:"ad1f431d34ff03fc",5004:"6903b8594c742784",5484:"a70877a2667d0779",5576:"c468f41f1126e837",5627:"c4337d7289acb31f",5956:"b445072b35915129",6079:"1ab94f095d889c3a",6087:"e4ec392aa2239719",6826:"7b7d94dd0fd83812",7753:"63831cfc54a55fbb",9300:"118b8c840634383f"})[e]+".js",u.miniCssF=e=>{},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},u.l=(e,t,r,o)=>{if(a[e])return void a[e].push(t);if(void 0!==r)for(var f,c,n=document.getElementsByTagName("script"),d=0;d<n.length;d++){var i=n[d];if(i.getAttribute("src")==e||i.getAttribute("data-webpack")=="_N_E:"+r){f=i;break}}f||(c=!0,(f=document.createElement("script")).charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.setAttribute("data-webpack","_N_E:"+r),f.src=u.tu(e)),a[e]=[t];var l=(t,r)=>{f.onerror=f.onload=null,clearTimeout(s);var o=a[e];if(delete a[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach(e=>e(r)),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),c&&document.head.appendChild(f)},u.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.tt=()=>(void 0===o&&(o={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o),u.tu=e=>u.tt().createScriptURL(e),u.p="/_next/",f={8068:0,7513:0,3295:0},u.f.j=(e,t)=>{var r=u.o(f,e)?f[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(3295|7513|8068)$/.test(e))f[e]=0;else{var a=new Promise((t,a)=>r=f[e]=[t,a]);t.push(r[2]=a);var o=u.p+u.u(e),c=Error();u.l(o,t=>{if(u.o(f,e)&&(0!==(r=f[e])&&(f[e]=void 0),r)){var a=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",c.name="ChunkLoadError",c.type=a,c.request=o,r[1](c)}},"chunk-"+e,e)}},u.O.j=e=>0===f[e],c=(e,t)=>{var r,a,[o,c,n]=t,d=0;if(o.some(e=>0!==f[e])){for(r in c)u.o(c,r)&&(u.m[r]=c[r]);if(n)var i=n(u)}for(e&&e(t);d<o.length;d++)a=o[d],u.o(f,a)&&f[a]&&f[a][0](),f[a]=0;return u.O(i)},(n=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),n.push=c.bind(null,n.push.bind(n))})();
@@ -1 +0,0 @@
1
- var a,b,c,d;self.__BUILD_MANIFEST=(a=0,b=0,c=0,d=0,{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:88,errorRate:1e-4,numBits:1687,numHashes:14,bitArray:[1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,1,1,1,1,0,1,0,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,1,0,0,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,0,1,1,0,1,0,1,1,0,0,0,1,1,1,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,1,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1,0,0,0,1,0,0,1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,1,0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,1,0,1,1,0,0,0,0,1,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,1,0,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,1,0,0,1,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,0,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,1,1,0,0,1,1]},__routerFilterDynamic:{numItems:3,errorRate:1e-4,numBits:58,numHashes:14,bitArray:[0,0,0,1,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,0,1,0,1]},sortedPages:["/_app"]}),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1,131 +0,0 @@
1
- /**
2
- * Obsidian Plugin Compatibility - Static compatibility analyzer
3
- * Scans plugin code to infer required APIs and likely blockers.
4
- */
5
-
6
- export type CompatibilityLevel = 'compatible' | 'partial' | 'blocked';
7
-
8
- export interface PluginCompatibilityReport {
9
- obsidianApis: string[];
10
- nodeModules: string[];
11
- supportedApis: string[];
12
- partialApis: string[];
13
- blockers: string[];
14
- }
15
-
16
- const SUPPORTED_APIS = new Set([
17
- 'Plugin',
18
- 'Component',
19
- 'Events',
20
- 'Notice',
21
- 'Modal',
22
- 'PluginSettingTab',
23
- 'Setting',
24
- 'TFile',
25
- 'TFolder',
26
- 'TAbstractFile',
27
- 'loadData',
28
- 'saveData',
29
- 'addCommand',
30
- 'MetadataCache.getCache',
31
- 'MetadataCache.getFileCache',
32
- ]);
33
-
34
- const PARTIAL_APIS = new Set([
35
- 'registerView',
36
- 'registerMarkdownPostProcessor',
37
- 'registerMarkdownCodeBlockProcessor',
38
- 'registerEditorExtension',
39
- 'ItemView',
40
- 'WorkspaceLeaf',
41
- ]);
42
-
43
- const NODE_BLOCKLIST = new Set([
44
- 'fs',
45
- 'path',
46
- 'child_process',
47
- 'electron',
48
- 'os',
49
- 'net',
50
- 'tls',
51
- 'worker_threads',
52
- ]);
53
-
54
- function unique(values: string[]): string[] {
55
- return Array.from(new Set(values)).sort();
56
- }
57
-
58
- function collectObsidianImports(code: string): string[] {
59
- const apis: string[] = [];
60
-
61
- const destructured = code.matchAll(/require\('obsidian'\)\s*;?|const\s*\{([^}]+)\}\s*=\s*require\('obsidian'\)/g);
62
- for (const match of destructured) {
63
- const names = match[1]?.split(',').map((item) => item.trim()).filter(Boolean) ?? [];
64
- apis.push(...names);
65
- }
66
-
67
- const methodPatterns: Array<[RegExp, string]> = [
68
- [/\.addCommand\s*\(/g, 'addCommand'],
69
- [/\.loadData\s*\(/g, 'loadData'],
70
- [/\.saveData\s*\(/g, 'saveData'],
71
- [/\.registerView\s*\(/g, 'registerView'],
72
- [/\.registerMarkdownPostProcessor\s*\(/g, 'registerMarkdownPostProcessor'],
73
- [/\.registerMarkdownCodeBlockProcessor\s*\(/g, 'registerMarkdownCodeBlockProcessor'],
74
- [/\.registerEditorExtension\s*\(/g, 'registerEditorExtension'],
75
- [/metadataCache\.getCache\s*\(/g, 'MetadataCache.getCache'],
76
- [/metadataCache\.getFileCache\s*\(/g, 'MetadataCache.getFileCache'],
77
- ];
78
-
79
- for (const [pattern, name] of methodPatterns) {
80
- if (pattern.test(code)) {
81
- apis.push(name);
82
- }
83
- }
84
-
85
- return unique(apis);
86
- }
87
-
88
- function collectNodeModules(code: string): string[] {
89
- const modules: string[] = [];
90
- const matches = code.matchAll(/require\('([^']+)'\)/g);
91
- for (const match of matches) {
92
- const moduleName = match[1];
93
- if (!moduleName || moduleName === 'obsidian') {
94
- continue;
95
- }
96
- if (NODE_BLOCKLIST.has(moduleName)) {
97
- modules.push(moduleName);
98
- }
99
- }
100
- return unique(modules);
101
- }
102
-
103
- export function analyzePluginCompatibility(code: string): PluginCompatibilityReport {
104
- const obsidianApis = collectObsidianImports(code);
105
- const nodeModules = collectNodeModules(code);
106
-
107
- const supportedApis = obsidianApis.filter((api) => SUPPORTED_APIS.has(api));
108
- const partialApis = obsidianApis.filter((api) => PARTIAL_APIS.has(api));
109
-
110
- const blockers = [
111
- ...nodeModules.map((moduleName) => `Requires unsupported runtime module: ${moduleName}`),
112
- ];
113
-
114
- return {
115
- obsidianApis,
116
- nodeModules,
117
- supportedApis: unique(supportedApis),
118
- partialApis: unique(partialApis),
119
- blockers: unique(blockers),
120
- };
121
- }
122
-
123
- export function getCompatibilityLevel(report: PluginCompatibilityReport): CompatibilityLevel {
124
- if (report.blockers.length > 0) {
125
- return 'blocked';
126
- }
127
- if (report.partialApis.length > 0) {
128
- return 'partial';
129
- }
130
- return 'compatible';
131
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * Obsidian Plugin Compatibility - Manifest Validation
3
- */
4
-
5
- import { PluginManifest } from './types';
6
-
7
- export class ManifestError extends Error {
8
- constructor(message: string, public field?: string) {
9
- super(message);
10
- this.name = 'ManifestError';
11
- }
12
- }
13
-
14
- /**
15
- * Validates a plugin manifest against required and optional fields.
16
- * @throws ManifestError if validation fails
17
- */
18
- export function validateManifest(manifest: unknown): PluginManifest {
19
- if (!manifest || typeof manifest !== 'object') {
20
- throw new ManifestError('Manifest must be an object');
21
- }
22
-
23
- const m = manifest as Record<string, unknown>;
24
-
25
- // Required fields
26
- if (!m.id || typeof m.id !== 'string') {
27
- throw new ManifestError('Missing or invalid "id" field', 'id');
28
- }
29
- if (!isValidId(m.id)) {
30
- throw new ManifestError(`Invalid plugin id: "${m.id}". Must be alphanumeric with hyphens/underscores.`, 'id');
31
- }
32
-
33
- if (!m.name || typeof m.name !== 'string') {
34
- throw new ManifestError('Missing or invalid "name" field', 'name');
35
- }
36
-
37
- if (!m.version || typeof m.version !== 'string') {
38
- throw new ManifestError('Missing or invalid "version" field', 'version');
39
- }
40
- if (!isValidSemver(m.version)) {
41
- throw new ManifestError(`Invalid semver: "${m.version}"`, 'version');
42
- }
43
-
44
- // Optional fields
45
- const result: PluginManifest = {
46
- id: m.id,
47
- name: m.name,
48
- version: m.version,
49
- };
50
-
51
- if (m.minMindOsVersion && typeof m.minMindOsVersion === 'string') {
52
- result.minMindOsVersion = m.minMindOsVersion;
53
- }
54
-
55
- if (m.description && typeof m.description === 'string') {
56
- result.description = m.description;
57
- }
58
-
59
- if (m.author && typeof m.author === 'string') {
60
- result.author = m.author;
61
- }
62
-
63
- if (m.authorUrl && typeof m.authorUrl === 'string') {
64
- result.authorUrl = m.authorUrl;
65
- }
66
-
67
- if (m.fundingUrl && typeof m.fundingUrl === 'string') {
68
- result.fundingUrl = m.fundingUrl;
69
- }
70
-
71
- if (m.isDesktopOnly === true) {
72
- result.isDesktopOnly = true;
73
- }
74
-
75
- return result;
76
- }
77
-
78
- /**
79
- * Checks if plugin ID is valid (alphanumeric, hyphens, underscores).
80
- */
81
- function isValidId(id: string): boolean {
82
- return /^[a-zA-Z0-9_-]+$/.test(id) && id.length > 0 && id.length <= 64;
83
- }
84
-
85
- /**
86
- * Checks if version string is valid semver (major.minor.patch).
87
- */
88
- function isValidSemver(version: string): boolean {
89
- return /^\d+\.\d+\.\d+$/.test(version);
90
- }