coding-tool-x 3.8.3 → 3.8.5

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 (434) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +86 -15
  3. package/dist/web/assets/AgentsDrawer-BG6P3DX-.js +1 -0
  4. package/dist/web/assets/AgentsDrawer-Pw2k-ZAa.css +1 -0
  5. package/dist/web/assets/Analytics--z_FmL5P.js +1 -0
  6. package/dist/web/assets/Analytics-CyHhR126.css +1 -0
  7. package/dist/web/assets/AssetPathField-CrJtRKHy.js +1 -0
  8. package/dist/web/assets/ChatHistoryDrawer-B2qBQs9L.css +1 -0
  9. package/dist/web/assets/ChatHistoryDrawer-BiuEryJj.js +1 -0
  10. package/dist/web/assets/CollapseItem-BAYEsL_Q.js +1 -0
  11. package/dist/web/assets/CommandsDrawer-BZJxlPvV.css +1 -0
  12. package/dist/web/assets/CommandsDrawer-YJ-U7BXN.js +1 -0
  13. package/dist/web/assets/ConfigExportDrawer-Ce_hAknW.js +1 -0
  14. package/dist/web/assets/ConfigExportDrawer-dwruRKWr.css +1 -0
  15. package/dist/web/assets/ConfigTemplates-Bvr1NN6K.js +1 -0
  16. package/dist/web/assets/ConfigTemplatesDrawer-BfDi8yO3.css +1 -0
  17. package/dist/web/assets/ConfigTemplatesDrawer-BjIeHfF-.js +1 -0
  18. package/dist/web/assets/ConfigTemplatesPanel-AV00tm_D.js +1 -0
  19. package/dist/web/assets/ConfigTemplatesPanel-CWyPtk67.css +1 -0
  20. package/dist/web/assets/Divider-D28g1gwj.js +1 -0
  21. package/dist/web/assets/DrawerContent-ChXgZ1Xm.js +1 -0
  22. package/dist/web/assets/FavoritesDrawer-CG9eI9Ay.css +1 -0
  23. package/dist/web/assets/FavoritesDrawer-Cz95o4CD.js +1 -0
  24. package/dist/web/assets/GatewayConvertDrawer-CuNlf7AC.css +1 -0
  25. package/dist/web/assets/GatewayConvertDrawer-DLlbMz27.js +1 -0
  26. package/dist/web/assets/Home-CSuFuJ9Y.css +1 -0
  27. package/dist/web/assets/Home-D7CCOFQC.js +1 -0
  28. package/dist/web/assets/MarkdownEditor-qfVgSre_.css +1 -0
  29. package/dist/web/assets/MarkdownEditor-rEZ-c72L.js +1 -0
  30. package/dist/web/assets/McpDrawer-C0dnsZhQ.css +1 -0
  31. package/dist/web/assets/McpDrawer-DfoCyxU2.js +1 -0
  32. package/dist/web/assets/McpFormDrawer-BRbDcawn.css +1 -0
  33. package/dist/web/assets/McpFormDrawer-SKu8HNUR.js +1 -0
  34. package/dist/web/assets/PluginManager-BbeK-3rV.js +1 -0
  35. package/dist/web/assets/PluginsDrawer-CWVJ7yjS.js +1 -0
  36. package/dist/web/assets/PluginsDrawer-DM3QjprE.css +1 -0
  37. package/dist/web/assets/PluginsPanel-Cm2N3StG.js +1 -0
  38. package/dist/web/assets/PluginsPanel-D6ZqITcR.css +1 -0
  39. package/dist/web/assets/ProjectList-677RLZ8O.css +1 -0
  40. package/dist/web/assets/ProjectList-CsjnsNPv.js +1 -0
  41. package/dist/web/assets/PromptsDrawer-BIgiYCEQ.css +1 -0
  42. package/dist/web/assets/PromptsDrawer-EGd3djFa.js +1 -0
  43. package/dist/web/assets/RecentSessionsDrawer-CKFsOYDM.css +1 -0
  44. package/dist/web/assets/RecentSessionsDrawer-D1vtoLAs.js +1 -0
  45. package/dist/web/assets/SessionCard-BgLg49U3.js +1 -0
  46. package/dist/web/assets/SessionCard-aM2NHu6i.css +1 -0
  47. package/dist/web/assets/SessionList-BpYRz1cX.css +1 -0
  48. package/dist/web/assets/SessionList-TRiTklWk.js +1 -0
  49. package/dist/web/assets/SettingsDrawer-d5liXjHq.css +1 -0
  50. package/dist/web/assets/SettingsDrawer-rz2WejGY.js +1 -0
  51. package/dist/web/assets/SkillManager-BTjTUbHq.js +1 -0
  52. package/dist/web/assets/SkillManager-C0GCT2Kb.css +1 -0
  53. package/dist/web/assets/SkillsDrawer-BCNme-aJ.css +1 -0
  54. package/dist/web/assets/SkillsDrawer-pN0hbkK3.js +1 -0
  55. package/dist/web/assets/SkillsPanel-B3Nm5j32.css +1 -0
  56. package/dist/web/assets/SkillsPanel-gmBWEoiF.js +1 -0
  57. package/dist/web/assets/SpeedTestDrawer-Dc0WToJ_.css +1 -0
  58. package/dist/web/assets/SpeedTestDrawer-DcNzuVJk.js +1 -0
  59. package/dist/web/assets/Upload-v5rV0qTT.js +1 -0
  60. package/dist/web/assets/WorkspaceDrawer-CGnMu9p1.css +1 -0
  61. package/dist/web/assets/WorkspaceDrawer-DxmicM4U.js +1 -0
  62. package/dist/web/assets/WorkspaceManager-CJHCjARN.js +1 -0
  63. package/dist/web/assets/WorkspacePanel-D0-zHTHP.css +1 -0
  64. package/dist/web/assets/WorkspacePanel-D8_Zq-du.js +1 -0
  65. package/dist/web/assets/_plugin-vue_export-helper-BeLZJZij.js +1 -0
  66. package/dist/web/assets/client-UDwXBP9i.js +1 -0
  67. package/dist/web/assets/clipboard-B46yyoz_.js +1 -0
  68. package/dist/web/assets/headers-cf-QapUq.js +1 -0
  69. package/dist/web/assets/icons-B2Vg-IOC.js +1 -0
  70. package/dist/web/assets/index-C0EHRym0.css +1 -0
  71. package/dist/web/assets/index-DnEocV0M.js +2 -0
  72. package/dist/web/assets/light-Cp0t7v32.js +1 -0
  73. package/dist/web/assets/markdown-u082bbtj.js +1 -0
  74. package/dist/web/assets/platforms-CBkB45JP.js +1 -0
  75. package/dist/web/assets/platforms-FTpjxAT6.js +1 -0
  76. package/dist/web/assets/project-config-B2baPzYL.js +1 -0
  77. package/dist/web/assets/sessions-Cmy31slD.js +1 -0
  78. package/dist/web/assets/sessions-yC_oVVh8.js +1 -0
  79. package/dist/web/assets/skill-repo-input-B_fkGlUK.js +1 -0
  80. package/dist/web/assets/use-lock-html-scroll-DXIqmUW4.js +1 -0
  81. package/dist/web/assets/use-message-DoLM8C1C.js +1 -0
  82. package/dist/web/assets/useResponsiveDrawer-B3uojyvV.js +1 -0
  83. package/dist/web/assets/vendors-D0c_0KLP.js +1 -0
  84. package/dist/web/assets/vue-vendor-BqZbbXHA.js +1 -0
  85. package/dist/web/assets/workspaces-mjyPVGS8.js +1 -0
  86. package/dist/web/assets/xml-CgY3RMlX.js +1 -0
  87. package/dist/web/index.html +12 -8
  88. package/docs/native-log-memory-2026-09-16.md +43 -0
  89. package/docs/superpowers/plans/2026-08-26-configuration-driven-cli-platform.md +1578 -0
  90. package/docs/superpowers/plans/2026-08-30-project-scoped-config-control.md +1260 -0
  91. package/docs/superpowers/plans/2026-09-01-omp-skill-refresh-boundary.md +213 -0
  92. package/docs/superpowers/plans/2026-09-01-realtime-logs-panel.md +125 -0
  93. package/docs/superpowers/plans/2026-09-02-config-driven-platform-boundary.md +86 -0
  94. package/docs/superpowers/plans/2026-09-02-platform-implementation-drivers.md +508 -0
  95. package/docs/superpowers/plans/2026-09-03-cli-platform-correctness-boundary.md +760 -0
  96. package/docs/superpowers/plans/2026-09-03-dependency-security-remediation.md +133 -0
  97. package/docs/superpowers/plans/2026-09-04-model-catalog-pricing-sync.md +1078 -0
  98. package/docs/superpowers/plans/2026-09-05-codex-project-scan-500.md +128 -0
  99. package/docs/superpowers/plans/2026-09-06-project-skill-path-fix.md +97 -0
  100. package/docs/superpowers/specs/2026-08-26-configuration-driven-cli-platform-design.md +408 -0
  101. package/docs/superpowers/specs/2026-08-30-project-scoped-config-control-design.md +467 -0
  102. package/docs/superpowers/specs/2026-09-01-claude-session-content-repair-design.md +111 -0
  103. package/docs/superpowers/specs/2026-09-01-omp-skill-refresh-boundary-design.md +83 -0
  104. package/docs/superpowers/specs/2026-09-01-realtime-logs-panel-design.md +27 -0
  105. package/docs/superpowers/specs/2026-09-02-config-driven-platform-boundary-design.md +64 -0
  106. package/docs/superpowers/specs/2026-09-02-platform-implementation-driver-boundary-design.md +123 -0
  107. package/docs/superpowers/specs/2026-09-03-cli-platform-correctness-boundary-design.md +249 -0
  108. package/docs/superpowers/specs/2026-09-03-dependency-security-remediation-design.md +87 -0
  109. package/docs/superpowers/specs/2026-09-04-model-catalog-pricing-sync-design.md +301 -0
  110. package/docs/superpowers/specs/2026-09-05-codex-project-scan-500-design.md +24 -0
  111. package/package.json +13 -8
  112. package/src/commands/channels.js +88 -191
  113. package/src/commands/cli-type.js +19 -11
  114. package/src/commands/daemon.js +94 -32
  115. package/src/commands/doctor.js +16 -9
  116. package/src/commands/export-config.js +23 -5
  117. package/src/commands/list.js +130 -52
  118. package/src/commands/logs.js +44 -27
  119. package/src/commands/platform-command-registry.js +78 -0
  120. package/src/commands/plugin.js +11 -5
  121. package/src/commands/port-config.js +34 -52
  122. package/src/commands/proxy-control.js +207 -145
  123. package/src/commands/proxy.js +2 -2
  124. package/src/commands/resume.js +87 -91
  125. package/src/commands/search.js +137 -67
  126. package/src/commands/stats.js +30 -22
  127. package/src/commands/switch.js +1 -1
  128. package/src/commands/toggle-proxy.js +94 -111
  129. package/src/commands/ui.js +67 -6
  130. package/src/commands/workspace.js +90 -8
  131. package/src/config/default.js +6 -53
  132. package/src/config/loader.js +61 -24
  133. package/src/config/model-metadata.js +49 -59
  134. package/src/config/model-metadata.json +4095 -99
  135. package/src/config/paths.js +181 -8
  136. package/src/index.js +134 -71
  137. package/src/platforms/access.js +196 -0
  138. package/src/{server/services → platforms}/agents-service.js +354 -197
  139. package/src/platforms/channel-auth-registry.js +162 -0
  140. package/src/platforms/channel-auth-service.js +82 -0
  141. package/src/{server/services → platforms}/commands-service.js +195 -115
  142. package/src/platforms/driver-registry.js +59 -0
  143. package/src/platforms/drivers/claude/api-operations.js +62 -0
  144. package/src/{server/services/channels.js → platforms/drivers/claude/channels-implementation.js} +131 -33
  145. package/src/platforms/drivers/claude/channels.js +39 -0
  146. package/src/{server/services/config-sync-service.js → platforms/drivers/claude/config-sync.js} +29 -5
  147. package/src/{server/services → platforms/drivers/claude}/health-check.js +4 -4
  148. package/src/platforms/drivers/claude/health.js +22 -0
  149. package/src/platforms/drivers/claude/mcp.js +9 -0
  150. package/src/{server/services/settings-manager.js → platforms/drivers/claude/native-config-implementation.js} +13 -4
  151. package/src/platforms/drivers/claude/native-config.js +46 -0
  152. package/src/platforms/drivers/claude/native-logs.js +72 -0
  153. package/src/{server/services/claude-openai-gateway.js → platforms/drivers/claude/openai-gateway.js} +8 -65
  154. package/src/platforms/drivers/claude/project-config.js +21 -0
  155. package/src/platforms/drivers/claude/projects.js +62 -0
  156. package/src/platforms/drivers/claude/prompts.js +9 -0
  157. package/src/{server/proxy-server.js → platforms/drivers/claude/proxy-implementation.js} +41 -278
  158. package/src/platforms/drivers/claude/proxy.js +16 -0
  159. package/src/platforms/drivers/claude/resource-sync.js +9 -0
  160. package/src/platforms/drivers/claude/session-history-adapter.js +313 -0
  161. package/src/{server/services/sessions.js → platforms/drivers/claude/sessions-implementation.js} +145 -35
  162. package/src/platforms/drivers/claude/sessions.js +76 -0
  163. package/src/{server/services/claude-statistics-service.js → platforms/drivers/claude/statistics-implementation.js} +2 -2
  164. package/src/platforms/drivers/claude/statistics.js +16 -0
  165. package/src/{server/services/claude-wire.js → platforms/drivers/claude/wire.js} +1 -1
  166. package/src/platforms/drivers/codex/api-operations.js +9 -0
  167. package/src/{server/services/codex-channels.js → platforms/drivers/codex/channels-implementation.js} +149 -14
  168. package/src/platforms/drivers/codex/channels.js +45 -0
  169. package/src/{server/services/codex-config.js → platforms/drivers/codex/config.js} +12 -2
  170. package/src/{server/services/codex-env-manager.js → platforms/drivers/codex/env-manager.js} +1 -1
  171. package/src/platforms/drivers/codex/mcp.js +9 -0
  172. package/src/{server/services/codex-settings-manager.js → platforms/drivers/codex/native-config-implementation.js} +15 -6
  173. package/src/platforms/drivers/codex/native-config.js +47 -0
  174. package/src/platforms/drivers/codex/native-logs.js +166 -0
  175. package/src/platforms/drivers/codex/project-config.js +21 -0
  176. package/src/platforms/drivers/codex/projects.js +26 -0
  177. package/src/platforms/drivers/codex/prompts.js +9 -0
  178. package/src/{server/codex-proxy-server.js → platforms/drivers/codex/proxy-implementation.js} +30 -233
  179. package/src/platforms/drivers/codex/proxy.js +16 -0
  180. package/src/platforms/drivers/codex/resource-sync.js +9 -0
  181. package/src/{server/services/session-history-adapters/codex.js → platforms/drivers/codex/session-history-adapter.js} +37 -23
  182. package/src/{server/services/codex-sessions.js → platforms/drivers/codex/sessions-implementation.js} +81 -75
  183. package/src/platforms/drivers/codex/sessions.js +36 -0
  184. package/src/{server/services/codex-statistics-service.js → platforms/drivers/codex/statistics-implementation.js} +2 -2
  185. package/src/platforms/drivers/codex/statistics.js +16 -0
  186. package/src/platforms/drivers/gemini/api-operations.js +9 -0
  187. package/src/{server/services/gemini-channels.js → platforms/drivers/gemini/channels-implementation.js} +202 -37
  188. package/src/platforms/drivers/gemini/channels.js +39 -0
  189. package/src/{server/services/gemini-config.js → platforms/drivers/gemini/config.js} +12 -2
  190. package/src/platforms/drivers/gemini/mcp.js +9 -0
  191. package/src/{server/services/gemini-settings-manager.js → platforms/drivers/gemini/native-config-implementation.js} +14 -5
  192. package/src/platforms/drivers/gemini/native-config.js +39 -0
  193. package/src/platforms/drivers/gemini/native-logs.js +180 -0
  194. package/src/platforms/drivers/gemini/project-config.js +21 -0
  195. package/src/platforms/drivers/gemini/projects.js +26 -0
  196. package/src/platforms/drivers/gemini/prompts.js +9 -0
  197. package/src/{server/gemini-proxy-server.js → platforms/drivers/gemini/proxy-implementation.js} +36 -267
  198. package/src/platforms/drivers/gemini/proxy.js +16 -0
  199. package/src/platforms/drivers/gemini/resource-sync.js +9 -0
  200. package/src/{server/services/session-history-adapters/gemini.js → platforms/drivers/gemini/session-history-adapter.js} +70 -18
  201. package/src/{server/services/gemini-sessions.js → platforms/drivers/gemini/sessions-implementation.js} +53 -37
  202. package/src/platforms/drivers/gemini/sessions.js +47 -0
  203. package/src/{server/services/gemini-statistics-service.js → platforms/drivers/gemini/statistics-implementation.js} +2 -2
  204. package/src/platforms/drivers/gemini/statistics.js +16 -0
  205. package/src/{server/services/gemini-wire.js → platforms/drivers/gemini/wire.js} +1 -1
  206. package/src/platforms/drivers/generic-filesystem.js +166 -0
  207. package/src/platforms/drivers/generic-jsonl.js +141 -0
  208. package/src/platforms/drivers/generic-mcp.js +44 -0
  209. package/src/platforms/drivers/generic-openai-compatible.js +45 -0
  210. package/src/platforms/drivers/generic-prompt.js +41 -0
  211. package/src/platforms/drivers/legacy.js +677 -0
  212. package/src/platforms/drivers/native-config-snapshot.js +125 -0
  213. package/src/platforms/drivers/native-log-utils.js +1292 -0
  214. package/src/platforms/drivers/notification-hooks.js +578 -0
  215. package/src/{server/api/omp-config.js → platforms/drivers/omp/api-operations.js} +52 -64
  216. package/src/{server/services/omp-auth-provider-worker.js → platforms/drivers/omp/auth-provider-worker.js} +1 -1
  217. package/src/{server/services/omp-auth-providers.js → platforms/drivers/omp/auth-providers.js} +1 -1
  218. package/src/{server/services/omp-channels.js → platforms/drivers/omp/channels-implementation.js} +166 -39
  219. package/src/platforms/drivers/omp/channels.js +58 -0
  220. package/src/{server/services/omp-config.js → platforms/drivers/omp/config.js} +53 -13
  221. package/src/{server/services/omp-gateway-routing.js → platforms/drivers/omp/gateway-routing.js} +14 -7
  222. package/src/{server/services/omp-gateway.js → platforms/drivers/omp/gateway.js} +4 -262
  223. package/src/platforms/drivers/omp/mcp.js +9 -0
  224. package/src/{server/services/omp-settings-manager.js → platforms/drivers/omp/native-config-implementation.js} +75 -10
  225. package/src/platforms/drivers/omp/native-config.js +46 -0
  226. package/src/platforms/drivers/omp/native-logs.js +52 -0
  227. package/src/{server/services/omp-native-plugin-adapter.js → platforms/drivers/omp/native-plugin-adapter.js} +91 -4
  228. package/src/platforms/drivers/omp/project-config.js +29 -0
  229. package/src/platforms/drivers/omp/projects.js +20 -0
  230. package/src/platforms/drivers/omp/prompts.js +9 -0
  231. package/src/{server/omp-proxy-server.js → platforms/drivers/omp/proxy-implementation.js} +6 -15
  232. package/src/platforms/drivers/omp/proxy.js +16 -0
  233. package/src/platforms/drivers/omp/resource-sync.js +9 -0
  234. package/src/{server/services/session-history-adapters/omp.js → platforms/drivers/omp/session-history-adapter.js} +42 -18
  235. package/src/{server/services/omp-sessions.js → platforms/drivers/omp/sessions-implementation.js} +130 -94
  236. package/src/platforms/drivers/omp/sessions.js +36 -0
  237. package/src/{server/services/omp-skill-discovery.js → platforms/drivers/omp/skill-discovery.js} +159 -32
  238. package/src/{server/services/omp-skill-settings-service.js → platforms/drivers/omp/skill-settings.js} +1 -1
  239. package/src/{server/services/omp-statistics-service.js → platforms/drivers/omp/statistics-implementation.js} +3 -3
  240. package/src/platforms/drivers/omp/statistics.js +16 -0
  241. package/src/platforms/drivers/opencode/api-operations.js +9 -0
  242. package/src/{server/services/opencode-channels.js → platforms/drivers/opencode/channels-implementation.js} +28 -9
  243. package/src/platforms/drivers/opencode/channels.js +40 -0
  244. package/src/platforms/drivers/opencode/conversion.js +41 -0
  245. package/src/{server/services/opencode-gateway-converter.js → platforms/drivers/opencode/gateway-converter.js} +1 -1
  246. package/src/platforms/drivers/opencode/mcp.js +9 -0
  247. package/src/{server/services/opencode-settings-manager.js → platforms/drivers/opencode/native-config-implementation.js} +17 -6
  248. package/src/platforms/drivers/opencode/native-config.js +26 -0
  249. package/src/platforms/drivers/opencode/native-logs.js +133 -0
  250. package/src/platforms/drivers/opencode/project-config.js +98 -0
  251. package/src/platforms/drivers/opencode/projects.js +20 -0
  252. package/src/platforms/drivers/opencode/prompts.js +9 -0
  253. package/src/{server/opencode-proxy-server.js → platforms/drivers/opencode/proxy-implementation.js} +27 -362
  254. package/src/platforms/drivers/opencode/proxy.js +16 -0
  255. package/src/platforms/drivers/opencode/resource-sync.js +9 -0
  256. package/src/{server/services/opencode-sessions.js → platforms/drivers/opencode/sessions-implementation.js} +211 -64
  257. package/src/platforms/drivers/opencode/sessions.js +48 -0
  258. package/src/{server/services/opencode-statistics-service.js → platforms/drivers/opencode/statistics-implementation.js} +2 -2
  259. package/src/platforms/drivers/opencode/statistics.js +16 -0
  260. package/src/platforms/drivers/secure-file-driver.js +272 -0
  261. package/src/platforms/drivers/unsupported.js +7 -0
  262. package/src/platforms/manifest-schema.js +398 -0
  263. package/src/platforms/manifests/claude.json +489 -0
  264. package/src/platforms/manifests/codex.json +448 -0
  265. package/src/platforms/manifests/gemini.json +447 -0
  266. package/src/platforms/manifests/omp.json +496 -0
  267. package/src/platforms/manifests/opencode.json +422 -0
  268. package/src/{server/services → platforms}/native-oauth-adapters.js +87 -417
  269. package/src/{server/services → platforms}/notification-hooks.js +140 -1023
  270. package/src/platforms/oauth-credentials-service.js +506 -0
  271. package/src/platforms/path-resolver.js +179 -0
  272. package/src/platforms/platform-path-context.js +305 -0
  273. package/src/platforms/registry.js +248 -0
  274. package/src/platforms/remote-notification-providers.js +678 -0
  275. package/src/platforms/runtime.js +259 -0
  276. package/src/{server/services/session-history-adapters/index.js → platforms/session-history-adapters.js} +8 -1
  277. package/src/plugins/plugin-loader.js +2 -2
  278. package/src/plugins/plugin-manager.js +2 -2
  279. package/src/plugins/registry.js +27 -10
  280. package/src/reset-config.js +21 -5
  281. package/src/server/api/agents.js +46 -72
  282. package/src/server/api/commands.js +16 -6
  283. package/src/server/api/config-registry.js +206 -59
  284. package/src/server/api/config-sync.js +3 -2
  285. package/src/server/api/config-templates.js +20 -4
  286. package/src/server/api/config.js +111 -102
  287. package/src/server/api/convert.js +54 -178
  288. package/src/server/api/dashboard.js +168 -102
  289. package/src/server/api/hooks.js +1 -1
  290. package/src/server/api/mcp.js +224 -84
  291. package/src/server/api/platform-api-config.js +102 -0
  292. package/src/server/api/platform-route-factory.js +215 -0
  293. package/src/server/api/platform-routes.js +26 -0
  294. package/src/server/api/platforms.js +110 -0
  295. package/src/server/api/plugins.js +57 -57
  296. package/src/server/api/project-config.js +168 -0
  297. package/src/server/api/prompts.js +58 -45
  298. package/src/server/api/settings.js +55 -8
  299. package/src/server/api/skills.js +262 -133
  300. package/src/server/api/ui-config.js +2 -2
  301. package/src/server/api/validation-errors.js +18 -4
  302. package/src/server/api/workspaces.js +47 -12
  303. package/src/server/index.js +164 -213
  304. package/src/server/platform-context.js +81 -0
  305. package/src/server/services/channel-balance.js +11 -20
  306. package/src/server/services/channel-health.js +21 -6
  307. package/src/server/services/channel-scheduler.js +29 -39
  308. package/src/server/services/channel-sync-utils.js +23 -13
  309. package/src/server/services/config-export-service.js +350 -319
  310. package/src/server/services/config-registry-service.js +280 -54
  311. package/src/server/services/config-sync-manager.js +172 -944
  312. package/src/server/services/config-templates-service.js +419 -353
  313. package/src/server/services/control-manifest-store.js +206 -0
  314. package/src/server/services/dashboard-snapshot-worker.js +656 -100
  315. package/src/server/services/effective-control-service.js +557 -0
  316. package/src/server/services/local-resource-index.js +314 -0
  317. package/src/server/services/mcp-service.js +607 -977
  318. package/src/server/services/model-detector.js +15 -10
  319. package/src/server/services/native-log-channel-resolver.js +214 -0
  320. package/src/server/services/native-log-observer.js +291 -0
  321. package/src/server/services/network-access.js +1 -1
  322. package/src/server/services/platform-catalog.js +82 -0
  323. package/src/server/services/platform-resolution.js +32 -29
  324. package/src/server/services/plugins-service.js +376 -122
  325. package/src/server/services/project-config-service.js +550 -0
  326. package/src/server/services/project-path-validation.js +31 -0
  327. package/src/server/services/prompts-service.js +267 -233
  328. package/src/server/services/proxy-runtime.js +7 -4
  329. package/src/server/services/remote-credential-cache.js +43 -0
  330. package/src/server/services/repo-scanner-base.js +182 -75
  331. package/src/server/services/request-logger.js +7 -4
  332. package/src/server/services/session-history-index.js +780 -213
  333. package/src/server/services/session-history-worker.js +228 -33
  334. package/src/server/services/session-snapshot-worker.js +124 -34
  335. package/src/server/services/session-snapshots.js +4 -2
  336. package/src/server/services/skill-artifact-store.js +355 -0
  337. package/src/server/services/skill-format-adapters.js +65 -0
  338. package/src/server/services/skill-projection-service.js +323 -0
  339. package/src/server/services/skill-refresh-task-service.js +275 -0
  340. package/src/server/services/skill-service.js +2020 -677
  341. package/src/server/services/snapshot-cache.js +30 -8
  342. package/src/server/services/speed-test.js +8 -8
  343. package/src/server/services/sqlite-connection.js +19 -3
  344. package/src/server/services/statistics-service.js +240 -57
  345. package/src/server/services/ui-config.js +107 -76
  346. package/src/server/services/usage-log-utils.js +98 -0
  347. package/src/server/services/web-build.js +1 -1
  348. package/src/server/services/workspace-service.js +59 -29
  349. package/src/server/utils/pricing.js +10 -19
  350. package/src/server/websocket-server.js +153 -28
  351. package/src/{server/services/base → shared}/base-channel-service.js +156 -28
  352. package/src/shared/capability-driver.js +104 -0
  353. package/src/shared/channel-auth-policy.js +27 -0
  354. package/src/shared/channel-driver.js +161 -0
  355. package/src/shared/driver-factories/api.js +180 -0
  356. package/src/shared/driver-factories/mcp.js +244 -0
  357. package/src/shared/driver-factories/projects.js +121 -0
  358. package/src/shared/driver-factories/prompts.js +58 -0
  359. package/src/shared/driver-factories/resource-sync.js +375 -0
  360. package/src/shared/driver-result.js +78 -0
  361. package/src/shared/mcp-format.js +189 -0
  362. package/src/shared/platforms.js +104 -167
  363. package/src/shared/project-config.js +512 -0
  364. package/src/shared/proxy-driver.js +57 -0
  365. package/src/{server/services/base → shared}/response-usage-parser.js +8 -4
  366. package/src/ui/menu.js +91 -67
  367. package/src/utils/port-helper.js +35 -19
  368. package/src/utils/session.js +1 -1
  369. package/dist/web/assets/Analytics-COEUXmd4.js +0 -25
  370. package/dist/web/assets/Analytics-RNn1BUbG.css +0 -1
  371. package/dist/web/assets/ConfigTemplates-DLLkS53H.js +0 -1
  372. package/dist/web/assets/Home-DCEyLzwX.js +0 -1
  373. package/dist/web/assets/Home-DYVy4cGZ.css +0 -1
  374. package/dist/web/assets/PluginManager-Oe1ZHoMO.js +0 -1
  375. package/dist/web/assets/ProjectList-CWjuAFof.js +0 -1
  376. package/dist/web/assets/ProjectList-VeMNXfgO.css +0 -1
  377. package/dist/web/assets/SessionList-C4chCPxK.css +0 -1
  378. package/dist/web/assets/SessionList-v3ehGg9U.js +0 -1
  379. package/dist/web/assets/SkillManager-BsX8Qpj0.css +0 -1
  380. package/dist/web/assets/SkillManager-DUF_qP5S.js +0 -1
  381. package/dist/web/assets/WorkspaceManager-CjAWBosO.js +0 -1
  382. package/dist/web/assets/icons-nGdSKQn2.js +0 -1
  383. package/dist/web/assets/index-D5hyHPj7.js +0 -2
  384. package/dist/web/assets/index-bJRG3RXH.css +0 -1
  385. package/dist/web/assets/markdown-BNJfEgCA.js +0 -1
  386. package/dist/web/assets/markdown-BfC0goYb.css +0 -10
  387. package/dist/web/assets/naive-ui-BALVpMgd.js +0 -1
  388. package/dist/web/assets/vendors-DQA4Hw9v.js +0 -7
  389. package/dist/web/assets/vue-vendor-B5RqjEjQ.js +0 -45
  390. package/src/config/model-pricing.js +0 -35
  391. package/src/server/api/channels.js +0 -439
  392. package/src/server/api/claude-hooks.js +0 -56
  393. package/src/server/api/claude-statistics.js +0 -57
  394. package/src/server/api/codex-channels.js +0 -491
  395. package/src/server/api/codex-projects.js +0 -117
  396. package/src/server/api/codex-proxy.js +0 -293
  397. package/src/server/api/codex-sessions.js +0 -652
  398. package/src/server/api/codex-statistics.js +0 -57
  399. package/src/server/api/gemini-channels.js +0 -392
  400. package/src/server/api/gemini-projects.js +0 -103
  401. package/src/server/api/gemini-proxy.js +0 -231
  402. package/src/server/api/gemini-sessions.js +0 -550
  403. package/src/server/api/gemini-statistics.js +0 -57
  404. package/src/server/api/health-check.js +0 -31
  405. package/src/server/api/oauth-credentials.js +0 -198
  406. package/src/server/api/omp-channels.js +0 -575
  407. package/src/server/api/omp-projects.js +0 -88
  408. package/src/server/api/omp-proxy.js +0 -125
  409. package/src/server/api/omp-sessions.js +0 -386
  410. package/src/server/api/omp-statistics.js +0 -40
  411. package/src/server/api/opencode-channels.js +0 -471
  412. package/src/server/api/opencode-projects.js +0 -110
  413. package/src/server/api/opencode-proxy.js +0 -354
  414. package/src/server/api/opencode-sessions.js +0 -466
  415. package/src/server/api/opencode-statistics.js +0 -57
  416. package/src/server/api/projects.js +0 -120
  417. package/src/server/api/proxy.js +0 -330
  418. package/src/server/api/sessions.js +0 -810
  419. package/src/server/services/oauth-credentials-service.js +0 -945
  420. package/src/server/services/omp-session-log-observer.js +0 -138
  421. package/src/server/services/opencode-gateway-adapters.js +0 -43
  422. package/src/server/services/project-snapshots.js +0 -59
  423. package/src/server/services/proxy-log-helper.js +0 -298
  424. package/src/server/services/session-cache.js +0 -127
  425. package/src/server/services/session-converter.js +0 -582
  426. package/src/server/services/session-history-adapters/claude.js +0 -235
  427. /package/src/{server/services/claude-token-recovery.js → platforms/drivers/claude/token-recovery.js} +0 -0
  428. /package/src/{server/services/codex-parser.js → platforms/drivers/codex/parser.js} +0 -0
  429. /package/src/{server/services/codex-speed-test-template.json → platforms/drivers/codex/speed-test-template.json} +0 -0
  430. /package/src/{server/services/codex-wire.js → platforms/drivers/codex/wire.js} +0 -0
  431. /package/src/{server/services/omp-auth-gateway-client.js → platforms/drivers/omp/auth-gateway-client.js} +0 -0
  432. /package/src/{server/services/opencode-normalization.js → platforms/drivers/opencode/normalization.js} +0 -0
  433. /package/src/{server/services → shared}/config-artifact-paths.js +0 -0
  434. /package/src/{server/services/base → shared}/proxy-utils.js +0 -0
