@kaitranntt/ccs 7.71.0-dev.1 → 7.71.0-dev.10

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 (261) hide show
  1. package/README.md +34 -0
  2. package/config/base-codebuddy.settings.json +10 -0
  3. package/config/base-cursor.settings.json +10 -0
  4. package/config/base-gitlab.settings.json +10 -0
  5. package/config/base-kilo.settings.json +10 -0
  6. package/dist/auth/profile-detector.d.ts +2 -3
  7. package/dist/auth/profile-detector.d.ts.map +1 -1
  8. package/dist/auth/profile-detector.js +19 -19
  9. package/dist/auth/profile-detector.js.map +1 -1
  10. package/dist/ccs.js +66 -4
  11. package/dist/ccs.js.map +1 -1
  12. package/dist/cliproxy/accounts/email-account-identity.d.ts.map +1 -1
  13. package/dist/cliproxy/accounts/email-account-identity.js +22 -2
  14. package/dist/cliproxy/accounts/email-account-identity.js.map +1 -1
  15. package/dist/cliproxy/auth/auth-types.d.ts +10 -0
  16. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  17. package/dist/cliproxy/auth/auth-types.js +32 -0
  18. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  19. package/dist/cliproxy/auth/gitlab-pat-response.d.ts +9 -0
  20. package/dist/cliproxy/auth/gitlab-pat-response.d.ts.map +1 -0
  21. package/dist/cliproxy/auth/gitlab-pat-response.js +64 -0
  22. package/dist/cliproxy/auth/gitlab-pat-response.js.map +1 -0
  23. package/dist/cliproxy/auth/kiro-import.js +1 -1
  24. package/dist/cliproxy/auth/kiro-import.js.map +1 -1
  25. package/dist/cliproxy/auth/oauth-handler.d.ts +3 -0
  26. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  27. package/dist/cliproxy/auth/oauth-handler.js +120 -4
  28. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  29. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  30. package/dist/cliproxy/binary/lifecycle.js +12 -1
  31. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  32. package/dist/cliproxy/binary-manager.d.ts +5 -1
  33. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  34. package/dist/cliproxy/binary-manager.js +10 -2
  35. package/dist/cliproxy/binary-manager.js.map +1 -1
  36. package/dist/cliproxy/config/env-builder.d.ts +5 -0
  37. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  38. package/dist/cliproxy/config/env-builder.js +56 -4
  39. package/dist/cliproxy/config/env-builder.js.map +1 -1
  40. package/dist/cliproxy/config/path-resolver.d.ts +21 -0
  41. package/dist/cliproxy/config/path-resolver.d.ts.map +1 -1
  42. package/dist/cliproxy/config/path-resolver.js +42 -2
  43. package/dist/cliproxy/config/path-resolver.js.map +1 -1
  44. package/dist/cliproxy/executor/index.d.ts +1 -0
  45. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  46. package/dist/cliproxy/executor/index.js +32 -2
  47. package/dist/cliproxy/executor/index.js.map +1 -1
  48. package/dist/cliproxy/model-config.js +4 -4
  49. package/dist/cliproxy/model-config.js.map +1 -1
  50. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
  51. package/dist/cliproxy/provider-capabilities.js +48 -0
  52. package/dist/cliproxy/provider-capabilities.js.map +1 -1
  53. package/dist/cliproxy/quota-fetcher-claude-normalizer.d.ts +1 -5
  54. package/dist/cliproxy/quota-fetcher-claude-normalizer.d.ts.map +1 -1
  55. package/dist/cliproxy/quota-fetcher-claude-normalizer.js +33 -6
  56. package/dist/cliproxy/quota-fetcher-claude-normalizer.js.map +1 -1
  57. package/dist/cliproxy/quota-fetcher-claude.d.ts +2 -2
  58. package/dist/cliproxy/quota-fetcher-claude.d.ts.map +1 -1
  59. package/dist/cliproxy/quota-fetcher-claude.js +18 -32
  60. package/dist/cliproxy/quota-fetcher-claude.js.map +1 -1
  61. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  62. package/dist/cliproxy/quota-fetcher-codex.js +2 -0
  63. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  64. package/dist/cliproxy/quota-types.d.ts +2 -2
  65. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  66. package/dist/cliproxy/service-manager.d.ts.map +1 -1
  67. package/dist/cliproxy/service-manager.js +4 -1
  68. package/dist/cliproxy/service-manager.js.map +1 -1
  69. package/dist/cliproxy/types.d.ts +11 -3
  70. package/dist/cliproxy/types.d.ts.map +1 -1
  71. package/dist/cliproxy/types.js +8 -1
  72. package/dist/cliproxy/types.js.map +1 -1
  73. package/dist/commands/command-catalog.d.ts +2 -1
  74. package/dist/commands/command-catalog.d.ts.map +1 -1
  75. package/dist/commands/command-catalog.js +21 -4
  76. package/dist/commands/command-catalog.js.map +1 -1
  77. package/dist/commands/completion-backend.d.ts.map +1 -1
  78. package/dist/commands/completion-backend.js +4 -0
  79. package/dist/commands/completion-backend.js.map +1 -1
  80. package/dist/commands/cursor-command-display.d.ts.map +1 -1
  81. package/dist/commands/cursor-command-display.js +43 -30
  82. package/dist/commands/cursor-command-display.js.map +1 -1
  83. package/dist/commands/cursor-command.d.ts.map +1 -1
  84. package/dist/commands/cursor-command.js +30 -13
  85. package/dist/commands/cursor-command.js.map +1 -1
  86. package/dist/commands/help-command.d.ts +2 -0
  87. package/dist/commands/help-command.d.ts.map +1 -1
  88. package/dist/commands/help-command.js +55 -2
  89. package/dist/commands/help-command.js.map +1 -1
  90. package/dist/commands/index.d.ts +1 -0
  91. package/dist/commands/index.d.ts.map +1 -1
  92. package/dist/commands/index.js +3 -1
  93. package/dist/commands/index.js.map +1 -1
  94. package/dist/commands/proxy-command.d.ts +2 -0
  95. package/dist/commands/proxy-command.d.ts.map +1 -0
  96. package/dist/commands/proxy-command.js +156 -0
  97. package/dist/commands/proxy-command.js.map +1 -0
  98. package/dist/commands/root-command-router.d.ts.map +1 -1
  99. package/dist/commands/root-command-router.js +7 -0
  100. package/dist/commands/root-command-router.js.map +1 -1
  101. package/dist/config/reserved-names.d.ts +1 -1
  102. package/dist/config/reserved-names.d.ts.map +1 -1
  103. package/dist/config/reserved-names.js +10 -0
  104. package/dist/config/reserved-names.js.map +1 -1
  105. package/dist/config/unified-config-loader.d.ts.map +1 -1
  106. package/dist/config/unified-config-loader.js +19 -0
  107. package/dist/config/unified-config-loader.js.map +1 -1
  108. package/dist/config/unified-config-types.d.ts +14 -0
  109. package/dist/config/unified-config-types.d.ts.map +1 -1
  110. package/dist/config/unified-config-types.js +11 -1
  111. package/dist/config/unified-config-types.js.map +1 -1
  112. package/dist/cursor/constants.d.ts +3 -0
  113. package/dist/cursor/constants.d.ts.map +1 -1
  114. package/dist/cursor/constants.js +26 -1
  115. package/dist/cursor/constants.js.map +1 -1
  116. package/dist/cursor/cursor-anthropic-response.d.ts +1 -6
  117. package/dist/cursor/cursor-anthropic-response.d.ts.map +1 -1
  118. package/dist/cursor/cursor-anthropic-response.js +3 -186
  119. package/dist/cursor/cursor-anthropic-response.js.map +1 -1
  120. package/dist/cursor/cursor-daemon-entry.js +2 -2
  121. package/dist/cursor/cursor-daemon-entry.js.map +1 -1
  122. package/dist/cursor/cursor-profile-executor.js +4 -4
  123. package/dist/cursor/cursor-profile-executor.js.map +1 -1
  124. package/dist/cursor/cursor-runtime-probe.js +3 -3
  125. package/dist/cursor/cursor-runtime-probe.js.map +1 -1
  126. package/dist/glmt/sse-parser.d.ts.map +1 -1
  127. package/dist/glmt/sse-parser.js +46 -41
  128. package/dist/glmt/sse-parser.js.map +1 -1
  129. package/dist/management/shared-manager.d.ts +2 -0
  130. package/dist/management/shared-manager.d.ts.map +1 -1
  131. package/dist/management/shared-manager.js +25 -10
  132. package/dist/management/shared-manager.js.map +1 -1
  133. package/dist/proxy/index.d.ts +8 -0
  134. package/dist/proxy/index.d.ts.map +1 -0
  135. package/dist/proxy/index.js +24 -0
  136. package/dist/proxy/index.js.map +1 -0
  137. package/dist/proxy/profile-router.d.ts +28 -0
  138. package/dist/proxy/profile-router.d.ts.map +1 -0
  139. package/dist/proxy/profile-router.js +43 -0
  140. package/dist/proxy/profile-router.js.map +1 -0
  141. package/dist/proxy/proxy-daemon-entry.d.ts +2 -0
  142. package/dist/proxy/proxy-daemon-entry.d.ts.map +1 -0
  143. package/dist/proxy/proxy-daemon-entry.js +68 -0
  144. package/dist/proxy/proxy-daemon-entry.js.map +1 -0
  145. package/dist/proxy/proxy-daemon-paths.d.ts +6 -0
  146. package/dist/proxy/proxy-daemon-paths.d.ts.map +1 -0
  147. package/dist/proxy/proxy-daemon-paths.js +43 -0
  148. package/dist/proxy/proxy-daemon-paths.js.map +1 -0
  149. package/dist/proxy/proxy-daemon-state.d.ts +18 -0
  150. package/dist/proxy/proxy-daemon-state.d.ts.map +1 -0
  151. package/dist/proxy/proxy-daemon-state.js +92 -0
  152. package/dist/proxy/proxy-daemon-state.js.map +1 -0
  153. package/dist/proxy/proxy-daemon.d.ts +26 -0
  154. package/dist/proxy/proxy-daemon.d.ts.map +1 -0
  155. package/dist/proxy/proxy-daemon.js +350 -0
  156. package/dist/proxy/proxy-daemon.js.map +1 -0
  157. package/dist/proxy/proxy-env.d.ts +3 -0
  158. package/dist/proxy/proxy-env.d.ts.map +1 -0
  159. package/dist/proxy/proxy-env.js +26 -0
  160. package/dist/proxy/proxy-env.js.map +1 -0
  161. package/dist/proxy/request-router.d.ts +12 -0
  162. package/dist/proxy/request-router.d.ts.map +1 -0
  163. package/dist/proxy/request-router.js +163 -0
  164. package/dist/proxy/request-router.js.map +1 -0
  165. package/dist/proxy/routing-config.d.ts +10 -0
  166. package/dist/proxy/routing-config.d.ts.map +1 -0
  167. package/dist/proxy/routing-config.js +79 -0
  168. package/dist/proxy/routing-config.js.map +1 -0
  169. package/dist/proxy/server/http-helpers.d.ts +8 -0
  170. package/dist/proxy/server/http-helpers.d.ts.map +1 -0
  171. package/dist/proxy/server/http-helpers.js +73 -0
  172. package/dist/proxy/server/http-helpers.js.map +1 -0
  173. package/dist/proxy/server/messages-route.d.ts +12 -0
  174. package/dist/proxy/server/messages-route.d.ts.map +1 -0
  175. package/dist/proxy/server/messages-route.js +208 -0
  176. package/dist/proxy/server/messages-route.js.map +1 -0
  177. package/dist/proxy/server/proxy-server.d.ts +12 -0
  178. package/dist/proxy/server/proxy-server.d.ts.map +1 -0
  179. package/dist/proxy/server/proxy-server.js +110 -0
  180. package/dist/proxy/server/proxy-server.js.map +1 -0
  181. package/dist/proxy/transformers/request-transformer.d.ts +52 -0
  182. package/dist/proxy/transformers/request-transformer.d.ts.map +1 -0
  183. package/dist/proxy/transformers/request-transformer.js +254 -0
  184. package/dist/proxy/transformers/request-transformer.js.map +1 -0
  185. package/dist/proxy/transformers/sse-stream-transformer.d.ts +11 -0
  186. package/dist/proxy/transformers/sse-stream-transformer.d.ts.map +1 -0
  187. package/dist/proxy/transformers/sse-stream-transformer.js +199 -0
  188. package/dist/proxy/transformers/sse-stream-transformer.js.map +1 -0
  189. package/dist/proxy/upstream-url.d.ts +3 -0
  190. package/dist/proxy/upstream-url.d.ts.map +1 -0
  191. package/dist/proxy/upstream-url.js +35 -0
  192. package/dist/proxy/upstream-url.js.map +1 -0
  193. package/dist/shared/claude-extension-setup.js +1 -1
  194. package/dist/shared/claude-extension-setup.js.map +1 -1
  195. package/dist/targets/droid-provider.d.ts.map +1 -1
  196. package/dist/targets/droid-provider.js +2 -0
  197. package/dist/targets/droid-provider.js.map +1 -1
  198. package/dist/types/config.d.ts +13 -0
  199. package/dist/types/config.d.ts.map +1 -1
  200. package/dist/types/config.js.map +1 -1
  201. package/dist/types/index.d.ts +1 -1
  202. package/dist/types/index.d.ts.map +1 -1
  203. package/dist/types/index.js.map +1 -1
  204. package/dist/ui/assets/{accounts-B8EmUjf7.js → accounts-Cr7W1buT.js} +1 -1
  205. package/dist/ui/assets/{alert-dialog-zvnFuSZG.js → alert-dialog-C96SrxIc.js} +1 -1
  206. package/dist/ui/assets/{api-vTHvDFg5.js → api-DYkus27c.js} +1 -1
  207. package/dist/ui/assets/{auth-section-Dg3AdWQR.js → auth-section-CxMIfDdS.js} +1 -1
  208. package/dist/ui/assets/{backups-section-CuRlCk7U.js → backups-section-2mpHmgVy.js} +1 -1
  209. package/dist/ui/assets/{channels-ByIXpMal.js → channels-D525HeAb.js} +1 -1
  210. package/dist/ui/assets/{checkbox-DoV2JinM.js → checkbox-CQ1Ps6GL.js} +1 -1
  211. package/dist/ui/assets/{claude-extension-B-Ofp87Z.js → claude-extension-Etkm5mj8.js} +1 -1
  212. package/dist/ui/assets/cliproxy-CtGOikbg.js +3 -0
  213. package/dist/ui/assets/{cliproxy-ai-providers-BVOtMT7b.js → cliproxy-ai-providers-OsVlLpCW.js} +1 -1
  214. package/dist/ui/assets/{cliproxy-control-panel-qL0R878z.js → cliproxy-control-panel-Ds5WBaJL.js} +1 -1
  215. package/dist/ui/assets/{codex-BCHZ-0dx.js → codex-Cjj2T2eA.js} +1 -1
  216. package/dist/ui/assets/{confirm-dialog-BcfzKHj3.js → confirm-dialog-BWtF62KB.js} +1 -1
  217. package/dist/ui/assets/{copilot-Dti40Uv-.js → copilot-jL0eEQoq.js} +1 -1
  218. package/dist/ui/assets/cursor-CCc4tTX_.js +1 -0
  219. package/dist/ui/assets/{droid-BmuIeDFh.js → droid-DqCUCvdJ.js} +2 -2
  220. package/dist/ui/assets/{globalenv-section-CGbpkbpW.js → globalenv-section-psU6xwvx.js} +1 -1
  221. package/dist/ui/assets/{health-DryU1jzv.js → health-ChHRngKH.js} +1 -1
  222. package/dist/ui/assets/{index-Cu--MLG0.js → index-CIIjSQmj.js} +1 -1
  223. package/dist/ui/assets/{index-DUCkRc_D.js → index-CsS3wNix.js} +1 -1
  224. package/dist/ui/assets/index-CsgUrwXk.js +1 -0
  225. package/dist/ui/assets/index-DzJi9m-K.css +1 -0
  226. package/dist/ui/assets/{index-B_vdNMI1.js → index-SYCXM7Jq.js} +1 -1
  227. package/dist/ui/assets/{index-Dgu-LYP_.js → index-a2T7PPUI.js} +1 -1
  228. package/dist/ui/assets/index-lHI_E9S9.js +72 -0
  229. package/dist/ui/assets/{logs-CtIgaS7y.js → logs-DntALG8B.js} +1 -1
  230. package/dist/ui/assets/{masked-input-Dm8T-Vtr.js → masked-input-CYdjMOZg.js} +1 -1
  231. package/dist/ui/assets/providers/codebuddy.png +0 -0
  232. package/dist/ui/assets/providers/cursor.svg +5 -0
  233. package/dist/ui/assets/providers/gitlab.svg +22 -0
  234. package/dist/ui/assets/providers/kilo.png +0 -0
  235. package/dist/ui/assets/{proxy-status-widget-BXghaDz7.js → proxy-status-widget-CLsv7grw.js} +1 -1
  236. package/dist/ui/assets/{raw-json-settings-editor-panel-DhhcWn5Q.js → raw-json-settings-editor-panel-BZlH8urA.js} +1 -1
  237. package/dist/ui/assets/{searchable-select-DiGUiefs.js → searchable-select-D-ry9mQV.js} +1 -1
  238. package/dist/ui/assets/{separator-DnQqlaL0.js → separator-DKvhcyfD.js} +1 -1
  239. package/dist/ui/assets/{shared-BPuiJsYO.js → shared-Z5QeA443.js} +1 -1
  240. package/dist/ui/assets/{table-BDsTJlxT.js → table-DHcccdh4.js} +1 -1
  241. package/dist/ui/assets/{updates-DQxYQBCf.js → updates-B78utNho.js} +1 -1
  242. package/dist/ui/index.html +2 -2
  243. package/dist/utils/hooks/image-analysis-backend-resolver.js +1 -1
  244. package/dist/utils/hooks/image-analysis-backend-resolver.js.map +1 -1
  245. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  246. package/dist/web-server/routes/cliproxy-auth-routes.js +124 -1
  247. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  248. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  249. package/dist/web-server/routes/config-routes.js +3 -0
  250. package/dist/web-server/routes/config-routes.js.map +1 -1
  251. package/dist/web-server/routes/index.js +1 -0
  252. package/dist/web-server/routes/index.js.map +1 -1
  253. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  254. package/dist/web-server/routes/settings-routes.js +8 -0
  255. package/dist/web-server/routes/settings-routes.js.map +1 -1
  256. package/package.json +1 -1
  257. package/dist/ui/assets/cliproxy-Bhu0JvIb.js +0 -3
  258. package/dist/ui/assets/cursor-BG0Y8Z5F.js +0 -1
  259. package/dist/ui/assets/index-B1mN7ZR-.js +0 -72
  260. package/dist/ui/assets/index-BBVoDJnl.js +0 -1
  261. package/dist/ui/assets/index-BMC5Tudw.css +0 -1
