@kaitranntt/ccs 7.79.1-dev.3 → 7.79.1-dev.31
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.
- package/README.md +29 -11
- package/dist/bin/ccsxp-runtime.d.ts.map +1 -1
- package/dist/bin/ccsxp-runtime.js +8 -0
- package/dist/bin/ccsxp-runtime.js.map +1 -1
- package/dist/bin/codex-runtime-router.d.ts +24 -0
- package/dist/bin/codex-runtime-router.d.ts.map +1 -0
- package/dist/bin/codex-runtime-router.js +91 -0
- package/dist/bin/codex-runtime-router.js.map +1 -0
- package/dist/bin/codex-runtime.d.ts +1 -0
- package/dist/bin/codex-runtime.js +7 -2
- package/dist/bin/codex-runtime.js.map +1 -1
- package/dist/ccs.js +2 -1
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/ai-providers/codex-plan-compatibility.js +2 -2
- package/dist/cliproxy/ai-providers/codex-plan-compatibility.js.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts +2 -2
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js +16 -8
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js.map +1 -1
- package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts +1 -1
- package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts.map +1 -1
- package/dist/cliproxy/ai-providers/model-id-normalizer.js +1 -1
- package/dist/cliproxy/ai-providers/model-id-normalizer.js.map +1 -1
- package/dist/cliproxy/ai-providers/service.d.ts.map +1 -1
- package/dist/cliproxy/ai-providers/service.js +39 -12
- package/dist/cliproxy/ai-providers/service.js.map +1 -1
- package/dist/cliproxy/auth/oauth-trace/redactor.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-trace/redactor.js +9 -1
- package/dist/cliproxy/auth/oauth-trace/redactor.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +6 -6
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/env-resolver.js +1 -1
- package/dist/cliproxy/executor/env-resolver.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.js +35 -4
- package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
- package/dist/cliproxy/services/oauth-usage-log-transformer.d.ts.map +1 -1
- package/dist/cliproxy/services/oauth-usage-log-transformer.js +5 -0
- package/dist/cliproxy/services/oauth-usage-log-transformer.js.map +1 -1
- package/dist/codex-auth/codex-account-identity.d.ts +8 -0
- package/dist/codex-auth/codex-account-identity.d.ts.map +1 -0
- package/dist/codex-auth/codex-account-identity.js +53 -0
- package/dist/codex-auth/codex-account-identity.js.map +1 -0
- package/dist/codex-auth/codex-auth-dashboard-service.d.ts +46 -0
- package/dist/codex-auth/codex-auth-dashboard-service.d.ts.map +1 -0
- package/dist/codex-auth/codex-auth-dashboard-service.js +228 -0
- package/dist/codex-auth/codex-auth-dashboard-service.js.map +1 -0
- package/dist/codex-auth/codex-auth-help.d.ts +7 -0
- package/dist/codex-auth/codex-auth-help.d.ts.map +1 -0
- package/dist/codex-auth/codex-auth-help.js +87 -0
- package/dist/codex-auth/codex-auth-help.js.map +1 -0
- package/dist/codex-auth/codex-auth-router.d.ts +16 -0
- package/dist/codex-auth/codex-auth-router.d.ts.map +1 -0
- package/dist/codex-auth/codex-auth-router.js +77 -0
- package/dist/codex-auth/codex-auth-router.js.map +1 -0
- package/dist/codex-auth/codex-config-symlink.d.ts +14 -0
- package/dist/codex-auth/codex-config-symlink.d.ts.map +1 -0
- package/dist/codex-auth/codex-config-symlink.js +128 -0
- package/dist/codex-auth/codex-config-symlink.js.map +1 -0
- package/dist/codex-auth/codex-profile-paths.d.ts +5 -0
- package/dist/codex-auth/codex-profile-paths.d.ts.map +1 -0
- package/dist/codex-auth/codex-profile-paths.js +58 -0
- package/dist/codex-auth/codex-profile-paths.js.map +1 -0
- package/dist/codex-auth/codex-profile-registry.d.ts +34 -0
- package/dist/codex-auth/codex-profile-registry.d.ts.map +1 -0
- package/dist/codex-auth/codex-profile-registry.js +360 -0
- package/dist/codex-auth/codex-profile-registry.js.map +1 -0
- package/dist/codex-auth/commands/create-command.d.ts +9 -0
- package/dist/codex-auth/commands/create-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/create-command.js +189 -0
- package/dist/codex-auth/commands/create-command.js.map +1 -0
- package/dist/codex-auth/commands/import-default-command.d.ts +18 -0
- package/dist/codex-auth/commands/import-default-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/import-default-command.js +385 -0
- package/dist/codex-auth/commands/import-default-command.js.map +1 -0
- package/dist/codex-auth/commands/index.d.ts +13 -0
- package/dist/codex-auth/commands/index.d.ts.map +1 -0
- package/dist/codex-auth/commands/index.js +27 -0
- package/dist/codex-auth/commands/index.js.map +1 -0
- package/dist/codex-auth/commands/login-command.d.ts +9 -0
- package/dist/codex-auth/commands/login-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/login-command.js +152 -0
- package/dist/codex-auth/commands/login-command.js.map +1 -0
- package/dist/codex-auth/commands/remove-command.d.ts +10 -0
- package/dist/codex-auth/commands/remove-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/remove-command.js +230 -0
- package/dist/codex-auth/commands/remove-command.js.map +1 -0
- package/dist/codex-auth/commands/show-command.d.ts +10 -0
- package/dist/codex-auth/commands/show-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/show-command.js +127 -0
- package/dist/codex-auth/commands/show-command.js.map +1 -0
- package/dist/codex-auth/commands/show-detail-view.d.ts +7 -0
- package/dist/codex-auth/commands/show-detail-view.d.ts.map +1 -0
- package/dist/codex-auth/commands/show-detail-view.js +134 -0
- package/dist/codex-auth/commands/show-detail-view.js.map +1 -0
- package/dist/codex-auth/commands/switch-command.d.ts +7 -0
- package/dist/codex-auth/commands/switch-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/switch-command.js +48 -0
- package/dist/codex-auth/commands/switch-command.js.map +1 -0
- package/dist/codex-auth/commands/types.d.ts +45 -0
- package/dist/codex-auth/commands/types.d.ts.map +1 -0
- package/dist/codex-auth/commands/types.js +85 -0
- package/dist/codex-auth/commands/types.js.map +1 -0
- package/dist/codex-auth/commands/use-command.d.ts +16 -0
- package/dist/codex-auth/commands/use-command.d.ts.map +1 -0
- package/dist/codex-auth/commands/use-command.js +86 -0
- package/dist/codex-auth/commands/use-command.js.map +1 -0
- package/dist/codex-auth/decode-id-token.d.ts +12 -0
- package/dist/codex-auth/decode-id-token.d.ts.map +1 -0
- package/dist/codex-auth/decode-id-token.js +83 -0
- package/dist/codex-auth/decode-id-token.js.map +1 -0
- package/dist/codex-auth/index.d.ts +8 -0
- package/dist/codex-auth/index.d.ts.map +1 -0
- package/dist/codex-auth/index.js +19 -0
- package/dist/codex-auth/index.js.map +1 -0
- package/dist/codex-auth/resolve-active-profile.d.ts +13 -0
- package/dist/codex-auth/resolve-active-profile.d.ts.map +1 -0
- package/dist/codex-auth/resolve-active-profile.js +161 -0
- package/dist/codex-auth/resolve-active-profile.js.map +1 -0
- package/dist/codex-auth/shell-detect.d.ts +19 -0
- package/dist/codex-auth/shell-detect.d.ts.map +1 -0
- package/dist/codex-auth/shell-detect.js +129 -0
- package/dist/codex-auth/shell-detect.js.map +1 -0
- package/dist/codex-auth/types.d.ts +26 -0
- package/dist/codex-auth/types.d.ts.map +1 -0
- package/dist/codex-auth/types.js +34 -0
- package/dist/codex-auth/types.js.map +1 -0
- package/dist/commands/cliproxy/variant-subcommand.js +1 -1
- package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
- package/dist/commands/config-command.d.ts +2 -0
- package/dist/commands/config-command.d.ts.map +1 -1
- package/dist/commands/config-command.js +31 -20
- package/dist/commands/config-command.js.map +1 -1
- package/dist/commands/persist-command.d.ts.map +1 -1
- package/dist/commands/persist-command.js +77 -5
- package/dist/commands/persist-command.js.map +1 -1
- package/dist/dispatcher/cli-argument-parser.d.ts +3 -2
- package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
- package/dist/dispatcher/cli-argument-parser.js +37 -7
- package/dist/dispatcher/cli-argument-parser.js.map +1 -1
- package/dist/dispatcher/pre-dispatch.d.ts.map +1 -1
- package/dist/dispatcher/pre-dispatch.js +7 -0
- package/dist/dispatcher/pre-dispatch.js.map +1 -1
- package/dist/dispatcher/target-executor.d.ts +2 -2
- package/dist/dispatcher/target-executor.d.ts.map +1 -1
- package/dist/dispatcher/target-executor.js +5 -5
- package/dist/dispatcher/target-executor.js.map +1 -1
- package/dist/docker/docker-bootstrap.d.ts +1 -1
- package/dist/docker/docker-bootstrap.d.ts.map +1 -1
- package/dist/docker/docker-bootstrap.js +30 -3
- package/dist/docker/docker-bootstrap.js.map +1 -1
- package/dist/docker/docker-executor.d.ts.map +1 -1
- package/dist/docker/docker-executor.js +1 -0
- package/dist/docker/docker-executor.js.map +1 -1
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +10 -1
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/proxy/proxy-daemon.d.ts.map +1 -1
- package/dist/proxy/proxy-daemon.js +15 -3
- package/dist/proxy/proxy-daemon.js.map +1 -1
- package/dist/proxy/server/messages-route.d.ts.map +1 -1
- package/dist/proxy/server/messages-route.js +27 -1
- package/dist/proxy/server/messages-route.js.map +1 -1
- package/dist/shared/claude-extension-setup.d.ts.map +1 -1
- package/dist/shared/claude-extension-setup.js +21 -1
- package/dist/shared/claude-extension-setup.js.map +1 -1
- package/dist/shared/stale-codex-translator-settings.d.ts +4 -0
- package/dist/shared/stale-codex-translator-settings.d.ts.map +1 -0
- package/dist/shared/stale-codex-translator-settings.js +35 -0
- package/dist/shared/stale-codex-translator-settings.js.map +1 -0
- package/dist/targets/codex-cliproxy-provider-config.d.ts.map +1 -1
- package/dist/targets/codex-cliproxy-provider-config.js +17 -13
- package/dist/targets/codex-cliproxy-provider-config.js.map +1 -1
- package/dist/ui/assets/Trans-dEd8UC39.js +1 -0
- package/dist/ui/assets/{accounts-C-sOjvWS.js → accounts-B2THsSu_.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BrOo6Lh3.js → alert-dialog-Vurq1xzV.js} +1 -1
- package/dist/ui/assets/{api-CXdC3ABc.js → api-CjLfG9mL.js} +1 -1
- package/dist/ui/assets/{auth-section-XJ5PohAT.js → auth-section-iGkrMaT4.js} +1 -1
- package/dist/ui/assets/{backups-section-DjMi9NN5.js → backups-section-DUGG_4KP.js} +1 -1
- package/dist/ui/assets/{channels-dD6o7KFj.js → channels-CimlCc2d.js} +1 -1
- package/dist/ui/assets/{checkbox-CVS69doq.js → checkbox-HiMHasEB.js} +1 -1
- package/dist/ui/assets/claude-extension-B2v9bsN9.js +1 -0
- package/dist/ui/assets/{cliproxy-ai-providers-POOrpQVc.js → cliproxy-ai-providers-2lI5jSHb.js} +6 -6
- package/dist/ui/assets/{cliproxy-control-panel-BWa_KiNM.js → cliproxy-control-panel-63gDI-e5.js} +1 -1
- package/dist/ui/assets/cliproxy-fai69Vyd.js +4 -0
- package/dist/ui/assets/codex-i_hfI4Tv.js +30 -0
- package/dist/ui/assets/{confirm-dialog-BuxHs897.js → confirm-dialog-B_6SrSxL.js} +1 -1
- package/dist/ui/assets/{copilot-BQ4Cltbo.js → copilot-BgG5x_X6.js} +2 -2
- package/dist/ui/assets/{cursor-BVUNUVux.js → cursor-DF63lFcy.js} +1 -1
- package/dist/ui/assets/droid-CqlQmFtN.js +2 -0
- package/dist/ui/assets/{globalenv-section-B4UDGHiP.js → globalenv-section-CYNmD12i.js} +1 -1
- package/dist/ui/assets/{health-30TwUdp_.js → health-7ZO5PEm9.js} +1 -1
- package/dist/ui/assets/{index-BxIFAuoV.js → index-BC5ssPfF.js} +1 -1
- package/dist/ui/assets/index-BMoGhs28.css +1 -0
- package/dist/ui/assets/{index-ByGCSVsI.js → index-Bgcd4FYK.js} +1 -1
- package/dist/ui/assets/{index-BjQ5PWH7.js → index-CFu0saCM.js} +1 -1
- package/dist/ui/assets/index-CqsmdQoA.js +1 -0
- package/dist/ui/assets/index-D3kxCuJ7.js +1 -0
- package/dist/ui/assets/{index-C6j8gpEb.js → index-DmV9wJET.js} +27 -27
- package/dist/ui/assets/{index-BUBCzEHD.js → index-hHb9o079.js} +1 -1
- package/dist/ui/assets/{logs-CDD_WQvt.js → logs-Dy-yZhIK.js} +1 -1
- package/dist/ui/assets/{masked-input-DpM1vKP_.js → masked-input-BSLeznEs.js} +1 -1
- package/dist/ui/assets/proxy-status-widget-hRH1agF9.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-D-zQkcvr.js → raw-json-settings-editor-panel-Bs83yILR.js} +1 -1
- package/dist/ui/assets/{searchable-select-B8Kp0x8p.js → searchable-select-pXUC_0Ih.js} +1 -1
- package/dist/ui/assets/{separator-DlXQBF83.js → separator-FZR_61I9.js} +1 -1
- package/dist/ui/assets/{shared-D_h3QKy6.js → shared-BiIwM7--.js} +1 -1
- package/dist/ui/assets/{table-Dyt0FuBK.js → table-_9IusQ8G.js} +1 -1
- package/dist/ui/assets/{updates-DfIV0IC0.js → updates-ButNfJqt.js} +1 -1
- package/dist/ui/assets/{use-accounts-Dy2ogHT-.js → use-accounts-BdtI0lBv.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/utils/claude-subcommand-detector.d.ts +7 -0
- package/dist/utils/claude-subcommand-detector.d.ts.map +1 -1
- package/dist/utils/claude-subcommand-detector.js +51 -9
- package/dist/utils/claude-subcommand-detector.js.map +1 -1
- package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/web-server/middleware/auth-middleware.js +25 -1
- package/dist/web-server/middleware/auth-middleware.js.map +1 -1
- package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
- package/dist/web-server/routes/claude-extension-routes.js +5 -0
- package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
- package/dist/web-server/routes/codex-routes.d.ts.map +1 -1
- package/dist/web-server/routes/codex-routes.js +14 -0
- package/dist/web-server/routes/codex-routes.js.map +1 -1
- package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
- package/dist/web-server/services/codex-dashboard-service.js +30 -3
- package/dist/web-server/services/codex-dashboard-service.js.map +1 -1
- package/dist/web-server/usage/aggregator.d.ts +13 -7
- package/dist/web-server/usage/aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/aggregator.js +37 -22
- package/dist/web-server/usage/aggregator.js.map +1 -1
- package/dist/web-server/usage/handlers.d.ts +1 -0
- package/dist/web-server/usage/handlers.d.ts.map +1 -1
- package/dist/web-server/usage/handlers.js +16 -8
- package/dist/web-server/usage/handlers.js.map +1 -1
- package/dist/web-server/usage/profile-filter.d.ts +13 -0
- package/dist/web-server/usage/profile-filter.d.ts.map +1 -0
- package/dist/web-server/usage/profile-filter.js +30 -0
- package/dist/web-server/usage/profile-filter.js.map +1 -0
- package/dist/web-server/usage/types.d.ts +8 -0
- package/dist/web-server/usage/types.d.ts.map +1 -1
- package/lib/hooks/websearch-transformer.cjs +12 -3
- package/lib/mcp/ccs-browser-server.cjs +217 -12
- package/package.json +1 -1
- package/scripts/run-test-bucket.js +1 -0
- package/dist/ui/assets/claude-extension-D47wkgfq.js +0 -1
- package/dist/ui/assets/cliproxy-CXgzAe6X.js +0 -4
- package/dist/ui/assets/codex-CYyPdHS4.js +0 -30
- package/dist/ui/assets/droid-Bw34FF6c.js +0 -2
- package/dist/ui/assets/index-DtiygQmg.js +0 -1
- package/dist/ui/assets/index-nSsKQx8t.css +0 -1
- package/dist/ui/assets/index-s94_IKNx.js +0 -1
- package/dist/ui/assets/proxy-status-widget-7iMiOpQe.js +0 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Barrel export for codex-auth command handlers.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatRelativeTime = exports.getProfileNameError = exports.isValidCodexProfileName = exports.rejectUnsupportedOptions = exports.parseArgs = exports.handleImportDefaultCodex = exports.handleRemoveCodex = exports.handleShowCodex = exports.handleUseCodex = exports.handleSwitchCodex = exports.handleLoginCodex = exports.handleCreateCodex = void 0;
|
|
7
|
+
var create_command_1 = require("./create-command");
|
|
8
|
+
Object.defineProperty(exports, "handleCreateCodex", { enumerable: true, get: function () { return create_command_1.handleCreateCodex; } });
|
|
9
|
+
var login_command_1 = require("./login-command");
|
|
10
|
+
Object.defineProperty(exports, "handleLoginCodex", { enumerable: true, get: function () { return login_command_1.handleLoginCodex; } });
|
|
11
|
+
var switch_command_1 = require("./switch-command");
|
|
12
|
+
Object.defineProperty(exports, "handleSwitchCodex", { enumerable: true, get: function () { return switch_command_1.handleSwitchCodex; } });
|
|
13
|
+
var use_command_1 = require("./use-command");
|
|
14
|
+
Object.defineProperty(exports, "handleUseCodex", { enumerable: true, get: function () { return use_command_1.handleUseCodex; } });
|
|
15
|
+
var show_command_1 = require("./show-command");
|
|
16
|
+
Object.defineProperty(exports, "handleShowCodex", { enumerable: true, get: function () { return show_command_1.handleShowCodex; } });
|
|
17
|
+
var remove_command_1 = require("./remove-command");
|
|
18
|
+
Object.defineProperty(exports, "handleRemoveCodex", { enumerable: true, get: function () { return remove_command_1.handleRemoveCodex; } });
|
|
19
|
+
var import_default_command_1 = require("./import-default-command");
|
|
20
|
+
Object.defineProperty(exports, "handleImportDefaultCodex", { enumerable: true, get: function () { return import_default_command_1.handleImportDefaultCodex; } });
|
|
21
|
+
var types_1 = require("./types");
|
|
22
|
+
Object.defineProperty(exports, "parseArgs", { enumerable: true, get: function () { return types_1.parseArgs; } });
|
|
23
|
+
Object.defineProperty(exports, "rejectUnsupportedOptions", { enumerable: true, get: function () { return types_1.rejectUnsupportedOptions; } });
|
|
24
|
+
Object.defineProperty(exports, "isValidCodexProfileName", { enumerable: true, get: function () { return types_1.isValidCodexProfileName; } });
|
|
25
|
+
Object.defineProperty(exports, "getProfileNameError", { enumerable: true, get: function () { return types_1.getProfileNameError; } });
|
|
26
|
+
Object.defineProperty(exports, "formatRelativeTime", { enumerable: true, get: function () { return types_1.formatRelativeTime; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,iDAAmD;AAA1C,iHAAA,gBAAgB,OAAA;AACzB,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AACxB,mDAAqD;AAA5C,mHAAA,iBAAiB,OAAA;AAC1B,mEAAoE;AAA3D,kIAAA,wBAAwB,OAAA;AAEjC,iCAMiB;AALf,kGAAA,SAAS,OAAA;AACT,iHAAA,wBAAwB,OAAA;AACxB,gHAAA,uBAAuB,OAAA;AACvB,4GAAA,mBAAmB,OAAA;AACnB,2GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codex-auth login command.
|
|
3
|
+
* Spawns `codex login` with CODEX_HOME pinned to the profile dir.
|
|
4
|
+
* Auto-creates profile if it doesn't exist yet.
|
|
5
|
+
* Updates registry with email/plan from JWT after successful login.
|
|
6
|
+
*/
|
|
7
|
+
import type { CodexCommandContext } from './types';
|
|
8
|
+
export declare function handleLoginCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=login-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/login-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAInD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsG9F"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* codex-auth login command.
|
|
4
|
+
* Spawns `codex login` with CODEX_HOME pinned to the profile dir.
|
|
5
|
+
* Auto-creates profile if it doesn't exist yet.
|
|
6
|
+
* Updates registry with email/plan from JWT after successful login.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.handleLoginCodex = void 0;
|
|
33
|
+
const fs = __importStar(require("fs"));
|
|
34
|
+
const path = __importStar(require("path"));
|
|
35
|
+
const childProcess = __importStar(require("child_process"));
|
|
36
|
+
const logging_1 = require("../../services/logging");
|
|
37
|
+
const ui_1 = require("../../utils/ui");
|
|
38
|
+
const errors_1 = require("../../errors");
|
|
39
|
+
const exit_codes_1 = require("../../errors/exit-codes");
|
|
40
|
+
const index_1 = require("../index");
|
|
41
|
+
const codex_account_identity_1 = require("../codex-account-identity");
|
|
42
|
+
const codex_detector_1 = require("../../targets/codex-detector");
|
|
43
|
+
const types_1 = require("./types");
|
|
44
|
+
const logger = (0, logging_1.createLogger)('codex-auth:cmd:login');
|
|
45
|
+
async function handleLoginCodex(ctx, args) {
|
|
46
|
+
await (0, ui_1.initUI)();
|
|
47
|
+
const parsed = (0, types_1.parseArgs)(args);
|
|
48
|
+
(0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth login <name>');
|
|
49
|
+
const { profileName } = parsed;
|
|
50
|
+
if (!profileName) {
|
|
51
|
+
console.log('Usage: ccsx auth login <name>');
|
|
52
|
+
(0, errors_1.exitWithError)('Profile name required', exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const nameError = (0, types_1.getProfileNameError)(profileName);
|
|
56
|
+
if (nameError) {
|
|
57
|
+
(0, errors_1.exitWithError)(nameError, exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const { registry } = ctx;
|
|
61
|
+
const profileDir = (0, index_1.resolveCodexProfileDir)(profileName);
|
|
62
|
+
// Auto-create profile if missing
|
|
63
|
+
if (!registry.hasProfile(profileName)) {
|
|
64
|
+
console.log((0, ui_1.info)(`Auto-creating profile ${profileName}`));
|
|
65
|
+
ensureProfileDirReady(profileDir);
|
|
66
|
+
registry.createProfile(profileName, {
|
|
67
|
+
created: new Date().toISOString(),
|
|
68
|
+
last_used: null,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const codexCli = (0, codex_detector_1.detectCodexCli)();
|
|
72
|
+
if (!codexCli) {
|
|
73
|
+
console.log('');
|
|
74
|
+
console.log('Install:');
|
|
75
|
+
console.log(' npm i -g @openai/codex');
|
|
76
|
+
console.log(' # or follow https://github.com/openai/codex#install');
|
|
77
|
+
console.log('');
|
|
78
|
+
console.log(`After installing, re-run:`);
|
|
79
|
+
console.log(` ccsx auth login ${profileName}`);
|
|
80
|
+
(0, errors_1.exitWithError)('codex CLI not found', exit_codes_1.ExitCode.BINARY_ERROR);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Ensure profile dir exists (may have been deleted)
|
|
84
|
+
if (!fs.existsSync(profileDir)) {
|
|
85
|
+
ensureProfileDirReady(profileDir);
|
|
86
|
+
}
|
|
87
|
+
const authJsonPath = path.join(profileDir, 'auth.json');
|
|
88
|
+
const authJsonExisted = fs.existsSync(authJsonPath);
|
|
89
|
+
console.log((0, ui_1.info)(`Launching codex login for profile: ${profileName}`));
|
|
90
|
+
console.log(` CODEX_HOME=${profileDir}`);
|
|
91
|
+
console.log('');
|
|
92
|
+
const exitCode = await new Promise((resolve) => {
|
|
93
|
+
const child = childProcess.spawn(codexCli, ['login'], {
|
|
94
|
+
stdio: 'inherit',
|
|
95
|
+
env: { ...process.env, CODEX_HOME: profileDir },
|
|
96
|
+
windowsHide: true,
|
|
97
|
+
});
|
|
98
|
+
child.on('error', (err) => {
|
|
99
|
+
process.stderr.write(`[X] Failed to execute codex: ${err.message}\n`);
|
|
100
|
+
logger.warn('codex-auth.login.spawn-error', 'Spawn failed', { error: err.message });
|
|
101
|
+
resolve(exit_codes_1.ExitCode.BINARY_ERROR);
|
|
102
|
+
});
|
|
103
|
+
child.on('exit', (code) => {
|
|
104
|
+
resolve(code ?? 1);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
if (exitCode === 0 && fs.existsSync(authJsonPath)) {
|
|
108
|
+
const identity = (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath);
|
|
109
|
+
const now = new Date().toISOString();
|
|
110
|
+
const metadataUpdate = { last_used: now };
|
|
111
|
+
if (identity.email !== undefined)
|
|
112
|
+
metadataUpdate.email = identity.email;
|
|
113
|
+
if (identity.plan_type !== undefined)
|
|
114
|
+
metadataUpdate.plan_type = identity.plan_type;
|
|
115
|
+
if (identity.account_id !== undefined)
|
|
116
|
+
metadataUpdate.account_id = identity.account_id;
|
|
117
|
+
registry.updateProfile(profileName, metadataUpdate);
|
|
118
|
+
const emailStr = identity.email ?? '<unknown>';
|
|
119
|
+
const planStr = identity.plan_type ? ` (plan: ${identity.plan_type})` : '';
|
|
120
|
+
console.log((0, ui_1.ok)(`Logged in as ${emailStr}${planStr}`));
|
|
121
|
+
console.log(` Profile: ${profileName}`);
|
|
122
|
+
console.log(` Updated: ${now}`);
|
|
123
|
+
}
|
|
124
|
+
else if (exitCode === 0) {
|
|
125
|
+
process.stderr.write('[!] codex login exited cleanly but no auth.json. Skipping registry update.\n');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
if (!authJsonExisted) {
|
|
129
|
+
process.stderr.write(`[!] Login cancelled or failed. Profile ${profileName} remains unauthenticated.\n`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
process.stderr.write('[!] Login failed. Previous credentials may still be valid.\n');
|
|
133
|
+
}
|
|
134
|
+
process.exit(exit_codes_1.ExitCode.AUTH_ERROR);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.handleLoginCodex = handleLoginCodex;
|
|
138
|
+
function ensureProfileDirReady(profileDir) {
|
|
139
|
+
try {
|
|
140
|
+
fs.mkdirSync(profileDir, { recursive: true, mode: 0o700 });
|
|
141
|
+
(0, index_1.ensureSharedConfigSymlink)(profileDir);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
145
|
+
logger.warn('codex-auth.login.config-repair-failed', 'Config repair failed', {
|
|
146
|
+
profileDir,
|
|
147
|
+
error: msg,
|
|
148
|
+
});
|
|
149
|
+
(0, errors_1.exitWithError)(`Failed to prepare profile config.toml: ${msg}`, exit_codes_1.ExitCode.CONFIG_ERROR);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=login-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/login-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codex-auth remove command.
|
|
3
|
+
* Deletes profile dir + registry entry.
|
|
4
|
+
* Guards: refuses to remove the default when others exist (unless --force).
|
|
5
|
+
* Best-effort warning if CCS_CODEX_PROFILE points to it.
|
|
6
|
+
* --yes skips confirmation prompt.
|
|
7
|
+
*/
|
|
8
|
+
import type { CodexCommandContext } from './types';
|
|
9
|
+
export declare function handleRemoveCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=remove-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/remove-command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6K/F"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* codex-auth remove command.
|
|
4
|
+
* Deletes profile dir + registry entry.
|
|
5
|
+
* Guards: refuses to remove the default when others exist (unless --force).
|
|
6
|
+
* Best-effort warning if CCS_CODEX_PROFILE points to it.
|
|
7
|
+
* --yes skips confirmation prompt.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.handleRemoveCodex = void 0;
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const path = __importStar(require("path"));
|
|
36
|
+
const ui_1 = require("../../utils/ui");
|
|
37
|
+
const prompt_1 = require("../../utils/prompt");
|
|
38
|
+
const errors_1 = require("../../errors");
|
|
39
|
+
const exit_codes_1 = require("../../errors/exit-codes");
|
|
40
|
+
const codex_profile_paths_1 = require("../codex-profile-paths");
|
|
41
|
+
const codex_account_identity_1 = require("../codex-account-identity");
|
|
42
|
+
const types_1 = require("./types");
|
|
43
|
+
async function handleRemoveCodex(ctx, args) {
|
|
44
|
+
await (0, ui_1.initUI)();
|
|
45
|
+
const parsed = (0, types_1.parseArgs)(args);
|
|
46
|
+
(0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth remove <name> [--yes|-y] [--force]', {
|
|
47
|
+
yes: true,
|
|
48
|
+
force: true,
|
|
49
|
+
});
|
|
50
|
+
const { profileName, yes, force } = parsed;
|
|
51
|
+
if (!profileName) {
|
|
52
|
+
console.log('Usage: ccsx auth remove <name> [--yes|-y] [--force]');
|
|
53
|
+
(0, errors_1.exitWithError)('Profile name required', exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const nameError = (0, types_1.getProfileNameError)(profileName);
|
|
57
|
+
if (nameError) {
|
|
58
|
+
(0, errors_1.exitWithError)(nameError, exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const { registry } = ctx;
|
|
62
|
+
if (!registry.hasProfile(profileName)) {
|
|
63
|
+
(0, errors_1.exitWithError)(`Profile not found: ${profileName}`, exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const allProfiles = registry.listProfiles();
|
|
67
|
+
const isDefault = registry.getDefault() === profileName;
|
|
68
|
+
// Default guard: refuse if others exist and no --force
|
|
69
|
+
if (isDefault && allProfiles.length > 1 && !force) {
|
|
70
|
+
const others = allProfiles.filter((n) => n !== profileName);
|
|
71
|
+
console.log(` Switch first: ccsx auth switch ${others[0]}`);
|
|
72
|
+
console.log(` Or override : ccsx auth remove ${profileName} --force`);
|
|
73
|
+
(0, errors_1.exitWithError)('Cannot remove default profile', exit_codes_1.ExitCode.PROFILE_ERROR);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Active-env warning (best-effort — can only see current shell)
|
|
77
|
+
if (process.env.CCS_CODEX_PROFILE === profileName) {
|
|
78
|
+
process.stderr.write(`[!] CCS_CODEX_PROFILE in this shell points to "${profileName}".\n`);
|
|
79
|
+
process.stderr.write(` After removal, codex sessions in this shell will fail until you\n`);
|
|
80
|
+
const others = allProfiles.filter((n) => n !== profileName);
|
|
81
|
+
if (others.length > 0) {
|
|
82
|
+
process.stderr.write(` run: eval "$(ccsx auth use ${others[0]})" or unset CCS_CODEX_PROFILE.\n`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
process.stderr.write(` run: unset CCS_CODEX_PROFILE\n`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const profileDir = (0, codex_profile_paths_1.resolveCodexProfileDir)(profileName);
|
|
89
|
+
const authJsonPath = path.join(profileDir, 'auth.json');
|
|
90
|
+
const authExists = fs.existsSync(authJsonPath);
|
|
91
|
+
const dirExists = fs.existsSync(profileDir);
|
|
92
|
+
// Load cached email for impact summary
|
|
93
|
+
const meta = registry.getProfile(profileName);
|
|
94
|
+
const originalDefault = registry.getDefault();
|
|
95
|
+
let emailStr = meta.email ?? null;
|
|
96
|
+
if (!emailStr && authExists) {
|
|
97
|
+
const identity = (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath);
|
|
98
|
+
emailStr = identity.email ?? null;
|
|
99
|
+
}
|
|
100
|
+
// Ghost case: dir already gone
|
|
101
|
+
if (!dirExists) {
|
|
102
|
+
process.stderr.write(`[!] Profile dir was already missing; removing registry entry only.\n`);
|
|
103
|
+
try {
|
|
104
|
+
registry.removeProfile(profileName, { forceDefault: force });
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
108
|
+
(0, errors_1.exitWithError)(`Profile registry update failed; profile dir was already missing.\n ${msg}`, exit_codes_1.ExitCode.GENERAL_ERROR);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
console.log((0, ui_1.ok)(`Profile removed: ${profileName}`));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// Impact summary
|
|
115
|
+
console.log(`Profile "${profileName}" will be removed.`);
|
|
116
|
+
console.log(` Profile dir : ${profileDir}`);
|
|
117
|
+
console.log(` auth.json : ${authExists ? 'present (will be deleted)' : 'not found'}`);
|
|
118
|
+
console.log(` Email : ${emailStr ?? '<unknown>'}`);
|
|
119
|
+
console.log('');
|
|
120
|
+
// Confirm unless --yes
|
|
121
|
+
if (!yes) {
|
|
122
|
+
const confirmed = await prompt_1.InteractivePrompt.confirm('Delete this profile?', {
|
|
123
|
+
default: false,
|
|
124
|
+
});
|
|
125
|
+
if (!confirmed) {
|
|
126
|
+
console.log((0, ui_1.info)('Cancelled.'));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const stagedDeleteDir = `${profileDir}.deleting.${process.pid}.${Math.random()
|
|
131
|
+
.toString(36)
|
|
132
|
+
.slice(2)}`;
|
|
133
|
+
const preservationDir = `${profileDir}.preserved.${process.pid}.${Math.random()
|
|
134
|
+
.toString(36)
|
|
135
|
+
.slice(2)}`;
|
|
136
|
+
try {
|
|
137
|
+
fs.renameSync(profileDir, stagedDeleteDir);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
const e = err;
|
|
141
|
+
if (e.code === 'EACCES') {
|
|
142
|
+
(0, errors_1.exitWithError)('Permission denied', exit_codes_1.ExitCode.GENERAL_ERROR);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
throw err;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
fs.cpSync(stagedDeleteDir, preservationDir, { recursive: true, errorOnExist: true });
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const restored = _restoreProfileDir(stagedDeleteDir, profileDir);
|
|
152
|
+
_removePathBestEffort(preservationDir);
|
|
153
|
+
const preservedPath = restored ? profileDir : stagedDeleteDir;
|
|
154
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
155
|
+
(0, errors_1.exitWithError)(`Profile data delete preparation failed; profile data was preserved at ${preservedPath}.\n ${msg}`, exit_codes_1.ExitCode.GENERAL_ERROR);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
registry.removeProfile(profileName, { forceDefault: force });
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const restored = _restoreProfileDir(stagedDeleteDir, profileDir);
|
|
163
|
+
_removePathBestEffort(preservationDir);
|
|
164
|
+
const preservedPath = restored ? profileDir : stagedDeleteDir;
|
|
165
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
166
|
+
(0, errors_1.exitWithError)(`Profile registry update failed; profile data was preserved at ${preservedPath}.\n ${msg}`, exit_codes_1.ExitCode.GENERAL_ERROR);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
fs.rmSync(stagedDeleteDir, { recursive: true, force: true });
|
|
171
|
+
fs.rmSync(preservationDir, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
const restoreSource = fs.existsSync(preservationDir) ? preservationDir : stagedDeleteDir;
|
|
175
|
+
const restoredDir = _restoreProfileDir(restoreSource, profileDir);
|
|
176
|
+
const restoredRegistry = _restoreRegistryEntry(registry, profileName, meta, originalDefault);
|
|
177
|
+
if (restoredDir && restoreSource === preservationDir) {
|
|
178
|
+
_removePathBestEffort(stagedDeleteDir);
|
|
179
|
+
}
|
|
180
|
+
const preservedPath = restoredDir ? profileDir : stagedDeleteDir;
|
|
181
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
182
|
+
const registryNote = restoredRegistry
|
|
183
|
+
? 'Profile registry entry was restored.'
|
|
184
|
+
: 'Profile registry entry could not be restored automatically.';
|
|
185
|
+
(0, errors_1.exitWithError)(`Profile data delete failed; profile data was preserved at ${preservedPath}. ${registryNote}\n ${msg}`, exit_codes_1.ExitCode.GENERAL_ERROR);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
console.log((0, ui_1.ok)(`Profile removed: ${profileName}`));
|
|
189
|
+
}
|
|
190
|
+
exports.handleRemoveCodex = handleRemoveCodex;
|
|
191
|
+
function _removePathBestEffort(targetPath) {
|
|
192
|
+
try {
|
|
193
|
+
fs.rmSync(targetPath, { recursive: true, force: true });
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// best-effort cleanup after data has already been preserved elsewhere
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function _restoreRegistryEntry(registry, profileName, meta, originalDefault) {
|
|
200
|
+
try {
|
|
201
|
+
if (registry.hasProfile(profileName)) {
|
|
202
|
+
registry.updateProfile(profileName, meta);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
registry.createProfile(profileName, meta);
|
|
206
|
+
}
|
|
207
|
+
if (originalDefault === profileName) {
|
|
208
|
+
registry.setDefault(profileName);
|
|
209
|
+
}
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
process.stderr.write(`[!] Profile data delete failed and automatic registry restore failed for "${profileName}".\n`);
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function _restoreProfileDir(stagedDeleteDir, profileDir) {
|
|
218
|
+
try {
|
|
219
|
+
if (fs.existsSync(stagedDeleteDir) && !fs.existsSync(profileDir)) {
|
|
220
|
+
fs.renameSync(stagedDeleteDir, profileDir);
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
return fs.existsSync(profileDir);
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
process.stderr.write(`[!] Registry update failed and automatic restore failed. Profile data remains at ${stagedDeleteDir}.\n`);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=remove-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/remove-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codex-auth show command.
|
|
3
|
+
* List mode: table of all profiles with STATE column.
|
|
4
|
+
* Detail mode: delegated to show-detail-view.ts.
|
|
5
|
+
* --json: machine-readable output.
|
|
6
|
+
* D14: active(missing) row at top when CCS_CODEX_PROFILE points to deleted profile.
|
|
7
|
+
*/
|
|
8
|
+
import type { CodexCommandContext } from './types';
|
|
9
|
+
export declare function handleShowCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=show-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/show-command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,SAAS,CAAC;AAGvE,wBAAsB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7F"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* codex-auth show command.
|
|
4
|
+
* List mode: table of all profiles with STATE column.
|
|
5
|
+
* Detail mode: delegated to show-detail-view.ts.
|
|
6
|
+
* --json: machine-readable output.
|
|
7
|
+
* D14: active(missing) row at top when CCS_CODEX_PROFILE points to deleted profile.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.handleShowCodex = void 0;
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const path = __importStar(require("path"));
|
|
36
|
+
const ui_1 = require("../../utils/ui");
|
|
37
|
+
const codex_profile_paths_1 = require("../codex-profile-paths");
|
|
38
|
+
const codex_account_identity_1 = require("../codex-account-identity");
|
|
39
|
+
const show_detail_view_1 = require("./show-detail-view");
|
|
40
|
+
const types_1 = require("./types");
|
|
41
|
+
async function handleShowCodex(ctx, args) {
|
|
42
|
+
await (0, ui_1.initUI)();
|
|
43
|
+
const parsed = (0, types_1.parseArgs)(args);
|
|
44
|
+
(0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth show [name] [--json]', { json: true });
|
|
45
|
+
const { profileName, json } = parsed;
|
|
46
|
+
if (profileName) {
|
|
47
|
+
return (0, show_detail_view_1.showProfileDetail)(profileName, ctx, !!json);
|
|
48
|
+
}
|
|
49
|
+
return _showList(ctx, !!json);
|
|
50
|
+
}
|
|
51
|
+
exports.handleShowCodex = handleShowCodex;
|
|
52
|
+
// ── List view ─────────────────────────────────────────────────────────────────
|
|
53
|
+
function _showList(ctx, json) {
|
|
54
|
+
const { registry } = ctx;
|
|
55
|
+
const names = registry.listProfiles();
|
|
56
|
+
const defaultName = registry.getDefault();
|
|
57
|
+
const activeName = process.env.CCS_CODEX_PROFILE ?? null;
|
|
58
|
+
// D14: check if CCS_CODEX_PROFILE points to a deleted/missing profile
|
|
59
|
+
const activeMissing = activeName !== null && activeName.length > 0 && !registry.hasProfile(activeName);
|
|
60
|
+
const rows = [];
|
|
61
|
+
// D14: active(missing) row at top
|
|
62
|
+
if (activeMissing) {
|
|
63
|
+
rows.push({
|
|
64
|
+
name: activeName ?? '',
|
|
65
|
+
email: '<unknown>',
|
|
66
|
+
plan: '-',
|
|
67
|
+
accountId: null,
|
|
68
|
+
lastUsed: 'never',
|
|
69
|
+
state: 'active(missing)',
|
|
70
|
+
missing: true,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
for (const name of names) {
|
|
74
|
+
const meta = registry.getProfile(name);
|
|
75
|
+
const states = [];
|
|
76
|
+
if (name === defaultName)
|
|
77
|
+
states.push('default');
|
|
78
|
+
if (name === activeName)
|
|
79
|
+
states.push('active');
|
|
80
|
+
const profileDir = (0, codex_profile_paths_1.resolveCodexProfileDir)(name);
|
|
81
|
+
const authJsonPath = path.join(profileDir, 'auth.json');
|
|
82
|
+
const identity = fs.existsSync(authJsonPath)
|
|
83
|
+
? (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath)
|
|
84
|
+
: {};
|
|
85
|
+
const email = meta.email ?? identity.email ?? '<unknown>';
|
|
86
|
+
const plan = meta.plan_type ?? identity.plan_type ?? '-';
|
|
87
|
+
const accountId = meta.account_id ?? identity.account_id ?? null;
|
|
88
|
+
const lastUsed = meta.last_used ? (0, types_1.formatRelativeTime)(new Date(meta.last_used)) : 'never';
|
|
89
|
+
rows.push({ name, email, plan, accountId, lastUsed, state: states.join(',') });
|
|
90
|
+
}
|
|
91
|
+
if (json) {
|
|
92
|
+
const profiles = rows.map((r) => {
|
|
93
|
+
const meta = r.missing ? null : registry.getProfile(r.name);
|
|
94
|
+
const profileDir = r.missing ? '' : (0, codex_profile_paths_1.resolveCodexProfileDir)(r.name);
|
|
95
|
+
return {
|
|
96
|
+
name: r.name,
|
|
97
|
+
is_default: r.name === defaultName,
|
|
98
|
+
is_active: r.name === activeName,
|
|
99
|
+
created: meta?.created ?? '',
|
|
100
|
+
last_used: meta?.last_used ?? null,
|
|
101
|
+
email: r.email === '<unknown>' ? null : r.email,
|
|
102
|
+
plan: r.plan === '-' ? null : r.plan,
|
|
103
|
+
account_id: r.accountId,
|
|
104
|
+
profile_dir: profileDir,
|
|
105
|
+
auth_json_exists: r.missing ? false : fs.existsSync(path.join(profileDir, 'auth.json')),
|
|
106
|
+
auth_json_mtime: null,
|
|
107
|
+
config_toml_link_target: null,
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
console.log(JSON.stringify({ profiles }, null, 2));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (names.length === 0 && !activeMissing) {
|
|
114
|
+
console.log((0, ui_1.info)('No Codex profiles yet.'));
|
|
115
|
+
console.log(' Create one: ccsx auth create <name>');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const count = names.length + (activeMissing ? 1 : 0);
|
|
119
|
+
console.log(`Codex Profiles (${count})`);
|
|
120
|
+
console.log('');
|
|
121
|
+
const header = ['NAME', 'EMAIL', 'PLAN', 'LAST_USED', 'STATE'];
|
|
122
|
+
const tableRows = [header, ...rows.map((r) => [r.name, r.email, r.plan, r.lastUsed, r.state])];
|
|
123
|
+
console.log((0, ui_1.table)(tableRows, { colWidths: [14, 26, 8, 14, 18] }));
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log((0, ui_1.info)('Default persists across shells. Active is current shell only.'));
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=show-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/show-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detail view renderer for `ccsx auth show <name>`.
|
|
3
|
+
* Extracted from show-command.ts to keep files under 200 lines.
|
|
4
|
+
*/
|
|
5
|
+
import type { CodexCommandContext } from './types';
|
|
6
|
+
export declare function showProfileDetail(profileName: string, ctx: CodexCommandContext, json: boolean): void;
|
|
7
|
+
//# sourceMappingURL=show-detail-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-detail-view.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/show-detail-view.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,SAAS,CAAC;AAEvE,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,OAAO,GACZ,IAAI,CAsGN"}
|