@@ -0,0 +1 @@
1
+ .analytics-page[data-v-34f16206]{background:var(--bg-primary);box-sizing:border-box;flex-direction:column;gap:14px;height:100%;padding:16px 20px;display:flex;overflow-y:auto}.analytics-header[data-v-34f16206]{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;display:flex}.page-title[data-v-34f16206]{color:var(--text-primary);margin:0;font-size:18px;font-weight:700}.toolbar[data-v-34f16206]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.range-buttons[data-v-34f16206]{align-items:center;gap:4px;display:flex}.range-btn[data-v-34f16206]{border:1px solid var(--border-color,#e0e0e6);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:4px 10px;font-size:12px;transition:all .15s}.range-btn[data-v-34f16206]:hover{border-color:var(--primary-color,#18a058);color:var(--primary-color,#18a058)}.range-btn.active[data-v-34f16206]{background:var(--primary-color,#18a058);border-color:var(--primary-color,#18a058);color:#fff}.custom-range-wrapper[data-v-34f16206]{margin-left:4px}.loading-overlay[data-v-34f16206]{justify-content:center;padding:20px 0;display:flex}.summary-cards[data-v-34f16206]{flex-shrink:0;grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.summary-card[data-v-34f16206]{background:var(--bg-secondary);border:1px solid var(--border-color,#e0e0e6);border-radius:8px;padding:14px 16px}.summary-label[data-v-34f16206]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;font-size:11px}.summary-value[data-v-34f16206]{color:var(--text-primary);font-size:22px;font-weight:700;line-height:1.2}.chart-section[data-v-34f16206]{background:var(--bg-secondary);border:1px solid var(--border-color,#e0e0e6);border-radius:8px;flex-shrink:0;padding:14px 16px}.chart-section.fullscreen[data-v-34f16206]{z-index:1000;background:var(--bg-secondary);border-radius:0;padding:20px;position:fixed;inset:0;overflow:auto}.cumulative-section[data-v-34f16206]{margin-bottom:8px}.chart-section-header[data-v-34f16206]{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.chart-title[data-v-34f16206]{color:var(--text-primary);font-size:13px;font-weight:600}.chart-controls[data-v-34f16206]{align-items:center;gap:8px;display:flex}.chart-type-toggle[data-v-34f16206]{border:1px solid var(--border-color,#e0e0e6);border-radius:4px;display:flex;overflow:hidden}.toggle-btn[data-v-34f16206]{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:3px 10px;font-size:12px;transition:all .15s}.toggle-btn.active[data-v-34f16206]{background:var(--primary-color,#18a058);color:#fff}.icon-btn[data-v-34f16206]{border:1px solid var(--border-color,#e0e0e6);cursor:pointer;width:28px;height:28px;color:var(--text-secondary);background:0 0;border-radius:4px;justify-content:center;align-items:center;transition:all .15s;display:flex}.icon-btn[data-v-34f16206]:hover{border-color:var(--primary-color,#18a058);color:var(--primary-color,#18a058)}.main-chart[data-v-34f16206]{width:100%;height:560px}.chart-section.fullscreen .main-chart[data-v-34f16206]{height:calc(100vh - 100px)}.cumulative-chart[data-v-34f16206]{width:100%;height:200px}.empty-state[data-v-34f16206]{height:120px;color:var(--text-secondary);justify-content:center;align-items:center;font-size:13px;display:flex}@media (width<=768px){.analytics-page[data-v-34f16206]{padding:10px 12px}.summary-cards[data-v-34f16206]{grid-template-columns:repeat(2,1fr)}.analytics-header[data-v-34f16206]{flex-direction:column;align-items:flex-start}.toolbar[data-v-34f16206]{width:100%}}@media (width<=480px){.summary-cards[data-v-34f16206]{grid-template-columns:1fr 1fr}.summary-value[data-v-34f16206]{font-size:18px}}
@@ -0,0 +1 @@
1
+ import{Ct as t,D as e,Dt as n,Lt as a,N as r,Pt as o,Qt as i,Tt as s,Xt as l,Yt as d,bn as b,dn as c,dt as p,gn as f,gt as u,hn as v,ht as g,i as h,it as x,j as m,ln as y,s as w,st as $,vn as C,xn as z,yn as R}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as S,C as T,D as P,F as W,G as j,I as _,M as L,N as A,O as k,Q as B,V as E,W as N,Z as O,_t as H,b as D,dt as F,et as I,f as V,g as M,m as X,mt as U,st as q,tt as G,u as Y,w as Q,x as Z,y as J}from"./vue-vendor-BqZbbXHA.js";import{n as K}from"./client-UDwXBP9i.js";import{at as tt,tt as et}from"./icons-B2Vg-IOC.js";import{h as nt,y as at}from"./use-message-DoLM8C1C.js";import{$ as rt,At as ot,N as it,O as st,Tt as lt,W as dt,k as bt,vt as ct,wt as pt,yt as ft}from"./index-DnEocV0M.js";import{t as ut}from"./clipboard-B46yyoz_.js";var vt=pt(".v-x-scroll",{overflow:"auto",scrollbarWidth:"none"},[pt("&::-webkit-scrollbar",{width:0,height:0})]),gt=S({name:"XScroll",props:{disabled:Boolean,onScroll:Function},setup(){const t=q(null);const e=a();return vt.mount({id:"vueuc/x-scroll",head:!0,anchorMetaName:lt,ssr:e}),Object.assign({selfRef:t,handleWheel:function(t){t.currentTarget.offsetWidth<t.currentTarget.scrollWidth&&0!==t.deltaY&&(t.currentTarget.scrollLeft+=t.deltaY+t.deltaX,t.preventDefault())}},{scrollTo(...e){var n;null===(n=t.value)||void 0===n||n.scrollTo(...e)}})},render(){return L("div",{ref:"selfRef",onScroll:this.onScroll,onWheel:this.disabled?void 0:this.handleWheel,class:"v-x-scroll"},this.$slots)}}),ht=/\s/;var xt=/^\s+/;function mt(t){return t?t.slice(0,function(t){for(var e=t.length;e--&&ht.test(t.charAt(e)););return e}(t)+1).replace(xt,""):t}var yt=/^[-+]0x[0-9a-f]+$/i,wt=/^0b[01]+$/i,$t=/^0o[0-7]+$/i,Ct=parseInt;function zt(t){if("number"==typeof t)return t;if($(t))return NaN;if(x(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=x(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=mt(t);var n=wt.test(t);return n||$t.test(t)?Ct(t.slice(2),n?2:8):yt.test(t)?NaN:+t}var Rt=function(){return p.Date.now()},St=Math.max,Tt=Math.min;function Pt(t,e,n){var a,r,o,i,s,l,d=0,b=!1,c=!1,p=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function f(e){var n=a,o=r;return a=r=void 0,d=e,i=t.apply(o,n)}function u(t){var n=t-l;return void 0===l||n>=e||n<0||c&&t-d>=o}function v(){var t=Rt();if(u(t))return g(t);s=setTimeout(v,function(t){var n=e-(t-l);return c?Tt(n,o-(t-d)):n}(t))}function g(t){return s=void 0,p&&a?f(t):(a=r=void 0,i)}function h(){var t=Rt(),n=u(t);if(a=arguments,r=this,l=t,n){if(void 0===s)return function(t){return d=t,s=setTimeout(v,e),b?f(t):i}(l);if(c)return clearTimeout(s),s=setTimeout(v,e),f(l)}return void 0===s&&(s=setTimeout(v,e)),i}return e=zt(e)||0,x(n)&&(b=!!n.leading,o=(c="maxWait"in n)?St(zt(n.maxWait)||0,e):o,p="trailing"in n?!!n.trailing:p),h.cancel=function(){void 0!==s&&clearTimeout(s),d=0,a=l=r=s=void 0},h.flush=function(){return void 0===s?i:g(Rt())},h}var Wt=d("n-tabs"),jt={tab:[String,Number,Object,Function],name:{type:[String,Number],required:!0},disabled:Boolean,displayDirective:{type:String,default:"if"},closable:{type:Boolean,default:void 0},tabProps:Object,label:[String,Number,Object,Function]},_t=S({__TAB_PANE__:!0,name:"TabPane",alias:["TabPanel"],props:jt,slots:Object,setup(t){const e=A(Wt,null);return e||n("tab-pane","`n-tab-pane` must be placed inside `n-tabs`."),{style:e.paneStyleRef,class:e.paneClassRef,mergedClsPrefix:e.mergedClsPrefixRef}},render(){return L("div",{class:[`${this.mergedClsPrefix}-tab-pane`,this.class],style:this.style},this.$slots)}}),Lt=S({__TAB__:!0,inheritAttrs:!1,name:"Tab",props:Object.assign({internalLeftPadded:Boolean,internalAddable:Boolean,internalCreatedByPane:Boolean},ft(jt,["displayDirective"])),setup(t){const{mergedClsPrefixRef:e,valueRef:n,typeRef:a,closableRef:r,tabStyleRef:o,addTabStyleRef:i,tabClassRef:s,addTabClassRef:l,tabChangeIdRef:d,onBeforeLeaveRef:b,triggerRef:c,handleAdd:p,activateTab:f,handleClose:u}=A(Wt);return{trigger:c,mergedClosable:D(()=>{if(t.internalAddable)return!1;const{closable:e}=t;return void 0===e?r.value:e}),style:o,addStyle:i,tabClass:s,addTabClass:l,clsPrefix:e,value:n,type:a,handleClose(e){e.stopPropagation(),t.disabled||u(t.name)},activateTab(){if(t.disabled)return;if(t.internalAddable)return void p();const{name:e}=t,a=++d.id;if(e!==n.value){const{value:r}=b;r?Promise.resolve(r(t.name,n.value)).then(t=>{t&&d.id===a&&f(e)}):f(e)}}}},render(){const{internalAddable:t,clsPrefix:n,name:a,disabled:r,label:o,tab:i,value:s,mergedClosable:l,trigger:d,$slots:{default:b}}=this,c=null!=o?o:i;return L("div",{class:`${n}-tabs-tab-wrapper`},this.internalLeftPadded?L("div",{class:`${n}-tabs-tab-pad`}):null,L("div",Object.assign({key:a,"data-name":a,"data-disabled":!!r||void 0},W({class:[`${n}-tabs-tab`,s===a&&`${n}-tabs-tab--active`,r&&`${n}-tabs-tab--disabled`,l&&`${n}-tabs-tab--closable`,t&&`${n}-tabs-tab--addable`,t?this.addTabClass:this.tabClass],onClick:"click"===d?this.activateTab:void 0,onMouseenter:"hover"===d?this.activateTab:void 0,style:t?this.addStyle:this.style},this.internalCreatedByPane?this.tabProps||{}:this.$attrs)),L("span",{class:`${n}-tabs-tab__label`},t?L(M,null,L("div",{class:`${n}-tabs-tab__height-placeholder`}," "),L(m,{clsPrefix:n},{default:()=>L(ct,null)})):b?b():"object"==typeof c?c:nt(null!=c?c:a)),l&&"card"===this.type?L(e,{clsPrefix:n,class:`${n}-tabs-tab__close`,onClick:this.handleClose,disabled:r}):null))}}),At=f("tabs","\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n",[R("segment-type",[f("tabs-rail",[v("&.transition-disabled",[f("tabs-capsule","\n transition: none;\n ")])])]),R("top",[f("tab-pane","\n padding: var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left);\n ")]),R("left",[f("tab-pane","\n padding: var(--n-pane-padding-right) var(--n-pane-padding-bottom) var(--n-pane-padding-left) var(--n-pane-padding-top);\n ")]),R("left, right","\n flex-direction: row;\n ",[f("tabs-bar","\n width: 2px;\n right: 0;\n transition:\n top .2s var(--n-bezier),\n max-height .2s var(--n-bezier),\n background-color .3s var(--n-bezier);\n "),f("tabs-tab","\n padding: var(--n-tab-padding-vertical); \n ")]),R("right","\n flex-direction: row-reverse;\n ",[f("tab-pane","\n padding: var(--n-pane-padding-left) var(--n-pane-padding-top) var(--n-pane-padding-right) var(--n-pane-padding-bottom);\n "),f("tabs-bar","\n left: 0;\n ")]),R("bottom","\n flex-direction: column-reverse;\n justify-content: flex-end;\n ",[f("tab-pane","\n padding: var(--n-pane-padding-bottom) var(--n-pane-padding-right) var(--n-pane-padding-top) var(--n-pane-padding-left);\n "),f("tabs-bar","\n top: 0;\n ")]),f("tabs-rail","\n position: relative;\n padding: 3px;\n border-radius: var(--n-tab-border-radius);\n width: 100%;\n background-color: var(--n-color-segment);\n transition: background-color .3s var(--n-bezier);\n display: flex;\n align-items: center;\n ",[f("tabs-capsule","\n border-radius: var(--n-tab-border-radius);\n position: absolute;\n pointer-events: none;\n background-color: var(--n-tab-color-segment);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .08);\n transition: transform 0.3s var(--n-bezier);\n "),f("tabs-tab-wrapper","\n flex-basis: 0;\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n ",[f("tabs-tab","\n overflow: hidden;\n border-radius: var(--n-tab-border-radius);\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n ",[R("active","\n font-weight: var(--n-font-weight-strong);\n color: var(--n-tab-text-color-active);\n "),v("&:hover","\n color: var(--n-tab-text-color-hover);\n ")])])]),R("flex",[f("tabs-nav","\n width: 100%;\n position: relative;\n ",[f("tabs-wrapper","\n width: 100%;\n ",[f("tabs-tab","\n margin-right: 0;\n ")])])]),f("tabs-nav","\n box-sizing: border-box;\n line-height: 1.5;\n display: flex;\n transition: border-color .3s var(--n-bezier);\n ",[C("prefix, suffix","\n display: flex;\n align-items: center;\n "),C("prefix","padding-right: 16px;"),C("suffix","padding-left: 16px;")]),R("top, bottom",[v(">",[f("tabs-nav",[f("tabs-nav-scroll-wrapper",[v("&::before","\n top: 0;\n bottom: 0;\n left: 0;\n width: 20px;\n "),v("&::after","\n top: 0;\n bottom: 0;\n right: 0;\n width: 20px;\n "),R("shadow-start",[v("&::before","\n box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, .12);\n ")]),R("shadow-end",[v("&::after","\n box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, .12);\n ")])])])])]),R("left, right",[f("tabs-nav-scroll-content","\n flex-direction: column;\n "),v(">",[f("tabs-nav",[f("tabs-nav-scroll-wrapper",[v("&::before","\n top: 0;\n left: 0;\n right: 0;\n height: 20px;\n "),v("&::after","\n bottom: 0;\n left: 0;\n right: 0;\n height: 20px;\n "),R("shadow-start",[v("&::before","\n box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, .12);\n ")]),R("shadow-end",[v("&::after","\n box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, .12);\n ")])])])])]),f("tabs-nav-scroll-wrapper","\n flex: 1;\n position: relative;\n overflow: hidden;\n ",[f("tabs-nav-y-scroll","\n height: 100%;\n width: 100%;\n overflow-y: auto; \n scrollbar-width: none;\n ",[v("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb","\n width: 0;\n height: 0;\n display: none;\n ")]),v("&::before, &::after",'\n transition: box-shadow .3s var(--n-bezier);\n pointer-events: none;\n content: "";\n position: absolute;\n z-index: 1;\n ')]),f("tabs-nav-scroll-content","\n display: flex;\n position: relative;\n min-width: 100%;\n min-height: 100%;\n width: fit-content;\n box-sizing: border-box;\n "),f("tabs-wrapper","\n display: inline-flex;\n flex-wrap: nowrap;\n position: relative;\n "),f("tabs-tab-wrapper","\n display: flex;\n flex-wrap: nowrap;\n flex-shrink: 0;\n flex-grow: 0;\n "),f("tabs-tab","\n cursor: pointer;\n white-space: nowrap;\n flex-wrap: nowrap;\n display: inline-flex;\n align-items: center;\n color: var(--n-tab-text-color);\n font-size: var(--n-tab-font-size);\n background-clip: padding-box;\n padding: var(--n-tab-padding);\n transition:\n box-shadow .3s var(--n-bezier),\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[R("disabled",{cursor:"not-allowed"}),C("close","\n margin-left: 6px;\n transition:\n background-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n "),C("label","\n display: flex;\n align-items: center;\n z-index: 1;\n ")]),f("tabs-bar","\n position: absolute;\n bottom: 0;\n height: 2px;\n border-radius: 1px;\n background-color: var(--n-bar-color);\n transition:\n left .2s var(--n-bezier),\n max-width .2s var(--n-bezier),\n opacity .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n ",[v("&.transition-disabled","\n transition: none;\n "),R("disabled","\n background-color: var(--n-tab-text-color-disabled)\n ")]),f("tabs-pane-wrapper","\n position: relative;\n overflow: hidden;\n transition: max-height .2s var(--n-bezier);\n "),f("tab-pane","\n color: var(--n-pane-text-color);\n width: 100%;\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n opacity .2s var(--n-bezier);\n left: 0;\n right: 0;\n top: 0;\n ",[v("&.next-transition-leave-active, &.prev-transition-leave-active, &.next-transition-enter-active, &.prev-transition-enter-active","\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n transform .2s var(--n-bezier),\n opacity .2s var(--n-bezier);\n "),v("&.next-transition-leave-active, &.prev-transition-leave-active","\n position: absolute;\n "),v("&.next-transition-enter-from, &.prev-transition-leave-to","\n transform: translateX(32px);\n opacity: 0;\n "),v("&.next-transition-leave-to, &.prev-transition-enter-from","\n transform: translateX(-32px);\n opacity: 0;\n "),v("&.next-transition-leave-from, &.next-transition-enter-to, &.prev-transition-leave-from, &.prev-transition-enter-to","\n transform: translateX(0);\n opacity: 1;\n ")]),f("tabs-tab-pad","\n box-sizing: border-box;\n width: var(--n-tab-gap);\n flex-grow: 0;\n flex-shrink: 0;\n "),R("line-type, bar-type",[f("tabs-tab","\n font-weight: var(--n-tab-font-weight);\n box-sizing: border-box;\n vertical-align: bottom;\n ",[v("&:hover",{color:"var(--n-tab-text-color-hover)"}),R("active","\n color: var(--n-tab-text-color-active);\n font-weight: var(--n-tab-font-weight-active);\n "),R("disabled",{color:"var(--n-tab-text-color-disabled)"})])]),f("tabs-nav",[R("line-type",[R("top",[C("prefix, suffix","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n bottom: -1px;\n ")]),R("left",[C("prefix, suffix","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n right: -1px;\n ")]),R("right",[C("prefix, suffix","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n left: -1px;\n ")]),R("bottom",[C("prefix, suffix","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-nav-scroll-content","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-bar","\n top: -1px;\n ")]),C("prefix, suffix","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-nav-scroll-content","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-bar","\n border-radius: 0;\n ")]),R("card-type",[C("prefix, suffix","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-pad","\n flex-grow: 1;\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-tab-pad","\n transition: border-color .3s var(--n-bezier);\n "),f("tabs-tab","\n font-weight: var(--n-tab-font-weight);\n border: 1px solid var(--n-tab-border-color);\n background-color: var(--n-tab-color);\n box-sizing: border-box;\n position: relative;\n vertical-align: bottom;\n display: flex;\n justify-content: space-between;\n font-size: var(--n-tab-font-size);\n color: var(--n-tab-text-color);\n ",[R("addable","\n padding-left: 8px;\n padding-right: 8px;\n font-size: 16px;\n justify-content: center;\n ",[C("height-placeholder","\n width: 0;\n font-size: var(--n-tab-font-size);\n "),b("disabled",[v("&:hover","\n color: var(--n-tab-text-color-hover);\n ")])]),R("closable","padding-right: 8px;"),R("active","\n background-color: #0000;\n font-weight: var(--n-tab-font-weight-active);\n color: var(--n-tab-text-color-active);\n "),R("disabled","color: var(--n-tab-text-color-disabled);")])]),R("left, right","\n flex-direction: column; \n ",[C("prefix, suffix","\n padding: var(--n-tab-padding-vertical);\n "),f("tabs-wrapper","\n flex-direction: column;\n "),f("tabs-tab-wrapper","\n flex-direction: column;\n ",[f("tabs-tab-pad","\n height: var(--n-tab-gap-vertical);\n width: 100%;\n ")])]),R("top",[R("card-type",[f("tabs-scroll-padding","border-bottom: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-left-radius: var(--n-tab-border-radius);\n border-top-right-radius: var(--n-tab-border-radius);\n ",[R("active","\n border-bottom: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-bottom: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-bottom: 1px solid var(--n-tab-border-color);\n ")])]),R("left",[R("card-type",[f("tabs-scroll-padding","border-right: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-left-radius: var(--n-tab-border-radius);\n border-bottom-left-radius: var(--n-tab-border-radius);\n ",[R("active","\n border-right: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-right: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-right: 1px solid var(--n-tab-border-color);\n ")])]),R("right",[R("card-type",[f("tabs-scroll-padding","border-left: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-top-right-radius: var(--n-tab-border-radius);\n border-bottom-right-radius: var(--n-tab-border-radius);\n ",[R("active","\n border-left: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-left: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-left: 1px solid var(--n-tab-border-color);\n ")])]),R("bottom",[R("card-type",[f("tabs-scroll-padding","border-top: 1px solid var(--n-tab-border-color);"),C("prefix, suffix","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-tab","\n border-bottom-left-radius: var(--n-tab-border-radius);\n border-bottom-right-radius: var(--n-tab-border-radius);\n ",[R("active","\n border-top: 1px solid #0000;\n ")]),f("tabs-tab-pad","\n border-top: 1px solid var(--n-tab-border-color);\n "),f("tabs-pad","\n border-top: 1px solid var(--n-tab-border-color);\n ")])])])]),kt=function(t,e,n){var a=!0,r=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return x(n)&&(a="leading"in n?!!n.leading:a,r="trailing"in n?!!n.trailing:r),Pt(t,e,{leading:a,maxWait:e,trailing:r})},Bt=S({name:"Tabs",props:Object.assign(Object.assign({},r.props),{value:[String,Number],defaultValue:[String,Number],trigger:{type:String,default:"click"},type:{type:String,default:"bar"},closable:Boolean,justifyContent:String,size:{type:String,default:"medium"},placement:{type:String,default:"top"},tabStyle:[String,Object],tabClass:String,addTabStyle:[String,Object],addTabClass:String,barWidth:Number,paneClass:String,paneStyle:[String,Object],paneWrapperClass:String,paneWrapperStyle:[String,Object],addable:[Boolean,Object],tabsPadding:{type:Number,default:0},animated:Boolean,onBeforeLeave:Function,onAdd:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onClose:[Function,Array],labelSize:String,activeName:[String,Number],onActiveNameChange:[Function,Array]}),slots:Object,setup(t,{slots:e}){var n,a,o,d;const{mergedClsPrefixRef:b,inlineThemeDisabled:p}=u(t),f=r("Tabs","-tabs",At,dt,t,b),v=q(null),h=q(null),x=q(null),m=q(null),w=q(null),$=q(null),C=q(!0),R=q(!0),S=l(t,["labelSize","size"]),T=l(t,["activeName","value"]),P=q(null!==(a=null!==(n=T.value)&&void 0!==n?n:t.defaultValue)&&void 0!==a?a:e.default?null===(d=null===(o=at(e.default())[0])||void 0===o?void 0:o.props)||void 0===d?void 0:d.name:null),W=i(T,P),L={id:0},A=D(()=>{if(t.justifyContent&&"card"!==t.type)return{display:"flex",justifyContent:t.justifyContent}});function k(){var t;const{value:e}=W;return null===e?null:null===(t=v.value)||void 0===t?void 0:t.querySelector(`[data-name="${e}"]`)}function N(t){const{value:e}=h;if(e)for(const n of t)e.style[n]=""}function H(){if("card"===t.type)return;const e=k();e?function(e){if("card"===t.type)return;const{value:n}=h;if(!n)return;const a="0"===n.style.opacity;if(e){const r=`${b.value}-tabs-bar--disabled`,{barWidth:o,placement:i}=t;if("true"===e.dataset.disabled?n.classList.add(r):n.classList.remove(r),["top","bottom"].includes(i)){if(N(["top","maxHeight","height"]),"number"==typeof o&&e.offsetWidth>=o){const t=Math.floor((e.offsetWidth-o)/2)+e.offsetLeft;n.style.left=`${t}px`,n.style.maxWidth=`${o}px`}else n.style.left=`${e.offsetLeft}px`,n.style.maxWidth=`${e.offsetWidth}px`;n.style.width="8192px",a&&(n.style.transition="none"),n.offsetWidth,a&&(n.style.transition="",n.style.opacity="1")}else{if(N(["left","maxWidth","width"]),"number"==typeof o&&e.offsetHeight>=o){const t=Math.floor((e.offsetHeight-o)/2)+e.offsetTop;n.style.top=`${t}px`,n.style.maxHeight=`${o}px`}else n.style.top=`${e.offsetTop}px`,n.style.maxHeight=`${e.offsetHeight}px`;n.style.height="8192px",a&&(n.style.transition="none"),n.offsetHeight,a&&(n.style.transition="",n.style.opacity="1")}}}(e):function(){if("card"===t.type)return;const{value:e}=h;e&&(e.style.opacity="0")}()}function I(){var t;const e=null===(t=w.value)||void 0===t?void 0:t.$el;if(!e)return;const n=k();if(!n)return;const{scrollLeft:a,offsetWidth:r}=e,{offsetLeft:o,offsetWidth:i}=n;a>o?e.scrollTo({top:0,left:o,behavior:"smooth"}):o+i>a+r&&e.scrollTo({top:0,left:o+i-r,behavior:"smooth"})}O(W,()=>{L.id=0,H(),I()});const V=q(null);let M=0,X=null;const U={value:[]},G=q("next");let Y=!0;function Q(){const{value:t}=h;if(!t)return;Y||(Y=!1);const e="transition-disabled";t.classList.add(e),H(),t.classList.remove(e)}const Z=q(null);function J({transitionDisabled:t}){const e=v.value;if(!e)return;t&&e.classList.add("transition-disabled");const n=k();n&&Z.value&&(Z.value.style.width=`${n.offsetWidth}px`,Z.value.style.height=`${n.offsetHeight}px`,Z.value.style.transform=`translateX(${n.offsetLeft-y(getComputedStyle(e).paddingLeft)}px)`,t&&Z.value.offsetWidth),t&&e.classList.remove("transition-disabled")}O([W],()=>{"segment"===t.type&&_(()=>{J({transitionDisabled:!1})})}),E(()=>{"segment"===t.type&&J({transitionDisabled:!0})});let K=0;const tt=kt(function(e){var n,a;if(0===e.contentRect.width&&0===e.contentRect.height)return;if(K===e.contentRect.width)return;K=e.contentRect.width;const{type:r}=t;if("line"!==r&&"bar"!==r||(Y||(null===(n=t.justifyContent)||void 0===n?void 0:n.startsWith("space")))&&Q(),"segment"!==r){const{placement:e}=t;rt(("top"===e||"bottom"===e?null===(a=w.value)||void 0===a?void 0:a.$el:$.value)||null)}},64);O([()=>t.justifyContent,()=>t.size],()=>{_(()=>{const{type:e}=t;"line"!==e&&"bar"!==e||Q()})});const et=q(!1);const nt=kt(function(e){var n;const{target:a,contentRect:{width:r,height:o}}=e,i=a.parentElement.parentElement.offsetWidth,s=a.parentElement.parentElement.offsetHeight,{placement:l}=t;if(et.value){const{value:t}=m;if(!t)return;"top"===l||"bottom"===l?i-r>t.$el.offsetWidth&&(et.value=!1):s-o>t.$el.offsetHeight&&(et.value=!1)}else"top"===l||"bottom"===l?i<r&&(et.value=!0):s<o&&(et.value=!0);rt((null===(n=w.value)||void 0===n?void 0:n.$el)||null)},64);function rt(e){if(!e)return;const{placement:n}=t;if("top"===n||"bottom"===n){const{scrollLeft:t,scrollWidth:n,offsetWidth:a}=e;C.value=t<=0,R.value=t+a>=n}else{const{scrollTop:t,scrollHeight:n,offsetHeight:a}=e;C.value=t<=0,R.value=t+a>=n}}const it=kt(t=>{rt(t.target)},64);j(Wt,{triggerRef:F(t,"trigger"),tabStyleRef:F(t,"tabStyle"),tabClassRef:F(t,"tabClass"),addTabStyleRef:F(t,"addTabStyle"),addTabClassRef:F(t,"addTabClass"),paneClassRef:F(t,"paneClass"),paneStyleRef:F(t,"paneStyle"),mergedClsPrefixRef:b,typeRef:F(t,"type"),closableRef:F(t,"closable"),valueRef:W,tabChangeIdRef:L,onBeforeLeaveRef:F(t,"onBeforeLeave"),activateTab:function(e){const n=W.value;let a="next";for(const t of U.value){if(t===n)break;if(t===e){a="prev";break}}G.value=a,function(e){const{onActiveNameChange:n,onUpdateValue:a,"onUpdate:value":r}=t;n&&s(n,e);a&&s(a,e);r&&s(r,e);P.value=e}(e)},handleClose:function(e){const{onClose:n}=t;n&&s(n,e)},handleAdd:function(){const{onAdd:e}=t;e&&e(),_(()=>{const t=k(),{value:e}=w;t&&e&&e.scrollTo({left:t.offsetLeft,top:0,behavior:"smooth"})})}}),ot(()=>{H(),I()}),B(()=>{const{value:t}=x;if(!t)return;const{value:e}=b,n=`${e}-tabs-nav-scroll-wrapper--shadow-start`,a=`${e}-tabs-nav-scroll-wrapper--shadow-end`;C.value?t.classList.remove(n):t.classList.add(n),R.value?t.classList.remove(a):t.classList.add(a)});const st={syncBarPosition:()=>{H()}},lt=D(()=>{const{value:e}=S,{type:n}=t,a=`${e}${{card:"Card",bar:"Bar",line:"Line",segment:"Segment"}[n]}`,{self:{barColor:r,closeIconColor:o,closeIconColorHover:i,closeIconColorPressed:s,tabColor:l,tabBorderColor:d,paneTextColor:b,tabFontWeight:p,tabBorderRadius:u,tabFontWeightActive:v,colorSegment:g,fontWeightStrong:h,tabColorSegment:x,closeSize:m,closeIconSize:y,closeColorHover:w,closeColorPressed:$,closeBorderRadius:C,[z("panePadding",e)]:R,[z("tabPadding",a)]:T,[z("tabPaddingVertical",a)]:P,[z("tabGap",a)]:W,[z("tabGap",`${a}Vertical`)]:j,[z("tabTextColor",n)]:_,[z("tabTextColorActive",n)]:L,[z("tabTextColorHover",n)]:A,[z("tabTextColorDisabled",n)]:k,[z("tabFontSize",e)]:B},common:{cubicBezierEaseInOut:E}}=f.value;return{"--n-bezier":E,"--n-color-segment":g,"--n-bar-color":r,"--n-tab-font-size":B,"--n-tab-text-color":_,"--n-tab-text-color-active":L,"--n-tab-text-color-disabled":k,"--n-tab-text-color-hover":A,"--n-pane-text-color":b,"--n-tab-border-color":d,"--n-tab-border-radius":u,"--n-close-size":m,"--n-close-icon-size":y,"--n-close-color-hover":w,"--n-close-color-pressed":$,"--n-close-border-radius":C,"--n-close-icon-color":o,"--n-close-icon-color-hover":i,"--n-close-icon-color-pressed":s,"--n-tab-color":l,"--n-tab-font-weight":p,"--n-tab-font-weight-active":v,"--n-tab-padding":T,"--n-tab-padding-vertical":P,"--n-tab-gap":W,"--n-tab-gap-vertical":j,"--n-pane-padding-left":c(R,"left"),"--n-pane-padding-right":c(R,"right"),"--n-pane-padding-top":c(R,"top"),"--n-pane-padding-bottom":c(R,"bottom"),"--n-font-weight-strong":h,"--n-tab-color-segment":x}}),bt=p?g("tabs",D(()=>`${S.value[0]}${t.type[0]}`),lt,t):void 0;return Object.assign({mergedClsPrefix:b,mergedValue:W,renderedNames:new Set,segmentCapsuleElRef:Z,tabsPaneWrapperRef:V,tabsElRef:v,barElRef:h,addTabInstRef:m,xScrollInstRef:w,scrollWrapperElRef:x,addTabFixed:et,tabWrapperStyle:A,handleNavResize:tt,mergedSize:S,handleScroll:it,handleTabsResize:nt,cssVars:p?void 0:lt,themeClass:null==bt?void 0:bt.themeClass,animationDirection:G,renderNameListRef:U,yScrollElRef:$,handleSegmentResize:()=>{J({transitionDisabled:!0})},onAnimationBeforeLeave:function(t){const e=V.value;if(e){M=t.getBoundingClientRect().height;const n=`${M}px`,a=()=>{e.style.height=n,e.style.maxHeight=n};X?(a(),X(),X=null):X=a}},onAnimationEnter:function(t){const e=V.value;if(e){const n=t.getBoundingClientRect().height,a=()=>{document.body.offsetHeight,e.style.maxHeight=`${n}px`,e.style.height=`${Math.max(M,n)}px`};X?(X(),X=null,a()):X=a}},onAnimationAfterEnter:function(){const e=V.value;if(e){e.style.maxHeight="",e.style.height="";const{paneWrapperStyle:n}=t;if("string"==typeof n)e.style.cssText=n;else if(n){const{maxHeight:t,height:a}=n;void 0!==t&&(e.style.maxHeight=t),void 0!==a&&(e.style.height=a)}}},onRender:null==bt?void 0:bt.onRender},st)},render(){const{mergedClsPrefix:e,type:n,placement:a,addTabFixed:r,addable:i,mergedSize:s,renderNameListRef:l,onRender:d,paneWrapperClass:b,paneWrapperStyle:c,$slots:{default:p,prefix:f,suffix:u}}=this;null==d||d();const v=p?at(p()).filter(t=>!0===t.type.__TAB_PANE__):[],g=p?at(p()).filter(t=>!0===t.type.__TAB__):[],h=!g.length,x="card"===n,m="segment"===n,y=!x&&!m&&this.justifyContent;l.value=[];const w=()=>{const t=L("div",{style:this.tabWrapperStyle,class:`${e}-tabs-wrapper`},y?null:L("div",{class:`${e}-tabs-scroll-padding`,style:"top"===a||"bottom"===a?{width:`${this.tabsPadding}px`}:{height:`${this.tabsPadding}px`}}),h?v.map((t,e)=>(l.value.push(t.props.name),Ht(L(Lt,Object.assign({},t.props,{internalCreatedByPane:!0,internalLeftPadded:0!==e&&(!y||"center"===y||"start"===y||"end"===y)}),t.children?{default:t.children.tab}:void 0)))):g.map((t,e)=>(l.value.push(t.props.name),Ht(0===e||y?t:Ot(t)))),!r&&i&&x?Nt(i,0!==(h?v.length:g.length)):null,y?null:L("div",{class:`${e}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return L("div",{ref:"tabsElRef",class:`${e}-tabs-nav-scroll-content`},x&&i?L(o,{onResize:this.handleTabsResize},{default:()=>t}):t,x?L("div",{class:`${e}-tabs-pad`}):null,x?null:L("div",{ref:"barElRef",class:`${e}-tabs-bar`}))},$=m?"top":a;return L("div",{class:[`${e}-tabs`,this.themeClass,`${e}-tabs--${n}-type`,`${e}-tabs--${s}-size`,y&&`${e}-tabs--flex`,`${e}-tabs--${$}`],style:this.cssVars},L("div",{class:[`${e}-tabs-nav--${n}-type`,`${e}-tabs-nav--${$}`,`${e}-tabs-nav`]},t(f,t=>t&&L("div",{class:`${e}-tabs-nav__prefix`},t)),m?L(o,{onResize:this.handleSegmentResize},{default:()=>L("div",{class:`${e}-tabs-rail`,ref:"tabsElRef"},L("div",{class:`${e}-tabs-capsule`,ref:"segmentCapsuleElRef"},L("div",{class:`${e}-tabs-wrapper`},L("div",{class:`${e}-tabs-tab`}))),h?v.map((t,e)=>(l.value.push(t.props.name),L(Lt,Object.assign({},t.props,{internalCreatedByPane:!0,internalLeftPadded:0!==e}),t.children?{default:t.children.tab}:void 0))):g.map((t,e)=>(l.value.push(t.props.name),0===e?t:Ot(t))))}):L(o,{onResize:this.handleNavResize},{default:()=>L("div",{class:`${e}-tabs-nav-scroll-wrapper`,ref:"scrollWrapperElRef"},["top","bottom"].includes($)?L(gt,{ref:"xScrollInstRef",onScroll:this.handleScroll},{default:w}):L("div",{class:`${e}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:"yScrollElRef"},w()))}),r&&i&&x?Nt(i,!0):null,t(u,t=>t&&L("div",{class:`${e}-tabs-nav__suffix`},t))),h&&(!this.animated||"top"!==$&&"bottom"!==$?Et(v,this.mergedValue,this.renderedNames):L("div",{ref:"tabsPaneWrapperRef",style:c,class:[`${e}-tabs-pane-wrapper`,b]},Et(v,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection))))}});function Et(t,e,n,a,r,o,i){const s=[];return t.forEach(t=>{const{name:a,displayDirective:r,"display-directive":o}=t.props,i=t=>r===t||o===t,l=e===a;if(void 0!==t.key&&(t.key=a),l||i("show")||i("show:lazy")&&n.has(a)){n.has(a)||n.add(a);const e=!i("if");s.push(e?G(t,[[V,l]]):t)}}),i?L(Y,{name:`${i}-transition`,onBeforeLeave:a,onEnter:r,onAfterEnter:o},{default:()=>s}):s}function Nt(t,e){return L(Lt,{ref:"addTabInstRef",key:"__addable",name:"__addable",internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:e,disabled:"object"==typeof t&&t.disabled})}function Ot(t){const e=J(t);return e.props?e.props.internalLeftPadded=!0:e.props={internalLeftPadded:!0},e}function Ht(t){return Array.isArray(t.dynamicProps)?t.dynamicProps.includes("internalLeftPadded")||t.dynamicProps.push("internalLeftPadded"):t.dynamicProps=["internalLeftPadded"],t}function Dt(t,e={}){const n=e.platform||"",a=e.projectPath||"",r=st(`config-registry:${t}`,n,e.scope||"",a);return bt(r,e=>K.get(`/config-registry/${t}`,{signal:e}).then(t=>t.data),`config-registry:${t}`,`config-registry:${t}:${n}`)}async function Ft(t){return(await K.post(`/config-registry/${t}/import`)).data}async function It(t,e,n){const a=encodeURIComponent(e);return(await K.put(`/config-registry/${t}/${a}/toggle`,{enabled:n})).data}async function Vt(t,e,n,a){const r=encodeURIComponent(e);return(await K.put(`/config-registry/${t}/${r}/platform/${n}`,{enabled:a})).data}async function Mt(t){return(await K.post(`/config-registry/${t}/sync`)).data}var Xt={key:0,class:"asset-detail-info-section"},Ut={class:"asset-detail-section-title"},qt={class:"asset-detail-box asset-detail-path-box"},Gt={class:"asset-detail-path-text"},Yt={__name:"AssetPathField",props:{path:{type:String,default:""},title:{type:String,default:"路径"}},setup(t){const e=t,n=D(()=>String(e.path||"").trim());async function a(){if(n.value)try{if("manual"===(await ut(n.value))?.method)return void it.warning("自动复制失败,已弹出手动复制框");it.success("已复制路径")}catch{it.error("复制路径失败")}}return(e,r)=>n.value?(N(),Q("div",Xt,[Z("h3",Ut,H(t.title),1),Z("div",qt,[k(U(h),{size:16,class:"asset-detail-path-icon"},{default:I(()=>[k(U(et))]),_:1}),Z("code",Gt,H(n.value),1),k(U(rt),{trigger:"hover"},{trigger:I(()=>[k(U(w),{circle:"",quaternary:"",size:"tiny",class:"asset-detail-path-copy","aria-label":"复制路径",onClick:X(a,["stop"])},{icon:I(()=>[k(U(h),null,{default:I(()=>[k(U(tt))]),_:1})]),_:1})]),default:I(()=>[r[0]||(r[0]=P(" 复制路径 ",-1))]),_:1})])])):T("",!0)}};export{It as a,_t as c,Mt as i,Ft as n,Vt as o,Dt as r,Bt as s,Yt as t};
@@ -0,0 +1 @@
1
+ .chat-message[data-v-35aebdef]{box-sizing:border-box;border:1px solid var(--n-border-color);background:var(--n-color-embedded);border-radius:10px;align-self:flex-start;width:min(86%,920px);margin-bottom:8px;padding:12px 16px;transition:border-color .2s,background-color .2s}.message-user[data-v-35aebdef]{background:#18a0581a;border-color:#18a05859;align-self:flex-end}.message-assistant[data-v-35aebdef]{background:#386bad14;border-color:#386bad4d;align-self:flex-start}.message-header[data-v-35aebdef]{align-items:center;gap:6px;margin-bottom:8px;display:flex}.message-user .message-header[data-v-35aebdef]{justify-content:flex-end}.message-assistant .message-header[data-v-35aebdef]{justify-content:flex-start}.role-icon[data-v-35aebdef]{color:var(--n-text-color-3)}.message-role[data-v-35aebdef]{color:var(--n-text-color-2);font-size:12px;font-weight:600}.message-model[data-v-35aebdef]{color:var(--n-text-color-3);background:var(--n-color-embedded);border-radius:3px;padding:1px 5px;font-size:10px;font-weight:400}.message-time[data-v-35aebdef]{color:var(--n-text-color-3);font-size:11px}.spacer[data-v-35aebdef]{flex:1}.copy-btn[data-v-35aebdef]{opacity:0;cursor:pointer;color:var(--n-text-color-3);padding:2px;transition:all .2s}.chat-message:hover .copy-btn[data-v-35aebdef]{opacity:1}.copy-btn[data-v-35aebdef]:hover{color:var(--n-text-color)}.message-content[data-v-35aebdef]{color:var(--n-text-color);word-break:break-word;font-size:13px;line-height:1.5;overflow-x:hidden}.user-content[data-v-35aebdef]{white-space:pre-wrap;word-break:break-word}.content-item[data-v-35aebdef]{margin-bottom:8px}.image-item[data-v-35aebdef]{background:var(--n-color-embedded);color:var(--n-text-color-2);border-radius:4px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:inline-flex}.image-item img[data-v-35aebdef]{border-radius:6px;max-width:100%;display:block}.markdown-body[data-v-35aebdef]{font-size:13px;line-height:1.5}.markdown-body[data-v-35aebdef] h1,.markdown-body[data-v-35aebdef] h2,.markdown-body[data-v-35aebdef] h3,.markdown-body[data-v-35aebdef] h4,.markdown-body[data-v-35aebdef] h5,.markdown-body[data-v-35aebdef] h6{margin-top:8px;margin-bottom:4px;font-weight:600;line-height:1.3}.markdown-body[data-v-35aebdef] h1:first-child,.markdown-body[data-v-35aebdef] h2:first-child,.markdown-body[data-v-35aebdef] h3:first-child{margin-top:0}.markdown-body[data-v-35aebdef] h1{font-size:1.5em}.markdown-body[data-v-35aebdef] h2{font-size:1.3em}.markdown-body[data-v-35aebdef] h3{font-size:1.15em}.markdown-body[data-v-35aebdef] h4{font-size:1.05em}.markdown-body[data-v-35aebdef] p{margin-bottom:6px}.markdown-body[data-v-35aebdef] p:last-child{margin-bottom:0}.markdown-body[data-v-35aebdef] code{background:var(--n-code-color);border-radius:3px;padding:2px 6px;font-family:Monaco,Consolas,Courier New,monospace;font-size:.9em}.markdown-body[data-v-35aebdef] pre{background:var(--n-code-color);border-radius:6px;max-width:100%;margin:6px 0;padding:8px;overflow-x:auto}.markdown-body[data-v-35aebdef] pre code{background:0 0;padding:0;font-size:12px;line-height:1.5}.markdown-body[data-v-35aebdef] ul,.markdown-body[data-v-35aebdef] ol{margin-bottom:6px;padding-left:18px}.markdown-body[data-v-35aebdef] li{margin-bottom:2px}.markdown-body[data-v-35aebdef] blockquote{border-left:4px solid var(--n-border-color);background:var(--n-color-embedded);color:var(--n-text-color-2);margin:6px 0;padding:4px 10px}.markdown-body[data-v-35aebdef] a{color:var(--n-color-target);text-decoration:none}.markdown-body[data-v-35aebdef] a:hover{text-decoration:underline}.markdown-body[data-v-35aebdef] table{border-collapse:collapse;width:100%;margin:8px 0}.markdown-body[data-v-35aebdef] table th,.markdown-body[data-v-35aebdef] table td{border:1px solid var(--n-border-color);padding:8px 12px}.markdown-body[data-v-35aebdef] table th{background:var(--n-color-embedded);font-weight:600}.markdown-body[data-v-35aebdef] hr{border:none;border-top:1px solid var(--n-border-color);margin:12px 0}.markdown-body[data-v-35aebdef] .hljs{color:var(--n-text-color);background:var(--n-code-color)}.markdown-body[data-v-35aebdef] .hljs-keyword,.markdown-body[data-v-35aebdef] .hljs-selector-tag,.markdown-body[data-v-35aebdef] .hljs-literal,.markdown-body[data-v-35aebdef] .hljs-section,.markdown-body[data-v-35aebdef] .hljs-link{color:#c678dd}.markdown-body[data-v-35aebdef] .hljs-string,.markdown-body[data-v-35aebdef] .hljs-attr,.markdown-body[data-v-35aebdef] .hljs-template-variable,.markdown-body[data-v-35aebdef] .hljs-addition{color:#98c379}.markdown-body[data-v-35aebdef] .hljs-number,.markdown-body[data-v-35aebdef] .hljs-symbol,.markdown-body[data-v-35aebdef] .hljs-bullet,.markdown-body[data-v-35aebdef] .hljs-meta{color:#d19a66}.markdown-body[data-v-35aebdef] .hljs-title,.markdown-body[data-v-35aebdef] .hljs-section,.markdown-body[data-v-35aebdef] .hljs-class .hljs-title{color:#e5c07b}.markdown-body[data-v-35aebdef] .hljs-function,.markdown-body[data-v-35aebdef] .hljs-built_in{color:#61afef}.markdown-body[data-v-35aebdef] .hljs-comment,.markdown-body[data-v-35aebdef] .hljs-quote,.markdown-body[data-v-35aebdef] .hljs-deletion{color:#5c6370;font-style:italic}.message-content.collapsed[data-v-35aebdef]{max-height:200px;position:relative;overflow:hidden}.message-content.collapsed[data-v-35aebdef]:after{content:"";background:linear-gradient(transparent, var(--n-color));pointer-events:none;height:50px;position:absolute;bottom:0;left:0;right:0}.expand-btn[data-v-35aebdef]{color:var(--n-primary-color);cursor:pointer;text-align:center;border-radius:4px;margin-top:8px;padding:4px 12px;font-size:12px;transition:background .2s}.expand-btn[data-v-35aebdef]:hover{background:var(--n-color-embedded)}@media (width<=1024px){.chat-message[data-v-35aebdef]{padding:10px 14px}.message-content[data-v-35aebdef],.markdown-body[data-v-35aebdef]{font-size:12px}.markdown-body[data-v-35aebdef] pre code{font-size:11px}}@media (width<=768px){.chat-message[data-v-35aebdef]{border-radius:6px;width:min(92%,920px);margin-bottom:6px;padding:8px 12px}.message-header[data-v-35aebdef]{flex-wrap:wrap;gap:4px;margin-bottom:6px}.message-role[data-v-35aebdef]{font-size:11px}.message-model[data-v-35aebdef]{font-size:9px}.message-time[data-v-35aebdef]{font-size:10px}.role-icon[data-v-35aebdef]{font-size:14px}.message-content[data-v-35aebdef]{font-size:12px;line-height:1.4}.markdown-body[data-v-35aebdef]{font-size:12px}.markdown-body[data-v-35aebdef] h1{font-size:1.3em}.markdown-body[data-v-35aebdef] h2{font-size:1.2em}.markdown-body[data-v-35aebdef] h3{font-size:1.1em}.markdown-body[data-v-35aebdef] pre{padding:6px}.markdown-body[data-v-35aebdef] pre code{font-size:10px}.markdown-body[data-v-35aebdef] table th,.markdown-body[data-v-35aebdef] table td{padding:6px 8px}}@media (width<=640px){.chat-message[data-v-35aebdef]{width:100%;margin-bottom:4px;padding:6px 10px}.message-header[data-v-35aebdef]{gap:3px;margin-bottom:4px}.message-role[data-v-35aebdef]{font-size:10px}.message-model[data-v-35aebdef]{padding:1px 4px;font-size:8px}.message-time[data-v-35aebdef]{font-size:9px;display:none}.role-icon[data-v-35aebdef]{font-size:12px}.copy-btn[data-v-35aebdef]{opacity:1}.message-content[data-v-35aebdef]{font-size:11px;line-height:1.35}.markdown-body[data-v-35aebdef]{font-size:11px}.markdown-body[data-v-35aebdef] h1{font-size:1.2em}.markdown-body[data-v-35aebdef] h2{font-size:1.1em}.markdown-body[data-v-35aebdef] h3{font-size:1.05em}.markdown-body[data-v-35aebdef] code{padding:1px 4px;font-size:.85em}.markdown-body[data-v-35aebdef] pre{border-radius:4px;padding:4px}.markdown-body[data-v-35aebdef] pre code{font-size:9px;line-height:1.4}.markdown-body[data-v-35aebdef] ul,.markdown-body[data-v-35aebdef] ol{padding-left:14px}.markdown-body[data-v-35aebdef] table th,.markdown-body[data-v-35aebdef] table td{padding:4px 6px;font-size:10px}.expand-btn[data-v-35aebdef]{padding:3px 10px;font-size:11px}.image-item[data-v-35aebdef]{padding:3px 6px;font-size:10px}}@media (width<=480px){.chat-message[data-v-35aebdef]{margin-bottom:3px;padding:4px 8px}.message-header[data-v-35aebdef]{margin-bottom:3px}.message-role[data-v-35aebdef]{font-size:9px}.message-model[data-v-35aebdef]{font-size:7px}.role-icon[data-v-35aebdef],.message-content[data-v-35aebdef],.markdown-body[data-v-35aebdef]{font-size:10px}.markdown-body[data-v-35aebdef] pre code{font-size:8px}.expand-btn[data-v-35aebdef]{padding:2px 8px;font-size:10px}}.drawer-wrapper[data-v-a3f56791]{background:var(--n-color);flex-direction:column;height:100vh;display:flex}.drawer-header[data-v-a3f56791]{border-bottom:1px solid var(--n-border-color);flex-direction:column;flex-shrink:0;gap:6px;padding:16px 20px;display:flex}.header-row[data-v-a3f56791]{align-items:center;gap:8px;display:flex}.session-name[data-v-a3f56791]{color:var(--n-text-color);font-size:16px;font-weight:600}.spacer[data-v-a3f56791]{flex:1}.close-btn[data-v-a3f56791]{cursor:pointer;color:var(--n-text-color-3);transition:color .2s}.close-btn[data-v-a3f56791]:hover{color:var(--n-text-color)}.session-summary[data-v-a3f56791]{color:var(--n-text-color-2);font-size:13px;line-height:1.4}.drawer-body[data-v-a3f56791]{flex:1;min-height:0}.loading-container[data-v-a3f56791],.empty-container[data-v-a3f56791]{justify-content:center;align-items:center;height:100%;display:flex}.history-layout[data-v-a3f56791]{gap:0;height:100%;min-height:0;display:flex}.mobile-toc-toggle[data-v-a3f56791]{padding:12px 14px 0;display:none}.toc-rail[data-v-a3f56791]{border-right:1px solid var(--n-border-color);background:var(--n-color-embedded);flex-direction:column;width:250px;min-height:0;display:flex}.toc-header[data-v-a3f56791]{color:var(--n-text-color-2);border-bottom:1px solid var(--n-border-color);justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;font-size:12px;font-weight:600;display:flex}.toc-header-hint[data-v-a3f56791]{color:var(--n-text-color-3);font-weight:400}.toc-empty[data-v-a3f56791]{color:var(--n-text-color-3);padding:14px;font-size:12px}.toc-list[data-v-a3f56791]{flex:1;padding:8px;overflow-y:auto}.toc-item[data-v-a3f56791]{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;gap:4px;margin-bottom:6px;padding:8px;display:flex}.toc-order[data-v-a3f56791]{color:var(--n-text-color-3);font-size:11px}.toc-item[data-v-a3f56791]:hover{background:#18a05814}.toc-item.active[data-v-a3f56791]{background:#18a0581f;border-color:#18a05859}.toc-preview[data-v-a3f56791]{color:var(--n-text-color);word-break:break-word;font-size:12px;line-height:1.35}.toc-time[data-v-a3f56791]{color:var(--n-text-color-3);font-size:11px}.messages-pane[data-v-a3f56791]{flex:1;min-width:0;min-height:0;position:relative}.messages-container[data-v-a3f56791]{height:100%;padding:16px 20px;overflow:hidden auto}.load-more-top[data-v-a3f56791]{justify-content:center;padding:0 0 16px;display:flex}.messages-list[data-v-a3f56791]{flex-direction:column;gap:4px;display:flex}.scroll-btn[data-v-a3f56791]{background:var(--n-color);border:1px solid var(--n-border-color);cursor:pointer;z-index:10;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex;position:absolute;bottom:20px;right:20px;box-shadow:0 2px 8px #0000001a}.scroll-btn[data-v-a3f56791]:hover{background:var(--n-color-hover);transform:scale(1.05)}@media (width<=820px){.history-layout[data-v-a3f56791]{flex-direction:column}.mobile-toc-toggle[data-v-a3f56791]{display:block}.toc-rail[data-v-a3f56791]{border-right:none;border-bottom:1px solid var(--n-border-color);width:auto;max-height:220px}.toc-rail.mobile-collapsed[data-v-a3f56791]{display:none}.messages-container[data-v-a3f56791]{padding:14px 16px}.scroll-btn[data-v-a3f56791]{bottom:16px;right:16px}}
@@ -0,0 +1 @@
1
+ import{i as e,s,t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as t,D as n,I as l,K as r,O as o,S as u,W as i,Z as c,_t as g,b as m,et as v,g as p,ht as d,mt as f,st as h,w as y,x as b,z as k}from"./vue-vendor-BqZbbXHA.js";import{K as I,V as w,gt as M,j as N,jt as j,ot as x,vt as S,wt as _}from"./icons-B2Vg-IOC.js";import{n as C,t as H}from"./useResponsiveDrawer-B3uojyvV.js";import{I as z,dt as A,pt as L}from"./index-DnEocV0M.js";import{t as T}from"./clipboard-B46yyoz_.js";import{t as $}from"./markdown-u082bbtj.js";import{a as O,c as B,i as D,n as F,o as q,r as P,s as R,t as E}from"./xml-CgY3RMlX.js";import{c as J,l as K,s as W}from"./sessions-Cmy31slD.js";var U=["id"],V={class:"message-header"},Z={key:0,class:"message-model"},G={class:"message-time"},Q={class:"message-time"},X={key:0,class:"user-content"},Y={key:0},ee={key:1,class:"image-item"},se=["src"],ae=["innerHTML"],te=500,ne=a({__name:"ChatMessage",props:{message:{type:Object,required:!0},messageAnchorId:{type:String,default:""}},setup(s){B.registerLanguage("javascript",R),B.registerLanguage("python",P),B.registerLanguage("bash",D),B.registerLanguage("json",O),B.registerLanguage("typescript",q),B.registerLanguage("css",F),B.registerLanguage("xml",E),B.registerLanguage("html",E);const a=s,l=h(!1),u=m(()=>{const e=a.message.content;return"string"==typeof e&&e.length>te}),c=m(()=>{const e=a.message.content;return"string"==typeof e&&e.length>te?e.substring(0,te)+"...":e});$.setOptions({highlight:(e,s)=>{if(s&&B.getLanguage(s))try{return B.highlight(e,{language:s}).value}catch(a){}return B.highlightAuto(e).value},breaks:!0,gfm:!0});const v=m(()=>{if("assistant"===a.message.type&&a.message.content)try{return $.parse(a.message.content)}catch(e){return a.message.content}return""}),k=m(()=>{if("assistant"===a.message.type&&a.message.content)try{const e=a.message.content,s=e.length>te?e.substring(0,te)+"...":e;return $.parse(s)}catch(e){return a.message.content.substring(0,te)+"..."}return""});function I(e){return e?new Date(e).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):""}async function M(){const e="string"==typeof a.message.content?a.message.content:JSON.stringify(a.message.content);try{await T(e,{manualFallback:!1})}catch{}}function j(e){return e?"base64"===e.source?.type&&e.source?.data?`data:${e.source.media_type||"image/png"};base64,${e.source.data}`:"url"===e.source?.type&&e.source?.url?e.source.url:e.url?e.url:null:null}return(a,m)=>(i(),y("div",{id:s.messageAnchorId||void 0,class:d(["chat-message",[`message-${s.message.type}`]])},[b("div",V,["assistant"===s.message.type?(i(),y(p,{key:0},[o(f(e),{size:16,component:f(_),class:"role-icon"},null,8,["component"]),m[1]||(m[1]=b("span",{class:"message-role"},"AI",-1)),s.message.model?(i(),y("span",Z,g(s.message.model),1)):t("",!0),b("span",G,g(s.message.timestamp?I(s.message.timestamp):""),1),m[2]||(m[2]=b("span",{class:"spacer"},null,-1)),b("span",{class:"copy-btn",onClick:M,title:"复制"},[o(f(e),{size:14,component:f(x)},null,8,["component"])])],64)):(i(),y(p,{key:1},[b("span",{class:"copy-btn",onClick:M,title:"复制"},[o(f(e),{size:14,component:f(x)},null,8,["component"])]),m[3]||(m[3]=b("span",{class:"spacer"},null,-1)),b("span",Q,g(s.message.timestamp?I(s.message.timestamp):""),1),m[4]||(m[4]=b("span",{class:"message-role"},"用户",-1)),o(f(e),{size:16,component:f(N),class:"role-icon"},null,8,["component"])],64))]),b("div",{class:d(["message-content",{collapsed:!l.value&&u.value}])},["user"===s.message.type?(i(),y("div",X,["string"==typeof s.message.content?(i(),y(p,{key:0},[n(g(l.value?s.message.content:c.value),1)],64)):Array.isArray(s.message.content)?(i(!0),y(p,{key:1},r(s.message.content,(s,a)=>(i(),y("div",{key:a,class:"content-item"},["text"===s.type?(i(),y("div",Y,g(s.text),1)):"image"===s.type?(i(),y("div",ee,[j(s)?(i(),y("img",{key:0,src:j(s),alt:"会话图片",loading:"lazy"},null,8,se)):(i(),y(p,{key:1},[o(f(e),{size:20,component:f(w)},null,8,["component"]),m[5]||(m[5]=b("span",null,"图片内容",-1))],64))])):t("",!0)]))),128)):t("",!0)])):"assistant"===s.message.type?(i(),y("div",{key:1,class:"assistant-content markdown-body",innerHTML:l.value?v.value:k.value},null,8,ae)):t("",!0)],2),u.value?(i(),y("div",{key:0,class:"expand-btn",onClick:m[0]||(m[0]=e=>l.value=!l.value)},g(l.value?"收起":"展开全部"),1)):t("",!0)],10,U))}},[["__scopeId","data-v-35aebdef"]]),le={class:"drawer-wrapper"},re={class:"header-row"},oe={class:"session-name"},ue={key:0,class:"session-summary"},ie={class:"drawer-body"},ce={key:0,class:"loading-container"},ge={key:1,class:"empty-container"},me={key:2,class:"history-layout"},ve={class:"mobile-toc-toggle"},pe={class:"toc-header"},de={key:0,class:"toc-header-hint"},fe={key:0,class:"toc-empty"},he={key:1,class:"toc-empty"},ye={key:2,class:"toc-list"},be=["onClick"],ke={class:"toc-order"},Ie={class:"toc-preview"},we={class:"toc-time"},Me={class:"messages-pane"},Ne={key:0,class:"load-more-top"},je={class:"messages-list"},xe=20,Se=a({__name:"ChatHistoryDrawer",props:{show:{type:Boolean,default:!1},projectName:{type:String,required:!0},sessionId:{type:String,required:!0},sessionAlias:{type:String,default:""},channel:{type:String,default:"claude"}},emits:["update:show","error"],setup(a,{expose:w,emit:N}){const x=a,T=N,{drawerWidth:$}=H(960,840),O=m({get:()=>x.show,set:e=>T("update:show",e)}),B=h(!1),D=h(!1),F=h([]),q=h([]),P=h({}),R=h(1),E=h(0),U=h(!1),V=h(null),Z=h(null),G=h(!1),Q=h(null),X=h(!1),Y=h(null);let ee=0,se=null,ae="";const te=m(()=>We(x.sessionId).slice(0,16)||"session"),Se=m(()=>{const e=new Map;return F.value.map((s,a)=>{const t=function(e,s){const a=Ke(e);if(a)return`msg-${te.value}-${We(a)}`;const t=e?.timestamp?String(e.timestamp):"",n=e?.type?String(e.type):"unknown",l=function(e){let s=0;for(let a=0;a<e.length;a+=1)s=(s<<5)-s+e.charCodeAt(a),s|=0;return Math.abs(s).toString(36)}(`${n}|${t}|${function(e){const s=e?.content;if("string"==typeof s)return s.slice(0,240);if(Array.isArray(s))try{return JSON.stringify(s).slice(0,240)}catch{return String(s)}return null==s?"":String(s).slice(0,240)}(e)}`),r=t?We(t):`idx${s}`;return`msg-${te.value}-${n}-${r}-${l}`}(s,a),n=e.get(t)||0;return e.set(t,n+1),0===n?t:`${t}-${n+1}`})}),_e=m(()=>{const e=new Map;return F.value.forEach((s,a)=>{!s.anchorOnly&&"user"===s.type&&s.userMessageNumber&&e.set(s.userMessageNumber,Se.value[a])}),e}),Ce=m(()=>F.value.map((e,s)=>({message:e,index:s})).filter(({message:e})=>!e.anchorOnly)),He=m(()=>q.value);function ze(e={}){return[e.lastModified||"",e.size||0].join(":")}async function Ae(){try{D.value=!0;const e=await J(x.projectName,x.sessionId,x.channel);q.value=Array.isArray(e?.items)?e.items:[]}catch(e){}finally{D.value=!1}}async function Le(){const e=await K(x.projectName,x.sessionId,x.channel);return ae=ze(e),e}async function Te(e=1,s={}){if(B.value)return;const{skipFirstPageScroll:a=!1,limitOverride:t=xe}=s;try{B.value=!0;const{messages:s,metadata:n,pagination:r}=await W(x.projectName,x.sessionId,e,t,"desc",x.channel);1===e?(F.value=s.reverse(),P.value=n):F.value=[...s.reverse(),...F.value],R.value=r.page,E.value=r.total,U.value=r.hasMore,1===e&&l(async()=>{Y.value?await qe(Y.value,{allowLoadMore:!0}):a||Oe(!1),De()})}catch(n){const e="加载聊天记录失败: "+(n.response?.data?.error||n.message);T("error",e)}finally{B.value=!1}}function $e(){if(!U.value||B.value)return;const e=V.value,s=e?.scrollHeight||0;Te(R.value+1).then(()=>{l(()=>{if(e){const a=e.scrollHeight;e.scrollTop=a-s,De()}})})}function Oe(e=!0){l(()=>{const s=V.value;s&&(s.scrollTo({top:s.scrollHeight,behavior:e?"smooth":"auto"}),De())})}function Be(e){const s=e.target;if(!s)return;const{scrollTop:a,scrollHeight:t,clientHeight:n}=s;G.value=t-a-n>200,a<100&&U.value&&!B.value&&$e(),De()}function De(){ee||(ee=requestAnimationFrame(()=>{ee=0,function(){const e=V.value;if(!e||0===He.value.length)return void(Q.value=null);const s=Array.from(_e.value.keys()).sort((e,s)=>e-s);if(!s.length)return void(Q.value=He.value[He.value.length-1]?.userMessageNumber||null);const a=Math.max(0,e.scrollHeight-e.clientHeight);if(a>0&&a-e.scrollTop<=6)return void(Q.value=s[s.length-1]);const t=e.scrollTop,n=t+e.clientHeight,l=t+Ze();let r=null,o=null;for(const i of He.value){const s=Ue(_e.value.get(i.userMessageNumber));if(!s)continue;const a=Ve(s,e),u=a+s.offsetHeight;a<=l+1&&(o=i),!r&&u>t&&a<n&&(r=i)}const u=o?.userMessageNumber||r?.userMessageNumber||s[0]||He.value[0].userMessageNumber;u&&(Q.value=u)}()}))}function Fe(e,s=!0){const a=V.value;if(!a||!e)return!1;const t=Ue(e);if(!t)return!1;const n=Ve(t,a),l=Math.max(0,a.scrollHeight-a.clientHeight),r=Qe(n-Ze(),0,l);return a.scrollTo({top:r,behavior:s?"smooth":"auto"}),De(),!0}async function qe(e,s={}){if(!e)return!1;const{allowLoadMore:a=!1}=s;let t=0;for(;t<50;){t+=1;const s=Pe(e);if(s&&Fe(s,!0))return Number.isInteger(e.userMessageNumber)&&(Q.value=e.userMessageNumber),Y.value=null,!0;if(!a||!U.value||B.value)break;const n=R.value;if(await Te(R.value+1),R.value===n)break}return Y.value=null,De(),!1}function Pe(e){if(e.anchorId&&"string"==typeof e.anchorId)return e.anchorId;if(Number.isInteger(e.userMessageNumber))return _e.value.get(e.userMessageNumber)||"";if("number"==typeof e.messageIndex&&e.messageIndex>=0)return Se.value[e.messageIndex]||"";if(e.messageId){const s=String(e.messageId),a=F.value.findIndex(e=>Ke(e)===s);if(a>=0)return Se.value[a]}return""}async function Re(){if(B.value)return;const e=V.value,s=!e||e.scrollHeight-e.scrollTop-e.clientHeight<=40,a=e?.scrollTop||0,t=Math.max(R.value,1);try{B.value=!0;const e=[];for(let a=1;a<=t;a+=1)e.push(await W(x.projectName,x.sessionId,a,xe,"desc",x.channel));const s=[];for(let a=e.length-1;a>=0;a-=1){const t=e[a],n=Array.isArray(t?.messages)?t.messages:[];s.push(...n.slice().reverse())}F.value=s,P.value=e[0]?.metadata||P.value,E.value=e[0]?.pagination?.total||s.length,R.value=t,U.value=t*xe<E.value}finally{B.value=!1}await l(),e&&(s?Oe(!1):(e.scrollTop=Qe(a,0,Math.max(0,e.scrollHeight-e.clientHeight)),De()))}function Ee(){se&&(clearInterval(se),se=null)}function Je(){Ee(),se=setInterval(()=>{O.value&&async function(){try{const e=ze(await K(x.projectName,x.sessionId,x.channel));if(!e)return;if(ae&&e!==ae)return ae=e,void(await Promise.all([Ae(),Re()]));ae=e}catch(e){}}()},3e3)}function Ke(e){return e&&"object"==typeof e?String(e.messageId||e.id||e.uuid||e.turnId||""):""}function We(e){return String(e||"").toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)}function Ue(e){const s=V.value;if(!s||!e)return null;const a=document.getElementById(e);return a&&s.contains(a)?a:null}function Ve(e,s){const a=s.getBoundingClientRect(),t=e.getBoundingClientRect();return s.scrollTop+(t.top-a.top)}function Ze(){return(Z.value?.offsetHeight||0)+12}function Ge(e){if(!e)return"";const s=new Date(e);return Number.isNaN(s.getTime())?"":s.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}function Qe(e,s,a){return Math.min(Math.max(e,s),a)}return c(He,()=>{He.value.length?(He.value.some(e=>e.userMessageNumber===Q.value)||(Q.value=He.value[0].userMessageNumber),De()):Q.value=null},{deep:!0}),c(O,e=>{e?l(()=>{De()}):Ee()}),k(()=>{ee&&(cancelAnimationFrame(ee),ee=0),Ee()}),w({open:function(e){Ee(),Y.value=function(e){if(!e||"object"!=typeof e)return null;const s=e.jumpTo&&"object"==typeof e.jumpTo?e.jumpTo:e,a={anchorId:"string"==typeof s.anchorId?s.anchorId:"",messageId:s.messageId||s.id||"",messageIndex:Number.isInteger(s.messageIndex)?s.messageIndex:null,userMessageNumber:Number.isInteger(s.userMessageNumber)?s.userMessageNumber:null};return a.anchorId||a.messageId||null!==a.messageIndex||null!==a.userMessageNumber?a:null}(e),X.value=!1,F.value=[],q.value=[],P.value={},R.value=1,E.value=0,U.value=!1,G.value=!1,Q.value=null,ae="",Promise.all([Ae(),Te(1,{skipFirstPageScroll:Boolean(Y.value)}),Le()]).then(()=>{O.value&&Je()}).catch(()=>{})}}),(l,c)=>(i(),u(f(C),{show:O.value,"onUpdate:show":c[2]||(c[2]=e=>O.value=e),width:f($),placement:"right","auto-focus":!1,"trap-focus":!1,"block-scroll":!1},{default:v(()=>[b("div",le,[b("div",{ref_key:"headerRef",ref:Z,class:"drawer-header"},[b("div",re,[o(f(e),{size:18,component:f(_)},null,8,["component"]),b("span",oe,g(a.sessionAlias||a.sessionId.substring(0,8))+" ("+g(E.value)+")",1),P.value.gitBranch?(i(),u(f(A),{key:0,size:"small",type:"info"},{icon:v(()=>[o(f(e),{component:f(I)},null,8,["component"])]),default:v(()=>[n(" "+g(P.value.gitBranch),1)]),_:1})):t("",!0),c[3]||(c[3]=b("span",{class:"spacer"},null,-1)),o(f(e),{size:20,component:f(M),class:"close-btn",onClick:c[0]||(c[0]=e=>O.value=!1)},null,8,["component"])]),P.value.summary?(i(),y("div",ue,g(P.value.summary),1)):t("",!0)],512),b("div",ie,[B.value&&0===F.value.length?(i(),y("div",ce,[o(f(z),{size:"medium"},{description:v(()=>[...c[4]||(c[4]=[n("加载聊天记录...",-1)])]),_:1})])):B.value||0!==F.value.length?(i(),y("div",me,[b("div",ve,[o(f(s),{tertiary:"",size:"small",onClick:c[1]||(c[1]=e=>X.value=!X.value)},{default:v(()=>[n(g(X.value?"展开用户目录":"收起用户目录"),1)]),_:1})]),b("aside",{class:d(["toc-rail",{"mobile-collapsed":X.value}])},[b("div",pe,[c[5]||(c[5]=n(" 用户目录 ",-1)),D.value?(i(),y("span",de,"加载中...")):t("",!0)]),D.value&&0===He.value.length?(i(),y("div",fe,"目录加载中...")):0===He.value.length?(i(),y("div",he,"暂无用户消息")):(i(),y("div",ye,[(i(!0),y(p,null,r(He.value,e=>(i(),y("button",{key:e.userMessageNumber,type:"button",class:d(["toc-item",{active:Q.value===e.userMessageNumber}]),onClick:s=>function(e){e?.userMessageNumber&&(Q.value=e.userMessageNumber,qe({userMessageNumber:e.userMessageNumber},{allowLoadMore:!0}))}(e)},[b("span",ke,"#"+g(e.userMessageNumber),1),b("span",Ie,g(e.preview),1),b("span",we,g(Ge(e.timestamp)),1)],10,be))),128))]))],2),b("div",Me,[b("div",{class:"messages-container",ref_key:"messagesContainer",ref:V,onScroll:Be},[U.value?(i(),y("div",Ne,[o(f(s),{loading:B.value,onClick:$e,size:"small",secondary:""},{icon:v(()=>[o(f(e),{component:f(S)},null,8,["component"])]),default:v(()=>[c[6]||(c[6]=n(" 加载更早的消息 ",-1))]),_:1},8,["loading"])])):t("",!0),b("div",je,[(i(!0),y(p,null,r(Ce.value,({message:e,index:s})=>(i(),u(ne,{key:Se.value[s]||s,message:e,"message-anchor-id":Se.value[s]},null,8,["message","message-anchor-id"]))),128))])],544),G.value?(i(),y("div",{key:0,class:"scroll-btn",onClick:Oe},[o(f(e),{size:18,component:f(j)},null,8,["component"])])):t("",!0)])])):(i(),y("div",ge,[o(f(L),{description:"暂无聊天记录"})]))])])]),_:1},8,["show","width"]))}},[["__scopeId","data-v-a3f56791"]]);export{Se as default};
@@ -0,0 +1 @@
1
+ import{$t as e,Dt as r,E as a,I as t,N as n,Qt as l,St as i,Tt as o,Yt as s,bn as d,en as c,gn as p,gt as m,hn as g,ht as v,j as f,rn as u,vn as h,wt as x,yn as w}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as C,G as b,M as y,N as $,b as z,dt as A,f as P,st as N,tt as D}from"./vue-vendor-BqZbbXHA.js";import{_t as _,it as S,jt as E,ut as R}from"./index-DnEocV0M.js";var I=C({name:"ChevronLeft",render:()=>y("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},y("path",{d:"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z",fill:"currentColor"}))}),j=p("collapse","width: 100%;",[p("collapse-item","\n font-size: var(--n-font-size);\n color: var(--n-text-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n margin: var(--n-item-margin);\n ",[w("disabled",[h("header","cursor: not-allowed;",[h("header-main","\n color: var(--n-title-text-color-disabled);\n "),p("collapse-item-arrow","\n color: var(--n-arrow-color-disabled);\n ")])]),p("collapse-item","margin-left: 32px;"),g("&:first-child","margin-top: 0;"),g("&:first-child >",[h("header","padding-top: 0;")]),w("left-arrow-placement",[h("header",[p("collapse-item-arrow","margin-right: 4px;")])]),w("right-arrow-placement",[h("header",[p("collapse-item-arrow","margin-left: 4px;")])]),h("content-wrapper",[h("content-inner","padding-top: 16px;"),R({duration:"0.15s"})]),w("active",[h("header",[w("active",[p("collapse-item-arrow","transform: rotate(90deg);")])])]),g("&:not(:first-child)","border-top: 1px solid var(--n-divider-color);"),d("disabled",[w("trigger-area-main",[h("header",[h("header-main","cursor: pointer;"),p("collapse-item-arrow","cursor: default;")])]),w("trigger-area-arrow",[h("header",[p("collapse-item-arrow","cursor: pointer;")])]),w("trigger-area-extra",[h("header",[h("header-extra","cursor: pointer;")])])]),h("header","\n font-size: var(--n-title-font-size);\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n transition: color .3s var(--n-bezier);\n position: relative;\n padding: var(--n-title-padding);\n color: var(--n-title-text-color);\n ",[h("header-main","\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n font-weight: var(--n-title-font-weight);\n transition: color .3s var(--n-bezier);\n flex: 1;\n color: var(--n-title-text-color);\n "),h("header-extra","\n display: flex;\n align-items: center;\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n "),p("collapse-item-arrow","\n display: flex;\n transition:\n transform .15s var(--n-bezier),\n color .3s var(--n-bezier);\n font-size: 18px;\n color: var(--n-arrow-color);\n ")])])]),k=Object.assign(Object.assign({},n.props),{defaultExpandedNames:{type:[Array,String],default:null},expandedNames:[Array,String],arrowPlacement:{type:String,default:"left"},accordion:{type:Boolean,default:!1},displayDirective:{type:String,default:"if"},triggerAreas:{type:Array,default:()=>["main","extra","arrow"]},onItemHeaderClick:[Function,Array],"onUpdate:expandedNames":[Function,Array],onUpdateExpandedNames:[Function,Array],onExpandedNamesChange:{type:[Function,Array],validator:()=>!0,default:void 0}}),T=s("n-collapse"),F=C({name:"Collapse",props:k,slots:Object,setup(e,{slots:r}){const{mergedClsPrefixRef:a,inlineThemeDisabled:i,mergedRtlRef:s}=m(e),d=N(e.defaultExpandedNames),c=z(()=>e.expandedNames),p=l(c,d),g=n("Collapse","-collapse",j,S,e,a);function f(r){const{"onUpdate:expandedNames":a,onUpdateExpandedNames:t,onExpandedNamesChange:n}=e;t&&o(t,r),a&&o(a,r),n&&o(n,r),d.value=r}function u(r){const{onItemHeaderClick:a}=e;a&&o(a,r)}b(T,{props:e,mergedClsPrefixRef:a,expandedNamesRef:p,slots:r,toggleItem:function(r,a,t){const{accordion:n}=e,{value:l}=p;if(n)r?(f([a]),u({name:a,expanded:!0,event:t})):(f([]),u({name:a,expanded:!1,event:t}));else if(Array.isArray(l)){const e=l.slice(),r=e.findIndex(e=>a===e);~r?(e.splice(r,1),f(e),u({name:a,expanded:!1,event:t})):(e.push(a),f(e),u({name:a,expanded:!0,event:t}))}else f([a]),u({name:a,expanded:!0,event:t})}});const h=t("Collapse",s,a),x=z(()=>{const{common:{cubicBezierEaseInOut:e},self:{titleFontWeight:r,dividerColor:a,titlePadding:t,titleTextColor:n,titleTextColorDisabled:l,textColor:i,arrowColor:o,fontSize:s,titleFontSize:d,arrowColorDisabled:c,itemMargin:p}}=g.value;return{"--n-font-size":s,"--n-bezier":e,"--n-text-color":i,"--n-divider-color":a,"--n-title-padding":t,"--n-title-font-size":d,"--n-title-text-color":n,"--n-title-text-color-disabled":l,"--n-title-font-weight":r,"--n-arrow-color":o,"--n-arrow-color-disabled":c,"--n-item-margin":p}}),w=i?v("collapse",void 0,x,e):void 0;return{rtlEnabled:h,mergedTheme:g,mergedClsPrefix:a,cssVars:i?void 0:x,themeClass:null==w?void 0:w.themeClass,onRender:null==w?void 0:w.onRender}},render(){var e;return null===(e=this.onRender)||void 0===e||e.call(this),y("div",{class:[`${this.mergedClsPrefix}-collapse`,this.rtlEnabled&&`${this.mergedClsPrefix}-collapse--rtl`,this.themeClass],style:this.cssVars},this.$slots)}}),B=C({name:"CollapseItemContent",props:{displayDirective:{type:String,required:!0},show:Boolean,clsPrefix:{type:String,required:!0}},setup:e=>({onceTrue:c(A(e,"show"))}),render(){return y(a,null,{default:()=>{const{show:e,displayDirective:r,onceTrue:a,clsPrefix:t}=this,n="show"===r&&a,l=y("div",{class:`${t}-collapse-item__content-wrapper`},y("div",{class:`${t}-collapse-item__content-inner`},this.$slots));return n?D(l,[[P,e]]):e?l:null}})}}),L=C({name:"CollapseItem",props:{title:String,name:[String,Number],disabled:Boolean,displayDirective:String},setup(a){const{mergedRtlRef:n}=m(a),l=u(),i=e(()=>{var e;return null!==(e=a.name)&&void 0!==e?e:l}),o=$(T);o||r("collapse-item","`n-collapse-item` must be placed inside `n-collapse`.");const{expandedNamesRef:s,props:d,mergedClsPrefixRef:c,slots:p}=o,g=z(()=>{const{value:e}=s;if(Array.isArray(e)){const{value:r}=i;return!~e.findIndex(e=>e===r)}if(e){const{value:r}=i;return r!==e}return!0});return{rtlEnabled:t("Collapse",n,c),collapseSlots:p,randomName:l,mergedClsPrefix:c,collapsed:g,triggerAreas:A(d,"triggerAreas"),mergedDisplayDirective:z(()=>{const{displayDirective:e}=a;return e||d.displayDirective}),arrowPlacement:z(()=>d.arrowPlacement),handleClick(e){let r="main";E(e,"arrow")&&(r="arrow"),E(e,"extra")&&(r="extra"),d.triggerAreas.includes(r)&&o&&!a.disabled&&o.toggleItem(g.value,i.value,e)}}},render(){const{collapseSlots:e,$slots:r,arrowPlacement:a,collapsed:t,mergedDisplayDirective:n,mergedClsPrefix:l,disabled:o,triggerAreas:s}=this,d=i(r.header,{collapsed:t},()=>[this.title]),c=r["header-extra"]||e["header-extra"],p=r.arrow||e.arrow;return y("div",{class:[`${l}-collapse-item`,`${l}-collapse-item--${a}-arrow-placement`,o&&`${l}-collapse-item--disabled`,!t&&`${l}-collapse-item--active`,s.map(e=>`${l}-collapse-item--trigger-area-${e}`)]},y("div",{class:[`${l}-collapse-item__header`,!t&&`${l}-collapse-item__header--active`]},y("div",{class:`${l}-collapse-item__header-main`,onClick:this.handleClick},"right"===a&&d,y("div",{class:`${l}-collapse-item-arrow`,key:this.rtlEnabled?0:1,"data-arrow":!0},i(p,{collapsed:t},()=>[y(f,{clsPrefix:l},{default:()=>this.rtlEnabled?y(I,null):y(_,null)})])),"left"===a&&d),x(c,{collapsed:t},e=>y("div",{class:`${l}-collapse-item__header-extra`,onClick:this.handleClick,"data-extra":!0},e))),y(B,{clsPrefix:l,displayDirective:n,show:!t},r))}});export{F as n,L as t};
@@ -0,0 +1 @@
1
+ .asset-meta-item[data-v-7ffa5383]{max-width:150px}.config-edit-header[data-v-1ab931be]{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:18px;margin:-4px 0 18px;padding:16px;display:flex}.config-edit-identity[data-v-1ab931be]{align-items:center;gap:12px;min-width:0;display:flex}.config-edit-icon[data-v-1ab931be]{width:42px;height:42px;color:var(--primary-color);background:oklch(62% .15 151/.1);border:1px solid oklch(62% .15 151/.28);border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.config-edit-title-stack[data-v-1ab931be]{flex-direction:column;gap:3px;min-width:0;display:flex}.config-edit-kicker[data-v-1ab931be]{color:var(--text-tertiary);font-size:12px;line-height:1.3}.config-edit-title[data-v-1ab931be]{color:var(--text-primary);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:650;line-height:1.3;overflow:hidden}.config-edit-badges[data-v-1ab931be]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.command-workbench[data-v-1ab931be]{grid-template-columns:minmax(320px,.88fr) minmax(420px,1.12fr);align-items:stretch;gap:14px;display:grid}.command-sidebar[data-v-1ab931be]{flex-direction:column;gap:14px;min-width:0;display:flex}.config-edit-section[data-v-1ab931be]{border:1px solid var(--border-primary);background:var(--bg-primary);border-radius:8px;min-width:0;padding:16px}.content-section[data-v-1ab931be]{flex-direction:column;display:flex}.section-heading[data-v-1ab931be]{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:14px;font-size:13px;font-weight:650;display:flex}.field-grid[data-v-1ab931be]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.scope-picker[data-v-1ab931be]{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;width:100%;display:grid}.scope-picker[data-v-1ab931be] .n-radio{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;align-items:flex-start;min-width:0;margin:0;padding:10px}.scope-option[data-v-1ab931be]{flex-direction:column;gap:2px;min-width:0;display:flex}.scope-title[data-v-1ab931be]{color:var(--text-primary);font-size:13px;font-weight:600}.scope-path[data-v-1ab931be]{overflow-wrap:anywhere;color:var(--text-tertiary);font-family:var(--font-mono);font-size:11px;line-height:1.4}.platform-note[data-v-1ab931be]{border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-secondary);border-radius:8px;align-items:flex-start;gap:8px;padding:11px 12px;font-size:12px;line-height:1.6;display:flex}.command-token-box[data-v-1ab931be]{grid-template-columns:1fr;gap:8px;display:grid}.token-row[data-v-1ab931be]{border:1px solid var(--border-primary);background:var(--bg-secondary);min-width:0;color:var(--text-tertiary);border-radius:8px;align-items:center;gap:8px;padding:9px 10px;font-size:12px;display:flex}.token-row code[data-v-1ab931be]{color:var(--text-primary);font-family:var(--font-mono);font-size:12px}.editor-form-item[data-v-1ab931be]{flex:1;margin-bottom:0}.editor-form-item[data-v-1ab931be] .markdown-editor,.editor-form-item[data-v-1ab931be] .editor-container,.editor-form-item[data-v-1ab931be] .n-input,.editor-form-item[data-v-1ab931be] .n-input-wrapper,.editor-form-item[data-v-1ab931be] textarea{min-height:100%}.modal-footer[data-v-1ab931be]{justify-content:flex-end;gap:10px;padding-top:2px;display:flex}@media (width<=760px){.config-edit-header[data-v-1ab931be]{flex-direction:column}.command-workbench[data-v-1ab931be],.field-grid[data-v-1ab931be],.scope-picker[data-v-1ab931be],.command-token-box[data-v-1ab931be]{grid-template-columns:1fr}}.back-btn[data-v-5e3c90d3]{padding:4px}.action-btn[data-v-5e3c90d3]{padding:4px 8px}.drawer-header[data-v-bfb32ef8]{color:var(--text-primary);font-size:16px;font-weight:600}
@@ -0,0 +1 @@
1
+ import{i as a,s as e,t as s}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as l,D as t,K as n,O as o,S as i,V as c,W as d,Y as u,Z as m,_t as r,b as p,et as v,g as f,ht as g,m as y,mt as b,r as h,st as w,w as k,x as _}from"./vue-vendor-BqZbbXHA.js";import{n as j}from"./client-UDwXBP9i.js";import{r as C,s as x,t as z}from"./platforms-CBkB45JP.js";import{B as $,Ft as P,Mt as U,N as I,U as T,_ as B,a as H,h as S,lt as D,tt as O,ut as L,v as M,w as R}from"./icons-B2Vg-IOC.js";import{l as E}from"./light-Cp0t7v32.js";import{a as q,c as F,i as N,o as V,r as A,s as G,t as W}from"./AssetPathField-CrJtRKHy.js";import{n as Y,t as K}from"./useResponsiveDrawer-B3uojyvV.js";import{t as Z}from"./DrawerContent-ChXgZ1Xm.js";import{$ as J,B as Q,F as X,I as aa,N as ea,Nt as sa,O as la,V as ta,ct as na,dt as oa,et as ia,k as ca,nt as da,pt as ua,tt as ma}from"./index-DnEocV0M.js";import{t as ra}from"./MarkdownEditor-rEZ-c72L.js";async function pa(a=null,e="claude",s={}){const l=la("commands",e,s.scope||"",a||"");return ca(l,s=>j.get("/commands",{params:a?{projectPath:a,platform:e}:{platform:e},signal:s}).then(a=>a.data),"commands",`commands:${e}`)}var va={class:"asset-card-main"},fa={class:"asset-card-top"},ga={class:"asset-card-title-stack"},ya={class:"asset-card-title-row"},ba={class:"asset-name mono"},ha={class:"asset-tags"},wa={key:0,class:"asset-description"},ka={class:"asset-meta"},_a={key:0,class:"asset-meta-item"},ja={key:1,class:"asset-meta-item"},Ca={class:"asset-card-actions"},xa={class:"asset-platform-strip"},za=["onClick"],$a=s({__name:"CommandCard",props:{command:{type:Object,required:!0},deleting:{type:Boolean,default:!1},registryInfo:{type:Object,default:null},toggling:{type:Boolean,default:!1}},emits:["click","edit","delete","toggle-enabled","toggle-platform"],setup(s,{emit:c}){const m=s,h=c,{byCapability:w}=sa(),j=p(()=>w("commands"));return(c,p)=>{return d(),k("div",{class:g(["command-card asset-card",{"is-project":"project"===s.command.scope,"is-managed":s.registryInfo}]),onClick:p[4]||(p[4]=a=>h("click",s.command))},[_("div",va,[_("div",fa,[_("div",ga,[_("div",ya,[_("span",{class:g(["asset-status-dot",{active:s.registryInfo?.enabled||"project"===s.command.scope}])},null,2),_("span",ba,"/"+r(s.command.name),1)]),_("div",ha,[o(b(oa),{type:"user"===s.command.scope?"info":"success",size:"tiny",bordered:!1},{default:v(()=>[t(r("user"===s.command.scope?"用户级":"项目级"),1)]),_:1},8,["type"]),s.registryInfo?(d(),i(b(oa),{key:0,type:"success",size:"tiny",bordered:!1},{default:v(()=>[...p[5]||(p[5]=[t("托管",-1)])]),_:1})):l("",!0),s.command.namespace?(d(),i(b(oa),{key:1,type:"warning",size:"tiny",bordered:!1},{default:v(()=>[t(r(s.command.namespace),1)]),_:1})):l("",!0)])])]),s.command.description?(d(),k("div",wa,r((w=s.command.description,w?w.length>80?w.slice(0,80)+"...":w:"")),1)):l("",!0),_("div",ka,[s.command.allowedTools?(d(),k("span",_a,[o(b(a),{size:"12"},{default:v(()=>[o(b(T))]),_:1}),t(" "+r(s.command.allowedTools),1)])):l("",!0),s.command.argumentHint?(d(),k("span",ja,[o(b(a),{size:"12"},{default:v(()=>[o(b(L))]),_:1}),t(" "+r(s.command.argumentHint),1)])):l("",!0)])]),_("div",Ca,[s.registryInfo?(d(),k(f,{key:0},[o(b(J),{trigger:"hover"},{trigger:v(()=>[o(b(X),{value:s.registryInfo.enabled,size:"small",loading:s.toggling,"onUpdate:value":p[0]||(p[0]=a=>h("toggle-enabled",s.command,a)),onClick:p[1]||(p[1]=y(()=>{},["stop"]))},null,8,["value","loading"])]),default:v(()=>[t(" "+r(s.registryInfo.enabled?"已启用":"已禁用"),1)]),_:1}),_("div",xa,[(d(!0),k(f,null,n(j.value,e=>(d(),i(b(J),{key:e.key,trigger:"hover"},{trigger:v(()=>[_("span",{class:g(["asset-platform-icon",{active:s.registryInfo.platforms?.[e.key]}]),onClick:y(a=>h("toggle-platform",s.command,e.key,!s.registryInfo.platforms?.[e.key]),["stop"])},[o(b(a),{size:"14"},{default:v(()=>[(d(),i(u(e.icon)))]),_:2},1024)],10,za)]),default:v(()=>[t(" "+r(e.label||e.title||e.key)+" "+r(s.registryInfo.platforms?.[e.key]?"已启用":"未启用"),1)]),_:2},1024))),128))])],64)):(d(),k(f,{key:1},[o(b(e),{size:"tiny",tertiary:"",onClick:p[2]||(p[2]=y(a=>h("edit",s.command),["stop"]))},{default:v(()=>[...p[6]||(p[6]=[t(" 编辑 ",-1)])]),_:1}),o(b(e),{size:"tiny",tertiary:"",type:"error",loading:m.deleting,onClick:p[3]||(p[3]=y(a=>h("delete",s.command),["stop"]))},{default:v(()=>[...p[7]||(p[7]=[t(" 删除 ",-1)])]),_:1},8,["loading"])],64))])],2);var w}}},[["__scopeId","data-v-7ffa5383"]]),Pa={class:"asset-detail-drawer-header"},Ua={class:"asset-detail-identity"},Ia={class:"asset-detail-heading"},Ta={class:"asset-detail-name mono"},Ba={class:"asset-detail-meta"},Ha={key:2,class:"asset-detail-subtle"},Sa={class:"asset-detail-body"},Da={class:"asset-detail-container"},Oa={class:"asset-detail-info-section"},La={class:"asset-detail-description"},Ma={class:"asset-detail-info-section"},Ra={class:"asset-detail-list"},Ea={class:"asset-detail-row"},qa={class:"asset-detail-value"},Fa={key:0,class:"asset-detail-row"},Na={class:"asset-detail-value"},Va={key:1,class:"asset-detail-row"},Aa={class:"asset-detail-value"},Ga={key:2,class:"asset-detail-row"},Wa={class:"asset-detail-value"},Ya={key:3,class:"asset-detail-row"},Ka={class:"asset-detail-value"},Za={key:4,class:"asset-detail-row"},Ja={class:"asset-detail-value"},Qa={key:0,class:"asset-detail-info-section"},Xa={class:"asset-detail-box"},ae={class:"asset-detail-code"},ee={key:1,class:"asset-detail-empty"},se={__name:"CommandDetailDrawer",props:{visible:{type:Boolean,default:!1},command:{type:Object,default:null},platform:{type:String,default:"claude"}},emits:["update:visible"],setup(e,{emit:s}){const n=z(),{drawerWidth:c}=K(600),u=e,m=s,f=p({get:()=>u.visible,set:a=>m("update:visible",a)}),g={height:"100%",minHeight:0,overflow:"hidden"},y=p(()=>{const a=n.get(u.platform)||x(u.platform);return a.label||a.title||""}),h=p(()=>u.command?.fullPath||u.command?.path||"");function w(a){return"project"===a?"项目级":"用户级"}return(s,n)=>(d(),i(b(Y),{show:f.value,"onUpdate:show":n[0]||(n[0]=a=>f.value=a),width:b(c),placement:"right","show-mask":!0},{default:v(()=>[o(b(Z),{closable:"","native-scrollbar":!1,"body-content-style":g},{header:v(()=>[_("div",Pa,[_("div",Ua,[o(b(a),{size:20,class:"asset-detail-icon"},{default:v(()=>[o(b(H))]),_:1}),_("div",Ia,[_("span",Ta,r(e.command?.name?`/${e.command.name}`:"命令详情"),1),_("div",Ba,[e.command?.scope?(d(),i(b(oa),{key:0,type:"project"===e.command.scope?"success":"info",size:"tiny",bordered:!1},{default:v(()=>[t(r(w(e.command.scope)),1)]),_:1},8,["type"])):l("",!0),e.command?.namespace?(d(),i(b(oa),{key:1,type:"warning",size:"tiny",bordered:!1},{default:v(()=>[t(r(e.command.namespace),1)]),_:1})):l("",!0),y.value?(d(),k("span",Ha,r(y.value),1)):l("",!0)])])])])]),default:v(()=>[_("div",Sa,[e.command?(d(),i(b(G),{key:0,type:"line",animated:"",class:"asset-detail-tabs"},{default:v(()=>[o(b(F),{name:"overview",tab:"概览"},{default:v(()=>[_("div",Da,[_("div",Oa,[n[1]||(n[1]=_("h3",{class:"asset-detail-section-title"},"描述",-1)),_("p",La,r(e.command.description||"暂无描述"),1)]),_("div",Ma,[n[8]||(n[8]=_("h3",{class:"asset-detail-section-title"},"基础信息",-1)),_("div",Ra,[_("div",Ea,[n[2]||(n[2]=_("span",{class:"asset-detail-label"},"作用域",-1)),_("span",qa,r(w(e.command.scope)),1)]),e.command.namespace?(d(),k("div",Fa,[n[3]||(n[3]=_("span",{class:"asset-detail-label"},"命名空间",-1)),_("span",Na,r(e.command.namespace),1)])):l("",!0),e.command.argumentHint?(d(),k("div",Va,[n[4]||(n[4]=_("span",{class:"asset-detail-label"},"参数提示",-1)),_("span",Aa,r(e.command.argumentHint),1)])):l("",!0),e.command.model?(d(),k("div",Ga,[n[5]||(n[5]=_("span",{class:"asset-detail-label"},"模型",-1)),_("span",Wa,r(e.command.model),1)])):l("",!0),e.command.agent?(d(),k("div",Ya,[n[6]||(n[6]=_("span",{class:"asset-detail-label"},"Agent",-1)),_("span",Ka,r(e.command.agent),1)])):l("",!0),""!==e.command.subtask&&void 0!==e.command.subtask&&null!==e.command.subtask?(d(),k("div",Za,[n[7]||(n[7]=_("span",{class:"asset-detail-label"},"Subtask",-1)),_("span",Ja,r(String(e.command.subtask)),1)])):l("",!0)])]),e.command.allowedTools?(d(),k("div",Qa,[n[9]||(n[9]=_("h3",{class:"asset-detail-section-title"},"允许的工具",-1)),_("div",Xa,[o(b(a),{size:16},{default:v(()=>[o(b(T))]),_:1}),_("code",null,r(e.command.allowedTools),1)])])):l("",!0),o(W,{path:h.value},null,8,["path"])])]),_:1}),o(b(F),{name:"content",tab:"内容"},{default:v(()=>[_("pre",ae,r(e.command.body||"(无内容)"),1)]),_:1})]),_:1})):(d(),k("div",ee,[o(b(a),{size:44,class:"asset-detail-empty-icon"},{default:v(()=>[o(b(O))]),_:1}),n[10]||(n[10]=_("p",null,"未选择命令",-1))]))])]),_:1})]),_:1},8,["show","width"]))}},le={class:"config-edit-header"},te={class:"config-edit-identity"},ne={class:"config-edit-icon"},oe={class:"config-edit-title-stack"},ie={class:"config-edit-kicker"},ce={class:"config-edit-title"},de={class:"config-edit-badges"},ue={class:"command-workbench"},me={class:"command-sidebar"},re={class:"config-edit-section"},pe={class:"section-heading"},ve={class:"field-grid"},fe={class:"scope-option"},ge={class:"scope-path"},ye={class:"scope-option"},be={class:"scope-path"},he={class:"config-edit-section"},we={class:"section-heading"},ke={key:1,class:"platform-note"},_e={class:"config-edit-section token-section"},je={class:"section-heading"},Ce={class:"command-token-box"},xe={key:0,class:"token-row"},ze={key:1,class:"token-row"},$e={class:"config-edit-section content-section"},Pe={class:"section-heading"},Ue={class:"modal-footer"},Ie=s({__name:"CommandFormModal",props:{visible:{type:Boolean,default:!1},command:{type:Object,default:null},projectPath:{type:String,default:null},platform:{type:String,default:"claude"}},emits:["update:visible","saved"],setup(s,{emit:n}){const c=z(),u=s,g=n,y=p({get:()=>u.visible,set:a=>g("update:visible",a)}),h=p(()=>!!u.command),C=p(()=>h.value?"编辑命令":"创建命令"),P=p(()=>{const a=c.get(u.platform)||x(u.platform);return a.label||a.title||"Claude Code"}),U=p(()=>"opencode"===u.platform?"~/.config/opencode/commands/":"gemini"===u.platform?"~/.gemini/commands/":"omp"===u.platform?"~/.omp/agent/commands/":"codex"===u.platform?"~/.codex/commands/":"~/.claude/commands/"),T=p(()=>"opencode"===u.platform?".opencode/commands/":"gemini"===u.platform?".gemini/commands/":"omp"===u.platform?".omp/commands/":"codex"===u.platform?".codex/commands/":".claude/commands/"),B=p(()=>"opencode"!==u.platform&&"gemini"!==u.platform&&"omp"!==u.platform),L=p(()=>"project"===A.value.scope?"项目级":"用户级"),R=p(()=>A.value.name?`/${A.value.name}`:"编辑命令"),q=p(()=>"gemini"===u.platform?"TOML":"Markdown"),F=w(null),N=w(!1),V={maxHeight:"calc(92vh - 134px)",overflowY:"auto",paddingBottom:"18px"},A=w({name:"",scope:"user",namespace:"",description:"",allowedTools:"",argumentHint:"",body:""}),G={name:{required:!0,message:"请输入命令名",trigger:"blur"},scope:{required:!0,message:"请选择作用域",trigger:"change"}};function W(){A.value={name:"",scope:"user",namespace:"",description:"",allowedTools:"",argumentHint:"",body:""}}function Y(){y.value=!1,W()}async function K(){try{await(F.value?.validate())}catch{return}N.value=!0;try{const a={...A.value,projectPath:u.projectPath};h.value?(await async function(a,e,s,l="claude"){return(await j.put(`/commands/${e}/${a}`,{...s,platform:l})).data}(A.value.name,A.value.scope,a,u.platform),ea.success("命令更新成功")):(await async function(a,e="claude"){return(await j.post("/commands",{...a,platform:e})).data}(a,u.platform),ea.success("命令创建成功")),g("saved"),y.value=!1,W()}catch(a){ea.error("操作失败: "+a.message)}finally{N.value=!1}}return m(()=>u.command,a=>{a?A.value={name:a.name||"",scope:a.scope||"user",namespace:a.namespace||"",description:a.description||"",allowedTools:a.allowedTools||"",argumentHint:a.argumentHint||"",body:a.body||""}:W()},{immediate:!0}),(s,n)=>(d(),i(b(E),{show:y.value,"onUpdate:show":n[7]||(n[7]=a=>y.value=a),preset:"card",title:C.value,style:{width:"min(940px, 96vw)","max-height":"92vh"},"content-style":V,"mask-closable":!1,class:"config-edit-modal"},{footer:v(()=>[_("div",Ue,[o(b(e),{onClick:Y},{default:v(()=>[...n[19]||(n[19]=[t("取消",-1)])]),_:1}),o(b(e),{type:"primary",loading:N.value,onClick:K},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(M))]),_:1})]),default:v(()=>[t(" "+r(h.value?"保存":"创建"),1)]),_:1},8,["loading"])])]),default:v(()=>[_("div",le,[_("div",te,[_("span",ne,[o(b(a),{size:22},{default:v(()=>[o(b(H))]),_:1})]),_("div",oe,[_("span",ie,r(P.value),1),_("span",ce,r(h.value?R.value:"创建新命令"),1)])]),_("div",de,[o(b(oa),{size:"small",bordered:!1,type:"info"},{default:v(()=>[t(r(L.value),1)]),_:1}),A.value.namespace?(d(),i(b(oa),{key:0,size:"small",bordered:!1,type:"warning"},{default:v(()=>[t(r(A.value.namespace),1)]),_:1})):l("",!0),o(b(oa),{size:"small",bordered:!1,type:"success"},{default:v(()=>[t(r(q.value),1)]),_:1})])]),o(b(ta),{ref_key:"formRef",ref:F,model:A.value,rules:G,"label-placement":"top","require-mark-placement":"right-hanging",class:"config-edit-form"},{default:v(()=>[_("div",ue,[_("div",me,[_("section",re,[_("div",pe,[o(b(a),{size:16},{default:v(()=>[o(b(I))]),_:1}),n[8]||(n[8]=_("span",null,"命令入口",-1))]),_("div",ve,[o(b(Q),{label:"命令名",path:"name"},{default:v(()=>[o(b(na),{value:A.value.name,"onUpdate:value":n[0]||(n[0]=a=>A.value.name=a),disabled:h.value,placeholder:"review"},{prefix:v(()=>[...n[9]||(n[9]=[t("/",-1)])]),_:1},8,["value","disabled"])]),_:1}),o(b(Q),{label:"命名空间",path:"namespace"},{default:v(()=>[o(b(na),{value:A.value.namespace,"onUpdate:value":n[1]||(n[1]=a=>A.value.namespace=a),disabled:h.value,placeholder:"frontend"},null,8,["value","disabled"])]),_:1})]),o(b(Q),{label:"作用域",path:"scope"},{default:v(()=>[o(b(ia),{value:A.value.scope,"onUpdate:value":n[2]||(n[2]=a=>A.value.scope=a),disabled:h.value,class:"scope-picker"},{default:v(()=>[o(b(ma),{value:"user"},{default:v(()=>[_("span",fe,[n[10]||(n[10]=_("span",{class:"scope-title"},"用户级",-1)),_("span",ge,r(U.value),1)])]),_:1}),o(b(ma),{value:"project"},{default:v(()=>[_("span",ye,[n[11]||(n[11]=_("span",{class:"scope-title"},"项目级",-1)),_("span",be,r(T.value),1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1}),o(b(Q),{label:"描述",path:"description"},{default:v(()=>[o(b(na),{value:A.value.description,"onUpdate:value":n[3]||(n[3]=a=>A.value.description=a),type:"textarea",autosize:{minRows:3,maxRows:5},placeholder:"一句话说明这个 slash command 的用途"},null,8,["value"])]),_:1})]),_("section",he,[_("div",we,[o(b(a),{size:16},{default:v(()=>[o(b(S))]),_:1}),n[12]||(n[12]=_("span",null,"Frontmatter",-1))]),B.value?(d(),k(f,{key:0},[o(b(Q),{label:"允许的工具",path:"allowedTools"},{default:v(()=>[o(b(na),{value:A.value.allowedTools,"onUpdate:value":n[4]||(n[4]=a=>A.value.allowedTools=a),placeholder:"Bash, Edit, Read"},null,8,["value"])]),_:1}),o(b(Q),{label:"参数提示",path:"argumentHint"},{default:v(()=>[o(b(na),{value:A.value.argumentHint,"onUpdate:value":n[5]||(n[5]=a=>A.value.argumentHint=a),placeholder:"add [id] | remove [id]"},null,8,["value"])]),_:1})],64)):(d(),k("div",ke,[o(b(a),{size:16},{default:v(()=>[o(b($))]),_:1}),_("span",null,r(P.value)+" commands 会按平台原生格式保存,当前平台不写入 Claude/Codex 风格的工具和参数 frontmatter。",1)]))]),_("section",_e,[_("div",je,[o(b(a),{size:16},{default:v(()=>[o(b(D))]),_:1}),n[13]||(n[13]=_("span",null,"可用变量",-1))]),_("div",Ce,[n[16]||(n[16]=_("div",{class:"token-row"},[_("code",null,"$ARGUMENTS"),_("span",null,"完整参数")],-1)),n[17]||(n[17]=_("div",{class:"token-row"},[_("code",null,"$1"),_("span",null,"第一个参数")],-1)),B.value?(d(),k("div",xe,[...n[14]||(n[14]=[_("code",null,"!",-1),_("span",null,"执行 shell 行",-1)])])):l("",!0),B.value?(d(),k("div",ze,[...n[15]||(n[15]=[_("code",null,"@",-1),_("span",null,"引用文件",-1)])])):l("",!0)])])]),_("section",$e,[_("div",Pe,[o(b(a),{size:16},{default:v(()=>[o(b(O))]),_:1}),n[18]||(n[18]=_("span",null,"命令内容",-1))]),o(b(Q),{path:"body","show-label":!1,class:"editor-form-item"},{default:v(()=>[o(ra,{modelValue:A.value.body,"onUpdate:modelValue":n[6]||(n[6]=a=>A.value.body=a),rows:12,"min-height":280,placeholder:"写下命令提示词。可以使用 $ARGUMENTS、$1、$2 等变量。","default-editing":!h.value},null,8,["modelValue","default-editing"])]),_:1})])])]),_:1},8,["model"])]),_:1},8,["show","title"]))}},[["__scopeId","data-v-1ab931be"]]),Te={key:0,class:"asset-panel-header"},Be={class:"asset-title-group"},He={class:"asset-heading"},Se={class:"asset-title-row"},De={class:"asset-platform-pill"},Oe={key:0,class:"asset-action-row"},Le={key:1,class:"asset-drawer-toolbar"},Me={key:0,class:"asset-action-row"},Re={class:"asset-summary"},Ee={class:"asset-summary-item"},qe={class:"asset-summary-value"},Fe={class:"asset-summary-item"},Ne={class:"asset-summary-value"},Ve={class:"asset-summary-item"},Ae={class:"asset-summary-value"},Ge={class:"asset-summary-item"},We={class:"asset-summary-value"},Ye={class:"asset-filter-bar"},Ke={class:"asset-panel-content"},Ze={key:0,class:"asset-empty"},Je={key:1,class:"asset-list"},Qe={class:"asset-footer"},Xe=s({__name:"CommandsPanel",props:{hideBack:{type:Boolean,default:!1},inDrawer:{type:Boolean,default:!1},projectPath:{type:String,default:null},platform:{type:String,default:""}},emits:["back","updated"],setup(s,{emit:u}){const y=s,I=u,T=z(),S=h(),D=w([]),O=w(!1),L=w(""),M=w("all"),E=w(!1),F=w(!1),G=w(null),W=w(null),Y=w({}),K=w({}),Z=w({});let J=0;const{byCapability:Q}=sa(),X=p(()=>Q("commands").map(a=>a.key)),ta=p(()=>X.value.includes(oa.value)),oa=p(()=>String(y.platform||C(S)||"").trim().toLowerCase()),ia=p(()=>"opencode"===oa.value?"使用 /命令名 在 OpenCode 中调用":"omp"===oa.value?"使用 OMP slash command 调用":"gemini"===oa.value?"使用 /命令名 在 Gemini CLI 中调用":"codex"===oa.value?"使用 /命令名 在 Codex CLI 中调用":"使用 /命令名 在 Claude Code 中调用"),ma=p(()=>{const a=T.get(oa.value)||x(oa.value);return a.label||a.title||"Claude Code"}),ra=[{label:"全部",value:"all"},{label:"用户级",value:"user"},{label:"项目级",value:"project"},{label:"已托管",value:"managed"}],va=p(()=>D.value.filter(a=>"user"===a.scope).length),fa=p(()=>D.value.filter(a=>"project"===a.scope).length),ga=p(()=>Object.keys(K.value).length),ya=p(()=>{let a=D.value;if("user"===M.value?a=a.filter(a=>"user"===a.scope):"project"===M.value?a=a.filter(a=>"project"===a.scope):"managed"===M.value&&(a=a.filter(a=>K.value[a.name])),L.value.trim()){const e=L.value.toLowerCase();a=a.filter(a=>a.name?.toLowerCase().includes(e)||a.description?.toLowerCase().includes(e)||a.namespace?.toLowerCase().includes(e))}return a}),ba=p(()=>L.value?"没有匹配的命令":"user"===M.value?"暂无用户级命令":"project"===M.value?"暂无项目级命令":"managed"===M.value?"暂无托管的命令":ta.value?"暂无自定义命令":`${ma.value} 暂未提供 Commands 能力`);async function ha(){if(!ta.value)return D.value=[],K.value={},void(O.value=!1);O.value=!0;try{const[a,e]=await Promise.all([pa(y.projectPath,oa.value),A("commands",{platform:oa.value,projectPath:y.projectPath})]);if(a.success&&(D.value=a.commands||[]),e.success){K.value={};for(const[a,s]of Object.entries(e.items||{}))K.value[a]=s}}catch(a){ea.error("加载命令列表失败: "+a.message)}finally{O.value=!1}}async function wa(a,e){Z.value[a.name]=!0;try{(await q("commands",a.name,e)).success&&(ea.success(e?"已启用":"已禁用"),await ha())}catch(s){ea.error("切换失败: "+s.message)}finally{delete Z.value[a.name]}}async function ka(a,e,s){Z.value[a.name]=!0;try{(await V("commands",a.name,e,s)).success&&(ea.success(`${e} ${s?"已启用":"已禁用"}`),await ha())}catch(l){ea.error("切换失败: "+l.message)}finally{delete Z.value[a.name]}}async function _a(){O.value=!0;try{const a=await N("commands");a?.success||ea.warning(a?.message||"同步失败,已继续刷新列表")}catch(a){ea.warning("同步失败,已继续刷新列表: "+a.message)}await ha()}async function ja(a,e=!1){if(!a)return;const s=++J;e||(G.value=null,F.value=!0);try{const l=await async function(a,e,s=null,l=null,t="claude"){const n={};t&&(n.platform=t),s&&(n.projectPath=s),l&&(n.namespace=l);const o=la(`command-detail:${a}:${l||""}`,t,e||"",s||"");return ca(o,s=>j.get(`/commands/${e}/${a}`,{params:n,signal:s}).then(a=>a.data),"command-detail",`command-detail:${t}`)}(a.name,a.scope,y.projectPath,a.namespace,oa.value);if(s!==J)return;const t=l?.command||a;e?(W.value=t,E.value=!0):G.value=t}catch(l){if(s!==J)return;ea.error("加载命令详情失败: "+l.message),e?(W.value=a,E.value=!0):G.value=a}}function Ca(a){ja(a,!0)}async function xa(a){const e=a.path;Y.value[e]=!0;try{(await async function(a,e,s=null,l=null,t="claude"){const n={};return t&&(n.platform=t),s&&(n.projectPath=s),l&&(n.namespace=l),(await j.delete(`/commands/${e}/${a}`,{params:n})).data}(a.name,a.scope,y.projectPath,a.namespace,oa.value)).success&&(ea.success("命令已删除"),await ha(),I("updated"))}catch(s){ea.error("删除失败: "+s.message)}finally{delete Y.value[e]}}function za(a){ja(a,!1)}function Pa(){W.value=null,ha(),I("updated")}function Ua(){I("back")}return c(()=>{ha()}),m(oa,()=>{J+=1,G.value=null,ha()}),(c,u)=>(d(),k("div",{class:g(["commands-panel asset-panel",{"in-drawer":y.inDrawer}])},[y.inDrawer?l("",!0):(d(),k("div",Te,[_("div",Be,[y.hideBack?l("",!0):(d(),i(b(e),{key:0,text:"",onClick:Ua,class:"back-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(U))]),_:1})]),_:1})),_("div",He,[_("div",Se,[u[7]||(u[7]=_("span",{class:"asset-title"},"命令管理",-1)),_("span",De,r(ma.value),1)]),u[8]||(u[8]=_("div",{class:"asset-subtitle"},"维护 slash commands、作用域和跨平台启用状态",-1))])]),ta.value?(d(),k("div",Oe,[o(b(e),{text:"",onClick:u[0]||(u[0]=a=>E.value=!0),class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(P))]),_:1})]),default:v(()=>[u[9]||(u[9]=t(" 创建 ",-1))]),_:1}),o(b(e),{text:"",onClick:_a,loading:O.value,class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(R))]),_:1})]),default:v(()=>[u[10]||(u[10]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):l("",!0)])),y.inDrawer?(d(),k("div",Le,[ta.value?(d(),k("div",Me,[o(b(e),{text:"",onClick:u[1]||(u[1]=a=>E.value=!0),class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(P))]),_:1})]),default:v(()=>[u[11]||(u[11]=t(" 创建 ",-1))]),_:1}),o(b(e),{text:"",onClick:_a,loading:O.value,class:"action-btn"},{icon:v(()=>[o(b(a),null,{default:v(()=>[o(b(R))]),_:1})]),default:v(()=>[u[12]||(u[12]=t(" 刷新 ",-1))]),_:1},8,["loading"])])):l("",!0)])):l("",!0),_("div",Re,[_("span",Ee,[u[13]||(u[13]=_("span",{class:"asset-summary-label"},"全部",-1)),_("span",qe,r(D.value.length),1)]),_("span",Fe,[u[14]||(u[14]=_("span",{class:"asset-summary-label"},"用户级",-1)),_("span",Ne,r(va.value),1)]),_("span",Ve,[u[15]||(u[15]=_("span",{class:"asset-summary-label"},"项目级",-1)),_("span",Ae,r(fa.value),1)]),_("span",Ge,[u[16]||(u[16]=_("span",{class:"asset-summary-label"},"托管",-1)),_("span",We,r(ga.value),1)])]),_("div",Ye,[o(b(na),{value:L.value,"onUpdate:value":u[2]||(u[2]=a=>L.value=a),placeholder:"搜索命令、描述或命名空间",clearable:"",size:"small",class:"asset-search"},{prefix:v(()=>[o(b(a),null,{default:v(()=>[o(b(B))]),_:1})]),_:1},8,["value"]),o(b(da),{value:M.value,"onUpdate:value":u[3]||(u[3]=a=>M.value=a),options:ra,size:"small",class:"asset-filter"},null,8,["value"])]),_("div",Ke,[o(b(aa),{show:O.value},{default:v(()=>[0!==ya.value.length||O.value?(d(),k("div",Je,[(d(!0),k(f,null,n(ya.value,a=>(d(),i($a,{key:a.path,command:a,deleting:!!Y.value[a.path],"registry-info":K.value[a.name],toggling:!!Z.value[a.name],onEdit:Ca,onDelete:xa,onClick:za,onToggleEnabled:wa,onTogglePlatform:ka},null,8,["command","deleting","registry-info","toggling"]))),128))])):(d(),k("div",Ze,[o(b(ua),{description:ba.value},{icon:v(()=>[o(b(a),{size:"48",color:"var(--text-quaternary)"},{default:v(()=>[o(b(H))]),_:1})]),extra:v(()=>[ta.value?(d(),i(b(e),{key:0,size:"small",onClick:u[4]||(u[4]=a=>E.value=!0)},{default:v(()=>[...u[17]||(u[17]=[t(" 创建第一个命令 ",-1)])]),_:1})):l("",!0)]),_:1},8,["description"])]))]),_:1},8,["show"])]),_("div",Qe,[o(b(a),{size:"14",class:"asset-info-icon"},{default:v(()=>[o(b($))]),_:1}),_("span",null,r(ia.value),1)]),o(Ie,{visible:E.value,"onUpdate:visible":u[5]||(u[5]=a=>E.value=a),command:W.value,"project-path":s.projectPath,platform:oa.value,onSaved:Pa},null,8,["visible","command","project-path","platform"]),o(se,{visible:F.value,"onUpdate:visible":u[6]||(u[6]=a=>F.value=a),command:G.value,platform:oa.value},null,8,["visible","command","platform"])],2))}},[["__scopeId","data-v-5e3c90d3"]]),as=s({__name:"CommandsDrawer",props:{visible:Boolean,platform:{type:String,default:""}},emits:["update:visible"],setup(a,{emit:e}){const s=a,l=e,{drawerWidth:t}=K(720),n=p({get:()=>s.visible,set:a=>l("update:visible",a)}),c={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(a,e)=>(d(),i(b(Y),{show:n.value,"onUpdate:show":e[1]||(e[1]=a=>n.value=a),width:b(t),placement:"right","mask-closable":!0},{default:v(()=>[o(b(Z),{closable:"","native-scrollbar":!1,"body-content-style":c},{header:v(()=>[...e[2]||(e[2]=[_("div",{class:"drawer-header"},[_("span",null,"命令管理")],-1)])]),default:v(()=>[o(Xe,{onBack:e[0]||(e[0]=a=>n.value=!1),"hide-back":!0,"in-drawer":!0,platform:s.platform},null,8,["platform"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-bfb32ef8"]]);export{as as default};
@@ -0,0 +1 @@
1
+ import{i as e,s as a,t}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as s,D as l,O as i,S as n,W as o,_t as r,b as u,et as c,mt as d,st as p,w as f,x as v}from"./vue-vendor-BqZbbXHA.js";import{n as m}from"./client-UDwXBP9i.js";import{dt as w,et as h,ft as g}from"./icons-B2Vg-IOC.js";import{t as y}from"./Upload-v5rV0qTT.js";import{t as _}from"./Divider-D28g1gwj.js";import{n as x,t as z}from"./useResponsiveDrawer-B3uojyvV.js";import{t as b}from"./DrawerContent-ChXgZ1Xm.js";import{K as j,N as C,P as k,at as U}from"./index-DnEocV0M.js";var D={class:"drawer-header"},I={class:"export-import-container"},O={class:"section"},S={class:"section-header"},L={class:"section"},P={class:"section-header"},R={key:0,class:"import-preview"},T={class:"preview-stats"},Z={class:"stat-item"},B={class:"stat-item"},N={class:"stat-item"},W=t({__name:"ConfigExportDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(t,{emit:W}){const $=t,E=W,{drawerWidth:J}=z(520,480),q=u({get:()=>$.visible,set:e=>E("update:visible",e)}),A=p(!1),K=p(!1),F=p(null),G=p(null),H=p(null),M=p(null),Q=p(!1);async function V(){A.value=!0;try{const e=await async function(e="zip"){return(await m.get(`/config-export?format=${e}`,{responseType:"blob"})).data}("zip"),a=window.URL.createObjectURL(e),t=document.createElement("a");t.href=a,t.download=`ctx-config-${(new Date).toISOString().split("T")[0]}.zip`,document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(a),C.success("配置导出成功")}catch(e){C.error("导出失败: "+e.message)}finally{A.value=!1}}async function X({file:e}){try{if(F.value=null,G.value=null,H.value=null,M.value=null,(e.file.name||"").toLowerCase().endsWith(".zip")){const a=await async function(e){const a=await e.arrayBuffer();return(await m.post("/config-export/preview-zip",a,{headers:{"Content-Type":"application/zip"}})).data}(e.file);return void(a.success?(F.value=a.data,H.value=e.file,G.value=null,M.value="zip",C.success("ZIP 配置解析成功")):C.error("ZIP 配置格式错误: "+a.message))}const a=await e.file.text(),t=JSON.parse(a),s=await async function(e){return(await m.post("/config-export/preview",{data:e})).data}(t);s.success?(F.value=s.data,G.value=t,H.value=null,M.value="json",C.success("配置文件解析成功")):C.error("配置文件格式错误: "+s.message)}catch(a){C.error("文件解析失败: "+a.message)}}async function Y(){if(G.value||H.value){K.value=!0;try{const e="zip"===M.value?await async function(e,a=!1){const t=await e.arrayBuffer();return(await m.post(`/config-export/import-zip?overwrite=${a}`,t,{headers:{"Content-Type":"application/zip"}})).data}(H.value,Q.value):await async function(e,a=!1){return(await m.post("/config-export/import",{data:e,overwrite:a})).data}(G.value,Q.value);e.success?(C.success("配置导入成功: "+e.message),ee()):C.error("配置导入失败: "+e.message)}catch(e){C.error("导入失败: "+e.message)}finally{K.value=!1}}}function ee(){F.value=null,G.value=null,H.value=null,M.value=null,Q.value=!1}return(t,u)=>(o(),n(d(x),{show:q.value,"onUpdate:show":u[1]||(u[1]=e=>q.value=e),width:d(J),placement:"right","mask-closable":!0},{default:c(()=>[i(d(b),{closable:"","native-scrollbar":!1},{header:c(()=>[v("div",D,[i(d(e),{size:20,color:"#18a058"},{default:c(()=>[i(d(g))]),_:1}),u[2]||(u[2]=v("span",null,"配置导出/导入",-1))])]),default:c(()=>[v("div",I,[v("div",O,[v("div",S,[i(d(k),{strong:""},{default:c(()=>[...u[3]||(u[3]=[l("导出配置",-1)])]),_:1}),i(d(k),{depth:"3",style:{"font-size":"12px"}},{default:c(()=>[...u[4]||(u[4]=[l(" 导出多平台配置为 ZIP(含渠道、Agents/Skills/Commands、原生配置等) ",-1)])]),_:1})]),i(d(a),{type:"primary",loading:A.value,onClick:V},{icon:c(()=>[i(d(e),null,{default:c(()=>[i(d(h))]),_:1})]),default:c(()=>[u[5]||(u[5]=l(" 导出配置 ",-1))]),_:1},8,["loading"])]),i(d(_)),v("div",L,[v("div",P,[i(d(k),{strong:""},{default:c(()=>[...u[6]||(u[6]=[l("导入配置",-1)])]),_:1}),i(d(k),{depth:"3",style:{"font-size":"12px"}},{default:c(()=>[...u[7]||(u[7]=[l(" 从 JSON 或 ZIP 文件导入配置(支持覆盖已有配置) ",-1)])]),_:1})]),i(d(y),{"custom-request":X,"show-file-list":!1,accept:".json,.zip"},{default:c(()=>[i(d(a),null,{icon:c(()=>[i(d(e),null,{default:c(()=>[i(d(w))]),_:1})]),default:c(()=>[u[8]||(u[8]=l(" 选择配置文件 ",-1))]),_:1})]),_:1}),F.value?(o(),f("div",R,[i(d(k),{strong:"",style:{"font-size":"14px"}},{default:c(()=>[...u[9]||(u[9]=[l("导入预览",-1)])]),_:1}),v("div",T,[v("div",Z,[i(d(k),{depth:"3"},{default:c(()=>[...u[10]||(u[10]=[l("配置模板:",-1)])]),_:1}),i(d(k),null,{default:c(()=>[l(r(F.value.counts.configTemplates),1)]),_:1})]),v("div",B,[i(d(k),{depth:"3"},{default:c(()=>[...u[11]||(u[11]=[l("渠道总数:",-1)])]),_:1}),i(d(k),null,{default:c(()=>[l(r(F.value.counts.channels),1)]),_:1})]),v("div",N,[i(d(k),{depth:"3"},{default:c(()=>[...u[12]||(u[12]=[l("插件:",-1)])]),_:1}),i(d(k),null,{default:c(()=>[l(r(F.value.counts.plugins||0),1)]),_:1})])]),i(d(U),{checked:Q.value,"onUpdate:checked":u[0]||(u[0]=e=>Q.value=e),style:{"margin-top":"12px"}},{default:c(()=>[...u[13]||(u[13]=[l(" 覆盖已有配置 ",-1)])]),_:1},8,["checked"]),i(d(j),{style:{"margin-top":"16px"}},{default:c(()=>[i(d(a),{type:"primary",loading:K.value,onClick:Y},{default:c(()=>[...u[14]||(u[14]=[l(" 确认导入 ",-1)])]),_:1},8,["loading"]),i(d(a),{onClick:ee},{default:c(()=>[...u[15]||(u[15]=[l("取消",-1)])]),_:1})]),_:1})])):s("",!0)])])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-d8c9eada"]]);export{W as default};
@@ -0,0 +1 @@
1
+ .drawer-header[data-v-d8c9eada]{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.export-import-container[data-v-d8c9eada]{flex-direction:column;gap:16px;padding:4px;display:flex}.section[data-v-d8c9eada]{flex-direction:column;gap:12px;display:flex}.section-header[data-v-d8c9eada]{flex-direction:column;gap:4px;display:flex}.import-preview[data-v-d8c9eada]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:8px;margin-top:16px;padding:16px}.preview-stats[data-v-d8c9eada]{flex-direction:column;gap:8px;margin-top:12px;display:flex}.stat-item[data-v-d8c9eada]{justify-content:space-between;align-items:center;display:flex}
@@ -0,0 +1 @@
1
+ import{t as e}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as a,W as t,et as s,mt as r,w as o}from"./vue-vendor-BqZbbXHA.js";import{O as p}from"./light-Cp0t7v32.js";import{t as i}from"./ConfigTemplatesPanel-AV00tm_D.js";var m={class:"config-templates-page"},l=e({__name:"ConfigTemplates",setup:e=>(e,l)=>(t(),o("div",m,[a(r(p),{title:"配置模版管理",bordered:!1},{default:s(()=>[a(i,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-a6c39fe5"]]);export{l as default};
@@ -0,0 +1 @@
1
+ .drawer-header[data-v-c337d3e9]{color:var(--text-primary);font-size:16px;font-weight:600}
@@ -0,0 +1 @@
1
+ import{t as e}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as a,S as s,W as t,b as r,et as i,mt as l,x as o}from"./vue-vendor-BqZbbXHA.js";import{t as d}from"./ConfigTemplatesPanel-AV00tm_D.js";import{n,t as p}from"./useResponsiveDrawer-B3uojyvV.js";import{t as m}from"./DrawerContent-ChXgZ1Xm.js";var v=e({__name:"ConfigTemplatesDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(e,{emit:v}){const u=e,f=v,{drawerWidth:w}=p(720),c=r({get:()=>u.visible,set:e=>f("update:visible",e)}),b={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,r)=>(t(),s(l(n),{show:c.value,"onUpdate:show":r[1]||(r[1]=e=>c.value=e),width:l(w),placement:"right","mask-closable":!0},{default:i(()=>[a(l(m),{closable:"","native-scrollbar":!1,"body-content-style":b},{header:i(()=>[...r[2]||(r[2]=[o("div",{class:"drawer-header"},"配置模版管理",-1)])]),default:i(()=>[a(d,{"in-drawer":!0,"hide-back":!0,"drawer-visible":c.value,onBack:r[0]||(r[0]=e=>c.value=!1)},null,8,["drawer-visible"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-c337d3e9"]]);export{v as default};
@@ -0,0 +1 @@
1
+ import{$t as e,D as l,E as a,I as t,L as n,N as s,Qt as r,Tt as i,Yt as o,Zt as d,bn as u,gn as c,gt as m,hn as p,ht as v,i as f,j as g,ln as h,mt as b,s as y,t as C,vn as k,xn as x,y as _,yn as S}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as w,C as T,D as z,F as P,G as R,J as A,K as $,M as O,N as U,O as L,S as M,V as F,W as B,Z as V,_t as N,b as E,dt as I,et as j,g as D,ht as G,m as q,mt as H,st as Z,w as K,x as W}from"./vue-vendor-BqZbbXHA.js";import{B as Y,Ft as J,M as Q,Mt as X,Z as ee,_ as le,a as ae,g as te,nt as ne,tt as se,w as re}from"./icons-B2Vg-IOC.js";import{t as ie}from"./use-message-DoLM8C1C.js";import{O as oe,S as de,l as ue,n as ce}from"./light-Cp0t7v32.js";import{n as me,t as pe}from"./CollapseItem-BAYEsL_Q.js";import{t as ve}from"./Divider-D28g1gwj.js";import{B as fe,F as ge,I as he,K as be,L as ye,P as Ce,St as ke,U as xe,V as _e,at as Se,ct as we,dt as Te,lt as ze,nt as Pe,ot as Re,pt as Ae,rt as $e,ut as Oe,xt as Ue}from"./index-DnEocV0M.js";import{n as Le}from"./markdown-u082bbtj.js";import{a as Me,c as Fe,i as Be,n as Ve,o as Ne,r as Ee,s as Ie,t as je}from"./xml-CgY3RMlX.js";import{t as De}from"./MarkdownEditor-rEZ-c72L.js";import{a as Ge,d as qe,f as He,g as Ze,h as Ke,m as We,p as Ye,u as Je}from"./workspaces-mjyPVGS8.js";var Qe=w({name:"Search",render:()=>O("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",style:"enable-background: new 0 0 512 512"},O("path",{d:"M443.5,420.2L336.7,312.4c20.9-26.2,33.5-59.4,33.5-95.5c0-84.5-68.5-153-153.1-153S64,132.5,64,217s68.5,153,153.1,153\n c36.6,0,70.1-12.8,96.5-34.2l106.1,107.1c3.2,3.4,7.6,5.1,11.9,5.1c4.1,0,8.2-1.5,11.3-4.5C449.5,437.2,449.7,426.8,443.5,420.2z\n M217.1,337.1c-32.1,0-62.3-12.5-85-35.2c-22.7-22.7-35.2-52.9-35.2-84.9c0-32.1,12.5-62.3,35.2-84.9c22.7-22.7,52.9-35.2,85-35.2\n c32.1,0,62.3,12.5,85,35.2c22.7,22.7,35.2,52.9,35.2,84.9c0,32.1-12.5,62.3-35.2,84.9C279.4,324.6,249.2,337.1,217.1,337.1z"}))}),Xe=c("collapse-transition",{width:"100%"},[Oe()]),el=w({name:"CollapseTransition",props:Object.assign(Object.assign({},s.props),{show:{type:Boolean,default:!0},appear:Boolean,collapsed:{type:Boolean,default:void 0}}),inheritAttrs:!1,setup(e){const{mergedClsPrefixRef:l,inlineThemeDisabled:a,mergedRtlRef:n}=m(e),r=s("CollapseTransition","-collapse-transition",Xe,$e,e,l),i=t("CollapseTransition",n,l),o=E(()=>void 0!==e.collapsed?e.collapsed:e.show),d=E(()=>{const{self:{bezier:e}}=r.value;return{"--n-bezier":e}}),u=a?v("collapse-transition",void 0,d,e):void 0;return{rtlEnabled:i,mergedShow:o,mergedClsPrefix:l,cssVars:a?void 0:d,themeClass:null==u?void 0:u.themeClass,onRender:null==u?void 0:u.onRender}},render(){return O(a,{appear:this.appear},{default:()=>{var e;if(this.mergedShow)return null===(e=this.onRender)||void 0===e||e.call(this),O("div",P({class:[`${this.mergedClsPrefix}-collapse-transition`,this.rtlEnabled&&`${this.mergedClsPrefix}-collapse-transition--rtl`,this.themeClass],style:this.cssVars},this.$attrs),this.$slots)}})}}),ll=o("n-transfer"),al=c("transfer","\n width: 100%;\n font-size: var(--n-font-size);\n height: 300px;\n display: flex;\n flex-wrap: nowrap;\n word-break: break-word;\n",[S("disabled",[c("transfer-list",[c("transfer-list-header",[k("title","\n color: var(--n-header-text-color-disabled);\n "),k("extra","\n color: var(--n-header-extra-text-color-disabled);\n ")])])]),c("transfer-list","\n flex: 1;\n min-width: 0;\n height: inherit;\n display: flex;\n flex-direction: column;\n background-clip: padding-box;\n position: relative;\n transition: background-color .3s var(--n-bezier);\n background-color: var(--n-list-color);\n ",[S("source","\n border-top-left-radius: var(--n-border-radius);\n border-bottom-left-radius: var(--n-border-radius);\n ",[k("border","border-right: 1px solid var(--n-divider-color);")]),S("target","\n border-top-right-radius: var(--n-border-radius);\n border-bottom-right-radius: var(--n-border-radius);\n ",[k("border","border-left: none;")]),k("border","\n padding: 0 12px;\n border: 1px solid var(--n-border-color);\n transition: border-color .3s var(--n-bezier);\n pointer-events: none;\n border-radius: inherit;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n "),c("transfer-list-header","\n min-height: var(--n-header-height);\n box-sizing: border-box;\n display: flex;\n padding: 12px 12px 10px 12px;\n align-items: center;\n background-clip: padding-box;\n border-radius: inherit;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n line-height: 1.5;\n transition:\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n ",[p("> *:not(:first-child)","\n margin-left: 8px;\n "),k("title","\n flex: 1;\n min-width: 0;\n line-height: 1.5;\n font-size: var(--n-header-font-size);\n font-weight: var(--n-header-font-weight);\n transition: color .3s var(--n-bezier);\n color: var(--n-header-text-color);\n "),k("button","\n position: relative;\n "),k("extra","\n transition: color .3s var(--n-bezier);\n font-size: var(--n-extra-font-size);\n margin-right: 0;\n white-space: nowrap;\n color: var(--n-header-extra-text-color);\n ")]),c("transfer-list-body","\n flex-basis: 0;\n flex-grow: 1;\n box-sizing: border-box;\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: inherit;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n ",[c("transfer-filter","\n padding: 4px 12px 8px 12px;\n box-sizing: border-box;\n transition:\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n "),c("transfer-list-flex-container","\n flex: 1;\n position: relative;\n ",[c("scrollbar","\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n height: unset;\n "),c("empty","\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateY(-50%) translateX(-50%);\n "),c("transfer-list-content","\n padding: 0;\n margin: 0;\n position: relative;\n ",[c("transfer-list-item","\n padding: 0 12px;\n min-height: var(--n-item-height);\n display: flex;\n align-items: center;\n color: var(--n-item-text-color);\n position: relative;\n transition: color .3s var(--n-bezier);\n ",[k("background","\n position: absolute;\n left: 4px;\n right: 4px;\n top: 0;\n bottom: 0;\n border-radius: var(--n-border-radius);\n transition: background-color .3s var(--n-bezier);\n "),k("checkbox","\n position: relative;\n margin-right: 8px;\n "),k("close","\n opacity: 0;\n pointer-events: none;\n position: relative;\n transition:\n opacity .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n "),k("label","\n position: relative;\n min-width: 0;\n flex-grow: 1;\n "),S("source","cursor: pointer;"),S("disabled","\n cursor: not-allowed;\n color: var(--n-item-text-color-disabled);\n "),u("disabled",[p("&:hover",[k("background","background-color: var(--n-item-color-pending);"),k("close","\n opacity: 1;\n pointer-events: all;\n ")])])])])])])])]),tl=w({name:"TransferFilter",props:{value:String,placeholder:String,disabled:Boolean,onUpdateValue:{type:Function,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:l}=U(ll);return{mergedClsPrefix:l,mergedTheme:e}},render(){const{mergedTheme:e,mergedClsPrefix:l}=this;return O("div",{class:`${l}-transfer-filter`},O(we,{value:this.value,onUpdateValue:this.onUpdateValue,disabled:this.disabled,placeholder:this.placeholder,theme:e.peers.Input,themeOverrides:e.peerOverrides.Input,clearable:!0,size:"small"},{"clear-icon-placeholder":()=>O(g,{clsPrefix:l},{default:()=>O(Qe,null)})}))}}),nl=w({name:"TransferHeader",props:{size:{type:String,required:!0},selectAllText:String,clearText:String,source:Boolean,onCheckedAll:Function,onClearAll:Function,title:[String,Function]},setup(e){const{targetOptionsRef:l,canNotSelectAnythingRef:a,canBeClearedRef:t,allCheckedRef:s,mergedThemeRef:r,disabledRef:i,mergedClsPrefixRef:o,srcOptionsLengthRef:d}=U(ll),{localeRef:u}=n("Transfer");return()=>{const{source:n,onClearAll:c,onCheckedAll:m,selectAllText:p,clearText:v}=e,{value:f}=r,{value:g}=o,{value:h}=u,b="large"===e.size?"small":"tiny",{title:C}=e;return O("div",{class:`${g}-transfer-list-header`},C&&O("div",{class:`${g}-transfer-list-header__title`},"function"==typeof C?C():C),n&&O(y,{class:`${g}-transfer-list-header__button`,theme:f.peers.Button,themeOverrides:f.peerOverrides.Button,size:b,tertiary:!0,onClick:s.value?c:m,disabled:a.value||i.value},{default:()=>s.value?v||h.unselectAll:p||h.selectAll}),!n&&t.value&&O(y,{class:`${g}-transfer-list-header__button`,theme:f.peers.Button,themeOverrides:f.peerOverrides.Button,size:b,tertiary:!0,onClick:c,disabled:i.value},{default:()=>h.clearAll}),O("div",{class:`${g}-transfer-list-header__extra`},n?h.total(d.value):h.selected(l.value.length)))}}}),sl=w({name:"NTransferListItem",props:{source:Boolean,label:{type:String,required:!0},value:{type:[String,Number],required:!0},disabled:Boolean,option:{type:Object,required:!0}},setup(l){const{targetValueSetRef:a,mergedClsPrefixRef:t,mergedThemeRef:n,handleItemCheck:s,renderSourceLabelRef:r,renderTargetLabelRef:i,showSelectedRef:o}=U(ll),d=e(()=>a.value.has(l.value));return{mergedClsPrefix:t,mergedTheme:n,checked:d,showSelected:o,renderSourceLabel:r,renderTargetLabel:i,handleClick:function(){l.disabled||s(!d.value,l.value)}}},render(){const{disabled:e,mergedTheme:a,mergedClsPrefix:t,label:n,checked:s,source:r,renderSourceLabel:i,renderTargetLabel:o}=this;return O("div",{class:[`${t}-transfer-list-item`,e&&`${t}-transfer-list-item--disabled`,r?`${t}-transfer-list-item--source`:`${t}-transfer-list-item--target`],onClick:r?this.handleClick:void 0},O("div",{class:`${t}-transfer-list-item__background`}),r&&this.showSelected&&O("div",{class:`${t}-transfer-list-item__checkbox`},O(Se,{theme:a.peers.Checkbox,themeOverrides:a.peerOverrides.Checkbox,disabled:e,checked:s})),O("div",{class:`${t}-transfer-list-item__label`,title:Ue(n)},r?i?i({option:this.option}):n:o?o({option:this.option}):n),!r&&!e&&O(l,{focusable:!1,class:`${t}-transfer-list-item__close`,clsPrefix:t,onClick:this.handleClick}))}}),rl=w({name:"TransferList",props:{virtualScroll:{type:Boolean,required:!0},itemSize:{type:Number,required:!0},options:{type:Array,required:!0},disabled:{type:Boolean,required:!0},source:Boolean},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:l}=U(ll),a=Z(null),t=Z(null);return{mergedTheme:e,mergedClsPrefix:l,scrollerInstRef:a,vlInstRef:t,syncVLScroller:function(){var e;null===(e=a.value)||void 0===e||e.sync()},scrollContainer:function(){const{value:e}=t;if(!e)return null;const{listElRef:l}=e;return l},scrollContent:function(){const{value:e}=t;if(!e)return null;const{itemsElRef:l}=e;return l}}},render(){const{mergedTheme:e,options:l}=this;if(0===l.length)return O(Ae,{theme:e.peers.Empty,themeOverrides:e.peerOverrides.Empty});const{mergedClsPrefix:a,virtualScroll:t,source:n,disabled:s,syncVLScroller:r}=this;return O(_,{ref:"scrollerInstRef",theme:e.peers.Scrollbar,themeOverrides:e.peerOverrides.Scrollbar,container:t?this.scrollContainer:void 0,content:t?this.scrollContent:void 0},{default:()=>t?O(ke,{ref:"vlInstRef",style:{height:"100%"},class:`${a}-transfer-list-content`,items:this.options,itemSize:this.itemSize,showScrollbar:!1,onResize:r,onScroll:r,keyField:"value"},{default:({item:e})=>{const{source:l,disabled:a}=this;return O(sl,{source:l,key:e.value,value:e.value,disabled:e.disabled||a,label:e.label,option:e})}}):O("div",{class:`${a}-transfer-list-content`},l.map(e=>O(sl,{source:n,key:e.value,value:e.value,disabled:e.disabled||s,label:e.label,option:e})))})}});var il=w({name:"Transfer",props:Object.assign(Object.assign({},s.props),{value:Array,defaultValue:{type:Array,default:null},options:{type:Array,default:()=>[]},disabled:{type:Boolean,default:void 0},virtualScroll:Boolean,sourceTitle:[String,Function],selectAllText:String,clearText:String,targetTitle:[String,Function],filterable:{type:Boolean,default:void 0},sourceFilterable:Boolean,targetFilterable:Boolean,showSelected:{type:Boolean,default:!0},sourceFilterPlaceholder:String,targetFilterPlaceholder:String,filter:{type:Function,default:(e,l)=>!e||~`${l.label}`.toLowerCase().indexOf(`${e}`.toLowerCase())},size:String,renderSourceLabel:Function,renderTargetLabel:Function,renderSourceList:Function,renderTargetList:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:[Function,Array]}),setup(e){const{mergedClsPrefixRef:l}=m(e),a=s("Transfer","-transfer",al,xe,e,l),t=b(e),{mergedSizeRef:n,mergedDisabledRef:o}=t,u=E(()=>{const{value:e}=n,{self:{[x("itemHeight",e)]:l}}=a.value;return h(l)}),{uncontrolledValueRef:c,mergedValueRef:p,targetValueSetRef:v,valueSetForCheckAllRef:f,valueSetForUncheckAllRef:g,valueSetForClearRef:y,filteredTgtOptionsRef:C,filteredSrcOptionsRef:k,targetOptionsRef:_,canNotSelectAnythingRef:S,canBeClearedRef:w,allCheckedRef:T,srcPatternRef:z,tgtPatternRef:P,mergedSrcFilterableRef:A,handleSrcFilterUpdateValue:$,handleTgtFilterUpdateValue:O}=function(e){const l=Z(e.defaultValue),a=r(I(e,"value"),l),t=E(()=>{const l=new Map;return(e.options||[]).forEach(e=>l.set(e.value,e)),l}),n=E(()=>new Set(a.value||[])),s=E(()=>{const e=t.value,l=[];return(a.value||[]).forEach(a=>{const t=e.get(a);t&&l.push(t)}),l}),i=Z(""),o=Z(""),d=E(()=>e.sourceFilterable||!!e.filterable),u=E(()=>{const{showSelected:l,options:a,filter:t}=e;return d.value?a.filter(e=>t(i.value,e,"source")&&(l||!n.value.has(e.value))):l?a:a.filter(e=>!n.value.has(e.value))}),c=E(()=>{if(!e.targetFilterable)return s.value;const{filter:l}=e;return s.value.filter(e=>l(o.value,e,"target"))}),m=E(()=>{const{value:e}=a;return null===e?new Set:new Set(e)}),p=E(()=>{const e=new Set(m.value);return u.value.forEach(l=>{l.disabled||e.has(l.value)||e.add(l.value)}),e}),v=E(()=>{const e=new Set(m.value);return u.value.forEach(l=>{!l.disabled&&e.has(l.value)&&e.delete(l.value)}),e}),f=E(()=>{const e=new Set(m.value);return c.value.forEach(l=>{l.disabled||e.delete(l.value)}),e}),g=E(()=>u.value.every(e=>e.disabled)),h=E(()=>{if(!u.value.length)return!1;const e=m.value;return u.value.every(l=>l.disabled||e.has(l.value))}),b=E(()=>c.value.some(e=>!e.disabled));return{uncontrolledValueRef:l,mergedValueRef:a,targetValueSetRef:n,valueSetForCheckAllRef:p,valueSetForUncheckAllRef:v,valueSetForClearRef:f,filteredTgtOptionsRef:c,filteredSrcOptionsRef:u,targetOptionsRef:s,canNotSelectAnythingRef:g,canBeClearedRef:b,allCheckedRef:h,srcPatternRef:i,tgtPatternRef:o,mergedSrcFilterableRef:d,handleSrcFilterUpdateValue:function(e){i.value=null!=e?e:""},handleTgtFilterUpdateValue:function(e){o.value=null!=e?e:""}}}(e);function U(l){const{onUpdateValue:a,"onUpdate:value":n,onChange:s}=e,{nTriggerFormInput:r,nTriggerFormChange:o}=t;a&&i(a,l),n&&i(n,l),s&&i(s,l),c.value=l,r(),o()}function L(e,l){U(e?(p.value||[]).concat(l):(p.value||[]).filter(e=>e!==l))}return R(ll,{targetValueSetRef:v,mergedClsPrefixRef:l,disabledRef:o,mergedThemeRef:a,targetOptionsRef:_,canNotSelectAnythingRef:S,canBeClearedRef:w,allCheckedRef:T,srcOptionsLengthRef:E(()=>e.options.length),handleItemCheck:L,renderSourceLabelRef:I(e,"renderSourceLabel"),renderTargetLabelRef:I(e,"renderTargetLabel"),showSelectedRef:I(e,"showSelected")}),{mergedClsPrefix:l,mergedDisabled:o,itemSize:u,isMounted:d(),mergedTheme:a,filteredSrcOpts:k,filteredTgtOpts:C,srcPattern:z,tgtPattern:P,mergedSize:n,mergedSrcFilterable:A,handleSrcFilterUpdateValue:$,handleTgtFilterUpdateValue:O,handleSourceCheckAll:function(){U([...f.value])},handleSourceUncheckAll:function(){U([...g.value])},handleTargetClearAll:function(){U([...y.value])},handleItemCheck:L,handleChecked:function(e){U(e)},cssVars:E(()=>{const{value:e}=n,{common:{cubicBezierEaseInOut:l},self:{borderRadius:t,borderColor:s,listColor:r,titleTextColor:i,titleTextColorDisabled:o,extraTextColor:d,itemTextColor:u,itemColorPending:c,itemTextColorDisabled:m,titleFontWeight:p,closeColorHover:v,closeColorPressed:f,closeIconColor:g,closeIconColorHover:h,closeIconColorPressed:b,closeIconSize:y,closeSize:C,dividerColor:k,extraTextColorDisabled:_,[x("extraFontSize",e)]:S,[x("fontSize",e)]:w,[x("titleFontSize",e)]:T,[x("itemHeight",e)]:z,[x("headerHeight",e)]:P}}=a.value;return{"--n-bezier":l,"--n-border-color":s,"--n-border-radius":t,"--n-extra-font-size":S,"--n-font-size":w,"--n-header-font-size":T,"--n-header-extra-text-color":d,"--n-header-extra-text-color-disabled":_,"--n-header-font-weight":p,"--n-header-text-color":i,"--n-header-text-color-disabled":o,"--n-item-color-pending":c,"--n-item-height":z,"--n-item-text-color":u,"--n-item-text-color-disabled":m,"--n-list-color":r,"--n-header-height":P,"--n-close-size":C,"--n-close-icon-size":y,"--n-close-color-hover":v,"--n-close-color-pressed":f,"--n-close-icon-color":g,"--n-close-icon-color-hover":h,"--n-close-icon-color-pressed":b,"--n-divider-color":k}})}},render(){const{mergedClsPrefix:e,renderSourceList:l,renderTargetList:a,mergedTheme:t,mergedSrcFilterable:n,targetFilterable:s}=this;return O("div",{class:[`${e}-transfer`,this.mergedDisabled&&`${e}-transfer--disabled`],style:this.cssVars},O("div",{class:`${e}-transfer-list ${e}-transfer-list--source`},O(nl,{source:!0,selectAllText:this.selectAllText,clearText:this.clearText,title:this.sourceTitle,onCheckedAll:this.handleSourceCheckAll,onClearAll:this.handleSourceUncheckAll,size:this.mergedSize}),O("div",{class:`${e}-transfer-list-body`},n?O(tl,{onUpdateValue:this.handleSrcFilterUpdateValue,value:this.srcPattern,disabled:this.mergedDisabled,placeholder:this.sourceFilterPlaceholder}):null,O("div",{class:`${e}-transfer-list-flex-container`},l?O(_,{theme:t.peers.Scrollbar,themeOverrides:t.peerOverrides.Scrollbar},{default:()=>l({onCheck:this.handleChecked,checkedOptions:this.filteredTgtOpts,pattern:this.srcPattern})}):O(rl,{source:!0,options:this.filteredSrcOpts,disabled:this.mergedDisabled,virtualScroll:this.virtualScroll,itemSize:this.itemSize}))),O("div",{class:`${e}-transfer-list__border`})),O("div",{class:`${e}-transfer-list ${e}-transfer-list--target`},O(nl,{onClearAll:this.handleTargetClearAll,size:this.mergedSize,title:this.targetTitle}),O("div",{class:`${e}-transfer-list-body`},s?O(tl,{onUpdateValue:this.handleTgtFilterUpdateValue,value:this.tgtPattern,disabled:this.mergedDisabled,placeholder:this.sourceFilterPlaceholder}):null,O("div",{class:`${e}-transfer-list-flex-container`},a?O(_,{theme:t.peers.Scrollbar,themeOverrides:t.peerOverrides.Scrollbar},{default:()=>a({onCheck:this.handleChecked,checkedOptions:this.filteredTgtOpts,pattern:this.tgtPattern})}):O(rl,{options:this.filteredTgtOpts,disabled:this.mergedDisabled,virtualScroll:this.virtualScroll,itemSize:this.itemSize}))),O("div",{class:`${e}-transfer-list__border`})))}}),ol=w({name:"Li",render(){return O("li",null,this.$slots)}}),dl=p("li",{transition:"color .3s var(--n-bezier)",lineHeight:"var(--n-line-height)",margin:"var(--n-li-margin)",marginBottom:0,color:"var(--n-text-color)"}),ul=[p("&:first-child","\n margin-top: 0;\n "),p("&:last-child","\n margin-bottom: 0;\n ")],cl=p([c("ol",{fontSize:"var(--n-font-size)",padding:"var(--n-ol-padding)"},[S("align-text",{paddingLeft:0}),dl,ul]),c("ul",{fontSize:"var(--n-font-size)",padding:"var(--n-ul-padding)"},[S("align-text",{paddingLeft:0}),dl,ul])]),ml=w({name:"Ul",props:Object.assign(Object.assign({},s.props),{alignText:Boolean}),setup(e){const{mergedClsPrefixRef:l,inlineThemeDisabled:a}=m(e),t=s("Typography","-xl",cl,ce,e,l),n=E(()=>{const{common:{cubicBezierEaseInOut:e},self:{olPadding:l,ulPadding:a,liMargin:n,liTextColor:s,liLineHeight:r,liFontSize:i}}=t.value;return{"--n-bezier":e,"--n-font-size":i,"--n-line-height":r,"--n-text-color":s,"--n-li-margin":n,"--n-ol-padding":l,"--n-ul-padding":a}}),r=a?v("ul",void 0,n,e):void 0;return{mergedClsPrefix:l,cssVars:a?void 0:n,themeClass:null==r?void 0:r.themeClass,onRender:null==r?void 0:r.onRender}},render(){var e;const{mergedClsPrefix:l}=this;return null===(e=this.onRender)||void 0===e||e.call(this),O("ul",{class:[`${l}-ul`,this.themeClass,this.alignText&&`${l}-ul--align-text`],style:this.cssVars},this.$slots)}}),pl={class:"card-header"},vl={class:"card-title"},fl={class:"name"},gl={class:"card-body"},hl={key:0,class:"description"},bl={class:"stats"},yl={key:0},Cl={key:1},kl={key:2},xl={key:3},_l={key:4},Sl=C({__name:"ConfigTemplateCard",props:{template:{type:Object,required:!0},deleting:{type:Boolean,default:!1}},emits:["click","apply","preview","edit","delete"],setup(e){const l=e;const a={claude:{label:"Claude",color:"#cc785c",textColor:"#fff",borderColor:"#cc785c"},codex:{label:"Codex",color:"#10a37f",textColor:"#fff",borderColor:"#10a37f"},gemini:{label:"Gemini",color:"#4285f4",textColor:"#fff",borderColor:"#4285f4"},opencode:{label:"OpenCode",color:"#ff6b35",textColor:"#fff",borderColor:"#ff6b35"},omp:{label:"OMP",color:"#0f9f9a",textColor:"#fff",borderColor:"#0f9f9a"}},t={claude:"CLAUDE.md",codex:"AGENTS.md",gemini:"GEMINI.md",opencode:".opencode/AGENTS.md",omp:".omp/commands"};function n(e){const l=a[e];return l?{color:l.color,textColor:l.textColor,borderColor:l.borderColor}:{}}const s=E(()=>{const e=l.template,a=e?.cliType;return a&&"all"!==a?"omp"===a&&e?.commands?.length?t.omp:(e?.aiConfigs?.[a])?.enabled?t[a]||null:"claude"===a&&e?.claudeMd?.enabled?"CLAUDE.md":null:null});return(l,t)=>{return B(),K("div",{class:"template-card",onClick:t[5]||(t[5]=a=>l.$emit("click",e.template))},[W("div",pl,[W("div",vl,[W("span",fl,N(e.template.name),1),e.template.cliType?(B(),M(H(Te),{key:0,size:"small",color:n(e.template.cliType),round:""},{default:j(()=>{return[z(N((l=e.template.cliType,a[l]?.label||l)),1)];var l}),_:1},8,["color"])):T("",!0)]),W("div",{class:"card-actions",onClick:t[4]||(t[4]=q(()=>{},["stop"]))},[L(H(y),{size:"small",type:"primary",onClick:t[0]||(t[0]=a=>l.$emit("apply",e.template))},{default:j(()=>[...t[6]||(t[6]=[z("应用",-1)])]),_:1}),L(H(y),{size:"small",onClick:t[1]||(t[1]=a=>l.$emit("preview",e.template))},{default:j(()=>[...t[7]||(t[7]=[z("预览",-1)])]),_:1}),L(H(y),{size:"small",onClick:t[2]||(t[2]=a=>l.$emit("edit",e.template))},{default:j(()=>[...t[8]||(t[8]=[z("编辑",-1)])]),_:1}),L(H(y),{size:"small",type:"error",loading:e.deleting,onClick:t[3]||(t[3]=a=>l.$emit("delete",e.template))},{default:j(()=>[...t[9]||(t[9]=[z("删除",-1)])]),_:1},8,["loading"])])]),W("div",gl,[e.template.description?(B(),K("div",hl,N((r=e.template.description,i=80,r?.length>i?r.slice(0,i)+"...":r)),1)):T("",!0),W("div",bl,[s.value?(B(),K("span",yl,N(s.value),1)):T("",!0),e.template.skills?.length?(B(),K("span",Cl,N(e.template.skills.length)+" Skills",1)):T("",!0),e.template.agents?.length?(B(),K("span",kl,N(e.template.agents.length)+" Agents",1)):T("",!0),e.template.commands?.length?(B(),K("span",xl,N(e.template.commands.length)+" Commands",1)):T("",!0),e.template.mcpServers?.length?(B(),K("span",_l,N(e.template.mcpServers.length)+" MCP",1)):T("",!0)])])]);var r,i}}},[["__scopeId","data-v-0bfacefb"]]),wl=["innerHTML"],Tl=C({__name:"MarkdownViewer",props:{content:{type:String,default:""}},setup(e){const l=e;function a(e,l){Fe.getLanguage(e)||Fe.registerLanguage(e,l)}a("javascript",Ie),a("typescript",Ne),a("json",Me),a("bash",Be),a("shell",Be),a("sh",Be),a("python",Ee),a("css",Ve),a("xml",je),a("html",je);const t=new Le({html:!0,linkify:!0,typographer:!0,highlight:function(e,l){if(l&&Fe.getLanguage(l))try{return'<pre class="hljs"><code>'+Fe.highlight(e,{language:l,ignoreIllegals:!0}).value+"</code></pre>"}catch(a){}return'<pre class="hljs"><code>'+t.utils.escapeHtml(e)+"</code></pre>"}}),n=E(()=>t.render(l.content||""));return(e,l)=>(B(),K("div",{class:"markdown-viewer",innerHTML:n.value},null,8,wl))}},[["__scopeId","data-v-9e29f753"]]),zl={class:"ai-config-header"},Pl={key:0,class:"prompt-preview"},Rl={class:"ai-config-header"},Al={class:"ai-config-header"},$l={class:"ai-config-header"},Ol={class:"ai-config-header"},Ul={__name:"ConfigTemplateFormModal",props:{show:Boolean,template:Object,availableConfigs:{type:Object,default:()=>({})}},emits:["update:show","success"],setup(e,{emit:l}){const a=e,t=l,n=ie(),s=Z(null),r=Z(!1),i=E(()=>{const e=a.availableConfigs?.platforms;return Array.isArray(e)?e:[]});function o(e=[]){const l=[...i.value.map(e=>e.key),...Object.keys(a.availableConfigs?.skillsByPlatform||{}),...Object.keys(a.availableConfigs?.agentsByPlatform||{}),...Object.keys(a.availableConfigs?.commandsByPlatform||{}),...e];return[...new Set(l.filter(e=>"string"==typeof e&&e.trim()))]}const d=E(()=>i.value.map(e=>({label:e.label||e.title||e.key,value:e.key}))),u=E(()=>i.value.find(e=>e.key===g.value.cliType)),c=E(()=>u.value?.label||u.value?.title||g.value.cliType),m=E(()=>u.value?.promptFile||"");function p(e){const l=u.value?.projectResources?.[e];return l?.canonicalRoot||l?.path||""}const v=E(()=>Boolean(g.value.cliType&&u.value&&!["claude","codex","gemini","opencode","omp"].includes(g.value.cliType))),f=E(()=>!!a.template?.id),g=Z(h());function h(){return{name:"",description:"",cliType:"",aiConfigs:Object.fromEntries(o().map(e=>[e,{enabled:!1,content:""}])),claudeMd:{enabled:!1,content:""},skills:[],agents:[],commands:[],mcpServers:[]}}V(i,e=>{for(const l of e)g.value.aiConfigs[l.key]||(g.value.aiConfigs[l.key]={enabled:!1,content:""})},{deep:!0,immediate:!0});const b={name:{required:!0,message:"请输入模版名称",trigger:"blur"},cliType:{required:!0,message:"请选择 CLI 工具类型",trigger:"change"}},C=E(()=>{const e=g.value.cliType,l=a.availableConfigs?.skillsByPlatform||{};return(e&&l[e]?l[e]:[]).map(e=>({value:e.directory,label:e.name?`${e.name} (${e.directory})`:e.directory,disabled:!1}))}),k=E(()=>{const e=g.value.cliType,l=a.availableConfigs?.agentsByPlatform||{};return(e&&l[e]?l[e]:a.availableConfigs?.agents||[]).map(e=>({value:e.fileName,label:e.name||e.fileName,disabled:!1}))}),x=E(()=>{const e=g.value.cliType,l=a.availableConfigs?.commandsByPlatform||{};return(e&&l[e]?l[e]:a.availableConfigs?.commands||[]).map(e=>({value:e.namespace?`${e.namespace}/${e.name}`:e.name,label:e.namespace?`${e.namespace}/${e.name}`:e.name,disabled:!1}))}),_=E(()=>{const e=a.availableConfigs?.mcpServers||[],l=a.availableConfigs?.mcpPresets||[],t=[...e.map(e=>({value:e.id,label:e.name||e.id})),...l.map(e=>({value:e.id,label:`${e.name} (预设)`}))],n=new Set;return t.filter(e=>!n.has(e.value)&&(n.add(e.value),!0))}),S=Z(null),w=E(()=>(a.availableConfigs?.prompts||[]).map(e=>({value:e.id,label:e.isBuiltin?`[内置] ${e.name}`:e.name,description:e.description}))),P=E({get:()=>g.value.skills.map(e=>e.directory),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.skillsByPlatform||{},n=l&&t[l]?t[l]:[];g.value.skills=e.map(e=>{const l=n.find(l=>l.directory===e);return l?{...l}:{directory:e,name:e}})}}),R=E({get:()=>g.value.agents.map(e=>e.fileName),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.agentsByPlatform||{},n=l&&t[l]?t[l]:a.availableConfigs?.agents||[];g.value.agents=e.map(e=>{const l=n.find(l=>l.fileName===e);return l?{...l}:{fileName:e}})}}),$=E({get:()=>g.value.commands.map(e=>e.namespace?`${e.namespace}/${e.name}`:e.name),set:e=>{const l=g.value.cliType,t=a.availableConfigs?.commandsByPlatform||{},n=l&&t[l]?t[l]:a.availableConfigs?.commands||[];g.value.commands=e.map(e=>{const l=n.find(l=>(l.namespace?`${l.namespace}/${l.name}`:l.name)===e);return l?{...l}:{name:e}})}});function O(e){if(!e)return void(g.value.aiConfigs.claude.content="");const l=(a.availableConfigs?.prompts||[]).find(l=>l.id===e);l&&(g.value.aiConfigs.claude.enabled=!0,g.value.aiConfigs.claude.content=l.content)}async function U(){try{await(s.value?.validate())}catch{return}r.value=!0;try{const e={...g.value};let l;l=f.value?await Ze(a.template.id,e):await qe(e),l.success?(n.success(f.value?"保存成功":"创建成功"),t("success")):n.error(l.message||"操作失败")}catch(e){n.error("操作失败: "+e.message)}finally{r.value=!1}}return V(()=>a.show,e=>{if(e)if(S.value=null,a.template){const e=Object.keys(a.template.aiConfigs||{}),l=Object.fromEntries(o(e).map(e=>[e,{enabled:!1,content:""}]));if(a.template.aiConfigs)for(const t of o(Object.keys(a.template.aiConfigs)))a.template.aiConfigs[t]&&(l[t]={...a.template.aiConfigs[t]});else a.template.claudeMd&&(l.claude||(l.claude={enabled:!1,content:""}),l.claude={...a.template.claudeMd});g.value={name:a.template.name||"",description:a.template.description||"",cliType:a.template.cliType||"",aiConfigs:l,claudeMd:a.template.claudeMd?{...a.template.claudeMd}:{enabled:!1,content:""},skills:a.template.skills?[...a.template.skills]:[],agents:a.template.agents?[...a.template.agents]:[],commands:a.template.commands?[...a.template.commands]:[],mcpServers:a.template.mcpServers?[...a.template.mcpServers]:[]}}else g.value=h()}),V(()=>g.value.cliType,e=>{const l=i.value.find(l=>l.key===e)?.resourceTypes;l&&(l.skills||(g.value.skills=[]),l.agents||(g.value.agents=[]),l.commands||(g.value.commands=[]))}),(l,a)=>{const n=A("n-text");return B(),M(H(ue),{show:e.show,preset:"card",title:f.value?"编辑配置模版":"创建配置模版",style:{width:"850px","max-height":"90vh"},"mask-closable":!1,"onUpdate:show":a[30]||(a[30]=e=>t("update:show",e))},{footer:j(()=>[L(H(be),{justify:"end"},{default:j(()=>[L(H(y),{onClick:a[29]||(a[29]=e=>t("update:show",!1))},{default:j(()=>[...a[35]||(a[35]=[z("取消",-1)])]),_:1}),L(H(y),{type:"primary",loading:r.value,onClick:U},{default:j(()=>[z(N(f.value?"保存":"创建"),1)]),_:1},8,["loading"])]),_:1})]),default:j(()=>[L(H(ye),{style:{"max-height":"calc(90vh - 140px)"}},{default:j(()=>[L(H(_e),{ref_key:"formRef",ref:s,model:g.value,rules:b,"label-placement":"left","label-width":"100"},{default:j(()=>[L(H(oe),{title:"基本信息",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[L(H(fe),{label:"模版名称",path:"name"},{default:j(()=>[L(H(we),{value:g.value.name,"onUpdate:value":a[0]||(a[0]=e=>g.value.name=e),placeholder:"输入模版名称"},null,8,["value"])]),_:1}),L(H(fe),{label:"描述",path:"description"},{default:j(()=>[L(H(we),{value:g.value.description,"onUpdate:value":a[1]||(a[1]=e=>g.value.description=e),type:"textarea",rows:2,placeholder:"输入模版描述"},null,8,["value"])]),_:1}),L(H(fe),{label:"CLI 工具",path:"cliType"},{default:j(()=>[L(H(Pe),{value:g.value.cliType,"onUpdate:value":a[2]||(a[2]=e=>g.value.cliType=e),options:d.value,placeholder:"选择 CLI 工具类型"},null,8,["value","options"])]),_:1})]),_:1}),g.value.cliType?T("",!0):(B(),M(H(oe),{key:0,size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[L(H(Ae),{description:"请先选择 CLI 工具类型以显示配置项"})]),_:1})),"claude"===g.value.cliType?(B(),K(D,{key:1},[L(H(oe),{title:"CLAUDE.md",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[W("div",zl,[L(H(be),{align:"center"},{default:j(()=>[L(H(ge),{value:g.value.aiConfigs.claude.enabled,"onUpdate:value":a[3]||(a[3]=e=>g.value.aiConfigs.claude.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.claude.enabled?1:3},{default:j(()=>[...a[31]||(a[31]=[z("启用 CLAUDE.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.claude.enabled},{default:j(()=>[L(H(Pe),{value:S.value,"onUpdate:value":[a[4]||(a[4]=e=>S.value=e),O],options:w.value,placeholder:"选择 Prompt 预设作为 CLAUDE.md 内容",clearable:"",style:{"margin-bottom":"10px"}},null,8,["value","options"]),g.value.aiConfigs.claude.content?(B(),K("div",Pl,[L(Tl,{content:g.value.aiConfigs.claude.content},null,8,["content"])])):(B(),M(H(Ae),{key:1,description:"可选择 Prompt 预设,或留空",style:{padding:"24px 0"}}))]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:P.value,"onUpdate:value":a[5]||(a[5]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:R.value,"onUpdate:value":a[6]||(a[6]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:$.value,"onUpdate:value":a[7]||(a[7]=e=>$.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[8]||(a[8]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"codex"===g.value.cliType?(B(),K(D,{key:2},[L(H(oe),{title:"AGENTS.md",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[W("div",Rl,[L(H(be),{align:"center"},{default:j(()=>[L(H(ge),{value:g.value.aiConfigs.codex.enabled,"onUpdate:value":a[9]||(a[9]=e=>g.value.aiConfigs.codex.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.codex.enabled?1:3},{default:j(()=>[...a[32]||(a[32]=[z("启用 AGENTS.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.codex.enabled},{default:j(()=>[L(De,{modelValue:g.value.aiConfigs.codex.content,"onUpdate:modelValue":a[10]||(a[10]=e=>g.value.aiConfigs.codex.content=e),rows:10,"min-height":220,placeholder:"输入 AGENTS.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:P.value,"onUpdate:value":a[11]||(a[11]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:R.value,"onUpdate:value":a[12]||(a[12]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:$.value,"onUpdate:value":a[13]||(a[13]=e=>$.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[14]||(a[14]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"gemini"===g.value.cliType?(B(),K(D,{key:3},[L(H(oe),{title:"GEMINI.md",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[W("div",Al,[L(H(be),{align:"center"},{default:j(()=>[L(H(ge),{value:g.value.aiConfigs.gemini.enabled,"onUpdate:value":a[15]||(a[15]=e=>g.value.aiConfigs.gemini.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.gemini.enabled?1:3},{default:j(()=>[...a[33]||(a[33]=[z("启用 GEMINI.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.gemini.enabled},{default:j(()=>[L(De,{modelValue:g.value.aiConfigs.gemini.content,"onUpdate:modelValue":a[16]||(a[16]=e=>g.value.aiConfigs.gemini.content=e),rows:10,"min-height":220,placeholder:"输入 GEMINI.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:P.value,"onUpdate:value":a[17]||(a[17]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[18]||(a[18]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"opencode"===g.value.cliType?(B(),K(D,{key:4},[L(H(oe),{title:".opencode/AGENTS.md",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[W("div",$l,[L(H(be),{align:"center"},{default:j(()=>[L(H(ge),{value:g.value.aiConfigs.opencode.enabled,"onUpdate:value":a[19]||(a[19]=e=>g.value.aiConfigs.opencode.enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs.opencode.enabled?1:3},{default:j(()=>[...a[34]||(a[34]=[z("启用 .opencode/AGENTS.md",-1)])]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs.opencode.enabled},{default:j(()=>[L(De,{modelValue:g.value.aiConfigs.opencode.content,"onUpdate:modelValue":a[20]||(a[20]=e=>g.value.aiConfigs.opencode.content=e),rows:10,"min-height":220,placeholder:"输入 .opencode/AGENTS.md 内容"},null,8,["modelValue"])]),_:1},8,["show"])]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:P.value,"onUpdate:value":a[21]||(a[21]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Agents",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.agents.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:R.value,"onUpdate:value":a[22]||(a[22]=e=>R.value=e),options:k.value,"source-title":"可用 Agents","target-title":"已选 Agents"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:$.value,"onUpdate:value":a[23]||(a[23]=e=>$.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.mcpServers.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:g.value.mcpServers,"onUpdate:value":a[24]||(a[24]=e=>g.value.mcpServers=e),options:_.value,"source-title":"可用 MCP Servers","target-title":"已选 MCP Servers"},null,8,["value","options"])]),_:1})],64)):T("",!0),"omp"===g.value.cliType?(B(),K(D,{key:5},[L(H(oe),{title:"OMP Commands",size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[L(H(Te),{size:"small",type:"success"},{default:j(()=>[z(N(p("commands")||"Commands"),1)]),_:1})]),_:1}),L(H(oe),{title:"Skills",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.skills.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:P.value,"onUpdate:value":a[25]||(a[25]=e=>P.value=e),options:C.value,"source-title":"可用 Skills","target-title":"已选 Skills"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"Commands",size:"small",style:{"margin-bottom":"16px"}},{"header-extra":j(()=>[L(H(Te),{size:"small"},{default:j(()=>[z("已选 "+N(g.value.commands.length),1)]),_:1})]),default:j(()=>[L(H(il),{value:$.value,"onUpdate:value":a[26]||(a[26]=e=>$.value=e),options:x.value,"source-title":"可用 Commands","target-title":"已选 Commands"},null,8,["value","options"])]),_:1}),L(H(oe),{title:"MCP Servers",size:"small"},{default:j(()=>[L(H(Te),{size:"small",type:"default"},{default:j(()=>[z(N(p("plugins")||"packages/extensions"),1)]),_:1})]),_:1})],64)):T("",!0),v.value?(B(),M(H(oe),{key:6,title:`${c.value} 配置`,size:"small",style:{"margin-bottom":"16px"}},{default:j(()=>[W("div",Ol,[L(H(be),{align:"center"},{default:j(()=>[L(H(ge),{value:g.value.aiConfigs[g.value.cliType].enabled,"onUpdate:value":a[27]||(a[27]=e=>g.value.aiConfigs[g.value.cliType].enabled=e)},null,8,["value"]),L(n,{depth:g.value.aiConfigs[g.value.cliType].enabled?1:3},{default:j(()=>[z(" 启用 "+N(m.value||`${c.value} 配置`),1)]),_:1},8,["depth"])]),_:1})]),L(H(el),{show:g.value.aiConfigs[g.value.cliType].enabled},{default:j(()=>[L(De,{modelValue:g.value.aiConfigs[g.value.cliType].content,"onUpdate:modelValue":a[28]||(a[28]=e=>g.value.aiConfigs[g.value.cliType].content=e),rows:10,"min-height":220,placeholder:`输入 ${m.value||c.value} 内容`},null,8,["modelValue","placeholder"])]),_:1},8,["show"])]),_:1},8,["title"])):T("",!0)]),_:1},8,["model"])]),_:1})]),_:1},8,["show","title"])}}},Ll=C(Ul,[["__scopeId","data-v-0d81f984"]]),Ml={key:0},Fl={key:1},Bl={key:2},Vl={key:4},Nl={__name:"ConfigApplyModal",props:{show:Boolean,template:Object},emits:["update:show","success"],setup(e,{emit:l}){const a=e,t=l,n=ie(),s=Z(null),r=Z(!1),i=Z(!1),o=Z(null),d=Z(!1),u=Z([]),c=Z(null),m={claude:{key:"claude",name:"Claude",fileName:"CLAUDE.md",color:"#cc785c"},codex:{key:"codex",name:"Codex",fileName:"AGENTS.md",color:"#10a37f"},gemini:{key:"gemini",name:"Gemini",fileName:"GEMINI.md",color:"#4285f4"},opencode:{key:"opencode",name:"OpenCode",fileName:".opencode/AGENTS.md",color:"#ff6b35"},omp:{key:"omp",name:"OMP command templates",fileName:".omp/commands",color:"#0f9f9a"}},p=E(()=>{const e=a.template?.aiConfigs||{},l=a.template?.cliType;if("omp"===l&&m.omp)return[m.omp];const t=Object.entries(e).filter(([,e])=>e?.enabled&&e?.content).map(([e])=>m[e]).filter(Boolean);if(l&&"all"!==l){const a=e[l];if(a?.enabled&&a?.content&&m[l])return[m[l]]}return t});function v(){return p.value.map(e=>e.key)}const g=Z({targetPath:"",aiConfigTypes:[]}),h={targetPath:{required:!0,message:"请输入目标路径",trigger:"blur"}},b=E(()=>{const e=new Set,l=[];for(const a of u.value){const t=a.fullPath||a.path||a.name;t&&!e.has(t)&&(e.add(t),l.push({label:`${a.displayName||a.name} (${a.channel})`,value:t}))}return l});function C(e){e&&(g.value.targetPath=e)}async function k(){if(g.value.targetPath&&a.template&&0!==g.value.aiConfigTypes.length){r.value=!0;try{const e=await Ke(a.template.id,g.value.targetPath,g.value.aiConfigTypes);e.success?o.value=e.data:n.error(e.message||"预览失败")}catch(e){n.error("预览失败: "+e.message)}finally{r.value=!1}}}async function x(){try{await(s.value?.validate())}catch{return}if(a.template&&0!==g.value.aiConfigTypes.length){i.value=!0;try{const e=await Je(a.template.id,g.value.targetPath,g.value.aiConfigTypes);if(e.success){const l=e.data?.results?.skipped||[];l.length>0?n.warning(`模版已部分应用,${l.length} 项已跳过`):n.success("模版应用成功"),t("success",e.data||null)}else n.error(e.message||"应用失败")}catch(e){n.error("应用失败: "+e.message)}finally{i.value=!1}}}return V(()=>a.show,e=>{e&&(g.value.targetPath="",g.value.aiConfigTypes=v(),o.value=null,c.value=null,async function(){d.value=!0;try{const e=await Ge();e.success?u.value=Array.isArray(e.data)?e.data:[]:u.value=[]}catch(e){u.value=[]}finally{d.value=!1}}())}),V(()=>a.template,()=>{g.value.aiConfigTypes=v()}),(l,a)=>(B(),M(H(ue),{show:e.show,preset:"card",title:`应用模版: ${e.template?.name||""}`,style:{width:"650px"},"mask-closable":!1,"onUpdate:show":a[4]||(a[4]=e=>t("update:show",e))},{footer:j(()=>[L(H(be),{justify:"end"},{default:j(()=>[L(H(y),{onClick:a[3]||(a[3]=e=>t("update:show",!1))},{default:j(()=>[...a[14]||(a[14]=[z("取消",-1)])]),_:1}),L(H(y),{type:"primary",loading:i.value,disabled:!g.value.targetPath||0===g.value.aiConfigTypes.length,onClick:x},{default:j(()=>[...a[15]||(a[15]=[z(" 确认应用 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:j(()=>[L(H(_e),{ref_key:"formRef",ref:s,model:g.value,rules:h},{default:j(()=>[L(H(fe),{label:"选择已有项目"},{default:j(()=>[L(H(Pe),{value:c.value,"onUpdate:value":[a[0]||(a[0]=e=>c.value=e),C],options:b.value,loading:d.value,placeholder:"选择已有项目路径",filterable:"",clearable:""},null,8,["value","options","loading"])]),_:1}),L(H(fe),{label:"目标项目路径",path:"targetPath"},{default:j(()=>[L(H(we),{value:g.value.targetPath,"onUpdate:value":a[1]||(a[1]=e=>g.value.targetPath=e),placeholder:"输入项目目录路径,如 /path/to/project"},null,8,["value"])]),_:1}),p.value.length>0?(B(),M(H(fe),{key:0,label:"生成配置文件"},{default:j(()=>[L(H(Re),{value:g.value.aiConfigTypes,"onUpdate:value":a[2]||(a[2]=e=>g.value.aiConfigTypes=e)},{default:j(()=>[L(H(be),null,{default:j(()=>[(B(!0),K(D,null,$(p.value,e=>(B(),M(H(Se),{key:e.key,value:e.key},{default:j(()=>[L(H(be),{align:"center",size:4},{default:j(()=>[L(H(f),{size:16,color:e.color},{default:j(()=>[L(H(se))]),_:1},8,["color"]),W("span",null,N(e.name),1),L(H(Ce),{depth:"3",style:{"font-size":"12px"}},{default:j(()=>[z("("+N(e.fileName||e.name)+")",1)]),_:2},1024)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["value"]),L(H(Ce),{depth:"3",style:{"font-size":"12px","margin-top":"4px",display:"block"}},{default:j(()=>[...a[5]||(a[5]=[z(" 可同时选择多个 CLI 配置文件 ",-1)])]),_:1})]),_:1})):T("",!0)]),_:1},8,["model"]),L(H(be),{style:{"margin-bottom":"16px"}},{default:j(()=>[L(H(y),{onClick:k,loading:r.value,disabled:!g.value.targetPath||0===g.value.aiConfigTypes.length},{default:j(()=>[...a[6]||(a[6]=[z(" 预览应用效果 ",-1)])]),_:1},8,["loading","disabled"])]),_:1}),o.value?(B(),M(H(oe),{key:0,size:"small",title:"应用预览"},{default:j(()=>[L(H(be),{vertical:""},{default:j(()=>[o.value.summary?(B(),K("div",Ml,[L(H(Ce),{depth:"3"},{default:j(()=>[...a[7]||(a[7]=[z("将应用:",-1)])]),_:1}),L(H(be),{style:{"margin-top":"8px"},wrap:""},{default:j(()=>[(B(!0),K(D,null,$(o.value.summary.aiConfigs,e=>{return B(),M(H(Te),{key:e.type,type:(l=e.type,{claude:"warning",codex:"success",gemini:"info",opencode:"error",omp:"success"}[l]||"default"),size:"small"},{default:j(()=>[z(N(e.fileName||e.name),1)]),_:2},1032,["type"]);var l}),128)),o.value.summary.skills?(B(),M(H(Te),{key:0,type:"info",size:"small"},{default:j(()=>[z(N(o.value.summary.skills)+" Skills",1)]),_:1})):T("",!0),o.value.summary.agents?(B(),M(H(Te),{key:1,type:"info",size:"small"},{default:j(()=>[z(N(o.value.summary.agents)+" Agents",1)]),_:1})):T("",!0),o.value.summary.commands?(B(),M(H(Te),{key:2,type:"info",size:"small"},{default:j(()=>[z(N(o.value.summary.commands)+" Commands",1)]),_:1})):T("",!0),o.value.summary.plugins?(B(),M(H(Te),{key:3,type:"warning",size:"small"},{default:j(()=>[z(N(o.value.summary.plugins)+" Plugins",1)]),_:1})):T("",!0),o.value.summary.mcpServers?(B(),M(H(Te),{key:4,type:"warning",size:"small"},{default:j(()=>[z(N(o.value.summary.mcpServers)+" MCP",1)]),_:1})):T("",!0),o.value.summary.skipped?(B(),M(H(Te),{key:5,type:"error",size:"small"},{default:j(()=>[z(N(o.value.summary.skipped)+" Skipped",1)]),_:1})):T("",!0)]),_:1})])):T("",!0),L(H(ve),{style:{margin:"12px 0"}}),o.value.willCreate?.length?(B(),K("div",Fl,[L(H(Ce),{type:"success"},{default:j(()=>[...a[8]||(a[8]=[z("将创建:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:j(()=>[(B(!0),K(D,null,$(o.value.willCreate,e=>(B(),M(H(ol),{key:e},{default:j(()=>[L(H(Ce),{code:""},{default:j(()=>[z(N(e),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.willOverwrite?.length?(B(),K("div",Bl,[L(H(Ce),{type:"warning"},{default:j(()=>[...a[9]||(a[9]=[z("将覆盖:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:j(()=>[(B(!0),K(D,null,$(o.value.willOverwrite,e=>(B(),M(H(ol),{key:e},{default:j(()=>[L(H(Ce),{code:""},{default:j(()=>[z(N(e),1)]),_:2},1024),L(H(Te),{type:"warning",size:"tiny",style:{"margin-left":"8px"}},{default:j(()=>[...a[10]||(a[10]=[z("已存在",-1)])]),_:1})]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.willOverwrite?.length?(B(),M(H(ze),{key:3,type:"warning",style:{"margin-top":"8px"}},{default:j(()=>[...a[11]||(a[11]=[z(" 以上文件将被覆盖,请确认后再应用 ",-1)])]),_:1})):T("",!0),o.value.skipped?.length?(B(),K("div",Vl,[L(H(Ce),{type:"error"},{default:j(()=>[...a[12]||(a[12]=[z("将跳过:",-1)])]),_:1}),L(H(ml),{style:{margin:"4px 0"}},{default:j(()=>[(B(!0),K(D,null,$(o.value.skipped,(e,l)=>(B(),M(H(ol),{key:`${e.type}-${e.item}-${l}`},{default:j(()=>[L(H(Ce),null,{default:j(()=>[z(N(e.type)+": ",1)]),_:2},1024),L(H(Ce),{code:""},{default:j(()=>[z(N(e.item),1)]),_:2},1024),L(H(Ce),{depth:"3"},{default:j(()=>[z(" - "+N(e.reason),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):T("",!0),o.value.skipped?.length?(B(),M(H(ze),{key:5,type:"info",style:{"margin-top":"8px"}},{default:j(()=>[...a[13]||(a[13]=[z(" 本次将进行部分应用,以上项会被跳过。 ",-1)])]),_:1})):T("",!0)]),_:1})]),_:1})):T("",!0)]),_:1},8,["show","title"]))}},El={key:0,class:"preview-content"},Il={class:"info-section"},jl={class:"info-row"},Dl={class:"value"},Gl={key:0,class:"info-row"},ql={class:"value"},Hl={key:1,class:"info-row"},Zl={class:"stats-section"},Kl={class:"stats-grid"},Wl={key:1,class:"stat-item"},Yl={key:2,class:"stat-item"},Jl={key:3,class:"stat-item"},Ql={key:4,class:"stat-item"},Xl={key:5,class:"stat-item"},ea={class:"markdown-content"},la={class:"markdown-content"},aa={class:"list-items"},ta={class:"list-items"},na={class:"list-items"},sa={key:0,class:"list-note"},ra={class:"list-items"},ia=C({__name:"ConfigPreviewModal",props:{show:Boolean,template:Object},emits:["update:show","apply"],setup(e,{emit:l}){const a=e,t=l,n={claude:{key:"claude",name:"Claude",fileName:"CLAUDE.md",color:"#cc785c"},codex:{key:"codex",name:"Codex",fileName:"AGENTS.md",color:"#10a37f"},gemini:{key:"gemini",name:"Gemini",fileName:"GEMINI.md",color:"#4285f4"},opencode:{key:"opencode",name:"OpenCode",fileName:".opencode/AGENTS.md",color:"#ff6b35"},omp:{key:"omp",name:"OMP command templates",fileName:".omp/commands",color:"#0f9f9a"}},s=E(()=>{const e=a.template?.aiConfigs||{},l=Object.entries(e).filter(([,e])=>e?.enabled&&e?.content).map(([e,l])=>({...n[e],content:l.content})).filter(e=>e.key),t=a.template?.cliType;if("omp"===t&&a.template?.commands?.length)return[{...n.omp,content:a.template.commands.map(e=>`- ${e.namespace?`${e.namespace}/`:""}${e.name||e}`).join("\n")}];if(t&&"all"!==t){const l=e[t];if(l?.enabled&&l?.content&&n[t])return[{...n[t],content:l.content}]}return l}),r=E(()=>s.value.length>0),i=E(()=>{const e=a.template;return!!e&&(r.value||e.claudeMd?.content||e.skills?.length||e.agents?.length||e.commands?.length||e.mcpServers?.length)}),o={claude:{label:"Claude",color:"#cc785c",textColor:"#fff",borderColor:"#cc785c"},codex:{label:"Codex",color:"#10a37f",textColor:"#fff",borderColor:"#10a37f"},gemini:{label:"Gemini",color:"#4285f4",textColor:"#fff",borderColor:"#4285f4"},opencode:{label:"OpenCode",color:"#ff6b35",textColor:"#fff",borderColor:"#ff6b35"},omp:{label:"OMP",color:"#0f9f9a",textColor:"#fff",borderColor:"#0f9f9a"}};function d(e){const l=o[e];return l?{color:l.color,textColor:l.textColor,borderColor:l.borderColor}:{}}function u(){t("apply",a.template)}return(l,a)=>(B(),M(H(ue),{show:e.show,preset:"card",title:`模版预览: ${e.template?.name||""}`,style:{width:"750px","max-height":"80vh"},"mask-closable":!0,"onUpdate:show":a[1]||(a[1]=e=>t("update:show",e))},{footer:j(()=>[L(H(be),{justify:"end"},{default:j(()=>[L(H(y),{onClick:a[0]||(a[0]=e=>t("update:show",!1))},{default:j(()=>[...a[7]||(a[7]=[z("关闭",-1)])]),_:1}),L(H(y),{type:"primary",onClick:u},{default:j(()=>[...a[8]||(a[8]=[z("应用此模版",-1)])]),_:1})]),_:1})]),default:j(()=>[e.template?(B(),K("div",El,[W("div",Il,[W("div",jl,[a[2]||(a[2]=W("span",{class:"label"},"名称:",-1)),W("span",Dl,N(e.template.name),1)]),e.template.description?(B(),K("div",Gl,[a[3]||(a[3]=W("span",{class:"label"},"描述:",-1)),W("span",ql,N(e.template.description),1)])):T("",!0),e.template.cliType?(B(),K("div",Hl,[a[4]||(a[4]=W("span",{class:"label"},"CLI 工具:",-1)),L(H(Te),{size:"small",color:d(e.template.cliType),round:""},{default:j(()=>{return[z(N((l=e.template.cliType,o[l]?.label||l)),1)];var l}),_:1},8,["color"])])):T("",!0)]),W("div",Zl,[a[6]||(a[6]=W("div",{class:"section-title"},"包含配置",-1)),W("div",Kl,[r.value?(B(!0),K(D,{key:0},$(s.value,e=>(B(),K("div",{class:"stat-item",key:e.key},[L(H(f),{size:"20",color:e.color},{default:j(()=>[L(H(se))]),_:1},8,["color"]),W("span",null,N(e.fileName||e.name),1)]))),128)):e.template.claudeMd?.enabled?(B(),K("div",Wl,[L(H(f),{size:"20"},{default:j(()=>[L(H(se))]),_:1}),a[5]||(a[5]=W("span",null,"CLAUDE.md",-1))])):T("",!0),e.template.skills?.length?(B(),K("div",Yl,[L(H(f),{size:"20"},{default:j(()=>[L(H(ee))]),_:1}),W("span",null,N(e.template.skills.length)+" Skills",1)])):T("",!0),e.template.agents?.length?(B(),K("div",Jl,[L(H(f),{size:"20"},{default:j(()=>[L(H(Q))]),_:1}),W("span",null,N(e.template.agents.length)+" Agents",1)])):T("",!0),e.template.commands?.length?(B(),K("div",Ql,[L(H(f),{size:"20"},{default:j(()=>[L(H(ae))]),_:1}),W("span",null,N(e.template.commands.length)+" Commands",1)])):T("",!0),e.template.mcpServers?.length?(B(),K("div",Xl,[L(H(f),{size:"20"},{default:j(()=>[L(H(te))]),_:1}),W("span",null,N(e.template.mcpServers.length)+" MCP Servers",1)])):T("",!0)])]),i.value?(B(),M(H(me),{key:0,class:"details-section"},{default:j(()=>[(B(!0),K(D,null,$(s.value,e=>(B(),M(H(pe),{key:e.key,title:`${e.name} 配置 (${e.fileName||e.name})`,name:e.key},{default:j(()=>[W("div",ea,[L(Tl,{content:e.content},null,8,["content"])])]),_:2},1032,["title","name"]))),128)),!r.value&&e.template.claudeMd?.content?(B(),M(H(pe),{key:0,title:"CLAUDE.md 内容",name:"claudeMd"},{default:j(()=>[W("div",la,[L(Tl,{content:e.template.claudeMd.content},null,8,["content"])])]),_:1})):T("",!0),e.template.skills?.length?(B(),M(H(pe),{key:1,title:"Skills 列表",name:"skills"},{default:j(()=>[W("div",aa,[(B(!0),K(D,null,$(e.template.skills,(e,l)=>(B(),K("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.agents?.length?(B(),M(H(pe),{key:2,title:"Agents 列表",name:"agents"},{default:j(()=>[W("div",ta,[(B(!0),K(D,null,$(e.template.agents,(e,l)=>(B(),K("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.commands?.length?(B(),M(H(pe),{key:3,title:"Commands 列表",name:"commands"},{default:j(()=>[W("div",na,["omp"===e.template.cliType?(B(),K("div",sa," 将写入 .omp/commands,作为 OMP commands 使用。 ")):T("",!0),(B(!0),K(D,null,$(e.template.commands,(e,l)=>(B(),K("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0),e.template.mcpServers?.length?(B(),M(H(pe),{key:4,title:"MCP Servers",name:"mcpServers"},{default:j(()=>[W("div",ra,[(B(!0),K(D,null,$(e.template.mcpServers,(e,l)=>(B(),K("div",{key:l,class:"list-item"},N(e.name||e),1))),128))])]),_:1})):T("",!0)]),_:1})):T("",!0)])):T("",!0)]),_:1},8,["show","title"]))}},[["__scopeId","data-v-27b692bd"]]),oa={key:0,class:"panel-header"},da={class:"header-left"},ua={class:"header-right"},ca={key:1,class:"drawer-header-bar"},ma={class:"header-right"},pa={class:"stats-bar"},va={class:"stats-text"},fa={class:"filter-bar"},ga={class:"panel-content"},ha={key:0,class:"empty-state"},ba={key:1,class:"card-list"},ya={class:"panel-footer"},Ca={__name:"ConfigTemplatesPanel",props:{inDrawer:{type:Boolean,default:!1},hideBack:{type:Boolean,default:!1},drawerVisible:{type:Boolean,default:!1}},emits:["back","updated"],setup(e){const l=e,a=ie(),t=de(),n=Z(!1),s=Z([]),r=Z({}),i=Z(""),o=Z(""),d=E(()=>{const e=Array.isArray(r.value?.platforms)?r.value.platforms:[],l=s.value.map(e=>e.cliType).filter(Boolean).map(e=>({key:e,label:e})),a=new Set,t=[{label:"全部 CLI",value:""}];for(const n of[...e,...l]){const e=String(n?.key||"").trim().toLowerCase();e&&!a.has(e)&&(a.add(e),t.push({label:n.label||n.title||e,value:e}))}return t}),u=Z(null),c=Z(!1),m=Z(!1),p=Z(!1),v=Z(null),g=Z(null),h=Z(null),b=E(()=>{let e=s.value;if(o.value&&(e=e.filter(e=>e.cliType===o.value)),i.value.trim()){const l=i.value.toLowerCase();e=e.filter(e=>e.name?.toLowerCase().includes(l)||e.description?.toLowerCase().includes(l))}return e});async function C(){n.value=!0;try{const[e,l]=await Promise.all([Ye(),We()]);e.success&&(s.value=e.data||[]),l.success&&(r.value=l.data||{})}catch(e){a.error("加载数据失败: "+e.message)}finally{n.value=!1}}function k(){v.value=null,c.value=!0}function x(e){v.value={...e},c.value=!0}function _(e){h.value=e,p.value=!0}function S(e){g.value=e,p.value=!1,m.value=!0}function w(e){t.warning({title:"确认删除",content:`确定要删除模版 "${e.name}" 吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{u.value=e.id;try{const l=await He(e.id);l.success?(a.success("删除成功"),C()):a.error(l.message||"删除失败")}catch(l){a.error("删除失败: "+l.message)}finally{u.value=null}}})}function P(){c.value=!1,C()}function R(){m.value=!1,C()}return F(()=>C()),V(()=>l.drawerVisible,e=>{e&&C()}),(l,a)=>(B(),K("div",{class:G(["templates-panel",{"in-drawer":e.inDrawer}])},[e.inDrawer?T("",!0):(B(),K("div",oa,[W("div",da,[e.hideBack?T("",!0):(B(),M(H(y),{key:0,text:"",onClick:a[0]||(a[0]=e=>l.$emit("back")),class:"back-btn"},{icon:j(()=>[L(H(f),null,{default:j(()=>[L(H(X))]),_:1})]),_:1})),a[6]||(a[6]=W("span",{class:"panel-title"},"配置模版管理",-1))]),W("div",ua,[L(H(y),{text:"",onClick:k,class:"action-btn"},{icon:j(()=>[L(H(f),null,{default:j(()=>[L(H(J))]),_:1})]),default:j(()=>[a[7]||(a[7]=z(" 创建 ",-1))]),_:1}),L(H(y),{text:"",onClick:C,loading:n.value,class:"action-btn"},{icon:j(()=>[L(H(f),null,{default:j(()=>[L(H(re))]),_:1})]),default:j(()=>[a[8]||(a[8]=z(" 刷新 ",-1))]),_:1},8,["loading"])])])),e.inDrawer?(B(),K("div",ca,[W("div",ma,[L(H(y),{text:"",onClick:k,class:"action-btn"},{icon:j(()=>[L(H(f),null,{default:j(()=>[L(H(J))]),_:1})]),default:j(()=>[a[9]||(a[9]=z(" 创建 ",-1))]),_:1}),L(H(y),{text:"",onClick:C,loading:n.value,class:"action-btn"},{icon:j(()=>[L(H(f),null,{default:j(()=>[L(H(re))]),_:1})]),default:j(()=>[a[10]||(a[10]=z(" 刷新 ",-1))]),_:1},8,["loading"])])])):T("",!0),W("div",pa,[W("span",va," 共 "+N(s.value.length)+" 个模版 ",1)]),W("div",fa,[L(H(we),{value:i.value,"onUpdate:value":a[1]||(a[1]=e=>i.value=e),placeholder:"搜索模版...",clearable:"",size:"small",class:"search-input"},{prefix:j(()=>[L(H(f),null,{default:j(()=>[L(H(le))]),_:1})]),_:1},8,["value"]),L(H(Pe),{value:o.value,"onUpdate:value":a[2]||(a[2]=e=>o.value=e),options:d.value,size:"small",class:"filter-select"},null,8,["value","options"])]),W("div",ga,[L(H(he),{show:n.value},{default:j(()=>[0!==b.value.length||n.value?(B(),K("div",ba,[(B(!0),K(D,null,$(b.value,e=>(B(),M(Sl,{key:e.id,template:e,deleting:u.value===e.id,onClick:_,onPreview:_,onEdit:x,onDelete:w,onApply:S},null,8,["template","deleting"]))),128))])):(B(),K("div",ha,[L(H(Ae),{description:"暂无配置模版"},{icon:j(()=>[L(H(f),{size:"48",color:"var(--text-quaternary)"},{default:j(()=>[L(H(ne))]),_:1})]),extra:j(()=>[L(H(y),{size:"small",onClick:k},{default:j(()=>[...a[11]||(a[11]=[z("创建第一个模版",-1)])]),_:1})]),_:1})]))]),_:1},8,["show"])]),W("div",ya,[L(H(f),{size:"14",class:"info-icon"},{default:j(()=>[L(H(Y))]),_:1}),a[12]||(a[12]=W("span",null,"配置模版可快速应用到工作区",-1))]),L(Ll,{show:c.value,"onUpdate:show":a[3]||(a[3]=e=>c.value=e),template:v.value,"available-configs":r.value,onSuccess:P},null,8,["show","template","available-configs"]),L(Nl,{show:m.value,"onUpdate:show":a[4]||(a[4]=e=>m.value=e),template:g.value,onSuccess:R},null,8,["show","template"]),L(ia,{show:p.value,"onUpdate:show":a[5]||(a[5]=e=>p.value=e),template:h.value,onApply:S},null,8,["show","template"])],2))}},ka=C(Ca,[["__scopeId","data-v-96aa6e1d"]]);export{ka as t};
@@ -0,0 +1 @@
1
+ .template-card[data-v-0bfacefb]{background:var(--bg-secondary);border:1px solid var(--border-primary);cursor:pointer;border-radius:8px;padding:12px 16px;transition:all .2s}.template-card[data-v-0bfacefb]:hover{border-color:var(--primary-color);box-shadow:0 2px 8px #00000014}.card-header[data-v-0bfacefb]{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.card-title[data-v-0bfacefb]{align-items:center;gap:8px;display:flex}.card-title .name[data-v-0bfacefb]{color:var(--text-primary);font-size:14px;font-weight:600}.card-actions[data-v-0bfacefb]{gap:4px;display:flex}.card-body[data-v-0bfacefb]{flex-direction:column;gap:6px;display:flex}.description[data-v-0bfacefb]{color:var(--text-secondary);font-size:13px;line-height:1.4}.stats[data-v-0bfacefb]{color:var(--text-tertiary);flex-wrap:wrap;gap:10px;font-size:12px;display:flex}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.markdown-viewer[data-v-9e29f753]{color:#333;font-size:14px;line-height:1.6}.markdown-viewer[data-v-9e29f753] h1{border-bottom:1px solid #eaecef;margin:.67em 0;padding-bottom:.3em;font-size:2em;font-weight:600}.markdown-viewer[data-v-9e29f753] h2{border-bottom:1px solid #eaecef;margin:.75em 0 .5em;padding-bottom:.3em;font-size:1.5em;font-weight:600}.markdown-viewer[data-v-9e29f753] h3{margin:.8em 0 .5em;font-size:1.25em;font-weight:600}.markdown-viewer[data-v-9e29f753] h4{margin:.8em 0 .5em;font-size:1em;font-weight:600}.markdown-viewer[data-v-9e29f753] h5,.markdown-viewer[data-v-9e29f753] h6{margin:.8em 0 .5em;font-size:.875em;font-weight:600}.markdown-viewer[data-v-9e29f753] p{margin:.8em 0}.markdown-viewer[data-v-9e29f753] ul,.markdown-viewer[data-v-9e29f753] ol{margin:.8em 0;padding-left:2em}.markdown-viewer[data-v-9e29f753] li{margin:.25em 0}.markdown-viewer[data-v-9e29f753] blockquote{color:#6a737d;border-left:.25em solid #dfe2e5;margin:1em 0;padding:0 1em}.markdown-viewer[data-v-9e29f753] code{background-color:#1b1f230d;border-radius:3px;margin:0;padding:.2em .4em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:85%}.markdown-viewer[data-v-9e29f753] pre{background-color:#f6f8fa;border-radius:6px;margin:1em 0;padding:16px;font-size:85%;line-height:1.45;overflow:auto}.markdown-viewer[data-v-9e29f753] pre code{background-color:#0000;padding:0;font-size:100%}.markdown-viewer[data-v-9e29f753] table{border-collapse:collapse;border-spacing:0;width:100%;margin:1em 0}.markdown-viewer[data-v-9e29f753] table th,.markdown-viewer[data-v-9e29f753] table td{border:1px solid #dfe2e5;padding:6px 13px}.markdown-viewer[data-v-9e29f753] table th{background-color:#f6f8fa;font-weight:600}.markdown-viewer[data-v-9e29f753] table tr:nth-child(2n){background-color:#f6f8fa}.markdown-viewer[data-v-9e29f753] a{color:#0366d6;text-decoration:none}.markdown-viewer[data-v-9e29f753] a:hover{text-decoration:underline}.markdown-viewer[data-v-9e29f753] img{box-sizing:content-box;background-color:#fff;border:1px solid #dfe2e5;border-radius:3px;max-width:100%;margin:.5em 0}.markdown-viewer[data-v-9e29f753] hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}@media (prefers-color-scheme:dark){.markdown-viewer[data-v-9e29f753]{color:#e6edf3}.markdown-viewer[data-v-9e29f753] h1,.markdown-viewer[data-v-9e29f753] h2{border-bottom-color:#30363d}.markdown-viewer[data-v-9e29f753] blockquote{color:#8b949e;border-left-color:#3b434b}.markdown-viewer[data-v-9e29f753] code{background-color:#6e768166}.markdown-viewer[data-v-9e29f753] pre{background-color:#161b22}.markdown-viewer[data-v-9e29f753] table th,.markdown-viewer[data-v-9e29f753] table td{border-color:#30363d}.markdown-viewer[data-v-9e29f753] table th{background-color:#161b22}.markdown-viewer[data-v-9e29f753] table tr:nth-child(2n){background-color:#0d1117}.markdown-viewer[data-v-9e29f753] a{color:#58a6ff}.markdown-viewer[data-v-9e29f753] img{background-color:#0d1117;border-color:#30363d}.markdown-viewer[data-v-9e29f753] hr{background-color:#21262d}}.ai-config-header[data-v-0d81f984]{margin-bottom:12px}.prompt-preview[data-v-0d81f984]{background:#fafafa;border:1px solid #e0e0e6;border-radius:6px;max-height:300px;padding:12px 16px;overflow-y:auto}.preview-content[data-v-27b692bd]{flex-direction:column;gap:16px;max-height:calc(80vh - 140px);display:flex;overflow-y:auto}.info-section[data-v-27b692bd]{flex-direction:column;gap:8px;display:flex}.info-row[data-v-27b692bd]{align-items:center;gap:8px;display:flex}.info-row .label[data-v-27b692bd]{color:var(--text-tertiary);min-width:50px;font-size:13px}.info-row .value[data-v-27b692bd]{color:var(--text-primary);font-size:14px}.stats-section[data-v-27b692bd]{background:var(--bg-secondary);border-radius:8px;padding:12px}.section-title[data-v-27b692bd]{color:var(--text-secondary);margin-bottom:10px;font-size:13px;font-weight:600}.stats-grid[data-v-27b692bd]{flex-wrap:wrap;gap:12px;display:flex}.stat-item[data-v-27b692bd]{background:var(--bg-primary);color:var(--text-secondary);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.details-section[data-v-27b692bd]{margin-top:8px}.list-items[data-v-27b692bd]{flex-direction:column;gap:6px;display:flex}.list-item[data-v-27b692bd]{background:var(--bg-secondary);color:var(--text-primary);border-radius:4px;padding:6px 10px;font-size:13px}.list-note[data-v-27b692bd]{color:var(--text-tertiary);margin-bottom:8px;font-size:12px}.list-item .item-desc[data-v-27b692bd]{color:var(--text-tertiary);font-size:12px}.markdown-content[data-v-27b692bd]{background:var(--bg-secondary);border-radius:6px;max-height:400px;padding:12px;overflow-y:auto}.templates-panel[data-v-96aa6e1d]{background:var(--bg-primary);flex-direction:column;flex:1;min-height:0;display:flex}.panel-header[data-v-96aa6e1d],.drawer-header-bar[data-v-96aa6e1d]{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.drawer-header-bar[data-v-96aa6e1d]{padding:8px 12px}.header-left[data-v-96aa6e1d],.header-right[data-v-96aa6e1d]{align-items:center;gap:8px;display:flex}.back-btn[data-v-96aa6e1d]{padding:4px}.panel-title[data-v-96aa6e1d]{color:var(--text-primary);font-size:15px;font-weight:600}.action-btn[data-v-96aa6e1d]{padding:4px 8px;font-size:12px}.stats-bar[data-v-96aa6e1d]{background:var(--bg-tertiary);border-bottom:1px solid var(--border-primary);align-items:center;padding:10px 16px;display:flex}.templates-panel.in-drawer .stats-bar[data-v-96aa6e1d]{padding:10px 12px}.stats-text[data-v-96aa6e1d]{color:var(--text-tertiary);font-size:12px}.filter-bar[data-v-96aa6e1d]{border-bottom:1px solid var(--border-primary);gap:10px;padding:12px 16px;display:flex}.templates-panel.in-drawer .filter-bar[data-v-96aa6e1d]{padding:10px 12px}.search-input[data-v-96aa6e1d]{flex:1}.filter-select[data-v-96aa6e1d]{width:100px}.panel-content[data-v-96aa6e1d]{flex:1;padding:16px;overflow-y:auto}.templates-panel.in-drawer .panel-content[data-v-96aa6e1d]{padding:12px}.panel-content[data-v-96aa6e1d] .n-spin-container{min-height:200px}.empty-state[data-v-96aa6e1d]{justify-content:center;align-items:center;min-height:200px;display:flex}.card-list[data-v-96aa6e1d]{flex-direction:column;gap:12px;display:flex}.panel-footer[data-v-96aa6e1d]{color:var(--text-tertiary);border-top:1px solid var(--border-primary);background:var(--bg-secondary);align-items:center;gap:6px;padding:10px 16px;font-size:11px;display:flex}.templates-panel.in-drawer .panel-footer[data-v-96aa6e1d]{padding:8px 12px}.info-icon[data-v-96aa6e1d]{color:var(--text-quaternary)}
@@ -0,0 +1 @@
1
+ import{N as e,bn as i,gn as n,gt as r,ht as t,vn as l,yn as o}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as s,M as d,b as a,g as v}from"./vue-vendor-BqZbbXHA.js";import{s as c}from"./light-Cp0t7v32.js";var h=n("divider","\n position: relative;\n display: flex;\n width: 100%;\n box-sizing: border-box;\n font-size: 16px;\n color: var(--n-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n",[i("vertical","\n margin-top: 24px;\n margin-bottom: 24px;\n ",[i("no-title","\n display: flex;\n align-items: center;\n ")]),l("title","\n display: flex;\n align-items: center;\n margin-left: 12px;\n margin-right: 12px;\n white-space: nowrap;\n font-weight: var(--n-font-weight);\n "),o("title-position-left",[l("line",[o("left",{width:"28px"})])]),o("title-position-right",[l("line",[o("right",{width:"28px"})])]),o("dashed",[l("line","\n background-color: #0000;\n height: 0px;\n width: 100%;\n border-style: dashed;\n border-width: 1px 0 0;\n ")]),o("vertical","\n display: inline-block;\n height: 1em;\n margin: 0 8px;\n vertical-align: middle;\n width: 1px;\n "),l("line","\n border: none;\n transition: background-color .3s var(--n-bezier), border-color .3s var(--n-bezier);\n height: 1px;\n width: 100%;\n margin: 0;\n "),i("dashed",[l("line",{backgroundColor:"var(--n-color)"})]),o("dashed",[l("line",{borderColor:"var(--n-color)"})]),o("vertical",{backgroundColor:"var(--n-color)"})]),g=s({name:"Divider",props:Object.assign(Object.assign({},e.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),setup(i){const{mergedClsPrefixRef:n,inlineThemeDisabled:l}=r(i),o=e("Divider","-divider",h,c,i,n),s=a(()=>{const{common:{cubicBezierEaseInOut:e},self:{color:i,textColor:n,fontWeight:r}}=o.value;return{"--n-bezier":e,"--n-color":i,"--n-text-color":n,"--n-font-weight":r}}),d=l?t("divider",void 0,s,i):void 0;return{mergedClsPrefix:n,cssVars:l?void 0:s,themeClass:null==d?void 0:d.themeClass,onRender:null==d?void 0:d.onRender}},render(){var e;const{$slots:i,titlePlacement:n,vertical:r,dashed:t,cssVars:l,mergedClsPrefix:o}=this;return null===(e=this.onRender)||void 0===e||e.call(this),d("div",{role:"separator",class:[`${o}-divider`,this.themeClass,{[`${o}-divider--vertical`]:r,[`${o}-divider--no-title`]:!i.default,[`${o}-divider--dashed`]:t,[`${o}-divider--title-position-${n}`]:i.default&&n}],style:l},r?null:d("div",{class:`${o}-divider__line ${o}-divider__line--left`}),!r&&i.default?d(v,null,d("div",{class:`${o}-divider__title`},this.$slots),d("div",{class:`${o}-divider__line ${o}-divider__line--right`})):null)}});export{g as t};
@@ -0,0 +1 @@
1
+ import{D as e,Dt as r,Jt as t,y as o}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as l,M as s,N as a}from"./vue-vendor-BqZbbXHA.js";var n=l({name:"DrawerContent",props:{title:String,headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],bodyClass:String,bodyStyle:[Object,String],bodyContentClass:String,bodyContentStyle:[Object,String],nativeScrollbar:{type:Boolean,default:!0},scrollbarProps:Object,closable:Boolean},slots:Object,setup(){const e=a(t,null);e||r("drawer-content","`n-drawer-content` must be placed inside `n-drawer`.");const{doUpdateShow:o}=e;return{handleCloseClick:function(){o(!1)},mergedTheme:e.mergedThemeRef,mergedClsPrefix:e.mergedClsPrefixRef}},render(){const{title:r,mergedClsPrefix:t,nativeScrollbar:l,mergedTheme:a,bodyClass:n,bodyStyle:d,bodyContentClass:c,bodyContentStyle:i,headerClass:b,headerStyle:y,footerClass:S,footerStyle:h,scrollbarProps:C,closable:p,$slots:g}=this;return s("div",{role:"none",class:[`${t}-drawer-content`,l&&`${t}-drawer-content--native-scrollbar`]},g.header||r||p?s("div",{class:[`${t}-drawer-header`,b],style:y,role:"none"},s("div",{class:`${t}-drawer-header__main`,role:"heading","aria-level":"1"},void 0!==g.header?g.header():r),p&&s(e,{onClick:this.handleCloseClick,clsPrefix:t,class:`${t}-drawer-header__close`,absolute:!0})):null,l?s("div",{class:[`${t}-drawer-body`,n],style:d,role:"none"},s("div",{class:[`${t}-drawer-body-content-wrapper`,c],style:i,role:"none"},g)):s(o,Object.assign({themeOverrides:a.peerOverrides.Scrollbar,theme:a.peers.Scrollbar},C,{class:`${t}-drawer-body`,contentClass:[`${t}-drawer-body-content-wrapper`,c],contentStyle:i}),g),g.footer?s("div",{class:[`${t}-drawer-footer`,S],style:h,role:"none"},g.footer()):null)}});export{n as t};
@@ -0,0 +1 @@
1
+ .favorites-container[data-v-56e896bc]{padding:4px 0}.favorites-section[data-v-56e896bc]{margin-bottom:32px}.favorites-section[data-v-56e896bc]:last-child{margin-bottom:0}.section-header[data-v-56e896bc]{border-left:4px solid;border-radius:10px;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:flex}.claude-header[data-v-56e896bc]{background:linear-gradient(135deg,#18a0581a 0%,#0000 100%);border-left-color:#18a058}.codex-header[data-v-56e896bc]{background:linear-gradient(135deg,#3b82f61a 0%,#0000 100%);border-left-color:#3b82f6}.gemini-header[data-v-56e896bc]{background:linear-gradient(135deg,#a855f71a 0%,#0000 100%);border-left-color:#a855f7}.section-header .n-icon[data-v-56e896bc]{flex-shrink:0}.claude-header .n-icon[data-v-56e896bc]{color:#18a058}.codex-header .n-icon[data-v-56e896bc]{color:#3b82f6}.gemini-header .n-icon[data-v-56e896bc]{color:#a855f7}.section-title[data-v-56e896bc]{color:var(--text-primary);flex:1;margin:0;font-size:16px;font-weight:700}.sessions-list[data-v-56e896bc]{flex-direction:column;gap:8px;display:flex}.clickable-session[data-v-56e896bc]{cursor:pointer}
@@ -0,0 +1 @@
1
+ import{i as e,s,t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{C as i,D as l,K as t,O as o,S as n,W as c,_t as r,b as d,et as u,g as v,m,mt as p,p as h,st as f,w as _,x as y}from"./vue-vendor-BqZbbXHA.js";import{Dt as g,f as j,l as k,lt as w,r as C}from"./icons-B2Vg-IOC.js";import{l as x}from"./light-Cp0t7v32.js";import{n as N,t as b}from"./useResponsiveDrawer-B3uojyvV.js";import{t as I}from"./DrawerContent-ChXgZ1Xm.js";import{K as z,N as $,P as A,_ as L,ct as D,dt as S,pt as F}from"./index-DnEocV0M.js";import{t as K}from"./sessions-Cmy31slD.js";import{t as U}from"./SessionCard-BgLg49U3.js";import{t as R}from"./sessions-yC_oVVh8.js";var W={class:"favorites-container"},B={key:0,class:"favorites-section"},G={class:"section-header claude-header"},O={class:"sessions-list"},P={key:1,class:"favorites-section"},q={class:"section-header codex-header"},E={class:"sessions-list"},H={key:2,class:"favorites-section"},J={class:"section-header gemini-header"},M={class:"sessions-list"},Q=a({__name:"FavoritesDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","view-history"],setup(a,{emit:Q}){const{drawerWidth:T}=b(720),V=a,X=Q,Y=d({get:()=>V.visible,set:e=>X("update:visible",e)}),{getFavorites:Z,removeFavorite:ee,getAllFavorites:se}=L(),ae=R(),ie=d(()=>Z("claude")),le=d(()=>Z("codex")),te=d(()=>Z("gemini")),oe=f(!1),ne=f(null),ce=f(""),re=f("");function de(e){let s="claude";le.value.some(s=>s.sessionId===e.sessionId&&s.projectName===e.projectName)?s="codex":te.value.some(s=>s.sessionId===e.sessionId&&s.projectName===e.projectName)&&(s="gemini"),ne.value=e,ce.value=e.alias||"",re.value=s,oe.value=!0}async function ue(){if(ne.value)try{ae.setChannel(re.value);const e=ne.value.sessionId;if(ce.value){await ae.setAlias(e,ce.value),$.success("别名设置成功");const s=se()[re.value]?.find(s=>s.sessionId===e&&s.projectName===ne.value.projectName);s&&(s.alias=ce.value)}else{await ae.deleteAlias(e),$.success("别名已删除");const s=se()[re.value]?.find(s=>s.sessionId===e&&s.projectName===ne.value.projectName);s&&(s.alias="")}oe.value=!1,ne.value=null,ce.value=""}catch(e){$.error("操作失败: "+e.message)}}async function ve(e,s){try{const{copyResult:a}=await K(s.projectName,s.sessionId,e);if("manual"===a?.method)return void $.warning("自动复制失败,已弹出手动复制框");$.success("启动命令已复制到剪贴板")}catch(a){$.error("复制失败: "+a.message)}}async function me(e,s){try{await ee(e,s.projectName,s.sessionId),$.success("已移除收藏")}catch(a){$.error("移除失败: "+a.message)}}return(a,d)=>(c(),n(p(N),{show:Y.value,"onUpdate:show":d[3]||(d[3]=e=>Y.value=e),width:p(T),placement:"right"},{default:u(()=>[o(p(I),{title:"我的收藏",closable:""},{default:u(()=>[y("div",W,[ie.value.length>0?(c(),_("div",B,[y("div",G,[o(p(e),{size:20},{default:u(()=>[o(p(g))]),_:1}),d[4]||(d[4]=y("h3",{class:"section-title"},"Claude",-1)),o(p(S),{size:"small",bordered:!1,type:"success"},{default:u(()=>[l(r(ie.value.length),1)]),_:1})]),y("div",O,[(c(!0),_(v,null,t(ie.value,i=>(c(),n(U,{key:`claude-${i.projectName}-${i.sessionId}`,session:i,channel:"claude","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"claude"}),onSetAlias:de,onLaunch:e=>ve("claude",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("claude",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[5]||(d[5]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),le.value.length>0?(c(),_("div",P,[y("div",q,[o(p(e),{size:20},{default:u(()=>[o(p(w))]),_:1}),d[6]||(d[6]=y("h3",{class:"section-title"},"Codex",-1)),o(p(S),{size:"small",bordered:!1,type:"info"},{default:u(()=>[l(r(le.value.length),1)]),_:1})]),y("div",E,[(c(!0),_(v,null,t(le.value,i=>(c(),n(U,{key:`codex-${i.projectName}-${i.sessionId}`,session:i,channel:"codex","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"codex"}),onSetAlias:de,onLaunch:e=>ve("codex",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("codex",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[7]||(d[7]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),te.value.length>0?(c(),_("div",H,[y("div",J,[o(p(e),{size:20},{default:u(()=>[o(p(j))]),_:1}),d[8]||(d[8]=y("h3",{class:"section-title"},"Gemini",-1)),o(p(S),{size:"small",bordered:!1,type:"warning"},{default:u(()=>[l(r(te.value.length),1)]),_:1})]),y("div",M,[(c(!0),_(v,null,t(te.value,i=>(c(),n(U,{key:`gemini-${i.projectName}-${i.sessionId}`,session:i,channel:"gemini","show-project":!0,"hide-fork":"","hide-delete":"",class:"clickable-session",onClick:e=>a.$emit("view-history",{session:i,channel:"gemini"}),onSetAlias:de,onLaunch:e=>ve("gemini",i)},{"actions-extra":u(()=>[o(p(s),{size:"small",type:"error",onClick:m(e=>me("gemini",i),["stop"])},{icon:u(()=>[o(p(e),null,{default:u(()=>[o(p(C))]),_:1})]),default:u(()=>[d[9]||(d[9]=l(" 移除 ",-1))]),_:1},8,["onClick"])]),_:2},1032,["session","onClick","onLaunch"]))),128))])])):i("",!0),0===a.totalCount?(c(),n(p(F),{key:3,description:"暂无收藏",style:{"margin-top":"80px"}},{icon:u(()=>[o(p(e),{size:48},{default:u(()=>[o(p(k))]),_:1})]),extra:u(()=>[o(p(A),{depth:"3",style:{"font-size":"13px"}},{default:u(()=>[...d[10]||(d[10]=[l(' 在会话列表中点击"收藏"按钮添加收藏 ',-1)])]),_:1})]),_:1})):i("",!0)]),o(p(x),{show:oe.value,"onUpdate:show":d[2]||(d[2]=e=>oe.value=e),preset:"dialog",title:"设置别名"},{action:u(()=>[o(p(z),null,{default:u(()=>[o(p(s),{onClick:d[1]||(d[1]=e=>oe.value=!1)},{default:u(()=>[...d[11]||(d[11]=[l("取消",-1)])]),_:1}),o(p(s),{type:"primary",onClick:ue},{default:u(()=>[...d[12]||(d[12]=[l("确定",-1)])]),_:1})]),_:1})]),default:u(()=>[o(p(D),{value:ce.value,"onUpdate:value":d[0]||(d[0]=e=>ce.value=e),placeholder:"输入别名(留空删除)",onKeyup:h(ue,["enter"])},null,8,["value"])]),_:1},8,["show"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-56e896bc"]]);export{Q as default};
@@ -0,0 +1 @@
1
+ .drawer-header[data-v-27295eec]{align-items:center;gap:8px;display:flex}.header-icon-wrapper[data-v-27295eec]{background:var(--bg-secondary);border:1px solid var(--border-primary);width:28px;height:28px;color:var(--primary-color);border-radius:6px;justify-content:center;align-items:center;display:flex}.convert-container[data-v-27295eec]{flex-direction:column;gap:10px;padding-bottom:8px;display:flex}.action-row[data-v-27295eec]{justify-content:space-between;align-items:center;gap:8px;display:flex}.result-section[data-v-27295eec]{border:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:8px;padding:12px}.result-meta[data-v-27295eec]{flex-wrap:wrap;gap:10px 14px;display:flex}.meta-row[data-v-27295eec]{align-items:center;gap:6px;display:flex}.meta-label[data-v-27295eec]{color:var(--text-secondary);font-size:12px}.warning-title[data-v-27295eec]{margin-bottom:4px;font-size:12px;font-weight:600}.warning-list[data-v-27295eec]{margin:0;padding-left:16px;font-size:12px;line-height:1.5}