codex-multi-auth 0.1.7 → 0.1.8
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/LICENSE +21 -1
- package/README.md +13 -0
- package/assets/readme-hero.svg +31 -31
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-cli/sync.d.ts +9 -16
- package/dist/lib/codex-cli/sync.d.ts.map +1 -1
- package/dist/lib/codex-cli/sync.js +51 -284
- package/dist/lib/codex-cli/sync.js.map +1 -1
- package/dist/lib/codex-manager/settings-hub.d.ts +44 -2
- package/dist/lib/codex-manager/settings-hub.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub.js +746 -117
- package/dist/lib/codex-manager/settings-hub.js.map +1 -1
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +3 -8
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/context-overflow.js +10 -10
- package/dist/lib/named-backup-export.d.ts +69 -0
- package/dist/lib/named-backup-export.d.ts.map +1 -0
- package/dist/lib/named-backup-export.js +207 -0
- package/dist/lib/named-backup-export.js.map +1 -0
- package/dist/lib/oc-chatgpt-import-adapter.d.ts +64 -0
- package/dist/lib/oc-chatgpt-import-adapter.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-import-adapter.js +506 -0
- package/dist/lib/oc-chatgpt-import-adapter.js.map +1 -0
- package/dist/lib/oc-chatgpt-orchestrator.d.ts +80 -0
- package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-orchestrator.js +130 -0
- package/dist/lib/oc-chatgpt-orchestrator.js.map +1 -0
- package/dist/lib/oc-chatgpt-target-detection.d.ts +59 -0
- package/dist/lib/oc-chatgpt-target-detection.d.ts.map +1 -0
- package/dist/lib/oc-chatgpt-target-detection.js +327 -0
- package/dist/lib/oc-chatgpt-target-detection.js.map +1 -0
- package/dist/lib/prompts/codex.js +2 -2
- package/dist/lib/runtime-paths.d.ts.map +1 -1
- package/dist/lib/runtime-paths.js +21 -1
- package/dist/lib/runtime-paths.js.map +1 -1
- package/dist/lib/storage.d.ts +42 -3
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +519 -51
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/ui/copy.d.ts +15 -1
- package/dist/lib/ui/copy.d.ts.map +1 -1
- package/dist/lib/ui/copy.js +15 -1
- package/dist/lib/ui/copy.js.map +1 -1
- package/package.json +132 -133
- package/scripts/bench-format/hashline-v2.mjs +642 -642
- package/scripts/bench-format/render.mjs +496 -496
- package/scripts/bench-format/stats.mjs +54 -54
- package/scripts/bench-format/tasks.mjs +151 -151
- package/scripts/benchmark-render-dashboard.mjs +49 -49
- package/scripts/install-codex-auth.js +9 -9
- package/scripts/test-all-models.sh +7 -7
- package/scripts/test-model-matrix.js +138 -46
- package/scripts/validate-model-map.sh +7 -7
|
@@ -1,24 +1,7 @@
|
|
|
1
|
-
import { getLastAccountsSaveTimestamp, } from "../storage.js";
|
|
2
|
-
import { MODEL_FAMILIES } from "../prompts/codex.js";
|
|
3
1
|
import { createLogger } from "../logger.js";
|
|
4
|
-
import {
|
|
5
|
-
import { incrementCodexCliMetric
|
|
6
|
-
import { getLastCodexCliSelectionWriteTimestamp } from "./writer.js";
|
|
2
|
+
import { MODEL_FAMILIES } from "../prompts/codex.js";
|
|
3
|
+
import { incrementCodexCliMetric } from "./observability.js";
|
|
7
4
|
const log = createLogger("codex-cli-sync");
|
|
8
|
-
function normalizeEmail(value) {
|
|
9
|
-
if (!value)
|
|
10
|
-
return undefined;
|
|
11
|
-
const trimmed = value.trim().toLowerCase();
|
|
12
|
-
return trimmed.length > 0 ? trimmed : undefined;
|
|
13
|
-
}
|
|
14
|
-
function createEmptyStorage() {
|
|
15
|
-
return {
|
|
16
|
-
version: 3,
|
|
17
|
-
accounts: [],
|
|
18
|
-
activeIndex: 0,
|
|
19
|
-
activeIndexByFamily: {},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
5
|
function cloneStorage(storage) {
|
|
23
6
|
return {
|
|
24
7
|
version: 3,
|
|
@@ -29,297 +12,81 @@ function cloneStorage(storage) {
|
|
|
29
12
|
: {},
|
|
30
13
|
};
|
|
31
14
|
}
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const account = accounts[i];
|
|
36
|
-
if (!account?.accountId)
|
|
37
|
-
continue;
|
|
38
|
-
map.set(account.accountId, i);
|
|
39
|
-
}
|
|
40
|
-
return map;
|
|
41
|
-
}
|
|
42
|
-
function buildIndexByRefresh(accounts) {
|
|
43
|
-
const map = new Map();
|
|
44
|
-
for (let i = 0; i < accounts.length; i += 1) {
|
|
45
|
-
const account = accounts[i];
|
|
46
|
-
if (!account?.refreshToken)
|
|
47
|
-
continue;
|
|
48
|
-
map.set(account.refreshToken, i);
|
|
49
|
-
}
|
|
50
|
-
return map;
|
|
51
|
-
}
|
|
52
|
-
function buildIndexByEmail(accounts) {
|
|
53
|
-
const map = new Map();
|
|
54
|
-
for (let i = 0; i < accounts.length; i += 1) {
|
|
55
|
-
const email = normalizeEmail(accounts[i]?.email);
|
|
56
|
-
if (!email)
|
|
57
|
-
continue;
|
|
58
|
-
map.set(email, i);
|
|
15
|
+
function normalizeIndexCandidate(value, fallback) {
|
|
16
|
+
if (!Number.isFinite(value)) {
|
|
17
|
+
return Number.isFinite(fallback) ? Math.trunc(fallback) : 0;
|
|
59
18
|
}
|
|
60
|
-
return
|
|
19
|
+
return Math.trunc(value);
|
|
61
20
|
}
|
|
62
|
-
function toStorageAccount(snapshot) {
|
|
63
|
-
if (!snapshot.refreshToken)
|
|
64
|
-
return null;
|
|
65
|
-
const now = Date.now();
|
|
66
|
-
return {
|
|
67
|
-
accountId: snapshot.accountId,
|
|
68
|
-
accountIdSource: snapshot.accountId ? "token" : undefined,
|
|
69
|
-
email: snapshot.email,
|
|
70
|
-
refreshToken: snapshot.refreshToken,
|
|
71
|
-
accessToken: snapshot.accessToken,
|
|
72
|
-
expiresAt: snapshot.expiresAt,
|
|
73
|
-
enabled: true,
|
|
74
|
-
addedAt: now,
|
|
75
|
-
lastUsed: 0,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
function upsertFromSnapshot(accounts, snapshot) {
|
|
79
|
-
const nextAccount = toStorageAccount(snapshot);
|
|
80
|
-
if (!nextAccount)
|
|
81
|
-
return false;
|
|
82
|
-
const byAccountId = buildIndexByAccountId(accounts);
|
|
83
|
-
const byRefresh = buildIndexByRefresh(accounts);
|
|
84
|
-
const byEmail = buildIndexByEmail(accounts);
|
|
85
|
-
const normalizedEmail = normalizeEmail(snapshot.email);
|
|
86
|
-
let targetIndex;
|
|
87
|
-
if (snapshot.accountId && byAccountId.has(snapshot.accountId)) {
|
|
88
|
-
targetIndex = byAccountId.get(snapshot.accountId);
|
|
89
|
-
}
|
|
90
|
-
else if (snapshot.refreshToken && byRefresh.has(snapshot.refreshToken)) {
|
|
91
|
-
targetIndex = byRefresh.get(snapshot.refreshToken);
|
|
92
|
-
}
|
|
93
|
-
else if (normalizedEmail && byEmail.has(normalizedEmail)) {
|
|
94
|
-
targetIndex = byEmail.get(normalizedEmail);
|
|
95
|
-
}
|
|
96
|
-
if (targetIndex === undefined) {
|
|
97
|
-
accounts.push(nextAccount);
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
const current = accounts[targetIndex];
|
|
101
|
-
if (!current)
|
|
102
|
-
return false;
|
|
103
|
-
const merged = {
|
|
104
|
-
...current,
|
|
105
|
-
accountId: snapshot.accountId ?? current.accountId,
|
|
106
|
-
accountIdSource: snapshot.accountId
|
|
107
|
-
? current.accountIdSource ?? "token"
|
|
108
|
-
: current.accountIdSource,
|
|
109
|
-
email: snapshot.email ?? current.email,
|
|
110
|
-
refreshToken: snapshot.refreshToken ?? current.refreshToken,
|
|
111
|
-
accessToken: snapshot.accessToken ?? current.accessToken,
|
|
112
|
-
expiresAt: snapshot.expiresAt ?? current.expiresAt,
|
|
113
|
-
};
|
|
114
|
-
const changed = JSON.stringify(current) !== JSON.stringify(merged);
|
|
115
|
-
if (changed) {
|
|
116
|
-
accounts[targetIndex] = merged;
|
|
117
|
-
}
|
|
118
|
-
return changed;
|
|
119
|
-
}
|
|
120
|
-
function resolveActiveIndex(accounts, activeAccountId, activeEmail) {
|
|
121
|
-
if (accounts.length === 0)
|
|
122
|
-
return 0;
|
|
123
|
-
if (activeAccountId) {
|
|
124
|
-
const byId = accounts.findIndex((account) => account.accountId === activeAccountId);
|
|
125
|
-
if (byId >= 0)
|
|
126
|
-
return byId;
|
|
127
|
-
}
|
|
128
|
-
const normalizedEmail = normalizeEmail(activeEmail);
|
|
129
|
-
if (normalizedEmail) {
|
|
130
|
-
const byEmail = accounts.findIndex((account) => normalizeEmail(account.email) === normalizedEmail);
|
|
131
|
-
if (byEmail >= 0)
|
|
132
|
-
return byEmail;
|
|
133
|
-
}
|
|
134
|
-
return 0;
|
|
135
|
-
}
|
|
136
|
-
function writeFamilyIndexes(storage, index) {
|
|
137
|
-
storage.activeIndex = index;
|
|
138
|
-
storage.activeIndexByFamily = storage.activeIndexByFamily ?? {};
|
|
139
|
-
for (const family of MODEL_FAMILIES) {
|
|
140
|
-
storage.activeIndexByFamily[family] = index;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Normalize and clamp the global and per-family active account indexes to valid ranges.
|
|
145
|
-
*
|
|
146
|
-
* Mutates `storage` in-place: ensures `activeIndexByFamily` exists, clamps `activeIndex` to
|
|
147
|
-
* 0..(accounts.length - 1) (or 0 when there are no accounts), and resolves each family entry
|
|
148
|
-
* to a valid index within the same bounds.
|
|
149
|
-
*
|
|
150
|
-
* Concurrency: callers must synchronize externally when multiple threads/processes may write
|
|
151
|
-
* the same storage object. Filesystem notes: no platform-specific IO is performed here; when
|
|
152
|
-
* persisted to disk on Windows consumers should still ensure atomic writes. Token handling:
|
|
153
|
-
* this function does not read or modify authentication tokens and makes no attempt to redact
|
|
154
|
-
* sensitive fields.
|
|
155
|
-
*
|
|
156
|
-
* @param storage - The account storage object whose indexes will be normalized and clamped
|
|
157
|
-
*/
|
|
158
21
|
function normalizeStoredFamilyIndexes(storage) {
|
|
159
22
|
const count = storage.accounts.length;
|
|
160
|
-
const
|
|
23
|
+
const normalizedActiveIndex = normalizeIndexCandidate(storage.activeIndex, 0);
|
|
24
|
+
const clamped = count === 0 ? 0 : Math.max(0, Math.min(normalizedActiveIndex, count - 1));
|
|
161
25
|
if (storage.activeIndex !== clamped) {
|
|
162
26
|
storage.activeIndex = clamped;
|
|
163
27
|
}
|
|
164
28
|
storage.activeIndexByFamily = storage.activeIndexByFamily ?? {};
|
|
165
29
|
for (const family of MODEL_FAMILIES) {
|
|
30
|
+
const hasFamilyIndex = Object.prototype.hasOwnProperty.call(storage.activeIndexByFamily, family);
|
|
166
31
|
const raw = storage.activeIndexByFamily[family];
|
|
167
|
-
const resolved = typeof raw === "number"
|
|
168
|
-
|
|
169
|
-
|
|
32
|
+
const resolved = typeof raw === "number"
|
|
33
|
+
? normalizeIndexCandidate(raw, storage.activeIndex)
|
|
34
|
+
: storage.activeIndex;
|
|
35
|
+
const familyIndex = count === 0 ? 0 : Math.max(0, Math.min(resolved, count - 1));
|
|
36
|
+
if (!hasFamilyIndex && familyIndex === storage.activeIndex) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
storage.activeIndexByFamily[family] = familyIndex;
|
|
170
40
|
}
|
|
171
41
|
}
|
|
172
42
|
/**
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* @param snapshots - Array of Codex CLI account snapshots to search
|
|
176
|
-
* @returns The `accountId` and `email` from the first snapshot whose `isActive` is true; properties are omitted if no active snapshot is found
|
|
177
|
-
*
|
|
178
|
-
* Concurrency: pure and side-effect free; safe to call concurrently.
|
|
179
|
-
* Filesystem: behavior is independent of OS/filesystem semantics (including Windows).
|
|
180
|
-
* Security: only `accountId` and `email` are returned; other sensitive snapshot fields (for example tokens) are not exposed or returned by this function.
|
|
181
|
-
*/
|
|
182
|
-
function readActiveFromSnapshots(snapshots) {
|
|
183
|
-
const active = snapshots.find((snapshot) => snapshot.isActive);
|
|
184
|
-
return {
|
|
185
|
-
accountId: active?.accountId,
|
|
186
|
-
email: active?.email,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Determines whether the Codex CLI's active-account selection should override the local selection.
|
|
43
|
+
* Preserves one-way mirror semantics for Codex CLI compatibility state.
|
|
191
44
|
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
45
|
+
* Multi-auth storage is the canonical source of truth. Codex CLI account files are mirrors only
|
|
46
|
+
* and must never seed, merge into, or restore the canonical account pool. This helper is kept for
|
|
47
|
+
* older call sites that still use the historical reconcile entry point, but it now only normalizes
|
|
48
|
+
* the existing local indexes and never reads or applies Codex CLI account data.
|
|
196
49
|
*
|
|
197
|
-
* @param
|
|
198
|
-
* @returns
|
|
50
|
+
* @param current - The current canonical AccountStorageV3, or null when no canonical storage exists.
|
|
51
|
+
* @returns The original storage when no local normalization is needed, a normalized clone when index
|
|
52
|
+
* values need clamping, or null when canonical storage is missing.
|
|
199
53
|
*/
|
|
200
|
-
function
|
|
201
|
-
if (!state)
|
|
202
|
-
return false;
|
|
203
|
-
const hasSyncVersion = typeof state.syncVersion === "number" && Number.isFinite(state.syncVersion);
|
|
204
|
-
const codexVersion = hasSyncVersion
|
|
205
|
-
? state.syncVersion
|
|
206
|
-
: typeof state.sourceUpdatedAtMs === "number" && Number.isFinite(state.sourceUpdatedAtMs)
|
|
207
|
-
? state.sourceUpdatedAtMs
|
|
208
|
-
: 0;
|
|
209
|
-
const localVersion = Math.max(getLastAccountsSaveTimestamp(), getLastCodexCliSelectionWriteTimestamp());
|
|
210
|
-
if (codexVersion <= 0 || localVersion <= 0)
|
|
211
|
-
return true;
|
|
212
|
-
// Keep local selection when plugin wrote more recently than Codex state.
|
|
213
|
-
const toleranceMs = hasSyncVersion ? 0 : 1_000;
|
|
214
|
-
return codexVersion >= localVersion - toleranceMs;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Reconciles the provided local account storage with the Codex CLI state and returns the resulting storage and whether it changed.
|
|
218
|
-
*
|
|
219
|
-
* This operation:
|
|
220
|
-
* - Merges accounts from the Codex CLI state into a clone of `current` (or into a new empty storage when `current` is null).
|
|
221
|
-
* - May update the active account selection and per-family active indexes when the Codex CLI selection is considered applicable.
|
|
222
|
-
* - Preserves secrets and sensitive fields; any tokens written to storage are subject to the project's token-redaction rules and are not exposed in logs or metrics.
|
|
223
|
-
*
|
|
224
|
-
* Concurrency assumptions:
|
|
225
|
-
* - Caller is responsible for serializing concurrent writes to persistent storage; this function only returns an in-memory storage object and does not perform atomic file-level coordination.
|
|
226
|
-
*
|
|
227
|
-
* Windows filesystem notes:
|
|
228
|
-
* - When the caller persists the returned storage to disk on Windows, standard Windows file-locking and path-length semantics apply; this function does not perform Windows-specific path normalization.
|
|
229
|
-
*
|
|
230
|
-
* @param current - The current local AccountStorageV3, or `null` to indicate none exists.
|
|
231
|
-
* @returns An object containing:
|
|
232
|
-
* - `storage`: the reconciled AccountStorageV3 to persist (may be the original `current` when no changes were applied).
|
|
233
|
-
* - `changed`: `true` if the reconciled storage differs from `current`, `false` otherwise.
|
|
234
|
-
*/
|
|
235
|
-
export async function syncAccountStorageFromCodexCli(current) {
|
|
54
|
+
export function syncAccountStorageFromCodexCli(current) {
|
|
236
55
|
incrementCodexCliMetric("reconcileAttempts");
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
incrementCodexCliMetric("reconcileNoops");
|
|
241
|
-
return { storage: current, changed: false };
|
|
242
|
-
}
|
|
243
|
-
const next = current ? cloneStorage(current) : createEmptyStorage();
|
|
244
|
-
let changed = false;
|
|
245
|
-
for (const snapshot of state.accounts) {
|
|
246
|
-
const updated = upsertFromSnapshot(next.accounts, snapshot);
|
|
247
|
-
if (updated)
|
|
248
|
-
changed = true;
|
|
249
|
-
}
|
|
250
|
-
if (next.accounts.length === 0) {
|
|
251
|
-
incrementCodexCliMetric(changed ? "reconcileChanges" : "reconcileNoops");
|
|
252
|
-
log.debug("Codex CLI reconcile completed", {
|
|
253
|
-
operation: "reconcile-storage",
|
|
254
|
-
outcome: changed ? "changed" : "noop",
|
|
255
|
-
accountCount: next.accounts.length,
|
|
256
|
-
});
|
|
257
|
-
return {
|
|
258
|
-
storage: current ?? next,
|
|
259
|
-
changed,
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
const activeFromSnapshots = readActiveFromSnapshots(state.accounts);
|
|
263
|
-
const applyActiveFromCodex = shouldApplyCodexCliSelection(state);
|
|
264
|
-
if (applyActiveFromCodex) {
|
|
265
|
-
const desiredIndex = resolveActiveIndex(next.accounts, state.activeAccountId ?? activeFromSnapshots.accountId, state.activeEmail ?? activeFromSnapshots.email);
|
|
266
|
-
const previousActive = next.activeIndex;
|
|
267
|
-
const previousFamilies = JSON.stringify(next.activeIndexByFamily ?? {});
|
|
268
|
-
writeFamilyIndexes(next, desiredIndex);
|
|
269
|
-
normalizeStoredFamilyIndexes(next);
|
|
270
|
-
if (previousActive !== next.activeIndex) {
|
|
271
|
-
changed = true;
|
|
272
|
-
}
|
|
273
|
-
if (previousFamilies !== JSON.stringify(next.activeIndexByFamily ?? {})) {
|
|
274
|
-
changed = true;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
const previousActive = next.activeIndex;
|
|
279
|
-
const previousFamilies = JSON.stringify(next.activeIndexByFamily ?? {});
|
|
280
|
-
normalizeStoredFamilyIndexes(next);
|
|
281
|
-
if (previousActive !== next.activeIndex) {
|
|
282
|
-
changed = true;
|
|
283
|
-
}
|
|
284
|
-
if (previousFamilies !== JSON.stringify(next.activeIndexByFamily ?? {})) {
|
|
285
|
-
changed = true;
|
|
286
|
-
}
|
|
287
|
-
log.debug("Skipped Codex CLI active selection overwrite due to newer local state", {
|
|
288
|
-
operation: "reconcile-storage",
|
|
289
|
-
outcome: "local-newer",
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
incrementCodexCliMetric(changed ? "reconcileChanges" : "reconcileNoops");
|
|
293
|
-
log.debug("Codex CLI reconcile completed", {
|
|
294
|
-
operation: "reconcile-storage",
|
|
295
|
-
outcome: changed ? "changed" : "noop",
|
|
296
|
-
accountCount: next.accounts.length,
|
|
297
|
-
activeAccountRef: makeAccountFingerprint({
|
|
298
|
-
accountId: state.activeAccountId ?? activeFromSnapshots.accountId,
|
|
299
|
-
email: state.activeEmail ?? activeFromSnapshots.email,
|
|
300
|
-
}),
|
|
301
|
-
});
|
|
302
|
-
return {
|
|
303
|
-
storage: next,
|
|
304
|
-
changed,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
catch (error) {
|
|
308
|
-
incrementCodexCliMetric("reconcileFailures");
|
|
309
|
-
log.warn("Codex CLI reconcile failed", {
|
|
56
|
+
if (!current) {
|
|
57
|
+
incrementCodexCliMetric("reconcileNoops");
|
|
58
|
+
log.debug("Skipped Codex CLI reconcile because canonical storage is missing", {
|
|
310
59
|
operation: "reconcile-storage",
|
|
311
|
-
outcome: "
|
|
312
|
-
error: String(error),
|
|
60
|
+
outcome: "canonical-missing",
|
|
313
61
|
});
|
|
314
|
-
return { storage:
|
|
62
|
+
return Promise.resolve({ storage: null, changed: false });
|
|
315
63
|
}
|
|
64
|
+
const next = cloneStorage(current);
|
|
65
|
+
const previousActive = next.activeIndex;
|
|
66
|
+
const previousFamilies = JSON.stringify(next.activeIndexByFamily ?? {});
|
|
67
|
+
normalizeStoredFamilyIndexes(next);
|
|
68
|
+
const changed = previousActive !== next.activeIndex ||
|
|
69
|
+
previousFamilies !== JSON.stringify(next.activeIndexByFamily ?? {});
|
|
70
|
+
incrementCodexCliMetric(changed ? "reconcileChanges" : "reconcileNoops");
|
|
71
|
+
log.debug("Skipped Codex CLI authority import; canonical storage remains authoritative", {
|
|
72
|
+
operation: "reconcile-storage",
|
|
73
|
+
outcome: changed ? "normalized-local-indexes" : "canonical-authoritative",
|
|
74
|
+
accountCount: next.accounts.length,
|
|
75
|
+
});
|
|
76
|
+
return Promise.resolve({
|
|
77
|
+
storage: changed ? next : current,
|
|
78
|
+
changed,
|
|
79
|
+
});
|
|
316
80
|
}
|
|
317
81
|
export function getActiveSelectionForFamily(storage, family) {
|
|
318
82
|
const count = storage.accounts.length;
|
|
319
83
|
if (count === 0)
|
|
320
84
|
return 0;
|
|
321
85
|
const raw = storage.activeIndexByFamily?.[family];
|
|
322
|
-
const
|
|
86
|
+
const normalizedActiveIndex = normalizeIndexCandidate(storage.activeIndex, 0);
|
|
87
|
+
const candidate = typeof raw === "number"
|
|
88
|
+
? normalizeIndexCandidate(raw, normalizedActiveIndex)
|
|
89
|
+
: normalizedActiveIndex;
|
|
323
90
|
return Math.max(0, Math.min(candidate, count - 1));
|
|
324
91
|
}
|
|
325
92
|
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../lib/codex-cli/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../lib/codex-cli/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import { type DashboardDisplaySettings } from "../dashboard-settings.js";
|
|
1
|
+
import { type DashboardDisplaySettings, type DashboardStatuslineField } from "../dashboard-settings.js";
|
|
2
|
+
import { detectOcChatgptMultiAuthTarget } from "../oc-chatgpt-target-detection.js";
|
|
2
3
|
import type { PluginConfig } from "../types.js";
|
|
4
|
+
import { getUiRuntimeOptions } from "../ui/runtime.js";
|
|
5
|
+
type DashboardDisplaySettingKey = "menuShowStatusBadge" | "menuShowCurrentBadge" | "menuShowLastUsed" | "menuShowQuotaSummary" | "menuShowQuotaCooldown" | "menuShowDetailsForUnselectedRows" | "menuShowFetchStatus" | "menuHighlightCurrentRow" | "menuSortEnabled" | "menuSortPinCurrent" | "menuSortQuickSwitchVisibleRow";
|
|
6
|
+
type PreviewFocusKey = DashboardDisplaySettingKey | DashboardStatuslineField | "menuSortMode" | "menuLayoutMode" | null;
|
|
7
|
+
declare function normalizeStatuslineFields(fields: DashboardStatuslineField[] | undefined): DashboardStatuslineField[];
|
|
8
|
+
declare function buildSummaryPreviewText(settings: DashboardDisplaySettings, ui: ReturnType<typeof getUiRuntimeOptions>, focus?: PreviewFocusKey): string;
|
|
9
|
+
declare function buildAccountListPreview(settings: DashboardDisplaySettings, ui: ReturnType<typeof getUiRuntimeOptions>, focus?: PreviewFocusKey): {
|
|
10
|
+
label: string;
|
|
11
|
+
hint: string;
|
|
12
|
+
};
|
|
3
13
|
declare function cloneDashboardSettings(settings: DashboardDisplaySettings): DashboardDisplaySettings;
|
|
4
14
|
declare function applyUiThemeFromDashboardSettings(settings: DashboardDisplaySettings): void;
|
|
5
15
|
declare function resolveMenuLayoutMode(settings: DashboardDisplaySettings): "compact-details" | "expanded-rows";
|
|
@@ -13,9 +23,41 @@ declare const __testOnly: {
|
|
|
13
23
|
formatMenuLayoutMode: typeof formatMenuLayoutMode;
|
|
14
24
|
cloneDashboardSettings: typeof cloneDashboardSettings;
|
|
15
25
|
withQueuedRetry: typeof withQueuedRetryForTests;
|
|
26
|
+
loadExperimentalSyncTarget: typeof loadExperimentalSyncTarget;
|
|
27
|
+
promptExperimentalSettings: typeof promptExperimentalSettings;
|
|
16
28
|
persistDashboardSettingsSelection: typeof persistDashboardSettingsSelectionForTests;
|
|
17
29
|
persistBackendConfigSelection: typeof persistBackendConfigSelectionForTests;
|
|
30
|
+
buildAccountListPreview: typeof buildAccountListPreview;
|
|
31
|
+
buildSummaryPreviewText: typeof buildSummaryPreviewText;
|
|
32
|
+
normalizeStatuslineFields: typeof normalizeStatuslineFields;
|
|
33
|
+
reorderField: typeof reorderField;
|
|
34
|
+
promptDashboardDisplaySettings: typeof promptDashboardDisplaySettings;
|
|
35
|
+
promptStatuslineSettings: typeof promptStatuslineSettings;
|
|
36
|
+
promptBehaviorSettings: typeof promptBehaviorSettings;
|
|
37
|
+
promptThemeSettings: typeof promptThemeSettings;
|
|
38
|
+
promptBackendSettings: typeof promptBackendSettings;
|
|
18
39
|
};
|
|
40
|
+
declare function promptDashboardDisplaySettings(initial: DashboardDisplaySettings): Promise<DashboardDisplaySettings | null>;
|
|
41
|
+
declare function reorderField(fields: DashboardStatuslineField[], key: DashboardStatuslineField, direction: -1 | 1): DashboardStatuslineField[];
|
|
42
|
+
declare function promptStatuslineSettings(initial: DashboardDisplaySettings): Promise<DashboardDisplaySettings | null>;
|
|
43
|
+
declare function promptBehaviorSettings(initial: DashboardDisplaySettings): Promise<DashboardDisplaySettings | null>;
|
|
44
|
+
declare function promptThemeSettings(initial: DashboardDisplaySettings): Promise<DashboardDisplaySettings | null>;
|
|
45
|
+
declare function promptBackendSettings(initial: PluginConfig): Promise<PluginConfig | null>;
|
|
46
|
+
declare function loadExperimentalSyncTarget(): Promise<{
|
|
47
|
+
kind: "blocked-ambiguous";
|
|
48
|
+
detection: ReturnType<typeof detectOcChatgptMultiAuthTarget>;
|
|
49
|
+
} | {
|
|
50
|
+
kind: "blocked-none";
|
|
51
|
+
detection: ReturnType<typeof detectOcChatgptMultiAuthTarget>;
|
|
52
|
+
} | {
|
|
53
|
+
kind: "error";
|
|
54
|
+
message: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "target";
|
|
57
|
+
detection: ReturnType<typeof detectOcChatgptMultiAuthTarget>;
|
|
58
|
+
destination: import("../storage.js").AccountStorageV3 | null;
|
|
59
|
+
}>;
|
|
60
|
+
declare function promptExperimentalSettings(initialConfig: PluginConfig): Promise<PluginConfig | null>;
|
|
19
61
|
declare function configureUnifiedSettings(initialSettings?: DashboardDisplaySettings): Promise<DashboardDisplaySettings>;
|
|
20
|
-
export { configureUnifiedSettings, applyUiThemeFromDashboardSettings, resolveMenuLayoutMode, __testOnly };
|
|
62
|
+
export { configureUnifiedSettings, applyUiThemeFromDashboardSettings, resolveMenuLayoutMode, __testOnly, };
|
|
21
63
|
//# sourceMappingURL=settings-hub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-hub.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/settings-hub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-hub.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/settings-hub.ts"],"names":[],"mappings":"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"}
|