@kaitranntt/ccs 7.79.1-dev.5 → 7.79.1-dev.6

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 (149) 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 +91 -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/codex-auth/codex-account-identity.d.ts +8 -0
  13. package/dist/codex-auth/codex-account-identity.d.ts.map +1 -0
  14. package/dist/codex-auth/codex-account-identity.js +53 -0
  15. package/dist/codex-auth/codex-account-identity.js.map +1 -0
  16. package/dist/codex-auth/codex-auth-dashboard-service.d.ts +46 -0
  17. package/dist/codex-auth/codex-auth-dashboard-service.d.ts.map +1 -0
  18. package/dist/codex-auth/codex-auth-dashboard-service.js +228 -0
  19. package/dist/codex-auth/codex-auth-dashboard-service.js.map +1 -0
  20. package/dist/codex-auth/codex-auth-help.d.ts +7 -0
  21. package/dist/codex-auth/codex-auth-help.d.ts.map +1 -0
  22. package/dist/codex-auth/codex-auth-help.js +87 -0
  23. package/dist/codex-auth/codex-auth-help.js.map +1 -0
  24. package/dist/codex-auth/codex-auth-router.d.ts +16 -0
  25. package/dist/codex-auth/codex-auth-router.d.ts.map +1 -0
  26. package/dist/codex-auth/codex-auth-router.js +77 -0
  27. package/dist/codex-auth/codex-auth-router.js.map +1 -0
  28. package/dist/codex-auth/codex-config-symlink.d.ts +14 -0
  29. package/dist/codex-auth/codex-config-symlink.d.ts.map +1 -0
  30. package/dist/codex-auth/codex-config-symlink.js +128 -0
  31. package/dist/codex-auth/codex-config-symlink.js.map +1 -0
  32. package/dist/codex-auth/codex-profile-paths.d.ts +5 -0
  33. package/dist/codex-auth/codex-profile-paths.d.ts.map +1 -0
  34. package/dist/codex-auth/codex-profile-paths.js +58 -0
  35. package/dist/codex-auth/codex-profile-paths.js.map +1 -0
  36. package/dist/codex-auth/codex-profile-registry.d.ts +34 -0
  37. package/dist/codex-auth/codex-profile-registry.d.ts.map +1 -0
  38. package/dist/codex-auth/codex-profile-registry.js +360 -0
  39. package/dist/codex-auth/codex-profile-registry.js.map +1 -0
  40. package/dist/codex-auth/commands/create-command.d.ts +9 -0
  41. package/dist/codex-auth/commands/create-command.d.ts.map +1 -0
  42. package/dist/codex-auth/commands/create-command.js +189 -0
  43. package/dist/codex-auth/commands/create-command.js.map +1 -0
  44. package/dist/codex-auth/commands/import-default-command.d.ts +18 -0
  45. package/dist/codex-auth/commands/import-default-command.d.ts.map +1 -0
  46. package/dist/codex-auth/commands/import-default-command.js +385 -0
  47. package/dist/codex-auth/commands/import-default-command.js.map +1 -0
  48. package/dist/codex-auth/commands/index.d.ts +13 -0
  49. package/dist/codex-auth/commands/index.d.ts.map +1 -0
  50. package/dist/codex-auth/commands/index.js +27 -0
  51. package/dist/codex-auth/commands/index.js.map +1 -0
  52. package/dist/codex-auth/commands/login-command.d.ts +9 -0
  53. package/dist/codex-auth/commands/login-command.d.ts.map +1 -0
  54. package/dist/codex-auth/commands/login-command.js +152 -0
  55. package/dist/codex-auth/commands/login-command.js.map +1 -0
  56. package/dist/codex-auth/commands/remove-command.d.ts +10 -0
  57. package/dist/codex-auth/commands/remove-command.d.ts.map +1 -0
  58. package/dist/codex-auth/commands/remove-command.js +230 -0
  59. package/dist/codex-auth/commands/remove-command.js.map +1 -0
  60. package/dist/codex-auth/commands/show-command.d.ts +10 -0
  61. package/dist/codex-auth/commands/show-command.d.ts.map +1 -0
  62. package/dist/codex-auth/commands/show-command.js +127 -0
  63. package/dist/codex-auth/commands/show-command.js.map +1 -0
  64. package/dist/codex-auth/commands/show-detail-view.d.ts +7 -0
  65. package/dist/codex-auth/commands/show-detail-view.d.ts.map +1 -0
  66. package/dist/codex-auth/commands/show-detail-view.js +134 -0
  67. package/dist/codex-auth/commands/show-detail-view.js.map +1 -0
  68. package/dist/codex-auth/commands/switch-command.d.ts +7 -0
  69. package/dist/codex-auth/commands/switch-command.d.ts.map +1 -0
  70. package/dist/codex-auth/commands/switch-command.js +48 -0
  71. package/dist/codex-auth/commands/switch-command.js.map +1 -0
  72. package/dist/codex-auth/commands/types.d.ts +45 -0
  73. package/dist/codex-auth/commands/types.d.ts.map +1 -0
  74. package/dist/codex-auth/commands/types.js +85 -0
  75. package/dist/codex-auth/commands/types.js.map +1 -0
  76. package/dist/codex-auth/commands/use-command.d.ts +16 -0
  77. package/dist/codex-auth/commands/use-command.d.ts.map +1 -0
  78. package/dist/codex-auth/commands/use-command.js +86 -0
  79. package/dist/codex-auth/commands/use-command.js.map +1 -0
  80. package/dist/codex-auth/decode-id-token.d.ts +12 -0
  81. package/dist/codex-auth/decode-id-token.d.ts.map +1 -0
  82. package/dist/codex-auth/decode-id-token.js +83 -0
  83. package/dist/codex-auth/decode-id-token.js.map +1 -0
  84. package/dist/codex-auth/index.d.ts +8 -0
  85. package/dist/codex-auth/index.d.ts.map +1 -0
  86. package/dist/codex-auth/index.js +19 -0
  87. package/dist/codex-auth/index.js.map +1 -0
  88. package/dist/codex-auth/resolve-active-profile.d.ts +13 -0
  89. package/dist/codex-auth/resolve-active-profile.d.ts.map +1 -0
  90. package/dist/codex-auth/resolve-active-profile.js +161 -0
  91. package/dist/codex-auth/resolve-active-profile.js.map +1 -0
  92. package/dist/codex-auth/shell-detect.d.ts +19 -0
  93. package/dist/codex-auth/shell-detect.d.ts.map +1 -0
  94. package/dist/codex-auth/shell-detect.js +129 -0
  95. package/dist/codex-auth/shell-detect.js.map +1 -0
  96. package/dist/codex-auth/types.d.ts +26 -0
  97. package/dist/codex-auth/types.d.ts.map +1 -0
  98. package/dist/codex-auth/types.js +34 -0
  99. package/dist/codex-auth/types.js.map +1 -0
  100. package/dist/dispatcher/pre-dispatch.d.ts.map +1 -1
  101. package/dist/dispatcher/pre-dispatch.js +7 -0
  102. package/dist/dispatcher/pre-dispatch.js.map +1 -1
  103. package/dist/ui/assets/Trans-J6qQqjkU.js +1 -0
  104. package/dist/ui/assets/{accounts-C-sOjvWS.js → accounts-B9Y9uOFl.js} +1 -1
  105. package/dist/ui/assets/{alert-dialog-BrOo6Lh3.js → alert-dialog-B7gsksZn.js} +1 -1
  106. package/dist/ui/assets/{api-CXdC3ABc.js → api-Cz8U6P7R.js} +1 -1
  107. package/dist/ui/assets/{auth-section-XJ5PohAT.js → auth-section-C8dzvYje.js} +1 -1
  108. package/dist/ui/assets/{backups-section-DjMi9NN5.js → backups-section-D0dn59k8.js} +1 -1
  109. package/dist/ui/assets/{channels-dD6o7KFj.js → channels-BEmwDrRW.js} +1 -1
  110. package/dist/ui/assets/{checkbox-CVS69doq.js → checkbox-DD0s2D_O.js} +1 -1
  111. package/dist/ui/assets/{claude-extension-D47wkgfq.js → claude-extension-DHVBsw6b.js} +1 -1
  112. package/dist/ui/assets/{cliproxy-CXgzAe6X.js → cliproxy-BMlbpAIO.js} +2 -2
  113. package/dist/ui/assets/{cliproxy-ai-providers-POOrpQVc.js → cliproxy-ai-providers-B440rPlH.js} +2 -2
  114. package/dist/ui/assets/{cliproxy-control-panel-BWa_KiNM.js → cliproxy-control-panel-Bo-Y41B_.js} +1 -1
  115. package/dist/ui/assets/codex-DPe04ol4.js +30 -0
  116. package/dist/ui/assets/{confirm-dialog-BuxHs897.js → confirm-dialog-MQNmqmha.js} +1 -1
  117. package/dist/ui/assets/{copilot-BQ4Cltbo.js → copilot-COZj29YU.js} +1 -1
  118. package/dist/ui/assets/{cursor-BVUNUVux.js → cursor-D0occhsH.js} +1 -1
  119. package/dist/ui/assets/{droid-Bw34FF6c.js → droid-CSaYFApd.js} +1 -1
  120. package/dist/ui/assets/{globalenv-section-B4UDGHiP.js → globalenv-section-BwuNrdbO.js} +1 -1
  121. package/dist/ui/assets/{health-30TwUdp_.js → health-DjNOO9K-.js} +1 -1
  122. package/dist/ui/assets/{index-BUBCzEHD.js → index-Bm_0r3qk.js} +1 -1
  123. package/dist/ui/assets/{index-BxIFAuoV.js → index-Bnzie_zG.js} +1 -1
  124. package/dist/ui/assets/{index-C6j8gpEb.js → index-CSlgRg0s.js} +27 -27
  125. package/dist/ui/assets/index-CjM3Ehb8.js +1 -0
  126. package/dist/ui/assets/{index-BjQ5PWH7.js → index-CmOBelFi.js} +1 -1
  127. package/dist/ui/assets/{index-DtiygQmg.js → index-D9HfyuQr.js} +1 -1
  128. package/dist/ui/assets/index-G3mgTfgR.css +1 -0
  129. package/dist/ui/assets/{index-ByGCSVsI.js → index-i2MPNni3.js} +1 -1
  130. package/dist/ui/assets/{logs-CDD_WQvt.js → logs-7bWvuc1l.js} +1 -1
  131. package/dist/ui/assets/{masked-input-DpM1vKP_.js → masked-input-D_amxi96.js} +1 -1
  132. package/dist/ui/assets/proxy-status-widget-BkC-wCtI.js +1 -0
  133. package/dist/ui/assets/{raw-json-settings-editor-panel-D-zQkcvr.js → raw-json-settings-editor-panel-CVP5Bjfm.js} +1 -1
  134. package/dist/ui/assets/{searchable-select-B8Kp0x8p.js → searchable-select-e5sY7o6g.js} +1 -1
  135. package/dist/ui/assets/{separator-DlXQBF83.js → separator-BR5bmtI7.js} +1 -1
  136. package/dist/ui/assets/{shared-D_h3QKy6.js → shared-CsqW2cFN.js} +1 -1
  137. package/dist/ui/assets/{table-Dyt0FuBK.js → table-DPheAd4c.js} +1 -1
  138. package/dist/ui/assets/{updates-DfIV0IC0.js → updates-D07RjKLJ.js} +1 -1
  139. package/dist/ui/assets/{use-accounts-Dy2ogHT-.js → use-accounts-CWVR2NXQ.js} +1 -1
  140. package/dist/ui/index.html +2 -2
  141. package/dist/web-server/routes/codex-routes.d.ts.map +1 -1
  142. package/dist/web-server/routes/codex-routes.js +14 -0
  143. package/dist/web-server/routes/codex-routes.js.map +1 -1
  144. package/package.json +1 -1
  145. package/scripts/run-test-bucket.js +1 -0
  146. package/dist/ui/assets/codex-CYyPdHS4.js +0 -30
  147. package/dist/ui/assets/index-nSsKQx8t.css +0 -1
  148. package/dist/ui/assets/index-s94_IKNx.js +0 -1
  149. package/dist/ui/assets/proxy-status-widget-7iMiOpQe.js +0 -1
