@iam-brain/opencode-codex-auth 0.3.0 → 0.3.2

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 (108) hide show
  1. package/README.md +74 -32
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -19
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/codex-native/accounts.d.ts +21 -0
  6. package/dist/lib/codex-native/accounts.d.ts.map +1 -0
  7. package/dist/lib/codex-native/accounts.js +203 -0
  8. package/dist/lib/codex-native/accounts.js.map +1 -0
  9. package/dist/lib/codex-native/acquire-auth.d.ts +22 -0
  10. package/dist/lib/codex-native/acquire-auth.d.ts.map +1 -0
  11. package/dist/lib/codex-native/acquire-auth.js +338 -0
  12. package/dist/lib/codex-native/acquire-auth.js.map +1 -0
  13. package/dist/lib/codex-native/auth-menu-flow.d.ts +9 -0
  14. package/dist/lib/codex-native/auth-menu-flow.d.ts.map +1 -0
  15. package/dist/lib/codex-native/auth-menu-flow.js +192 -0
  16. package/dist/lib/codex-native/auth-menu-flow.js.map +1 -0
  17. package/dist/lib/codex-native/auth-menu-quotas.d.ts +9 -0
  18. package/dist/lib/codex-native/auth-menu-quotas.d.ts.map +1 -0
  19. package/dist/lib/codex-native/auth-menu-quotas.js +111 -0
  20. package/dist/lib/codex-native/auth-menu-quotas.js.map +1 -0
  21. package/dist/lib/codex-native/catalog-sync.d.ts +28 -0
  22. package/dist/lib/codex-native/catalog-sync.d.ts.map +1 -0
  23. package/dist/lib/codex-native/catalog-sync.js +36 -0
  24. package/dist/lib/codex-native/catalog-sync.js.map +1 -0
  25. package/dist/lib/codex-native/chat-hooks.d.ts +76 -0
  26. package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -0
  27. package/dist/lib/codex-native/chat-hooks.js +136 -0
  28. package/dist/lib/codex-native/chat-hooks.js.map +1 -0
  29. package/dist/lib/codex-native/oauth-auth-methods.d.ts +45 -0
  30. package/dist/lib/codex-native/oauth-auth-methods.d.ts.map +1 -0
  31. package/dist/lib/codex-native/oauth-auth-methods.js +171 -0
  32. package/dist/lib/codex-native/oauth-auth-methods.js.map +1 -0
  33. package/dist/lib/codex-native/oauth-persistence.d.ts +4 -0
  34. package/dist/lib/codex-native/oauth-persistence.d.ts.map +1 -0
  35. package/dist/lib/codex-native/oauth-persistence.js +28 -0
  36. package/dist/lib/codex-native/oauth-persistence.js.map +1 -0
  37. package/dist/lib/codex-native/oauth-server.d.ts.map +1 -1
  38. package/dist/lib/codex-native/oauth-server.js +31 -1
  39. package/dist/lib/codex-native/oauth-server.js.map +1 -1
  40. package/dist/lib/codex-native/oauth-utils.d.ts +51 -0
  41. package/dist/lib/codex-native/oauth-utils.d.ts.map +1 -0
  42. package/dist/lib/codex-native/oauth-utils.js +268 -0
  43. package/dist/lib/codex-native/oauth-utils.js.map +1 -0
  44. package/dist/lib/codex-native/openai-loader-fetch.d.ts +36 -0
  45. package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -0
  46. package/dist/lib/codex-native/openai-loader-fetch.js +191 -0
  47. package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -0
  48. package/dist/lib/codex-native/rate-limit-snapshots.d.ts +2 -0
  49. package/dist/lib/codex-native/rate-limit-snapshots.d.ts.map +1 -0
  50. package/dist/lib/codex-native/rate-limit-snapshots.js +24 -0
  51. package/dist/lib/codex-native/rate-limit-snapshots.js.map +1 -0
  52. package/dist/lib/codex-native/request-routing.d.ts +3 -0
  53. package/dist/lib/codex-native/request-routing.d.ts.map +1 -0
  54. package/dist/lib/codex-native/request-routing.js +41 -0
  55. package/dist/lib/codex-native/request-routing.js.map +1 -0
  56. package/dist/lib/codex-native/request-transform-pipeline.d.ts +19 -0
  57. package/dist/lib/codex-native/request-transform-pipeline.d.ts.map +1 -0
  58. package/dist/lib/codex-native/request-transform-pipeline.js +24 -0
  59. package/dist/lib/codex-native/request-transform-pipeline.js.map +1 -0
  60. package/dist/lib/codex-native/request-transform.d.ts +18 -4
  61. package/dist/lib/codex-native/request-transform.d.ts.map +1 -1
  62. package/dist/lib/codex-native/request-transform.js +227 -25
  63. package/dist/lib/codex-native/request-transform.js.map +1 -1
  64. package/dist/lib/codex-native/session-affinity-state.d.ts +15 -0
  65. package/dist/lib/codex-native/session-affinity-state.d.ts.map +1 -0
  66. package/dist/lib/codex-native/session-affinity-state.js +49 -0
  67. package/dist/lib/codex-native/session-affinity-state.js.map +1 -0
  68. package/dist/lib/codex-native/session-messages.d.ts +8 -0
  69. package/dist/lib/codex-native/session-messages.d.ts.map +1 -0
  70. package/dist/lib/codex-native/session-messages.js +55 -0
  71. package/dist/lib/codex-native/session-messages.js.map +1 -0
  72. package/dist/lib/codex-native.d.ts +8 -34
  73. package/dist/lib/codex-native.d.ts.map +1 -1
  74. package/dist/lib/codex-native.js +130 -1662
  75. package/dist/lib/codex-native.js.map +1 -1
  76. package/dist/lib/codex-status-tool.d.ts.map +1 -1
  77. package/dist/lib/codex-status-tool.js.map +1 -1
  78. package/dist/lib/codex-status-ui.d.ts.map +1 -1
  79. package/dist/lib/codex-status-ui.js +6 -2
  80. package/dist/lib/codex-status-ui.js.map +1 -1
  81. package/dist/lib/config.d.ts +17 -12
  82. package/dist/lib/config.d.ts.map +1 -1
  83. package/dist/lib/config.js +143 -157
  84. package/dist/lib/config.js.map +1 -1
  85. package/dist/lib/installer-cli.d.ts.map +1 -1
  86. package/dist/lib/installer-cli.js +22 -58
  87. package/dist/lib/installer-cli.js.map +1 -1
  88. package/dist/lib/model-catalog.d.ts +1 -0
  89. package/dist/lib/model-catalog.d.ts.map +1 -1
  90. package/dist/lib/model-catalog.js +214 -9
  91. package/dist/lib/model-catalog.js.map +1 -1
  92. package/dist/lib/request-snapshots.d.ts +2 -0
  93. package/dist/lib/request-snapshots.d.ts.map +1 -1
  94. package/dist/lib/request-snapshots.js +48 -1
  95. package/dist/lib/request-snapshots.js.map +1 -1
  96. package/dist/lib/rotation.d.ts.map +1 -1
  97. package/dist/lib/rotation.js +3 -0
  98. package/dist/lib/rotation.js.map +1 -1
  99. package/package.json +3 -2
  100. package/schemas/codex-config.schema.json +19 -44
  101. package/dist/lib/codex-native/collaboration.d.ts +0 -19
  102. package/dist/lib/codex-native/collaboration.d.ts.map +0 -1
  103. package/dist/lib/codex-native/collaboration.js +0 -126
  104. package/dist/lib/codex-native/collaboration.js.map +0 -1
  105. package/dist/lib/orchestrator-agents.d.ts +0 -29
  106. package/dist/lib/orchestrator-agents.d.ts.map +0 -1
  107. package/dist/lib/orchestrator-agents.js +0 -212
  108. package/dist/lib/orchestrator-agents.js.map +0 -1