@@ -1,4 +1,4 @@
1
- import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as j}from"./react-vendor-CNOkPC89.js";import{a as Q,bm as ee,bn as se,bo as te,Q as ae,R as re,U as ne,B as $,be as S,bf as M,bg as L,d as I,I as le,n as B,c as U,C as ie,b as de}from"./index-B1mN7ZR-.js";import{a3 as ce,aa as oe,b7 as me,T as E,R as T,F as he,au as ue,w as xe}from"./icons-KVCk4_U8.js";import"./tanstack-CrmUhA7Z.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function Se(){const{t:s}=Q(),[a,l]=j.useState("commands"),t={commands:s("sharedPage.commands"),skills:s("sharedPage.skills"),agents:s("sharedPage.agents")},[r,d]=j.useState(""),[n,o]=j.useState(null),{data:c,isError:h,error:p,refetch:w}=ee(),{data:m,isLoading:x,isFetching:y,isError:g,error:q,refetch:D}=se(a),N=m?.items??[],C=r.trim().toLowerCase(),b=r.trim(),u=j.useMemo(()=>{const i=m?.items??[];return C?i.filter(v=>[v.name,v.description,v.path].some(Y=>Y.toLowerCase().includes(C))):i},[m,C]),f=j.useMemo(()=>u.length===0?null:n?u.find(i=>i.path===n)??u[0]:u[0],[u,n]),{data:P,isLoading:O,isError:_,error:W,refetch:V}=te(a,f?.path??null),z=[{id:"commands",label:t.commands,icon:ce,count:c?.commands??0},{id:"skills",label:t.skills,icon:oe,count:c?.skills??0},{id:"agents",label:t.agents,icon:me,count:c?.agents??0}],H=z.reduce((i,v)=>i+v.count,0),K=!x&&!g&&N.length===0,Z=!x&&!g&&N.length>0&&u.length===0,G=A(p,"Shared item totals could not be loaded. Listing still works."),J=A(q,`Unable to fetch shared ${a}. Please try again.`),X=A(W,`Unable to load content for ${f?.name??"selected item"}.`);return e.jsxs("div",{className:"h-full overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"p-6 pb-4 space-y-3",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:s("sharedPage.title")}),e.jsx("p",{className:"text-muted-foreground",children:s("sharedPage.subtitle")})]}),e.jsx(ae,{value:a,onValueChange:i=>{l(i),d(""),o(null)},children:e.jsx(re,{className:"h-auto flex-wrap justify-start",children:z.map(i=>e.jsxs(ne,{value:i.id,className:"flex items-center gap-2",children:[e.jsx(i.icon,{className:"w-4 h-4"}),e.jsx("span",{children:i.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",i.count,")"]})]},i.id))})})]}),e.jsxs("div",{className:"flex flex-col gap-2 lg:items-end",children:[e.jsxs("div",{className:"grid w-full gap-2 sm:w-auto sm:min-w-[340px] sm:grid-cols-3",children:[e.jsx(F,{label:s("sharedPage.totalShared"),value:H}),e.jsx(F,{label:t[a],value:N.length}),e.jsx(F,{label:s("sharedPage.visible"),value:u.length})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx($,{variant:"secondary",children:s("sharedPage.markdownDetail")}),b?e.jsxs($,{variant:"outline",children:[s("sharedPage.filterPrefix")," ",b]}):null]})]})]}),c&&!c.symlinkStatus.valid&&e.jsxs(S,{variant:"warning",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.configurationRequired")}),e.jsxs(L,{children:[c.symlinkStatus.message,". Run `ccs sync` to configure."]})]}),h&&e.jsxs(S,{variant:"info",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.countsUnavailable")}),e.jsxs(L,{children:[e.jsx("p",{children:G}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{w()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryCounts")]})})]})]})]}),e.jsx("div",{className:"flex-1 min-h-0 px-6 pb-6",children:e.jsx("div",{className:"h-full rounded-lg border overflow-hidden bg-background",children:e.jsxs("div",{className:"grid h-full min-h-0 lg:grid-cols-[320px_minmax(0,1fr)]",children:[e.jsxs("div",{className:"min-h-0 border-b lg:border-b-0 lg:border-r flex flex-col bg-muted/30",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(he,{className:"w-4 h-4 text-primary shrink-0"}),e.jsx("h2",{className:"font-semibold truncate",children:t[a]})]}),!x&&!g&&e.jsxs($,{variant:"outline",className:"text-[10px] h-5",children:[u.length,"/",N.length]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(ue,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(le,{value:r,onChange:i=>d(i.target.value),placeholder:s("sharedPage.filterPlaceholder",{tab:a}),"aria-label":s("sharedPage.filterPlaceholder",{tab:a}),className:"pl-8 h-9"})]}),!x&&!g&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[s("sharedPage.showing",{visible:u.length,total:N.length,tab:a}),b?s("sharedPage.showingQuery",{query:b}):"",y?s("sharedPage.refreshing"):""]})]}),e.jsx(B,{className:"flex-1 min-h-0",children:x?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.loadingShared",{tab:a})}):g?e.jsx("div",{className:"p-4 text-center",children:e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(xe,{className:"w-10 h-10 mx-auto text-destructive/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("sharedPage.failedLoadShared",{tab:a})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:J})]}),e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{D()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retry")]})]})}):K?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noSharedFound",{tab:a})}):Z?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noMatch",{tab:a,query:b})}):e.jsx("div",{className:"p-2 space-y-1",children:u.map(i=>e.jsxs("button",{type:"button",onClick:()=>o(i.path),className:U("w-full text-left p-3 rounded-md border transition-colors",f?.path===i.path?"bg-primary/10 border-primary/30":"bg-background hover:bg-muted border-transparent"),children:[e.jsx("p",{className:"text-sm font-medium truncate",children:i.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:i.description}),e.jsx("p",{className:"text-[11px] text-muted-foreground/90 mt-2 font-mono truncate",children:i.path})]},`${i.type}:${i.path}`))})})]}),e.jsx("div",{className:"min-w-0 min-h-0 flex flex-col bg-muted/20",children:f?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-4 py-3 border-b bg-background",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{className:"text-base font-semibold truncate",children:f.name}),e.jsx($,{variant:"outline",className:"uppercase text-[10px]",children:f.type})]})}),e.jsxs("div",{className:"p-4 space-y-4 min-h-0 flex-1 flex flex-col",children:[e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[e.jsx(R,{label:s("sharedPage.pathLabel"),value:f.path,mono:!0}),P?.contentPath&&P.contentPath!==f.path&&e.jsx(R,{label:s("sharedPage.resolvedSource"),value:P.contentPath,mono:!0})]})}),e.jsx(ie,{className:"min-h-0 flex-1",children:e.jsx(de,{className:"p-0 h-full",children:e.jsx(B,{className:"h-full px-5 py-4",children:O?e.jsx("p",{className:"text-sm text-muted-foreground",children:s("sharedPage.loadingMarkdown")}):_?e.jsxs(S,{variant:"destructive",className:"max-w-2xl",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.failedLoadContent")}),e.jsxs(L,{children:[e.jsx("p",{children:X}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{V()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryContent")]})})]})]}):e.jsx(pe,{content:P?.content??""})})})})]})]}):e.jsx("div",{className:"min-h-[320px] flex items-center justify-center p-6 text-center text-muted-foreground",children:s("sharedPage.selectOne",{tab:a.slice(0,-1)})})})]})})})]})}function F({label:s,value:a}){return e.jsxs("div",{className:"rounded-md border bg-muted/30 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:"text-lg font-semibold leading-tight mt-1",children:a})]})}function R({label:s,value:a,mono:l=!1}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:U("text-xs mt-1 break-words",l?"font-mono":"text-sm"),children:a})]})}function A(s,a){if(!(s instanceof Error))return a;const l=s.message.toLowerCase();return l.includes("failed to fetch")||l.includes("network")?"Connection to dashboard server lost or restarting. Keep `ccs config` running, then retry.":s.message||a}function pe({content:s}){const{t:a}=Q(),l=j.useMemo(()=>fe(s),[s]);return l.blocks.length===0&&l.frontmatter.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:a("sharedPage.noMarkdown")}):e.jsxs("div",{className:"space-y-5",children:[l.frontmatter.length>0?e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:l.frontmatter.map(t=>e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:ge(t.key)}),e.jsx("p",{className:"text-xs mt-1 break-words",children:t.value})]},`${t.key}:${t.value}`))})}):null,l.blocks.map((t,r)=>{if(t.type==="heading"){const d=t.level<=1?"text-xl font-semibold":t.level===2?"text-lg font-semibold":"text-base font-semibold";return e.jsx("h3",{className:d,children:k(t.text,`heading-${r}`)},`heading-${r}`)}return t.type==="paragraph"?e.jsx("p",{className:"text-sm leading-6 whitespace-pre-wrap",children:k(t.text,`paragraph-${r}`)},`paragraph-${r}`):t.type==="unordered-list"?e.jsx("ul",{className:"list-disc pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ul-item-${r}-${n}`)},`ul-item-${r}-${n}`))},`ul-${r}`):t.type==="ordered-list"?e.jsx("ol",{className:"list-decimal pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ol-item-${r}-${n}`)},`ol-item-${r}-${n}`))},`ol-${r}`):e.jsxs("div",{className:"rounded-md border bg-muted/60 p-3 font-mono text-xs leading-5 overflow-x-auto",children:[t.language&&e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground mb-2",children:t.language}),e.jsx("pre",{className:"whitespace-pre-wrap break-words m-0",children:t.content})]},`code-${r}`)})]})}function ge(s){return s.replace(/[-_]/g," ")}function k(s,a){const l=/(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|\[([^\]]+)\]\(([^)]+)\))/g,t=[];let r=0,d=0;for(const n of s.matchAll(l)){const o=n[0],c=n.index??0;if(c>r&&t.push(s.slice(r,c)),n[2])t.push(e.jsx("strong",{className:"font-semibold",children:n[2]},`${a}-strong-${d}`));else if(n[3])t.push(e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[0.82em]",children:n[3]},`${a}-code-${d}`));else if(n[4])t.push(e.jsx("em",{className:"italic",children:n[4]},`${a}-em-${d}`));else if(n[5]&&n[6]){const h=n[6].trim();/^(https?:\/\/|mailto:)/i.test(h)?t.push(e.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"text-primary underline underline-offset-2 hover:opacity-90",children:n[5]},`${a}-link-${d}`)):t.push(n[5])}else t.push(o);r=c+o.length,d+=1}return r<s.length&&t.push(s.slice(r)),t.length===0?[s]:t}function fe(s){const a=s.replace(/\r\n/g,`
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{r as j}from"./react-vendor-CNOkPC89.js";import{a as Q,bn as ee,bo as se,bp as te,Q as ae,R as re,U as ne,B as $,bf as S,bg as M,bh as L,d as I,I as le,n as B,c as U,C as ie,b as de}from"./index-lHI_E9S9.js";import{a3 as ce,aa as oe,b7 as me,T as E,R as T,F as he,au as ue,w as xe}from"./icons-KVCk4_U8.js";import"./tanstack-CrmUhA7Z.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";function Se(){const{t:s}=Q(),[a,l]=j.useState("commands"),t={commands:s("sharedPage.commands"),skills:s("sharedPage.skills"),agents:s("sharedPage.agents")},[r,d]=j.useState(""),[n,o]=j.useState(null),{data:c,isError:h,error:p,refetch:w}=ee(),{data:m,isLoading:x,isFetching:y,isError:g,error:q,refetch:D}=se(a),N=m?.items??[],C=r.trim().toLowerCase(),b=r.trim(),u=j.useMemo(()=>{const i=m?.items??[];return C?i.filter(v=>[v.name,v.description,v.path].some(Y=>Y.toLowerCase().includes(C))):i},[m,C]),f=j.useMemo(()=>u.length===0?null:n?u.find(i=>i.path===n)??u[0]:u[0],[u,n]),{data:P,isLoading:O,isError:_,error:W,refetch:V}=te(a,f?.path??null),z=[{id:"commands",label:t.commands,icon:ce,count:c?.commands??0},{id:"skills",label:t.skills,icon:oe,count:c?.skills??0},{id:"agents",label:t.agents,icon:me,count:c?.agents??0}],H=z.reduce((i,v)=>i+v.count,0),K=!x&&!g&&N.length===0,Z=!x&&!g&&N.length>0&&u.length===0,G=A(p,"Shared item totals could not be loaded. Listing still works."),J=A(q,`Unable to fetch shared ${a}. Please try again.`),X=A(W,`Unable to load content for ${f?.name??"selected item"}.`);return e.jsxs("div",{className:"h-full overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"p-6 pb-4 space-y-3",children:[e.jsxs("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:s("sharedPage.title")}),e.jsx("p",{className:"text-muted-foreground",children:s("sharedPage.subtitle")})]}),e.jsx(ae,{value:a,onValueChange:i=>{l(i),d(""),o(null)},children:e.jsx(re,{className:"h-auto flex-wrap justify-start",children:z.map(i=>e.jsxs(ne,{value:i.id,className:"flex items-center gap-2",children:[e.jsx(i.icon,{className:"w-4 h-4"}),e.jsx("span",{children:i.label}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",i.count,")"]})]},i.id))})})]}),e.jsxs("div",{className:"flex flex-col gap-2 lg:items-end",children:[e.jsxs("div",{className:"grid w-full gap-2 sm:w-auto sm:min-w-[340px] sm:grid-cols-3",children:[e.jsx(F,{label:s("sharedPage.totalShared"),value:H}),e.jsx(F,{label:t[a],value:N.length}),e.jsx(F,{label:s("sharedPage.visible"),value:u.length})]}),e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx($,{variant:"secondary",children:s("sharedPage.markdownDetail")}),b?e.jsxs($,{variant:"outline",children:[s("sharedPage.filterPrefix")," ",b]}):null]})]})]}),c&&!c.symlinkStatus.valid&&e.jsxs(S,{variant:"warning",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.configurationRequired")}),e.jsxs(L,{children:[c.symlinkStatus.message,". Run `ccs sync` to configure."]})]}),h&&e.jsxs(S,{variant:"info",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.countsUnavailable")}),e.jsxs(L,{children:[e.jsx("p",{children:G}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{w()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryCounts")]})})]})]})]}),e.jsx("div",{className:"flex-1 min-h-0 px-6 pb-6",children:e.jsx("div",{className:"h-full rounded-lg border overflow-hidden bg-background",children:e.jsxs("div",{className:"grid h-full min-h-0 lg:grid-cols-[320px_minmax(0,1fr)]",children:[e.jsxs("div",{className:"min-h-0 border-b lg:border-b-0 lg:border-r flex flex-col bg-muted/30",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(he,{className:"w-4 h-4 text-primary shrink-0"}),e.jsx("h2",{className:"font-semibold truncate",children:t[a]})]}),!x&&!g&&e.jsxs($,{variant:"outline",className:"text-[10px] h-5",children:[u.length,"/",N.length]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(ue,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(le,{value:r,onChange:i=>d(i.target.value),placeholder:s("sharedPage.filterPlaceholder",{tab:a}),"aria-label":s("sharedPage.filterPlaceholder",{tab:a}),className:"pl-8 h-9"})]}),!x&&!g&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:[s("sharedPage.showing",{visible:u.length,total:N.length,tab:a}),b?s("sharedPage.showingQuery",{query:b}):"",y?s("sharedPage.refreshing"):""]})]}),e.jsx(B,{className:"flex-1 min-h-0",children:x?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.loadingShared",{tab:a})}):g?e.jsx("div",{className:"p-4 text-center",children:e.jsxs("div",{className:"space-y-3 py-8",children:[e.jsx(xe,{className:"w-10 h-10 mx-auto text-destructive/50"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:s("sharedPage.failedLoadShared",{tab:a})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:J})]}),e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{D()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retry")]})]})}):K?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noSharedFound",{tab:a})}):Z?e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:s("sharedPage.noMatch",{tab:a,query:b})}):e.jsx("div",{className:"p-2 space-y-1",children:u.map(i=>e.jsxs("button",{type:"button",onClick:()=>o(i.path),className:U("w-full text-left p-3 rounded-md border transition-colors",f?.path===i.path?"bg-primary/10 border-primary/30":"bg-background hover:bg-muted border-transparent"),children:[e.jsx("p",{className:"text-sm font-medium truncate",children:i.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:i.description}),e.jsx("p",{className:"text-[11px] text-muted-foreground/90 mt-2 font-mono truncate",children:i.path})]},`${i.type}:${i.path}`))})})]}),e.jsx("div",{className:"min-w-0 min-h-0 flex flex-col bg-muted/20",children:f?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-4 py-3 border-b bg-background",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h2",{className:"text-base font-semibold truncate",children:f.name}),e.jsx($,{variant:"outline",className:"uppercase text-[10px]",children:f.type})]})}),e.jsxs("div",{className:"p-4 space-y-4 min-h-0 flex-1 flex flex-col",children:[e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[e.jsx(R,{label:s("sharedPage.pathLabel"),value:f.path,mono:!0}),P?.contentPath&&P.contentPath!==f.path&&e.jsx(R,{label:s("sharedPage.resolvedSource"),value:P.contentPath,mono:!0})]})}),e.jsx(ie,{className:"min-h-0 flex-1",children:e.jsx(de,{className:"p-0 h-full",children:e.jsx(B,{className:"h-full px-5 py-4",children:O?e.jsx("p",{className:"text-sm text-muted-foreground",children:s("sharedPage.loadingMarkdown")}):_?e.jsxs(S,{variant:"destructive",className:"max-w-2xl",children:[e.jsx(E,{className:"h-4 w-4"}),e.jsx(M,{children:s("sharedPage.failedLoadContent")}),e.jsxs(L,{children:[e.jsx("p",{children:X}),e.jsx("div",{className:"mt-3",children:e.jsxs(I,{size:"sm",variant:"outline",onClick:()=>{V()},children:[e.jsx(T,{className:"w-4 h-4 mr-2"}),s("sharedPage.retryContent")]})})]})]}):e.jsx(pe,{content:P?.content??""})})})})]})]}):e.jsx("div",{className:"min-h-[320px] flex items-center justify-center p-6 text-center text-muted-foreground",children:s("sharedPage.selectOne",{tab:a.slice(0,-1)})})})]})})})]})}function F({label:s,value:a}){return e.jsxs("div",{className:"rounded-md border bg-muted/30 px-3 py-2",children:[e.jsx("p",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:"text-lg font-semibold leading-tight mt-1",children:a})]})}function R({label:s,value:a,mono:l=!1}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:s}),e.jsx("p",{className:U("text-xs mt-1 break-words",l?"font-mono":"text-sm"),children:a})]})}function A(s,a){if(!(s instanceof Error))return a;const l=s.message.toLowerCase();return l.includes("failed to fetch")||l.includes("network")?"Connection to dashboard server lost or restarting. Keep `ccs config` running, then retry.":s.message||a}function pe({content:s}){const{t:a}=Q(),l=j.useMemo(()=>fe(s),[s]);return l.blocks.length===0&&l.frontmatter.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:a("sharedPage.noMarkdown")}):e.jsxs("div",{className:"space-y-5",children:[l.frontmatter.length>0?e.jsx("div",{className:"rounded-md border bg-muted/35 p-3",children:e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:l.frontmatter.map(t=>e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:ge(t.key)}),e.jsx("p",{className:"text-xs mt-1 break-words",children:t.value})]},`${t.key}:${t.value}`))})}):null,l.blocks.map((t,r)=>{if(t.type==="heading"){const d=t.level<=1?"text-xl font-semibold":t.level===2?"text-lg font-semibold":"text-base font-semibold";return e.jsx("h3",{className:d,children:k(t.text,`heading-${r}`)},`heading-${r}`)}return t.type==="paragraph"?e.jsx("p",{className:"text-sm leading-6 whitespace-pre-wrap",children:k(t.text,`paragraph-${r}`)},`paragraph-${r}`):t.type==="unordered-list"?e.jsx("ul",{className:"list-disc pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ul-item-${r}-${n}`)},`ul-item-${r}-${n}`))},`ul-${r}`):t.type==="ordered-list"?e.jsx("ol",{className:"list-decimal pl-5 space-y-1 text-sm leading-6",children:t.items.map((d,n)=>e.jsx("li",{children:k(d,`ol-item-${r}-${n}`)},`ol-item-${r}-${n}`))},`ol-${r}`):e.jsxs("div",{className:"rounded-md border bg-muted/60 p-3 font-mono text-xs leading-5 overflow-x-auto",children:[t.language&&e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground mb-2",children:t.language}),e.jsx("pre",{className:"whitespace-pre-wrap break-words m-0",children:t.content})]},`code-${r}`)})]})}function ge(s){return s.replace(/[-_]/g," ")}function k(s,a){const l=/(\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*|\[([^\]]+)\]\(([^)]+)\))/g,t=[];let r=0,d=0;for(const n of s.matchAll(l)){const o=n[0],c=n.index??0;if(c>r&&t.push(s.slice(r,c)),n[2])t.push(e.jsx("strong",{className:"font-semibold",children:n[2]},`${a}-strong-${d}`));else if(n[3])t.push(e.jsx("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[0.82em]",children:n[3]},`${a}-code-${d}`));else if(n[4])t.push(e.jsx("em",{className:"italic",children:n[4]},`${a}-em-${d}`));else if(n[5]&&n[6]){const h=n[6].trim();/^(https?:\/\/|mailto:)/i.test(h)?t.push(e.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"text-primary underline underline-offset-2 hover:opacity-90",children:n[5]},`${a}-link-${d}`)):t.push(n[5])}else t.push(o);r=c+o.length,d+=1}return r<s.length&&t.push(s.slice(r)),t.length===0?[s]:t}function fe(s){const a=s.replace(/\r\n/g,`
2
2
  `).trim();if(!a)return{blocks:[],frontmatter:[]};let l=a;const t=[];if(l.startsWith(`---
3
3
  `)){const r=l.indexOf(`
4
4
  ---
@@ -1 +1 @@
1
- import{j as t}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as l}from"./index-B1mN7ZR-.js";function n({className:a,...e}){return t.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:t.jsx("table",{"data-slot":"table",className:l("w-full caption-bottom text-sm",a),...e})})}function c({className:a,...e}){return t.jsx("thead",{"data-slot":"table-header",className:l("[&_tr]:border-b",a),...e})}function d({className:a,...e}){return t.jsx("tbody",{"data-slot":"table-body",className:l("[&_tr:last-child]:border-0",a),...e})}function b({className:a,...e}){return t.jsx("tr",{"data-slot":"table-row",className:l("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...e})}function i({className:a,...e}){return t.jsx("th",{"data-slot":"table-head",className:l("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}function m({className:a,...e}){return t.jsx("td",{"data-slot":"table-cell",className:l("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}export{n as T,c as a,b,i as c,d,m as e};
1
+ import{j as t}from"./radix-ui-Zb8sVEtn.js";import"./react-vendor-CNOkPC89.js";import{c as l}from"./index-lHI_E9S9.js";function n({className:a,...e}){return t.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:t.jsx("table",{"data-slot":"table",className:l("w-full caption-bottom text-sm",a),...e})})}function c({className:a,...e}){return t.jsx("thead",{"data-slot":"table-header",className:l("[&_tr]:border-b",a),...e})}function d({className:a,...e}){return t.jsx("tbody",{"data-slot":"table-body",className:l("[&_tr:last-child]:border-0",a),...e})}function b({className:a,...e}){return t.jsx("tr",{"data-slot":"table-row",className:l("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",a),...e})}function i({className:a,...e}){return t.jsx("th",{"data-slot":"table-head",className:l("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}function m({className:a,...e}){return t.jsx("td",{"data-slot":"table-cell",className:l("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",a),...e})}export{n as T,c as a,b,i as c,d,m as e};
@@ -1 +1 @@
1
- import{j as e}from"./radix-ui-Zb8sVEtn.js";import{L,r as c}from"./react-vendor-CNOkPC89.js";import{a as x,B as P,c as S,W as M,d as u,x as U,C,j as v,k as N,_ as w,b as j,n as b,I as B}from"./index-B1mN7ZR-.js";import{a1 as F,$ as z,b8 as W,x as H,E as Q,Q as G,aa as K,C as q,b9 as J,au as V}from"./icons-KVCk4_U8.js";import"./tanstack-CrmUhA7Z.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";const Y={new:"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900/50 dark:bg-blue-900/20 dark:text-blue-300",stable:"border-green-200 bg-green-50 text-green-700 dark:border-green-900/50 dark:bg-green-900/20 dark:text-green-300",planned:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-300"};function Z({status:t,className:s}){const{t:r}=x(),i={new:r("updates.statusNew"),stable:r("updates.statusStable"),planned:r("updates.statusPlanned")};return e.jsx(P,{variant:"outline",className:S("font-medium",Y[t],s),children:i[t]})}const g={target:"Target CLI",cliproxy:"CLIProxy Provider","api-profiles":"API Profile",websearch:"WebSearch"},X=[{id:"codex-target-runtime-support",title:"Native Codex runtime support is live",summary:"Codex now participates as a first-class runtime target through ccs-codex, ccsx, ccsxp, or --target codex.",primaryAction:"Use Codex as a runtime target for native Codex sessions and Codex-routed CLIProxy flows.",publishedAt:"2026-03-28",status:"new",scopes:["target","cliproxy","api-profiles"],entryIds:["codex-target","codex-cliproxy"],highlights:["Use ccs-codex or ccsx for native Codex runs.","Use ccsxp for the built-in CCS Codex provider shortcut on native Codex.","Built-in Codex and Codex bridge profiles can run on native Codex with --target codex.","Saved default targets for API profiles and variants can now be claude, droid, or codex."],actions:[{id:"copy-codex-alias-command",label:"Open native Codex",description:"Launch Codex through the explicit CCS runtime alias.",type:"command",command:"ccs-codex"},{id:"copy-codex-provider-command",label:"Run built-in Codex on Codex",description:"Use the built-in Codex provider shortcut on native Codex.",type:"command",command:'ccsxp "your prompt"'},{id:"copy-codex-provider-command-explicit",label:"Run built-in Codex on Codex (explicit)",description:"Use the explicit built-in Codex provider route on native Codex.",type:"command",command:'ccs codex --target codex "your prompt"'},{id:"open-codex-dashboard",label:"Open Codex dashboard",description:"Review Codex runtime support, config layers, and dashboard setup flows.",type:"route",path:"/codex"}],routes:[{label:"Codex CLI",path:"/codex"}],commands:["ccs-codex","ccsx",'ccsxp "your prompt"','ccs codex --target codex "your prompt"']},{id:"droid-target-support",title:"Factory Droid support is live",summary:"API Profiles and CLIProxy variants now support Droid as a first-class execution target.",primaryAction:"Set Droid as your default execution target for non-Claude workflows.",publishedAt:"2026-02-25",status:"new",scopes:["target","api-profiles","cliproxy"],entryIds:["droid-target","custom-api-profiles","codex-cliproxy","agy-cliproxy"],highlights:["Set default target to Droid when creating or editing API Profiles.","Set default target to Droid for CLIProxy variants, including Codex and Antigravity flows.","Use ccs-droid as the explicit alias, with ccsd kept as the legacy shortcut."],actions:[{id:"open-api-profiles",label:"Set default target in API Profiles",description:"Open API Profiles and set Default Target to Droid for profiles you run often.",type:"route",path:"/providers"},{id:"open-cliproxy",label:"Set default target in CLIProxy variants",description:"Open CLIProxy variants and set target to Droid for Codex/Antigravity or custom variants.",type:"route",path:"/cliproxy"},{id:"copy-ccs-droid-command",label:"Run once with explicit Droid alias",description:"Use ccs-droid to force the Droid target with your current profile.",type:"command",command:"ccs-droid glm"},{id:"copy-target-override",label:"Run once with --target override",description:"Keep your default profile but force Droid for a single command.",type:"command",command:'ccs codex --target droid "your prompt"'}],routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs-droid glm",'ccs codex --target droid "your prompt"',"ccs cliproxy create mycodex --provider codex --target droid"]},{id:"updates-center-launch",title:"Updates Center is available for rollout tasks",summary:"A focused Updates Center exists for setup tasks and rollout guidance when you need it.",primaryAction:"Use this page only when needed for rollout tasks, then return to your normal workflow.",publishedAt:"2026-02-25",status:"new",scopes:["target","cliproxy","api-profiles","websearch"],entryIds:["droid-target","codex-cliproxy","custom-api-profiles","opencode-websearch"],highlights:["Single data source powers update content and integration mapping.","Notices can be tracked as new, seen, done, or dismissed.","Catalog covers target CLI, CLIProxy providers, and WebSearch integrations."],actions:[{id:"open-updates-page",label:"Open Updates Center when needed",description:"Review rollout tasks only when you want guided setup changes.",type:"route",path:"/updates"},{id:"copy-open-dashboard",label:"Open dashboard from terminal",description:"Re-open config dashboard anytime from CLI.",type:"command",command:"ccs config"}],routes:[{label:"Updates Center",path:"/updates"}],commands:["ccs config"]}],ee=[{id:"claude-target",name:"Claude Code",scope:"target",status:"stable",summary:"Default runtime target for all CCS profile types.",pillars:{baseUrl:"From profile settings (ANTHROPIC_BASE_URL)",auth:"From profile settings (ANTHROPIC_AUTH_TOKEN)",model:"From profile settings (ANTHROPIC_MODEL)"},routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs",'ccs glm "your prompt"']},{id:"droid-target",name:"Factory Droid",scope:"target",status:"new",summary:"First-class target for API Profiles and CLIProxy variants.",pillars:{baseUrl:"From profile or variant settings",auth:"From profile or variant settings",model:"From profile or variant settings"},routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs-droid glm","ccs km --target droid","ccs codex --target droid"],notes:"Use ccs-droid as the explicit runtime alias. Legacy ccsd still works."},{id:"codex-target",name:"Codex CLI",scope:"target",status:"new",summary:"First-class runtime target for native Codex sessions and Codex-routed CLIProxy flows.",pillars:{baseUrl:"Native ~/.codex config for default mode, transient -c overrides for CCS-backed routes",auth:"Native Codex auth for default mode, env_key injection for CCS-backed routes",model:"Native Codex config or routed Codex model mapping from CLIProxy"},routes:[{label:"Codex CLI",path:"/codex"}],commands:["ccs-codex","ccsx","ccs codex --target codex","ccs codex-api --target codex"],notes:"Saved default targets for API profiles and CLIProxy variants can now be claude, droid, or codex."},{id:"codex-cliproxy",name:"Codex via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed provider with configurable variant model and a native Codex shortcut.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:['ccsxp "your prompt"',"ccs codex --target codex","ccs codex","ccs cliproxy create mycodex --provider codex","ccs api create codex-api --cliproxy-provider codex"],notes:"Use ccsxp when you want the built-in Codex provider on native Codex without retyping --target codex."},{id:"gemini-cliproxy",name:"Gemini via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed Gemini provider with multi-account management.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:["ccs gemini","ccs cliproxy create mygem --provider gemini"]},{id:"agy-cliproxy",name:"Antigravity via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed Antigravity provider with variant target controls.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:["ccs agy","ccs cliproxy create myagy --provider agy --target droid"]},{id:"custom-api-profiles",name:"Custom API Profiles",scope:"api-profiles",status:"stable",summary:"Any Anthropic-compatible endpoint with per-profile target and model mapping.",pillars:{baseUrl:"User-defined endpoint",auth:"User-defined token/key",model:"User-defined model identifier"},routes:[{label:"API Profiles",path:"/providers"}],commands:["ccs api create myprofile",'ccs myprofile "your prompt"']},{id:"opencode-websearch",name:"OpenCode WebSearch",scope:"websearch",status:"stable",summary:"WebSearch provider surfaced in Settings for third-party profile workflows.",pillars:{baseUrl:"Managed by OpenCode CLI integration",auth:"Provider-specific (managed externally)",model:"Configurable in WebSearch settings"},routes:[{label:"Settings",path:"/settings"}],commands:["ccs config",'ccs codex "your prompt"'],notes:"Enable OpenCode in Settings > WebSearch to activate fallback search."}];function l(t,s,r){return M.t(t,{defaultValue:s,...r})}function te(){return{target:l("supportCatalog.scope.target",g.target),cliproxy:l("supportCatalog.scope.cliproxy",g.cliproxy),"api-profiles":l("supportCatalog.scope.apiProfiles",g["api-profiles"]),websearch:l("supportCatalog.scope.websearch",g.websearch)}}function se(t){return{...t,title:l(`supportCatalog.notice.${t.id}.title`,t.title),summary:l(`supportCatalog.notice.${t.id}.summary`,t.summary),primaryAction:l(`supportCatalog.notice.${t.id}.primaryAction`,t.primaryAction),highlights:t.highlights.map((s,r)=>l(`supportCatalog.notice.${t.id}.highlight.${r}`,s)),actions:t.actions.map(s=>({...s,label:l(`supportCatalog.notice.${t.id}.action.${s.id}.label`,s.label),description:l(`supportCatalog.notice.${t.id}.action.${s.id}.description`,s.description)})),routes:t.routes.map((s,r)=>({...s,label:l(`supportCatalog.notice.${t.id}.route.${r}.label`,s.label)}))}}function re(t){return{...t,name:l(`supportCatalog.entry.${t.id}.name`,t.name),summary:l(`supportCatalog.entry.${t.id}.summary`,t.summary),pillars:{baseUrl:l(`supportCatalog.entry.${t.id}.pillar.baseUrl`,t.pillars.baseUrl),auth:l(`supportCatalog.entry.${t.id}.pillar.auth`,t.pillars.auth),model:l(`supportCatalog.entry.${t.id}.pillar.model`,t.pillars.model)},routes:t.routes.map((s,r)=>({...s,label:l(`supportCatalog.entry.${t.id}.route.${r}.label`,s.label)})),notes:t.notes?l(`supportCatalog.entry.${t.id}.notes`,t.notes):t.notes}}function ae(){return X.map(se)}function oe(){return ee.map(re)}function ie(t){const s=new Map(oe().map(r=>[r.id,r]));return t.entryIds.map(r=>s.get(r)).filter(r=>!!r)}function O(t){const s=new Date(`${t}T00:00:00Z`);return Number.isNaN(s.getTime())?t:new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}).format(s)}const $="ccs:updates:notice-progress:v1";function de(t){return t==="new"?"new":"seen"}function m(t,s){return s[t.id]??de(t.status)}function A(t){return t!=="done"&&t!=="dismissed"}function le(){if(typeof window>"u")return{};try{const t=window.localStorage.getItem($);if(!t)return{};const s=JSON.parse(t);if(!s||typeof s!="object"||Array.isArray(s))return{};const r={};for(const[i,d]of Object.entries(s))typeof i=="string"&&(d==="new"||d==="seen"||d==="done"||d==="dismissed")&&(r[i]=d);return r}catch{return{}}}function ne(t){typeof window>"u"||window.localStorage.setItem($,JSON.stringify(t))}function D({state:t,className:s}){const{t:r}=x(),i={new:{label:r("updates.progressNeedsAction"),className:"border-amber-300/70 bg-amber-100/70 text-amber-800 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300",showDot:!0},seen:{label:r("updates.progressInReview"),className:"border-blue-300/70 bg-blue-100/70 text-blue-800 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300"},done:{label:r("updates.progressDone"),className:"border-emerald-300/70 bg-emerald-100/70 text-emerald-800 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300"},dismissed:{label:r("updates.progressDismissed"),className:"border-muted-foreground/20 bg-muted text-muted-foreground dark:border-muted-foreground/30"}}[t];return e.jsxs(P,{variant:"outline",className:S("gap-1.5 border text-[10px] font-medium",i.className,s),children:[i.showDot&&e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current"}),i.label]})}function ce({action:t}){const{t:s}=x();return e.jsxs("div",{className:"rounded-md border bg-muted/20 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-0.5",children:[e.jsx("p",{className:"text-sm font-medium",children:t.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t.description})]}),t.type==="route"&&t.path&&e.jsx(u,{size:"sm",asChild:!0,children:e.jsxs(L,{to:t.path,children:[s("updates.open"),e.jsx(F,{className:"h-3.5 w-3.5"})]})})]}),t.type==="command"&&t.command&&e.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1.5",children:[e.jsx(z,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"min-w-0 flex-1 truncate text-[11px]",children:t.command}),e.jsx(U,{value:t.command})]})]})}function pe({notice:t,progress:s,relatedEntries:r,onUpdateProgress:i}){const{t:d}=x(),f=te();return t?e.jsxs("div",{className:"flex-1 min-w-0 bg-background grid grid-rows-[auto_minmax(0,1fr)] overflow-hidden",children:[e.jsxs("div",{className:"border-b bg-background px-4 py-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight",children:t.title}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t.summary})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[s&&e.jsx(D,{state:s}),e.jsx(Z,{status:t.status})]})]}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(W,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:d("updates.published",{date:O(t.publishedAt)})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(u,{size:"sm",onClick:()=>i("done"),children:[e.jsx(H,{className:"h-4 w-4"}),d("updates.markDone")]}),e.jsxs(u,{size:"sm",variant:"outline",onClick:()=>i("dismissed"),children:[e.jsx(Q,{className:"h-4 w-4"}),d("updates.dismiss")]}),e.jsxs(u,{size:"sm",variant:"ghost",onClick:()=>i("new"),children:[e.jsx(G,{className:"h-4 w-4"}),d("updates.reopen")]})]})]}),e.jsx("div",{className:"min-h-0 p-4",children:e.jsxs("div",{className:"grid h-full gap-4 xl:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)] overflow-hidden",children:[e.jsxs(C,{className:"h-full overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-4 w-4 text-primary"}),e.jsx(N,{className:"text-base",children:d("updates.doNext")})]}),e.jsx(w,{children:t.primaryAction})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-3",children:t.actions.map(o=>e.jsx(ce,{action:o},`${t.id}-${o.id}`))})})})]}),e.jsxs("div",{className:"grid h-full grid-rows-[minmax(0,1fr)_minmax(0,1fr)] gap-4 overflow-hidden",children:[e.jsxs(C,{className:"overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:d("updates.impactedIntegrations")}),e.jsx(w,{children:d("updates.impactedDesc")})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-2",children:r.map(o=>e.jsxs("div",{className:"rounded-md border bg-muted/20 p-2.5",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:"min-w-0 truncate text-sm font-medium",children:o.name}),e.jsx(P,{variant:"outline",className:"h-5 px-1.5 text-[10px]",children:f[o.scope]})]}),e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[o.routes[0]&&e.jsx(u,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(L,{to:o.routes[0].path,children:o.routes[0].label})}),o.commands[0]&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-1.5",children:[e.jsx("code",{className:"truncate rounded bg-background px-1.5 py-0.5 text-[11px]",children:o.commands[0]}),e.jsx(U,{value:o.commands[0]})]})]})]},o.id))})})})]}),e.jsxs(C,{className:"overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:d("updates.whyMatters")}),e.jsx(w,{children:d("updates.whyMattersDesc")})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("ul",{className:"space-y-2 text-sm text-muted-foreground",children:t.highlights.map(o=>e.jsxs("li",{children:["- ",o]},`${t.id}-${o}`))})})})]})]})]})})]}):e.jsx("div",{className:"flex h-full items-center justify-center rounded-lg border border-dashed bg-muted/20 p-6",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:d("updates.noUpdates")})})}function me({notice:t,progress:s,selected:r,onSelect:i}){return e.jsxs("button",{type:"button",onClick:i,className:S("w-full rounded-lg border px-3 py-3 text-left transition-colors",r?"border-primary/30 bg-primary/10":"border-transparent bg-background/40 hover:border-border hover:bg-muted/70"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.title}),e.jsx("p",{className:"line-clamp-2 text-xs text-muted-foreground",children:t.primaryAction})]}),e.jsx(q,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"})]}),e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:O(t.publishedAt)}),e.jsx(D,{state:s})]})]})}function ue(t,s){return s?[t.title,t.summary,t.primaryAction,...t.highlights,...t.commands,...t.actions.map(i=>`${i.label} ${i.description} ${i.command||""}`),...t.routes.map(i=>i.label)].join(" ").toLowerCase().includes(s):!0}function je(){const{t}=x(),s=[...ae()].sort((a,n)=>n.publishedAt.localeCompare(a.publishedAt)),[r,i]=c.useState("inbox"),[d,f]=c.useState(""),[o,I]=c.useState(()=>le()),[k,E]=c.useState(null);c.useEffect(()=>{ne(o)},[o]);const h=c.useMemo(()=>{const a=d.trim().toLowerCase();return s.filter(n=>{const y=m(n,o);return ue(n,a)?r==="done"?y==="done":r==="inbox"?A(y):!0:!1})},[s,o,d,r]),p=c.useMemo(()=>{const a=r==="all"?s:h;return a.find(n=>n.id===k)??a[0]??null},[s,k,r,h]),R=a=>{E(a.id),I(n=>m(a,n)!=="new"?n:{...n,[a.id]:"seen"})},T=c.useMemo(()=>s.filter(a=>A(m(a,o))).length,[s,o]),_=c.useMemo(()=>s.filter(a=>m(a,o)==="done").length,[s,o]);return e.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden",children:[e.jsxs("div",{className:"w-80 border-r bg-muted/30 flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(J,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"font-semibold",children:t("updates.inboxTitle")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("updates.inboxSubtitle")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:t("updates.needsAction")}),e.jsx("p",{className:"text-base font-semibold",children:T})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:t("updates.doneCount")}),e.jsx("p",{className:"text-base font-semibold",children:_})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(V,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(B,{value:d,onChange:a=>f(a.target.value),placeholder:t("updates.searchPlaceholder"),className:"h-9 pl-8"})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{id:"inbox",label:t("updates.actionRequired")},{id:"done",label:t("updates.done")},{id:"all",label:t("updates.all")}].map(a=>e.jsx(u,{size:"sm",variant:r===a.id?"default":"outline",onClick:()=>i(a.id),children:a.label},a.id))})]}),e.jsx(b,{className:"flex-1",children:e.jsx("div",{className:"space-y-2 p-2",children:h.length===0?e.jsx("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground",children:t("updates.noNotices")}):h.map(a=>e.jsx(me,{notice:a,progress:m(a,o),selected:p?.id===a.id,onSelect:()=>R(a)},a.id))})})]}),e.jsx(pe,{notice:p,progress:p?m(p,o):null,relatedEntries:p?ie(p):[],onUpdateProgress:a=>{p&&I(n=>({...n,[p.id]:a}))}})]})}export{je as UpdatesPage};
1
+ import{j as e}from"./radix-ui-Zb8sVEtn.js";import{L,r as c}from"./react-vendor-CNOkPC89.js";import{a as x,B as P,c as S,W as M,d as u,x as U,C,j as v,k as N,_ as w,b as j,n as b,I as B}from"./index-lHI_E9S9.js";import{a1 as F,$ as z,b8 as W,x as H,E as Q,Q as G,aa as K,C as q,b9 as J,au as V}from"./icons-KVCk4_U8.js";import"./tanstack-CrmUhA7Z.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";const Y={new:"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900/50 dark:bg-blue-900/20 dark:text-blue-300",stable:"border-green-200 bg-green-50 text-green-700 dark:border-green-900/50 dark:bg-green-900/20 dark:text-green-300",planned:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-300"};function Z({status:t,className:s}){const{t:r}=x(),i={new:r("updates.statusNew"),stable:r("updates.statusStable"),planned:r("updates.statusPlanned")};return e.jsx(P,{variant:"outline",className:S("font-medium",Y[t],s),children:i[t]})}const g={target:"Target CLI",cliproxy:"CLIProxy Provider","api-profiles":"API Profile",websearch:"WebSearch"},X=[{id:"codex-target-runtime-support",title:"Native Codex runtime support is live",summary:"Codex now participates as a first-class runtime target through ccs-codex, ccsx, ccsxp, or --target codex.",primaryAction:"Use Codex as a runtime target for native Codex sessions and Codex-routed CLIProxy flows.",publishedAt:"2026-03-28",status:"new",scopes:["target","cliproxy","api-profiles"],entryIds:["codex-target","codex-cliproxy"],highlights:["Use ccs-codex or ccsx for native Codex runs.","Use ccsxp for the built-in CCS Codex provider shortcut on native Codex.","Built-in Codex and Codex bridge profiles can run on native Codex with --target codex.","Saved default targets for API profiles and variants can now be claude, droid, or codex."],actions:[{id:"copy-codex-alias-command",label:"Open native Codex",description:"Launch Codex through the explicit CCS runtime alias.",type:"command",command:"ccs-codex"},{id:"copy-codex-provider-command",label:"Run built-in Codex on Codex",description:"Use the built-in Codex provider shortcut on native Codex.",type:"command",command:'ccsxp "your prompt"'},{id:"copy-codex-provider-command-explicit",label:"Run built-in Codex on Codex (explicit)",description:"Use the explicit built-in Codex provider route on native Codex.",type:"command",command:'ccs codex --target codex "your prompt"'},{id:"open-codex-dashboard",label:"Open Codex dashboard",description:"Review Codex runtime support, config layers, and dashboard setup flows.",type:"route",path:"/codex"}],routes:[{label:"Codex CLI",path:"/codex"}],commands:["ccs-codex","ccsx",'ccsxp "your prompt"','ccs codex --target codex "your prompt"']},{id:"droid-target-support",title:"Factory Droid support is live",summary:"API Profiles and CLIProxy variants now support Droid as a first-class execution target.",primaryAction:"Set Droid as your default execution target for non-Claude workflows.",publishedAt:"2026-02-25",status:"new",scopes:["target","api-profiles","cliproxy"],entryIds:["droid-target","custom-api-profiles","codex-cliproxy","agy-cliproxy"],highlights:["Set default target to Droid when creating or editing API Profiles.","Set default target to Droid for CLIProxy variants, including Codex and Antigravity flows.","Use ccs-droid as the explicit alias, with ccsd kept as the legacy shortcut."],actions:[{id:"open-api-profiles",label:"Set default target in API Profiles",description:"Open API Profiles and set Default Target to Droid for profiles you run often.",type:"route",path:"/providers"},{id:"open-cliproxy",label:"Set default target in CLIProxy variants",description:"Open CLIProxy variants and set target to Droid for Codex/Antigravity or custom variants.",type:"route",path:"/cliproxy"},{id:"copy-ccs-droid-command",label:"Run once with explicit Droid alias",description:"Use ccs-droid to force the Droid target with your current profile.",type:"command",command:"ccs-droid glm"},{id:"copy-target-override",label:"Run once with --target override",description:"Keep your default profile but force Droid for a single command.",type:"command",command:'ccs codex --target droid "your prompt"'}],routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs-droid glm",'ccs codex --target droid "your prompt"',"ccs cliproxy create mycodex --provider codex --target droid"]},{id:"updates-center-launch",title:"Updates Center is available for rollout tasks",summary:"A focused Updates Center exists for setup tasks and rollout guidance when you need it.",primaryAction:"Use this page only when needed for rollout tasks, then return to your normal workflow.",publishedAt:"2026-02-25",status:"new",scopes:["target","cliproxy","api-profiles","websearch"],entryIds:["droid-target","codex-cliproxy","custom-api-profiles","opencode-websearch"],highlights:["Single data source powers update content and integration mapping.","Notices can be tracked as new, seen, done, or dismissed.","Catalog covers target CLI, CLIProxy providers, and WebSearch integrations."],actions:[{id:"open-updates-page",label:"Open Updates Center when needed",description:"Review rollout tasks only when you want guided setup changes.",type:"route",path:"/updates"},{id:"copy-open-dashboard",label:"Open dashboard from terminal",description:"Re-open config dashboard anytime from CLI.",type:"command",command:"ccs config"}],routes:[{label:"Updates Center",path:"/updates"}],commands:["ccs config"]}],ee=[{id:"claude-target",name:"Claude Code",scope:"target",status:"stable",summary:"Default runtime target for all CCS profile types.",pillars:{baseUrl:"From profile settings (ANTHROPIC_BASE_URL)",auth:"From profile settings (ANTHROPIC_AUTH_TOKEN)",model:"From profile settings (ANTHROPIC_MODEL)"},routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs",'ccs glm "your prompt"']},{id:"droid-target",name:"Factory Droid",scope:"target",status:"new",summary:"First-class target for API Profiles and CLIProxy variants.",pillars:{baseUrl:"From profile or variant settings",auth:"From profile or variant settings",model:"From profile or variant settings"},routes:[{label:"API Profiles",path:"/providers"},{label:"CLIProxy",path:"/cliproxy"}],commands:["ccs-droid glm","ccs km --target droid","ccs codex --target droid"],notes:"Use ccs-droid as the explicit runtime alias. Legacy ccsd still works."},{id:"codex-target",name:"Codex CLI",scope:"target",status:"new",summary:"First-class runtime target for native Codex sessions and Codex-routed CLIProxy flows.",pillars:{baseUrl:"Native ~/.codex config for default mode, transient -c overrides for CCS-backed routes",auth:"Native Codex auth for default mode, env_key injection for CCS-backed routes",model:"Native Codex config or routed Codex model mapping from CLIProxy"},routes:[{label:"Codex CLI",path:"/codex"}],commands:["ccs-codex","ccsx","ccs codex --target codex","ccs codex-api --target codex"],notes:"Saved default targets for API profiles and CLIProxy variants can now be claude, droid, or codex."},{id:"codex-cliproxy",name:"Codex via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed provider with configurable variant model and a native Codex shortcut.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:['ccsxp "your prompt"',"ccs codex --target codex","ccs codex","ccs cliproxy create mycodex --provider codex","ccs api create codex-api --cliproxy-provider codex"],notes:"Use ccsxp when you want the built-in Codex provider on native Codex without retyping --target codex."},{id:"gemini-cliproxy",name:"Gemini via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed Gemini provider with multi-account management.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:["ccs gemini","ccs cliproxy create mygem --provider gemini"]},{id:"agy-cliproxy",name:"Antigravity via CLIProxy",scope:"cliproxy",status:"stable",summary:"OAuth-backed Antigravity provider with variant target controls.",pillars:{baseUrl:"Managed by CLIProxy backend",auth:"OAuth account via CLIProxy auth flow",model:"Selectable per provider or variant"},routes:[{label:"CLIProxy",path:"/cliproxy"},{label:"Control Panel",path:"/cliproxy/control-panel"}],commands:["ccs agy","ccs cliproxy create myagy --provider agy --target droid"]},{id:"custom-api-profiles",name:"Custom API Profiles",scope:"api-profiles",status:"stable",summary:"Any Anthropic-compatible endpoint with per-profile target and model mapping.",pillars:{baseUrl:"User-defined endpoint",auth:"User-defined token/key",model:"User-defined model identifier"},routes:[{label:"API Profiles",path:"/providers"}],commands:["ccs api create myprofile",'ccs myprofile "your prompt"']},{id:"opencode-websearch",name:"OpenCode WebSearch",scope:"websearch",status:"stable",summary:"WebSearch provider surfaced in Settings for third-party profile workflows.",pillars:{baseUrl:"Managed by OpenCode CLI integration",auth:"Provider-specific (managed externally)",model:"Configurable in WebSearch settings"},routes:[{label:"Settings",path:"/settings"}],commands:["ccs config",'ccs codex "your prompt"'],notes:"Enable OpenCode in Settings > WebSearch to activate fallback search."}];function l(t,s,r){return M.t(t,{defaultValue:s,...r})}function te(){return{target:l("supportCatalog.scope.target",g.target),cliproxy:l("supportCatalog.scope.cliproxy",g.cliproxy),"api-profiles":l("supportCatalog.scope.apiProfiles",g["api-profiles"]),websearch:l("supportCatalog.scope.websearch",g.websearch)}}function se(t){return{...t,title:l(`supportCatalog.notice.${t.id}.title`,t.title),summary:l(`supportCatalog.notice.${t.id}.summary`,t.summary),primaryAction:l(`supportCatalog.notice.${t.id}.primaryAction`,t.primaryAction),highlights:t.highlights.map((s,r)=>l(`supportCatalog.notice.${t.id}.highlight.${r}`,s)),actions:t.actions.map(s=>({...s,label:l(`supportCatalog.notice.${t.id}.action.${s.id}.label`,s.label),description:l(`supportCatalog.notice.${t.id}.action.${s.id}.description`,s.description)})),routes:t.routes.map((s,r)=>({...s,label:l(`supportCatalog.notice.${t.id}.route.${r}.label`,s.label)}))}}function re(t){return{...t,name:l(`supportCatalog.entry.${t.id}.name`,t.name),summary:l(`supportCatalog.entry.${t.id}.summary`,t.summary),pillars:{baseUrl:l(`supportCatalog.entry.${t.id}.pillar.baseUrl`,t.pillars.baseUrl),auth:l(`supportCatalog.entry.${t.id}.pillar.auth`,t.pillars.auth),model:l(`supportCatalog.entry.${t.id}.pillar.model`,t.pillars.model)},routes:t.routes.map((s,r)=>({...s,label:l(`supportCatalog.entry.${t.id}.route.${r}.label`,s.label)})),notes:t.notes?l(`supportCatalog.entry.${t.id}.notes`,t.notes):t.notes}}function ae(){return X.map(se)}function oe(){return ee.map(re)}function ie(t){const s=new Map(oe().map(r=>[r.id,r]));return t.entryIds.map(r=>s.get(r)).filter(r=>!!r)}function O(t){const s=new Date(`${t}T00:00:00Z`);return Number.isNaN(s.getTime())?t:new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}).format(s)}const $="ccs:updates:notice-progress:v1";function de(t){return t==="new"?"new":"seen"}function m(t,s){return s[t.id]??de(t.status)}function A(t){return t!=="done"&&t!=="dismissed"}function le(){if(typeof window>"u")return{};try{const t=window.localStorage.getItem($);if(!t)return{};const s=JSON.parse(t);if(!s||typeof s!="object"||Array.isArray(s))return{};const r={};for(const[i,d]of Object.entries(s))typeof i=="string"&&(d==="new"||d==="seen"||d==="done"||d==="dismissed")&&(r[i]=d);return r}catch{return{}}}function ne(t){typeof window>"u"||window.localStorage.setItem($,JSON.stringify(t))}function D({state:t,className:s}){const{t:r}=x(),i={new:{label:r("updates.progressNeedsAction"),className:"border-amber-300/70 bg-amber-100/70 text-amber-800 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300",showDot:!0},seen:{label:r("updates.progressInReview"),className:"border-blue-300/70 bg-blue-100/70 text-blue-800 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300"},done:{label:r("updates.progressDone"),className:"border-emerald-300/70 bg-emerald-100/70 text-emerald-800 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300"},dismissed:{label:r("updates.progressDismissed"),className:"border-muted-foreground/20 bg-muted text-muted-foreground dark:border-muted-foreground/30"}}[t];return e.jsxs(P,{variant:"outline",className:S("gap-1.5 border text-[10px] font-medium",i.className,s),children:[i.showDot&&e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current"}),i.label]})}function ce({action:t}){const{t:s}=x();return e.jsxs("div",{className:"rounded-md border bg-muted/20 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-0.5",children:[e.jsx("p",{className:"text-sm font-medium",children:t.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t.description})]}),t.type==="route"&&t.path&&e.jsx(u,{size:"sm",asChild:!0,children:e.jsxs(L,{to:t.path,children:[s("updates.open"),e.jsx(F,{className:"h-3.5 w-3.5"})]})})]}),t.type==="command"&&t.command&&e.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1.5",children:[e.jsx(z,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"min-w-0 flex-1 truncate text-[11px]",children:t.command}),e.jsx(U,{value:t.command})]})]})}function pe({notice:t,progress:s,relatedEntries:r,onUpdateProgress:i}){const{t:d}=x(),f=te();return t?e.jsxs("div",{className:"flex-1 min-w-0 bg-background grid grid-rows-[auto_minmax(0,1fr)] overflow-hidden",children:[e.jsxs("div",{className:"border-b bg-background px-4 py-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight",children:t.title}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t.summary})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[s&&e.jsx(D,{state:s}),e.jsx(Z,{status:t.status})]})]}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(W,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:d("updates.published",{date:O(t.publishedAt)})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(u,{size:"sm",onClick:()=>i("done"),children:[e.jsx(H,{className:"h-4 w-4"}),d("updates.markDone")]}),e.jsxs(u,{size:"sm",variant:"outline",onClick:()=>i("dismissed"),children:[e.jsx(Q,{className:"h-4 w-4"}),d("updates.dismiss")]}),e.jsxs(u,{size:"sm",variant:"ghost",onClick:()=>i("new"),children:[e.jsx(G,{className:"h-4 w-4"}),d("updates.reopen")]})]})]}),e.jsx("div",{className:"min-h-0 p-4",children:e.jsxs("div",{className:"grid h-full gap-4 xl:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)] overflow-hidden",children:[e.jsxs(C,{className:"h-full overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-4 w-4 text-primary"}),e.jsx(N,{className:"text-base",children:d("updates.doNext")})]}),e.jsx(w,{children:t.primaryAction})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-3",children:t.actions.map(o=>e.jsx(ce,{action:o},`${t.id}-${o.id}`))})})})]}),e.jsxs("div",{className:"grid h-full grid-rows-[minmax(0,1fr)_minmax(0,1fr)] gap-4 overflow-hidden",children:[e.jsxs(C,{className:"overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:d("updates.impactedIntegrations")}),e.jsx(w,{children:d("updates.impactedDesc")})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-2",children:r.map(o=>e.jsxs("div",{className:"rounded-md border bg-muted/20 p-2.5",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:"min-w-0 truncate text-sm font-medium",children:o.name}),e.jsx(P,{variant:"outline",className:"h-5 px-1.5 text-[10px]",children:f[o.scope]})]}),e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[o.routes[0]&&e.jsx(u,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(L,{to:o.routes[0].path,children:o.routes[0].label})}),o.commands[0]&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-1.5",children:[e.jsx("code",{className:"truncate rounded bg-background px-1.5 py-0.5 text-[11px]",children:o.commands[0]}),e.jsx(U,{value:o.commands[0]})]})]})]},o.id))})})})]}),e.jsxs(C,{className:"overflow-hidden",children:[e.jsxs(v,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:d("updates.whyMatters")}),e.jsx(w,{children:d("updates.whyMattersDesc")})]}),e.jsx(j,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("ul",{className:"space-y-2 text-sm text-muted-foreground",children:t.highlights.map(o=>e.jsxs("li",{children:["- ",o]},`${t.id}-${o}`))})})})]})]})]})})]}):e.jsx("div",{className:"flex h-full items-center justify-center rounded-lg border border-dashed bg-muted/20 p-6",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:d("updates.noUpdates")})})}function me({notice:t,progress:s,selected:r,onSelect:i}){return e.jsxs("button",{type:"button",onClick:i,className:S("w-full rounded-lg border px-3 py-3 text-left transition-colors",r?"border-primary/30 bg-primary/10":"border-transparent bg-background/40 hover:border-border hover:bg-muted/70"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:t.title}),e.jsx("p",{className:"line-clamp-2 text-xs text-muted-foreground",children:t.primaryAction})]}),e.jsx(q,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"})]}),e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:O(t.publishedAt)}),e.jsx(D,{state:s})]})]})}function ue(t,s){return s?[t.title,t.summary,t.primaryAction,...t.highlights,...t.commands,...t.actions.map(i=>`${i.label} ${i.description} ${i.command||""}`),...t.routes.map(i=>i.label)].join(" ").toLowerCase().includes(s):!0}function je(){const{t}=x(),s=[...ae()].sort((a,n)=>n.publishedAt.localeCompare(a.publishedAt)),[r,i]=c.useState("inbox"),[d,f]=c.useState(""),[o,I]=c.useState(()=>le()),[k,E]=c.useState(null);c.useEffect(()=>{ne(o)},[o]);const h=c.useMemo(()=>{const a=d.trim().toLowerCase();return s.filter(n=>{const y=m(n,o);return ue(n,a)?r==="done"?y==="done":r==="inbox"?A(y):!0:!1})},[s,o,d,r]),p=c.useMemo(()=>{const a=r==="all"?s:h;return a.find(n=>n.id===k)??a[0]??null},[s,k,r,h]),R=a=>{E(a.id),I(n=>m(a,n)!=="new"?n:{...n,[a.id]:"seen"})},T=c.useMemo(()=>s.filter(a=>A(m(a,o))).length,[s,o]),_=c.useMemo(()=>s.filter(a=>m(a,o)==="done").length,[s,o]);return e.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden",children:[e.jsxs("div",{className:"w-80 border-r bg-muted/30 flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(J,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"font-semibold",children:t("updates.inboxTitle")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:t("updates.inboxSubtitle")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:t("updates.needsAction")}),e.jsx("p",{className:"text-base font-semibold",children:T})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:t("updates.doneCount")}),e.jsx("p",{className:"text-base font-semibold",children:_})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(V,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(B,{value:d,onChange:a=>f(a.target.value),placeholder:t("updates.searchPlaceholder"),className:"h-9 pl-8"})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{id:"inbox",label:t("updates.actionRequired")},{id:"done",label:t("updates.done")},{id:"all",label:t("updates.all")}].map(a=>e.jsx(u,{size:"sm",variant:r===a.id?"default":"outline",onClick:()=>i(a.id),children:a.label},a.id))})]}),e.jsx(b,{className:"flex-1",children:e.jsx("div",{className:"space-y-2 p-2",children:h.length===0?e.jsx("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground",children:t("updates.noNotices")}):h.map(a=>e.jsx(me,{notice:a,progress:m(a,o),selected:p?.id===a.id,onSelect:()=>R(a)},a.id))})})]}),e.jsx(pe,{notice:p,progress:p?m(p,o):null,relatedEntries:p?ie(p):[],onUpdateProgress:a=>{p&&I(n=>({...n,[p.id]:a}))}})]})}export{je as UpdatesPage};
@@ -24,7 +24,7 @@
24
24
  href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap"