@@ -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"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Detail view renderer for `ccsx auth show <name>`.
4
+ * Extracted from show-command.ts to keep files under 200 lines.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.showProfileDetail = void 0;
31
+ const fs = __importStar(require("fs"));
32
+ const path = __importStar(require("path"));
33
+ const ui_1 = require("../../utils/ui");
34
+ const errors_1 = require("../../errors");
35
+ const exit_codes_1 = require("../../errors/exit-codes");
36
+ const codex_profile_paths_1 = require("../codex-profile-paths");
37
+ const codex_account_identity_1 = require("../codex-account-identity");
38
+ function showProfileDetail(profileName, ctx, json) {
39
+ const { registry } = ctx;
40
+ if (!registry.hasProfile(profileName)) {
41
+ (0, errors_1.exitWithError)(`Profile not found: ${profileName}`, exit_codes_1.ExitCode.PROFILE_ERROR);
42
+ return;
43
+ }
44
+ const meta = registry.getProfile(profileName);
45
+ const profileDir = (0, codex_profile_paths_1.resolveCodexProfileDir)(profileName);
46
+ const authJsonPath = path.join(profileDir, 'auth.json');
47
+ const configTomlPath = path.join(profileDir, 'config.toml');
48
+ const authExists = fs.existsSync(authJsonPath);
49
+ let authMtime = null;
50
+ let identity = {
51
+ email: undefined,
52
+ plan_type: undefined,
53
+ account_id: undefined,
54
+ };
55
+ let authState = 'missing';
56
+ if (authExists) {
57
+ try {
58
+ const stat = fs.statSync(authJsonPath);
59
+ authMtime = stat.mtime.toISOString();
60
+ identity = (0, codex_account_identity_1.decodeAccountIdentity)(authJsonPath);
61
+ authState = `present (mtime: ${new Date(authMtime).toLocaleString()})`;
62
+ }
63
+ catch {
64
+ authState = 'present (unreadable)';
65
+ }
66
+ }
67
+ // Inspect config.toml symlink
68
+ let configTarget = null;
69
+ try {
70
+ const lstat = fs.lstatSync(configTomlPath);
71
+ if (lstat.isSymbolicLink()) {
72
+ configTarget = fs.readlinkSync(configTomlPath);
73
+ }
74
+ else {
75
+ configTarget = `${configTomlPath} (regular file, not symlink)`;
76
+ }
77
+ }
78
+ catch {
79
+ configTarget = null;
80
+ }
81
+ const isDefault = registry.getDefault() === profileName;
82
+ const isActive = process.env.CCS_CODEX_PROFILE === profileName;
83
+ const states = [];
84
+ if (isDefault)
85
+ states.push('default');
86
+ if (isActive)
87
+ states.push('active');
88
+ const stateStr = states.join(',');
89
+ const accountId = meta.account_id ?? identity.account_id ?? null;
90
+ const email = meta.email ?? identity.email ?? null;
91
+ const plan = meta.plan_type ?? identity.plan_type ?? null;
92
+ if (json) {
93
+ const out = {
94
+ name: profileName,
95
+ is_default: isDefault,
96
+ is_active: isActive,
97
+ created: meta.created,
98
+ last_used: meta.last_used ?? null,
99
+ email,
100
+ plan,
101
+ account_id: accountId,
102
+ profile_dir: profileDir,
103
+ auth_json_exists: authExists,
104
+ auth_json_mtime: authMtime,
105
+ config_toml_link_target: configTarget,
106
+ };
107
+ console.log(JSON.stringify(out, null, 2));
108
+ return;
109
+ }
110
+ const badge = stateStr ? ` (${stateStr})` : '';
111
+ console.log(`Codex Profile: ${profileName}${badge}`);
112
+ console.log('');
113
+ const rows = [
114
+ ['Name', profileName],
115
+ ['Profile dir', profileDir],
116
+ ['config.toml', configTarget ? `-> ${configTarget} (symlink)` : '(not linked)'],
117
+ ['auth.json', authState],
118
+ ['Email', email ?? (authExists ? '<invalid>' : '<unknown>')],
119
+ ['Plan', plan ?? (authExists ? '<invalid>' : '<unknown>')],
120
+ ['Account ID', accountId ?? '-'],
121
+ ['Created', new Date(meta.created).toLocaleString()],
122
+ ['Last used', meta.last_used ? new Date(meta.last_used).toLocaleString() : 'never'],
123
+ ['CODEX_HOME (env)', process.env.CODEX_HOME ?? 'unset'],
124
+ ['CCS_CODEX_PROFILE', process.env.CCS_CODEX_PROFILE ?? 'unset'],
125
+ ];
126
+ console.log((0, ui_1.table)(rows, { colWidths: [20, 55] }));
127
+ // H4: warn if config.toml is a regular file (not symlink)
128
+ if (configTarget && configTarget.includes('regular file')) {
129
+ process.stderr.write(`[!] config.toml is a regular file, not a symlink. Config changes won't propagate.\n`);
130
+ process.stderr.write(` Run: ccsx auth create ${profileName} --force\n`);
131
+ }
132
+ }
133
+ exports.showProfileDetail = showProfileDetail;
134
+ //# sourceMappingURL=show-detail-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-detail-view.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/show-detail-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * codex-auth switch command.
3
+ * Sets the persistent default Codex profile in the registry.
4
+ */
5
+ import type { CodexCommandContext } from './types';
6
+ export declare function handleSwitchCodex(ctx: CodexCommandContext, args: string[]): Promise<void>;
7
+ //# sourceMappingURL=switch-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-command.d.ts","sourceRoot":"","sources":["../../../src/codex-auth/commands/switch-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C/F"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * codex-auth switch command.
4
+ * Sets the persistent default Codex profile in the registry.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.handleSwitchCodex = void 0;
8
+ const ui_1 = require("../../utils/ui");
9
+ const errors_1 = require("../../errors");
10
+ const exit_codes_1 = require("../../errors/exit-codes");
11
+ const types_1 = require("./types");
12
+ async function handleSwitchCodex(ctx, args) {
13
+ await (0, ui_1.initUI)();
14
+ const parsed = (0, types_1.parseArgs)(args);
15
+ (0, types_1.rejectUnsupportedOptions)(parsed, 'ccsx auth switch <name>');
16
+ const { profileName } = parsed;
17
+ if (!profileName) {
18
+ console.log('Usage: ccsx auth switch <name>');
19
+ (0, errors_1.exitWithError)('Profile name required', exit_codes_1.ExitCode.PROFILE_ERROR);
20
+ return;
21
+ }
22
+ const nameError = (0, types_1.getProfileNameError)(profileName);
23
+ if (nameError) {
24
+ (0, errors_1.exitWithError)(nameError, exit_codes_1.ExitCode.PROFILE_ERROR);
25
+ return;
26
+ }
27
+ const { registry } = ctx;
28
+ if (!registry.hasProfile(profileName)) {
29
+ const available = registry.listProfiles();
30
+ const availableStr = available.length > 0 ? available.join(', ') : '<none>';
31
+ (0, errors_1.exitWithError)(`Profile not found: ${profileName}. Available: ${availableStr}`, exit_codes_1.ExitCode.PROFILE_ERROR);
32
+ return;
33
+ }
34
+ registry.setDefault(profileName);
35
+ const meta = registry.getProfile(profileName);
36
+ const emailStr = meta.email ? `\n Email: ${meta.email}` : '';
37
+ const planStr = meta.plan_type ? `\n Plan : ${meta.plan_type}` : '';
38
+ console.log((0, ui_1.ok)(`Default Codex profile: ${profileName}`));
39
+ if (emailStr)
40
+ process.stdout.write(emailStr + '\n');
41
+ if (planStr)
42
+ process.stdout.write(planStr + '\n');
43
+ console.log('');
44
+ console.log('[i] This is the persistent default. To use a different profile in the');
45
+ console.log(` current shell only, run: eval "$(ccsx auth use <other>)"`);
46
+ }
47
+ exports.handleSwitchCodex = handleSwitchCodex;
48
+ //# sourceMappingURL=switch-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-command.js","sourceRoot":"","sources":["../../../src/codex-auth/commands/switch-command.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA4C;AAC5C,yCAA6C;AAC7C,wDAAmD;AACnD,mCAAmF;AAG5E,KAAK,UAAU,iBAAiB,CAAC,GAAwB,EAAE,IAAc;IAC9E,MAAM,IAAA,WAAM,GAAE,CAAC;IACf,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,IAAA,gCAAwB,EAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAE5D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,IAAA,sBAAa,EAAC,uBAAuB,EAAE,qBAAQ,CAAC,aAAa,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,WAAW,CAAC,CAAC;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,IAAA,sBAAa,EAAC,SAAS,EAAE,qBAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAEzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5E,IAAA,sBAAa,EACX,sBAAsB,WAAW,gBAAgB,YAAY,EAAE,EAC/D,qBAAQ,CAAC,aAAa,CACvB,CAAC;QACF,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,IAAA,OAAE,EAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;AAC9E,CAAC;AA3CD,8CA2CC"}