codex-multi-auth 0.1.3 → 0.1.4

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 (66) hide show
  1. package/README.md +8 -11
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +51 -13
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/auth/auth.d.ts +6 -2
  6. package/dist/lib/auth/auth.d.ts.map +1 -1
  7. package/dist/lib/auth/auth.js +34 -11
  8. package/dist/lib/auth/auth.js.map +1 -1
  9. package/dist/lib/auth/server.d.ts +1 -1
  10. package/dist/lib/auth/server.js +3 -3
  11. package/dist/lib/codex-cli/state.d.ts +9 -0
  12. package/dist/lib/codex-cli/state.d.ts.map +1 -1
  13. package/dist/lib/codex-cli/state.js +14 -0
  14. package/dist/lib/codex-cli/state.js.map +1 -1
  15. package/dist/lib/codex-cli/writer.d.ts.map +1 -1
  16. package/dist/lib/codex-cli/writer.js +106 -14
  17. package/dist/lib/codex-cli/writer.js.map +1 -1
  18. package/dist/lib/codex-manager/settings-hub.d.ts +16 -1
  19. package/dist/lib/codex-manager/settings-hub.d.ts.map +1 -1
  20. package/dist/lib/codex-manager/settings-hub.js +28 -2
  21. package/dist/lib/codex-manager/settings-hub.js.map +1 -1
  22. package/dist/lib/codex-manager.d.ts +1 -0
  23. package/dist/lib/codex-manager.d.ts.map +1 -1
  24. package/dist/lib/codex-manager.js +319 -16
  25. package/dist/lib/codex-manager.js.map +1 -1
  26. package/dist/lib/oauth-success.html +192 -260
  27. package/dist/lib/parallel-probe.d.ts +7 -0
  28. package/dist/lib/parallel-probe.d.ts.map +1 -1
  29. package/dist/lib/parallel-probe.js +37 -9
  30. package/dist/lib/parallel-probe.js.map +1 -1
  31. package/dist/lib/refresh-queue.d.ts +4 -5
  32. package/dist/lib/refresh-queue.d.ts.map +1 -1
  33. package/dist/lib/refresh-queue.js +99 -21
  34. package/dist/lib/refresh-queue.js.map +1 -1
  35. package/dist/lib/request/fetch-helpers.d.ts +12 -4
  36. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  37. package/dist/lib/request/fetch-helpers.js +53 -25
  38. package/dist/lib/request/fetch-helpers.js.map +1 -1
  39. package/dist/lib/request/helpers/tool-utils.d.ts.map +1 -1
  40. package/dist/lib/request/helpers/tool-utils.js +36 -6
  41. package/dist/lib/request/helpers/tool-utils.js.map +1 -1
  42. package/dist/lib/request/rate-limit-backoff.d.ts +7 -0
  43. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -1
  44. package/dist/lib/request/rate-limit-backoff.js +24 -4
  45. package/dist/lib/request/rate-limit-backoff.js.map +1 -1
  46. package/dist/lib/request/request-transformer.d.ts +10 -0
  47. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  48. package/dist/lib/request/request-transformer.js +61 -37
  49. package/dist/lib/request/request-transformer.js.map +1 -1
  50. package/dist/lib/rotation.d.ts +19 -0
  51. package/dist/lib/rotation.d.ts.map +1 -1
  52. package/dist/lib/rotation.js +60 -39
  53. package/dist/lib/rotation.js.map +1 -1
  54. package/dist/lib/ui/copy.d.ts +1 -1
  55. package/dist/lib/ui/copy.js +1 -1
  56. package/dist/lib/utils.d.ts +6 -0
  57. package/dist/lib/utils.d.ts.map +1 -1
  58. package/dist/lib/utils.js +11 -0
  59. package/dist/lib/utils.js.map +1 -1
  60. package/package.json +9 -5
  61. package/scripts/audit-dev-allowlist.js +186 -94
  62. package/scripts/benchmark-runtime-path.mjs +166 -0
  63. package/scripts/codex.js +57 -1
  64. package/scripts/copy-oauth-success.js +42 -3
  65. package/scripts/install-codex-auth-utils.js +69 -0
  66. package/scripts/install-codex-auth.js +16 -7
