@kaitranntt/ccs 7.79.1 → 8.0.0

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 (335) hide show
  1. package/README.md +29 -11
  2. package/dist/bin/ccsxp-runtime.d.ts.map +1 -1
  3. package/dist/bin/ccsxp-runtime.js +8 -0
  4. package/dist/bin/ccsxp-runtime.js.map +1 -1
  5. package/dist/bin/codex-runtime-router.d.ts +24 -0
  6. package/dist/bin/codex-runtime-router.d.ts.map +1 -0
  7. package/dist/bin/codex-runtime-router.js +117 -0
  8. package/dist/bin/codex-runtime-router.js.map +1 -0
  9. package/dist/bin/codex-runtime.d.ts +1 -0
  10. package/dist/bin/codex-runtime.js +7 -2
  11. package/dist/bin/codex-runtime.js.map +1 -1
  12. package/dist/ccs.js +2 -1
  13. package/dist/ccs.js.map +1 -1
  14. package/dist/cliproxy/ai-providers/codex-plan-compatibility.js +2 -2
  15. package/dist/cliproxy/ai-providers/codex-plan-compatibility.js.map +1 -1
  16. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts +2 -2
  17. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts.map +1 -1
  18. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js +16 -8
  19. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js.map +1 -1
  20. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts +8 -0
  21. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts.map +1 -1
  22. package/dist/cliproxy/ai-providers/model-id-normalizer.js +19 -2
  23. package/dist/cliproxy/ai-providers/model-id-normalizer.js.map +1 -1
  24. package/dist/cliproxy/ai-providers/service.d.ts.map +1 -1
  25. package/dist/cliproxy/ai-providers/service.js +39 -12
  26. package/dist/cliproxy/ai-providers/service.js.map +1 -1
  27. package/dist/cliproxy/auth/oauth-handler.d.ts +13 -1
  28. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  29. package/dist/cliproxy/auth/oauth-handler.js +111 -34
  30. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  31. package/dist/cliproxy/auth/oauth-trace/redactor.d.ts.map +1 -1
  32. package/dist/cliproxy/auth/oauth-trace/redactor.js +9 -1
  33. package/dist/cliproxy/auth/oauth-trace/redactor.js.map +1 -1
  34. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  35. package/dist/cliproxy/config/generator.js +5 -2
  36. package/dist/cliproxy/config/generator.js.map +1 -1
  37. package/dist/cliproxy/config/thinking-config.js +6 -6
  38. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  39. package/dist/cliproxy/executor/env-resolver.js +1 -1
  40. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  41. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  42. package/dist/cliproxy/quota/quota-fetcher-claude.js +35 -4
  43. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  44. package/dist/cliproxy/quota/quota-manager.d.ts +1 -0
  45. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  46. package/dist/cliproxy/quota/quota-manager.js +53 -2
  47. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  48. package/dist/cliproxy/services/oauth-usage-log-transformer.d.ts.map +1 -1
  49. package/dist/cliproxy/services/oauth-usage-log-transformer.js +5 -0
  50. package/dist/cliproxy/services/oauth-usage-log-transformer.js.map +1 -1
  51. package/dist/codex-auth/codex-account-identity.d.ts +8 -0
  52. package/dist/codex-auth/codex-account-identity.d.ts.map +1 -0
  53. package/dist/codex-auth/codex-account-identity.js +53 -0
  54. package/dist/codex-auth/codex-account-identity.js.map +1 -0
  55. package/dist/codex-auth/codex-auth-dashboard-service.d.ts +46 -0
  56. package/dist/codex-auth/codex-auth-dashboard-service.d.ts.map +1 -0
  57. package/dist/codex-auth/codex-auth-dashboard-service.js +228 -0
  58. package/dist/codex-auth/codex-auth-dashboard-service.js.map +1 -0
  59. package/dist/codex-auth/codex-auth-help.d.ts +7 -0
  60. package/dist/codex-auth/codex-auth-help.d.ts.map +1 -0
  61. package/dist/codex-auth/codex-auth-help.js +87 -0
  62. package/dist/codex-auth/codex-auth-help.js.map +1 -0
  63. package/dist/codex-auth/codex-auth-router.d.ts +16 -0
  64. package/dist/codex-auth/codex-auth-router.d.ts.map +1 -0
  65. package/dist/codex-auth/codex-auth-router.js +77 -0
  66. package/dist/codex-auth/codex-auth-router.js.map +1 -0
  67. package/dist/codex-auth/codex-config-symlink.d.ts +14 -0
  68. package/dist/codex-auth/codex-config-symlink.d.ts.map +1 -0
  69. package/dist/codex-auth/codex-config-symlink.js +128 -0
  70. package/dist/codex-auth/codex-config-symlink.js.map +1 -0
  71. package/dist/codex-auth/codex-profile-paths.d.ts +5 -0
  72. package/dist/codex-auth/codex-profile-paths.d.ts.map +1 -0
  73. package/dist/codex-auth/codex-profile-paths.js +58 -0
  74. package/dist/codex-auth/codex-profile-paths.js.map +1 -0
  75. package/dist/codex-auth/codex-profile-registry.d.ts +34 -0
  76. package/dist/codex-auth/codex-profile-registry.d.ts.map +1 -0
  77. package/dist/codex-auth/codex-profile-registry.js +360 -0
  78. package/dist/codex-auth/codex-profile-registry.js.map +1 -0
  79. package/dist/codex-auth/codex-profile-resources.d.ts +6 -0
  80. package/dist/codex-auth/codex-profile-resources.d.ts.map +1 -0
  81. package/dist/codex-auth/codex-profile-resources.js +119 -0
  82. package/dist/codex-auth/codex-profile-resources.js.map +1 -0
  83. package/dist/codex-auth/commands/create-command.d.ts +9 -0
  84. package/dist/codex-auth/commands/create-command.d.ts.map +1 -0
  85. package/dist/codex-auth/commands/create-command.js +203 -0
  86. package/dist/codex-auth/commands/create-command.js.map +1 -0
  87. package/dist/codex-auth/commands/import-default-command.d.ts +18 -0
  88. package/dist/codex-auth/commands/import-default-command.d.ts.map +1 -0
  89. package/dist/codex-auth/commands/import-default-command.js +385 -0
  90. package/dist/codex-auth/commands/import-default-command.js.map +1 -0
  91. package/dist/codex-auth/commands/index.d.ts +13 -0
  92. package/dist/codex-auth/commands/index.d.ts.map +1 -0
  93. package/dist/codex-auth/commands/index.js +27 -0
  94. package/dist/codex-auth/commands/index.js.map +1 -0
  95. package/dist/codex-auth/commands/login-command.d.ts +9 -0
  96. package/dist/codex-auth/commands/login-command.d.ts.map +1 -0
  97. package/dist/codex-auth/commands/login-command.js +152 -0
  98. package/dist/codex-auth/commands/login-command.js.map +1 -0
  99. package/dist/codex-auth/commands/remove-command.d.ts +10 -0
  100. package/dist/codex-auth/commands/remove-command.d.ts.map +1 -0
  101. package/dist/codex-auth/commands/remove-command.js +230 -0
  102. package/dist/codex-auth/commands/remove-command.js.map +1 -0
  103. package/dist/codex-auth/commands/show-command.d.ts +10 -0
  104. package/dist/codex-auth/commands/show-command.d.ts.map +1 -0
  105. package/dist/codex-auth/commands/show-command.js +127 -0
  106. package/dist/codex-auth/commands/show-command.js.map +1 -0
  107. package/dist/codex-auth/commands/show-detail-view.d.ts +7 -0
  108. package/dist/codex-auth/commands/show-detail-view.d.ts.map +1 -0
  109. package/dist/codex-auth/commands/show-detail-view.js +134 -0
  110. package/dist/codex-auth/commands/show-detail-view.js.map +1 -0
  111. package/dist/codex-auth/commands/switch-command.d.ts +7 -0
  112. package/dist/codex-auth/commands/switch-command.d.ts.map +1 -0
  113. package/dist/codex-auth/commands/switch-command.js +48 -0
  114. package/dist/codex-auth/commands/switch-command.js.map +1 -0
  115. package/dist/codex-auth/commands/types.d.ts +45 -0
  116. package/dist/codex-auth/commands/types.d.ts.map +1 -0
  117. package/dist/codex-auth/commands/types.js +85 -0
  118. package/dist/codex-auth/commands/types.js.map +1 -0
  119. package/dist/codex-auth/commands/use-command.d.ts +16 -0
  120. package/dist/codex-auth/commands/use-command.d.ts.map +1 -0
  121. package/dist/codex-auth/commands/use-command.js +86 -0
  122. package/dist/codex-auth/commands/use-command.js.map +1 -0
  123. package/dist/codex-auth/decode-id-token.d.ts +12 -0
  124. package/dist/codex-auth/decode-id-token.d.ts.map +1 -0
  125. package/dist/codex-auth/decode-id-token.js +83 -0
  126. package/dist/codex-auth/decode-id-token.js.map +1 -0
  127. package/dist/codex-auth/index.d.ts +9 -0
  128. package/dist/codex-auth/index.d.ts.map +1 -0
  129. package/dist/codex-auth/index.js +22 -0
  130. package/dist/codex-auth/index.js.map +1 -0
  131. package/dist/codex-auth/resolve-active-profile.d.ts +13 -0
  132. package/dist/codex-auth/resolve-active-profile.d.ts.map +1 -0
  133. package/dist/codex-auth/resolve-active-profile.js +161 -0
  134. package/dist/codex-auth/resolve-active-profile.js.map +1 -0
  135. package/dist/codex-auth/shell-detect.d.ts +19 -0
  136. package/dist/codex-auth/shell-detect.d.ts.map +1 -0
  137. package/dist/codex-auth/shell-detect.js +129 -0
  138. package/dist/codex-auth/shell-detect.js.map +1 -0
  139. package/dist/codex-auth/types.d.ts +26 -0
  140. package/dist/codex-auth/types.d.ts.map +1 -0
  141. package/dist/codex-auth/types.js +34 -0
  142. package/dist/codex-auth/types.js.map +1 -0
  143. package/dist/commands/cliproxy/variant-subcommand.js +1 -1
  144. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  145. package/dist/commands/command-catalog.d.ts +1 -1
  146. package/dist/commands/command-catalog.d.ts.map +1 -1
  147. package/dist/commands/command-catalog.js +10 -1
  148. package/dist/commands/command-catalog.js.map +1 -1
  149. package/dist/commands/completion-backend.d.ts.map +1 -1
  150. package/dist/commands/completion-backend.js +2 -0
  151. package/dist/commands/completion-backend.js.map +1 -1
  152. package/dist/commands/config-command.d.ts +2 -0
  153. package/dist/commands/config-command.d.ts.map +1 -1
  154. package/dist/commands/config-command.js +31 -20
  155. package/dist/commands/config-command.js.map +1 -1
  156. package/dist/commands/docker/finalize-key-rotation-subcommand.d.ts +2 -0
  157. package/dist/commands/docker/finalize-key-rotation-subcommand.d.ts.map +1 -0
  158. package/dist/commands/docker/finalize-key-rotation-subcommand.js +79 -0
  159. package/dist/commands/docker/finalize-key-rotation-subcommand.js.map +1 -0
  160. package/dist/commands/docker/help-subcommand.d.ts.map +1 -1
  161. package/dist/commands/docker/help-subcommand.js +6 -0
  162. package/dist/commands/docker/help-subcommand.js.map +1 -1
  163. package/dist/commands/docker/index.d.ts.map +1 -1
  164. package/dist/commands/docker/index.js +4 -0
  165. package/dist/commands/docker/index.js.map +1 -1
  166. package/dist/commands/docker/show-key-subcommand.d.ts +2 -0
  167. package/dist/commands/docker/show-key-subcommand.d.ts.map +1 -0
  168. package/dist/commands/docker/show-key-subcommand.js +96 -0
  169. package/dist/commands/docker/show-key-subcommand.js.map +1 -0
  170. package/dist/commands/docker/up-subcommand.d.ts.map +1 -1
  171. package/dist/commands/docker/up-subcommand.js +4 -0
  172. package/dist/commands/docker/up-subcommand.js.map +1 -1
  173. package/dist/commands/persist-command.d.ts.map +1 -1
  174. package/dist/commands/persist-command.js +77 -5
  175. package/dist/commands/persist-command.js.map +1 -1
  176. package/dist/dispatcher/cli-argument-parser.d.ts +3 -2
  177. package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
  178. package/dist/dispatcher/cli-argument-parser.js +37 -7
  179. package/dist/dispatcher/cli-argument-parser.js.map +1 -1
  180. package/dist/dispatcher/pre-dispatch.d.ts.map +1 -1
  181. package/dist/dispatcher/pre-dispatch.js +7 -0
  182. package/dist/dispatcher/pre-dispatch.js.map +1 -1
  183. package/dist/dispatcher/target-executor.d.ts +2 -2
  184. package/dist/dispatcher/target-executor.d.ts.map +1 -1
  185. package/dist/dispatcher/target-executor.js +5 -5
  186. package/dist/dispatcher/target-executor.js.map +1 -1
  187. package/dist/docker/docker-bootstrap.d.ts +1 -1
  188. package/dist/docker/docker-bootstrap.d.ts.map +1 -1
  189. package/dist/docker/docker-bootstrap.js +99 -3
  190. package/dist/docker/docker-bootstrap.js.map +1 -1
  191. package/dist/docker/docker-executor.d.ts +3 -0
  192. package/dist/docker/docker-executor.d.ts.map +1 -1
  193. package/dist/docker/docker-executor.js +53 -0
  194. package/dist/docker/docker-executor.js.map +1 -1
  195. package/dist/docker/docker-key-rotation.d.ts +48 -0
  196. package/dist/docker/docker-key-rotation.d.ts.map +1 -0
  197. package/dist/docker/docker-key-rotation.js +179 -0
  198. package/dist/docker/docker-key-rotation.js.map +1 -0
  199. package/dist/management/checks/config-check.d.ts.map +1 -1
  200. package/dist/management/checks/config-check.js +10 -1
  201. package/dist/management/checks/config-check.js.map +1 -1
  202. package/dist/management/doctor.d.ts +1 -0
  203. package/dist/management/doctor.d.ts.map +1 -1
  204. package/dist/management/doctor.js +23 -0
  205. package/dist/management/doctor.js.map +1 -1
  206. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  207. package/dist/proxy/proxy-daemon.js +15 -3
  208. package/dist/proxy/proxy-daemon.js.map +1 -1
  209. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  210. package/dist/proxy/server/messages-route.js +27 -1
  211. package/dist/proxy/server/messages-route.js.map +1 -1
  212. package/dist/shared/claude-extension-setup.d.ts.map +1 -1
  213. package/dist/shared/claude-extension-setup.js +21 -1
  214. package/dist/shared/claude-extension-setup.js.map +1 -1
  215. package/dist/shared/stale-codex-translator-settings.d.ts +4 -0
  216. package/dist/shared/stale-codex-translator-settings.d.ts.map +1 -0
  217. package/dist/shared/stale-codex-translator-settings.js +35 -0
  218. package/dist/shared/stale-codex-translator-settings.js.map +1 -0
  219. package/dist/targets/codex-adapter.d.ts.map +1 -1
  220. package/dist/targets/codex-adapter.js +64 -5
  221. package/dist/targets/codex-adapter.js.map +1 -1
  222. package/dist/targets/codex-cliproxy-provider-config.d.ts.map +1 -1
  223. package/dist/targets/codex-cliproxy-provider-config.js +56 -24
  224. package/dist/targets/codex-cliproxy-provider-config.js.map +1 -1
  225. package/dist/ui/assets/Trans-dEd8UC39.js +1 -0
  226. package/dist/ui/assets/accounts-B2THsSu_.js +1 -0
  227. package/dist/ui/assets/{alert-dialog-DC1l1GRX.js → alert-dialog-Vurq1xzV.js} +1 -1
  228. package/dist/ui/assets/api-CjLfG9mL.js +4 -0
  229. package/dist/ui/assets/auth-section-iGkrMaT4.js +1 -0
  230. package/dist/ui/assets/backups-section-DUGG_4KP.js +1 -0
  231. package/dist/ui/assets/channels-CimlCc2d.js +1 -0
  232. package/dist/ui/assets/{charts-CeK2xCSo.js → charts-eIPy2oG6.js} +34 -34
  233. package/dist/ui/assets/{checkbox-Dgd2ucy2.js → checkbox-HiMHasEB.js} +1 -1
  234. package/dist/ui/assets/claude-extension-B2v9bsN9.js +1 -0
  235. package/dist/ui/assets/{cliproxy-ai-providers-DxoCNEaQ.js → cliproxy-ai-providers-2lI5jSHb.js} +6 -6
  236. package/dist/ui/assets/cliproxy-control-panel-63gDI-e5.js +1 -0
  237. package/dist/ui/assets/cliproxy-fai69Vyd.js +4 -0
  238. package/dist/ui/assets/code-highlight-ClSMkeL5.js +1 -0
  239. package/dist/ui/assets/codex-i_hfI4Tv.js +30 -0
  240. package/dist/ui/assets/{confirm-dialog-nDFNrH0F.js → confirm-dialog-B_6SrSxL.js} +1 -1
  241. package/dist/ui/assets/copilot-BgG5x_X6.js +3 -0
  242. package/dist/ui/assets/cursor-DF63lFcy.js +1 -0
  243. package/dist/ui/assets/droid-CqlQmFtN.js +2 -0
  244. package/dist/ui/assets/globalenv-section-CYNmD12i.js +1 -0
  245. package/dist/ui/assets/health-7ZO5PEm9.js +1 -0
  246. package/dist/ui/assets/index-BC5ssPfF.js +1 -0
  247. package/dist/ui/assets/index-BMoGhs28.css +1 -0
  248. package/dist/ui/assets/index-Bgcd4FYK.js +1 -0
  249. package/dist/ui/assets/index-CFu0saCM.js +1 -0
  250. package/dist/ui/assets/index-CqsmdQoA.js +1 -0
  251. package/dist/ui/assets/index-D3kxCuJ7.js +1 -0
  252. package/dist/ui/assets/index-DmV9wJET.js +56 -0
  253. package/dist/ui/assets/index-hHb9o079.js +1 -0
  254. package/dist/ui/assets/logs-Dy-yZhIK.js +1 -0
  255. package/dist/ui/assets/{masked-input-5TJ4LSuz.js → masked-input-BSLeznEs.js} +1 -1
  256. package/dist/ui/assets/proxy-status-widget-hRH1agF9.js +1 -0
  257. package/dist/ui/assets/{raw-json-settings-editor-panel-Fg4WMiuD.js → raw-json-settings-editor-panel-Bs83yILR.js} +1 -1
  258. package/dist/ui/assets/{searchable-select-CPJn5vA1.js → searchable-select-pXUC_0Ih.js} +1 -1
  259. package/dist/ui/assets/{separator-BrQkfpAp.js → separator-FZR_61I9.js} +1 -1
  260. package/dist/ui/assets/shared-BiIwM7--.js +8 -0
  261. package/dist/ui/assets/{table-DRzNRkpJ.js → table-_9IusQ8G.js} +1 -1
  262. package/dist/ui/assets/updates-ButNfJqt.js +1 -0
  263. package/dist/ui/assets/{use-accounts-B6AXtlfF.js → use-accounts-BdtI0lBv.js} +1 -1
  264. package/dist/ui/index.html +3 -3
  265. package/dist/utils/claude-subcommand-detector.d.ts +7 -0
  266. package/dist/utils/claude-subcommand-detector.d.ts.map +1 -1
  267. package/dist/utils/claude-subcommand-detector.js +52 -9
  268. package/dist/utils/claude-subcommand-detector.js.map +1 -1
  269. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  270. package/dist/web-server/middleware/auth-middleware.js +25 -1
  271. package/dist/web-server/middleware/auth-middleware.js.map +1 -1
  272. package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
  273. package/dist/web-server/routes/claude-extension-routes.js +5 -0
  274. package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
  275. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +8 -0
  276. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  277. package/dist/web-server/routes/cliproxy-stats-routes.js +13 -26
  278. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  279. package/dist/web-server/routes/codex-routes.d.ts.map +1 -1
  280. package/dist/web-server/routes/codex-routes.js +14 -0
  281. package/dist/web-server/routes/codex-routes.js.map +1 -1
  282. package/dist/web-server/services/cliproxy-dashboard-restart-service.d.ts +21 -0
  283. package/dist/web-server/services/cliproxy-dashboard-restart-service.d.ts.map +1 -0
  284. package/dist/web-server/services/cliproxy-dashboard-restart-service.js +49 -0
  285. package/dist/web-server/services/cliproxy-dashboard-restart-service.js.map +1 -0
  286. package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
  287. package/dist/web-server/services/codex-dashboard-service.js +30 -3
  288. package/dist/web-server/services/codex-dashboard-service.js.map +1 -1
  289. package/dist/web-server/usage/aggregator.d.ts +13 -7
  290. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  291. package/dist/web-server/usage/aggregator.js +37 -22
  292. package/dist/web-server/usage/aggregator.js.map +1 -1
  293. package/dist/web-server/usage/handlers.d.ts +1 -0
  294. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  295. package/dist/web-server/usage/handlers.js +16 -8
  296. package/dist/web-server/usage/handlers.js.map +1 -1
  297. package/dist/web-server/usage/profile-filter.d.ts +13 -0
  298. package/dist/web-server/usage/profile-filter.d.ts.map +1 -0
  299. package/dist/web-server/usage/profile-filter.js +30 -0
  300. package/dist/web-server/usage/profile-filter.js.map +1 -0
  301. package/dist/web-server/usage/types.d.ts +8 -0
  302. package/dist/web-server/usage/types.d.ts.map +1 -1
  303. package/lib/hooks/websearch-transformer.cjs +12 -3
  304. package/lib/mcp/ccs-browser-server.cjs +217 -12
  305. package/package.json +1 -1
  306. package/scripts/docker-dashboard-sunset-guard.js +171 -0
  307. package/scripts/run-test-bucket.js +1 -0
  308. package/scripts/verify-bundle.js +4 -1
  309. package/dist/ui/assets/accounts-BQu3Aeey.js +0 -1
  310. package/dist/ui/assets/api-BTbrbjic.js +0 -4
  311. package/dist/ui/assets/auth-section-BsSVWOMp.js +0 -1
  312. package/dist/ui/assets/backups-section-BGHYHASS.js +0 -1
  313. package/dist/ui/assets/channels-vJ8L4j-z.js +0 -1
  314. package/dist/ui/assets/claude-extension-B3ern4Ad.js +0 -1
  315. package/dist/ui/assets/cliproxy-CGljI0Or.js +0 -4
  316. package/dist/ui/assets/cliproxy-control-panel-BJ3Mliy1.js +0 -1
  317. package/dist/ui/assets/code-highlight-D4E79GKQ.js +0 -3
  318. package/dist/ui/assets/codex-DBGHPn0v.js +0 -30
  319. package/dist/ui/assets/copilot-CE_Z3NB0.js +0 -3
  320. package/dist/ui/assets/cursor-YzGsSR_d.js +0 -1
  321. package/dist/ui/assets/droid-C-ItViCi.js +0 -2
  322. package/dist/ui/assets/globalenv-section-C9gSGyZ8.js +0 -1
  323. package/dist/ui/assets/health-DEeA97sQ.js +0 -1
  324. package/dist/ui/assets/index-B71yJlMj.css +0 -1
  325. package/dist/ui/assets/index-BPVO-QAw.js +0 -1
  326. package/dist/ui/assets/index-BRZp_Csi.js +0 -72
  327. package/dist/ui/assets/index-BYUwpOeA.js +0 -1
  328. package/dist/ui/assets/index-D2r_fAW5.js +0 -1
  329. package/dist/ui/assets/index-DGiziSVQ.js +0 -1
  330. package/dist/ui/assets/index-DwG6bbUr.js +0 -1
  331. package/dist/ui/assets/index-Dwtj4wGT.js +0 -1
  332. package/dist/ui/assets/logs-Mt2W7M3G.js +0 -1
  333. package/dist/ui/assets/proxy-status-widget-BQOAlYsb.js +0 -1
  334. package/dist/ui/assets/shared-BlkDl2HF.js +0 -8
  335. package/dist/ui/assets/updates-BQNeSzLj.js +0 -1
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Detail view renderer for `ccsx auth show <name>`.
4
+ * Extracted from show-command.ts to keep files under 200 lines.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.showProfileDetail = void 0;
31
+ const fs = __importStar(require("fs"));
32
+ const path = __importStar(require("path"));
33
+ const ui_1 = require("../../utils/ui");
34
+ const errors_1 = require("../../errors");
35
+ const exit_codes_1 = require("../../errors/exit-codes");
36
+ const codex_profile_paths_1 = require("../codex-profile-paths");
37
+ const codex_account_identity_1 = require("../codex-account-identity");
38
+ function showProfileDetail(profileName, ctx, json) {
39
+ const { registry } = ctx;
40
+ if (!registry.hasProfile(profileName)) {
41
+ (0, errors_1.exitWithError)(`Profile not found: ${profileName}`, exit_codes_1.ExitCode.PROFILE_ERROR);
42
+ return;
43
+ }
44
+ const meta = registry.getProfile(profileName);
45
+ const profileDir = (0, codex_profile_paths_1.resolveCodexProfileDir)(profileName);
46
+ const authJsonPath = path.join(profileDir, 'auth.json');
47
+ const configTomlPath = path.join(profileDir, 'config.toml');
48
+ const authExists = fs.existsSync(authJsonPath);
49
+ let authMtime = null;
50
+ let identity = {
51
+ email: undefined,
52
+ plan_type: undefined,
53
+ account_id: undefined,
54
+ };
55
+ let authState = 'missing';
56
+ if (authExists) {
57
+ try {
58
+ const stat = fs.statSync(authJsonPath);
59
+ authMtime = stat.mtime.toISOString();
60
+ identity = (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath);
61
+ authState = `present (mtime: ${new Date(authMtime).toLocaleString()})`;
62
+ }
63
+ catch {
64
+ authState = 'present (unreadable)';
65
+ }
66
+ }
67
+ // Inspect config.toml symlink
68
+ let configTarget = null;
69
+ try {
70
+ const lstat = fs.lstatSync(configTomlPath);
71
+ if (lstat.isSymbolicLink()) {
72
+ configTarget = fs.readlinkSync(configTomlPath);
73
+ }
74
+ else {
75
+ configTarget = `${configTomlPath} (regular file, not symlink)`;
76
+ }
77
+ }
78
+ catch {
79
+ configTarget = null;
80
+ }
81
+ const isDefault = registry.getDefault() === profileName;
82
+ const isActive = process.env.CCS_CODEX_PROFILE === profileName;
83
+ const states = [];
84
+ if (isDefault)
85
+ states.push('default');
86
+ if (isActive)
87
+ states.push('active');
88
+ const stateStr = states.join(',');
89
+ const accountId = meta.account_id ?? identity.account_id ?? null;
90
+ const email = meta.email ?? identity.email ?? null;
91
+ const plan = meta.plan_type ?? identity.plan_type ?? null;
92
+ if (json) {
93
+ const out = {
94
+ name: profileName,
95
+ is_default: isDefault,
96
+ is_active: isActive,
97
+ created: meta.created,
98
+ last_used: meta.last_used ?? null,
99
+ email,
100
+ plan,
101
+ account_id: accountId,
102
+ profile_dir: profileDir,
103
+ auth_json_exists: authExists,
104
+ auth_json_mtime: authMtime,
105
+ config_toml_link_target: configTarget,
106
+ };
107
+ console.log(JSON.stringify(out, null, 2));
108
+ return;
109
+ }
110
+ const badge = stateStr ? ` (${stateStr})` : '';
111
+ console.log(`Codex Profile: ${profileName}${badge}`);
112
+ console.log('');
113
+ const rows = [
114
+ ['Name', profileName],
115
+ ['Profile dir', profileDir],
116
+ ['config.toml', configTarget ? `-> ${configTarget} (symlink)` : '(not linked)'],
117
+ ['auth.json', authState],
118
+ ['Email', email ?? (authExists ? '<invalid>' : '<unknown>')],
119
+ ['Plan', plan ?? (authExists ? '<invalid>' : '<unknown>')],
120
+ ['Account ID', accountId ?? '-'],
121
+ ['Created', new Date(meta.created).toLocaleString()],
122
+ ['Last used', meta.last_used ? new Date(meta.last_used).toLocaleString() : 'never'],
123
+ ['CODEX_HOME (env)', process.env.CODEX_HOME ?? 'unset'],
124
+ ['CCS_CODEX_PROFILE', process.env.CCS_CODEX_PROFILE ?? 'unset'],
125
+ ];
126
+ console.log((0, ui_1.table)(rows, { colWidths: [20, 55] }));
127
+ // H4: warn if config.toml is a regular file (not symlink)
128
+ if (configTarget && configTarget.includes('regular file')) {
129
+ process.stderr.write(`[!] config.toml is a regular file, not a symlink. Config changes won't propagate.\n`);
130
+ process.stderr.write(` Run: ccsx auth create ${profileName} --force\n`);
131
+ }
132
+ }
133
+ exports.showProfileDetail = showProfileDetail;
134
+ //# sourceMappingURL=show-detail-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-detail-view.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/show-detail-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * codex-auth switch command.
3
+ * Sets the persistent default Codex profile in the registry.
4
+ */
5
+ import type { CodexCommandContext } from './types';
6
+ export declare function handleSwitchCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
7
+ //# sourceMappingURL=switch-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/switch-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C/F"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * codex-auth switch command.
4
+ * Sets the persistent default Codex profile in the registry.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.handleSwitchCodex = void 0;
8
+ const ui_1 = require("../../utils/ui");
9
+ const errors_1 = require("../../errors");
10
+ const exit_codes_1 = require("../../errors/exit-codes");
11
+ const types_1 = require("./types");
12
+ async function handleSwitchCodex(ctx, args) {
13
+ await (0, ui_1.initUI)();
14
+ const parsed = (0, types_1.parseArgs)(args);
15
+ (0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth switch <name>');
16
+ const { profileName } = parsed;
17
+ if (!profileName) {
18
+ console.log('Usage: ccsx auth switch <name>');
19
+ (0, errors_1.exitWithError)('Profile name required', exit_codes_1.ExitCode.PROFILE_ERROR);
20
+ return;
21
+ }
22
+ const nameError = (0, types_1.getProfileNameError)(profileName);
23
+ if (nameError) {
24
+ (0, errors_1.exitWithError)(nameError, exit_codes_1.ExitCode.PROFILE_ERROR);
25
+ return;
26
+ }
27
+ const { registry } = ctx;
28
+ if (!registry.hasProfile(profileName)) {
29
+ const available = registry.listProfiles();
30
+ const availableStr = available.length > 0 ? available.join(', ') : '<none>';
31
+ (0, errors_1.exitWithError)(`Profile not found: ${profileName}. Available: ${availableStr}`, exit_codes_1.ExitCode.PROFILE_ERROR);
32
+ return;
33
+ }
34
+ registry.setDefault(profileName);
35
+ const meta = registry.getProfile(profileName);
36
+ const emailStr = meta.email ? `\n Email: ${meta.email}` : '';
37
+ const planStr = meta.plan_type ? `\n Plan : ${meta.plan_type}` : '';
38
+ console.log((0, ui_1.ok)(`Default Codex profile: ${profileName}`));
39
+ if (emailStr)
40
+ process.stdout.write(emailStr + '\n');
41
+ if (planStr)
42
+ process.stdout.write(planStr + '\n');
43
+ console.log('');
44
+ console.log('[i] This is the persistent default. To use a different profile in the');
45
+ console.log(` current shell only, run: eval "$(ccsx auth use <other>)"`);
46
+ }
47
+ exports.handleSwitchCodex = handleSwitchCodex;
48
+ //# sourceMappingURL=switch-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/switch-command.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA4C;AAC5C,yCAA6C;AAC7C,wDAAmD;AACnD,mCAAmF;AAG5E,KAAK,UAAU,iBAAiB,CAAC,GAAwB,EAAE,IAAc;IAC9E,MAAM,IAAA,WAAM,GAAE,CAAC;IACf,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,IAAA,gCAAwB,EAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAE5D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,IAAA,sBAAa,EAAC,uBAAuB,EAAE,qBAAQ,CAAC,aAAa,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,WAAW,CAAC,CAAC;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,IAAA,sBAAa,EAAC,SAAS,EAAE,qBAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5E,IAAA,sBAAa,EACX,sBAAsB,WAAW,gBAAgB,YAAY,EAAE,EAC/D,qBAAQ,CAAC,aAAa,CACvB,CAAC;QACF,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,IAAA,OAAE,EAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;AAC9E,CAAC;AA3CD,8CA2CC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Shared types and utilities for codex-auth command handlers.
3
+ */
4
+ import type { CodexProfileRegistry } from '../codex-profile-registry';
5
+ import { getCodexProfileNameError, isValidCodexProfileName } from '../types';
6
+ export { formatRelativeTime } from '../../utils/time';
7
+ export interface CodexCommandContext {
8
+ registry: CodexProfileRegistry;
9
+ version: string;
10
+ }
11
+ export interface CodexAuthArgs {
12
+ profileName?: string;
13
+ yes?: boolean;
14
+ json?: boolean;
15
+ force?: boolean;
16
+ shell?: string;
17
+ unknownFlags?: string[];
18
+ seenOptions?: string[];
19
+ extraPositionals?: string[];
20
+ }
21
+ export interface CodexProfileOutput {
22
+ name: string;
23
+ is_default: boolean;
24
+ is_active: boolean;
25
+ created: string;
26
+ last_used: string | null;
27
+ email: string | null;
28
+ plan: string | null;
29
+ account_id: string | null;
30
+ profile_dir: string;
31
+ auth_json_exists: boolean;
32
+ auth_json_mtime: string | null;
33
+ config_toml_link_target: string | null;
34
+ }
35
+ export { isValidCodexProfileName };
36
+ export declare const getProfileNameError: typeof getCodexProfileNameError;
37
+ export declare function parseArgs(args: string[]): CodexAuthArgs;
38
+ export interface AllowedCodexAuthOptions {
39
+ yes?: boolean;
40
+ json?: boolean;
41
+ force?: boolean;
42
+ shell?: boolean;
43
+ }
44
+ export declare function rejectUnsupportedOptions(parsed: CodexAuthArgs, usage: string, allowed?: AllowedCodexAuthOptions): void;
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAID,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,eAAO,MAAM,mBAAmB,iCAA2B,CAAC;AAI5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAqCvD;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,uBAA4B,GACpC,IAAI,CAoBN"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Shared types and utilities for codex-auth command handlers.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rejectUnsupportedOptions = exports.parseArgs = exports.getProfileNameError = exports.isValidCodexProfileName = exports.formatRelativeTime = void 0;
7
+ const ui_1 = require("../../utils/ui");
8
+ const errors_1 = require("../../errors");
9
+ const exit_codes_1 = require("../../errors/exit-codes");
10
+ const types_1 = require("../types");
11
+ Object.defineProperty(exports, "isValidCodexProfileName", { enumerable: true, get: function () { return types_1.isValidCodexProfileName; } });
12
+ // Re-export for convenience in command modules
13
+ var time_1 = require("../../utils/time");
14
+ Object.defineProperty(exports, "formatRelativeTime", { enumerable: true, get: function () { return time_1.formatRelativeTime; } });
15
+ exports.getProfileNameError = types_1.getCodexProfileNameError;
16
+ // ── Arg parsing ───────────────────────────────────────────────────────────────
17
+ function parseArgs(args) {
18
+ const result = { unknownFlags: [], seenOptions: [] };
19
+ const positional = [];
20
+ const markSeen = (flag) => result.seenOptions?.push(flag);
21
+ for (let i = 0; i < args.length; i++) {
22
+ const arg = args[i];
23
+ if (arg === '--yes' || arg === '-y') {
24
+ markSeen('--yes');
25
+ result.yes = true;
26
+ }
27
+ else if (arg === '--json') {
28
+ markSeen('--json');
29
+ result.json = true;
30
+ }
31
+ else if (arg === '--force') {
32
+ markSeen('--force');
33
+ result.force = true;
34
+ }
35
+ else if (arg === '--shell') {
36
+ markSeen('--shell');
37
+ result.shell = args[++i] ?? '';
38
+ }
39
+ else if (arg.startsWith('--shell=')) {
40
+ markSeen('--shell');
41
+ result.shell = arg.slice('--shell='.length);
42
+ }
43
+ else if (arg.startsWith('-') && arg !== '--') {
44
+ if (result.unknownFlags)
45
+ result.unknownFlags.push(arg);
46
+ }
47
+ else if (arg !== '--') {
48
+ positional.push(arg);
49
+ }
50
+ }
51
+ if (positional.length > 0) {
52
+ result.profileName = positional[0];
53
+ }
54
+ if (positional.length > 1) {
55
+ result.extraPositionals = positional.slice(1);
56
+ }
57
+ return result;
58
+ }
59
+ exports.parseArgs = parseArgs;
60
+ function rejectUnsupportedOptions(parsed, usage, allowed = {}) {
61
+ const unsupported = new Set(parsed.unknownFlags ?? []);
62
+ const seen = new Set(parsed.seenOptions ?? []);
63
+ if (seen.has('--yes') && !allowed.yes)
64
+ unsupported.add('--yes');
65
+ if (seen.has('--json') && !allowed.json)
66
+ unsupported.add('--json');
67
+ if (seen.has('--force') && !allowed.force)
68
+ unsupported.add('--force');
69
+ if (seen.has('--shell') && !allowed.shell)
70
+ unsupported.add('--shell');
71
+ const extraPositionals = parsed.extraPositionals ?? [];
72
+ if (unsupported.size > 0 || extraPositionals.length > 0) {
73
+ const flags = [...unsupported].join(', ');
74
+ process.stderr.write(`Usage: ${(0, ui_1.color)(usage, 'command')}\n`);
75
+ const details = [
76
+ flags ? `Unknown options: ${flags}` : null,
77
+ extraPositionals.length > 0
78
+ ? `Unexpected arguments: ${extraPositionals.map((arg) => `"${arg}"`).join(', ')}`
79
+ : null,
80
+ ].filter(Boolean);
81
+ (0, errors_1.exitWithError)(details.join('; '), exit_codes_1.ExitCode.GENERAL_ERROR);
82
+ }
83
+ }
84
+ exports.rejectUnsupportedOptions = rejectUnsupportedOptions;
85
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * codex-auth use command.
3
+ *
4
+ * STDOUT DISCIPLINE (C2, R4): stdout contains ONLY shell-evalable export
5
+ * statements. ALL errors, hints, and info messages go to STDERR so that
6
+ * `eval "$(ccsx auth use <name>)"` is never contaminated.
7
+ *
8
+ * Belt-and-suspenders for C2: the primary protection is
9
+ * `src/bin/codex-runtime-router.ts`, which dispatches `auth` subcommands
10
+ * BEFORE pre-dispatch runs at all. This IIFE is a fallback for any future
11
+ * code path (e.g., direct import from a different bin entry) that bypasses
12
+ * the router and would otherwise let pre-dispatch banners hit stdout.
13
+ */
14
+ import type { CodexCommandContext } from './types';
15
+ export declare function handleUseCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
16
+ //# sourceMappingURL=use-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/use-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAInD,wBAAsB,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5F"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * codex-auth use command.
4
+ *
5
+ * STDOUT DISCIPLINE (C2, R4): stdout contains ONLY shell-evalable export
6
+ * statements. ALL errors, hints, and info messages go to STDERR so that
7
+ * `eval "$(ccsx auth use <name>)"` is never contaminated.
8
+ *
9
+ * Belt-and-suspenders for C2: the primary protection is
10
+ * `src/bin/codex-runtime-router.ts`, which dispatches `auth` subcommands
11
+ * BEFORE pre-dispatch runs at all. This IIFE is a fallback for any future
12
+ * code path (e.g., direct import from a different bin entry) that bypasses
13
+ * the router and would otherwise let pre-dispatch banners hit stdout.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.handleUseCodex = void 0;
17
+ (function guardPreDispatch() {
18
+ const argv = process.argv;
19
+ // argv[2] is the first user arg to ccsx (e.g. "auth"), argv[3] is the subcommand
20
+ for (let i = 2; i < argv.length - 1; i++) {
21
+ if (argv[i] === 'auth' && argv[i + 1] === 'use') {
22
+ process.env.CCS_NO_PRE_DISPATCH = '1';
23
+ break;
24
+ }
25
+ }
26
+ })();
27
+ // ── End guard — safe to import CCS modules now ───────────────────────────────
28
+ const errors_1 = require("../../errors");
29
+ const exit_codes_1 = require("../../errors/exit-codes");
30
+ const codex_profile_paths_1 = require("../codex-profile-paths");
31
+ const shell_detect_1 = require("../shell-detect");
32
+ const types_1 = require("./types");
33
+ const VALID_SHELLS = new Set(['bash', 'zsh', 'fish', 'pwsh', 'cmd']);
34
+ async function handleUseCodex(ctx, args) {
35
+ const parsed = (0, types_1.parseArgs)(args);
36
+ (0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth use <name> [--shell <bash|zsh|fish|pwsh|cmd>]', {
37
+ shell: true,
38
+ });
39
+ const { profileName, shell: shellOverride } = parsed;
40
+ // All errors → stderr, empty stdout
41
+ if (!profileName) {
42
+ process.stderr.write('[X] Profile name is required.\n');
43
+ process.stderr.write('Usage: ccsx auth use <name> [--shell <bash|zsh|fish|pwsh|cmd>]\n');
44
+ process.exit(exit_codes_1.ExitCode.PROFILE_ERROR);
45
+ return;
46
+ }
47
+ const nameError = (0, types_1.getProfileNameError)(profileName);
48
+ if (nameError) {
49
+ process.stderr.write(`[X] ${nameError}\n`);
50
+ process.exit(exit_codes_1.ExitCode.PROFILE_ERROR);
51
+ return;
52
+ }
53
+ if (shellOverride !== undefined && !VALID_SHELLS.has(shellOverride)) {
54
+ process.stderr.write(`[X] Unsupported --shell value: "${shellOverride}". Valid: bash, zsh, fish, pwsh, cmd\n`);
55
+ process.exit(exit_codes_1.ExitCode.GENERAL_ERROR);
56
+ return;
57
+ }
58
+ const { registry } = ctx;
59
+ if (!registry.hasProfile(profileName)) {
60
+ const available = registry.listProfiles();
61
+ const availableStr = available.length > 0 ? available.join(', ') : '<none>';
62
+ process.stderr.write(`[X] Profile not found: ${profileName}. Available: ${availableStr}\n`);
63
+ process.exit(exit_codes_1.ExitCode.PROFILE_ERROR);
64
+ return;
65
+ }
66
+ const profileDir = (0, codex_profile_paths_1.resolveCodexProfileDir)(profileName);
67
+ const shell = shellOverride !== undefined
68
+ ? shellOverride
69
+ : (0, shell_detect_1.detectShell)(process.env, process.platform);
70
+ // ── STDOUT: only export statements ──────────────────────────────────────────
71
+ process.stdout.write((0, shell_detect_1.formatExport)(shell, 'CODEX_HOME', profileDir) + '\n');
72
+ process.stdout.write((0, shell_detect_1.formatExport)(shell, 'CCS_CODEX_PROFILE', profileName) + '\n');
73
+ // ── STDERR: human-readable hint ─────────────────────────────────────────────
74
+ process.stderr.write(`[i] Codex profile "${profileName}" active in this shell. Run: codex\n`);
75
+ if (shell === 'cmd') {
76
+ process.stderr.write('[i] Note: cmd.exe cannot eval output from a subprocess natively.\n');
77
+ process.stderr.write(' Use PowerShell: ccsx auth use ' + profileName + ' | Invoke-Expression\n');
78
+ }
79
+ // Note: This profile applies only to native `codex`.
80
+ // `ccsxp` ignores CCS_CODEX_PROFILE and uses its own cliproxy pool.
81
+ }
82
+ exports.handleUseCodex = handleUseCodex;
83
+ // suppress unused import warning — exitWithError is available but we use process.exit
84
+ // for stdout purity in this command
85
+ void errors_1.exitWithError;
86
+ //# sourceMappingURL=use-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/use-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CodexAccountIdentity } from './types';
2
+ /**
3
+ * Decode the payload of a JWT id_token without signature verification.
4
+ * Returns only the display-safe fields: email, plan_type, account_id.
5
+ * Returns {} on any parse failure — never throws.
6
+ *
7
+ * Security note: signature is NOT verified. This is purely cosmetic data
8
+ * for dashboard display. Auth boundary is OS file perms on auth.json.
9
+ */
10
+ export declare function decodeIdToken(idToken: string): CodexAccountIdentity;
11
+ export declare function hasStructurallyValidIdToken(idToken: string): boolean;
12
+ //# sourceMappingURL=decode-id-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-id-token.d.ts","sourceRoot":"","sources":["../../src/codex-auth/decode-id-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAwCpD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA0BnE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpE"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasStructurallyValidIdToken = exports.decodeIdToken = void 0;
4
+ // JWT claim URI for OpenAI-specific auth data (nested object).
5
+ // Verified against real auth.json: chatgpt_plan_type and chatgpt_account_id
6
+ // live under this key, NOT at top level.
7
+ const OPENAI_AUTH_CLAIM = 'https://api.openai.com/auth';
8
+ const OPENAI_PROFILE_CLAIM = 'https://api.openai.com/profile';
9
+ const BASE64URL_SEGMENT_RE = /^[A-Za-z0-9_-]+$/;
10
+ function base64urlDecode(str) {
11
+ // Convert base64url to standard base64
12
+ const base64 = str.replace(/-/g, '+').replace(/_/g, '/');
13
+ const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');
14
+ return Buffer.from(padded, 'base64').toString('utf8');
15
+ }
16
+ function isBase64UrlSegment(str) {
17
+ return str.length > 0 && str.length % 4 !== 1 && BASE64URL_SEGMENT_RE.test(str);
18
+ }
19
+ function decodeJsonSegment(str) {
20
+ return JSON.parse(base64urlDecode(str));
21
+ }
22
+ /**
23
+ * Decode the payload of a JWT id_token without signature verification.
24
+ * Returns only the display-safe fields: email, plan_type, account_id.
25
+ * Returns {} on any parse failure — never throws.
26
+ *
27
+ * Security note: signature is NOT verified. This is purely cosmetic data
28
+ * for dashboard display. Auth boundary is OS file perms on auth.json.
29
+ */
30
+ function decodeIdToken(idToken) {
31
+ try {
32
+ const payload = decodeJwtPayload(idToken);
33
+ if (!payload)
34
+ return {};
35
+ const authClaim = payload[OPENAI_AUTH_CLAIM];
36
+ const profileClaim = payload[OPENAI_PROFILE_CLAIM];
37
+ // Email: prefer top-level, fall back to profile claim
38
+ const email = payload.email ?? profileClaim?.email;
39
+ const result = {};
40
+ if (typeof email === 'string' && email.length > 0) {
41
+ result.email = email;
42
+ }
43
+ if (typeof authClaim?.chatgpt_plan_type === 'string') {
44
+ result.plan_type = authClaim.chatgpt_plan_type;
45
+ }
46
+ if (typeof authClaim?.chatgpt_account_id === 'string') {
47
+ result.account_id = authClaim.chatgpt_account_id;
48
+ }
49
+ return result;
50
+ }
51
+ catch {
52
+ return {};
53
+ }
54
+ }
55
+ exports.decodeIdToken = decodeIdToken;
56
+ function hasStructurallyValidIdToken(idToken) {
57
+ return decodeJwtPayload(idToken) !== null;
58
+ }
59
+ exports.hasStructurallyValidIdToken = hasStructurallyValidIdToken;
60
+ function decodeJwtPayload(idToken) {
61
+ try {
62
+ const parts = idToken.split('.');
63
+ if (parts.length !== 3) {
64
+ return null;
65
+ }
66
+ if (!parts.every((part) => isBase64UrlSegment(part))) {
67
+ return null;
68
+ }
69
+ const header = decodeJsonSegment(parts[0] ?? '');
70
+ if (!header || typeof header !== 'object' || Array.isArray(header)) {
71
+ return null;
72
+ }
73
+ const payload = decodeJsonSegment(parts[1] ?? '');
74
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
75
+ return null;
76
+ }
77
+ return payload;
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ //# sourceMappingURL=decode-id-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-id-token.js","sourceRoot":"","sources":["../../src/codex-auth/decode-id-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { CodexProfileRegistry } from './codex-profile-registry';
2
+ export { getCodexAuthRegistryPath, getCodexInstancesDir, resolveCodexProfileDir, getSharedCodexConfigPath, } from './codex-profile-paths';
3
+ export { ensureSharedConfigSymlink } from './codex-config-symlink';
4
+ export { ensureCodexProfileResources, SHARED_CODEX_RESOURCE_DIRS } from './codex-profile-resources';
5
+ export { decodeAccountIdentity } from './codex-account-identity';
6
+ export { decodeIdToken } from './decode-id-token';
7
+ export type { CodexProfileMetadata, CodexProfileData, CodexAccountIdentity } from './types';
8
+ export { CODEX_PROFILE_SCHEMA_VERSION } from './types';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codex-auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CODEX_PROFILE_SCHEMA_VERSION = exports.decodeIdToken = exports.decodeAccountIdentity = exports.SHARED_CODEX_RESOURCE_DIRS = exports.ensureCodexProfileResources = exports.ensureSharedConfigSymlink = exports.getSharedCodexConfigPath = exports.resolveCodexProfileDir = exports.getCodexInstancesDir = exports.getCodexAuthRegistryPath = exports.CodexProfileRegistry = void 0;
4
+ var codex_profile_registry_1 = require("./codex-profile-registry");
5
+ Object.defineProperty(exports, "CodexProfileRegistry", { enumerable: true, get: function () { return codex_profile_registry_1.CodexProfileRegistry; } });
6
+ var codex_profile_paths_1 = require("./codex-profile-paths");
7
+ Object.defineProperty(exports, "getCodexAuthRegistryPath", { enumerable: true, get: function () { return codex_profile_paths_1.getCodexAuthRegistryPath; } });
8
+ Object.defineProperty(exports, "getCodexInstancesDir", { enumerable: true, get: function () { return codex_profile_paths_1.getCodexInstancesDir; } });
9
+ Object.defineProperty(exports, "resolveCodexProfileDir", { enumerable: true, get: function () { return codex_profile_paths_1.resolveCodexProfileDir; } });
10
+ Object.defineProperty(exports, "getSharedCodexConfigPath", { enumerable: true, get: function () { return codex_profile_paths_1.getSharedCodexConfigPath; } });
11
+ var codex_config_symlink_1 = require("./codex-config-symlink");
12
+ Object.defineProperty(exports, "ensureSharedConfigSymlink", { enumerable: true, get: function () { return codex_config_symlink_1.ensureSharedConfigSymlink; } });
13
+ var codex_profile_resources_1 = require("./codex-profile-resources");
14
+ Object.defineProperty(exports, "ensureCodexProfileResources", { enumerable: true, get: function () { return codex_profile_resources_1.ensureCodexProfileResources; } });
15
+ Object.defineProperty(exports, "SHARED_CODEX_RESOURCE_DIRS", { enumerable: true, get: function () { return codex_profile_resources_1.SHARED_CODEX_RESOURCE_DIRS; } });
16
+ var codex_account_identity_1 = require("./codex-account-identity");
17
+ Object.defineProperty(exports, "decodeAccountIdentity", { enumerable: true, get: function () { return codex_account_identity_1.decodeAccountIdentity; } });
18
+ var decode_id_token_1 = require("./decode-id-token");
19
+ Object.defineProperty(exports, "decodeIdToken", { enumerable: true, get: function () { return decode_id_token_1.decodeIdToken; } });
20
+ var types_1 = require("./types");
21
+ Object.defineProperty(exports, "CODEX_PROFILE_SCHEMA_VERSION", { enumerable: true, get: function () { return types_1.CODEX_PROFILE_SCHEMA_VERSION; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codex-auth/index.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA;AAC7B,6DAK+B;AAJ7B,+HAAA,wBAAwB,OAAA;AACxB,2HAAA,oBAAoB,OAAA;AACpB,6HAAA,sBAAsB,OAAA;AACtB,+HAAA,wBAAwB,OAAA;AAE1B,+DAAmE;AAA1D,iIAAA,yBAAyB,OAAA;AAClC,qEAAoG;AAA3F,sIAAA,2BAA2B,OAAA;AAAE,qIAAA,0BAA0B,OAAA;AAChE,mEAAiE;AAAxD,+HAAA,qBAAqB,OAAA;AAC9B,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AAEtB,iCAAuD;AAA9C,qHAAA,4BAA4B,OAAA"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="bun-types" />
3
+ export interface ResolvedProfile {
4
+ name: string;
5
+ dir: string;
6
+ source: 'env' | 'default';
7
+ }
8
+ export declare class CodexAuthProfileResolutionError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ /** @param env - Process env map; defaults to process.env. Injectable for tests. */
12
+ export declare function resolveActiveProfile(env?: NodeJS.ProcessEnv): ResolvedProfile | null;
13
+ //# sourceMappingURL=resolve-active-profile.d.ts.map