@@ -0,0 +1,191 @@
1
+ import { FetchOrchestrator } from "../fetch-orchestrator";
2
+ import { PluginFatalError, isPluginFatalError, toSyntheticErrorResponse } from "../fatal-errors";
3
+ import { acquireOpenAIAuth } from "./acquire-auth";
4
+ import { resolveRequestUserAgent } from "./client-identity";
5
+ import { resolveCodexOriginator } from "./originator";
6
+ import { persistRateLimitSnapshotFromResponse } from "./rate-limit-snapshots";
7
+ import { assertAllowedOutboundUrl, rewriteUrl } from "./request-routing";
8
+ import { applyRequestTransformPipeline } from "./request-transform-pipeline";
9
+ import { sanitizeOutboundRequestIfNeeded } from "./request-transform";
10
+ export function createOpenAIFetchHandler(input) {
11
+ return async (requestInput, init) => {
12
+ const baseRequest = new Request(requestInput, init);
13
+ if (input.headerTransformDebug) {
14
+ await input.requestSnapshots.captureRequest("before-header-transform", baseRequest, {
15
+ spoofMode: input.spoofMode
16
+ });
17
+ }
18
+ let outbound = new Request(rewriteUrl(baseRequest), baseRequest);
19
+ const inboundOriginator = outbound.headers.get("originator")?.trim();
20
+ const outboundOriginator = inboundOriginator === "opencode" || inboundOriginator === "codex_exec" || inboundOriginator === "codex_cli_rs"
21
+ ? inboundOriginator
22
+ : resolveCodexOriginator(input.spoofMode);
23
+ outbound.headers.set("originator", outboundOriginator);
24
+ const inboundUserAgent = outbound.headers.get("user-agent")?.trim();
25
+ if (input.spoofMode === "native" && inboundUserAgent) {
26
+ outbound.headers.set("user-agent", inboundUserAgent);
27
+ }
28
+ else {
29
+ outbound.headers.set("user-agent", resolveRequestUserAgent(input.spoofMode, outboundOriginator));
30
+ }
31
+ if (outbound.headers.has(input.internalCollaborationModeHeader)) {
32
+ outbound.headers.delete(input.internalCollaborationModeHeader);
33
+ }
34
+ const transformed = await applyRequestTransformPipeline({
35
+ request: outbound,
36
+ spoofMode: input.spoofMode,
37
+ remapDeveloperMessagesToUserEnabled: input.remapDeveloperMessagesToUserEnabled,
38
+ catalogModels: input.getCatalogModels(),
39
+ behaviorSettings: input.behaviorSettings,
40
+ fallbackPersonality: input.personality
41
+ });
42
+ outbound = transformed.request;
43
+ const isSubagentRequest = transformed.isSubagentRequest;
44
+ if (input.headerTransformDebug) {
45
+ await input.requestSnapshots.captureRequest("after-header-transform", outbound, {
46
+ spoofMode: input.spoofMode,
47
+ instructionsOverridden: transformed.instructionOverride.changed,
48
+ instructionOverrideReason: transformed.instructionOverride.reason,
49
+ developerMessagesRemapped: transformed.developerRoleRemap.changed,
50
+ developerMessageRemapReason: transformed.developerRoleRemap.reason,
51
+ developerMessageRemapCount: transformed.developerRoleRemap.remappedCount,
52
+ developerMessagePreservedCount: transformed.developerRoleRemap.preservedCount,
53
+ ...(isSubagentRequest ? { subagent: transformed.subagentHeader } : {})
54
+ });
55
+ }
56
+ let selectedIdentityKey;
57
+ await input.requestSnapshots.captureRequest("before-auth", outbound, { spoofMode: input.spoofMode });
58
+ const { orchestratorState, stickySessionState, hybridSessionState, persistSessionAffinityState } = input.sessionAffinityState;
59
+ const orchestrator = new FetchOrchestrator({
60
+ acquireAuth: async (context) => {
61
+ const auth = await acquireOpenAIAuth({
62
+ authMode: input.authMode,
63
+ context,
64
+ isSubagentRequest,
65
+ stickySessionState,
66
+ hybridSessionState,
67
+ seenSessionKeys: orchestratorState.seenSessionKeys,
68
+ persistSessionAffinityState,
69
+ pidOffsetEnabled: input.pidOffsetEnabled,
70
+ configuredRotationStrategy: input.configuredRotationStrategy,
71
+ log: input.log
72
+ });
73
+ if (input.spoofMode === "codex") {
74
+ const catalogModels = input.getCatalogModels();
75
+ const shouldAwaitCatalog = !catalogModels || catalogModels.length === 0;
76
+ if (shouldAwaitCatalog) {
77
+ try {
78
+ await input.syncCatalogFromAuth({ accessToken: auth.access, accountId: auth.accountId });
79
+ }
80
+ catch {
81
+ // best-effort catalog load; request can still proceed
82
+ }
83
+ }
84
+ else {
85
+ void input.syncCatalogFromAuth({ accessToken: auth.access, accountId: auth.accountId }).catch(() => { });
86
+ }
87
+ }
88
+ else {
89
+ void input.syncCatalogFromAuth({ accessToken: auth.access, accountId: auth.accountId }).catch(() => { });
90
+ }
91
+ selectedIdentityKey = auth.identityKey;
92
+ return auth;
93
+ },
94
+ setCooldown: input.setCooldown,
95
+ quietMode: input.quietMode,
96
+ state: orchestratorState,
97
+ onSessionObserved: ({ event, sessionKey }) => {
98
+ if (isSubagentRequest) {
99
+ orchestratorState.seenSessionKeys.delete(sessionKey);
100
+ stickySessionState.bySessionKey.delete(sessionKey);
101
+ hybridSessionState.bySessionKey.delete(sessionKey);
102
+ return;
103
+ }
104
+ if (event === "new" || event === "resume" || event === "switch") {
105
+ persistSessionAffinityState();
106
+ }
107
+ },
108
+ showToast: input.showToast,
109
+ onAttemptRequest: async ({ attempt, maxAttempts, request, auth, sessionKey }) => {
110
+ const transformed = await applyRequestTransformPipeline({
111
+ request,
112
+ spoofMode: input.spoofMode,
113
+ remapDeveloperMessagesToUserEnabled: input.remapDeveloperMessagesToUserEnabled,
114
+ catalogModels: input.getCatalogModels(),
115
+ behaviorSettings: input.behaviorSettings,
116
+ fallbackPersonality: input.personality
117
+ });
118
+ await input.requestSnapshots.captureRequest("outbound-attempt", transformed.request, {
119
+ attempt: attempt + 1,
120
+ maxAttempts,
121
+ sessionKey,
122
+ identityKey: auth.identityKey,
123
+ accountLabel: auth.accountLabel,
124
+ instructionsOverridden: transformed.instructionOverride.changed,
125
+ instructionOverrideReason: transformed.instructionOverride.reason,
126
+ developerMessagesRemapped: transformed.developerRoleRemap.changed,
127
+ developerMessageRemapReason: transformed.developerRoleRemap.reason,
128
+ developerMessageRemapCount: transformed.developerRoleRemap.remappedCount,
129
+ developerMessagePreservedCount: transformed.developerRoleRemap.preservedCount
130
+ });
131
+ return transformed.request;
132
+ },
133
+ onAttemptResponse: async ({ attempt, maxAttempts, response, auth, sessionKey }) => {
134
+ await input.requestSnapshots.captureResponse("outbound-response", response, {
135
+ attempt: attempt + 1,
136
+ maxAttempts,
137
+ sessionKey,
138
+ identityKey: auth.identityKey,
139
+ accountLabel: auth.accountLabel
140
+ });
141
+ }
142
+ });
143
+ const sanitizedOutbound = await sanitizeOutboundRequestIfNeeded(outbound, input.compatInputSanitizerEnabled);
144
+ if (sanitizedOutbound.changed) {
145
+ input.log?.debug("compat input sanitizer applied", { mode: input.spoofMode });
146
+ }
147
+ await input.requestSnapshots.captureRequest("after-sanitize", sanitizedOutbound.request, {
148
+ spoofMode: input.spoofMode,
149
+ sanitized: sanitizedOutbound.changed
150
+ });
151
+ try {
152
+ assertAllowedOutboundUrl(new URL(sanitizedOutbound.request.url));
153
+ }
154
+ catch (error) {
155
+ if (isPluginFatalError(error)) {
156
+ return toSyntheticErrorResponse(error);
157
+ }
158
+ return toSyntheticErrorResponse(new PluginFatalError({
159
+ message: "Outbound request validation failed before sending to OpenAI backend.",
160
+ status: 400,
161
+ type: "disallowed_outbound_request",
162
+ param: "request"
163
+ }));
164
+ }
165
+ let response;
166
+ try {
167
+ response = await orchestrator.execute(sanitizedOutbound.request);
168
+ }
169
+ catch (error) {
170
+ if (isPluginFatalError(error)) {
171
+ input.log?.debug("fatal auth/error response", {
172
+ type: error.type,
173
+ status: error.status
174
+ });
175
+ return toSyntheticErrorResponse(error);
176
+ }
177
+ input.log?.debug("unexpected fetch failure", {
178
+ error: error instanceof Error ? error.message : String(error)
179
+ });
180
+ return toSyntheticErrorResponse(new PluginFatalError({
181
+ message: "OpenAI request failed unexpectedly. Retry once, and if it persists run `opencode auth login`.",
182
+ status: 502,
183
+ type: "plugin_fetch_failed",
184
+ param: "request"
185
+ }));
186
+ }
187
+ persistRateLimitSnapshotFromResponse(response, selectedIdentityKey);
188
+ return response;
189
+ };
190
+ }
191
+ //# sourceMappingURL=openai-loader-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-loader-fetch.js","sourceRoot":"","sources":["../../../lib/codex-native/openai-loader-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function persistRateLimitSnapshotFromResponse(response: Response, identityKey: string | undefined): void;
2
+ //# sourceMappingURL=rate-limit-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-snapshots.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/rate-limit-snapshots.ts"],"names":[],"mappings":"AAIA,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAqB9G"}
@@ -0,0 +1,24 @@
1
+ import { CodexStatus } from "../codex-status";
2
+ import { saveSnapshots } from "../codex-status-storage";
3
+ import { defaultSnapshotsPath } from "../paths";
4
+ export function persistRateLimitSnapshotFromResponse(response, identityKey) {
5
+ if (!identityKey)
6
+ return;
7
+ const headers = {};
8
+ response.headers.forEach((value, key) => {
9
+ headers[key.toLowerCase()] = value;
10
+ });
11
+ const status = new CodexStatus();
12
+ const snapshot = status.parseFromHeaders({
13
+ now: Date.now(),
14
+ modelFamily: "codex",
15
+ headers
16
+ });
17
+ if (snapshot.limits.length === 0)
18
+ return;
19
+ void saveSnapshots(defaultSnapshotsPath(), (current) => ({
20
+ ...current,
21
+ [identityKey]: snapshot
22
+ })).catch(() => { });
23
+ }
24
+ //# sourceMappingURL=rate-limit-snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-snapshots.js","sourceRoot":"","sources":["../../../lib/codex-native/rate-limit-snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,MAAM,UAAU,oCAAoC,CAAC,QAAkB,EAAE,WAA+B;IACtG,IAAI,CAAC,WAAW;QAAE,OAAM;IAExB,MAAM,OAAO,GAAc,EAAE,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACvC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACf,WAAW,EAAE,OAAO;QACpB,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAExC,KAAK,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,OAAO;QACV,CAAC,WAAW,CAAC,EAAE,QAAQ;KACxB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function rewriteUrl(requestInput: string | URL | Request): URL;
2
+ export declare function assertAllowedOutboundUrl(url: URL): void;
3
+ //# sourceMappingURL=request-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-routing.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/request-routing.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAWpE;AASD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAsBvD"}
@@ -0,0 +1,41 @@
1
+ import { PluginFatalError } from "../fatal-errors";
2
+ const CODEX_API_ENDPOINT = "https://chatgpt.com/backend-api/codex/responses";
3
+ const OPENAI_OUTBOUND_HOST_ALLOWLIST = new Set(["api.openai.com", "auth.openai.com", "chat.openai.com", "chatgpt.com"]);
4
+ export function rewriteUrl(requestInput) {
5
+ const parsed = requestInput instanceof URL
6
+ ? requestInput
7
+ : new URL(typeof requestInput === "string" ? requestInput : requestInput.url);
8
+ if (parsed.pathname.includes("/v1/responses") || parsed.pathname.includes("/chat/completions")) {
9
+ return new URL(CODEX_API_ENDPOINT);
10
+ }
11
+ return parsed;
12
+ }
13
+ function isAllowedOpenAIOutboundHost(hostname) {
14
+ const normalized = hostname.trim().toLowerCase();
15
+ if (!normalized)
16
+ return false;
17
+ if (OPENAI_OUTBOUND_HOST_ALLOWLIST.has(normalized))
18
+ return true;
19
+ return normalized.endsWith(".openai.com") || normalized.endsWith(".chatgpt.com");
20
+ }
21
+ export function assertAllowedOutboundUrl(url) {
22
+ const protocol = url.protocol.trim().toLowerCase();
23
+ if (protocol !== "https:") {
24
+ throw new PluginFatalError({
25
+ message: `Blocked outbound request with unsupported protocol "${protocol || "unknown"}". ` +
26
+ "This plugin only proxies HTTPS requests to OpenAI/ChatGPT backends.",
27
+ status: 400,
28
+ type: "disallowed_outbound_protocol",
29
+ param: "request"
30
+ });
31
+ }
32
+ if (isAllowedOpenAIOutboundHost(url.hostname))
33
+ return;
34
+ throw new PluginFatalError({
35
+ message: `Blocked outbound request to "${url.hostname}". ` + "This plugin only proxies OpenAI/ChatGPT backend traffic.",
36
+ status: 400,
37
+ type: "disallowed_outbound_host",
38
+ param: "request"
39
+ });
40
+ }
41
+ //# sourceMappingURL=request-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-routing.js","sourceRoot":"","sources":["../../../lib/codex-native/request-routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,MAAM,kBAAkB,GAAG,iDAAiD,CAAA;AAC5E,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAA;AAEvH,MAAM,UAAU,UAAU,CAAC,YAAoC;IAC7D,MAAM,MAAM,GACV,YAAY,YAAY,GAAG;QACzB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAEjF,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/F,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA;IAC7B,IAAI,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/D,OAAO,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAQ;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAClD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC;YACzB,OAAO,EACL,uDAAuD,QAAQ,IAAI,SAAS,KAAK;gBACjF,qEAAqE;YACvE,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,8BAA8B;YACpC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAM;IAErD,MAAM,IAAI,gBAAgB,CAAC;QACzB,OAAO,EACL,gCAAgC,GAAG,CAAC,QAAQ,KAAK,GAAG,0DAA0D;QAChH,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { BehaviorSettings, CodexSpoofMode, PersonalityOption } from "../config";
2
+ import type { CodexModelInfo } from "../model-catalog";
3
+ import { applyCatalogInstructionOverrideToRequest, remapDeveloperMessagesToUserOnRequest } from "./request-transform";
4
+ export type RequestTransformPipelineResult = {
5
+ request: Request;
6
+ instructionOverride: Awaited<ReturnType<typeof applyCatalogInstructionOverrideToRequest>>;
7
+ developerRoleRemap: Awaited<ReturnType<typeof remapDeveloperMessagesToUserOnRequest>>;
8
+ subagentHeader?: string;
9
+ isSubagentRequest: boolean;
10
+ };
11
+ export declare function applyRequestTransformPipeline(input: {
12
+ request: Request;
13
+ spoofMode: CodexSpoofMode;
14
+ remapDeveloperMessagesToUserEnabled: boolean;
15
+ catalogModels: CodexModelInfo[] | undefined;
16
+ behaviorSettings?: BehaviorSettings;
17
+ fallbackPersonality?: PersonalityOption;
18
+ }): Promise<RequestTransformPipelineResult>;
19
+ //# sourceMappingURL=request-transform-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-transform-pipeline.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/request-transform-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,wCAAwC,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAA;AAErH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,wCAAwC,CAAC,CAAC,CAAA;IACzF,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,qCAAqC,CAAC,CAAC,CAAA;IACrF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,cAAc,CAAA;IACzB,mCAAmC,EAAE,OAAO,CAAA;IAC5C,aAAa,EAAE,cAAc,EAAE,GAAG,SAAS,CAAA;IAC3C,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;CACxC,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAsB1C"}
@@ -0,0 +1,24 @@
1
+ import { applyCatalogInstructionOverrideToRequest, remapDeveloperMessagesToUserOnRequest } from "./request-transform";
2
+ export async function applyRequestTransformPipeline(input) {
3
+ const instructionOverride = await applyCatalogInstructionOverrideToRequest({
4
+ request: input.request,
5
+ enabled: input.spoofMode === "codex",
6
+ catalogModels: input.catalogModels,
7
+ behaviorSettings: input.behaviorSettings,
8
+ fallbackPersonality: input.fallbackPersonality
9
+ });
10
+ const developerRoleRemap = await remapDeveloperMessagesToUserOnRequest({
11
+ request: instructionOverride.request,
12
+ enabled: input.remapDeveloperMessagesToUserEnabled
13
+ });
14
+ const request = developerRoleRemap.request;
15
+ const subagentHeader = request.headers.get("x-openai-subagent")?.trim();
16
+ return {
17
+ request,
18
+ instructionOverride,
19
+ developerRoleRemap,
20
+ subagentHeader: subagentHeader || undefined,
21
+ isSubagentRequest: Boolean(subagentHeader)
22
+ };
23
+ }
24
+ //# sourceMappingURL=request-transform-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-transform-pipeline.js","sourceRoot":"","sources":["../../../lib/codex-native/request-transform-pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wCAAwC,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAA;AAUrH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAOnD;IACC,MAAM,mBAAmB,GAAG,MAAM,wCAAwC,CAAC;QACzE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,OAAO;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;KAC/C,CAAC,CAAA;IACF,MAAM,kBAAkB,GAAG,MAAM,qCAAqC,CAAC;QACrE,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,OAAO,EAAE,KAAK,CAAC,mCAAmC;KACnD,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAA;IAC1C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAA;IAEvE,OAAO;QACL,OAAO;QACP,mBAAmB;QACnB,kBAAkB;QAClB,cAAc,EAAE,cAAc,IAAI,SAAS;QAC3C,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC;KAC3C,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CustomSettings, PersonalityOption } from "../config";
1
+ import type { BehaviorSettings, PersonalityOption } from "../config";
2
2
  import type { CodexModelInfo } from "../model-catalog";
