@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.
- package/README.md +74 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -19
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-native/accounts.d.ts +21 -0
- package/dist/lib/codex-native/accounts.d.ts.map +1 -0
- package/dist/lib/codex-native/accounts.js +203 -0
- package/dist/lib/codex-native/accounts.js.map +1 -0
- package/dist/lib/codex-native/acquire-auth.d.ts +22 -0
- package/dist/lib/codex-native/acquire-auth.d.ts.map +1 -0
- package/dist/lib/codex-native/acquire-auth.js +338 -0
- package/dist/lib/codex-native/acquire-auth.js.map +1 -0
- package/dist/lib/codex-native/auth-menu-flow.d.ts +9 -0
- package/dist/lib/codex-native/auth-menu-flow.d.ts.map +1 -0
- package/dist/lib/codex-native/auth-menu-flow.js +192 -0
- package/dist/lib/codex-native/auth-menu-flow.js.map +1 -0
- package/dist/lib/codex-native/auth-menu-quotas.d.ts +9 -0
- package/dist/lib/codex-native/auth-menu-quotas.d.ts.map +1 -0
- package/dist/lib/codex-native/auth-menu-quotas.js +111 -0
- package/dist/lib/codex-native/auth-menu-quotas.js.map +1 -0
- package/dist/lib/codex-native/catalog-sync.d.ts +28 -0
- package/dist/lib/codex-native/catalog-sync.d.ts.map +1 -0
- package/dist/lib/codex-native/catalog-sync.js +36 -0
- package/dist/lib/codex-native/catalog-sync.js.map +1 -0
- package/dist/lib/codex-native/chat-hooks.d.ts +76 -0
- package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -0
- package/dist/lib/codex-native/chat-hooks.js +136 -0
- package/dist/lib/codex-native/chat-hooks.js.map +1 -0
- package/dist/lib/codex-native/oauth-auth-methods.d.ts +45 -0
- package/dist/lib/codex-native/oauth-auth-methods.d.ts.map +1 -0
- package/dist/lib/codex-native/oauth-auth-methods.js +171 -0
- package/dist/lib/codex-native/oauth-auth-methods.js.map +1 -0
- package/dist/lib/codex-native/oauth-persistence.d.ts +4 -0
- package/dist/lib/codex-native/oauth-persistence.d.ts.map +1 -0
- package/dist/lib/codex-native/oauth-persistence.js +28 -0
- package/dist/lib/codex-native/oauth-persistence.js.map +1 -0
- package/dist/lib/codex-native/oauth-server.d.ts.map +1 -1
- package/dist/lib/codex-native/oauth-server.js +31 -1
- package/dist/lib/codex-native/oauth-server.js.map +1 -1
- package/dist/lib/codex-native/oauth-utils.d.ts +51 -0
- package/dist/lib/codex-native/oauth-utils.d.ts.map +1 -0
- package/dist/lib/codex-native/oauth-utils.js +268 -0
- package/dist/lib/codex-native/oauth-utils.js.map +1 -0
- package/dist/lib/codex-native/openai-loader-fetch.d.ts +36 -0
- package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -0
- package/dist/lib/codex-native/openai-loader-fetch.js +191 -0
- package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -0
- package/dist/lib/codex-native/rate-limit-snapshots.d.ts +2 -0
- package/dist/lib/codex-native/rate-limit-snapshots.d.ts.map +1 -0
- package/dist/lib/codex-native/rate-limit-snapshots.js +24 -0
- package/dist/lib/codex-native/rate-limit-snapshots.js.map +1 -0
- package/dist/lib/codex-native/request-routing.d.ts +3 -0
- package/dist/lib/codex-native/request-routing.d.ts.map +1 -0
- package/dist/lib/codex-native/request-routing.js +41 -0
- package/dist/lib/codex-native/request-routing.js.map +1 -0
- package/dist/lib/codex-native/request-transform-pipeline.d.ts +19 -0
- package/dist/lib/codex-native/request-transform-pipeline.d.ts.map +1 -0
- package/dist/lib/codex-native/request-transform-pipeline.js +24 -0
- package/dist/lib/codex-native/request-transform-pipeline.js.map +1 -0
- package/dist/lib/codex-native/request-transform.d.ts +18 -4
- package/dist/lib/codex-native/request-transform.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform.js +227 -25
- package/dist/lib/codex-native/request-transform.js.map +1 -1
- package/dist/lib/codex-native/session-affinity-state.d.ts +15 -0
- package/dist/lib/codex-native/session-affinity-state.d.ts.map +1 -0
- package/dist/lib/codex-native/session-affinity-state.js +49 -0
- package/dist/lib/codex-native/session-affinity-state.js.map +1 -0
- package/dist/lib/codex-native/session-messages.d.ts +8 -0
- package/dist/lib/codex-native/session-messages.d.ts.map +1 -0
- package/dist/lib/codex-native/session-messages.js +55 -0
- package/dist/lib/codex-native/session-messages.js.map +1 -0
- package/dist/lib/codex-native.d.ts +8 -34
- package/dist/lib/codex-native.d.ts.map +1 -1
- package/dist/lib/codex-native.js +130 -1662
- package/dist/lib/codex-native.js.map +1 -1
- package/dist/lib/codex-status-tool.d.ts.map +1 -1
- package/dist/lib/codex-status-tool.js.map +1 -1
- package/dist/lib/codex-status-ui.d.ts.map +1 -1
- package/dist/lib/codex-status-ui.js +6 -2
- package/dist/lib/codex-status-ui.js.map +1 -1
- package/dist/lib/config.d.ts +17 -12
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +143 -157
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/installer-cli.d.ts.map +1 -1
- package/dist/lib/installer-cli.js +22 -58
- package/dist/lib/installer-cli.js.map +1 -1
- package/dist/lib/model-catalog.d.ts +1 -0
- package/dist/lib/model-catalog.d.ts.map +1 -1
- package/dist/lib/model-catalog.js +214 -9
- package/dist/lib/model-catalog.js.map +1 -1
- package/dist/lib/request-snapshots.d.ts +2 -0
- package/dist/lib/request-snapshots.d.ts.map +1 -1
- package/dist/lib/request-snapshots.js +48 -1
- package/dist/lib/request-snapshots.js.map +1 -1
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +3 -0
- package/dist/lib/rotation.js.map +1 -1
- package/package.json +3 -2
- package/schemas/codex-config.schema.json +19 -44
- package/dist/lib/codex-native/collaboration.d.ts +0 -19
- package/dist/lib/codex-native/collaboration.d.ts.map +0 -1
- package/dist/lib/codex-native/collaboration.js +0 -126
- package/dist/lib/codex-native/collaboration.js.map +0 -1
- package/dist/lib/orchestrator-agents.d.ts +0 -29
- package/dist/lib/orchestrator-agents.d.ts.map +0 -1
- package/dist/lib/orchestrator-agents.js +0 -212
- 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 @@
|
|
|
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 @@
|
|
|
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 {
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"request-transform.d.ts","sourceRoot":"","sources":["../../../lib/codex-native/request-transform.ts"],"names":[],"mappings":"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"}
|