@geminilight/mindos-windows-arm64 1.0.4 → 1.0.6

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 (373) 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 +25 -25
  4. package/_standalone/__next/build-manifest.json +3 -3
  5. package/_standalone/__next/prerender-manifest.json +3 -3
  6. package/_standalone/__next/react-loadable-manifest.json +4 -4
  7. package/_standalone/__next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  8. package/_standalone/__next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/_standalone/__next/server/app/_global-error.html +2 -2
  10. package/_standalone/__next/server/app/_global-error.rsc +1 -1
  11. package/_standalone/__next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/_standalone/__next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/_standalone/__next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/_standalone/__next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/_standalone/__next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/_standalone/__next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/_standalone/__next/server/app/_not-found/page.js +1 -1
  18. package/_standalone/__next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/_standalone/__next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/_standalone/__next/server/app/agents/[agentKey]/page.js +1 -1
  21. package/_standalone/__next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  22. package/_standalone/__next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  23. package/_standalone/__next/server/app/agents/page.js +1 -1
  24. package/_standalone/__next/server/app/agents/page.js.nft.json +1 -1
  25. package/_standalone/__next/server/app/agents/page_client-reference-manifest.js +1 -1
  26. package/_standalone/__next/server/app/api/a2a/agents/route.js +1 -1
  27. package/_standalone/__next/server/app/api/a2a/agents/route.js.nft.json +1 -1
  28. package/_standalone/__next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  29. package/_standalone/__next/server/app/api/a2a/delegations/route.js +1 -1
  30. package/_standalone/__next/server/app/api/a2a/delegations/route.js.nft.json +1 -1
  31. package/_standalone/__next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  32. package/_standalone/__next/server/app/api/a2a/discover/route.js +1 -1
  33. package/_standalone/__next/server/app/api/a2a/discover/route.js.nft.json +1 -1
  34. package/_standalone/__next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  35. package/_standalone/__next/server/app/api/a2a/route.js +1 -1
  36. package/_standalone/__next/server/app/api/a2a/route.js.nft.json +1 -1
  37. package/_standalone/__next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  38. package/_standalone/__next/server/app/api/acp/config/route.js +1 -1
  39. package/_standalone/__next/server/app/api/acp/config/route.js.nft.json +1 -1
  40. package/_standalone/__next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  41. package/_standalone/__next/server/app/api/acp/detect/route.js +1 -1
  42. package/_standalone/__next/server/app/api/acp/detect/route.js.nft.json +1 -1
  43. package/_standalone/__next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  44. package/_standalone/__next/server/app/api/acp/install/route.js +1 -1
  45. package/_standalone/__next/server/app/api/acp/install/route.js.nft.json +1 -1
  46. package/_standalone/__next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  47. package/_standalone/__next/server/app/api/acp/registry/route.js +1 -1
  48. package/_standalone/__next/server/app/api/acp/registry/route.js.nft.json +1 -1
  49. package/_standalone/__next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  50. package/_standalone/__next/server/app/api/acp/session/route.js +1 -1
  51. package/_standalone/__next/server/app/api/acp/session/route.js.nft.json +1 -1
  52. package/_standalone/__next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  53. package/_standalone/__next/server/app/api/agent-activity/route.js +1 -1
  54. package/_standalone/__next/server/app/api/agent-activity/route.js.nft.json +1 -1
  55. package/_standalone/__next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  56. package/_standalone/__next/server/app/api/agents/copy-skill/route.js +1 -1
  57. package/_standalone/__next/server/app/api/agents/copy-skill/route.js.nft.json +1 -1
  58. package/_standalone/__next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
  59. package/_standalone/__next/server/app/api/agents/custom/detect/route.js +1 -1
  60. package/_standalone/__next/server/app/api/agents/custom/detect/route.js.nft.json +1 -1
  61. package/_standalone/__next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  62. package/_standalone/__next/server/app/api/agents/custom/route.js +1 -1
  63. package/_standalone/__next/server/app/api/agents/custom/route.js.nft.json +1 -1
  64. package/_standalone/__next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  65. package/_standalone/__next/server/app/api/ask/route.js +1 -1
  66. package/_standalone/__next/server/app/api/ask/route.js.nft.json +1 -1
  67. package/_standalone/__next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  68. package/_standalone/__next/server/app/api/ask-sessions/route.js +1 -1
  69. package/_standalone/__next/server/app/api/ask-sessions/route.js.nft.json +1 -1
  70. package/_standalone/__next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  71. package/_standalone/__next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  72. package/_standalone/__next/server/app/api/backlinks/route.js +1 -1
  73. package/_standalone/__next/server/app/api/backlinks/route.js.nft.json +1 -1
  74. package/_standalone/__next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  75. package/_standalone/__next/server/app/api/bootstrap/route.js +1 -1
  76. package/_standalone/__next/server/app/api/bootstrap/route.js.nft.json +1 -1
  77. package/_standalone/__next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  78. package/_standalone/__next/server/app/api/changes/route.js +1 -1
  79. package/_standalone/__next/server/app/api/changes/route.js.nft.json +1 -1
  80. package/_standalone/__next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  81. package/_standalone/__next/server/app/api/channels/verify/route.js +1 -1
  82. package/_standalone/__next/server/app/api/channels/verify/route.js.nft.json +1 -1
  83. package/_standalone/__next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
  84. package/_standalone/__next/server/app/api/connect/route.js +1 -1
  85. package/_standalone/__next/server/app/api/connect/route.js.nft.json +1 -1
  86. package/_standalone/__next/server/app/api/connect/route_client-reference-manifest.js +1 -1
  87. package/_standalone/__next/server/app/api/embedding/route.js +1 -1
  88. package/_standalone/__next/server/app/api/embedding/route.js.nft.json +1 -1
  89. package/_standalone/__next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
  90. package/_standalone/__next/server/app/api/export/route.js +1 -1
  91. package/_standalone/__next/server/app/api/export/route.js.nft.json +1 -1
  92. package/_standalone/__next/server/app/api/export/route_client-reference-manifest.js +1 -1
  93. package/_standalone/__next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
  94. package/_standalone/__next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  95. package/_standalone/__next/server/app/api/file/import/route.js +1 -1
  96. package/_standalone/__next/server/app/api/file/import/route.js.nft.json +1 -1
  97. package/_standalone/__next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  98. package/_standalone/__next/server/app/api/file/raw/route.js +1 -1
  99. package/_standalone/__next/server/app/api/file/raw/route.js.nft.json +1 -1
  100. package/_standalone/__next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  101. package/_standalone/__next/server/app/api/file/route.js +1 -1
  102. package/_standalone/__next/server/app/api/file/route.js.nft.json +1 -1
  103. package/_standalone/__next/server/app/api/file/route_client-reference-manifest.js +1 -1
  104. package/_standalone/__next/server/app/api/files/route.js +1 -1
  105. package/_standalone/__next/server/app/api/files/route.js.nft.json +1 -1
  106. package/_standalone/__next/server/app/api/files/route_client-reference-manifest.js +1 -1
  107. package/_standalone/__next/server/app/api/git/route.js +1 -1
  108. package/_standalone/__next/server/app/api/git/route.js.nft.json +1 -1
  109. package/_standalone/__next/server/app/api/git/route_client-reference-manifest.js +1 -1
  110. package/_standalone/__next/server/app/api/graph/route.js +1 -1
  111. package/_standalone/__next/server/app/api/graph/route.js.nft.json +1 -1
  112. package/_standalone/__next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  113. package/_standalone/__next/server/app/api/health/route.js +1 -1
  114. package/_standalone/__next/server/app/api/health/route.js.nft.json +1 -1
  115. package/_standalone/__next/server/app/api/health/route_client-reference-manifest.js +1 -1
  116. package/_standalone/__next/server/app/api/im/activity/route.js +1 -1
  117. package/_standalone/__next/server/app/api/im/activity/route.js.nft.json +1 -1
  118. package/_standalone/__next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
  119. package/_standalone/__next/server/app/api/im/config/route.js +1 -1
  120. package/_standalone/__next/server/app/api/im/config/route.js.nft.json +1 -1
  121. package/_standalone/__next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
  122. package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route.js +1 -1
  123. package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route.js.nft.json +1 -1
  124. package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
  125. package/_standalone/__next/server/app/api/im/feishu/long-connection/route.js +1 -1
  126. package/_standalone/__next/server/app/api/im/feishu/long-connection/route.js.nft.json +1 -1
  127. package/_standalone/__next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
  128. package/_standalone/__next/server/app/api/im/status/route.js +1 -1
  129. package/_standalone/__next/server/app/api/im/status/route.js.nft.json +1 -1
  130. package/_standalone/__next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
  131. package/_standalone/__next/server/app/api/im/test/route.js +1 -1
  132. package/_standalone/__next/server/app/api/im/test/route.js.nft.json +1 -1
  133. package/_standalone/__next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
  134. package/_standalone/__next/server/app/api/im/webhook/feishu/route.js +1 -1
  135. package/_standalone/__next/server/app/api/im/webhook/feishu/route.js.nft.json +1 -1
  136. package/_standalone/__next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
  137. package/_standalone/__next/server/app/api/im/webhook-status/route.js +1 -1
  138. package/_standalone/__next/server/app/api/im/webhook-status/route.js.nft.json +1 -1
  139. package/_standalone/__next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
  140. package/_standalone/__next/server/app/api/inbox/clip/route.js +1 -1
  141. package/_standalone/__next/server/app/api/inbox/clip/route.js.nft.json +1 -1
  142. package/_standalone/__next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
  143. package/_standalone/__next/server/app/api/inbox/route.js +1 -1
  144. package/_standalone/__next/server/app/api/inbox/route.js.nft.json +1 -1
  145. package/_standalone/__next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  146. package/_standalone/__next/server/app/api/init/route.js +1 -1
  147. package/_standalone/__next/server/app/api/init/route.js.nft.json +1 -1
  148. package/_standalone/__next/server/app/api/init/route_client-reference-manifest.js +1 -1
  149. package/_standalone/__next/server/app/api/lint/route.js +1 -1
  150. package/_standalone/__next/server/app/api/lint/route.js.nft.json +1 -1
  151. package/_standalone/__next/server/app/api/lint/route_client-reference-manifest.js +1 -1
  152. package/_standalone/__next/server/app/api/mcp/agents/route.js +1 -1
  153. package/_standalone/__next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  154. package/_standalone/__next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  155. package/_standalone/__next/server/app/api/mcp/direct-tools/route.js +1 -1
  156. package/_standalone/__next/server/app/api/mcp/direct-tools/route.js.nft.json +1 -1
  157. package/_standalone/__next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
  158. package/_standalone/__next/server/app/api/mcp/install/route.js +1 -1
  159. package/_standalone/__next/server/app/api/mcp/install/route.js.nft.json +1 -1
  160. package/_standalone/__next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  161. package/_standalone/__next/server/app/api/mcp/install-skill/route.js +1 -1
  162. package/_standalone/__next/server/app/api/mcp/install-skill/route.js.nft.json +1 -1
  163. package/_standalone/__next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  164. package/_standalone/__next/server/app/api/mcp/restart/route.js +1 -1
  165. package/_standalone/__next/server/app/api/mcp/restart/route.js.nft.json +1 -1
  166. package/_standalone/__next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  167. package/_standalone/__next/server/app/api/mcp/status/route.js +1 -1
  168. package/_standalone/__next/server/app/api/mcp/status/route.js.nft.json +1 -1
  169. package/_standalone/__next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  170. package/_standalone/__next/server/app/api/mcp/tools/route.js +1 -1
  171. package/_standalone/__next/server/app/api/mcp/tools/route.js.nft.json +1 -1
  172. package/_standalone/__next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  173. package/_standalone/__next/server/app/api/mcp/uninstall/route.js +1 -1
  174. package/_standalone/__next/server/app/api/mcp/uninstall/route.js.nft.json +1 -1
  175. package/_standalone/__next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  176. package/_standalone/__next/server/app/api/monitoring/route.js +1 -1
  177. package/_standalone/__next/server/app/api/monitoring/route.js.nft.json +1 -1
  178. package/_standalone/__next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  179. package/_standalone/__next/server/app/api/obsidian/compat-report/route.js +1 -1
  180. package/_standalone/__next/server/app/api/obsidian/compat-report/route.js.nft.json +1 -1
  181. package/_standalone/__next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
  182. package/_standalone/__next/server/app/api/obsidian/import/route.js +1 -1
  183. package/_standalone/__next/server/app/api/obsidian/import/route.js.nft.json +1 -1
  184. package/_standalone/__next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
  185. package/_standalone/__next/server/app/api/obsidian-plugins/settings/route.js +1 -1
  186. package/_standalone/__next/server/app/api/obsidian-plugins/settings/route.js.nft.json +1 -1
  187. package/_standalone/__next/server/app/api/obsidian-plugins/settings/route_client-reference-manifest.js +1 -1
  188. package/_standalone/__next/server/app/api/recent-files/route.js +1 -1
  189. package/_standalone/__next/server/app/api/recent-files/route.js.nft.json +1 -1
  190. package/_standalone/__next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  191. package/_standalone/__next/server/app/api/restart/route.js +1 -1
  192. package/_standalone/__next/server/app/api/restart/route.js.nft.json +1 -1
  193. package/_standalone/__next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  194. package/_standalone/__next/server/app/api/search/prewarm/route.js +1 -1
  195. package/_standalone/__next/server/app/api/search/prewarm/route.js.nft.json +1 -1
  196. package/_standalone/__next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
  197. package/_standalone/__next/server/app/api/search/route.js +1 -1
  198. package/_standalone/__next/server/app/api/search/route.js.nft.json +1 -1
  199. package/_standalone/__next/server/app/api/search/route_client-reference-manifest.js +1 -1
  200. package/_standalone/__next/server/app/api/settings/list-models/route.js +1 -1
  201. package/_standalone/__next/server/app/api/settings/list-models/route.js.nft.json +1 -1
  202. package/_standalone/__next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  203. package/_standalone/__next/server/app/api/settings/reset-token/route.js +1 -1
  204. package/_standalone/__next/server/app/api/settings/reset-token/route.js.nft.json +1 -1
  205. package/_standalone/__next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  206. package/_standalone/__next/server/app/api/settings/route.js +1 -1
  207. package/_standalone/__next/server/app/api/settings/route.js.nft.json +1 -1
  208. package/_standalone/__next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  209. package/_standalone/__next/server/app/api/settings/test-key/route.js +1 -1
  210. package/_standalone/__next/server/app/api/settings/test-key/route.js.nft.json +1 -1
  211. package/_standalone/__next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  212. package/_standalone/__next/server/app/api/setup/check-path/route.js +1 -1
  213. package/_standalone/__next/server/app/api/setup/check-path/route.js.nft.json +1 -1
  214. package/_standalone/__next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  215. package/_standalone/__next/server/app/api/setup/check-port/route.js +1 -1
  216. package/_standalone/__next/server/app/api/setup/check-port/route.js.nft.json +1 -1
  217. package/_standalone/__next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  218. package/_standalone/__next/server/app/api/setup/generate-token/route.js +1 -1
  219. package/_standalone/__next/server/app/api/setup/generate-token/route.js.nft.json +1 -1
  220. package/_standalone/__next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  221. package/_standalone/__next/server/app/api/setup/ls/route.js +1 -1
  222. package/_standalone/__next/server/app/api/setup/ls/route.js.nft.json +1 -1
  223. package/_standalone/__next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  224. package/_standalone/__next/server/app/api/setup/route.js +1 -1
  225. package/_standalone/__next/server/app/api/setup/route.js.nft.json +1 -1
  226. package/_standalone/__next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  227. package/_standalone/__next/server/app/api/skills/route.js +1 -1
  228. package/_standalone/__next/server/app/api/skills/route.js.nft.json +1 -1
  229. package/_standalone/__next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  230. package/_standalone/__next/server/app/api/space-overview/route.js +1 -1
  231. package/_standalone/__next/server/app/api/space-overview/route.js.nft.json +1 -1
  232. package/_standalone/__next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
  233. package/_standalone/__next/server/app/api/sync/route.js +1 -1
  234. package/_standalone/__next/server/app/api/sync/route.js.nft.json +1 -1
  235. package/_standalone/__next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  236. package/_standalone/__next/server/app/api/tree-version/route.js +1 -1
  237. package/_standalone/__next/server/app/api/tree-version/route.js.nft.json +1 -1
  238. package/_standalone/__next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  239. package/_standalone/__next/server/app/api/uninstall/route.js +1 -1
  240. package/_standalone/__next/server/app/api/uninstall/route.js.nft.json +1 -1
  241. package/_standalone/__next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  242. package/_standalone/__next/server/app/api/update/route.js +1 -1
  243. package/_standalone/__next/server/app/api/update/route.js.nft.json +1 -1
  244. package/_standalone/__next/server/app/api/update/route_client-reference-manifest.js +1 -1
  245. package/_standalone/__next/server/app/api/update-check/route.js +1 -1
  246. package/_standalone/__next/server/app/api/update-check/route.js.nft.json +1 -1
  247. package/_standalone/__next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  248. package/_standalone/__next/server/app/api/update-status/route.js +1 -1
  249. package/_standalone/__next/server/app/api/update-status/route.js.nft.json +1 -1
  250. package/_standalone/__next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  251. package/_standalone/__next/server/app/api/workflows/route.js +1 -1
  252. package/_standalone/__next/server/app/api/workflows/route.js.nft.json +1 -1
  253. package/_standalone/__next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  254. package/_standalone/__next/server/app/capture/history/page.js +1 -1
  255. package/_standalone/__next/server/app/capture/history/page.js.nft.json +1 -1
  256. package/_standalone/__next/server/app/capture/history/page_client-reference-manifest.js +1 -1
  257. package/_standalone/__next/server/app/capture/page.js +1 -1
  258. package/_standalone/__next/server/app/capture/page.js.nft.json +1 -1
  259. package/_standalone/__next/server/app/capture/page_client-reference-manifest.js +1 -1
  260. package/_standalone/__next/server/app/changelog/page.js +1 -1
  261. package/_standalone/__next/server/app/changelog/page.js.nft.json +1 -1
  262. package/_standalone/__next/server/app/changelog/page_client-reference-manifest.js +1 -1
  263. package/_standalone/__next/server/app/changes/page.js +1 -1
  264. package/_standalone/__next/server/app/changes/page.js.nft.json +1 -1
  265. package/_standalone/__next/server/app/changes/page_client-reference-manifest.js +1 -1
  266. package/_standalone/__next/server/app/echo/[segment]/page.js +1 -1
  267. package/_standalone/__next/server/app/echo/[segment]/page.js.nft.json +1 -1
  268. package/_standalone/__next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  269. package/_standalone/__next/server/app/echo/page.js +1 -1
  270. package/_standalone/__next/server/app/echo/page.js.nft.json +1 -1
  271. package/_standalone/__next/server/app/echo/page_client-reference-manifest.js +1 -1
  272. package/_standalone/__next/server/app/explore/page.js +1 -1
  273. package/_standalone/__next/server/app/explore/page.js.nft.json +1 -1
  274. package/_standalone/__next/server/app/explore/page_client-reference-manifest.js +1 -1
  275. package/_standalone/__next/server/app/help/page.js +1 -1
  276. package/_standalone/__next/server/app/help/page.js.nft.json +1 -1
  277. package/_standalone/__next/server/app/help/page_client-reference-manifest.js +1 -1
  278. package/_standalone/__next/server/app/inbox/history/page.js +1 -1
  279. package/_standalone/__next/server/app/inbox/history/page.js.nft.json +1 -1
  280. package/_standalone/__next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  281. package/_standalone/__next/server/app/login/page.js +1 -1
  282. package/_standalone/__next/server/app/login/page.js.nft.json +1 -1
  283. package/_standalone/__next/server/app/login/page_client-reference-manifest.js +1 -1
  284. package/_standalone/__next/server/app/page.js +1 -1
  285. package/_standalone/__next/server/app/page.js.nft.json +1 -1
  286. package/_standalone/__next/server/app/page_client-reference-manifest.js +1 -1
  287. package/_standalone/__next/server/app/settings/page.js +2 -2
  288. package/_standalone/__next/server/app/settings/page.js.nft.json +1 -1
  289. package/_standalone/__next/server/app/settings/page_client-reference-manifest.js +1 -1
  290. package/_standalone/__next/server/app/setup/page.js +1 -1
  291. package/_standalone/__next/server/app/setup/page.js.nft.json +1 -1
  292. package/_standalone/__next/server/app/setup/page_client-reference-manifest.js +1 -1
  293. package/_standalone/__next/server/app/todo/page.js +1 -1
  294. package/_standalone/__next/server/app/todo/page.js.nft.json +1 -1
  295. package/_standalone/__next/server/app/todo/page_client-reference-manifest.js +1 -1
  296. package/_standalone/__next/server/app/trash/page.js +2 -2
  297. package/_standalone/__next/server/app/trash/page.js.nft.json +1 -1
  298. package/_standalone/__next/server/app/trash/page_client-reference-manifest.js +1 -1
  299. package/_standalone/__next/server/app/view/[...path]/page.js +3 -3
  300. package/_standalone/__next/server/app/view/[...path]/page.js.nft.json +1 -1
  301. package/_standalone/__next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  302. package/_standalone/__next/server/app/wiki/page.js +1 -1
  303. package/_standalone/__next/server/app/wiki/page.js.nft.json +1 -1
  304. package/_standalone/__next/server/app/wiki/page_client-reference-manifest.js +1 -1
  305. package/_standalone/__next/server/app-paths-manifest.json +25 -25
  306. package/_standalone/__next/server/chunks/1976.js +3 -3
  307. package/_standalone/__next/server/chunks/{49.js → 3219.js} +5 -5
  308. package/_standalone/__next/server/chunks/3566.js +1 -1
  309. package/_standalone/__next/server/chunks/6602.js +37 -37
  310. package/_standalone/__next/server/chunks/6754.js +1 -1
  311. package/_standalone/__next/server/chunks/6965.js +3 -3
  312. package/_standalone/__next/server/chunks/7765.js +1 -1
  313. package/_standalone/__next/server/chunks/8028.js +1 -1
  314. package/_standalone/__next/server/chunks/{7295.js → 8461.js} +19 -19
  315. package/_standalone/__next/server/middleware-build-manifest.js +1 -1
  316. package/_standalone/__next/server/middleware-react-loadable-manifest.js +1 -1
  317. package/_standalone/__next/server/pages/500.html +2 -2
  318. package/_standalone/__next/server/server-reference-manifest.js +1 -1
  319. package/_standalone/__next/server/server-reference-manifest.json +1 -1
  320. package/_standalone/__next/static/chunks/{1430-a3447cf370715cad.js → 1430-c4ffa328888515c1.js} +1 -1
  321. package/{static-web/_next/static/chunks/2992-509ffe91c9d819fe.js → _standalone/__next/static/chunks/2461-a1073a0bd04c228a.js} +12 -12
  322. package/_standalone/__next/static/chunks/{862-ad4c9d6035101858.js → 47-41e1a06e6d389b69.js} +1 -1
  323. package/_standalone/__next/static/chunks/{5200-2447cea5eb41a922.js → 5200-6c82e5ce54a95b4b.js} +2 -2
  324. package/_standalone/__next/static/chunks/{6947.5f1325c9403c27b2.js → 6947.7e50e18da7dc4aef.js} +1 -1
  325. package/_standalone/__next/static/chunks/9216.d3339c27169b21bf.js +1 -0
  326. package/{static-web/_next/static/chunks/app/layout-14395cc1f39f1847.js → _standalone/__next/static/chunks/app/layout-5966cd317bbed698.js} +6 -6
  327. package/_standalone/__next/static/chunks/app/settings/{page-2786e9eb5103d6f3.js → page-c9f44b3447a41431.js} +1 -1
  328. package/_standalone/__next/static/chunks/app/trash/page-d87207a63591ee16.js +1 -0
  329. package/_standalone/__next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +12 -0
  330. package/_standalone/__next/static/chunks/{webpack-44b6c35a50fd7205.js → webpack-75abef9cbb1ea912.js} +1 -1
  331. package/dist/server/handlers/mcp-agents.d.ts +1 -0
  332. package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
  333. package/dist/server/handlers/mcp-agents.js +230 -7
  334. package/dist/server/handlers/mcp-agents.js.map +1 -1
  335. package/dist/server/http.d.ts +7 -4
  336. package/dist/server/http.d.ts.map +1 -1
  337. package/dist/server/http.js +2 -0
  338. package/dist/server/http.js.map +1 -1
  339. package/dist/server/mcp-agent-registry.d.ts +4 -0
  340. package/dist/server/mcp-agent-registry.d.ts.map +1 -0
  341. package/dist/server/mcp-agent-registry.js +266 -0
  342. package/dist/server/mcp-agent-registry.js.map +1 -0
  343. package/package.json +1 -1
  344. package/runtime-manifest.json +1 -1
  345. package/scripts/smoke-desktop-app.mjs +82 -8
  346. package/scripts/verify-desktop-runtime.mjs +2 -1
  347. package/static-web/.mindos-build-version +1 -1
  348. package/static-web/_next/static/chunks/{1430-a3447cf370715cad.js → 1430-c4ffa328888515c1.js} +1 -1
  349. package/{_standalone/__next/static/chunks/2992-509ffe91c9d819fe.js → static-web/_next/static/chunks/2461-a1073a0bd04c228a.js} +12 -12
  350. package/static-web/_next/static/chunks/{862-ad4c9d6035101858.js → 47-41e1a06e6d389b69.js} +1 -1
  351. package/static-web/_next/static/chunks/{5200-2447cea5eb41a922.js → 5200-6c82e5ce54a95b4b.js} +2 -2
  352. package/static-web/_next/static/chunks/{6947.5f1325c9403c27b2.js → 6947.7e50e18da7dc4aef.js} +1 -1
  353. package/static-web/_next/static/chunks/9216.d3339c27169b21bf.js +1 -0
  354. package/{_standalone/__next/static/chunks/app/layout-14395cc1f39f1847.js → static-web/_next/static/chunks/app/layout-5966cd317bbed698.js} +6 -6
  355. package/static-web/_next/static/chunks/app/settings/{page-2786e9eb5103d6f3.js → page-c9f44b3447a41431.js} +1 -1
  356. package/static-web/_next/static/chunks/app/trash/page-d87207a63591ee16.js +1 -0
  357. package/static-web/_next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +12 -0
  358. package/static-web/_next/static/chunks/{webpack-44b6c35a50fd7205.js → webpack-75abef9cbb1ea912.js} +1 -1
  359. package/static-web/help/index.html +3 -3
  360. package/static-web/index.html +3 -3
  361. package/static-web/setup/index.html +3 -3
  362. package/static-web/static-web-manifest.json +1 -1
  363. package/static-web/wiki/index.html +3 -3
  364. package/_standalone/__next/static/chunks/32.c0cfe8b9737e00f0.js +0 -1
  365. package/_standalone/__next/static/chunks/app/trash/page-98300a315c5d021a.js +0 -1
  366. package/_standalone/__next/static/chunks/app/view/[...path]/page-44010b2aff77acd6.js +0 -12
  367. package/static-web/_next/static/chunks/32.c0cfe8b9737e00f0.js +0 -1
  368. package/static-web/_next/static/chunks/app/trash/page-98300a315c5d021a.js +0 -1
  369. package/static-web/_next/static/chunks/app/view/[...path]/page-44010b2aff77acd6.js +0 -12
  370. /package/_standalone/__next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_buildManifest.js +0 -0
  371. /package/_standalone/__next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_ssgManifest.js +0 -0
  372. /package/static-web/_next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_buildManifest.js +0 -0
  373. /package/static-web/_next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_ssgManifest.js +0 -0
@@ -1,13 +1,13 @@
1
- exports.id=7295,exports.ids=[7295],exports.modules={3119:(a,b,c)=>{"use strict";function d(a,b,c,d,e,f){return{path:a,webRouteFile:`packages/web/app${a}/route.ts`,owner:b,adapter:c,phase:d,risk:e,residualRisk:f}}c.d(b,{Ig:()=>d6,GO:()=>ah,FV:()=>aj,jU:()=>au,kS:()=>av,GN:()=>aw,Jz:()=>at,PZ:()=>as,Se:()=>aN,nT:()=>aL,JO:()=>aM,A0:()=>aO,o0:()=>aP,Ac:()=>aQ,u4:()=>aT,xE:()=>aR,RS:()=>aS,TF:()=>X,wF:()=>bn,oU:()=>_,Pq:()=>Z,Jj:()=>$,pe:()=>b_,TL:()=>bo,au:()=>bM,YO:()=>bN,_2:()=>bt,hc:()=>bO,qe:()=>bl,vD:()=>bj,Yz:()=>bh,px:()=>bi,eu:()=>bT,mN:()=>bU,T:()=>bx,x5:()=>by,aT:()=>bZ,v1:()=>cc,fn:()=>b$,DR:()=>ch,tk:()=>ci,YN:()=>co,eo:()=>cu,Jc:()=>cs,iy:()=>ct,Bn:()=>cA,L0:()=>cy,Zh:()=>cz,fx:()=>cI,L2:()=>cN,e2:()=>cJ,sS:()=>cW,dT:()=>cU,hN:()=>cV,bk:()=>ck,ts:()=>df,X5:()=>ds,Kb:()=>da,h3:()=>du,XC:()=>dz,zq:()=>dD,Wo:()=>dr,VD:()=>dc,fW:()=>c$,nx:()=>dF,nW:()=>dG,mm:()=>eN,RX:()=>dH,hU:()=>dI,Ei:()=>dL,Cr:()=>dP,aq:()=>dM,gt:()=>dN,P2:()=>dW,dv:()=>d8,Dm:()=>d1,eA:()=>d5,sv:()=>ei,Vf:()=>d9,g:()=>ek,QG:()=>ej,JD:()=>el,tv:()=>em,I3:()=>ep,uk:()=>eu,CD:()=>ev,LL:()=>eI,Ph:()=>d0,I8:()=>eM,EL:()=>eO,mk:()=>eL,f$:()=>eV,vd:()=>eW,gO:()=>i,Sj:()=>cg,Ut:()=>d7});let e=(a,b="low")=>d(a,"product-owned","next-response","Phase 1: migrated Product Server adapter",b,"No residual product ownership expected; this route should remain a thin Next adapter."),f=(a,b,c,e)=>d(a,"optional-capability","optional-capability",b,c,e),g=(a,b,c="medium")=>d(a,"host-owned","host","Host-owned",c,b);[e("/api/a2a/agents","medium"),e("/api/a2a/delegations","medium"),e("/api/a2a/discover","medium"),e("/api/a2a","medium"),e("/api/acp/config","high"),e("/api/acp/detect","medium"),e("/api/acp/install","high"),e("/api/acp/registry","medium"),e("/api/acp/session","high"),e("/api/agent-activity"),e("/api/agents/copy-skill","high"),e("/api/agents/custom/detect","medium"),e("/api/agents/custom","high"),e("/api/ask-sessions"),d("/api/ask","product-owned","stream","Phase 6: generated client and stream adapter","high","Ask is mostly Product runtime-owned through session and agent modules, but the streaming Web route still owns host assembly and should become a generated stream adapter."),g("/api/auth","Auth cookie/session handling is host-specific today; Product Server will need an auth context adapter before direct HTTP exposure.","high"),e("/api/backlinks"),e("/api/bootstrap"),e("/api/changes"),e("/api/channels/verify","medium"),e("/api/connect"),e("/api/embedding","medium"),f("/api/export","Phase 5: content ingestion optional capabilities","high","Export/archive logic carries heavy dependencies and filesystem writes that need optional capability packaging."),f("/api/extract-docx","Phase 5: content ingestion optional capabilities","high","DOCX extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/extract-pdf","Phase 5: content ingestion optional capabilities","high","PDF extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/file/import","Phase 5: content ingestion optional capabilities","high","File import is a content-ingestion write path and needs capability-level size limits, conflict checks, and rollback."),e("/api/file/raw"),e("/api/file","high"),e("/api/files"),e("/api/git"),e("/api/graph"),e("/api/health"),e("/api/im/activity","medium"),e("/api/im/config","high"),g("/api/im/feishu/long-connection/event","Raw long-connection event delivery is host-specific, but event parsing and state updates should stay behind Product protocol handlers.","medium"),e("/api/im/feishu/long-connection","high"),e("/api/im/status","medium"),e("/api/im/test","medium"),e("/api/im/webhook-status","medium"),g("/api/im/webhook/feishu","Raw inbound Feishu webhook receipt is host-owned, while signature verification and state writes should move to Product protocol handlers.","high"),f("/api/inbox/clip","Phase 5: content ingestion optional capabilities","high","Inbox clipping is still Web-owned ingestion and needs optional capability packaging plus fetch timeout and content limits."),e("/api/inbox","medium"),e("/api/init","high"),f("/api/lint","Phase 5: content ingestion optional capabilities","medium","Knowledge linting remains Web-owned and should become an optional Product capability with bounded filesystem traversal."),e("/api/mcp/agents","high"),e("/api/mcp/direct-tools","medium"),e("/api/mcp/install-skill","high"),e("/api/mcp/install","high"),e("/api/mcp/restart","high"),e("/api/mcp/status"),e("/api/mcp/tools","medium"),e("/api/mcp/uninstall","high"),e("/api/monitoring","medium"),f("/api/obsidian-plugins/settings","Phase 5: content ingestion optional capabilities","medium","Obsidian plugin settings remain Web-owned and should be modeled as an optional Product compatibility capability."),f("/api/obsidian/compat-report","Phase 5: content ingestion optional capabilities","medium","Obsidian compatibility reporting remains Web-owned and should use optional capability diagnostics."),f("/api/obsidian/import","Phase 5: content ingestion optional capabilities","high","Obsidian import remains a Web-owned bulk write path and needs optional capability size limits and rollback."),e("/api/recent-files"),e("/api/restart","high"),e("/api/search/prewarm"),e("/api/search"),e("/api/settings/list-models","medium"),e("/api/settings/reset-token","high"),e("/api/settings","medium"),e("/api/settings/test-key","medium"),e("/api/setup/check-path","medium"),e("/api/setup/check-port","medium"),e("/api/setup/generate-token","medium"),e("/api/setup/ls","medium"),e("/api/setup","high"),e("/api/skills","high"),e("/api/space-overview"),e("/api/sync","high"),e("/api/tree-version"),e("/api/uninstall","high"),e("/api/update-check"),e("/api/update-status"),e("/api/update","high"),e("/api/workflows","medium")].map(a=>[a.path,a]);let h={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With"};function i(a,b={}){return{status:b.status??200,body:a,headers:b.headers}}function j(a){return{status:204,headers:a}}function k(a,b){return{"Cache-Control":`public, max-age=${a}`,...b?{ETag:b}:{}}}function l(a){return{"Cache-Control":`private, max-age=${a}`}}function m(a,b=500){return i({error:a instanceof Error?a.message:String(a||"Unknown error")},{status:b})}var n=c(51455),o=c(73024),p=c(76760),q=c(58569);function r(a){return{ok:!0,value:a}}function s(a){return{ok:!1,error:a}}var t=c(77598),u=c(64770);class v{constructor(a){this.logger=a}async readFile(a,b="utf-8"){try{let c=await (0,n.readFile)(a,b);return this.logger?.debug(`Read file: ${a}`),r(c)}catch(b){return this.logger?.error(`Failed to read file: ${a}`,b),s((0,u.$5)("FILE_READ_ERROR",`Failed to read file: ${a}`,{cause:b}))}}async writeFile(a,b,c="utf-8"){try{let d=(0,p.dirname)(a);return await (0,n.mkdir)(d,{recursive:!0}),await (0,n.writeFile)(a,b,c),this.logger?.debug(`Wrote file: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to write file: ${a}`,b),s((0,u.$5)("FILE_WRITE_ERROR",`Failed to write file: ${a}`,{cause:b}))}}async exists(a){try{return await (0,n.access)(a,o.constants.F_OK),r(!0)}catch{return r(!1)}}async stat(a){try{let b=await (0,n.stat)(a),c={path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:b.isDirectory(),isFile:b.isFile()};return r(c)}catch(b){return this.logger?.error(`Failed to stat file: ${a}`,b),s((0,u.$5)("FILE_STAT_ERROR",`Failed to stat file: ${a}`,{cause:b}))}}async readdir(a){try{let b=(await (0,n.readdir)(a,{withFileTypes:!0})).map(b=>({name:b.name,path:(0,p.join)(a,b.name),isDirectory:b.isDirectory(),isFile:b.isFile()}));return r(b)}catch(b){return this.logger?.error(`Failed to read directory: ${a}`,b),s((0,u.$5)("DIRECTORY_READ_ERROR",`Failed to read directory: ${a}`,{cause:b}))}}async mkdir(a,b=!0){try{return await (0,n.mkdir)(a,{recursive:b}),this.logger?.debug(`Created directory: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to create directory: ${a}`,b),s((0,u.$5)("DIRECTORY_CREATE_ERROR",`Failed to create directory: ${a}`,{cause:b}))}}async remove(a,b=!1){try{return await (0,n.rm)(a,{recursive:b,force:!0}),this.logger?.debug(`Removed: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to remove: ${a}`,b),s((0,u.$5)("FILE_REMOVE_ERROR",`Failed to remove: ${a}`,{cause:b}))}}async copy(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.copyFile)(a,b),this.logger?.debug(`Copied: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to copy: ${a} -> ${b}`,c),s((0,u.$5)("FILE_COPY_ERROR",`Failed to copy: ${a} -> ${b}`,{cause:c}))}}async move(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.rename)(a,b),this.logger?.debug(`Moved: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to move: ${a} -> ${b}`,c),s((0,u.$5)("FILE_MOVE_ERROR",`Failed to move: ${a} -> ${b}`,{cause:c}))}}async watch(a,b,c){try{let d=(0,q.wB)(a,{ignored:b.ignored,persistent:b.persistent??!0,ignoreInitial:b.ignoreInitial??!0,depth:b.depth});d.on("add",(a,b)=>{c({type:"add",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("change",(a,b)=>{c({type:"change",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("unlink",a=>{c({type:"unlink",path:a})}).on("addDir",a=>{c({type:"addDir",path:a})}).on("unlinkDir",a=>{c({type:"unlinkDir",path:a})}),this.logger?.info(`Started watching: ${a}`);let e=()=>{d.close(),this.logger?.info(`Stopped watching: ${a}`)};return r(e)}catch(b){return this.logger?.error(`Failed to watch: ${a}`,b),s((0,u.$5)("FILE_WATCH_ERROR",`Failed to watch: ${a}`,{cause:b}))}}}var w=c(96081),x=c(33873);function y(a){return{ok:!0,value:a}}function z(a){return{ok:!1,error:a}}let A=".mindos";function B(){return new Date().toISOString()}function C(a,b){return(0,o.existsSync)(a)?(0,w.n2)(a,b):x.join(a,b)}function D(a){return C(a,x.posix.join(A,"change-log.json"))}function E(){return{version:1,lastSeenAt:null,events:[],legacy:{agentDiffImportedCount:0,lastImportedAt:null}}}function F(a){return"string"!=typeof a?{value:void 0,truncated:!1}:a.length<=12e3?{value:a,truncated:!1}:{value:a.slice(0,12e3),truncated:!0}}async function G(a,b){let c;try{c=D(b)}catch{return E()}let d=await a.exists(c);if(!d.ok||!d.value)return E();let e=await a.readFile(c);if(!e.ok)return E();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return E();return{version:1,lastSeenAt:"string"==typeof a.lastSeenAt?a.lastSeenAt:null,events:a.events,legacy:{agentDiffImportedCount:"number"==typeof a.legacy?.agentDiffImportedCount?a.legacy.agentDiffImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return E()}}async function H(a,b,c){let d;try{d=D(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid change log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}async function I(a,b,c){let d;try{d=C(b,"Agent-Diff.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-diff\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{let a=JSON.parse(b[1].trim());c.push(a)}catch{}return c}(f.value),h=c.legacy?.agentDiffImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>{let c=F(a.before),d=F(a.after),e="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",f="string"==typeof a.path&&a.path.trim()?a.path:"Agent-Diff.md";return{id:`legacy-${Date.now().toString(36)}-${b.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),op:"legacy_agent_diff_import",path:f,source:"agent",summary:`Imported legacy agent diff (${e})`,before:c.value,after:d.value,truncated:c.truncated||d.truncated||void 0}}),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()),k={...c,events:j.slice(0,500),legacy:{agentDiffImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function J(a,b){let c=await G(a,b),d=await I(a,b,c);return((c.legacy?.agentDiffImportedCount??0)!==(d.legacy?.agentDiffImportedCount??0)||c.events.length!==d.events.length)&&await H(a,b,d),d}async function K(a,b,c={}){let d=await J(a,b),e=Math.max(1,Math.min(c.limit??50,200)),f=c.path?.trim(),g=c.source,h=c.op?.trim(),i=c.q?.trim().toLowerCase();return y(d.events.filter(a=>(!f||a.path===f||a.beforePath===f||a.afterPath===f)&&(!g||a.source===g)&&(!h||a.op===h)&&(!i||!!`${a.path} ${a.beforePath??""} ${a.afterPath??""} ${a.summary} ${a.op} ${a.source}`.toLowerCase().includes(i))&&!0).slice(0,e))}async function L(a,b){let c=await J(a,b);return c.lastSeenAt=B(),await H(a,b,c)}async function M(a,b){let c=await J(a,b),d=c.lastSeenAt?new Date(c.lastSeenAt).getTime():0;return y({unreadCount:c.events.filter(a=>new Date(a.ts).getTime()>d).length,totalCount:c.events.length,lastSeenAt:c.lastSeenAt,latest:c.events[0]??null})}function N(){return{version:1,events:[],legacy:{mdImportedCount:0,jsonlImportedCount:0,lastImportedAt:null}}}function O(a){return C(a,x.posix.join(A,"agent-audit-log.json"))}async function P(a,b){let c;try{c=O(b)}catch{return N()}let d=await a.exists(c);if(!d.ok||!d.value)return N();let e=await a.readFile(c);if(!e.ok)return N();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return N();return{version:1,events:a.events,legacy:{mdImportedCount:"number"==typeof a.legacy?.mdImportedCount?a.legacy.mdImportedCount:0,jsonlImportedCount:"number"==typeof a.legacy?.jsonlImportedCount?a.legacy.jsonlImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return N()}}async function Q(a,b,c){let d;try{d=O(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid audit log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}function R(a,b,c){let d="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",e="error"===a.result?"error":"ok",f=a.params&&"object"==typeof a.params?a.params:{};return{id:`legacy-${Date.now().toString(36)}-${c.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),tool:d,params:f,result:e,message:function(a){if("string"==typeof a)return a.length<=2e3?a:a.slice(0,2e3)}(a.message),durationMs:"number"==typeof a.durationMs?a.durationMs:void 0,op:b}}async function S(a,b,c){let d;try{d=C(b,"Agent-Audit.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-op\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{c.push(JSON.parse(b[1].trim()))}catch{}return c}(f.value),h=c.legacy?.mdImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_audit_md_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:g.length,jsonlImportedCount:c.legacy?.jsonlImportedCount??0,lastImportedAt:B()}};return await a.remove(d),k}async function T(a,b,c){let d;try{d=C(b,".agent-log.json")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{b.push(JSON.parse(a))}catch{}}return b}(f.value),h=c.legacy?.jsonlImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_log_jsonl_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:c.legacy?.mdImportedCount??0,jsonlImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function U(a,b){let c=await P(a,b),d=await S(a,b,c),e=await T(a,b,d);return(c.events.length!==e.events.length||(c.legacy?.mdImportedCount??0)!==(e.legacy?.mdImportedCount??0)||(c.legacy?.jsonlImportedCount??0)!==(e.legacy?.jsonlImportedCount??0))&&await Q(a,b,e),e}async function V(a,b,c=100){let d=await U(a,b),e=Math.max(1,Math.min(c,1e3));return y(d.events.slice(0,e))}function W(a,b){if(!a)return;if(a instanceof URLSearchParams)return a.get(b)??void 0;let c=a[b];return Array.isArray(c)?c[0]:c}async function X(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,500)):10,f=await V(new v,b.mindRoot,e);return f.ok?i({events:f.value},{headers:l(30)}):i({error:f.error.message},{status:500})}var Y=c(48161);function Z(a={}){return i(ab(aa(a)))}function $(a,b={}){let c=a?.session;if(!ad(c))return i({error:"Invalid session payload"},{status:400});let d=aa(b),e=ab(d),f=e.findIndex(a=>a.id===c.id);return f>=0?e[f]=c:e.push(c),e.sort((a,b)=>ae(b)-ae(a)),ac(d,e),i({ok:!0})}function _(a,b={}){let c=Array.isArray(a?.ids)?a.ids.filter(a=>"string"==typeof a&&a.length>0):"string"==typeof a?.id&&a.id.length>0?[a.id]:[];if(0===c.length)return i({error:"id or ids is required"},{status:400});let d=aa(b),e=new Set(c);return ac(d,ab(d).filter(a=>!e.has(a.id))),i({ok:!0})}function aa(a){return a.storePath??(0,p.join)((0,Y.homedir)(),".mindos","sessions.json")}function ab(a){try{if(!(0,o.existsSync)(a))return[];let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if(!Array.isArray(b))return[];return b.filter(ad).sort((a,b)=>ae(b)-ae(a)).slice(0,30)}catch{return[]}}function ac(a,b){(0,o.mkdirSync)((0,p.dirname)(a),{recursive:!0}),(0,o.writeFileSync)(a,JSON.stringify(b.slice(0,30),null,2),"utf-8")}function ad(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&Array.isArray(a.messages))}function ae(a){return"number"==typeof a.updatedAt?a.updatedAt:0}c(37067),c(73136);let af=new Set([".md",".csv",".json",".pdf",".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".mp3",".wav",".m4a",".ogg",".flac",".aac",".mp4",".webm",".mov",".mkv"]),ag=new Set([".git","node_modules","app",".next",".DS_Store",".media","mcp"]);function ah(a={}){let b=a.env??process.env,c=a.homeDir??(0,Y.homedir)();return function(a){if(a.readSettings)try{return a.readSettings()}catch{return{}}try{let b=a.homeDir??(0,Y.homedir)(),c=(0,o.readFileSync)((0,p.join)(b,".mindos","config.json"),"utf-8"),d=JSON.parse(c);if(d&&"object"==typeof d)return d}catch{}return{}}(a).mindRoot||b.MIND_ROOT||(0,p.join)(c,"MindOS","mind")}function ai(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[];return function a(b,c,d,e={}){let f=!0===e.includeDirectories,g=!1!==e.includeFiles;for(let h of(0,o.readdirSync)(c,{withFileTypes:!0})){if(h.isDirectory()&&ag.has(h.name))continue;let i=(0,p.join)(c,h.name),j=(0,p.relative)(b,i).split("\\").join("/");if(h.isDirectory()){f&&d(i,j,h),a(b,i,d,e);continue}g&&h.isFile()&&d(i,j,h)}}(b,b,(a,b)=>{af.has((0,p.extname)(a).toLowerCase())&&c.push(b)}),c.sort((a,b)=>a.localeCompare(b)),c}function aj(a){let b=a.homeDir??(0,Y.homedir)(),c=a.runtimeRoot?(0,p.resolve)(a.runtimeRoot):process.cwd(),d=a.settings??{},e=[{path:(0,p.join)(c,"packages","web","data","skills"),source:"builtin",origin:"app-builtin",editable:!1},{path:(0,p.join)(c,"skills"),source:"builtin",origin:"project-builtin",editable:!1},{path:(0,p.join)(a.mindRoot,".skills"),source:"user",origin:"mindos-user",editable:!0},{path:(0,p.join)(b,".mindos","skills"),source:"user",origin:"mindos-global",editable:!0}];for(let a of(d.skillPaths?.enableAgentsDir!==!1&&e.push({path:(0,p.join)(b,".agents","skills"),source:"user",origin:"agents-global",editable:!0}),Array.isArray(d.skillPaths?.custom)?d.skillPaths.custom:[])){if("string"!=typeof a)continue;let b=a.trim();b&&e.push({path:b,source:"user",origin:"custom",editable:!0})}return e}let ak={code:-32001,message:"Task not found"},al={code:-32002,message:"Task not cancelable"},am={code:-32700,message:"Parse error"},an={code:-32600,message:"Invalid request"},ao={code:-32601,message:"Method not found"},ap={code:-32602,message:"Invalid params"},aq={code:-32603,message:"Internal error"},ar={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, A2A-Version"};async function as(a,b={}){if((a.contentLength??0)>1e5)return ax(az(null,{code:-32600,message:"Request too large (max 100000 bytes)"}),413);if(a.parseError)return ax(az(null,am),400);let c=a.body&&"object"==typeof a.body?a.body:{};if("2.0"!==c.jsonrpc||"string"!=typeof c.method)return ax(az(aA(c),an),400);try{switch(c.method){case"SendMessage":{var d;let a;if(a=(d=c.params)&&"object"==typeof d?d.message:void 0,!Array.isArray(a?.parts)||!(a.parts.length>0))return ax(az(aA(c),ap));let e=b.handleSendMessage??aC;return ax(ay(aA(c),await e(c.params)))}case"GetTask":{if(!aB(c.params))return ax(az(aA(c),ap));let a=(b.handleGetTask??function(){return null})(c.params);if(!a)return ax(az(aA(c),ak));return ax(ay(aA(c),a))}case"CancelTask":{if(!aB(c.params))return ax(az(aA(c),ap));let{task:a,reason:d}=(b.handleCancelTask??function(){return{task:null,reason:"not_found"}})(c.params);if("not_found"===d)return ax(az(aA(c),ak));if("not_cancelable"===d)return ax(az(aA(c),al));return ax(ay(aA(c),a))}default:return ax(az(aA(c),ao))}}catch(a){return ax(az(aA(c),{...aq,data:a instanceof Error?a.message:String(a)}),500)}}function at(){return j(ar)}function au(a={}){return i({agents:a.getDiscoveredAgents?.()??[]})}function av(a={}){return i({delegations:a.getDelegationHistory?.()??[]})}async function aw(a,b={}){let c=a&&"object"==typeof a?a:{};if(!c.url||"string"!=typeof c.url)return i({error:"URL is required"},{status:400});let d=c.url.trim();if(!function(a){if(!a||a.length>2048)return!1;try{let b=new URL(a);if("http:"!==b.protocol&&"https:"!==b.protocol||b.username||b.password)return!1;return!!b.hostname}catch{return!1}}(d))return i({error:"Invalid URL",agent:null},{status:400});let e=b.discoverAgent??aD,f=await e(d);return f?i({agent:f}):i({error:"No A2A agent found",agent:null})}function ax(a,b=200){return i(a,{status:b,headers:ar})}function ay(a,b){return{jsonrpc:"2.0",id:a,result:b}}function az(a,b){return{jsonrpc:"2.0",id:a,error:b}}function aA(a){return"string"==typeof a.id||"number"==typeof a.id?a.id:null}function aB(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&a.id)}async function aC(){throw Error("A2A SendMessage service is not configured")}async function aD(){return null}var aE=c(31421),aF=c(75791);let aG=null;function aH(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function aI(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!aH(a)}function aJ(a,b="agentId"){let c=a&&"object"==typeof a?a[b]:void 0;if("string"!=typeof c)return null;let d=c.trim();return aI(d)?d:null}function aK(a){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(a)&&!aH(a)}function aL(a){return i({agents:aV(a.readSettings().acpAgents)??{}})}function aM(a,b){let c=a&&"object"==typeof a?a:{},d=aJ(c);if(!d)return i({error:"agentId is required"},{status:400});let e=b.readSettings(),f={...aV(e.acpAgents)??{}},g=aU(c.config);return g&&(f[d]=g),b.writeSettings({...e,acpAgents:f}),i({ok:!0,agents:f})}function aN(a,b){let c=aJ(a&&"object"==typeof a?a:{});if(!c)return i({error:"agentId is required"},{status:400});let d=b.readSettings(),e={...aV(d.acpAgents)??{}};delete e[c];let f=Object.keys(e).length>0?{...d,acpAgents:e}:{...d,acpAgents:void 0};return b.writeSettings(f),i({ok:!0,agents:f.acpAgents??{}})}async function aO(a,b={}){try{let c="1"===a.get("force"),d=b.now?.()??Date.now();if(!c&&aG&&d-aG.ts<18e5)return i(aG.data);let e=b.detectLocalAcpAgents??aF.Tn,f=await e({overrides:function(a){try{let b=a.readSettings?.();return aV(b?.acpAgents)}catch{return}}(b)});return aG={data:f,ts:d},i(f)}catch(a){return m(a)}}async function aP(a,b={}){try{let c,d=a&&"object"==typeof a?a:{},e=aJ(d);if(!e||!d.packageName||"string"!=typeof d.packageName)return i({error:"agentId and packageName are required"},{status:400});if(c=d.packageName.trim(),!(!(0===c.length||c.length>214||c.includes("\\"))&&/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i.test(c)))return i({error:"Invalid package name"},{status:400});let f=b.installPackage??aW;return i(await f(e,d.packageName))}catch(a){return m(a)}}async function aQ(a,b={}){try{let c=a.get("agent");if(c){if(!aI(c.trim()))return i({error:"Invalid agent id",agent:null},{status:400});let a=b.findAcpAgent??aF.l3,d=await a(c.trim());if(!d)return i({error:"Agent not found",agent:null},{status:404});return i({agent:d})}let d=b.fetchAcpRegistry??aF.Ew,e=await d();if(!e)return i({error:"Failed to fetch registry",registry:null},{status:502});return i({registry:e})}catch(a){return m(a)}}function aR(a={}){try{return i({sessions:(a.getActiveSessions??aF.EF)()})}catch(a){return m(a)}}async function aS(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"create";switch(d){case"create":return await aX(c,b);case"load":return await aY(c,b);case"prompt":return await aZ(c,b);case"cancel":return await a$(c,b);case"set_mode":return await a_(c,b);case"set_config":return await a0(c,b);case"list_sessions":return await a1(c,b);default:return i({error:`Unknown action: ${d}`},{status:400})}}catch(d){var c;let a,b;return b=(a=(c=d)instanceof Error?c.message:String(c||"Unknown error")).includes("not found")?404:a.includes("not support")?501:500,i({error:a},{status:b})}}async function aT(a,b={}){try{let c=a2(a,"sessionId");if(!c)return i({error:"sessionId is required"},{status:400});if(!(b.getSession??aF.Ht)(c))return i({error:"Session not found"},{status:404});return await (b.closeSession??aF.Vu)(c),i({ok:!0})}catch(a){return m(a)}}function aU(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};if("string"==typeof a.command&&a.command.trim()&&(b.command=a.command.trim()),Array.isArray(a.args)&&(b.args=a.args.filter(a=>"string"==typeof a)),a.env&&"object"==typeof a.env&&!Array.isArray(a.env)){let c={};for(let[b,d]of Object.entries(a.env))"string"==typeof d&&aK(b)&&(c[b]=d);Object.keys(c).length>0&&(b.env=c)}return"boolean"==typeof a.enabled&&(b.enabled=a.enabled),b}function aV(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!aI(c))continue;let a=aU(d);a&&(b[c]=a)}return Object.keys(b).length>0?b:void 0}async function aW(a,b){let c=function(a,b={}){if("win32"!==(b.platform??process.platform))return{command:"npm",args:a};let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&(b.npm_execpath.endsWith("npm-cli.js")?d.add(b.npm_execpath):d.add((0,p.join)((0,p.dirname)(b.npm_execpath),"npm-cli.js")));let e=(0,p.dirname)(a);for(let a of(d.add((0,p.join)(e,"node_modules","npm","bin","npm-cli.js")),d.add((0,p.resolve)(e,"..","lib","node_modules","npm","bin","npm-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??o.existsSync);if(!e)throw Error("Unable to locate npm-cli.js for shell-free ACP package installation on Windows");return{command:d,args:[e,...a]}}(["install","-g",b]);return(0,aE.execFile)(c.command,c.args,{timeout:12e4}).unref(),{status:"installing",agentId:a,packageName:b}}async function aX(a,b){let c=aJ(a);if(!c)return i({error:"agentId is required"},{status:400});let d={env:a3(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0},e=b.createSession??aF.jw,f=await e(c,d),g="string"==typeof a.prompt?a.prompt:void 0;if(!g)return i({session:f});let h=b.prompt??aF.J1,j=b.closeSession??aF.Vu;try{let a=await h(a4(f),g);return await j(a4(f)).catch(()=>{}),i({session:f,response:a})}catch(a){return await j(a4(f)).catch(()=>{}),m(a)}}async function aY(a,b){let c=aJ(a),d=a2(a,"sessionId");return c?d?i({session:await (b.loadSession??aF.L6)(c,d,{env:a3(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0})}):i({error:"sessionId is required"},{status:400}):i({error:"agentId is required"},{status:400})}async function aZ(a,b){let c=a2(a,"sessionId"),d=a2(a,"text");return c?d?i({response:await (b.prompt??aF.J1)(c,d)}):i({error:"text is required"},{status:400}):i({error:"sessionId is required"},{status:400})}async function a$(a,b){let c=a2(a,"sessionId");return c?(await (b.cancelPrompt??aF.zl)(c),i({ok:!0})):i({error:"sessionId is required"},{status:400})}async function a_(a,b){let c=a2(a,"sessionId"),d=a2(a,"modeId");return c&&d?(await (b.setMode??aF.iY)(c,d),i({ok:!0})):i({error:"sessionId and modeId are required"},{status:400})}async function a0(a,b){let c=a2(a,"sessionId"),d=a2(a,"configId");return c&&d&&void 0!==a.value?i({configOptions:await (b.setConfigOption??aF.Et)(c,d,String(a.value))}):i({error:"sessionId, configId, and value are required"},{status:400})}async function a1(a,b){let c=a2(a,"sessionId");return c?i(await (b.listSessions??aF.GW)(c,{cursor:"string"==typeof a.cursor?a.cursor:void 0,cwd:"string"==typeof a.cwd?a.cwd:void 0})):i({error:"sessionId is required"},{status:400})}function a2(a,b){let c=a&&"object"==typeof a?a[b]:void 0;return"string"==typeof c&&c?c:void 0}function a3(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&aK(c)&&(b[c]=d);return Object.keys(b).length>0?b:void 0}function a4(a){if(a&&"object"==typeof a&&"string"==typeof a.id)return a.id;throw Error("ACP session response did not include an id")}let a5=["mindos","claude-code","cursor","windsurf","cline","trae","gemini-cli","openclaw","codebuddy","iflow-cli","kimi-cli","opencode","pi","augment","qwen-code","qoder","trae-cn","roo","github-copilot","codex","antigravity","qclaw","workbuddy","lingma","copaw","hermes"];function a6(a){return a.toLowerCase().replace(/[^\x20-\x7E]/g,"").replace(/[_\s]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-{2,}/g,"-").replace(/^-|-$/g,"")||""}function a7(a){return a.endsWith("/")||a.endsWith("\\")?a:`${a}/`}function a8(a,b){return`${a7(a)}${b}`}function a9(a){return!!(a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||"win32"===process.platform&&(/^[A-Z]:[\\/]/i.test(a)||a.startsWith("\\\\")))}function ba(a){return a.split(/[\\/]+/).includes("..")}function bb(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function bc(a){return/^[a-z0-9][a-z0-9-]*$/.test(a)&&!bb(a)}function bd(a,b){let c=a.split(".");return 0===c.length||c.some(a=>!a.trim()||bb(a.trim()))?`${b} contains an unsafe key`:null}function be(a,b){let c=a.trim();return c?ba(c)?`${b} cannot contain parent directory segments`:a9(c)?null:`${b} must be an absolute path`:`${b} is required`}function bf(a){if(void 0!==a.key){if("string"!=typeof a.key)return"Agent key must be a string";if(!bc(a.key.trim()))return"Agent key must use lowercase letters, numbers, and hyphens only"}if(void 0!==a.format&&!["json","toml"].includes(String(a.format)))return'format must be "json" or "toml"';if(void 0!==a.preferredTransport&&!["stdio","http"].includes(String(a.preferredTransport)))return'preferredTransport must be "stdio" or "http"';if(void 0!==a.configKey){if("string"!=typeof a.configKey)return"configKey must be a string";let b=bd(a.configKey.trim(),"configKey");if(b)return b}if(void 0!==a.globalNestedKey&&""!==a.globalNestedKey){if("string"!=typeof a.globalNestedKey)return"globalNestedKey must be a string";let b=bd(a.globalNestedKey.trim(),"globalNestedKey");if(b)return b}for(let[c,d]of[["baseDir","baseDir"],["global","global"],["skillDir","skillDir"]]){var b;let e=(b=a[c],null==b||""===b?null:"string"!=typeof b?`${d} must be a string`:be(b,d));if(e)return e}if(void 0!==a.presenceDirs){if(!Array.isArray(a.presenceDirs))return"presenceDirs must be an array";for(let b of a.presenceDirs){if("string"!=typeof b)return"presenceDirs must contain only strings";let a=be(b,"presenceDirs");if(a)return a}}return void 0!==a.presenceCli&&""!==a.presenceCli&&"string"!=typeof a.presenceCli?"presenceCli must be a string":null}function bg(a){let b=a.customAgents;return Array.isArray(b)?b.filter(a=>null!=a&&"object"==typeof a&&"string"==typeof a.name&&"string"==typeof a.key&&"string"==typeof a.baseDir):[]}function bh(a,b){try{var c,d;let e,{name:f,baseDir:g,...h}=a;if(!f?.trim()||!g?.trim())return i({error:"name and baseDir are required"},{status:400});let j=b.readSettings(),k=bg(j),l=new Set(b.builtInAgentKeys??a5),m=new Set([...l,...k.map(a=>a.key)]),n=bf(h);if(n)return i({error:n},{status:400});let o="string"==typeof h.key&&h.key.trim()?h.key.trim():function(a,b){let c=a6(a);if(!c){let a=1;for(;b.has(`custom-${a}`);)a+=1;return`custom-${a}`}if(!b.has(c))return c;let d=2;for(;b.has(`${c}-${d}`);)d+=1;return`${c}-${d}`}(f.trim(),m),p=function(a,b,c,d=!1){if(!a.name?.trim())return"Agent name is required";if(!a.baseDir?.trim())return"Config directory is required";let e=a.baseDir.trim();if(ba(e))return"Config directory cannot contain parent directory segments";if(!a9(e))return"Must be an absolute path (e.g. ~/.qclaw/)";if(!d){let d=a.key||a6(a.name.trim());if(!d)return"Cannot generate a valid key from this name";if(!bc(d))return"Agent key must use lowercase letters, numbers, and hyphens only";if(c.has(d))return`Conflicts with built-in agent "${d}"`;if(b.has(d))return`An agent with key "${d}" already exists`}return null}({name:f,baseDir:g,key:o},m,l);if(p)return i({error:p},{status:400});let q={...(c=f.trim(),d=g.trim(),e=a7(d),{name:c,baseDir:e,global:a8(e,"mcp.json"),project:null,configKey:"mcpServers",format:"json",preferredTransport:"stdio",presenceDirs:[e],skillDir:a8(e,"skills/")}),key:o,...h.global&&{global:h.global},...void 0!==h.project&&{project:h.project},...h.configKey&&{configKey:h.configKey},...h.format&&{format:h.format},...h.preferredTransport&&{preferredTransport:h.preferredTransport},...h.presenceDirs&&{presenceDirs:h.presenceDirs},...h.presenceCli&&{presenceCli:h.presenceCli},...h.globalNestedKey&&{globalNestedKey:h.globalNestedKey},...h.skillDir&&{skillDir:h.skillDir}};return b.writeSettings({...j,customAgents:[...k,q]}),i({agent:q},{status:201})}catch(a){return m(a)}}function bi(a,b){try{let{key:c,...d}=a,e="string"==typeof c?c.trim():"";if(!e)return i({error:"key is required"},{status:400});if(!bc(e))return i({error:"Invalid agent key"},{status:400});let f=b.readSettings(),g=bg(f),h=g.findIndex(a=>a.key===e);if(-1===h)return i({error:`Custom agent "${e}" not found`},{status:404});let j=bf(d);if(j)return i({error:j},{status:400});let k=g[h];if(!k)return i({error:`Custom agent "${e}" not found`},{status:404});let l={...k,...d.name&&{name:d.name},...d.baseDir&&{baseDir:d.baseDir},...d.global&&{global:d.global},...void 0!==d.project&&{project:d.project},...d.configKey&&{configKey:d.configKey},...d.format&&{format:d.format},...d.preferredTransport&&{preferredTransport:d.preferredTransport},...void 0!==d.presenceCli&&{presenceCli:d.presenceCli||void 0},...void 0!==d.globalNestedKey&&{globalNestedKey:d.globalNestedKey||void 0},...void 0!==d.skillDir&&{skillDir:d.skillDir||void 0}};d.presenceDirs?l.presenceDirs=d.presenceDirs:d.baseDir&&(l.presenceDirs=[a7(d.baseDir)]),!d.skillDir&&d.baseDir&&(l.skillDir=a8(d.baseDir,"skills/"));let m=g.slice();return m[h]=l,b.writeSettings({...f,customAgents:m}),i({agent:l})}catch(a){return m(a)}}function bj(a,b){try{let{key:c}=a;if(!c)return i({error:"key is required"},{status:400});let d=b.readSettings(),e=bg(d),f=e.filter(a=>a.key!==c);if(f.length===e.length)return i({error:`Custom agent "${c}" not found`},{status:404});return b.writeSettings({...d,customAgents:f}),i({removed:c})}catch(a){return m(a)}}function bk(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function bl(a,b={}){try{if(!a.baseDir?.trim())return i({error:"baseDir is required"},{status:400});let c=a.baseDir.trim();if(!a9(c))return i({error:"baseDir must be an absolute path (e.g. ~/.qclaw/)"},{status:400});let d=function(a,b=(0,Y.homedir)()){let c,d=bk(a,b);if(!(0,o.existsSync)(d)){let a=(0,p.basename)(d.replace(/[\\/]+$/,""));return{exists:!1,hasSkillsDir:!1,suggestedName:a.charAt(0).toUpperCase()+a.slice(1)}}let e={exists:!0,hasSkillsDir:!1},f=(0,p.basename)(d.replace(/[\\/]+$/,""));e.suggestedName=f.charAt(0).toUpperCase()+f.slice(1);let g=(0,p.join)(d,"skills");if((0,o.existsSync)(g)){e.hasSkillsDir=!0,e.detectedSkillDir=a8(a,"skills/");try{let a=(0,o.readdirSync)(g,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b));e.skillCount=a.length,e.skillNames=a}catch{e.skillCount=0}}try{c=(0,o.readdirSync)(d).slice(0,20)}catch{return e}for(let b of c){if(!b.endsWith(".json"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;let f=JSON.parse((0,o.readFileSync)(c,"utf-8"));if("mcpServers"in f)return e.detectedConfig=a8(a,b),e.detectedFormat="json",e.detectedConfigKey="mcpServers",e;if("servers"in f)return e.detectedConfig=a8(a,b),e.detectedFormat="json",e.detectedConfigKey="servers",e}catch{}}for(let b of c){if(!b.endsWith(".toml"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;for(let d of(0,o.readFileSync)(c,"utf-8").split("\n").slice(0,50))if(/^\s*\[mcp_servers/i.test(d)||/^\s*\[mcpServers/i.test(d)){let c=d.toLowerCase();return e.detectedConfig=a8(a,b),e.detectedFormat="toml",e.detectedConfigKey=c.includes("mcp_servers")?"mcp_servers":"mcpServers",e}}catch{}}return e}(c,b.homeDir);if(d.detectedConfig&&d.detectedConfigKey){let a=function(a,b,c,d=(0,Y.homedir)()){let e=bk(a,d),f=bk(b,d),g=b.toLowerCase().endsWith(".toml")?"toml":"json",h={mcpServers:[],skillNames:[],skillDir:"",configFormat:g};if((0,o.existsSync)(f))try{let a=(0,o.readFileSync)(f,"utf-8");h.mcpServers="json"===g?function(a,b){try{let c,d=(!(c=(c=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a)).replace(/\/\*[\s\S]*?\*\//g,"")).trim()?{}:JSON.parse(c))[b];if(d&&"object"==typeof d)return Object.keys(d).sort((a,b)=>a.localeCompare(b))}catch{}return[]}(a,c):function(a,b){let c=new Set,d=a.split("\n"),e=`${b}.`;for(let a of d){let b=a.trim();if(!b.startsWith("[")||!b.endsWith("]"))continue;let d=b.slice(1,-1).trim();if(!d.startsWith(e))continue;let f=d.slice(e.length).split(".")[0]?.trim();f&&c.add(f)}return[...c].sort((a,b)=>a.localeCompare(b))}(a,c)}catch(a){h.parseError=`Failed to parse MCP config: ${a instanceof Error?a.message:"Unknown error"}`}let i=(0,p.join)(e,"skills");if(h.skillDir=a8(a,"skills/"),!(0,o.existsSync)(i))return h;try{h.skillNames=(0,o.readdirSync)(i,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{}return h}(c,d.detectedConfig,d.detectedConfigKey,b.homeDir);d.mcpServers=a.mcpServers,d.skillNames=a.skillNames,a.parseError&&(d.mcpParseError=a.parseError)}return i(d)}catch(a){return m(a)}}async function bm(a,b){for(let c of((0,o.mkdirSync)(b,{recursive:!0}),(0,o.readdirSync)(a,{withFileTypes:!0}))){let d=(0,p.join)(a,c.name),e=(0,p.join)(b,c.name);c.isDirectory()?await bm(d,e):c.isFile()&&(0,o.writeFileSync)(e,(0,o.readFileSync)(d))}}async function bn(a,b){try{if(!a.skillName?.trim())return i({error:"skillName is required"},{status:400});if(!a.targetPath?.trim())return i({error:"targetPath is required"},{status:400});let c=a.skillName.trim();if("."===c||".."===c||c.includes("/")||c.includes("\\"))return i({error:"Invalid skill name"},{status:400});let d=a.targetPath.trim();if(ba(d))return i({error:"Invalid target path"},{status:400});if(!a9(d))return i({error:"Target path must be absolute (starting with / or ~/)"},{status:400});let e=function(a,b){for(let c of b){let b=(0,p.join)(c.path,a);if((0,o.existsSync)(b))return b}return null}(c,b.skillRoots);if(!e)return i({error:`Skill "${c}" not found`},{status:404});let f=b.homeDir??(0,Y.homedir)(),g=bk(d,f).replace(/\/$/,""),h=(0,p.join)(g,c);if((0,o.existsSync)(h))return i({error:`Skill "${c}" already exists in target directory`},{status:409});return(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),await (b.copyDirectory??bm)(e,h),i({success:!0,skillName:c,targetPath:h})}catch(a){return m(a)}}function bo(a,b){var c;let d=a.get("target_dir")??void 0;if(d&&((c=d).split(/[\\/]+/).includes("..")||p.isAbsolute(c)||p.win32.isAbsolute(c)||c.includes("\\")))return i({error:"invalid target_dir"},{status:400});let e={instruction:bp(b,"INSTRUCTION.md"),index:bp(b,"README.md"),config_json:bp(b,"CONFIG.json"),user_skill_rules:bp(b,".mindos/user-preferences.md"),file_index:function(a,b={}){let c=b.maxDepth??2,d=b.maxFilesPerDir??15,e=[];for(let b of[...a].sort((a,b)=>a.localeCompare(b)))!function a(b,c){let[d,...e]=c;if(!d)return;if(0===e.length)return void b.push({name:d,type:"file"});let f=b.find(a=>"directory"===a.type&&a.name===d);f||(f={name:d,type:"directory",children:[]},b.push(f)),a(f.children??[],e)}(e,b.split("/").filter(Boolean));if(0===e.length)return"(empty knowledge base)";let f=[];return function a(b,e){let g=" ".repeat(e),h=b.filter(a=>"directory"===a.type),i=b.filter(a=>"file"===a.type);for(let b of h){let d=function a(b){let c=0;for(let d of b)"file"===d.type?c++:c+=a(d.children??[]);return c}(b.children??[]),h=1===d?"1 file":`${d} files`;f.push(`${g}${b.name}/ (${h})`),e<c&&a(b.children??[],e+1)}let j=i.slice(0,d);for(let a of j)f.push(`${g}${a.name}`);let k=i.length-j.length;k>0&&f.push(`${g}... (${k} more)`)}(e,0),f.join("\n")}(b.collectAllFiles())};return d&&(e.target_readme=bp(b,p.join(d,"README.md")),e.target_instruction=bp(b,p.join(d,"INSTRUCTION.md")),e.target_config_json=bp(b,p.join(d,"CONFIG.json"))),i(e,{headers:k(300,function(a){let b=0,c=JSON.stringify(a);for(let a=0;a<c.length;a++)b=(b<<5)-b+c.charCodeAt(a)|0;return`W/"${Math.abs(b).toString(16)}"`}(e))})}function bp(a,b){try{return a.readTextFile(b)}catch{return}}let bq=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),br={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},bs={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};async function bt(a,b={}){try{var c;let d=a&&"object"==typeof a?a:{},e=d.platform,f=d.credentials;if(!e||(c=e,!bq.has(c)))return i({ok:!1,error:"Invalid platform"},{status:400});if(!f||"object"!=typeof f)return i({ok:!1,error:"Missing credentials"},{status:400});let g=function(a,b){if(!b||"object"!=typeof b)return{valid:!1,missing:["(no config)"]};let c=br[a],d=bs[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(e,f);if(!g.valid)return i({ok:!1,error:`Missing required fields: ${g.missing?.join(", ")||"unknown"}`},{status:400});let h=b.verifyCredentials??bu,j=await h(e,f);if(!j.ok)return i({ok:!1,error:j.error||"Credential verification failed"},{status:401});return i({ok:!0,botName:j.botName,botId:j.botId})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}}async function bu(){return{ok:!1,error:"Credential verifier is not configured"}}var bv=c(17409),bw=c(66451);function bx(a,b){let c=W(a,"op")??"read_file";if("list_spaces"===c){var d;let a;return i({spaces:b.mindRoot?(d=b.mindRoot,a=(0,p.resolve)(d),(0,o.existsSync)(a)?(0,o.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>{var b;let c,e,f=a.name;return{name:a.name,path:f,fileCount:(b=(0,w.n2)(d,f),c=0,(e=a=>{for(let b of(0,o.readdirSync)(a,{withFileTypes:!0})){if(b.name.startsWith(".")||"node_modules"===b.name||b.isSymbolicLink())continue;let d=(0,p.join)(a,b.name);b.isDirectory()?e(d):c++}})(b),c),description:function(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,p.posix.join(b,"README.md")),"utf-8").split(/\r?\n/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("#"))[0]??""}catch{return""}}(d,f)}}).filter(a=>a.fileCount>0||a.description).sort((a,b)=>a.path.localeCompare(b.path)):[]):b.listSpaces()})}if("list_dirs"===c)return i({dirs:b.mindRoot?function(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[],d=a=>{for(let e of(0,o.readdirSync)(a,{withFileTypes:!0})){if(!e.isDirectory()||e.name.startsWith("."))continue;let f=(0,p.join)(a,e.name);c.push((0,p.relative)(b,f).split("\\").join("/")),d(f)}};return d(b),c.sort((a,b)=>a.localeCompare(b))}(b.mindRoot):b.listDirectories()});if("check_conflicts"===c)return function(a,b){let c=W(a,"names");if(!c)return i({error:"missing names"},{status:400});if(!b.mindRoot)return i({error:"MIND_ROOT not configured"},{status:400});try{let e=W(a,"space")??"",f=[];for(let a of c.split(",").map(a=>a.trim()).filter(Boolean)){var d;let c=function(a){let b=(0,p.extname)(a).toLowerCase();if(".md"===b||".csv"===b)return a;let c=b?a.slice(0,-b.length):a;return`${c||"untitled"}.md`}((d=a,(0,p.basename)(d).replace(/[<>:"|?*\x00-\x1f]/g,"_").trim())),g=e?p.posix.join(e,c):c;(0,o.existsSync)((0,w.n2)(b.mindRoot,g))&&f.push(a)}return i({conflicts:f})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}(a,b);let e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});try{if("read_lines"===c)return i({lines:b.readLines(e)});if("read_file"===c)return i({content:b.readTextFile(e)});return i({error:`Unknown op: ${c}`},{status:400})}catch(b){let a=b instanceof Error?b.message:String(b);if(/not found|ENOENT/i.test(a))return i({error:"File not found"},{status:404});if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}async function by(a,b,c={}){var d,e,f,g;if(!a||"object"!=typeof a)return i({error:"Invalid JSON body"},{status:400});let h=(0,bw.aH)({hasAgentHeader:!!c.agentHeader,bodySource:a.source,headerSource:c.sourceHeader});try{let g=await (0,bw.XT)({body:a,source:h,actor:(0,bw.bt)(h,c.agentHeader),handlers:(d=b.mindRoot,{save_file:(a,b)=>(function(a,b,c){let d=bJ(c.content,"content"),e=(0,w.n2)(a,b),f=bA(a,e);if("number"==typeof c.expectedMtime&&(0,o.existsSync)(e)&&(0,o.statSync)(e).mtimeMs>c.expectedMtime)return{response:i({error:"conflict",serverMtime:(0,o.statSync)(e).mtimeMs},{status:409}),changeEvent:null};let g=bG(a,b);return bD(e,d),{response:i({ok:!0,path:f,mtime:(0,o.statSync)(e).mtimeMs}),changeEvent:{op:"save_file",path:f,summary:"Updated file content",before:g,after:d}}})(d,a,b),create_file:(a,b)=>{var c,e,f;let g,h,j;return c=d,e=a,f=b,g=bz(f.content,""),h=(0,w.n2)(c,e),j=bA(c,h),(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),(0,o.writeFileSync)(h,g,{encoding:"utf-8",flag:"wx"}),{response:i({ok:!0,path:j,mtime:(0,o.statSync)(h).mtimeMs}),changeEvent:{op:"create_file",path:j,summary:"Created file",before:"",after:g}}},append_to_file:(a,b)=>(function(a,b,c){var d;let e=bJ(c.content,"content");if(".agent-log.json"===b){for(let b of function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{let c=JSON.parse(a);b.push({ts:"string"==typeof c.ts?c.ts:new Date().toISOString(),tool:"string"==typeof c.tool&&c.tool.trim()?c.tool:"unknown-tool",params:c.params&&"object"==typeof c.params?c.params:{},result:"error"===c.result?"error":"ok",message:"string"==typeof c.message?c.message:void 0,durationMs:"number"==typeof c.durationMs?c.durationMs:void 0,agentName:"string"==typeof c.agentName?c.agentName:void 0})}catch{}}return b}(e))!function(a,b){let c=(0,w.n2)(a,".mindos/agent-audit-log.json"),d={version:1,events:[]};try{if((0,o.existsSync)(c)){let a=JSON.parse((0,o.readFileSync)(c,"utf-8"));Array.isArray(a.events)&&(d={version:1,events:a.events})}}catch{d={version:1,events:[]}}d.events.unshift({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,...b,op:"append"}),(0,o.mkdirSync)((0,p.dirname)(c),{recursive:!0}),(0,o.writeFileSync)(c,JSON.stringify(d,null,2),"utf-8")}(a,b);return{response:i({ok:!0,path:b}),changeEvent:null}}let f=bG(a,b),g=(0,w.n2)(a,b),h=bA(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,(d=g,((0,o.existsSync)(d)&&0!==(0,o.statSync)(d).size?(0,o.readFileSync)(d,"utf-8").endsWith("\n\n")?"":"\n":"")+e),"utf-8"),{response:i({ok:!0,path:h,mtime:(0,o.statSync)(g).mtimeMs}),changeEvent:{op:"append_to_file",path:h,summary:"Appended content to file",before:f,after:bG(a,h)}}})(d,a,b),insert_lines:(a,b)=>(function(a,b,c){let d=bK(c.after_index,"after_index"),e=bL(c.lines,"lines"),f=bG(a,b),g=bE(a,b),h=bB(a,b);if(d>=g.length)throw Error(`Invalid after_index: ${d} >= total lines (${g.length})`);return g.splice(d<0?0:d+1,0,...e),bF(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_lines",path:h,summary:`Inserted ${e.length} line(s)`,before:f,after:bG(a,h)}}})(d,a,b),update_lines:(a,b)=>(function(a,b,c){let d=bK(c.start,"start"),e=bK(c.end,"end"),f=bL(c.lines,"lines");if(d<0||e<0)throw Error("start/end must be >= 0");if(d>e)throw Error("start must be <= end");let g=bG(a,b),h=bE(a,b),j=bB(a,b);if(d>=h.length)throw Error(`Invalid line index: start (${d}) >= total lines (${h.length})`);return h.splice(d,e-d+1,...f),bF(a,j,h.join("\n")),{response:i({ok:!0,path:j}),changeEvent:{op:"update_lines",path:j,summary:`Updated lines ${d}-${e}`,before:g,after:bG(a,j)}}})(d,a,b),insert_after_heading:(a,b)=>(function(a,b,c){let d=bJ(c.heading,"heading"),e=bJ(c.content,"content"),f=bG(a,b),g=bE(a,b),h=bB(a,b),j=bH(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=j+1;for(;k<g.length&&""===(g[k]??"").trim();)k++;return g.splice(k,0,"",e),bF(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_after_heading",path:h,summary:`Inserted content after heading "${d}"`,before:f,after:bG(a,h)}}})(d,a,b),update_section:(a,b)=>(function(a,b,c){let d=bJ(c.heading,"heading"),e=bJ(c.content,"content"),f=bG(a,b),g=bE(a,b),h=bB(a,b),j=bH(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=((g[j]??"").match(/^#+/)??[""])[0].length,l=g.length-1;for(let a=j+1;a<g.length;a++){let b=/^(#+)\s/.exec(g[a]??"");if((b?.[1]?.length??1/0)<=k){l=a-1;break}}for(;l>j&&""===(g[l]??"").trim();)l--;return g.splice(j+1,l-j,"",e),bF(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"update_section",path:h,summary:`Updated section "${d}"`,before:f,after:bG(a,h)}}})(d,a,b),delete_file:a=>(function(a,b){if(!b.includes("/")&&"TODO.md"===(0,p.basename)(b))return{response:i({error:`"${b}" is a protected file and cannot be deleted`},{status:403}),changeEvent:null};let c=(0,w.n2)(a,b),d=bA(a,c),e=bG(a,b),f=function(a,b){let c=(0,w.n2)(a,b);if(!(0,o.existsSync)(c))throw Error(`File not found: ${b}`);let d=(0,o.statSync)(c).isDirectory(),e=`${Date.now()}_${(0,p.basename)(b).replace(/[^a-zA-Z0-9._\-\u4e00-\u9fff]/g,"_")}`,f=bI(a,".trash"),g=bI(a,".trash-meta");(0,o.mkdirSync)(f,{recursive:!0}),(0,o.mkdirSync)(g,{recursive:!0});let h=(0,p.join)(f,e);try{(0,o.renameSync)(c,h)}catch(a){if("EXDEV"!==(a&&"object"==typeof a&&"code"in a?a.code:void 0))throw a;d?((0,o.cpSync)(c,h,{recursive:!0}),(0,o.rmSync)(c,{recursive:!0,force:!0})):((0,o.copyFileSync)(c,h),(0,o.unlinkSync)(c))}let i=new Date,j={id:e,originalPath:b,deletedAt:i.toISOString(),expiresAt:new Date(i.getTime()+2592e6).toISOString(),fileName:(0,p.basename)(b),isDirectory:d};return(0,o.writeFileSync)((0,p.join)(g,`${e}.json`),JSON.stringify(j,null,2),"utf-8"),j}(a,d);return{response:i({ok:!0,path:d,trashId:f.id}),changeEvent:{op:"delete_file",path:d,summary:"Moved to trash",before:e,after:""}}})(d,a),rename_file:(a,b)=>(function(a,b,c){let d=bJ(c.new_name,"new_name");bC(d,"filename");let e=(0,w.n2)(a,b),f=bA(a,e),g=p.posix.join(p.posix.dirname(f),d),h=(0,w.eX)(a,g);if((0,p.dirname)(h)!==(0,p.dirname)(e))throw Error("Invalid filename: must stay in the same directory");if((0,o.existsSync)(h))throw Error("A file with that name already exists");let j=bG(a,b);(0,o.renameSync)(e,h);let k=bA(a,h);return{response:i({ok:!0,newPath:k}),changeEvent:{op:"rename_file",path:k,summary:`Renamed file to ${d}`,before:j,after:bG(a,k),beforePath:f,afterPath:k}}})(d,a,b),move_file:(a,b)=>(function(a,b,c){let d=bJ(c.to_path??c.toPath??c.newPath,"to_path"),e=bG(a,b),f=(0,w.n2)(a,b),g=(0,w.n2)(a,d),h=bA(a,f),j=bA(a,g);if((0,o.existsSync)(g))throw Error(`Destination already exists: ${d}`);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.renameSync)(f,g),{response:i({ok:!0,path:j,newPath:j,affectedFiles:[]}),changeEvent:{op:"move_file",path:j,summary:`Moved file to ${j}`,before:e,after:bG(a,j),beforePath:h,afterPath:j}}})(d,a,b),create_space:(a,b)=>(function(a,b){let c=bJ(b.name,"name").trim();bC(c,"name");let d="string"==typeof b.parent_path&&b.parent_path.trim()?b.parent_path.trim():"",e=d?p.posix.join(d,c):c,f=(0,w.n2)(a,e);if((0,o.existsSync)(f))throw Error("Space already exists");(0,o.mkdirSync)(f,{recursive:!0});let g=bA(a,f),h=bz(b.description,"");return(0,o.writeFileSync)((0,p.join)(f,"INSTRUCTION.md"),`# ${c}
1
+ exports.id=8461,exports.ids=[8461],exports.modules={17409:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,e:()=>j});let d=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),e={allow:0,ask:1,deny:2};function f(a){return a.replace(/\\/g,"/").replace(/^\/+/,"")}function g(a,b){return b.actorScore-a.actorScore||b.opScore-a.opScore||b.pathScore-a.pathScore||b.effectScore-a.effectScore}function h(a){var b;let c,h;if(!("agent"!==(b=a).actor.type||f(b.path).includes("/"))&&new Set(b.protectedRootFiles??d).has(-1===(h=(c=f(b.path)).lastIndexOf("/"))?c:c.slice(h+1)))return{effect:"deny",reason:`Root-level system file "${f(a.path)}" is protected and cannot be modified by agents`};let i=(a.rules??[]).map(b=>{var c,d,g,h,i,j;return c=b,d=a,function(a,b){return"*"===a||a===("agent"===b.actor.type&&b.actor.agentName?.trim()?b.actor.agentName.trim():b.actor.type)}(c.actor,d)&&(g=c.op,h=d.op,"*"===g||g===h)&&(i=c.path,j=d.path,(function(a){let b=f(a||"**"),c="";for(let a=0;a<b.length;a++){let d=b[a]??"",e=b[a+1];"*"===d&&"*"===e?(c+=".*",a++):"*"===d?c+="[^/]*":c+=d.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return RegExp(`^${c}$`)})(i).test(f(j)))?{rule:c,actorScore:+("*"!==c.actor),opScore:+("*"!==c.op),pathScore:f(c.path).replace(/\*/g,"").length,effectScore:e[c.effect]}:null}).filter(a=>null!==a).sort(g)[0];return i?{effect:i.rule.effect,reason:i.rule.reason??`Matched permission rule for ${i.rule.op} on ${i.rule.path}`,rule:i.rule}:{effect:"allow",reason:"Default allow"}}function i(a){var b;return a&&"object"==typeof a&&"string"==typeof a.actor&&a.actor.trim()&&"string"==typeof a.op&&a.op.trim()&&"string"==typeof a.path&&a.path.trim()?"allow"!==(b=a.effect)&&"deny"!==b&&"ask"!==b?null:{actor:a.actor.trim(),op:a.op.trim(),path:a.path.trim(),effect:a.effect,reason:"string"==typeof a.reason&&a.reason.trim()?a.reason.trim():void 0}:null}function j(a){if(!a)return[];try{let b=JSON.parse(a);if(!Array.isArray(b))return[];return b.map(i).filter(a=>null!==a)}catch{return[]}}},22763:()=>{},39741:(a,b,c)=>{"use strict";function d(a,b,c,d,e,f){return{path:a,webRouteFile:`packages/web/app${a}/route.ts`,owner:b,adapter:c,phase:d,risk:e,residualRisk:f}}c.d(b,{Ig:()=>eb,GO:()=>ah,FV:()=>aj,jU:()=>av,kS:()=>aw,GN:()=>ax,Jz:()=>au,PZ:()=>at,Se:()=>aO,nT:()=>aM,JO:()=>aN,A0:()=>aP,o0:()=>aQ,Ac:()=>aR,u4:()=>aU,xE:()=>aS,RS:()=>aT,TF:()=>X,wF:()=>bo,oU:()=>_,Pq:()=>Z,Jj:()=>$,pe:()=>b0,TL:()=>bp,au:()=>bN,YO:()=>bO,_2:()=>bu,hc:()=>bP,qe:()=>bm,vD:()=>bk,Yz:()=>bi,px:()=>bj,eu:()=>bU,mN:()=>bV,T:()=>by,x5:()=>bz,aT:()=>b$,v1:()=>cd,fn:()=>b_,DR:()=>ci,tk:()=>cj,YN:()=>cp,eo:()=>cv,Jc:()=>ct,iy:()=>cu,Bn:()=>cB,L0:()=>cz,Zh:()=>cA,fx:()=>cJ,L2:()=>cO,e2:()=>cK,sS:()=>cX,dT:()=>cV,hN:()=>cW,bk:()=>cl,ts:()=>dg,X5:()=>dx,Kb:()=>db,h3:()=>dz,XC:()=>dE,zq:()=>dI,Wo:()=>dw,VD:()=>dd,fW:()=>c_,nx:()=>dK,nW:()=>dL,mm:()=>eS,RX:()=>dM,hU:()=>dN,Ei:()=>dQ,Cr:()=>dU,aq:()=>dR,gt:()=>dS,P2:()=>d_,dv:()=>ed,Dm:()=>d6,eA:()=>ea,sv:()=>en,Vf:()=>ee,g:()=>ep,QG:()=>eo,JD:()=>eq,tv:()=>er,I3:()=>eu,uk:()=>ez,CD:()=>eA,LL:()=>eN,Ph:()=>d5,I8:()=>eR,EL:()=>eT,mk:()=>eQ,f$:()=>e$,vd:()=>e_,gO:()=>i,Sj:()=>ch,Ut:()=>ec});let e=(a,b="low")=>d(a,"product-owned","next-response","Phase 1: migrated Product Server adapter",b,"No residual product ownership expected; this route should remain a thin Next adapter."),f=(a,b,c,e)=>d(a,"optional-capability","optional-capability",b,c,e),g=(a,b,c="medium")=>d(a,"host-owned","host","Host-owned",c,b);[e("/api/a2a/agents","medium"),e("/api/a2a/delegations","medium"),e("/api/a2a/discover","medium"),e("/api/a2a","medium"),e("/api/acp/config","high"),e("/api/acp/detect","medium"),e("/api/acp/install","high"),e("/api/acp/registry","medium"),e("/api/acp/session","high"),e("/api/agent-activity"),e("/api/agents/copy-skill","high"),e("/api/agents/custom/detect","medium"),e("/api/agents/custom","high"),e("/api/ask-sessions"),d("/api/ask","product-owned","stream","Phase 6: generated client and stream adapter","high","Ask is mostly Product runtime-owned through session and agent modules, but the streaming Web route still owns host assembly and should become a generated stream adapter."),g("/api/auth","Auth cookie/session handling is host-specific today; Product Server will need an auth context adapter before direct HTTP exposure.","high"),e("/api/backlinks"),e("/api/bootstrap"),e("/api/changes"),e("/api/channels/verify","medium"),e("/api/connect"),e("/api/embedding","medium"),f("/api/export","Phase 5: content ingestion optional capabilities","high","Export/archive logic carries heavy dependencies and filesystem writes that need optional capability packaging."),f("/api/extract-docx","Phase 5: content ingestion optional capabilities","high","DOCX extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/extract-pdf","Phase 5: content ingestion optional capabilities","high","PDF extraction should be Product-owned but lazy-loaded so parser dependencies do not inflate the default package."),f("/api/file/import","Phase 5: content ingestion optional capabilities","high","File import is a content-ingestion write path and needs capability-level size limits, conflict checks, and rollback."),e("/api/file/raw"),e("/api/file","high"),e("/api/files"),e("/api/git"),e("/api/graph"),e("/api/health"),e("/api/im/activity","medium"),e("/api/im/config","high"),g("/api/im/feishu/long-connection/event","Raw long-connection event delivery is host-specific, but event parsing and state updates should stay behind Product protocol handlers.","medium"),e("/api/im/feishu/long-connection","high"),e("/api/im/status","medium"),e("/api/im/test","medium"),e("/api/im/webhook-status","medium"),g("/api/im/webhook/feishu","Raw inbound Feishu webhook receipt is host-owned, while signature verification and state writes should move to Product protocol handlers.","high"),f("/api/inbox/clip","Phase 5: content ingestion optional capabilities","high","Inbox clipping is still Web-owned ingestion and needs optional capability packaging plus fetch timeout and content limits."),e("/api/inbox","medium"),e("/api/init","high"),f("/api/lint","Phase 5: content ingestion optional capabilities","medium","Knowledge linting remains Web-owned and should become an optional Product capability with bounded filesystem traversal."),e("/api/mcp/agents","high"),e("/api/mcp/direct-tools","medium"),e("/api/mcp/install-skill","high"),e("/api/mcp/install","high"),e("/api/mcp/restart","high"),e("/api/mcp/status"),e("/api/mcp/tools","medium"),e("/api/mcp/uninstall","high"),e("/api/monitoring","medium"),f("/api/obsidian-plugins/settings","Phase 5: content ingestion optional capabilities","medium","Obsidian plugin settings remain Web-owned and should be modeled as an optional Product compatibility capability."),f("/api/obsidian/compat-report","Phase 5: content ingestion optional capabilities","medium","Obsidian compatibility reporting remains Web-owned and should use optional capability diagnostics."),f("/api/obsidian/import","Phase 5: content ingestion optional capabilities","high","Obsidian import remains a Web-owned bulk write path and needs optional capability size limits and rollback."),e("/api/recent-files"),e("/api/restart","high"),e("/api/search/prewarm"),e("/api/search"),e("/api/settings/list-models","medium"),e("/api/settings/reset-token","high"),e("/api/settings","medium"),e("/api/settings/test-key","medium"),e("/api/setup/check-path","medium"),e("/api/setup/check-port","medium"),e("/api/setup/generate-token","medium"),e("/api/setup/ls","medium"),e("/api/setup","high"),e("/api/skills","high"),e("/api/space-overview"),e("/api/sync","high"),e("/api/tree-version"),e("/api/uninstall","high"),e("/api/update-check"),e("/api/update-status"),e("/api/update","high"),e("/api/workflows","medium")].map(a=>[a.path,a]);let h={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With"};function i(a,b={}){return{status:b.status??200,body:a,headers:b.headers}}function j(a){return{status:204,headers:a}}function k(a,b){return{"Cache-Control":`public, max-age=${a}`,...b?{ETag:b}:{}}}function l(a){return{"Cache-Control":`private, max-age=${a}`}}function m(a,b=500){return i({error:a instanceof Error?a.message:String(a||"Unknown error")},{status:b})}var n=c(51455),o=c(73024),p=c(76760),q=c(58569);function r(a){return{ok:!0,value:a}}function s(a){return{ok:!1,error:a}}var t=c(77598),u=c(64770);class v{constructor(a){this.logger=a}async readFile(a,b="utf-8"){try{let c=await (0,n.readFile)(a,b);return this.logger?.debug(`Read file: ${a}`),r(c)}catch(b){return this.logger?.error(`Failed to read file: ${a}`,b),s((0,u.$5)("FILE_READ_ERROR",`Failed to read file: ${a}`,{cause:b}))}}async writeFile(a,b,c="utf-8"){try{let d=(0,p.dirname)(a);return await (0,n.mkdir)(d,{recursive:!0}),await (0,n.writeFile)(a,b,c),this.logger?.debug(`Wrote file: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to write file: ${a}`,b),s((0,u.$5)("FILE_WRITE_ERROR",`Failed to write file: ${a}`,{cause:b}))}}async exists(a){try{return await (0,n.access)(a,o.constants.F_OK),r(!0)}catch{return r(!1)}}async stat(a){try{let b=await (0,n.stat)(a),c={path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:b.isDirectory(),isFile:b.isFile()};return r(c)}catch(b){return this.logger?.error(`Failed to stat file: ${a}`,b),s((0,u.$5)("FILE_STAT_ERROR",`Failed to stat file: ${a}`,{cause:b}))}}async readdir(a){try{let b=(await (0,n.readdir)(a,{withFileTypes:!0})).map(b=>({name:b.name,path:(0,p.join)(a,b.name),isDirectory:b.isDirectory(),isFile:b.isFile()}));return r(b)}catch(b){return this.logger?.error(`Failed to read directory: ${a}`,b),s((0,u.$5)("DIRECTORY_READ_ERROR",`Failed to read directory: ${a}`,{cause:b}))}}async mkdir(a,b=!0){try{return await (0,n.mkdir)(a,{recursive:b}),this.logger?.debug(`Created directory: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to create directory: ${a}`,b),s((0,u.$5)("DIRECTORY_CREATE_ERROR",`Failed to create directory: ${a}`,{cause:b}))}}async remove(a,b=!1){try{return await (0,n.rm)(a,{recursive:b,force:!0}),this.logger?.debug(`Removed: ${a}`),r(void 0)}catch(b){return this.logger?.error(`Failed to remove: ${a}`,b),s((0,u.$5)("FILE_REMOVE_ERROR",`Failed to remove: ${a}`,{cause:b}))}}async copy(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.copyFile)(a,b),this.logger?.debug(`Copied: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to copy: ${a} -> ${b}`,c),s((0,u.$5)("FILE_COPY_ERROR",`Failed to copy: ${a} -> ${b}`,{cause:c}))}}async move(a,b){try{let c=(0,p.dirname)(b);return await (0,n.mkdir)(c,{recursive:!0}),await (0,n.rename)(a,b),this.logger?.debug(`Moved: ${a} -> ${b}`),r(void 0)}catch(c){return this.logger?.error(`Failed to move: ${a} -> ${b}`,c),s((0,u.$5)("FILE_MOVE_ERROR",`Failed to move: ${a} -> ${b}`,{cause:c}))}}async watch(a,b,c){try{let d=(0,q.wB)(a,{ignored:b.ignored,persistent:b.persistent??!0,ignoreInitial:b.ignoreInitial??!0,depth:b.depth});d.on("add",(a,b)=>{c({type:"add",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("change",(a,b)=>{c({type:"change",path:a,stats:b?{path:a,size:b.size,createdAt:b.birthtime,modifiedAt:b.mtime,isDirectory:!1,isFile:!0}:void 0})}).on("unlink",a=>{c({type:"unlink",path:a})}).on("addDir",a=>{c({type:"addDir",path:a})}).on("unlinkDir",a=>{c({type:"unlinkDir",path:a})}),this.logger?.info(`Started watching: ${a}`);let e=()=>{d.close(),this.logger?.info(`Stopped watching: ${a}`)};return r(e)}catch(b){return this.logger?.error(`Failed to watch: ${a}`,b),s((0,u.$5)("FILE_WATCH_ERROR",`Failed to watch: ${a}`,{cause:b}))}}}var w=c(96081),x=c(33873);function y(a){return{ok:!0,value:a}}function z(a){return{ok:!1,error:a}}let A=".mindos";function B(){return new Date().toISOString()}function C(a,b){return(0,o.existsSync)(a)?(0,w.n2)(a,b):x.join(a,b)}function D(a){return C(a,x.posix.join(A,"change-log.json"))}function E(){return{version:1,lastSeenAt:null,events:[],legacy:{agentDiffImportedCount:0,lastImportedAt:null}}}function F(a){return"string"!=typeof a?{value:void 0,truncated:!1}:a.length<=12e3?{value:a,truncated:!1}:{value:a.slice(0,12e3),truncated:!0}}async function G(a,b){let c;try{c=D(b)}catch{return E()}let d=await a.exists(c);if(!d.ok||!d.value)return E();let e=await a.readFile(c);if(!e.ok)return E();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return E();return{version:1,lastSeenAt:"string"==typeof a.lastSeenAt?a.lastSeenAt:null,events:a.events,legacy:{agentDiffImportedCount:"number"==typeof a.legacy?.agentDiffImportedCount?a.legacy.agentDiffImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return E()}}async function H(a,b,c){let d;try{d=D(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid change log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}async function I(a,b,c){let d;try{d=C(b,"Agent-Diff.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-diff\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{let a=JSON.parse(b[1].trim());c.push(a)}catch{}return c}(f.value),h=c.legacy?.agentDiffImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>{let c=F(a.before),d=F(a.after),e="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",f="string"==typeof a.path&&a.path.trim()?a.path:"Agent-Diff.md";return{id:`legacy-${Date.now().toString(36)}-${b.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),op:"legacy_agent_diff_import",path:f,source:"agent",summary:`Imported legacy agent diff (${e})`,before:c.value,after:d.value,truncated:c.truncated||d.truncated||void 0}}),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()),k={...c,events:j.slice(0,500),legacy:{agentDiffImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function J(a,b){let c=await G(a,b),d=await I(a,b,c);return((c.legacy?.agentDiffImportedCount??0)!==(d.legacy?.agentDiffImportedCount??0)||c.events.length!==d.events.length)&&await H(a,b,d),d}async function K(a,b,c={}){let d=await J(a,b),e=Math.max(1,Math.min(c.limit??50,200)),f=c.path?.trim(),g=c.source,h=c.op?.trim(),i=c.q?.trim().toLowerCase();return y(d.events.filter(a=>(!f||a.path===f||a.beforePath===f||a.afterPath===f)&&(!g||a.source===g)&&(!h||a.op===h)&&(!i||!!`${a.path} ${a.beforePath??""} ${a.afterPath??""} ${a.summary} ${a.op} ${a.source}`.toLowerCase().includes(i))&&!0).slice(0,e))}async function L(a,b){let c=await J(a,b);return c.lastSeenAt=B(),await H(a,b,c)}async function M(a,b){let c=await J(a,b),d=c.lastSeenAt?new Date(c.lastSeenAt).getTime():0;return y({unreadCount:c.events.filter(a=>new Date(a.ts).getTime()>d).length,totalCount:c.events.length,lastSeenAt:c.lastSeenAt,latest:c.events[0]??null})}function N(){return{version:1,events:[],legacy:{mdImportedCount:0,jsonlImportedCount:0,lastImportedAt:null}}}function O(a){return C(a,x.posix.join(A,"agent-audit-log.json"))}async function P(a,b){let c;try{c=O(b)}catch{return N()}let d=await a.exists(c);if(!d.ok||!d.value)return N();let e=await a.readFile(c);if(!e.ok)return N();try{let a=JSON.parse(e.value);if(!Array.isArray(a.events))return N();return{version:1,events:a.events,legacy:{mdImportedCount:"number"==typeof a.legacy?.mdImportedCount?a.legacy.mdImportedCount:0,jsonlImportedCount:"number"==typeof a.legacy?.jsonlImportedCount?a.legacy.jsonlImportedCount:0,lastImportedAt:"string"==typeof a.legacy?.lastImportedAt?a.legacy.lastImportedAt:null}}}catch{return N()}}async function Q(a,b,c){let d;try{d=O(b)}catch(a){return z((0,u.$5)("VALIDATION_ERROR","Access denied: invalid audit log path",{context:{mindRoot:b},cause:a}))}let e=x.dirname(d),f=await a.mkdir(e,!0);return f.ok?await a.writeFile(d,JSON.stringify(c,null,2)):z(f.error)}function R(a,b,c){let d="string"==typeof a.tool&&a.tool.trim()?a.tool.trim():"unknown-tool",e="error"===a.result?"error":"ok",f=a.params&&"object"==typeof a.params?a.params:{};return{id:`legacy-${Date.now().toString(36)}-${c.toString(36)}`,ts:function(a){if(!a)return B();let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():B()}(a.ts),tool:d,params:f,result:e,message:function(a){if("string"==typeof a)return a.length<=2e3?a:a.slice(0,2e3)}(a.message),durationMs:"number"==typeof a.durationMs?a.durationMs:void 0,op:b}}async function S(a,b,c){let d;try{d=C(b,"Agent-Audit.md")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b,c=[],d=/```agent-op\s*\n([\s\S]*?)```/g;for(;null!==(b=d.exec(a));)if(b[1])try{c.push(JSON.parse(b[1].trim()))}catch{}return c}(f.value),h=c.legacy?.mdImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_audit_md_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:g.length,jsonlImportedCount:c.legacy?.jsonlImportedCount??0,lastImportedAt:B()}};return await a.remove(d),k}async function T(a,b,c){let d;try{d=C(b,".agent-log.json")}catch{return c}let e=await a.exists(d);if(!e.ok||!e.value)return c;let f=await a.readFile(d);if(!f.ok)return c;let g=function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{b.push(JSON.parse(a))}catch{}}return b}(f.value),h=c.legacy?.jsonlImportedCount??0;if(g.length<=h)return g.length>0&&await a.remove(d),c;let i=g.slice(h).map((a,b)=>R(a,"legacy_agent_log_jsonl_import",b)),j=[...c.events,...i].sort((a,b)=>new Date(b.ts).getTime()-new Date(a.ts).getTime()).slice(0,1e3),k={...c,events:j,legacy:{mdImportedCount:c.legacy?.mdImportedCount??0,jsonlImportedCount:g.length,lastImportedAt:B()}};return await a.remove(d),k}async function U(a,b){let c=await P(a,b),d=await S(a,b,c),e=await T(a,b,d);return(c.events.length!==e.events.length||(c.legacy?.mdImportedCount??0)!==(e.legacy?.mdImportedCount??0)||(c.legacy?.jsonlImportedCount??0)!==(e.legacy?.jsonlImportedCount??0))&&await Q(a,b,e),e}async function V(a,b,c=100){let d=await U(a,b),e=Math.max(1,Math.min(c,1e3));return y(d.events.slice(0,e))}function W(a,b){if(!a)return;if(a instanceof URLSearchParams)return a.get(b)??void 0;let c=a[b];return Array.isArray(c)?c[0]:c}async function X(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,500)):10,f=await V(new v,b.mindRoot,e);return f.ok?i({events:f.value},{headers:l(30)}):i({error:f.error.message},{status:500})}var Y=c(48161);function Z(a={}){return i(ab(aa(a)))}function $(a,b={}){let c=a?.session;if(!ad(c))return i({error:"Invalid session payload"},{status:400});let d=aa(b),e=ab(d),f=e.findIndex(a=>a.id===c.id);return f>=0?e[f]=c:e.push(c),e.sort((a,b)=>ae(b)-ae(a)),ac(d,e),i({ok:!0})}function _(a,b={}){let c=Array.isArray(a?.ids)?a.ids.filter(a=>"string"==typeof a&&a.length>0):"string"==typeof a?.id&&a.id.length>0?[a.id]:[];if(0===c.length)return i({error:"id or ids is required"},{status:400});let d=aa(b),e=new Set(c);return ac(d,ab(d).filter(a=>!e.has(a.id))),i({ok:!0})}function aa(a){return a.storePath??(0,p.join)((0,Y.homedir)(),".mindos","sessions.json")}function ab(a){try{if(!(0,o.existsSync)(a))return[];let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if(!Array.isArray(b))return[];return b.filter(ad).sort((a,b)=>ae(b)-ae(a)).slice(0,30)}catch{return[]}}function ac(a,b){(0,o.mkdirSync)((0,p.dirname)(a),{recursive:!0}),(0,o.writeFileSync)(a,JSON.stringify(b.slice(0,30),null,2),"utf-8")}function ad(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&Array.isArray(a.messages))}function ae(a){return"number"==typeof a.updatedAt?a.updatedAt:0}c(37067),c(73136);let af=new Set([".md",".csv",".json",".pdf",".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".mp3",".wav",".m4a",".ogg",".flac",".aac",".mp4",".webm",".mov",".mkv"]),ag=new Set([".git","node_modules","app",".next",".DS_Store",".media","mcp"]);function ah(a={}){let b=a.env??process.env,c=a.homeDir??(0,Y.homedir)();return function(a){if(a.readSettings)try{return a.readSettings()}catch{return{}}try{let b=a.homeDir??(0,Y.homedir)(),c=(0,o.readFileSync)((0,p.join)(b,".mindos","config.json"),"utf-8"),d=JSON.parse(c);if(d&&"object"==typeof d)return d}catch{}return{}}(a).mindRoot||b.MIND_ROOT||(0,p.join)(c,"MindOS","mind")}function ai(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[];return function a(b,c,d,e={}){let f=!0===e.includeDirectories,g=!1!==e.includeFiles;for(let h of(0,o.readdirSync)(c,{withFileTypes:!0})){if(h.isDirectory()&&ag.has(h.name))continue;let i=(0,p.join)(c,h.name),j=(0,p.relative)(b,i).split("\\").join("/");if(h.isDirectory()){f&&d(i,j,h),a(b,i,d,e);continue}g&&h.isFile()&&d(i,j,h)}}(b,b,(a,b)=>{af.has((0,p.extname)(a).toLowerCase())&&c.push(b)}),c.sort((a,b)=>a.localeCompare(b)),c}function aj(a){let b=a.homeDir??(0,Y.homedir)(),c=a.runtimeRoot?(0,p.resolve)(a.runtimeRoot):process.cwd(),d=a.settings??{},e=[{path:(0,p.join)(c,"packages","web","data","skills"),source:"builtin",origin:"app-builtin",editable:!1},{path:(0,p.join)(c,"skills"),source:"builtin",origin:"project-builtin",editable:!1},{path:(0,p.join)(a.mindRoot,".skills"),source:"user",origin:"mindos-user",editable:!0},{path:(0,p.join)(b,".mindos","skills"),source:"user",origin:"mindos-global",editable:!0}];for(let a of(d.skillPaths?.enableAgentsDir!==!1&&e.push({path:(0,p.join)(b,".agents","skills"),source:"user",origin:"agents-global",editable:!0}),Array.isArray(d.skillPaths?.custom)?d.skillPaths.custom:[])){if("string"!=typeof a)continue;let b=a.trim();b&&e.push({path:b,source:"user",origin:"custom",editable:!0})}return e}function ak(a){return"darwin"===process.platform?a.darwin:"win32"===process.platform?`${(process.env.APPDATA||(0,p.join)((0,Y.homedir)(),"AppData","Roaming")).replace(/\\/g,"/").replace(/\/+$/,"")}/${a.win32}`:a.linux}ak({darwin:"~/Library/Application Support/Code/User",linux:"~/.config/Code/User",win32:"Code/User"}),ak({darwin:"~/Library/Application Support/Code",linux:"~/.config/Code",win32:"Code"}),ak({darwin:"~/Library/Application Support/Trae CN",linux:"~/.config/Trae CN",win32:"Trae CN"});let al={code:-32001,message:"Task not found"},am={code:-32002,message:"Task not cancelable"},an={code:-32700,message:"Parse error"},ao={code:-32600,message:"Invalid request"},ap={code:-32601,message:"Method not found"},aq={code:-32602,message:"Invalid params"},ar={code:-32603,message:"Internal error"},as={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, A2A-Version"};async function at(a,b={}){if((a.contentLength??0)>1e5)return ay(aA(null,{code:-32600,message:"Request too large (max 100000 bytes)"}),413);if(a.parseError)return ay(aA(null,an),400);let c=a.body&&"object"==typeof a.body?a.body:{};if("2.0"!==c.jsonrpc||"string"!=typeof c.method)return ay(aA(aB(c),ao),400);try{switch(c.method){case"SendMessage":{var d;let a;if(a=(d=c.params)&&"object"==typeof d?d.message:void 0,!Array.isArray(a?.parts)||!(a.parts.length>0))return ay(aA(aB(c),aq));let e=b.handleSendMessage??aD;return ay(az(aB(c),await e(c.params)))}case"GetTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let a=(b.handleGetTask??function(){return null})(c.params);if(!a)return ay(aA(aB(c),al));return ay(az(aB(c),a))}case"CancelTask":{if(!aC(c.params))return ay(aA(aB(c),aq));let{task:a,reason:d}=(b.handleCancelTask??function(){return{task:null,reason:"not_found"}})(c.params);if("not_found"===d)return ay(aA(aB(c),al));if("not_cancelable"===d)return ay(aA(aB(c),am));return ay(az(aB(c),a))}default:return ay(aA(aB(c),ap))}}catch(a){return ay(aA(aB(c),{...ar,data:a instanceof Error?a.message:String(a)}),500)}}function au(){return j(as)}function av(a={}){return i({agents:a.getDiscoveredAgents?.()??[]})}function aw(a={}){return i({delegations:a.getDelegationHistory?.()??[]})}async function ax(a,b={}){let c=a&&"object"==typeof a?a:{};if(!c.url||"string"!=typeof c.url)return i({error:"URL is required"},{status:400});let d=c.url.trim();if(!function(a){if(!a||a.length>2048)return!1;try{let b=new URL(a);if("http:"!==b.protocol&&"https:"!==b.protocol||b.username||b.password)return!1;return!!b.hostname}catch{return!1}}(d))return i({error:"Invalid URL",agent:null},{status:400});let e=b.discoverAgent??aE,f=await e(d);return f?i({agent:f}):i({error:"No A2A agent found",agent:null})}function ay(a,b=200){return i(a,{status:b,headers:as})}function az(a,b){return{jsonrpc:"2.0",id:a,result:b}}function aA(a,b){return{jsonrpc:"2.0",id:a,error:b}}function aB(a){return"string"==typeof a.id||"number"==typeof a.id?a.id:null}function aC(a){return!!(a&&"object"==typeof a&&"string"==typeof a.id&&a.id)}async function aD(){throw Error("A2A SendMessage service is not configured")}async function aE(){return null}var aF=c(31421),aG=c(75791);let aH=null;function aI(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function aJ(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!aI(a)}function aK(a,b="agentId"){let c=a&&"object"==typeof a?a[b]:void 0;if("string"!=typeof c)return null;let d=c.trim();return aJ(d)?d:null}function aL(a){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(a)&&!aI(a)}function aM(a){return i({agents:aW(a.readSettings().acpAgents)??{}})}function aN(a,b){let c=a&&"object"==typeof a?a:{},d=aK(c);if(!d)return i({error:"agentId is required"},{status:400});let e=b.readSettings(),f={...aW(e.acpAgents)??{}},g=aV(c.config);return g&&(f[d]=g),b.writeSettings({...e,acpAgents:f}),i({ok:!0,agents:f})}function aO(a,b){let c=aK(a&&"object"==typeof a?a:{});if(!c)return i({error:"agentId is required"},{status:400});let d=b.readSettings(),e={...aW(d.acpAgents)??{}};delete e[c];let f=Object.keys(e).length>0?{...d,acpAgents:e}:{...d,acpAgents:void 0};return b.writeSettings(f),i({ok:!0,agents:f.acpAgents??{}})}async function aP(a,b={}){try{let c="1"===a.get("force"),d=b.now?.()??Date.now();if(!c&&aH&&d-aH.ts<18e5)return i(aH.data);let e=b.detectLocalAcpAgents??aG.Tn,f=await e({overrides:function(a){try{let b=a.readSettings?.();return aW(b?.acpAgents)}catch{return}}(b)});return aH={data:f,ts:d},i(f)}catch(a){return m(a)}}async function aQ(a,b={}){try{let c,d=a&&"object"==typeof a?a:{},e=aK(d);if(!e||!d.packageName||"string"!=typeof d.packageName)return i({error:"agentId and packageName are required"},{status:400});if(c=d.packageName.trim(),!(!(0===c.length||c.length>214||c.includes("\\"))&&/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i.test(c)))return i({error:"Invalid package name"},{status:400});let f=b.installPackage??aX;return i(await f(e,d.packageName))}catch(a){return m(a)}}async function aR(a,b={}){try{let c=a.get("agent");if(c){if(!aJ(c.trim()))return i({error:"Invalid agent id",agent:null},{status:400});let a=b.findAcpAgent??aG.l3,d=await a(c.trim());if(!d)return i({error:"Agent not found",agent:null},{status:404});return i({agent:d})}let d=b.fetchAcpRegistry??aG.Ew,e=await d();if(!e)return i({error:"Failed to fetch registry",registry:null},{status:502});return i({registry:e})}catch(a){return m(a)}}function aS(a={}){try{return i({sessions:(a.getActiveSessions??aG.EF)()})}catch(a){return m(a)}}async function aT(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"create";switch(d){case"create":return await aY(c,b);case"load":return await aZ(c,b);case"prompt":return await a$(c,b);case"cancel":return await a_(c,b);case"set_mode":return await a0(c,b);case"set_config":return await a1(c,b);case"list_sessions":return await a2(c,b);default:return i({error:`Unknown action: ${d}`},{status:400})}}catch(d){var c;let a,b;return b=(a=(c=d)instanceof Error?c.message:String(c||"Unknown error")).includes("not found")?404:a.includes("not support")?501:500,i({error:a},{status:b})}}async function aU(a,b={}){try{let c=a3(a,"sessionId");if(!c)return i({error:"sessionId is required"},{status:400});if(!(b.getSession??aG.Ht)(c))return i({error:"Session not found"},{status:404});return await (b.closeSession??aG.Vu)(c),i({ok:!0})}catch(a){return m(a)}}function aV(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={};if("string"==typeof a.command&&a.command.trim()&&(b.command=a.command.trim()),Array.isArray(a.args)&&(b.args=a.args.filter(a=>"string"==typeof a)),a.env&&"object"==typeof a.env&&!Array.isArray(a.env)){let c={};for(let[b,d]of Object.entries(a.env))"string"==typeof d&&aL(b)&&(c[b]=d);Object.keys(c).length>0&&(b.env=c)}return"boolean"==typeof a.enabled&&(b.enabled=a.enabled),b}function aW(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a)){if(!aJ(c))continue;let a=aV(d);a&&(b[c]=a)}return Object.keys(b).length>0?b:void 0}async function aX(a,b){let c=function(a,b={}){if("win32"!==(b.platform??process.platform))return{command:"npm",args:a};let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&(b.npm_execpath.endsWith("npm-cli.js")?d.add(b.npm_execpath):d.add((0,p.join)((0,p.dirname)(b.npm_execpath),"npm-cli.js")));let e=(0,p.dirname)(a);for(let a of(d.add((0,p.join)(e,"node_modules","npm","bin","npm-cli.js")),d.add((0,p.resolve)(e,"..","lib","node_modules","npm","bin","npm-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??o.existsSync);if(!e)throw Error("Unable to locate npm-cli.js for shell-free ACP package installation on Windows");return{command:d,args:[e,...a]}}(["install","-g",b]);return(0,aF.execFile)(c.command,c.args,{timeout:12e4}).unref(),{status:"installing",agentId:a,packageName:b}}async function aY(a,b){let c=aK(a);if(!c)return i({error:"agentId is required"},{status:400});let d={env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0},e=b.createSession??aG.jw,f=await e(c,d),g="string"==typeof a.prompt?a.prompt:void 0;if(!g)return i({session:f});let h=b.prompt??aG.J1,j=b.closeSession??aG.Vu;try{let a=await h(a5(f),g);return await j(a5(f)).catch(()=>{}),i({session:f,response:a})}catch(a){return await j(a5(f)).catch(()=>{}),m(a)}}async function aZ(a,b){let c=aK(a),d=a3(a,"sessionId");return c?d?i({session:await (b.loadSession??aG.L6)(c,d,{env:a4(a.env),cwd:"string"==typeof a.cwd?a.cwd:void 0})}):i({error:"sessionId is required"},{status:400}):i({error:"agentId is required"},{status:400})}async function a$(a,b){let c=a3(a,"sessionId"),d=a3(a,"text");return c?d?i({response:await (b.prompt??aG.J1)(c,d)}):i({error:"text is required"},{status:400}):i({error:"sessionId is required"},{status:400})}async function a_(a,b){let c=a3(a,"sessionId");return c?(await (b.cancelPrompt??aG.zl)(c),i({ok:!0})):i({error:"sessionId is required"},{status:400})}async function a0(a,b){let c=a3(a,"sessionId"),d=a3(a,"modeId");return c&&d?(await (b.setMode??aG.iY)(c,d),i({ok:!0})):i({error:"sessionId and modeId are required"},{status:400})}async function a1(a,b){let c=a3(a,"sessionId"),d=a3(a,"configId");return c&&d&&void 0!==a.value?i({configOptions:await (b.setConfigOption??aG.Et)(c,d,String(a.value))}):i({error:"sessionId, configId, and value are required"},{status:400})}async function a2(a,b){let c=a3(a,"sessionId");return c?i(await (b.listSessions??aG.GW)(c,{cursor:"string"==typeof a.cursor?a.cursor:void 0,cwd:"string"==typeof a.cwd?a.cwd:void 0})):i({error:"sessionId is required"},{status:400})}function a3(a,b){let c=a&&"object"==typeof a?a[b]:void 0;return"string"==typeof c&&c?c:void 0}function a4(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&aL(c)&&(b[c]=d);return Object.keys(b).length>0?b:void 0}function a5(a){if(a&&"object"==typeof a&&"string"==typeof a.id)return a.id;throw Error("ACP session response did not include an id")}let a6=["mindos","claude-code","cursor","windsurf","cline","trae","gemini-cli","openclaw","codebuddy","iflow-cli","kimi-cli","opencode","pi","augment","qwen-code","qoder","trae-cn","roo","github-copilot","codex","antigravity","qclaw","workbuddy","lingma","copaw","hermes"];function a7(a){return a.toLowerCase().replace(/[^\x20-\x7E]/g,"").replace(/[_\s]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-{2,}/g,"-").replace(/^-|-$/g,"")||""}function a8(a){return a.endsWith("/")||a.endsWith("\\")?a:`${a}/`}function a9(a,b){return`${a8(a)}${b}`}function ba(a){return!!(a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||"win32"===process.platform&&(/^[A-Z]:[\\/]/i.test(a)||a.startsWith("\\\\")))}function bb(a){return a.split(/[\\/]+/).includes("..")}function bc(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function bd(a){return/^[a-z0-9][a-z0-9-]*$/.test(a)&&!bc(a)}function be(a,b){let c=a.split(".");return 0===c.length||c.some(a=>!a.trim()||bc(a.trim()))?`${b} contains an unsafe key`:null}function bf(a,b){let c=a.trim();return c?bb(c)?`${b} cannot contain parent directory segments`:ba(c)?null:`${b} must be an absolute path`:`${b} is required`}function bg(a){if(void 0!==a.key){if("string"!=typeof a.key)return"Agent key must be a string";if(!bd(a.key.trim()))return"Agent key must use lowercase letters, numbers, and hyphens only"}if(void 0!==a.format&&!["json","toml"].includes(String(a.format)))return'format must be "json" or "toml"';if(void 0!==a.preferredTransport&&!["stdio","http"].includes(String(a.preferredTransport)))return'preferredTransport must be "stdio" or "http"';if(void 0!==a.configKey){if("string"!=typeof a.configKey)return"configKey must be a string";let b=be(a.configKey.trim(),"configKey");if(b)return b}if(void 0!==a.globalNestedKey&&""!==a.globalNestedKey){if("string"!=typeof a.globalNestedKey)return"globalNestedKey must be a string";let b=be(a.globalNestedKey.trim(),"globalNestedKey");if(b)return b}for(let[c,d]of[["baseDir","baseDir"],["global","global"],["skillDir","skillDir"]]){var b;let e=(b=a[c],null==b||""===b?null:"string"!=typeof b?`${d} must be a string`:bf(b,d));if(e)return e}if(void 0!==a.presenceDirs){if(!Array.isArray(a.presenceDirs))return"presenceDirs must be an array";for(let b of a.presenceDirs){if("string"!=typeof b)return"presenceDirs must contain only strings";let a=bf(b,"presenceDirs");if(a)return a}}return void 0!==a.presenceCli&&""!==a.presenceCli&&"string"!=typeof a.presenceCli?"presenceCli must be a string":null}function bh(a){let b=a.customAgents;return Array.isArray(b)?b.filter(a=>null!=a&&"object"==typeof a&&"string"==typeof a.name&&"string"==typeof a.key&&"string"==typeof a.baseDir):[]}function bi(a,b){try{var c,d;let e,{name:f,baseDir:g,...h}=a;if(!f?.trim()||!g?.trim())return i({error:"name and baseDir are required"},{status:400});let j=b.readSettings(),k=bh(j),l=new Set(b.builtInAgentKeys??a6),m=new Set([...l,...k.map(a=>a.key)]),n=bg(h);if(n)return i({error:n},{status:400});let o="string"==typeof h.key&&h.key.trim()?h.key.trim():function(a,b){let c=a7(a);if(!c){let a=1;for(;b.has(`custom-${a}`);)a+=1;return`custom-${a}`}if(!b.has(c))return c;let d=2;for(;b.has(`${c}-${d}`);)d+=1;return`${c}-${d}`}(f.trim(),m),p=function(a,b,c,d=!1){if(!a.name?.trim())return"Agent name is required";if(!a.baseDir?.trim())return"Config directory is required";let e=a.baseDir.trim();if(bb(e))return"Config directory cannot contain parent directory segments";if(!ba(e))return"Must be an absolute path (e.g. ~/.qclaw/)";if(!d){let d=a.key||a7(a.name.trim());if(!d)return"Cannot generate a valid key from this name";if(!bd(d))return"Agent key must use lowercase letters, numbers, and hyphens only";if(c.has(d))return`Conflicts with built-in agent "${d}"`;if(b.has(d))return`An agent with key "${d}" already exists`}return null}({name:f,baseDir:g,key:o},m,l);if(p)return i({error:p},{status:400});let q={...(c=f.trim(),d=g.trim(),e=a8(d),{name:c,baseDir:e,global:a9(e,"mcp.json"),project:null,configKey:"mcpServers",format:"json",preferredTransport:"stdio",presenceDirs:[e],skillDir:a9(e,"skills/")}),key:o,...h.global&&{global:h.global},...void 0!==h.project&&{project:h.project},...h.configKey&&{configKey:h.configKey},...h.format&&{format:h.format},...h.preferredTransport&&{preferredTransport:h.preferredTransport},...h.presenceDirs&&{presenceDirs:h.presenceDirs},...h.presenceCli&&{presenceCli:h.presenceCli},...h.globalNestedKey&&{globalNestedKey:h.globalNestedKey},...h.skillDir&&{skillDir:h.skillDir}};return b.writeSettings({...j,customAgents:[...k,q]}),i({agent:q},{status:201})}catch(a){return m(a)}}function bj(a,b){try{let{key:c,...d}=a,e="string"==typeof c?c.trim():"";if(!e)return i({error:"key is required"},{status:400});if(!bd(e))return i({error:"Invalid agent key"},{status:400});let f=b.readSettings(),g=bh(f),h=g.findIndex(a=>a.key===e);if(-1===h)return i({error:`Custom agent "${e}" not found`},{status:404});let j=bg(d);if(j)return i({error:j},{status:400});let k=g[h];if(!k)return i({error:`Custom agent "${e}" not found`},{status:404});let l={...k,...d.name&&{name:d.name},...d.baseDir&&{baseDir:d.baseDir},...d.global&&{global:d.global},...void 0!==d.project&&{project:d.project},...d.configKey&&{configKey:d.configKey},...d.format&&{format:d.format},...d.preferredTransport&&{preferredTransport:d.preferredTransport},...void 0!==d.presenceCli&&{presenceCli:d.presenceCli||void 0},...void 0!==d.globalNestedKey&&{globalNestedKey:d.globalNestedKey||void 0},...void 0!==d.skillDir&&{skillDir:d.skillDir||void 0}};d.presenceDirs?l.presenceDirs=d.presenceDirs:d.baseDir&&(l.presenceDirs=[a8(d.baseDir)]),!d.skillDir&&d.baseDir&&(l.skillDir=a9(d.baseDir,"skills/"));let m=g.slice();return m[h]=l,b.writeSettings({...f,customAgents:m}),i({agent:l})}catch(a){return m(a)}}function bk(a,b){try{let{key:c}=a;if(!c)return i({error:"key is required"},{status:400});let d=b.readSettings(),e=bh(d),f=e.filter(a=>a.key!==c);if(f.length===e.length)return i({error:`Custom agent "${c}" not found`},{status:404});return b.writeSettings({...d,customAgents:f}),i({removed:c})}catch(a){return m(a)}}function bl(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function bm(a,b={}){try{if(!a.baseDir?.trim())return i({error:"baseDir is required"},{status:400});let c=a.baseDir.trim();if(!ba(c))return i({error:"baseDir must be an absolute path (e.g. ~/.qclaw/)"},{status:400});let d=function(a,b=(0,Y.homedir)()){let c,d=bl(a,b);if(!(0,o.existsSync)(d)){let a=(0,p.basename)(d.replace(/[\\/]+$/,""));return{exists:!1,hasSkillsDir:!1,suggestedName:a.charAt(0).toUpperCase()+a.slice(1)}}let e={exists:!0,hasSkillsDir:!1},f=(0,p.basename)(d.replace(/[\\/]+$/,""));e.suggestedName=f.charAt(0).toUpperCase()+f.slice(1);let g=(0,p.join)(d,"skills");if((0,o.existsSync)(g)){e.hasSkillsDir=!0,e.detectedSkillDir=a9(a,"skills/");try{let a=(0,o.readdirSync)(g,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b));e.skillCount=a.length,e.skillNames=a}catch{e.skillCount=0}}try{c=(0,o.readdirSync)(d).slice(0,20)}catch{return e}for(let b of c){if(!b.endsWith(".json"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;let f=JSON.parse((0,o.readFileSync)(c,"utf-8"));if("mcpServers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="mcpServers",e;if("servers"in f)return e.detectedConfig=a9(a,b),e.detectedFormat="json",e.detectedConfigKey="servers",e}catch{}}for(let b of c){if(!b.endsWith(".toml"))continue;let c=(0,p.join)(d,b);try{let d=(0,o.statSync)(c);if(!d.isFile()||d.size>1e6)continue;for(let d of(0,o.readFileSync)(c,"utf-8").split("\n").slice(0,50))if(/^\s*\[mcp_servers/i.test(d)||/^\s*\[mcpServers/i.test(d)){let c=d.toLowerCase();return e.detectedConfig=a9(a,b),e.detectedFormat="toml",e.detectedConfigKey=c.includes("mcp_servers")?"mcp_servers":"mcpServers",e}}catch{}}return e}(c,b.homeDir);if(d.detectedConfig&&d.detectedConfigKey){let a=function(a,b,c,d=(0,Y.homedir)()){let e=bl(a,d),f=bl(b,d),g=b.toLowerCase().endsWith(".toml")?"toml":"json",h={mcpServers:[],skillNames:[],skillDir:"",configFormat:g};if((0,o.existsSync)(f))try{let a=(0,o.readFileSync)(f,"utf-8");h.mcpServers="json"===g?function(a,b){try{let c,d=(!(c=(c=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a)).replace(/\/\*[\s\S]*?\*\//g,"")).trim()?{}:JSON.parse(c))[b];if(d&&"object"==typeof d)return Object.keys(d).sort((a,b)=>a.localeCompare(b))}catch{}return[]}(a,c):function(a,b){let c=new Set,d=a.split("\n"),e=`${b}.`;for(let a of d){let b=a.trim();if(!b.startsWith("[")||!b.endsWith("]"))continue;let d=b.slice(1,-1).trim();if(!d.startsWith(e))continue;let f=d.slice(e.length).split(".")[0]?.trim();f&&c.add(f)}return[...c].sort((a,b)=>a.localeCompare(b))}(a,c)}catch(a){h.parseError=`Failed to parse MCP config: ${a instanceof Error?a.message:"Unknown error"}`}let i=(0,p.join)(e,"skills");if(h.skillDir=a9(a,"skills/"),!(0,o.existsSync)(i))return h;try{h.skillNames=(0,o.readdirSync)(i,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{}return h}(c,d.detectedConfig,d.detectedConfigKey,b.homeDir);d.mcpServers=a.mcpServers,d.skillNames=a.skillNames,a.parseError&&(d.mcpParseError=a.parseError)}return i(d)}catch(a){return m(a)}}async function bn(a,b){for(let c of((0,o.mkdirSync)(b,{recursive:!0}),(0,o.readdirSync)(a,{withFileTypes:!0}))){let d=(0,p.join)(a,c.name),e=(0,p.join)(b,c.name);c.isDirectory()?await bn(d,e):c.isFile()&&(0,o.writeFileSync)(e,(0,o.readFileSync)(d))}}async function bo(a,b){try{if(!a.skillName?.trim())return i({error:"skillName is required"},{status:400});if(!a.targetPath?.trim())return i({error:"targetPath is required"},{status:400});let c=a.skillName.trim();if("."===c||".."===c||c.includes("/")||c.includes("\\"))return i({error:"Invalid skill name"},{status:400});let d=a.targetPath.trim();if(bb(d))return i({error:"Invalid target path"},{status:400});if(!ba(d))return i({error:"Target path must be absolute (starting with / or ~/)"},{status:400});let e=function(a,b){for(let c of b){let b=(0,p.join)(c.path,a);if((0,o.existsSync)(b))return b}return null}(c,b.skillRoots);if(!e)return i({error:`Skill "${c}" not found`},{status:404});let f=b.homeDir??(0,Y.homedir)(),g=bl(d,f).replace(/\/$/,""),h=(0,p.join)(g,c);if((0,o.existsSync)(h))return i({error:`Skill "${c}" already exists in target directory`},{status:409});return(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),await (b.copyDirectory??bn)(e,h),i({success:!0,skillName:c,targetPath:h})}catch(a){return m(a)}}function bp(a,b){var c;let d=a.get("target_dir")??void 0;if(d&&((c=d).split(/[\\/]+/).includes("..")||p.isAbsolute(c)||p.win32.isAbsolute(c)||c.includes("\\")))return i({error:"invalid target_dir"},{status:400});let e={instruction:bq(b,"INSTRUCTION.md"),index:bq(b,"README.md"),config_json:bq(b,"CONFIG.json"),user_skill_rules:bq(b,".mindos/user-preferences.md"),file_index:function(a,b={}){let c=b.maxDepth??2,d=b.maxFilesPerDir??15,e=[];for(let b of[...a].sort((a,b)=>a.localeCompare(b)))!function a(b,c){let[d,...e]=c;if(!d)return;if(0===e.length)return void b.push({name:d,type:"file"});let f=b.find(a=>"directory"===a.type&&a.name===d);f||(f={name:d,type:"directory",children:[]},b.push(f)),a(f.children??[],e)}(e,b.split("/").filter(Boolean));if(0===e.length)return"(empty knowledge base)";let f=[];return function a(b,e){let g=" ".repeat(e),h=b.filter(a=>"directory"===a.type),i=b.filter(a=>"file"===a.type);for(let b of h){let d=function a(b){let c=0;for(let d of b)"file"===d.type?c++:c+=a(d.children??[]);return c}(b.children??[]),h=1===d?"1 file":`${d} files`;f.push(`${g}${b.name}/ (${h})`),e<c&&a(b.children??[],e+1)}let j=i.slice(0,d);for(let a of j)f.push(`${g}${a.name}`);let k=i.length-j.length;k>0&&f.push(`${g}... (${k} more)`)}(e,0),f.join("\n")}(b.collectAllFiles())};return d&&(e.target_readme=bq(b,p.join(d,"README.md")),e.target_instruction=bq(b,p.join(d,"INSTRUCTION.md")),e.target_config_json=bq(b,p.join(d,"CONFIG.json"))),i(e,{headers:k(300,function(a){let b=0,c=JSON.stringify(a);for(let a=0;a<c.length;a++)b=(b<<5)-b+c.charCodeAt(a)|0;return`W/"${Math.abs(b).toString(16)}"`}(e))})}function bq(a,b){try{return a.readTextFile(b)}catch{return}}let br=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),bs={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},bt={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};async function bu(a,b={}){try{var c;let d=a&&"object"==typeof a?a:{},e=d.platform,f=d.credentials;if(!e||(c=e,!br.has(c)))return i({ok:!1,error:"Invalid platform"},{status:400});if(!f||"object"!=typeof f)return i({ok:!1,error:"Missing credentials"},{status:400});let g=function(a,b){if(!b||"object"!=typeof b)return{valid:!1,missing:["(no config)"]};let c=bs[a],d=bt[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(e,f);if(!g.valid)return i({ok:!1,error:`Missing required fields: ${g.missing?.join(", ")||"unknown"}`},{status:400});let h=b.verifyCredentials??bv,j=await h(e,f);if(!j.ok)return i({ok:!1,error:j.error||"Credential verification failed"},{status:401});return i({ok:!0,botName:j.botName,botId:j.botId})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:String(a)},{status:500})}}async function bv(){return{ok:!1,error:"Credential verifier is not configured"}}var bw=c(17409),bx=c(66451);function by(a,b){let c=W(a,"op")??"read_file";if("list_spaces"===c){var d;let a;return i({spaces:b.mindRoot?(d=b.mindRoot,a=(0,p.resolve)(d),(0,o.existsSync)(a)?(0,o.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>{var b;let c,e,f=a.name;return{name:a.name,path:f,fileCount:(b=(0,w.n2)(d,f),c=0,(e=a=>{for(let b of(0,o.readdirSync)(a,{withFileTypes:!0})){if(b.name.startsWith(".")||"node_modules"===b.name||b.isSymbolicLink())continue;let d=(0,p.join)(a,b.name);b.isDirectory()?e(d):c++}})(b),c),description:function(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,p.posix.join(b,"README.md")),"utf-8").split(/\r?\n/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("#"))[0]??""}catch{return""}}(d,f)}}).filter(a=>a.fileCount>0||a.description).sort((a,b)=>a.path.localeCompare(b.path)):[]):b.listSpaces()})}if("list_dirs"===c)return i({dirs:b.mindRoot?function(a){let b=(0,p.resolve)(a);if(!(0,o.existsSync)(b))return[];let c=[],d=a=>{for(let e of(0,o.readdirSync)(a,{withFileTypes:!0})){if(!e.isDirectory()||e.name.startsWith("."))continue;let f=(0,p.join)(a,e.name);c.push((0,p.relative)(b,f).split("\\").join("/")),d(f)}};return d(b),c.sort((a,b)=>a.localeCompare(b))}(b.mindRoot):b.listDirectories()});if("check_conflicts"===c)return function(a,b){let c=W(a,"names");if(!c)return i({error:"missing names"},{status:400});if(!b.mindRoot)return i({error:"MIND_ROOT not configured"},{status:400});try{let e=W(a,"space")??"",f=[];for(let a of c.split(",").map(a=>a.trim()).filter(Boolean)){var d;let c=function(a){let b=(0,p.extname)(a).toLowerCase();if(".md"===b||".csv"===b)return a;let c=b?a.slice(0,-b.length):a;return`${c||"untitled"}.md`}((d=a,(0,p.basename)(d).replace(/[<>:"|?*\x00-\x1f]/g,"_").trim())),g=e?p.posix.join(e,c):c;(0,o.existsSync)((0,w.n2)(b.mindRoot,g))&&f.push(a)}return i({conflicts:f})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}(a,b);let e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});try{if("read_lines"===c)return i({lines:b.readLines(e)});if("read_file"===c)return i({content:b.readTextFile(e)});return i({error:`Unknown op: ${c}`},{status:400})}catch(b){let a=b instanceof Error?b.message:String(b);if(/not found|ENOENT/i.test(a))return i({error:"File not found"},{status:404});if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}async function bz(a,b,c={}){var d,e,f,g;if(!a||"object"!=typeof a)return i({error:"Invalid JSON body"},{status:400});let h=(0,bx.aH)({hasAgentHeader:!!c.agentHeader,bodySource:a.source,headerSource:c.sourceHeader});try{let g=await (0,bx.XT)({body:a,source:h,actor:(0,bx.bt)(h,c.agentHeader),handlers:(d=b.mindRoot,{save_file:(a,b)=>(function(a,b,c){let d=bK(c.content,"content"),e=(0,w.n2)(a,b),f=bB(a,e);if("number"==typeof c.expectedMtime&&(0,o.existsSync)(e)&&(0,o.statSync)(e).mtimeMs>c.expectedMtime)return{response:i({error:"conflict",serverMtime:(0,o.statSync)(e).mtimeMs},{status:409}),changeEvent:null};let g=bH(a,b);return bE(e,d),{response:i({ok:!0,path:f,mtime:(0,o.statSync)(e).mtimeMs}),changeEvent:{op:"save_file",path:f,summary:"Updated file content",before:g,after:d}}})(d,a,b),create_file:(a,b)=>{var c,e,f;let g,h,j;return c=d,e=a,f=b,g=bA(f.content,""),h=(0,w.n2)(c,e),j=bB(c,h),(0,o.mkdirSync)((0,p.dirname)(h),{recursive:!0}),(0,o.writeFileSync)(h,g,{encoding:"utf-8",flag:"wx"}),{response:i({ok:!0,path:j,mtime:(0,o.statSync)(h).mtimeMs}),changeEvent:{op:"create_file",path:j,summary:"Created file",before:"",after:g}}},append_to_file:(a,b)=>(function(a,b,c){var d;let e=bK(c.content,"content");if(".agent-log.json"===b){for(let b of function(a){let b=[];for(let c of a.split("\n")){let a=c.trim();if(!(!a||a.startsWith("#")||a.startsWith("//")))try{let c=JSON.parse(a);b.push({ts:"string"==typeof c.ts?c.ts:new Date().toISOString(),tool:"string"==typeof c.tool&&c.tool.trim()?c.tool:"unknown-tool",params:c.params&&"object"==typeof c.params?c.params:{},result:"error"===c.result?"error":"ok",message:"string"==typeof c.message?c.message:void 0,durationMs:"number"==typeof c.durationMs?c.durationMs:void 0,agentName:"string"==typeof c.agentName?c.agentName:void 0})}catch{}}return b}(e))!function(a,b){let c=(0,w.n2)(a,".mindos/agent-audit-log.json"),d={version:1,events:[]};try{if((0,o.existsSync)(c)){let a=JSON.parse((0,o.readFileSync)(c,"utf-8"));Array.isArray(a.events)&&(d={version:1,events:a.events})}}catch{d={version:1,events:[]}}d.events.unshift({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,...b,op:"append"}),(0,o.mkdirSync)((0,p.dirname)(c),{recursive:!0}),(0,o.writeFileSync)(c,JSON.stringify(d,null,2),"utf-8")}(a,b);return{response:i({ok:!0,path:b}),changeEvent:null}}let f=bH(a,b),g=(0,w.n2)(a,b),h=bB(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,(d=g,((0,o.existsSync)(d)&&0!==(0,o.statSync)(d).size?(0,o.readFileSync)(d,"utf-8").endsWith("\n\n")?"":"\n":"")+e),"utf-8"),{response:i({ok:!0,path:h,mtime:(0,o.statSync)(g).mtimeMs}),changeEvent:{op:"append_to_file",path:h,summary:"Appended content to file",before:f,after:bH(a,h)}}})(d,a,b),insert_lines:(a,b)=>(function(a,b,c){let d=bL(c.after_index,"after_index"),e=bM(c.lines,"lines"),f=bH(a,b),g=bF(a,b),h=bC(a,b);if(d>=g.length)throw Error(`Invalid after_index: ${d} >= total lines (${g.length})`);return g.splice(d<0?0:d+1,0,...e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_lines",path:h,summary:`Inserted ${e.length} line(s)`,before:f,after:bH(a,h)}}})(d,a,b),update_lines:(a,b)=>(function(a,b,c){let d=bL(c.start,"start"),e=bL(c.end,"end"),f=bM(c.lines,"lines");if(d<0||e<0)throw Error("start/end must be >= 0");if(d>e)throw Error("start must be <= end");let g=bH(a,b),h=bF(a,b),j=bC(a,b);if(d>=h.length)throw Error(`Invalid line index: start (${d}) >= total lines (${h.length})`);return h.splice(d,e-d+1,...f),bG(a,j,h.join("\n")),{response:i({ok:!0,path:j}),changeEvent:{op:"update_lines",path:j,summary:`Updated lines ${d}-${e}`,before:g,after:bH(a,j)}}})(d,a,b),insert_after_heading:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=j+1;for(;k<g.length&&""===(g[k]??"").trim();)k++;return g.splice(k,0,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"insert_after_heading",path:h,summary:`Inserted content after heading "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),update_section:(a,b)=>(function(a,b,c){let d=bK(c.heading,"heading"),e=bK(c.content,"content"),f=bH(a,b),g=bF(a,b),h=bC(a,b),j=bI(g,d);if(-1===j)throw Error(`Heading not found: "${d}"`);let k=((g[j]??"").match(/^#+/)??[""])[0].length,l=g.length-1;for(let a=j+1;a<g.length;a++){let b=/^(#+)\s/.exec(g[a]??"");if((b?.[1]?.length??1/0)<=k){l=a-1;break}}for(;l>j&&""===(g[l]??"").trim();)l--;return g.splice(j+1,l-j,"",e),bG(a,h,g.join("\n")),{response:i({ok:!0,path:h}),changeEvent:{op:"update_section",path:h,summary:`Updated section "${d}"`,before:f,after:bH(a,h)}}})(d,a,b),delete_file:a=>(function(a,b){if(!b.includes("/")&&"TODO.md"===(0,p.basename)(b))return{response:i({error:`"${b}" is a protected file and cannot be deleted`},{status:403}),changeEvent:null};let c=(0,w.n2)(a,b),d=bB(a,c),e=bH(a,b),f=function(a,b){let c=(0,w.n2)(a,b);if(!(0,o.existsSync)(c))throw Error(`File not found: ${b}`);let d=(0,o.statSync)(c).isDirectory(),e=`${Date.now()}_${(0,p.basename)(b).replace(/[^a-zA-Z0-9._\-\u4e00-\u9fff]/g,"_")}`,f=bJ(a,".trash"),g=bJ(a,".trash-meta");(0,o.mkdirSync)(f,{recursive:!0}),(0,o.mkdirSync)(g,{recursive:!0});let h=(0,p.join)(f,e);try{(0,o.renameSync)(c,h)}catch(a){if("EXDEV"!==(a&&"object"==typeof a&&"code"in a?a.code:void 0))throw a;d?((0,o.cpSync)(c,h,{recursive:!0}),(0,o.rmSync)(c,{recursive:!0,force:!0})):((0,o.copyFileSync)(c,h),(0,o.unlinkSync)(c))}let i=new Date,j={id:e,originalPath:b,deletedAt:i.toISOString(),expiresAt:new Date(i.getTime()+2592e6).toISOString(),fileName:(0,p.basename)(b),isDirectory:d};return(0,o.writeFileSync)((0,p.join)(g,`${e}.json`),JSON.stringify(j,null,2),"utf-8"),j}(a,d);return{response:i({ok:!0,path:d,trashId:f.id}),changeEvent:{op:"delete_file",path:d,summary:"Moved to trash",before:e,after:""}}})(d,a),rename_file:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name");bD(d,"filename");let e=(0,w.n2)(a,b),f=bB(a,e),g=p.posix.join(p.posix.dirname(f),d),h=(0,w.eX)(a,g);if((0,p.dirname)(h)!==(0,p.dirname)(e))throw Error("Invalid filename: must stay in the same directory");if((0,o.existsSync)(h))throw Error("A file with that name already exists");let j=bH(a,b);(0,o.renameSync)(e,h);let k=bB(a,h);return{response:i({ok:!0,newPath:k}),changeEvent:{op:"rename_file",path:k,summary:`Renamed file to ${d}`,before:j,after:bH(a,k),beforePath:f,afterPath:k}}})(d,a,b),move_file:(a,b)=>(function(a,b,c){let d=bK(c.to_path??c.toPath??c.newPath,"to_path"),e=bH(a,b),f=(0,w.n2)(a,b),g=(0,w.n2)(a,d),h=bB(a,f),j=bB(a,g);if((0,o.existsSync)(g))throw Error(`Destination already exists: ${d}`);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.renameSync)(f,g),{response:i({ok:!0,path:j,newPath:j,affectedFiles:[]}),changeEvent:{op:"move_file",path:j,summary:`Moved file to ${j}`,before:e,after:bH(a,j),beforePath:h,afterPath:j}}})(d,a,b),create_space:(a,b)=>(function(a,b){let c=bK(b.name,"name").trim();bD(c,"name");let d="string"==typeof b.parent_path&&b.parent_path.trim()?b.parent_path.trim():"",e=d?p.posix.join(d,c):c,f=(0,w.n2)(a,e);if((0,o.existsSync)(f))throw Error("Space already exists");(0,o.mkdirSync)(f,{recursive:!0});let g=bB(a,f),h=bA(b.description,"");return(0,o.writeFileSync)((0,p.join)(f,"INSTRUCTION.md"),`# ${c}
2
2
 
3
3
  ${h}
4
4
  `,"utf-8"),(0,o.writeFileSync)((0,p.join)(f,"README.md"),`# ${c}
5
5
 
6
6
  ${h}
7
- `,"utf-8"),{response:i({ok:!0,path:g}),changeEvent:{op:"create_space",path:g,summary:"Created space",before:"",after:h}}})(d,b),rename_space:(a,b)=>(function(a,b,c){let d=bJ(c.new_name,"new_name").trim();bC(d,"space name");let e=(0,w.n2)(a,b);if(!(0,o.statSync)(e).isDirectory())throw Error(`Not a directory: ${b}`);let f=(0,p.join)((0,p.dirname)(e),d);if((0,o.existsSync)(f))throw Error("A space with that name already exists");(0,o.renameSync)(e,f);let g=bA(a,e),h=bA(a,f);return{response:i({ok:!0,newPath:h}),changeEvent:{op:"rename_space",path:h,summary:`Renamed space to ${d}`,beforePath:g,afterPath:h}}})(d,a,b),append_csv:(a,b)=>(function(a,b,c){let d=bL(c.row,"row");if(0===d.length)throw Error("row must be non-empty array");if(!b.endsWith(".csv"))throw Error("Only .csv files support row append");let e=bG(a,b),f=d.map(a=>a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a),g=(0,w.n2)(a,b),h=bA(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,`${f.join(",")}
8
- `,"utf-8"),{response:i({ok:!0,path:h,newRowCount:(0,o.readFileSync)(g,"utf-8").trim().split("\n").filter(Boolean).length}),changeEvent:{op:"append_csv",path:h,summary:`Appended CSV row (${d.length} cell${1===d.length?"":"s"})`,before:e,after:bG(a,h)}}})(d,a,b)}),permissionRules:c.permissionRules??(0,bv.e)(process.env.MINDOS_PERMISSION_RULES),protectedRootFiles:c.protectedRootFiles,responses:{badRequest:a=>i({error:a},{status:400}),denied:a=>i({error:a},{status:403}),permissionRequired:({op:a,path:b,reason:c,requestId:d})=>i({error:"permission_required",requestId:d,message:`${c} (${a} ${b})`},{status:403})}});return e=g.response,f=g,Object.assign(e,{changeEvent:f.changeEvent,source:f.source,treeChanged:f.treeChanged})}catch(b){let a;return a=(g=b)instanceof Error?g.message:String(g),/missing |must be|Invalid |Heading not found|row must|Only \.csv|start|after_index|line index|not a directory/i.test(a)?i({error:a},{status:400}):/EEXIST|already exists/i.test(a)?i({error:"File already exists"},{status:409}):/ENOENT|not found/i.test(a)?i({error:"File not found"},{status:404}):/access denied|outside root|absolute paths/i.test(a)?i({error:"Access denied"},{status:403}):i({error:a},{status:500})}}function bz(a,b){return"string"==typeof a?a:b}function bA(a,b){return(0,p.relative)((0,p.resolve)(a),b).split("\\").join("/")}function bB(a,b){return bA(a,(0,w.n2)(a,b))}function bC(a,b){if(!a)throw Error(`missing or empty ${b}`);if("."===a||".."===a)throw Error(`Invalid ${b}: must not be "." or ".."`);if(a.includes("/")||a.includes("\\"))throw Error(`Invalid ${b}: must not contain path separators`)}function bD(a,b){let c=(0,p.dirname)(a),d=`${a}.tmp-${process.pid}-${Date.now()}`;(0,o.mkdirSync)(c,{recursive:!0});try{(0,o.writeFileSync)(d,b,"utf-8"),(0,o.renameSync)(d,a)}catch(a){try{(0,o.unlinkSync)(d)}catch{}throw a}}function bE(a,b){return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8").split("\n")}function bF(a,b,c){bD((0,w.n2)(a,b),c)}function bG(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8")}catch{return""}}function bH(a,b){return a.findIndex(a=>{let c=a.trim();return c===b||c.replace(/^#+\s*/,"")===b.replace(/^#+\s*/,"")})}function bI(a,b){if(!b||b.includes("/")||b.includes("\\")||(0,p.basename)(b)!==b)throw Error("Invalid sibling directory name");let c=(0,p.resolve)((0,p.dirname)(a)),d=(0,p.resolve)(c,b),e=(0,p.relative)(c,d);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent");if((0,o.existsSync)(d)){if((0,o.lstatSync)(d).isSymbolicLink())throw Error("Access denied: sibling directory must not be a symlink");let a=(0,o.realpathSync)(c),b=(0,o.realpathSync)(d),e=(0,p.relative)(a,b);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent")}return d}function bJ(a,b){if("string"!=typeof a)throw Error(`missing ${b}`);return a}function bK(a,b){if("number"!=typeof a)throw Error(`missing ${b}`);return a}function bL(a,b){if(!Array.isArray(a)||!a.every(a=>"string"==typeof a))throw Error(`${b} must be array`);return a}async function bM(a,b){let c=W(a,"op")??"summary",d=new v;if("summary"===c){let a=await M(d,b.mindRoot);return a.ok?i(a.value):i({error:a.error.message},{status:500})}if("list"===c){let c=W(a,"limit"),e=c?Number(c):50;if(!Number.isFinite(e)||e<=0)return i({error:"invalid limit"},{status:400});let f=W(a,"source"),g=await K(d,b.mindRoot,{path:W(a,"path"),source:"user"===f||"agent"===f||"system"===f?f:void 0,op:W(a,"event_op"),q:W(a,"q"),limit:e});return g.ok?i({events:g.value}):i({error:g.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}async function bN(a,b){if(!a||"object"!=typeof a)return i({error:"invalid JSON"},{status:400});let c=a.op;if("string"!=typeof c)return i({error:"missing op"},{status:400});if("mark_seen"===c){let a=await L(new v,b.mindRoot);return a.ok?i({ok:!0}):i({error:a.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}function bO(a={}){let b=a.port??process.env.MINDOS_WEB_PORT??"3456",c=Number(b),d=function(a=Y.networkInterfaces){let b=[];for(let[c,d]of Object.entries(a()))for(let a of d||[]){if("IPv4"!==a.family||a.internal)continue;let d=c.toLowerCase(),e=0;d.startsWith("en")||d.startsWith("eth")||d.startsWith("wlan")?e=10:d.startsWith("wl")||d.startsWith("wi")?e=8:(d.includes("docker")||d.includes("veth")||d.includes("br-"))&&(e=-10),b.push({address:a.address,priority:e})}return b.sort((a,b)=>b.priority-a.priority),b[0]?.address||"127.0.0.1"}(a.networkInterfaces??Y.networkInterfaces);return i({url:`http://${d}:${b}`,ip:d,port:c,hostname:(a.hostname??Y.hostname)()})}let bP="Xenova/bge-small-zh-v1.5",bQ=[{id:"Xenova/bge-small-zh-v1.5",label:"BGE Small ZH (33MB)",size:"~33MB",lang:"zh+en"},{id:"Xenova/all-MiniLM-L6-v2",label:"MiniLM L6 (23MB)",size:"~23MB",lang:"en"},{id:"Xenova/bge-small-en-v1.5",label:"BGE Small EN (33MB)",size:"~33MB",lang:"en"}],bR=!1,bS=null;async function bT(a={}){let b=await bV(void 0,a),c=a.getEmbeddingStatus?.()??{};return i({downloaded:b,defaultModel:a.defaultLocalModel??bP,models:a.localModelOptions??bQ,...c})}async function bU(a,b={}){let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"",e="string"==typeof c.model&&c.model?c.model:void 0;if("download"===d){if(bR)return i({ok:!1,error:"Download already in progress"});let a=e??b.defaultLocalModel??bP;return bR=!0,bS=null,(b.downloadLocalModel??bX)(a).then(a=>{bR=!1,a||(bS="Download failed. Check your network connection and try again.")}).catch(a=>{var b;let c,d;bR=!1,bS=(d=(c=(b=a)instanceof Error?b.message:String(b)).toLowerCase()).includes("timeout")||d.includes("took too long")?"Download timeout. Your connection may be too slow. Try again or use API mode.":d.includes("enotfound")||d.includes("econnrefused")||d.includes("econnreset")||d.includes("net::err_internet_disconnected")?"Network connection failed. Check your internet and try again.":d.includes("permission denied")||d.includes("eacces")?"Permission denied. Check cache directory permissions (~/.cache/huggingface/).":d.includes("npm is required")?"npm is required to install the optional local embedding runtime. Install Node.js/npm, or use API mode.":d.includes("local embedding runtime")?"Local embedding runtime is not installed. Click Download Model to install it, or use API embedding mode.":d.includes("disk quota")||d.includes("no space")?"Not enough disk space. Free up space and try again.":`Download failed: ${c.slice(0,200)}`}),i({ok:!0,message:`Downloading ${a}...`})}if("status"===d){let a=await bV(e,b);return i({downloading:bR,downloaded:a,error:bS})}return i({ok:!1,error:"Unknown action"},{status:400})}async function bV(a,b){let c=b.isLocalModelDownloaded??bW;return await c(a)}async function bW(){return!1}async function bX(){return!1}function bY(a,b){if(void 0===a)return b;let c=Number.parseInt(a,10);return Number.isFinite(c)&&c>=0?c:b}function bZ(a,b){var c;let d=b.collectAllFiles(),e=W(a,"limit"),f=bY(W(a,"offset"),0),g=bY(e,0),h=k(60,(c=d.join("\n"),`"${(0,t.createHash)("sha1").update(c).digest("hex")}"`));return void 0!==e&&g>0?i({files:d.slice(f,f+g),total:d.length,offset:f,limit:g},{headers:h}):i(d,{headers:h})}function b$(a){let b=function(a){let b=b1(a),c=b.map(a=>({id:a,label:p.posix.basename(a,".md"),folder:p.posix.dirname(a)})),d=new Set,e=[];for(let c of b0(a,b)){if(c.source===c.target)continue;let a=`${c.source}\0${c.target}`;d.has(a)||(d.add(a),e.push({source:c.source,target:c.target}))}return e.sort((a,b)=>a.source.localeCompare(b.source)||a.target.localeCompare(b.target)),{nodes:c,edges:e}}(a);return i(b,{headers:k(300,b4(b))})}function b_(a,b){let c=b3(W(a,"path"));if(!c)return i({error:"path required"},{status:400});let d=new Map;for(let a of b0(b)){if(a.target!==c)continue;let b=d.get(a.source)??[];b.push(a.snippet),d.set(a.source,b)}let e=[...d.entries()].map(([a,b])=>({filePath:a,snippets:[...new Set(b)]})).sort((a,b)=>a.filePath.localeCompare(b.filePath));return i(e,{headers:k(300,b4(e))})}function b0(a,b=b1(a)){let c=new Set(b),d=function(a){let b=new Map;for(let c of a){let a=p.posix.basename(c).toLowerCase(),d=b.get(a)??[];d.push(c),b.set(a,d)}return b}(b),e=[];for(let f of b){let b="";try{b=function(a,b){if(a.readTextFile)return a.readTextFile(b);if(a.mindRoot){var c;return c=a.mindRoot,(0,o.readFileSync)((0,w.n2)(c,b),"utf-8")}throw Error("readTextFile service required")}(a,f)}catch{continue}e.push(...function(a,b,c,d){let e=[],f=p.posix.dirname(b);for(let g of a.split(/\r?\n/)){let a,h=g.trim();if(!h)continue;let i=/\[\[([^\]|#]+)(?:#[^\]|]+)?(?:\|[^\]]+)?\]\]/g;for(;null!==(a=i.exec(g));){let g=b2(a[1],f,c,d,!1);g&&e.push({source:b,target:g,snippet:h})}let j=/\[[^\]]+\]\(([^)#]+)(?:#[^)]+)?\)/g;for(;null!==(a=j.exec(g));){let g=b2(a[1],f,c,d,!0);g&&e.push({source:b,target:g,snippet:h})}}return e}(b,f,c,d))}return e}function b1(a){return(a.collectAllFiles?a.collectAllFiles():a.mindRoot?ai(a.mindRoot):[]).filter(a=>".md"===(0,p.extname)(a).toLowerCase()).map(b3).filter(a=>!!a).sort((a,b)=>a.localeCompare(b))}function b2(a,b,c,d,e){let f=b3(a);if(!f||/^(https?:|mailto:|tel:)/i.test(f))return;let g=new Set;for(let a of(g.add(f),g.add(f.endsWith(".md")?f:`${f}.md`),e&&(g.add(p.posix.normalize(p.posix.join(b,f))),g.add(p.posix.normalize(p.posix.join(b,f.endsWith(".md")?f:`${f}.md`)))),g))if(c.has(a))return a;let h=p.posix.basename(f.endsWith(".md")?f:`${f}.md`).toLowerCase(),i=d.get(h);if(i?.length===1)return i[0]}function b3(a){if(!a)return;let b=a.trim();if(b){try{b=decodeURIComponent(b)}catch{}if(b=(b=b.split("#")[0]?.trim()??"").replace(/\\/g,"/").replace(/^\/+/,""),!(!(b=p.posix.normalize(b))||"."===b||b.startsWith("../"))&&".."!==b)return b}}function b4(a){return`"${(0,t.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}"`}var b5=c(79646);let b6=(0,c(28354).promisify)(b5.execFile);function b7(a){return{ok:!0,value:a}}function b8(a){return{ok:!1,error:a}}async function b9(a){try{return await b6("git",["rev-parse","--is-inside-work-tree"],{cwd:a,encoding:"utf-8"}),b7(!0)}catch{return b7(!1)}}async function ca(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b8(d.error);try{let{stdout:b}=await b6("git",["log","--follow","--format=%H%x00%aI%x00%s%x00%an","-n",String(c),"--",d.value],{cwd:a,encoding:"utf-8"}),e=b.trim();if(!e)return b7([]);let f=e.split("\n").map(a=>{let[b,c,d,e]=a.split("\0");return{hash:b||"",date:c||"",message:d||"",author:e||""}});return b7(f)}catch(a){return b8((0,u.$5)("INTERNAL_ERROR","Failed to get git log",{context:{filePath:b,error:a instanceof Error?a.message:String(a)}}))}}async function cb(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b8(d.error);try{let e="";try{let{stdout:b}=await b6("git",["ls-files","--full-name",d.value],{cwd:a,encoding:"utf-8"});e=b.trim()}catch{}let f=e||b,{stdout:g}=await b6("git",["show",`${c}:${f}`],{cwd:a,encoding:"utf-8"});return b7(g)}catch(a){return b8((0,u.$5)("INTERNAL_ERROR","Failed to show git file",{context:{filePath:b,commitHash:c,error:a instanceof Error?a.message:String(a)}}))}}async function cc(a,b){let c=W(a,"op")??"is_repo";if("is_repo"===c)return i({isRepo:await cd(b)});if("history"===c){var d;let c,e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});let f=Number.isFinite(c=(d=W(a,"limit"))?Number.parseInt(d,10):10)?Math.max(1,Math.min(c,100)):10,g=await ce(b,e,f);return Array.isArray(g)?i({entries:g}):g}if("show"===c){let c=W(a,"path"),d=W(a,"commit");if(!c)return i({error:"missing path"},{status:400});if(!d)return i({error:"missing commit"},{status:400});let e=await cf(b,c,d);return"string"==typeof e?i({content:e}):e}return i({error:`unknown op: ${c}`},{status:400})}async function cd(a){if(a.isGitRepo)return a.isGitRepo();if(!a.mindRoot)return!1;let b=await b9(a.mindRoot);return!!b.ok&&b.value}async function ce(a,b,c){if(a.gitLog)return a.gitLog(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await ca(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}async function cf(a,b,c){if(a.gitShowFile)return a.gitShowFile(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await cb(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}function cg(a={}){let b=a.env??process.env;if(b.npm_package_version)return b.npm_package_version;for(let b of[a.projectRoot?(0,p.join)(a.projectRoot,"packages","mindos","package.json"):void 0,a.projectRoot?(0,p.join)(a.projectRoot,"package.json"):void 0,(0,p.join)(a.cwd??process.cwd(),"package.json")].filter(a=>"string"==typeof a)){let a=function(a){try{if(!(0,o.existsSync)(a))return;let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if("@geminilight/mindos"===b.name&&b.version)return b.version}catch{}}(b);if(a)return a}return"0.0.0"}function ch(a={}){return i(function(a={}){let b=a.env??process.env;return{ok:!0,service:"mindos",version:a.version??cg(a),authRequired:a.authRequired??!!b.WEB_PASSWORD,runtime:{platform:process.platform,arch:process.arch,node:process.version,root:a.runtimeRoot}}}({projectRoot:a.projectRoot,runtimeRoot:a.runtimeRoot??a.projectRoot,env:a.env}),{headers:h})}function ci(){return j(h)}let cj=new Set(["en","zh","empty"]);function ck(a,b){try{var c,d;let e=a&&"object"==typeof a&&"string"==typeof a.template?a.template:void 0;if(!e||!cj.has(e))return i({error:`Invalid template: ${String(e)}`},{status:400});let f=(c=e,d=b,cl(d).map(a=>(0,p.join)(a,c)).find(a=>(0,o.existsSync)(a)));if(!f)return i({error:`Template "${e}" not found at ${cl(b).join(", ")}`},{status:404});return(0,o.existsSync)(b.mindRoot)||(0,o.mkdirSync)(b.mindRoot,{recursive:!0}),function a(b,c){if((0,o.statSync)(b).isDirectory()){for(let d of((0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0}),(0,o.readdirSync)(b)))a((0,p.join)(b,d),(0,p.join)(c,d));return}if((0,o.existsSync)(c))return;let d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0}),(0,o.copyFileSync)(b,c)}(f,b.mindRoot),i({ok:!0,template:e})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function cl(a){if(a.templateRoots&&a.templateRoots.length>0)return[...new Set(a.templateRoots)];let b=a.env??process.env;return[...new Set([a.projectRoot?(0,p.join)(a.projectRoot,"templates"):void 0,b.MINDOS_PROJECT_ROOT?(0,p.join)(b.MINDOS_PROJECT_ROOT,"templates"):void 0,a.runtimeRoot?(0,p.join)(a.runtimeRoot,"templates"):void 0,(0,p.join)(function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(a.cwd??process.cwd())??"","templates"),(0,p.resolve)(a.cwd??process.cwd(),"..","templates"),(0,p.resolve)(a.cwd??process.cwd(),"templates")].filter(a=>!!a))]}let cm=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),cn=(0,p.join)((0,Y.homedir)(),".mindos","im-activity.json");function co(a,b={}){var c;let d=a.get("platform"),e=a.get("limit");if(!d||(c=d,!cm.has(c)))return i({error:"Invalid or missing platform parameter"},{status:400});let f=e?Math.min(Math.max(Number.parseInt(e,10)||10,1),100):10;return i({activities:b.getActivities?b.getActivities(d,f):function(a,b,c){try{if(!(0,o.existsSync)(c))return[];let d=JSON.parse((0,o.readFileSync)(c,"utf-8"));if(1!==d.version||!d.activities||"object"!=typeof d.activities)return[];let e=d.activities[a];return Array.isArray(e)?e.slice(0,b):[]}catch{return[]}}(d,f,b.activityPath??cn)})}let cp=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cq={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},cr={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};function cs(a={}){try{let b=cv(a),c={};for(let[a,d]of Object.entries(b.providers??{})){if(!d||"object"!=typeof d)continue;let b={};for(let[a,c]of Object.entries(d))"string"==typeof c&&c.length>4?b[a]=`${c.slice(0,4)}••••${c.slice(-2)}`:b[a]="string"==typeof c?"••••":"";c[a]=b}return i({providers:c})}catch{return i({error:"Failed to read config"},{status:500})}}function ct(a,b={}){try{let{platform:c,credentials:d,conversation:e}=a&&"object"==typeof a?a:{};if(!c||(!d||"object"!=typeof d)&&(!e||"object"!=typeof e))return i({error:"Missing platform credentials or conversation settings"},{status:400});let f=cv(b);f.providers??={};let g=f.providers[c]??{};if(d&&"object"==typeof d){let a={...g,...d},b=function(a,b){let c=cq[a];if(!c)return{valid:!1,missing:["(unknown platform)"]};let d=cr[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(c,a);if(!b.valid)return i({error:`Invalid config: missing ${b.missing?.join(", ")}`,missing:b.missing},{status:422});f.providers[c]=a}if("feishu"===c&&e&&"object"==typeof e){if(!g.app_id||!g.app_secret)return i({error:"Save Feishu App ID and App Secret before enabling conversations"},{status:422});let a=f.providers[c]??g;a.conversation={...a.conversation??{},enabled:!!e.enabled,transport:e.transport??a.conversation?.transport??"webhook",encrypt_key:e.encrypt_key??a.conversation?.encrypt_key,verification_token:e.verification_token??a.conversation?.verification_token,public_base_url:e.public_base_url??a.conversation?.public_base_url,allow_group_mentions:e.allow_group_mentions??a.conversation?.allow_group_mentions??!0},f.providers[c]=a}return cw(f,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to save"},{status:500})}}function cu(a,b={}){try{let c=a.get("platform");if(!c)return i({error:"Missing platform parameter"},{status:400});let d=cv(b);return d.providers??={},delete d.providers[c],cw(d,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to delete"},{status:500})}}function cv(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cp;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cw(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cp,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
9
- `,"utf-8"),(0,o.renameSync)(e,c)}let cx=(0,p.join)((0,Y.homedir)(),".mindos","im.json");function cy(a={}){return i({ok:!0,...cB(a)})}async function cz(a={}){try{let b=cD(a),c=b.providers?.feishu;if(!c||"object"!=typeof c)return i({ok:!1,error:"Feishu is not configured. Save App ID and App Secret first."},{status:422});c.conversation={...c.conversation??{},enabled:!0,transport:"long_connection"},b.providers.feishu=c,cE(b,a);let d=a.startFeishuWSClient??cC;return await d(c),i({ok:!0,...cB(a)})}catch(b){return i({ok:!1,error:b instanceof Error?b.message:"Failed to start",...cB(a)},{status:500})}}function cA(a={}){(a.stopFeishuWSClient??function(){})();try{let b=cD(a),c=b.providers?.feishu;c&&"object"==typeof c&&c.conversation&&"object"==typeof c.conversation&&(c.conversation.transport="webhook",b.providers.feishu=c,cE(b,a))}catch{}return i({ok:!0,...cB(a)})}function cB(a){return(a.getFeishuWSClientStatus??function(){return{running:!1}})()}async function cC(){throw Error("Feishu long connection starter is not configured")}function cD(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cx;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cE(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cx,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
10
- `,"utf-8"),(0,o.renameSync)(e,c)}let cF=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cG={telegram:["text","markdown"],discord:["text","markdown"],feishu:["text","markdown"],slack:["text","markdown"],wecom:["text","markdown"],dingtalk:["text","markdown"],wechat:["text"],qq:["text"]},cH={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]};async function cI(a={}){try{if(!(a.hasAnyIMConfig?a.hasAnyIMConfig():Object.keys(cL(a).providers).length>0))return i({platforms:[]});let b=a.listConfiguredIM??(()=>{var b;let c;return b=a,c=cL(b),Object.keys(c.providers).filter(a=>(function(a,b){if(!(a in cH))return!1;let c=b.providers[a];return!!c&&"object"==typeof c&&cH[a].some(a=>a.every(a=>"string"==typeof c[a]&&!!c[a]?.trim()))})(a,c)).map(a=>({platform:a,connected:!1,capabilities:cG[a]??["text"]}))}),c=await b(),d=a.getPlatformConfig??(b=>cL(a).providers[b]),e=a.buildFeishuWebhookStatus??cK,f=d("feishu"),g=e(f),h=c.map(a=>"feishu"===a.platform?{...a,webhook:g}:a);return i({platforms:h})}catch{return i({platforms:[],error:"Failed to fetch IM status"},{status:500})}}function cJ(a,b={}){if("feishu"!==a.get("platform"))return i({error:"Invalid or unsupported platform parameter"},{status:400});let c=b.getPlatformConfig??(a=>cL(b).providers[a]);return i({status:(b.buildFeishuWebhookStatus??cK)(c("feishu"))})}function cK(a){let b=a&&"object"==typeof a?a:void 0,c=b?.conversation&&"object"==typeof b.conversation?b.conversation:void 0,d=c?.transport==="long_connection"?"long_connection":"webhook",e="string"==typeof c?.public_base_url&&c.public_base_url.trim()?c.public_base_url.trim().replace(/\/+$/,""):void 0,f=e?`${e}/api/im/webhook/feishu`:void 0;return c?.enabled?"long_connection"===d?b?.app_id&&b?.app_secret?{platform:"feishu",state:"pending",transport:d,lastError:"Start the Feishu long connection client to receive events locally."}:{platform:"feishu",state:"error",transport:d,lastError:"Feishu App ID and App Secret are required for long connection mode."}:c.encrypt_key?e?{platform:"feishu",state:"ready",transport:d,publicBaseUrl:e,webhookUrl:f}:{platform:"feishu",state:"pending",transport:d,lastError:"Public base URL is required for Feishu event callbacks."}:{platform:"feishu",state:"error",transport:d,publicBaseUrl:e,webhookUrl:f,lastError:"Encrypt Key is required to enable Feishu conversations."}:{platform:"feishu",state:"disabled",transport:d,publicBaseUrl:e,webhookUrl:f}}function cL(a){let b=a.configPath??cF;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}let cM=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]);async function cN(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.platform?c.platform.trim():"",e="string"==typeof c.recipient_id?c.recipient_id.trim():"",f="string"==typeof c.message?c.message:"";if(!d||!e||!f)return i({ok:!1,error:"Missing required fields: platform, recipient_id, message"},{status:400});if(!cM.has(d))return i({ok:!1,error:"Invalid platform"},{status:400});let g=b.sendIMMessage??cO,h=await g({platform:d,recipientId:e,text:f,format:"text"},void 0,{activityType:"test"});if(h.ok)return i({ok:!0,messageId:h.messageId,timestamp:h.timestamp});return i({ok:!1,error:h.error??"Failed to send test message"},{status:422})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Internal error"},{status:500})}}async function cO(){return{ok:!1,error:"IM sender is not configured",timestamp:new Date().toISOString()}}let cP="Inbox",cQ=".processed",cR=new Set([".txt",".md",".markdown",".csv",".json",".yaml",".yml",".xml",".html",".htm",".pdf",".doc",".docx",".docm"]),cS=`# Inbox Instruction Set
7
+ `,"utf-8"),{response:i({ok:!0,path:g}),changeEvent:{op:"create_space",path:g,summary:"Created space",before:"",after:h}}})(d,b),rename_space:(a,b)=>(function(a,b,c){let d=bK(c.new_name,"new_name").trim();bD(d,"space name");let e=(0,w.n2)(a,b);if(!(0,o.statSync)(e).isDirectory())throw Error(`Not a directory: ${b}`);let f=(0,p.join)((0,p.dirname)(e),d);if((0,o.existsSync)(f))throw Error("A space with that name already exists");(0,o.renameSync)(e,f);let g=bB(a,e),h=bB(a,f);return{response:i({ok:!0,newPath:h}),changeEvent:{op:"rename_space",path:h,summary:`Renamed space to ${d}`,beforePath:g,afterPath:h}}})(d,a,b),append_csv:(a,b)=>(function(a,b,c){let d=bM(c.row,"row");if(0===d.length)throw Error("row must be non-empty array");if(!b.endsWith(".csv"))throw Error("Only .csv files support row append");let e=bH(a,b),f=d.map(a=>a.includes(",")||a.includes('"')||a.includes("\n")?`"${a.replace(/"/g,'""')}"`:a),g=(0,w.n2)(a,b),h=bB(a,g);return(0,o.mkdirSync)((0,p.dirname)(g),{recursive:!0}),(0,o.appendFileSync)(g,`${f.join(",")}
8
+ `,"utf-8"),{response:i({ok:!0,path:h,newRowCount:(0,o.readFileSync)(g,"utf-8").trim().split("\n").filter(Boolean).length}),changeEvent:{op:"append_csv",path:h,summary:`Appended CSV row (${d.length} cell${1===d.length?"":"s"})`,before:e,after:bH(a,h)}}})(d,a,b)}),permissionRules:c.permissionRules??(0,bw.e)(process.env.MINDOS_PERMISSION_RULES),protectedRootFiles:c.protectedRootFiles,responses:{badRequest:a=>i({error:a},{status:400}),denied:a=>i({error:a},{status:403}),permissionRequired:({op:a,path:b,reason:c,requestId:d})=>i({error:"permission_required",requestId:d,message:`${c} (${a} ${b})`},{status:403})}});return e=g.response,f=g,Object.assign(e,{changeEvent:f.changeEvent,source:f.source,treeChanged:f.treeChanged})}catch(b){let a;return a=(g=b)instanceof Error?g.message:String(g),/missing |must be|Invalid |Heading not found|row must|Only \.csv|start|after_index|line index|not a directory/i.test(a)?i({error:a},{status:400}):/EEXIST|already exists/i.test(a)?i({error:"File already exists"},{status:409}):/ENOENT|not found/i.test(a)?i({error:"File not found"},{status:404}):/access denied|outside root|absolute paths/i.test(a)?i({error:"Access denied"},{status:403}):i({error:a},{status:500})}}function bA(a,b){return"string"==typeof a?a:b}function bB(a,b){return(0,p.relative)((0,p.resolve)(a),b).split("\\").join("/")}function bC(a,b){return bB(a,(0,w.n2)(a,b))}function bD(a,b){if(!a)throw Error(`missing or empty ${b}`);if("."===a||".."===a)throw Error(`Invalid ${b}: must not be "." or ".."`);if(a.includes("/")||a.includes("\\"))throw Error(`Invalid ${b}: must not contain path separators`)}function bE(a,b){let c=(0,p.dirname)(a),d=`${a}.tmp-${process.pid}-${Date.now()}`;(0,o.mkdirSync)(c,{recursive:!0});try{(0,o.writeFileSync)(d,b,"utf-8"),(0,o.renameSync)(d,a)}catch(a){try{(0,o.unlinkSync)(d)}catch{}throw a}}function bF(a,b){return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8").split("\n")}function bG(a,b,c){bE((0,w.n2)(a,b),c)}function bH(a,b){try{return(0,o.readFileSync)((0,w.n2)(a,b),"utf-8")}catch{return""}}function bI(a,b){return a.findIndex(a=>{let c=a.trim();return c===b||c.replace(/^#+\s*/,"")===b.replace(/^#+\s*/,"")})}function bJ(a,b){if(!b||b.includes("/")||b.includes("\\")||(0,p.basename)(b)!==b)throw Error("Invalid sibling directory name");let c=(0,p.resolve)((0,p.dirname)(a)),d=(0,p.resolve)(c,b),e=(0,p.relative)(c,d);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent");if((0,o.existsSync)(d)){if((0,o.lstatSync)(d).isSymbolicLink())throw Error("Access denied: sibling directory must not be a symlink");let a=(0,o.realpathSync)(c),b=(0,o.realpathSync)(d),e=(0,p.relative)(a,b);if(".."===e||e.startsWith("..")||(0,p.resolve)(e)===e)throw Error("Access denied: sibling directory outside root parent")}return d}function bK(a,b){if("string"!=typeof a)throw Error(`missing ${b}`);return a}function bL(a,b){if("number"!=typeof a)throw Error(`missing ${b}`);return a}function bM(a,b){if(!Array.isArray(a)||!a.every(a=>"string"==typeof a))throw Error(`${b} must be array`);return a}async function bN(a,b){let c=W(a,"op")??"summary",d=new v;if("summary"===c){let a=await M(d,b.mindRoot);return a.ok?i(a.value):i({error:a.error.message},{status:500})}if("list"===c){let c=W(a,"limit"),e=c?Number(c):50;if(!Number.isFinite(e)||e<=0)return i({error:"invalid limit"},{status:400});let f=W(a,"source"),g=await K(d,b.mindRoot,{path:W(a,"path"),source:"user"===f||"agent"===f||"system"===f?f:void 0,op:W(a,"event_op"),q:W(a,"q"),limit:e});return g.ok?i({events:g.value}):i({error:g.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}async function bO(a,b){if(!a||"object"!=typeof a)return i({error:"invalid JSON"},{status:400});let c=a.op;if("string"!=typeof c)return i({error:"missing op"},{status:400});if("mark_seen"===c){let a=await L(new v,b.mindRoot);return a.ok?i({ok:!0}):i({error:a.error.message},{status:500})}return i({error:`unknown op: ${c}`},{status:400})}function bP(a={}){let b=a.port??process.env.MINDOS_WEB_PORT??"3456",c=Number(b),d=function(a=Y.networkInterfaces){let b=[];for(let[c,d]of Object.entries(a()))for(let a of d||[]){if("IPv4"!==a.family||a.internal)continue;let d=c.toLowerCase(),e=0;d.startsWith("en")||d.startsWith("eth")||d.startsWith("wlan")?e=10:d.startsWith("wl")||d.startsWith("wi")?e=8:(d.includes("docker")||d.includes("veth")||d.includes("br-"))&&(e=-10),b.push({address:a.address,priority:e})}return b.sort((a,b)=>b.priority-a.priority),b[0]?.address||"127.0.0.1"}(a.networkInterfaces??Y.networkInterfaces);return i({url:`http://${d}:${b}`,ip:d,port:c,hostname:(a.hostname??Y.hostname)()})}let bQ="Xenova/bge-small-zh-v1.5",bR=[{id:"Xenova/bge-small-zh-v1.5",label:"BGE Small ZH (33MB)",size:"~33MB",lang:"zh+en"},{id:"Xenova/all-MiniLM-L6-v2",label:"MiniLM L6 (23MB)",size:"~23MB",lang:"en"},{id:"Xenova/bge-small-en-v1.5",label:"BGE Small EN (33MB)",size:"~33MB",lang:"en"}],bS=!1,bT=null;async function bU(a={}){let b=await bW(void 0,a),c=a.getEmbeddingStatus?.()??{};return i({downloaded:b,defaultModel:a.defaultLocalModel??bQ,models:a.localModelOptions??bR,...c})}async function bV(a,b={}){let c=a&&"object"==typeof a?a:{},d="string"==typeof c.action?c.action:"",e="string"==typeof c.model&&c.model?c.model:void 0;if("download"===d){if(bS)return i({ok:!1,error:"Download already in progress"});let a=e??b.defaultLocalModel??bQ;return bS=!0,bT=null,(b.downloadLocalModel??bY)(a).then(a=>{bS=!1,a||(bT="Download failed. Check your network connection and try again.")}).catch(a=>{var b;let c,d;bS=!1,bT=(d=(c=(b=a)instanceof Error?b.message:String(b)).toLowerCase()).includes("timeout")||d.includes("took too long")?"Download timeout. Your connection may be too slow. Try again or use API mode.":d.includes("enotfound")||d.includes("econnrefused")||d.includes("econnreset")||d.includes("net::err_internet_disconnected")?"Network connection failed. Check your internet and try again.":d.includes("permission denied")||d.includes("eacces")?"Permission denied. Check cache directory permissions (~/.cache/huggingface/).":d.includes("npm is required")?"npm is required to install the optional local embedding runtime. Install Node.js/npm, or use API mode.":d.includes("local embedding runtime")?"Local embedding runtime is not installed. Click Download Model to install it, or use API embedding mode.":d.includes("disk quota")||d.includes("no space")?"Not enough disk space. Free up space and try again.":`Download failed: ${c.slice(0,200)}`}),i({ok:!0,message:`Downloading ${a}...`})}if("status"===d){let a=await bW(e,b);return i({downloading:bS,downloaded:a,error:bT})}return i({ok:!1,error:"Unknown action"},{status:400})}async function bW(a,b){let c=b.isLocalModelDownloaded??bX;return await c(a)}async function bX(){return!1}async function bY(){return!1}function bZ(a,b){if(void 0===a)return b;let c=Number.parseInt(a,10);return Number.isFinite(c)&&c>=0?c:b}function b$(a,b){var c;let d=b.collectAllFiles(),e=W(a,"limit"),f=bZ(W(a,"offset"),0),g=bZ(e,0),h=k(60,(c=d.join("\n"),`"${(0,t.createHash)("sha1").update(c).digest("hex")}"`));return void 0!==e&&g>0?i({files:d.slice(f,f+g),total:d.length,offset:f,limit:g},{headers:h}):i(d,{headers:h})}function b_(a){let b=function(a){let b=b2(a),c=b.map(a=>({id:a,label:p.posix.basename(a,".md"),folder:p.posix.dirname(a)})),d=new Set,e=[];for(let c of b1(a,b)){if(c.source===c.target)continue;let a=`${c.source}\0${c.target}`;d.has(a)||(d.add(a),e.push({source:c.source,target:c.target}))}return e.sort((a,b)=>a.source.localeCompare(b.source)||a.target.localeCompare(b.target)),{nodes:c,edges:e}}(a);return i(b,{headers:k(300,b5(b))})}function b0(a,b){let c=b4(W(a,"path"));if(!c)return i({error:"path required"},{status:400});let d=new Map;for(let a of b1(b)){if(a.target!==c)continue;let b=d.get(a.source)??[];b.push(a.snippet),d.set(a.source,b)}let e=[...d.entries()].map(([a,b])=>({filePath:a,snippets:[...new Set(b)]})).sort((a,b)=>a.filePath.localeCompare(b.filePath));return i(e,{headers:k(300,b5(e))})}function b1(a,b=b2(a)){let c=new Set(b),d=function(a){let b=new Map;for(let c of a){let a=p.posix.basename(c).toLowerCase(),d=b.get(a)??[];d.push(c),b.set(a,d)}return b}(b),e=[];for(let f of b){let b="";try{b=function(a,b){if(a.readTextFile)return a.readTextFile(b);if(a.mindRoot){var c;return c=a.mindRoot,(0,o.readFileSync)((0,w.n2)(c,b),"utf-8")}throw Error("readTextFile service required")}(a,f)}catch{continue}e.push(...function(a,b,c,d){let e=[],f=p.posix.dirname(b);for(let g of a.split(/\r?\n/)){let a,h=g.trim();if(!h)continue;let i=/\[\[([^\]|#]+)(?:#[^\]|]+)?(?:\|[^\]]+)?\]\]/g;for(;null!==(a=i.exec(g));){let g=b3(a[1],f,c,d,!1);g&&e.push({source:b,target:g,snippet:h})}let j=/\[[^\]]+\]\(([^)#]+)(?:#[^)]+)?\)/g;for(;null!==(a=j.exec(g));){let g=b3(a[1],f,c,d,!0);g&&e.push({source:b,target:g,snippet:h})}}return e}(b,f,c,d))}return e}function b2(a){return(a.collectAllFiles?a.collectAllFiles():a.mindRoot?ai(a.mindRoot):[]).filter(a=>".md"===(0,p.extname)(a).toLowerCase()).map(b4).filter(a=>!!a).sort((a,b)=>a.localeCompare(b))}function b3(a,b,c,d,e){let f=b4(a);if(!f||/^(https?:|mailto:|tel:)/i.test(f))return;let g=new Set;for(let a of(g.add(f),g.add(f.endsWith(".md")?f:`${f}.md`),e&&(g.add(p.posix.normalize(p.posix.join(b,f))),g.add(p.posix.normalize(p.posix.join(b,f.endsWith(".md")?f:`${f}.md`)))),g))if(c.has(a))return a;let h=p.posix.basename(f.endsWith(".md")?f:`${f}.md`).toLowerCase(),i=d.get(h);if(i?.length===1)return i[0]}function b4(a){if(!a)return;let b=a.trim();if(b){try{b=decodeURIComponent(b)}catch{}if(b=(b=b.split("#")[0]?.trim()??"").replace(/\\/g,"/").replace(/^\/+/,""),!(!(b=p.posix.normalize(b))||"."===b||b.startsWith("../"))&&".."!==b)return b}}function b5(a){return`"${(0,t.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}"`}var b6=c(79646);let b7=(0,c(28354).promisify)(b6.execFile);function b8(a){return{ok:!0,value:a}}function b9(a){return{ok:!1,error:a}}async function ca(a){try{return await b7("git",["rev-parse","--is-inside-work-tree"],{cwd:a,encoding:"utf-8"}),b8(!0)}catch{return b8(!1)}}async function cb(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b9(d.error);try{let{stdout:b}=await b7("git",["log","--follow","--format=%H%x00%aI%x00%s%x00%an","-n",String(c),"--",d.value],{cwd:a,encoding:"utf-8"}),e=b.trim();if(!e)return b8([]);let f=e.split("\n").map(a=>{let[b,c,d,e]=a.split("\0");return{hash:b||"",date:c||"",message:d||"",author:e||""}});return b8(f)}catch(a){return b9((0,u.$5)("INTERNAL_ERROR","Failed to get git log",{context:{filePath:b,error:a instanceof Error?a.message:String(a)}}))}}async function cc(a,b,c){let d=(0,w.T8)(a,b);if(!d.ok)return b9(d.error);try{let e="";try{let{stdout:b}=await b7("git",["ls-files","--full-name",d.value],{cwd:a,encoding:"utf-8"});e=b.trim()}catch{}let f=e||b,{stdout:g}=await b7("git",["show",`${c}:${f}`],{cwd:a,encoding:"utf-8"});return b8(g)}catch(a){return b9((0,u.$5)("INTERNAL_ERROR","Failed to show git file",{context:{filePath:b,commitHash:c,error:a instanceof Error?a.message:String(a)}}))}}async function cd(a,b){let c=W(a,"op")??"is_repo";if("is_repo"===c)return i({isRepo:await ce(b)});if("history"===c){var d;let c,e=W(a,"path");if(!e)return i({error:"missing path"},{status:400});let f=Number.isFinite(c=(d=W(a,"limit"))?Number.parseInt(d,10):10)?Math.max(1,Math.min(c,100)):10,g=await cf(b,e,f);return Array.isArray(g)?i({entries:g}):g}if("show"===c){let c=W(a,"path"),d=W(a,"commit");if(!c)return i({error:"missing path"},{status:400});if(!d)return i({error:"missing commit"},{status:400});let e=await cg(b,c,d);return"string"==typeof e?i({content:e}):e}return i({error:`unknown op: ${c}`},{status:400})}async function ce(a){if(a.isGitRepo)return a.isGitRepo();if(!a.mindRoot)return!1;let b=await ca(a.mindRoot);return!!b.ok&&b.value}async function cf(a,b,c){if(a.gitLog)return a.gitLog(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await cb(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}async function cg(a,b,c){if(a.gitShowFile)return a.gitShowFile(b,c);if(!a.mindRoot)return i({error:"mindRoot required"},{status:500});let d=await cc(a.mindRoot,b,c);return d.ok?d.value:i({error:d.error.message},{status:500})}function ch(a={}){let b=a.env??process.env;if(b.npm_package_version)return b.npm_package_version;for(let b of[a.projectRoot?(0,p.join)(a.projectRoot,"packages","mindos","package.json"):void 0,a.projectRoot?(0,p.join)(a.projectRoot,"package.json"):void 0,(0,p.join)(a.cwd??process.cwd(),"package.json")].filter(a=>"string"==typeof a)){let a=function(a){try{if(!(0,o.existsSync)(a))return;let b=JSON.parse((0,o.readFileSync)(a,"utf-8"));if("@geminilight/mindos"===b.name&&b.version)return b.version}catch{}}(b);if(a)return a}return"0.0.0"}function ci(a={}){return i(function(a={}){let b=a.env??process.env;return{ok:!0,service:"mindos",version:a.version??ch(a),authRequired:a.authRequired??!!b.WEB_PASSWORD,runtime:{platform:process.platform,arch:process.arch,node:process.version,root:a.runtimeRoot}}}({projectRoot:a.projectRoot,runtimeRoot:a.runtimeRoot??a.projectRoot,env:a.env}),{headers:h})}function cj(){return j(h)}let ck=new Set(["en","zh","empty"]);function cl(a,b){try{var c,d;let e=a&&"object"==typeof a&&"string"==typeof a.template?a.template:void 0;if(!e||!ck.has(e))return i({error:`Invalid template: ${String(e)}`},{status:400});let f=(c=e,d=b,cm(d).map(a=>(0,p.join)(a,c)).find(a=>(0,o.existsSync)(a)));if(!f)return i({error:`Template "${e}" not found at ${cm(b).join(", ")}`},{status:404});return(0,o.existsSync)(b.mindRoot)||(0,o.mkdirSync)(b.mindRoot,{recursive:!0}),function a(b,c){if((0,o.statSync)(b).isDirectory()){for(let d of((0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0}),(0,o.readdirSync)(b)))a((0,p.join)(b,d),(0,p.join)(c,d));return}if((0,o.existsSync)(c))return;let d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0}),(0,o.copyFileSync)(b,c)}(f,b.mindRoot),i({ok:!0,template:e})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function cm(a){if(a.templateRoots&&a.templateRoots.length>0)return[...new Set(a.templateRoots)];let b=a.env??process.env;return[...new Set([a.projectRoot?(0,p.join)(a.projectRoot,"templates"):void 0,b.MINDOS_PROJECT_ROOT?(0,p.join)(b.MINDOS_PROJECT_ROOT,"templates"):void 0,a.runtimeRoot?(0,p.join)(a.runtimeRoot,"templates"):void 0,(0,p.join)(function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(a.cwd??process.cwd())??"","templates"),(0,p.resolve)(a.cwd??process.cwd(),"..","templates"),(0,p.resolve)(a.cwd??process.cwd(),"templates")].filter(a=>!!a))]}let cn=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]),co=(0,p.join)((0,Y.homedir)(),".mindos","im-activity.json");function cp(a,b={}){var c;let d=a.get("platform"),e=a.get("limit");if(!d||(c=d,!cn.has(c)))return i({error:"Invalid or missing platform parameter"},{status:400});let f=e?Math.min(Math.max(Number.parseInt(e,10)||10,1),100):10;return i({activities:b.getActivities?b.getActivities(d,f):function(a,b,c){try{if(!(0,o.existsSync)(c))return[];let d=JSON.parse((0,o.readFileSync)(c,"utf-8"));if(1!==d.version||!d.activities||"object"!=typeof d.activities)return[];let e=d.activities[a];return Array.isArray(e)?e.slice(0,b):[]}catch{return[]}}(d,f,b.activityPath??co)})}let cq=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cr={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]},cs={telegram:{bot_token:/^\d+:[A-Za-z0-9_-]{25,}$/},discord:{bot_token:/^[A-Za-z0-9._-]{20,}$/},slack:{bot_token:/^xoxb-/},wecom:{webhook_key:/^[A-Za-z0-9_-]{6,}$/},dingtalk:{webhook_url:/^https:\/\//}};function ct(a={}){try{let b=cw(a),c={};for(let[a,d]of Object.entries(b.providers??{})){if(!d||"object"!=typeof d)continue;let b={};for(let[a,c]of Object.entries(d))"string"==typeof c&&c.length>4?b[a]=`${c.slice(0,4)}••••${c.slice(-2)}`:b[a]="string"==typeof c?"••••":"";c[a]=b}return i({providers:c})}catch{return i({error:"Failed to read config"},{status:500})}}function cu(a,b={}){try{let{platform:c,credentials:d,conversation:e}=a&&"object"==typeof a?a:{};if(!c||(!d||"object"!=typeof d)&&(!e||"object"!=typeof e))return i({error:"Missing platform credentials or conversation settings"},{status:400});let f=cw(b);f.providers??={};let g=f.providers[c]??{};if(d&&"object"==typeof d){let a={...g,...d},b=function(a,b){let c=cr[a];if(!c)return{valid:!1,missing:["(unknown platform)"]};let d=cs[a]??{},e=c[0]??["(unknown platform)"];for(let a of c){let c=a.filter(a=>{let c=b[a];if("string"!=typeof c||!c.trim())return!0;let e=d[a];return!!e&&!e.test(c)});if(0===c.length)return{valid:!0};c.length<e.length&&(e=c)}return{valid:!1,missing:e}}(c,a);if(!b.valid)return i({error:`Invalid config: missing ${b.missing?.join(", ")}`,missing:b.missing},{status:422});f.providers[c]=a}if("feishu"===c&&e&&"object"==typeof e){if(!g.app_id||!g.app_secret)return i({error:"Save Feishu App ID and App Secret before enabling conversations"},{status:422});let a=f.providers[c]??g;a.conversation={...a.conversation??{},enabled:!!e.enabled,transport:e.transport??a.conversation?.transport??"webhook",encrypt_key:e.encrypt_key??a.conversation?.encrypt_key,verification_token:e.verification_token??a.conversation?.verification_token,public_base_url:e.public_base_url??a.conversation?.public_base_url,allow_group_mentions:e.allow_group_mentions??a.conversation?.allow_group_mentions??!0},f.providers[c]=a}return cx(f,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to save"},{status:500})}}function cv(a,b={}){try{let c=a.get("platform");if(!c)return i({error:"Missing platform parameter"},{status:400});let d=cw(b);return d.providers??={},delete d.providers[c],cx(d,b),i({ok:!0,platform:c})}catch(a){return i({error:a instanceof Error?a.message:"Failed to delete"},{status:500})}}function cw(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cq;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cx(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cq,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
9
+ `,"utf-8"),(0,o.renameSync)(e,c)}let cy=(0,p.join)((0,Y.homedir)(),".mindos","im.json");function cz(a={}){return i({ok:!0,...cC(a)})}async function cA(a={}){try{let b=cE(a),c=b.providers?.feishu;if(!c||"object"!=typeof c)return i({ok:!1,error:"Feishu is not configured. Save App ID and App Secret first."},{status:422});c.conversation={...c.conversation??{},enabled:!0,transport:"long_connection"},b.providers.feishu=c,cF(b,a);let d=a.startFeishuWSClient??cD;return await d(c),i({ok:!0,...cC(a)})}catch(b){return i({ok:!1,error:b instanceof Error?b.message:"Failed to start",...cC(a)},{status:500})}}function cB(a={}){(a.stopFeishuWSClient??function(){})();try{let b=cE(a),c=b.providers?.feishu;c&&"object"==typeof c&&c.conversation&&"object"==typeof c.conversation&&(c.conversation.transport="webhook",b.providers.feishu=c,cF(b,a))}catch{}return i({ok:!0,...cC(a)})}function cC(a){return(a.getFeishuWSClientStatus??function(){return{running:!1}})()}async function cD(){throw Error("Feishu long connection starter is not configured")}function cE(a){if(a.readConfig)return a.readConfig();let b=a.configPath??cy;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}function cF(a,b){if(b.writeConfig)return void b.writeConfig(a);let c=b.configPath??cy,d=(0,p.dirname)(c);(0,o.existsSync)(d)||(0,o.mkdirSync)(d,{recursive:!0});let e=`${c}.tmp`;(0,o.writeFileSync)(e,`${JSON.stringify(a,null,2)}
10
+ `,"utf-8"),(0,o.renameSync)(e,c)}let cG=(0,p.join)((0,Y.homedir)(),".mindos","im.json"),cH={telegram:["text","markdown"],discord:["text","markdown"],feishu:["text","markdown"],slack:["text","markdown"],wecom:["text","markdown"],dingtalk:["text","markdown"],wechat:["text"],qq:["text"]},cI={telegram:[["bot_token"]],discord:[["bot_token"]],feishu:[["app_id","app_secret"]],slack:[["bot_token"]],wecom:[["webhook_key"],["corp_id","corp_secret"]],dingtalk:[["webhook_url"],["client_id","client_secret"]],wechat:[["bot_token"]],qq:[["app_id","app_secret"]]};async function cJ(a={}){try{if(!(a.hasAnyIMConfig?a.hasAnyIMConfig():Object.keys(cM(a).providers).length>0))return i({platforms:[]});let b=a.listConfiguredIM??(()=>{var b;let c;return b=a,c=cM(b),Object.keys(c.providers).filter(a=>(function(a,b){if(!(a in cI))return!1;let c=b.providers[a];return!!c&&"object"==typeof c&&cI[a].some(a=>a.every(a=>"string"==typeof c[a]&&!!c[a]?.trim()))})(a,c)).map(a=>({platform:a,connected:!1,capabilities:cH[a]??["text"]}))}),c=await b(),d=a.getPlatformConfig??(b=>cM(a).providers[b]),e=a.buildFeishuWebhookStatus??cL,f=d("feishu"),g=e(f),h=c.map(a=>"feishu"===a.platform?{...a,webhook:g}:a);return i({platforms:h})}catch{return i({platforms:[],error:"Failed to fetch IM status"},{status:500})}}function cK(a,b={}){if("feishu"!==a.get("platform"))return i({error:"Invalid or unsupported platform parameter"},{status:400});let c=b.getPlatformConfig??(a=>cM(b).providers[a]);return i({status:(b.buildFeishuWebhookStatus??cL)(c("feishu"))})}function cL(a){let b=a&&"object"==typeof a?a:void 0,c=b?.conversation&&"object"==typeof b.conversation?b.conversation:void 0,d=c?.transport==="long_connection"?"long_connection":"webhook",e="string"==typeof c?.public_base_url&&c.public_base_url.trim()?c.public_base_url.trim().replace(/\/+$/,""):void 0,f=e?`${e}/api/im/webhook/feishu`:void 0;return c?.enabled?"long_connection"===d?b?.app_id&&b?.app_secret?{platform:"feishu",state:"pending",transport:d,lastError:"Start the Feishu long connection client to receive events locally."}:{platform:"feishu",state:"error",transport:d,lastError:"Feishu App ID and App Secret are required for long connection mode."}:c.encrypt_key?e?{platform:"feishu",state:"ready",transport:d,publicBaseUrl:e,webhookUrl:f}:{platform:"feishu",state:"pending",transport:d,lastError:"Public base URL is required for Feishu event callbacks."}:{platform:"feishu",state:"error",transport:d,publicBaseUrl:e,webhookUrl:f,lastError:"Encrypt Key is required to enable Feishu conversations."}:{platform:"feishu",state:"disabled",transport:d,publicBaseUrl:e,webhookUrl:f}}function cM(a){let b=a.configPath??cG;try{if(!(0,o.existsSync)(b))return{providers:{}};let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if(!a||"object"!=typeof a||!a.providers||"object"!=typeof a.providers)return{providers:{}};return a}catch{return{providers:{}}}}let cN=new Set(["telegram","discord","feishu","slack","wecom","dingtalk","wechat","qq"]);async function cO(a,b={}){try{let c=a&&"object"==typeof a?a:{},d="string"==typeof c.platform?c.platform.trim():"",e="string"==typeof c.recipient_id?c.recipient_id.trim():"",f="string"==typeof c.message?c.message:"";if(!d||!e||!f)return i({ok:!1,error:"Missing required fields: platform, recipient_id, message"},{status:400});if(!cN.has(d))return i({ok:!1,error:"Invalid platform"},{status:400});let g=b.sendIMMessage??cP,h=await g({platform:d,recipientId:e,text:f,format:"text"},void 0,{activityType:"test"});if(h.ok)return i({ok:!0,messageId:h.messageId,timestamp:h.timestamp});return i({ok:!1,error:h.error??"Failed to send test message"},{status:422})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Internal error"},{status:500})}}async function cP(){return{ok:!1,error:"IM sender is not configured",timestamp:new Date().toISOString()}}let cQ="Inbox",cR=".processed",cS=new Set([".txt",".md",".markdown",".csv",".json",".yaml",".yml",".xml",".html",".htm",".pdf",".doc",".docx",".docm"]),cT=`# Inbox Instruction Set
11
11
 
12
12
  ## Goal
13
13
  This is the **Inbox** - a staging area for unprocessed files.
@@ -23,44 +23,44 @@ Files here are waiting to be organized into the right location in the knowledge
23
23
  ## Boundary
24
24
  - Root INSTRUCTION.md rules take precedence.
25
25
  - This INSTRUCTION.md only applies to the Inbox directory.
26
- `,cT=`# Inbox
26
+ `,cU=`# Inbox
27
27
 
28
28
  Quick capture staging area. Drop files here and organize them later with AI.
29
29
 
30
30
  ## Usage
31
31
  - Drag files onto the MindOS window to save them here instantly.
32
32
  - Click "AI Organize" on the homepage to sort everything into the right place.
33
- `;function cU(a){if(!a.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});try{return cX(a.mindRoot),i({files:function(a){let b=(0,w.n2)(a,cP);if(!(0,o.existsSync)(b))return[];let c=Date.now(),d=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile())continue;let e=a.name.toLowerCase();if("instruction.md"===e||"readme.md"===e||a.name.startsWith("."))continue;let f=(0,p.join)(b,a.name);try{let b=(0,o.statSync)(f);d.push({name:a.name,path:`${cP}/${a.name}`,size:b.size,modifiedAt:b.mtime.toISOString(),isAging:c-b.mtime.getTime()>6048e5})}catch{}}return d.sort((a,b)=>new Date(b.modifiedAt).getTime()-new Date(a.modifiedAt).getTime())}(a.mindRoot)})}catch(a){return cY(a)}}function cV(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});if(!a||"object"!=typeof a||!Array.isArray(a.files))return i({error:"Request body must contain a files array"},{status:400});let{files:c,source:d}=a;try{return i(function(a,b,c){let d=cX(a),e=[],f=[];for(let c of b){if(!c.name||"string"!=typeof c.name){f.push({name:c.name||"(empty)",reason:"Invalid file name"});continue}if(null==c.content||"string"!=typeof c.content){f.push({name:c.name,reason:"Missing or invalid content"});continue}let b=(0,p.extname)(c.name).toLowerCase();if(!cR.has(b)){f.push({name:c.name,reason:`Unsupported format: ${b}`});continue}try{var g,h;let b=cZ(c.name),f=(g=c.encoding,h=c.content,"base64"===g?(function(a){let b=a.replace(/\s/g,"");if(b.length%4==1||/[^A-Za-z0-9+/=]/.test(b)||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(b))throw Error("Invalid base64 content");return Buffer.from(b,"base64")})(h).toString("utf-8"):h),i=function(a,b){let c,d,e=(0,p.extname)(a).toLowerCase(),f=(0,p.basename)(a,e)||"note",g=(d=((c=(0,p.extname)(a))?a.slice(0,-c.length):a).replace(/^\.+/,"").replace(/[-_]+/g," ").trim().split(/\s+/),0!==d.length&&(1!==d.length||d[0])?d.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" "):"Untitled");return".md"===e||".markdown"===e||".csv"===e||".json"===e?{content:b,targetName:cZ(a)}:".txt"===e?{content:`# ${g}
33
+ `;function cV(a){if(!a.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});try{return cY(a.mindRoot),i({files:function(a){let b=(0,w.n2)(a,cQ);if(!(0,o.existsSync)(b))return[];let c=Date.now(),d=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile())continue;let e=a.name.toLowerCase();if("instruction.md"===e||"readme.md"===e||a.name.startsWith("."))continue;let f=(0,p.join)(b,a.name);try{let b=(0,o.statSync)(f);d.push({name:a.name,path:`${cQ}/${a.name}`,size:b.size,modifiedAt:b.mtime.toISOString(),isAging:c-b.mtime.getTime()>6048e5})}catch{}}return d.sort((a,b)=>new Date(b.modifiedAt).getTime()-new Date(a.modifiedAt).getTime())}(a.mindRoot)})}catch(a){return cZ(a)}}function cW(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});if(!a||"object"!=typeof a||!Array.isArray(a.files))return i({error:"Request body must contain a files array"},{status:400});let{files:c,source:d}=a;try{return i(function(a,b,c){let d=cY(a),e=[],f=[];for(let c of b){if(!c.name||"string"!=typeof c.name){f.push({name:c.name||"(empty)",reason:"Invalid file name"});continue}if(null==c.content||"string"!=typeof c.content){f.push({name:c.name,reason:"Missing or invalid content"});continue}let b=(0,p.extname)(c.name).toLowerCase();if(!cS.has(b)){f.push({name:c.name,reason:`Unsupported format: ${b}`});continue}try{var g,h;let b=c$(c.name),f=(g=c.encoding,h=c.content,"base64"===g?(function(a){let b=a.replace(/\s/g,"");if(b.length%4==1||/[^A-Za-z0-9+/=]/.test(b)||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(b))throw Error("Invalid base64 content");return Buffer.from(b,"base64")})(h).toString("utf-8"):h),i=function(a,b){let c,d,e=(0,p.extname)(a).toLowerCase(),f=(0,p.basename)(a,e)||"note",g=(d=((c=(0,p.extname)(a))?a.slice(0,-c.length):a).replace(/^\.+/,"").replace(/[-_]+/g," ").trim().split(/\s+/),0!==d.length&&(1!==d.length||d[0])?d.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" "):"Untitled");return".md"===e||".markdown"===e||".csv"===e||".json"===e?{content:b,targetName:c$(a)}:".txt"===e?{content:`# ${g}
34
34
 
35
- ${b}`,targetName:cZ(`${f}.md`)}:".yaml"===e||".yml"===e?{content:`# ${g}
35
+ ${b}`,targetName:c$(`${f}.md`)}:".yaml"===e||".yml"===e?{content:`# ${g}
36
36
 
37
37
  \`\`\`yaml
38
38
  ${b}
39
39
  \`\`\`
40
- `,targetName:cZ(`${f}.md`)}:".html"===e||".htm"===e?{content:`# ${g}
40
+ `,targetName:c$(`${f}.md`)}:".html"===e||".htm"===e?{content:`# ${g}
41
41
 
42
42
  ${b.replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<style[\s\S]*?<\/style>/gi,"").replace(/<[^>]+>/g,"").replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/\n{3,}/g,"\n\n").trim()}
43
- `,targetName:cZ(`${f}.md`)}:".xml"===e?{content:`# ${g}
43
+ `,targetName:c$(`${f}.md`)}:".xml"===e?{content:`# ${g}
44
44
 
45
45
  \`\`\`xml
46
46
  ${b}
47
47
  \`\`\`
48
- `,targetName:cZ(`${f}.md`)}:{content:`# ${g}
48
+ `,targetName:c$(`${f}.md`)}:{content:`# ${g}
49
49
 
50
- ${b}`,targetName:cZ(`${f}.md`)}}(b,f),j=function(a,b){let c=(0,p.join)(a,b);if(!(0,o.existsSync)(c))return b;let d=(0,p.extname)(b),e=d?b.slice(0,-d.length):b,f=1;for(;(0,o.existsSync)(c);){let b=`${e}-${f}${d}`;if(c=(0,p.join)(a,b),!(0,o.existsSync)(c))return b;f++}return b}(d,i.targetName),k=`${cP}/${j}`;(0,w.eX)(a,k),(0,o.writeFileSync)((0,p.join)(d,j),i.content,"utf-8"),e.push({original:c.name,path:k})}catch(a){f.push({name:c.name,reason:a instanceof Error?a.message:String(a)})}}return{saved:e,skipped:f,source:c}}(b.mindRoot,c,d))}catch(a){return cY(a)}}function cW(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});let{names:c}=a??{};if(!Array.isArray(c)||0===c.length)return i({error:"Request body must contain a non-empty names array"},{status:400});try{return i(function(a,b){let c=(0,w.n2)(a,cP),d=(0,w.n2)(a,`${cP}/${cQ}`);(0,o.mkdirSync)(d,{recursive:!0});let e=[],f=[],g=new Date().toISOString().replace(/[-:]/g,"").replace("T","-").slice(0,15);for(let d of b){if(!d)continue;let b=d.toLowerCase();if("instruction.md"===b||"readme.md"===b)continue;let h=(0,p.basename)(d),i=(0,p.join)(c,h);try{if((0,w.eX)(a,`${cP}/${h}`),!(0,o.existsSync)(i)){f.push(d);continue}let b=`${g}_${h}`,c=`${cP}/${cQ}/${b}`;(0,o.renameSync)(i,(0,w.n2)(a,c)),e.push({original:d,archivedPath:c})}catch{f.push(d)}}return{archived:e,notFound:f}}(b.mindRoot,c.filter(a=>"string"==typeof a)))}catch(a){return cY(a)}}function cX(a){let b=(0,w.n2)(a,cP);(0,o.mkdirSync)(b,{recursive:!0});let c=(0,p.join)(b,"INSTRUCTION.md");(0,o.existsSync)(c)||(0,o.writeFileSync)(c,cS,"utf-8");let d=(0,p.join)(b,"README.md");return(0,o.existsSync)(d)||(0,o.writeFileSync)(d,cT,"utf-8"),b}function cY(a){let b=a instanceof Error?a.message:String(a);return/access denied|outside root|absolute paths/i.test(b)?i({error:"Access denied"},{status:403}):i({error:b},{status:500})}function cZ(a){let b=a.replace(/\\/g,"/").split("/").pop()??"";return b=(b=(b=(b=(b=b.replace(/\.\./g,"").replace(/^\/+/,"")).replace(/[\\/:*?"<>|\x00-\x1f]/g,"-")).replace(/-{2,}/g,"-")).replace(/^[-\s]+|[-\s]+$/g,"")).replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i.test(b)&&(b=`_${b}`),b||"imported-file"}function c$(a){var b;let c,d,e=(a.metricsSnapshot??function(){return{processStartTime:Date.now(),agentRequests:0,toolExecutions:0,totalTokens:{input:0,output:0},avgResponseTimeMs:0,errors:0}})(),f=(a.memoryUsage??process.memoryUsage)(),g=(b=a.mindRoot,c=0,d=0,(0,o.existsSync)(b)&&!function a(b){let e;try{e=(0,o.readdirSync)(b,{withFileTypes:!0})}catch{return}for(let f of e){if(ag.has(f.name))continue;let e=(0,p.join)(b,f.name);if(f.isDirectory())a(e);else if(f.isFile())try{let a=(0,o.statSync)(e);c++,d+=a.size}catch{}}}(b),{fileCount:c,totalSizeBytes:d}),h=a.mcpPort??(Number(process.env.MINDOS_MCP_PORT)||Number(process.env.MCP_PORT)||8781);return i({system:{uptimeMs:Date.now()-e.processStartTime,memory:{heapUsed:f.heapUsed,heapTotal:f.heapTotal,rss:f.rss},nodeVersion:a.nodeVersion??process.version},application:{agentRequests:e.agentRequests,toolExecutions:e.toolExecutions,totalTokens:e.totalTokens,avgResponseTimeMs:e.avgResponseTimeMs,errors:e.errors},knowledgeBase:{root:a.mindRoot,fileCount:g.fileCount,totalSizeBytes:g.totalSizeBytes},mcp:{running:!0,port:h}})}function c_(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function c0(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function c1(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function c2(a,b){let c=a.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(c1))throw Error(`Invalid ${b}`);return c}function c3(a,b){if(!a||c1(a))throw Error(`Invalid ${b}`)}function c4(a,b){if(!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function c5(a){return JSON.stringify(String(a))}function c6(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c5(a)}function c7(a,b,...c){return[...a.split(".").filter(Boolean).map(c6),c6(b),...c.map(c6)].join(".")}function c8(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c5(a)}async function c9(a,b,c=fetch){try{let d={"Content-Type":"application/json"};b&&(d.Authorization=`Bearer ${b}`);let e=new AbortController,f=setTimeout(()=>e.abort(),2e3);try{let b=await c(a,{method:"POST",headers:d,body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list",params:{}}),signal:e.signal});if(b.ok)return{verified:!0};return{verified:!1,verifyError:`HTTP ${b.status}`}}finally{clearTimeout(f)}}catch(a){return{verified:!1,verifyError:a instanceof Error?a.message:String(a)}}}async function da(a,b){try{let c=[],d=a.transport??"auto";for(let e of a.agents??[]){let{key:f,scope:g}=e,h=b.agents[f];if(!h){c.push({agent:f,status:"error",message:`Unknown agent: ${f}`});continue}let i=e.transport&&"auto"!==e.transport?e.transport:"auto"!==d?d:h.preferredTransport,j="global"===g?h.global:h.project;if(!j){c.push({agent:f,status:"error",message:`${h.name} does not support ${g} scope`});continue}let k=c0(j,b.homeDir),l=function(a,b,c,d){if("stdio"===a)return{type:"stdio",command:"mindos",args:["mcp"],env:{MCP_TRANSPORT:"stdio"}};let e=Number(b.env?.MINDOS_MCP_PORT)||b.readSettings?.().mcpPort||8781,f={url:c||`http://localhost:${e}/mcp`};return d&&(f.headers={Authorization:`Bearer ${d}`}),f}(i,b,a.url,a.token);try{if((0,o.mkdirSync)((0,p.dirname)(k),{recursive:!0}),"toml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=`[${c7(b,c)}]`,f=`[${c7(b,c,"env")}]`,g=`[${c7(b,c,"headers")}]`,h=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),i=[],j=!1;for(let b of a.split("\n")){let a=b.trim();if(a===e||a===f||a===g||h.has(a)){j=!0;continue}j&&a.startsWith("[")&&(j=!1),j||i.push(b)}for(;i.length>0&&i[i.length-1]?.trim()==="";)i.pop();return i.push("",function(a,b,c){let d=[`[${c7(a,b)}]`];if(c.type&&d.push(`type = ${c5(c.type)}`),c.command&&d.push(`command = ${c5(c.command)}`),c.url&&d.push(`url = ${c5(c.url)}`),Array.isArray(c.args)&&d.push(`args = [${c.args.map(c5).join(", ")}]`),c.env&&"object"==typeof c.env)for(let[e,f]of(d.push("",`[${c7(a,b,"env")}]`),Object.entries(c.env)))d.push(`${c6(e)} = ${c5(f)}`);if(c.headers&&"object"==typeof c.headers)for(let[e,f]of(d.push("",`[${c7(a,b,"headers")}]`),Object.entries(c.headers)))d.push(`${c6(e)} = ${c5(f)}`);return d.join("\n")}(b,c,d),""),i.join("\n")}(a,h.key,"mindos",l),"utf-8")}else if("yaml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=function(a,b){let c=[` ${c8(a)}:`];if(b.type&&c.push(` type: ${c5(b.type)}`),b.command&&c.push(` command: ${c5(b.command)}`),b.url&&c.push(` url: ${c5(b.url)}`),Array.isArray(b.args)&&c.push(` args: [${b.args.map(c5).join(", ")}]`),b.env&&"object"==typeof b.env)for(let[a,d]of(c.push(" env:"),Object.entries(b.env)))c.push(` ${c8(a)}: ${c5(d)}`);if(b.headers&&"object"==typeof b.headers)for(let[a,d]of(c.push(" headers:"),Object.entries(b.headers)))c.push(` ${c8(a)}: ${c5(d)}`);return c.join("\n")}(c,d);if(!a.trim())return`${b}:
50
+ ${b}`,targetName:c$(`${f}.md`)}}(b,f),j=function(a,b){let c=(0,p.join)(a,b);if(!(0,o.existsSync)(c))return b;let d=(0,p.extname)(b),e=d?b.slice(0,-d.length):b,f=1;for(;(0,o.existsSync)(c);){let b=`${e}-${f}${d}`;if(c=(0,p.join)(a,b),!(0,o.existsSync)(c))return b;f++}return b}(d,i.targetName),k=`${cQ}/${j}`;(0,w.eX)(a,k),(0,o.writeFileSync)((0,p.join)(d,j),i.content,"utf-8"),e.push({original:c.name,path:k})}catch(a){f.push({name:c.name,reason:a instanceof Error?a.message:String(a)})}}return{saved:e,skipped:f,source:c}}(b.mindRoot,c,d))}catch(a){return cZ(a)}}function cX(a,b){if(!b.mindRoot.trim())return i({error:"MIND_ROOT is not configured"},{status:400});let{names:c}=a??{};if(!Array.isArray(c)||0===c.length)return i({error:"Request body must contain a non-empty names array"},{status:400});try{return i(function(a,b){let c=(0,w.n2)(a,cQ),d=(0,w.n2)(a,`${cQ}/${cR}`);(0,o.mkdirSync)(d,{recursive:!0});let e=[],f=[],g=new Date().toISOString().replace(/[-:]/g,"").replace("T","-").slice(0,15);for(let d of b){if(!d)continue;let b=d.toLowerCase();if("instruction.md"===b||"readme.md"===b)continue;let h=(0,p.basename)(d),i=(0,p.join)(c,h);try{if((0,w.eX)(a,`${cQ}/${h}`),!(0,o.existsSync)(i)){f.push(d);continue}let b=`${g}_${h}`,c=`${cQ}/${cR}/${b}`;(0,o.renameSync)(i,(0,w.n2)(a,c)),e.push({original:d,archivedPath:c})}catch{f.push(d)}}return{archived:e,notFound:f}}(b.mindRoot,c.filter(a=>"string"==typeof a)))}catch(a){return cZ(a)}}function cY(a){let b=(0,w.n2)(a,cQ);(0,o.mkdirSync)(b,{recursive:!0});let c=(0,p.join)(b,"INSTRUCTION.md");(0,o.existsSync)(c)||(0,o.writeFileSync)(c,cT,"utf-8");let d=(0,p.join)(b,"README.md");return(0,o.existsSync)(d)||(0,o.writeFileSync)(d,cU,"utf-8"),b}function cZ(a){let b=a instanceof Error?a.message:String(a);return/access denied|outside root|absolute paths/i.test(b)?i({error:"Access denied"},{status:403}):i({error:b},{status:500})}function c$(a){let b=a.replace(/\\/g,"/").split("/").pop()??"";return b=(b=(b=(b=(b=b.replace(/\.\./g,"").replace(/^\/+/,"")).replace(/[\\/:*?"<>|\x00-\x1f]/g,"-")).replace(/-{2,}/g,"-")).replace(/^[-\s]+|[-\s]+$/g,"")).replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i.test(b)&&(b=`_${b}`),b||"imported-file"}function c_(a){var b;let c,d,e=(a.metricsSnapshot??function(){return{processStartTime:Date.now(),agentRequests:0,toolExecutions:0,totalTokens:{input:0,output:0},avgResponseTimeMs:0,errors:0}})(),f=(a.memoryUsage??process.memoryUsage)(),g=(b=a.mindRoot,c=0,d=0,(0,o.existsSync)(b)&&!function a(b){let e;try{e=(0,o.readdirSync)(b,{withFileTypes:!0})}catch{return}for(let f of e){if(ag.has(f.name))continue;let e=(0,p.join)(b,f.name);if(f.isDirectory())a(e);else if(f.isFile())try{let a=(0,o.statSync)(e);c++,d+=a.size}catch{}}}(b),{fileCount:c,totalSizeBytes:d}),h=a.mcpPort??(Number(process.env.MINDOS_MCP_PORT)||Number(process.env.MCP_PORT)||8781);return i({system:{uptimeMs:Date.now()-e.processStartTime,memory:{heapUsed:f.heapUsed,heapTotal:f.heapTotal,rss:f.rss},nodeVersion:a.nodeVersion??process.version},application:{agentRequests:e.agentRequests,toolExecutions:e.toolExecutions,totalTokens:e.totalTokens,avgResponseTimeMs:e.avgResponseTimeMs,errors:e.errors},knowledgeBase:{root:a.mindRoot,fileCount:g.fileCount,totalSizeBytes:g.totalSizeBytes},mcp:{running:!0,port:h}})}function c0(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function c1(a,b=(0,Y.homedir)()){return a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(b,a.slice(2)):a}function c2(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function c3(a,b){let c=a.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(c2))throw Error(`Invalid ${b}`);return c}function c4(a,b){if(!a||c2(a))throw Error(`Invalid ${b}`)}function c5(a,b){if(!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function c6(a){return JSON.stringify(String(a))}function c7(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c6(a)}function c8(a,b,...c){return[...a.split(".").filter(Boolean).map(c7),c7(b),...c.map(c7)].join(".")}function c9(a){return/^[A-Za-z0-9_-]+$/.test(a)?a:c6(a)}async function da(a,b,c=fetch){try{let d={"Content-Type":"application/json"};b&&(d.Authorization=`Bearer ${b}`);let e=new AbortController,f=setTimeout(()=>e.abort(),2e3);try{let b=await c(a,{method:"POST",headers:d,body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list",params:{}}),signal:e.signal});if(b.ok)return{verified:!0};return{verified:!1,verifyError:`HTTP ${b.status}`}}finally{clearTimeout(f)}}catch(a){return{verified:!1,verifyError:a instanceof Error?a.message:String(a)}}}async function db(a,b){try{let c=[],d=a.transport??"auto";for(let e of a.agents??[]){let{key:f,scope:g}=e,h=b.agents[f];if(!h){c.push({agent:f,status:"error",message:`Unknown agent: ${f}`});continue}let i=e.transport&&"auto"!==e.transport?e.transport:"auto"!==d?d:h.preferredTransport,j="global"===g?h.global:h.project;if(!j){c.push({agent:f,status:"error",message:`${h.name} does not support ${g} scope`});continue}let k=c1(j,b.homeDir),l=function(a,b,c,d){if("stdio"===a)return{type:"stdio",command:"mindos",args:["mcp"],env:{MCP_TRANSPORT:"stdio"}};let e=Number(b.env?.MINDOS_MCP_PORT)||b.readSettings?.().mcpPort||8781,f={url:c||`http://localhost:${e}/mcp`};return d&&(f.headers={Authorization:`Bearer ${d}`}),f}(i,b,a.url,a.token);try{if((0,o.mkdirSync)((0,p.dirname)(k),{recursive:!0}),"toml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=`[${c8(b,c)}]`,f=`[${c8(b,c,"env")}]`,g=`[${c8(b,c,"headers")}]`,h=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),i=[],j=!1;for(let b of a.split("\n")){let a=b.trim();if(a===e||a===f||a===g||h.has(a)){j=!0;continue}j&&a.startsWith("[")&&(j=!1),j||i.push(b)}for(;i.length>0&&i[i.length-1]?.trim()==="";)i.pop();return i.push("",function(a,b,c){let d=[`[${c8(a,b)}]`];if(c.type&&d.push(`type = ${c6(c.type)}`),c.command&&d.push(`command = ${c6(c.command)}`),c.url&&d.push(`url = ${c6(c.url)}`),Array.isArray(c.args)&&d.push(`args = [${c.args.map(c6).join(", ")}]`),c.env&&"object"==typeof c.env)for(let[e,f]of(d.push("",`[${c8(a,b,"env")}]`),Object.entries(c.env)))d.push(`${c7(e)} = ${c6(f)}`);if(c.headers&&"object"==typeof c.headers)for(let[e,f]of(d.push("",`[${c8(a,b,"headers")}]`),Object.entries(c.headers)))d.push(`${c7(e)} = ${c6(f)}`);return d.join("\n")}(b,c,d),""),i.join("\n")}(a,h.key,"mindos",l),"utf-8")}else if("yaml"===h.format){let a=(0,o.existsSync)(k)?(0,o.readFileSync)(k,"utf-8"):"";(0,o.writeFileSync)(k,function(a,b,c,d){let e=function(a,b){let c=[` ${c9(a)}:`];if(b.type&&c.push(` type: ${c6(b.type)}`),b.command&&c.push(` command: ${c6(b.command)}`),b.url&&c.push(` url: ${c6(b.url)}`),Array.isArray(b.args)&&c.push(` args: [${b.args.map(c6).join(", ")}]`),b.env&&"object"==typeof b.env)for(let[a,d]of(c.push(" env:"),Object.entries(b.env)))c.push(` ${c9(a)}: ${c6(d)}`);if(b.headers&&"object"==typeof b.headers)for(let[a,d]of(c.push(" headers:"),Object.entries(b.headers)))c.push(` ${c9(a)}: ${c6(d)}`);return c.join("\n")}(c,d);if(!a.trim())return`${b}:
51
51
  ${e}
52
- `;let f=[],g=!1,h=!1,i=-1,j=!1,k=-1;for(let d of a.split("\n")){let a=d.trim(),l=d.length-d.trimStart().length;if(0===l&&a===`${b}:`){g=!0,h=!0,i=-1,f.push(d);continue}if(0===l&&a&&!a.startsWith("#")&&g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e,"",d),g=!1,j=!1;continue}if(!g){f.push(d);continue}if(!a||a.startsWith("#")){j||f.push(d);continue}if(i<0&&(i=l),l===i){if(a===`${c}:`||a===`${c8(c)}:`){j=!0,k=l;continue}j=!1}if(j){if(l>k)continue;j=!1}f.push(d)}if(g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e)}if(!h){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push("",`${b}:`,e)}let l=f.join("\n");return l.endsWith("\n")||(l+="\n"),l}(a,h.key,"mindos",l),"utf-8")}else{let a=(0,o.existsSync)(k)?c_((0,o.readFileSync)(k,"utf-8")):{};("global"===g&&h.globalNestedKey?function(a,b){let c=c2(b,"nested config path"),d=a;for(let a of c)c4(d,a)||(d[a]={}),d=d[a];return d}(a,h.globalNestedKey):(c3(h.key,"agent config key"),!c4(a,h.key)&&(a[h.key]={}),a[h.key])).mindos=l,(0,o.writeFileSync)(k,`${JSON.stringify(a,null,2)}
53
- `,"utf-8")}let d={agent:f,status:"ok",path:j,transport:i};if(await db(f,b),"http"===i){let c=await c9(String(l.url),a.token,b.fetcher);d.verified=c.verified,c.verifyError&&(d.verifyError=c.verifyError)}c.push(d)}catch(a){c.push({agent:f,status:"error",message:String(a)})}}return i({results:c})}catch(a){return m(a)}}async function db(a,b){if(b.resolveSkillWorkspaceProfile)try{let c=b.resolveSkillWorkspaceProfile(a),d=b.readSettings?.()??{},e=d.disabledSkills?.includes("mindos")?"mindos-zh":"mindos",f=(0,p.join)(c.workspacePath,e,"SKILL.md");b.recordSkillInstall?.(a,e,f);let g=b.skillAgentRegistry?.[a];if(g&&("additional"===g.mode||"unsupported"===g.mode)&&(0,o.mkdirSync)(c.workspacePath,{recursive:!0}),g?.mode!=="unsupported"||!b.projectRoot||!b.copyDirectory)return;let h=[(0,p.join)(b.projectRoot,"skills",e),(0,p.join)(b.projectRoot,"packages","web","data","skills",e)],i=b.directoryExists??o.existsSync,j=h.find(a=>i(a)),k=(0,p.join)(c.workspacePath,e);j&&!i(k)&&await b.copyDirectory(j,k)}catch{}}function dc(a,b){try{let c=[];for(let d of a.agents??[]){let{key:a,scope:e}=d,f=b.agents[a];if(!f){c.push({agent:a,status:"error",message:`Unknown agent: ${a}`});continue}let g="global"===e?f.global:f.project;if(!g){c.push({agent:a,status:"error",message:`${f.name} does not support ${e} scope`});continue}let h=c0(g,b.homeDir);if(!(0,o.existsSync)(h)){c.push({agent:a,status:"ok",message:"Config file does not exist"});continue}try{if("toml"===f.format)(0,o.writeFileSync)(h,function(a,b,c){let d=`[${c7(b,c)}]`,e=`[${c7(b,c,"env")}]`,f=`[${c7(b,c,"headers")}]`,g=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),h=[],i=!1;for(let b of a.split("\n")){let a=b.trim();if(a===d||a===e||a===f||g.has(a)){i=!0;continue}i&&a.startsWith("[")&&(i=!1),i||h.push(b)}let j=[];for(let a of h)""===a.trim()&&j.length>0&&j[j.length-1]?.trim()===""||j.push(a);return j.join("\n")}((0,o.readFileSync)(h,"utf-8"),f.key,"mindos"),"utf-8");else{let a=c_((0,o.readFileSync)(h,"utf-8")),b="global"===e&&f.globalNestedKey?function(a,b){let c=c2(b,"nested config path"),d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}(a,f.globalNestedKey):(c3(f.key,"agent config key"),c4(a,f.key)??void 0);b&&"mindos"in b&&(delete b.mindos,(0,o.writeFileSync)(h,`${JSON.stringify(a,null,2)}
54
- `,"utf-8"))}c.push({agent:a,status:"ok",path:g})}catch(b){c.push({agent:a,status:"error",message:String(b)})}}return i({results:c})}catch(a){return m(a)}}var dd=c(29021),de=c(21820);async function df(a){try{let b=a.env??process.env,c=a.customAgents??[],d=Object.fromEntries(c.map(a=>[a.key,a])),e=new Set(c.map(a=>a.key)),f=a.builtInAgents??{},g=Object.entries(a.agents).map(([b,c])=>{var g,h,i,j,k,l,m,n,o,p,q,r,s,t;let u,v,w,y,z,A,B,C=e.has(b)&&!(b in f),D=d[b],E=C?(g=c,u=(h=a).pathExists??dd.existsSync,v=g.presenceDirs?.some(a=>u(dm(a,h.homeDir)))??!1,g.presenceCli&&(h.commandExists??dp)(g.presenceCli)&&(v=!0),v):a.detectAgentPresence?.(b)??(i=c,w=(j=a).pathExists??dd.existsSync,!!i.presenceDirs?.some(a=>w(dm(a,j.homeDir)))||!!i.presenceCli&&(j.commandExists??dp)(i.presenceCli)),F=C?function(a,b){let c=dm(a.global,b.homeDir);if(!(b.pathExists??dd.existsSync)(c))return{installed:!1};try{let d=b.readTextFile??dn,e=JSON.parse(d(c)),f=a.globalNestedKey?function(a,b){let c=b.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(dl))return null;let d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}(e,a.globalNestedKey)??{}:e,g=dk(f,a.key)??{};if(g&&"object"==typeof g&&"mindos"in g)return{installed:!0,scope:"global",configPath:c}}catch{}return{installed:!1}}(c,a):a.detectInstalled?.(b)??{installed:!1},G=C&&D?(k=D,l=c,m=a,y=k.baseDir.endsWith("/")?`${k.baseDir}skills/`:`${k.baseDir}/skills/`,{mode:"additional",skillAgentName:k.key,workspacePath:dm(k.skillDir||l.presenceDirs?.[0]&&`${l.presenceDirs[0]}skills/`||y,m.homeDir)}):a.resolveSkillWorkspaceProfile?.(b)??(n=b,o=c,p=a,z=dj(o,p),{mode:"mindos"===n?"universal":"unsupported",workspacePath:(0,x.join)(z,"skills")}),H=C?{hiddenRootPath:"",hiddenRootPresent:!1,conversationSignal:!1,usageSignal:!1}:a.detectAgentRuntimeSignals?.(b)??(q=c,r=a,{hiddenRootPath:A=dj(q,r),hiddenRootPresent:(r.pathExists??dd.existsSync)(A),conversationSignal:!1,usageSignal:!1}),I=C&&D?function(a,b={}){let c=dm(a.global,b.homeDir);if(!(b.pathExists??dd.existsSync)(c))return{servers:[],sources:[]};try{let d=(b.readTextFile??dn)(c),e="toml"===a.format?function(a,b){let c=new Set,d=`${b}.`;for(let b of a.split("\n")){let a=b.trim();if(!a.startsWith("[")||!a.endsWith("]"))continue;let e=a.slice(1,-1).trim();if(!e.startsWith(d))continue;let f=e.slice(d.length).split(".")[0];f&&c.add(f)}return[...c].sort()}(d,a.configKey):function(a,b){try{let c,d=(c=(c=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a)).replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(c):{},e=dk(d,b);if(e)return Object.keys(e).sort()}catch{}return[]}(d,a.configKey);return{servers:e,sources:e.length>0?[`local:${c}`]:[]}}catch{return{servers:[],sources:[]}}}(D,a):a.detectAgentConfiguredMcpServers?.(b)??{servers:[],sources:[]},J=C&&D?a.scanCustomAgentSkills?.(D)??(s=D,t=a,B=dm(s.skillDir||(s.baseDir.endsWith("/")?`${s.baseDir}skills/`:`${s.baseDir}/skills/`),t.homeDir),{skills:t.listSkillNames?.(B)??function(a){if(!(0,dd.existsSync)(a))return[];try{return(0,dd.readdirSync)(a,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{return[]}}(B),sourcePath:B}):a.detectAgentInstalledSkills?.(b)??{skills:[],sourcePath:G.workspacePath};return{key:b,name:c.name,present:E,installed:F.installed,scope:F.scope,transport:F.transport,configPath:F.configPath,url:F.url,hasProjectScope:!!c.project,hasGlobalScope:!!c.global,preferredTransport:c.preferredTransport,format:c.format??"json",configKey:c.key,globalNestedKey:c.globalNestedKey,globalPath:c.global,projectPath:c.project,skillMode:G.mode,skillAgentName:G.skillAgentName,skillWorkspacePath:G.workspacePath,hiddenRootPath:H.hiddenRootPath,hiddenRootPresent:H.hiddenRootPresent,runtimeConversationSignal:H.conversationSignal,runtimeUsageSignal:H.usageSignal,runtimeLastActivityAt:H.lastActivityAt,configuredMcpServers:I.servers,configuredMcpServerCount:I.servers.length,configuredMcpSources:I.sources,installedSkillNames:J.skills,installedSkillCount:J.skills.length,installedSkillSourcePath:J.sourcePath,isCustom:C,customBaseDir:C?D?.baseDir:void 0}}),h=g.find(a=>"mindos"===a.key);return h&&function(a,b,c){a.present=!0,a.installed=!0,a.scope="builtin";try{let d=Number(c.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(b.readSettings?.(),"mcpPort")||8781;a.transport=`http :${d}`}catch{a.transport="http :8781"}try{let c=b.loadMindosSkills?.();c&&(a.installedSkillNames=c.names,a.installedSkillCount=c.names.length,a.installedSkillSourcePath=c.sourcePath,a.skillMode="universal",a.skillWorkspacePath=c.workspacePath)}catch{}let d=b.homeDir??(0,de.homedir)(),e=b.mindRoot??(0,x.join)(d,".mindos"),f=(0,x.join)(d,".mindos","mcp.json");try{if((b.pathExists??dd.existsSync)(f)){let c=b.readTextFile??dn,d=JSON.parse(c(f)),e=Object.keys(d.mcpServers??{});a.configuredMcpServers=e,a.configuredMcpServerCount=e.length,a.configuredMcpSources=e.length>0?[`local:${f}`]:[]}}catch{}a.runtimeConversationSignal=!0,a.runtimeLastActivityAt=(b.now??(()=>new Date))().toISOString(),a.hiddenRootPath=e,a.hiddenRootPresent=!0}(h,a,b),await dg(g,a),g.sort(dh),i({agents:g})}catch(a){return m(a)}}async function dg(a,b){let c=b.fetchHead??dq;await Promise.all(a.map(async a=>{if(a.installed&&a.url&&a.transport?.startsWith("http"))try{let b=new AbortController,d=setTimeout(()=>b.abort(),1e3);try{let d=await c(a.url,{signal:b.signal});d.status>=300&&405!==d.status&&(a.installed=!1)}finally{clearTimeout(d)}}catch{a.installed=!1}}))}function dh(a,b){return"mindos"===a.key?-1:"mindos"===b.key?1:di(a)-di(b)}function di(a){return a.installed?0:a.present?1:2}function dj(a,b){let c=b.pathExists??dd.existsSync;for(let d of a.presenceDirs??[]){let a=dm(d,b.homeDir);if(c(a))return a}return(0,x.dirname)(dm(a.global,b.homeDir))}function dk(a,b){if(!a||"object"!=typeof a||dl(b)||!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function dl(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function dm(a,b){return a.startsWith("~/")||a.startsWith("~\\")?(0,x.resolve)(b??(0,de.homedir)(),a.slice(2)):a}function dn(a){return(0,dd.readFileSync)(a,"utf-8")}function dp(a){try{return(0,b5.execFileSync)("win32"===process.platform?"where":"which",[a],{stdio:"pipe"}),!0}catch{return!1}}async function dq(a,b){return"function"!=typeof fetch?{status:200}:{status:(await fetch(a,{method:"HEAD",signal:b.signal})).status}}function dr(a){let b,c;try{var d;b=(d=a.readMcpConfig())&&"object"==typeof d&&d.mcpServers&&"object"==typeof d.mcpServers?d:{mcpServers:{}},c=a.readMcpToolCache()}catch(a){return m(a)}return i({servers:Object.entries(b.mcpServers).map(([a,b])=>{let d=c?.[a],e=(d?.tools??[]).map(a=>({name:a.name,description:a.description??""}));return{name:a,toolCount:e.length,tools:e,directTools:b.directTools??!1,lifecycle:b.lifecycle??"lazy",cached:!!d}})})}function ds(a,b){var c,d;let e=(c=a)&&"object"==typeof c?c:{};if(!e.server||"string"!=typeof e.server)return i({error:'Missing or invalid "server" field'},{status:400});let f=e.server.trim();if(!f||"__proto__"===(d=f)||"prototype"===d||"constructor"===d)return i({error:"Invalid server name"},{status:400});let g=e.directTools;if(!0!==g&&!1!==g&&!Array.isArray(g))return i({error:'"directTools" must be true, false, or string[]'},{status:400});if(Array.isArray(g)&&!g.every(a=>"string"==typeof a))return i({error:'"directTools" array must contain only strings'},{status:400});try{b.updateServerDirectTools(f,g)}catch(a){return m(a)}return i({ok:!0,server:f,directTools:g})}let dt=new Set(["mindos","mindos-zh"]);function du(a,b={}){try{var c,d,e,f,g,h,j;let k=(c=a)&&"object"==typeof c?c:{},l=k.skill;if(!l||!dt.has(l))return i({error:"Invalid skill name"},{status:400});let m=Array.isArray(k.agents)?k.agents:[],n=m.find(a=>"string"!=typeof a||!dv(a.trim()));if(void 0!==n)return i({error:"Invalid agent name"},{status:400});let o=(d=m.map(a=>a.trim()),e=b.skillAgentRegistry??{},d.flatMap(a=>{if(!dv(a))return[];let b=Object.prototype.hasOwnProperty.call(e,a)?e[a]:void 0;if(!b)return[a];if("unsupported"===b.mode||"universal"===b.mode)return[];let c=b.skillAgentName||a;return dv(c)?[c]:[]})),p=["GeminiLight/MindOS"],q=function(a){let b=a.projectRoot??process.cwd(),c=a.cwd??process.cwd(),d=a.pathExists??dd.existsSync;for(let a of[(0,x.resolve)(c,"data/skills"),(0,x.join)(b,"skills"),(0,x.join)(b,"packages","web","data","skills")])if(d(a))return a;return null}(b);q&&p.push(q);let r="",s="",t="",u=b.runCommand??dx;for(let a of p){let c=(f=a,g=l,h=o,["skills","add",f,"--skill",g,...(h.length>0?h:["universal"]).flatMap(a=>["-a",a]),"-g","-y"]),d=(j=c,["npx",...j].map(dw).join(" "));r=d;try{return s=u("npx",c,{encoding:"utf-8",timeout:3e4,env:{...process.env,...b.env??{},NODE_ENV:"production"},stdio:"pipe"}),i({ok:!0,skill:l,agents:o,cmd:d,stdout:s.trim()})}catch(a){s=a.stdout||"",t=a.stderr||a.message||"Unknown error"}}return i({ok:!1,skill:l,agents:o,cmd:r,stdout:s,stderr:t})}catch(a){return m(a)}}function dv(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&"__proto__"!==a&&"prototype"!==a&&"constructor"!==a}function dw(a){return/^[A-Za-z0-9._=-]+$/.test(a)?a:`"${a.replace(/(["\\$`])/g,"\\$1")}"`}function dx(a,b,c){let d="npx"===a?function(a,b={}){let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&d.add((0,x.join)((0,x.dirname)(b.npm_execpath),"npx-cli.js"));let e=(0,x.dirname)(a);for(let a of(d.add((0,x.join)(e,"node_modules","npm","bin","npx-cli.js")),d.add((0,x.resolve)(e,"..","lib","node_modules","npm","bin","npx-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??dd.existsSync);if(e)return{command:d,args:[e,...a]};if((b.platform??process.platform)==="win32")throw Error("Unable to locate npm npx-cli.js for shell-free skill installation on Windows");return{command:"npx",args:a}}(b,{env:c.env}):{command:a,args:b};return(0,b5.execFileSync)(d.command,d.args,c)}var dy=c(77030);async function dz(a){try{let b=a.env??process.env,c=a.readSettings?.(),d=Number(b.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(c,"mcpPort")||8781,e=b.MINDOS_WEB_PORT||"3456",f=b.AUTH_TOKEN||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];return"string"==typeof c&&c.length>0?c:void 0}(c,"authToken"),g="1"===b.MINDOS_MANAGED;if((a.killByPort??function(a){let b=process.platform;for(let c of function(a,b={}){var c;if(!(Number.isInteger(c=a)&&c>0&&c<=65535))return[];let d=b.platform??process.platform,e=b.execFile??((a,b)=>(0,aE.execFileSync)(a,b,{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}));if("win32"===d)try{return function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(!/LISTENING/i.test(f))continue;let b=f.trim().split(/\s+/);if(b.length<5)continue;let g=b[1],h=Number(b[b.length-1]);d=g,e=a,d?.endsWith(`:${e}`)&&h>0&&c.add(h)}return[...c]}(a,e("netstat",["-ano"]))}catch{return[]}let f=new Set;try{for(let b of e("lsof",["-ti",`:${a}`]).split(/\r?\n/).map(a=>Number(a.trim())).filter(a=>a>0))f.add(b)}catch{}if(0===f.size)try{for(let b of function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(d=f,e=a,RegExp(`:${e}(?!\\d)`).test(d))for(let a of f.matchAll(/pid=(\d+)/g)){let b=Number(a[1]);b>0&&c.add(b)}}return[...c]}(a,e("ss",["-tlnp"])))f.add(b)}catch{}return[...f]}(a,{platform:b}))try{"win32"===b?(0,aE.execFileSync)("taskkill",["/PID",String(c),"/T","/F"],{stdio:"ignore"}):process.kill(c,"SIGKILL")}catch{}})(d),g)return i({ok:!0,port:d,note:"ProcessManager will respawn"});let h=a.waitForPortFree??dA;if(!await h(d,5e3))return i({error:`MCP port ${d} still in use after kill`},{status:500});let j=a.pathExists??o.existsSync,{mcpDir:k,mcpBundle:l}=function(a,b){let c=[(0,p.resolve)(a,"packages","mindos"),a];for(let a of c){let c=(0,p.resolve)(a,"dist","protocols","mcp-server","index.cjs");if(b(c))return{mcpDir:a,mcpBundle:c}}let d=c[0]??a;return{mcpDir:d,mcpBundle:(0,p.resolve)(d,"dist","protocols","mcp-server","index.cjs")}}(a.projectRoot,j);if(!j(l))return i({error:"MCP bundle not found — reinstall @geminilight/mindos"},{status:500});let m={...b,MCP_TRANSPORT:"http",MCP_PORT:String(d),MCP_HOST:b.MCP_HOST||"0.0.0.0",MINDOS_URL:b.MINDOS_URL||`http://127.0.0.1:${e}`,...f?{AUTH_TOKEN:f}:{}},n=(a.spawnDetached??function(a,b,c){return(0,aE.spawn)(a,b,c)})(a.execPath??process.execPath,[l],{cwd:k,detached:!0,stdio:"ignore",env:m});return n.unref(),i({ok:!0,pid:n.pid,port:d})}catch(a){return m(a)}}function dA(a,b){return dB(a,b,dC)}async function dB(a,b,c){let d=Date.now();for(;Date.now()-d<b;){if(!await c(a))return!0;await new Promise(a=>setTimeout(a,300))}return!1}function dC(a){return new Promise(b=>{let c=(0,dy.createServer)();c.once("error",()=>b(!0)),c.once("listening",()=>{c.close(),b(!1)}),c.listen(a,"127.0.0.1")})}async function dD(a,b={}){try{let c=a.readSettings(),d=Number(a.env?.MINDOS_MCP_PORT)||c.mcpPort||8781,e=c.authToken??"",f=!!e,g=b.host??`127.0.0.1:${d}`,h=function(a){if(a.includes("]"))return a.slice(0,a.lastIndexOf("]")+1);let b=a.lastIndexOf(":");return b>0?a.slice(0,b):a}(g),j=`http://${h}:${d}/mcp`,k=`http://127.0.0.1:${d}/api/health`,l=!1;try{let b=await a.fetchHealth(k,2e3);l=b.ok&&b.body?.ok===!0&&"mindos"===b.body.service}catch{l=!1}return i({running:l,transport:"http",endpoint:j,port:d,toolCount:24*!!l,authConfigured:f,maskedToken:f?a.maskToken(e):void 0,authToken:f?e:void 0,localIP:a.getLocalIP(),connectionMode:c.connectionMode??{cli:!0,mcp:!1}})}catch(a){return m(a)}}let dE={".pdf":"application/pdf",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".bmp":"image/bmp",".ico":"image/x-icon",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".flac":"audio/flac",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".mkv":"video/x-matroska"};function dF(a,b,c={}){let d,e=W(a,"path");if(!e)return i({error:"Missing path parameter"},{status:400});let f=e.toLowerCase(),g=f.slice(f.lastIndexOf(".")),h=dE[g];if(!h)return i({error:`Unsupported binary file type: ${g}`},{status:400});try{d=(0,w.n2)(b.mindRoot,e)}catch{return i({error:"Access denied"},{status:403})}if(!(0,o.existsSync)(d))return i({error:"File not found"},{status:404});let j=(0,o.statSync)(d);if(j.size>0xc800000)return i({error:`File too large (${Math.round(j.size/1024/1024)}MB). Max: 200MB`},{status:413});let k=j.size,m=c.range;if(m){let a=m.match(/bytes=(\d+)-(\d*)/);if(a){let b=Math.min(Number.parseInt(a[1]??"0",10),k-1),c=Math.min(a[2]?Number.parseInt(a[2],10):k-1,k-1),e=c-b+1,f=Buffer.alloc(e),g=(0,o.openSync)(d,"r");try{(0,o.readSync)(g,f,0,e,b)}finally{(0,o.closeSync)(g)}return{status:206,body:f,headers:{"Content-Type":h,"Content-Length":String(e),"Content-Range":`bytes ${b}-${c}/${k}`,"Accept-Ranges":"bytes",...l(60)}}}}return{status:200,body:(0,o.readFileSync)(d),headers:{"Content-Type":h,"Content-Length":String(k),"Accept-Ranges":"bytes","Content-Disposition":"inline",...l(60)}}}function dG(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,30)):10;return i(b.getRecentlyModified(e),{headers:l(30)})}async function dH(a,b){let c=W(a,"q")??"";return c.trim()?i(await b.search(c,{limit:20}),{headers:l(300)}):i([])}function dI(a){if(a.prewarmSearch)return i(a.prewarmSearch(),{headers:l(60)});let b=a.collectAllFiles();return i({warmed:!0,cacheState:"built",documentCount:b.length,core:{cacheState:"built",fileCount:b.length}},{headers:l(60)})}function dJ(a){return a?"••••••":""}function dK(){return{enabled:!1,provider:"local",baseUrl:"",apiKey:"",model:""}}function dL(a){try{let b=a.readSettings(),c=b.ai??{},d=a.env??{},e={AI_PROVIDER:!!d.AI_PROVIDER,MIND_ROOT:!!d.MIND_ROOT},f={AI_PROVIDER:d.AI_PROVIDER||"",MIND_ROOT:d.MIND_ROOT||""};for(let b of a.providerEnv.ids){let c=a.providerEnv.getApiKeyEnvVar(b);if(!c)continue;let d=a.providerEnv.getApiKeyFromEnv(b);e[c]=!!d,f[c]=d?"***set***":""}let g=a.readWebSearchConfig();return i({ai:{activeProvider:c.activeProvider??"",providers:c.providers??[]},embedding:b.embedding??dK(),embeddingStatus:a.getEmbeddingStatus(),webSearch:{provider:g.provider??"auto",exaApiKey:dJ(g.exaApiKey),perplexityApiKey:dJ(g.perplexityApiKey),geminiApiKey:dJ(g.geminiApiKey)},mindRoot:b.mindRoot,webPassword:b.webPassword??"",authToken:function(a){if(!a)return"";let b=a.split("-");return b.length>=2?`${b[0]}-${b.slice(1,-1).map(()=>"••••").join("-")}-${b[b.length-1]}`:a.length>8?`${a.slice(0,4)}••••••••${a.slice(-4)}`:"***set***"}(b.authToken),allowNetworkAccess:!0===b.allowNetworkAccess,port:Number(d.MINDOS_WEB_PORT)||b.port||3456,mcpPort:b.mcpPort??8781,agent:b.agent??{},skillPaths:b.skillPaths??{},envOverrides:e,envValues:f})}catch(a){return m(a)}}function dM(a,b){try{var c,d;let e,f=b.readSettings(),g={...f.ai??{}};a.ai&&(void 0!==a.ai.activeProvider&&(g.activeProvider=a.ai.activeProvider),void 0!==a.ai.providers&&(g.providers=b.parseProviders(a.ai.providers)));let h=b.readWebSearchConfig(),j=function(a,b){if(!a||"object"!=typeof a)return;let c={};return"string"==typeof a.provider&&(c.provider=a.provider),"string"==typeof a.exaApiKey&&(c.exaApiKey=a.exaApiKey.includes("••")?b.exaApiKey:a.exaApiKey),"string"==typeof a.perplexityApiKey&&(c.perplexityApiKey=a.perplexityApiKey.includes("••")?b.perplexityApiKey:a.perplexityApiKey),"string"==typeof a.geminiApiKey&&(c.geminiApiKey=a.geminiApiKey.includes("••")?b.geminiApiKey:a.geminiApiKey),{...b,...c}}(a.webSearch,h);j&&b.writeWebSearchConfig(j);let k=""===a.authToken?"":f.authToken,l={ai:g,embedding:a.embedding&&"object"==typeof a.embedding?function(a){if(!a||"object"!=typeof a)return dK();let b="local"===a.provider||"api"===a.provider?a.provider:"api";return{enabled:!0===a.enabled,provider:b,baseUrl:"string"==typeof a.baseUrl?a.baseUrl:"",apiKey:"string"==typeof a.apiKey?a.apiKey:"",model:"string"==typeof a.model?a.model:""}}(a.embedding):f.embedding,mindRoot:a.mindRoot??f.mindRoot,agent:a.agent??f.agent,skillPaths:function(a,b){if(void 0===b||!b||"object"!=typeof b)return a;let c={...a??{}};return"boolean"==typeof b.enableAgentsDir&&(c.enableAgentsDir=b.enableAgentsDir),Array.isArray(b.custom)&&(c.custom=b.custom.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean)),c}(f.skillPaths,a.skillPaths),webPassword:a.webPassword??f.webPassword,authToken:k,allowNetworkAccess:"boolean"==typeof a.allowNetworkAccess?a.allowNetworkAccess:!0===f.allowNetworkAccess,port:"number"==typeof a.port?a.port:f.port,mcpPort:"number"==typeof a.mcpPort?a.mcpPort:f.mcpPort,startMode:a.startMode??f.startMode,connectionMode:(c=f.connectionMode,d=a.connectionMode,e=c??{cli:!0,mcp:!1},d&&"object"==typeof d?"boolean"!=typeof d.cli||"boolean"!=typeof d.mcp?e:{cli:d.cli,mcp:d.mcp}:e),baseUrlCompat:f.baseUrlCompat};if(b.writeSettings(l),JSON.stringify(l.ai)!==JSON.stringify(f.ai)){let a=b.readSettings();a.baseUrlCompat&&Object.keys(a.baseUrlCompat).length>0&&b.writeSettings({...a,baseUrlCompat:{}})}return l.mindRoot!==f.mindRoot&&b.invalidateCache(),i({ok:!0})}catch(a){return m(a)}}function dN(a){try{let b,c=a.readSettings(),d=((b=(0,t.randomBytes)(12).toString("hex")).match(/.{4}/g)??[b]).join("-");return a.writeSettings({...c,authToken:d}),i({ok:!0,token:d})}catch(a){return m(a)}}c(86761);let dO=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function dP(a,b={}){try{var c,d,e,f,g,h;let j=a&&"object"==typeof a?a:{},k=dU(j.provider),l=dU(j.apiKey),m=dU(j.baseUrl);if(k&&(c=k,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,k);if(!d)return i({ok:!1,error:"Provider not found"},{status:404});return await dQ({provider:d.protocol,apiKey:l||d.apiKey||"",baseUrl:m||d.baseUrl||"",services:b})}if(!k||(e=k,(f=b).isProviderId?!f.isProviderId(e):!dO.has(e)))return i({ok:!1,error:"Invalid provider"},{status:400});if(b.supportsListModels?.(k)===!1){return i({ok:!0,models:(g=k,h=b,(h.getRegistryModels?.(g)??[]).filter(Boolean).sort())})}let n=b.effectiveAiConfig?.(k)??{provider:k,apiKey:"",baseUrl:""},o=l||n.apiKey||"",p=m||n.baseUrl||"";if(!o&&!p)return i({ok:!1,error:"No API key configured"});return await dQ({provider:k,apiKey:o,baseUrl:p,services:b})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}}async function dQ(a){let b=new AbortController,c=setTimeout(()=>b.abort(),a.services.timeoutMs??1e4);try{let c=await dR(a.provider,a.apiKey,a.baseUrl,b.signal,a.services);return i({ok:!0,models:c})}catch(a){if(a instanceof Error&&"AbortError"===a.name)return i({ok:!1,error:"Request timed out"});return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}finally{clearTimeout(c)}}async function dR(a,b,c,d,e){let f=e.getProviderApiType?.(a)??"openai-completions",g=function(a,b,c,d){let e=d.buildEndpointCandidates??((a,b)=>[`${a.replace(/\/+$/,"")}${b}`]);if(b)return e(b,"/models",c);let f=d.getDefaultBaseUrl?.(a)??"";return f?e(f,"/models",c):["https://api.openai.com/v1/models"]}(a,c,f,e);return await dS(g,b,f,d,e)}async function dS(a,b,c,d,e){let f=e.fetch??dT,g="No endpoint candidates",h=[];for(let e of a){h.push(e);let a={};"anthropic-messages"===c?(b&&(a["x-api-key"]=b),a["anthropic-version"]="2023-06-01"):b&&(a.Authorization=`Bearer ${b}`);let i=await f(e,{headers:a,signal:d});if(!i.ok){let a=await i.text().catch(()=>"");if(g=`HTTP ${i.status} @ ${e}: ${a.slice(0,200)}`,400===i.status||404===i.status||405===i.status)continue;throw Error(`Failed to list models: ${g}`)}let j=await i.json();if(j&&"object"==typeof j&&Array.isArray(j.data))return j.data.map(a=>a.id).filter(a=>"string"==typeof a&&!!a).sort();if(j&&"object"==typeof j&&Array.isArray(j.models))return j.models.map(a=>"string"==typeof a?a:a?.id).filter(a=>"string"==typeof a&&!!a).sort();throw Error(`Failed to list models: incompatible response shape from ${e}; tried ${h.length} endpoint candidate(s)`)}throw Error(`Failed to list models: ${g}; tried ${h.length} endpoint candidate(s)`)}async function dT(a,b){return fetch(a,b)}function dU(a){return"string"==typeof a?a:""}let dV=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function dW(a,b={}){try{var c,d;let e=a&&"object"==typeof a?a:{},f=d$(e.provider),g=d$(e.apiKey),h=d$(e.model),j=d$(e.baseUrl),k=d$(e.baseProviderId);if(k&&d_(k,b)){if(!g)return i({ok:!1,code:"auth_error",error:"No API key configured"});if(!h)return i({ok:!1,code:"unknown",error:"Model is required"},{status:400});return await dY({provider:k,apiKey:g,model:h,baseUrl:j,services:b})}if(f&&(c=f,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,f);if(!d)return i({ok:!1,code:"unknown",error:"Provider not found"},{status:400});let e=g||d.apiKey||"";if(!e)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await dY({provider:d.protocol,apiKey:e,model:h||d.model||void 0,baseUrl:j||d.baseUrl||void 0,services:b})}if(!f||!d_(f,b))return i({ok:!1,code:"unknown",error:"Invalid provider"},{status:400});let l=b.effectiveAiConfig?.(f)??{provider:f,apiKey:"",model:void 0,baseUrl:void 0},m=g||l.apiKey||"";if(!m)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await dY({provider:f,apiKey:m,model:h||l.model||void 0,baseUrl:j||void 0,services:b})}catch(a){return i({ok:!1,...dX(a)})}}function dX(a){let b=a instanceof Error?a.message:String(a),c=b.toLowerCase();return a instanceof Error&&"AbortError"===a.name?{code:"network_error",error:"Request timed out"}:c.includes("401")||c.includes("403")||c.includes("invalid")&&c.includes("key")||c.includes("authentication")||c.includes("unauthorized")||c.includes("api key")&&(c.includes("not valid")||c.includes("incorrect"))?{code:"auth_error",error:"Invalid API key"}:c.includes("model")&&(c.includes("not found")||c.includes("does not exist"))?{code:"model_not_found",error:`Model not found: ${b.slice(0,200)}`}:c.includes("404")||c.includes("page not found")||c.includes("invalid url")?{code:"endpoint_error",error:`Endpoint or protocol mismatch: ${b.slice(0,200)}`}:c.includes("429")||c.includes("rate")||c.includes("quota")?{code:"rate_limited",error:"Rate limited — try again later"}:c.includes("econnrefused")||c.includes("enotfound")||c.includes("etimedout")||c.includes("fetch failed")||c.includes("network")?{code:"network_error",error:b.slice(0,200)}:{code:"unknown",error:b.slice(0,200)}}async function dY(a){let b=a.services.now?.()??Date.now(),c=new AbortController,d=setTimeout(()=>c.abort(),a.services.timeoutMs??15e3);try{let d=a.services.testModel??dZ;return await d({provider:a.provider,apiKey:a.apiKey,model:a.model,baseUrl:a.baseUrl,signal:c.signal}),a.services.clearCompatCacheForBaseUrl?.(a.baseUrl),i({ok:!0,latency:(a.services.now?.()??Date.now())-b})}catch(a){return i({ok:!1,...dX(a)})}finally{clearTimeout(d)}}async function dZ(){throw Error("Provider test service is not configured")}function d$(a){return"string"==typeof a?a:""}function d_(a,b){return b.isProviderId?b.isProviderId(a):dV.has(a)}function d0(a,b={}){try{var c,d;let e=!(c=a)||"object"!=typeof c||!1!==c.removeConfig,f=function(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}(b.env??process.env),g=b.spawn??aE.spawn,h=b.nodeBin??f.MINDOS_NODE_BIN??process.execPath,j=b.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:b.env??process.env,runtimeRoot:b.runtimeRoot,projectRoot:b.projectRoot}),k=g(h,[j,"uninstall"],{detached:!0,stdio:["pipe","ignore","ignore"],env:f});return k.stdin?.write((d=e,`Y
52
+ `;let f=[],g=!1,h=!1,i=-1,j=!1,k=-1;for(let d of a.split("\n")){let a=d.trim(),l=d.length-d.trimStart().length;if(0===l&&a===`${b}:`){g=!0,h=!0,i=-1,f.push(d);continue}if(0===l&&a&&!a.startsWith("#")&&g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e,"",d),g=!1,j=!1;continue}if(!g){f.push(d);continue}if(!a||a.startsWith("#")){j||f.push(d);continue}if(i<0&&(i=l),l===i){if(a===`${c}:`||a===`${c9(c)}:`){j=!0,k=l;continue}j=!1}if(j){if(l>k)continue;j=!1}f.push(d)}if(g){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push(e)}if(!h){for(;f.length>0&&f[f.length-1]?.trim()==="";)f.pop();f.push("",`${b}:`,e)}let l=f.join("\n");return l.endsWith("\n")||(l+="\n"),l}(a,h.key,"mindos",l),"utf-8")}else{let a=(0,o.existsSync)(k)?c0((0,o.readFileSync)(k,"utf-8")):{};("global"===g&&h.globalNestedKey?function(a,b){let c=c3(b,"nested config path"),d=a;for(let a of c)c5(d,a)||(d[a]={}),d=d[a];return d}(a,h.globalNestedKey):(c4(h.key,"agent config key"),!c5(a,h.key)&&(a[h.key]={}),a[h.key])).mindos=l,(0,o.writeFileSync)(k,`${JSON.stringify(a,null,2)}
53
+ `,"utf-8")}let d={agent:f,status:"ok",path:j,transport:i};if(await dc(f,b),"http"===i){let c=await da(String(l.url),a.token,b.fetcher);d.verified=c.verified,c.verifyError&&(d.verifyError=c.verifyError)}c.push(d)}catch(a){c.push({agent:f,status:"error",message:String(a)})}}return i({results:c})}catch(a){return m(a)}}async function dc(a,b){if(b.resolveSkillWorkspaceProfile)try{let c=b.resolveSkillWorkspaceProfile(a),d=b.readSettings?.()??{},e=d.disabledSkills?.includes("mindos")?"mindos-zh":"mindos",f=(0,p.join)(c.workspacePath,e,"SKILL.md");b.recordSkillInstall?.(a,e,f);let g=b.skillAgentRegistry?.[a];if(g&&("additional"===g.mode||"unsupported"===g.mode)&&(0,o.mkdirSync)(c.workspacePath,{recursive:!0}),g?.mode!=="unsupported"||!b.projectRoot||!b.copyDirectory)return;let h=[(0,p.join)(b.projectRoot,"skills",e),(0,p.join)(b.projectRoot,"packages","web","data","skills",e)],i=b.directoryExists??o.existsSync,j=h.find(a=>i(a)),k=(0,p.join)(c.workspacePath,e);j&&!i(k)&&await b.copyDirectory(j,k)}catch{}}function dd(a,b){try{let c=[];for(let d of a.agents??[]){let{key:a,scope:e}=d,f=b.agents[a];if(!f){c.push({agent:a,status:"error",message:`Unknown agent: ${a}`});continue}let g="global"===e?f.global:f.project;if(!g){c.push({agent:a,status:"error",message:`${f.name} does not support ${e} scope`});continue}let h=c1(g,b.homeDir);if(!(0,o.existsSync)(h)){c.push({agent:a,status:"ok",message:"Config file does not exist"});continue}try{if("toml"===f.format)(0,o.writeFileSync)(h,function(a,b,c){let d=`[${c8(b,c)}]`,e=`[${c8(b,c,"env")}]`,f=`[${c8(b,c,"headers")}]`,g=new Set([`[${b}.${c}]`,`[${b}.${c}.env]`,`[${b}.${c}.headers]`]),h=[],i=!1;for(let b of a.split("\n")){let a=b.trim();if(a===d||a===e||a===f||g.has(a)){i=!0;continue}i&&a.startsWith("[")&&(i=!1),i||h.push(b)}let j=[];for(let a of h)""===a.trim()&&j.length>0&&j[j.length-1]?.trim()===""||j.push(a);return j.join("\n")}((0,o.readFileSync)(h,"utf-8"),f.key,"mindos"),"utf-8");else{let a=c0((0,o.readFileSync)(h,"utf-8")),b="global"===e&&f.globalNestedKey?function(a,b){let c=c3(b,"nested config path"),d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}(a,f.globalNestedKey):(c4(f.key,"agent config key"),c5(a,f.key)??void 0);b&&"mindos"in b&&(delete b.mindos,(0,o.writeFileSync)(h,`${JSON.stringify(a,null,2)}
54
+ `,"utf-8"))}c.push({agent:a,status:"ok",path:g})}catch(b){c.push({agent:a,status:"error",message:String(b)})}}return i({results:c})}catch(a){return m(a)}}var de=c(29021),df=c(21820);async function dg(a){try{let b=a.env??process.env,c=a.customAgents??[],d=Object.fromEntries(c.map(a=>[a.key,a])),e=new Set(c.map(a=>a.key)),f=a.builtInAgents??{},g=Object.entries(a.agents).map(([b,c])=>{var g,h,i,j,k,l,m,n,o,p,q,r,s,t;let u,v,w,y,z,A,B,C=e.has(b)&&!(b in f),D=d[b],E=C?(g=c,u=(h=a).pathExists??de.existsSync,v=g.presenceDirs?.some(a=>u(dr(a,h.homeDir)))??!1,g.presenceCli&&(h.commandExists??du)(g.presenceCli)&&(v=!0),v):a.detectAgentPresence?.(b)??(i=c,w=(j=a).pathExists??de.existsSync,!!i.presenceDirs?.some(a=>w(dr(a,j.homeDir)))||!!i.presenceCli&&(j.commandExists??du)(i.presenceCli)),F=C?function(a,b){let c=dr(a.global,b.homeDir);if(!(b.pathExists??de.existsSync)(c))return{installed:!1};try{let d=b.readTextFile??dt,e=JSON.parse(d(c)),f=a.globalNestedKey?dm(e,a.globalNestedKey)??{}:e,g=dn(f,a.key)??{};if(g&&"object"==typeof g&&"mindos"in g)return{installed:!0,scope:"global",configPath:c}}catch{}return{installed:!1}}(c,a):a.detectInstalled?.(b)??function(a,b){for(let[c,d]of[["global",a.global],["project",a.project]]){if(!d)continue;let e=ds(d,c,b);if((b.pathExists??de.existsSync)(e))try{let f=(b.readTextFile??dt)(e),g=function(a,b,c){if("toml"===b.format)return function(a,b,c){let d=`[${b}.${c}]`,e=`[${b}]`,f=!1,g=!1,h=!1,i={};for(let b of a.split("\n")){let a=b.trim();if(!a||a.startsWith("#"))continue;if(a.startsWith("[")&&a.endsWith("]")){if((f||h)&&(i.type||i.url))return i;f=a===d,g=a===e,h=!1,i={};continue}let j=a.match(/^([a-zA-Z0-9_-]+)\s*=\s*(.+)$/);if(!j)continue;let k=j[1],l=j[2];if(!k||!l)continue;let m=l.replace(/^["'](.+)["']$/,"$1");f?("type"===k&&(i.type=m),"url"===k&&(i.url=m)):g&&k===c&&(i.type=l.match(/type\s*=\s*["']([^"']+)["']/)?.[1],i.url=l.match(/url\s*=\s*["']([^"']+)["']/)?.[1],h=!0)}return(f||h)&&(i.type||i.url)?i:null}(a,b.key,"mindos");if("yaml"===b.format)return function(a,b,c){let d=!1,e=!1,f=-1,g=-1,h={};for(let i of a.split("\n")){if(!i.trim()||i.trim().startsWith("#"))continue;let a=i.length-i.trimStart().length,j=i.trim();if(0===a&&j===`${b}:`){d=!0,e=!1,f=-1,g=-1;continue}if(0===a&&j){if(e)return Object.keys(h).length>0?h:{};d=!1;continue}if(!d)continue;if(f<0&&(f=a),a===f){if(e)return Object.keys(h).length>0?h:{};e=j.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1]===c,g=-1;continue}if(!e||(g<0&&(g=a),a!==g))continue;let k=j.match(/^(command|url)\s*:\s*["']?([^"'\n]+)["']?\s*$/);if(!k)continue;let l=k[1],m=k[2];l&&m&&("command"===l&&(h.command=m.trim()),"url"===l&&(h.url=m.trim()))}return e?h:null}(a,b.key,"mindos");let d=dq(a),e="global"===c&&b.globalNestedKey?dm(d,b.globalNestedKey):dn(d,b.key),f=dn(e,"mindos");return f?{type:"string"==typeof f.type?f.type:void 0,command:"string"==typeof f.command?f.command:void 0,url:"string"==typeof f.url?f.url:void 0}:null}(f,a,c);if(!g)continue;let h="stdio"===g.type||g.command?"stdio":g.url?"http":"unknown";return{installed:!0,scope:c,transport:h,configPath:d,url:g.url}}catch{continue}}return{installed:!1}}(c,a),G=C&&D?(k=D,l=c,m=a,y=k.baseDir.endsWith("/")?`${k.baseDir}skills/`:`${k.baseDir}/skills/`,{mode:"additional",skillAgentName:k.key,workspacePath:dr(k.skillDir||l.presenceDirs?.[0]&&`${l.presenceDirs[0]}skills/`||y,m.homeDir)}):a.resolveSkillWorkspaceProfile?.(b)??(n=b,o=c,p=a,z=dl(o,p),{mode:"mindos"===n?"universal":"unsupported",workspacePath:(0,x.join)(z,"skills")}),H=C?{hiddenRootPath:"",hiddenRootPresent:!1,conversationSignal:!1,usageSignal:!1}:a.detectAgentRuntimeSignals?.(b)??(q=c,r=a,{hiddenRootPath:A=dl(q,r),hiddenRootPresent:(r.pathExists??de.existsSync)(A),conversationSignal:!1,usageSignal:!1}),I=C&&D?function(a,b={}){let c=dr(a.global,b.homeDir);if(!(b.pathExists??de.existsSync)(c))return{servers:[],sources:[]};try{let d=(b.readTextFile??dt)(c),e="toml"===a.format?dh(d,a.configKey):function(a,b){try{let c=dq(a),d=dn(c,b);if(d)return Object.keys(d).sort()}catch{}return[]}(d,a.configKey);return{servers:e,sources:e.length>0?[`local:${c}`]:[]}}catch{return{servers:[],sources:[]}}}(D,a):a.detectAgentConfiguredMcpServers?.(b)??function(a,b){let c=new Set,d=[];for(let[e,f]of[["global",a.global],["project",a.project]]){if(!f)continue;let g=ds(f,e,b);if((b.pathExists??de.existsSync)(g))try{let h=(b.readTextFile??dt)(g),i=function(a,b,c){if("toml"===b.format)return dh(a,b.key);if("yaml"===b.format)return function(a,b){let c=new Set,d=!1,e=-1;for(let f of a.split("\n")){if(!f.trim()||f.trim().startsWith("#"))continue;let a=f.length-f.trimStart().length,g=f.trim();if(0===a&&g===`${b}:`){d=!0,e=-1;continue}if(0===a&&g){d=!1;continue}if(!d||(e<0&&(e=a),a!==e))continue;let h=g.match(/^([a-zA-Z0-9_-]+)\s*:/)?.[1];h&&c.add(h)}return[...c].sort()}(a,b.key);let d=dq(a);return Object.keys(("global"===c&&b.globalNestedKey?dm(d,b.globalNestedKey):dn(d,b.key))??{}).sort((a,b)=>a.localeCompare(b))}(h,a,e);for(let a of i)c.add(a);i.length>0&&d.push(`${e}:${f}`)}catch{continue}}return{servers:[...c].sort((a,b)=>a.localeCompare(b)),sources:d}}(c,a),J=C&&D?a.scanCustomAgentSkills?.(D)??(s=D,t=a,B=dr(s.skillDir||(s.baseDir.endsWith("/")?`${s.baseDir}skills/`:`${s.baseDir}/skills/`),t.homeDir),{skills:t.listSkillNames?.(B)??function(a){if(!(0,de.existsSync)(a))return[];try{return(0,de.readdirSync)(a,{withFileTypes:!0}).filter(a=>(a.isDirectory()||a.isSymbolicLink())&&!a.name.startsWith(".")).map(a=>a.name).sort((a,b)=>a.localeCompare(b))}catch{return[]}}(B),sourcePath:B}):a.detectAgentInstalledSkills?.(b)??{skills:[],sourcePath:G.workspacePath};return{key:b,name:c.name,present:E,installed:F.installed,scope:F.scope,transport:F.transport,configPath:F.configPath,url:F.url,hasProjectScope:!!c.project,hasGlobalScope:!!c.global,preferredTransport:c.preferredTransport,format:c.format??"json",configKey:c.key,globalNestedKey:c.globalNestedKey,globalPath:c.global,projectPath:c.project,skillMode:G.mode,skillAgentName:G.skillAgentName,skillWorkspacePath:G.workspacePath,hiddenRootPath:H.hiddenRootPath,hiddenRootPresent:H.hiddenRootPresent,runtimeConversationSignal:H.conversationSignal,runtimeUsageSignal:H.usageSignal,runtimeLastActivityAt:H.lastActivityAt,configuredMcpServers:I.servers,configuredMcpServerCount:I.servers.length,configuredMcpSources:I.sources,installedSkillNames:J.skills,installedSkillCount:J.skills.length,installedSkillSourcePath:J.sourcePath,isCustom:C,customBaseDir:C?D?.baseDir:void 0}}),h=g.find(a=>"mindos"===a.key);return h&&function(a,b,c){a.present=!0,a.installed=!0,a.scope="builtin";try{let d=Number(c.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(b.readSettings?.(),"mcpPort")||8781;a.transport=`http :${d}`}catch{a.transport="http :8781"}try{let c=b.loadMindosSkills?.();c&&(a.installedSkillNames=c.names,a.installedSkillCount=c.names.length,a.installedSkillSourcePath=c.sourcePath,a.skillMode="universal",a.skillWorkspacePath=c.workspacePath)}catch{}let d=b.homeDir??(0,df.homedir)(),e=b.mindRoot??(0,x.join)(d,".mindos"),f=(0,x.join)(d,".mindos","mcp.json");try{if((b.pathExists??de.existsSync)(f)){let c=b.readTextFile??dt,d=JSON.parse(c(f)),e=Object.keys(d.mcpServers??{});a.configuredMcpServers=e,a.configuredMcpServerCount=e.length,a.configuredMcpSources=e.length>0?[`local:${f}`]:[]}}catch{}a.runtimeConversationSignal=!0,a.runtimeLastActivityAt=(b.now??(()=>new Date))().toISOString(),a.hiddenRootPath=e,a.hiddenRootPresent=!0}(h,a,b),await di(g,a),g.sort(dj),i({agents:g})}catch(a){return m(a)}}function dh(a,b){let c=new Set,d=`${b}.`,e=!1;for(let f of a.split("\n")){let a=f.trim();if(!(!a||a.startsWith("#"))){if(a.startsWith("[")&&a.endsWith("]")){let f=a.slice(1,-1).trim();if(e=f===b,f.startsWith(d)){let a=f.slice(d.length).split(".")[0];a&&c.add(a)}continue}if(e){let b=a.match(/^([a-zA-Z0-9_-]+)\s*=/)?.[1];b&&c.add(b)}}}return[...c].sort()}async function di(a,b){let c=b.fetchHead??dv;await Promise.all(a.map(async a=>{if(a.installed&&a.url&&a.transport?.startsWith("http"))try{let b=new AbortController,d=setTimeout(()=>b.abort(),1e3);try{let d=await c(a.url,{signal:b.signal});d.status>=300&&405!==d.status&&(a.installed=!1)}finally{clearTimeout(d)}}catch{a.installed=!1}}))}function dj(a,b){return"mindos"===a.key?-1:"mindos"===b.key?1:dk(a)-dk(b)}function dk(a){return a.installed?0:a.present?1:2}function dl(a,b){let c=b.pathExists??de.existsSync;for(let d of a.presenceDirs??[]){let a=dr(d,b.homeDir);if(c(a))return a}return(0,x.dirname)(dr(a.global,b.homeDir))}function dm(a,b){let c=b.split(".").map(a=>a.trim()).filter(Boolean);if(0===c.length||c.some(dp))return null;let d=a;for(let a of c){if(!d||"object"!=typeof d||!Object.prototype.hasOwnProperty.call(d,a))return null;d=d[a]}return d&&"object"==typeof d?d:null}function dn(a,b){if(!a||"object"!=typeof a||dp(b)||!Object.prototype.hasOwnProperty.call(a,b))return null;let c=a[b];return c&&"object"==typeof c?c:null}function dp(a){return"__proto__"===a||"prototype"===a||"constructor"===a}function dq(a){let b=a.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*$)/gm,(a,b)=>b?"":a);return(b=b.replace(/\/\*[\s\S]*?\*\//g,"")).trim()?JSON.parse(b):{}}function dr(a,b){return a.startsWith("~/")||a.startsWith("~\\")?(0,x.resolve)(b??(0,df.homedir)(),a.slice(2)):a}function ds(a,b,c){let d=dr(a,c.homeDir);return"project"!==b||(0,x.isAbsolute)(d)?d:(0,x.resolve)(c.projectRoot??process.cwd(),d)}function dt(a){return(0,de.readFileSync)(a,"utf-8")}function du(a){try{return(0,b6.execFileSync)("win32"===process.platform?"where":"which",[a],{stdio:"pipe"}),!0}catch{return!1}}async function dv(a,b){return"function"!=typeof fetch?{status:200}:{status:(await fetch(a,{method:"HEAD",signal:b.signal})).status}}function dw(a){let b,c;try{var d;b=(d=a.readMcpConfig())&&"object"==typeof d&&d.mcpServers&&"object"==typeof d.mcpServers?d:{mcpServers:{}},c=a.readMcpToolCache()}catch(a){return m(a)}return i({servers:Object.entries(b.mcpServers).map(([a,b])=>{let d=c?.[a],e=(d?.tools??[]).map(a=>({name:a.name,description:a.description??""}));return{name:a,toolCount:e.length,tools:e,directTools:b.directTools??!1,lifecycle:b.lifecycle??"lazy",cached:!!d}})})}function dx(a,b){var c,d;let e=(c=a)&&"object"==typeof c?c:{};if(!e.server||"string"!=typeof e.server)return i({error:'Missing or invalid "server" field'},{status:400});let f=e.server.trim();if(!f||"__proto__"===(d=f)||"prototype"===d||"constructor"===d)return i({error:"Invalid server name"},{status:400});let g=e.directTools;if(!0!==g&&!1!==g&&!Array.isArray(g))return i({error:'"directTools" must be true, false, or string[]'},{status:400});if(Array.isArray(g)&&!g.every(a=>"string"==typeof a))return i({error:'"directTools" array must contain only strings'},{status:400});try{b.updateServerDirectTools(f,g)}catch(a){return m(a)}return i({ok:!0,server:f,directTools:g})}let dy=new Set(["mindos","mindos-zh"]);function dz(a,b={}){try{var c,d,e,f,g,h,j;let k=(c=a)&&"object"==typeof c?c:{},l=k.skill;if(!l||!dy.has(l))return i({error:"Invalid skill name"},{status:400});let m=Array.isArray(k.agents)?k.agents:[],n=m.find(a=>"string"!=typeof a||!dA(a.trim()));if(void 0!==n)return i({error:"Invalid agent name"},{status:400});let o=(d=m.map(a=>a.trim()),e=b.skillAgentRegistry??{},d.flatMap(a=>{if(!dA(a))return[];let b=Object.prototype.hasOwnProperty.call(e,a)?e[a]:void 0;if(!b)return[a];if("unsupported"===b.mode||"universal"===b.mode)return[];let c=b.skillAgentName||a;return dA(c)?[c]:[]})),p=["GeminiLight/MindOS"],q=function(a){let b=a.projectRoot??process.cwd(),c=a.cwd??process.cwd(),d=a.pathExists??de.existsSync;for(let a of[(0,x.resolve)(c,"data/skills"),(0,x.join)(b,"skills"),(0,x.join)(b,"packages","web","data","skills")])if(d(a))return a;return null}(b);q&&p.push(q);let r="",s="",t="",u=b.runCommand??dC;for(let a of p){let c=(f=a,g=l,h=o,["skills","add",f,"--skill",g,...(h.length>0?h:["universal"]).flatMap(a=>["-a",a]),"-g","-y"]),d=(j=c,["npx",...j].map(dB).join(" "));r=d;try{return s=u("npx",c,{encoding:"utf-8",timeout:3e4,env:{...process.env,...b.env??{},NODE_ENV:"production"},stdio:"pipe"}),i({ok:!0,skill:l,agents:o,cmd:d,stdout:s.trim()})}catch(a){s=a.stdout||"",t=a.stderr||a.message||"Unknown error"}}return i({ok:!1,skill:l,agents:o,cmd:r,stdout:s,stderr:t})}catch(a){return m(a)}}function dA(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&"__proto__"!==a&&"prototype"!==a&&"constructor"!==a}function dB(a){return/^[A-Za-z0-9._=-]+$/.test(a)?a:`"${a.replace(/(["\\$`])/g,"\\$1")}"`}function dC(a,b,c){let d="npx"===a?function(a,b={}){let c=b.env??process.env,d=b.nodeExecPath??process.execPath,e=function(a,b,c){let d=new Set;b.npm_execpath&&d.add((0,x.join)((0,x.dirname)(b.npm_execpath),"npx-cli.js"));let e=(0,x.dirname)(a);for(let a of(d.add((0,x.join)(e,"node_modules","npm","bin","npx-cli.js")),d.add((0,x.resolve)(e,"..","lib","node_modules","npm","bin","npx-cli.js")),d))if(c(a))return a;return null}(d,c,b.pathExists??de.existsSync);if(e)return{command:d,args:[e,...a]};if((b.platform??process.platform)==="win32")throw Error("Unable to locate npm npx-cli.js for shell-free skill installation on Windows");return{command:"npx",args:a}}(b,{env:c.env}):{command:a,args:b};return(0,b6.execFileSync)(d.command,d.args,c)}var dD=c(77030);async function dE(a){try{let b=a.env??process.env,c=a.readSettings?.(),d=Number(b.MINDOS_MCP_PORT)||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];if("number"==typeof c)return Number.isFinite(c)?c:void 0;if("string"==typeof c&&c.trim()){let a=Number(c);return Number.isFinite(a)?a:void 0}}(c,"mcpPort")||8781,e=b.MINDOS_WEB_PORT||"3456",f=b.AUTH_TOKEN||function(a,b){if(!a||"object"!=typeof a)return;let c=a[b];return"string"==typeof c&&c.length>0?c:void 0}(c,"authToken"),g="1"===b.MINDOS_MANAGED;if((a.killByPort??function(a){let b=process.platform;for(let c of function(a,b={}){var c;if(!(Number.isInteger(c=a)&&c>0&&c<=65535))return[];let d=b.platform??process.platform,e=b.execFile??((a,b)=>(0,aF.execFileSync)(a,b,{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}));if("win32"===d)try{return function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(!/LISTENING/i.test(f))continue;let b=f.trim().split(/\s+/);if(b.length<5)continue;let g=b[1],h=Number(b[b.length-1]);d=g,e=a,d?.endsWith(`:${e}`)&&h>0&&c.add(h)}return[...c]}(a,e("netstat",["-ano"]))}catch{return[]}let f=new Set;try{for(let b of e("lsof",["-ti",`:${a}`]).split(/\r?\n/).map(a=>Number(a.trim())).filter(a=>a>0))f.add(b)}catch{}if(0===f.size)try{for(let b of function(a,b){let c=new Set;for(let f of b.split(/\r?\n/)){var d,e;if(d=f,e=a,RegExp(`:${e}(?!\\d)`).test(d))for(let a of f.matchAll(/pid=(\d+)/g)){let b=Number(a[1]);b>0&&c.add(b)}}return[...c]}(a,e("ss",["-tlnp"])))f.add(b)}catch{}return[...f]}(a,{platform:b}))try{"win32"===b?(0,aF.execFileSync)("taskkill",["/PID",String(c),"/T","/F"],{stdio:"ignore"}):process.kill(c,"SIGKILL")}catch{}})(d),g)return i({ok:!0,port:d,note:"ProcessManager will respawn"});let h=a.waitForPortFree??dF;if(!await h(d,5e3))return i({error:`MCP port ${d} still in use after kill`},{status:500});let j=a.pathExists??o.existsSync,{mcpDir:k,mcpBundle:l}=function(a,b){let c=[(0,p.resolve)(a,"packages","mindos"),a];for(let a of c){let c=(0,p.resolve)(a,"dist","protocols","mcp-server","index.cjs");if(b(c))return{mcpDir:a,mcpBundle:c}}let d=c[0]??a;return{mcpDir:d,mcpBundle:(0,p.resolve)(d,"dist","protocols","mcp-server","index.cjs")}}(a.projectRoot,j);if(!j(l))return i({error:"MCP bundle not found — reinstall @geminilight/mindos"},{status:500});let m={...b,MCP_TRANSPORT:"http",MCP_PORT:String(d),MCP_HOST:b.MCP_HOST||"0.0.0.0",MINDOS_URL:b.MINDOS_URL||`http://127.0.0.1:${e}`,...f?{AUTH_TOKEN:f}:{}},n=(a.spawnDetached??function(a,b,c){return(0,aF.spawn)(a,b,c)})(a.execPath??process.execPath,[l],{cwd:k,detached:!0,stdio:"ignore",env:m});return n.unref(),i({ok:!0,pid:n.pid,port:d})}catch(a){return m(a)}}function dF(a,b){return dG(a,b,dH)}async function dG(a,b,c){let d=Date.now();for(;Date.now()-d<b;){if(!await c(a))return!0;await new Promise(a=>setTimeout(a,300))}return!1}function dH(a){return new Promise(b=>{let c=(0,dD.createServer)();c.once("error",()=>b(!0)),c.once("listening",()=>{c.close(),b(!1)}),c.listen(a,"127.0.0.1")})}async function dI(a,b={}){try{let c=a.readSettings(),d=Number(a.env?.MINDOS_MCP_PORT)||c.mcpPort||8781,e=c.authToken??"",f=!!e,g=b.host??`127.0.0.1:${d}`,h=function(a){if(a.includes("]"))return a.slice(0,a.lastIndexOf("]")+1);let b=a.lastIndexOf(":");return b>0?a.slice(0,b):a}(g),j=`http://${h}:${d}/mcp`,k=`http://127.0.0.1:${d}/api/health`,l=!1;try{let b=await a.fetchHealth(k,2e3);l=b.ok&&b.body?.ok===!0&&"mindos"===b.body.service}catch{l=!1}return i({running:l,transport:"http",endpoint:j,port:d,toolCount:24*!!l,authConfigured:f,maskedToken:f?a.maskToken(e):void 0,authToken:f?e:void 0,localIP:a.getLocalIP(),connectionMode:c.connectionMode??{cli:!0,mcp:!1}})}catch(a){return m(a)}}let dJ={".pdf":"application/pdf",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".bmp":"image/bmp",".ico":"image/x-icon",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".flac":"audio/flac",".aac":"audio/aac",".mp4":"video/mp4",".webm":"video/webm",".mov":"video/quicktime",".mkv":"video/x-matroska"};function dK(a,b,c={}){let d,e=W(a,"path");if(!e)return i({error:"Missing path parameter"},{status:400});let f=e.toLowerCase(),g=f.slice(f.lastIndexOf(".")),h=dJ[g];if(!h)return i({error:`Unsupported binary file type: ${g}`},{status:400});try{d=(0,w.n2)(b.mindRoot,e)}catch{return i({error:"Access denied"},{status:403})}if(!(0,o.existsSync)(d))return i({error:"File not found"},{status:404});let j=(0,o.statSync)(d);if(j.size>0xc800000)return i({error:`File too large (${Math.round(j.size/1024/1024)}MB). Max: 200MB`},{status:413});let k=j.size,m=c.range;if(m){let a=m.match(/bytes=(\d+)-(\d*)/);if(a){let b=Math.min(Number.parseInt(a[1]??"0",10),k-1),c=Math.min(a[2]?Number.parseInt(a[2],10):k-1,k-1),e=c-b+1,f=Buffer.alloc(e),g=(0,o.openSync)(d,"r");try{(0,o.readSync)(g,f,0,e,b)}finally{(0,o.closeSync)(g)}return{status:206,body:f,headers:{"Content-Type":h,"Content-Length":String(e),"Content-Range":`bytes ${b}-${c}/${k}`,"Accept-Ranges":"bytes",...l(60)}}}}return{status:200,body:(0,o.readFileSync)(d),headers:{"Content-Type":h,"Content-Length":String(k),"Accept-Ranges":"bytes","Content-Disposition":"inline",...l(60)}}}function dL(a,b){var c;let d,e=Number.isFinite(d=(c=W(a,"limit"))?Number.parseInt(c,10):10)?Math.max(1,Math.min(d,30)):10;return i(b.getRecentlyModified(e),{headers:l(30)})}async function dM(a,b){let c=W(a,"q")??"";return c.trim()?i(await b.search(c,{limit:20}),{headers:l(300)}):i([])}function dN(a){if(a.prewarmSearch)return i(a.prewarmSearch(),{headers:l(60)});let b=a.collectAllFiles();return i({warmed:!0,cacheState:"built",documentCount:b.length,core:{cacheState:"built",fileCount:b.length}},{headers:l(60)})}function dO(a){return a?"••••••":""}function dP(){return{enabled:!1,provider:"local",baseUrl:"",apiKey:"",model:""}}function dQ(a){try{let b=a.readSettings(),c=b.ai??{},d=a.env??{},e={AI_PROVIDER:!!d.AI_PROVIDER,MIND_ROOT:!!d.MIND_ROOT},f={AI_PROVIDER:d.AI_PROVIDER||"",MIND_ROOT:d.MIND_ROOT||""};for(let b of a.providerEnv.ids){let c=a.providerEnv.getApiKeyEnvVar(b);if(!c)continue;let d=a.providerEnv.getApiKeyFromEnv(b);e[c]=!!d,f[c]=d?"***set***":""}let g=a.readWebSearchConfig();return i({ai:{activeProvider:c.activeProvider??"",providers:c.providers??[]},embedding:b.embedding??dP(),embeddingStatus:a.getEmbeddingStatus(),webSearch:{provider:g.provider??"auto",exaApiKey:dO(g.exaApiKey),perplexityApiKey:dO(g.perplexityApiKey),geminiApiKey:dO(g.geminiApiKey)},mindRoot:b.mindRoot,webPassword:b.webPassword??"",authToken:function(a){if(!a)return"";let b=a.split("-");return b.length>=2?`${b[0]}-${b.slice(1,-1).map(()=>"••••").join("-")}-${b[b.length-1]}`:a.length>8?`${a.slice(0,4)}••••••••${a.slice(-4)}`:"***set***"}(b.authToken),allowNetworkAccess:!0===b.allowNetworkAccess,port:Number(d.MINDOS_WEB_PORT)||b.port||3456,mcpPort:b.mcpPort??8781,agent:b.agent??{},skillPaths:b.skillPaths??{},envOverrides:e,envValues:f})}catch(a){return m(a)}}function dR(a,b){try{var c,d;let e,f=b.readSettings(),g={...f.ai??{}};a.ai&&(void 0!==a.ai.activeProvider&&(g.activeProvider=a.ai.activeProvider),void 0!==a.ai.providers&&(g.providers=b.parseProviders(a.ai.providers)));let h=b.readWebSearchConfig(),j=function(a,b){if(!a||"object"!=typeof a)return;let c={};return"string"==typeof a.provider&&(c.provider=a.provider),"string"==typeof a.exaApiKey&&(c.exaApiKey=a.exaApiKey.includes("••")?b.exaApiKey:a.exaApiKey),"string"==typeof a.perplexityApiKey&&(c.perplexityApiKey=a.perplexityApiKey.includes("••")?b.perplexityApiKey:a.perplexityApiKey),"string"==typeof a.geminiApiKey&&(c.geminiApiKey=a.geminiApiKey.includes("••")?b.geminiApiKey:a.geminiApiKey),{...b,...c}}(a.webSearch,h);j&&b.writeWebSearchConfig(j);let k=""===a.authToken?"":f.authToken,l={ai:g,embedding:a.embedding&&"object"==typeof a.embedding?function(a){if(!a||"object"!=typeof a)return dP();let b="local"===a.provider||"api"===a.provider?a.provider:"api";return{enabled:!0===a.enabled,provider:b,baseUrl:"string"==typeof a.baseUrl?a.baseUrl:"",apiKey:"string"==typeof a.apiKey?a.apiKey:"",model:"string"==typeof a.model?a.model:""}}(a.embedding):f.embedding,mindRoot:a.mindRoot??f.mindRoot,agent:a.agent??f.agent,skillPaths:function(a,b){if(void 0===b||!b||"object"!=typeof b)return a;let c={...a??{}};return"boolean"==typeof b.enableAgentsDir&&(c.enableAgentsDir=b.enableAgentsDir),Array.isArray(b.custom)&&(c.custom=b.custom.filter(a=>"string"==typeof a).map(a=>a.trim()).filter(Boolean)),c}(f.skillPaths,a.skillPaths),webPassword:a.webPassword??f.webPassword,authToken:k,allowNetworkAccess:"boolean"==typeof a.allowNetworkAccess?a.allowNetworkAccess:!0===f.allowNetworkAccess,port:"number"==typeof a.port?a.port:f.port,mcpPort:"number"==typeof a.mcpPort?a.mcpPort:f.mcpPort,startMode:a.startMode??f.startMode,connectionMode:(c=f.connectionMode,d=a.connectionMode,e=c??{cli:!0,mcp:!1},d&&"object"==typeof d?"boolean"!=typeof d.cli||"boolean"!=typeof d.mcp?e:{cli:d.cli,mcp:d.mcp}:e),baseUrlCompat:f.baseUrlCompat};if(b.writeSettings(l),JSON.stringify(l.ai)!==JSON.stringify(f.ai)){let a=b.readSettings();a.baseUrlCompat&&Object.keys(a.baseUrlCompat).length>0&&b.writeSettings({...a,baseUrlCompat:{}})}return l.mindRoot!==f.mindRoot&&b.invalidateCache(),i({ok:!0})}catch(a){return m(a)}}function dS(a){try{let b,c=a.readSettings(),d=((b=(0,t.randomBytes)(12).toString("hex")).match(/.{4}/g)??[b]).join("-");return a.writeSettings({...c,authToken:d}),i({ok:!0,token:d})}catch(a){return m(a)}}c(86761);let dT=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function dU(a,b={}){try{var c,d,e,f,g,h;let j=a&&"object"==typeof a?a:{},k=dZ(j.provider),l=dZ(j.apiKey),m=dZ(j.baseUrl);if(k&&(c=k,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,k);if(!d)return i({ok:!1,error:"Provider not found"},{status:404});return await dV({provider:d.protocol,apiKey:l||d.apiKey||"",baseUrl:m||d.baseUrl||"",services:b})}if(!k||(e=k,(f=b).isProviderId?!f.isProviderId(e):!dT.has(e)))return i({ok:!1,error:"Invalid provider"},{status:400});if(b.supportsListModels?.(k)===!1){return i({ok:!0,models:(g=k,h=b,(h.getRegistryModels?.(g)??[]).filter(Boolean).sort())})}let n=b.effectiveAiConfig?.(k)??{provider:k,apiKey:"",baseUrl:""},o=l||n.apiKey||"",p=m||n.baseUrl||"";if(!o&&!p)return i({ok:!1,error:"No API key configured"});return await dV({provider:k,apiKey:o,baseUrl:p,services:b})}catch(a){return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}}async function dV(a){let b=new AbortController,c=setTimeout(()=>b.abort(),a.services.timeoutMs??1e4);try{let c=await dW(a.provider,a.apiKey,a.baseUrl,b.signal,a.services);return i({ok:!0,models:c})}catch(a){if(a instanceof Error&&"AbortError"===a.name)return i({ok:!1,error:"Request timed out"});return i({ok:!1,error:a instanceof Error?a.message:"Network error"})}finally{clearTimeout(c)}}async function dW(a,b,c,d,e){let f=e.getProviderApiType?.(a)??"openai-completions",g=function(a,b,c,d){let e=d.buildEndpointCandidates??((a,b)=>[`${a.replace(/\/+$/,"")}${b}`]);if(b)return e(b,"/models",c);let f=d.getDefaultBaseUrl?.(a)??"";return f?e(f,"/models",c):["https://api.openai.com/v1/models"]}(a,c,f,e);return await dX(g,b,f,d,e)}async function dX(a,b,c,d,e){let f=e.fetch??dY,g="No endpoint candidates",h=[];for(let e of a){h.push(e);let a={};"anthropic-messages"===c?(b&&(a["x-api-key"]=b),a["anthropic-version"]="2023-06-01"):b&&(a.Authorization=`Bearer ${b}`);let i=await f(e,{headers:a,signal:d});if(!i.ok){let a=await i.text().catch(()=>"");if(g=`HTTP ${i.status} @ ${e}: ${a.slice(0,200)}`,400===i.status||404===i.status||405===i.status)continue;throw Error(`Failed to list models: ${g}`)}let j=await i.json();if(j&&"object"==typeof j&&Array.isArray(j.data))return j.data.map(a=>a.id).filter(a=>"string"==typeof a&&!!a).sort();if(j&&"object"==typeof j&&Array.isArray(j.models))return j.models.map(a=>"string"==typeof a?a:a?.id).filter(a=>"string"==typeof a&&!!a).sort();throw Error(`Failed to list models: incompatible response shape from ${e}; tried ${h.length} endpoint candidate(s)`)}throw Error(`Failed to list models: ${g}; tried ${h.length} endpoint candidate(s)`)}async function dY(a,b){return fetch(a,b)}function dZ(a){return"string"==typeof a?a:""}let d$=new Set(["anthropic","openai","google","groq","deepseek","ollama","lmstudio","openrouter","siliconflow"]);async function d_(a,b={}){try{var c,d;let e=a&&"object"==typeof a?a:{},f=d3(e.provider),g=d3(e.apiKey),h=d3(e.model),j=d3(e.baseUrl),k=d3(e.baseProviderId);if(k&&d4(k,b)){if(!g)return i({ok:!1,code:"auth_error",error:"No API key configured"});if(!h)return i({ok:!1,code:"unknown",error:"Model is required"},{status:400});return await d1({provider:k,apiKey:g,model:h,baseUrl:j,services:b})}if(f&&(c=f,(d=b).isProviderEntryId?d.isProviderEntryId(c):c.startsWith("p_"))){let a=b.readSettings?.()??{ai:{providers:[]}},c=Array.isArray(a.ai?.providers)?a.ai.providers:[],d=b.findProvider?.(c,f);if(!d)return i({ok:!1,code:"unknown",error:"Provider not found"},{status:400});let e=g||d.apiKey||"";if(!e)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d1({provider:d.protocol,apiKey:e,model:h||d.model||void 0,baseUrl:j||d.baseUrl||void 0,services:b})}if(!f||!d4(f,b))return i({ok:!1,code:"unknown",error:"Invalid provider"},{status:400});let l=b.effectiveAiConfig?.(f)??{provider:f,apiKey:"",model:void 0,baseUrl:void 0},m=g||l.apiKey||"";if(!m)return i({ok:!1,code:"auth_error",error:"No API key configured"});return await d1({provider:f,apiKey:m,model:h||l.model||void 0,baseUrl:j||void 0,services:b})}catch(a){return i({ok:!1,...d0(a)})}}function d0(a){let b=a instanceof Error?a.message:String(a),c=b.toLowerCase();return a instanceof Error&&"AbortError"===a.name?{code:"network_error",error:"Request timed out"}:c.includes("401")||c.includes("403")||c.includes("invalid")&&c.includes("key")||c.includes("authentication")||c.includes("unauthorized")||c.includes("api key")&&(c.includes("not valid")||c.includes("incorrect"))?{code:"auth_error",error:"Invalid API key"}:c.includes("model")&&(c.includes("not found")||c.includes("does not exist"))?{code:"model_not_found",error:`Model not found: ${b.slice(0,200)}`}:c.includes("404")||c.includes("page not found")||c.includes("invalid url")?{code:"endpoint_error",error:`Endpoint or protocol mismatch: ${b.slice(0,200)}`}:c.includes("429")||c.includes("rate")||c.includes("quota")?{code:"rate_limited",error:"Rate limited — try again later"}:c.includes("econnrefused")||c.includes("enotfound")||c.includes("etimedout")||c.includes("fetch failed")||c.includes("network")?{code:"network_error",error:b.slice(0,200)}:{code:"unknown",error:b.slice(0,200)}}async function d1(a){let b=a.services.now?.()??Date.now(),c=new AbortController,d=setTimeout(()=>c.abort(),a.services.timeoutMs??15e3);try{let d=a.services.testModel??d2;return await d({provider:a.provider,apiKey:a.apiKey,model:a.model,baseUrl:a.baseUrl,signal:c.signal}),a.services.clearCompatCacheForBaseUrl?.(a.baseUrl),i({ok:!0,latency:(a.services.now?.()??Date.now())-b})}catch(a){return i({ok:!1,...d0(a)})}finally{clearTimeout(d)}}async function d2(){throw Error("Provider test service is not configured")}function d3(a){return"string"==typeof a?a:""}function d4(a,b){return b.isProviderId?b.isProviderId(a):d$.has(a)}function d5(a,b={}){try{var c,d;let e=!(c=a)||"object"!=typeof c||!1!==c.removeConfig,f=function(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}(b.env??process.env),g=b.spawn??aF.spawn,h=b.nodeBin??f.MINDOS_NODE_BIN??process.execPath,j=b.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:b.env??process.env,runtimeRoot:b.runtimeRoot,projectRoot:b.projectRoot}),k=g(h,[j,"uninstall"],{detached:!0,stdio:["pipe","ignore","ignore"],env:f});return k.stdin?.write((d=e,`Y
55
55
  ${d?"Y":"N"}
56
56
  N
57
- `)),k.stdin?.end(),k.unref(),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function d1(a,b={}){let c=a&&"object"==typeof a?Number(a.port):0;if(!c||c<1024||c>65535)return i({error:"Invalid port"},{status:400});if(b.myWebPort&&c===b.myWebPort||b.myMcpPort&&c===b.myMcpPort)return i({available:!0,isSelf:!0});let d=b.isPortInUse??d2;if(!await d(c))return i({available:!0,isSelf:!1});let e=b.isSelfPort??d3;if(await e(c))return i({available:!0,isSelf:!0});let f=new Set;b.myWebPort&&f.add(b.myWebPort),b.myMcpPort&&f.add(b.myMcpPort);let g=b.findFreePort??d4;return i({available:!1,isSelf:!1,suggestion:await g(c+1,f)})}async function d2(a){return new Promise(b=>{let c=(0,dy.createConnection)({port:a,host:"127.0.0.1"}),d=a=>{c.destroy(),b(a)};c.setTimeout(500,()=>d(!0)),c.once("connect",()=>d(!0)),c.once("error",a=>{b("ECONNREFUSED"!==a.code)})})}async function d3(a){for(let b of["127.0.0.1","localhost"])try{let c=await fetch(`http://${b}:${a}/api/health`,{signal:AbortSignal.timeout(2e3)});if(!c.ok)continue;let d=await c.json();if("mindos"===d.service)return!0}catch{}return!1}async function d4(a,b){for(let c=a;c<=65535;c++)if(!b.has(c)&&!await d2(c))return c;return null}function d5(a,b={}){let c=a&&"object"==typeof a?a.seed:void 0,d="string"==typeof c&&c.trim()?(0,t.createHash)("sha256").update(c.trim()).digest("hex").slice(0,24):(b.randomBytes??t.randomBytes)(12).toString("hex");return i({token:d.match(/.{4}/g)?.join("-")??d})}function d6(a,b={}){let c=b.homeDir??(0,Y.homedir)();return"~"===a?c:a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(c,a.slice(2)):a}function d7(a,b={}){let c=ea(a),d=b.homeDir??(0,Y.homedir)(),e=ea(d);if(!eb(a))return{safe:!1,reason:"Knowledge base path must be an absolute path or start with ~/.",reasonZh:"知识库路径必须是绝对路径,或以 ~/ 开头。"};if(ec(c,`${e}/.mindos`))return{safe:!1,reason:"Cannot use ~/.mindos/ - this is the MindOS system directory (config, cache, updater). It gets modified during updates.",reasonZh:"不能使用 ~/.mindos/ 目录——这是 MindOS 系统目录(配置、缓存、更新器),更新时会被修改。"};if("win32"===process.platform){let a=ea(process.env.APPDATA||p.join(d,"AppData","Roaming")),b=ea(process.env.LOCALAPPDATA||p.join(d,"AppData","Local")),e=`${b}/mindos`;if(ec(c,`${a}/mindos`)||ec(c,e))return{safe:!1,reason:"Cannot use AppData\\MindOS - this is the Electron app data directory. It may be cleared when uninstalling.",reasonZh:"不能使用 AppData\\MindOS 目录——这是 Electron 应用数据目录,卸载时可能被清除。"};let f=ea(process.env.ProgramFiles||"C:\\Program Files"),g=ea(process.env["ProgramFiles(x86)"]||"C:\\Program Files (x86)");if(ec(c,f)||ec(c,g))return{safe:!1,reason:"Cannot use Program Files - this is the Windows application directory. It gets cleared when reinstalling apps.",reasonZh:"不能使用 Program Files 目录——这是 Windows 应用程序目录,重装时会被清除。"}}if("darwin"===process.platform){if(c.includes(".app/")||c.endsWith(".app"))return{safe:!1,reason:"Cannot use a path inside an .app bundle - it gets replaced when updating the app.",reasonZh:"不能使用 .app 包内的路径——更新应用时会被替换。"};if(c.startsWith("/applications/mindos"))return{safe:!1,reason:"Cannot use /Applications/MindOS - this is the app install location. Use ~/MindOS/mind or ~/Documents instead.",reasonZh:"不能使用 /Applications/MindOS——这是应用安装位置。请使用 ~/MindOS/mind 或 ~/Documents。"}}if("linux"===process.platform&&(c.startsWith("/opt/mindos")||c.startsWith("/usr/share/mindos")))return{safe:!1,reason:"Cannot use /opt/MindOS or /usr/share/MindOS - these are system install directories. Use ~/MindOS/mind instead.",reasonZh:"不能使用 /opt/MindOS 或 /usr/share/MindOS——这些是系统安装目录。请使用 ~/MindOS/mind。"};let f=process.env.MINDOS_INSTALL_DIR;return f&&ec(c,ea(f))?{safe:!1,reason:"Cannot use a path inside the MindOS Desktop installation directory - it gets deleted when reinstalling or uninstalling the app.",reasonZh:"不能使用 MindOS Desktop 安装目录内的路径——重装或卸载应用时会被删除。"}:{safe:!0}}function d8(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({error:"Invalid path"},{status:400});let d=d6(c.trim(),b),e=d7(d,b);if(!e.safe)return i({exists:!1,empty:!0,count:0,unsafe:!0,reason:e.reason,reasonZh:e.reasonZh});let f=(0,o.existsSync)(d),g=!0,h=0;if(f)try{h=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).length,g=0===h}catch{g=!1}return i({exists:f,empty:g,count:h,unsafe:!1})}function d9(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({dirs:[]});let d=d6(c.trim(),b);if(!eb(d)||!(0,o.existsSync)(d))return i({dirs:[]});try{let a=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).filter(a=>{try{return(0,o.statSync)((0,p.join)(d,a)).isDirectory()}catch{return!1}}).sort().slice(0,20);return i({dirs:a})}catch{return i({dirs:[]})}}function ea(a){return p.normalize(a).toLowerCase().replace(/\\/g,"/")}function eb(a){return p.isAbsolute(a)||p.win32.isAbsolute(a)}function ec(a,b){return a===b||a.startsWith(`${b}/`)}let ed={anthropic:{name:"Anthropic",defaultModel:"claude-sonnet-4-6"},openai:{name:"OpenAI",defaultModel:"gpt-5.4"},google:{name:"Google Gemini",defaultModel:"gemini-2.5-flash"},groq:{name:"Groq",defaultModel:"llama-3.3-70b-versatile"},xai:{name:"xAI (Grok)",defaultModel:"grok-3"},openrouter:{name:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4"},mistral:{name:"Mistral",defaultModel:"mistral-large-latest"},deepseek:{name:"DeepSeek",defaultModel:"deepseek-chat"},zai:{name:"ZhipuAI (GLM)",defaultModel:"glm-4-plus"},"zai-cn":{name:"ZhipuAI (GLM China)",defaultModel:"glm-4-plus"},"kimi-coding":{name:"Kimi Coding",defaultModel:"kimi-k2-thinking"},ollama:{name:"Ollama",defaultModel:"llama3.2"},"lm-studio":{name:"LM Studio",defaultModel:""},vllm:{name:"vLLM",defaultModel:""}};function ee(a){return{...a,ai:{activeProvider:a.ai?.activeProvider??"",providers:Array.isArray(a.ai?.providers)?a.ai.providers:[]},mindRoot:a.mindRoot??""}}function ef(a){return a.homeDir?.()??(0,Y.homedir)()}function eg(a,b,c,d,e){let f=String(b),g=e.providerPresets?.[f]??ed[f];return{id:a,name:"string"==typeof c.name&&c.name?c.name:d?.name??g?.name??f,protocol:f,apiKey:"string"==typeof c.apiKey&&c.apiKey?c.apiKey:d?.apiKey??"",model:"string"==typeof c.model&&c.model?c.model:d?.model??g?.defaultModel??"",baseUrl:"string"==typeof c.baseUrl?c.baseUrl:d?.baseUrl??""}}function eh(a,b){return"string"==typeof a&&(b.isProviderId?.(a)??Object.prototype.hasOwnProperty.call(ed,a))}function ei(a){let b,c,d,e,f;return b=ee(a.readSettings()),c=ef(a),d=a.pathSep?.()??p.sep,e=b.mindRoot||[c,"MindOS","mind"].join(d),f=b.ai.providers.map(a=>{var b;return{id:a.id,name:a.name,protocol:a.protocol,model:a.model,baseUrl:a.baseUrl,apiKeyMask:(b=a.apiKey)&&!(b.length<6)?`${b.slice(0,6)}***`:b?"***":""}}),i({mindRoot:e,homeDir:c,platform:a.platform?.()??(0,Y.platform)(),port:b.port??3456,mcpPort:b.mcpPort??8781,authToken:b.authToken??"",webPassword:b.webPassword??"",activeProvider:b.ai.activeProvider,providerConfigs:f,guideState:b.guideState??null})}function ej(a,b){return function(a,b){var c,d,e,f,g,h,j;let k=a&&"object"==typeof a?a:{},l="string"==typeof k.mindRoot?k.mindRoot:"";if(!l)return i({error:"mindRoot is required"},{status:400});let m=(c=l.trim(),d=b,d.expandPathHome?.(c)??d6(c,{homeDir:ef(d)})),n=(e=m,f=b,f.validateMindRootPath?.(e)??d7(e,{homeDir:ef(f)}));if(!n.safe)return i({error:n.reason??"Unsafe path",errorZh:n.reasonZh,unsafePath:!0},{status:400});let p="number"==typeof k.port?k.port:3456,q="number"==typeof k.mcpPort?k.mcpPort:8781;if(p<1024||p>65535)return i({error:`Invalid web port: ${p}`},{status:400});if(q<1024||q>65535)return i({error:`Invalid MCP port: ${q}`},{status:400});let r="string"==typeof k.template?k.template:void 0,s=(b.existsSync??o.existsSync)(m);if(r){let a=function(a,b,c){if(c.applyTemplate)return c.applyTemplate(a,b);let d=ck({template:a},{mindRoot:b});return d.status>=400?{error:d.body?.error??`Failed to apply template: ${a}`,status:d.status}:{ok:!0}}(r,m,b);if("error"in a)return i({error:a.error},{status:a.status??500})}else s||(b.mkdirSync??(a=>(0,o.mkdirSync)(a,{recursive:!0})))(m);let t=ee(b.readSettings()),u=t.port??3456,v="string"==typeof k.authToken?k.authToken:void 0,w="string"==typeof k.webPassword?k.webPassword:void 0,x=v??t.authToken??"",y=w??"",z=!0===t.setupPending||!t.mindRoot||p!==(t.port??3456)||q!==(t.mcpPort??8781)||m!==(t.mindRoot||"")||x!==(t.authToken??"")||y!==(t.webPassword??""),A={...t,ai:function(a,b,c){if(!b||"object"!=typeof b)return a;let d=[...a.providers],e=b.providers;if(Array.isArray(e)){for(let a of e){if(!a||"object"!=typeof a)continue;let b=a;if("string"!=typeof b.id||!eh(b.protocol,c))continue;let e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g=eg(b.id,b.protocol,b,f,c);e>=0?d[e]=g:d.push(g)}return{activeProvider:"string"==typeof b.activeProvider?b.activeProvider:a.activeProvider,providers:d}}if(e&&"object"==typeof e){for(let[a,b]of Object.entries(e)){if(!eh(a,c)||!b||"object"!=typeof b)continue;let e=d.findIndex(b=>b.protocol===a),f=e>=0?d[e]:void 0,g=eg(f?.id??c.generateProviderId?.()??`p_${Math.random().toString(36).slice(2,10)}`,a,b,f,c);e>=0?d[e]=g:d.push(g)}let f=a.activeProvider;return"string"==typeof b.provider&&eh(b.provider,c)&&(f=d.find(a=>a.protocol===b.provider)?.id??f),{activeProvider:f,providers:d}}return a}(t.ai,k.ai,b),mindRoot:m,port:p,mcpPort:q,authToken:v??t.authToken,webPassword:w??"",startMode:t.startMode,setupPending:!1,setupPort:void 0,disabledSkills:"zh"===r?["mindos"]:["mindos-zh"],guideState:{active:!0,dismissed:!1,template:"zh"===(g=r)?"zh":"empty"===g?"empty":"en",step1Done:!1,askedAI:!1,nextStepIndex:0},connectionMode:(h=t.connectionMode,(j=k.connectionMode)&&"object"==typeof j&&"boolean"==typeof j.cli&&"boolean"==typeof j.mcp?{cli:j.cli,mcp:j.mcp}:h??{cli:!0,mcp:!1})};return b.writeSettings(A),i({ok:!0,portChanged:p!==u,needsRestart:z,newPort:p})}(a,b)}function ek(a,b){let c=(a&&"object"==typeof a?a:{}).guideState;if(!c||"object"!=typeof c||Array.isArray(c))return i({error:"guideState object required"},{status:400});let d=ee(b.readSettings()),e={...d.guideState??{active:!1,dismissed:!1,template:"en",step1Done:!1,askedAI:!1,nextStepIndex:0}};return"boolean"==typeof c.dismissed&&(e.dismissed=c.dismissed),"boolean"==typeof c.step1Done&&(e.step1Done=c.step1Done),"boolean"==typeof c.askedAI&&(e.askedAI=c.askedAI),"number"==typeof c.nextStepIndex&&c.nextStepIndex>=0&&(e.nextStepIndex=c.nextStepIndex),"boolean"==typeof c.active&&(e.active=c.active),"number"==typeof c.walkthroughStep&&c.walkthroughStep>=0&&(e.walkthroughStep=c.walkthroughStep),"boolean"==typeof c.walkthroughDismissed&&(e.walkthroughDismissed=c.walkthroughDismissed),b.writeSettings({...d,guideState:e}),i({ok:!0,guideState:e})}function el(a){let b=new Set(a.disabledSkills??[]),c=new Map;for(let d of a.skillRoots)for(let a of function(a,b){if(!(0,o.existsSync)(a.path)||"mindos-user"===a.origin&&(0,o.lstatSync)(a.path).isSymbolicLink())return[];let c=[];for(let d of(0,o.readdirSync)(a.path,{withFileTypes:!0})){if(!d.isDirectory())continue;let e=(0,p.join)(a.path,d.name,"SKILL.md");if(!(0,o.existsSync)(e)||!(0,o.statSync)(e).isFile())continue;let f=eo((0,o.readFileSync)(e,"utf-8")),g=f.name||d.name;c.push({name:g,description:f.description||g,path:e,source:a.source,enabled:!b.has(g),editable:a.editable,origin:a.origin})}return c}(d,b))c.has(a.name)||c.set(a.name,a);return i({skills:[...c.values()].sort((a,b)=>a.name.localeCompare(b.name))},{headers:k(300)})}function em(a,b){let c=(g=a)&&"object"==typeof g?g:{},{action:d,name:e}=c,f=b.readSettings();if(e&&(h=e,!/^[a-z0-9][a-z0-9-]*$/.test(h)))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});switch(d){case"toggle":if(!e)return i({error:"name required"},{status:400});var g,h,j,k,l,m,n,q=e,r=c.enabled,s=f,t=b;let u=[...s.disabledSkills??[]];if(!1===r)u.includes(q)||u.push(q);else{let a=u.indexOf(q);a>=0&&u.splice(a,1)}return t.writeSettings({...s,disabledSkills:u}),i({ok:!0});case"create":if(!e)return i({error:"name required"},{status:400});{let a=en(b.mindRoot);if("response"in a)return a.response;var v={name:e,description:c.description,content:c.content,userSkillsDir:a.path,skillRoots:b.skillRoots};for(let a of v.skillRoots)if(!a.editable&&(0,o.existsSync)((0,p.join)(a.path,v.name)))return i({error:"A built-in skill with this name already exists"},{status:409});let d=(0,p.join)(v.userSkillsDir,v.name);if((0,o.existsSync)(d))return i({error:"A skill with this name already exists"},{status:409});(0,o.mkdirSync)(d,{recursive:!0});let f=v.content&&v.content.trimStart().startsWith("---")?v.content:`---
57
+ `)),k.stdin?.end(),k.unref(),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function d6(a,b={}){let c=a&&"object"==typeof a?Number(a.port):0;if(!c||c<1024||c>65535)return i({error:"Invalid port"},{status:400});if(b.myWebPort&&c===b.myWebPort||b.myMcpPort&&c===b.myMcpPort)return i({available:!0,isSelf:!0});let d=b.isPortInUse??d7;if(!await d(c))return i({available:!0,isSelf:!1});let e=b.isSelfPort??d8;if(await e(c))return i({available:!0,isSelf:!0});let f=new Set;b.myWebPort&&f.add(b.myWebPort),b.myMcpPort&&f.add(b.myMcpPort);let g=b.findFreePort??d9;return i({available:!1,isSelf:!1,suggestion:await g(c+1,f)})}async function d7(a){return new Promise(b=>{let c=(0,dD.createConnection)({port:a,host:"127.0.0.1"}),d=a=>{c.destroy(),b(a)};c.setTimeout(500,()=>d(!0)),c.once("connect",()=>d(!0)),c.once("error",a=>{b("ECONNREFUSED"!==a.code)})})}async function d8(a){for(let b of["127.0.0.1","localhost"])try{let c=await fetch(`http://${b}:${a}/api/health`,{signal:AbortSignal.timeout(2e3)});if(!c.ok)continue;let d=await c.json();if("mindos"===d.service)return!0}catch{}return!1}async function d9(a,b){for(let c=a;c<=65535;c++)if(!b.has(c)&&!await d7(c))return c;return null}function ea(a,b={}){let c=a&&"object"==typeof a?a.seed:void 0,d="string"==typeof c&&c.trim()?(0,t.createHash)("sha256").update(c.trim()).digest("hex").slice(0,24):(b.randomBytes??t.randomBytes)(12).toString("hex");return i({token:d.match(/.{4}/g)?.join("-")??d})}function eb(a,b={}){let c=b.homeDir??(0,Y.homedir)();return"~"===a?c:a.startsWith("~/")||a.startsWith("~\\")?(0,p.resolve)(c,a.slice(2)):a}function ec(a,b={}){let c=ef(a),d=b.homeDir??(0,Y.homedir)(),e=ef(d);if(!eg(a))return{safe:!1,reason:"Knowledge base path must be an absolute path or start with ~/.",reasonZh:"知识库路径必须是绝对路径,或以 ~/ 开头。"};if(eh(c,`${e}/.mindos`))return{safe:!1,reason:"Cannot use ~/.mindos/ - this is the MindOS system directory (config, cache, updater). It gets modified during updates.",reasonZh:"不能使用 ~/.mindos/ 目录——这是 MindOS 系统目录(配置、缓存、更新器),更新时会被修改。"};if("win32"===process.platform){let a=ef(process.env.APPDATA||p.join(d,"AppData","Roaming")),b=ef(process.env.LOCALAPPDATA||p.join(d,"AppData","Local")),e=`${b}/mindos`;if(eh(c,`${a}/mindos`)||eh(c,e))return{safe:!1,reason:"Cannot use AppData\\MindOS - this is the Electron app data directory. It may be cleared when uninstalling.",reasonZh:"不能使用 AppData\\MindOS 目录——这是 Electron 应用数据目录,卸载时可能被清除。"};let f=ef(process.env.ProgramFiles||"C:\\Program Files"),g=ef(process.env["ProgramFiles(x86)"]||"C:\\Program Files (x86)");if(eh(c,f)||eh(c,g))return{safe:!1,reason:"Cannot use Program Files - this is the Windows application directory. It gets cleared when reinstalling apps.",reasonZh:"不能使用 Program Files 目录——这是 Windows 应用程序目录,重装时会被清除。"}}if("darwin"===process.platform){if(c.includes(".app/")||c.endsWith(".app"))return{safe:!1,reason:"Cannot use a path inside an .app bundle - it gets replaced when updating the app.",reasonZh:"不能使用 .app 包内的路径——更新应用时会被替换。"};if(c.startsWith("/applications/mindos"))return{safe:!1,reason:"Cannot use /Applications/MindOS - this is the app install location. Use ~/MindOS/mind or ~/Documents instead.",reasonZh:"不能使用 /Applications/MindOS——这是应用安装位置。请使用 ~/MindOS/mind 或 ~/Documents。"}}if("linux"===process.platform&&(c.startsWith("/opt/mindos")||c.startsWith("/usr/share/mindos")))return{safe:!1,reason:"Cannot use /opt/MindOS or /usr/share/MindOS - these are system install directories. Use ~/MindOS/mind instead.",reasonZh:"不能使用 /opt/MindOS 或 /usr/share/MindOS——这些是系统安装目录。请使用 ~/MindOS/mind。"};let f=process.env.MINDOS_INSTALL_DIR;return f&&eh(c,ef(f))?{safe:!1,reason:"Cannot use a path inside the MindOS Desktop installation directory - it gets deleted when reinstalling or uninstalling the app.",reasonZh:"不能使用 MindOS Desktop 安装目录内的路径——重装或卸载应用时会被删除。"}:{safe:!0}}function ed(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({error:"Invalid path"},{status:400});let d=eb(c.trim(),b),e=ec(d,b);if(!e.safe)return i({exists:!1,empty:!0,count:0,unsafe:!0,reason:e.reason,reasonZh:e.reasonZh});let f=(0,o.existsSync)(d),g=!0,h=0;if(f)try{h=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).length,g=0===h}catch{g=!1}return i({exists:f,empty:g,count:h,unsafe:!1})}function ee(a,b={}){let c=a&&"object"==typeof a?a.path:void 0;if(!c||"string"!=typeof c)return i({dirs:[]});let d=eb(c.trim(),b);if(!eg(d)||!(0,o.existsSync)(d))return i({dirs:[]});try{let a=(0,o.readdirSync)(d).filter(a=>!a.startsWith(".")).filter(a=>{try{return(0,o.statSync)((0,p.join)(d,a)).isDirectory()}catch{return!1}}).sort().slice(0,20);return i({dirs:a})}catch{return i({dirs:[]})}}function ef(a){return p.normalize(a).toLowerCase().replace(/\\/g,"/")}function eg(a){return p.isAbsolute(a)||p.win32.isAbsolute(a)}function eh(a,b){return a===b||a.startsWith(`${b}/`)}let ei={anthropic:{name:"Anthropic",defaultModel:"claude-sonnet-4-6"},openai:{name:"OpenAI",defaultModel:"gpt-5.4"},google:{name:"Google Gemini",defaultModel:"gemini-2.5-flash"},groq:{name:"Groq",defaultModel:"llama-3.3-70b-versatile"},xai:{name:"xAI (Grok)",defaultModel:"grok-3"},openrouter:{name:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4"},mistral:{name:"Mistral",defaultModel:"mistral-large-latest"},deepseek:{name:"DeepSeek",defaultModel:"deepseek-chat"},zai:{name:"ZhipuAI (GLM)",defaultModel:"glm-4-plus"},"zai-cn":{name:"ZhipuAI (GLM China)",defaultModel:"glm-4-plus"},"kimi-coding":{name:"Kimi Coding",defaultModel:"kimi-k2-thinking"},ollama:{name:"Ollama",defaultModel:"llama3.2"},"lm-studio":{name:"LM Studio",defaultModel:""},vllm:{name:"vLLM",defaultModel:""}};function ej(a){return{...a,ai:{activeProvider:a.ai?.activeProvider??"",providers:Array.isArray(a.ai?.providers)?a.ai.providers:[]},mindRoot:a.mindRoot??""}}function ek(a){return a.homeDir?.()??(0,Y.homedir)()}function el(a,b,c,d,e){let f=String(b),g=e.providerPresets?.[f]??ei[f];return{id:a,name:"string"==typeof c.name&&c.name?c.name:d?.name??g?.name??f,protocol:f,apiKey:"string"==typeof c.apiKey&&c.apiKey?c.apiKey:d?.apiKey??"",model:"string"==typeof c.model&&c.model?c.model:d?.model??g?.defaultModel??"",baseUrl:"string"==typeof c.baseUrl?c.baseUrl:d?.baseUrl??""}}function em(a,b){return"string"==typeof a&&(b.isProviderId?.(a)??Object.prototype.hasOwnProperty.call(ei,a))}function en(a){let b,c,d,e,f;return b=ej(a.readSettings()),c=ek(a),d=a.pathSep?.()??p.sep,e=b.mindRoot||[c,"MindOS","mind"].join(d),f=b.ai.providers.map(a=>{var b;return{id:a.id,name:a.name,protocol:a.protocol,model:a.model,baseUrl:a.baseUrl,apiKeyMask:(b=a.apiKey)&&!(b.length<6)?`${b.slice(0,6)}***`:b?"***":""}}),i({mindRoot:e,homeDir:c,platform:a.platform?.()??(0,Y.platform)(),port:b.port??3456,mcpPort:b.mcpPort??8781,authToken:b.authToken??"",webPassword:b.webPassword??"",activeProvider:b.ai.activeProvider,providerConfigs:f,guideState:b.guideState??null})}function eo(a,b){return function(a,b){var c,d,e,f,g,h,j;let k=a&&"object"==typeof a?a:{},l="string"==typeof k.mindRoot?k.mindRoot:"";if(!l)return i({error:"mindRoot is required"},{status:400});let m=(c=l.trim(),d=b,d.expandPathHome?.(c)??eb(c,{homeDir:ek(d)})),n=(e=m,f=b,f.validateMindRootPath?.(e)??ec(e,{homeDir:ek(f)}));if(!n.safe)return i({error:n.reason??"Unsafe path",errorZh:n.reasonZh,unsafePath:!0},{status:400});let p="number"==typeof k.port?k.port:3456,q="number"==typeof k.mcpPort?k.mcpPort:8781;if(p<1024||p>65535)return i({error:`Invalid web port: ${p}`},{status:400});if(q<1024||q>65535)return i({error:`Invalid MCP port: ${q}`},{status:400});let r="string"==typeof k.template?k.template:void 0,s=(b.existsSync??o.existsSync)(m);if(r){let a=function(a,b,c){if(c.applyTemplate)return c.applyTemplate(a,b);let d=cl({template:a},{mindRoot:b});return d.status>=400?{error:d.body?.error??`Failed to apply template: ${a}`,status:d.status}:{ok:!0}}(r,m,b);if("error"in a)return i({error:a.error},{status:a.status??500})}else s||(b.mkdirSync??(a=>(0,o.mkdirSync)(a,{recursive:!0})))(m);let t=ej(b.readSettings()),u=t.port??3456,v="string"==typeof k.authToken?k.authToken:void 0,w="string"==typeof k.webPassword?k.webPassword:void 0,x=v??t.authToken??"",y=w??"",z=!0===t.setupPending||!t.mindRoot||p!==(t.port??3456)||q!==(t.mcpPort??8781)||m!==(t.mindRoot||"")||x!==(t.authToken??"")||y!==(t.webPassword??""),A={...t,ai:function(a,b,c){if(!b||"object"!=typeof b)return a;let d=[...a.providers],e=b.providers;if(Array.isArray(e)){for(let a of e){if(!a||"object"!=typeof a)continue;let b=a;if("string"!=typeof b.id||!em(b.protocol,c))continue;let e=d.findIndex(a=>a.id===b.id),f=e>=0?d[e]:void 0,g=el(b.id,b.protocol,b,f,c);e>=0?d[e]=g:d.push(g)}return{activeProvider:"string"==typeof b.activeProvider?b.activeProvider:a.activeProvider,providers:d}}if(e&&"object"==typeof e){for(let[a,b]of Object.entries(e)){if(!em(a,c)||!b||"object"!=typeof b)continue;let e=d.findIndex(b=>b.protocol===a),f=e>=0?d[e]:void 0,g=el(f?.id??c.generateProviderId?.()??`p_${Math.random().toString(36).slice(2,10)}`,a,b,f,c);e>=0?d[e]=g:d.push(g)}let f=a.activeProvider;return"string"==typeof b.provider&&em(b.provider,c)&&(f=d.find(a=>a.protocol===b.provider)?.id??f),{activeProvider:f,providers:d}}return a}(t.ai,k.ai,b),mindRoot:m,port:p,mcpPort:q,authToken:v??t.authToken,webPassword:w??"",startMode:t.startMode,setupPending:!1,setupPort:void 0,disabledSkills:"zh"===r?["mindos"]:["mindos-zh"],guideState:{active:!0,dismissed:!1,template:"zh"===(g=r)?"zh":"empty"===g?"empty":"en",step1Done:!1,askedAI:!1,nextStepIndex:0},connectionMode:(h=t.connectionMode,(j=k.connectionMode)&&"object"==typeof j&&"boolean"==typeof j.cli&&"boolean"==typeof j.mcp?{cli:j.cli,mcp:j.mcp}:h??{cli:!0,mcp:!1})};return b.writeSettings(A),i({ok:!0,portChanged:p!==u,needsRestart:z,newPort:p})}(a,b)}function ep(a,b){let c=(a&&"object"==typeof a?a:{}).guideState;if(!c||"object"!=typeof c||Array.isArray(c))return i({error:"guideState object required"},{status:400});let d=ej(b.readSettings()),e={...d.guideState??{active:!1,dismissed:!1,template:"en",step1Done:!1,askedAI:!1,nextStepIndex:0}};return"boolean"==typeof c.dismissed&&(e.dismissed=c.dismissed),"boolean"==typeof c.step1Done&&(e.step1Done=c.step1Done),"boolean"==typeof c.askedAI&&(e.askedAI=c.askedAI),"number"==typeof c.nextStepIndex&&c.nextStepIndex>=0&&(e.nextStepIndex=c.nextStepIndex),"boolean"==typeof c.active&&(e.active=c.active),"number"==typeof c.walkthroughStep&&c.walkthroughStep>=0&&(e.walkthroughStep=c.walkthroughStep),"boolean"==typeof c.walkthroughDismissed&&(e.walkthroughDismissed=c.walkthroughDismissed),b.writeSettings({...d,guideState:e}),i({ok:!0,guideState:e})}function eq(a){let b=new Set(a.disabledSkills??[]),c=new Map;for(let d of a.skillRoots)for(let a of function(a,b){if(!(0,o.existsSync)(a.path)||"mindos-user"===a.origin&&(0,o.lstatSync)(a.path).isSymbolicLink())return[];let c=[];for(let d of(0,o.readdirSync)(a.path,{withFileTypes:!0})){if(!d.isDirectory())continue;let e=(0,p.join)(a.path,d.name,"SKILL.md");if(!(0,o.existsSync)(e)||!(0,o.statSync)(e).isFile())continue;let f=et((0,o.readFileSync)(e,"utf-8")),g=f.name||d.name;c.push({name:g,description:f.description||g,path:e,source:a.source,enabled:!b.has(g),editable:a.editable,origin:a.origin})}return c}(d,b))c.has(a.name)||c.set(a.name,a);return i({skills:[...c.values()].sort((a,b)=>a.name.localeCompare(b.name))},{headers:k(300)})}function er(a,b){let c=(g=a)&&"object"==typeof g?g:{},{action:d,name:e}=c,f=b.readSettings();if(e&&(h=e,!/^[a-z0-9][a-z0-9-]*$/.test(h)))return i({error:"Invalid skill name. Use lowercase letters, numbers, and hyphens only."},{status:400});switch(d){case"toggle":if(!e)return i({error:"name required"},{status:400});var g,h,j,k,l,m,n,q=e,r=c.enabled,s=f,t=b;let u=[...s.disabledSkills??[]];if(!1===r)u.includes(q)||u.push(q);else{let a=u.indexOf(q);a>=0&&u.splice(a,1)}return t.writeSettings({...s,disabledSkills:u}),i({ok:!0});case"create":if(!e)return i({error:"name required"},{status:400});{let a=es(b.mindRoot);if("response"in a)return a.response;var v={name:e,description:c.description,content:c.content,userSkillsDir:a.path,skillRoots:b.skillRoots};for(let a of v.skillRoots)if(!a.editable&&(0,o.existsSync)((0,p.join)(a.path,v.name)))return i({error:"A built-in skill with this name already exists"},{status:409});let d=(0,p.join)(v.userSkillsDir,v.name);if((0,o.existsSync)(d))return i({error:"A skill with this name already exists"},{status:409});(0,o.mkdirSync)(d,{recursive:!0});let f=v.content&&v.content.trimStart().startsWith("---")?v.content:`---
58
58
  name: ${v.name}
59
59
  description: ${v.description||v.name}
60
60
  ---
61
61
 
62
- ${v.content||""}`;return(0,o.writeFileSync)((0,p.join)(d,"SKILL.md"),f,"utf-8"),i({ok:!0})}case"update":if(!e)return i({error:"name required"},{status:400});{let a,d=en(b.mindRoot);if("response"in d)return d.response;return j=e,k=c.content,l=d.path,a=(0,p.join)(l,j),(0,o.existsSync)(a)?(void 0!==k&&(0,o.writeFileSync)((0,p.join)(a,"SKILL.md"),k,"utf-8"),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"delete":if(!e)return i({error:"name required"},{status:400});{let a,c=en(b.mindRoot);if("response"in c)return c.response;return m=e,n=c.path,a=(0,p.join)(n,m),(0,o.existsSync)(a)?((0,o.rmSync)(a,{recursive:!0,force:!0}),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"read":if(!e)return i({error:"name required"},{status:400});var w=e,x=b.skillRoots;for(let a of x){let b=(0,p.join)(a.path,w,"SKILL.md");if((0,o.existsSync)(b))return i({content:(0,o.readFileSync)(b,"utf-8")})}return i({error:"Skill not found"},{status:404});case"read-native":if(!e||!c.sourcePath)return i({error:"name and sourcePath required"},{status:400});return function(a,b,c){var d;let e=(0,p.resolve)(b);if(d=e,!c.some(a=>(0,p.resolve)(a.path)===d))return i({error:"Invalid sourcePath"},{status:400});let f=(0,p.resolve)(e,a,"SKILL.md"),g=(0,p.relative)(e,f);if(g.startsWith("..")||(0,p.isAbsolute)(g))return i({error:"Invalid path"},{status:400});if(!(0,o.existsSync)(f))return i({error:"Skill not found"},{status:404});let h=(0,o.readFileSync)(f,"utf-8");return i({content:h,description:eo(h).description})}(e,c.sourcePath,b.skillRoots);case"record-install":return function(a,b,c){let d=a.agentKey,e=a.name,f=a.installPath;if(!d||!e||!f)return i({error:"agentKey, name, and installPath are required"},{status:400});let g=Array.isArray(b.installedSkillAgents)?[...b.installedSkillAgents]:[],h={agent:d,skill:e,path:f},j=g.findIndex(a=>a.agent===d&&a.skill===e);return j>=0?g[j]=h:g.push(h),c.writeSettings({...b,installedSkillAgents:g}),i({ok:!0})}(c,f,b);default:return i({error:`Unknown action: ${String(d)}`},{status:400})}}function en(a){try{var b;return{path:(b=a,(0,o.existsSync)(b)?(0,w.n2)(b,".skills"):(0,p.join)(b,".skills"))}}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return{response:i({error:"Access denied"},{status:403})};return{response:i({error:a},{status:500})}}}function eo(a){let b=a.match(/^---\s*\n([\s\S]*?)\n---/);if(!b)return{};let c=b[1]??"",d={};for(let a of c.split(/\r?\n/)){let b=a.indexOf(":");if(b<0)continue;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim().replace(/^['"]|['"]$/g,"");"name"===c&&(d.name=e),"description"===c&&(d.description=e)}return d}function ep(a,b){let c=eq(W(a,"space"));if(!c)return i({error:"space parameter required"},{status:400});try{(0,w.n2)(b.mindRoot,c)}catch{return i({error:"Access denied"},{status:403})}let d=b.collectAllFiles?.()??ai(b.mindRoot),e="."===c?"":`${c}/`;return i({fileCount:d.filter(a=>{let b=eq(a);return!!b&&b.startsWith(e)}).length},{headers:l(30)})}function eq(a){if(!a)return;let b=p.posix.normalize(a.trim().replace(/\\/g,"/").replace(/^\/+/,""));return b&&".."!==b&&b.startsWith("../"),b}let er=(0,p.join)((0,Y.homedir)(),".mindos"),es=(0,p.join)(er,"config.json"),et=(0,p.join)(er,"sync-state.json");async function eu(a={}){try{let b=ey(a),c=b.sync??{},d=eA(a),e=b.mindRoot;if(!c.enabled)return i({enabled:!1});let f=!!e&&eE(a,e),g=f&&e?function(a,b){if(a.getRemoteUrl)return a.getRemoteUrl(b);try{return eF(b,["remote","get-url","origin"])}catch{return null}}(a,e):null;if(!f||!g)return i({enabled:!0,needsSetup:!0,provider:c.provider||"git",remote:g||"(not configured)",branch:"main",lastSync:null,lastPull:null,unpushed:"?",conflicts:[],lastError:f?"Remote not configured. Please re-configure sync.":"Git repository not found in knowledge base directory. Please re-configure sync.",autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300});return i({enabled:!0,provider:c.provider||"git",remote:g,branch:function(a,b){if(a.getBranch)return a.getBranch(b);try{return eF(b,["rev-parse","--abbrev-ref","HEAD"])}catch{return"main"}}(a,e)||"main",lastSync:d.lastSync||null,lastPull:d.lastPull||null,unpushed:function(a,b){if(a.getUnpushedCount)return a.getUnpushedCount(b);try{return eF(b,["rev-list","--count","@{u}..HEAD"])}catch{return"?"}}(a,e),conflicts:d.conflicts||[],lastError:d.lastError||null,autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function ev(a,b={}){try{let l=a&&"object"==typeof a?a:{},m=ey(b),n=m.mindRoot;if(!n)return i({error:"No mindRoot configured"},{status:400});switch(l.action){case"init":return await ew(l,b);case"now":return await ex(n,b);case"on":return m.sync={...m.sync??{},enabled:!0},ez(m,b),i({ok:!0,enabled:!0});case"off":return m.sync={...m.sync??{},enabled:!1},ez(m,b),i({ok:!0,enabled:!1});case"reset":delete m.sync,ez(m,b);try{eB({},b)}catch{}return i({ok:!0,enabled:!1});case"gitignore-get":var c,d,e,f=n;try{return i({content:(0,o.readFileSync)((0,w.n2)(f,".gitignore"),"utf-8")})}catch{return i({content:""})}case"gitignore-save":var g=n,h=l;if("string"!=typeof h.content)return i({error:"Missing content"},{status:400});try{return(0,o.writeFileSync)((0,w.n2)(g,".gitignore"),h.content,"utf-8"),i({ok:!0})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}case"resolve-conflict":return function(a,b,c){let d=b.remote,e=b.branch??"keep-local";if(!d||"string"!=typeof d)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eG(a,b)}(a,d))return i({error:"Invalid file path"},{status:400});let f=eG(a,`${d}.sync-conflict`),g=eG(a,d);if(!f||!g)return i({error:"Invalid file path"},{status:400});"keep-remote"===e&&(0,o.existsSync)(f)&&(0,o.writeFileSync)(g,(0,o.readFileSync)(f,"utf-8"),"utf-8"),(0,o.existsSync)(f)&&(0,o.unlinkSync)(f);let h=eA(c);return h.conflicts&&(h.conflicts=h.conflicts.filter(a=>a.file!==d),eB(h,c)),i({ok:!0})}(n,l,b);case"conflict-preview":var j=n,k=l;let p=k.remote;if(!p||"string"!=typeof p)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eG(a,b)}(j,p))return i({error:"Invalid file path"},{status:400});let q=eG(j,p),r=eG(j,`${p}.sync-conflict`);return q&&r?i({local:(0,o.existsSync)(q)?(0,o.readFileSync)(q,"utf-8"):"",remote:(0,o.existsSync)(r)?(0,o.readFileSync)(r,"utf-8"):""}):i({error:"Invalid file path"},{status:400});case"update-intervals":let s,t;return c=l,d=m,e=b,s="number"==typeof c.autoCommitInterval?c.autoCommitInterval:void 0,t="number"==typeof c.autoPullInterval?c.autoPullInterval:void 0,void 0===s&&void 0===t?i({error:"At least one interval must be provided"},{status:400}):void 0!==s&&(!Number.isInteger(s)||s<10||s>300)?i({error:"autoCommitInterval must be an integer between 10 and 300 seconds"},{status:400}):void 0!==t&&(!Number.isInteger(t)||t<60||t>3600)?i({error:"autoPullInterval must be an integer between 60 and 3600 seconds"},{status:400}):(d.sync=d.sync??{},void 0!==s&&(d.sync.autoCommitInterval=s),void 0!==t&&(d.sync.autoPullInterval=t),ez(d,e),i({autoCommitInterval:d.sync.autoCommitInterval||30,autoPullInterval:d.sync.autoPullInterval||300}));default:return i({error:`Unknown action: ${l.action}`},{status:400})}}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function ew(a,b){let c=a.remote?.trim();if(!c)return i({error:"Remote URL is required"},{status:400});let d=c.startsWith("https://"),e=/^git@[\w.-]+:.+/.test(c);if(!d&&!e)return i({error:"Invalid remote URL — must be HTTPS or SSH format"},{status:400});let f=["sync","init","--non-interactive","--remote",c,"--branch",a.branch?.trim()||"main"];a.token&&f.push("--token",a.token);try{return await eH(f,12e4,b),i({success:!0,message:"Sync initialized"})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:400})}}async function ex(a,b){if(!eE(b,a))return i({error:"Not a git repository"},{status:400});try{return await eH(["sync","now"],12e4,b),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function ey(a){return a.readConfig?a.readConfig():eC(a.configPath??es)}function ez(a,b){b.writeConfig?b.writeConfig(a):eD(b.configPath??es,a)}function eA(a){return a.readState?a.readState():eC(a.statePath??et)}function eB(a,b){b.writeState?b.writeState(a):eD(b.statePath??et,a)}function eC(a){try{return JSON.parse((0,o.readFileSync)(a,"utf-8"))}catch{return{}}}function eD(a,b){let c=(0,p.dirname)(a);(0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0});let d=`${a}.tmp`;(0,o.writeFileSync)(d,`${JSON.stringify(b,null,2)}
63
- `,"utf-8"),(0,o.renameSync)(d,a)}function eE(a,b){return a.isGitRepo?a.isGitRepo(b):(0,o.existsSync)((0,p.join)(b,".git"))}function eF(a,b){return(0,aE.execFileSync)("git",b,{cwd:a,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()}function eG(a,b){try{return(0,w.n2)(a,b)}catch{return null}}async function eH(a,b,c){if(c.runCli)return void await c.runCli(a,b);let d=c.env??process.env,e=c.nodeBin??d.MINDOS_NODE_BIN??process.execPath,f=c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:d,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot});await new Promise((c,d)=>{(0,aE.execFile)(e,[f,...a],{timeout:b},(a,b,e)=>{a?d(Error(e?.trim()||a.message)):c()})})}function eI(a){return i({v:a.getTreeVersion()},{headers:l(0)})}let eJ={stage:"idle",stages:[],error:null,version:null,startedAt:null},eK=["https://registry.npmmirror.com/@geminilight/mindos/latest","https://registry.npmjs.org/@geminilight/mindos/latest"];function eL(a={}){let b=a.statusPath??(0,p.resolve)((0,Y.homedir)(),".mindos","update-status.json");try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));return i(a)}catch{return i(eJ)}}async function eM(a={}){let b=a.currentVersion??function(a){for(let b of a??[...process.env.MINDOS_PROJECT_ROOT?[(0,p.resolve)(process.env.MINDOS_PROJECT_ROOT,"package.json")]:[],(0,p.resolve)(process.cwd(),"..","package.json")])try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if("string"==typeof a.version)return a.version}catch{}return"0.0.0"}(a.packageJsonPaths),c=b,d=a.fetcher??eR;for(let b of a.registries??eK)try{let a=new AbortController,e=setTimeout(()=>a.abort(),2e3);try{let e=await d(b,{signal:a.signal});if(!e.ok)continue;let f=await e.json(),g=f&&"object"==typeof f?f.version:void 0;if("string"==typeof g&&g){c=g;break}}finally{clearTimeout(e)}}catch{continue}return i({current:b,latest:c,hasUpdate:function(a,b){let c=eS(a),d=eS(b);if(!c||!d)return 0;for(let a of[0,1,2])if(c[a]!==d[a])return c[a]-d[a];return 0}(c,b)>0})}function eN(a={}){try{var b;let c,d,e,f=(b=a.env??process.env,c=eQ(b),d=b.MINDOS_WEB_PORT,e=b.MINDOS_MCP_PORT,d&&(c.MINDOS_OLD_WEB_PORT=d),e&&(c.MINDOS_OLD_MCP_PORT=e),c);return eP("restart",f,a),(a.scheduleExit??(a=>setTimeout(()=>process.exit(0),a)))(1500),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eO(a={}){try{var b;let c=(b=a.env??process.env,eQ(b));return eP("update",c,a),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eP(a,b,c){(c.spawn??aE.spawn)(c.nodeBin??b.MINDOS_NODE_BIN??process.execPath,[c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:c.env??process.env,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot}),a],{detached:!0,stdio:"ignore",env:b}).unref()}function eQ(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}async function eR(a,b){return fetch(a,{signal:b.signal})}function eS(a){let b=a.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);return b?[Number(b[1]),Number(b[2]),Number(b[3])]:null}let eT=".mindos/workflows",eU=`title: {TITLE}
62
+ ${v.content||""}`;return(0,o.writeFileSync)((0,p.join)(d,"SKILL.md"),f,"utf-8"),i({ok:!0})}case"update":if(!e)return i({error:"name required"},{status:400});{let a,d=es(b.mindRoot);if("response"in d)return d.response;return j=e,k=c.content,l=d.path,a=(0,p.join)(l,j),(0,o.existsSync)(a)?(void 0!==k&&(0,o.writeFileSync)((0,p.join)(a,"SKILL.md"),k,"utf-8"),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"delete":if(!e)return i({error:"name required"},{status:400});{let a,c=es(b.mindRoot);if("response"in c)return c.response;return m=e,n=c.path,a=(0,p.join)(n,m),(0,o.existsSync)(a)?((0,o.rmSync)(a,{recursive:!0,force:!0}),i({ok:!0})):i({error:"Skill not found"},{status:404})}case"read":if(!e)return i({error:"name required"},{status:400});var w=e,x=b.skillRoots;for(let a of x){let b=(0,p.join)(a.path,w,"SKILL.md");if((0,o.existsSync)(b))return i({content:(0,o.readFileSync)(b,"utf-8")})}return i({error:"Skill not found"},{status:404});case"read-native":if(!e||!c.sourcePath)return i({error:"name and sourcePath required"},{status:400});return function(a,b,c){var d;let e=(0,p.resolve)(b);if(d=e,!c.some(a=>(0,p.resolve)(a.path)===d))return i({error:"Invalid sourcePath"},{status:400});let f=(0,p.resolve)(e,a,"SKILL.md"),g=(0,p.relative)(e,f);if(g.startsWith("..")||(0,p.isAbsolute)(g))return i({error:"Invalid path"},{status:400});if(!(0,o.existsSync)(f))return i({error:"Skill not found"},{status:404});let h=(0,o.readFileSync)(f,"utf-8");return i({content:h,description:et(h).description})}(e,c.sourcePath,b.skillRoots);case"record-install":return function(a,b,c){let d=a.agentKey,e=a.name,f=a.installPath;if(!d||!e||!f)return i({error:"agentKey, name, and installPath are required"},{status:400});let g=Array.isArray(b.installedSkillAgents)?[...b.installedSkillAgents]:[],h={agent:d,skill:e,path:f},j=g.findIndex(a=>a.agent===d&&a.skill===e);return j>=0?g[j]=h:g.push(h),c.writeSettings({...b,installedSkillAgents:g}),i({ok:!0})}(c,f,b);default:return i({error:`Unknown action: ${String(d)}`},{status:400})}}function es(a){try{var b;return{path:(b=a,(0,o.existsSync)(b)?(0,w.n2)(b,".skills"):(0,p.join)(b,".skills"))}}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return{response:i({error:"Access denied"},{status:403})};return{response:i({error:a},{status:500})}}}function et(a){let b=a.match(/^---\s*\n([\s\S]*?)\n---/);if(!b)return{};let c=b[1]??"",d={};for(let a of c.split(/\r?\n/)){let b=a.indexOf(":");if(b<0)continue;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim().replace(/^['"]|['"]$/g,"");"name"===c&&(d.name=e),"description"===c&&(d.description=e)}return d}function eu(a,b){let c=ev(W(a,"space"));if(!c)return i({error:"space parameter required"},{status:400});try{(0,w.n2)(b.mindRoot,c)}catch{return i({error:"Access denied"},{status:403})}let d=b.collectAllFiles?.()??ai(b.mindRoot),e="."===c?"":`${c}/`;return i({fileCount:d.filter(a=>{let b=ev(a);return!!b&&b.startsWith(e)}).length},{headers:l(30)})}function ev(a){if(!a)return;let b=p.posix.normalize(a.trim().replace(/\\/g,"/").replace(/^\/+/,""));return b&&".."!==b&&b.startsWith("../"),b}let ew=(0,p.join)((0,Y.homedir)(),".mindos"),ex=(0,p.join)(ew,"config.json"),ey=(0,p.join)(ew,"sync-state.json");async function ez(a={}){try{let b=eD(a),c=b.sync??{},d=eF(a),e=b.mindRoot;if(!c.enabled)return i({enabled:!1});let f=!!e&&eJ(a,e),g=f&&e?function(a,b){if(a.getRemoteUrl)return a.getRemoteUrl(b);try{return eK(b,["remote","get-url","origin"])}catch{return null}}(a,e):null;if(!f||!g)return i({enabled:!0,needsSetup:!0,provider:c.provider||"git",remote:g||"(not configured)",branch:"main",lastSync:null,lastPull:null,unpushed:"?",conflicts:[],lastError:f?"Remote not configured. Please re-configure sync.":"Git repository not found in knowledge base directory. Please re-configure sync.",autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300});return i({enabled:!0,provider:c.provider||"git",remote:g,branch:function(a,b){if(a.getBranch)return a.getBranch(b);try{return eK(b,["rev-parse","--abbrev-ref","HEAD"])}catch{return"main"}}(a,e)||"main",lastSync:d.lastSync||null,lastPull:d.lastPull||null,unpushed:function(a,b){if(a.getUnpushedCount)return a.getUnpushedCount(b);try{return eK(b,["rev-list","--count","@{u}..HEAD"])}catch{return"?"}}(a,e),conflicts:d.conflicts||[],lastError:d.lastError||null,autoCommitInterval:c.autoCommitInterval||30,autoPullInterval:c.autoPullInterval||300})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function eA(a,b={}){try{let l=a&&"object"==typeof a?a:{},m=eD(b),n=m.mindRoot;if(!n)return i({error:"No mindRoot configured"},{status:400});switch(l.action){case"init":return await eB(l,b);case"now":return await eC(n,b);case"on":return m.sync={...m.sync??{},enabled:!0},eE(m,b),i({ok:!0,enabled:!0});case"off":return m.sync={...m.sync??{},enabled:!1},eE(m,b),i({ok:!0,enabled:!1});case"reset":delete m.sync,eE(m,b);try{eG({},b)}catch{}return i({ok:!0,enabled:!1});case"gitignore-get":var c,d,e,f=n;try{return i({content:(0,o.readFileSync)((0,w.n2)(f,".gitignore"),"utf-8")})}catch{return i({content:""})}case"gitignore-save":var g=n,h=l;if("string"!=typeof h.content)return i({error:"Missing content"},{status:400});try{return(0,o.writeFileSync)((0,w.n2)(g,".gitignore"),h.content,"utf-8"),i({ok:!0})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}case"resolve-conflict":return function(a,b,c){let d=b.remote,e=b.branch??"keep-local";if(!d||"string"!=typeof d)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eL(a,b)}(a,d))return i({error:"Invalid file path"},{status:400});let f=eL(a,`${d}.sync-conflict`),g=eL(a,d);if(!f||!g)return i({error:"Invalid file path"},{status:400});"keep-remote"===e&&(0,o.existsSync)(f)&&(0,o.writeFileSync)(g,(0,o.readFileSync)(f,"utf-8"),"utf-8"),(0,o.existsSync)(f)&&(0,o.unlinkSync)(f);let h=eF(c);return h.conflicts&&(h.conflicts=h.conflicts.filter(a=>a.file!==d),eG(h,c)),i({ok:!0})}(n,l,b);case"conflict-preview":var j=n,k=l;let p=k.remote;if(!p||"string"!=typeof p)return i({error:"Missing file path"},{status:400});if(!function(a,b){return null!==eL(a,b)}(j,p))return i({error:"Invalid file path"},{status:400});let q=eL(j,p),r=eL(j,`${p}.sync-conflict`);return q&&r?i({local:(0,o.existsSync)(q)?(0,o.readFileSync)(q,"utf-8"):"",remote:(0,o.existsSync)(r)?(0,o.readFileSync)(r,"utf-8"):""}):i({error:"Invalid file path"},{status:400});case"update-intervals":let s,t;return c=l,d=m,e=b,s="number"==typeof c.autoCommitInterval?c.autoCommitInterval:void 0,t="number"==typeof c.autoPullInterval?c.autoPullInterval:void 0,void 0===s&&void 0===t?i({error:"At least one interval must be provided"},{status:400}):void 0!==s&&(!Number.isInteger(s)||s<10||s>300)?i({error:"autoCommitInterval must be an integer between 10 and 300 seconds"},{status:400}):void 0!==t&&(!Number.isInteger(t)||t<60||t>3600)?i({error:"autoPullInterval must be an integer between 60 and 3600 seconds"},{status:400}):(d.sync=d.sync??{},void 0!==s&&(d.sync.autoCommitInterval=s),void 0!==t&&(d.sync.autoPullInterval=t),eE(d,e),i({autoCommitInterval:d.sync.autoCommitInterval||30,autoPullInterval:d.sync.autoPullInterval||300}));default:return i({error:`Unknown action: ${l.action}`},{status:400})}}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}async function eB(a,b){let c=a.remote?.trim();if(!c)return i({error:"Remote URL is required"},{status:400});let d=c.startsWith("https://"),e=/^git@[\w.-]+:.+/.test(c);if(!d&&!e)return i({error:"Invalid remote URL — must be HTTPS or SSH format"},{status:400});let f=["sync","init","--non-interactive","--remote",c,"--branch",a.branch?.trim()||"main"];a.token&&f.push("--token",a.token);try{return await eM(f,12e4,b),i({success:!0,message:"Sync initialized"})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:400})}}async function eC(a,b){if(!eJ(b,a))return i({error:"Not a git repository"},{status:400});try{return await eM(["sync","now"],12e4,b),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eD(a){return a.readConfig?a.readConfig():eH(a.configPath??ex)}function eE(a,b){b.writeConfig?b.writeConfig(a):eI(b.configPath??ex,a)}function eF(a){return a.readState?a.readState():eH(a.statePath??ey)}function eG(a,b){b.writeState?b.writeState(a):eI(b.statePath??ey,a)}function eH(a){try{return JSON.parse((0,o.readFileSync)(a,"utf-8"))}catch{return{}}}function eI(a,b){let c=(0,p.dirname)(a);(0,o.existsSync)(c)||(0,o.mkdirSync)(c,{recursive:!0});let d=`${a}.tmp`;(0,o.writeFileSync)(d,`${JSON.stringify(b,null,2)}
63
+ `,"utf-8"),(0,o.renameSync)(d,a)}function eJ(a,b){return a.isGitRepo?a.isGitRepo(b):(0,o.existsSync)((0,p.join)(b,".git"))}function eK(a,b){return(0,aF.execFileSync)("git",b,{cwd:a,encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()}function eL(a,b){try{return(0,w.n2)(a,b)}catch{return null}}async function eM(a,b,c){if(c.runCli)return void await c.runCli(a,b);let d=c.env??process.env,e=c.nodeBin??d.MINDOS_NODE_BIN??process.execPath,f=c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:d,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot});await new Promise((c,d)=>{(0,aF.execFile)(e,[f,...a],{timeout:b},(a,b,e)=>{a?d(Error(e?.trim()||a.message)):c()})})}function eN(a){return i({v:a.getTreeVersion()},{headers:l(0)})}let eO={stage:"idle",stages:[],error:null,version:null,startedAt:null},eP=["https://registry.npmmirror.com/@geminilight/mindos/latest","https://registry.npmjs.org/@geminilight/mindos/latest"];function eQ(a={}){let b=a.statusPath??(0,p.resolve)((0,Y.homedir)(),".mindos","update-status.json");try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));return i(a)}catch{return i(eO)}}async function eR(a={}){let b=a.currentVersion??function(a){for(let b of a??[...process.env.MINDOS_PROJECT_ROOT?[(0,p.resolve)(process.env.MINDOS_PROJECT_ROOT,"package.json")]:[],(0,p.resolve)(process.cwd(),"..","package.json")])try{let a=JSON.parse((0,o.readFileSync)(b,"utf-8"));if("string"==typeof a.version)return a.version}catch{}return"0.0.0"}(a.packageJsonPaths),c=b,d=a.fetcher??eW;for(let b of a.registries??eP)try{let a=new AbortController,e=setTimeout(()=>a.abort(),2e3);try{let e=await d(b,{signal:a.signal});if(!e.ok)continue;let f=await e.json(),g=f&&"object"==typeof f?f.version:void 0;if("string"==typeof g&&g){c=g;break}}finally{clearTimeout(e)}}catch{continue}return i({current:b,latest:c,hasUpdate:function(a,b){let c=eX(a),d=eX(b);if(!c||!d)return 0;for(let a of[0,1,2])if(c[a]!==d[a])return c[a]-d[a];return 0}(c,b)>0})}function eS(a={}){try{var b;let c,d,e,f=(b=a.env??process.env,c=eV(b),d=b.MINDOS_WEB_PORT,e=b.MINDOS_MCP_PORT,d&&(c.MINDOS_OLD_WEB_PORT=d),e&&(c.MINDOS_OLD_MCP_PORT=e),c);return eU("restart",f,a),(a.scheduleExit??(a=>setTimeout(()=>process.exit(0),a)))(1500),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eT(a={}){try{var b;let c=(b=a.env??process.env,eV(b));return eU("update",c,a),i({ok:!0})}catch(a){return i({error:a instanceof Error?a.message:String(a)},{status:500})}}function eU(a,b,c){(c.spawn??aF.spawn)(c.nodeBin??b.MINDOS_NODE_BIN??process.execPath,[c.cliPath??function(a){if(a.env.MINDOS_CLI_PATH)return a.env.MINDOS_CLI_PATH;for(let b of[a.projectRoot,a.env.MINDOS_PROJECT_ROOT,a.runtimeRoot,function(a){let b=(0,p.resolve)(a);for(let a=0;a<8;a+=1){if((0,o.existsSync)((0,p.resolve)(b,"pnpm-workspace.yaml"))||(0,o.existsSync)((0,p.resolve)(b,"packages","mindos","package.json")))return b;let a=(0,p.dirname)(b);if(a===b)break;b=a}}(process.cwd()),process.cwd()].filter(a=>!!a)){let a=(0,p.resolve)(b,"packages","mindos","bin","cli.js");if((0,o.existsSync)(a))return a;let c=(0,p.resolve)(b,"bin","cli.js");if((0,o.existsSync)(c))return c}return process.argv[1]?(0,p.resolve)(process.argv[1]):"mindos"}({env:c.env??process.env,runtimeRoot:c.runtimeRoot,projectRoot:c.projectRoot}),a],{detached:!0,stdio:"ignore",env:b}).unref()}function eV(a){let b={...a};for(let a of Object.keys(b))(a.startsWith("MINDOS_")||a.startsWith("MIND_"))&&delete b[a];return delete b.AUTH_TOKEN,delete b.WEB_PASSWORD,delete b.NODE_OPTIONS,b}async function eW(a,b){return fetch(a,{signal:b.signal})}function eX(a){let b=a.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);return b?[Number(b[1]),Number(b[2]),Number(b[3])]:null}let eY=".mindos/workflows",eZ=`title: {TITLE}
64
64
  description: ""
65
65
 
66
66
  steps:
@@ -68,7 +68,7 @@ steps:
68
68
  name: Step 1
69
69
  prompt: |
70
70
  Describe what this step should do.
71
- `;function eV(a){return i({workflows:function(a){let b;try{b=(0,w.n2)(a,eT)}catch{return[]}if(!(0,o.existsSync)(b))return[];let c=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile()||!/\.flow\.(yaml|yml)$/i.test(a.name))continue;let d=(0,p.join)(b,a.name),e=(0,o.statSync)(d).mtimeMs;try{let b=(0,o.readFileSync)(d,"utf-8"),f=function(a,b){let c=eX(a.match(/^title:\s*(.*)$/m)?.[1])||eY(b),d=eX(a.match(/^description:\s*(.*)$/m)?.[1])||void 0,e=a.search(/^steps:\s*$/m);return{title:c,description:d,stepCount:((e>=0?a.slice(e):"").match(/^\s*-\s+/gm)??[]).length}}(b,a.name);c.push({path:`${eT}/${a.name}`,fileName:a.name,mtime:e,...f})}catch(b){c.push({path:`${eT}/${a.name}`,fileName:a.name,title:eY(a.name),stepCount:0,mtime:e,error:b instanceof Error?b.message:"Parse error"})}}return c.sort((a,b)=>b.mtime-a.mtime)}(a.mindRoot)})}function eW(a,b){let c=a&&"object"==typeof a&&"string"==typeof a.name?a.name.trim():"";if(!c)return i({error:"name is required"},{status:400});let d=c.trim().replace(/\s+/g," ").slice(0,200),e=d.replace(/[/\\:*?"<>|\x00-\x1F]/g,"-").replace(/-{2,}/g,"-").replace(/^[-.\s]+|[-.\s]+$/g,"").slice(0,120).trim();if(!e)return i({error:"name must contain at least one valid filename character"},{status:400});let f=`${e}.flow.yaml`;try{let c=(0,w.n2)(b.mindRoot,eT);(0,o.mkdirSync)(c,{recursive:!0});let e=(0,w.n2)(b.mindRoot,`${eT}/${f}`);if((0,o.existsSync)(e))return i({error:"Workflow already exists"},{status:409});let g=a&&"object"==typeof a&&"string"==typeof a.template?a.template:"blank",h=function(a,b,c){if("blank"!==b)try{let d=(0,w.n2)(a,eT),e=(0,o.readdirSync)(d).find(a=>a.toLowerCase().includes(b.toLowerCase())&&/\.workflow\.(yaml|yml)$/i.test(a));if(e){let b=(0,w.n2)(a,`${eT}/${e}`);return(0,o.readFileSync)(b,"utf-8").replace(/^title:.*$/m,`title: ${eZ(c)}`)}}catch{}return eU.replace("{TITLE}",eZ(c))}(b.mindRoot,g,d);return(0,o.writeFileSync)(e,h,"utf-8"),i({path:`${eT}/${f}`})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}function eX(a){return(a??"").trim().replace(/^['"]|['"]$/g,"")}function eY(a){return a.replace(/\.flow\.(yaml|yml)$/i,"")}function eZ(a){return`'${a.replace(/'/g,"''")}'`}[{id:"health",method:"GET",path:"/api/health",auth:"public"},{id:"files",method:"GET",path:"/api/files",auth:"required"},{id:"recent-files",method:"GET",path:"/api/recent-files",auth:"required"},{id:"tree-version",method:"GET",path:"/api/tree-version",auth:"required"},{id:"file.read",method:"GET",path:"/api/file",auth:"required"},{id:"file.write",method:"POST",path:"/api/file",auth:"required"},{id:"file.raw",method:"GET",path:"/api/file/raw",auth:"required"},{id:"search",method:"GET",path:"/api/search",auth:"required"},{id:"search.prewarm",method:"GET",path:"/api/search/prewarm",auth:"required"},{id:"a2a",method:"POST",path:"/api/a2a",auth:"required"},{id:"a2a.options",method:"OPTIONS",path:"/api/a2a",auth:"public"},{id:"a2a.agents",method:"GET",path:"/api/a2a/agents",auth:"required"},{id:"a2a.delegations",method:"GET",path:"/api/a2a/delegations",auth:"required"},{id:"a2a.discover",method:"POST",path:"/api/a2a/discover",auth:"required"},{id:"acp.config",method:"GET",path:"/api/acp/config",auth:"required"},{id:"acp.config.update",method:"POST",path:"/api/acp/config",auth:"required"},{id:"acp.config.delete",method:"DELETE",path:"/api/acp/config",auth:"required"},{id:"acp.detect",method:"GET",path:"/api/acp/detect",auth:"required"},{id:"acp.install",method:"POST",path:"/api/acp/install",auth:"required"},{id:"acp.registry",method:"GET",path:"/api/acp/registry",auth:"required"},{id:"acp.session",method:"GET",path:"/api/acp/session",auth:"required"},{id:"acp.session.action",method:"POST",path:"/api/acp/session",auth:"required"},{id:"acp.session.close",method:"DELETE",path:"/api/acp/session",auth:"required"},{id:"backlinks",method:"GET",path:"/api/backlinks",auth:"required"},{id:"graph",method:"GET",path:"/api/graph",auth:"required"},{id:"agent-activity",method:"GET",path:"/api/agent-activity",auth:"required"},{id:"bootstrap",method:"GET",path:"/api/bootstrap",auth:"required"},{id:"connect",method:"GET",path:"/api/connect",auth:"required"},{id:"embedding",method:"GET",path:"/api/embedding",auth:"required"},{id:"embedding.action",method:"POST",path:"/api/embedding",auth:"required"},{id:"channels.verify",method:"POST",path:"/api/channels/verify",auth:"required"},{id:"im.activity",method:"GET",path:"/api/im/activity",auth:"required"},{id:"im.config",method:"GET",path:"/api/im/config",auth:"required"},{id:"im.config.update",method:"PUT",path:"/api/im/config",auth:"required"},{id:"im.config.delete",method:"DELETE",path:"/api/im/config",auth:"required"},{id:"im.status",method:"GET",path:"/api/im/status",auth:"required"},{id:"im.test",method:"POST",path:"/api/im/test",auth:"required"},{id:"im.webhook-status",method:"GET",path:"/api/im/webhook-status",auth:"required"},{id:"im.feishu.long-connection",method:"GET",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.start",method:"POST",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.stop",method:"DELETE",path:"/api/im/feishu/long-connection",auth:"required"},{id:"monitoring",method:"GET",path:"/api/monitoring",auth:"required"},{id:"update-status",method:"GET",path:"/api/update-status",auth:"required"},{id:"update-check",method:"GET",path:"/api/update-check",auth:"required"},{id:"restart",method:"POST",path:"/api/restart",auth:"required"},{id:"update",method:"POST",path:"/api/update",auth:"required"},{id:"uninstall",method:"POST",path:"/api/uninstall",auth:"required"},{id:"init",method:"POST",path:"/api/init",auth:"required"},{id:"sync",method:"GET",path:"/api/sync",auth:"required"},{id:"sync.action",method:"POST",path:"/api/sync",auth:"required"},{id:"inbox",method:"GET",path:"/api/inbox",auth:"required"},{id:"inbox.save",method:"POST",path:"/api/inbox",auth:"required"},{id:"inbox.archive",method:"DELETE",path:"/api/inbox",auth:"required"},{id:"setup.check-path",method:"POST",path:"/api/setup/check-path",auth:"required"},{id:"setup.check-port",method:"POST",path:"/api/setup/check-port",auth:"required"},{id:"setup.generate-token",method:"POST",path:"/api/setup/generate-token",auth:"required"},{id:"setup.ls",method:"POST",path:"/api/setup/ls",auth:"required"},{id:"setup",method:"GET",path:"/api/setup",auth:"required"},{id:"setup.apply",method:"POST",path:"/api/setup",auth:"required"},{id:"setup.guide-state",method:"PATCH",path:"/api/setup",auth:"required"},{id:"workflows",method:"GET",path:"/api/workflows",auth:"required"},{id:"workflows.create",method:"POST",path:"/api/workflows",auth:"required"},{id:"ask.stream",method:"POST",path:"/api/ask",auth:"required"},{id:"ask-sessions",method:"GET",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.save",method:"POST",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.delete",method:"DELETE",path:"/api/ask-sessions",auth:"required"},{id:"space-overview",method:"GET",path:"/api/space-overview",auth:"required"},{id:"git",method:"GET",path:"/api/git",auth:"required"},{id:"settings",method:"GET",path:"/api/settings",auth:"required"},{id:"settings.update",method:"POST",path:"/api/settings",auth:"required"},{id:"settings.reset-token",method:"POST",path:"/api/settings/reset-token",auth:"required"},{id:"settings.test-key",method:"POST",path:"/api/settings/test-key",auth:"required"},{id:"settings.list-models",method:"POST",path:"/api/settings/list-models",auth:"required"},{id:"mcp.status",method:"GET",path:"/api/mcp/status",auth:"required"},{id:"mcp.agents",method:"GET",path:"/api/mcp/agents",auth:"required"},{id:"mcp.tools",method:"GET",path:"/api/mcp/tools",auth:"required"},{id:"mcp.direct-tools",method:"POST",path:"/api/mcp/direct-tools",auth:"required"},{id:"mcp.install",method:"POST",path:"/api/mcp/install",auth:"required"},{id:"mcp.install-skill",method:"POST",path:"/api/mcp/install-skill",auth:"required"},{id:"mcp.restart",method:"POST",path:"/api/mcp/restart",auth:"required"},{id:"mcp.uninstall",method:"POST",path:"/api/mcp/uninstall",auth:"required"},{id:"skills",method:"GET",path:"/api/skills",auth:"required"},{id:"skills.action",method:"POST",path:"/api/skills",auth:"required"},{id:"changes",method:"GET",path:"/api/changes",auth:"required"},{id:"changes.mark-seen",method:"POST",path:"/api/changes",auth:"required"},{id:"agents.custom.create",method:"POST",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.update",method:"PUT",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.delete",method:"DELETE",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.detect",method:"POST",path:"/api/agents/custom/detect",auth:"required"},{id:"agents.copy-skill",method:"POST",path:"/api/agents/copy-skill",auth:"required"}].map(a=>[`${a.method} ${a.path}`,a.auth])},17409:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,e:()=>j});let d=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),e={allow:0,ask:1,deny:2};function f(a){return a.replace(/\\/g,"/").replace(/^\/+/,"")}function g(a,b){return b.actorScore-a.actorScore||b.opScore-a.opScore||b.pathScore-a.pathScore||b.effectScore-a.effectScore}function h(a){var b;let c,h;if(!("agent"!==(b=a).actor.type||f(b.path).includes("/"))&&new Set(b.protectedRootFiles??d).has(-1===(h=(c=f(b.path)).lastIndexOf("/"))?c:c.slice(h+1)))return{effect:"deny",reason:`Root-level system file "${f(a.path)}" is protected and cannot be modified by agents`};let i=(a.rules??[]).map(b=>{var c,d,g,h,i,j;return c=b,d=a,function(a,b){return"*"===a||a===("agent"===b.actor.type&&b.actor.agentName?.trim()?b.actor.agentName.trim():b.actor.type)}(c.actor,d)&&(g=c.op,h=d.op,"*"===g||g===h)&&(i=c.path,j=d.path,(function(a){let b=f(a||"**"),c="";for(let a=0;a<b.length;a++){let d=b[a]??"",e=b[a+1];"*"===d&&"*"===e?(c+=".*",a++):"*"===d?c+="[^/]*":c+=d.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return RegExp(`^${c}$`)})(i).test(f(j)))?{rule:c,actorScore:+("*"!==c.actor),opScore:+("*"!==c.op),pathScore:f(c.path).replace(/\*/g,"").length,effectScore:e[c.effect]}:null}).filter(a=>null!==a).sort(g)[0];return i?{effect:i.rule.effect,reason:i.rule.reason??`Matched permission rule for ${i.rule.op} on ${i.rule.path}`,rule:i.rule}:{effect:"allow",reason:"Default allow"}}function i(a){var b;return a&&"object"==typeof a&&"string"==typeof a.actor&&a.actor.trim()&&"string"==typeof a.op&&a.op.trim()&&"string"==typeof a.path&&a.path.trim()?"allow"!==(b=a.effect)&&"deny"!==b&&"ask"!==b?null:{actor:a.actor.trim(),op:a.op.trim(),path:a.path.trim(),effect:a.effect,reason:"string"==typeof a.reason&&a.reason.trim()?a.reason.trim():void 0}:null}function j(a){if(!a)return[];try{let b=JSON.parse(a);if(!Array.isArray(b))return[];return b.map(i).filter(a=>null!==a)}catch{return[]}}},22763:()=>{},64770:(a,b,c)=>{"use strict";c.d(b,{uV:()=>d,$5:()=>g});class d extends Error{constructor(a,b,c,d){super(a),this.name=this.constructor.name,this.code=b,this.statusCode=c,this.context=d?.context,this.cause=d?.cause,this.metadata={timestamp:Date.now(),...d?.metadata},Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,metadata:this.metadata,stack:this.stack}}toUserMessage(){return this.message}}let e={VALIDATION_ERROR:400,NOT_FOUND:404,UNAUTHORIZED:401,FORBIDDEN:403,CONFLICT:409,INTERNAL_ERROR:500,SERVICE_UNAVAILABLE:503,TIMEOUT:408,RATE_LIMIT_EXCEEDED:429,FILE_SYSTEM_ERROR:500,FILE_READ_ERROR:500,FILE_WRITE_ERROR:500,FILE_STAT_ERROR:500,FILE_REMOVE_ERROR:500,FILE_COPY_ERROR:500,FILE_MOVE_ERROR:500,FILE_WATCH_ERROR:500,DIRECTORY_READ_ERROR:500,DIRECTORY_CREATE_ERROR:500,DATABASE_ERROR:500,NETWORK_ERROR:500,CONFIGURATION_ERROR:500,SEARCH_ERROR:500,VECTOR_ERROR:500,MCP_ERROR:500},f={VALIDATION_ERROR:"Validation failed",NOT_FOUND:"Resource not found",UNAUTHORIZED:"Unauthorized access",FORBIDDEN:"Access forbidden",CONFLICT:"Resource conflict",INTERNAL_ERROR:"Internal server error",SERVICE_UNAVAILABLE:"Service unavailable",TIMEOUT:"Operation timed out",RATE_LIMIT_EXCEEDED:"Rate limit exceeded",FILE_SYSTEM_ERROR:"File system operation failed",FILE_READ_ERROR:"Failed to read file",FILE_WRITE_ERROR:"Failed to write file",FILE_STAT_ERROR:"Failed to get file stats",FILE_REMOVE_ERROR:"Failed to remove file",FILE_COPY_ERROR:"Failed to copy file",FILE_MOVE_ERROR:"Failed to move file",FILE_WATCH_ERROR:"Failed to watch file",DIRECTORY_READ_ERROR:"Failed to read directory",DIRECTORY_CREATE_ERROR:"Failed to create directory",DATABASE_ERROR:"Database operation failed",NETWORK_ERROR:"Network operation failed",CONFIGURATION_ERROR:"Configuration error",SEARCH_ERROR:"Search operation failed",VECTOR_ERROR:"Vector operation failed",MCP_ERROR:"MCP operation failed"};function g(a,b,c){let g=e[a],h=f[a];return new d(b??h,a,g,{...c,metadata:{...c?.metadata,retryable:["SERVICE_UNAVAILABLE","TIMEOUT","NETWORK_ERROR"].includes(a),retryAfter:function(a){switch(a){case"RATE_LIMIT_EXCEEDED":return 6e4;case"SERVICE_UNAVAILABLE":return 5e3;case"TIMEOUT":return 1e3;case"NETWORK_ERROR":return 2e3;default:return 0}}(a)}})}},66451:(a,b,c)=>{"use strict";c.d(b,{XT:()=>j,aH:()=>g,bt:()=>h});var d=c(17409);let e=new Set(["create_file","delete_file","rename_file","move_file","create_space","rename_space"]);function f(a){return"user"===a||"agent"===a||"system"===a}function g(a){return a.hasAgentHeader?"agent":f(a.bodySource)?a.bodySource:f(a.headerSource)?a.headerSource:"user"}function h(a,b){let c=b?.replace(/[\x00-\x1f]/g,"").slice(0,100);return c?{type:a,agentName:c}:{type:a}}function i(a,b){return{response:a,changeEvent:null,source:b,treeChanged:!1}}async function j(a){let{op:b,path:c,...f}=a.body,{source:g,responses:h}=a;if(!b||"string"!=typeof b)return i(h.badRequest("missing op"),g);if(!c||"string"!=typeof c)return i(h.badRequest("missing path"),g);let j=a.handlers[b];if(!j)return i(h.badRequest(`unknown op: ${b}`),g);let k=(0,d.R)({actor:a.actor,op:b,path:c,rules:a.permissionRules,protectedRootFiles:a.protectedRootFiles});if("deny"===k.effect)return i(h.denied(k.reason),g);if("ask"===k.effect)return i(h.permissionRequired({op:b,path:c,reason:k.reason,requestId:`perm_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}),g);let l=await j(c,f),m=a.treeChangingOps??e;return{response:l.response,changeEvent:l.changeEvent,source:g,treeChanged:new Set(m).has(b)}}},75791:(a,b,c)=>{"use strict";c.d(b,{EF:()=>mz,Et:()=>mw,Ew:()=>s,GW:()=>mr,Ht:()=>my,J1:()=>ms,L6:()=>mq,Rf:()=>u,Tn:()=>L,Vu:()=>mx,bK:()=>mt,gG:()=>p,iY:()=>mv,jw:()=>mo,l3:()=>v,tM:()=>mp,zl:()=>mu});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(57075),i=Object.defineProperty,j=(a,b)=>{for(var c in b)i(a,c,{get:b[c],enumerable:!0})},k={"gemini-cli":"gemini","claude-code":"claude","claude-acp":"claude",codebuddy:"codebuddy-code",codex:"codex-acp","pi-acp":"pi"};function l(a){return k[a]??a}var m={gemini:{binary:"gemini",detectCommands:["gemini"],presenceDirs:["~/.gemini/"],cmd:"gemini",args:["--experimental-acp"],installCmd:"npm install -g @google/gemini-cli",displayName:"Gemini CLI",description:"Google Gemini 驱动的编程智能体。支持多文件编辑、代码审查、调试和项目级重构,原生集成 Google 搜索实时查询技术文档。"},claude:{binary:"claude",detectCommands:["claude"],presenceDirs:["~/.claude/"],cmd:"npx",args:["--yes","@agentclientprotocol/claude-agent-acp"],installCmd:"npm install -g @anthropic-ai/claude-code",displayName:"Claude Code",description:"Anthropic Claude 驱动的编程智能体。擅长复杂推理、长上下文理解和安全代码生成,支持多文件编辑与 agentic 工作流。"},"codebuddy-code":{binary:"codebuddy",detectCommands:["codebuddy"],presenceDirs:["~/.codebuddy/"],cmd:"codebuddy",args:["--acp"],installCmd:"npm install -g @tencent-ai/codebuddy-code",displayName:"CodeBuddy Code",description:"腾讯云智能编程助手。基于混元大模型,支持代码补全、生成、审查和多文件重构,深度理解中文语境,适配国内开发生态。"},"codex-acp":{binary:"codex",detectCommands:["codex"],presenceDirs:["~/.codex/"],cmd:"codex",args:[],installCmd:"npm install -g @openai/codex",displayName:"Codex",description:"OpenAI Codex 编程智能体。基于 GPT 系列模型,擅长代码生成、自动化任务和多语言编程支持。"},cursor:{binary:"cursor",detectCommands:["cursor"],presenceDirs:["~/.cursor/extensions/"],cmd:"cursor",args:[],displayName:"Cursor",description:"Cursor AI 编程智能体。AI-first 代码编辑器的 CLI 模式,支持上下文感知的代码编辑、Tab 补全和多文件协同修改。"},cline:{binary:"cline",detectCommands:["cline"],presenceDirs:["~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/","~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/","%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/"],cmd:"cline",args:[],installCmd:"npm install -g cline",displayName:"Cline",description:"开源自主编程智能体。支持多模型后端,内置文件编辑、终端执行和浏览器自动化能力。"},"github-copilot-cli":{binary:"github-copilot",cmd:"github-copilot",args:[],installCmd:"npm install -g @github/copilot",displayName:"GitHub Copilot",description:"GitHub Copilot 编程智能体。基于海量开源代码训练,擅长代码补全、测试生成和跨语言编程支持。"},goose:{binary:"goose",cmd:"goose",args:[],installCmd:"pip install goose-ai",displayName:"Goose",description:"Block 开源自主编程智能体。支持多模型后端,可扩展插件架构,擅长复杂任务自动化。"},opencode:{binary:"opencode",cmd:"opencode",args:[],installCmd:"go install github.com/opencode-ai/opencode@latest",displayName:"OpenCode",description:"开源终端编程智能体。Go 实现,轻量快速,支持多模型后端和丰富的代码编辑工具。"},kilo:{binary:"kilo",cmd:"kilo",args:[],installCmd:"npm install -g @kilocode/cli",displayName:"Kilo Code",description:"Kilo Code 编程智能体。开源 VS Code 扩展的 CLI 模式,支持多模型、自动审批和代码差异预览。"},openclaw:{binary:"openclaw",detectCommands:["openclaw"],presenceDirs:["~/.openclaw/"],cmd:"openclaw",args:[],displayName:"OpenClaw",description:"OpenClaw 编程智能体。开源 Claude Code 替代方案,支持多模型后端和完整的 agentic 工作流。"},pi:{binary:"pi",detectCommands:["pi"],presenceDirs:["~/.pi/"],cmd:"pi",args:[],displayName:"Pi Agent",description:"Pi Agent 编程智能体。轻量级终端编程助手。"},auggie:{binary:"auggie",detectCommands:["auggie"],presenceDirs:["~/.augment/"],cmd:"auggie",args:[],displayName:"Auggie",description:"Augment Code 编程智能体。支持代码理解、生成和全仓库上下文感知。"},iflow:{binary:"iflow",detectCommands:["iflow"],presenceDirs:["~/.iflow/"],cmd:"iflow",args:[],displayName:"iFlow",description:"iFlow 编程智能体。AI 驱动的工作流自动化工具。"},kimi:{binary:"kimi",detectCommands:["kimi"],presenceDirs:["~/.kimi/"],cmd:"kimi",args:[],displayName:"Kimi",description:"Moonshot AI Kimi 编程智能体。擅长超长上下文理解,支持中文语境下的代码生成与分析。"},"qwen-code":{binary:"qwen-code",detectCommands:["qwen-code","qwen"],presenceDirs:["~/.qwen/"],cmd:"qwen-code",args:[],installCmd:"npm install -g @qwen-code/qwen-code",displayName:"Qwen Code",description:"阿里通义千问 Qwen 编程智能体。基于 Qwen 大模型,支持代码生成、审查和多语言编程,深度适配中文开发场景。"},lingma:{binary:"lingma",detectCommands:["lingma"],presenceDirs:["~/.lingma/"],cmd:"lingma",args:[],displayName:"Lingma",description:"阿里通义灵码智能编程助手。提供代码补全、智能问答、多文件修改和编程智能体能力,支持 MCP 工具扩展。"}};function n(a,b,c){let d=m[l(a)],e=c?.enabled!==!1;if(c&&(c.command||c.args))return{cmd:c.command??d?.cmd??b?.command??a,args:c.args??d?.args??[],env:c.env,source:"user-override",binary:d?.binary??a,installCmd:d?.installCmd,enabled:e};if(d)return{cmd:d.cmd,args:d.args,env:c?.env,source:"descriptor",binary:d.binary,installCmd:d.installCmd,enabled:e};if(b){let{cmd:d,args:f}=function(a){switch(a.transport){case"npx":return{cmd:"npx",args:["--yes",a.command,...a.args??[]]};case"uvx":return{cmd:"uvx",args:[a.command,...a.args??[]]};default:return{cmd:a.command,args:a.args??[]}}}(b);return{cmd:d,args:f,env:c?.env,source:"registry",binary:a,installCmd:b.packageName?`npm install -g ${b.packageName}`:void 0,enabled:e}}return{cmd:a,args:[],env:c?.env,source:"registry",binary:a,enabled:e}}function o(a,b){if(!b)return;if(b[a])return b[a];let c=l(a);if(c!==a&&b[c])return b[c];for(let[c,d]of Object.entries(k))if(d===a&&b[c])return b[c]}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={},c=!1;for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let a={};if("string"==typeof e.command&&e.command.trim()&&(a.command=e.command.trim()),Array.isArray(e.args)&&(a.args=e.args.filter(a=>"string"==typeof a)),e.env&&"object"==typeof e.env&&!Array.isArray(e.env)){let b={};for(let[a,c]of Object.entries(e.env))"string"==typeof c&&(b[a]=c);Object.keys(b).length>0&&(a.env=b)}"boolean"==typeof e.enabled&&(a.enabled=e.enabled),Object.keys(a).length>0&&(b[d]=a,c=!0)}return c?b:void 0}var q=null,r=null;async function s(){if(r&&Date.now()-new Date(r.fetchedAt).getTime()<6048e5)return r;let a=(q||(q=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,description:b.description??"",transport:"npx"===b.cmd?"npx":"stdio",command:b.cmd,args:b.args,packageName:b.installCmd?.match(/npm install -g (.+)/)?.[1]}))),q);try{var b;let c=await fetch("https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json",{headers:{Accept:"application/json"},signal:AbortSignal.timeout(3e3)});if(!c.ok)return r??t(a,"builtin");let d=await c.json(),e=(b=d)&&"object"==typeof b?(Array.isArray(b.agents)?b.agents:Array.isArray(b)?b:Object.entries(b).filter(([a])=>"version"!==a&&"$schema"!==a).map(([a,b])=>({...b,id:a}))).map(w).filter(a=>null!==a):[],f=function(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b){let b=c.get(a.id),d=l(a.id),e=d!==a.id?c.get(d):void 0;b?c.set(a.id,{...b,tags:a.tags??b.tags,homepage:a.homepage??b.homepage,version:a.version??b.version}):e||c.set(a.id,a)}return Array.from(c.values())}(a,e);return r={version:d.version??"1",agents:f,fetchedAt:new Date().toISOString()}}catch{return r??t(a,"builtin")}}function t(a,b){return{version:b,agents:a,fetchedAt:new Date().toISOString()}}async function u(){return(await s()).agents}async function v(a){let b=await u(),c=l(a);return b.find(b=>b.id===a||b.id===c)??null}function w(a){if(!a||"object"!=typeof a)return null;let b=String(a.id??a.name??""),c=String(a.name??a.id??"");if(!b&&!c)return null;let{transport:d,command:e,packageName:f,args:g}=function(a){let b,c=a.distribution;if(c&&"object"==typeof c){if(c.npx&&"object"==typeof c.npx){let a=c.npx,b=x(String(a.package??""));return{transport:"npx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.uvx&&"object"==typeof c.uvx){let a=c.uvx,b=x(String(a.package??""));return{transport:"uvx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.binary&&"object"==typeof c.binary)return{transport:"binary",command:""}}return{transport:"npx"===(b=String(a.transport??"stdio").toLowerCase())||"uvx"===b||"binary"===b?b:"stdio",command:String(a.command??a.cmd??"")}}(a),h=b||c,i=m[l(h)]?.displayName,j=m[l(h)]?.description;return{id:h,name:i??c??b,description:j??String(a.description??""),version:a.version?String(a.version):void 0,transport:d,command:e,packageName:f,args:g??(Array.isArray(a.args)?a.args.map(String):void 0),env:a.env&&"object"==typeof a.env?a.env:void 0,tags:Array.isArray(a.tags)?a.tags.map(String):void 0,homepage:a.homepage??a.website?String(a.homepage??a.website):void 0}}function x(a){if(!a)return"";let b=a.lastIndexOf("@");return b>0?a.slice(0,b):a}function y(a){let b=a;return"~"===a?b=e.homedir():(a.startsWith("~/")||a.startsWith("~\\"))&&(b=f.resolve(e.homedir(),a.slice(2))),b.replace(/%([A-Za-z_][A-Za-z0-9_]*)%/g,(a,b)=>process.env[b]??a)}function z(a){return a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.includes("\\")||/^[A-Za-z]:[\\/]/.test(a)}function A(a){if(!a)return null;let b=a.trim();if(!b||!z(b))return null;let c=y(b);return d.existsSync(c)?c:null}function B(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a of b){let b=y(a);if(z(b)&&d.existsSync(b))return b}for(let a of b)if(z(a))return y(a);return null}function C(a){return`'${a.replace(/'/g,"'\\''")}'`}function D(){return"win32"===process.platform?[]:[...new Set([process.env.SHELL,"darwin"===process.platform?"/bin/zsh":void 0,"/bin/bash","/bin/sh"].filter(a=>!!a))]}function E(a,b){return new Promise(c=>{(0,g.execFile)(a,b,{encoding:"utf-8",timeout:3e3},(a,b)=>{a?c(null):c(b)})})}function F(a,b){try{return(0,g.execFileSync)(a,b,{encoding:"utf-8",timeout:3e3})}catch{return null}}async function G(a){let b=await E("win32"===process.platform?"where":"which",[a]);return b?B(b):null}async function H(a){for(let b of D()){let c=await E(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}async function I(a){if(!a)return null;let b=A(a);if(b)return b;let c=a.trim();return!c||z(c)?null:await G(c)??await H(c)}function J(a){let b;if(!a)return null;let c=A(a);if(c)return c;let d=a.trim();return!d||z(d)?null:((b=F("win32"===process.platform?"where":"which",[d]))?B(b):null)??function(a){for(let b of D()){let c=F(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}(d)}async function K(a){let b=[...new Set(a.map(a=>a.trim()).filter(Boolean))];return new Map(await Promise.all(b.map(async a=>[a,await I(a)])))}async function L(a={}){let b=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,binary:b.binary,detectCommands:b.detectCommands,presenceDirs:b.presenceDirs,installCmd:b.installCmd,description:b.description})).map(b=>{let c=o(b.id,a.overrides),d=n(b.id,void 0,c),e=A(c?.command),f=[...new Set([...b.detectCommands??[b.binary],...c?.command&&!z(c.command)?[c.command]:[]])];return{agent:b,resolved:d,directOverridePath:e,presenceCommands:f}}),c=await K(b.flatMap(a=>a.presenceCommands)),e=await K(b.map(a=>a.resolved.cmd)),f=[],g=[];for(let{agent:a,resolved:h,directOverridePath:i,presenceCommands:j}of b){let b=j.map(a=>c.get(a)??null).find(Boolean),k=i??b??function(a){if(!a||0===a.length)return null;for(let b of a){let a=y(b);if(d.existsSync(a))return a}return null}(a.presenceDirs),l=i??e.get(h.cmd)??(j.includes(h.cmd)?b:null)??null;if(k&&l)f.push({id:a.id,name:a.name,binaryPath:l,resolvedCommand:{cmd:h.cmd,args:h.args,source:h.source}});else{let b=a.installCmd?.match(/npm install -g (.+)/)?.[1];g.push({id:a.id,name:a.name,installCmd:a.installCmd??(b?`npm install -g ${b}`:""),packageName:b})}}return{installed:f,notInstalled:g}}var M={};j(M,{$brand:()=>Q,$input:()=>d9,$output:()=>d8,NEVER:()=>O,TimePrecision:()=>eB,ZodAny:()=>hj,ZodArray:()=>ht,ZodBase64:()=>gQ,ZodBase64URL:()=>gS,ZodBigInt:()=>g8,ZodBigIntFormat:()=>ha,ZodBoolean:()=>g6,ZodCIDRv4:()=>gM,ZodCIDRv6:()=>gO,ZodCUID:()=>gy,ZodCUID2:()=>gA,ZodCatch:()=>h9,ZodCustom:()=>ip,ZodCustomStringFormat:()=>gY,ZodDate:()=>hr,ZodDefault:()=>h1,ZodDiscriminatedUnion:()=>hC,ZodE164:()=>gU,ZodEmail:()=>gj,ZodEmoji:()=>gu,ZodEnum:()=>hP,ZodError:()=>f8,ZodFile:()=>hU,ZodGUID:()=>gl,ZodIPv4:()=>gI,ZodIPv6:()=>gK,ZodISODate:()=>f1,ZodISODateTime:()=>f_,ZodISODuration:()=>f5,ZodISOTime:()=>f3,ZodIntersection:()=>hE,ZodIssueCode:()=>iy,ZodJWT:()=>gW,ZodKSUID:()=>gG,ZodLazy:()=>ik,ZodLiteral:()=>hS,ZodMap:()=>hL,ZodNaN:()=>ib,ZodNanoID:()=>gw,ZodNever:()=>hn,ZodNonOptional:()=>h5,ZodNull:()=>hh,ZodNullable:()=>h$,ZodNumber:()=>g$,ZodNumberFormat:()=>g0,ZodObject:()=>hw,ZodOptional:()=>hY,ZodPipe:()=>id,ZodPrefault:()=>h3,ZodPromise:()=>im,ZodReadonly:()=>ig,ZodRealError:()=>f9,ZodRecord:()=>hI,ZodSet:()=>hN,ZodString:()=>gg,ZodStringFormat:()=>gi,ZodSuccess:()=>h7,ZodSymbol:()=>hd,ZodTemplateLiteral:()=>ii,ZodTransform:()=>hW,ZodTuple:()=>hG,ZodType:()=>ge,ZodULID:()=>gC,ZodURL:()=>gs,ZodUUID:()=>gn,ZodUndefined:()=>hf,ZodUnion:()=>hA,ZodUnknown:()=>hl,ZodVoid:()=>hp,ZodXID:()=>gE,_ZodString:()=>gf,_default:()=>h2,any:()=>hk,array:()=>hu,base64:()=>gR,base64url:()=>gT,bigint:()=>g9,boolean:()=>g7,catch:()=>ia,check:()=>iq,cidrv4:()=>gN,cidrv6:()=>gP,clone:()=>au,coerce:()=>iB,config:()=>T,core:()=>N,cuid:()=>gz,cuid2:()=>gB,custom:()=>ir,date:()=>hs,discriminatedUnion:()=>hD,e164:()=>gV,email:()=>gk,emoji:()=>gv,endsWith:()=>fl,enum:()=>hQ,file:()=>hV,flattenError:()=>aT,float32:()=>g2,float64:()=>g3,formatError:()=>aU,function:()=>fW,getErrorMap:()=>iA,globalRegistry:()=>ec,gt:()=>e3,gte:()=>e4,guid:()=>gm,includes:()=>fj,instanceof:()=>iu,int:()=>g1,int32:()=>g4,int64:()=>hb,intersection:()=>hF,ipv4:()=>gJ,ipv6:()=>gL,iso:()=>f$,json:()=>iw,jwt:()=>gX,keyof:()=>hv,ksuid:()=>gH,lazy:()=>il,length:()=>ff,literal:()=>hT,locales:()=>du,looseObject:()=>hz,lowercase:()=>fh,lt:()=>e1,lte:()=>e2,map:()=>hM,maxLength:()=>fd,maxSize:()=>fa,mime:()=>fn,minLength:()=>fe,minSize:()=>fb,multipleOf:()=>e9,nan:()=>ic,nanoid:()=>gx,nativeEnum:()=>hR,negative:()=>e6,never:()=>ho,nonnegative:()=>e8,nonoptional:()=>h6,nonpositive:()=>e7,normalize:()=>fp,null:()=>hi,nullable:()=>h_,nullish:()=>h0,number:()=>g_,object:()=>hx,optional:()=>hZ,overwrite:()=>fo,parse:()=>ga,parseAsync:()=>gb,partialRecord:()=>hK,pipe:()=>ie,positive:()=>e5,prefault:()=>h4,preprocess:()=>ix,prettifyError:()=>aX,promise:()=>io,property:()=>fm,readonly:()=>ih,record:()=>hJ,refine:()=>is,regex:()=>fg,regexes:()=>a4,registry:()=>eb,safeParse:()=>gc,safeParseAsync:()=>gd,set:()=>hO,setErrorMap:()=>iz,size:()=>fc,startsWith:()=>fk,strictObject:()=>hy,string:()=>gh,stringFormat:()=>gZ,stringbool:()=>iv,success:()=>h8,superRefine:()=>it,symbol:()=>he,templateLiteral:()=>ij,toJSONSchema:()=>fY,toLowerCase:()=>fr,toUpperCase:()=>fs,transform:()=>hX,treeifyError:()=>aV,trim:()=>fq,tuple:()=>hH,uint32:()=>g5,uint64:()=>hc,ulid:()=>gD,undefined:()=>hg,union:()=>hB,unknown:()=>hm,uppercase:()=>fi,url:()=>gt,uuid:()=>go,uuidv4:()=>gp,uuidv6:()=>gq,uuidv7:()=>gr,void:()=>hq,xid:()=>gF});var N={};j(N,{$ZodAny:()=>cM,$ZodArray:()=>cS,$ZodAsyncError:()=>R,$ZodBase64:()=>cx,$ZodBase64URL:()=>cz,$ZodBigInt:()=>cH,$ZodBigIntFormat:()=>cI,$ZodBoolean:()=>cG,$ZodCIDRv4:()=>cu,$ZodCIDRv6:()=>cv,$ZodCUID:()=>cj,$ZodCUID2:()=>ck,$ZodCatch:()=>di,$ZodCheck:()=>bM,$ZodCheckBigIntFormat:()=>bS,$ZodCheckEndsWith:()=>b3,$ZodCheckGreaterThan:()=>bP,$ZodCheckIncludes:()=>b1,$ZodCheckLengthEquals:()=>bY,$ZodCheckLessThan:()=>bO,$ZodCheckLowerCase:()=>b_,$ZodCheckMaxLength:()=>bW,$ZodCheckMaxSize:()=>bT,$ZodCheckMimeType:()=>b6,$ZodCheckMinLength:()=>bX,$ZodCheckMinSize:()=>bU,$ZodCheckMultipleOf:()=>bQ,$ZodCheckNumberFormat:()=>bR,$ZodCheckOverwrite:()=>b7,$ZodCheckProperty:()=>b5,$ZodCheckRegex:()=>b$,$ZodCheckSizeEquals:()=>bV,$ZodCheckStartsWith:()=>b2,$ZodCheckStringFormat:()=>bZ,$ZodCheckUpperCase:()=>b0,$ZodCustom:()=>ds,$ZodCustomStringFormat:()=>cD,$ZodDate:()=>cQ,$ZodDefault:()=>dc,$ZodDiscriminatedUnion:()=>cY,$ZodE164:()=>cA,$ZodEmail:()=>cf,$ZodEmoji:()=>ch,$ZodEnum:()=>c6,$ZodError:()=>aR,$ZodFile:()=>c8,$ZodFunction:()=>fV,$ZodGUID:()=>cd,$ZodIPv4:()=>cs,$ZodIPv6:()=>ct,$ZodISODate:()=>cp,$ZodISODateTime:()=>co,$ZodISODuration:()=>cr,$ZodISOTime:()=>cq,$ZodIntersection:()=>cZ,$ZodJWT:()=>cC,$ZodKSUID:()=>cn,$ZodLazy:()=>dr,$ZodLiteral:()=>c7,$ZodMap:()=>c2,$ZodNaN:()=>dj,$ZodNanoID:()=>ci,$ZodNever:()=>cO,$ZodNonOptional:()=>df,$ZodNull:()=>cL,$ZodNullable:()=>db,$ZodNumber:()=>cE,$ZodNumberFormat:()=>cF,$ZodObject:()=>cV,$ZodOptional:()=>da,$ZodPipe:()=>dk,$ZodPrefault:()=>de,$ZodPromise:()=>dq,$ZodReadonly:()=>dm,$ZodRealError:()=>aS,$ZodRecord:()=>c1,$ZodRegistry:()=>ea,$ZodSet:()=>c4,$ZodString:()=>cb,$ZodStringFormat:()=>cc,$ZodSuccess:()=>dh,$ZodSymbol:()=>cJ,$ZodTemplateLiteral:()=>dp,$ZodTransform:()=>c9,$ZodTuple:()=>c_,$ZodType:()=>ca,$ZodULID:()=>cl,$ZodURL:()=>cg,$ZodUUID:()=>ce,$ZodUndefined:()=>cK,$ZodUnion:()=>cX,$ZodUnknown:()=>cN,$ZodVoid:()=>cP,$ZodXID:()=>cm,$brand:()=>Q,$constructor:()=>P,$input:()=>d9,$output:()=>d8,Doc:()=>b8,JSONSchema:()=>fZ,JSONSchemaGenerator:()=>fX,NEVER:()=>O,TimePrecision:()=>eB,_any:()=>eW,_array:()=>ft,_base64:()=>ex,_base64url:()=>ey,_bigint:()=>eP,_boolean:()=>eN,_catch:()=>fL,_cidrv4:()=>ev,_cidrv6:()=>ew,_coercedBigint:()=>eQ,_coercedBoolean:()=>eO,_coercedDate:()=>e_,_coercedNumber:()=>eH,_coercedString:()=>ee,_cuid:()=>eo,_cuid2:()=>ep,_custom:()=>fR,_date:()=>e$,_default:()=>fI,_discriminatedUnion:()=>fv,_e164:()=>ez,_email:()=>ef,_emoji:()=>em,_endsWith:()=>fl,_enum:()=>fB,_file:()=>fE,_float32:()=>eJ,_float64:()=>eK,_gt:()=>e3,_gte:()=>e4,_guid:()=>eg,_includes:()=>fj,_int:()=>eI,_int32:()=>eL,_int64:()=>eR,_intersection:()=>fw,_ipv4:()=>et,_ipv6:()=>eu,_isoDate:()=>eD,_isoDateTime:()=>eC,_isoDuration:()=>eF,_isoTime:()=>eE,_jwt:()=>eA,_ksuid:()=>es,_lazy:()=>fP,_length:()=>ff,_literal:()=>fD,_lowercase:()=>fh,_lt:()=>e1,_lte:()=>e2,_map:()=>fz,_max:()=>e2,_maxLength:()=>fd,_maxSize:()=>fa,_mime:()=>fn,_min:()=>e4,_minLength:()=>fe,_minSize:()=>fb,_multipleOf:()=>e9,_nan:()=>e0,_nanoid:()=>en,_nativeEnum:()=>fC,_negative:()=>e6,_never:()=>eY,_nonnegative:()=>e8,_nonoptional:()=>fJ,_nonpositive:()=>e7,_normalize:()=>fp,_null:()=>eV,_nullable:()=>fH,_number:()=>eG,_optional:()=>fG,_overwrite:()=>fo,_parse:()=>aY,_parseAsync:()=>a$,_pipe:()=>fM,_positive:()=>e5,_promise:()=>fQ,_property:()=>fm,_readonly:()=>fN,_record:()=>fy,_refine:()=>fS,_regex:()=>fg,_safeParse:()=>a0,_safeParseAsync:()=>a2,_set:()=>fA,_size:()=>fc,_startsWith:()=>fk,_string:()=>ed,_stringFormat:()=>fU,_stringbool:()=>fT,_success:()=>fK,_symbol:()=>eT,_templateLiteral:()=>fO,_toLowerCase:()=>fr,_toUpperCase:()=>fs,_transform:()=>fF,_trim:()=>fq,_tuple:()=>fx,_uint32:()=>eM,_uint64:()=>eS,_ulid:()=>eq,_undefined:()=>eU,_union:()=>fu,_unknown:()=>eX,_uppercase:()=>fi,_url:()=>el,_uuid:()=>eh,_uuidv4:()=>ei,_uuidv6:()=>ej,_uuidv7:()=>ek,_void:()=>eZ,_xid:()=>er,clone:()=>au,config:()=>T,flattenError:()=>aT,formatError:()=>aU,function:()=>fW,globalConfig:()=>S,globalRegistry:()=>ec,isValidBase64:()=>cw,isValidBase64URL:()=>cy,isValidJWT:()=>cB,locales:()=>du,parse:()=>aZ,parseAsync:()=>a_,prettifyError:()=>aX,regexes:()=>a4,registry:()=>eb,safeParse:()=>a1,safeParseAsync:()=>a3,toDotPath:()=>aW,toJSONSchema:()=>fY,treeifyError:()=>aV,util:()=>U,version:()=>b9});var O=Object.freeze({status:"aborted"});function P(a,b,c){function d(c,d){var e;for(let f in Object.defineProperty(c,"_zod",{value:c._zod??{},enumerable:!1}),(e=c._zod).traits??(e.traits=new Set),c._zod.traits.add(a),b(c,d),g.prototype)f in c||Object.defineProperty(c,f,{value:g.prototype[f].bind(c)});c._zod.constr=g,c._zod.def=d}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}var Q=Symbol("zod_brand"),R=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},S={};function T(a){return a&&Object.assign(S,a),S}var U={};function V(a){return a}function W(a){return a}function X(a){}function Y(a){throw Error()}function Z(a){}function $(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function _(a,b="|"){return a.map(a=>ax(a)).join(b)}function aa(a,b){return"bigint"==typeof b?b.toString():b}function ab(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function ac(a){return null==a}function ad(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}function ae(a,b){let c=(a.toString().split(".")[1]||"").length,d=(b.toString().split(".")[1]||"").length,e=c>d?c:d;return Number.parseInt(a.toFixed(e).replace(".",""))%Number.parseInt(b.toFixed(e).replace(".",""))/10**e}function af(a,b,c){Object.defineProperty(a,b,{get(){{let d=c();return a[b]=d,d}},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function ag(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function ah(a,b){return b?b.reduce((a,b)=>a?.[b],a):a}function ai(a){let b=Object.keys(a);return Promise.all(b.map(b=>a[b])).then(a=>{let c={};for(let d=0;d<b.length;d++)c[b[d]]=a[d];return c})}function aj(a=10){let b="abcdefghijklmnopqrstuvwxyz",c="";for(let d=0;d<a;d++)c+=b[Math.floor(Math.random()*b.length)];return c}function ak(a){return JSON.stringify(a)}j(U,{BIGINT_FORMAT_RANGES:()=>aA,Class:()=>aP,NUMBER_FORMAT_RANGES:()=>az,aborted:()=>aH,allowsEval:()=>an,assert:()=>Z,assertEqual:()=>V,assertIs:()=>X,assertNever:()=>Y,assertNotEqual:()=>W,assignProp:()=>ag,cached:()=>ab,captureStackTrace:()=>al,cleanEnum:()=>aO,cleanRegex:()=>ad,clone:()=>au,createTransparentProxy:()=>aw,defineLazy:()=>af,esc:()=>ak,escapeRegex:()=>at,extend:()=>aD,finalizeIssue:()=>aK,floatSafeRemainder:()=>ae,getElementAtPath:()=>ah,getEnumValues:()=>$,getLengthableOrigin:()=>aM,getParsedType:()=>aq,getSizableOrigin:()=>aL,isObject:()=>am,isPlainObject:()=>ao,issue:()=>aN,joinValues:()=>_,jsonStringifyReplacer:()=>aa,merge:()=>aE,normalizeParams:()=>av,nullish:()=>ac,numKeys:()=>ap,omit:()=>aC,optionalKeys:()=>ay,partial:()=>aF,pick:()=>aB,prefixIssues:()=>aI,primitiveTypes:()=>as,promiseAllObject:()=>ai,propertyKeyTypes:()=>ar,randomString:()=>aj,required:()=>aG,stringifyPrimitive:()=>ax,unwrapMessage:()=>aJ});var al=Error.captureStackTrace?Error.captureStackTrace:(...a)=>{};function am(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}var an=ab(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch{return!1}});function ao(a){if(!1===am(a))return!1;let b=a.constructor;if(void 0===b)return!0;let c=b.prototype;return!1!==am(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function ap(a){let b=0;for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b++;return b}var aq=a=>{let b=typeof a;switch(b){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(a)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(a)?"array":null===a?"null":a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch?"promise":"u">typeof Map&&a instanceof Map?"map":"u">typeof Set&&a instanceof Set?"set":"u">typeof Date&&a instanceof Date?"date":"u">typeof File&&a instanceof File?"file":"object";default:throw Error(`Unknown data type: ${b}`)}},ar=new Set(["string","number","symbol"]),as=new Set(["string","number","bigint","boolean","symbol","undefined"]);function at(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function au(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function av(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return delete a.message,"string"==typeof a.error?{...a,error:()=>a.error}:a}function aw(a){let b;return new Proxy({},{get:(c,d,e)=>(b??(b=a()),Reflect.get(b,d,e)),set:(c,d,e,f)=>(b??(b=a()),Reflect.set(b,d,e,f)),has:(c,d)=>(b??(b=a()),Reflect.has(b,d)),deleteProperty:(c,d)=>(b??(b=a()),Reflect.deleteProperty(b,d)),ownKeys:c=>(b??(b=a()),Reflect.ownKeys(b)),getOwnPropertyDescriptor:(c,d)=>(b??(b=a()),Reflect.getOwnPropertyDescriptor(b,d)),defineProperty:(c,d,e)=>(b??(b=a()),Reflect.defineProperty(b,d,e))})}function ax(a){return"bigint"==typeof a?a.toString()+"n":"string"==typeof a?`"${a}"`:`${a}`}function ay(a){return Object.keys(a).filter(b=>"optional"===a[b]._zod.optin&&"optional"===a[b]._zod.optout)}var az={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},aA={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function aB(a,b){let c={},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&(c[a]=d.shape[a])}return au(a,{...a._zod.def,shape:c,checks:[]})}function aC(a,b){let c={...a._zod.def.shape},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&delete c[a]}return au(a,{...a._zod.def,shape:c,checks:[]})}function aD(a,b){if(!ao(b))throw Error("Invalid input to extend: expected a plain object");let c={...a._zod.def,get shape(){let c={...a._zod.def.shape,...b};return ag(this,"shape",c),c},checks:[]};return au(a,c)}function aE(a,b){return au(a,{...a._zod.def,get shape(){let c={...a._zod.def.shape,...b._zod.def.shape};return ag(this,"shape",c),c},catchall:b._zod.def.catchall,checks:[]})}function aF(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in d))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=a?new a({type:"optional",innerType:d[b]}):d[b])}else for(let b in d)e[b]=a?new a({type:"optional",innerType:d[b]}):d[b];return au(b,{...b._zod.def,shape:e,checks:[]})}function aG(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in e))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=new a({type:"nonoptional",innerType:d[b]}))}else for(let b in d)e[b]=new a({type:"nonoptional",innerType:d[b]});return au(b,{...b._zod.def,shape:e,checks:[]})}function aH(a,b=0){for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function aI(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function aJ(a){return"string"==typeof a?a:a?.message}function aK(a,b,c){let d={...a,path:a.path??[]};return a.message||(d.message=aJ(a.inst?._zod.def?.error?.(a))??aJ(b?.error?.(a))??aJ(c.customError?.(a))??aJ(c.localeError?.(a))??"Invalid input"),delete d.inst,delete d.continue,b?.reportInput||delete d.input,d}function aL(a){return a instanceof Set?"set":a instanceof Map?"map":a instanceof File?"file":"unknown"}function aM(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function aN(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}function aO(a){return Object.entries(a).filter(([a,b])=>Number.isNaN(Number.parseInt(a,10))).map(a=>a[1])}var aP=class{constructor(...a){}},aQ=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),Object.defineProperty(a,"message",{get:()=>JSON.stringify(b,aa,2),enumerable:!0}),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aR=P("$ZodError",aQ),aS=P("$ZodError",aQ,{Parent:Error});function aT(a,b=a=>a.message){let c={},d=[];for(let e of a.issues)e.path.length>0?(c[e.path[0]]=c[e.path[0]]||[],c[e.path[0]].push(b(e))):d.push(b(e));return{formErrors:d,fieldErrors:c}}function aU(a,b){let c=b||function(a){return a.message},d={_errors:[]},e=a=>{for(let b of a.issues)if("invalid_union"===b.code&&b.errors.length)b.errors.map(a=>e({issues:a}));else if("invalid_key"===b.code)e({issues:b.issues});else if("invalid_element"===b.code)e({issues:b.issues});else if(0===b.path.length)d._errors.push(c(b));else{let a=d,e=0;for(;e<b.path.length;){let d=b.path[e];e===b.path.length-1?(a[d]=a[d]||{_errors:[]},a[d]._errors.push(c(b))):a[d]=a[d]||{_errors:[]},a=a[d],e++}}};return e(a),d}function aV(a,b){let c=b||function(a){return a.message},d={errors:[]},e=(a,b=[])=>{var f,g;for(let h of a.issues)if("invalid_union"===h.code&&h.errors.length)h.errors.map(a=>e({issues:a},h.path));else if("invalid_key"===h.code)e({issues:h.issues},h.path);else if("invalid_element"===h.code)e({issues:h.issues},h.path);else{let a=[...b,...h.path];if(0===a.length){d.errors.push(c(h));continue}let e=d,i=0;for(;i<a.length;){let b=a[i],d=i===a.length-1;"string"==typeof b?(e.properties??(e.properties={}),(f=e.properties)[b]??(f[b]={errors:[]}),e=e.properties[b]):(e.items??(e.items=[]),(g=e.items)[b]??(g[b]={errors:[]}),e=e.items[b]),d&&e.errors.push(c(h)),i++}}};return e(a),d}function aW(a){let b=[];for(let c of a)"number"==typeof c?b.push(`[${c}]`):"symbol"==typeof c?b.push(`[${JSON.stringify(String(c))}]`):/[^\w$]/.test(c)?b.push(`[${JSON.stringify(c)}]`):(b.length&&b.push("."),b.push(c));return b.join("")}function aX(a){let b=[];for(let c of[...a.issues].sort((a,b)=>a.path.length-b.path.length))b.push(`\u2716 ${c.message}`),c.path?.length&&b.push(` \u2192 at ${aW(c.path)}`);return b.join(`
71
+ `;function e$(a){return i({workflows:function(a){let b;try{b=(0,w.n2)(a,eY)}catch{return[]}if(!(0,o.existsSync)(b))return[];let c=[];for(let a of(0,o.readdirSync)(b,{withFileTypes:!0})){if(!a.isFile()||!/\.flow\.(yaml|yml)$/i.test(a.name))continue;let d=(0,p.join)(b,a.name),e=(0,o.statSync)(d).mtimeMs;try{let b=(0,o.readFileSync)(d,"utf-8"),f=function(a,b){let c=e0(a.match(/^title:\s*(.*)$/m)?.[1])||e1(b),d=e0(a.match(/^description:\s*(.*)$/m)?.[1])||void 0,e=a.search(/^steps:\s*$/m);return{title:c,description:d,stepCount:((e>=0?a.slice(e):"").match(/^\s*-\s+/gm)??[]).length}}(b,a.name);c.push({path:`${eY}/${a.name}`,fileName:a.name,mtime:e,...f})}catch(b){c.push({path:`${eY}/${a.name}`,fileName:a.name,title:e1(a.name),stepCount:0,mtime:e,error:b instanceof Error?b.message:"Parse error"})}}return c.sort((a,b)=>b.mtime-a.mtime)}(a.mindRoot)})}function e_(a,b){let c=a&&"object"==typeof a&&"string"==typeof a.name?a.name.trim():"";if(!c)return i({error:"name is required"},{status:400});let d=c.trim().replace(/\s+/g," ").slice(0,200),e=d.replace(/[/\\:*?"<>|\x00-\x1F]/g,"-").replace(/-{2,}/g,"-").replace(/^[-.\s]+|[-.\s]+$/g,"").slice(0,120).trim();if(!e)return i({error:"name must contain at least one valid filename character"},{status:400});let f=`${e}.flow.yaml`;try{let c=(0,w.n2)(b.mindRoot,eY);(0,o.mkdirSync)(c,{recursive:!0});let e=(0,w.n2)(b.mindRoot,`${eY}/${f}`);if((0,o.existsSync)(e))return i({error:"Workflow already exists"},{status:409});let g=a&&"object"==typeof a&&"string"==typeof a.template?a.template:"blank",h=function(a,b,c){if("blank"!==b)try{let d=(0,w.n2)(a,eY),e=(0,o.readdirSync)(d).find(a=>a.toLowerCase().includes(b.toLowerCase())&&/\.workflow\.(yaml|yml)$/i.test(a));if(e){let b=(0,w.n2)(a,`${eY}/${e}`);return(0,o.readFileSync)(b,"utf-8").replace(/^title:.*$/m,`title: ${e2(c)}`)}}catch{}return eZ.replace("{TITLE}",e2(c))}(b.mindRoot,g,d);return(0,o.writeFileSync)(e,h,"utf-8"),i({path:`${eY}/${f}`})}catch(b){let a=b instanceof Error?b.message:String(b);if(/access denied|outside root|absolute paths/i.test(a))return i({error:"Access denied"},{status:403});return i({error:a},{status:500})}}function e0(a){return(a??"").trim().replace(/^['"]|['"]$/g,"")}function e1(a){return a.replace(/\.flow\.(yaml|yml)$/i,"")}function e2(a){return`'${a.replace(/'/g,"''")}'`}[{id:"health",method:"GET",path:"/api/health",auth:"public"},{id:"files",method:"GET",path:"/api/files",auth:"required"},{id:"recent-files",method:"GET",path:"/api/recent-files",auth:"required"},{id:"tree-version",method:"GET",path:"/api/tree-version",auth:"required"},{id:"file.read",method:"GET",path:"/api/file",auth:"required"},{id:"file.write",method:"POST",path:"/api/file",auth:"required"},{id:"file.raw",method:"GET",path:"/api/file/raw",auth:"required"},{id:"search",method:"GET",path:"/api/search",auth:"required"},{id:"search.prewarm",method:"GET",path:"/api/search/prewarm",auth:"required"},{id:"a2a",method:"POST",path:"/api/a2a",auth:"required"},{id:"a2a.options",method:"OPTIONS",path:"/api/a2a",auth:"public"},{id:"a2a.agents",method:"GET",path:"/api/a2a/agents",auth:"required"},{id:"a2a.delegations",method:"GET",path:"/api/a2a/delegations",auth:"required"},{id:"a2a.discover",method:"POST",path:"/api/a2a/discover",auth:"required"},{id:"acp.config",method:"GET",path:"/api/acp/config",auth:"required"},{id:"acp.config.update",method:"POST",path:"/api/acp/config",auth:"required"},{id:"acp.config.delete",method:"DELETE",path:"/api/acp/config",auth:"required"},{id:"acp.detect",method:"GET",path:"/api/acp/detect",auth:"required"},{id:"acp.install",method:"POST",path:"/api/acp/install",auth:"required"},{id:"acp.registry",method:"GET",path:"/api/acp/registry",auth:"required"},{id:"acp.session",method:"GET",path:"/api/acp/session",auth:"required"},{id:"acp.session.action",method:"POST",path:"/api/acp/session",auth:"required"},{id:"acp.session.close",method:"DELETE",path:"/api/acp/session",auth:"required"},{id:"backlinks",method:"GET",path:"/api/backlinks",auth:"required"},{id:"graph",method:"GET",path:"/api/graph",auth:"required"},{id:"agent-activity",method:"GET",path:"/api/agent-activity",auth:"required"},{id:"bootstrap",method:"GET",path:"/api/bootstrap",auth:"required"},{id:"connect",method:"GET",path:"/api/connect",auth:"required"},{id:"embedding",method:"GET",path:"/api/embedding",auth:"required"},{id:"embedding.action",method:"POST",path:"/api/embedding",auth:"required"},{id:"channels.verify",method:"POST",path:"/api/channels/verify",auth:"required"},{id:"im.activity",method:"GET",path:"/api/im/activity",auth:"required"},{id:"im.config",method:"GET",path:"/api/im/config",auth:"required"},{id:"im.config.update",method:"PUT",path:"/api/im/config",auth:"required"},{id:"im.config.delete",method:"DELETE",path:"/api/im/config",auth:"required"},{id:"im.status",method:"GET",path:"/api/im/status",auth:"required"},{id:"im.test",method:"POST",path:"/api/im/test",auth:"required"},{id:"im.webhook-status",method:"GET",path:"/api/im/webhook-status",auth:"required"},{id:"im.feishu.long-connection",method:"GET",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.start",method:"POST",path:"/api/im/feishu/long-connection",auth:"required"},{id:"im.feishu.long-connection.stop",method:"DELETE",path:"/api/im/feishu/long-connection",auth:"required"},{id:"monitoring",method:"GET",path:"/api/monitoring",auth:"required"},{id:"update-status",method:"GET",path:"/api/update-status",auth:"required"},{id:"update-check",method:"GET",path:"/api/update-check",auth:"required"},{id:"restart",method:"POST",path:"/api/restart",auth:"required"},{id:"update",method:"POST",path:"/api/update",auth:"required"},{id:"uninstall",method:"POST",path:"/api/uninstall",auth:"required"},{id:"init",method:"POST",path:"/api/init",auth:"required"},{id:"sync",method:"GET",path:"/api/sync",auth:"required"},{id:"sync.action",method:"POST",path:"/api/sync",auth:"required"},{id:"inbox",method:"GET",path:"/api/inbox",auth:"required"},{id:"inbox.save",method:"POST",path:"/api/inbox",auth:"required"},{id:"inbox.archive",method:"DELETE",path:"/api/inbox",auth:"required"},{id:"setup.check-path",method:"POST",path:"/api/setup/check-path",auth:"required"},{id:"setup.check-port",method:"POST",path:"/api/setup/check-port",auth:"required"},{id:"setup.generate-token",method:"POST",path:"/api/setup/generate-token",auth:"required"},{id:"setup.ls",method:"POST",path:"/api/setup/ls",auth:"required"},{id:"setup",method:"GET",path:"/api/setup",auth:"required"},{id:"setup.apply",method:"POST",path:"/api/setup",auth:"required"},{id:"setup.guide-state",method:"PATCH",path:"/api/setup",auth:"required"},{id:"workflows",method:"GET",path:"/api/workflows",auth:"required"},{id:"workflows.create",method:"POST",path:"/api/workflows",auth:"required"},{id:"ask.stream",method:"POST",path:"/api/ask",auth:"required"},{id:"ask-sessions",method:"GET",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.save",method:"POST",path:"/api/ask-sessions",auth:"required"},{id:"ask-sessions.delete",method:"DELETE",path:"/api/ask-sessions",auth:"required"},{id:"space-overview",method:"GET",path:"/api/space-overview",auth:"required"},{id:"git",method:"GET",path:"/api/git",auth:"required"},{id:"settings",method:"GET",path:"/api/settings",auth:"required"},{id:"settings.update",method:"POST",path:"/api/settings",auth:"required"},{id:"settings.reset-token",method:"POST",path:"/api/settings/reset-token",auth:"required"},{id:"settings.test-key",method:"POST",path:"/api/settings/test-key",auth:"required"},{id:"settings.list-models",method:"POST",path:"/api/settings/list-models",auth:"required"},{id:"mcp.status",method:"GET",path:"/api/mcp/status",auth:"required"},{id:"mcp.agents",method:"GET",path:"/api/mcp/agents",auth:"required"},{id:"mcp.tools",method:"GET",path:"/api/mcp/tools",auth:"required"},{id:"mcp.direct-tools",method:"POST",path:"/api/mcp/direct-tools",auth:"required"},{id:"mcp.install",method:"POST",path:"/api/mcp/install",auth:"required"},{id:"mcp.install-skill",method:"POST",path:"/api/mcp/install-skill",auth:"required"},{id:"mcp.restart",method:"POST",path:"/api/mcp/restart",auth:"required"},{id:"mcp.uninstall",method:"POST",path:"/api/mcp/uninstall",auth:"required"},{id:"skills",method:"GET",path:"/api/skills",auth:"required"},{id:"skills.action",method:"POST",path:"/api/skills",auth:"required"},{id:"changes",method:"GET",path:"/api/changes",auth:"required"},{id:"changes.mark-seen",method:"POST",path:"/api/changes",auth:"required"},{id:"agents.custom.create",method:"POST",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.update",method:"PUT",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.delete",method:"DELETE",path:"/api/agents/custom",auth:"required"},{id:"agents.custom.detect",method:"POST",path:"/api/agents/custom/detect",auth:"required"},{id:"agents.copy-skill",method:"POST",path:"/api/agents/copy-skill",auth:"required"}].map(a=>[`${a.method} ${a.path}`,a.auth])},64770:(a,b,c)=>{"use strict";c.d(b,{uV:()=>d,$5:()=>g});class d extends Error{constructor(a,b,c,d){super(a),this.name=this.constructor.name,this.code=b,this.statusCode=c,this.context=d?.context,this.cause=d?.cause,this.metadata={timestamp:Date.now(),...d?.metadata},Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,metadata:this.metadata,stack:this.stack}}toUserMessage(){return this.message}}let e={VALIDATION_ERROR:400,NOT_FOUND:404,UNAUTHORIZED:401,FORBIDDEN:403,CONFLICT:409,INTERNAL_ERROR:500,SERVICE_UNAVAILABLE:503,TIMEOUT:408,RATE_LIMIT_EXCEEDED:429,FILE_SYSTEM_ERROR:500,FILE_READ_ERROR:500,FILE_WRITE_ERROR:500,FILE_STAT_ERROR:500,FILE_REMOVE_ERROR:500,FILE_COPY_ERROR:500,FILE_MOVE_ERROR:500,FILE_WATCH_ERROR:500,DIRECTORY_READ_ERROR:500,DIRECTORY_CREATE_ERROR:500,DATABASE_ERROR:500,NETWORK_ERROR:500,CONFIGURATION_ERROR:500,SEARCH_ERROR:500,VECTOR_ERROR:500,MCP_ERROR:500},f={VALIDATION_ERROR:"Validation failed",NOT_FOUND:"Resource not found",UNAUTHORIZED:"Unauthorized access",FORBIDDEN:"Access forbidden",CONFLICT:"Resource conflict",INTERNAL_ERROR:"Internal server error",SERVICE_UNAVAILABLE:"Service unavailable",TIMEOUT:"Operation timed out",RATE_LIMIT_EXCEEDED:"Rate limit exceeded",FILE_SYSTEM_ERROR:"File system operation failed",FILE_READ_ERROR:"Failed to read file",FILE_WRITE_ERROR:"Failed to write file",FILE_STAT_ERROR:"Failed to get file stats",FILE_REMOVE_ERROR:"Failed to remove file",FILE_COPY_ERROR:"Failed to copy file",FILE_MOVE_ERROR:"Failed to move file",FILE_WATCH_ERROR:"Failed to watch file",DIRECTORY_READ_ERROR:"Failed to read directory",DIRECTORY_CREATE_ERROR:"Failed to create directory",DATABASE_ERROR:"Database operation failed",NETWORK_ERROR:"Network operation failed",CONFIGURATION_ERROR:"Configuration error",SEARCH_ERROR:"Search operation failed",VECTOR_ERROR:"Vector operation failed",MCP_ERROR:"MCP operation failed"};function g(a,b,c){let g=e[a],h=f[a];return new d(b??h,a,g,{...c,metadata:{...c?.metadata,retryable:["SERVICE_UNAVAILABLE","TIMEOUT","NETWORK_ERROR"].includes(a),retryAfter:function(a){switch(a){case"RATE_LIMIT_EXCEEDED":return 6e4;case"SERVICE_UNAVAILABLE":return 5e3;case"TIMEOUT":return 1e3;case"NETWORK_ERROR":return 2e3;default:return 0}}(a)}})}},66451:(a,b,c)=>{"use strict";c.d(b,{XT:()=>j,aH:()=>g,bt:()=>h});var d=c(17409);let e=new Set(["create_file","delete_file","rename_file","move_file","create_space","rename_space"]);function f(a){return"user"===a||"agent"===a||"system"===a}function g(a){return a.hasAgentHeader?"agent":f(a.bodySource)?a.bodySource:f(a.headerSource)?a.headerSource:"user"}function h(a,b){let c=b?.replace(/[\x00-\x1f]/g,"").slice(0,100);return c?{type:a,agentName:c}:{type:a}}function i(a,b){return{response:a,changeEvent:null,source:b,treeChanged:!1}}async function j(a){let{op:b,path:c,...f}=a.body,{source:g,responses:h}=a;if(!b||"string"!=typeof b)return i(h.badRequest("missing op"),g);if(!c||"string"!=typeof c)return i(h.badRequest("missing path"),g);let j=a.handlers[b];if(!j)return i(h.badRequest(`unknown op: ${b}`),g);let k=(0,d.R)({actor:a.actor,op:b,path:c,rules:a.permissionRules,protectedRootFiles:a.protectedRootFiles});if("deny"===k.effect)return i(h.denied(k.reason),g);if("ask"===k.effect)return i(h.permissionRequired({op:b,path:c,reason:k.reason,requestId:`perm_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}),g);let l=await j(c,f),m=a.treeChangingOps??e;return{response:l.response,changeEvent:l.changeEvent,source:g,treeChanged:new Set(m).has(b)}}},75791:(a,b,c)=>{"use strict";c.d(b,{EF:()=>mz,Et:()=>mw,Ew:()=>s,GW:()=>mr,Ht:()=>my,J1:()=>ms,L6:()=>mq,Rf:()=>u,Tn:()=>L,Vu:()=>mx,bK:()=>mt,gG:()=>p,iY:()=>mv,jw:()=>mo,l3:()=>v,tM:()=>mp,zl:()=>mu});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(57075),i=Object.defineProperty,j=(a,b)=>{for(var c in b)i(a,c,{get:b[c],enumerable:!0})},k={"gemini-cli":"gemini","claude-code":"claude","claude-acp":"claude",codebuddy:"codebuddy-code",codex:"codex-acp","pi-acp":"pi"};function l(a){return k[a]??a}var m={gemini:{binary:"gemini",detectCommands:["gemini"],presenceDirs:["~/.gemini/"],cmd:"gemini",args:["--experimental-acp"],installCmd:"npm install -g @google/gemini-cli",displayName:"Gemini CLI",description:"Google Gemini 驱动的编程智能体。支持多文件编辑、代码审查、调试和项目级重构,原生集成 Google 搜索实时查询技术文档。"},claude:{binary:"claude",detectCommands:["claude"],presenceDirs:["~/.claude/"],cmd:"npx",args:["--yes","@agentclientprotocol/claude-agent-acp"],installCmd:"npm install -g @anthropic-ai/claude-code",displayName:"Claude Code",description:"Anthropic Claude 驱动的编程智能体。擅长复杂推理、长上下文理解和安全代码生成,支持多文件编辑与 agentic 工作流。"},"codebuddy-code":{binary:"codebuddy",detectCommands:["codebuddy"],presenceDirs:["~/.codebuddy/"],cmd:"codebuddy",args:["--acp"],installCmd:"npm install -g @tencent-ai/codebuddy-code",displayName:"CodeBuddy Code",description:"腾讯云智能编程助手。基于混元大模型,支持代码补全、生成、审查和多文件重构,深度理解中文语境,适配国内开发生态。"},"codex-acp":{binary:"codex",detectCommands:["codex"],presenceDirs:["~/.codex/"],cmd:"codex",args:[],installCmd:"npm install -g @openai/codex",displayName:"Codex",description:"OpenAI Codex 编程智能体。基于 GPT 系列模型,擅长代码生成、自动化任务和多语言编程支持。"},cursor:{binary:"cursor",detectCommands:["cursor"],presenceDirs:["~/.cursor/extensions/"],cmd:"cursor",args:[],displayName:"Cursor",description:"Cursor AI 编程智能体。AI-first 代码编辑器的 CLI 模式,支持上下文感知的代码编辑、Tab 补全和多文件协同修改。"},cline:{binary:"cline",detectCommands:["cline"],presenceDirs:["~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/","~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/","%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/"],cmd:"cline",args:[],installCmd:"npm install -g cline",displayName:"Cline",description:"开源自主编程智能体。支持多模型后端,内置文件编辑、终端执行和浏览器自动化能力。"},"github-copilot-cli":{binary:"github-copilot",cmd:"github-copilot",args:[],installCmd:"npm install -g @github/copilot",displayName:"GitHub Copilot",description:"GitHub Copilot 编程智能体。基于海量开源代码训练,擅长代码补全、测试生成和跨语言编程支持。"},goose:{binary:"goose",cmd:"goose",args:[],installCmd:"pip install goose-ai",displayName:"Goose",description:"Block 开源自主编程智能体。支持多模型后端,可扩展插件架构,擅长复杂任务自动化。"},opencode:{binary:"opencode",cmd:"opencode",args:[],installCmd:"go install github.com/opencode-ai/opencode@latest",displayName:"OpenCode",description:"开源终端编程智能体。Go 实现,轻量快速,支持多模型后端和丰富的代码编辑工具。"},kilo:{binary:"kilo",cmd:"kilo",args:[],installCmd:"npm install -g @kilocode/cli",displayName:"Kilo Code",description:"Kilo Code 编程智能体。开源 VS Code 扩展的 CLI 模式,支持多模型、自动审批和代码差异预览。"},openclaw:{binary:"openclaw",detectCommands:["openclaw"],presenceDirs:["~/.openclaw/"],cmd:"openclaw",args:[],displayName:"OpenClaw",description:"OpenClaw 编程智能体。开源 Claude Code 替代方案,支持多模型后端和完整的 agentic 工作流。"},pi:{binary:"pi",detectCommands:["pi"],presenceDirs:["~/.pi/"],cmd:"pi",args:[],displayName:"Pi Agent",description:"Pi Agent 编程智能体。轻量级终端编程助手。"},auggie:{binary:"auggie",detectCommands:["auggie"],presenceDirs:["~/.augment/"],cmd:"auggie",args:[],displayName:"Auggie",description:"Augment Code 编程智能体。支持代码理解、生成和全仓库上下文感知。"},iflow:{binary:"iflow",detectCommands:["iflow"],presenceDirs:["~/.iflow/"],cmd:"iflow",args:[],displayName:"iFlow",description:"iFlow 编程智能体。AI 驱动的工作流自动化工具。"},kimi:{binary:"kimi",detectCommands:["kimi"],presenceDirs:["~/.kimi/"],cmd:"kimi",args:[],displayName:"Kimi",description:"Moonshot AI Kimi 编程智能体。擅长超长上下文理解,支持中文语境下的代码生成与分析。"},"qwen-code":{binary:"qwen-code",detectCommands:["qwen-code","qwen"],presenceDirs:["~/.qwen/"],cmd:"qwen-code",args:[],installCmd:"npm install -g @qwen-code/qwen-code",displayName:"Qwen Code",description:"阿里通义千问 Qwen 编程智能体。基于 Qwen 大模型,支持代码生成、审查和多语言编程,深度适配中文开发场景。"},lingma:{binary:"lingma",detectCommands:["lingma"],presenceDirs:["~/.lingma/"],cmd:"lingma",args:[],displayName:"Lingma",description:"阿里通义灵码智能编程助手。提供代码补全、智能问答、多文件修改和编程智能体能力,支持 MCP 工具扩展。"}};function n(a,b,c){let d=m[l(a)],e=c?.enabled!==!1;if(c&&(c.command||c.args))return{cmd:c.command??d?.cmd??b?.command??a,args:c.args??d?.args??[],env:c.env,source:"user-override",binary:d?.binary??a,installCmd:d?.installCmd,enabled:e};if(d)return{cmd:d.cmd,args:d.args,env:c?.env,source:"descriptor",binary:d.binary,installCmd:d.installCmd,enabled:e};if(b){let{cmd:d,args:f}=function(a){switch(a.transport){case"npx":return{cmd:"npx",args:["--yes",a.command,...a.args??[]]};case"uvx":return{cmd:"uvx",args:[a.command,...a.args??[]]};default:return{cmd:a.command,args:a.args??[]}}}(b);return{cmd:d,args:f,env:c?.env,source:"registry",binary:a,installCmd:b.packageName?`npm install -g ${b.packageName}`:void 0,enabled:e}}return{cmd:a,args:[],env:c?.env,source:"registry",binary:a,enabled:e}}function o(a,b){if(!b)return;if(b[a])return b[a];let c=l(a);if(c!==a&&b[c])return b[c];for(let[c,d]of Object.entries(k))if(d===a&&b[c])return b[c]}function p(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={},c=!1;for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let a={};if("string"==typeof e.command&&e.command.trim()&&(a.command=e.command.trim()),Array.isArray(e.args)&&(a.args=e.args.filter(a=>"string"==typeof a)),e.env&&"object"==typeof e.env&&!Array.isArray(e.env)){let b={};for(let[a,c]of Object.entries(e.env))"string"==typeof c&&(b[a]=c);Object.keys(b).length>0&&(a.env=b)}"boolean"==typeof e.enabled&&(a.enabled=e.enabled),Object.keys(a).length>0&&(b[d]=a,c=!0)}return c?b:void 0}var q=null,r=null;async function s(){if(r&&Date.now()-new Date(r.fetchedAt).getTime()<6048e5)return r;let a=(q||(q=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,description:b.description??"",transport:"npx"===b.cmd?"npx":"stdio",command:b.cmd,args:b.args,packageName:b.installCmd?.match(/npm install -g (.+)/)?.[1]}))),q);try{var b;let c=await fetch("https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json",{headers:{Accept:"application/json"},signal:AbortSignal.timeout(3e3)});if(!c.ok)return r??t(a,"builtin");let d=await c.json(),e=(b=d)&&"object"==typeof b?(Array.isArray(b.agents)?b.agents:Array.isArray(b)?b:Object.entries(b).filter(([a])=>"version"!==a&&"$schema"!==a).map(([a,b])=>({...b,id:a}))).map(w).filter(a=>null!==a):[],f=function(a,b){let c=new Map;for(let b of a)c.set(b.id,b);for(let a of b){let b=c.get(a.id),d=l(a.id),e=d!==a.id?c.get(d):void 0;b?c.set(a.id,{...b,tags:a.tags??b.tags,homepage:a.homepage??b.homepage,version:a.version??b.version}):e||c.set(a.id,a)}return Array.from(c.values())}(a,e);return r={version:d.version??"1",agents:f,fetchedAt:new Date().toISOString()}}catch{return r??t(a,"builtin")}}function t(a,b){return{version:b,agents:a,fetchedAt:new Date().toISOString()}}async function u(){return(await s()).agents}async function v(a){let b=await u(),c=l(a);return b.find(b=>b.id===a||b.id===c)??null}function w(a){if(!a||"object"!=typeof a)return null;let b=String(a.id??a.name??""),c=String(a.name??a.id??"");if(!b&&!c)return null;let{transport:d,command:e,packageName:f,args:g}=function(a){let b,c=a.distribution;if(c&&"object"==typeof c){if(c.npx&&"object"==typeof c.npx){let a=c.npx,b=x(String(a.package??""));return{transport:"npx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.uvx&&"object"==typeof c.uvx){let a=c.uvx,b=x(String(a.package??""));return{transport:"uvx",command:b,packageName:b,args:Array.isArray(a.args)?a.args.map(String):void 0}}if(c.binary&&"object"==typeof c.binary)return{transport:"binary",command:""}}return{transport:"npx"===(b=String(a.transport??"stdio").toLowerCase())||"uvx"===b||"binary"===b?b:"stdio",command:String(a.command??a.cmd??"")}}(a),h=b||c,i=m[l(h)]?.displayName,j=m[l(h)]?.description;return{id:h,name:i??c??b,description:j??String(a.description??""),version:a.version?String(a.version):void 0,transport:d,command:e,packageName:f,args:g??(Array.isArray(a.args)?a.args.map(String):void 0),env:a.env&&"object"==typeof a.env?a.env:void 0,tags:Array.isArray(a.tags)?a.tags.map(String):void 0,homepage:a.homepage??a.website?String(a.homepage??a.website):void 0}}function x(a){if(!a)return"";let b=a.lastIndexOf("@");return b>0?a.slice(0,b):a}function y(a){let b=a;return"~"===a?b=e.homedir():(a.startsWith("~/")||a.startsWith("~\\"))&&(b=f.resolve(e.homedir(),a.slice(2))),b.replace(/%([A-Za-z_][A-Za-z0-9_]*)%/g,(a,b)=>process.env[b]??a)}function z(a){return a.startsWith("~/")||a.startsWith("~\\")||a.startsWith("/")||a.startsWith("./")||a.startsWith("../")||a.includes("\\")||/^[A-Za-z]:[\\/]/.test(a)}function A(a){if(!a)return null;let b=a.trim();if(!b||!z(b))return null;let c=y(b);return d.existsSync(c)?c:null}function B(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a of b){let b=y(a);if(z(b)&&d.existsSync(b))return b}for(let a of b)if(z(a))return y(a);return null}function C(a){return`'${a.replace(/'/g,"'\\''")}'`}function D(){return"win32"===process.platform?[]:[...new Set([process.env.SHELL,"darwin"===process.platform?"/bin/zsh":void 0,"/bin/bash","/bin/sh"].filter(a=>!!a))]}function E(a,b){return new Promise(c=>{(0,g.execFile)(a,b,{encoding:"utf-8",timeout:3e3},(a,b)=>{a?c(null):c(b)})})}function F(a,b){try{return(0,g.execFileSync)(a,b,{encoding:"utf-8",timeout:3e3})}catch{return null}}async function G(a){let b=await E("win32"===process.platform?"where":"which",[a]);return b?B(b):null}async function H(a){for(let b of D()){let c=await E(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}async function I(a){if(!a)return null;let b=A(a);if(b)return b;let c=a.trim();return!c||z(c)?null:await G(c)??await H(c)}function J(a){let b;if(!a)return null;let c=A(a);if(c)return c;let d=a.trim();return!d||z(d)?null:((b=F("win32"===process.platform?"where":"which",[d]))?B(b):null)??function(a){for(let b of D()){let c=F(b,["-lic",`command -v -- ${C(a)}`]);if(!c)continue;let d=B(c);if(d)return d}return null}(d)}async function K(a){let b=[...new Set(a.map(a=>a.trim()).filter(Boolean))];return new Map(await Promise.all(b.map(async a=>[a,await I(a)])))}async function L(a={}){let b=Object.entries(m).map(([a,b])=>({id:a,name:b.displayName??a,binary:b.binary,detectCommands:b.detectCommands,presenceDirs:b.presenceDirs,installCmd:b.installCmd,description:b.description})).map(b=>{let c=o(b.id,a.overrides),d=n(b.id,void 0,c),e=A(c?.command),f=[...new Set([...b.detectCommands??[b.binary],...c?.command&&!z(c.command)?[c.command]:[]])];return{agent:b,resolved:d,directOverridePath:e,presenceCommands:f}}),c=await K(b.flatMap(a=>a.presenceCommands)),e=await K(b.map(a=>a.resolved.cmd)),f=[],g=[];for(let{agent:a,resolved:h,directOverridePath:i,presenceCommands:j}of b){let b=j.map(a=>c.get(a)??null).find(Boolean),k=i??b??function(a){if(!a||0===a.length)return null;for(let b of a){let a=y(b);if(d.existsSync(a))return a}return null}(a.presenceDirs),l=i??e.get(h.cmd)??(j.includes(h.cmd)?b:null)??null;if(k&&l)f.push({id:a.id,name:a.name,binaryPath:l,resolvedCommand:{cmd:h.cmd,args:h.args,source:h.source}});else{let b=a.installCmd?.match(/npm install -g (.+)/)?.[1];g.push({id:a.id,name:a.name,installCmd:a.installCmd??(b?`npm install -g ${b}`:""),packageName:b})}}return{installed:f,notInstalled:g}}var M={};j(M,{$brand:()=>Q,$input:()=>d9,$output:()=>d8,NEVER:()=>O,TimePrecision:()=>eB,ZodAny:()=>hj,ZodArray:()=>ht,ZodBase64:()=>gQ,ZodBase64URL:()=>gS,ZodBigInt:()=>g8,ZodBigIntFormat:()=>ha,ZodBoolean:()=>g6,ZodCIDRv4:()=>gM,ZodCIDRv6:()=>gO,ZodCUID:()=>gy,ZodCUID2:()=>gA,ZodCatch:()=>h9,ZodCustom:()=>ip,ZodCustomStringFormat:()=>gY,ZodDate:()=>hr,ZodDefault:()=>h1,ZodDiscriminatedUnion:()=>hC,ZodE164:()=>gU,ZodEmail:()=>gj,ZodEmoji:()=>gu,ZodEnum:()=>hP,ZodError:()=>f8,ZodFile:()=>hU,ZodGUID:()=>gl,ZodIPv4:()=>gI,ZodIPv6:()=>gK,ZodISODate:()=>f1,ZodISODateTime:()=>f_,ZodISODuration:()=>f5,ZodISOTime:()=>f3,ZodIntersection:()=>hE,ZodIssueCode:()=>iy,ZodJWT:()=>gW,ZodKSUID:()=>gG,ZodLazy:()=>ik,ZodLiteral:()=>hS,ZodMap:()=>hL,ZodNaN:()=>ib,ZodNanoID:()=>gw,ZodNever:()=>hn,ZodNonOptional:()=>h5,ZodNull:()=>hh,ZodNullable:()=>h$,ZodNumber:()=>g$,ZodNumberFormat:()=>g0,ZodObject:()=>hw,ZodOptional:()=>hY,ZodPipe:()=>id,ZodPrefault:()=>h3,ZodPromise:()=>im,ZodReadonly:()=>ig,ZodRealError:()=>f9,ZodRecord:()=>hI,ZodSet:()=>hN,ZodString:()=>gg,ZodStringFormat:()=>gi,ZodSuccess:()=>h7,ZodSymbol:()=>hd,ZodTemplateLiteral:()=>ii,ZodTransform:()=>hW,ZodTuple:()=>hG,ZodType:()=>ge,ZodULID:()=>gC,ZodURL:()=>gs,ZodUUID:()=>gn,ZodUndefined:()=>hf,ZodUnion:()=>hA,ZodUnknown:()=>hl,ZodVoid:()=>hp,ZodXID:()=>gE,_ZodString:()=>gf,_default:()=>h2,any:()=>hk,array:()=>hu,base64:()=>gR,base64url:()=>gT,bigint:()=>g9,boolean:()=>g7,catch:()=>ia,check:()=>iq,cidrv4:()=>gN,cidrv6:()=>gP,clone:()=>au,coerce:()=>iB,config:()=>T,core:()=>N,cuid:()=>gz,cuid2:()=>gB,custom:()=>ir,date:()=>hs,discriminatedUnion:()=>hD,e164:()=>gV,email:()=>gk,emoji:()=>gv,endsWith:()=>fl,enum:()=>hQ,file:()=>hV,flattenError:()=>aT,float32:()=>g2,float64:()=>g3,formatError:()=>aU,function:()=>fW,getErrorMap:()=>iA,globalRegistry:()=>ec,gt:()=>e3,gte:()=>e4,guid:()=>gm,includes:()=>fj,instanceof:()=>iu,int:()=>g1,int32:()=>g4,int64:()=>hb,intersection:()=>hF,ipv4:()=>gJ,ipv6:()=>gL,iso:()=>f$,json:()=>iw,jwt:()=>gX,keyof:()=>hv,ksuid:()=>gH,lazy:()=>il,length:()=>ff,literal:()=>hT,locales:()=>du,looseObject:()=>hz,lowercase:()=>fh,lt:()=>e1,lte:()=>e2,map:()=>hM,maxLength:()=>fd,maxSize:()=>fa,mime:()=>fn,minLength:()=>fe,minSize:()=>fb,multipleOf:()=>e9,nan:()=>ic,nanoid:()=>gx,nativeEnum:()=>hR,negative:()=>e6,never:()=>ho,nonnegative:()=>e8,nonoptional:()=>h6,nonpositive:()=>e7,normalize:()=>fp,null:()=>hi,nullable:()=>h_,nullish:()=>h0,number:()=>g_,object:()=>hx,optional:()=>hZ,overwrite:()=>fo,parse:()=>ga,parseAsync:()=>gb,partialRecord:()=>hK,pipe:()=>ie,positive:()=>e5,prefault:()=>h4,preprocess:()=>ix,prettifyError:()=>aX,promise:()=>io,property:()=>fm,readonly:()=>ih,record:()=>hJ,refine:()=>is,regex:()=>fg,regexes:()=>a4,registry:()=>eb,safeParse:()=>gc,safeParseAsync:()=>gd,set:()=>hO,setErrorMap:()=>iz,size:()=>fc,startsWith:()=>fk,strictObject:()=>hy,string:()=>gh,stringFormat:()=>gZ,stringbool:()=>iv,success:()=>h8,superRefine:()=>it,symbol:()=>he,templateLiteral:()=>ij,toJSONSchema:()=>fY,toLowerCase:()=>fr,toUpperCase:()=>fs,transform:()=>hX,treeifyError:()=>aV,trim:()=>fq,tuple:()=>hH,uint32:()=>g5,uint64:()=>hc,ulid:()=>gD,undefined:()=>hg,union:()=>hB,unknown:()=>hm,uppercase:()=>fi,url:()=>gt,uuid:()=>go,uuidv4:()=>gp,uuidv6:()=>gq,uuidv7:()=>gr,void:()=>hq,xid:()=>gF});var N={};j(N,{$ZodAny:()=>cM,$ZodArray:()=>cS,$ZodAsyncError:()=>R,$ZodBase64:()=>cx,$ZodBase64URL:()=>cz,$ZodBigInt:()=>cH,$ZodBigIntFormat:()=>cI,$ZodBoolean:()=>cG,$ZodCIDRv4:()=>cu,$ZodCIDRv6:()=>cv,$ZodCUID:()=>cj,$ZodCUID2:()=>ck,$ZodCatch:()=>di,$ZodCheck:()=>bM,$ZodCheckBigIntFormat:()=>bS,$ZodCheckEndsWith:()=>b3,$ZodCheckGreaterThan:()=>bP,$ZodCheckIncludes:()=>b1,$ZodCheckLengthEquals:()=>bY,$ZodCheckLessThan:()=>bO,$ZodCheckLowerCase:()=>b_,$ZodCheckMaxLength:()=>bW,$ZodCheckMaxSize:()=>bT,$ZodCheckMimeType:()=>b6,$ZodCheckMinLength:()=>bX,$ZodCheckMinSize:()=>bU,$ZodCheckMultipleOf:()=>bQ,$ZodCheckNumberFormat:()=>bR,$ZodCheckOverwrite:()=>b7,$ZodCheckProperty:()=>b5,$ZodCheckRegex:()=>b$,$ZodCheckSizeEquals:()=>bV,$ZodCheckStartsWith:()=>b2,$ZodCheckStringFormat:()=>bZ,$ZodCheckUpperCase:()=>b0,$ZodCustom:()=>ds,$ZodCustomStringFormat:()=>cD,$ZodDate:()=>cQ,$ZodDefault:()=>dc,$ZodDiscriminatedUnion:()=>cY,$ZodE164:()=>cA,$ZodEmail:()=>cf,$ZodEmoji:()=>ch,$ZodEnum:()=>c6,$ZodError:()=>aR,$ZodFile:()=>c8,$ZodFunction:()=>fV,$ZodGUID:()=>cd,$ZodIPv4:()=>cs,$ZodIPv6:()=>ct,$ZodISODate:()=>cp,$ZodISODateTime:()=>co,$ZodISODuration:()=>cr,$ZodISOTime:()=>cq,$ZodIntersection:()=>cZ,$ZodJWT:()=>cC,$ZodKSUID:()=>cn,$ZodLazy:()=>dr,$ZodLiteral:()=>c7,$ZodMap:()=>c2,$ZodNaN:()=>dj,$ZodNanoID:()=>ci,$ZodNever:()=>cO,$ZodNonOptional:()=>df,$ZodNull:()=>cL,$ZodNullable:()=>db,$ZodNumber:()=>cE,$ZodNumberFormat:()=>cF,$ZodObject:()=>cV,$ZodOptional:()=>da,$ZodPipe:()=>dk,$ZodPrefault:()=>de,$ZodPromise:()=>dq,$ZodReadonly:()=>dm,$ZodRealError:()=>aS,$ZodRecord:()=>c1,$ZodRegistry:()=>ea,$ZodSet:()=>c4,$ZodString:()=>cb,$ZodStringFormat:()=>cc,$ZodSuccess:()=>dh,$ZodSymbol:()=>cJ,$ZodTemplateLiteral:()=>dp,$ZodTransform:()=>c9,$ZodTuple:()=>c_,$ZodType:()=>ca,$ZodULID:()=>cl,$ZodURL:()=>cg,$ZodUUID:()=>ce,$ZodUndefined:()=>cK,$ZodUnion:()=>cX,$ZodUnknown:()=>cN,$ZodVoid:()=>cP,$ZodXID:()=>cm,$brand:()=>Q,$constructor:()=>P,$input:()=>d9,$output:()=>d8,Doc:()=>b8,JSONSchema:()=>fZ,JSONSchemaGenerator:()=>fX,NEVER:()=>O,TimePrecision:()=>eB,_any:()=>eW,_array:()=>ft,_base64:()=>ex,_base64url:()=>ey,_bigint:()=>eP,_boolean:()=>eN,_catch:()=>fL,_cidrv4:()=>ev,_cidrv6:()=>ew,_coercedBigint:()=>eQ,_coercedBoolean:()=>eO,_coercedDate:()=>e_,_coercedNumber:()=>eH,_coercedString:()=>ee,_cuid:()=>eo,_cuid2:()=>ep,_custom:()=>fR,_date:()=>e$,_default:()=>fI,_discriminatedUnion:()=>fv,_e164:()=>ez,_email:()=>ef,_emoji:()=>em,_endsWith:()=>fl,_enum:()=>fB,_file:()=>fE,_float32:()=>eJ,_float64:()=>eK,_gt:()=>e3,_gte:()=>e4,_guid:()=>eg,_includes:()=>fj,_int:()=>eI,_int32:()=>eL,_int64:()=>eR,_intersection:()=>fw,_ipv4:()=>et,_ipv6:()=>eu,_isoDate:()=>eD,_isoDateTime:()=>eC,_isoDuration:()=>eF,_isoTime:()=>eE,_jwt:()=>eA,_ksuid:()=>es,_lazy:()=>fP,_length:()=>ff,_literal:()=>fD,_lowercase:()=>fh,_lt:()=>e1,_lte:()=>e2,_map:()=>fz,_max:()=>e2,_maxLength:()=>fd,_maxSize:()=>fa,_mime:()=>fn,_min:()=>e4,_minLength:()=>fe,_minSize:()=>fb,_multipleOf:()=>e9,_nan:()=>e0,_nanoid:()=>en,_nativeEnum:()=>fC,_negative:()=>e6,_never:()=>eY,_nonnegative:()=>e8,_nonoptional:()=>fJ,_nonpositive:()=>e7,_normalize:()=>fp,_null:()=>eV,_nullable:()=>fH,_number:()=>eG,_optional:()=>fG,_overwrite:()=>fo,_parse:()=>aY,_parseAsync:()=>a$,_pipe:()=>fM,_positive:()=>e5,_promise:()=>fQ,_property:()=>fm,_readonly:()=>fN,_record:()=>fy,_refine:()=>fS,_regex:()=>fg,_safeParse:()=>a0,_safeParseAsync:()=>a2,_set:()=>fA,_size:()=>fc,_startsWith:()=>fk,_string:()=>ed,_stringFormat:()=>fU,_stringbool:()=>fT,_success:()=>fK,_symbol:()=>eT,_templateLiteral:()=>fO,_toLowerCase:()=>fr,_toUpperCase:()=>fs,_transform:()=>fF,_trim:()=>fq,_tuple:()=>fx,_uint32:()=>eM,_uint64:()=>eS,_ulid:()=>eq,_undefined:()=>eU,_union:()=>fu,_unknown:()=>eX,_uppercase:()=>fi,_url:()=>el,_uuid:()=>eh,_uuidv4:()=>ei,_uuidv6:()=>ej,_uuidv7:()=>ek,_void:()=>eZ,_xid:()=>er,clone:()=>au,config:()=>T,flattenError:()=>aT,formatError:()=>aU,function:()=>fW,globalConfig:()=>S,globalRegistry:()=>ec,isValidBase64:()=>cw,isValidBase64URL:()=>cy,isValidJWT:()=>cB,locales:()=>du,parse:()=>aZ,parseAsync:()=>a_,prettifyError:()=>aX,regexes:()=>a4,registry:()=>eb,safeParse:()=>a1,safeParseAsync:()=>a3,toDotPath:()=>aW,toJSONSchema:()=>fY,treeifyError:()=>aV,util:()=>U,version:()=>b9});var O=Object.freeze({status:"aborted"});function P(a,b,c){function d(c,d){var e;for(let f in Object.defineProperty(c,"_zod",{value:c._zod??{},enumerable:!1}),(e=c._zod).traits??(e.traits=new Set),c._zod.traits.add(a),b(c,d),g.prototype)f in c||Object.defineProperty(c,f,{value:g.prototype[f].bind(c)});c._zod.constr=g,c._zod.def=d}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}var Q=Symbol("zod_brand"),R=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},S={};function T(a){return a&&Object.assign(S,a),S}var U={};function V(a){return a}function W(a){return a}function X(a){}function Y(a){throw Error()}function Z(a){}function $(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function _(a,b="|"){return a.map(a=>ax(a)).join(b)}function aa(a,b){return"bigint"==typeof b?b.toString():b}function ab(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function ac(a){return null==a}function ad(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}function ae(a,b){let c=(a.toString().split(".")[1]||"").length,d=(b.toString().split(".")[1]||"").length,e=c>d?c:d;return Number.parseInt(a.toFixed(e).replace(".",""))%Number.parseInt(b.toFixed(e).replace(".",""))/10**e}function af(a,b,c){Object.defineProperty(a,b,{get(){{let d=c();return a[b]=d,d}},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function ag(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function ah(a,b){return b?b.reduce((a,b)=>a?.[b],a):a}function ai(a){let b=Object.keys(a);return Promise.all(b.map(b=>a[b])).then(a=>{let c={};for(let d=0;d<b.length;d++)c[b[d]]=a[d];return c})}function aj(a=10){let b="abcdefghijklmnopqrstuvwxyz",c="";for(let d=0;d<a;d++)c+=b[Math.floor(Math.random()*b.length)];return c}function ak(a){return JSON.stringify(a)}j(U,{BIGINT_FORMAT_RANGES:()=>aA,Class:()=>aP,NUMBER_FORMAT_RANGES:()=>az,aborted:()=>aH,allowsEval:()=>an,assert:()=>Z,assertEqual:()=>V,assertIs:()=>X,assertNever:()=>Y,assertNotEqual:()=>W,assignProp:()=>ag,cached:()=>ab,captureStackTrace:()=>al,cleanEnum:()=>aO,cleanRegex:()=>ad,clone:()=>au,createTransparentProxy:()=>aw,defineLazy:()=>af,esc:()=>ak,escapeRegex:()=>at,extend:()=>aD,finalizeIssue:()=>aK,floatSafeRemainder:()=>ae,getElementAtPath:()=>ah,getEnumValues:()=>$,getLengthableOrigin:()=>aM,getParsedType:()=>aq,getSizableOrigin:()=>aL,isObject:()=>am,isPlainObject:()=>ao,issue:()=>aN,joinValues:()=>_,jsonStringifyReplacer:()=>aa,merge:()=>aE,normalizeParams:()=>av,nullish:()=>ac,numKeys:()=>ap,omit:()=>aC,optionalKeys:()=>ay,partial:()=>aF,pick:()=>aB,prefixIssues:()=>aI,primitiveTypes:()=>as,promiseAllObject:()=>ai,propertyKeyTypes:()=>ar,randomString:()=>aj,required:()=>aG,stringifyPrimitive:()=>ax,unwrapMessage:()=>aJ});var al=Error.captureStackTrace?Error.captureStackTrace:(...a)=>{};function am(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}var an=ab(()=>{if("u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch{return!1}});function ao(a){if(!1===am(a))return!1;let b=a.constructor;if(void 0===b)return!0;let c=b.prototype;return!1!==am(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function ap(a){let b=0;for(let c in a)Object.prototype.hasOwnProperty.call(a,c)&&b++;return b}var aq=a=>{let b=typeof a;switch(b){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(a)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(a)?"array":null===a?"null":a.then&&"function"==typeof a.then&&a.catch&&"function"==typeof a.catch?"promise":"u">typeof Map&&a instanceof Map?"map":"u">typeof Set&&a instanceof Set?"set":"u">typeof Date&&a instanceof Date?"date":"u">typeof File&&a instanceof File?"file":"object";default:throw Error(`Unknown data type: ${b}`)}},ar=new Set(["string","number","symbol"]),as=new Set(["string","number","bigint","boolean","symbol","undefined"]);function at(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function au(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function av(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return delete a.message,"string"==typeof a.error?{...a,error:()=>a.error}:a}function aw(a){let b;return new Proxy({},{get:(c,d,e)=>(b??(b=a()),Reflect.get(b,d,e)),set:(c,d,e,f)=>(b??(b=a()),Reflect.set(b,d,e,f)),has:(c,d)=>(b??(b=a()),Reflect.has(b,d)),deleteProperty:(c,d)=>(b??(b=a()),Reflect.deleteProperty(b,d)),ownKeys:c=>(b??(b=a()),Reflect.ownKeys(b)),getOwnPropertyDescriptor:(c,d)=>(b??(b=a()),Reflect.getOwnPropertyDescriptor(b,d)),defineProperty:(c,d,e)=>(b??(b=a()),Reflect.defineProperty(b,d,e))})}function ax(a){return"bigint"==typeof a?a.toString()+"n":"string"==typeof a?`"${a}"`:`${a}`}function ay(a){return Object.keys(a).filter(b=>"optional"===a[b]._zod.optin&&"optional"===a[b]._zod.optout)}var az={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},aA={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function aB(a,b){let c={},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&(c[a]=d.shape[a])}return au(a,{...a._zod.def,shape:c,checks:[]})}function aC(a,b){let c={...a._zod.def.shape},d=a._zod.def;for(let a in b){if(!(a in d.shape))throw Error(`Unrecognized key: "${a}"`);b[a]&&delete c[a]}return au(a,{...a._zod.def,shape:c,checks:[]})}function aD(a,b){if(!ao(b))throw Error("Invalid input to extend: expected a plain object");let c={...a._zod.def,get shape(){let c={...a._zod.def.shape,...b};return ag(this,"shape",c),c},checks:[]};return au(a,c)}function aE(a,b){return au(a,{...a._zod.def,get shape(){let c={...a._zod.def.shape,...b._zod.def.shape};return ag(this,"shape",c),c},catchall:b._zod.def.catchall,checks:[]})}function aF(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in d))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=a?new a({type:"optional",innerType:d[b]}):d[b])}else for(let b in d)e[b]=a?new a({type:"optional",innerType:d[b]}):d[b];return au(b,{...b._zod.def,shape:e,checks:[]})}function aG(a,b,c){let d=b._zod.def.shape,e={...d};if(c)for(let b in c){if(!(b in e))throw Error(`Unrecognized key: "${b}"`);c[b]&&(e[b]=new a({type:"nonoptional",innerType:d[b]}))}else for(let b in d)e[b]=new a({type:"nonoptional",innerType:d[b]});return au(b,{...b._zod.def,shape:e,checks:[]})}function aH(a,b=0){for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function aI(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function aJ(a){return"string"==typeof a?a:a?.message}function aK(a,b,c){let d={...a,path:a.path??[]};return a.message||(d.message=aJ(a.inst?._zod.def?.error?.(a))??aJ(b?.error?.(a))??aJ(c.customError?.(a))??aJ(c.localeError?.(a))??"Invalid input"),delete d.inst,delete d.continue,b?.reportInput||delete d.input,d}function aL(a){return a instanceof Set?"set":a instanceof Map?"map":a instanceof File?"file":"unknown"}function aM(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function aN(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}function aO(a){return Object.entries(a).filter(([a,b])=>Number.isNaN(Number.parseInt(a,10))).map(a=>a[1])}var aP=class{constructor(...a){}},aQ=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),Object.defineProperty(a,"message",{get:()=>JSON.stringify(b,aa,2),enumerable:!0}),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aR=P("$ZodError",aQ),aS=P("$ZodError",aQ,{Parent:Error});function aT(a,b=a=>a.message){let c={},d=[];for(let e of a.issues)e.path.length>0?(c[e.path[0]]=c[e.path[0]]||[],c[e.path[0]].push(b(e))):d.push(b(e));return{formErrors:d,fieldErrors:c}}function aU(a,b){let c=b||function(a){return a.message},d={_errors:[]},e=a=>{for(let b of a.issues)if("invalid_union"===b.code&&b.errors.length)b.errors.map(a=>e({issues:a}));else if("invalid_key"===b.code)e({issues:b.issues});else if("invalid_element"===b.code)e({issues:b.issues});else if(0===b.path.length)d._errors.push(c(b));else{let a=d,e=0;for(;e<b.path.length;){let d=b.path[e];e===b.path.length-1?(a[d]=a[d]||{_errors:[]},a[d]._errors.push(c(b))):a[d]=a[d]||{_errors:[]},a=a[d],e++}}};return e(a),d}function aV(a,b){let c=b||function(a){return a.message},d={errors:[]},e=(a,b=[])=>{var f,g;for(let h of a.issues)if("invalid_union"===h.code&&h.errors.length)h.errors.map(a=>e({issues:a},h.path));else if("invalid_key"===h.code)e({issues:h.issues},h.path);else if("invalid_element"===h.code)e({issues:h.issues},h.path);else{let a=[...b,...h.path];if(0===a.length){d.errors.push(c(h));continue}let e=d,i=0;for(;i<a.length;){let b=a[i],d=i===a.length-1;"string"==typeof b?(e.properties??(e.properties={}),(f=e.properties)[b]??(f[b]={errors:[]}),e=e.properties[b]):(e.items??(e.items=[]),(g=e.items)[b]??(g[b]={errors:[]}),e=e.items[b]),d&&e.errors.push(c(h)),i++}}};return e(a),d}function aW(a){let b=[];for(let c of a)"number"==typeof c?b.push(`[${c}]`):"symbol"==typeof c?b.push(`[${JSON.stringify(String(c))}]`):/[^\w$]/.test(c)?b.push(`[${JSON.stringify(c)}]`):(b.length&&b.push("."),b.push(c));return b.join("")}function aX(a){let b=[];for(let c of[...a.issues].sort((a,b)=>a.path.length-b.path.length))b.push(`\u2716 ${c.message}`),c.path?.length&&b.push(` \u2192 at ${aW(c.path)}`);return b.join(`
72
72
  `)}var aY=a=>(b,c,d,e)=>{let f=d?Object.assign(d,{async:!1}):{async:!1},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise)throw new R;if(g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>aK(a,f,T())));throw al(b,e?.callee),b}return g.value},aZ=aY(aS),a$=a=>async(b,c,d,e)=>{let f=d?Object.assign(d,{async:!0}):{async:!0},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>aK(a,f,T())));throw al(b,e?.callee),b}return g.value},a_=a$(aS),a0=a=>(b,c,d)=>{let e=d?{...d,async:!1}:{async:!1},f=b._zod.run({value:c,issues:[]},e);if(f instanceof Promise)throw new R;return f.issues.length?{success:!1,error:new(a??aR)(f.issues.map(a=>aK(a,e,T())))}:{success:!0,data:f.value}},a1=a0(aS),a2=a=>async(b,c,d)=>{let e=d?Object.assign(d,{async:!0}):{async:!0},f=b._zod.run({value:c,issues:[]},e);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new a(f.issues.map(a=>aK(a,e,T())))}:{success:!0,data:f.value}},a3=a2(aS),a4={};j(a4,{_emoji:()=>bn,base64:()=>bt,base64url:()=>bu,bigint:()=>bE,boolean:()=>bH,browserEmail:()=>bm,cidrv4:()=>br,cidrv6:()=>bs,cuid:()=>a5,cuid2:()=>a6,date:()=>bz,datetime:()=>bC,domain:()=>bw,duration:()=>bb,e164:()=>bx,email:()=>bi,emoji:()=>bo,extendedDuration:()=>bc,guid:()=>bd,hostname:()=>bv,html5Email:()=>bj,integer:()=>bF,ipv4:()=>bp,ipv6:()=>bq,ksuid:()=>a9,lowercase:()=>bK,nanoid:()=>ba,null:()=>bI,number:()=>bG,rfc5322Email:()=>bk,string:()=>bD,time:()=>bB,ulid:()=>a7,undefined:()=>bJ,unicodeEmail:()=>bl,uppercase:()=>bL,uuid:()=>be,uuid4:()=>bf,uuid6:()=>bg,uuid7:()=>bh,xid:()=>a8});var a5=/^[cC][^\s-]{8,}$/,a6=/^[0-9a-z]+$/,a7=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,a8=/^[0-9a-vA-V]{20}$/,a9=/^[A-Za-z0-9]{27}$/,ba=/^[a-zA-Z0-9_-]{21}$/,bb=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,bc=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,bd=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,be=a=>a?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${a}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,bf=be(4),bg=be(6),bh=be(7),bi=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,bj=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bk=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,bl=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,bm=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function bo(){return RegExp(bn,"u")}var bp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,bq=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,br=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bs=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,bt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,bu=/^[A-Za-z0-9_-]*$/,bv=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,bw=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,bx=/^\+(?:[0-9]){6,14}[0-9]$/,by="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",bz=RegExp(`^${by}$`);function bA(a){let b="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof a.precision?-1===a.precision?`${b}`:0===a.precision?`${b}:[0-5]\\d`:`${b}:[0-5]\\d\\.\\d{${a.precision}}`:`${b}(?::[0-5]\\d(?:\\.\\d+)?)?`}function bB(a){return RegExp(`^${bA(a)}$`)}function bC(a){let b=bA({precision:a.precision}),c=["Z"];a.local&&c.push(""),a.offset&&c.push("([+-]\\d{2}:\\d{2})");let d=`${b}(?:${c.join("|")})`;return RegExp(`^${by}T(?:${d})$`)}var bD=a=>{let b=a?`[\\s\\S]{${a?.minimum??0},${a?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${b}$`)},bE=/^\d+n?$/,bF=/^\d+$/,bG=/^-?\d+(?:\.\d+)?/i,bH=/true|false/i,bI=/null/i,bJ=/undefined/i,bK=/^[^A-Z]*$/,bL=/^[^a-z]*$/,bM=P("$ZodCheck",(a,b)=>{var c;a._zod??(a._zod={}),a._zod.def=b,(c=a._zod).onattach??(c.onattach=[])}),bN={number:"number",bigint:"bigint",object:"date"},bO=P("$ZodCheckLessThan",(a,b)=>{bM.init(a,b);let c=bN[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.maximum:c.exclusiveMaximum)??1/0;b.value<d&&(b.inclusive?c.maximum=b.value:c.exclusiveMaximum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value<=b.value:d.value<b.value)||d.issues.push({origin:c,code:"too_big",maximum:b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),bP=P("$ZodCheckGreaterThan",(a,b)=>{bM.init(a,b);let c=bN[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.minimum:c.exclusiveMinimum)??-1/0;b.value>d&&(b.inclusive?c.minimum=b.value:c.exclusiveMinimum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value>=b.value:d.value>b.value)||d.issues.push({origin:c,code:"too_small",minimum:b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),bQ=P("$ZodCheckMultipleOf",(a,b)=>{bM.init(a,b),a._zod.onattach.push(a=>{var c;(c=a._zod.bag).multipleOf??(c.multipleOf=b.value)}),a._zod.check=c=>{if(typeof c.value!=typeof b.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof c.value?c.value%b.value===BigInt(0):0===ae(c.value,b.value))||c.issues.push({origin:typeof c.value,code:"not_multiple_of",divisor:b.value,input:c.value,inst:a,continue:!b.abort})}}),bR=P("$ZodCheckNumberFormat",(a,b)=>{bM.init(a,b),b.format=b.format||"float64";let c=b.format?.includes("int"),d=c?"int":"number",[e,f]=az[b.format];a._zod.onattach.push(a=>{let d=a._zod.bag;d.format=b.format,d.minimum=e,d.maximum=f,c&&(d.pattern=bF)}),a._zod.check=g=>{let h=g.value;if(c){if(!Number.isInteger(h))return void g.issues.push({expected:d,format:b.format,code:"invalid_type",input:h,inst:a});if(!Number.isSafeInteger(h))return void(h>0?g.issues.push({input:h,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,continue:!b.abort}):g.issues.push({input:h,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,continue:!b.abort}))}h<e&&g.issues.push({origin:"number",input:h,code:"too_small",minimum:e,inclusive:!0,inst:a,continue:!b.abort}),h>f&&g.issues.push({origin:"number",input:h,code:"too_big",maximum:f,inst:a})}}),bS=P("$ZodCheckBigIntFormat",(a,b)=>{bM.init(a,b);let[c,d]=aA[b.format];a._zod.onattach.push(a=>{let e=a._zod.bag;e.format=b.format,e.minimum=c,e.maximum=d}),a._zod.check=e=>{let f=e.value;f<c&&e.issues.push({origin:"bigint",input:f,code:"too_small",minimum:c,inclusive:!0,inst:a,continue:!b.abort}),f>d&&e.issues.push({origin:"bigint",input:f,code:"too_big",maximum:d,inst:a})}}),bT=P("$ZodCheckMaxSize",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;d.size<=b.maximum||c.issues.push({origin:aL(d),code:"too_big",maximum:b.maximum,input:d,inst:a,continue:!b.abort})}}),bU=P("$ZodCheckMinSize",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;d.size>=b.minimum||c.issues.push({origin:aL(d),code:"too_small",minimum:b.minimum,input:d,inst:a,continue:!b.abort})}}),bV=P("$ZodCheckSizeEquals",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.size}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.size,c.maximum=b.size,c.size=b.size}),a._zod.check=c=>{let d=c.value,e=d.size;if(e===b.size)return;let f=e>b.size;c.issues.push({origin:aL(d),...f?{code:"too_big",maximum:b.size}:{code:"too_small",minimum:b.size},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),bW=P("$ZodCheckMaxLength",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;if(d.length<=b.maximum)return;let e=aM(d);c.issues.push({origin:e,code:"too_big",maximum:b.maximum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),bX=P("$ZodCheckMinLength",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;if(d.length>=b.minimum)return;let e=aM(d);c.issues.push({origin:e,code:"too_small",minimum:b.minimum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),bY=P("$ZodCheckLengthEquals",(a,b)=>{var c;bM.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return!ac(b)&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.length,c.maximum=b.length,c.length=b.length}),a._zod.check=c=>{let d=c.value,e=d.length;if(e===b.length)return;let f=aM(d),g=e>b.length;c.issues.push({origin:f,...g?{code:"too_big",maximum:b.length}:{code:"too_small",minimum:b.length},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),bZ=P("$ZodCheckStringFormat",(a,b)=>{var c,d;bM.init(a,b),a._zod.onattach.push(a=>{let c=a._zod.bag;c.format=b.format,b.pattern&&(c.patterns??(c.patterns=new Set),c.patterns.add(b.pattern))}),b.pattern?(c=a._zod).check??(c.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:b.format,input:c.value,...b.pattern?{pattern:b.pattern.toString()}:{},inst:a,continue:!b.abort})}):(d=a._zod).check??(d.check=()=>{})}),b$=P("$ZodCheckRegex",(a,b)=>{bZ.init(a,b),a._zod.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:"regex",input:c.value,pattern:b.pattern.toString(),inst:a,continue:!b.abort})}}),b_=P("$ZodCheckLowerCase",(a,b)=>{b.pattern??(b.pattern=bK),bZ.init(a,b)}),b0=P("$ZodCheckUpperCase",(a,b)=>{b.pattern??(b.pattern=bL),bZ.init(a,b)}),b1=P("$ZodCheckIncludes",(a,b)=>{bM.init(a,b);let c=at(b.includes),d=new RegExp("number"==typeof b.position?`^.{${b.position}}${c}`:c);b.pattern=d,a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(d)}),a._zod.check=c=>{c.value.includes(b.includes,b.position)||c.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:b.includes,input:c.value,inst:a,continue:!b.abort})}}),b2=P("$ZodCheckStartsWith",(a,b)=>{bM.init(a,b);let c=RegExp(`^${at(b.prefix)}.*`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.startsWith(b.prefix)||c.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:b.prefix,input:c.value,inst:a,continue:!b.abort})}}),b3=P("$ZodCheckEndsWith",(a,b)=>{bM.init(a,b);let c=RegExp(`.*${at(b.suffix)}$`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.endsWith(b.suffix)||c.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:b.suffix,input:c.value,inst:a,continue:!b.abort})}});function b4(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues))}var b5=P("$ZodCheckProperty",(a,b)=>{bM.init(a,b),a._zod.check=a=>{let c=b.schema._zod.run({value:a.value[b.property],issues:[]},{});if(c instanceof Promise)return c.then(c=>b4(c,a,b.property));b4(c,a,b.property)}}),b6=P("$ZodCheckMimeType",(a,b)=>{bM.init(a,b);let c=new Set(b.mime);a._zod.onattach.push(a=>{a._zod.bag.mime=b.mime}),a._zod.check=d=>{c.has(d.value.type)||d.issues.push({code:"invalid_value",values:b.mime,input:d.value.type,inst:a})}}),b7=P("$ZodCheckOverwrite",(a,b)=>{bM.init(a,b),a._zod.check=a=>{a.value=b.tx(a.value)}}),b8=class{constructor(a=[]){this.content=[],this.indent=0,this&&(this.args=a)}indented(a){this.indent+=1,a(this),this.indent-=1}write(a){if("function"==typeof a){a(this,{execution:"sync"}),a(this,{execution:"async"});return}let b=a.split(`
73
73
  `).filter(a=>a),c=Math.min(...b.map(a=>a.length-a.trimStart().length));for(let a of b.map(a=>a.slice(c)).map(a=>" ".repeat(2*this.indent)+a))this.content.push(a)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(a=>` ${a}`)].join(`
74
74
  `))}},b9={major:4,minor:0,patch:0},ca=P("$ZodType",(a,b)=>{var c;a??(a={}),a._zod.def=b,a._zod.bag=a._zod.bag||{},a._zod.version=b9;let d=[...a._zod.def.checks??[]];for(let b of(a._zod.traits.has("$ZodCheck")&&d.unshift(a),d))for(let c of b._zod.onattach)c(a);if(0===d.length)(c=a._zod).deferred??(c.deferred=[]),a._zod.deferred?.push(()=>{a._zod.run=a._zod.parse});else{let b=(a,b,c)=>{let d=aH(a),e;for(let f of b){if(f._zod.def.when){if(!f._zod.def.when(a))continue}else if(d)continue;let b=a.issues.length,g=f._zod.check(a);if(g instanceof Promise&&c?.async===!1)throw new R;if(e||g instanceof Promise)e=(e??Promise.resolve()).then(async()=>{await g,a.issues.length!==b&&(d||(d=aH(a,b)))});else{if(a.issues.length===b)continue;d||(d=aH(a,b))}}return e?e.then(()=>a):a};a._zod.run=(c,e)=>{let f=a._zod.parse(c,e);if(f instanceof Promise){if(!1===e.async)throw new R;return f.then(a=>b(a,d,e))}return b(f,d,e)}}a["~standard"]={validate:b=>{try{let c=a1(a,b);return c.success?{value:c.data}:{issues:c.error?.issues}}catch{return a3(a,b).then(a=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}}),cb=P("$ZodString",(a,b)=>{ca.init(a,b),a._zod.pattern=[...a?._zod.bag?.patterns??[]].pop()??bD(a._zod.bag),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=String(c.value)}catch{}return"string"==typeof c.value||c.issues.push({expected:"string",code:"invalid_type",input:c.value,inst:a}),c}}),cc=P("$ZodStringFormat",(a,b)=>{bZ.init(a,b),cb.init(a,b)}),cd=P("$ZodGUID",(a,b)=>{b.pattern??(b.pattern=bd),cc.init(a,b)}),ce=P("$ZodUUID",(a,b)=>{if(b.version){let a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[b.version];if(void 0===a)throw Error(`Invalid UUID version: "${b.version}"`);b.pattern??(b.pattern=be(a))}else b.pattern??(b.pattern=be());cc.init(a,b)}),cf=P("$ZodEmail",(a,b)=>{b.pattern??(b.pattern=bi),cc.init(a,b)}),cg=P("$ZodURL",(a,b)=>{cc.init(a,b),a._zod.check=c=>{try{let d=c.value,e=new URL(d),f=e.href;b.hostname&&(b.hostname.lastIndex=0,b.hostname.test(e.hostname)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:bv.source,input:c.value,inst:a,continue:!b.abort})),b.protocol&&(b.protocol.lastIndex=0,b.protocol.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:b.protocol.source,input:c.value,inst:a,continue:!b.abort})),!d.endsWith("/")&&f.endsWith("/")?c.value=f.slice(0,-1):c.value=f;return}catch{c.issues.push({code:"invalid_format",format:"url",input:c.value,inst:a,continue:!b.abort})}}}),ch=P("$ZodEmoji",(a,b)=>{b.pattern??(b.pattern=bo()),cc.init(a,b)}),ci=P("$ZodNanoID",(a,b)=>{b.pattern??(b.pattern=ba),cc.init(a,b)}),cj=P("$ZodCUID",(a,b)=>{b.pattern??(b.pattern=a5),cc.init(a,b)}),ck=P("$ZodCUID2",(a,b)=>{b.pattern??(b.pattern=a6),cc.init(a,b)}),cl=P("$ZodULID",(a,b)=>{b.pattern??(b.pattern=a7),cc.init(a,b)}),cm=P("$ZodXID",(a,b)=>{b.pattern??(b.pattern=a8),cc.init(a,b)}),cn=P("$ZodKSUID",(a,b)=>{b.pattern??(b.pattern=a9),cc.init(a,b)}),co=P("$ZodISODateTime",(a,b)=>{b.pattern??(b.pattern=bC(b)),cc.init(a,b)}),cp=P("$ZodISODate",(a,b)=>{b.pattern??(b.pattern=bz),cc.init(a,b)}),cq=P("$ZodISOTime",(a,b)=>{b.pattern??(b.pattern=bB(b)),cc.init(a,b)}),cr=P("$ZodISODuration",(a,b)=>{b.pattern??(b.pattern=bb),cc.init(a,b)}),cs=P("$ZodIPv4",(a,b)=>{b.pattern??(b.pattern=bp),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.format="ipv4"})}),ct=P("$ZodIPv6",(a,b)=>{b.pattern??(b.pattern=bq),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.format="ipv6"}),a._zod.check=c=>{try{new URL(`http://[${c.value}]`)}catch{c.issues.push({code:"invalid_format",format:"ipv6",input:c.value,inst:a,continue:!b.abort})}}}),cu=P("$ZodCIDRv4",(a,b)=>{b.pattern??(b.pattern=br),cc.init(a,b)}),cv=P("$ZodCIDRv6",(a,b)=>{b.pattern??(b.pattern=bs),cc.init(a,b),a._zod.check=c=>{let[d,e]=c.value.split("/");try{if(!e)throw Error();let a=Number(e);if(`${a}`!==e||a<0||a>128)throw Error();new URL(`http://[${d}]`)}catch{c.issues.push({code:"invalid_format",format:"cidrv6",input:c.value,inst:a,continue:!b.abort})}}});function cw(a){if(""===a)return!0;if(a.length%4!=0)return!1;try{return atob(a),!0}catch{return!1}}var cx=P("$ZodBase64",(a,b)=>{b.pattern??(b.pattern=bt),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.contentEncoding="base64"}),a._zod.check=c=>{cw(c.value)||c.issues.push({code:"invalid_format",format:"base64",input:c.value,inst:a,continue:!b.abort})}});function cy(a){if(!bu.test(a))return!1;let b=a.replace(/[-_]/g,a=>"-"===a?"+":"/");return cw(b.padEnd(4*Math.ceil(b.length/4),"="))}var cz=P("$ZodBase64URL",(a,b)=>{b.pattern??(b.pattern=bu),cc.init(a,b),a._zod.onattach.push(a=>{a._zod.bag.contentEncoding="base64url"}),a._zod.check=c=>{cy(c.value)||c.issues.push({code:"invalid_format",format:"base64url",input:c.value,inst:a,continue:!b.abort})}}),cA=P("$ZodE164",(a,b)=>{b.pattern??(b.pattern=bx),cc.init(a,b)});function cB(a,b=null){try{let c=a.split(".");if(3!==c.length)return!1;let[d]=c;if(!d)return!1;let e=JSON.parse(atob(d));return!("typ"in e&&e?.typ!=="JWT"||!e.alg||b&&(!("alg"in e)||e.alg!==b))}catch{return!1}}var cC=P("$ZodJWT",(a,b)=>{cc.init(a,b),a._zod.check=c=>{cB(c.value,b.alg)||c.issues.push({code:"invalid_format",format:"jwt",input:c.value,inst:a,continue:!b.abort})}}),cD=P("$ZodCustomStringFormat",(a,b)=>{cc.init(a,b),a._zod.check=c=>{b.fn(c.value)||c.issues.push({code:"invalid_format",format:b.format,input:c.value,inst:a,continue:!b.abort})}}),cE=P("$ZodNumber",(a,b)=>{ca.init(a,b),a._zod.pattern=a._zod.bag.pattern??bG,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=Number(c.value)}catch{}let e=c.value;if("number"==typeof e&&!Number.isNaN(e)&&Number.isFinite(e))return c;let f="number"==typeof e?Number.isNaN(e)?"NaN":Number.isFinite(e)?void 0:"Infinity":void 0;return c.issues.push({expected:"number",code:"invalid_type",input:e,inst:a,...f?{received:f}:{}}),c}}),cF=P("$ZodNumber",(a,b)=>{bR.init(a,b),cE.init(a,b)}),cG=P("$ZodBoolean",(a,b)=>{ca.init(a,b),a._zod.pattern=bH,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=!!c.value}catch{}let e=c.value;return"boolean"==typeof e||c.issues.push({expected:"boolean",code:"invalid_type",input:e,inst:a}),c}}),cH=P("$ZodBigInt",(a,b)=>{ca.init(a,b),a._zod.pattern=bE,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=BigInt(c.value)}catch{}return"bigint"==typeof c.value||c.issues.push({expected:"bigint",code:"invalid_type",input:c.value,inst:a}),c}}),cI=P("$ZodBigInt",(a,b)=>{bS.init(a,b),cH.init(a,b)}),cJ=P("$ZodSymbol",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>{let d=b.value;return"symbol"==typeof d||b.issues.push({expected:"symbol",code:"invalid_type",input:d,inst:a}),b}}),cK=P("$ZodUndefined",(a,b)=>{ca.init(a,b),a._zod.pattern=bJ,a._zod.values=new Set([void 0]),a._zod.optin="optional",a._zod.optout="optional",a._zod.parse=(b,c)=>{let d=b.value;return typeof d>"u"||b.issues.push({expected:"undefined",code:"invalid_type",input:d,inst:a}),b}}),cL=P("$ZodNull",(a,b)=>{ca.init(a,b),a._zod.pattern=bI,a._zod.values=new Set([null]),a._zod.parse=(b,c)=>{let d=b.value;return null===d||b.issues.push({expected:"null",code:"invalid_type",input:d,inst:a}),b}}),cM=P("$ZodAny",(a,b)=>{ca.init(a,b),a._zod.parse=a=>a}),cN=P("$ZodUnknown",(a,b)=>{ca.init(a,b),a._zod.parse=a=>a}),cO=P("$ZodNever",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>(b.issues.push({expected:"never",code:"invalid_type",input:b.value,inst:a}),b)}),cP=P("$ZodVoid",(a,b)=>{ca.init(a,b),a._zod.parse=(b,c)=>{let d=b.value;return typeof d>"u"||b.issues.push({expected:"void",code:"invalid_type",input:d,inst:a}),b}}),cQ=P("$ZodDate",(a,b)=>{ca.init(a,b),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=new Date(c.value)}catch{}let e=c.value,f=e instanceof Date;return f&&!Number.isNaN(e.getTime())||c.issues.push({expected:"date",code:"invalid_type",input:e,...f?{received:"Invalid Date"}:{},inst:a}),c}});function cR(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues)),b.value[c]=a.value}var cS=P("$ZodArray",(a,b)=>{ca.init(a,b),a._zod.parse=(c,d)=>{let e=c.value;if(!Array.isArray(e))return c.issues.push({expected:"array",code:"invalid_type",input:e,inst:a}),c;c.value=Array(e.length);let f=[];for(let a=0;a<e.length;a++){let g=e[a],h=b.element._zod.run({value:g,issues:[]},d);h instanceof Promise?f.push(h.then(b=>cR(b,c,a))):cR(h,c,a)}return f.length?Promise.all(f).then(()=>c):c}});function cT(a,b,c){a.issues.length&&b.issues.push(...aI(c,a.issues)),b.value[c]=a.value}function cU(a,b,c,d){a.issues.length?void 0===d[c]?c in d?b.value[c]=void 0:b.value[c]=a.value:b.issues.push(...aI(c,a.issues)):void 0===a.value?c in d&&(b.value[c]=void 0):b.value[c]=a.value}var cV=P("$ZodObject",(a,b)=>{ca.init(a,b);let c=ab(()=>{let a=Object.keys(b.shape);for(let c of a)if(!(b.shape[c]instanceof ca))throw Error(`Invalid element at key "${c}": expected a Zod schema`);let c=ay(b.shape);return{shape:b.shape,keys:a,keySet:new Set(a),numKeys:a.length,optionalKeys:new Set(c)}});af(a._zod,"propValues",()=>{let a=b.shape,c={};for(let b in a){let d=a[b]._zod;if(d.values)for(let a of(c[b]??(c[b]=new Set),d.values))c[b].add(a)}return c});let d,e=!S.jitless,f=e&&an.value,g=b.catchall,h;a._zod.parse=(i,j)=>{h??(h=c.value);let k=i.value;if(!am(k))return i.issues.push({expected:"object",code:"invalid_type",input:k,inst:a}),i;let l=[];if(e&&f&&j?.async===!1&&!0!==j.jitless)d||(d=(a=>{let b=new b8(["shape","payload","ctx"]),d=c.value,e=a=>{let b=ak(a);return`shape[${b}]._zod.run({ value: input[${b}], issues: [] }, ctx)`};b.write("const input = payload.value;");let f=Object.create(null),g=0;for(let a of d.keys)f[a]=`key_${g++}`;for(let a of(b.write("const newResult = {}"),d.keys))if(d.optionalKeys.has(a)){let c=f[a];b.write(`const ${c} = ${e(a)};`);let d=ak(a);b.write(`