@xopcai/xopc 0.0.6 → 0.0.8

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 (291) hide show
  1. package/dist/extensions/telegram/src/plugin.js +1 -1
  2. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  3. package/dist/extensions/weixin/src/api/api.js +1 -1
  4. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  5. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  6. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  7. package/dist/extensions/weixin/src/plugin.js +1 -1
  8. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BSNzJWbQ.js} +2 -2
  9. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js.map → agents-BSNzJWbQ.js.map} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-BKk9SB4D.js} +2 -2
  11. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-BKk9SB4D.js.map} +1 -1
  12. package/dist/gateway/static/root/assets/attachment-load-DXcJLSWT.js +1 -0
  13. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-_J6cQN6G.js} +2 -2
  14. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-_J6cQN6G.js.map} +1 -1
  15. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-DPb_0O8M.js} +2 -2
  16. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-DPb_0O8M.js.map} +1 -1
  17. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-BUJOuuKX.js} +2 -2
  18. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-BUJOuuKX.js.map} +1 -1
  19. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Cn0YVg8x.js} +2 -2
  20. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Cn0YVg8x.js.map} +1 -1
  21. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js +2 -0
  22. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js.map +1 -0
  23. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-DTz4O5Ua.js} +2 -2
  24. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-DTz4O5Ua.js.map} +1 -1
  25. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-Cs1Kde9o.js} +2 -2
  26. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-Cs1Kde9o.js.map} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-G52iX0Bo.js} +2 -2
  28. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-G52iX0Bo.js.map} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-CO2jxBA9.js} +2 -2
  30. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-CO2jxBA9.js.map} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-D9Ul8uSt.js} +2 -2
  32. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-D9Ul8uSt.js.map} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Bc8SVD15.js} +2 -2
  34. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Bc8SVD15.js.map} +1 -1
  35. package/dist/gateway/static/root/assets/index-BXUJbteW.js +16 -0
  36. package/dist/gateway/static/root/assets/index-BXUJbteW.js.map +1 -0
  37. package/dist/gateway/static/root/assets/index-CQLMxWSA.css +2 -0
  38. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-5V25JkQY.js} +2 -2
  39. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-5V25JkQY.js.map} +1 -1
  40. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-he3aQfme.js} +2 -2
  41. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-he3aQfme.js.map} +1 -1
  42. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
  43. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
  44. package/dist/gateway/static/root/assets/page-header-store-DJHD9Ean.js +2 -0
  45. package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-DJHD9Ean.js.map} +1 -1
  46. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-n-4O5d9U.js} +2 -2
  47. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-n-4O5d9U.js.map} +1 -1
  48. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-B6dHLvbr.js} +3 -3
  49. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-B6dHLvbr.js.map} +1 -1
  50. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-rBUfTdm3.js} +2 -2
  51. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-rBUfTdm3.js.map} +1 -1
  52. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js +2 -0
  53. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js.map +1 -0
  54. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-vxtE8kI6.js} +2 -2
  55. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-vxtE8kI6.js.map} +1 -1
  56. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-D36_O2Ub.js} +2 -2
  57. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-D36_O2Ub.js.map} +1 -1
  58. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CmiSsYBd.js} +2 -2
  59. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CmiSsYBd.js.map} +1 -1
  60. package/dist/gateway/static/root/assets/url-CtSqjF9J.js +2 -0
  61. package/dist/gateway/static/root/assets/url-CtSqjF9J.js.map +1 -0
  62. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-DYORQ7x6.js} +2 -2
  63. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-DYORQ7x6.js.map} +1 -1
  64. package/dist/gateway/static/root/index.html +16 -16
  65. package/dist/package.js +1 -1
  66. package/dist/src/agent/agent-manager.js +4 -4
  67. package/dist/src/agent/context/workspace-seed.js +2 -2
  68. package/dist/src/agent/image/index.d.ts +0 -1
  69. package/dist/src/agent/image/index.js +1 -2
  70. package/dist/src/agent/ipc/bus.js +1 -1
  71. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  72. package/dist/src/agent/models/manager.js +1 -1
  73. package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
  74. package/dist/src/agent/service.js +3 -3
  75. package/dist/src/agent/skills/hub-hash.js +1 -1
  76. package/dist/src/agent/skills/hub-pull.js +1 -1
  77. package/dist/src/agent/skills/index.js +1 -1
  78. package/dist/src/agent/skills/skill-manager.js +1 -1
  79. package/dist/src/agent/tools/browser/tools.js +2 -2
  80. package/dist/src/agent/tools/browser/tools.js.map +1 -1
  81. package/dist/src/agent/tools/factory.js +1 -1
  82. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  83. package/dist/src/agent/tools/image-tool.js +2 -2
  84. package/dist/src/agent/tools/image-tool.js.map +1 -1
  85. package/dist/src/agent/tools/index.d.ts +1 -1
  86. package/dist/src/agent/tools/index.js +2 -2
  87. package/dist/src/agent/tools/read.d.ts +0 -2
  88. package/dist/src/agent/tools/read.js +1 -3
  89. package/dist/src/agent/tools/read.js.map +1 -1
  90. package/dist/src/agent/tools/send-media.js +1 -1
  91. package/dist/src/auth/sync-provider-auth.js +1 -1
  92. package/dist/src/channels/plugin-types.d.ts +14 -0
  93. package/dist/src/cli/commands/agent.js +1 -1
  94. package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
  95. package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
  96. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
  97. package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
  98. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
  99. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
  100. package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
  101. package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
  102. package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
  103. package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
  104. package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
  105. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
  106. package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
  107. package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
  108. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
  109. package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
  110. package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
  111. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
  112. package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
  113. package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
  114. package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
  115. package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
  116. package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
  117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
  118. package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
  119. package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
  120. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
  121. package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
  122. package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
  123. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
  124. package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
  125. package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
  126. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
  127. package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
  128. package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
  129. package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
  130. package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
  131. package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
  132. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
  133. package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
  134. package/dist/src/cli/commands/doctor/flow.js +51 -0
  135. package/dist/src/cli/commands/doctor/flow.js.map +1 -0
  136. package/dist/src/cli/commands/doctor/format.d.ts +6 -0
  137. package/dist/src/cli/commands/doctor/format.js +61 -0
  138. package/dist/src/cli/commands/doctor/format.js.map +1 -0
  139. package/dist/src/cli/commands/doctor/index.js +44 -0
  140. package/dist/src/cli/commands/doctor/index.js.map +1 -0
  141. package/dist/src/cli/commands/doctor/types.d.ts +20 -0
  142. package/dist/src/cli/commands/doctor/types.js +1 -0
  143. package/dist/src/cli/commands/init.js +2 -2
  144. package/dist/src/cli/index.d.ts +1 -1
  145. package/dist/src/cli/index.js +1 -1
  146. package/dist/src/cli/index.js.map +1 -1
  147. package/dist/src/cli/utils/init-workspace.js +1 -1
  148. package/dist/src/config/index.js +3 -3
  149. package/dist/src/config/loader.js +1 -1
  150. package/dist/src/config/models-json.d.ts +15 -15
  151. package/dist/src/config/models-json.js +1 -1
  152. package/dist/src/config/profile.js +1 -1
  153. package/dist/src/config/schema.d.ts +0 -105
  154. package/dist/src/config/schema.js +3 -40
  155. package/dist/src/config/schema.js.map +1 -1
  156. package/dist/src/cron/executor.js +2 -2
  157. package/dist/src/daemon/launchd.js +2 -2
  158. package/dist/src/daemon/launchd.js.map +1 -1
  159. package/dist/src/daemon/systemd.js +2 -2
  160. package/dist/src/daemon/systemd.js.map +1 -1
  161. package/dist/src/extensions/loader.js +1 -1
  162. package/dist/src/gateway/agents-admin.js +1 -1
  163. package/dist/src/gateway/hono/lib/static-ui.js +1 -1
  164. package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
  165. package/dist/src/gateway/hono/routes/doctor.js +35 -0
  166. package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
  167. package/dist/src/gateway/hono/routes/index.js +2 -0
  168. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  169. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  170. package/dist/src/gateway/hono/sse.js +2 -2
  171. package/dist/src/gateway/lock.js +1 -1
  172. package/dist/src/gateway/ports.js +98 -3
  173. package/dist/src/gateway/ports.js.map +1 -1
  174. package/dist/src/gateway/service.d.ts +0 -4
  175. package/dist/src/gateway/service.js +4 -23
  176. package/dist/src/gateway/service.js.map +1 -1
  177. package/dist/src/routing/bindings.js +1 -1
  178. package/dist/src/routing/index.d.ts +1 -1
  179. package/dist/src/routing/index.js +2 -2
  180. package/dist/src/routing/index.js.map +1 -1
  181. package/dist/src/routing/resolve-route.js +1 -1
  182. package/dist/src/routing/session-key.d.ts +0 -5
  183. package/dist/src/routing/session-key.js +1 -27
  184. package/dist/src/routing/session-key.js.map +1 -1
  185. package/dist/src/session/session-title.js +1 -1
  186. package/dist/src/session/store.js +2 -6
  187. package/dist/src/session/store.js.map +1 -1
  188. package/dist/src/session/types.d.ts +0 -10
  189. package/dist/src/session/types.js.map +1 -1
  190. package/package.json +1 -2
  191. package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
  192. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
  193. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
  194. package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
  195. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
  196. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
  197. package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
  198. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
  199. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
  200. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
  201. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
  202. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
  203. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
  204. package/dist/src/acp/commands.d.ts +0 -11
  205. package/dist/src/acp/commands.js +0 -17
  206. package/dist/src/acp/commands.js.map +0 -1
  207. package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
  208. package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
  209. package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
  210. package/dist/src/acp/control-plane/index.d.ts +0 -10
  211. package/dist/src/acp/control-plane/index.js +0 -6
  212. package/dist/src/acp/control-plane/manager.d.ts +0 -86
  213. package/dist/src/acp/control-plane/manager.js +0 -502
  214. package/dist/src/acp/control-plane/manager.js.map +0 -1
  215. package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
  216. package/dist/src/acp/control-plane/manager.types.js +0 -14
  217. package/dist/src/acp/control-plane/manager.types.js.map +0 -1
  218. package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
  219. package/dist/src/acp/control-plane/manager.utils.js +0 -46
  220. package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
  221. package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
  222. package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
  223. package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
  224. package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
  225. package/dist/src/acp/control-plane/runtime-cache.js +0 -58
  226. package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
  227. package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
  228. package/dist/src/acp/control-plane/runtime-options.js +0 -92
  229. package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
  230. package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
  231. package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
  232. package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
  233. package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
  234. package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
  235. package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
  236. package/dist/src/acp/control-plane/session-store.d.ts +0 -39
  237. package/dist/src/acp/control-plane/session-store.js +0 -149
  238. package/dist/src/acp/control-plane/session-store.js.map +0 -1
  239. package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
  240. package/dist/src/acp/control-plane/turn-manager.js +0 -134
  241. package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
  242. package/dist/src/acp/event-mapper.d.ts +0 -48
  243. package/dist/src/acp/event-mapper.js +0 -94
  244. package/dist/src/acp/event-mapper.js.map +0 -1
  245. package/dist/src/acp/index.d.ts +0 -10
  246. package/dist/src/acp/index.js +0 -5
  247. package/dist/src/acp/meta.d.ts +0 -15
  248. package/dist/src/acp/meta.js +0 -36
  249. package/dist/src/acp/meta.js.map +0 -1
  250. package/dist/src/acp/routing-integration.d.ts +0 -37
  251. package/dist/src/acp/routing-integration.js +0 -58
  252. package/dist/src/acp/routing-integration.js.map +0 -1
  253. package/dist/src/acp/runtime/backends/index.d.ts +0 -4
  254. package/dist/src/acp/runtime/backends/index.js +0 -2
  255. package/dist/src/acp/runtime/backends/local.d.ts +0 -136
  256. package/dist/src/acp/runtime/backends/local.js +0 -603
  257. package/dist/src/acp/runtime/backends/local.js.map +0 -1
  258. package/dist/src/acp/runtime/error-text.d.ts +0 -16
  259. package/dist/src/acp/runtime/error-text.js +0 -40
  260. package/dist/src/acp/runtime/error-text.js.map +0 -1
  261. package/dist/src/acp/runtime/errors.d.ts +0 -31
  262. package/dist/src/acp/runtime/errors.js +0 -47
  263. package/dist/src/acp/runtime/errors.js.map +0 -1
  264. package/dist/src/acp/runtime/index.d.ts +0 -7
  265. package/dist/src/acp/runtime/index.js +0 -4
  266. package/dist/src/acp/runtime/registry.d.ts +0 -35
  267. package/dist/src/acp/runtime/registry.js +0 -85
  268. package/dist/src/acp/runtime/registry.js.map +0 -1
  269. package/dist/src/acp/runtime/session-identity.d.ts +0 -35
  270. package/dist/src/acp/runtime/session-identity.js +0 -134
  271. package/dist/src/acp/runtime/session-identity.js.map +0 -1
  272. package/dist/src/acp/runtime/types.d.ts +0 -214
  273. package/dist/src/acp/secret-file.d.ts +0 -7
  274. package/dist/src/acp/secret-file.js +0 -19
  275. package/dist/src/acp/secret-file.js.map +0 -1
  276. package/dist/src/acp/server.d.ts +0 -48
  277. package/dist/src/acp/server.js +0 -300
  278. package/dist/src/acp/server.js.map +0 -1
  279. package/dist/src/acp/session.d.ts +0 -29
  280. package/dist/src/acp/session.js +0 -30
  281. package/dist/src/acp/session.js.map +0 -1
  282. package/dist/src/acp/types.d.ts +0 -39
  283. package/dist/src/acp/types.js +0 -13
  284. package/dist/src/acp/types.js.map +0 -1
  285. package/dist/src/agent/image/describe-images.d.ts +0 -18
  286. package/dist/src/agent/image/describe-images.js +0 -19
  287. package/dist/src/agent/image/describe-images.js.map +0 -1
  288. package/dist/src/cli/commands/acp.d.ts +0 -4
  289. package/dist/src/cli/commands/acp.js +0 -200
  290. package/dist/src/cli/commands/acp.js.map +0 -1
  291. /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