3
3
  type ChatParamsOutput = {
4
4
  temperature: number;
@@ -17,9 +17,11 @@ export declare function getVariantLookupCandidates(input: {
17
17
  modelCandidates: string[];
18
18
  }): string[];
19
19
  export declare function findCatalogModelForCandidates(catalogModels: CodexModelInfo[] | undefined, modelCandidates: string[]): CodexModelInfo | undefined;
20
- export declare function getModelThinkingSummariesOverride(customSettings: CustomSettings | undefined, modelCandidates: string[], variantCandidates: string[]): boolean | undefined;
20
+ export declare function getModelThinkingSummariesOverride(behaviorSettings: BehaviorSettings | undefined, modelCandidates: string[], variantCandidates: string[]): boolean | undefined;
21
+ export declare function getModelVerbosityEnabledOverride(behaviorSettings: BehaviorSettings | undefined, modelCandidates: string[], variantCandidates: string[]): boolean | undefined;
22
+ export declare function getModelVerbosityOverride(behaviorSettings: BehaviorSettings | undefined, modelCandidates: string[], variantCandidates: string[]): "default" | "low" | "medium" | "high" | undefined;
21
23
  export declare function resolvePersonalityForModel(input: {
22
- customSettings?: CustomSettings;
24
+ behaviorSettings?: BehaviorSettings;
23
25
  modelCandidates: string[];
24
26
  variantCandidates: string[];
25
27
  fallback?: PersonalityOption;
@@ -28,6 +30,8 @@ export declare function applyCodexRuntimeDefaultsToParams(input: {
28
30
  modelOptions: Record<string, unknown>;
29
31
  modelToolCallCapable: boolean | undefined;
30
32
  thinkingSummariesOverride: boolean | undefined;
33
+ verbosityEnabledOverride: boolean | undefined;
34
+ verbosityOverride: "default" | "low" | "medium" | "high" | undefined;
31
35
  preferCodexInstructions: boolean;
32
36
  output: ChatParamsOutput;
33
37
  }): void;
@@ -35,11 +39,21 @@ export declare function sanitizeOutboundRequestIfNeeded(request: Request, enable
35
39
  request: Request;
36
40
  changed: boolean;
37
41
  }>;
42
+ export declare function remapDeveloperMessagesToUserOnRequest(input: {
43
+ request: Request;
44
+ enabled: boolean;
45
+ }): Promise<{
46
+ request: Request;
47
+ changed: boolean;
48
+ reason: string;
49
+ remappedCount: number;
50
+ preservedCount: number;
51
+ }>;
38
52
  export declare function applyCatalogInstructionOverrideToRequest(input: {
39
53
  request: Request;
40
54
  enabled: boolean;
41
55
  catalogModels: CodexModelInfo[] | undefined;
42
- customSettings: CustomSettings | undefined;
56
+ behaviorSettings: BehaviorSettings | undefined;
43
57
  fallbackPersonality: PersonalityOption | undefined;
44
58
  }): Promise<{
45
59
  request: Request;
@@ -1 +1 @@
1
- {"version":3,"file":"request-transform.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/request-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAItD,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC,CAAA;AAsED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAiBhG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAsB5G;AAQD,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,cAAc,EAAE,GAAG,SAAS,EAC3C,eAAe,EAAE,MAAM,EAAE,GACxB,cAAc,GAAG,SAAS,CAgB5B;AA8CD,wBAAgB,iCAAiC,CAC/C,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,GAAG,SAAS,CAqBrB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B,GAAG,MAAM,GAAG,SAAS,CAYrB;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC,yBAAyB,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9C,uBAAuB,EAAE,OAAO,CAAA;IAChC,MAAM,EAAE,gBAAgB,CAAA;CACzB,GAAG,IAAI,CAkEP;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8BjD;AAuBD,wBAAsB,wCAAwC,CAAC,KAAK,EAAE;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,cAAc,EAAE,GAAG,SAAS,CAAA;IAC3C,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,mBAAmB,EAAE,iBAAiB,GAAG,SAAS,CAAA;CACnD,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqDlE"}
1
+ {"version":3,"file":"request-transform.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/request-transform.ts"],"names":[],"mappings":"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"}