@@ -1 +1 @@
1
- {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../lib/rotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../lib/rotation.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export declare const UI_COPY: {
41
41
  readonly pastePrompt: "Paste callback URL or code here (Q to cancel):";
42
42
  readonly browserOpened: "Browser opened.";
43
43
  readonly browserOpenFail: "Could not open browser. Use this link:";
44
- readonly waitingCallback: "Waiting for login callback on 127.0.0.1:1455...";
44
+ readonly waitingCallback: "Waiting for login callback on localhost:1455...";
45
45
  readonly callbackMissed: "No callback received. Paste manually.";
46
46
  readonly cancelled: "Sign-in cancelled.";
47
47
  readonly cancelledBackToMenu: "Sign-in cancelled. Going back to menu.";
@@ -41,7 +41,7 @@ export const UI_COPY = {
41
41
  pastePrompt: "Paste callback URL or code here (Q to cancel):",
42
42
  browserOpened: "Browser opened.",
43
43
  browserOpenFail: "Could not open browser. Use this link:",
44
- waitingCallback: "Waiting for login callback on 127.0.0.1:1455...",
44
+ waitingCallback: "Waiting for login callback on localhost:1455...",
45
45
  callbackMissed: "No callback received. Paste manually.",
46
46
  cancelled: "Sign-in cancelled.",
47
47
  cancelledBackToMenu: "Sign-in cancelled. Going back to menu.",
@@ -8,6 +8,12 @@
8
8
  * @returns True if value is a plain object
9
9
  */
10
10
  export declare function isRecord(value: unknown): value is Record<string, unknown>;
11
+ /**
12
+ * Detects AbortError-compatible failures from fetch/abort-controller flows.
13
+ * @param error - Unknown thrown value
14
+ * @returns True when the error should be treated as an abort signal
15
+ */
16
+ export declare function isAbortError(error: unknown): boolean;
11
17
  /**
12
18
  * Returns the current timestamp in milliseconds.
13
19
  * Wrapper for Date.now() to enable testing with mocked time.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBpD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIpD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBpD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
package/dist/lib/utils.js CHANGED
@@ -10,6 +10,17 @@
10
10
  export function isRecord(value) {
11
11
  return typeof value === "object" && value !== null && !Array.isArray(value);
12
12
  }
13
+ /**
14
+ * Detects AbortError-compatible failures from fetch/abort-controller flows.
15
+ * @param error - Unknown thrown value
16
+ * @returns True when the error should be treated as an abort signal
17
+ */
18
+ export function isAbortError(error) {
19
+ if (!(error instanceof Error))
20
+ return false;
21
+ const maybe = error;
22
+ return maybe.name === "AbortError" || maybe.code === "ABORT_ERR";
23
+ }
13
24
  /**
14
25
  * Returns the current timestamp in milliseconds.
15
26
  * Wrapper for Date.now() to enable testing with mocked time.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK;IACpB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IAC1C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAkC,CAAC;IACjD,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK;IACpB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-multi-auth",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "OpenAI Codex CLI multi-account OAuth manager with resilient routing and quota-aware diagnostics",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -57,8 +57,10 @@
57
57
  "bench:edit-formats": "node scripts/benchmark-edit-formats.mjs --preset=codex-core",
58
58
  "bench:edit-formats:smoke": "node scripts/benchmark-edit-formats.mjs --smoke --preset=codex-core",
59
59
  "bench:edit-formats:render": "node scripts/benchmark-render-dashboard.mjs",
60
+ "bench:runtime-path": "npm run build && node scripts/benchmark-runtime-path.mjs",
61
+ "bench:runtime-path:quick": "node scripts/benchmark-runtime-path.mjs",
60
62
  "test:coverage": "vitest run --coverage",
61
- "coverage": "vitest run --coverage",
63
+ "coverage": "npm run build && vitest run --coverage",
62
64
  "audit:prod": "npm audit --omit=dev --audit-level=high",
63
65
  "audit:all": "npm audit --audit-level=high",
64
66
  "audit:dev:allowlist": "node scripts/audit-dev-allowlist.js",
@@ -116,14 +118,16 @@
116
118
  "dependencies": {
117
119
  "@openauthjs/openauth": "^0.4.3",
118
120
  "@codex-ai/plugin": "file:vendor/codex-ai-plugin",
119
- "hono": "^4.12.0",
121
+ "hono": "4.12.3",
120
122
  "zod": "^4.3.6"
121
123
  },
122
124
  "overrides": {
123
- "hono": "^4.12.0",
125
+ "hono": "4.12.3",
126
+ "minimatch": "10.2.4",
127
+ "rollup": "4.59.0",
124
128
  "vite": "^7.3.1",
125
129
  "@typescript-eslint/typescript-estree": {
126
- "minimatch": "^9.0.5"
130
+ "minimatch": "9.0.9"
127
131
  }
128
132
  }
129
133
  }
@@ -1,20 +1,12 @@
1
- #!/usr/bin/env node
2
-
3
1
  import { spawnSync } from "node:child_process";
2
+ import { pathToFileURL } from "node:url";
4
3
 
5
- const ALLOWED_HIGH_OR_CRITICAL_PACKAGES = new Set([
6
- "eslint",
7
- "ajv",
8
- "@eslint-community/eslint-utils",
9
- "@typescript-eslint/eslint-plugin",
10
- "@typescript-eslint/parser",
11
- "@typescript-eslint/type-utils",
12
- "@typescript-eslint/typescript-estree",
13
- "@typescript-eslint/utils",
14
- "minimatch",
4
+ const ALLOWED_HIGH_OR_CRITICAL_ADVISORIES = new Map([
5
+ // Example:
6
+ // ["1113465", { package: "minimatch", expiresOn: "2026-06-30" }],
15
7
  ]);
16
8
 
17
- function summarizeVia(via) {
9
+ export function summarizeVia(via) {
18
10
  if (!Array.isArray(via)) return [];
19
11
  return via
20
12
  .map((item) => {
@@ -27,102 +19,202 @@ function summarizeVia(via) {
27
19
  .slice(0, 5);
28
20
  }
29
21
 
30
- const isWindows = process.platform === "win32";
31
- const command = isWindows ? process.env.ComSpec || "cmd.exe" : "npm";
32
- const commandArgs = isWindows
33
- ? ["/d", "/s", "/c", "npm audit --json"]
34
- : ["audit", "--json"];
35
- const audit = spawnSync(command, commandArgs, {
36
- encoding: "utf8",
37
- stdio: ["ignore", "pipe", "pipe"],
38
- env: {
39
- ...process.env,
40
- // npm run -s can suppress child npm JSON output; force a readable level.
41
- npm_config_loglevel:
42
- process.env.npm_config_loglevel === "silent"
43
- ? "notice"
44
- : process.env.npm_config_loglevel || "notice",
45
- },
46
- });
47
-
48
- const stdout = (audit.stdout ?? "").trim();
49
- const stderr = (audit.stderr ?? "").trim();
50
- const combined = [stdout, stderr].filter(Boolean).join("\n");
51
-
52
- if (!combined) {
53
- if ((audit.status ?? 1) === 0) {
54
- console.log("No vulnerabilities found in npm audit output.");
55
- process.exit(0);
22
+ export function extractAdvisoryIds(via) {
23
+ if (!Array.isArray(via)) return [];
24
+ const advisoryIds = [];
25
+ for (const item of via) {
26
+ if (!item || typeof item !== "object") {
27
+ continue;
28
+ }
29
+ const source = "source" in item ? item.source : undefined;
30
+ if (typeof source === "number" || typeof source === "string") {
31
+ advisoryIds.push(String(source));
32
+ }
33
+ }
34
+ return advisoryIds;
35
+ }
36
+
37
+ export function isAdvisoryAllowed(packageName, advisoryId, now = Date.now()) {
38
+ const rule = ALLOWED_HIGH_OR_CRITICAL_ADVISORIES.get(advisoryId);
39
+ if (!rule || typeof rule !== "object") {
40
+ return false;
41
+ }
42
+ if (typeof rule.package === "string" && rule.package !== packageName) {
43
+ return false;
44
+ }
45
+ if (typeof rule.expiresOn === "string") {
46
+ const expiresAt = Date.parse(rule.expiresOn);
47
+ if (!Number.isFinite(expiresAt) || now > expiresAt) {
48
+ return false;
49
+ }
50
+ }
51
+ return true;
52
+ }
53
+
54
+ export function getAuditCommand(platform = process.platform, env = process.env) {
55
+ const isWindows = platform === "win32";
56
+ return {
57
+ command: isWindows ? env.ComSpec || "cmd.exe" : "npm",
58
+ commandArgs: isWindows
59
+ ? ["/d", "/s", "/c", "npm audit --json"]
60
+ : ["audit", "--json"],
61
+ };
62
+ }
63
+
64
+ function resolveVulnerabilities(auditJson) {
65
+ if (
66
+ auditJson &&
67
+ typeof auditJson === "object" &&
68
+ auditJson.vulnerabilities &&
69
+ typeof auditJson.vulnerabilities === "object"
70
+ ) {
71
+ return auditJson.vulnerabilities;
56
72
  }
57
- console.error("Failed to read npm audit output.");
58
- process.exit(1);
73
+ return {};
59
74
  }
60
75
 
61
- // npm can emit human-readable success text (no JSON) on some versions/configs.
62
- if (!combined.includes("{") && /found 0 vulnerabilities/i.test(combined)) {
63
- console.log("No vulnerabilities found in npm audit output.");
64
- process.exit(0);
76
+ export function partitionHighCriticalVulnerabilities(
77
+ vulnerabilities,
78
+ advisoryAllowed = isAdvisoryAllowed,
79
+ ) {
80
+ const unexpected = [];
81
+ const allowlisted = [];
82
+ for (const [name, details] of Object.entries(vulnerabilities)) {
83
+ if (!details || typeof details !== "object") continue;
84
+ const severity = typeof details.severity === "string" ? details.severity : "unknown";
85
+ if (severity !== "high" && severity !== "critical") continue;
86
+ const entry = {
87
+ name,
88
+ severity,
89
+ via: summarizeVia(details.via),
90
+ advisoryIds: extractAdvisoryIds(details.via),
91
+ fixAvailable: details.fixAvailable ?? false,
92
+ };
93
+ const hasAdvisories = entry.advisoryIds.length > 0;
94
+ const allAdvisoriesAllowlisted =
95
+ hasAdvisories &&
96
+ entry.advisoryIds.every((advisoryId) => advisoryAllowed(name, advisoryId));
97
+ if (allAdvisoriesAllowlisted) {
98
+ allowlisted.push(entry);
99
+ continue;
100
+ }
101
+ unexpected.push(entry);
102
+ }
103
+ return { unexpected, allowlisted };
65
104
  }
66
105
 
67
- let auditJson;
68
- try {
69
- const jsonCandidate =
70
- (stdout.startsWith("{") ? stdout : "") ||
71
- (stderr.startsWith("{") ? stderr : "") ||
72
- combined.slice(combined.indexOf("{"));
73
- auditJson = JSON.parse(jsonCandidate.replace(/^\uFEFF/, ""));
74
- } catch (error) {
75
- console.error("Failed to parse npm audit JSON output.");
76
- if (stderr) {
77
- console.error(stderr);
106
+ function parseAuditOutput(audit) {
107
+ const stdout = (audit.stdout ?? "").trim();
108
+ const stderr = (audit.stderr ?? "").trim();
109
+ const combined = [stdout, stderr].filter(Boolean).join("\n");
110
+ if (!combined) {
111
+ return {
112
+ type: "empty",
113
+ ok: (audit.status ?? 1) === 0,
114
+ stderr,
115
+ };
116
+ }
117
+ if (!combined.includes("{") && /found 0 vulnerabilities/i.test(combined)) {
118
+ return { type: "none" };
119
+ }
120
+ try {
121
+ const jsonCandidate =
122
+ (stdout.startsWith("{") ? stdout : "") ||
123
+ (stderr.startsWith("{") ? stderr : "") ||
124
+ combined.slice(combined.indexOf("{"));
125
+ return {
126
+ type: "json",
127
+ json: JSON.parse(jsonCandidate.replace(/^\uFEFF/, "")),
128
+ };
129
+ } catch (error) {
130
+ return {
131
+ type: "parse_error",
132
+ stderr,
133
+ message: error instanceof Error ? error.message : String(error),
134
+ };
78
135
  }
79
- console.error(error instanceof Error ? error.message : String(error));
80
- process.exit(1);
81
136
  }
82
137
 
83
- const vulnerabilities =
84
- auditJson && typeof auditJson === "object" && auditJson.vulnerabilities && typeof auditJson.vulnerabilities === "object"
85
- ? auditJson.vulnerabilities
86
- : {};
138
+ export function runAuditDevAllowlist(options = {}) {
139
+ const {
140
+ platform = process.platform,
141
+ env = process.env,
142
+ spawn = spawnSync,
143
+ log = console.log,
144
+ warn = console.warn,
145
+ error = console.error,
146
+ now = Date.now,
147
+ } = options;
87
148
 
88
- const unexpected = [];
89
- const allowlisted = [];
149
+ const { command, commandArgs } = getAuditCommand(platform, env);
150
+ const audit = spawn(command, commandArgs, {
151
+ encoding: "utf8",
152
+ stdio: ["ignore", "pipe", "pipe"],
153
+ env: {
154
+ ...env,
155
+ // npm run -s can suppress child npm JSON output; force a readable level.
156
+ npm_config_loglevel:
157
+ env.npm_config_loglevel === "silent"
158
+ ? "notice"
159
+ : env.npm_config_loglevel || "notice",
160
+ },
161
+ });
90
162
 
91
- for (const [name, details] of Object.entries(vulnerabilities)) {
92
- if (!details || typeof details !== "object") continue;
93
- const severity = typeof details.severity === "string" ? details.severity : "unknown";
94
- if (severity !== "high" && severity !== "critical") continue;
163
+ const parsed = parseAuditOutput(audit);
164
+ if (parsed.type === "empty") {
165
+ if (parsed.ok) {
166
+ log("No vulnerabilities found in npm audit output.");
167
+ return 0;
168
+ }
169
+ error("Failed to read npm audit output.");
170
+ return 1;
171
+ }
172
+ if (parsed.type === "none") {
173
+ log("No vulnerabilities found in npm audit output.");
174
+ return 0;
175
+ }
176
+ if (parsed.type === "parse_error") {
177
+ error("Failed to parse npm audit JSON output.");
178
+ if (parsed.stderr) {
179
+ error(parsed.stderr);
180
+ }
181
+ error(parsed.message);
182
+ return 1;
183
+ }
95
184
 
96
- const entry = {
97
- name,
98
- severity,
99
- via: summarizeVia(details.via),
100
- fixAvailable: details.fixAvailable ?? false,
101
- };
185
+ const vulnerabilities = resolveVulnerabilities(parsed.json);
186
+ const { unexpected, allowlisted } = partitionHighCriticalVulnerabilities(
187
+ vulnerabilities,
188
+ (packageName, advisoryId) => isAdvisoryAllowed(packageName, advisoryId, now()),
189
+ );
102
190
 
103
- if (ALLOWED_HIGH_OR_CRITICAL_PACKAGES.has(name)) {
104
- allowlisted.push(entry);
105
- continue;
191
+ if (unexpected.length > 0) {
192
+ error("Unexpected high/critical vulnerabilities detected in dev dependency audit:");
193
+ for (const entry of unexpected) {
194
+ error(
195
+ `- ${entry.name} (${entry.severity}) advisories=${entry.advisoryIds.join(", ") || "none"} via ${entry.via.join(", ") || "unknown"} fixAvailable=${String(entry.fixAvailable)}`,
196
+ );
197
+ }
198
+ return 1;
106
199
  }
107
- unexpected.push(entry);
108
- }
109
200
 
110
- if (unexpected.length > 0) {
111
- console.error("Unexpected high/critical vulnerabilities detected in dev dependency audit:");
112
- for (const entry of unexpected) {
113
- console.error(
114
- `- ${entry.name} (${entry.severity}) via ${entry.via.join(", ") || "unknown"} fixAvailable=${String(entry.fixAvailable)}`,
115
- );
201
+ if (allowlisted.length > 0) {
202
+ warn("Allowlisted high/critical dev vulnerabilities detected:");
203
+ for (const entry of allowlisted) {
204
+ warn(
205
+ `- ${entry.name} (${entry.severity}) advisories=${entry.advisoryIds.join(", ") || "none"} via ${entry.via.join(", ") || "unknown"} fixAvailable=${String(entry.fixAvailable)}`,
206
+ );
207
+ }
208
+ warn("No unexpected high/critical vulnerabilities found.");
116
209
  }
117
- process.exit(1);
210
+
211
+ return 0;
118
212
  }
119
213
 
120
- if (allowlisted.length > 0) {
121
- console.warn("Allowlisted high/critical dev vulnerabilities detected:");
122
- for (const entry of allowlisted) {
123
- console.warn(
124
- `- ${entry.name} (${entry.severity}) via ${entry.via.join(", ") || "unknown"} fixAvailable=${String(entry.fixAvailable)}`,
125
- );
126
- }
127
- console.warn("No unexpected high/critical vulnerabilities found.");
214
+ const isEntryPoint =
215
+ typeof process.argv[1] === "string" &&
216
+ import.meta.url === pathToFileURL(process.argv[1]).href;
217
+
218
+ if (isEntryPoint) {
219
+ process.exit(runAuditDevAllowlist());
128
220
  }
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { mkdir, writeFile } from "node:fs/promises";
4
+ import { performance } from "node:perf_hooks";
5
+ import process from "node:process";
6
+ import { dirname, resolve } from "node:path";
7
+ import { filterInput } from "../dist/lib/request/request-transformer.js";
8
+ import { cleanupToolDefinitions } from "../dist/lib/request/helpers/tool-utils.js";
9
+ import { AccountManager } from "../dist/lib/accounts.js";
10
+
11
+ function argValue(args, name) {
12
+ const prefix = `${name}=`;
13
+ const match = args.find((arg) => arg.startsWith(prefix));
14
+ return match ? match.slice(prefix.length) : undefined;
15
+ }
16
+
17
+ function parsePositiveInt(value, fallback) {
18
+ if (!value) return fallback;
19
+ const parsed = Number.parseInt(value, 10);
20
+ if (!Number.isFinite(parsed) || parsed <= 0) return fallback;
21
+ return parsed;
22
+ }
23
+
24
+ function benchmarkCase(name, iterations, fn) {
25
+ for (let i = 0; i < 5; i += 1) {
26
+ fn();
27
+ }
28
+ const start = performance.now();
29
+ for (let i = 0; i < iterations; i += 1) {
30
+ fn();
31
+ }
32
+ const end = performance.now();
33
+ return {
34
+ name,
35
+ iterations,
36
+ avgMs: Number(((end - start) / iterations).toFixed(6)),
37
+ };
38
+ }
39
+
40
+ function buildInputItems(size) {
41
+ const items = [];
42
+ for (let i = 0; i < size; i += 1) {
43
+ items.push({
44
+ type: "message",
45
+ role: i % 2 === 0 ? "user" : "assistant",
46
+ id: `msg_${i}`,
47
+ content: [{ type: "input_text", text: `payload-${i}` }],
48
+ });
49
+ if (i % 40 === 0) {
50
+ items.push({ type: "item_reference", id: `ref_${i}` });
51
+ }
52
+ }
53
+ return items;
54
+ }
55
+
56
+ function buildTools(toolCount, propertyCount) {
57
+ const tools = [];
58
+ for (let i = 0; i < toolCount; i += 1) {
59
+ const properties = {};
60
+ const required = [];
61
+ for (let j = 0; j < propertyCount; j += 1) {
62
+ const key = `field_${j}`;
63
+ properties[key] = { type: ["string", "null"], description: `property-${j}` };
64
+ required.push(key);
65
+ }
66
+ required.push("ghost_field");
67
+ tools.push({
68
+ type: "function",
69
+ function: {
70
+ name: `tool_${i}`,
71
+ parameters: {
72
+ type: "object",
73
+ properties,
74
+ required,
75
+ additionalProperties: false,
76
+ },
77
+ },
78
+ });
79
+ }
80
+ return tools;
81
+ }
82
+
83
+ function buildManager(accountCount) {
84
+ const now = Date.now();
85
+ const accounts = [];
86
+ for (let i = 0; i < accountCount; i += 1) {
87
+ accounts.push({
88
+ refreshToken: `rt_${i}`,
89
+ accessToken: `at_${i}`,
90
+ expiresAt: now + 3_600_000,
91
+ accountId: `acct_${i}`,
92
+ email: `user${i}@example.com`,
93
+ enabled: true,
94
+ addedAt: now,
95
+ lastUsed: 0,
96
+ rateLimitResetTimes: {},
97
+ });
98
+ }
99
+ return new AccountManager(undefined, {
100
+ version: 3,
101
+ accounts,
102
+ activeIndex: 0,
103
+ activeIndexByFamily: {},
104
+ });
105
+ }
106
+
107
+ function run() {
108
+ const args = process.argv.slice(2);
109
+ const iterations = parsePositiveInt(argValue(args, "--iterations"), 30);
110
+ const outputPath = argValue(args, "--output");
111
+
112
+ const inputSmall = buildInputItems(400);
113
+ const inputLarge = buildInputItems(2000);
114
+ const toolsMedium = buildTools(40, 12);
115
+ const toolsLarge = buildTools(140, 25);
116
+
117
+ const results = [
118
+ benchmarkCase("filterInput_small", iterations, () => {
119
+ const out = filterInput(inputSmall);
120
+ if (!Array.isArray(out)) throw new Error("filterInput_small failed");
121
+ }),
122
+ benchmarkCase("filterInput_large", iterations, () => {
123
+ const out = filterInput(inputLarge);
124
+ if (!Array.isArray(out)) throw new Error("filterInput_large failed");
125
+ }),
126
+ benchmarkCase("cleanupToolDefinitions_medium", iterations, () => {
127
+ const out = cleanupToolDefinitions(toolsMedium);
128
+ if (!Array.isArray(out)) throw new Error("cleanupToolDefinitions_medium failed");
129
+ }),
130
+ benchmarkCase("cleanupToolDefinitions_large", iterations, () => {
131
+ const out = cleanupToolDefinitions(toolsLarge);
132
+ if (!Array.isArray(out)) throw new Error("cleanupToolDefinitions_large failed");
133
+ }),
134
+ benchmarkCase("accountHybridSelection_200", iterations, () => {
135
+ const manager = buildManager(200);
136
+ for (let i = 0; i < 200; i += 1) {
137
+ manager.getCurrentOrNextForFamilyHybrid("codex", "gpt-5-codex", { pidOffsetEnabled: false });
138
+ }
139
+ }),
140
+ ];
141
+
142
+ const payload = {
143
+ generatedAt: new Date().toISOString(),
144
+ node: process.version,
145
+ iterations,
146
+ results,
147
+ };
148
+
149
+ if (outputPath) {
150
+ const resolved = resolve(outputPath);
151
+ return mkdir(dirname(resolved), { recursive: true }).then(() =>
152
+ writeFile(resolved, `${JSON.stringify(payload, null, 2)}\n`, "utf8"),
153
+ ).then(() => {
154
+ console.log(`Runtime benchmark written: ${resolved}`);
155
+ console.log(JSON.stringify(payload, null, 2));
156
+ });
157
+ }
158
+
159
+ console.log(JSON.stringify(payload, null, 2));
160
+ return Promise.resolve();
161
+ }
162
+
163
+ run().catch((error) => {
164
+ console.error(`Runtime benchmark failed: ${error instanceof Error ? error.message : String(error)}`);
165
+ process.exit(1);
166
+ });