codex-multi-auth 1.2.7 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/config/codex-legacy.json +85 -10
- package/config/codex-modern.json +35 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -22
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts.d.ts +47 -0
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +277 -33
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/auth.d.ts +35 -0
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +140 -8
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/server.d.ts +1 -1
- package/dist/lib/auth/server.d.ts.map +1 -1
- package/dist/lib/auth/server.js +19 -11
- package/dist/lib/auth/server.js.map +1 -1
- package/dist/lib/capability-policy.d.ts.map +1 -1
- package/dist/lib/capability-policy.js +7 -2
- package/dist/lib/capability-policy.js.map +1 -1
- package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/status.js +13 -5
- package/dist/lib/codex-manager/commands/status.js.map +1 -1
- package/dist/lib/codex-manager/commands/verify.d.ts +59 -0
- package/dist/lib/codex-manager/commands/verify.d.ts.map +1 -0
- package/dist/lib/codex-manager/commands/verify.js +332 -0
- package/dist/lib/codex-manager/commands/verify.js.map +1 -0
- package/dist/lib/codex-manager/commands/why-selected.d.ts +57 -0
- package/dist/lib/codex-manager/commands/why-selected.d.ts.map +1 -0
- package/dist/lib/codex-manager/commands/why-selected.js +198 -0
- package/dist/lib/codex-manager/commands/why-selected.js.map +1 -0
- package/dist/lib/codex-manager/help.d.ts.map +1 -1
- package/dist/lib/codex-manager/help.js +4 -0
- package/dist/lib/codex-manager/help.js.map +1 -1
- package/dist/lib/codex-manager/settings-hub/backend.d.ts +9 -0
- package/dist/lib/codex-manager/settings-hub/backend.d.ts.map +1 -0
- package/dist/lib/codex-manager/settings-hub/backend.js +79 -0
- package/dist/lib/codex-manager/settings-hub/backend.js.map +1 -0
- package/dist/lib/codex-manager/settings-hub/dashboard.d.ts +24 -0
- package/dist/lib/codex-manager/settings-hub/dashboard.d.ts.map +1 -0
- package/dist/lib/codex-manager/settings-hub/dashboard.js +223 -0
- package/dist/lib/codex-manager/settings-hub/dashboard.js.map +1 -0
- package/dist/lib/codex-manager/settings-hub/experimental.d.ts +18 -0
- package/dist/lib/codex-manager/settings-hub/experimental.d.ts.map +1 -0
- package/dist/lib/codex-manager/settings-hub/experimental.js +78 -0
- package/dist/lib/codex-manager/settings-hub/experimental.js.map +1 -0
- package/dist/lib/codex-manager/settings-hub/index.d.ts +34 -0
- package/dist/lib/codex-manager/settings-hub/index.d.ts.map +1 -0
- package/dist/lib/codex-manager/settings-hub/index.js +81 -0
- package/dist/lib/codex-manager/settings-hub/index.js.map +1 -0
- package/dist/lib/codex-manager/settings-hub/shared.d.ts +40 -0
- package/dist/lib/codex-manager/settings-hub/shared.d.ts.map +1 -0
- package/dist/lib/codex-manager/settings-hub/shared.js +103 -0
- package/dist/lib/codex-manager/settings-hub/shared.js.map +1 -0
- package/dist/lib/codex-manager/settings-hub.d.ts +1 -64
- package/dist/lib/codex-manager/settings-hub.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub.js +4 -515
- 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 +97 -15
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +21 -9
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/health.d.ts.map +1 -1
- package/dist/lib/health.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts +2 -2
- package/dist/lib/prompts/codex.js +2 -2
- package/dist/lib/recovery/storage.d.ts +13 -0
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +144 -9
- package/dist/lib/recovery/storage.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +15 -2
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts +3 -3
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +146 -70
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/rate-limit-backoff.d.ts +14 -1
- package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -1
- package/dist/lib/request/rate-limit-backoff.js +26 -5
- package/dist/lib/request/rate-limit-backoff.js.map +1 -1
- package/dist/lib/request/response-handler.d.ts.map +1 -1
- package/dist/lib/request/response-handler.js +82 -25
- package/dist/lib/request/response-handler.js.map +1 -1
- package/dist/lib/rotation.d.ts +55 -1
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +161 -23
- package/dist/lib/rotation.js.map +1 -1
- package/dist/lib/routing-mutex.d.ts +107 -0
- package/dist/lib/routing-mutex.d.ts.map +1 -0
- package/dist/lib/routing-mutex.js +104 -0
- package/dist/lib/routing-mutex.js.map +1 -0
- package/dist/lib/runtime/storage-scope.d.ts.map +1 -1
- package/dist/lib/runtime/storage-scope.js +17 -1
- package/dist/lib/runtime/storage-scope.js.map +1 -1
- package/dist/lib/schemas.d.ts +125 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +139 -5
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/shutdown.d.ts.map +1 -1
- package/dist/lib/shutdown.js +19 -10
- package/dist/lib/shutdown.js.map +1 -1
- package/dist/lib/storage/account-clear.d.ts.map +1 -1
- package/dist/lib/storage/account-clear.js +7 -1
- package/dist/lib/storage/account-clear.js.map +1 -1
- package/dist/lib/storage/flagged-storage-file.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-file.js +17 -1
- package/dist/lib/storage/flagged-storage-file.js.map +1 -1
- package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-io.js +24 -10
- package/dist/lib/storage/flagged-storage-io.js.map +1 -1
- package/dist/lib/storage/import-export.d.ts.map +1 -1
- package/dist/lib/storage/import-export.js +31 -5
- package/dist/lib/storage/import-export.js.map +1 -1
- package/dist/lib/storage/paths.d.ts.map +1 -1
- package/dist/lib/storage/paths.js +62 -7
- package/dist/lib/storage/paths.js.map +1 -1
- package/dist/lib/storage/snapshot-inspectors.d.ts.map +1 -1
- package/dist/lib/storage/snapshot-inspectors.js +23 -16
- package/dist/lib/storage/snapshot-inspectors.js.map +1 -1
- package/dist/lib/storage/storage-parser.d.ts +17 -0
- package/dist/lib/storage/storage-parser.d.ts.map +1 -1
- package/dist/lib/storage/storage-parser.js +30 -1
- package/dist/lib/storage/storage-parser.js.map +1 -1
- package/dist/lib/storage.d.ts +1 -1
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +45 -26
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/ui/copy.d.ts +1 -1
- package/dist/lib/ui/copy.d.ts.map +1 -1
- package/dist/lib/ui/copy.js +2 -1
- package/dist/lib/ui/copy.js.map +1 -1
- package/dist/lib/ui/select.d.ts.map +1 -1
- package/dist/lib/ui/select.js +5 -1
- package/dist/lib/ui/select.js.map +1 -1
- package/dist/lib/unified-settings.d.ts.map +1 -1
- package/dist/lib/unified-settings.js +69 -14
- package/dist/lib/unified-settings.js.map +1 -1
- package/package.json +5 -5
- package/scripts/codex.js +330 -65
- package/dist/lib/codex-manager/auth-commands.d.ts +0 -72
- package/dist/lib/codex-manager/auth-commands.d.ts.map +0 -1
- package/dist/lib/codex-manager/auth-commands.js +0 -643
- package/dist/lib/codex-manager/auth-commands.js.map +0 -1
- package/dist/lib/codex-manager/commands/doctor.d.ts +0 -85
- package/dist/lib/codex-manager/commands/doctor.d.ts.map +0 -1
- package/dist/lib/codex-manager/commands/doctor.js +0 -424
- package/dist/lib/codex-manager/commands/doctor.js.map +0 -1
- package/dist/lib/codex-manager/commands/fix.d.ts +0 -92
- package/dist/lib/codex-manager/commands/fix.d.ts.map +0 -1
- package/dist/lib/codex-manager/commands/fix.js +0 -347
- package/dist/lib/codex-manager/commands/fix.js.map +0 -1
- package/dist/lib/codex-manager/commands/verify-flagged.d.ts +0 -69
- package/dist/lib/codex-manager/commands/verify-flagged.d.ts.map +0 -1
- package/dist/lib/codex-manager/commands/verify-flagged.js +0 -251
- package/dist/lib/codex-manager/commands/verify-flagged.js.map +0 -1
package/dist/lib/schemas.d.ts
CHANGED
|
@@ -68,6 +68,10 @@ export declare const PluginConfigSchema: z.ZodObject<{
|
|
|
68
68
|
preemptiveQuotaRemainingPercent5h: z.ZodOptional<z.ZodNumber>;
|
|
69
69
|
preemptiveQuotaRemainingPercent7d: z.ZodOptional<z.ZodNumber>;
|
|
70
70
|
preemptiveQuotaMaxDeferralMs: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
routingMutex: z.ZodOptional<z.ZodEnum<{
|
|
72
|
+
enabled: "enabled";
|
|
73
|
+
legacy: "legacy";
|
|
74
|
+
}>>;
|
|
71
75
|
}, z.core.$strip>;
|
|
72
76
|
export type PluginConfigFromSchema = z.infer<typeof PluginConfigSchema>;
|
|
73
77
|
/**
|
|
@@ -355,6 +359,102 @@ export declare const AnyAccountStorageSchema: z.ZodDiscriminatedUnion<[z.ZodObje
|
|
|
355
359
|
}, z.core.$strip>>;
|
|
356
360
|
}, z.core.$strip>], "version">;
|
|
357
361
|
export type AnyAccountStorageFromSchema = z.infer<typeof AnyAccountStorageSchema>;
|
|
362
|
+
/**
|
|
363
|
+
* Flagged account metadata V1 - extends V3 account metadata with flagging info.
|
|
364
|
+
* Mirrors the `FlaggedAccountMetadataV1` TS interface in `lib/storage.ts`.
|
|
365
|
+
* Uses `passthrough` so V3-compatible extra fields (workspaces, etc.) survive.
|
|
366
|
+
*/
|
|
367
|
+
export declare const FlaggedAccountMetadataV1Schema: z.ZodObject<{
|
|
368
|
+
accountId: z.ZodOptional<z.ZodString>;
|
|
369
|
+
accountIdSource: z.ZodOptional<z.ZodEnum<{
|
|
370
|
+
token: "token";
|
|
371
|
+
id_token: "id_token";
|
|
372
|
+
org: "org";
|
|
373
|
+
manual: "manual";
|
|
374
|
+
}>>;
|
|
375
|
+
accountLabel: z.ZodOptional<z.ZodString>;
|
|
376
|
+
email: z.ZodOptional<z.ZodString>;
|
|
377
|
+
refreshToken: z.ZodString;
|
|
378
|
+
accessToken: z.ZodOptional<z.ZodString>;
|
|
379
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
380
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
381
|
+
addedAt: z.ZodNumber;
|
|
382
|
+
lastUsed: z.ZodNumber;
|
|
383
|
+
lastSwitchReason: z.ZodOptional<z.ZodEnum<{
|
|
384
|
+
"rate-limit": "rate-limit";
|
|
385
|
+
initial: "initial";
|
|
386
|
+
rotation: "rotation";
|
|
387
|
+
best: "best";
|
|
388
|
+
restore: "restore";
|
|
389
|
+
}>>;
|
|
390
|
+
rateLimitResetTimes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodNumber>>>;
|
|
391
|
+
coolingDownUntil: z.ZodOptional<z.ZodNumber>;
|
|
392
|
+
cooldownReason: z.ZodOptional<z.ZodEnum<{
|
|
393
|
+
"auth-failure": "auth-failure";
|
|
394
|
+
"network-error": "network-error";
|
|
395
|
+
"server-error": "server-error";
|
|
396
|
+
"rate-limit": "rate-limit";
|
|
397
|
+
}>>;
|
|
398
|
+
flaggedAt: z.ZodNumber;
|
|
399
|
+
flaggedReason: z.ZodOptional<z.ZodString>;
|
|
400
|
+
lastError: z.ZodOptional<z.ZodString>;
|
|
401
|
+
}, z.core.$loose>;
|
|
402
|
+
export type FlaggedAccountMetadataV1FromSchema = z.infer<typeof FlaggedAccountMetadataV1Schema>;
|
|
403
|
+
/**
|
|
404
|
+
* Flagged account storage V1 format (version: 1, accounts: []).
|
|
405
|
+
*/
|
|
406
|
+
export declare const FlaggedAccountStorageV1Schema: z.ZodObject<{
|
|
407
|
+
version: z.ZodLiteral<1>;
|
|
408
|
+
accounts: z.ZodArray<z.ZodObject<{
|
|
409
|
+
accountId: z.ZodOptional<z.ZodString>;
|
|
410
|
+
accountIdSource: z.ZodOptional<z.ZodEnum<{
|
|
411
|
+
token: "token";
|
|
412
|
+
id_token: "id_token";
|
|
413
|
+
org: "org";
|
|
414
|
+
manual: "manual";
|
|
415
|
+
}>>;
|
|
416
|
+
accountLabel: z.ZodOptional<z.ZodString>;
|
|
417
|
+
email: z.ZodOptional<z.ZodString>;
|
|
418
|
+
refreshToken: z.ZodString;
|
|
419
|
+
accessToken: z.ZodOptional<z.ZodString>;
|
|
420
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
421
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
422
|
+
addedAt: z.ZodNumber;
|
|
423
|
+
lastUsed: z.ZodNumber;
|
|
424
|
+
lastSwitchReason: z.ZodOptional<z.ZodEnum<{
|
|
425
|
+
"rate-limit": "rate-limit";
|
|
426
|
+
initial: "initial";
|
|
427
|
+
rotation: "rotation";
|
|
428
|
+
best: "best";
|
|
429
|
+
restore: "restore";
|
|
430
|
+
}>>;
|
|
431
|
+
rateLimitResetTimes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodNumber>>>;
|
|
432
|
+
coolingDownUntil: z.ZodOptional<z.ZodNumber>;
|
|
433
|
+
cooldownReason: z.ZodOptional<z.ZodEnum<{
|
|
434
|
+
"auth-failure": "auth-failure";
|
|
435
|
+
"network-error": "network-error";
|
|
436
|
+
"server-error": "server-error";
|
|
437
|
+
"rate-limit": "rate-limit";
|
|
438
|
+
}>>;
|
|
439
|
+
flaggedAt: z.ZodNumber;
|
|
440
|
+
flaggedReason: z.ZodOptional<z.ZodString>;
|
|
441
|
+
lastError: z.ZodOptional<z.ZodString>;
|
|
442
|
+
}, z.core.$loose>>;
|
|
443
|
+
}, z.core.$strip>;
|
|
444
|
+
export type FlaggedAccountStorageV1FromSchema = z.infer<typeof FlaggedAccountStorageV1Schema>;
|
|
445
|
+
/**
|
|
446
|
+
* WAL journal entry used to persist in-flight account storage state.
|
|
447
|
+
* `content` is a JSON string that parses into an `AnyAccountStorage` payload.
|
|
448
|
+
* Mirrors the internal `AccountsJournalEntry` type in `lib/storage.ts`.
|
|
449
|
+
*/
|
|
450
|
+
export declare const AccountsJournalEntrySchema: z.ZodObject<{
|
|
451
|
+
version: z.ZodLiteral<1>;
|
|
452
|
+
createdAt: z.ZodOptional<z.ZodNumber>;
|
|
453
|
+
path: z.ZodOptional<z.ZodString>;
|
|
454
|
+
content: z.ZodString;
|
|
455
|
+
checksum: z.ZodString;
|
|
456
|
+
}, z.core.$strip>;
|
|
457
|
+
export type AccountsJournalEntryFromSchema = z.infer<typeof AccountsJournalEntrySchema>;
|
|
358
458
|
/**
|
|
359
459
|
* Token failure reason codes.
|
|
360
460
|
*/
|
|
@@ -454,6 +554,31 @@ export declare function safeParseTokenResult(data: unknown): TokenResultFromSche
|
|
|
454
554
|
* Returns null on failure.
|
|
455
555
|
*/
|
|
456
556
|
export declare function safeParseOAuthTokenResponse(data: unknown): OAuthTokenResponseFromSchema | null;
|
|
557
|
+
/**
|
|
558
|
+
* Safely parse flagged account storage V1.
|
|
559
|
+
* Returns null on failure.
|
|
560
|
+
*/
|
|
561
|
+
export declare function safeParseFlaggedAccountStorageV1(data: unknown): FlaggedAccountStorageV1FromSchema | null;
|
|
562
|
+
/**
|
|
563
|
+
* Safely parse accounts WAL journal entry.
|
|
564
|
+
* Returns null on failure.
|
|
565
|
+
*/
|
|
566
|
+
export declare function safeParseAccountsJournalEntry(data: unknown): AccountsJournalEntryFromSchema | null;
|
|
567
|
+
/**
|
|
568
|
+
* Fail-closed helper that wraps BOTH `JSON.parse` and Zod schema validation.
|
|
569
|
+
*
|
|
570
|
+
* Behavior:
|
|
571
|
+
* - Returns `null` if `raw` is not a string.
|
|
572
|
+
* - Returns `null` on `JSON.parse` `SyntaxError`, logging a debug-level message
|
|
573
|
+
* tagged with `context` so callers can identify the boundary.
|
|
574
|
+
* - Returns `null` on schema validation failure, logging a debug-level message
|
|
575
|
+
* with the first validation issues.
|
|
576
|
+
* - Returns the parsed + validated data on success.
|
|
577
|
+
*
|
|
578
|
+
* Use this at JSON.parse boundaries (disk reads, user imports, WAL replay) so
|
|
579
|
+
* schema drift and corrupt files fail closed instead of crashing the caller.
|
|
580
|
+
*/
|
|
581
|
+
export declare function safeParseJson<T>(raw: unknown, schema: z.ZodType<T>, context?: string): T | null;
|
|
457
582
|
/**
|
|
458
583
|
* Get validation errors as a flat array of strings.
|
|
459
584
|
* Useful for logging and error messages.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/schemas.js
CHANGED
|
@@ -4,7 +4,20 @@
|
|
|
4
4
|
* Types are inferred from schemas using z.infer.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
|
+
import { createLogger } from "./logger.js";
|
|
7
8
|
import { MODEL_FAMILIES } from "./prompts/codex.js";
|
|
9
|
+
// Lazy-init so partial `vi.mock("../lib/logger.js", ...)` stubs in tests that
|
|
10
|
+
// do not export `createLogger` (e.g. `test/auth-logging.test.ts`) continue to
|
|
11
|
+
// load this module without crashing at import time.
|
|
12
|
+
let schemaLogInstance = null;
|
|
13
|
+
function schemaLog() {
|
|
14
|
+
if (schemaLogInstance)
|
|
15
|
+
return schemaLogInstance;
|
|
16
|
+
if (typeof createLogger !== "function")
|
|
17
|
+
return null;
|
|
18
|
+
schemaLogInstance = createLogger("schemas");
|
|
19
|
+
return schemaLogInstance;
|
|
20
|
+
}
|
|
8
21
|
// ============================================================================
|
|
9
22
|
// Plugin Configuration Schema
|
|
10
23
|
// ============================================================================
|
|
@@ -22,7 +35,9 @@ export const PluginConfigSchema = z.object({
|
|
|
22
35
|
unsupportedCodexPolicy: z.enum(["strict", "fallback"]).optional(),
|
|
23
36
|
fallbackOnUnsupportedCodexModel: z.boolean().optional(),
|
|
24
37
|
fallbackToGpt52OnUnsupportedGpt53: z.boolean().optional(),
|
|
25
|
-
unsupportedCodexFallbackChain: z
|
|
38
|
+
unsupportedCodexFallbackChain: z
|
|
39
|
+
.record(z.string(), z.array(z.string().min(1)))
|
|
40
|
+
.optional(),
|
|
26
41
|
tokenRefreshSkewMs: z.number().min(0).optional(),
|
|
27
42
|
rateLimitToastDebounceMs: z.number().min(0).optional(),
|
|
28
43
|
toastDurationMs: z.number().min(1000).optional(),
|
|
@@ -58,6 +73,7 @@ export const PluginConfigSchema = z.object({
|
|
|
58
73
|
preemptiveQuotaRemainingPercent5h: z.number().min(0).max(100).optional(),
|
|
59
74
|
preemptiveQuotaRemainingPercent7d: z.number().min(0).max(100).optional(),
|
|
60
75
|
preemptiveQuotaMaxDeferralMs: z.number().min(1_000).optional(),
|
|
76
|
+
routingMutex: z.enum(["enabled", "legacy"]).optional(),
|
|
61
77
|
});
|
|
62
78
|
// ============================================================================
|
|
63
79
|
// Account Storage Schemas
|
|
@@ -65,11 +81,21 @@ export const PluginConfigSchema = z.object({
|
|
|
65
81
|
/**
|
|
66
82
|
* Source of the accountId used for ChatGPT requests.
|
|
67
83
|
*/
|
|
68
|
-
export const AccountIdSourceSchema = z.enum([
|
|
84
|
+
export const AccountIdSourceSchema = z.enum([
|
|
85
|
+
"token",
|
|
86
|
+
"id_token",
|
|
87
|
+
"org",
|
|
88
|
+
"manual",
|
|
89
|
+
]);
|
|
69
90
|
/**
|
|
70
91
|
* Cooldown reason for temporary account suspension.
|
|
71
92
|
*/
|
|
72
|
-
export const CooldownReasonSchema = z.enum([
|
|
93
|
+
export const CooldownReasonSchema = z.enum([
|
|
94
|
+
"auth-failure",
|
|
95
|
+
"network-error",
|
|
96
|
+
"server-error",
|
|
97
|
+
"rate-limit",
|
|
98
|
+
]);
|
|
73
99
|
/**
|
|
74
100
|
* Last switch reason for account rotation tracking.
|
|
75
101
|
*/
|
|
@@ -106,8 +132,13 @@ export const AccountMetadataV3Schema = z.object({
|
|
|
106
132
|
/**
|
|
107
133
|
* Build activeIndexByFamily schema dynamically from MODEL_FAMILIES.
|
|
108
134
|
*/
|
|
109
|
-
const modelFamilyEntries = MODEL_FAMILIES.map((family) => [
|
|
110
|
-
|
|
135
|
+
const modelFamilyEntries = MODEL_FAMILIES.map((family) => [
|
|
136
|
+
family,
|
|
137
|
+
z.number().optional(),
|
|
138
|
+
]);
|
|
139
|
+
export const ActiveIndexByFamilySchema = z
|
|
140
|
+
.object(Object.fromEntries(modelFamilyEntries))
|
|
141
|
+
.partial();
|
|
111
142
|
/**
|
|
112
143
|
* Account storage V3 - current storage format with per-family active indices.
|
|
113
144
|
*/
|
|
@@ -152,6 +183,41 @@ export const AnyAccountStorageSchema = z.discriminatedUnion("version", [
|
|
|
152
183
|
AccountStorageV3Schema,
|
|
153
184
|
]);
|
|
154
185
|
// ============================================================================
|
|
186
|
+
// Flagged Account Storage Schemas
|
|
187
|
+
// ============================================================================
|
|
188
|
+
/**
|
|
189
|
+
* Flagged account metadata V1 - extends V3 account metadata with flagging info.
|
|
190
|
+
* Mirrors the `FlaggedAccountMetadataV1` TS interface in `lib/storage.ts`.
|
|
191
|
+
* Uses `passthrough` so V3-compatible extra fields (workspaces, etc.) survive.
|
|
192
|
+
*/
|
|
193
|
+
export const FlaggedAccountMetadataV1Schema = AccountMetadataV3Schema.extend({
|
|
194
|
+
flaggedAt: z.number(),
|
|
195
|
+
flaggedReason: z.string().optional(),
|
|
196
|
+
lastError: z.string().optional(),
|
|
197
|
+
}).passthrough();
|
|
198
|
+
/**
|
|
199
|
+
* Flagged account storage V1 format (version: 1, accounts: []).
|
|
200
|
+
*/
|
|
201
|
+
export const FlaggedAccountStorageV1Schema = z.object({
|
|
202
|
+
version: z.literal(1),
|
|
203
|
+
accounts: z.array(FlaggedAccountMetadataV1Schema),
|
|
204
|
+
});
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Accounts Journal (WAL) Entry Schema
|
|
207
|
+
// ============================================================================
|
|
208
|
+
/**
|
|
209
|
+
* WAL journal entry used to persist in-flight account storage state.
|
|
210
|
+
* `content` is a JSON string that parses into an `AnyAccountStorage` payload.
|
|
211
|
+
* Mirrors the internal `AccountsJournalEntry` type in `lib/storage.ts`.
|
|
212
|
+
*/
|
|
213
|
+
export const AccountsJournalEntrySchema = z.object({
|
|
214
|
+
version: z.literal(1),
|
|
215
|
+
createdAt: z.number().optional(),
|
|
216
|
+
path: z.string().optional(),
|
|
217
|
+
content: z.string(),
|
|
218
|
+
checksum: z.string(),
|
|
219
|
+
});
|
|
220
|
+
// ============================================================================
|
|
155
221
|
// Token Result Schemas
|
|
156
222
|
// ============================================================================
|
|
157
223
|
/**
|
|
@@ -263,6 +329,74 @@ export function safeParseOAuthTokenResponse(data) {
|
|
|
263
329
|
}
|
|
264
330
|
return result.data;
|
|
265
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Safely parse flagged account storage V1.
|
|
334
|
+
* Returns null on failure.
|
|
335
|
+
*/
|
|
336
|
+
export function safeParseFlaggedAccountStorageV1(data) {
|
|
337
|
+
const result = FlaggedAccountStorageV1Schema.safeParse(data);
|
|
338
|
+
if (!result.success) {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
return result.data;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Safely parse accounts WAL journal entry.
|
|
345
|
+
* Returns null on failure.
|
|
346
|
+
*/
|
|
347
|
+
export function safeParseAccountsJournalEntry(data) {
|
|
348
|
+
const result = AccountsJournalEntrySchema.safeParse(data);
|
|
349
|
+
if (!result.success) {
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
return result.data;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Fail-closed helper that wraps BOTH `JSON.parse` and Zod schema validation.
|
|
356
|
+
*
|
|
357
|
+
* Behavior:
|
|
358
|
+
* - Returns `null` if `raw` is not a string.
|
|
359
|
+
* - Returns `null` on `JSON.parse` `SyntaxError`, logging a debug-level message
|
|
360
|
+
* tagged with `context` so callers can identify the boundary.
|
|
361
|
+
* - Returns `null` on schema validation failure, logging a debug-level message
|
|
362
|
+
* with the first validation issues.
|
|
363
|
+
* - Returns the parsed + validated data on success.
|
|
364
|
+
*
|
|
365
|
+
* Use this at JSON.parse boundaries (disk reads, user imports, WAL replay) so
|
|
366
|
+
* schema drift and corrupt files fail closed instead of crashing the caller.
|
|
367
|
+
*/
|
|
368
|
+
export function safeParseJson(raw, schema, context = "safeParseJson") {
|
|
369
|
+
if (typeof raw !== "string") {
|
|
370
|
+
schemaLog()?.debug("safeParseJson received non-string input", {
|
|
371
|
+
context,
|
|
372
|
+
type: typeof raw,
|
|
373
|
+
});
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
let parsed;
|
|
377
|
+
try {
|
|
378
|
+
parsed = JSON.parse(raw);
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
schemaLog()?.debug("safeParseJson JSON.parse failed", {
|
|
382
|
+
context,
|
|
383
|
+
error: error instanceof Error ? error.message : String(error),
|
|
384
|
+
});
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
const result = schema.safeParse(parsed);
|
|
388
|
+
if (!result.success) {
|
|
389
|
+
schemaLog()?.debug("safeParseJson schema validation failed", {
|
|
390
|
+
context,
|
|
391
|
+
issues: result.error.issues.slice(0, 3).map((issue) => {
|
|
392
|
+
const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
|
|
393
|
+
return `${path}${issue.message}`;
|
|
394
|
+
}),
|
|
395
|
+
});
|
|
396
|
+
return null;
|
|
397
|
+
}
|
|
398
|
+
return result.data;
|
|
399
|
+
}
|
|
266
400
|
/**
|
|
267
401
|
* Get validation errors as a flat array of strings.
|
|
268
402
|
* Useful for logging and error messages.
|
package/dist/lib/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AAEtE,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3E,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC/D,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjE,+BAA+B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvD,iCAAiC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzD,6BAA6B,EAAE,CAAC,CAAC,MAAM,CACtC,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1B,CAAC,QAAQ,EAAE;IACZ,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAChD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,6BAA6B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClE,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACvD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACvD,8BAA8B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAChD,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACtD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IACtD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChD,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAC5D,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAC3D,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9C,iCAAiC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxE,iCAAiC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxE,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAIH,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAIpF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;AAI5G;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACxC,YAAY;IACZ,SAAS;IACT,UAAU;IACV,MAAM;IACN,SAAS;CACT,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAIlF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sBAAsB;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAC/C,mBAAmB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACtD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAChD,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAoD,CACzF,CAAC,OAAO,EAAE,CAAC;AAIZ;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,mBAAmB,EAAE,yBAAyB,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAC/C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,uBAAuB;IAClE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;IACtE,sBAAsB;IACtB,sBAAsB;CACtB,CAAC,CAAC;AAIH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,YAAY;IACZ,kBAAkB;IAClB,eAAe;IACf,iBAAiB;IACjB,SAAS;CACT,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,kBAAkB;IAClB,kBAAkB;CAClB,CAAC,CAAC;AAIH,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAIH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACpD,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAa;IACjD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAa;IACxD,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,IAAa;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../lib/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../lib/shutdown.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../lib/shutdown.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAM5C,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAGnD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAKrD;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB1C;AAmBD,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/lib/shutdown.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const cleanupFunctions = [];
|
|
2
2
|
let shutdownRegistered = false;
|
|
3
|
+
let cleanupPromise = null;
|
|
3
4
|
export function registerCleanup(fn) {
|
|
4
5
|
cleanupFunctions.push(fn);
|
|
5
6
|
ensureShutdownHandler();
|
|
@@ -10,17 +11,25 @@ export function unregisterCleanup(fn) {
|
|
|
10
11
|
cleanupFunctions.splice(index, 1);
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
for (const fn of fns) {
|
|
17
|
-
try {
|
|
18
|
-
await fn();
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// Ignore cleanup errors during shutdown
|
|
22
|
-
}
|
|
14
|
+
export function runCleanup() {
|
|
15
|
+
if (cleanupPromise) {
|
|
16
|
+
return cleanupPromise;
|
|
23
17
|
}
|
|
18
|
+
cleanupPromise = (async () => {
|
|
19
|
+
const fns = [...cleanupFunctions];
|
|
20
|
+
cleanupFunctions.length = 0;
|
|
21
|
+
for (const fn of fns) {
|
|
22
|
+
try {
|
|
23
|
+
await fn();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Ignore cleanup errors during shutdown
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
})().finally(() => {
|
|
30
|
+
cleanupPromise = null;
|
|
31
|
+
});
|
|
32
|
+
return cleanupPromise;
|
|
24
33
|
}
|
|
25
34
|
function ensureShutdownHandler() {
|
|
26
35
|
if (shutdownRegistered)
|
package/dist/lib/shutdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../lib/shutdown.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAgB,EAAE,CAAC;AACzC,IAAI,kBAAkB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../lib/shutdown.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAgB,EAAE,CAAC;AACzC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,EAAa;IAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,qBAAqB,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAa;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,UAAU;IACzB,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAClC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,EAAE,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACR,wCAAwC;YACzC,CAAC;QACF,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,cAAc,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACvB,CAAC;AAED,SAAS,qBAAqB;IAC7B,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAE1B,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,KAAK,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QAC/B,KAAK,UAAU,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO,gBAAgB,CAAC,MAAM,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-clear.d.ts","sourceRoot":"","sources":["../../../lib/storage/account-clear.ts"],"names":[],"mappings":"AAWA,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACtE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"account-clear.d.ts","sourceRoot":"","sources":["../../../lib/storage/account-clear.ts"],"names":[],"mappings":"AAWA,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACtE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhB"}
|
|
@@ -44,9 +44,15 @@ export async function clearAccountStorageArtifacts(params) {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
|
+
// Write the intentional-reset marker BEFORE we start deleting artifacts.
|
|
48
|
+
// If the process crashes between the primary unlink and the marker write,
|
|
49
|
+
// the next load looks like accidental loss rather than an intentional
|
|
50
|
+
// reset (AUDIT-M04 / E-07). Writing the marker first lets restore logic
|
|
51
|
+
// recognise the clear-in-progress state and skip the "corrupted" path,
|
|
52
|
+
// matching the ordering already used by the flagged-clear flow.
|
|
53
|
+
await fs.writeFile(params.resetMarkerPath, JSON.stringify({ version: 1, createdAt: Date.now() }), { encoding: "utf-8", mode: 0o600 });
|
|
47
54
|
await clearPath(params.path, true);
|
|
48
55
|
await clearPath(params.walPath, true);
|
|
49
|
-
await fs.writeFile(params.resetMarkerPath, JSON.stringify({ version: 1, createdAt: Date.now() }), { encoding: "utf-8", mode: 0o600 });
|
|
50
56
|
for (const backupPath of params.backupPaths) {
|
|
51
57
|
try {
|
|
52
58
|
await clearPath(backupPath, false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-clear.js","sourceRoot":"","sources":["../../../lib/storage/account-clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAEzC,SAAS,kBAAkB,CAAC,KAAc;IACzC,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,EAAU;IAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAMlD;IACA,MAAM,SAAS,GAAG,KAAK,EACtB,UAAkB,EAClB,QAAiB,EACD,EAAE;QAClB,IAAI,CAAC;YACJ,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACJ,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC5B,OAAO;gBACR,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;oBACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACvB,OAAO;oBACR,CAAC;oBACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;wBAChD,MAAM,KAAK,CAAC;oBACb,CAAC;oBACD,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO;YACR,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,QAAQ,CAAC,0CAA0C,EAAE;oBAC3D,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;iBACpB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,0CAA0C,EAAE;gBAC3D,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACpB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"account-clear.js","sourceRoot":"","sources":["../../../lib/storage/account-clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAEzC,SAAS,kBAAkB,CAAC,KAAc;IACzC,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,EAAU;IAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAMlD;IACA,MAAM,SAAS,GAAG,KAAK,EACtB,UAAkB,EAClB,QAAiB,EACD,EAAE;QAClB,IAAI,CAAC;YACJ,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACJ,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC5B,OAAO;gBACR,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;oBACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACvB,OAAO;oBACR,CAAC;oBACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;wBAChD,MAAM,KAAK,CAAC;oBACb,CAAC;oBACD,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO;YACR,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,QAAQ,CAAC,0CAA0C,EAAE;oBAC3D,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;iBACpB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,0CAA0C,EAAE;gBAC3D,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACpB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC,CAAC;IAEF,yEAAyE;IACzE,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,EAAE,CAAC,SAAS,CACjB,MAAM,CAAC,eAAe,EACtB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EACrD,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC;YACJ,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACR,yDAAyD;QAC1D,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flagged-storage-file.d.ts","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flagged-storage-file.d.ts","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAe7D,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACL,QAAQ,EAAE,cAAc,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACrD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,GACC,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,2BAA2B,CAChD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACL,QAAQ,EAAE,cAAc,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACrD,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,uBAAuB,CAAC;IACpE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,GACC,OAAO,CAAC,uBAAuB,CAAC,CAkBlC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { FlaggedAccountStorageV1Schema, safeParseJson } from "../schemas.js";
|
|
1
2
|
import { sleep } from "../utils.js";
|
|
2
|
-
|
|
3
|
+
// Include EPERM: on Windows, antivirus + file-indexing briefly take an
|
|
4
|
+
// exclusive lock on recently-written files, producing EPERM on the reader's
|
|
5
|
+
// next open. The write side of this module already retries EBUSY/EPERM, so
|
|
6
|
+
// the read side must match or the flagged-state reader fails prematurely and
|
|
7
|
+
// triggers unnecessary empty/backup fallbacks (AUDIT-M05 / E-08).
|
|
8
|
+
const RETRYABLE_READ_CODES = new Set(["EBUSY", "EPERM", "EAGAIN"]);
|
|
3
9
|
function isRetryableReadError(error) {
|
|
4
10
|
const code = error?.code;
|
|
5
11
|
return typeof code === "string" && RETRYABLE_READ_CODES.has(code);
|
|
@@ -19,6 +25,16 @@ export async function readFileWithRetry(path, deps) {
|
|
|
19
25
|
}
|
|
20
26
|
export async function loadFlaggedAccountsFromFile(path, deps) {
|
|
21
27
|
const content = await readFileWithRetry(path, deps);
|
|
28
|
+
// Fail-closed JSON boundary: Zod is the primary validator. On happy path
|
|
29
|
+
// the validated payload flows straight to the TS normalizer (Zod wins).
|
|
30
|
+
// On schema or syntax failure we fall through to `JSON.parse` so:
|
|
31
|
+
// - structurally-unknown legacy payloads still reach the normalizer, and
|
|
32
|
+
// - `SyntaxError` continues to propagate to outer callers in
|
|
33
|
+
// `flagged-storage-io.ts`, which log + fall back to backups.
|
|
34
|
+
const validated = safeParseJson(content, FlaggedAccountStorageV1Schema, "storage.loadFlaggedAccountsFromFile");
|
|
35
|
+
if (validated !== null) {
|
|
36
|
+
return deps.normalizeFlaggedStorage(validated);
|
|
37
|
+
}
|
|
22
38
|
const data = JSON.parse(content);
|
|
23
39
|
return deps.normalizeFlaggedStorage(data);
|
|
24
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flagged-storage-file.js","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flagged-storage-file.js","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,KAAc;IAC3C,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,IAAY,EACZ,IAGC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACJ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAChD,IAAY,EACZ,IAIC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,yEAAyE;IACzE,wEAAwE;IACxE,kEAAkE;IAClE,2EAA2E;IAC3E,+DAA+D;IAC/D,iEAAiE;IACjE,MAAM,SAAS,GAAG,aAAa,CAC9B,OAAO,EACP,6BAA6B,EAC7B,qCAAqC,CACrC,CAAC;IACF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAC5C,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flagged-storage-io.d.ts","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-io.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flagged-storage-io.d.ts","sourceRoot":"","sources":["../../../lib/storage/flagged-storage-io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAwE7D,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,uBAAuB,CAAC;IACpE,sBAAsB,EAAE,CACvB,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,MAAM,KACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,mBAAmB,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA0InC;AAED,wBAAsB,iCAAiC,CACtD,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,uBAAuB,CAAC;IACpE,iBAAiB,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,KACtC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACtE,GACC,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACtE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync, promises as fs } from "node:fs";
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
|
+
import { FlaggedAccountStorageV1Schema, safeParseJson } from "../schemas.js";
|
|
3
4
|
import { readFileWithRetry } from "./flagged-storage-file.js";
|
|
4
5
|
const RETRYABLE_UNLINK_CODES = new Set(["EBUSY", "EAGAIN", "EPERM"]);
|
|
5
6
|
function isValidFlaggedStorageCandidate(data, storage) {
|
|
@@ -15,6 +16,24 @@ function isValidFlaggedStorageCandidate(data, storage) {
|
|
|
15
16
|
}
|
|
16
17
|
return candidate.accounts.length === 0 || storage.accounts.length > 0;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse flagged account storage content with Zod as the authoritative
|
|
21
|
+
* validator while preserving legacy JSON-level recovery semantics.
|
|
22
|
+
*
|
|
23
|
+
* - On Zod-valid JSON: returns the validated payload directly (Zod wins).
|
|
24
|
+
* - On JSON-valid but schema-invalid: returns the raw JSON so the caller can
|
|
25
|
+
* still invoke `normalizeFlaggedStorage` + `isValidFlaggedStorageCandidate`
|
|
26
|
+
* (preserves legacy partial-recovery behavior).
|
|
27
|
+
* - On `SyntaxError`: the error propagates to outer `try/catch` blocks which
|
|
28
|
+
* log + fall back to backups (same as pre-migration behavior).
|
|
29
|
+
*/
|
|
30
|
+
function parseFlaggedStorageContent(content, context) {
|
|
31
|
+
const validated = safeParseJson(content, FlaggedAccountStorageV1Schema, context);
|
|
32
|
+
if (validated !== null) {
|
|
33
|
+
return validated;
|
|
34
|
+
}
|
|
35
|
+
return JSON.parse(content);
|
|
36
|
+
}
|
|
18
37
|
/**
|
|
19
38
|
* Return the ordered backup paths consulted for flagged-account recovery.
|
|
20
39
|
*/
|
|
@@ -32,9 +51,7 @@ async function unlinkWithRetry(candidatePath) {
|
|
|
32
51
|
if (code === "ENOENT") {
|
|
33
52
|
return;
|
|
34
53
|
}
|
|
35
|
-
if (!code ||
|
|
36
|
-
!RETRYABLE_UNLINK_CODES.has(code) ||
|
|
37
|
-
attempt >= 4) {
|
|
54
|
+
if (!code || !RETRYABLE_UNLINK_CODES.has(code) || attempt >= 4) {
|
|
38
55
|
throw error;
|
|
39
56
|
}
|
|
40
57
|
await new Promise((resolve) => setTimeout(resolve, 10 * 2 ** attempt));
|
|
@@ -55,7 +72,7 @@ export async function loadFlaggedAccountsState(params) {
|
|
|
55
72
|
const backupContent = await readFileWithRetry(backupPath, {
|
|
56
73
|
readFile: fs.readFile,
|
|
57
74
|
});
|
|
58
|
-
const backupData =
|
|
75
|
+
const backupData = parseFlaggedStorageContent(backupContent, "loadFlaggedAccountsState.backup");
|
|
59
76
|
const recovered = params.normalizeFlaggedStorage(backupData);
|
|
60
77
|
if (!isValidFlaggedStorageCandidate(backupData, recovered)) {
|
|
61
78
|
params.logError("Skipping invalid flagged account backup payload", {
|
|
@@ -104,7 +121,7 @@ export async function loadFlaggedAccountsState(params) {
|
|
|
104
121
|
const content = await readFileWithRetry(params.path, {
|
|
105
122
|
readFile: fs.readFile,
|
|
106
123
|
});
|
|
107
|
-
const data =
|
|
124
|
+
const data = parseFlaggedStorageContent(content, "loadFlaggedAccountsState.primary");
|
|
108
125
|
const loaded = params.normalizeFlaggedStorage(data);
|
|
109
126
|
if (!isValidFlaggedStorageCandidate(data, loaded)) {
|
|
110
127
|
throw new Error("Invalid flagged account storage payload");
|
|
@@ -135,7 +152,7 @@ export async function loadFlaggedAccountsState(params) {
|
|
|
135
152
|
const legacyContent = await readFileWithRetry(params.legacyPath, {
|
|
136
153
|
readFile: fs.readFile,
|
|
137
154
|
});
|
|
138
|
-
const legacyData =
|
|
155
|
+
const legacyData = parseFlaggedStorageContent(legacyContent, "loadFlaggedAccountsState.legacy");
|
|
139
156
|
const migrated = params.normalizeFlaggedStorage(legacyData);
|
|
140
157
|
if (migrated.accounts.length > 0) {
|
|
141
158
|
await params.saveFlaggedAccounts(migrated);
|
|
@@ -220,10 +237,7 @@ export async function clearFlaggedAccountsOnDisk(params) {
|
|
|
220
237
|
});
|
|
221
238
|
throw error;
|
|
222
239
|
}
|
|
223
|
-
for (const candidate of [
|
|
224
|
-
params.path,
|
|
225
|
-
...params.backupPaths,
|
|
226
|
-
]) {
|
|
240
|
+
for (const candidate of [params.path, ...params.backupPaths]) {
|
|
227
241
|
try {
|
|
228
242
|
await unlinkWithRetry(candidate);
|
|
229
243
|
}
|