claude-code-workflow 7.2.15 → 7.2.16

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 (526) hide show
  1. package/.ccw/workflows/cli-templates/schemas/team-tasks-schema.json +255 -0
  2. package/.codex/agents/team-supervisor.toml +39 -0
  3. package/.codex/agents/team-worker.toml +46 -0
  4. package/.codex/skills/team-arch-opt/SKILL.md +151 -698
  5. package/.codex/skills/team-arch-opt/roles/analyzer/role.md +78 -0
  6. package/.codex/skills/team-arch-opt/roles/coordinator/commands/analyze.md +57 -0
  7. package/.codex/skills/team-arch-opt/roles/coordinator/commands/dispatch.md +287 -0
  8. package/.codex/skills/team-arch-opt/roles/coordinator/commands/monitor.md +204 -0
  9. package/.codex/skills/team-arch-opt/roles/coordinator/role.md +162 -0
  10. package/.codex/skills/team-arch-opt/roles/designer/role.md +115 -0
  11. package/.codex/skills/team-arch-opt/roles/refactorer/role.md +102 -0
  12. package/.codex/skills/team-arch-opt/roles/reviewer/role.md +111 -0
  13. package/.codex/skills/team-arch-opt/roles/validator/role.md +115 -0
  14. package/.codex/skills/team-arch-opt/specs/pipelines.md +102 -0
  15. package/.codex/skills/team-arch-opt/specs/team-config.json +263 -0
  16. package/.codex/skills/team-brainstorm/SKILL.md +167 -724
  17. package/.codex/skills/team-brainstorm/roles/challenger/role.md +61 -0
  18. package/.codex/skills/team-brainstorm/roles/coordinator/commands/analyze.md +58 -0
  19. package/.codex/skills/team-brainstorm/roles/coordinator/commands/dispatch.md +162 -0
  20. package/.codex/skills/team-brainstorm/roles/coordinator/commands/monitor.md +171 -0
  21. package/.codex/skills/team-brainstorm/roles/coordinator/role.md +140 -0
  22. package/.codex/skills/team-brainstorm/roles/evaluator/role.md +56 -0
  23. package/.codex/skills/team-brainstorm/roles/ideator/role.md +69 -0
  24. package/.codex/skills/team-brainstorm/roles/synthesizer/role.md +57 -0
  25. package/.codex/skills/team-brainstorm/specs/pipelines.md +72 -0
  26. package/.codex/skills/team-brainstorm/specs/team-config.json +86 -0
  27. package/.codex/skills/team-coordinate/SKILL.md +267 -667
  28. package/.codex/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +247 -0
  29. package/.codex/skills/team-coordinate/roles/coordinator/commands/dispatch.md +126 -0
  30. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +327 -0
  31. package/.codex/skills/team-coordinate/roles/coordinator/role.md +361 -0
  32. package/.codex/skills/team-coordinate/specs/knowledge-transfer.md +111 -0
  33. package/.codex/skills/team-coordinate/specs/pipelines.md +97 -0
  34. package/.codex/skills/team-coordinate/specs/quality-gates.md +112 -0
  35. package/.codex/skills/team-coordinate/specs/role-spec-template.md +192 -0
  36. package/.codex/skills/team-designer/SKILL.md +153 -691
  37. package/.codex/skills/team-designer/phases/01-requirements-analysis.md +250 -0
  38. package/.codex/skills/team-designer/phases/02-scaffold-generation.md +228 -0
  39. package/.codex/skills/team-designer/phases/03-content-generation.md +330 -0
  40. package/.codex/skills/team-designer/phases/04-validation.md +320 -0
  41. package/.codex/skills/team-executor/SKILL.md +191 -515
  42. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +280 -0
  43. package/.codex/skills/team-executor/roles/executor/role.md +170 -0
  44. package/.codex/skills/team-executor/specs/session-schema.md +264 -0
  45. package/.codex/skills/team-frontend/SKILL.md +129 -750
  46. package/.codex/skills/team-frontend/roles/analyst/role.md +92 -0
  47. package/.codex/skills/team-frontend/roles/architect/role.md +86 -0
  48. package/.codex/skills/team-frontend/roles/coordinator/commands/analyze.md +52 -0
  49. package/.codex/skills/team-frontend/roles/coordinator/commands/dispatch.md +151 -0
  50. package/.codex/skills/team-frontend/roles/coordinator/commands/monitor.md +188 -0
  51. package/.codex/skills/team-frontend/roles/coordinator/role.md +157 -0
  52. package/.codex/skills/team-frontend/roles/developer/role.md +93 -0
  53. package/.codex/skills/team-frontend/roles/qa/role.md +79 -0
  54. package/.codex/skills/team-frontend/specs/pipelines.md +76 -0
  55. package/.codex/skills/team-frontend/specs/team-config.json +84 -0
  56. package/.codex/skills/team-frontend-debug/SKILL.md +191 -821
  57. package/.codex/skills/team-frontend-debug/roles/analyzer/role.md +208 -0
  58. package/.codex/skills/team-frontend-debug/roles/coordinator/commands/analyze.md +174 -0
  59. package/.codex/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md +198 -0
  60. package/.codex/skills/team-frontend-debug/roles/coordinator/commands/monitor.md +143 -0
  61. package/.codex/skills/team-frontend-debug/roles/coordinator/role.md +131 -0
  62. package/.codex/skills/team-frontend-debug/roles/fixer/role.md +147 -0
  63. package/.codex/skills/team-frontend-debug/roles/reproducer/role.md +147 -0
  64. package/.codex/skills/team-frontend-debug/roles/tester/role.md +231 -0
  65. package/.codex/skills/team-frontend-debug/roles/verifier/role.md +172 -0
  66. package/.codex/skills/team-frontend-debug/specs/debug-tools.md +215 -0
  67. package/.codex/skills/team-frontend-debug/specs/pipelines.md +94 -0
  68. package/.codex/skills/team-issue/SKILL.md +166 -751
  69. package/.codex/skills/team-issue/roles/coordinator/commands/analyze.md +64 -0
  70. package/.codex/skills/team-issue/roles/coordinator/commands/dispatch.md +273 -0
  71. package/.codex/skills/team-issue/roles/coordinator/commands/monitor.md +194 -0
  72. package/.codex/skills/team-issue/roles/coordinator/role.md +175 -0
  73. package/.codex/skills/team-issue/roles/explorer/role.md +94 -0
  74. package/.codex/skills/team-issue/roles/implementer/role.md +87 -0
  75. package/.codex/skills/team-issue/roles/integrator/role.md +84 -0
  76. package/.codex/skills/team-issue/roles/planner/role.md +81 -0
  77. package/.codex/skills/team-issue/roles/reviewer/role.md +86 -0
  78. package/.codex/skills/team-issue/specs/pipelines.md +124 -0
  79. package/.codex/skills/team-issue/specs/team-config.json +70 -0
  80. package/.codex/skills/team-iterdev/SKILL.md +134 -825
  81. package/.codex/skills/team-iterdev/roles/architect/role.md +65 -0
  82. package/.codex/skills/team-iterdev/roles/coordinator/commands/analyze.md +62 -0
  83. package/.codex/skills/team-iterdev/roles/coordinator/commands/dispatch.md +187 -0
  84. package/.codex/skills/team-iterdev/roles/coordinator/commands/monitor.md +186 -0
  85. package/.codex/skills/team-iterdev/roles/coordinator/role.md +161 -0
  86. package/.codex/skills/team-iterdev/roles/developer/role.md +74 -0
  87. package/.codex/skills/team-iterdev/roles/reviewer/role.md +66 -0
  88. package/.codex/skills/team-iterdev/roles/tester/role.md +88 -0
  89. package/.codex/skills/team-iterdev/specs/pipelines.md +94 -0
  90. package/.codex/skills/team-iterdev/specs/team-config.json +172 -0
  91. package/.codex/skills/team-lifecycle-v4/MIGRATION-PLAN.md +512 -0
  92. package/.codex/skills/team-lifecycle-v4/SKILL.md +166 -723
  93. package/.codex/skills/team-lifecycle-v4/roles/analyst/role.md +104 -0
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +56 -0
  95. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +61 -0
  96. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +177 -0
  97. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +152 -0
  98. package/.codex/skills/team-lifecycle-v4/roles/executor/commands/fix.md +35 -0
  99. package/.codex/skills/team-lifecycle-v4/roles/executor/commands/implement.md +63 -0
  100. package/.codex/skills/team-lifecycle-v4/roles/executor/role.md +89 -0
  101. package/.codex/skills/team-lifecycle-v4/roles/planner/role.md +108 -0
  102. package/.codex/skills/team-lifecycle-v4/roles/reviewer/commands/review-code.md +57 -0
  103. package/.codex/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +44 -0
  104. package/.codex/skills/team-lifecycle-v4/roles/reviewer/role.md +98 -0
  105. package/.codex/skills/team-lifecycle-v4/roles/supervisor/role.md +210 -0
  106. package/.codex/skills/team-lifecycle-v4/roles/tester/role.md +126 -0
  107. package/.codex/skills/team-lifecycle-v4/roles/writer/role.md +125 -0
  108. package/.codex/skills/team-lifecycle-v4/schemas/tasks-schema.md +82 -160
  109. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +136 -0
  110. package/.codex/skills/team-lifecycle-v4/specs/pipelines.md +125 -0
  111. package/.codex/skills/team-lifecycle-v4/specs/quality-gates.md +130 -0
  112. package/.codex/skills/team-perf-opt/SKILL.md +169 -697
  113. package/.codex/skills/team-perf-opt/roles/benchmarker/role.md +89 -0
  114. package/.codex/skills/team-perf-opt/roles/coordinator/commands/analyze.md +61 -0
  115. package/.codex/skills/team-perf-opt/roles/coordinator/commands/dispatch.md +262 -0
  116. package/.codex/skills/team-perf-opt/roles/coordinator/commands/monitor.md +320 -0
  117. package/.codex/skills/team-perf-opt/roles/coordinator/role.md +147 -0
  118. package/.codex/skills/team-perf-opt/roles/optimizer/role.md +97 -0
  119. package/.codex/skills/team-perf-opt/roles/profiler/role.md +73 -0
  120. package/.codex/skills/team-perf-opt/roles/reviewer/role.md +75 -0
  121. package/.codex/skills/team-perf-opt/roles/strategist/role.md +94 -0
  122. package/.codex/skills/team-perf-opt/specs/pipelines.md +65 -0
  123. package/.codex/skills/team-perf-opt/specs/team-config.json +246 -0
  124. package/.codex/skills/team-planex/SKILL.md +103 -477
  125. package/.codex/skills/team-planex/roles/coordinator/commands/analyze.md +52 -0
  126. package/.codex/skills/team-planex/roles/coordinator/commands/dispatch.md +80 -0
  127. package/.codex/skills/team-planex/roles/coordinator/commands/monitor.md +164 -0
  128. package/.codex/skills/team-planex/roles/coordinator/role.md +140 -0
  129. package/.codex/skills/team-planex/roles/executor/role.md +91 -0
  130. package/.codex/skills/team-planex/roles/planner/role.md +112 -0
  131. package/.codex/skills/team-planex/specs/pipelines.md +93 -0
  132. package/.codex/skills/team-quality-assurance/SKILL.md +148 -813
  133. package/.codex/skills/team-quality-assurance/roles/analyst/role.md +80 -0
  134. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +72 -0
  135. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +108 -0
  136. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +209 -0
  137. package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +143 -0
  138. package/.codex/skills/team-quality-assurance/roles/executor/role.md +66 -0
  139. package/.codex/skills/team-quality-assurance/roles/generator/role.md +68 -0
  140. package/.codex/skills/team-quality-assurance/roles/scout/role.md +67 -0
  141. package/.codex/skills/team-quality-assurance/roles/strategist/role.md +71 -0
  142. package/.codex/skills/team-quality-assurance/specs/pipelines.md +115 -0
  143. package/.codex/skills/team-quality-assurance/specs/team-config.json +131 -0
  144. package/.codex/skills/team-review/SKILL.md +148 -533
  145. package/.codex/skills/team-review/roles/coordinator/commands/analyze.md +71 -0
  146. package/.codex/skills/team-review/roles/coordinator/commands/dispatch.md +90 -0
  147. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +185 -0
  148. package/.codex/skills/team-review/roles/coordinator/role.md +142 -0
  149. package/.codex/skills/team-review/roles/fixer/role.md +76 -0
  150. package/.codex/skills/team-review/roles/reviewer/role.md +68 -0
  151. package/.codex/skills/team-review/roles/scanner/role.md +71 -0
  152. package/.codex/skills/team-review/specs/dimensions.md +82 -0
  153. package/.codex/skills/team-review/specs/finding-schema.json +82 -0
  154. package/.codex/skills/team-review/specs/pipelines.md +102 -0
  155. package/.codex/skills/team-review/specs/team-config.json +27 -0
  156. package/.codex/skills/team-roadmap-dev/SKILL.md +162 -683
  157. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/analyze.md +61 -0
  158. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/dispatch.md +241 -0
  159. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md +468 -0
  160. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/pause.md +90 -0
  161. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/resume.md +137 -0
  162. package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/roadmap-discuss.md +243 -0
  163. package/.codex/skills/team-roadmap-dev/roles/coordinator/role.md +303 -0
  164. package/.codex/skills/team-roadmap-dev/roles/executor/role.md +71 -0
  165. package/.codex/skills/team-roadmap-dev/roles/planner/role.md +76 -0
  166. package/.codex/skills/team-roadmap-dev/roles/verifier/role.md +74 -0
  167. package/.codex/skills/team-roadmap-dev/specs/pipelines.md +93 -0
  168. package/.codex/skills/team-roadmap-dev/specs/team-config.json +95 -0
  169. package/.codex/skills/team-tech-debt/SKILL.md +129 -708
  170. package/.codex/skills/team-tech-debt/roles/assessor/role.md +69 -0
  171. package/.codex/skills/team-tech-debt/roles/coordinator/commands/analyze.md +47 -0
  172. package/.codex/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +163 -0
  173. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +231 -0
  174. package/.codex/skills/team-tech-debt/roles/coordinator/role.md +141 -0
  175. package/.codex/skills/team-tech-debt/roles/executor/role.md +76 -0
  176. package/.codex/skills/team-tech-debt/roles/planner/role.md +69 -0
  177. package/.codex/skills/team-tech-debt/roles/scanner/role.md +82 -0
  178. package/.codex/skills/team-tech-debt/roles/validator/role.md +75 -0
  179. package/.codex/skills/team-tech-debt/specs/pipelines.md +47 -0
  180. package/.codex/skills/team-tech-debt/specs/team-config.json +129 -0
  181. package/.codex/skills/team-testing/SKILL.md +144 -769
  182. package/.codex/skills/team-testing/roles/analyst/role.md +95 -0
  183. package/.codex/skills/team-testing/roles/coordinator/commands/analyze.md +70 -0
  184. package/.codex/skills/team-testing/roles/coordinator/commands/dispatch.md +106 -0
  185. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +242 -0
  186. package/.codex/skills/team-testing/roles/coordinator/role.md +151 -0
  187. package/.codex/skills/team-testing/roles/executor/role.md +96 -0
  188. package/.codex/skills/team-testing/roles/generator/role.md +95 -0
  189. package/.codex/skills/team-testing/roles/strategist/role.md +83 -0
  190. package/.codex/skills/team-testing/specs/pipelines.md +101 -0
  191. package/.codex/skills/team-testing/specs/team-config.json +93 -0
  192. package/.codex/skills/team-uidesign/SKILL.md +133 -767
  193. package/.codex/skills/team-uidesign/roles/coordinator/commands/analyze.md +59 -0
  194. package/.codex/skills/team-uidesign/roles/coordinator/commands/dispatch.md +156 -0
  195. package/.codex/skills/team-uidesign/roles/coordinator/commands/monitor.md +194 -0
  196. package/.codex/skills/team-uidesign/roles/coordinator/role.md +179 -0
  197. package/.codex/skills/team-uidesign/roles/designer/role.md +69 -0
  198. package/.codex/skills/team-uidesign/roles/implementer/role.md +72 -0
  199. package/.codex/skills/team-uidesign/roles/researcher/role.md +82 -0
  200. package/.codex/skills/team-uidesign/roles/reviewer/role.md +67 -0
  201. package/.codex/skills/team-uidesign/specs/pipelines.md +76 -0
  202. package/.codex/skills/team-uidesign/specs/team-config.json +107 -0
  203. package/.codex/skills/team-ultra-analyze/SKILL.md +166 -786
  204. package/.codex/skills/team-ultra-analyze/roles/analyst/role.md +90 -0
  205. package/.codex/skills/team-ultra-analyze/roles/coordinator/commands/analyze.md +73 -0
  206. package/.codex/skills/team-ultra-analyze/roles/coordinator/commands/dispatch.md +225 -0
  207. package/.codex/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md +327 -0
  208. package/.codex/skills/team-ultra-analyze/roles/coordinator/role.md +223 -0
  209. package/.codex/skills/team-ultra-analyze/roles/discussant/role.md +104 -0
  210. package/.codex/skills/team-ultra-analyze/roles/explorer/role.md +74 -0
  211. package/.codex/skills/team-ultra-analyze/roles/synthesizer/role.md +78 -0
  212. package/.codex/skills/team-ultra-analyze/specs/pipelines.md +64 -0
  213. package/.codex/skills/team-ultra-analyze/specs/team-config.json +129 -0
  214. package/.codex/skills/team-ux-improve/SKILL.md +142 -638
  215. package/.codex/skills/team-ux-improve/roles/coordinator/commands/analyze.md +62 -0
  216. package/.codex/skills/team-ux-improve/roles/coordinator/commands/dispatch.md +233 -0
  217. package/.codex/skills/team-ux-improve/roles/coordinator/commands/monitor.md +160 -0
  218. package/.codex/skills/team-ux-improve/roles/coordinator/role.md +138 -0
  219. package/.codex/skills/team-ux-improve/roles/designer/role.md +122 -0
  220. package/.codex/skills/team-ux-improve/roles/diagnoser/role.md +93 -0
  221. package/.codex/skills/team-ux-improve/roles/explorer/role.md +77 -0
  222. package/.codex/skills/team-ux-improve/roles/implementer/role.md +102 -0
  223. package/.codex/skills/team-ux-improve/roles/scanner/role.md +93 -0
  224. package/.codex/skills/team-ux-improve/roles/tester/role.md +84 -0
  225. package/.codex/skills/team-ux-improve/specs/pipelines.md +54 -0
  226. package/.codex/skills/team-ux-improve/specs/team-config.json +181 -0
  227. package/.codex/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +17 -0
  228. package/.codex/skills/team-ux-improve/wisdom/contributions/.gitkeep +0 -0
  229. package/.codex/skills/team-ux-improve/wisdom/patterns/state-management.md +14 -0
  230. package/.codex/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +16 -0
  231. package/.codex/skills/team-ux-improve/wisdom/principles/general-ux.md +16 -0
  232. package/ccw/dist/core/routes/cli-settings-routes.d.ts.map +1 -1
  233. package/ccw/dist/core/routes/cli-settings-routes.js +135 -133
  234. package/ccw/dist/core/routes/cli-settings-routes.js.map +1 -1
  235. package/ccw/frontend/dist/assets/{AlertDialog-BW9jiZ-p.js → AlertDialog-CnpjWAGm.js} +2 -2
  236. package/ccw/frontend/dist/assets/{AlertDialog-BW9jiZ-p.js.map → AlertDialog-CnpjWAGm.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{AnalysisPage-ds-w_nVO.js → AnalysisPage-BT2rDDUD.js} +2 -2
  238. package/ccw/frontend/dist/assets/{AnalysisPage-ds-w_nVO.js.map → AnalysisPage-BT2rDDUD.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{ApiSettingsPage-DlCbXxTz.js → ApiSettingsPage-DGpjiNVu.js} +2 -2
  240. package/ccw/frontend/dist/assets/{ApiSettingsPage-DlCbXxTz.js.map → ApiSettingsPage-DGpjiNVu.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{CliModeToggle-Dq3nL4fF.js → CliModeToggle-BqUadHn3.js} +2 -2
  242. package/ccw/frontend/dist/assets/{CliModeToggle-Dq3nL4fF.js.map → CliModeToggle-BqUadHn3.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{CliSessionSharePage-BNDkEE4u.js → CliSessionSharePage-C3AdsDkm.js} +2 -2
  244. package/ccw/frontend/dist/assets/{CliSessionSharePage-BNDkEE4u.js.map → CliSessionSharePage-C3AdsDkm.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{CliViewerPage-ChM-uNx_.js → CliViewerPage-BZXpgY0N.js} +2 -2
  246. package/ccw/frontend/dist/assets/{CliViewerPage-ChM-uNx_.js.map → CliViewerPage-BZXpgY0N.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{CodexLensPage-DOcsYNQk.js → CodexLensPage-CePoJz-u.js} +2 -2
  248. package/ccw/frontend/dist/assets/{CodexLensPage-DOcsYNQk.js.map → CodexLensPage-CePoJz-u.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{Collapsible-CRNbykXN.js → Collapsible-DXVzWwmb.js} +2 -2
  250. package/ccw/frontend/dist/assets/{Collapsible-CRNbykXN.js.map → Collapsible-DXVzWwmb.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{CommandsManagerPage-C2JWcemF.js → CommandsManagerPage-B6wJYF0z.js} +2 -2
  252. package/ccw/frontend/dist/assets/{CommandsManagerPage-C2JWcemF.js.map → CommandsManagerPage-B6wJYF0z.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{DeepWikiPage-CvleOtJy.js → DeepWikiPage-D55fcvSk.js} +2 -2
  254. package/ccw/frontend/dist/assets/{DeepWikiPage-CvleOtJy.js.map → DeepWikiPage-D55fcvSk.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{EndpointsPage-CMOWQG64.js → EndpointsPage-DcGziJ5t.js} +2 -2
  256. package/ccw/frontend/dist/assets/{EndpointsPage-CMOWQG64.js.map → EndpointsPage-DcGziJ5t.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{ExplorerPage-DaFPRlNo.js → ExplorerPage-C4eKzn7F.js} +2 -2
  258. package/ccw/frontend/dist/assets/{ExplorerPage-DaFPRlNo.js.map → ExplorerPage-C4eKzn7F.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{FixSessionPage-CC4p04Az.js → FixSessionPage-BUHh954A.js} +2 -2
  260. package/ccw/frontend/dist/assets/{FixSessionPage-CC4p04Az.js.map → FixSessionPage-BUHh954A.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{FloatingFileBrowser-DROn1xZ5.js → FloatingFileBrowser-C3GF_u1C.js} +2 -2
  262. package/ccw/frontend/dist/assets/{FloatingFileBrowser-DROn1xZ5.js.map → FloatingFileBrowser-C3GF_u1C.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{FloatingPanel-CmL_yhDv.js → FloatingPanel-Cn-q9PyJ.js} +2 -2
  264. package/ccw/frontend/dist/assets/{FloatingPanel-CmL_yhDv.js.map → FloatingPanel-Cn-q9PyJ.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{GraphExplorerPage-DCV5ybKE.js → GraphExplorerPage-DIpqgvoU.js} +2 -2
  266. package/ccw/frontend/dist/assets/{GraphExplorerPage-DCV5ybKE.js.map → GraphExplorerPage-DIpqgvoU.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{HistoryPage-D0fYQZgc.js → HistoryPage-DzSvEAFe.js} +2 -2
  268. package/ccw/frontend/dist/assets/{HistoryPage-D0fYQZgc.js.map → HistoryPage-DzSvEAFe.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{HookManagerPage-D2FuJfsM.js → HookManagerPage-C6LDhWrH.js} +2 -2
  270. package/ccw/frontend/dist/assets/{HookManagerPage-D2FuJfsM.js.map → HookManagerPage-C6LDhWrH.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{InstallationsPage-tjklillZ.js → InstallationsPage-D9ct9xFV.js} +2 -2
  272. package/ccw/frontend/dist/assets/{InstallationsPage-tjklillZ.js.map → InstallationsPage-D9ct9xFV.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{IssueHubPage-E4JVrhO1.js → IssueHubPage-CXgDC8pS.js} +2 -2
  274. package/ccw/frontend/dist/assets/{IssueHubPage-E4JVrhO1.js.map → IssueHubPage-CXgDC8pS.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{LiteTasksPage-aJuRoyLt.js → LiteTasksPage-DMkauCwG.js} +2 -2
  276. package/ccw/frontend/dist/assets/{LiteTasksPage-aJuRoyLt.js.map → LiteTasksPage-DMkauCwG.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{McpManagerPage-BJeuWJv1.js → McpManagerPage-DhLDydgc.js} +2 -2
  278. package/ccw/frontend/dist/assets/{McpManagerPage-BJeuWJv1.js.map → McpManagerPage-DhLDydgc.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{MemoryPage-BI4FAXhs.js → MemoryPage-Be3nhq40.js} +2 -2
  280. package/ccw/frontend/dist/assets/{MemoryPage-BI4FAXhs.js.map → MemoryPage-Be3nhq40.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{NotFoundPage-DD2svchp.js → NotFoundPage-0yGnCePd.js} +2 -2
  282. package/ccw/frontend/dist/assets/{NotFoundPage-DD2svchp.js.map → NotFoundPage-0yGnCePd.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{OrchestratorPage-FC__7yYa.js → OrchestratorPage-_SmXZcGl.js} +2 -2
  284. package/ccw/frontend/dist/assets/{OrchestratorPage-FC__7yYa.js.map → OrchestratorPage-_SmXZcGl.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/{ProjectOverviewPage-DBB_-FzV.js → ProjectOverviewPage-BeXTMsdo.js} +2 -2
  286. package/ccw/frontend/dist/assets/{ProjectOverviewPage-DBB_-FzV.js.map → ProjectOverviewPage-BeXTMsdo.js.map} +1 -1
  287. package/ccw/frontend/dist/assets/{PromptHistoryPage-BwOAvCH8.js → PromptHistoryPage-DS6ycuAv.js} +2 -2
  288. package/ccw/frontend/dist/assets/{PromptHistoryPage-BwOAvCH8.js.map → PromptHistoryPage-DS6ycuAv.js.map} +1 -1
  289. package/ccw/frontend/dist/assets/{ReviewSessionPage-Dd1-g_gp.js → ReviewSessionPage-BoqyjhPo.js} +2 -2
  290. package/ccw/frontend/dist/assets/{ReviewSessionPage-Dd1-g_gp.js.map → ReviewSessionPage-BoqyjhPo.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{RulesManagerPage-B3RGdsKD.js → RulesManagerPage-DMAwkKlc.js} +2 -2
  292. package/ccw/frontend/dist/assets/{RulesManagerPage-B3RGdsKD.js.map → RulesManagerPage-DMAwkKlc.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{SessionDetailPage-DM-W5R8K.js → SessionDetailPage-BgJRHIF4.js} +2 -2
  294. package/ccw/frontend/dist/assets/{SessionDetailPage-DM-W5R8K.js.map → SessionDetailPage-BgJRHIF4.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{SessionsPage-BVz1KCc7.js → SessionsPage-DBPdWlji.js} +2 -2
  296. package/ccw/frontend/dist/assets/{SessionsPage-BVz1KCc7.js.map → SessionsPage-DBPdWlji.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{SettingsPage-ComW7EZS.js → SettingsPage-BY3QiJhm.js} +4 -4
  298. package/ccw/frontend/dist/assets/{SettingsPage-ComW7EZS.js.map → SettingsPage-BY3QiJhm.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{SkillsManagerPage-CKom9XwV.js → SkillsManagerPage-DS101Adm.js} +2 -2
  300. package/ccw/frontend/dist/assets/{SkillsManagerPage-CKom9XwV.js.map → SkillsManagerPage-DS101Adm.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DQz7WP2s.js → SpecsSettingsPage-BcsLu1qq.js} +2 -2
  302. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DQz7WP2s.js.map → SpecsSettingsPage-BcsLu1qq.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{Switch-BPMdND9H.js → Switch-BL9AmNPC.js} +2 -2
  304. package/ccw/frontend/dist/assets/{Switch-BPMdND9H.js.map → Switch-BL9AmNPC.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{TabsNavigation-qqt70VYL.js → TabsNavigation-BUcjsLeE.js} +2 -2
  306. package/ccw/frontend/dist/assets/{TabsNavigation-qqt70VYL.js.map → TabsNavigation-BUcjsLeE.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{TaskDrawer-BqK_qiHX.js → TaskDrawer-BNvfS6dq.js} +2 -2
  308. package/ccw/frontend/dist/assets/{TaskDrawer-BqK_qiHX.js.map → TaskDrawer-BNvfS6dq.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{TeamPage-u5_i0Rgh.js → TeamPage-CT-zNCrF.js} +2 -2
  310. package/ccw/frontend/dist/assets/{TeamPage-u5_i0Rgh.js.map → TeamPage-CT-zNCrF.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{TerminalDashboardPage-rUtC9e40.js → TerminalDashboardPage-DfZFGs8g.js} +2 -2
  312. package/ccw/frontend/dist/assets/{TerminalDashboardPage-rUtC9e40.js.map → TerminalDashboardPage-DfZFGs8g.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{archive-C3u8YNQF.js → archive-Cev1SaQq.js} +2 -2
  314. package/ccw/frontend/dist/assets/{archive-C3u8YNQF.js.map → archive-Cev1SaQq.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{archive-restore-DfQ998g5.js → archive-restore-BIVluaHZ.js} +2 -2
  316. package/ccw/frontend/dist/assets/{archive-restore-DfQ998g5.js.map → archive-restore-BIVluaHZ.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{arrow-right-BshJM9Po.js → arrow-right-DrivbS5j.js} +2 -2
  318. package/ccw/frontend/dist/assets/{arrow-right-BshJM9Po.js.map → arrow-right-DrivbS5j.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{bookmark-plus-D03qJyOZ.js → bookmark-plus-DKyzL0Xg.js} +2 -2
  320. package/ccw/frontend/dist/assets/{bookmark-plus-D03qJyOZ.js.map → bookmark-plus-DKyzL0Xg.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{bot-CyzWuwq0.js → bot-GBUkPAe3.js} +2 -2
  322. package/ccw/frontend/dist/assets/{bot-CyzWuwq0.js.map → bot-GBUkPAe3.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{braces-BPgtyjsG.js → braces-BWhm2c4g.js} +2 -2
  324. package/ccw/frontend/dist/assets/{braces-BPgtyjsG.js.map → braces-BWhm2c4g.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{circle-stop-Dix1AOmw.js → circle-stop-CBcZSKNp.js} +2 -2
  326. package/ccw/frontend/dist/assets/{circle-stop-Dix1AOmw.js.map → circle-stop-CBcZSKNp.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{cpu-CCQ4Q0Zh.js → cpu-CzNmuTZD.js} +2 -2
  328. package/ccw/frontend/dist/assets/{cpu-CCQ4Q0Zh.js.map → cpu-CzNmuTZD.js.map} +1 -1
  329. package/ccw/frontend/dist/assets/{ellipsis-vertical-BpTysg-Y.js → ellipsis-vertical-BoIyQKaI.js} +2 -2
  330. package/ccw/frontend/dist/assets/{ellipsis-vertical-BpTysg-Y.js.map → ellipsis-vertical-BoIyQKaI.js.map} +1 -1
  331. package/ccw/frontend/dist/assets/{eye-DGY1rAZs.js → eye-BqxyhxQq.js} +2 -2
  332. package/ccw/frontend/dist/assets/{eye-DGY1rAZs.js.map → eye-BqxyhxQq.js.map} +1 -1
  333. package/ccw/frontend/dist/assets/{eye-off-D8t3JfWG.js → eye-off-D9dTZP1A.js} +2 -2
  334. package/ccw/frontend/dist/assets/{eye-off-D8t3JfWG.js.map → eye-off-D9dTZP1A.js.map} +1 -1
  335. package/ccw/frontend/dist/assets/{file-json-BAdJb0n8.js → file-json-CLYEUI6e.js} +2 -2
  336. package/ccw/frontend/dist/assets/{file-json-BAdJb0n8.js.map → file-json-CLYEUI6e.js.map} +1 -1
  337. package/ccw/frontend/dist/assets/{file-text-DrJFiOUB.js → file-text-D5j9C5XC.js} +2 -2
  338. package/ccw/frontend/dist/assets/{file-text-DrJFiOUB.js.map → file-text-D5j9C5XC.js.map} +1 -1
  339. package/ccw/frontend/dist/assets/{filter-CKqzYbz7.js → filter-CEUK5jsA.js} +2 -2
  340. package/ccw/frontend/dist/assets/{filter-CKqzYbz7.js.map → filter-CEUK5jsA.js.map} +1 -1
  341. package/ccw/frontend/dist/assets/{folder-CV8511y9.js → folder-BEOY8txM.js} +2 -2
  342. package/ccw/frontend/dist/assets/{folder-CV8511y9.js.map → folder-BEOY8txM.js.map} +1 -1
  343. package/ccw/frontend/dist/assets/{gauge-XKvmu_uU.js → gauge-CbumHmVn.js} +2 -2
  344. package/ccw/frontend/dist/assets/{gauge-XKvmu_uU.js.map → gauge-CbumHmVn.js.map} +1 -1
  345. package/ccw/frontend/dist/assets/{globe-C56cDUzX.js → globe-D8_IB9gV.js} +2 -2
  346. package/ccw/frontend/dist/assets/{globe-C56cDUzX.js.map → globe-D8_IB9gV.js.map} +1 -1
  347. package/ccw/frontend/dist/assets/{grid-3x3-Bya-suFW.js → grid-3x3-BpzWmYF5.js} +2 -2
  348. package/ccw/frontend/dist/assets/{grid-3x3-Bya-suFW.js.map → grid-3x3-BpzWmYF5.js.map} +1 -1
  349. package/ccw/frontend/dist/assets/{hard-drive-CmuTZpsB.js → hard-drive-QIHpGln7.js} +2 -2
  350. package/ccw/frontend/dist/assets/{hard-drive-CmuTZpsB.js.map → hard-drive-QIHpGln7.js.map} +1 -1
  351. package/ccw/frontend/dist/assets/{hash-CRPT_tJQ.js → hash-CP0YRHVs.js} +2 -2
  352. package/ccw/frontend/dist/assets/{hash-CRPT_tJQ.js.map → hash-CP0YRHVs.js.map} +1 -1
  353. package/ccw/frontend/dist/assets/{history-C1pJZQCL.js → history-hOjgVKax.js} +2 -2
  354. package/ccw/frontend/dist/assets/{history-C1pJZQCL.js.map → history-hOjgVKax.js.map} +1 -1
  355. package/ccw/frontend/dist/assets/{index-Dmt9OiEf.js → index-B_ysvdnP.js} +2 -2
  356. package/ccw/frontend/dist/assets/{index-Dmt9OiEf.js.map → index-B_ysvdnP.js.map} +1 -1
  357. package/ccw/frontend/dist/assets/{index-dWT2M6Ef.js → index-C5Oqx2xI.js} +3 -3
  358. package/ccw/frontend/dist/assets/{index-dWT2M6Ef.js.map → index-C5Oqx2xI.js.map} +1 -1
  359. package/ccw/frontend/dist/assets/{index-CI8-rBff.js → index-CJi0bWL-.js} +2 -2
  360. package/ccw/frontend/dist/assets/{index-CI8-rBff.js.map → index-CJi0bWL-.js.map} +1 -1
  361. package/ccw/frontend/dist/assets/{index-anSMmEF8.js → index-CdQpo1x0.js} +2 -2
  362. package/ccw/frontend/dist/assets/{index-anSMmEF8.js.map → index-CdQpo1x0.js.map} +1 -1
  363. package/ccw/frontend/dist/assets/{layout-grid-TSO0BFQE.js → layout-grid-C38fQyLs.js} +2 -2
  364. package/ccw/frontend/dist/assets/{layout-grid-TSO0BFQE.js.map → layout-grid-C38fQyLs.js.map} +1 -1
  365. package/ccw/frontend/dist/assets/{lightbulb-Caj6fIQD.js → lightbulb-CClbCUzu.js} +2 -2
  366. package/ccw/frontend/dist/assets/{lightbulb-Caj6fIQD.js.map → lightbulb-CClbCUzu.js.map} +1 -1
  367. package/ccw/frontend/dist/assets/{link-2-DE9lMxa-.js → link-2-CB-LKbI0.js} +2 -2
  368. package/ccw/frontend/dist/assets/{link-2-DE9lMxa-.js.map → link-2-CB-LKbI0.js.map} +1 -1
  369. package/ccw/frontend/dist/assets/{link-BZtPgLW0.js → link-BK6SBzHS.js} +2 -2
  370. package/ccw/frontend/dist/assets/{link-BZtPgLW0.js.map → link-BK6SBzHS.js.map} +1 -1
  371. package/ccw/frontend/dist/assets/{list-DubWyY-U.js → list-BME_WOA_.js} +2 -2
  372. package/ccw/frontend/dist/assets/{list-DubWyY-U.js.map → list-BME_WOA_.js.map} +1 -1
  373. package/ccw/frontend/dist/assets/{map-pin-DwN_48AF.js → map-pin-ADsnCyjJ.js} +2 -2
  374. package/ccw/frontend/dist/assets/{map-pin-DwN_48AF.js.map → map-pin-ADsnCyjJ.js.map} +1 -1
  375. package/ccw/frontend/dist/assets/{messages-square-bjxvaiM9.js → messages-square-CLflB1Cq.js} +2 -2
  376. package/ccw/frontend/dist/assets/{messages-square-bjxvaiM9.js.map → messages-square-CLflB1Cq.js.map} +1 -1
  377. package/ccw/frontend/dist/assets/{minimize-2-CGfBKD_V.js → minimize-2-B3ZNzfGr.js} +2 -2
  378. package/ccw/frontend/dist/assets/{minimize-2-CGfBKD_V.js.map → minimize-2-B3ZNzfGr.js.map} +1 -1
  379. package/ccw/frontend/dist/assets/{package-nzWY6ilt.js → package-CByPhtMG.js} +2 -2
  380. package/ccw/frontend/dist/assets/{package-nzWY6ilt.js.map → package-CByPhtMG.js.map} +1 -1
  381. package/ccw/frontend/dist/assets/{plug-CiLce49C.js → plug-BggRzPX9.js} +2 -2
  382. package/ccw/frontend/dist/assets/{plug-CiLce49C.js.map → plug-BggRzPX9.js.map} +1 -1
  383. package/ccw/frontend/dist/assets/{power-CFLmB-U9.js → power-CWuxQSJK.js} +2 -2
  384. package/ccw/frontend/dist/assets/{power-CFLmB-U9.js.map → power-CWuxQSJK.js.map} +1 -1
  385. package/ccw/frontend/dist/assets/{save-DuO6OF0C.js → save-BdJ6EX4Q.js} +2 -2
  386. package/ccw/frontend/dist/assets/{save-DuO6OF0C.js.map → save-BdJ6EX4Q.js.map} +1 -1
  387. package/ccw/frontend/dist/assets/{send-CZk9p0mM.js → send-Ce9wuY7Q.js} +2 -2
  388. package/ccw/frontend/dist/assets/{send-CZk9p0mM.js.map → send-Ce9wuY7Q.js.map} +1 -1
  389. package/ccw/frontend/dist/assets/{square-check-big-BY_1YQQg.js → square-check-big-D6jItkfw.js} +2 -2
  390. package/ccw/frontend/dist/assets/{square-check-big-BY_1YQQg.js.map → square-check-big-D6jItkfw.js.map} +1 -1
  391. package/ccw/frontend/dist/assets/{square-pen-CnZgm6g-.js → square-pen-Byxq21zp.js} +2 -2
  392. package/ccw/frontend/dist/assets/{square-pen-CnZgm6g-.js.map → square-pen-Byxq21zp.js.map} +1 -1
  393. package/ccw/frontend/dist/assets/{star-Cn1F0qy7.js → star-Codj9dvK.js} +2 -2
  394. package/ccw/frontend/dist/assets/{star-Cn1F0qy7.js.map → star-Codj9dvK.js.map} +1 -1
  395. package/ccw/frontend/dist/assets/{style-Dxs1iXCV.js → style-4bYpUGcc.js} +2 -2
  396. package/ccw/frontend/dist/assets/{style-Dxs1iXCV.js.map → style-4bYpUGcc.js.map} +1 -1
  397. package/ccw/frontend/dist/assets/{target-Bz1fLRKH.js → target-DKBoDNCn.js} +2 -2
  398. package/ccw/frontend/dist/assets/{target-Bz1fLRKH.js.map → target-DKBoDNCn.js.map} +1 -1
  399. package/ccw/frontend/dist/assets/{test-tube-C6qCYlDr.js → test-tube-DTqZcBtA.js} +2 -2
  400. package/ccw/frontend/dist/assets/{test-tube-C6qCYlDr.js.map → test-tube-DTqZcBtA.js.map} +1 -1
  401. package/ccw/frontend/dist/assets/{upload-C71kd4Qs.js → upload-DlUl-e6b.js} +2 -2
  402. package/ccw/frontend/dist/assets/{upload-C71kd4Qs.js.map → upload-DlUl-e6b.js.map} +1 -1
  403. package/ccw/frontend/dist/assets/{useApiSettings-CqP2BAJ7.js → useApiSettings-D4zhKKT-.js} +2 -2
  404. package/ccw/frontend/dist/assets/{useApiSettings-CqP2BAJ7.js.map → useApiSettings-D4zhKKT-.js.map} +1 -1
  405. package/ccw/frontend/dist/assets/{useCli-PCoPoVeM.js → useCli-D-qDwsAH.js} +2 -2
  406. package/ccw/frontend/dist/assets/{useCli-PCoPoVeM.js.map → useCli-D-qDwsAH.js.map} +1 -1
  407. package/ccw/frontend/dist/assets/{useCommands-3OfPQPw4.js → useCommands-B0sidbbW.js} +2 -2
  408. package/ccw/frontend/dist/assets/{useCommands-3OfPQPw4.js.map → useCommands-B0sidbbW.js.map} +1 -1
  409. package/ccw/frontend/dist/assets/{useDebounce-bXiFhQx9.js → useDebounce-eTtbKevt.js} +2 -2
  410. package/ccw/frontend/dist/assets/{useDebounce-bXiFhQx9.js.map → useDebounce-eTtbKevt.js.map} +1 -1
  411. package/ccw/frontend/dist/assets/{useFileExplorer-DEyUm46_.js → useFileExplorer-MGSK0h33.js} +2 -2
  412. package/ccw/frontend/dist/assets/{useFileExplorer-DEyUm46_.js.map → useFileExplorer-MGSK0h33.js.map} +1 -1
  413. package/ccw/frontend/dist/assets/{useLocale-sXTrdxcJ.js → useLocale-DDNxU7pJ.js} +2 -2
  414. package/ccw/frontend/dist/assets/{useLocale-sXTrdxcJ.js.map → useLocale-DDNxU7pJ.js.map} +1 -1
  415. package/ccw/frontend/dist/assets/{useSkills-D0W0kXYm.js → useSkills-CZCRBtMY.js} +3 -3
  416. package/ccw/frontend/dist/assets/{useSkills-D0W0kXYm.js.map → useSkills-CZCRBtMY.js.map} +1 -1
  417. package/ccw/frontend/dist/assets/{useSystemSettings-DZ-8lZsG.js → useSystemSettings-DfQEFXSD.js} +2 -2
  418. package/ccw/frontend/dist/assets/{useSystemSettings-DZ-8lZsG.js.map → useSystemSettings-DfQEFXSD.js.map} +1 -1
  419. package/ccw/frontend/dist/assets/{wand-sparkles-83GmAYuw.js → wand-sparkles-DCLvfgl1.js} +2 -2
  420. package/ccw/frontend/dist/assets/{wand-sparkles-83GmAYuw.js.map → wand-sparkles-DCLvfgl1.js.map} +1 -1
  421. package/ccw/frontend/dist/index.html +1 -1
  422. package/package.json +1 -1
  423. package/.codex/skills/team-arch-opt/agents/completion-handler.md +0 -138
  424. package/.codex/skills/team-arch-opt/agents/fix-cycle-handler.md +0 -146
  425. package/.codex/skills/team-arch-opt/agents/plan-reviewer.md +0 -150
  426. package/.codex/skills/team-arch-opt/instructions/agent-instruction.md +0 -114
  427. package/.codex/skills/team-arch-opt/schemas/tasks-schema.md +0 -174
  428. package/.codex/skills/team-brainstorm/agents/gc-controller.md +0 -122
  429. package/.codex/skills/team-brainstorm/agents/topic-clarifier.md +0 -126
  430. package/.codex/skills/team-brainstorm/instructions/agent-instruction.md +0 -105
  431. package/.codex/skills/team-brainstorm/schemas/tasks-schema.md +0 -171
  432. package/.codex/skills/team-coordinate/agents/completion-handler.md +0 -127
  433. package/.codex/skills/team-coordinate/agents/plan-reviewer.md +0 -145
  434. package/.codex/skills/team-coordinate/instructions/agent-instruction.md +0 -184
  435. package/.codex/skills/team-coordinate/schemas/tasks-schema.md +0 -165
  436. package/.codex/skills/team-designer/agents/requirement-clarifier.md +0 -247
  437. package/.codex/skills/team-designer/agents/validation-reporter.md +0 -186
  438. package/.codex/skills/team-designer/instructions/agent-instruction.md +0 -163
  439. package/.codex/skills/team-designer/schemas/tasks-schema.md +0 -180
  440. package/.codex/skills/team-executor/instructions/agent-instruction.md +0 -62
  441. package/.codex/skills/team-executor/schemas/tasks-schema.md +0 -141
  442. package/.codex/skills/team-frontend/agents/completion-handler.md +0 -131
  443. package/.codex/skills/team-frontend/agents/qa-gate-reviewer.md +0 -153
  444. package/.codex/skills/team-frontend/instructions/agent-instruction.md +0 -197
  445. package/.codex/skills/team-frontend/schemas/tasks-schema.md +0 -188
  446. package/.codex/skills/team-frontend-debug/agents/completion-handler.md +0 -142
  447. package/.codex/skills/team-frontend-debug/agents/conditional-skip-gate.md +0 -130
  448. package/.codex/skills/team-frontend-debug/agents/iteration-handler.md +0 -120
  449. package/.codex/skills/team-frontend-debug/instructions/agent-instruction.md +0 -272
  450. package/.codex/skills/team-frontend-debug/schemas/tasks-schema.md +0 -198
  451. package/.codex/skills/team-issue/agents/reviewer.md +0 -204
  452. package/.codex/skills/team-issue/instructions/agent-instruction.md +0 -198
  453. package/.codex/skills/team-issue/schemas/tasks-schema.md +0 -198
  454. package/.codex/skills/team-iterdev/agents/gc-controller.md +0 -193
  455. package/.codex/skills/team-iterdev/agents/task-analyzer.md +0 -206
  456. package/.codex/skills/team-iterdev/instructions/agent-instruction.md +0 -118
  457. package/.codex/skills/team-iterdev/schemas/tasks-schema.md +0 -174
  458. package/.codex/skills/team-lifecycle/SKILL.md +0 -906
  459. package/.codex/skills/team-lifecycle/agents/analyst.md +0 -424
  460. package/.codex/skills/team-lifecycle/agents/architect.md +0 -274
  461. package/.codex/skills/team-lifecycle/agents/discuss-agent.md +0 -422
  462. package/.codex/skills/team-lifecycle/agents/executor.md +0 -423
  463. package/.codex/skills/team-lifecycle/agents/explore-agent.md +0 -471
  464. package/.codex/skills/team-lifecycle/agents/fe-developer.md +0 -239
  465. package/.codex/skills/team-lifecycle/agents/fe-qa.md +0 -357
  466. package/.codex/skills/team-lifecycle/agents/planner.md +0 -437
  467. package/.codex/skills/team-lifecycle/agents/reviewer.md +0 -483
  468. package/.codex/skills/team-lifecycle/agents/tester.md +0 -423
  469. package/.codex/skills/team-lifecycle/agents/writer.md +0 -502
  470. package/.codex/skills/team-lifecycle/phases/01-requirement-clarification.md +0 -209
  471. package/.codex/skills/team-lifecycle/phases/02-team-initialization.md +0 -263
  472. package/.codex/skills/team-lifecycle/phases/03-task-chain-creation.md +0 -251
  473. package/.codex/skills/team-lifecycle/phases/04-pipeline-coordination.md +0 -831
  474. package/.codex/skills/team-lifecycle/phases/05-completion-report.md +0 -309
  475. package/.codex/skills/team-lifecycle/specs/document-standards.md +0 -192
  476. package/.codex/skills/team-lifecycle/specs/quality-gates.md +0 -207
  477. package/.codex/skills/team-lifecycle-v4/agents/quality-gate.md +0 -165
  478. package/.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md +0 -163
  479. package/.codex/skills/team-lifecycle-v4/agents/supervisor.md +0 -182
  480. package/.codex/skills/team-perf-opt/agents/completion-handler.md +0 -141
  481. package/.codex/skills/team-perf-opt/agents/fix-cycle-handler.md +0 -156
  482. package/.codex/skills/team-perf-opt/agents/plan-reviewer.md +0 -150
  483. package/.codex/skills/team-perf-opt/instructions/agent-instruction.md +0 -122
  484. package/.codex/skills/team-perf-opt/schemas/tasks-schema.md +0 -174
  485. package/.codex/skills/team-planex/instructions/agent-instruction.md +0 -301
  486. package/.codex/skills/team-planex/schemas/tasks-schema.md +0 -198
  487. package/.codex/skills/team-planex-v2/SKILL.md +0 -652
  488. package/.codex/skills/team-planex-v2/instructions/agent-instruction.md +0 -193
  489. package/.codex/skills/team-planex-v2/schemas/tasks-schema.md +0 -206
  490. package/.codex/skills/team-quality-assurance/agents/executor.md +0 -192
  491. package/.codex/skills/team-quality-assurance/agents/gc-loop-handler.md +0 -163
  492. package/.codex/skills/team-quality-assurance/instructions/agent-instruction.md +0 -185
  493. package/.codex/skills/team-quality-assurance/schemas/tasks-schema.md +0 -190
  494. package/.codex/skills/team-review/agents/fixer.md +0 -360
  495. package/.codex/skills/team-review/instructions/agent-instruction.md +0 -102
  496. package/.codex/skills/team-review/schemas/tasks-schema.md +0 -143
  497. package/.codex/skills/team-roadmap-dev/agents/roadmap-discusser.md +0 -176
  498. package/.codex/skills/team-roadmap-dev/agents/roadmap-planner.md +0 -194
  499. package/.codex/skills/team-roadmap-dev/agents/roadmap-verifier.md +0 -221
  500. package/.codex/skills/team-roadmap-dev/instructions/executor-instruction.md +0 -55
  501. package/.codex/skills/team-roadmap-dev/schemas/tasks-schema.md +0 -144
  502. package/.codex/skills/team-tech-debt/agents/gc-loop-manager.md +0 -130
  503. package/.codex/skills/team-tech-debt/agents/plan-approver.md +0 -151
  504. package/.codex/skills/team-tech-debt/instructions/agent-instruction.md +0 -390
  505. package/.codex/skills/team-tech-debt/schemas/tasks-schema.md +0 -196
  506. package/.codex/skills/team-testing/agents/executor.md +0 -195
  507. package/.codex/skills/team-testing/agents/gc-loop-handler.md +0 -155
  508. package/.codex/skills/team-testing/instructions/agent-instruction.md +0 -142
  509. package/.codex/skills/team-testing/schemas/tasks-schema.md +0 -172
  510. package/.codex/skills/team-uidesign/agents/completion-handler.md +0 -177
  511. package/.codex/skills/team-uidesign/agents/gc-loop-handler.md +0 -162
  512. package/.codex/skills/team-uidesign/instructions/agent-instruction.md +0 -509
  513. package/.codex/skills/team-uidesign/schemas/tasks-schema.md +0 -187
  514. package/.codex/skills/team-ultra-analyze/agents/discussion-feedback.md +0 -155
  515. package/.codex/skills/team-ultra-analyze/agents/topic-analyzer.md +0 -153
  516. package/.codex/skills/team-ultra-analyze/instructions/agent-instruction.md +0 -169
  517. package/.codex/skills/team-ultra-analyze/schemas/tasks-schema.md +0 -180
  518. package/.codex/skills/team-ux-improve/agents/ux-designer.md +0 -136
  519. package/.codex/skills/team-ux-improve/agents/ux-explorer.md +0 -158
  520. package/.codex/skills/team-ux-improve/agents/ux-tester.md +0 -174
  521. package/.codex/skills/team-ux-improve/instructions/ux-worker-instruction.md +0 -55
  522. package/.codex/skills/team-ux-improve/schemas/tasks-schema.md +0 -87
  523. /package/.codex/skills/{team-lifecycle/templates/architecture-doc.md → team-lifecycle-v4/templates/architecture.md} +0 -0
  524. /package/.codex/skills/{team-lifecycle/templates/epics-template.md → team-lifecycle-v4/templates/epics.md} +0 -0
  525. /package/.codex/skills/{team-lifecycle → team-lifecycle-v4}/templates/product-brief.md +0 -0
  526. /package/.codex/skills/{team-lifecycle/templates/requirements-prd.md → team-lifecycle-v4/templates/requirements.md} +0 -0
@@ -1,5 +1,5 @@
1
- import{u as W,al as ge,r as i,j as e,e as f,Z as xe,c as Ve,a7 as ie,C as Q,m as ks,k as ze,b as ps,I as N,K as Ms,D as us,d as js,f as vs,g as he,S as cs,h as fs,T as ye,B as ee,x as $e,y as Ge,z as qe,A as Qe,E as We,bu as m,aq as ve,ar as fe,as as Se,at as Ne,au as V,cy as os,ap as ms,bO as Ke,G as Ye,bq as Be,ck as Oe,bp as et,ae as Cs,N as ss,av as st,X as Ds,bf as tt,a2 as at,a3 as it,a4 as Es,a5 as Ts,an as Is,e0 as nt,e1 as lt,d6 as dt,R as rt}from"./index-dWT2M6Ef.js";import{T as ct}from"./TabsNavigation-qqt70VYL.js";import{S as Z}from"./Switch-BPMdND9H.js";import{u as Ze,a as ot,b as Ss,c as mt,d as ht,e as xt,f as Ls,g as gt,h as Os,i as pt,j as ut,k as jt,l as vt,m as zs,n as ft,o as Bs,p as St,q as Nt,r as yt,s as Rs,t as bt,v as Ct,w as wt,x as Mt,y as Pt}from"./useApiSettings-CqP2BAJ7.js";import{E as Ns}from"./ellipsis-vertical-BpTysg-Y.js";import{S as ys}from"./square-pen-CnZgm6g-.js";import{C as hs,a as xs,b as gs}from"./Collapsible-CRNbykXN.js";import{E as ts}from"./eye-off-D8t3JfWG.js";import{E as as}from"./eye-DGY1rAZs.js";import{A as _s,a as Hs,b as Us,c as Js,d as Vs,e as $s,f as Gs,g as qs}from"./AlertDialog-BW9jiZ-p.js";import{F as kt}from"./file-text-DrJFiOUB.js";import{H as Et}from"./hard-drive-CmuTZpsB.js";import{S as Qs}from"./save-DuO6OF0C.js";import{L as Tt}from"./link-BZtPgLW0.js";import"./useLocale-sXTrdxcJ.js";import"./errorSanitizer-IY9pf5g4.js";function It({provider:a,onEdit:r,onDelete:t,onTest:s,onMultiKeySettings:n,onSyncToCodexLens:h,onManageModels:o,onToggleEnabled:d,isDeleting:M,isTesting:u,isToggling:v}){var k,I;const{formatMessage:j}=W(),P=((k=a.apiKeys)==null?void 0:k.filter(C=>C.enabled).length)||0,F=(((I=a.apiKeys)==null?void 0:I.length)||0)>0,H=()=>{var K;if(!a.enabled)return e.jsx(ee,{variant:"secondary",children:j({id:"apiSettings.common.disabled"})});if(!((K=a.healthCheck)!=null&&K.enabled))return e.jsx(ee,{variant:"outline",children:j({id:"apiSettings.providers.unknown"})});const C=a.apiKeys||[];if(C.length===0)return e.jsx(ee,{variant:"info",children:j({id:"apiSettings.providers.unknown"})});const D=C.filter(g=>g.healthStatus==="healthy").length;return C.filter(g=>g.healthStatus==="unhealthy").length>0?e.jsx(ee,{variant:"destructive",children:j({id:"apiSettings.providers.unhealthy"})}):D===C.length?e.jsx(ee,{variant:"success",children:j({id:"apiSettings.providers.healthy"})}):e.jsx(ee,{variant:"warning",children:j({id:"apiSettings.providers.unknown"})})};return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),H()]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:a.type}),F&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),P," ",j({id:"apiSettings.providers.apiKey"})]}),a.routingStrategy&&e.jsx("span",{className:"capitalize",children:a.routingStrategy.replace("-"," ")})]}),a.apiBase&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:a.apiBase})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d,disabled:v}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.edit"})]}),e.jsxs(he,{onClick:s,disabled:u,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.test"})]}),e.jsxs(he,{onClick:o,children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.manageModels"})]}),F&&e.jsxs(he,{onClick:n,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.multiKeySettings"})]}),e.jsxs(he,{onClick:h,children:[e.jsx(ze,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.syncToCodexLens"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:M,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.delete"})]})]})]})]})]})})}function Ft({onAddProvider:a,onEditProvider:r,onMultiKeySettings:t,onSyncToCodexLens:s,onManageModels:n}){const{formatMessage:h}=W(),{error:o}=ge(),[d,M]=i.useState(""),[u,v]=i.useState(!1),{providers:j,isLoading:P,refetch:F}=Ze(),{deleteProvider:H,isDeleting:k}=ot(),{updateProvider:I,isUpdating:C}=Ss(),{testProvider:D,isTesting:w}=mt(),{triggerHealthCheck:K}=ht(),g=i.useMemo(()=>j.filter(S=>{const _=S.name.toLowerCase().includes(d.toLowerCase())||S.type.toLowerCase().includes(d.toLowerCase()),b=!u||!S.enabled;return _&&b}),[j,d,u]),c=async(S,_)=>{const b=h({id:"apiSettings.providers.deleteConfirm"},{name:_});if(window.confirm(b))try{await H(S)}catch{o(h({id:"apiSettings.providers.deleteError"}))}},A=async(S,_)=>{try{await I(S,{enabled:_})}catch{o(h({id:"apiSettings.providers.toggleError"}))}},L=async S=>{try{(await D(S)).success&&await K(S)}catch{o(h({id:"apiSettings.providers.testError"}))}},z=j.filter(S=>S.enabled).length,y=j.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:h({id:"apiSettings.providers.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),h({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:y})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:z})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.enabled"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:h({id:"apiSettings.common.searchPlaceholder"}),value:d,onChange:S=>M(S.target.value),className:"pl-9"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(f,{variant:u?"default":"outline",size:"sm",onClick:()=>v(S=>!S),children:[u?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),h(u?{id:"apiSettings.providers.actions.hideDisabled"}:{id:"apiSettings.providers.actions.showDisabled"})]})})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(S=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},S))}):g.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(ks,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:h({id:"apiSettings.providers.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:h({id:"apiSettings.providers.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:g.map(S=>e.jsx(It,{provider:S,onEdit:()=>r(S.id),onDelete:()=>c(S.id,S.name),onTest:()=>L(S.id),onMultiKeySettings:()=>t(S.id),onSyncToCodexLens:()=>s(S.id),onManageModels:()=>n(S.id),onToggleEnabled:_=>A(S.id,_),isDeleting:k,isTesting:w,isToggling:C},S.id))})]})}function Kt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n}){const{formatMessage:h}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:o=>s({label:o.target.value}),placeholder:"Key 1",className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:o=>s({key:o.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:o=>s({weight:parseInt(o.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:o=>s({enabled:o})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?h({id:"apiSettings.common.enabled"}):h({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function At({open:a,onClose:r,provider:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createProvider:o,isCreating:d}=xt(),{updateProvider:M,isUpdating:u}=Ss(),[v,j]=i.useState(""),[P,F]=i.useState("openai"),[H,k]=i.useState(""),[I,C]=i.useState(""),[D,w]=i.useState(!0),[K,g]=i.useState(!1),[c,A]=i.useState(300),[L,z]=i.useState(0),[y,S]=i.useState(""),[_,b]=i.useState(""),[p,O]=i.useState(""),[X,ne]=i.useState(),[ue,le]=i.useState(),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState([]),[Re,Me]=i.useState(new Set),[_e,Pe]=i.useState("simple-shuffle"),[Ce,we]=i.useState(!1),[ke,Ee]=i.useState(60),[Te,je]=i.useState(300),[Ae,Ie]=i.useState(5),[ce,B]=i.useState(!1),[se,re]=i.useState([]),[ae,oe]=i.useState([]);i.useEffect(()=>{if(t){j(t.name),F(t.type),k(t.apiKey),C(t.apiBase||""),w(t.enabled),Pe(t.routingStrategy||"simple-shuffle"),t.advancedSettings&&(A(t.advancedSettings.timeout||300),z(t.advancedSettings.maxRetries||0),S(t.advancedSettings.organization||""),b(t.advancedSettings.apiVersion||""),O(t.advancedSettings.customHeaders?JSON.stringify(t.advancedSettings.customHeaders,null,2):""),ne(t.advancedSettings.rpm),le(t.advancedSettings.tpm),E(t.advancedSettings.proxy||""));const x=!!(t.apiKeys&&t.apiKeys.length>0);q(x),x&&t.apiKeys&&de(t.apiKeys.map(T=>({id:T.id,key:T.key,label:T.label,weight:T.weight,enabled:T.enabled}))),t.healthCheck&&(we(t.healthCheck.enabled),Ee(t.healthCheck.intervalSeconds),je(t.healthCheck.cooldownSeconds),Ie(t.healthCheck.failureThreshold)),t.llmModels&&re(t.llmModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description}))),t.embeddingModels&&oe(t.embeddingModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description})))}else j(""),F("openai"),k(""),C(""),w(!0),A(300),z(0),S(""),b(""),O(""),ne(void 0),le(void 0),E(""),q(!1),de([]),Pe("simple-shuffle"),we(!1),Ee(60),je(300),Ie(5),re([]),oe([])},[t,a]);const me=()=>{const x={id:`key-${Date.now()}`,key:"",label:`Key ${te.length+1}`,weight:1,enabled:!0};de([...te,x])},De=(x,T)=>{de(te.map((R,U)=>U===x?{...R,...T}:R))},is=x=>{de(te.filter((T,R)=>R!==x))},Xe=x=>{Me(T=>{const R=new Set(T);return R.has(x)?R.delete(x):R.add(x),R})},He=()=>{const x={id:`llm-${Date.now()}`,name:"",series:""};re([...se,x])},ns=x=>{re(se.filter((T,R)=>R!==x))},Fe=(x,T,R)=>{re(se.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ls=()=>{const x={id:`emb-${Date.now()}`,name:"",series:""};oe([...ae,x])},Y=x=>{oe(ae.filter((T,R)=>R!==x))},Le=(x,T,R)=>{oe(ae.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ds=async()=>{try{let x;if(p.trim())try{x=JSON.parse(p)}catch{alert(s({id:"apiSettings.messages.invalidJsonHeaders"}));return}const T=new Date().toISOString(),R={name:v,type:P,apiKey:G?"":H,apiBase:I||void 0,enabled:D,advancedSettings:{timeout:c,maxRetries:L,organization:y||void 0,apiVersion:_||void 0,customHeaders:x,rpm:X,tpm:ue,proxy:be||void 0},apiKeys:G?te.map(U=>({id:U.id,key:U.key,label:U.label,weight:U.weight,enabled:U.enabled})):void 0,routingStrategy:G?_e:void 0,healthCheck:Ce?{enabled:!0,intervalSeconds:ke,cooldownSeconds:Te,failureThreshold:Ae}:void 0,llmModels:se.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"llm",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T})),embeddingModels:ae.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"embedding",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T}))};h&&t?await M(t.id,R):await o(R),r()}catch{n(s({id:"apiSettings.providers.saveError"}))}},Ue=d||u;return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.providers.actions.edit"}:{id:"apiSettings.providers.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.providers.displayName"})," *"]}),e.jsx(N,{id:"name",value:v,onChange:x=>j(x.target.value),placeholder:"My OpenAI"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"type",children:[s({id:"apiSettings.common.type"})," *"]}),e.jsxs(ve,{value:P,onValueChange:x=>F(x),children:[e.jsx(fe,{id:"type",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"openai",children:"OpenAI"}),e.jsx(V,{value:"anthropic",children:"Anthropic"}),e.jsx(V,{value:"custom",children:"Custom"})]})]})]})]}),!G&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"apiKey",children:[s({id:"apiSettings.providers.apiKey"})," *"]}),e.jsx(N,{id:"apiKey",type:"password",value:H,onChange:x=>k(x.target.value),placeholder:"sk-..."}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.useEnvVar"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiBase",children:s({id:"apiSettings.providers.apiBaseUrl"})}),e.jsx(N,{id:"apiBase",value:I,onChange:x=>C(x.target.value),placeholder:"https://api.openai.com/v1"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:D,onCheckedChange:w}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.providers.enableProvider"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"useMultiKey",checked:G,onCheckedChange:q}),e.jsx(m,{htmlFor:"useMultiKey",children:s({id:"apiSettings.providers.multiKeySettings"})})]})]}),G&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:me,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),te.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:te.map((x,T)=>e.jsx(Kt,{entry:x,showKey:Re.has(T),onToggleShowKey:()=>Xe(T),onUpdate:R=>De(T,R),onRemove:()=>is(T)},x.id))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:_e,onValueChange:x=>Pe(x),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:Ce,onCheckedChange:we})]}),Ce&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:ke,onChange:x=>Ee(parseInt(x.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:Te,onChange:x=>je(parseInt(x.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:Ae,onChange:x=>Ie(parseInt(x.target.value)||5)})]})]})]})]}),e.jsxs(hs,{open:K,onOpenChange:g,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.advancedSettings"})}),K?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"timeout",children:s({id:"apiSettings.providers.timeout"})}),e.jsx(N,{id:"timeout",type:"number",min:"1",value:c,onChange:x=>A(parseInt(x.target.value)||300)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.timeoutHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"maxRetries",children:s({id:"apiSettings.providers.maxRetries"})}),e.jsx(N,{id:"maxRetries",type:"number",min:"0",value:L,onChange:x=>z(parseInt(x.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"organization",children:s({id:"apiSettings.providers.organization"})}),e.jsx(N,{id:"organization",value:y,onChange:x=>S(x.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.organizationHint"})})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiVersion",children:s({id:"apiSettings.providers.apiVersion"})}),e.jsx(N,{id:"apiVersion",value:_,onChange:x=>b(x.target.value),placeholder:"2024-02-01"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.apiVersionHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"rpm",children:s({id:"apiSettings.providers.rpm"})}),e.jsx(N,{id:"rpm",type:"number",min:"0",value:X??"",onChange:x=>ne(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tpm",children:s({id:"apiSettings.providers.tpm"})}),e.jsx(N,{id:"tpm",type:"number",min:"0",value:ue??"",onChange:x=>le(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"proxy",children:s({id:"apiSettings.providers.proxy"})}),e.jsx(N,{id:"proxy",value:be,onChange:x=>E(x.target.value),placeholder:"http://proxy.example.com:8080"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"customHeaders",children:s({id:"apiSettings.providers.customHeaders"})}),e.jsx(Ke,{id:"customHeaders",value:p,onChange:x=>O(x.target.value),placeholder:`{
1
+ import{u as W,al as ge,r as i,j as e,e as f,Z as xe,c as Ve,a7 as ie,C as Q,m as ks,k as ze,b as ps,I as N,K as Ms,D as us,d as js,f as vs,g as he,S as cs,h as fs,T as ye,B as ee,x as $e,y as Ge,z as qe,A as Qe,E as We,bu as m,aq as ve,ar as fe,as as Se,at as Ne,au as V,cy as os,ap as ms,bO as Ke,G as Ye,bq as Be,ck as Oe,bp as et,ae as Cs,N as ss,av as st,X as Ds,bf as tt,a2 as at,a3 as it,a4 as Es,a5 as Ts,an as Is,e0 as nt,e1 as lt,d6 as dt,R as rt}from"./index-C5Oqx2xI.js";import{T as ct}from"./TabsNavigation-BUcjsLeE.js";import{S as Z}from"./Switch-BL9AmNPC.js";import{u as Ze,a as ot,b as Ss,c as mt,d as ht,e as xt,f as Ls,g as gt,h as Os,i as pt,j as ut,k as jt,l as vt,m as zs,n as ft,o as Bs,p as St,q as Nt,r as yt,s as Rs,t as bt,v as Ct,w as wt,x as Mt,y as Pt}from"./useApiSettings-D4zhKKT-.js";import{E as Ns}from"./ellipsis-vertical-BoIyQKaI.js";import{S as ys}from"./square-pen-Byxq21zp.js";import{C as hs,a as xs,b as gs}from"./Collapsible-DXVzWwmb.js";import{E as ts}from"./eye-off-D9dTZP1A.js";import{E as as}from"./eye-BqxyhxQq.js";import{A as _s,a as Hs,b as Us,c as Js,d as Vs,e as $s,f as Gs,g as qs}from"./AlertDialog-CnpjWAGm.js";import{F as kt}from"./file-text-D5j9C5XC.js";import{H as Et}from"./hard-drive-QIHpGln7.js";import{S as Qs}from"./save-BdJ6EX4Q.js";import{L as Tt}from"./link-BK6SBzHS.js";import"./useLocale-DDNxU7pJ.js";import"./errorSanitizer-IY9pf5g4.js";function It({provider:a,onEdit:r,onDelete:t,onTest:s,onMultiKeySettings:n,onSyncToCodexLens:h,onManageModels:o,onToggleEnabled:d,isDeleting:M,isTesting:u,isToggling:v}){var k,I;const{formatMessage:j}=W(),P=((k=a.apiKeys)==null?void 0:k.filter(C=>C.enabled).length)||0,F=(((I=a.apiKeys)==null?void 0:I.length)||0)>0,H=()=>{var K;if(!a.enabled)return e.jsx(ee,{variant:"secondary",children:j({id:"apiSettings.common.disabled"})});if(!((K=a.healthCheck)!=null&&K.enabled))return e.jsx(ee,{variant:"outline",children:j({id:"apiSettings.providers.unknown"})});const C=a.apiKeys||[];if(C.length===0)return e.jsx(ee,{variant:"info",children:j({id:"apiSettings.providers.unknown"})});const D=C.filter(g=>g.healthStatus==="healthy").length;return C.filter(g=>g.healthStatus==="unhealthy").length>0?e.jsx(ee,{variant:"destructive",children:j({id:"apiSettings.providers.unhealthy"})}):D===C.length?e.jsx(ee,{variant:"success",children:j({id:"apiSettings.providers.healthy"})}):e.jsx(ee,{variant:"warning",children:j({id:"apiSettings.providers.unknown"})})};return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),H()]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:a.type}),F&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),P," ",j({id:"apiSettings.providers.apiKey"})]}),a.routingStrategy&&e.jsx("span",{className:"capitalize",children:a.routingStrategy.replace("-"," ")})]}),a.apiBase&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:a.apiBase})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d,disabled:v}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.edit"})]}),e.jsxs(he,{onClick:s,disabled:u,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.test"})]}),e.jsxs(he,{onClick:o,children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.manageModels"})]}),F&&e.jsxs(he,{onClick:n,children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.multiKeySettings"})]}),e.jsxs(he,{onClick:h,children:[e.jsx(ze,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.syncToCodexLens"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:M,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),j({id:"apiSettings.providers.actions.delete"})]})]})]})]})]})})}function Ft({onAddProvider:a,onEditProvider:r,onMultiKeySettings:t,onSyncToCodexLens:s,onManageModels:n}){const{formatMessage:h}=W(),{error:o}=ge(),[d,M]=i.useState(""),[u,v]=i.useState(!1),{providers:j,isLoading:P,refetch:F}=Ze(),{deleteProvider:H,isDeleting:k}=ot(),{updateProvider:I,isUpdating:C}=Ss(),{testProvider:D,isTesting:w}=mt(),{triggerHealthCheck:K}=ht(),g=i.useMemo(()=>j.filter(S=>{const _=S.name.toLowerCase().includes(d.toLowerCase())||S.type.toLowerCase().includes(d.toLowerCase()),b=!u||!S.enabled;return _&&b}),[j,d,u]),c=async(S,_)=>{const b=h({id:"apiSettings.providers.deleteConfirm"},{name:_});if(window.confirm(b))try{await H(S)}catch{o(h({id:"apiSettings.providers.deleteError"}))}},A=async(S,_)=>{try{await I(S,{enabled:_})}catch{o(h({id:"apiSettings.providers.toggleError"}))}},L=async S=>{try{(await D(S)).success&&await K(S)}catch{o(h({id:"apiSettings.providers.testError"}))}},z=j.filter(S=>S.enabled).length,y=j.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:h({id:"apiSettings.providers.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),h({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ks,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:y})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:z})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:h({id:"apiSettings.providers.stats.enabled"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:h({id:"apiSettings.common.searchPlaceholder"}),value:d,onChange:S=>M(S.target.value),className:"pl-9"})]}),e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(f,{variant:u?"default":"outline",size:"sm",onClick:()=>v(S=>!S),children:[u?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),h(u?{id:"apiSettings.providers.actions.hideDisabled"}:{id:"apiSettings.providers.actions.showDisabled"})]})})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(S=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},S))}):g.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(ks,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:h({id:"apiSettings.providers.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:h({id:"apiSettings.providers.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),h({id:"apiSettings.providers.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:g.map(S=>e.jsx(It,{provider:S,onEdit:()=>r(S.id),onDelete:()=>c(S.id,S.name),onTest:()=>L(S.id),onMultiKeySettings:()=>t(S.id),onSyncToCodexLens:()=>s(S.id),onManageModels:()=>n(S.id),onToggleEnabled:_=>A(S.id,_),isDeleting:k,isTesting:w,isToggling:C},S.id))})]})}function Kt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n}){const{formatMessage:h}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:o=>s({label:o.target.value}),placeholder:"Key 1",className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:o=>s({key:o.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:h({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:o=>s({weight:parseInt(o.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:o=>s({enabled:o})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?h({id:"apiSettings.common.enabled"}):h({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function At({open:a,onClose:r,provider:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createProvider:o,isCreating:d}=xt(),{updateProvider:M,isUpdating:u}=Ss(),[v,j]=i.useState(""),[P,F]=i.useState("openai"),[H,k]=i.useState(""),[I,C]=i.useState(""),[D,w]=i.useState(!0),[K,g]=i.useState(!1),[c,A]=i.useState(300),[L,z]=i.useState(0),[y,S]=i.useState(""),[_,b]=i.useState(""),[p,O]=i.useState(""),[X,ne]=i.useState(),[ue,le]=i.useState(),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState([]),[Re,Me]=i.useState(new Set),[_e,Pe]=i.useState("simple-shuffle"),[Ce,we]=i.useState(!1),[ke,Ee]=i.useState(60),[Te,je]=i.useState(300),[Ae,Ie]=i.useState(5),[ce,B]=i.useState(!1),[se,re]=i.useState([]),[ae,oe]=i.useState([]);i.useEffect(()=>{if(t){j(t.name),F(t.type),k(t.apiKey),C(t.apiBase||""),w(t.enabled),Pe(t.routingStrategy||"simple-shuffle"),t.advancedSettings&&(A(t.advancedSettings.timeout||300),z(t.advancedSettings.maxRetries||0),S(t.advancedSettings.organization||""),b(t.advancedSettings.apiVersion||""),O(t.advancedSettings.customHeaders?JSON.stringify(t.advancedSettings.customHeaders,null,2):""),ne(t.advancedSettings.rpm),le(t.advancedSettings.tpm),E(t.advancedSettings.proxy||""));const x=!!(t.apiKeys&&t.apiKeys.length>0);q(x),x&&t.apiKeys&&de(t.apiKeys.map(T=>({id:T.id,key:T.key,label:T.label,weight:T.weight,enabled:T.enabled}))),t.healthCheck&&(we(t.healthCheck.enabled),Ee(t.healthCheck.intervalSeconds),je(t.healthCheck.cooldownSeconds),Ie(t.healthCheck.failureThreshold)),t.llmModels&&re(t.llmModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description}))),t.embeddingModels&&oe(t.embeddingModels.map(T=>({id:T.id,name:T.name,series:T.series,description:T.description})))}else j(""),F("openai"),k(""),C(""),w(!0),A(300),z(0),S(""),b(""),O(""),ne(void 0),le(void 0),E(""),q(!1),de([]),Pe("simple-shuffle"),we(!1),Ee(60),je(300),Ie(5),re([]),oe([])},[t,a]);const me=()=>{const x={id:`key-${Date.now()}`,key:"",label:`Key ${te.length+1}`,weight:1,enabled:!0};de([...te,x])},De=(x,T)=>{de(te.map((R,U)=>U===x?{...R,...T}:R))},is=x=>{de(te.filter((T,R)=>R!==x))},Xe=x=>{Me(T=>{const R=new Set(T);return R.has(x)?R.delete(x):R.add(x),R})},He=()=>{const x={id:`llm-${Date.now()}`,name:"",series:""};re([...se,x])},ns=x=>{re(se.filter((T,R)=>R!==x))},Fe=(x,T,R)=>{re(se.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ls=()=>{const x={id:`emb-${Date.now()}`,name:"",series:""};oe([...ae,x])},Y=x=>{oe(ae.filter((T,R)=>R!==x))},Le=(x,T,R)=>{oe(ae.map((U,Je)=>Je===x?{...U,[T]:R}:U))},ds=async()=>{try{let x;if(p.trim())try{x=JSON.parse(p)}catch{alert(s({id:"apiSettings.messages.invalidJsonHeaders"}));return}const T=new Date().toISOString(),R={name:v,type:P,apiKey:G?"":H,apiBase:I||void 0,enabled:D,advancedSettings:{timeout:c,maxRetries:L,organization:y||void 0,apiVersion:_||void 0,customHeaders:x,rpm:X,tpm:ue,proxy:be||void 0},apiKeys:G?te.map(U=>({id:U.id,key:U.key,label:U.label,weight:U.weight,enabled:U.enabled})):void 0,routingStrategy:G?_e:void 0,healthCheck:Ce?{enabled:!0,intervalSeconds:ke,cooldownSeconds:Te,failureThreshold:Ae}:void 0,llmModels:se.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"llm",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T})),embeddingModels:ae.filter(U=>U.name.trim()).map(U=>({id:U.id,name:U.name,type:"embedding",series:U.series||U.name.split("-")[0],enabled:!0,createdAt:T,updatedAt:T}))};h&&t?await M(t.id,R):await o(R),r()}catch{n(s({id:"apiSettings.providers.saveError"}))}},Ue=d||u;return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.providers.actions.edit"}:{id:"apiSettings.providers.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.providers.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.providers.displayName"})," *"]}),e.jsx(N,{id:"name",value:v,onChange:x=>j(x.target.value),placeholder:"My OpenAI"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"type",children:[s({id:"apiSettings.common.type"})," *"]}),e.jsxs(ve,{value:P,onValueChange:x=>F(x),children:[e.jsx(fe,{id:"type",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"openai",children:"OpenAI"}),e.jsx(V,{value:"anthropic",children:"Anthropic"}),e.jsx(V,{value:"custom",children:"Custom"})]})]})]})]}),!G&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"apiKey",children:[s({id:"apiSettings.providers.apiKey"})," *"]}),e.jsx(N,{id:"apiKey",type:"password",value:H,onChange:x=>k(x.target.value),placeholder:"sk-..."}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.useEnvVar"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiBase",children:s({id:"apiSettings.providers.apiBaseUrl"})}),e.jsx(N,{id:"apiBase",value:I,onChange:x=>C(x.target.value),placeholder:"https://api.openai.com/v1"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:D,onCheckedChange:w}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.providers.enableProvider"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"useMultiKey",checked:G,onCheckedChange:q}),e.jsx(m,{htmlFor:"useMultiKey",children:s({id:"apiSettings.providers.multiKeySettings"})})]})]}),G&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:me,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),te.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:te.map((x,T)=>e.jsx(Kt,{entry:x,showKey:Re.has(T),onToggleShowKey:()=>Xe(T),onUpdate:R=>De(T,R),onRemove:()=>is(T)},x.id))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:_e,onValueChange:x=>Pe(x),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:Ce,onCheckedChange:we})]}),Ce&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:ke,onChange:x=>Ee(parseInt(x.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:Te,onChange:x=>je(parseInt(x.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:Ae,onChange:x=>Ie(parseInt(x.target.value)||5)})]})]})]})]}),e.jsxs(hs,{open:K,onOpenChange:g,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.advancedSettings"})}),K?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"timeout",children:s({id:"apiSettings.providers.timeout"})}),e.jsx(N,{id:"timeout",type:"number",min:"1",value:c,onChange:x=>A(parseInt(x.target.value)||300)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.timeoutHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"maxRetries",children:s({id:"apiSettings.providers.maxRetries"})}),e.jsx(N,{id:"maxRetries",type:"number",min:"0",value:L,onChange:x=>z(parseInt(x.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"organization",children:s({id:"apiSettings.providers.organization"})}),e.jsx(N,{id:"organization",value:y,onChange:x=>S(x.target.value)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.organizationHint"})})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"apiVersion",children:s({id:"apiSettings.providers.apiVersion"})}),e.jsx(N,{id:"apiVersion",value:_,onChange:x=>b(x.target.value),placeholder:"2024-02-01"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.apiVersionHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"rpm",children:s({id:"apiSettings.providers.rpm"})}),e.jsx(N,{id:"rpm",type:"number",min:"0",value:X??"",onChange:x=>ne(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tpm",children:s({id:"apiSettings.providers.tpm"})}),e.jsx(N,{id:"tpm",type:"number",min:"0",value:ue??"",onChange:x=>le(x.target.value?parseInt(x.target.value):void 0),placeholder:s({id:"apiSettings.providers.unlimited"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"proxy",children:s({id:"apiSettings.providers.proxy"})}),e.jsx(N,{id:"proxy",value:be,onChange:x=>E(x.target.value),placeholder:"http://proxy.example.com:8080"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"customHeaders",children:s({id:"apiSettings.providers.customHeaders"})}),e.jsx(Ke,{id:"customHeaders",value:p,onChange:x=>O(x.target.value),placeholder:`{
2
2
  "X-Custom": "value"
3
3
  }`,rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.providers.customHeadersHint"})})]})]})]}),e.jsxs(hs,{open:ce,onOpenChange:B,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsx("span",{className:"font-semibold",children:s({id:"apiSettings.providers.modelSettings"})}),ce?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium",children:s({id:"apiSettings.providers.llmModels"})}),e.jsxs(f,{type:"button",size:"sm",onClick:He,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addLlmModel"})]})]}),se.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:se.map((x,T)=>e.jsxs("div",{className:"flex items-start gap-2 p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:x.name,onChange:R=>Fe(T,"name",R.target.value),placeholder:s({id:"apiSettings.providers.modelId"})}),e.jsx(N,{value:x.series||"",onChange:R=>Fe(T,"series",R.target.value),placeholder:s({id:"apiSettings.providers.modelSeries"})})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:()=>ns(T),className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]},x.id))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"text-sm font-medium",children:s({id:"apiSettings.providers.embeddingModels"})}),e.jsxs(f,{type:"button",size:"sm",onClick:ls,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addEmbeddingModel"})]})]}),ae.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:ae.map((x,T)=>e.jsxs("div",{className:"flex items-start gap-2 p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:x.name,onChange:R=>Le(T,"name",R.target.value),placeholder:s({id:"apiSettings.providers.modelId"})}),e.jsx(N,{value:x.series||"",onChange:R=>Le(T,"series",R.target.value),placeholder:s({id:"apiSettings.providers.modelSeries"})})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:()=>Y(T),className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]},x.id))})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:Ue,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:ds,disabled:Ue||!v.trim(),children:[Ue?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})})}function Dt({endpoint:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){var d,M;const{formatMessage:o}=W();return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground font-mono",children:a.id}),a.enabled?e.jsx(ee,{variant:"success",children:o({id:"apiSettings.common.enabled"})}):e.jsx(ee,{variant:"secondary",children:o({id:"apiSettings.common.disabled"})}),a.cacheStrategy.enabled&&e.jsxs(ee,{variant:"info",className:"flex items-center gap-1",children:[e.jsx(Oe,{className:"w-3 h-3"}),o({id:"apiSettings.endpoints.cacheStrategy"})]})]}),e.jsx("p",{className:"text-sm font-medium text-foreground mt-1",children:a.name}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.endpoints.provider"}),": ",a.providerId]}),e.jsxs("span",{children:[o({id:"apiSettings.endpoints.model"}),": ",a.model]})]}),a.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a.description}),a.cacheStrategy.enabled&&e.jsxs("div",{className:"flex items-center gap-3 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.endpoints.cacheTTL"}),": ",a.cacheStrategy.ttlMinutes,"m"]}),e.jsxs("span",{children:[o({id:"apiSettings.endpoints.cacheMaxSize"}),": ",a.cacheStrategy.maxSizeKB,"KB"]}),(((d=a.cacheStrategy.filePatterns)==null?void 0:d.length)||0)>0&&e.jsxs("span",{children:[o({id:"apiSettings.endpoints.filePatterns"}),": ",((M=a.cacheStrategy.filePatterns)==null?void 0:M.length)||0]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.endpoints.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.endpoints.actions.delete"})]})]})]})]})]})})}function Lt({onAddEndpoint:a,onEditEndpoint:r}){const{formatMessage:t}=W(),{error:s}=ge(),[n,h]=i.useState(""),[o,d]=i.useState(!1),[M,u]=i.useState(!1),{endpoints:v,cachedCount:j,isLoading:P,refetch:F}=Ls(),{deleteEndpoint:H,isDeleting:k}=gt(),{updateEndpoint:I,isUpdating:C}=Os(),D=i.useMemo(()=>v.filter(c=>{const A=c.id.toLowerCase().includes(n.toLowerCase())||c.name.toLowerCase().includes(n.toLowerCase())||c.model.toLowerCase().includes(n.toLowerCase()),L=!o||!c.enabled,z=!M||c.cacheStrategy.enabled;return A&&L&&z}),[v,n,o,M]),w=async(c,A)=>{const L=t({id:"apiSettings.endpoints.deleteConfirm"},{id:A});if(window.confirm(L))try{await H(c)}catch{s(t({id:"apiSettings.endpoints.deleteError"}))}},K=async(c,A)=>{try{await I(c,{enabled:A})}catch{s(t({id:"apiSettings.endpoints.toggleError"}))}},g=v.length;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:t({id:"apiSettings.endpoints.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.description"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>F(),disabled:P,children:[e.jsx(xe,{className:Ve("w-4 h-4 mr-2",P&&"animate-spin")}),t({id:"common.actions.refresh"})]}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.endpoints.actions.add"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xe,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:g})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.stats.totalEndpoints"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Oe,{className:"w-5 h-5 text-info"}),e.jsx("span",{className:"text-2xl font-bold",children:j})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.endpoints.stats.cachedEndpoints"})})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.common.searchPlaceholder"}),value:n,onChange:c=>h(c.target.value),className:"pl-9"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:o?"default":"outline",size:"sm",onClick:()=>d(c=>!c),children:[o?e.jsx(Ms,{className:"w-4 h-4 mr-2"}):e.jsx(ze,{className:"w-4 h-4 mr-2"}),t(o?{id:"apiSettings.endpoints.actions.showAll"}:{id:"apiSettings.endpoints.actions.showDisabled"})]}),e.jsxs(f,{variant:M?"default":"outline",size:"sm",onClick:()=>u(c=>!c),children:[e.jsx(Oe,{className:"w-4 h-4 mr-2"}),t(M?{id:"apiSettings.endpoints.actions.showAll"}:{id:"apiSettings.endpoints.cacheStrategy"})]})]})]}),P?e.jsx("div",{className:"space-y-4",children:[1,2,3,4,5].map(c=>e.jsx("div",{className:"h-24 bg-muted animate-pulse rounded-lg"},c))}):D.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(Oe,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:t({id:"apiSettings.endpoints.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:t({id:"apiSettings.endpoints.emptyState.message"})}),e.jsxs(f,{className:"mt-4",onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.endpoints.actions.add"})]})]}):e.jsx("div",{className:"space-y-3",children:D.map(c=>e.jsx(Dt,{endpoint:c,onEdit:()=>r(c.id),onDelete:()=>w(c.id,c.name),onToggleEnabled:A=>K(c.id,A),isDeleting:k,isToggling:C},c.id))})]})}function Ot({value:a,onChange:r,placeholder:t}){const[s,n]=i.useState(""),h=()=>{s.trim()&&!a.includes(s.trim())&&(r([...a,s.trim()]),n(""))},o=d=>{r(a.filter(M=>M!==d))};return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(N,{value:s,onChange:d=>n(d.target.value),onKeyDown:d=>{d.key==="Enter"&&(d.preventDefault(),h())},placeholder:t}),e.jsx(f,{type:"button",size:"sm",onClick:h,children:e.jsx(Be,{className:"w-4 h-4"})})]}),a.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:a.map(d=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-muted rounded-md text-xs",children:[d,e.jsx("button",{type:"button",onClick:()=>o(d),className:"hover:text-destructive",children:"×"})]},d))})]})}function zt({open:a,onClose:r,endpoint:t}){const{formatMessage:s}=W(),{error:n}=ge(),h=!!t,{createEndpoint:o,isCreating:d}=pt(),{updateEndpoint:M,isUpdating:u}=Os(),{providers:v}=Ze(),[j,P]=i.useState(""),[F,H]=i.useState(""),[k,I]=i.useState(""),[C,D]=i.useState(""),[w,K]=i.useState(""),[g,c]=i.useState(!0),[A,L]=i.useState(!1),[z,y]=i.useState(!1),[S,_]=i.useState(60),[b,p]=i.useState(1024),[O,X]=i.useState([]),ne=i.useMemo(()=>{if(!k)return[];const E=v.find(q=>q.id===k);if(!E)return[];const G=[];return E.llmModels&&G.push(...E.llmModels.filter(q=>q.enabled).map(q=>q.id)),E.embeddingModels&&G.push(...E.embeddingModels.filter(q=>q.enabled).map(q=>q.id)),E.rerankerModels&&G.push(...E.rerankerModels.filter(q=>q.enabled).map(q=>q.id)),G},[k,v]);i.useEffect(()=>{t?(P(t.id),H(t.name),I(t.providerId),D(t.model),K(t.description||""),c(t.enabled),y(t.cacheStrategy.enabled),_(t.cacheStrategy.ttlMinutes),p(t.cacheStrategy.maxSizeKB),X(t.cacheStrategy.filePatterns||[])):(P(""),H(""),I(""),D(""),K(""),c(!0),y(!1),_(60),p(1024),X([]))},[t,a]),i.useEffect(()=>{if(!h&&k){const E=v.find(G=>G.id===k);E&&E.llmModels&&E.llmModels.length>0&&D(E.llmModels[0].id)}},[k,v,h]);const ue=async()=>{try{const G={id:j,name:F,providerId:k,model:C,description:w||void 0,enabled:g,cacheStrategy:{enabled:z,ttlMinutes:S,maxSizeKB:b,filePatterns:z?O:[]}};h&&t?await M(t.id,G):await o(G),r()}catch{n(s({id:"apiSettings.endpoints.saveError"}))}},le=d||u,be=j.trim()&&F.trim()&&k&&C.trim();return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(h?{id:"apiSettings.endpoints.actions.edit"}:{id:"apiSettings.endpoints.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.endpoints.description"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.basicInfo"})}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"endpointId",children:[s({id:"apiSettings.endpoints.endpointId"})," *"]}),e.jsx(N,{id:"endpointId",value:j,onChange:E=>P(E.target.value),placeholder:"my-gpt4o",disabled:h,className:"font-mono"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.endpoints.endpointIdHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[s({id:"apiSettings.endpoints.name"})," *"]}),e.jsx(N,{id:"name",value:F,onChange:E=>H(E.target.value),placeholder:"My GPT-4o"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"providerId",children:[s({id:"apiSettings.endpoints.provider"})," *"]}),e.jsxs(ve,{value:k,onValueChange:I,disabled:h,children:[e.jsx(fe,{id:"providerId",children:e.jsx(Se,{placeholder:v.length===0?s({id:"apiSettings.providers.addProviderFirst"}):s({id:"apiSettings.endpoints.selectProvider"})})}),e.jsx(Ne,{children:v.map(E=>e.jsxs(V,{value:E.id,disabled:!E.enabled,children:[E.name,!E.enabled&&` (${s({id:"apiSettings.common.disabled"})})`]},E.id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"model",children:[s({id:"apiSettings.endpoints.model"})," *"]}),ne.length===0&&k?e.jsx(N,{id:"model",value:C,onChange:E=>D(E.target.value),placeholder:"",className:"font-mono"}):e.jsxs(ve,{value:C,onValueChange:D,children:[e.jsx(fe,{id:"model",children:e.jsx(Se,{placeholder:s(k?{id:"apiSettings.endpoints.selectModel"}:{id:"apiSettings.endpoints.selectProvider"})})}),e.jsx(Ne,{children:ne.map(E=>e.jsx(V,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"description",children:s({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"description",value:w,onChange:E=>K(E.target.value),placeholder:s({id:"apiSettings.common.optional"}),rows:2})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:g,onCheckedChange:c}),e.jsx(m,{htmlFor:"enabled",children:s({id:"apiSettings.endpoints.enabled"})})]})]}),e.jsxs(hs,{open:A,onOpenChange:L,children:[e.jsx(xs,{asChild:!0,children:e.jsxs(f,{type:"button",variant:"ghost",className:"w-full justify-between",children:[e.jsxs("span",{className:"flex items-center gap-2 font-semibold",children:[e.jsx(Oe,{className:"w-4 h-4"}),s({id:"apiSettings.endpoints.cacheStrategy"})]}),A?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})]})}),e.jsxs(gs,{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(m,{children:s({id:"apiSettings.endpoints.enableContextCaching"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:s({id:"apiSettings.endpoints.cacheStrategy"})})]}),e.jsx(Z,{checked:z,onCheckedChange:y})]}),z&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cacheTTL",children:s({id:"apiSettings.endpoints.cacheTTL"})}),e.jsx(N,{id:"cacheTTL",type:"number",min:"1",value:S,onChange:E=>_(parseInt(E.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cacheMaxSize",children:s({id:"apiSettings.endpoints.cacheMaxSize"})}),e.jsx(N,{id:"cacheMaxSize",type:"number",min:"1",value:b,onChange:E=>p(parseInt(E.target.value)||1024)})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:s({id:"apiSettings.endpoints.autoCachePatterns"})}),e.jsx(Ot,{value:O,onChange:X,placeholder:"*.md,*.ts"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.endpoints.filePatternsHint"})})]})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:le,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:ue,disabled:le||!be,children:[le?e.jsx(Oe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})})}function Bt({used:a,total:r}){const{formatMessage:t}=W(),s=r>0?Math.round(a/r*100):0;return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:t({id:"apiSettings.cache.settings.cacheUsage"})}),e.jsxs("span",{className:"font-medium",children:[s,"%"]})]}),e.jsx(et,{value:s,className:"h-2"}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[e.jsxs("span",{children:[t({id:"apiSettings.cache.settings.used"})," ",(a/1024/1024).toFixed(2)," MB"]}),e.jsxs("span",{children:[t({id:"apiSettings.cache.settings.total"})," ",(r/1024/1024).toFixed(2)," MB"]})]})]})}function ws({icon:a,label:r,value:t,className:s}){return e.jsx(Q,{className:Ve("p-4",s),children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-primary/10 rounded-md text-primary",children:a}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:r}),e.jsx("p",{className:"text-2xl font-semibold",children:t})]})]})})}function Rt({className:a}){const{formatMessage:r}=W(),{success:t,error:s}=ge(),{stats:n,refetch:h}=ut(),{updateCacheSettings:o,isUpdating:d}=jt(),{clearCache:M,isClearing:u}=vt(),[v,j]=i.useState({enabled:!0,cacheDir:"",maxTotalSizeMB:1024}),[P,F]=i.useState(!1);i.useEffect(()=>{},[n]);const H=async()=>{try{await o(v),t(r({id:"apiSettings.cache.messages.cacheSettingsUpdated"})),await h()}catch(I){s(r({id:"common.error"}),I instanceof Error?I.message:r({id:"common.error"}))}},k=async()=>{try{await M(),F(!1),t(r({id:"apiSettings.cache.messages.cacheCleared"})),await h()}catch(I){s(r({id:"common.error"}),I instanceof Error?I.message:r({id:"common.error"}))}};return e.jsxs("div",{className:Ve("space-y-6",a),children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsx(ws,{icon:e.jsx(kt,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.cacheEntries"}),value:(n==null?void 0:n.entries)??0}),e.jsx(ws,{icon:e.jsx(Et,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.cacheSize"}),value:`${(((n==null?void 0:n.totalSize)??0)/1024/1024).toFixed(2)} MB`}),e.jsx(ws,{icon:e.jsx(Oe,{className:"w-5 h-5"}),label:r({id:"apiSettings.cache.settings.maxSize"}),value:`${(((n==null?void 0:n.maxSize)??0)/1024/1024).toFixed(2)} MB`})]}),n&&e.jsx(Q,{className:"p-4",children:e.jsx(Bt,{used:n.totalSize,total:n.maxSize})}),e.jsxs(Q,{className:"p-6",children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:r({id:"apiSettings.cache.settings.title"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"space-y-0.5",children:e.jsx(m,{htmlFor:"cache-enabled",children:r({id:"apiSettings.cache.settings.enableGlobalCaching"})})}),e.jsx(Z,{id:"cache-enabled",checked:v.enabled??!0,onCheckedChange:I=>j({...v,enabled:I}),disabled:d})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cache-dir",children:r({id:"apiSettings.cache.settings.cacheDirectory"})}),e.jsx(N,{id:"cache-dir",value:v.cacheDir??"",onChange:I=>j({...v,cacheDir:I.target.value}),disabled:d,placeholder:"/path/to/cache"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cache-max-size",children:r({id:"apiSettings.cache.settings.maxSize"})}),e.jsx(N,{id:"cache-max-size",type:"number",min:1,value:v.maxTotalSizeMB??1024,onChange:I=>j({...v,maxTotalSizeMB:parseInt(I.target.value)||1024}),disabled:d})]}),e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t",children:[e.jsxs(f,{variant:"destructive",onClick:()=>F(!0),disabled:u,children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),r({id:"apiSettings.cache.settings.actions.clearCache"})]}),e.jsxs(f,{onClick:H,disabled:d,children:[e.jsx(Qs,{className:"w-4 h-4 mr-2"}),r({id:"common.save"})]})]})]})]}),e.jsx(_s,{open:P,onOpenChange:F,children:e.jsxs(Hs,{children:[e.jsxs(Us,{children:[e.jsx(Js,{children:r({id:"apiSettings.cache.settings.actions.clearCache"})}),e.jsx(Vs,{children:r({id:"apiSettings.cache.settings.confirmClearCache"})})]}),e.jsxs($s,{children:[e.jsx(Gs,{disabled:u,children:r({id:"common.cancel"})}),e.jsx(qs,{onClick:k,disabled:u,children:r(u?{id:"common.loading"}:{id:"common.confirm"})})]})]})})]})}function _t({pool:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){const{formatMessage:o}=W(),d=()=>{const u={embedding:"success",llm:"default",reranker:"info"},v={embedding:"apiSettings.modelPools.embedding",llm:"apiSettings.modelPools.llm",reranker:"apiSettings.modelPools.reranker"};return e.jsx(ee,{variant:u[a.modelType],children:o({id:v[a.modelType]})})},M=()=>o({id:{round_robin:"apiSettings.modelPools.roundRobin",latency_aware:"apiSettings.modelPools.latencyAware",weighted_random:"apiSettings.modelPools.weightedRandom"}[a.strategy]});return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name||a.id}),d(),a.enabled?e.jsxs(ee,{variant:"success",children:[e.jsx(ze,{className:"w-3 h-3 mr-1"}),o({id:"apiSettings.common.enabled"})]}):e.jsxs(ee,{variant:"secondary",children:[e.jsx(Ms,{className:"w-3 h-3 mr-1"}),o({id:"apiSettings.common.disabled"})]})]}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"capitalize",children:M()}),a.autoDiscover&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(xe,{className:"w-3 h-3"}),o({id:"apiSettings.modelPools.autoDiscover"})]})]}),e.jsx("div",{className:"mt-2 text-sm",children:e.jsxs("p",{className:"text-muted-foreground",children:[o({id:"apiSettings.modelPools.targetModel"}),": ",e.jsx("span",{className:"font-medium",children:a.targetModel})]})}),a.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[o({id:"apiSettings.modelPools.defaultCooldown"}),": ",a.defaultCooldown,"s"]}),e.jsxs("span",{children:[o({id:"apiSettings.modelPools.defaultConcurrent"}),": ",a.defaultMaxConcurrentPerKey]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.modelPools.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.modelPools.actions.delete"})]})]})]})]})]})})}function rs({label:a,value:r,icon:t,className:s}){return e.jsx(Q,{className:Ve("p-4",s),children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-primary/10 rounded-md text-primary",children:t}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:a}),e.jsx("p",{className:"text-2xl font-semibold",children:r})]})]})})}function Ht({onAddPool:a,onEditPool:r}){var z;const{formatMessage:t}=W(),{success:s,error:n}=ge(),{pools:h,totalCount:o,enabledCount:d,isLoading:M,refetch:u}=zs(),{deleteModelPool:v,isDeleting:j}=ft(),{updateModelPool:P}=Bs(),[F,H]=i.useState(""),[k,I]=i.useState("all"),[C,D]=i.useState(null),[w,K]=i.useState(null),g=i.useMemo(()=>h.filter(y=>{var b;const S=!F||y.id.toLowerCase().includes(F.toLowerCase())||((b=y.name)==null?void 0:b.toLowerCase().includes(F.toLowerCase()))||y.targetModel.toLowerCase().includes(F.toLowerCase()),_=k==="all"||y.modelType===k;return S&&_}),[h,F,k]),c=i.useMemo(()=>({embedding:h.filter(y=>y.modelType==="embedding").length,llm:h.filter(y=>y.modelType==="llm").length,reranker:h.filter(y=>y.modelType==="reranker").length}),[h]),A=async()=>{if(C)try{await v(C),s(t({id:"apiSettings.messages.settingsDeleted"})),D(null),await u()}catch(y){n(t({id:"common.error"}),y instanceof Error?y.message:t({id:"common.error"}))}},L=async(y,S)=>{K(y);try{await P(y,{enabled:S}),await u()}catch(_){n(t({id:"common.error"}),_ instanceof Error?_.message:t({id:"common.error"}))}finally{K(null)}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(rs,{label:t({id:"apiSettings.modelPools.stats.total"}),value:o,icon:e.jsx(Cs,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.stats.enabled"}),value:d,icon:e.jsx(ze,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.embedding"}),value:c.embedding,icon:e.jsx(xe,{className:"w-5 h-5"})}),e.jsx(rs,{label:t({id:"apiSettings.modelPools.llm"}),value:c.llm,icon:e.jsx(Cs,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between",children:[e.jsx("div",{className:"flex-1 w-full sm:max-w-md",children:e.jsxs("div",{className:"relative",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.common.searchPlaceholder"}),value:F,onChange:y=>H(y.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex items-center bg-muted rounded-lg p-1",children:Object.keys({all:null,embedding:null,llm:null,reranker:null}).map(y=>e.jsx("button",{onClick:()=>I(y),className:Ve("px-3 py-1.5 text-sm font-medium rounded-md transition-colors",k===y?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:t(y==="all"?{id:"apiSettings.common.showAll"}:{id:`apiSettings.modelPools.${y}`})},y))}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.modelPools.actions.add"})]})]})]}),M?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:t({id:"common.loading"})}):g.length===0?e.jsxs(Q,{className:"p-12 text-center",children:[e.jsx(Cs,{className:"w-12 h-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:t({id:"apiSettings.modelPools.emptyState.title"})}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:t({id:"apiSettings.modelPools.emptyState.message"})}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.modelPools.actions.add"})]})]}):e.jsx("div",{className:"grid gap-4",children:g.map(y=>e.jsx(_t,{pool:y,onEdit:()=>r(y.id),onDelete:()=>D(y.id),onToggleEnabled:S=>L(y.id,S),isDeleting:j&&C===y.id,isToggling:w===y.id},y.id))}),e.jsx(_s,{open:!!C,onOpenChange:()=>D(null),children:e.jsxs(Hs,{children:[e.jsxs(Us,{children:[e.jsx(Js,{children:t({id:"apiSettings.modelPools.actions.delete"})}),e.jsx(Vs,{children:t({id:"apiSettings.modelPools.deleteConfirm"},{name:((z=h.find(y=>y.id===C))==null?void 0:z.name)||C||""})})]}),e.jsxs($s,{children:[e.jsx(Gs,{disabled:j,children:t({id:"common.cancel"})}),e.jsx(qs,{onClick:A,disabled:j,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:t(j?{id:"common.loading"}:{id:"common.confirm"})})]})]})})]})}const Fs={modelType:"",targetModel:"",strategy:"round_robin",autoDiscover:!0,excludedProviderIds:[],defaultCooldown:60,defaultMaxConcurrentPerKey:5,name:"",description:""};function Ut({provider:a,excluded:r,onToggle:t}){const{formatMessage:s}=W();return e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/50 rounded-md",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(tt,{id:`provider-${a.providerId}`,checked:!r,onCheckedChange:()=>t(a.providerId)}),e.jsx(m,{htmlFor:`provider-${a.providerId}`,className:"font-medium cursor-pointer",children:a.providerName})]}),e.jsx("div",{className:"ml-6 mt-1 flex flex-wrap gap-1",children:a.models.map(n=>e.jsx("span",{className:"text-xs px-2 py-0.5 bg-background rounded text-muted-foreground",children:n},n))})]}),e.jsx(f,{variant:"ghost",size:"sm",onClick:()=>t(a.providerId),children:r?e.jsx("span",{className:"text-xs text-muted-foreground",children:s({id:"apiSettings.modelPools.excludeProvider"})}):e.jsx("span",{className:"text-xs text-primary",children:s({id:"apiSettings.modelPools.includeProvider"})})})]})}function Jt({open:a,onClose:r,pool:t}){var b;const{formatMessage:s}=W(),{success:n,error:h,warning:o}=ge(),[d,M]=i.useState(Fs),[u,v]=i.useState(!1),{createModelPool:j,isCreating:P}=St(),{updateModelPool:F,isUpdating:H}=Bs(),{discoverModels:k,isDiscovering:I,data:C}=Nt(),{data:D,isLoading:w}=yt(d.modelType||"embedding"),K=!!t,g=P||H;i.useEffect(()=>{M(t?{modelType:t.modelType,targetModel:t.targetModel,strategy:t.strategy,autoDiscover:t.autoDiscover,excludedProviderIds:t.excludedProviderIds??[],defaultCooldown:t.defaultCooldown,defaultMaxConcurrentPerKey:t.defaultMaxConcurrentPerKey,name:t.name??"",description:t.description??""}:Fs),v(!1)},[t,a]);const c=(p,O)=>{M(X=>({...X,[p]:O})),(p==="modelType"||p==="targetModel")&&v(!1)},A=async()=>{if(!d.modelType||!d.targetModel){o("Please select model type and target model first");return}try{await k(d.modelType,d.targetModel),v(!0)}catch(p){h(s({id:"common.error"}),p instanceof Error?p.message:"Failed to discover providers")}},L=p=>{M(O=>({...O,excludedProviderIds:O.excludedProviderIds.includes(p)?O.excludedProviderIds.filter(X=>X!==p):[...O.excludedProviderIds,p]}))},z=i.useMemo(()=>!!d.modelType&&!!d.targetModel,[d.modelType,d.targetModel]),y=async()=>{if(z)try{const p={modelType:d.modelType,targetModel:d.targetModel,strategy:d.strategy,autoDiscover:d.autoDiscover,excludedProviderIds:d.excludedProviderIds,defaultCooldown:d.defaultCooldown,defaultMaxConcurrentPerKey:d.defaultMaxConcurrentPerKey,name:d.name||void 0,description:d.description||void 0,enabled:!0};K&&t?await F(t.id,p):await j(p),n(s({id:"apiSettings.modelPools.poolSaved"})),r()}catch(p){h(s({id:"common.error"}),p instanceof Error?p.message:"Failed to save model pool")}},S=(C==null?void 0:C.discovered)??[],_=i.useMemo(()=>!C||!S?0:S.length-d.excludedProviderIds.filter(p=>S.some(O=>O.providerId===p)).length,[C,S,d.excludedProviderIds]);return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s(K?{id:"apiSettings.modelPools.actions.edit"}:{id:"apiSettings.modelPools.actions.add"})}),e.jsx(We,{children:s({id:"apiSettings.modelPools.embeddingPoolDesc"})})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"pool-model-type",children:[s({id:"apiSettings.modelPools.modelType"})," *"]}),e.jsxs(ve,{value:d.modelType,onValueChange:p=>c("modelType",p),disabled:K,children:[e.jsx(fe,{id:"pool-model-type",children:e.jsx(Se,{placeholder:s({id:"apiSettings.modelPools.selectTargetModel"})})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"embedding",children:s({id:"apiSettings.modelPools.embedding"})}),e.jsx(V,{value:"llm",children:s({id:"apiSettings.modelPools.llm"})}),e.jsx(V,{value:"reranker",children:s({id:"apiSettings.modelPools.reranker"})})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"pool-target-model",children:[s({id:"apiSettings.modelPools.targetModel"})," *"]}),w?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(ss,{className:"w-4 h-4 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(ve,{value:d.targetModel,onValueChange:p=>c("targetModel",p),disabled:!d.modelType,children:[e.jsx(fe,{id:"pool-target-model",children:e.jsx(Se,{placeholder:s({id:"apiSettings.modelPools.selectTargetModel"})})}),e.jsx(Ne,{children:(b=D==null?void 0:D.availableModels)==null?void 0:b.map(p=>e.jsx(V,{value:p.modelId,children:p.modelName},p.modelId))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-strategy",children:s({id:"apiSettings.modelPools.strategy"})}),e.jsxs(ve,{value:d.strategy,onValueChange:p=>c("strategy",p),children:[e.jsx(fe,{id:"pool-strategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"round_robin",children:s({id:"apiSettings.modelPools.roundRobin"})}),e.jsx(V,{value:"latency_aware",children:s({id:"apiSettings.modelPools.latencyAware"})}),e.jsx(V,{value:"weighted_random",children:s({id:"apiSettings.modelPools.weightedRandom"})})]})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(m,{htmlFor:"pool-auto-discover",children:s({id:"apiSettings.modelPools.autoDiscover"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Automatically find providers offering this model"})]}),e.jsx(Z,{id:"pool-auto-discover",checked:d.autoDiscover,onCheckedChange:p=>c("autoDiscover",p)})]}),d.autoDiscover&&d.modelType&&d.targetModel&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(f,{type:"button",variant:"outline",onClick:A,disabled:I,className:"w-full",children:I?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(e.Fragment,{children:[e.jsx(xe,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.modelPools.actions.autoDiscover"})]})}),u&&S.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(st,{className:"w-4 h-4"}),e.jsxs("span",{children:[s({id:"apiSettings.modelPools.discovered"})," ",S.length," ",s({id:"apiSettings.modelPools.providers"})," •"," ",_," ",s({id:"apiSettings.modelPools.discovered"}).toLowerCase()]})]}),S.map(p=>e.jsx(Ut,{provider:p,excluded:d.excludedProviderIds.includes(p.providerId),onToggle:L},p.providerId))]}),u&&S.length===0&&e.jsx("div",{className:"text-center py-6 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:s({id:"apiSettings.modelPools.noProvidersFound"})})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-cooldown",children:s({id:"apiSettings.modelPools.defaultCooldown"})}),e.jsx(N,{id:"pool-cooldown",type:"number",min:0,value:d.defaultCooldown,onChange:p=>c("defaultCooldown",parseInt(p.target.value)||0)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-concurrent",children:s({id:"apiSettings.modelPools.defaultConcurrent"})}),e.jsx(N,{id:"pool-concurrent",type:"number",min:1,value:d.defaultMaxConcurrentPerKey,onChange:p=>c("defaultMaxConcurrentPerKey",parseInt(p.target.value)||1)})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-name",children:s({id:"apiSettings.common.name"})}),e.jsx(N,{id:"pool-name",value:d.name,onChange:p=>c("name",p.target.value),placeholder:s({id:"apiSettings.common.optional"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"pool-description",children:s({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"pool-description",value:d.description,onChange:p=>c("description",p.target.value),placeholder:s({id:"apiSettings.common.optional"}),rows:3})]})]}),e.jsxs(Ye,{children:[e.jsxs(f,{variant:"outline",onClick:r,disabled:g,children:[e.jsx(Ds,{className:"w-4 h-4 mr-2"}),s({id:"common.cancel"})]}),e.jsx(f,{onClick:y,disabled:!z||g,children:g?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),s({id:"common.loading"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Qs,{className:"w-4 h-4 mr-2"}),s({id:"common.save"})]})})]})]})})}function Vt({cliSettings:a,onEdit:r,onDelete:t,onToggleEnabled:s,isDeleting:n,isToggling:h}){const{formatMessage:o}=W(),d=()=>{const v=a.provider||"claude",j={claude:{variant:"secondary",label:"Claude"},codex:{variant:"outline",label:"Codex"},gemini:{variant:"default",label:"Gemini"}},P=j[v]||j.claude;return e.jsx(ee,{variant:P.variant,className:"text-xs",children:P.label})},M=()=>a.enabled?e.jsx(ee,{variant:"success",children:o({id:"apiSettings.common.enabled"})}):e.jsx(ee,{variant:"secondary",children:o({id:"apiSettings.common.disabled"})}),u=(()=>{const v=a.settings.env;return v.ANTHROPIC_BASE_URL||v.OPENAI_BASE_URL||""})();return e.jsx(Q,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground truncate",children:a.name}),M(),d()]}),a.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:a.description}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-sm text-muted-foreground",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(cs,{className:"w-3 h-3"}),a.settings.model||"default"]}),u&&e.jsxs("span",{className:"flex items-center gap-1 truncate max-w-[200px]",title:u,children:[e.jsx(Tt,{className:"w-3 h-3 flex-shrink-0"}),u]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:s,disabled:h}),e.jsxs(us,{children:[e.jsx(js,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",children:e.jsx(Ns,{className:"w-4 h-4"})})}),e.jsxs(vs,{align:"end",children:[e.jsxs(he,{onClick:r,children:[e.jsx(ys,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.cliSettings.actions.edit"})]}),e.jsx(fs,{}),e.jsxs(he,{onClick:t,disabled:n,className:"text-destructive",children:[e.jsx(ye,{className:"w-4 h-4 mr-2"}),o({id:"apiSettings.cliSettings.actions.delete"})]})]})]})]})]})})}function $t({onAddCliSettings:a,onEditCliSettings:r}){const{formatMessage:t}=W(),{error:s}=ge(),[n,h]=i.useState(""),{cliSettings:o,totalCount:d,enabledCount:M,providerCounts:u,isLoading:v,refetch:j}=Rs(),{deleteCliSettings:P,isDeleting:F}=bt(),{toggleCliSettings:H,isToggling:k}=Ct(),I=i.useMemo(()=>{if(!n)return o;const w=n.toLowerCase();return o.filter(K=>{var g;return K.name.toLowerCase().includes(w)||((g=K.description)==null?void 0:g.toLowerCase().includes(w))||K.id.toLowerCase().includes(w)})},[o,n]),C=async w=>{const K=o.find(c=>c.id===w);if(!K)return;const g=t({id:"apiSettings.cliSettings.deleteConfirm"},{name:K.name});if(confirm(g))try{await P(w)}catch{s(t({id:"apiSettings.cliSettings.deleteError"}))}},D=async(w,K)=>{try{await H(w,K)}catch{s(t({id:"apiSettings.cliSettings.toggleError"}))}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-5 gap-4",children:[e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"w-5 h-5 text-primary"}),e.jsx("span",{className:"text-2xl font-bold",children:d})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.cliSettings.stats.total"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{className:"w-5 h-5 text-success"}),e.jsx("span",{className:"text-2xl font-bold",children:M})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t({id:"apiSettings.cliSettings.stats.enabled"})})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.claude||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Claude"})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.codex||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Codex"})]}),e.jsxs(Q,{className:"p-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-2xl font-bold",children:u.gemini||0})}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Gemini"})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ps,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),e.jsx(N,{placeholder:t({id:"apiSettings.cliSettings.searchPlaceholder"}),value:n,onChange:w=>h(w.target.value),className:"pl-9"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{variant:"outline",onClick:()=>j(),disabled:v,children:t({id:"common.actions.refresh"})}),e.jsxs(f,{onClick:a,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),t({id:"apiSettings.cliSettings.actions.add"})]})]})]}),v?e.jsx("div",{className:"space-y-4",children:[1,2,3].map(w=>e.jsx("div",{className:"h-32 bg-muted animate-pulse rounded-lg"},w))}):I.length===0?e.jsxs(Q,{className:"p-8 text-center",children:[e.jsx(cs,{className:"w-12 h-12 mx-auto text-muted-foreground/50"}),e.jsx("h3",{className:"mt-4 text-lg font-medium text-foreground",children:t({id:"apiSettings.cliSettings.emptyState.title"})}),e.jsx("p",{className:"mt-2 text-muted-foreground",children:t({id:"apiSettings.cliSettings.emptyState.message"})})]}):e.jsx("div",{className:"space-y-3",children:I.map(w=>e.jsx(Vt,{cliSettings:w,onEdit:()=>r(w.id),onDelete:()=>C(w.id),onToggleEnabled:K=>D(w.id,K),isDeleting:F,isToggling:k},w.id))})]})}function Ks(a,r="json"){const t=a.trim();if(!t)return{ok:!0,value:""};if(r==="json")try{return JSON.parse(t),{ok:!0,value:t}}catch{return{ok:!1,errorKey:"invalidJson"}}return{ok:!0,value:t}}function Gt({open:a,onClose:r,cliSettings:t,defaultProvider:s}){const{formatMessage:n}=W(),{error:h}=ge(),o=!!t,{createCliSettings:d,isCreating:M}=wt(),{updateCliSettings:u,isUpdating:v}=Mt(),{providers:j}=Ze(),[P,F]=i.useState(""),[H,k]=i.useState(""),[I,C]=i.useState(!0),[D,w]=i.useState("claude"),[K,g]=i.useState("direct"),[c,A]=i.useState(""),[L,z]=i.useState(""),[y,S]=i.useState(""),[_,b]=i.useState(!1),[p,O]=i.useState(""),[X,ne]=i.useState(""),[ue,le]=i.useState(""),[be,E]=i.useState(""),[G,q]=i.useState(!1),[te,de]=i.useState(""),[Re,Me]=i.useState(""),[_e,Pe]=i.useState(!1),[Ce,we]=i.useState(""),[ke,Ee]=i.useState(!1),[Te,je]=i.useState(""),[Ae,Ie]=i.useState(!1),[ce,B]=i.useState(""),[se,re]=i.useState([]),[ae,oe]=i.useState(""),[me,De]=i.useState([]),[is,Xe]=i.useState(""),[He,ns]=i.useState("{}"),[Fe,ls]=i.useState(!1),[Y,Le]=i.useState({}),[ds,Ue]=i.useState(!1);i.useEffect(()=>{if(t){F(t.name),k(t.description||""),C(t.enabled),w(t.provider||"claude"),B(t.settings.model||""),re(t.settings.availableModels||[]),De(t.settings.tags||[]);const l=t.provider||"claude";if(l==="claude"){O(t.settings.settingsFile||"");const J=t.settings.env;if(!!(J.ANTHROPIC_BASE_URL&&!J.ANTHROPIC_BASE_URL.includes("api.anthropic.com")))g("direct"),S(J.ANTHROPIC_BASE_URL||""),z(J.ANTHROPIC_AUTH_TOKEN||"");else{g("provider-based");const pe=j.find(bs=>bs.apiBase===J.ANTHROPIC_BASE_URL);pe&&A(pe.id)}}else if(l==="codex"){const J=t.settings;ne(J.env.OPENAI_API_KEY||""),le(J.env.OPENAI_BASE_URL||""),E(J.profile||""),de(J.authJson||""),Me(J.configToml||"")}else l==="gemini"&&we(t.settings.env.GEMINI_API_KEY||t.settings.env.GOOGLE_API_KEY||"")}else{const l=s||"claude";F(""),k(""),C(!0),w(l),g("direct"),A(""),B(""),O(""),z(""),S(""),ne(""),le(""),E(""),q(!1),de(""),Me(""),Pe(!1),we(""),Ee(!1),je(""),re([]),oe(""),De([]),Xe(""),ns("{}"),ls(!1),Le({})}},[t,a,j,s]);const x=()=>{const l={};if(P.trim()?(/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(P.trim())||(l.name=n({id:"apiSettings.cliSettings.nameFormatHint"})),P.trim().length>32&&(l.name=n({id:"apiSettings.cliSettings.nameTooLong"},{max:32}))):l.name=n({id:"apiSettings.validation.nameRequired"}),D==="claude"&&(K==="provider-based"&&!c&&(l.providerId=n({id:"apiSettings.cliSettings.validation.providerRequired"})),K==="direct"&&!L.trim()&&!y.trim()&&(l.direct=n({id:"apiSettings.cliSettings.validation.authOrBaseUrlRequired"}))),te.trim()){const J=Ks(te,"json");J.ok||(l.authJson=n({id:`apiSettings.cliSettings.${J.errorKey}`}))}if(Fe){const J=Ks(He,"json");J.ok||(l.configJson=n({id:`apiSettings.cliSettings.${J.errorKey}`}))}return Le(l),Object.keys(l).length===0},T=async()=>{Ue(!0);try{const l=await nt();l.success?(l.configToml&&Me(l.configToml),l.authJson&&de(l.authJson)):h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}catch{h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}finally{Ue(!1)}},R=async()=>{Ie(!0);try{const l=await lt();l.success?l.settingsJson&&je(l.settingsJson):h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}catch{h(n({id:"apiSettings.cliSettings.loadConfigError"})||"Failed to load config")}finally{Ie(!1)}},U=async()=>{if(x())try{let l;if(D==="claude"){const $={DISABLE_AUTOUPDATER:"1"};if(K==="provider-based"){const pe=j.find(bs=>bs.id===c);pe!=null&&pe.apiBase&&($.ANTHROPIC_BASE_URL=pe.apiBase),pe!=null&&pe.apiKey&&($.ANTHROPIC_AUTH_TOKEN=pe.apiKey)}else L.trim()&&($.ANTHROPIC_AUTH_TOKEN=L.trim()),y.trim()&&($.ANTHROPIC_BASE_URL=y.trim());l={env:$,model:ce||void 0,settingsFile:p.trim()||void 0,availableModels:se,tags:me}}else if(D==="codex"){const $={};X.trim()&&($.OPENAI_API_KEY=X.trim()),ue.trim()&&($.OPENAI_BASE_URL=ue.trim()),l={env:$,model:ce||void 0,profile:be.trim()||void 0,authJson:te.trim()||void 0,configToml:Re.trim()||void 0,availableModels:se,tags:me}}else{const $={};Ce.trim()&&($.GEMINI_API_KEY=Ce.trim()),l={env:$,model:ce||void 0,availableModels:se,tags:me}}if(Fe&&He.trim())try{const $=JSON.parse(He);$&&typeof $=="object"&&!Array.isArray($)&&Object.assign(l,$)}catch{}const J={id:t==null?void 0:t.id,name:P.trim(),description:H.trim()||void 0,provider:D,enabled:I,settings:l};o&&t?await u(t.id,J):await d(J),r()}catch{h(n({id:"apiSettings.cliSettings.saveError"}))}},Je=()=>{const l=ae.trim();l&&!se.includes(l)&&(re([...se,l]),oe(""))},Ws=l=>re(se.filter(J=>J!==l)),Ps=()=>{const l=is.trim();l&&!me.includes(l)&&(De([...me,l]),Xe(""))},Ys=l=>De(me.filter(J=>J!==l)),Zs=["分析","Debug","implementation","refactoring","testing"],es=j.find(l=>l.id===c),Xs={claude:"Claude",codex:"Codex",gemini:"Gemini"};return e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsxs(Qe,{children:[n(o?{id:"apiSettings.cliSettings.actions.edit"}:{id:"apiSettings.cliSettings.actions.add"})," - ",Xs[D]]}),e.jsx(We,{children:n({id:"apiSettings.cliSettings.modalDescription"})})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[!o&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:"CLI Provider"}),e.jsxs(ve,{value:D,onValueChange:l=>w(l),children:[e.jsx(fe,{children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"claude",children:"Claude"}),e.jsx(V,{value:"codex",children:"Codex"}),e.jsx(V,{value:"gemini",children:"Gemini"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"name",children:[n({id:"apiSettings.common.name"}),e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(N,{id:"name",value:P,onChange:l=>F(l.target.value),placeholder:n({id:"apiSettings.cliSettings.namePlaceholder"}),className:Y.name?"border-destructive":"",maxLength:32}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.nameFormatHint"})}),Y.name&&e.jsx("p",{className:"text-sm text-destructive",children:Y.name})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"description",children:n({id:"apiSettings.common.description"})}),e.jsx(Ke,{id:"description",value:H,onChange:l=>k(l.target.value),placeholder:n({id:"apiSettings.cliSettings.descriptionPlaceholder"}),rows:2})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"enabled",checked:I,onCheckedChange:C}),e.jsx(m,{htmlFor:"enabled",className:"cursor-pointer",children:n({id:"apiSettings.common.enableThis"})})]})]}),D==="claude"&&e.jsxs(e.Fragment,{children:[e.jsxs(at,{value:K,onValueChange:l=>g(l),className:"w-full",children:[e.jsxs(it,{className:"grid w-full grid-cols-2",children:[e.jsx(Es,{value:"provider-based",children:n({id:"apiSettings.cliSettings.providerBased"})}),e.jsx(Es,{value:"direct",children:n({id:"apiSettings.cliSettings.direct"})})]}),e.jsxs(Ts,{value:"provider-based",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(m,{htmlFor:"providerId",children:[n({id:"apiSettings.common.provider"}),e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(ve,{value:c,onValueChange:A,children:[e.jsx(fe,{className:Y.providerId?"border-destructive":"",children:e.jsx(Se,{placeholder:n({id:"apiSettings.cliSettings.selectProvider"})})}),e.jsx(Ne,{children:j.map(l=>e.jsx(V,{value:l.id,children:l.name},l.id))})]}),Y.providerId&&e.jsx("p",{className:"text-sm text-destructive",children:Y.providerId})]}),es&&e.jsxs("div",{className:"p-4 bg-muted/50 rounded-lg space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:es.name}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[n({id:"apiSettings.common.type"}),": ",es.type]}),es.apiBase&&e.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[n({id:"apiSettings.providers.apiBaseUrl"}),": ",es.apiBase]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"model-pb",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"model-pb",value:ce,onChange:l=>B(l.target.value),placeholder:""})]})]}),e.jsxs(Ts,{value:"direct",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"authToken",children:n({id:"apiSettings.cliSettings.authToken"})}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"authToken",type:_?"text":"password",value:L,onChange:l=>z(l.target.value),placeholder:"sk-ant-...",className:Y.direct?"border-destructive pr-10":"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>b(!_),children:_?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"baseUrl",children:n({id:"apiSettings.cliSettings.baseUrl"})}),e.jsx(N,{id:"baseUrl",value:y,onChange:l=>S(l.target.value),placeholder:"https://api.anthropic.com",className:Y.direct?"border-destructive":""})]}),Y.direct&&e.jsx("p",{className:"text-sm text-destructive",children:Y.direct}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"model-direct",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"model-direct",value:ce,onChange:l=>B(l.target.value),placeholder:""})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"settingsFile",children:n({id:"apiSettings.cliSettings.settingsFile"})}),e.jsx(N,{id:"settingsFile",value:p,onChange:l=>O(l.target.value),placeholder:n({id:"apiSettings.cliSettings.settingsFilePlaceholder"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.settingsFileHint"})})]})]}),D==="codex"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Load Global Config"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Load config.toml and auth.json from global Codex config directory"})]}),e.jsx(f,{type:"button",variant:"outline",size:"sm",onClick:T,disabled:ds,children:ds?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Is,{className:"w-4 h-4 mr-2"}),"Load Config"]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-apikey",children:"API Key"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只需要填这里,下方 auth.json 会自动填充"}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"codex-apikey",type:G?"text":"password",value:X,onChange:l=>ne(l.target.value),placeholder:"sk-...",className:"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>q(!G),children:G?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-baseurl",children:"API 请求地址"}),e.jsx(N,{id:"codex-baseurl",value:ue,onChange:l=>le(l.target.value),placeholder:"https://your-api-endpoint.com/v1"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"填写兼容 OpenAI Response 格式的服务端点地址"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-model",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"codex-model",value:ce,onChange:l=>B(l.target.value),placeholder:""}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"指定使用的模型,将自动更新到 config.toml 中"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-profile",children:"Profile"}),e.jsx(N,{id:"codex-profile",value:be,onChange:l=>E(l.target.value),placeholder:"default"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Codex profile 名称,通过 --profile 参数传递"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"codex-authjson",children:"auth.json (JSON) *"}),e.jsx(Ke,{id:"codex-authjson",value:te,onChange:l=>{de(l.target.value),Y.authJson&&Le(J=>{const $={...J};return delete $.authJson,$})},placeholder:'{"OPENAI_API_KEY": "..."}',className:`font-mono text-sm ${Y.authJson?"border-destructive":""}`,rows:8}),Y.authJson&&e.jsx("p",{className:"text-xs text-destructive",children:Y.authJson}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Codex auth.json 配置内容"}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>{try{const l=JSON.stringify(JSON.parse(te),null,2);de(l)}catch{}},children:"格式化"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"codex-configtoml",children:"config.toml (TOML)"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{id:"writeCommon",checked:_e,onCheckedChange:Pe}),e.jsx(m,{htmlFor:"writeCommon",className:"text-xs cursor-pointer",children:"写入通用配置"})]})]}),e.jsx(Ke,{id:"codex-configtoml",value:Re,onChange:l=>Me(l.target.value),placeholder:"",className:"font-mono text-sm",rows:6})]})]}),D==="gemini"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Load Global Config"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Load settings.json from global Gemini config directory"})]}),e.jsx(f,{type:"button",variant:"outline",size:"sm",onClick:R,disabled:Ae,children:Ae?e.jsxs(e.Fragment,{children:[e.jsx(ss,{className:"w-4 h-4 mr-2 animate-spin"}),"Loading..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Is,{className:"w-4 h-4 mr-2"}),"Load Config"]})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"gemini-apikey",children:"API Key"}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{id:"gemini-apikey",type:ke?"text":"password",value:Ce,onChange:l=>we(l.target.value),placeholder:"AIza...",className:"pr-10"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:()=>Ee(!ke),children:ke?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"gemini-model",children:n({id:"apiSettings.cliSettings.model"})}),e.jsx(N,{id:"gemini-model",value:ce,onChange:l=>B(l.target.value),placeholder:""})]}),Te&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"gemini-settingsjson",children:"settings.json (Preview)"}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>{try{const l=JSON.stringify(JSON.parse(Te),null,2);je(l)}catch{}},children:"Format"})]}),e.jsx(Ke,{id:"gemini-settingsjson",value:Te,onChange:l=>je(l.target.value),placeholder:"{}",className:"font-mono text-sm",rows:8,readOnly:!0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Gemini settings.json content (read-only preview)"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"availableModels",children:n({id:"apiSettings.cliSettings.availableModels"})}),e.jsxs("div",{className:"flex flex-wrap gap-2 p-3 bg-muted/30 rounded-lg min-h-[60px]",children:[se.map(l=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-primary/10 text-primary rounded-md text-sm",children:[l,e.jsx("button",{type:"button",onClick:()=>Ws(l),className:"hover:text-destructive transition-colors",children:"×"})]},l)),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsx(N,{id:"availableModels",value:ae,onChange:l=>oe(l.target.value),onKeyDown:l=>{l.key==="Enter"&&(l.preventDefault(),Je())},placeholder:n({id:"apiSettings.cliSettings.availableModelsPlaceholder"}),className:"flex-1 min-w-[120px]"}),e.jsx(f,{type:"button",size:"sm",onClick:Je,variant:"outline",children:e.jsx(Be,{className:"w-4 h-4"})})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.availableModelsHint"})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"tags",children:n({id:"apiSettings.cliSettings.tags"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.tagsDescription"})}),e.jsxs("div",{className:"flex flex-wrap gap-2 p-3 bg-muted/30 rounded-lg min-h-[60px]",children:[me.map(l=>e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-primary/10 text-primary rounded-md text-sm",children:[l,e.jsx("button",{type:"button",onClick:()=>Ys(l),className:"hover:text-destructive transition-colors","aria-label":n({id:"apiSettings.cliSettings.removeTag"}),children:e.jsx(Ds,{className:"w-3 h-3"})})]},l)),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsx(N,{id:"tags",value:is,onChange:l=>Xe(l.target.value),onKeyDown:l=>{l.key==="Enter"&&(l.preventDefault(),Ps())},placeholder:n({id:"apiSettings.cliSettings.tagInputPlaceholder"}),className:"flex-1 min-w-[120px]"}),e.jsx(f,{type:"button",size:"sm",onClick:Ps,variant:"outline",children:e.jsx(ie,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("span",{className:"text-xs text-muted-foreground",children:[n({id:"apiSettings.cliSettings.predefinedTags"}),":"]}),Zs.map(l=>e.jsx("button",{type:"button",onClick:()=>{me.includes(l)||De([...me,l])},disabled:me.includes(l),className:"text-xs px-2 py-0.5 rounded border border-border hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:l},l))]})]}),e.jsxs("div",{className:"space-y-2 pt-4 border-t border-border",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{htmlFor:"configJson",className:"cursor-pointer",children:n({id:"apiSettings.cliSettings.configJson"})}),e.jsx(f,{type:"button",variant:"ghost",size:"sm",onClick:()=>ls(!Fe),children:Fe?n({id:"common.actions.close"}):n({id:"common.actions.expand"},{value:"JSON"})})]}),Fe&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Ke,{id:"configJson",value:He,onChange:l=>{ns(l.target.value),Y.configJson&&Le(J=>{const $={...J};return delete $.configJson,$})},placeholder:n({id:"apiSettings.cliSettings.configJsonPlaceholder"}),className:Y.configJson?"font-mono border-destructive":"font-mono",rows:8}),Y.configJson&&e.jsx("p",{className:"text-xs text-destructive",children:Y.configJson}),e.jsx("p",{className:"text-xs text-muted-foreground",children:n({id:"apiSettings.cliSettings.configJsonHint"})})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{variant:"outline",onClick:r,children:n({id:"common.actions.cancel"})}),e.jsx(f,{onClick:U,disabled:M||v,children:M||v?n({id:"common.actions.saving"}):e.jsxs(e.Fragment,{children:[e.jsx(Be,{className:"w-4 h-4 mr-2"}),n({id:"common.actions.save"})]})})]})]})})}function qt({entry:a,showKey:r,onToggleShowKey:t,onUpdate:s,onRemove:n,index:h}){const{formatMessage:o}=W();return e.jsxs("div",{className:"grid grid-cols-12 gap-2 items-start p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{className:"col-span-3",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyLabel"})}),e.jsx(N,{value:a.label||"",onChange:d=>s({label:d.target.value}),placeholder:`Key ${h+1}`,className:"mt-1"})]}),e.jsxs("div",{className:"col-span-4",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyValue"})}),e.jsxs("div",{className:"relative mt-1",children:[e.jsx(N,{type:r?"text":"password",value:a.key,onChange:d=>s({key:d.target.value}),placeholder:"sk-...",className:"pr-8"}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-2",onClick:t,children:r?e.jsx(ts,{className:"w-4 h-4"}):e.jsx(as,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(m,{className:"text-xs",children:o({id:"apiSettings.providers.keyWeight"})}),e.jsx(N,{type:"number",min:"0",max:"100",value:a.weight??1,onChange:d=>s({weight:parseInt(d.target.value)||1}),className:"mt-1"})]}),e.jsxs("div",{className:"col-span-2 flex items-center gap-2 pt-5",children:[e.jsx(Z,{checked:a.enabled,onCheckedChange:d=>s({enabled:d})}),e.jsx("span",{className:"text-sm text-muted-foreground",children:a.enabled?o({id:"apiSettings.common.enabled"}):o({id:"apiSettings.common.disabled"})})]}),e.jsx("div",{className:"col-span-1 flex items-center justify-end pt-5",children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:n,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})})]})}function Qt({open:a,onClose:r,providerId:t}){const{formatMessage:s}=W(),{success:n,error:h}=ge(),{providers:o}=Ze(),{updateProvider:d,isUpdating:M}=Ss(),u=o.find(b=>b.id===t),[v,j]=i.useState([]),[P,F]=i.useState(new Set),[H,k]=i.useState("simple-shuffle"),[I,C]=i.useState(!1),[D,w]=i.useState(60),[K,g]=i.useState(300),[c,A]=i.useState(5);i.useEffect(()=>{u&&(!!(u.apiKeys&&u.apiKeys.length>0)&&u.apiKeys?j(u.apiKeys.map(p=>({id:p.id,key:p.key,label:p.label,weight:p.weight,enabled:p.enabled}))):u.apiKey?j([{id:"key-1",key:u.apiKey,label:"Key 1",weight:1,enabled:!0}]):j([]),k(u.routingStrategy||"simple-shuffle"),u.healthCheck&&(C(u.healthCheck.enabled),w(u.healthCheck.intervalSeconds),g(u.healthCheck.cooldownSeconds),A(u.healthCheck.failureThreshold)))},[u,a]);const L=()=>{const b={id:`key-${Date.now()}`,key:"",label:`Key ${v.length+1}`,weight:1,enabled:!0};j([...v,b])},z=(b,p)=>{j(v.map((O,X)=>X===b?{...O,...p}:O))},y=b=>{j(v.filter((p,O)=>O!==b))},S=b=>{F(p=>{const O=new Set(p);return O.has(b)?O.delete(b):O.add(b),O})},_=async()=>{if(u)try{await d(t,{apiKey:"",apiKeys:v.map(b=>({id:b.id,key:b.key,label:b.label,weight:b.weight,enabled:b.enabled})),routingStrategy:H,healthCheck:I?{enabled:!0,intervalSeconds:D,cooldownSeconds:K,failureThreshold:c}:void 0}),n(s({id:"apiSettings.providers.actions.save"})),r()}catch{h(s({id:"apiSettings.providers.saveError"}))}};return u?e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s({id:"apiSettings.providers.multiKeySettings"})}),e.jsxs(We,{children:[s({id:"apiSettings.providers.description"}),": ",u.name]})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.actions.multiKeySettings"})}),e.jsxs(f,{type:"button",size:"sm",onClick:L,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addKey"})]})]}),v.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:v.map((b,p)=>e.jsx(qt,{entry:b,showKey:P.has(p),onToggleShowKey:()=>S(p),onUpdate:O=>z(p,O),onRemove:()=>y(p),index:p},b.id))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"routingStrategy",children:s({id:"apiSettings.providers.routingStrategy"})}),e.jsxs(ve,{value:H,onValueChange:b=>k(b),children:[e.jsx(fe,{id:"routingStrategy",children:e.jsx(Se,{})}),e.jsxs(Ne,{children:[e.jsx(V,{value:"simple-shuffle",children:s({id:"apiSettings.providers.simpleShuffle"})}),e.jsx(V,{value:"weighted",children:s({id:"apiSettings.providers.weighted"})}),e.jsx(V,{value:"latency-based",children:s({id:"apiSettings.providers.latencyBased"})}),e.jsx(V,{value:"cost-based",children:s({id:"apiSettings.providers.costBased"})}),e.jsx(V,{value:"least-busy",children:s({id:"apiSettings.providers.leastBusy"})})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(m,{children:s({id:"apiSettings.providers.healthCheck"})}),e.jsx(Z,{checked:I,onCheckedChange:C})]}),I&&e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"checkInterval",children:s({id:"apiSettings.providers.checkInterval"})}),e.jsx(N,{id:"checkInterval",type:"number",min:"10",value:D,onChange:b=>w(parseInt(b.target.value)||60)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"cooldownPeriod",children:s({id:"apiSettings.providers.cooldownPeriod"})}),e.jsx(N,{id:"cooldownPeriod",type:"number",min:"10",value:K,onChange:b=>g(parseInt(b.target.value)||300)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"failureThreshold",children:s({id:"apiSettings.providers.failureThreshold"})}),e.jsx(N,{id:"failureThreshold",type:"number",min:"1",value:c,onChange:b=>A(parseInt(b.target.value)||5)})]})]})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:M,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:_,disabled:M||v.length===0,children:[M?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})}):null}function As({model:a,onRemove:r,onUpdate:t,index:s}){const{formatMessage:n}=W(),[h,o]=i.useState(!1);return e.jsx("div",{className:"border rounded-lg p-3 space-y-2",children:e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsx(N,{value:a.name,onChange:d=>t("name",d.target.value),placeholder:n({id:"apiSettings.providers.modelId"}),className:"font-medium"}),e.jsx(N,{value:a.series||"",onChange:d=>t("series",d.target.value),placeholder:n({id:"apiSettings.providers.modelSeries"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(hs,{open:h,onOpenChange:o,children:[e.jsx(xs,{asChild:!0,children:e.jsx(f,{type:"button",variant:"ghost",size:"icon",children:h?e.jsx(os,{className:"w-4 h-4"}):e.jsx(ms,{className:"w-4 h-4"})})}),e.jsxs(gs,{className:"w-full",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2 mt-2 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(m,{className:"text-xs",children:n({id:"apiSettings.providers.contextWindow"})}),e.jsx(N,{type:"number",value:a.contextWindow||"",onChange:d=>t("contextWindow",parseInt(d.target.value)||void 0),placeholder:"200000"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(m,{className:"text-xs",children:n({id:"apiSettings.providers.description"})}),e.jsx(N,{value:a.description||"",onChange:d=>t("description",d.target.value),placeholder:"Optional description"})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mt-2",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.streaming,onCheckedChange:d=>t("streaming",d),id:`streaming-${s}`}),e.jsx(m,{htmlFor:`streaming-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.streaming"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.functionCalling,onCheckedChange:d=>t("functionCalling",d),id:`fc-${s}`}),e.jsx(m,{htmlFor:`fc-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.functionCalling"})})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Z,{checked:a.vision,onCheckedChange:d=>t("vision",d),id:`vision-${s}`}),e.jsx(m,{htmlFor:`vision-${s}`,className:"text-xs cursor-pointer",children:n({id:"apiSettings.providers.vision"})})]})]})]})]}),e.jsx(f,{type:"button",variant:"ghost",size:"icon",onClick:r,className:"text-destructive",children:e.jsx(ye,{className:"w-4 h-4"})})]})]})})}function Wt({open:a,onClose:r,providerId:t}){const{formatMessage:s}=W(),{success:n,error:h}=ge(),{providers:o}=Ze(),{updateProvider:d,isUpdating:M}=Ss(),u=o.find(g=>g.id===t),[v,j]=i.useState([]),[P,F]=i.useState([]);i.useEffect(()=>{u&&(u.llmModels&&j(u.llmModels.map(g=>({id:g.id,name:g.name,series:g.series,description:g.description}))),u.embeddingModels&&F(u.embeddingModels.map(g=>({id:g.id,name:g.name,series:g.series,description:g.description}))))},[u,a]);const H=()=>{const g={id:`llm-${Date.now()}`,name:"",series:""};j([...v,g])},k=g=>{j(v.filter((c,A)=>A!==g))},I=(g,c,A)=>{j(v.map((L,z)=>z===g?{...L,[c]:A}:L))},C=()=>{const g={id:`emb-${Date.now()}`,name:"",series:""};F([...P,g])},D=g=>{F(P.filter((c,A)=>A!==g))},w=(g,c,A)=>{F(P.map((L,z)=>z===g?{...L,[c]:A}:L))},K=async()=>{if(u)try{const g=new Date().toISOString();await d(t,{llmModels:v.filter(c=>c.name.trim()).map(c=>({id:c.id,name:c.name,type:"llm",series:c.series||c.name.split("-")[0],enabled:!0,createdAt:g,updatedAt:g})),embeddingModels:P.filter(c=>c.name.trim()).map(c=>({id:c.id,name:c.name,type:"embedding",series:c.series||c.name.split("-")[0],enabled:!0,createdAt:g,updatedAt:g}))}),n(s({id:"apiSettings.providers.actions.save"})),r()}catch{h(s({id:"apiSettings.providers.saveError"}))}};return u?e.jsx($e,{open:a,onOpenChange:r,children:e.jsxs(Ge,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(qe,{children:[e.jsx(Qe,{children:s({id:"apiSettings.providers.actions.manageModels"})}),e.jsxs(We,{children:[s({id:"apiSettings.providers.description"}),": ",u.name]})]}),e.jsxs("div",{className:"space-y-6 py-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.llmModels"})}),e.jsx(ee,{variant:"secondary",children:v.length})]}),e.jsxs(f,{type:"button",size:"sm",onClick:H,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addLlmModel"})]})]}),v.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:v.map((g,c)=>e.jsx(As,{model:g,onRemove:()=>k(c),onUpdate:(A,L)=>I(c,A,L),index:c},g.id))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s({id:"apiSettings.providers.embeddingModels"})}),e.jsx(ee,{variant:"secondary",children:P.length})]}),e.jsxs(f,{type:"button",size:"sm",onClick:C,children:[e.jsx(ie,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.providers.addEmbeddingModel"})]})]}),P.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:s({id:"apiSettings.providers.noModels"})}):e.jsx("div",{className:"space-y-2",children:P.map((g,c)=>e.jsx(As,{model:g,onRemove:()=>D(c),onUpdate:(A,L)=>w(c,A,L),index:c},g.id))})]})]}),e.jsxs(Ye,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:r,disabled:M,children:s({id:"apiSettings.common.cancel"})}),e.jsxs(f,{onClick:K,disabled:M,children:[M?e.jsx(xe,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(Be,{className:"w-4 h-4 mr-2"}),s({id:"apiSettings.common.save"})]})]})]})}):null}function xa(){const{formatMessage:a}=W(),{success:r,error:t}=ge(),[s,n]=i.useState("providers"),h=Pt(),{providers:o}=Ze(),{endpoints:d}=Ls(),{pools:M}=zs(),{cliSettings:u}=Rs(),[v,j]=i.useState(!1),[P,F]=i.useState(null),[H,k]=i.useState(!1),[I,C]=i.useState(null),[D,w]=i.useState(!1),[K,g]=i.useState(null),[c,A]=i.useState(!1),[L,z]=i.useState(null),[y,S]=i.useState(!1),[_,b]=i.useState(null),[p,O]=i.useState(!1),[X,ne]=i.useState(null),ue=i.useMemo(()=>o.find(B=>B.id===P)||null,[o,P]),le=i.useMemo(()=>d.find(B=>B.id===I)||null,[d,I]),be=i.useMemo(()=>M.find(B=>B.id===K)||null,[M,K]),E=i.useMemo(()=>u.find(B=>B.id===L)||null,[u,L]),G=()=>{F(null),j(!0)},q=B=>{F(B),j(!0)},te=()=>{j(!1),F(null)},de=()=>{C(null),k(!0)},Re=B=>{C(B),k(!0)},Me=()=>{k(!1),C(null)},_e=()=>{g(null),w(!0)},Pe=B=>{g(B),w(!0)},Ce=()=>{w(!1),g(null)},we=()=>{z(null),A(!0)},ke=B=>{z(B),A(!0)},Ee=()=>{A(!1),z(null)},Te=B=>{b(B),S(!0)},je=()=>{S(!1),b(null)},Ae=B=>{ne(B),O(!0)},Ie=()=>{O(!1),ne(null)},ce=async B=>{var re;const se=((re=o.find(ae=>ae.id===B))==null?void 0:re.name)??B;try{const ae=await h.mutateAsync(),oe=[se,ae.yamlPath??ae.message].filter(Boolean);r(a({id:"apiSettings.messages.configSynced"}),oe.length>0?oe.join(`
4
4
  `):void 0)}catch{t(a({id:"apiSettings.providers.saveError"}))}};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-foreground flex items-center gap-2",children:[e.jsx(dt,{className:"w-6 h-6 text-primary"}),a({id:"apiSettings.title"})]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:a({id:"apiSettings.description"})})]}),e.jsxs(f,{variant:"outline",onClick:()=>window.location.reload(),children:[e.jsx(rt,{className:"w-4 h-4 mr-2"}),a({id:"common.actions.refresh"})]})]}),e.jsx(ct,{value:s,onValueChange:B=>n(B),tabs:[{value:"providers",label:a({id:"apiSettings.tabs.providers"})},{value:"endpoints",label:a({id:"apiSettings.tabs.endpoints"})},{value:"cache",label:a({id:"apiSettings.tabs.cache"})},{value:"modelPools",label:a({id:"apiSettings.tabs.modelPools"})},{value:"cliSettings",label:a({id:"apiSettings.tabs.cliSettings"})}]}),s==="providers"&&e.jsx("div",{className:"mt-4",children:e.jsx(Ft,{onAddProvider:G,onEditProvider:q,onMultiKeySettings:Te,onSyncToCodexLens:ce,onManageModels:Ae})}),s==="endpoints"&&e.jsx("div",{className:"mt-4",children:e.jsx(Lt,{onAddEndpoint:de,onEditEndpoint:Re})}),s==="cache"&&e.jsx("div",{className:"mt-4",children:e.jsx(Rt,{})}),s==="modelPools"&&e.jsx("div",{className:"mt-4",children:e.jsx(Ht,{onAddPool:_e,onEditPool:Pe})}),s==="cliSettings"&&e.jsx("div",{className:"mt-4",children:e.jsx($t,{onAddCliSettings:we,onEditCliSettings:ke})}),e.jsx(At,{open:v,onClose:te,provider:ue}),e.jsx(zt,{open:H,onClose:Me,endpoint:le}),e.jsx(Jt,{open:D,onClose:Ce,pool:be}),e.jsx(Gt,{open:c,onClose:Ee,cliSettings:E}),e.jsx(Qt,{open:y,onClose:je,providerId:_||""}),e.jsx(Wt,{open:p,onClose:Ie,providerId:X||""})]})}export{xa as ApiSettingsPage,xa as default};
5
- //# sourceMappingURL=ApiSettingsPage-DlCbXxTz.js.map
5
+ //# sourceMappingURL=ApiSettingsPage-DGpjiNVu.js.map