@@ -1,2 +1,2 @@
1
- import{n as e,o as t,t as n}from"./url-QmwQTJ-j.js";import{r}from"./cn-DPF56z7S.js";var i=r(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),a=r(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),o=r(`file-type`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M11 18h2`,key:`12mj7e`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5`,key:`qbrxap`}]]),s=r(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),c=r(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),l=r(`presentation`,[[`path`,{d:`M2 3h20`,key:`91anmk`}],[`path`,{d:`M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3`,key:`2k9sn8`}],[`path`,{d:`m7 21 5-5 5 5`,key:`bip4we`}]]),u=r(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]);async function d(e){let t=await e.json().catch(()=>({}));if(typeof t.error==`string`)return t.error;if(t.error&&typeof t.error==`object`&&`message`in t.error){let e=t.error.message;if(typeof e==`string`)return e}return`HTTP ${e.status}`}async function f(){let t=await e(n(`/api/skills`),{cache:`no-store`});if(!t.ok)throw Error(await d(t));let r=await t.json();if(!r.payload)throw Error(`Invalid response`);return r.payload}async function p(){let t=await e(n(`/api/skills/reload`),{method:`POST`});if(!t.ok)throw Error(await d(t))}async function m(e,r){let i=new FormData;i.append(`file`,e),r.skillId&&i.append(`skillId`,r.skillId),r.overwrite&&i.append(`overwrite`,`true`);let a=t.getState().token,o=new Headers;a&&o.set(`Authorization`,`Bearer ${a}`);let s=await fetch(n(`/api/skills/upload`),{method:`POST`,headers:o,body:i});s.status===401&&t.getState().onUnauthorized();let c=await s.json().catch(()=>({}));if(!s.ok)throw Error(c.error||`HTTP ${s.status}`);if(!c.payload?.skillId)throw Error(`Invalid response`);return c.payload}async function h(t){let r=await e(n(`/api/skills/${encodeURIComponent(t)}`),{method:`DELETE`});if(!r.ok)throw Error(await d(r))}async function g(t,r){let i=await e(n(`/api/skills/enabled`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({skillName:t,enabled:r})});if(!i.ok)throw Error(await d(i))}async function _(t){let r=new URLSearchParams;t.q?.trim()&&r.set(`q`,t.q.trim()),t.page!=null&&r.set(`page`,String(t.page)),t.pageSize!=null&&r.set(`pageSize`,String(t.pageSize)),t.sort&&r.set(`sort`,t.sort);let i=r.toString(),a=await e(n(`/api/skills/marketplace${i?`?${i}`:``}`),{cache:`no-store`});if(!a.ok)throw Error(await d(a));let o=await a.json();if(!o.payload?.items||!o.payload.meta)throw Error(`Invalid response`);return o.payload}async function v(t){let r=await e(n(`/api/skills/marketplace/packages/${encodeURIComponent(t)}`),{cache:`no-store`});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.name)throw Error(`Invalid response`);return i.payload}async function y(t){let r=await e(n(`/api/skills/marketplace/install`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.skillId)throw Error(i.error||`Invalid response`);return i.payload}async function b(t){let r=await e(n(`/api/skills/${encodeURIComponent(t)}/content`),{cache:`no-store`});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.markdown)throw Error(`Invalid response`);return i.payload}export{f as a,p as c,l as d,c as f,i as g,a as h,b as i,m as l,o as m,v as n,y as o,s as p,_ as r,g as s,h as t,u};
2
- //# sourceMappingURL=skill-api-CxbNlOD_.js.map
1
+ import{n as e,o as t,t as n}from"./url-CtSqjF9J.js";import{r}from"./cn-DPF56z7S.js";var i=r(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),a=r(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),o=r(`file-type`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M11 18h2`,key:`12mj7e`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5`,key:`qbrxap`}]]),s=r(`funnel`,[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]]),c=r(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),l=r(`presentation`,[[`path`,{d:`M2 3h20`,key:`91anmk`}],[`path`,{d:`M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3`,key:`2k9sn8`}],[`path`,{d:`m7 21 5-5 5 5`,key:`bip4we`}]]),u=r(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]);async function d(e){let t=await e.json().catch(()=>({}));if(typeof t.error==`string`)return t.error;if(t.error&&typeof t.error==`object`&&`message`in t.error){let e=t.error.message;if(typeof e==`string`)return e}return`HTTP ${e.status}`}async function f(){let t=await e(n(`/api/skills`),{cache:`no-store`});if(!t.ok)throw Error(await d(t));let r=await t.json();if(!r.payload)throw Error(`Invalid response`);return r.payload}async function p(){let t=await e(n(`/api/skills/reload`),{method:`POST`});if(!t.ok)throw Error(await d(t))}async function m(e,r){let i=new FormData;i.append(`file`,e),r.skillId&&i.append(`skillId`,r.skillId),r.overwrite&&i.append(`overwrite`,`true`);let a=t.getState().token,o=new Headers;a&&o.set(`Authorization`,`Bearer ${a}`);let s=await fetch(n(`/api/skills/upload`),{method:`POST`,headers:o,body:i});s.status===401&&t.getState().onUnauthorized();let c=await s.json().catch(()=>({}));if(!s.ok)throw Error(c.error||`HTTP ${s.status}`);if(!c.payload?.skillId)throw Error(`Invalid response`);return c.payload}async function h(t){let r=await e(n(`/api/skills/${encodeURIComponent(t)}`),{method:`DELETE`});if(!r.ok)throw Error(await d(r))}async function g(t,r){let i=await e(n(`/api/skills/enabled`),{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({skillName:t,enabled:r})});if(!i.ok)throw Error(await d(i))}async function _(t){let r=new URLSearchParams;t.q?.trim()&&r.set(`q`,t.q.trim()),t.page!=null&&r.set(`page`,String(t.page)),t.pageSize!=null&&r.set(`pageSize`,String(t.pageSize)),t.sort&&r.set(`sort`,t.sort);let i=r.toString(),a=await e(n(`/api/skills/marketplace${i?`?${i}`:``}`),{cache:`no-store`});if(!a.ok)throw Error(await d(a));let o=await a.json();if(!o.payload?.items||!o.payload.meta)throw Error(`Invalid response`);return o.payload}async function v(t){let r=await e(n(`/api/skills/marketplace/packages/${encodeURIComponent(t)}`),{cache:`no-store`});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.name)throw Error(`Invalid response`);return i.payload}async function y(t){let r=await e(n(`/api/skills/marketplace/install`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.skillId)throw Error(i.error||`Invalid response`);return i.payload}async function b(t){let r=await e(n(`/api/skills/${encodeURIComponent(t)}/content`),{cache:`no-store`});if(!r.ok)throw Error(await d(r));let i=await r.json();if(!i.payload?.markdown)throw Error(`Invalid response`);return i.payload}export{f as a,p as c,l as d,c as f,i as g,a as h,b as i,m as l,o as m,v as n,y as o,s as p,_ as r,g as s,h as t,u};
2
+ //# sourceMappingURL=skill-api-vxtE8kI6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-api-CxbNlOD_.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/file-archive.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/file-type.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/funnel.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/package.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/presentation.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/table-2.js","../../../../../web/src/features/skills/skill-api.ts"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]];\nconst ChevronLeft = createLucideIcon(\"chevron-left\", __iconNode);\n\nexport { __iconNode, ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\",\n key: \"4pqfef\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 12v-1\", key: \"1ej8lb\" }],\n [\"path\", { d: \"M8 18v-2\", key: \"qcmpov\" }],\n [\"path\", { d: \"M8 7V6\", key: \"1nbb54\" }],\n [\"circle\", { cx: \"8\", cy: \"20\", r: \"2\", key: \"ckkr5m\" }]\n];\nconst FileArchive = createLucideIcon(\"file-archive\", __iconNode);\n\nexport { __iconNode, FileArchive as default };\n//# sourceMappingURL=file-archive.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M11 18h2\", key: \"12mj7e\" }],\n [\"path\", { d: \"M12 12v6\", key: \"3ahymv\" }],\n [\"path\", { d: \"M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5\", key: \"qbrxap\" }]\n];\nconst FileType = createLucideIcon(\"file-type\", __iconNode);\n\nexport { __iconNode, FileType as default };\n//# sourceMappingURL=file-type.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n];\nconst Funnel = createLucideIcon(\"funnel\", __iconNode);\n\nexport { __iconNode, Funnel as default };\n//# sourceMappingURL=funnel.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\",\n key: \"1a0edw\"\n }\n ],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }],\n [\"polyline\", { points: \"3.29 7 12 12 20.71 7\", key: \"ousv84\" }],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }]\n];\nconst Package = createLucideIcon(\"package\", __iconNode);\n\nexport { __iconNode, Package as default };\n//# sourceMappingURL=package.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M2 3h20\", key: \"91anmk\" }],\n [\"path\", { d: \"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3\", key: \"2k9sn8\" }],\n [\"path\", { d: \"m7 21 5-5 5 5\", key: \"bip4we\" }]\n];\nconst Presentation = createLucideIcon(\"presentation\", __iconNode);\n\nexport { __iconNode, Presentation as default };\n//# sourceMappingURL=presentation.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\",\n key: \"gugj83\"\n }\n ]\n];\nconst Table2 = createLucideIcon(\"table-2\", __iconNode);\n\nexport { __iconNode, Table2 as default };\n//# sourceMappingURL=table-2.js.map\n","import { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { useGatewayStore } from '@/stores/gateway-store';\n\nimport type {\n MarketplacePackageDetailPayload,\n SkillsMarketplacePayload,\n SkillsPayload,\n} from '@/features/skills/skill.types';\n\nasync function readErrorMessage(res: Response): Promise<string> {\n const j = (await res.json().catch(() => ({}))) as { error?: unknown };\n if (typeof j.error === 'string') return j.error;\n if (j.error && typeof j.error === 'object' && 'message' in j.error) {\n const m = (j.error as { message?: string }).message;\n if (typeof m === 'string') return m;\n }\n return `HTTP ${res.status}`;\n}\n\nexport async function getSkills(): Promise<SkillsPayload> {\n const res = await apiFetch(apiUrl('/api/skills'), { cache: 'no-store' });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: SkillsPayload };\n if (!data.payload) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function reloadSkills(): Promise<void> {\n const res = await apiFetch(apiUrl('/api/skills/reload'), {\n method: 'POST',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function uploadSkillZip(\n file: File,\n opts: { skillId?: string; overwrite?: boolean },\n): Promise<{ skillId: string; path: string }> {\n const form = new FormData();\n form.append('file', file);\n if (opts.skillId) {\n form.append('skillId', opts.skillId);\n }\n if (opts.overwrite) {\n form.append('overwrite', 'true');\n }\n\n const token = useGatewayStore.getState().token;\n const headers = new Headers();\n if (token) {\n headers.set('Authorization', `Bearer ${token}`);\n }\n\n const res = await fetch(apiUrl('/api/skills/upload'), {\n method: 'POST',\n headers,\n body: form,\n });\n\n if (res.status === 401) {\n useGatewayStore.getState().onUnauthorized();\n }\n\n const data = (await res.json().catch(() => ({}))) as {\n ok?: boolean;\n error?: string;\n payload?: { skillId: string; path: string };\n };\n if (!res.ok) {\n throw new Error(data.error || `HTTP ${res.status}`);\n }\n if (!data.payload?.skillId) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function deleteSkill(skillId: string): Promise<void> {\n const res = await apiFetch(apiUrl(`/api/skills/${encodeURIComponent(skillId)}`), {\n method: 'DELETE',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function patchSkillEnabled(skillName: string, enabled: boolean): Promise<void> {\n const res = await apiFetch(apiUrl('/api/skills/enabled'), {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ skillName, enabled }),\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function getMarketplaceSkills(params: {\n q?: string;\n page?: number;\n pageSize?: number;\n sort?: 'downloads' | 'newest';\n}): Promise<SkillsMarketplacePayload> {\n const sp = new URLSearchParams();\n if (params.q?.trim()) sp.set('q', params.q.trim());\n if (params.page != null) sp.set('page', String(params.page));\n if (params.pageSize != null) sp.set('pageSize', String(params.pageSize));\n if (params.sort) sp.set('sort', params.sort);\n const qs = sp.toString();\n const res = await apiFetch(apiUrl(`/api/skills/marketplace${qs ? `?${qs}` : ''}`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: SkillsMarketplacePayload };\n if (!data.payload?.items || !data.payload.meta) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function getMarketplacePackageDetail(\n packageName: string,\n): Promise<MarketplacePackageDetailPayload> {\n const enc = encodeURIComponent(packageName);\n const res = await apiFetch(apiUrl(`/api/skills/marketplace/packages/${enc}`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: MarketplacePackageDetailPayload };\n if (!data.payload?.name) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function installMarketplaceSkill(opts: {\n name: string;\n version?: string;\n overwrite?: boolean;\n}): Promise<{ skillId: string; path: string }> {\n const res = await apiFetch(apiUrl('/api/skills/marketplace/install'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(opts),\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as {\n ok?: boolean;\n error?: string;\n payload?: { skillId: string; path: string };\n };\n if (!data.payload?.skillId) {\n throw new Error(data.error || 'Invalid response');\n }\n return data.payload;\n}\n\nexport async function getSkillMarkdown(skillName: string): Promise<{ name: string; markdown: string }> {\n const res = await apiFetch(apiUrl(`/api/skills/${encodeURIComponent(skillName)}/content`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as {\n ok?: boolean;\n payload?: { name: string; markdown: string };\n };\n if (!data.payload?.markdown) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}
1
+ {"version":3,"file":"skill-api-vxtE8kI6.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/file-archive.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/file-type.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/funnel.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/package.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/presentation.js","../../../../../node_modules/.pnpm/lucide-react@1.8.0_react@19.2.5/node_modules/lucide-react/dist/esm/icons/table-2.js","../../../../../web/src/features/skills/skill-api.ts"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]];\nconst ChevronLeft = createLucideIcon(\"chevron-left\", __iconNode);\n\nexport { __iconNode, ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\",\n key: \"4pqfef\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 12v-1\", key: \"1ej8lb\" }],\n [\"path\", { d: \"M8 18v-2\", key: \"qcmpov\" }],\n [\"path\", { d: \"M8 7V6\", key: \"1nbb54\" }],\n [\"circle\", { cx: \"8\", cy: \"20\", r: \"2\", key: \"ckkr5m\" }]\n];\nconst FileArchive = createLucideIcon(\"file-archive\", __iconNode);\n\nexport { __iconNode, FileArchive as default };\n//# sourceMappingURL=file-archive.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M11 18h2\", key: \"12mj7e\" }],\n [\"path\", { d: \"M12 12v6\", key: \"3ahymv\" }],\n [\"path\", { d: \"M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5\", key: \"qbrxap\" }]\n];\nconst FileType = createLucideIcon(\"file-type\", __iconNode);\n\nexport { __iconNode, FileType as default };\n//# sourceMappingURL=file-type.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n];\nconst Funnel = createLucideIcon(\"funnel\", __iconNode);\n\nexport { __iconNode, Funnel as default };\n//# sourceMappingURL=funnel.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\",\n key: \"1a0edw\"\n }\n ],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }],\n [\"polyline\", { points: \"3.29 7 12 12 20.71 7\", key: \"ousv84\" }],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }]\n];\nconst Package = createLucideIcon(\"package\", __iconNode);\n\nexport { __iconNode, Package as default };\n//# sourceMappingURL=package.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M2 3h20\", key: \"91anmk\" }],\n [\"path\", { d: \"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3\", key: \"2k9sn8\" }],\n [\"path\", { d: \"m7 21 5-5 5 5\", key: \"bip4we\" }]\n];\nconst Presentation = createLucideIcon(\"presentation\", __iconNode);\n\nexport { __iconNode, Presentation as default };\n//# sourceMappingURL=presentation.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\",\n key: \"gugj83\"\n }\n ]\n];\nconst Table2 = createLucideIcon(\"table-2\", __iconNode);\n\nexport { __iconNode, Table2 as default };\n//# sourceMappingURL=table-2.js.map\n","import { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { useGatewayStore } from '@/stores/gateway-store';\n\nimport type {\n MarketplacePackageDetailPayload,\n SkillsMarketplacePayload,\n SkillsPayload,\n} from '@/features/skills/skill.types';\n\nasync function readErrorMessage(res: Response): Promise<string> {\n const j = (await res.json().catch(() => ({}))) as { error?: unknown };\n if (typeof j.error === 'string') return j.error;\n if (j.error && typeof j.error === 'object' && 'message' in j.error) {\n const m = (j.error as { message?: string }).message;\n if (typeof m === 'string') return m;\n }\n return `HTTP ${res.status}`;\n}\n\nexport async function getSkills(): Promise<SkillsPayload> {\n const res = await apiFetch(apiUrl('/api/skills'), { cache: 'no-store' });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: SkillsPayload };\n if (!data.payload) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function reloadSkills(): Promise<void> {\n const res = await apiFetch(apiUrl('/api/skills/reload'), {\n method: 'POST',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function uploadSkillZip(\n file: File,\n opts: { skillId?: string; overwrite?: boolean },\n): Promise<{ skillId: string; path: string }> {\n const form = new FormData();\n form.append('file', file);\n if (opts.skillId) {\n form.append('skillId', opts.skillId);\n }\n if (opts.overwrite) {\n form.append('overwrite', 'true');\n }\n\n const token = useGatewayStore.getState().token;\n const headers = new Headers();\n if (token) {\n headers.set('Authorization', `Bearer ${token}`);\n }\n\n const res = await fetch(apiUrl('/api/skills/upload'), {\n method: 'POST',\n headers,\n body: form,\n });\n\n if (res.status === 401) {\n useGatewayStore.getState().onUnauthorized();\n }\n\n const data = (await res.json().catch(() => ({}))) as {\n ok?: boolean;\n error?: string;\n payload?: { skillId: string; path: string };\n };\n if (!res.ok) {\n throw new Error(data.error || `HTTP ${res.status}`);\n }\n if (!data.payload?.skillId) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function deleteSkill(skillId: string): Promise<void> {\n const res = await apiFetch(apiUrl(`/api/skills/${encodeURIComponent(skillId)}`), {\n method: 'DELETE',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function patchSkillEnabled(skillName: string, enabled: boolean): Promise<void> {\n const res = await apiFetch(apiUrl('/api/skills/enabled'), {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ skillName, enabled }),\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n}\n\nexport async function getMarketplaceSkills(params: {\n q?: string;\n page?: number;\n pageSize?: number;\n sort?: 'downloads' | 'newest';\n}): Promise<SkillsMarketplacePayload> {\n const sp = new URLSearchParams();\n if (params.q?.trim()) sp.set('q', params.q.trim());\n if (params.page != null) sp.set('page', String(params.page));\n if (params.pageSize != null) sp.set('pageSize', String(params.pageSize));\n if (params.sort) sp.set('sort', params.sort);\n const qs = sp.toString();\n const res = await apiFetch(apiUrl(`/api/skills/marketplace${qs ? `?${qs}` : ''}`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: SkillsMarketplacePayload };\n if (!data.payload?.items || !data.payload.meta) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function getMarketplacePackageDetail(\n packageName: string,\n): Promise<MarketplacePackageDetailPayload> {\n const enc = encodeURIComponent(packageName);\n const res = await apiFetch(apiUrl(`/api/skills/marketplace/packages/${enc}`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as { ok?: boolean; payload?: MarketplacePackageDetailPayload };\n if (!data.payload?.name) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n\nexport async function installMarketplaceSkill(opts: {\n name: string;\n version?: string;\n overwrite?: boolean;\n}): Promise<{ skillId: string; path: string }> {\n const res = await apiFetch(apiUrl('/api/skills/marketplace/install'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(opts),\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as {\n ok?: boolean;\n error?: string;\n payload?: { skillId: string; path: string };\n };\n if (!data.payload?.skillId) {\n throw new Error(data.error || 'Invalid response');\n }\n return data.payload;\n}\n\nexport async function getSkillMarkdown(skillName: string): Promise<{ name: string; markdown: string }> {\n const res = await apiFetch(apiUrl(`/api/skills/${encodeURIComponent(skillName)}/content`), {\n cache: 'no-store',\n });\n if (!res.ok) {\n throw new Error(await readErrorMessage(res));\n }\n const data = (await res.json()) as {\n ok?: boolean;\n payload?: { name: string; markdown: string };\n };\n if (!data.payload?.markdown) {\n throw new Error('Invalid response');\n }\n return data.payload;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jszip.min-C2Ne2FfE.js","assets/rolldown-runtime-B1FJdls4.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{i as t,t as n}from"./vendor-react-QAsRxa6t.js";import{l as r,o as i,s as a}from"./url-QmwQTJ-j.js";import{t as ee}from"./preload-helper-DzyYoeor.js";import{c as te,d as ne}from"./chunk-QFMPRPBF-DOYp8d2p.js";import{n as re,t as o}from"./cn-DPF56z7S.js";import{n as s,r as ie,t as c}from"./sparkles-BG1XFBU0.js";import{t as ae}from"./chevron-down-DUplxB5j.js";import{a as oe,c as se,d as l,f as u,g as ce,h as le,i as ue,l as de,m as d,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as f}from"./skill-api-CxbNlOD_.js";import{t as ve}from"./chevron-right-DmT4UtDa.js";import{t as ye}from"./ellipsis-vertical-BJP8MSr5.js";import{t as be}from"./file-text-CVBsYEv2.js";import{t as xe}from"./info-Ccltk00r.js";import{t as Se}from"./plus-CBODkzSX.js";import{t as Ce}from"./refresh-cw-D7hzzeQ5.js";import{t as we}from"./search-DoMetBR0.js";import{t as Te}from"./trash-2-D9v5oysq.js";import{a as Ee,i as De,n as p,o as m,s as h,t as Oe}from"./dist-Db1dcLr9.js";import{t as g}from"./button-CRQ9eQGX.js";import{t as ke}from"./page-header-store-HcRZK5CZ.js";import{t as Ae}from"./markdown-view-BpEqr7_J.js";import{n as _}from"./interaction-C4gx-xSs.js";import{a as je,i as Me,n as v,r as Ne,t as Pe}from"./dist-1vucfpMU.js";var y=e(t(),1),b=n();function Fe(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function Ie(e){let t=e.toLowerCase().replace(/_/g,`-`);return t.includes(`find-skill`)?we:t.includes(`install`)&&(t.includes(`depend`)||t.includes(`dependency`))?u:t.includes(`create-skill`)?c:t===`docx`||t.endsWith(`-docx`)?be:t===`pdf`||t.endsWith(`-pdf`)?d:t===`pptx`||t.includes(`pptx`)?l:t===`xlsx`||t.includes(`xlsx`)?f:t.includes(`markdown`)||t.includes(`md`)?ie:s}function x({name:e,className:t}){let n=Ie(e);return(0,b.jsx)(`div`,{className:o(`flex size-11 shrink-0 items-center justify-center rounded-xl`,`bg-surface-hover/90 shadow-surface ring-1 ring-inset ring-edge/35 dark:bg-surface-active/80 dark:ring-edge/50`,`transition-[transform,box-shadow] duration-200 ease-out group-hover:ring-edge/55 dark:group-hover:ring-edge/65`,`group-hover:-translate-y-px`,t),"aria-hidden":!0,children:(0,b.jsx)(n,{className:`size-[1.35rem] text-fg-muted transition-colors duration-200 group-hover:text-fg`,strokeWidth:1.75})})}var Le=new Set([`builtin`,`user`,`marketplace`]),Re=new Set([`all`,`global`,`workspace`,`extra`]);function ze(e){return{...e,enabled:e.enabled??!0,disableModelInvocation:e.disableModelInvocation??!1}}function Be({checked:e,onChange:t}){return(0,b.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,className:o(`relative h-6 w-10 shrink-0 overflow-hidden rounded-full border border-edge p-0.5`,`transition-[border-color,background-color] duration-200 ease-out`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base`,`active:scale-[0.97] motion-reduce:transition-none motion-reduce:active:scale-100`,e?`bg-accent`:`bg-surface-hover`),onClick:()=>t(!e),children:(0,b.jsx)(`span`,{className:o(`pointer-events-none absolute left-0.5 top-1/2 block size-4 -translate-y-1/2 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55`,`transition-transform duration-200 ease-out motion-reduce:transition-none`,e?`translate-x-5`:`translate-x-0`),"aria-hidden":!0})})}async function Ve(t){let n=t.name.toLowerCase();if(n.endsWith(`.zip`))return t;if(n.endsWith(`skill.md`)){let n=(await ee(async()=>{let{default:t}=await import(`./jszip.min-C2Ne2FfE.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]))).default,r=new n;r.file(`SKILL.md`,await t.arrayBuffer());let i=await r.generateAsync({type:`blob`,compression:`DEFLATE`}),a=t.name.replace(/\.md$/i,``).replace(/\s+/g,`-`)||`skill`;return new File([i],`${a}.zip`,{type:`application/zip`})}throw Error(`invalid`)}var He=6;function Ue(){let e=`animate-pulse motion-reduce:animate-none rounded-md bg-surface-hover dark:bg-surface-active/50`;return(0,b.jsxs)(`div`,{className:`flex items-center gap-4 px-4 py-3.5`,"aria-hidden":!0,children:[(0,b.jsx)(`div`,{className:o(`size-11 shrink-0 rounded-xl`,e)}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,b.jsx)(`div`,{className:o(`h-4 max-w-[10rem]`,e)}),(0,b.jsx)(`div`,{className:o(`h-3 w-full max-w-xl rounded`,e)})]}),(0,b.jsx)(`div`,{className:o(`h-6 w-10 shrink-0 rounded-full`,e)})]})}function S(){let e=r(a(e=>e.language)).skills,t=!!i(e=>e.token),[n,ee]=ne(),[s,ie]=(0,y.useState)([]),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(null),[f,be]=(0,y.useState)(!1),Ie=n.get(`q`)??``,S=n.get(`tab`),We=n.get(`source`),Ge=Le.has(S)?S:`builtin`,Ke=Re.has(We)?We:`all`,[C,qe]=(0,y.useState)(Ie),[w,T]=(0,y.useState)(null),[E,D]=(0,y.useState)(Ge),[O,Je]=(0,y.useState)(Ke),[Ye,k]=(0,y.useState)(!1),[A,j]=(0,y.useState)(null),[Xe,M]=(0,y.useState)(!1),[Ze,N]=(0,y.useState)(!1),[P,F]=(0,y.useState)(null),[Qe,$e]=(0,y.useState)(null),[I,L]=(0,y.useState)({}),[et,R]=(0,y.useState)(!1),[tt,z]=(0,y.useState)(`catalog`),[B,V]=(0,y.useState)(``),[nt,H]=(0,y.useState)(``),[rt,U]=(0,y.useState)(!1),[it,W]=(0,y.useState)(null),[G,at]=(0,y.useState)(`downloads`),[K,ot]=(0,y.useState)(1),[q,st]=(0,y.useState)(!1),[ct,lt]=(0,y.useState)(null),[J,ut]=(0,y.useState)(null),[dt,ft]=(0,y.useState)(null),Y=(0,y.useCallback)(async t=>{let n=t?.silent===!0;n||l(!0),d(null);try{return ie((await oe()).catalog.map(ze)),{ok:!0}}catch(t){let n=t instanceof Error?t.message:e.loadFailed;return d(n),{ok:!1,message:n}}finally{n||l(!1)}},[e.loadFailed]);(0,y.useEffect)(()=>{t&&Y()},[t,Y]),(0,y.useEffect)(()=>{let e=n.get(`q`)??``,t=n.get(`tab`),r=n.get(`source`),i=Le.has(t)?t:`builtin`,a=Re.has(r)?r:`all`;qe(t=>t===e?t:e),D(e=>e===i?e:i),Je(e=>e===a?e:a)},[n]),(0,y.useEffect)(()=>{E===`marketplace`&&ot(1)},[C,G,E]),(0,y.useEffect)(()=>{if(!t||E!==`marketplace`)return;let n=!1;return st(!0),lt(null),he({q:C.trim()||void 0,page:K,pageSize:20,sort:G}).then(e=>{n||ut(e)}).catch(t=>{n||(lt(t instanceof Error?t.message:e.marketplaceLoadFailed),ut(null))}).finally(()=>{n||st(!1)}),()=>{n=!0}},[t,E,K,G,C,e.marketplaceLoadFailed]),(0,y.useEffect)(()=>{let e=new URLSearchParams(n),t=C.trim();t?e.set(`q`,t):e.delete(`q`),E===`builtin`?e.delete(`tab`):e.set(`tab`,E),O===`all`?e.delete(`source`):e.set(`source`,O),e.toString()!==n.toString()&&ee(e,{replace:!0})},[E,n,C,ee,O]);let X=(0,y.useCallback)((e,t,n=5e3)=>{T({kind:e,message:t}),window.setTimeout(()=>T(null),n)},[]),pt=(0,y.useCallback)(async t=>{z(`catalog`),R(!0),V(t.name),H(``),W(null),U(!0);try{let{markdown:e,name:n}=await ue(t.name);H(e),V(n)}catch(t){W(t instanceof Error?t.message:e.detailLoadFailed)}finally{U(!1)}},[e.detailLoadFailed]),mt=(0,y.useCallback)(async t=>{z(`store`),R(!0),V(t),H(``),W(null),U(!0);try{let n=await fe(t);V(n.name);let r=n.readme?.trim();r?H(r):n.description?.trim()?H(`## ${n.name}\n\n${n.description.trim()}`):H(`*${e.marketplaceNoReadme}*`)}catch(t){W(t instanceof Error?t.message:e.detailLoadFailed)}finally{U(!1)}},[e.detailLoadFailed,e.marketplaceNoReadme]),ht=(0,y.useCallback)(async(t,n)=>{$e(t),L(e=>({...e,[t]:n})),T(null);try{return await ge(t,n),await Y({silent:!0}),!0}catch(n){return L(e=>{let{[t]:n,...r}=e;return r}),X(`error`,n instanceof Error?n.message:e.skillToggleFailed),!1}finally{$e(null),L(e=>{let{[t]:n,...r}=e;return r})}},[Y,X,e.skillToggleFailed]),gt=(0,y.useCallback)(async()=>{T(null),l(!0),d(null);try{await se()}catch(t){d(t instanceof Error?t.message:e.reloadFailed),l(!1);return}await Y()},[Y,e.reloadFailed]),_t=(0,y.useMemo)(()=>{let e=s.filter(e=>e.source===`builtin`);return{total:e.length,enabled:e.filter(e=>I[e.name]??e.enabled).length}},[s,I]),vt=(0,y.useMemo)(()=>{let e=s.filter(e=>e.source!==`builtin`);return{total:e.length,enabled:e.filter(e=>I[e.name]??e.enabled).length}},[s,I]),yt=(0,y.useMemo)(()=>B?s.find(e=>e.name===B):void 0,[s,B]),bt=yt==null?!0:I[B]??yt.enabled,xt=(0,y.useMemo)(()=>{let e=C.trim().toLowerCase(),t=s;return E===`builtin`?t=t.filter(e=>e.source===`builtin`):(t=t.filter(e=>e.source!==`builtin`),O!==`all`&&(t=t.filter(e=>e.source===O))),e?t.filter(t=>[t.name,t.description,t.directoryId,t.path,t.source,t.hub?.source,t.hub?.ref].filter(Boolean).join(` `).toLowerCase().includes(e)):t},[s,C,E,O]),St=async t=>{T(null),be(!0),d(null);try{let n;try{n=await Ve(t)}catch{d(e.invalidFile),X(`error`,e.invalidFile);return}await de(n,{overwrite:!0}),await Y(),X(`success`,e.installSuccess),k(!1),j(null),D(`user`)}catch(t){d(t instanceof Error?t.message:e.uploadFailed),X(`error`,t instanceof Error?t.message:e.uploadFailed)}finally{be(!1)}},Ct=()=>{A&&St(A)},wt=e=>{let t=e.target.files?.[0];e.target.value=``,t&&j(t)},Tt=e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.types.includes(`Files`)&&(M(!0),e.dataTransfer.dropEffect=`copy`)},Et=e=>{let t=e.currentTarget,n=e.relatedTarget;n&&t.contains(n)||M(!1)},Dt=e=>{e.preventDefault(),e.stopPropagation(),M(!1);let t=e.dataTransfer?.files?.[0];t&&j(t)},Ot=t=>{switch(t){case`builtin`:return e.source.builtin;case`workspace`:return e.source.workspace;case`global`:return e.source.global;case`extra`:return e.source.extra;default:return t}},kt=async()=>{let t=P;if(N(!1),F(null),t){T(null);try{await _e(t),await Y()}catch(t){d(t instanceof Error?t.message:e.deleteFailed)}}},Z=(0,y.useCallback)(e=>s.some(t=>t.name===e),[s]),At=(0,y.useCallback)(async t=>{let n=Z(t);if(!(n&&!window.confirm(e.marketplaceReinstallConfirm))){T(null),ft(t);try{await pe({name:t,overwrite:n}),await Y({silent:!0}),X(`success`,e.installSuccess),R(!1),D(`user`)}catch(t){X(`error`,t instanceof Error?t.message:e.uploadFailed)}finally{ft(null)}}},[Z,Y,X,e.installSuccess,e.marketplaceReinstallConfirm,e.uploadFailed]),jt=O===`all`?e.filterAll:O===`global`?e.filterGlobal:O===`workspace`?e.filterWorkspace:e.filterExtra,Mt=ke(e=>e.setPageHeader),Q=ke(e=>e.clearPageHeader),{pathname:Nt}=te(),Pt=Nt.startsWith(`/settings/`),$=(0,y.useMemo)(()=>(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2`,children:[(0,b.jsx)(g,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,disabled:c,title:e.reloadRuntime,"aria-label":e.reloadDiskAria,onClick:()=>void gt(),children:(0,b.jsx)(Ce,{className:o(`size-4`,c&&`animate-spin`),strokeWidth:1.75})}),(0,b.jsxs)(`label`,{className:`relative flex min-h-9 min-w-0 max-w-sm cursor-text items-center rounded-pill border border-edge bg-surface-base py-1.5 pl-9 pr-3 shadow-surface dark:bg-surface-hover/40 sm:max-w-md`,children:[(0,b.jsx)(we,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-disabled`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`input`,{type:`text`,role:`searchbox`,enterKeyHint:`search`,value:C,onChange:e=>qe(e.target.value),placeholder:e.searchPlaceholder,autoComplete:`off`,spellCheck:!1,className:`min-w-0 flex-1 appearance-none border-0 bg-transparent py-0.5 text-sm leading-normal text-fg caret-current placeholder:text-fg-disabled focus:border-0 focus:shadow-none focus:outline-none focus:ring-0 focus-visible:outline-none`})]}),(0,b.jsxs)(g,{type:`button`,variant:`primary`,className:`shrink-0 gap-2`,onClick:()=>{j(null),k(!0)},children:[(0,b.jsx)(Se,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),e.installCta]})]}),[c,gt,C,k,j,qe,e.installCta,e.reloadDiskAria,e.reloadRuntime,e.searchPlaceholder]);return(0,y.useLayoutEffect)(()=>!t||Pt?(Q(),()=>Q()):(Mt({startExtra:null,main:null,end:$}),()=>Q()),[Q,t,Pt,Mt,$]),t?(0,b.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto bg-surface-panel`,children:[(0,b.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6 sm:px-8`,children:[w?(0,b.jsx)(`div`,{role:`status`,"aria-live":`polite`,className:o(`rounded-xl border px-3 py-2 text-sm`,w.kind===`success`?`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900/40 dark:bg-emerald-950/40 dark:text-emerald-200`:`border-red-200 bg-red-50 text-red-800 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-200`),children:w.message}):u?(0,b.jsx)(`div`,{className:`rounded-xl border border-edge bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-edge dark:bg-red-950/40 dark:text-red-300`,role:`alert`,children:u}):null,(0,b.jsx)(`header`,{className:`flex flex-col gap-4`,children:(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight text-fg`,children:e.title}),(0,b.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm text-fg-muted`,children:e.tagline})]})}),Pt?(0,b.jsx)(`div`,{className:`flex flex-col gap-3 border-b border-edge-subtle pb-4 dark:border-edge-subtle sm:flex-row sm:flex-wrap sm:items-center sm:justify-end`,children:$}):null,(0,b.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex flex-col gap-3 border-b border-edge-subtle pb-3 sm:flex-row sm:items-center sm:justify-between dark:border-edge-subtle`,children:[(0,b.jsxs)(`div`,{className:`flex gap-1`,role:`tablist`,"aria-label":e.skillsNavAria,children:[(0,b.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`builtin`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`builtin`?`text-fg`:`text-fg-muted hover:text-fg`,E===`builtin`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`builtin`),children:[e.tabBuiltin,(0,b.jsxs)(`span`,{className:`ml-1 tabular-nums text-fg-muted`,children:[`(`,_t.enabled,`/`,_t.total,`)`]})]}),(0,b.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`user`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`user`?`text-fg`:`text-fg-muted hover:text-fg`,E===`user`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`user`),children:[e.tabUser,(0,b.jsxs)(`span`,{className:`ml-1 tabular-nums text-fg-muted`,children:[`(`,vt.enabled,`/`,vt.total,`)`]})]}),(0,b.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`marketplace`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`marketplace`?`text-fg`:`text-fg-muted hover:text-fg`,E===`marketplace`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`marketplace`),children:e.tabMarketplace})]}),(0,b.jsxs)(`div`,{className:o(`flex min-w-0 items-center gap-2`,E===`user`?`flex-nowrap overflow-x-auto pb-0.5 sm:justify-end`:`flex-wrap sm:justify-end`),children:[E===`user`?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`inline-flex h-9 min-h-9 min-w-[9rem] shrink-0 items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,_.transition,_.focusRingPanel),children:[(0,b.jsx)(me,{className:`size-3.5 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{children:jt}),(0,b.jsx)(ae,{className:`size-3.5 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0})]})}),(0,b.jsx)(Ne,{children:(0,b.jsx)(Pe,{className:`z-50 min-w-[10rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:6,align:`end`,children:[`all`,`global`,`workspace`,`extra`].map(t=>(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>Je(t),children:t===`all`?e.filterAll:t===`global`?e.filterGlobal:t===`workspace`?e.filterWorkspace:e.filterExtra},t))})})]}):null,E===`marketplace`?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`inline-flex h-9 min-h-9 min-w-[9rem] shrink-0 items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,_.transition,_.focusRingPanel),children:[(0,b.jsx)(me,{className:`size-3.5 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{children:G===`newest`?e.marketplaceSortNewest:e.marketplaceSortDownloads}),(0,b.jsx)(ae,{className:`size-3.5 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0})]})}),(0,b.jsx)(Ne,{children:(0,b.jsxs)(Pe,{className:`z-50 min-w-[10rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:6,align:`end`,children:[(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>at(`downloads`),children:e.marketplaceSortDownloads}),(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>at(`newest`),children:e.marketplaceSortNewest})]})})]}):null]})]}),E===`marketplace`?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:e.sectionMarketplace}),q?(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,"aria-busy":`true`,"aria-label":e.loading,children:Array.from({length:He},(e,t)=>(0,b.jsx)(Ue,{},t))}):ct?(0,b.jsx)(`div`,{className:`rounded-xl border border-edge bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-edge dark:bg-red-950/40 dark:text-red-300`,role:`alert`,children:ct}):!J||J.items.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.marketplaceEmpty}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,children:J.items.map(t=>{let n=Z(t.name),r=dt===t.name;return(0,b.jsxs)(`article`,{className:o(`group relative flex flex-col gap-3 border-b border-edge-subtle px-4 py-3.5 last:border-b-0 sm:flex-row sm:items-center`,`transition-colors hover:bg-surface-hover/50 dark:hover:bg-surface-hover/25`),children:[(0,b.jsxs)(`button`,{type:`button`,className:o(`flex min-w-0 flex-1 cursor-pointer items-start gap-4 rounded-xl text-left outline-none`,_.focusRingPanel),onClick:()=>void mt(t.name),children:[(0,b.jsx)(x,{name:t.name}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 pr-2`,children:[(0,b.jsx)(`h3`,{className:`text-[15px] font-semibold leading-snug tracking-tight text-fg`,children:t.name}),(0,b.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-sm leading-relaxed text-fg-muted`,title:t.description||void 0,children:t.description||`—`}),(0,b.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1.5 text-[11px] text-fg-subtle`,children:[(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.marketplaceAuthor,`: `,t.author.username]}),(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.marketplaceDownloads,`: `,t.downloads]}),t.latestVersion?(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 font-mono text-[10px] dark:bg-surface-active/50`,children:[e.marketplaceVersion,`: `,t.latestVersion]}):null,n?(0,b.jsx)(`span`,{className:`rounded-md bg-emerald-500/15 px-2 py-0.5 text-emerald-800 dark:text-emerald-200`,children:e.marketplaceInstalled}):null]})]})]}),(0,b.jsx)(`div`,{className:`flex shrink-0 justify-end sm:pl-2`,children:(0,b.jsx)(g,{type:`button`,variant:n?`secondary`:`primary`,className:`min-w-[6.5rem]`,disabled:r||q,onClick:()=>void At(t.name),children:r?e.uploading:n?e.marketplaceReinstall:e.marketplaceInstall})})]},t.id)})}),(0,b.jsxs)(`div`,{className:`flex flex-col items-center justify-between gap-3 sm:flex-row`,children:[(0,b.jsx)(`p`,{className:`text-center text-xs text-fg-muted sm:text-left`,children:Fe(e.marketplacePageStatus,{page:J.meta.page,totalPages:J.meta.totalPages,total:J.meta.total})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(g,{type:`button`,variant:`ghost`,className:`h-9 gap-1 px-2`,disabled:q||K<=1,"aria-label":e.marketplacePagePrev,onClick:()=>ot(e=>Math.max(1,e-1)),children:[(0,b.jsx)(ce,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:e.marketplacePagePrev})]}),(0,b.jsxs)(g,{type:`button`,variant:`ghost`,className:`h-9 gap-1 px-2`,disabled:q||K>=J.meta.totalPages,"aria-label":e.marketplacePageNext,onClick:()=>ot(e=>Math.min(J.meta.totalPages,e+1)),children:[(0,b.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:e.marketplacePageNext}),(0,b.jsx)(ve,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})]})]})]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:E===`builtin`?e.sectionBuiltinList:e.sectionUser}),c?(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,"aria-busy":`true`,"aria-label":e.loading,children:Array.from({length:He},(e,t)=>(0,b.jsx)(Ue,{},t))}):s.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.empty}):xt.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.noSearchResults}):(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,children:xt.map(t=>(0,b.jsxs)(`article`,{className:o(`group relative flex items-center gap-4 border-b border-edge-subtle px-4 py-3.5 last:border-b-0`,`transition-colors hover:bg-surface-hover/50 dark:hover:bg-surface-hover/25`),children:[(0,b.jsxs)(`button`,{type:`button`,className:o(`flex min-w-0 flex-1 cursor-pointer items-center gap-4 rounded-lg text-left outline-none`,_.focusRingPanel),onClick:()=>void pt(t),children:[(0,b.jsx)(x,{name:t.name}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 pr-2`,children:[(0,b.jsx)(`h3`,{className:`text-[15px] font-semibold leading-snug tracking-tight text-fg`,children:t.name}),(0,b.jsx)(`p`,{className:`mt-0.5 truncate text-sm leading-relaxed text-fg-muted`,title:t.description?t.description:void 0,children:t.description||`—`}),E!==`builtin`||t.managed?(0,b.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1.5 text-[11px] text-fg-subtle`,children:[E===`builtin`?null:(0,b.jsx)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:Ot(t.source)}),t.managed?(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.col.managed,`: `,e.yes]}):null,t.hub?(0,b.jsxs)(`span`,{className:`max-w-full truncate rounded-md bg-surface-hover/60 px-2 py-0.5 font-mono text-[10px] dark:bg-surface-active/50`,title:`${t.hub.source}${t.hub.ref?`\nref: ${t.hub.ref}`:``}\nupdated: ${t.hub.updatedAt}`,children:[e.hubRemote,` ·`,` `,t.hub.kind===`git`?e.hubKindGit:e.hubKindArchive,` ·`,` `,t.hub.source.length>48?`${t.hub.source.slice(0,48)}…`:t.hub.source]}):null]}):null]})]}),(0,b.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),role:`presentation`,children:[t.managed?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,className:o(`flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.col.actions,children:(0,b.jsx)(ye,{className:`size-4`,strokeWidth:1.75})})}),(0,b.jsx)(Ne,{children:(0,b.jsx)(Pe,{className:`z-50 min-w-[8rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:4,align:`end`,children:(0,b.jsxs)(v,{className:o(`flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-red-600 outline-none`,`hover:bg-red-50 data-[highlighted]:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/40`),onSelect:()=>{F(t.directoryId),N(!0)},children:[(0,b.jsx)(Te,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),e.delete]})})})]}):null,(0,b.jsx)(Be,{checked:I[t.name]??t.enabled,onChange:e=>void ht(t.name,e)})]})]},`${t.directoryId}-${t.path}`))})]})]})]}),(0,b.jsx)(m,{open:et,onOpenChange:e=>{R(e),e||(z(`catalog`),H(``),W(null),V(``))},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:o(`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] flex max-h-[min(90vh,56rem)] w-[min(100%-2rem,min(92vw,56rem))] -translate-x-1/2 -translate-y-1/2 flex-col`,`rounded-2xl border border-edge bg-surface-panel shadow-float dark:border-edge`),children:[(0,b.jsxs)(`div`,{className:`group flex shrink-0 items-center gap-3 border-b border-edge px-4 py-3`,children:[(0,b.jsx)(x,{name:B||`?`}),(0,b.jsx)(h,{className:`min-w-0 flex-1 truncate text-base font-semibold text-fg`,children:B||`—`}),(0,b.jsx)(Oe,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,className:o(`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.detailCloseAria,children:(0,b.jsx)(re,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0})})})]}),(0,b.jsxs)(`div`,{className:`flex shrink-0 items-start gap-2 border-b border-blue-200/80 bg-blue-50/95 px-4 py-2.5 text-sm text-fg dark:border-blue-900/50 dark:bg-blue-950/45`,children:[(0,b.jsx)(xe,{className:`mt-0.5 size-4 shrink-0 text-blue-600 dark:text-blue-400`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`p`,{className:`leading-relaxed`,children:tt===`store`?e.detailModalBannerStore:e.detailModalBanner})]}),(0,b.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:rt?(0,b.jsxs)(`div`,{className:`space-y-2`,"aria-busy":`true`,children:[(0,b.jsx)(`div`,{className:`h-4 w-2/3 animate-pulse rounded bg-surface-hover`}),(0,b.jsx)(`div`,{className:`h-4 w-full animate-pulse rounded bg-surface-hover`}),(0,b.jsx)(`div`,{className:`h-4 w-5/6 animate-pulse rounded bg-surface-hover`})]}):it?(0,b.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:it}):(0,b.jsx)(`div`,{className:`markdown-content min-w-0`,children:(0,b.jsx)(Ae,{content:nt})})}),(0,b.jsx)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-4 py-3`,children:tt===`store`?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g,{type:`button`,variant:`ghost`,onClick:()=>R(!1),children:e.cancel}),(0,b.jsx)(g,{type:`button`,variant:Z(B)?`secondary`:`primary`,disabled:!B||dt===B,onClick:()=>{B&&At(B)},children:dt===B?e.uploading:Z(B)?e.marketplaceReinstall:e.marketplaceInstall})]}):(0,b.jsx)(g,{type:`button`,variant:`primary`,disabled:!B||Qe===B,onClick:async()=>{B&&await ht(B,!bt)&&R(!1)},children:bt?e.detailModalDisable:e.detailModalEnable})})]})]})}),(0,b.jsx)(m,{open:Ye,onOpenChange:e=>{k(e),e||(j(null),M(!1))},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:o(`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] max-h-[min(100vh-2rem,44rem)] w-[min(100%-2rem,min(92vw,48rem))] -translate-x-1/2 -translate-y-1/2 overflow-y-auto`,`rounded-2xl border border-edge bg-surface-panel p-6 shadow-float dark:border-edge`),children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,b.jsx)(h,{className:`text-base font-semibold text-fg`,children:e.installModalTitle}),(0,b.jsx)(Oe,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.installClose,children:[(0,b.jsx)(re,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`sr-only`,children:e.installClose})]})})]}),(0,b.jsxs)(`label`,{className:o(`mt-4 flex min-h-[11rem] cursor-pointer flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed px-6 py-12 text-center transition-colors`,Xe?`border-accent bg-accent-soft/60 dark:bg-blue-950/40`:`border-edge bg-surface-base dark:bg-surface-hover/30`),onDragLeave:Et,onDragOver:Tt,onDrop:Dt,children:[(0,b.jsx)(`input`,{type:`file`,accept:`.zip,.md,application/zip,text/markdown`,className:`sr-only`,"aria-label":e.installModalDropHint,disabled:f,onChange:wt}),(0,b.jsx)(le,{className:`size-12 text-fg-subtle`,strokeWidth:1.25,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`text-sm text-fg-muted`,children:e.installModalDropHint}),A?(0,b.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:A.name}):null]}),(0,b.jsxs)(`div`,{className:`mt-5 space-y-2`,children:[(0,b.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:e.installModalReqTitle}),(0,b.jsxs)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-fg-muted`,children:[(0,b.jsx)(`li`,{children:e.installModalReq1}),(0,b.jsx)(`li`,{children:e.installModalReq2})]})]}),(0,b.jsx)(`button`,{type:`button`,disabled:!A||f,className:o(`mt-6 flex w-full items-center justify-center rounded-xl py-3 text-sm font-semibold`,`transition-colors`,!A||f?`cursor-not-allowed bg-surface-active text-fg-disabled`:`bg-accent text-white hover:bg-accent-hover`,_.focusRingPanel),onClick:()=>void Ct(),children:f?e.uploading:e.installAction})]})]})}),(0,b.jsx)(m,{open:Ze,onOpenChange:e=>{N(e),e||F(null)},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge`,children:[(0,b.jsx)(h,{className:`text-base font-semibold text-fg`,children:e.deleteTitle}),(0,b.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:P?Fe(e.deleteMessage,{id:P}):``}),(0,b.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,b.jsx)(g,{type:`button`,variant:`secondary`,onClick:()=>N(!1),children:e.cancel}),(0,b.jsx)(g,{type:`button`,variant:`primary`,className:`bg-red-600 hover:bg-red-700`,onClick:()=>void kt(),children:e.deleteConfirm})]})]})]})})]}):(0,b.jsx)(`div`,{className:`mx-auto w-full max-w-app-main px-4 py-16 text-center text-sm text-fg-muted sm:px-8`,children:e.needToken})}export{S as SkillsPage};
3
- //# sourceMappingURL=skills-page-Dd8ZzYJb.js.map
2
+ import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{i as t,t as n}from"./vendor-react-QAsRxa6t.js";import{l as r,o as i,s as a}from"./url-CtSqjF9J.js";import{t as ee}from"./preload-helper-DzyYoeor.js";import{c as te,d as ne}from"./chunk-QFMPRPBF-DOYp8d2p.js";import{n as re,t as o}from"./cn-DPF56z7S.js";import{n as s,r as ie,t as c}from"./sparkles-BG1XFBU0.js";import{t as ae}from"./chevron-down-DUplxB5j.js";import{a as oe,c as se,d as l,f as u,g as ce,h as le,i as ue,l as de,m as d,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as f}from"./skill-api-vxtE8kI6.js";import{t as ve}from"./chevron-right-DmT4UtDa.js";import{t as ye}from"./ellipsis-vertical-BJP8MSr5.js";import{t as be}from"./file-text-CVBsYEv2.js";import{t as xe}from"./info-Ccltk00r.js";import{t as Se}from"./plus-CBODkzSX.js";import{t as Ce}from"./refresh-cw-D7hzzeQ5.js";import{t as we}from"./search-DoMetBR0.js";import{t as Te}from"./trash-2-D9v5oysq.js";import{a as Ee,i as De,n as p,o as m,s as h,t as Oe}from"./dist-Db1dcLr9.js";import{t as g}from"./button-CRQ9eQGX.js";import{t as ke}from"./page-header-store-DJHD9Ean.js";import{t as Ae}from"./markdown-view-BpEqr7_J.js";import{n as _}from"./interaction-C4gx-xSs.js";import{a as je,i as Me,n as v,r as Ne,t as Pe}from"./dist-1vucfpMU.js";var y=e(t(),1),b=n();function Fe(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function Ie(e){let t=e.toLowerCase().replace(/_/g,`-`);return t.includes(`find-skill`)?we:t.includes(`install`)&&(t.includes(`depend`)||t.includes(`dependency`))?u:t.includes(`create-skill`)?c:t===`docx`||t.endsWith(`-docx`)?be:t===`pdf`||t.endsWith(`-pdf`)?d:t===`pptx`||t.includes(`pptx`)?l:t===`xlsx`||t.includes(`xlsx`)?f:t.includes(`markdown`)||t.includes(`md`)?ie:s}function x({name:e,className:t}){let n=Ie(e);return(0,b.jsx)(`div`,{className:o(`flex size-11 shrink-0 items-center justify-center rounded-xl`,`bg-surface-hover/90 shadow-surface ring-1 ring-inset ring-edge/35 dark:bg-surface-active/80 dark:ring-edge/50`,`transition-[transform,box-shadow] duration-200 ease-out group-hover:ring-edge/55 dark:group-hover:ring-edge/65`,`group-hover:-translate-y-px`,t),"aria-hidden":!0,children:(0,b.jsx)(n,{className:`size-[1.35rem] text-fg-muted transition-colors duration-200 group-hover:text-fg`,strokeWidth:1.75})})}var Le=new Set([`builtin`,`user`,`marketplace`]),Re=new Set([`all`,`global`,`workspace`,`extra`]);function ze(e){return{...e,enabled:e.enabled??!0,disableModelInvocation:e.disableModelInvocation??!1}}function Be({checked:e,onChange:t}){return(0,b.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,className:o(`relative h-6 w-10 shrink-0 overflow-hidden rounded-full border border-edge p-0.5`,`transition-[border-color,background-color] duration-200 ease-out`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base`,`active:scale-[0.97] motion-reduce:transition-none motion-reduce:active:scale-100`,e?`bg-accent`:`bg-surface-hover`),onClick:()=>t(!e),children:(0,b.jsx)(`span`,{className:o(`pointer-events-none absolute left-0.5 top-1/2 block size-4 -translate-y-1/2 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55`,`transition-transform duration-200 ease-out motion-reduce:transition-none`,e?`translate-x-5`:`translate-x-0`),"aria-hidden":!0})})}async function Ve(t){let n=t.name.toLowerCase();if(n.endsWith(`.zip`))return t;if(n.endsWith(`skill.md`)){let n=(await ee(async()=>{let{default:t}=await import(`./jszip.min-C2Ne2FfE.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]))).default,r=new n;r.file(`SKILL.md`,await t.arrayBuffer());let i=await r.generateAsync({type:`blob`,compression:`DEFLATE`}),a=t.name.replace(/\.md$/i,``).replace(/\s+/g,`-`)||`skill`;return new File([i],`${a}.zip`,{type:`application/zip`})}throw Error(`invalid`)}var He=6;function Ue(){let e=`animate-pulse motion-reduce:animate-none rounded-md bg-surface-hover dark:bg-surface-active/50`;return(0,b.jsxs)(`div`,{className:`flex items-center gap-4 px-4 py-3.5`,"aria-hidden":!0,children:[(0,b.jsx)(`div`,{className:o(`size-11 shrink-0 rounded-xl`,e)}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,b.jsx)(`div`,{className:o(`h-4 max-w-[10rem]`,e)}),(0,b.jsx)(`div`,{className:o(`h-3 w-full max-w-xl rounded`,e)})]}),(0,b.jsx)(`div`,{className:o(`h-6 w-10 shrink-0 rounded-full`,e)})]})}function S(){let e=r(a(e=>e.language)).skills,t=!!i(e=>e.token),[n,ee]=ne(),[s,ie]=(0,y.useState)([]),[c,l]=(0,y.useState)(!1),[u,d]=(0,y.useState)(null),[f,be]=(0,y.useState)(!1),Ie=n.get(`q`)??``,S=n.get(`tab`),We=n.get(`source`),Ge=Le.has(S)?S:`builtin`,Ke=Re.has(We)?We:`all`,[C,qe]=(0,y.useState)(Ie),[w,T]=(0,y.useState)(null),[E,D]=(0,y.useState)(Ge),[O,Je]=(0,y.useState)(Ke),[Ye,k]=(0,y.useState)(!1),[A,j]=(0,y.useState)(null),[Xe,M]=(0,y.useState)(!1),[Ze,N]=(0,y.useState)(!1),[P,F]=(0,y.useState)(null),[Qe,$e]=(0,y.useState)(null),[I,L]=(0,y.useState)({}),[et,R]=(0,y.useState)(!1),[tt,z]=(0,y.useState)(`catalog`),[B,V]=(0,y.useState)(``),[nt,H]=(0,y.useState)(``),[rt,U]=(0,y.useState)(!1),[it,W]=(0,y.useState)(null),[G,at]=(0,y.useState)(`downloads`),[K,ot]=(0,y.useState)(1),[q,st]=(0,y.useState)(!1),[ct,lt]=(0,y.useState)(null),[J,ut]=(0,y.useState)(null),[dt,ft]=(0,y.useState)(null),Y=(0,y.useCallback)(async t=>{let n=t?.silent===!0;n||l(!0),d(null);try{return ie((await oe()).catalog.map(ze)),{ok:!0}}catch(t){let n=t instanceof Error?t.message:e.loadFailed;return d(n),{ok:!1,message:n}}finally{n||l(!1)}},[e.loadFailed]);(0,y.useEffect)(()=>{t&&Y()},[t,Y]),(0,y.useEffect)(()=>{let e=n.get(`q`)??``,t=n.get(`tab`),r=n.get(`source`),i=Le.has(t)?t:`builtin`,a=Re.has(r)?r:`all`;qe(t=>t===e?t:e),D(e=>e===i?e:i),Je(e=>e===a?e:a)},[n]),(0,y.useEffect)(()=>{E===`marketplace`&&ot(1)},[C,G,E]),(0,y.useEffect)(()=>{if(!t||E!==`marketplace`)return;let n=!1;return st(!0),lt(null),he({q:C.trim()||void 0,page:K,pageSize:20,sort:G}).then(e=>{n||ut(e)}).catch(t=>{n||(lt(t instanceof Error?t.message:e.marketplaceLoadFailed),ut(null))}).finally(()=>{n||st(!1)}),()=>{n=!0}},[t,E,K,G,C,e.marketplaceLoadFailed]),(0,y.useEffect)(()=>{let e=new URLSearchParams(n),t=C.trim();t?e.set(`q`,t):e.delete(`q`),E===`builtin`?e.delete(`tab`):e.set(`tab`,E),O===`all`?e.delete(`source`):e.set(`source`,O),e.toString()!==n.toString()&&ee(e,{replace:!0})},[E,n,C,ee,O]);let X=(0,y.useCallback)((e,t,n=5e3)=>{T({kind:e,message:t}),window.setTimeout(()=>T(null),n)},[]),pt=(0,y.useCallback)(async t=>{z(`catalog`),R(!0),V(t.name),H(``),W(null),U(!0);try{let{markdown:e,name:n}=await ue(t.name);H(e),V(n)}catch(t){W(t instanceof Error?t.message:e.detailLoadFailed)}finally{U(!1)}},[e.detailLoadFailed]),mt=(0,y.useCallback)(async t=>{z(`store`),R(!0),V(t),H(``),W(null),U(!0);try{let n=await fe(t);V(n.name);let r=n.readme?.trim();r?H(r):n.description?.trim()?H(`## ${n.name}\n\n${n.description.trim()}`):H(`*${e.marketplaceNoReadme}*`)}catch(t){W(t instanceof Error?t.message:e.detailLoadFailed)}finally{U(!1)}},[e.detailLoadFailed,e.marketplaceNoReadme]),ht=(0,y.useCallback)(async(t,n)=>{$e(t),L(e=>({...e,[t]:n})),T(null);try{return await ge(t,n),await Y({silent:!0}),!0}catch(n){return L(e=>{let{[t]:n,...r}=e;return r}),X(`error`,n instanceof Error?n.message:e.skillToggleFailed),!1}finally{$e(null),L(e=>{let{[t]:n,...r}=e;return r})}},[Y,X,e.skillToggleFailed]),gt=(0,y.useCallback)(async()=>{T(null),l(!0),d(null);try{await se()}catch(t){d(t instanceof Error?t.message:e.reloadFailed),l(!1);return}await Y()},[Y,e.reloadFailed]),_t=(0,y.useMemo)(()=>{let e=s.filter(e=>e.source===`builtin`);return{total:e.length,enabled:e.filter(e=>I[e.name]??e.enabled).length}},[s,I]),vt=(0,y.useMemo)(()=>{let e=s.filter(e=>e.source!==`builtin`);return{total:e.length,enabled:e.filter(e=>I[e.name]??e.enabled).length}},[s,I]),yt=(0,y.useMemo)(()=>B?s.find(e=>e.name===B):void 0,[s,B]),bt=yt==null?!0:I[B]??yt.enabled,xt=(0,y.useMemo)(()=>{let e=C.trim().toLowerCase(),t=s;return E===`builtin`?t=t.filter(e=>e.source===`builtin`):(t=t.filter(e=>e.source!==`builtin`),O!==`all`&&(t=t.filter(e=>e.source===O))),e?t.filter(t=>[t.name,t.description,t.directoryId,t.path,t.source,t.hub?.source,t.hub?.ref].filter(Boolean).join(` `).toLowerCase().includes(e)):t},[s,C,E,O]),St=async t=>{T(null),be(!0),d(null);try{let n;try{n=await Ve(t)}catch{d(e.invalidFile),X(`error`,e.invalidFile);return}await de(n,{overwrite:!0}),await Y(),X(`success`,e.installSuccess),k(!1),j(null),D(`user`)}catch(t){d(t instanceof Error?t.message:e.uploadFailed),X(`error`,t instanceof Error?t.message:e.uploadFailed)}finally{be(!1)}},Ct=()=>{A&&St(A)},wt=e=>{let t=e.target.files?.[0];e.target.value=``,t&&j(t)},Tt=e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.types.includes(`Files`)&&(M(!0),e.dataTransfer.dropEffect=`copy`)},Et=e=>{let t=e.currentTarget,n=e.relatedTarget;n&&t.contains(n)||M(!1)},Dt=e=>{e.preventDefault(),e.stopPropagation(),M(!1);let t=e.dataTransfer?.files?.[0];t&&j(t)},Ot=t=>{switch(t){case`builtin`:return e.source.builtin;case`workspace`:return e.source.workspace;case`global`:return e.source.global;case`extra`:return e.source.extra;default:return t}},kt=async()=>{let t=P;if(N(!1),F(null),t){T(null);try{await _e(t),await Y()}catch(t){d(t instanceof Error?t.message:e.deleteFailed)}}},Z=(0,y.useCallback)(e=>s.some(t=>t.name===e),[s]),At=(0,y.useCallback)(async t=>{let n=Z(t);if(!(n&&!window.confirm(e.marketplaceReinstallConfirm))){T(null),ft(t);try{await pe({name:t,overwrite:n}),await Y({silent:!0}),X(`success`,e.installSuccess),R(!1),D(`user`)}catch(t){X(`error`,t instanceof Error?t.message:e.uploadFailed)}finally{ft(null)}}},[Z,Y,X,e.installSuccess,e.marketplaceReinstallConfirm,e.uploadFailed]),jt=O===`all`?e.filterAll:O===`global`?e.filterGlobal:O===`workspace`?e.filterWorkspace:e.filterExtra,Mt=ke(e=>e.setPageHeader),Q=ke(e=>e.clearPageHeader),{pathname:Nt}=te(),Pt=Nt.startsWith(`/settings/`),$=(0,y.useMemo)(()=>(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2`,children:[(0,b.jsx)(g,{type:`button`,variant:`ghost`,className:`h-9 w-9 shrink-0 p-0`,disabled:c,title:e.reloadRuntime,"aria-label":e.reloadDiskAria,onClick:()=>void gt(),children:(0,b.jsx)(Ce,{className:o(`size-4`,c&&`animate-spin`),strokeWidth:1.75})}),(0,b.jsxs)(`label`,{className:`relative flex min-h-9 min-w-0 max-w-sm cursor-text items-center rounded-pill border border-edge bg-surface-base py-1.5 pl-9 pr-3 shadow-surface dark:bg-surface-hover/40 sm:max-w-md`,children:[(0,b.jsx)(we,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-disabled`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`input`,{type:`text`,role:`searchbox`,enterKeyHint:`search`,value:C,onChange:e=>qe(e.target.value),placeholder:e.searchPlaceholder,autoComplete:`off`,spellCheck:!1,className:`min-w-0 flex-1 appearance-none border-0 bg-transparent py-0.5 text-sm leading-normal text-fg caret-current placeholder:text-fg-disabled focus:border-0 focus:shadow-none focus:outline-none focus:ring-0 focus-visible:outline-none`})]}),(0,b.jsxs)(g,{type:`button`,variant:`primary`,className:`shrink-0 gap-2`,onClick:()=>{j(null),k(!0)},children:[(0,b.jsx)(Se,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),e.installCta]})]}),[c,gt,C,k,j,qe,e.installCta,e.reloadDiskAria,e.reloadRuntime,e.searchPlaceholder]);return(0,y.useLayoutEffect)(()=>!t||Pt?(Q(),()=>Q()):(Mt({startExtra:null,main:null,end:$}),()=>Q()),[Q,t,Pt,Mt,$]),t?(0,b.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto bg-surface-panel`,children:[(0,b.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6 sm:px-8`,children:[w?(0,b.jsx)(`div`,{role:`status`,"aria-live":`polite`,className:o(`rounded-xl border px-3 py-2 text-sm`,w.kind===`success`?`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900/40 dark:bg-emerald-950/40 dark:text-emerald-200`:`border-red-200 bg-red-50 text-red-800 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-200`),children:w.message}):u?(0,b.jsx)(`div`,{className:`rounded-xl border border-edge bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-edge dark:bg-red-950/40 dark:text-red-300`,role:`alert`,children:u}):null,(0,b.jsx)(`header`,{className:`flex flex-col gap-4`,children:(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight text-fg`,children:e.title}),(0,b.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm text-fg-muted`,children:e.tagline})]})}),Pt?(0,b.jsx)(`div`,{className:`flex flex-col gap-3 border-b border-edge-subtle pb-4 dark:border-edge-subtle sm:flex-row sm:flex-wrap sm:items-center sm:justify-end`,children:$}):null,(0,b.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex flex-col gap-3 border-b border-edge-subtle pb-3 sm:flex-row sm:items-center sm:justify-between dark:border-edge-subtle`,children:[(0,b.jsxs)(`div`,{className:`flex gap-1`,role:`tablist`,"aria-label":e.skillsNavAria,children:[(0,b.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`builtin`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`builtin`?`text-fg`:`text-fg-muted hover:text-fg`,E===`builtin`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`builtin`),children:[e.tabBuiltin,(0,b.jsxs)(`span`,{className:`ml-1 tabular-nums text-fg-muted`,children:[`(`,_t.enabled,`/`,_t.total,`)`]})]}),(0,b.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`user`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`user`?`text-fg`:`text-fg-muted hover:text-fg`,E===`user`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`user`),children:[e.tabUser,(0,b.jsxs)(`span`,{className:`ml-1 tabular-nums text-fg-muted`,children:[`(`,vt.enabled,`/`,vt.total,`)`]})]}),(0,b.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":E===`marketplace`,className:o(`relative rounded-md px-3 py-2 text-sm font-medium transition-colors`,E===`marketplace`?`text-fg`:`text-fg-muted hover:text-fg`,E===`marketplace`&&`after:absolute after:bottom-0 after:left-1/2 after:h-0.5 after:w-9 after:-translate-x-1/2 after:rounded-full after:bg-accent`),onClick:()=>D(`marketplace`),children:e.tabMarketplace})]}),(0,b.jsxs)(`div`,{className:o(`flex min-w-0 items-center gap-2`,E===`user`?`flex-nowrap overflow-x-auto pb-0.5 sm:justify-end`:`flex-wrap sm:justify-end`),children:[E===`user`?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`inline-flex h-9 min-h-9 min-w-[9rem] shrink-0 items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,_.transition,_.focusRingPanel),children:[(0,b.jsx)(me,{className:`size-3.5 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{children:jt}),(0,b.jsx)(ae,{className:`size-3.5 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0})]})}),(0,b.jsx)(Ne,{children:(0,b.jsx)(Pe,{className:`z-50 min-w-[10rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:6,align:`end`,children:[`all`,`global`,`workspace`,`extra`].map(t=>(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>Je(t),children:t===`all`?e.filterAll:t===`global`?e.filterGlobal:t===`workspace`?e.filterWorkspace:e.filterExtra},t))})})]}):null,E===`marketplace`?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`inline-flex h-9 min-h-9 min-w-[9rem] shrink-0 items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,_.transition,_.focusRingPanel),children:[(0,b.jsx)(me,{className:`size-3.5 text-fg-muted`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{children:G===`newest`?e.marketplaceSortNewest:e.marketplaceSortDownloads}),(0,b.jsx)(ae,{className:`size-3.5 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0})]})}),(0,b.jsx)(Ne,{children:(0,b.jsxs)(Pe,{className:`z-50 min-w-[10rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:6,align:`end`,children:[(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>at(`downloads`),children:e.marketplaceSortDownloads}),(0,b.jsx)(v,{className:o(`cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none`,`hover:bg-surface-hover data-[highlighted]:bg-surface-hover`),onSelect:()=>at(`newest`),children:e.marketplaceSortNewest})]})})]}):null]})]}),E===`marketplace`?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:e.sectionMarketplace}),q?(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,"aria-busy":`true`,"aria-label":e.loading,children:Array.from({length:He},(e,t)=>(0,b.jsx)(Ue,{},t))}):ct?(0,b.jsx)(`div`,{className:`rounded-xl border border-edge bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-edge dark:bg-red-950/40 dark:text-red-300`,role:`alert`,children:ct}):!J||J.items.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.marketplaceEmpty}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,children:J.items.map(t=>{let n=Z(t.name),r=dt===t.name;return(0,b.jsxs)(`article`,{className:o(`group relative flex flex-col gap-3 border-b border-edge-subtle px-4 py-3.5 last:border-b-0 sm:flex-row sm:items-center`,`transition-colors hover:bg-surface-hover/50 dark:hover:bg-surface-hover/25`),children:[(0,b.jsxs)(`button`,{type:`button`,className:o(`flex min-w-0 flex-1 cursor-pointer items-start gap-4 rounded-xl text-left outline-none`,_.focusRingPanel),onClick:()=>void mt(t.name),children:[(0,b.jsx)(x,{name:t.name}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 pr-2`,children:[(0,b.jsx)(`h3`,{className:`text-[15px] font-semibold leading-snug tracking-tight text-fg`,children:t.name}),(0,b.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-sm leading-relaxed text-fg-muted`,title:t.description||void 0,children:t.description||`—`}),(0,b.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1.5 text-[11px] text-fg-subtle`,children:[(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.marketplaceAuthor,`: `,t.author.username]}),(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.marketplaceDownloads,`: `,t.downloads]}),t.latestVersion?(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 font-mono text-[10px] dark:bg-surface-active/50`,children:[e.marketplaceVersion,`: `,t.latestVersion]}):null,n?(0,b.jsx)(`span`,{className:`rounded-md bg-emerald-500/15 px-2 py-0.5 text-emerald-800 dark:text-emerald-200`,children:e.marketplaceInstalled}):null]})]})]}),(0,b.jsx)(`div`,{className:`flex shrink-0 justify-end sm:pl-2`,children:(0,b.jsx)(g,{type:`button`,variant:n?`secondary`:`primary`,className:`min-w-[6.5rem]`,disabled:r||q,onClick:()=>void At(t.name),children:r?e.uploading:n?e.marketplaceReinstall:e.marketplaceInstall})})]},t.id)})}),(0,b.jsxs)(`div`,{className:`flex flex-col items-center justify-between gap-3 sm:flex-row`,children:[(0,b.jsx)(`p`,{className:`text-center text-xs text-fg-muted sm:text-left`,children:Fe(e.marketplacePageStatus,{page:J.meta.page,totalPages:J.meta.totalPages,total:J.meta.total})}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(g,{type:`button`,variant:`ghost`,className:`h-9 gap-1 px-2`,disabled:q||K<=1,"aria-label":e.marketplacePagePrev,onClick:()=>ot(e=>Math.max(1,e-1)),children:[(0,b.jsx)(ce,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:e.marketplacePagePrev})]}),(0,b.jsxs)(g,{type:`button`,variant:`ghost`,className:`h-9 gap-1 px-2`,disabled:q||K>=J.meta.totalPages,"aria-label":e.marketplacePageNext,onClick:()=>ot(e=>Math.min(J.meta.totalPages,e+1)),children:[(0,b.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:e.marketplacePageNext}),(0,b.jsx)(ve,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})]})]})]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:E===`builtin`?e.sectionBuiltinList:e.sectionUser}),c?(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,"aria-busy":`true`,"aria-label":e.loading,children:Array.from({length:He},(e,t)=>(0,b.jsx)(Ue,{},t))}):s.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.empty}):xt.length===0?(0,b.jsx)(`div`,{className:`rounded-2xl border border-dashed border-edge py-16 text-center text-sm text-fg-muted`,children:e.noSearchResults}):(0,b.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base dark:border-edge-subtle`,children:xt.map(t=>(0,b.jsxs)(`article`,{className:o(`group relative flex items-center gap-4 border-b border-edge-subtle px-4 py-3.5 last:border-b-0`,`transition-colors hover:bg-surface-hover/50 dark:hover:bg-surface-hover/25`),children:[(0,b.jsxs)(`button`,{type:`button`,className:o(`flex min-w-0 flex-1 cursor-pointer items-center gap-4 rounded-lg text-left outline-none`,_.focusRingPanel),onClick:()=>void pt(t),children:[(0,b.jsx)(x,{name:t.name}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 pr-2`,children:[(0,b.jsx)(`h3`,{className:`text-[15px] font-semibold leading-snug tracking-tight text-fg`,children:t.name}),(0,b.jsx)(`p`,{className:`mt-0.5 truncate text-sm leading-relaxed text-fg-muted`,title:t.description?t.description:void 0,children:t.description||`—`}),E!==`builtin`||t.managed?(0,b.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1.5 text-[11px] text-fg-subtle`,children:[E===`builtin`?null:(0,b.jsx)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:Ot(t.source)}),t.managed?(0,b.jsxs)(`span`,{className:`rounded-md bg-surface-hover/60 px-2 py-0.5 dark:bg-surface-active/50`,children:[e.col.managed,`: `,e.yes]}):null,t.hub?(0,b.jsxs)(`span`,{className:`max-w-full truncate rounded-md bg-surface-hover/60 px-2 py-0.5 font-mono text-[10px] dark:bg-surface-active/50`,title:`${t.hub.source}${t.hub.ref?`\nref: ${t.hub.ref}`:``}\nupdated: ${t.hub.updatedAt}`,children:[e.hubRemote,` ·`,` `,t.hub.kind===`git`?e.hubKindGit:e.hubKindArchive,` ·`,` `,t.hub.source.length>48?`${t.hub.source.slice(0,48)}…`:t.hub.source]}):null]}):null]})]}),(0,b.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),role:`presentation`,children:[t.managed?(0,b.jsxs)(Me,{children:[(0,b.jsx)(je,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,className:o(`flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.col.actions,children:(0,b.jsx)(ye,{className:`size-4`,strokeWidth:1.75})})}),(0,b.jsx)(Ne,{children:(0,b.jsx)(Pe,{className:`z-50 min-w-[8rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge`,sideOffset:4,align:`end`,children:(0,b.jsxs)(v,{className:o(`flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-red-600 outline-none`,`hover:bg-red-50 data-[highlighted]:bg-red-50 dark:text-red-400 dark:hover:bg-red-950/40`),onSelect:()=>{F(t.directoryId),N(!0)},children:[(0,b.jsx)(Te,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),e.delete]})})})]}):null,(0,b.jsx)(Be,{checked:I[t.name]??t.enabled,onChange:e=>void ht(t.name,e)})]})]},`${t.directoryId}-${t.path}`))})]})]})]}),(0,b.jsx)(m,{open:et,onOpenChange:e=>{R(e),e||(z(`catalog`),H(``),W(null),V(``))},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:o(`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] flex max-h-[min(90vh,56rem)] w-[min(100%-2rem,min(92vw,56rem))] -translate-x-1/2 -translate-y-1/2 flex-col`,`rounded-2xl border border-edge bg-surface-panel shadow-float dark:border-edge`),children:[(0,b.jsxs)(`div`,{className:`group flex shrink-0 items-center gap-3 border-b border-edge px-4 py-3`,children:[(0,b.jsx)(x,{name:B||`?`}),(0,b.jsx)(h,{className:`min-w-0 flex-1 truncate text-base font-semibold text-fg`,children:B||`—`}),(0,b.jsx)(Oe,{asChild:!0,children:(0,b.jsx)(`button`,{type:`button`,className:o(`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.detailCloseAria,children:(0,b.jsx)(re,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0})})})]}),(0,b.jsxs)(`div`,{className:`flex shrink-0 items-start gap-2 border-b border-blue-200/80 bg-blue-50/95 px-4 py-2.5 text-sm text-fg dark:border-blue-900/50 dark:bg-blue-950/45`,children:[(0,b.jsx)(xe,{className:`mt-0.5 size-4 shrink-0 text-blue-600 dark:text-blue-400`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`p`,{className:`leading-relaxed`,children:tt===`store`?e.detailModalBannerStore:e.detailModalBanner})]}),(0,b.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-4 py-4`,children:rt?(0,b.jsxs)(`div`,{className:`space-y-2`,"aria-busy":`true`,children:[(0,b.jsx)(`div`,{className:`h-4 w-2/3 animate-pulse rounded bg-surface-hover`}),(0,b.jsx)(`div`,{className:`h-4 w-full animate-pulse rounded bg-surface-hover`}),(0,b.jsx)(`div`,{className:`h-4 w-5/6 animate-pulse rounded bg-surface-hover`})]}):it?(0,b.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:it}):(0,b.jsx)(`div`,{className:`markdown-content min-w-0`,children:(0,b.jsx)(Ae,{content:nt})})}),(0,b.jsx)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-4 py-3`,children:tt===`store`?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g,{type:`button`,variant:`ghost`,onClick:()=>R(!1),children:e.cancel}),(0,b.jsx)(g,{type:`button`,variant:Z(B)?`secondary`:`primary`,disabled:!B||dt===B,onClick:()=>{B&&At(B)},children:dt===B?e.uploading:Z(B)?e.marketplaceReinstall:e.marketplaceInstall})]}):(0,b.jsx)(g,{type:`button`,variant:`primary`,disabled:!B||Qe===B,onClick:async()=>{B&&await ht(B,!bt)&&R(!1)},children:bt?e.detailModalDisable:e.detailModalEnable})})]})]})}),(0,b.jsx)(m,{open:Ye,onOpenChange:e=>{k(e),e||(j(null),M(!1))},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:o(`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] max-h-[min(100vh-2rem,44rem)] w-[min(100%-2rem,min(92vw,48rem))] -translate-x-1/2 -translate-y-1/2 overflow-y-auto`,`rounded-2xl border border-edge bg-surface-panel p-6 shadow-float dark:border-edge`),children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,b.jsx)(h,{className:`text-base font-semibold text-fg`,children:e.installModalTitle}),(0,b.jsx)(Oe,{asChild:!0,children:(0,b.jsxs)(`button`,{type:`button`,className:o(`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg`,_.focusRingPanel),"aria-label":e.installClose,children:[(0,b.jsx)(re,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`sr-only`,children:e.installClose})]})})]}),(0,b.jsxs)(`label`,{className:o(`mt-4 flex min-h-[11rem] cursor-pointer flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed px-6 py-12 text-center transition-colors`,Xe?`border-accent bg-accent-soft/60 dark:bg-blue-950/40`:`border-edge bg-surface-base dark:bg-surface-hover/30`),onDragLeave:Et,onDragOver:Tt,onDrop:Dt,children:[(0,b.jsx)(`input`,{type:`file`,accept:`.zip,.md,application/zip,text/markdown`,className:`sr-only`,"aria-label":e.installModalDropHint,disabled:f,onChange:wt}),(0,b.jsx)(le,{className:`size-12 text-fg-subtle`,strokeWidth:1.25,"aria-hidden":!0}),(0,b.jsx)(`span`,{className:`text-sm text-fg-muted`,children:e.installModalDropHint}),A?(0,b.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:A.name}):null]}),(0,b.jsxs)(`div`,{className:`mt-5 space-y-2`,children:[(0,b.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:e.installModalReqTitle}),(0,b.jsxs)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-fg-muted`,children:[(0,b.jsx)(`li`,{children:e.installModalReq1}),(0,b.jsx)(`li`,{children:e.installModalReq2})]})]}),(0,b.jsx)(`button`,{type:`button`,disabled:!A||f,className:o(`mt-6 flex w-full items-center justify-center rounded-xl py-3 text-sm font-semibold`,`transition-colors`,!A||f?`cursor-not-allowed bg-surface-active text-fg-disabled`:`bg-accent text-white hover:bg-accent-hover`,_.focusRingPanel),onClick:()=>void Ct(),children:f?e.uploading:e.installAction})]})]})}),(0,b.jsx)(m,{open:Ze,onOpenChange:e=>{N(e),e||F(null)},children:(0,b.jsxs)(Ee,{children:[(0,b.jsx)(De,{className:`xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim`}),(0,b.jsxs)(p,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[60] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge`,children:[(0,b.jsx)(h,{className:`text-base font-semibold text-fg`,children:e.deleteTitle}),(0,b.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:P?Fe(e.deleteMessage,{id:P}):``}),(0,b.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,b.jsx)(g,{type:`button`,variant:`secondary`,onClick:()=>N(!1),children:e.cancel}),(0,b.jsx)(g,{type:`button`,variant:`primary`,className:`bg-red-600 hover:bg-red-700`,onClick:()=>void kt(),children:e.deleteConfirm})]})]})]})})]}):(0,b.jsx)(`div`,{className:`mx-auto w-full max-w-app-main px-4 py-16 text-center text-sm text-fg-muted sm:px-8`,children:e.needToken})}export{S as SkillsPage};
3
+ //# sourceMappingURL=skills-page-D36_O2Ub.js.map