@kaitranntt/ccs 7.79.1 → 8.0.0-dev.1

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 (338) 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/executor/session-bridge.d.ts.map +1 -1
  42. package/dist/cliproxy/executor/session-bridge.js +11 -8
  43. package/dist/cliproxy/executor/session-bridge.js.map +1 -1
  44. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  45. package/dist/cliproxy/quota/quota-fetcher-claude.js +35 -4
  46. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  47. package/dist/cliproxy/quota/quota-manager.d.ts +1 -0
  48. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  49. package/dist/cliproxy/quota/quota-manager.js +53 -2
  50. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  51. package/dist/cliproxy/services/oauth-usage-log-transformer.d.ts.map +1 -1
  52. package/dist/cliproxy/services/oauth-usage-log-transformer.js +5 -0
  53. package/dist/cliproxy/services/oauth-usage-log-transformer.js.map +1 -1
  54. package/dist/codex-auth/codex-account-identity.d.ts +8 -0
  55. package/dist/codex-auth/codex-account-identity.d.ts.map +1 -0
  56. package/dist/codex-auth/codex-account-identity.js +53 -0
  57. package/dist/codex-auth/codex-account-identity.js.map +1 -0
  58. package/dist/codex-auth/codex-auth-dashboard-service.d.ts +46 -0
  59. package/dist/codex-auth/codex-auth-dashboard-service.d.ts.map +1 -0
  60. package/dist/codex-auth/codex-auth-dashboard-service.js +228 -0
  61. package/dist/codex-auth/codex-auth-dashboard-service.js.map +1 -0
  62. package/dist/codex-auth/codex-auth-help.d.ts +7 -0
  63. package/dist/codex-auth/codex-auth-help.d.ts.map +1 -0
  64. package/dist/codex-auth/codex-auth-help.js +87 -0
  65. package/dist/codex-auth/codex-auth-help.js.map +1 -0
  66. package/dist/codex-auth/codex-auth-router.d.ts +16 -0
  67. package/dist/codex-auth/codex-auth-router.d.ts.map +1 -0
  68. package/dist/codex-auth/codex-auth-router.js +77 -0
  69. package/dist/codex-auth/codex-auth-router.js.map +1 -0
  70. package/dist/codex-auth/codex-config-symlink.d.ts +14 -0
  71. package/dist/codex-auth/codex-config-symlink.d.ts.map +1 -0
  72. package/dist/codex-auth/codex-config-symlink.js +128 -0
  73. package/dist/codex-auth/codex-config-symlink.js.map +1 -0
  74. package/dist/codex-auth/codex-profile-paths.d.ts +5 -0
  75. package/dist/codex-auth/codex-profile-paths.d.ts.map +1 -0
  76. package/dist/codex-auth/codex-profile-paths.js +58 -0
  77. package/dist/codex-auth/codex-profile-paths.js.map +1 -0
  78. package/dist/codex-auth/codex-profile-registry.d.ts +34 -0
  79. package/dist/codex-auth/codex-profile-registry.d.ts.map +1 -0
  80. package/dist/codex-auth/codex-profile-registry.js +360 -0
  81. package/dist/codex-auth/codex-profile-registry.js.map +1 -0
  82. package/dist/codex-auth/codex-profile-resources.d.ts +6 -0
  83. package/dist/codex-auth/codex-profile-resources.d.ts.map +1 -0
  84. package/dist/codex-auth/codex-profile-resources.js +119 -0
  85. package/dist/codex-auth/codex-profile-resources.js.map +1 -0
  86. package/dist/codex-auth/commands/create-command.d.ts +9 -0
  87. package/dist/codex-auth/commands/create-command.d.ts.map +1 -0
  88. package/dist/codex-auth/commands/create-command.js +203 -0
  89. package/dist/codex-auth/commands/create-command.js.map +1 -0
  90. package/dist/codex-auth/commands/import-default-command.d.ts +18 -0
  91. package/dist/codex-auth/commands/import-default-command.d.ts.map +1 -0
  92. package/dist/codex-auth/commands/import-default-command.js +385 -0
  93. package/dist/codex-auth/commands/import-default-command.js.map +1 -0
  94. package/dist/codex-auth/commands/index.d.ts +13 -0
  95. package/dist/codex-auth/commands/index.d.ts.map +1 -0
  96. package/dist/codex-auth/commands/index.js +27 -0
  97. package/dist/codex-auth/commands/index.js.map +1 -0
  98. package/dist/codex-auth/commands/login-command.d.ts +9 -0
  99. package/dist/codex-auth/commands/login-command.d.ts.map +1 -0
  100. package/dist/codex-auth/commands/login-command.js +152 -0
  101. package/dist/codex-auth/commands/login-command.js.map +1 -0
  102. package/dist/codex-auth/commands/remove-command.d.ts +10 -0
  103. package/dist/codex-auth/commands/remove-command.d.ts.map +1 -0
  104. package/dist/codex-auth/commands/remove-command.js +230 -0
  105. package/dist/codex-auth/commands/remove-command.js.map +1 -0
  106. package/dist/codex-auth/commands/show-command.d.ts +10 -0
  107. package/dist/codex-auth/commands/show-command.d.ts.map +1 -0
  108. package/dist/codex-auth/commands/show-command.js +127 -0
  109. package/dist/codex-auth/commands/show-command.js.map +1 -0
  110. package/dist/codex-auth/commands/show-detail-view.d.ts +7 -0
  111. package/dist/codex-auth/commands/show-detail-view.d.ts.map +1 -0
  112. package/dist/codex-auth/commands/show-detail-view.js +134 -0
  113. package/dist/codex-auth/commands/show-detail-view.js.map +1 -0
  114. package/dist/codex-auth/commands/switch-command.d.ts +7 -0
  115. package/dist/codex-auth/commands/switch-command.d.ts.map +1 -0
  116. package/dist/codex-auth/commands/switch-command.js +48 -0
  117. package/dist/codex-auth/commands/switch-command.js.map +1 -0
  118. package/dist/codex-auth/commands/types.d.ts +45 -0
  119. package/dist/codex-auth/commands/types.d.ts.map +1 -0
  120. package/dist/codex-auth/commands/types.js +85 -0
  121. package/dist/codex-auth/commands/types.js.map +1 -0
  122. package/dist/codex-auth/commands/use-command.d.ts +16 -0
  123. package/dist/codex-auth/commands/use-command.d.ts.map +1 -0
  124. package/dist/codex-auth/commands/use-command.js +86 -0
  125. package/dist/codex-auth/commands/use-command.js.map +1 -0
  126. package/dist/codex-auth/decode-id-token.d.ts +12 -0
  127. package/dist/codex-auth/decode-id-token.d.ts.map +1 -0
  128. package/dist/codex-auth/decode-id-token.js +83 -0
  129. package/dist/codex-auth/decode-id-token.js.map +1 -0
  130. package/dist/codex-auth/index.d.ts +9 -0
  131. package/dist/codex-auth/index.d.ts.map +1 -0
  132. package/dist/codex-auth/index.js +22 -0
  133. package/dist/codex-auth/index.js.map +1 -0
  134. package/dist/codex-auth/resolve-active-profile.d.ts +13 -0
  135. package/dist/codex-auth/resolve-active-profile.d.ts.map +1 -0
  136. package/dist/codex-auth/resolve-active-profile.js +161 -0
  137. package/dist/codex-auth/resolve-active-profile.js.map +1 -0
  138. package/dist/codex-auth/shell-detect.d.ts +19 -0
  139. package/dist/codex-auth/shell-detect.d.ts.map +1 -0
  140. package/dist/codex-auth/shell-detect.js +129 -0
  141. package/dist/codex-auth/shell-detect.js.map +1 -0
  142. package/dist/codex-auth/types.d.ts +26 -0
  143. package/dist/codex-auth/types.d.ts.map +1 -0
  144. package/dist/codex-auth/types.js +34 -0
  145. package/dist/codex-auth/types.js.map +1 -0
  146. package/dist/commands/cliproxy/variant-subcommand.js +1 -1
  147. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  148. package/dist/commands/command-catalog.d.ts +1 -1
  149. package/dist/commands/command-catalog.d.ts.map +1 -1
  150. package/dist/commands/command-catalog.js +10 -1
  151. package/dist/commands/command-catalog.js.map +1 -1
  152. package/dist/commands/completion-backend.d.ts.map +1 -1
  153. package/dist/commands/completion-backend.js +2 -0
  154. package/dist/commands/completion-backend.js.map +1 -1
  155. package/dist/commands/config-command.d.ts +2 -0
  156. package/dist/commands/config-command.d.ts.map +1 -1
  157. package/dist/commands/config-command.js +31 -20
  158. package/dist/commands/config-command.js.map +1 -1
  159. package/dist/commands/docker/finalize-key-rotation-subcommand.d.ts +2 -0
  160. package/dist/commands/docker/finalize-key-rotation-subcommand.d.ts.map +1 -0
  161. package/dist/commands/docker/finalize-key-rotation-subcommand.js +79 -0
  162. package/dist/commands/docker/finalize-key-rotation-subcommand.js.map +1 -0
  163. package/dist/commands/docker/help-subcommand.d.ts.map +1 -1
  164. package/dist/commands/docker/help-subcommand.js +6 -0
  165. package/dist/commands/docker/help-subcommand.js.map +1 -1
  166. package/dist/commands/docker/index.d.ts.map +1 -1
  167. package/dist/commands/docker/index.js +4 -0
  168. package/dist/commands/docker/index.js.map +1 -1
  169. package/dist/commands/docker/show-key-subcommand.d.ts +2 -0
  170. package/dist/commands/docker/show-key-subcommand.d.ts.map +1 -0
  171. package/dist/commands/docker/show-key-subcommand.js +96 -0
  172. package/dist/commands/docker/show-key-subcommand.js.map +1 -0
  173. package/dist/commands/docker/up-subcommand.d.ts.map +1 -1
  174. package/dist/commands/docker/up-subcommand.js +4 -0
  175. package/dist/commands/docker/up-subcommand.js.map +1 -1
  176. package/dist/commands/persist-command.d.ts.map +1 -1
  177. package/dist/commands/persist-command.js +77 -5
  178. package/dist/commands/persist-command.js.map +1 -1
  179. package/dist/dispatcher/cli-argument-parser.d.ts +3 -2
  180. package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
  181. package/dist/dispatcher/cli-argument-parser.js +37 -7
  182. package/dist/dispatcher/cli-argument-parser.js.map +1 -1
  183. package/dist/dispatcher/pre-dispatch.d.ts.map +1 -1
  184. package/dist/dispatcher/pre-dispatch.js +7 -0
  185. package/dist/dispatcher/pre-dispatch.js.map +1 -1
  186. package/dist/dispatcher/target-executor.d.ts +2 -2
  187. package/dist/dispatcher/target-executor.d.ts.map +1 -1
  188. package/dist/dispatcher/target-executor.js +5 -5
  189. package/dist/dispatcher/target-executor.js.map +1 -1
  190. package/dist/docker/docker-bootstrap.d.ts +1 -1
  191. package/dist/docker/docker-bootstrap.d.ts.map +1 -1
  192. package/dist/docker/docker-bootstrap.js +99 -3
  193. package/dist/docker/docker-bootstrap.js.map +1 -1
  194. package/dist/docker/docker-executor.d.ts +3 -0
  195. package/dist/docker/docker-executor.d.ts.map +1 -1
  196. package/dist/docker/docker-executor.js +53 -0
  197. package/dist/docker/docker-executor.js.map +1 -1
  198. package/dist/docker/docker-key-rotation.d.ts +48 -0
  199. package/dist/docker/docker-key-rotation.d.ts.map +1 -0
  200. package/dist/docker/docker-key-rotation.js +179 -0
  201. package/dist/docker/docker-key-rotation.js.map +1 -0
  202. package/dist/management/checks/config-check.d.ts.map +1 -1
  203. package/dist/management/checks/config-check.js +10 -1
  204. package/dist/management/checks/config-check.js.map +1 -1
  205. package/dist/management/doctor.d.ts +1 -0
  206. package/dist/management/doctor.d.ts.map +1 -1
  207. package/dist/management/doctor.js +23 -0
  208. package/dist/management/doctor.js.map +1 -1
  209. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  210. package/dist/proxy/proxy-daemon.js +15 -3
  211. package/dist/proxy/proxy-daemon.js.map +1 -1
  212. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  213. package/dist/proxy/server/messages-route.js +27 -1
  214. package/dist/proxy/server/messages-route.js.map +1 -1
  215. package/dist/shared/claude-extension-setup.d.ts.map +1 -1
  216. package/dist/shared/claude-extension-setup.js +21 -1
  217. package/dist/shared/claude-extension-setup.js.map +1 -1
  218. package/dist/shared/stale-codex-translator-settings.d.ts +4 -0
  219. package/dist/shared/stale-codex-translator-settings.d.ts.map +1 -0
  220. package/dist/shared/stale-codex-translator-settings.js +35 -0
  221. package/dist/shared/stale-codex-translator-settings.js.map +1 -0
  222. package/dist/targets/codex-adapter.d.ts.map +1 -1
  223. package/dist/targets/codex-adapter.js +64 -5
  224. package/dist/targets/codex-adapter.js.map +1 -1
  225. package/dist/targets/codex-cliproxy-provider-config.d.ts.map +1 -1
  226. package/dist/targets/codex-cliproxy-provider-config.js +56 -24
  227. package/dist/targets/codex-cliproxy-provider-config.js.map +1 -1
  228. package/dist/ui/assets/Trans-dEd8UC39.js +1 -0
  229. package/dist/ui/assets/accounts-B2THsSu_.js +1 -0
  230. package/dist/ui/assets/{alert-dialog-DC1l1GRX.js → alert-dialog-Vurq1xzV.js} +1 -1
  231. package/dist/ui/assets/api-CjLfG9mL.js +4 -0
  232. package/dist/ui/assets/auth-section-iGkrMaT4.js +1 -0
  233. package/dist/ui/assets/backups-section-DUGG_4KP.js +1 -0
  234. package/dist/ui/assets/channels-CimlCc2d.js +1 -0
  235. package/dist/ui/assets/{charts-CeK2xCSo.js → charts-eIPy2oG6.js} +34 -34
  236. package/dist/ui/assets/{checkbox-Dgd2ucy2.js → checkbox-HiMHasEB.js} +1 -1
  237. package/dist/ui/assets/claude-extension-B2v9bsN9.js +1 -0
  238. package/dist/ui/assets/{cliproxy-ai-providers-DxoCNEaQ.js → cliproxy-ai-providers-2lI5jSHb.js} +6 -6
  239. package/dist/ui/assets/cliproxy-control-panel-63gDI-e5.js +1 -0
  240. package/dist/ui/assets/cliproxy-fai69Vyd.js +4 -0
  241. package/dist/ui/assets/code-highlight-ClSMkeL5.js +1 -0
  242. package/dist/ui/assets/codex-i_hfI4Tv.js +30 -0
  243. package/dist/ui/assets/{confirm-dialog-nDFNrH0F.js → confirm-dialog-B_6SrSxL.js} +1 -1
  244. package/dist/ui/assets/copilot-BgG5x_X6.js +3 -0
  245. package/dist/ui/assets/cursor-DF63lFcy.js +1 -0
  246. package/dist/ui/assets/droid-CqlQmFtN.js +2 -0
  247. package/dist/ui/assets/globalenv-section-CYNmD12i.js +1 -0
  248. package/dist/ui/assets/health-7ZO5PEm9.js +1 -0
  249. package/dist/ui/assets/index-BC5ssPfF.js +1 -0
  250. package/dist/ui/assets/index-BMoGhs28.css +1 -0
  251. package/dist/ui/assets/index-Bgcd4FYK.js +1 -0
  252. package/dist/ui/assets/index-CFu0saCM.js +1 -0
  253. package/dist/ui/assets/index-CqsmdQoA.js +1 -0
  254. package/dist/ui/assets/index-D3kxCuJ7.js +1 -0
  255. package/dist/ui/assets/index-DmV9wJET.js +56 -0
  256. package/dist/ui/assets/index-hHb9o079.js +1 -0
  257. package/dist/ui/assets/logs-Dy-yZhIK.js +1 -0
  258. package/dist/ui/assets/{masked-input-5TJ4LSuz.js → masked-input-BSLeznEs.js} +1 -1
  259. package/dist/ui/assets/proxy-status-widget-hRH1agF9.js +1 -0
  260. package/dist/ui/assets/{raw-json-settings-editor-panel-Fg4WMiuD.js → raw-json-settings-editor-panel-Bs83yILR.js} +1 -1
  261. package/dist/ui/assets/{searchable-select-CPJn5vA1.js → searchable-select-pXUC_0Ih.js} +1 -1
  262. package/dist/ui/assets/{separator-BrQkfpAp.js → separator-FZR_61I9.js} +1 -1
  263. package/dist/ui/assets/shared-BiIwM7--.js +8 -0
  264. package/dist/ui/assets/{table-DRzNRkpJ.js → table-_9IusQ8G.js} +1 -1
  265. package/dist/ui/assets/updates-ButNfJqt.js +1 -0
  266. package/dist/ui/assets/{use-accounts-B6AXtlfF.js → use-accounts-BdtI0lBv.js} +1 -1
  267. package/dist/ui/index.html +3 -3
  268. package/dist/utils/claude-subcommand-detector.d.ts +12 -3
  269. package/dist/utils/claude-subcommand-detector.d.ts.map +1 -1
  270. package/dist/utils/claude-subcommand-detector.js +59 -12
  271. package/dist/utils/claude-subcommand-detector.js.map +1 -1
  272. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  273. package/dist/web-server/middleware/auth-middleware.js +25 -1
  274. package/dist/web-server/middleware/auth-middleware.js.map +1 -1
  275. package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
  276. package/dist/web-server/routes/claude-extension-routes.js +5 -0
  277. package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
  278. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +8 -0
  279. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  280. package/dist/web-server/routes/cliproxy-stats-routes.js +13 -26
  281. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  282. package/dist/web-server/routes/codex-routes.d.ts.map +1 -1
  283. package/dist/web-server/routes/codex-routes.js +14 -0
  284. package/dist/web-server/routes/codex-routes.js.map +1 -1
  285. package/dist/web-server/services/cliproxy-dashboard-restart-service.d.ts +21 -0
  286. package/dist/web-server/services/cliproxy-dashboard-restart-service.d.ts.map +1 -0
  287. package/dist/web-server/services/cliproxy-dashboard-restart-service.js +49 -0
  288. package/dist/web-server/services/cliproxy-dashboard-restart-service.js.map +1 -0
  289. package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
  290. package/dist/web-server/services/codex-dashboard-service.js +30 -3
  291. package/dist/web-server/services/codex-dashboard-service.js.map +1 -1
  292. package/dist/web-server/usage/aggregator.d.ts +13 -7
  293. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  294. package/dist/web-server/usage/aggregator.js +37 -22
  295. package/dist/web-server/usage/aggregator.js.map +1 -1
  296. package/dist/web-server/usage/handlers.d.ts +1 -0
  297. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  298. package/dist/web-server/usage/handlers.js +16 -8
  299. package/dist/web-server/usage/handlers.js.map +1 -1
  300. package/dist/web-server/usage/profile-filter.d.ts +13 -0
  301. package/dist/web-server/usage/profile-filter.d.ts.map +1 -0
  302. package/dist/web-server/usage/profile-filter.js +30 -0
  303. package/dist/web-server/usage/profile-filter.js.map +1 -0
  304. package/dist/web-server/usage/types.d.ts +8 -0
  305. package/dist/web-server/usage/types.d.ts.map +1 -1
  306. package/lib/hooks/websearch-transformer.cjs +12 -3
  307. package/lib/mcp/ccs-browser-server.cjs +217 -12
  308. package/package.json +1 -1
  309. package/scripts/docker-dashboard-sunset-guard.js +171 -0
  310. package/scripts/run-test-bucket.js +1 -0
  311. package/scripts/verify-bundle.js +4 -1
  312. package/dist/ui/assets/accounts-BQu3Aeey.js +0 -1
  313. package/dist/ui/assets/api-BTbrbjic.js +0 -4
  314. package/dist/ui/assets/auth-section-BsSVWOMp.js +0 -1
  315. package/dist/ui/assets/backups-section-BGHYHASS.js +0 -1
  316. package/dist/ui/assets/channels-vJ8L4j-z.js +0 -1
  317. package/dist/ui/assets/claude-extension-B3ern4Ad.js +0 -1
  318. package/dist/ui/assets/cliproxy-CGljI0Or.js +0 -4
  319. package/dist/ui/assets/cliproxy-control-panel-BJ3Mliy1.js +0 -1
  320. package/dist/ui/assets/code-highlight-D4E79GKQ.js +0 -3
  321. package/dist/ui/assets/codex-DBGHPn0v.js +0 -30
  322. package/dist/ui/assets/copilot-CE_Z3NB0.js +0 -3
  323. package/dist/ui/assets/cursor-YzGsSR_d.js +0 -1
  324. package/dist/ui/assets/droid-C-ItViCi.js +0 -2
  325. package/dist/ui/assets/globalenv-section-C9gSGyZ8.js +0 -1
  326. package/dist/ui/assets/health-DEeA97sQ.js +0 -1
  327. package/dist/ui/assets/index-B71yJlMj.css +0 -1
  328. package/dist/ui/assets/index-BPVO-QAw.js +0 -1
  329. package/dist/ui/assets/index-BRZp_Csi.js +0 -72
  330. package/dist/ui/assets/index-BYUwpOeA.js +0 -1
  331. package/dist/ui/assets/index-D2r_fAW5.js +0 -1
  332. package/dist/ui/assets/index-DGiziSVQ.js +0 -1
  333. package/dist/ui/assets/index-DwG6bbUr.js +0 -1
  334. package/dist/ui/assets/index-Dwtj4wGT.js +0 -1
  335. package/dist/ui/assets/logs-Mt2W7M3G.js +0 -1
  336. package/dist/ui/assets/proxy-status-widget-BQOAlYsb.js +0 -1
  337. package/dist/ui/assets/shared-BlkDl2HF.js +0 -8
  338. package/dist/ui/assets/updates-BQNeSzLj.js +0 -1
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ /**
3
+ * Dashboard service for codex-auth profile summary.
4
+ *
5
+ * Reads the profile registry, decodes each profile's auth.json JWT,
6
+ * resolves the active profile via env precedence, and returns the
7
+ * API response shape for GET /api/codex/profiles.
8
+ *
9
+ * Security: tokens NEVER appear in the returned object. Only display-safe
10
+ * fields (email, plan, accountId) are extracted from JWT. auth.json is
11
+ * read/decoded and then discarded.
12
+ *
13
+ * Cache: 5-second in-memory cache reduces full registry/auth reads during
14
+ * dashboard polling, but each call still stats the registry so corruption or
15
+ * edits are surfaced immediately instead of serving stale success.
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.getCodexAuthProfilesSummary = exports.invalidateCodexAuthProfilesCache = void 0;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const logging_1 = require("../services/logging");
45
+ const codex_account_identity_1 = require("./codex-account-identity");
46
+ const decode_id_token_1 = require("./decode-id-token");
47
+ const codex_profile_paths_1 = require("./codex-profile-paths");
48
+ const types_1 = require("./types");
49
+ const codex_profile_registry_1 = require("./codex-profile-registry");
50
+ const logger = (0, logging_1.createLogger)('codex-auth:dashboard');
51
+ // ── Cache ───────────────────────────────────────────────────────────────────
52
+ let cache = null;
53
+ const TTL_MS = 5000;
54
+ /**
55
+ * Invalidate the in-process cache so the next call re-reads from disk.
56
+ * Useful for Phase 2 CLI commands running in the same process as the dashboard.
57
+ * Out-of-process invocations rely on the 5s TTL.
58
+ */
59
+ function invalidateCodexAuthProfilesCache() {
60
+ cache = null;
61
+ }
62
+ exports.invalidateCodexAuthProfilesCache = invalidateCodexAuthProfilesCache;
63
+ // ── Registry helpers ────────────────────────────────────────────────────────
64
+ function getRegistryCacheSignature() {
65
+ const registryPath = (0, codex_profile_paths_1.getCodexAuthRegistryPath)();
66
+ try {
67
+ const stat = fs.statSync(registryPath);
68
+ return ['present', stat.dev, stat.ino, stat.size, stat.mtimeMs, stat.ctimeMs].join(':');
69
+ }
70
+ catch (err) {
71
+ if (err?.code === 'ENOENT') {
72
+ return 'missing';
73
+ }
74
+ const msg = err instanceof Error ? err.message : String(err);
75
+ logger.warn('codex-auth.dashboard.registry-stat-failed', `Registry stat failed: ${msg}`);
76
+ throw new Error('Codex auth profile registry could not be checked safely');
77
+ }
78
+ }
79
+ function readRegistry() {
80
+ const registryPath = (0, codex_profile_paths_1.getCodexAuthRegistryPath)();
81
+ if (!fs.existsSync(registryPath)) {
82
+ return { version: types_1.CODEX_PROFILE_SCHEMA_VERSION, default: null, profiles: {} };
83
+ }
84
+ try {
85
+ const registry = new codex_profile_registry_1.CodexProfileRegistry(registryPath);
86
+ const profiles = {};
87
+ for (const name of registry.listProfiles()) {
88
+ profiles[name] = registry.getProfile(name);
89
+ }
90
+ return {
91
+ version: types_1.CODEX_PROFILE_SCHEMA_VERSION,
92
+ default: registry.getDefault(),
93
+ profiles,
94
+ };
95
+ }
96
+ catch (err) {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ logger.warn('codex-auth.dashboard.registry-read-failed', `Registry read failed: ${msg}`);
99
+ throw new Error(`Codex auth profile registry could not be read safely: ${msg}`);
100
+ }
101
+ }
102
+ // ── Profile entry builder ───────────────────────────────────────────────────
103
+ function buildProfileEntry(name) {
104
+ const codexHome = path.join((0, codex_profile_paths_1.getCodexInstancesDir)(), name);
105
+ const authJsonPath = path.join(codexHome, 'auth.json');
106
+ let authValid = false;
107
+ let email = null;
108
+ let plan = null;
109
+ let accountId = null;
110
+ try {
111
+ if (fs.existsSync(authJsonPath)) {
112
+ // decodeAccountIdentity never throws; returns {} on any error
113
+ const identity = (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath);
114
+ authValid = Object.keys(identity).length > 0 || _hasStructurallyValidIdToken(authJsonPath);
115
+ email = identity.email ?? null;
116
+ plan = identity.plan_type ?? null;
117
+ accountId = identity.account_id ?? null;
118
+ logger.debug('codex-auth.dashboard.decoded', 'Decoded auth profile summary', {
119
+ profileName: name,
120
+ hasEmail: email !== null,
121
+ hasPlan: plan !== null,
122
+ hasAccountId: accountId !== null,
123
+ });
124
+ }
125
+ }
126
+ catch (err) {
127
+ const msg = err instanceof Error ? err.message : String(err);
128
+ logger.warn('codex-auth.dashboard.decode-error', `Failed to decode auth for profile=${name}: ${msg}`);
129
+ }
130
+ return {
131
+ name,
132
+ codexHome,
133
+ email,
134
+ plan,
135
+ accountId,
136
+ // lastUsed is set below by caller from registry metadata
137
+ lastUsed: null,
138
+ authValid,
139
+ };
140
+ }
141
+ /**
142
+ * Check whether auth.json has a parseable JWT payload, even if it has no
143
+ * display fields. A non-empty but malformed token is not valid auth.
144
+ * This sets authValid=true for valid-but-sparse tokens.
145
+ */
146
+ function _hasStructurallyValidIdToken(authJsonPath) {
147
+ try {
148
+ const raw = fs.readFileSync(authJsonPath, 'utf8');
149
+ const parsed = JSON.parse(raw);
150
+ const idToken = parsed?.tokens?.id_token;
151
+ return typeof idToken === 'string' && (0, decode_id_token_1.hasStructurallyValidIdToken)(idToken);
152
+ }
153
+ catch {
154
+ return false;
155
+ }
156
+ }
157
+ // ── Active resolution ───────────────────────────────────────────────────────
158
+ function resolveActive(registry) {
159
+ const instancesDir = (0, codex_profile_paths_1.getCodexInstancesDir)();
160
+ // Precedence 1: explicit $CODEX_HOME set by env (ccsxp, manual)
161
+ const codexHome = (process.env.CODEX_HOME ?? '').trim();
162
+ if (codexHome) {
163
+ // Attempt reverse-map: does any registered profile's codexHome match?
164
+ const matchedName = Object.keys(registry.profiles).find((name) => path.join(instancesDir, name) === codexHome) ??
165
+ null;
166
+ return {
167
+ name: matchedName,
168
+ source: 'explicit-codex-home',
169
+ codexHome,
170
+ };
171
+ }
172
+ // Precedence 2: $CCS_CODEX_PROFILE env var
173
+ const profileEnv = (process.env.CCS_CODEX_PROFILE ?? '').trim();
174
+ if (profileEnv) {
175
+ if (!Object.prototype.hasOwnProperty.call(registry.profiles, profileEnv)) {
176
+ logger.warn('codex-auth.dashboard.stale-env-profile', 'Ignoring CCS_CODEX_PROFILE because it is not registered', { profileName: profileEnv });
177
+ return null;
178
+ }
179
+ return {
180
+ name: profileEnv,
181
+ source: 'env',
182
+ codexHome: path.join(instancesDir, profileEnv),
183
+ };
184
+ }
185
+ // Precedence 3: registry default
186
+ const defaultProfile = registry.default;
187
+ if (defaultProfile) {
188
+ return {
189
+ name: defaultProfile,
190
+ source: 'default',
191
+ codexHome: path.join(instancesDir, defaultProfile),
192
+ };
193
+ }
194
+ // Precedence 4: no active profile (legacy ~/.codex mode)
195
+ return null;
196
+ }
197
+ // ── Core builder ────────────────────────────────────────────────────────────
198
+ async function buildSummary() {
199
+ const registry = readRegistry();
200
+ const active = resolveActive(registry);
201
+ const profiles = Object.entries(registry.profiles).map(([name, meta]) => {
202
+ const entry = buildProfileEntry(name);
203
+ entry.lastUsed = meta.last_used ?? null;
204
+ return entry;
205
+ });
206
+ return {
207
+ active,
208
+ default: registry.default,
209
+ profiles,
210
+ };
211
+ }
212
+ // ── Public API ──────────────────────────────────────────────────────────────
213
+ /**
214
+ * Returns the codex-auth profiles summary, using a 5s in-memory cache.
215
+ * Tokens are never included in the returned object.
216
+ */
217
+ async function getCodexAuthProfilesSummary() {
218
+ const now = Date.now();
219
+ const registrySignature = getRegistryCacheSignature();
220
+ if (cache && cache.expiresAt > now && cache.registrySignature === registrySignature) {
221
+ return cache.value;
222
+ }
223
+ const value = await buildSummary();
224
+ cache = { value, expiresAt: now + TTL_MS, registrySignature };
225
+ return value;
226
+ }
227
+ exports.getCodexAuthProfilesSummary = getCodexAuthProfilesSummary;
228
+ //# sourceMappingURL=codex-auth-dashboard-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth-dashboard-service.js","sourceRoot":"","sources":["../../src/codex-auth/codex-auth-dashboard-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Help text for `ccsx auth` command tree.
3
+ * ASCII-only. Includes ccsxp scope clarifier (H5).
4
+ */
5
+ export declare function printCodexAuthHelp(): void;
6
+ export declare function printCodexAuthUseHelp(): void;
7
+ //# sourceMappingURL=codex-auth-help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth-help.d.ts","sourceRoot":"","sources":["../../src/codex-auth/codex-auth-help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,kBAAkB,IAAI,IAAI,CAkDzC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAyB5C"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Help text for `ccsx auth` command tree.
4
+ * ASCII-only. Includes ccsxp scope clarifier (H5).
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.printCodexAuthUseHelp = exports.printCodexAuthHelp = void 0;
8
+ function printCodexAuthHelp() {
9
+ process.stdout.write(`CCS Concurrent Codex Account Management
10
+
11
+ Usage
12
+ ccsx auth <command> [options]
13
+
14
+ Commands
15
+ create <name> Create a new Codex profile (idempotent)
16
+ login <name> Run \`codex login\` against the profile (auto-creates if missing)
17
+ switch <name> Set the persistent default Codex profile
18
+ use <name> Emit shell-eval exports to activate a profile in this shell only
19
+ show [name] List profiles or show details for one
20
+ remove <name> Delete a profile (auth.json + profile dir + registry entry)
21
+ import-default <name> Migrate legacy ~/.codex/auth.json into a new profile
22
+
23
+ Shell activation (per terminal)
24
+ bash/zsh: eval "$(ccsx auth use work)"
25
+ fish: ccsx auth use work | source
26
+ pwsh: ccsx auth use work | Invoke-Expression
27
+
28
+ Examples
29
+ ccsx auth create work
30
+ ccsx auth login work # OAuth in browser
31
+ ccsx auth create personal
32
+ ccsx auth login personal
33
+ eval "$(ccsx auth use work)" # terminal A
34
+ eval "$(ccsx auth use personal)" # terminal B
35
+ codex # each terminal uses its own account
36
+ ccsx auth show
37
+ ccsx auth switch personal # change persistent default
38
+ ccsx auth remove old --yes
39
+
40
+ Options
41
+ --yes, -y Skip confirmation (remove)
42
+ --force Re-link config.toml (create) | override default check (remove) |
43
+ overwrite existing profile (import-default)
44
+ --json JSON output (show)
45
+ --shell <s> Override shell detection (use): bash|zsh|fish|pwsh|cmd
46
+ --with-history Copy history.jsonl + sessions/ too (import-default, default: off)
47
+ --force-while-running Allow import-default even if Codex is running (risky)
48
+
49
+ Notes
50
+ Auth state (auth.json) and history.jsonl are isolated per profile.
51
+ config.toml is shared via symlink to ~/.codex/config.toml.
52
+ Default profile (switch) is persistent across shells.
53
+ Active profile (use) is per-terminal via CODEX_HOME / CCS_CODEX_PROFILE.
54
+
55
+ Note: This feature applies only to native \`codex\`. \`ccsxp\` ignores
56
+ CCS_CODEX_PROFILE and uses its own cliproxy pool.
57
+ `);
58
+ }
59
+ exports.printCodexAuthHelp = printCodexAuthHelp;
60
+ function printCodexAuthUseHelp() {
61
+ process.stdout.write(`ccsx auth use — Activate a Codex profile in the current shell
62
+
63
+ Usage
64
+ ccsx auth use <name> [--shell <bash|zsh|fish|pwsh|cmd>]
65
+
66
+ Description
67
+ Emits shell-evalable export statements to stdout. Use within eval "$(...)"
68
+ only. Output to stdout is shell-evaluatable; do not pipe to other commands.
69
+
70
+ All errors and informational messages go to stderr so the eval is never
71
+ contaminated.
72
+
73
+ Shell evaluation
74
+ bash/zsh: eval "$(ccsx auth use work)"
75
+ fish: ccsx auth use work | source
76
+ pwsh: ccsx auth use work | Invoke-Expression
77
+ cmd: (not supported natively; use PowerShell)
78
+
79
+ Options
80
+ --shell <s> Override auto-detected shell: bash|zsh|fish|pwsh|cmd
81
+
82
+ Note: This profile applies only to native \`codex\`. \`ccsxp\` ignores
83
+ CCS_CODEX_PROFILE and uses its own cliproxy pool.
84
+ `);
85
+ }
86
+ exports.printCodexAuthUseHelp = printCodexAuthUseHelp;
87
+ //# sourceMappingURL=codex-auth-help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth-help.js","sourceRoot":"","sources":["../../src/codex-auth/codex-auth-help.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,SAAgB,kBAAkB;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDtB,CAAC,CAAC;AACH,CAAC;AAlDD,gDAkDC;AAED,SAAgB,qBAAqB;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC,CAAC;AACH,CAAC;AAzBD,sDAyBC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Codex auth command router.
3
+ *
4
+ * Exports runCodexAuth(argv) which routes argv[0] (the subcommand) to
5
+ * the appropriate handler. Returns an exit code (0 = success, non-zero = error).
6
+ *
7
+ * Phase 3 wires this into src/bin/codex-runtime.ts for argv[2]==='auth'.
8
+ */
9
+ /**
10
+ * Route a `ccsx auth <subcommand> [...args]` invocation.
11
+ *
12
+ * @param argv - Arguments after `auth`, e.g. ['create', 'work'] or ['--help']
13
+ * @returns Exit code (0 success, 1 user error, 2+ system error)
14
+ */
15
+ export declare function runCodexAuth(argv: string[]): Promise<number>;
16
+ //# sourceMappingURL=codex-auth-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth-router.d.ts","sourceRoot":"","sources":["../../src/codex-auth/codex-auth-router.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDlE"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Codex auth command router.
4
+ *
5
+ * Exports runCodexAuth(argv) which routes argv[0] (the subcommand) to
6
+ * the appropriate handler. Returns an exit code (0 = success, non-zero = error).
7
+ *
8
+ * Phase 3 wires this into src/bin/codex-runtime.ts for argv[2]==='auth'.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.runCodexAuth = void 0;
12
+ const codex_profile_registry_1 = require("./codex-profile-registry");
13
+ const codex_auth_help_1 = require("./codex-auth-help");
14
+ const index_1 = require("./commands/index");
15
+ const packageJson = require('../../package.json');
16
+ /**
17
+ * Route a `ccsx auth <subcommand> [...args]` invocation.
18
+ *
19
+ * @param argv - Arguments after `auth`, e.g. ['create', 'work'] or ['--help']
20
+ * @returns Exit code (0 success, 1 user error, 2+ system error)
21
+ */
22
+ async function runCodexAuth(argv) {
23
+ const [subcommand, ...rest] = argv;
24
+ // Help / no-arg
25
+ if (!subcommand || subcommand === '--help' || subcommand === '-h' || subcommand === 'help') {
26
+ (0, codex_auth_help_1.printCodexAuthHelp)();
27
+ return 0;
28
+ }
29
+ // Version passthrough
30
+ if (subcommand === '--version' || subcommand === '-v') {
31
+ process.stdout.write(`ccsx auth ${packageJson.version}\n`);
32
+ return 0;
33
+ }
34
+ const registry = new codex_profile_registry_1.CodexProfileRegistry();
35
+ const ctx = {
36
+ registry,
37
+ version: packageJson.version,
38
+ };
39
+ try {
40
+ switch (subcommand) {
41
+ case 'create':
42
+ await (0, index_1.handleCreateCodex)(ctx, rest);
43
+ return 0;
44
+ case 'login':
45
+ await (0, index_1.handleLoginCodex)(ctx, rest);
46
+ return 0;
47
+ case 'switch':
48
+ await (0, index_1.handleSwitchCodex)(ctx, rest);
49
+ return 0;
50
+ case 'use':
51
+ await (0, index_1.handleUseCodex)(ctx, rest);
52
+ return 0;
53
+ case 'show':
54
+ await (0, index_1.handleShowCodex)(ctx, rest);
55
+ return 0;
56
+ case 'remove':
57
+ await (0, index_1.handleRemoveCodex)(ctx, rest);
58
+ return 0;
59
+ case 'import-default':
60
+ await (0, index_1.handleImportDefaultCodex)(ctx, rest);
61
+ return 0;
62
+ default:
63
+ process.stderr.write(`[X] Unknown command: ${subcommand}\n`);
64
+ process.stderr.write(` ccsx auth --help\n`);
65
+ return 1;
66
+ }
67
+ }
68
+ catch (err) {
69
+ // Unhandled errors from handlers (e.g. process.exit called inside)
70
+ // These should be rare — handlers use exitWithError() which calls process.exit
71
+ const msg = err instanceof Error ? err.message : String(err);
72
+ process.stderr.write(`[X] Unexpected error in ccsx auth ${subcommand}: ${msg}\n`);
73
+ return 1;
74
+ }
75
+ }
76
+ exports.runCodexAuth = runCodexAuth;
77
+ //# sourceMappingURL=codex-auth-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth-router.js","sourceRoot":"","sources":["../../src/codex-auth/codex-auth-router.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,qEAAgE;AAChE,uDAAuD;AACvD,4CAQ0B;AAG1B,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnC,gBAAgB;IAChB,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC3F,IAAA,oCAAkB,GAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sBAAsB;IACtB,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,6CAAoB,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAwB;QAC/B,QAAQ;QACR,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC;IAEF,IAAI,CAAC;QACH,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,CAAC;YACX,KAAK,OAAO;gBACV,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,OAAO,CAAC,CAAC;YACX,KAAK,QAAQ;gBACX,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,CAAC;YACX,KAAK,KAAK;gBACR,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,CAAC,CAAC;YACX,KAAK,MAAM;gBACT,MAAM,IAAA,uBAAe,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC;YACX,KAAK,QAAQ;gBACX,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,CAAC;YACX,KAAK,gBAAgB;gBACnB,MAAM,IAAA,gCAAwB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1C,OAAO,CAAC,CAAC;YACX;gBACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,IAAI,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC/C,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,+EAA+E;QAC/E,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAxDD,oCAwDC"}
@@ -0,0 +1,14 @@
1
+ export interface EnsureSharedConfigSymlinkOptions {
2
+ overwriteRegularFile?: boolean;
3
+ }
4
+ /**
5
+ * Ensure <profileDir>/config.toml points at the shared ~/.codex/config.toml.
6
+ * Self-healing: recreates stale or missing symlinks. If symlink creation is
7
+ * unavailable, copies the shared config so the profile still has settings.
8
+ *
9
+ * @param profileDir - The per-profile directory (will be created if missing).
10
+ * @param sharedConfigPath - Override for the shared target path (used in tests
11
+ * to avoid touching real ~/.codex/config.toml). Defaults to getSharedCodexConfigPath().
12
+ */
13
+ export declare function ensureSharedConfigSymlink(profileDir: string, sharedConfigPath?: string, options?: EnsureSharedConfigSymlinkOptions): void;
14
+ //# sourceMappingURL=codex-config-symlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-config-symlink.d.ts","sourceRoot":"","sources":["../../src/codex-auth/codex-config-symlink.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gCAAgC;IAC/C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,GAAE,gCAAqC,GAC7C,IAAI,CA0EN"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ensureSharedConfigSymlink = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const logging_1 = require("../services/logging");
30
+ const codex_profile_paths_1 = require("./codex-profile-paths");
31
+ const logger = (0, logging_1.createLogger)('codex-auth:symlink');
32
+ /**
33
+ * Ensure <profileDir>/config.toml points at the shared ~/.codex/config.toml.
34
+ * Self-healing: recreates stale or missing symlinks. If symlink creation is
35
+ * unavailable, copies the shared config so the profile still has settings.
36
+ *
37
+ * @param profileDir - The per-profile directory (will be created if missing).
38
+ * @param sharedConfigPath - Override for the shared target path (used in tests
39
+ * to avoid touching real ~/.codex/config.toml). Defaults to getSharedCodexConfigPath().
40
+ */
41
+ function ensureSharedConfigSymlink(profileDir, sharedConfigPath, options = {}) {
42
+ const targetPath = sharedConfigPath ?? (0, codex_profile_paths_1.getSharedCodexConfigPath)();
43
+ const linkPath = path.join(profileDir, 'config.toml');
44
+ // Ensure profile directory exists
45
+ fs.mkdirSync(profileDir, { recursive: true, mode: 0o700 });
46
+ // Ensure shared config target parent directory exists
47
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true, mode: 0o700 });
48
+ // Create empty shared config if it doesn't exist — Codex will populate on first run
49
+ if (!fs.existsSync(targetPath)) {
50
+ fs.writeFileSync(targetPath, '', { mode: 0o600 });
51
+ logger.stage('dispatch', 'codex.shared-config.created', 'Created empty shared config.toml', {
52
+ path: targetPath,
53
+ });
54
+ }
55
+ // Inspect whatever currently exists at the link path
56
+ let existingStat = null;
57
+ try {
58
+ existingStat = fs.lstatSync(linkPath);
59
+ }
60
+ catch {
61
+ // ENOENT — nothing there yet, proceed to create
62
+ }
63
+ if (existingStat !== null) {
64
+ if (existingStat.isSymbolicLink()) {
65
+ const currentTarget = fs.readlinkSync(linkPath);
66
+ if (currentTarget === targetPath) {
67
+ // Already correct — idempotent return
68
+ logger.stage('dispatch', 'codex.symlink.ok', 'Shared config symlink already correct', {
69
+ link: linkPath,
70
+ });
71
+ return;
72
+ }
73
+ // Stale symlink — remove and re-create
74
+ fs.unlinkSync(linkPath);
75
+ logger.stage('dispatch', 'codex.symlink.repaired', 'Replaced stale symlink', {
76
+ link: linkPath,
77
+ was: currentTarget,
78
+ now: targetPath,
79
+ });
80
+ }
81
+ else if (options.overwriteRegularFile ||
82
+ isRegularConfigCopyUnmodified(linkPath, targetPath)) {
83
+ // Explicit repair or unchanged fallback copy — replace with a shared symlink when possible.
84
+ process.stderr.write(`[!] codex-auth: overwriting regular file at ${linkPath} with symlink to shared config.toml\n`);
85
+ fs.unlinkSync(linkPath);
86
+ }
87
+ else {
88
+ process.stderr.write(`[!] codex-auth: preserving existing regular config.toml at ${linkPath}; ` +
89
+ `use ccsx auth create <name> --force to refresh it.\n`);
90
+ logger.warn('codex-auth.symlink-regular-file-preserved', 'Preserved regular config.toml', {
91
+ link: linkPath,
92
+ target: targetPath,
93
+ });
94
+ return;
95
+ }
96
+ }
97
+ try {
98
+ fs.symlinkSync(targetPath, linkPath);
99
+ logger.stage('dispatch', 'codex.symlink.created', 'Created shared config symlink', {
100
+ link: linkPath,
101
+ target: targetPath,
102
+ });
103
+ }
104
+ catch (err) {
105
+ copySharedConfigFallback(targetPath, linkPath, err);
106
+ }
107
+ }
108
+ exports.ensureSharedConfigSymlink = ensureSharedConfigSymlink;
109
+ function isRegularConfigCopyUnmodified(linkPath, targetPath) {
110
+ try {
111
+ return fs.readFileSync(linkPath, 'utf8') === fs.readFileSync(targetPath, 'utf8');
112
+ }
113
+ catch {
114
+ return false;
115
+ }
116
+ }
117
+ function copySharedConfigFallback(targetPath, linkPath, err) {
118
+ fs.copyFileSync(targetPath, linkPath);
119
+ fs.chmodSync(linkPath, 0o600);
120
+ process.stderr.write(`[!] codex-auth: symlink unavailable; copied shared config.toml to ${linkPath}. ` +
121
+ `Config edits won't propagate automatically.\n`);
122
+ logger.warn('codex-auth.symlink-copy-fallback', 'Copied shared config after symlink failure', {
123
+ link: linkPath,
124
+ target: targetPath,
125
+ error: err instanceof Error ? err.message : String(err),
126
+ });
127
+ }
128
+ //# sourceMappingURL=codex-config-symlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-config-symlink.js","sourceRoot":"","sources":["../../src/codex-auth/codex-config-symlink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function getCodexAuthRegistryPath(): string;
2
+ export declare function getCodexInstancesDir(): string;
3
+ export declare function resolveCodexProfileDir(name: string): string;
4
+ export declare function getSharedCodexConfigPath(): string;
5
+ //# sourceMappingURL=codex-profile-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-profile-paths.d.ts","sourceRoot":"","sources":["../../src/codex-auth/codex-profile-paths.ts"],"names":[],"mappings":"AAKA,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa3D;AAID,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}