25
25
  rel="stylesheet"
26
26
  />
27
- <script type="module" crossorigin src="/assets/index-B1mN7ZR-.js"></script>
27
+ <script type="module" crossorigin src="/assets/index-lHI_E9S9.js"></script>
28
28
  <link rel="modulepreload" crossorigin href="/assets/react-vendor-CNOkPC89.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/radix-ui-Zb8sVEtn.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/tanstack-CrmUhA7Z.js">
@@ -33,7 +33,7 @@
33
33
  <link rel="modulepreload" crossorigin href="/assets/utils-CzKF5WmX.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/form-utils-Bcoyqxpq.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/code-highlight-BRUf_pqB.js">
36
- <link rel="stylesheet" crossorigin href="/assets/index-BMC5Tudw.css">
36
+ <link rel="stylesheet" crossorigin href="/assets/index-DzJi9m-K.css">
37
37
  </head>
38
38
  <body>
39
39
  <div id="root"></div>
@@ -217,7 +217,7 @@ function resolveBackend(context, config, nativeSupport) {
217
217
  reason: null,
218
218
  };
219
219
  }
220
- if (profileType === 'cursor' || profileName === 'cursor') {
220
+ if (profileType === 'cursor') {
221
221
  return {
222
222
  backendId: null,
223
223
  backendDisplayName: null,
@@ -1 +1 @@
1
- {"version":3,"file":"image-analysis-backend-resolver.js","sourceRoot":"","sources":["../../../src/utils/hooks/image-analysis-backend-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-analysis-backend-resolver.js","sourceRoot":"","sources":["../../../src/utils/hooks/image-analysis-backend-resolver.ts"],"names":[],"mappings":";;;AAAA,4EAG2C;AAC3C,gFAI8C;AAC9C,gEAA4F;AAC5F,4EAAiF;AAIjF,gFAAsF;AAmFtF,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB;IACjB,8BAA8B;IAC9B,gCAAgC;IAChC,+BAA+B;CACvB,CAAC;AAEX,SAAS,0BAA0B,CAAC,OAAgB;IAClD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAA,iDAA2B,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAA,+CAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,IAAA,iDAA2B,EAAC,OAAO,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAA,+CAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA2C,EAC3C,YAAoB;IAEpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,sBAAsB,EAAE,CAAC;YACxD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,+BAA+B,CAC7C,KAAgC,EAChC,gBAAkC,EAAE;IAEpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,IAAA,+CAAuB,EAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAC9C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACpE,CAAC;IACF,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AA5BD,0EA4BC;AAED,SAAgB,+BAA+B,CAAC,MAA2B;IACzE,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAClF,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACxB,MAAM,iBAAiB,GAAG,+BAA+B,CACvD,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,oDAA6B,CAAC,eAAe,CAAC,CAC3D,CAAC;QACF,IAAI,CAAC,iBAAiB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjF,OAAO,GAAG,CAAC;QACb,CAAC;QAED,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IAEF,MAAM,yBAAyB,GAC7B,+BAA+B,CAC7B,MAAM,CAAC,gBAAgB,IAAI,oDAA6B,CAAC,gBAAgB,EACzE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACtC,IAAI,oDAA6B,CAAC,gBAAgB,CAAC;IAEtD,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,CACpF,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAG,+BAA+B,CACvD,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,kBAAkB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,GAAG,CAAC,kBAAkB,CAAC,GAAG,iBAAiB,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,yBAAyB;QAC3C,gBAAgB,EAAE,yBAAyB;KAC5C,CAAC;AACJ,CAAC;AA/CD,0EA+CC;AAED,SAAS,+BAA+B,CACtC,WAAmB,EACnB,MAA2B;IAE3B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,+BAA+B,CACpC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAwB;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,0CAAkB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,8CAAsB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,cAAc,CAAC,SAAwB;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,iBAAiB,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAuC,EACvC,aAAuB;IAEvB,OAAO,+BAA+B,CACpC,OAAO,CAAC,gBAAgB;QACtB,OAAO,CAAC,cAAc,EAAE,QAAQ;QAChC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS,CAAC,EACpF,aAAa,CACd,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAuC,EACvC,QAAuB;IAEvB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;IAClC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,IAAI,IAAA,0CAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAA,kCAAkB,EAAC,QAAQ,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IAC5D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAuB,EACvB,OAAsB;IAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,IAAI,IAAA,0CAAkB,EAAC,QAAQ,CAAC,IAAI,IAAA,wCAAwB,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,wDAA+B,EAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACrC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACrC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC;QACpC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAuC,EACvC,MAA2B;IAE3B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/E,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE/E,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,iBAAiB,GAAG,sDAAsD,CAAC;IAC7E,CAAC;SAAM,IAAI,kBAAkB,EAAE,CAAC;QAC9B,iBAAiB,GAAG,GAAG,YAAY,4BAA4B,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,iBAAiB,GAAG,8CAA8C,YAAY,OAAO,CAAC;IACxF,CAAC;IAED,OAAO;QACL,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,OAAuC,EACvC,MAA2B,EAC3B,aAA2C;IAE3C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,GACzF,OAAO,CAAC;IAEV,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,UAAU;YAC5B,MAAM,EAAE,oBAAoB;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,qBAAqB;YACvC,MAAM,EAAE,uEAAuE;SAChF,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACvC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,mBAAmB;YACrC,MAAM,EACJ,aAAa,CAAC,kBAAkB,KAAK,IAAI;gBACvC,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,IAAI,mDAAmD,oDAAoD;SACpJ,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,aAAa,GAAG,+BAA+B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3E,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,SAAS,EAAE,aAAa;YACxB,kBAAkB,EAAE,qBAAqB,CAAC,aAAa,CAAC;YACxD,gBAAgB,EAAE,iBAAiB;YACnC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,YAAY;YAC9B,MAAM,EACJ,qLAAqL;SACxL,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/F,OAAO;YACL,SAAS;YACT,kBAAkB,EAAE,qBAAqB,CAAC,SAAS,CAAC;YACpD,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,0BAA0B,GAAG,+BAA+B,CAChE,gBAAgB,EAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,0BAA0B,EAAE,CAAC;QAC/B,OAAO;YACL,SAAS,EAAE,0BAA0B;YACrC,kBAAkB,EAAE,qBAAqB,CAAC,0BAA0B,CAAC;YACrE,gBAAgB,EACd,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;gBACjD,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,WAAW,KAAK,0BAA0B;oBAC1C,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,kBAAkB;YAC1B,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,+BAA+B,CACnD,cAAc,EAAE,QAAQ;QACtB,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS,CAAC,EAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,SAAS,EAAE,aAAa;YACxB,kBAAkB,EAAE,qBAAqB,CAAC,aAAa,CAAC;YACxD,gBAAgB,EAAE,iBAAiB;YACnC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,YAAY;YAC9B,MAAM,EAAE,qFAAqF;SAC9F,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,+BAA+B,CACrD,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,kBAAkB,EAAE,qBAAqB,CAAC,eAAe,CAAC;YAC1D,gBAAgB,EAAE,kBAAkB;YACpC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,YAAY;QAC9B,MAAM,EAAE,yCAAyC;KAClD,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CACxC,OAAuC,EACvC,YAAiC,oDAA6B;IAE9D,MAAM,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS;QAChC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,iBAAiB,GACrB,MAAM,CAAC,OAAO;QACd,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAEzC,IAAI,MAAM,GAA4B,QAAQ,CAAC;IAC/C,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,UAAU,CAAC;QACpB,MAAM,KAAN,MAAM,GACJ,4FAA4F,EAAC;IACjG,CAAC;SAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,KAAN,MAAM,GAAK,yCAAyC,EAAC;IACvD,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,GAAG,0DAA0D,CAAC;IACtE,CAAC;SAAM,IACL,iBAAiB;QACjB,CAAC,OAAO,CAAC,aAAa,KAAK,KAAK,IAAI,OAAO,CAAC,mBAAmB,KAAK,KAAK,CAAC,EAC1E,CAAC;QACD,MAAM,GAAG,cAAc,CAAC;QACxB,MAAM;YACJ,OAAO,CAAC,mBAAmB,KAAK,KAAK;gBACnC,CAAC,CAAC,8CAA8C;gBAChD,CAAC,CAAC,2DAA2D,CAAC;IACpE,CAAC;SAAM,IACL,UAAU,CAAC,gBAAgB,KAAK,iBAAiB;QACjD,OAAO,CAAC,cAAc;QACtB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAC3F,CAAC;QACD,MAAM,GAAG,WAAW,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YAC9F,MAAM;gBACJ,qGAAqG,CAAC;QAC1G,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACrD,MAAM;gBACJ,qFAAqF,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM;gBACJ,0FAA0F,CAAC;QAC/F,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,CAAC,gBAAgB,KAAK,iBAAiB,EAAE,CAAC;QAC7D,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;QACnE,MAAM;QACN,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;QACjD,KAAK;QACL,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,MAAM;QACN,iBAAiB;QACjB,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,gBAAgB,CAAC,CAAC,CAAC,IAAI;QAClF,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;QACjD,iBAAiB,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,IAAI,IAAI;QACpE,oBAAoB,EAAE,OAAO,CAAC,cAAc,EAAE,oBAAoB,IAAI,IAAI;QAC1E,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI;QACxD,aAAa,EACX,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YACvE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,YAAY;QAClB,YAAY,EACV,UAAU,CAAC,SAAS,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAC,UAAU,CAAC,SAAS;YACtB,CAAC,CAAC,IAAI;QACV,eAAe,EACb,UAAU,CAAC,SAAS,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAC,IAAA,8CAAsB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,IAAI;QACV,UAAU,EACR,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YACvE,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,IAAI;QACV,cAAc,EAAE,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QACxE,WAAW,EACT,UAAU,CAAC,SAAS,IAAI,KAAK;YAC3B,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,IAAI;QACV,oBAAoB,EAClB,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa;QAC7F,sBAAsB,EACpB,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,KAAK;YAChD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,cAAc;gBACnD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,aAAa,CAAC,YAAY;QACxC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;QACxD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;QACpD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;KACnD,CAAC;AACJ,CAAC;AA5GD,gEA4GC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-auth-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cliproxy-auth-routes.ts"],"names":[],"mappings":"AA4CA,OAAO,EAOL,cAAc,EAIf,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAS7D,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6JxB,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBzC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,cAAc,CAAA;CAAE,GACxC,MAAM,GAAG,IAAI,CAmBf;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAK7E;AASD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,sBAAsB,CAAC,EAAE,MAAM,GAC9B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAqBxE;AAg5BD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"cliproxy-auth-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cliproxy-auth-routes.ts"],"names":[],"mappings":"AA8CA,OAAO,EAOL,cAAc,EAIf,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAS7D,QAAA,MAAM,MAAM,4CAAW,CAAC;AAkLxB,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACtD,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBzC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,cAAc,CAAA;CAAE,GACxC,MAAM,GAAG,IAAI,CAmBf;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAK7E;AASD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,sBAAsB,CAAC,EAAE,MAAM,GAC9B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAqBxE;AAyhCD,eAAe,MAAM,CAAC"}
@@ -10,9 +10,11 @@ const account_manager_1 = require("../../cliproxy/account-manager");
10
10
  const proxy_target_resolver_1 = require("../../cliproxy/proxy-target-resolver");
11
11
  const remote_auth_fetcher_1 = require("../../cliproxy/remote-auth-fetcher");
12
12
  const managed_model_prefixes_1 = require("../../cliproxy/managed-model-prefixes");
13
+ const quota_response_cache_1 = require("../../cliproxy/quota-response-cache");
13
14
  const unified_config_loader_1 = require("../../config/unified-config-loader");
14
15
  const kiro_import_1 = require("../../cliproxy/auth/kiro-import");
15
16
  const token_manager_1 = require("../../cliproxy/auth/token-manager");
17
+ const gitlab_pat_response_1 = require("../../cliproxy/auth/gitlab-pat-response");
16
18
  const auth_types_1 = require("../../cliproxy/auth/auth-types");
17
19
  const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
18
20
  const profile_detector_1 = require("../../auth/profile-detector");
@@ -85,6 +87,9 @@ function shouldKeepWaitingForLocalToken(state, pending, now = Date.now()) {
85
87
  const upstreamCompletedAt = pending.upstreamCompletedAt ?? markManualAuthUpstreamCompleted(state, now);
86
88
  return (upstreamCompletedAt !== null && now - upstreamCompletedAt < POLLED_AUTH_LOCAL_TOKEN_GRACE_MS);
87
89
  }
90
+ function invalidateQuotaForRegisteredAccount(account) {
91
+ (0, quota_response_cache_1.invalidateQuotaCache)(account.provider, account.id);
92
+ }
88
93
  function parseKiroMethod(raw) {
89
94
  if (raw === undefined || raw === null) {
90
95
  return { method: (0, auth_types_1.normalizeKiroAuthMethod)(), invalid: false };
@@ -114,6 +119,19 @@ function parseKiroIDCFlow(raw) {
114
119
  }
115
120
  return { flow: (0, auth_types_1.normalizeKiroIDCFlow)(normalized), invalid: false };
116
121
  }
122
+ function parseGitLabAuthMode(raw) {
123
+ if (raw === undefined || raw === null || raw === '') {
124
+ return { mode: 'oauth', invalid: false };
125
+ }
126
+ if (typeof raw !== 'string') {
127
+ return { mode: 'oauth', invalid: true };
128
+ }
129
+ const normalized = raw.trim().toLowerCase();
130
+ if (normalized === 'oauth' || normalized === 'pat') {
131
+ return { mode: normalized, invalid: false };
132
+ }
133
+ return { mode: 'oauth', invalid: true };
134
+ }
117
135
  function getKiroStartIDCValidationError(options) {
118
136
  if (options.kiroMethod !== 'idc') {
119
137
  return null;
@@ -447,6 +465,11 @@ router.post('/:provider/start', async (req, res) => {
447
465
  : undefined;
448
466
  const kiroIDCRegion = typeof requestBody.kiroIDCRegion === 'string' ? requestBody.kiroIDCRegion.trim() : undefined;
449
467
  const kiroIDCFlowRaw = requestBody.kiroIDCFlow;
468
+ const gitlabAuthModeRaw = requestBody.gitlabAuthMode;
469
+ const gitlabBaseUrl = typeof requestBody.gitlabBaseUrl === 'string' ? requestBody.gitlabBaseUrl.trim() : undefined;
470
+ const gitlabPersonalAccessToken = typeof requestBody.gitlabPersonalAccessToken === 'string'
471
+ ? requestBody.gitlabPersonalAccessToken.trim()
472
+ : undefined;
450
473
  const riskAcknowledgement = requestBody.riskAcknowledgement;
451
474
  const target = (0, proxy_target_resolver_1.getProxyTarget)();
452
475
  if (target.isRemote) {
@@ -457,6 +480,7 @@ router.post('/:provider/start', async (req, res) => {
457
480
  const nickname = nicknameRaw?.trim();
458
481
  const { method: kiroMethod, invalid: invalidKiroMethod } = parseKiroMethod(kiroMethodRaw);
459
482
  const { flow: kiroIDCFlow, invalid: invalidKiroIDCFlow } = parseKiroIDCFlow(kiroIDCFlowRaw);
483
+ const { mode: gitlabAuthMode, invalid: invalidGitLabAuthMode } = parseGitLabAuthMode(gitlabAuthModeRaw);
460
484
  // Validate provider
461
485
  if (!validProviders.includes(provider)) {
462
486
  res.status(400).json({ error: `Invalid provider: ${provider}` });
@@ -469,6 +493,13 @@ router.post('/:provider/start', async (req, res) => {
469
493
  });
470
494
  return;
471
495
  }
496
+ if (provider === 'gitlab' && invalidGitLabAuthMode) {
497
+ res.status(400).json({
498
+ error: 'Invalid gitlabAuthMode. Supported: oauth, pat',
499
+ code: 'INVALID_GITLAB_AUTH_MODE',
500
+ });
501
+ return;
502
+ }
472
503
  if (provider === 'kiro') {
473
504
  const kiroIDCValidationError = getKiroStartIDCValidationError({
474
505
  kiroMethod,
@@ -490,6 +521,73 @@ router.post('/:provider/start', async (req, res) => {
490
521
  return;
491
522
  }
492
523
  }
524
+ if (provider === 'gitlab' && gitlabAuthMode === 'pat') {
525
+ if (!gitlabPersonalAccessToken) {
526
+ res.status(400).json({
527
+ error: 'gitlabPersonalAccessToken is required when gitlabAuthMode=pat',
528
+ code: 'MISSING_GITLAB_PAT',
529
+ });
530
+ return;
531
+ }
532
+ try {
533
+ const localProvider = provider;
534
+ const knownTokenFiles = (0, token_manager_1.listProviderTokenSnapshots)(localProvider);
535
+ const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, '/v0/management/gitlab-auth-url'), {
536
+ method: 'POST',
537
+ headers: {
538
+ 'Content-Type': 'application/json',
539
+ ...(0, proxy_target_resolver_1.buildManagementHeaders)(target),
540
+ },
541
+ body: JSON.stringify({
542
+ ...(gitlabBaseUrl ? { base_url: gitlabBaseUrl } : {}),
543
+ personal_access_token: gitlabPersonalAccessToken,
544
+ }),
545
+ });
546
+ const responseBody = await response.text();
547
+ const parsedResponse = (0, gitlab_pat_response_1.parseGitLabPatAuthResponse)(response.ok, response.status, responseBody, gitlabPersonalAccessToken);
548
+ if (!parsedResponse.ok) {
549
+ res.status(response.ok ? 400 : response.status).json({
550
+ error: parsedResponse.errorMessage || 'GitLab PAT authentication failed',
551
+ });
552
+ return;
553
+ }
554
+ const tokenSnapshot = (0, token_manager_1.findNewTokenSnapshot)((0, token_manager_1.listProviderTokenSnapshots)(localProvider), knownTokenFiles);
555
+ if (!tokenSnapshot) {
556
+ res.status(409).json({
557
+ error: 'GitLab PAT authentication completed, but CCS could not find the saved token.',
558
+ });
559
+ return;
560
+ }
561
+ const account = (0, token_manager_1.registerAccountFromToken)(localProvider, (0, token_manager_1.getProviderTokenDir)(localProvider), nickname, false, tokenSnapshot.file);
562
+ if (!account) {
563
+ res.status(409).json({
564
+ error: 'GitLab PAT authentication succeeded, but account registration failed.',
565
+ });
566
+ return;
567
+ }
568
+ try {
569
+ await (0, managed_model_prefixes_1.ensureManagedModelPrefixes)([account.provider]);
570
+ }
571
+ catch {
572
+ // Keep auth success path non-fatal when prefix repair cannot run.
573
+ }
574
+ res.json({
575
+ success: true,
576
+ account: {
577
+ id: account.id,
578
+ email: account.email,
579
+ nickname: account.nickname,
580
+ provider: account.provider,
581
+ isDefault: account.isDefault,
582
+ },
583
+ });
584
+ return;
585
+ }
586
+ catch (error) {
587
+ respondInternalError(res, error, 'Failed to start GitLab PAT flow.');
588
+ return;
589
+ }
590
+ }
493
591
  const existingAccounts = (0, account_manager_1.getProviderAccounts)(provider);
494
592
  const nicknameError = getStartAuthNicknameError(provider, nickname, existingAccounts);
495
593
  if (nicknameError) {
@@ -514,6 +612,8 @@ router.post('/:provider/start', async (req, res) => {
514
612
  kiroIDCStartUrl: provider === 'kiro' ? kiroIDCStartUrl : undefined,
515
613
  kiroIDCRegion: provider === 'kiro' ? kiroIDCRegion : undefined,
516
614
  kiroIDCFlow: provider === 'kiro' && kiroMethod === 'idc' ? kiroIDCFlow : undefined,
615
+ gitlabAuthMode: provider === 'gitlab' ? gitlabAuthMode : undefined,
616
+ gitlabBaseUrl: provider === 'gitlab' ? gitlabBaseUrl : undefined,
517
617
  fromUI: true, // Enable project selection prompt in UI
518
618
  noIncognito, // Kiro: use normal browser if enabled
519
619
  });
@@ -657,9 +757,12 @@ router.post('/:provider/start-url', async (req, res) => {
657
757
  const requestBody = req.body && typeof req.body === 'object' ? req.body : {};
658
758
  const nicknameRaw = typeof requestBody.nickname === 'string' ? requestBody.nickname : undefined;
659
759
  const kiroMethodRaw = requestBody.kiroMethod;
760
+ const gitlabAuthModeRaw = requestBody.gitlabAuthMode;
761
+ const gitlabBaseUrl = typeof requestBody.gitlabBaseUrl === 'string' ? requestBody.gitlabBaseUrl.trim() : undefined;
660
762
  const riskAcknowledgement = requestBody.riskAcknowledgement;
661
763
  const nickname = nicknameRaw?.trim();
662
764
  const { method: kiroMethod, invalid: invalidKiroMethod } = parseKiroMethod(kiroMethodRaw);
765
+ const { mode: gitlabAuthMode, invalid: invalidGitLabAuthMode } = parseGitLabAuthMode(gitlabAuthModeRaw);
663
766
  // Check remote mode
664
767
  const target = (0, proxy_target_resolver_1.getProxyTarget)();
665
768
  if (target.isRemote) {
@@ -678,6 +781,20 @@ router.post('/:provider/start-url', async (req, res) => {
678
781
  });
679
782
  return;
680
783
  }
784
+ if (provider === 'gitlab' && invalidGitLabAuthMode) {
785
+ res.status(400).json({
786
+ error: 'Invalid gitlabAuthMode. Supported: oauth, pat',
787
+ code: 'INVALID_GITLAB_AUTH_MODE',
788
+ });
789
+ return;
790
+ }
791
+ if (provider === 'gitlab' && gitlabAuthMode === 'pat') {
792
+ res.status(400).json({
793
+ error: 'GitLab PAT login must use /api/cliproxy/auth/gitlab/start',
794
+ code: 'GITLAB_PAT_REQUIRES_START',
795
+ });
796
+ return;
797
+ }
681
798
  if (provider === 'agy' && !(0, antigravity_responsibility_1.isAntigravityResponsibilityBypassEnabled)()) {
682
799
  const validation = (0, antigravity_responsibility_1.validateAntigravityRiskAcknowledgement)(riskAcknowledgement);
683
800
  if (!validation.valid) {
@@ -707,9 +824,12 @@ router.post('/:provider/start-url', async (req, res) => {
707
824
  const kiroQuery = provider === 'kiro' && kiroManagementMethod
708
825
  ? `&method=${encodeURIComponent(kiroManagementMethod)}`
709
826
  : '';
827
+ const gitlabQuery = provider === 'gitlab' && gitlabBaseUrl
828
+ ? `&base_url=${encodeURIComponent(gitlabBaseUrl)}`
829
+ : '';
710
830
  // Call CLIProxyAPI to start OAuth and get auth URL
711
831
  // CLIProxyAPI management routes are under /v0/management prefix
712
- const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, `/v0/management/${authUrlProvider}-auth-url?is_webui=true${kiroQuery}`), { headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target) });
832
+ const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, `/v0/management/${authUrlProvider}-auth-url?is_webui=true${kiroQuery}${gitlabQuery}`), { headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target) });
713
833
  if (!response.ok) {
714
834
  const error = await response.text();
715
835
  res.status(response.status).json({ error: error || 'Failed to start OAuth' });
@@ -802,6 +922,7 @@ router.get('/:provider/status', async (req, res) => {
802
922
  catch {
803
923
  // Keep manual callback success path non-fatal when prefix repair cannot run.
804
924
  }
925
+ invalidateQuotaForRegisteredAccount(account);
805
926
  res.json({
806
927
  status: 'ok',
807
928
  account: {
@@ -931,6 +1052,7 @@ router.post('/:provider/submit-callback', async (req, res) => {
931
1052
  // Keep manual callback success path non-fatal when prefix repair cannot run.
932
1053
  }
933
1054
  }
1055
+ invalidateQuotaForRegisteredAccount(account);
934
1056
  res.json({
935
1057
  success: true,
936
1058
  account: {
@@ -953,6 +1075,7 @@ router.post('/:provider/submit-callback', async (req, res) => {
953
1075
  });
954
1076
  return;
955
1077
  }
1078
+ invalidateQuotaForRegisteredAccount(account);
956
1079
  res.json({
957
1080
  success: true,
958
1081
  account: {