@iam-brain/opencode-codex-auth 1.8.0 → 1.9.0
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-cache-layout.d.ts +0 -4
- package/dist/lib/codex-cache-layout.d.ts.map +1 -1
- package/dist/lib/codex-cache-layout.js +0 -8
- package/dist/lib/codex-cache-layout.js.map +1 -1
- package/dist/lib/codex-native/agent-execution.d.ts +44 -0
- package/dist/lib/codex-native/agent-execution.d.ts.map +1 -0
- package/dist/lib/codex-native/agent-execution.js +126 -0
- package/dist/lib/codex-native/agent-execution.js.map +1 -0
- package/dist/lib/codex-native/chat-hooks.d.ts +8 -6
- package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -1
- package/dist/lib/codex-native/chat-hooks.js +59 -43
- package/dist/lib/codex-native/chat-hooks.js.map +1 -1
- package/dist/lib/codex-native/client-identity.js +1 -1
- package/dist/lib/codex-native/instruction-utils.d.ts +5 -0
- package/dist/lib/codex-native/instruction-utils.d.ts.map +1 -0
- package/dist/lib/codex-native/instruction-utils.js +58 -0
- package/dist/lib/codex-native/instruction-utils.js.map +1 -0
- package/dist/lib/codex-native/openai-loader-fetch.d.ts +1 -2
- package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -1
- package/dist/lib/codex-native/openai-loader-fetch.js +25 -27
- package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -1
- package/dist/lib/codex-native/request-transform-model-service-tier.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform-model-service-tier.js +23 -5
- package/dist/lib/codex-native/request-transform-model-service-tier.js.map +1 -1
- package/dist/lib/codex-native/request-transform-model.d.ts +7 -2
- package/dist/lib/codex-native/request-transform-model.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform-model.js +14 -0
- package/dist/lib/codex-native/request-transform-model.js.map +1 -1
- package/dist/lib/codex-native/request-transform-payload.d.ts +5 -0
- package/dist/lib/codex-native/request-transform-payload.d.ts.map +1 -1
- package/dist/lib/codex-native/request-transform-payload.js +71 -3
- package/dist/lib/codex-native/request-transform-payload.js.map +1 -1
- package/dist/lib/codex-native/ultra.d.ts +34 -0
- package/dist/lib/codex-native/ultra.d.ts.map +1 -0
- package/dist/lib/codex-native/ultra.js +192 -0
- package/dist/lib/codex-native/ultra.js.map +1 -0
- package/dist/lib/codex-native.d.ts +6 -2
- package/dist/lib/codex-native.d.ts.map +1 -1
- package/dist/lib/codex-native.js +136 -36
- package/dist/lib/codex-native.js.map +1 -1
- package/dist/lib/config/file.d.ts.map +1 -1
- package/dist/lib/config/file.js +47 -10
- package/dist/lib/config/file.js.map +1 -1
- package/dist/lib/config/resolve.d.ts +2 -2
- package/dist/lib/config/resolve.d.ts.map +1 -1
- package/dist/lib/config/resolve.js +11 -21
- package/dist/lib/config/resolve.js.map +1 -1
- package/dist/lib/config/types.d.ts +14 -5
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/config/types.js +15 -10
- package/dist/lib/config/types.js.map +1 -1
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/fetch-orchestrator-helpers.d.ts.map +1 -1
- package/dist/lib/fetch-orchestrator-helpers.js +2 -1
- package/dist/lib/fetch-orchestrator-helpers.js.map +1 -1
- package/dist/lib/installer-cli.d.ts.map +1 -1
- package/dist/lib/installer-cli.js +4 -14
- package/dist/lib/installer-cli.js.map +1 -1
- package/dist/lib/legacy-orchestrator-cleanup.d.ts +10 -0
- package/dist/lib/legacy-orchestrator-cleanup.d.ts.map +1 -0
- package/dist/lib/legacy-orchestrator-cleanup.js +48 -0
- package/dist/lib/legacy-orchestrator-cleanup.js.map +1 -0
- package/dist/lib/model-catalog/cache-helpers.js +1 -1
- package/dist/lib/model-catalog/cache-helpers.js.map +1 -1
- package/dist/lib/model-catalog/provider.d.ts +9 -0
- package/dist/lib/model-catalog/provider.d.ts.map +1 -1
- package/dist/lib/model-catalog/provider.js +121 -10
- package/dist/lib/model-catalog/provider.js.map +1 -1
- package/dist/lib/model-catalog/shared.d.ts +24 -1
- package/dist/lib/model-catalog/shared.d.ts.map +1 -1
- package/dist/lib/model-catalog/shared.js +50 -4
- package/dist/lib/model-catalog/shared.js.map +1 -1
- package/dist/lib/model-catalog.d.ts +1 -1
- package/dist/lib/model-catalog.d.ts.map +1 -1
- package/dist/lib/model-catalog.js +1 -1
- package/dist/lib/model-catalog.js.map +1 -1
- package/dist/lib/plugin-lifecycle.d.ts +9 -0
- package/dist/lib/plugin-lifecycle.d.ts.map +1 -0
- package/dist/lib/plugin-lifecycle.js +28 -0
- package/dist/lib/plugin-lifecycle.js.map +1 -0
- package/dist/lib/request-snapshots.d.ts.map +1 -1
- package/dist/lib/request-snapshots.js +3 -0
- package/dist/lib/request-snapshots.js.map +1 -1
- package/dist/lib/shareable-debug.d.ts +4 -0
- package/dist/lib/shareable-debug.d.ts.map +1 -1
- package/dist/lib/shareable-debug.js +6 -3
- package/dist/lib/shareable-debug.js.map +1 -1
- package/package.json +5 -3
- package/schemas/codex-config.schema.json +23 -6
- package/dist/lib/codex-native/collaboration.d.ts +0 -26
- package/dist/lib/codex-native/collaboration.d.ts.map +0 -1
- package/dist/lib/codex-native/collaboration.js +0 -211
- package/dist/lib/codex-native/collaboration.js.map +0 -1
- package/dist/lib/codex-prompts-cache.d.ts +0 -17
- package/dist/lib/codex-prompts-cache.d.ts.map +0 -1
- package/dist/lib/codex-prompts-cache.js +0 -186
- package/dist/lib/codex-prompts-cache.js.map +0 -1
- package/dist/lib/orchestrator-agent.d.ts +0 -31
- package/dist/lib/orchestrator-agent.d.ts.map +0 -1
- package/dist/lib/orchestrator-agent.js +0 -271
- package/dist/lib/orchestrator-agent.js.map +0 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
const ULTRA_REASONING_EFFORT = "ultra";
|
|
2
|
+
const ULTRA_WIRE_REASONING_EFFORT = "max";
|
|
3
|
+
const ULTRA_MULTI_AGENT_VERSION = "v2";
|
|
4
|
+
const ULTRA_ELIGIBILITY_REASONS = new Set([
|
|
5
|
+
"eligible",
|
|
6
|
+
"missing_catalog",
|
|
7
|
+
"missing_ultra_effort",
|
|
8
|
+
"missing_multi_agent_v2",
|
|
9
|
+
"not_supported_in_api",
|
|
10
|
+
"not_visible"
|
|
11
|
+
]);
|
|
12
|
+
export const ULTRA_PROACTIVE_INSTRUCTIONS = `<multi_agent_mode>
|
|
13
|
+
Proactive multi-agent delegation is active for this root turn. Any earlier instruction requiring an explicit user request before spawning sub-agents no longer applies. Use sub-agents when parallel work would materially improve speed or quality. This mode remains active until a later multi-agent mode developer message changes it.
|
|
14
|
+
|
|
15
|
+
Delegate only independent sidecar work; keep immediate blockers local. Avoid duplicate assignments and avoid doing a delegated task yourself while it is in flight. Give each child a clear objective, ownership boundary, write scope, and enough context to know it is part of a larger effort. Respect the tools and permissions available in the host. Coordinate active children, wait for required results, verify their work, and synthesize it before the final response. If delegation is unavailable or fails, continue locally and report only work that actually completed.
|
|
16
|
+
</multi_agent_mode>`;
|
|
17
|
+
export const ULTRA_EXPLICIT_ONLY_INSTRUCTIONS = `<multi_agent_mode>
|
|
18
|
+
Explicit-request-only multi-agent delegation is active for this child turn. Do not spawn sub-agents unless the user, AGENTS.md, or an installed skill explicitly requests it. Focus on the assigned scope, do not duplicate the parent or sibling work, and return a concise result that the parent can verify and synthesize. If explicitly requested delegation is unavailable or fails, continue locally and report only work that actually completed.
|
|
19
|
+
</multi_agent_mode>`;
|
|
20
|
+
function normalize(value) {
|
|
21
|
+
if (typeof value !== "string")
|
|
22
|
+
return undefined;
|
|
23
|
+
const trimmed = value.trim().toLowerCase();
|
|
24
|
+
return trimmed || undefined;
|
|
25
|
+
}
|
|
26
|
+
function supportsEffort(model, effort) {
|
|
27
|
+
return (model.supported_reasoning_levels ?? []).some((level) => normalize(level.effort) === effort);
|
|
28
|
+
}
|
|
29
|
+
function modelIsVisible(model) {
|
|
30
|
+
const visibility = normalize(model.visibility);
|
|
31
|
+
return visibility === "list";
|
|
32
|
+
}
|
|
33
|
+
function getUltraEligibilityReason(model) {
|
|
34
|
+
if (!model)
|
|
35
|
+
return "missing_catalog";
|
|
36
|
+
if (model.catalog_source === "github_fallback")
|
|
37
|
+
return "missing_catalog";
|
|
38
|
+
if (!supportsEffort(model, ULTRA_REASONING_EFFORT))
|
|
39
|
+
return "missing_ultra_effort";
|
|
40
|
+
if (normalize(model.multi_agent_version) !== ULTRA_MULTI_AGENT_VERSION)
|
|
41
|
+
return "missing_multi_agent_v2";
|
|
42
|
+
if (model.supported_in_api !== true)
|
|
43
|
+
return "not_supported_in_api";
|
|
44
|
+
if (!modelIsVisible(model))
|
|
45
|
+
return "not_visible";
|
|
46
|
+
return "eligible";
|
|
47
|
+
}
|
|
48
|
+
export function isUltraEligible(model) {
|
|
49
|
+
return getUltraEligibilityReason(model) === "eligible";
|
|
50
|
+
}
|
|
51
|
+
export function resolveUltraSelection(input) {
|
|
52
|
+
const logicalEffort = normalize(input.reasoningEffort);
|
|
53
|
+
const selected = logicalEffort === ULTRA_REASONING_EFFORT;
|
|
54
|
+
const reason = selected ? getUltraEligibilityReason(input.model) : "missing_catalog";
|
|
55
|
+
const eligible = selected && reason === "eligible";
|
|
56
|
+
const agentExecution = input.agentExecution ??
|
|
57
|
+
(input.childTask
|
|
58
|
+
? { role: "child", reason: "conservative_fallback" }
|
|
59
|
+
: { role: "root", reason: "conservative_fallback" });
|
|
60
|
+
const delegationPolicy = agentExecution.role === "auxiliary"
|
|
61
|
+
? "disabled"
|
|
62
|
+
: eligible && agentExecution.role === "root"
|
|
63
|
+
? "proactive"
|
|
64
|
+
: "explicit_request_only";
|
|
65
|
+
return {
|
|
66
|
+
selected,
|
|
67
|
+
logicalEffort,
|
|
68
|
+
wireEffort: selected ? ULTRA_WIRE_REASONING_EFFORT : logicalEffort,
|
|
69
|
+
eligible,
|
|
70
|
+
delegationPolicy,
|
|
71
|
+
agentRole: agentExecution.role,
|
|
72
|
+
agentReason: agentExecution.reason,
|
|
73
|
+
...(agentExecution.agentName ? { agentName: agentExecution.agentName } : {}),
|
|
74
|
+
reason,
|
|
75
|
+
...(input.model?.slug ? { modelSlug: input.model.slug } : {}),
|
|
76
|
+
...(input.model?.multi_agent_version ? { multiAgentVersion: input.model.multi_agent_version } : {})
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function normalizeUltraWireEffort(value) {
|
|
80
|
+
const normalized = normalize(value);
|
|
81
|
+
if (!normalized)
|
|
82
|
+
return { value: undefined, changed: false };
|
|
83
|
+
if (normalized !== ULTRA_REASONING_EFFORT)
|
|
84
|
+
return { value: value, changed: false };
|
|
85
|
+
return { value: ULTRA_WIRE_REASONING_EFFORT, changed: true };
|
|
86
|
+
}
|
|
87
|
+
function isDelegationPolicy(value) {
|
|
88
|
+
return value === "proactive" || value === "explicit_request_only" || value === "disabled";
|
|
89
|
+
}
|
|
90
|
+
function isAgentRole(value) {
|
|
91
|
+
return value === "root" || value === "child" || value === "auxiliary";
|
|
92
|
+
}
|
|
93
|
+
const AGENT_EXECUTION_REASONS = new Set([
|
|
94
|
+
"session_parent",
|
|
95
|
+
"session_root",
|
|
96
|
+
"configured_primary",
|
|
97
|
+
"configured_subagent",
|
|
98
|
+
"builtin_primary",
|
|
99
|
+
"builtin_subagent",
|
|
100
|
+
"builtin_auxiliary",
|
|
101
|
+
"conservative_fallback"
|
|
102
|
+
]);
|
|
103
|
+
function isAgentReason(value) {
|
|
104
|
+
return typeof value === "string" && AGENT_EXECUTION_REASONS.has(value);
|
|
105
|
+
}
|
|
106
|
+
function isEligibilityReason(value) {
|
|
107
|
+
return typeof value === "string" && ULTRA_ELIGIBILITY_REASONS.has(value);
|
|
108
|
+
}
|
|
109
|
+
function optionalStateString(value) {
|
|
110
|
+
if (typeof value !== "string")
|
|
111
|
+
return undefined;
|
|
112
|
+
return value.trim() || undefined;
|
|
113
|
+
}
|
|
114
|
+
export function parseUltraState(value) {
|
|
115
|
+
if (!value?.trim())
|
|
116
|
+
return undefined;
|
|
117
|
+
try {
|
|
118
|
+
const parsed = JSON.parse(value);
|
|
119
|
+
if (parsed.selected !== true || parsed.logicalEffort !== ULTRA_REASONING_EFFORT)
|
|
120
|
+
return undefined;
|
|
121
|
+
if (parsed.wireEffort !== ULTRA_WIRE_REASONING_EFFORT)
|
|
122
|
+
return undefined;
|
|
123
|
+
if (typeof parsed.eligible !== "boolean")
|
|
124
|
+
return undefined;
|
|
125
|
+
if (!isDelegationPolicy(parsed.delegationPolicy))
|
|
126
|
+
return undefined;
|
|
127
|
+
if (!isAgentRole(parsed.agentRole) || !isAgentReason(parsed.agentReason))
|
|
128
|
+
return undefined;
|
|
129
|
+
if (!isEligibilityReason(parsed.reason))
|
|
130
|
+
return undefined;
|
|
131
|
+
if (parsed.eligible !== (parsed.reason === "eligible"))
|
|
132
|
+
return undefined;
|
|
133
|
+
if (parsed.delegationPolicy === "proactive" && !parsed.eligible)
|
|
134
|
+
return undefined;
|
|
135
|
+
if (parsed.delegationPolicy === "proactive" && parsed.agentRole !== "root")
|
|
136
|
+
return undefined;
|
|
137
|
+
if (parsed.delegationPolicy === "disabled" && parsed.agentRole !== "auxiliary")
|
|
138
|
+
return undefined;
|
|
139
|
+
if (parsed.agentRole === "auxiliary" && parsed.delegationPolicy !== "disabled")
|
|
140
|
+
return undefined;
|
|
141
|
+
const result = {
|
|
142
|
+
selected: true,
|
|
143
|
+
logicalEffort: ULTRA_REASONING_EFFORT,
|
|
144
|
+
wireEffort: ULTRA_WIRE_REASONING_EFFORT,
|
|
145
|
+
eligible: parsed.eligible,
|
|
146
|
+
delegationPolicy: parsed.delegationPolicy,
|
|
147
|
+
agentRole: parsed.agentRole,
|
|
148
|
+
agentReason: parsed.agentReason,
|
|
149
|
+
reason: parsed.reason
|
|
150
|
+
};
|
|
151
|
+
const modelSlug = optionalStateString(parsed.modelSlug);
|
|
152
|
+
const multiAgentVersion = optionalStateString(parsed.multiAgentVersion);
|
|
153
|
+
const agentName = optionalStateString(parsed.agentName);
|
|
154
|
+
if (modelSlug)
|
|
155
|
+
result.modelSlug = modelSlug;
|
|
156
|
+
if (multiAgentVersion)
|
|
157
|
+
result.multiAgentVersion = multiAgentVersion;
|
|
158
|
+
if (agentName)
|
|
159
|
+
result.agentName = agentName;
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
export function retainUltraState(current, encoded) {
|
|
167
|
+
return parseUltraState(encoded) ?? current;
|
|
168
|
+
}
|
|
169
|
+
export function stripUltraDelegationInstructions(payload) {
|
|
170
|
+
if (typeof payload.instructions !== "string")
|
|
171
|
+
return false;
|
|
172
|
+
const current = payload.instructions;
|
|
173
|
+
let next = current;
|
|
174
|
+
let overlayRemoved = false;
|
|
175
|
+
for (const overlay of [ULTRA_PROACTIVE_INSTRUCTIONS, ULTRA_EXPLICIT_ONLY_INSTRUCTIONS]) {
|
|
176
|
+
if (!next.includes(overlay))
|
|
177
|
+
continue;
|
|
178
|
+
next = next.replaceAll(overlay, "");
|
|
179
|
+
overlayRemoved = true;
|
|
180
|
+
}
|
|
181
|
+
if (!overlayRemoved)
|
|
182
|
+
return false;
|
|
183
|
+
next = next.replace(/\n{3,}/g, "\n\n").trim();
|
|
184
|
+
if (next) {
|
|
185
|
+
payload.instructions = next;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
delete payload.instructions;
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=ultra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultra.js","sourceRoot":"","sources":["../../../lib/codex-native/ultra.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,11 @@ export type CodexAuthPluginOptions = {
|
|
|
30
30
|
personality?: PersonalityOption;
|
|
31
31
|
behaviorSettings?: BehaviorSettings;
|
|
32
32
|
customModels?: Record<string, CustomModelConfig>;
|
|
33
|
+
modelAliases?: {
|
|
34
|
+
fast?: boolean;
|
|
35
|
+
extendedContext?: boolean;
|
|
36
|
+
pro?: boolean;
|
|
37
|
+
};
|
|
33
38
|
mode?: PluginRuntimeMode;
|
|
34
39
|
quietMode?: boolean;
|
|
35
40
|
pidOffsetEnabled?: boolean;
|
|
@@ -43,8 +48,7 @@ export type CodexAuthPluginOptions = {
|
|
|
43
48
|
headerSnapshots?: boolean;
|
|
44
49
|
headerSnapshotBodies?: boolean;
|
|
45
50
|
headerTransformDebug?: boolean;
|
|
46
|
-
|
|
47
|
-
orchestratorSubagentsEnabled?: boolean;
|
|
51
|
+
ultraEnabled?: boolean;
|
|
48
52
|
};
|
|
49
53
|
export declare function CodexAuthPlugin(input: PluginInput, opts?: CodexAuthPluginOptions): Promise<Hooks>;
|
|
50
54
|
//# sourceMappingURL=codex-native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-native.d.ts","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"codex-native.d.ts","sourceRoot":"","sources":["../../lib/codex-native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAI7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,aAAa,CAAA;AAWpB,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EAErB,8BAA8B,EAE9B,YAAY,EAYb,MAAM,+BAA+B,CAAA;AAkBtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAuBhH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAatB,CAAA;AAeD,iBAAS,mBAAmB,IAAI,OAAO,CAEtC;AAMD,iBAAS,eAAe,IAAI,IAAI,CAE/B;AAaD,iBAAS,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,cAAc,CAE1E;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAChD,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC3E,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AA6LD,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,CAoa3G"}
|
package/dist/lib/codex-native.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
import { loadAuthStorage, setAccountCooldown } from "./storage.js";
|
|
3
3
|
import { formatToastMessage } from "./toast.js";
|
|
4
|
-
import { applyCodexCatalogToProviderModels, getCodexModelCatalog } from "./model-catalog.js";
|
|
4
|
+
import { applyCodexCatalogToProviderModels, applyGeneratedAliasesToProviderModels, getCodexModelCatalog } from "./model-catalog.js";
|
|
5
5
|
import { createRequestSnapshots } from "./request-snapshots.js";
|
|
6
6
|
import { resolveCodexOriginator } from "./codex-native/originator.js";
|
|
7
7
|
import { tryOpenUrlInBrowser as openUrlInBrowser } from "./codex-native/browser.js";
|
|
@@ -17,14 +17,15 @@ import { createSessionAffinityRuntimeState } from "./codex-native/session-affini
|
|
|
17
17
|
import { initializeCatalogSync, selectCatalogAuthCandidate } from "./codex-native/catalog-sync.js";
|
|
18
18
|
import { createOpenAIFetchHandler } from "./codex-native/openai-loader-fetch.js";
|
|
19
19
|
import { createShareableDebugLogger } from "./shareable-debug.js";
|
|
20
|
+
import { isUltraEligible } from "./codex-native/ultra.js";
|
|
21
|
+
import { createAgentExecutionResolver, deletedSessionIDFromEvent } from "./codex-native/agent-execution.js";
|
|
20
22
|
export { browserOpenInvocationFor } from "./codex-native/browser.js";
|
|
21
23
|
export { upsertAccount } from "./codex-native/accounts.js";
|
|
22
24
|
export { extractAccountId, extractAccountIdFromClaims, refreshAccessToken } from "./codex-native/oauth-utils.js";
|
|
23
|
-
const INTERNAL_COLLABORATION_MODE_HEADER = "x-opencode-collaboration-mode-kind";
|
|
24
|
-
const INTERNAL_COLLABORATION_AGENT_HEADER = "x-opencode-collaboration-agent-kind";
|
|
25
25
|
const INTERNAL_CATALOG_SCOPE_HEADER = "x-opencode-catalog-scope-key";
|
|
26
26
|
const INTERNAL_CATALOG_DEFAULTS_HEADER = "x-opencode-catalog-default-fields";
|
|
27
27
|
const INTERNAL_SELECTED_MODEL_HEADER = "x-opencode-selected-model-slug";
|
|
28
|
+
const INTERNAL_ULTRA_STATE_HEADER = "x-opencode-ultra-state";
|
|
28
29
|
const SESSION_AFFINITY_MISSING_GRACE_MS = 15 * 60 * 1000;
|
|
29
30
|
const REASONING_VARIANT_KEYS = ["none", "minimal", "low", "medium", "high", "xhigh", "max", "ultra"];
|
|
30
31
|
const CODEX_RS_COMPACT_PROMPT = `You are performing a CONTEXT CHECKPOINT COMPACTION. Create a handoff summary for another LLM that will resume the task.
|
|
@@ -104,13 +105,13 @@ function getSupportedReasoningEfforts(model) {
|
|
|
104
105
|
.flatMap((level) => (typeof level.effort === "string" ? [level.effort] : []))
|
|
105
106
|
.filter((effort) => effort.length > 0)));
|
|
106
107
|
}
|
|
107
|
-
function buildVariantConfigOverrides(model) {
|
|
108
|
+
function buildVariantConfigOverrides(model, ultraEnabled) {
|
|
108
109
|
const supportedEfforts = getSupportedReasoningEfforts(model);
|
|
109
110
|
if (supportedEfforts.length === 0)
|
|
110
111
|
return undefined;
|
|
111
112
|
const variants = new Set([...REASONING_VARIANT_KEYS, ...supportedEfforts]);
|
|
112
113
|
return Object.fromEntries(Array.from(variants).map((variant) => {
|
|
113
|
-
if (!supportedEfforts.includes(variant)) {
|
|
114
|
+
if (!supportedEfforts.includes(variant) || (variant === "ultra" && (!ultraEnabled || !isUltraEligible(model)))) {
|
|
114
115
|
return [variant, { disabled: true }];
|
|
115
116
|
}
|
|
116
117
|
return [
|
|
@@ -123,7 +124,7 @@ function buildVariantConfigOverrides(model) {
|
|
|
123
124
|
];
|
|
124
125
|
}));
|
|
125
126
|
}
|
|
126
|
-
function applyCatalogVariantOverridesToConfig(config, catalogModels) {
|
|
127
|
+
function applyCatalogVariantOverridesToConfig(config, catalogModels, ultraEnabled) {
|
|
127
128
|
if (!catalogModels || catalogModels.length === 0)
|
|
128
129
|
return;
|
|
129
130
|
const nextConfig = config;
|
|
@@ -131,7 +132,7 @@ function applyCatalogVariantOverridesToConfig(config, catalogModels) {
|
|
|
131
132
|
const openai = (provider.openai ??= {});
|
|
132
133
|
const models = (openai.models ??= {});
|
|
133
134
|
for (const catalogModel of catalogModels) {
|
|
134
|
-
const overrides = buildVariantConfigOverrides(catalogModel);
|
|
135
|
+
const overrides = buildVariantConfigOverrides(catalogModel, ultraEnabled);
|
|
135
136
|
if (!overrides)
|
|
136
137
|
continue;
|
|
137
138
|
const modelEntry = (models[catalogModel.slug] ??= {});
|
|
@@ -141,6 +142,37 @@ function applyCatalogVariantOverridesToConfig(config, catalogModels) {
|
|
|
141
142
|
};
|
|
142
143
|
}
|
|
143
144
|
}
|
|
145
|
+
function hideUltraVariantsInConfig(config) {
|
|
146
|
+
const models = config.provider?.openai?.models;
|
|
147
|
+
if (!models)
|
|
148
|
+
return;
|
|
149
|
+
for (const model of Object.values(models)) {
|
|
150
|
+
if (!model.variants || !("ultra" in model.variants))
|
|
151
|
+
continue;
|
|
152
|
+
model.variants.ultra = { disabled: true };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function hideUltraVariantsInProviderModels(providerModels) {
|
|
156
|
+
for (const model of Object.values(providerModels)) {
|
|
157
|
+
if (!model.variants || typeof model.variants !== "object" || Array.isArray(model.variants))
|
|
158
|
+
continue;
|
|
159
|
+
const variants = model.variants;
|
|
160
|
+
delete variants.ultra;
|
|
161
|
+
if (Object.keys(variants).length === 0)
|
|
162
|
+
delete model.variants;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function applyGeneratedModelAliasesToConfig(config, catalogModels, settings) {
|
|
166
|
+
const nextConfig = config;
|
|
167
|
+
const provider = (nextConfig.provider ??= {});
|
|
168
|
+
const openai = (provider.openai ??= {});
|
|
169
|
+
const models = (openai.models ??= {});
|
|
170
|
+
applyGeneratedAliasesToProviderModels({
|
|
171
|
+
providerModels: models,
|
|
172
|
+
catalogModels,
|
|
173
|
+
settings
|
|
174
|
+
});
|
|
175
|
+
}
|
|
144
176
|
function applyCustomModelsToConfig(config, customModels, warn) {
|
|
145
177
|
if (!customModels || Object.keys(customModels).length === 0)
|
|
146
178
|
return;
|
|
@@ -201,10 +233,7 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
201
233
|
const authMode = modeForRuntimeMode(runtimeMode);
|
|
202
234
|
const remapDeveloperMessagesToUserEnabled = runtimeMode === "codex" && opts.remapDeveloperMessagesToUser !== false;
|
|
203
235
|
const codexCompactionOverrideEnabled = opts.codexCompactionOverride !== undefined ? opts.codexCompactionOverride : runtimeMode === "codex";
|
|
204
|
-
const
|
|
205
|
-
const orchestratorSubagentsEnabled = typeof opts.orchestratorSubagentsEnabled === "boolean"
|
|
206
|
-
? opts.orchestratorSubagentsEnabled
|
|
207
|
-
: collaborationProfileEnabled;
|
|
236
|
+
const ultraEnabled = opts.ultraEnabled === true;
|
|
208
237
|
void refreshCodexClientVersionFromGitHub(opts.log).catch((error) => {
|
|
209
238
|
if (error instanceof Error) {
|
|
210
239
|
// best-effort background refresh
|
|
@@ -239,10 +268,36 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
239
268
|
});
|
|
240
269
|
const catalogModelsByScope = new Map();
|
|
241
270
|
const catalogRequestMetadataBySession = new Map();
|
|
271
|
+
const requestMessageID = (hookInput) => {
|
|
272
|
+
if (!hookInput.message || typeof hookInput.message !== "object")
|
|
273
|
+
return undefined;
|
|
274
|
+
const id = hookInput.message.id;
|
|
275
|
+
return typeof id === "string" && id.trim() ? id.trim() : undefined;
|
|
276
|
+
};
|
|
277
|
+
const deleteCatalogRequestMetadata = (sessionID, messageID) => {
|
|
278
|
+
const metadata = catalogRequestMetadataBySession.get(sessionID);
|
|
279
|
+
if (!metadata)
|
|
280
|
+
return;
|
|
281
|
+
if (messageID) {
|
|
282
|
+
metadata.byMessageID.delete(messageID);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
metadata.unkeyed.length = 0;
|
|
286
|
+
}
|
|
287
|
+
if (metadata.byMessageID.size === 0 && metadata.unkeyed.length === 0) {
|
|
288
|
+
catalogRequestMetadataBySession.delete(sessionID);
|
|
289
|
+
}
|
|
290
|
+
};
|
|
242
291
|
let activeCatalogScopeKey;
|
|
243
292
|
let activeCatalogModels;
|
|
244
293
|
let providerModelsForCatalogSync;
|
|
294
|
+
const agentExecutionResolver = createAgentExecutionResolver({ client: input.client });
|
|
245
295
|
const quotaFetchCooldownByIdentity = new Map();
|
|
296
|
+
const aliasSettingsFor = (authType) => ({
|
|
297
|
+
fast: opts.modelAliases?.fast !== false,
|
|
298
|
+
extendedContext: opts.modelAliases?.extendedContext !== false,
|
|
299
|
+
pro: opts.modelAliases?.pro ?? authType === "api"
|
|
300
|
+
});
|
|
246
301
|
const activateCatalogScope = (scopeKey) => {
|
|
247
302
|
const normalizedScopeKey = scopeKey?.trim() || undefined;
|
|
248
303
|
activeCatalogScopeKey = normalizedScopeKey;
|
|
@@ -255,7 +310,9 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
255
310
|
personality: opts.personality,
|
|
256
311
|
projectRoot: typeof input.worktree === "string" && input.worktree.trim() ? input.worktree : process.cwd(),
|
|
257
312
|
customModels: opts.customModels,
|
|
258
|
-
warn: (message) => console.warn(message)
|
|
313
|
+
warn: (message) => console.warn(message),
|
|
314
|
+
aliasSettings: aliasSettingsFor("oauth"),
|
|
315
|
+
ultraEnabled
|
|
259
316
|
});
|
|
260
317
|
};
|
|
261
318
|
const setCatalogModels = (scopeKey, models) => {
|
|
@@ -279,7 +336,9 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
279
336
|
personality: opts.personality,
|
|
280
337
|
projectRoot: typeof input.worktree === "string" && input.worktree.trim() ? input.worktree : process.cwd(),
|
|
281
338
|
customModels: opts.customModels,
|
|
282
|
-
warn: (message) => console.warn(message)
|
|
339
|
+
warn: (message) => console.warn(message),
|
|
340
|
+
aliasSettings: aliasSettingsFor("oauth"),
|
|
341
|
+
ultraEnabled
|
|
283
342
|
});
|
|
284
343
|
};
|
|
285
344
|
const getCatalogModels = (scopeKey) => {
|
|
@@ -322,7 +381,17 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
322
381
|
await persistOAuthTokensForMode(tokens, authMode);
|
|
323
382
|
};
|
|
324
383
|
return {
|
|
384
|
+
event: async ({ event }) => {
|
|
385
|
+
const sessionID = deletedSessionIDFromEvent(event);
|
|
386
|
+
if (!sessionID)
|
|
387
|
+
return;
|
|
388
|
+
agentExecutionResolver.deleteSession(sessionID);
|
|
389
|
+
catalogRequestMetadataBySession.delete(sessionID);
|
|
390
|
+
},
|
|
325
391
|
async config(config) {
|
|
392
|
+
agentExecutionResolver.updateConfig(config);
|
|
393
|
+
if (!ultraEnabled)
|
|
394
|
+
hideUltraVariantsInConfig(config);
|
|
326
395
|
try {
|
|
327
396
|
const catalogAuth = await selectCatalogAuthCandidate(authMode, opts.pidOffsetEnabled === true, opts.rotationStrategy);
|
|
328
397
|
const catalogModels = await getCodexModelCatalog({
|
|
@@ -331,8 +400,11 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
331
400
|
...resolveCatalogHeaders(),
|
|
332
401
|
onEvent: (event) => opts.log?.debug("codex model catalog", event)
|
|
333
402
|
});
|
|
334
|
-
applyCatalogVariantOverridesToConfig(config, catalogModels);
|
|
403
|
+
applyCatalogVariantOverridesToConfig(config, catalogModels, ultraEnabled);
|
|
335
404
|
applyCustomModelsToConfig(config, opts.customModels, (message) => console.warn(message));
|
|
405
|
+
applyGeneratedModelAliasesToConfig(config, catalogModels, aliasSettingsFor("oauth"));
|
|
406
|
+
if (!ultraEnabled)
|
|
407
|
+
hideUltraVariantsInConfig(config);
|
|
336
408
|
}
|
|
337
409
|
catch (error) {
|
|
338
410
|
if (error instanceof Error) {
|
|
@@ -344,6 +416,9 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
344
416
|
provider: "openai",
|
|
345
417
|
async loader(getAuth, provider) {
|
|
346
418
|
const auth = await getAuth();
|
|
419
|
+
const providerModels = provider.models;
|
|
420
|
+
if (!ultraEnabled)
|
|
421
|
+
hideUltraVariantsInProviderModels(providerModels);
|
|
347
422
|
let hasOAuth = auth.type === "oauth";
|
|
348
423
|
if (!hasOAuth) {
|
|
349
424
|
try {
|
|
@@ -357,15 +432,21 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
357
432
|
hasOAuth = false;
|
|
358
433
|
}
|
|
359
434
|
}
|
|
360
|
-
if (!hasOAuth)
|
|
435
|
+
if (!hasOAuth) {
|
|
436
|
+
if (auth.type === "api") {
|
|
437
|
+
applyGeneratedAliasesToProviderModels({
|
|
438
|
+
providerModels,
|
|
439
|
+
settings: aliasSettingsFor("api")
|
|
440
|
+
});
|
|
441
|
+
}
|
|
361
442
|
return {};
|
|
443
|
+
}
|
|
362
444
|
const { orchestratorState, stickySessionState, hybridSessionState, persistSessionAffinityState } = await createSessionAffinityRuntimeState({
|
|
363
445
|
authMode,
|
|
364
446
|
env: process.env,
|
|
365
447
|
missingGraceMs: SESSION_AFFINITY_MISSING_GRACE_MS,
|
|
366
448
|
log: opts.log
|
|
367
449
|
});
|
|
368
|
-
const providerModels = provider.models;
|
|
369
450
|
providerModelsForCatalogSync = providerModels;
|
|
370
451
|
const syncCatalogFromAuth = await initializeCatalogSync({
|
|
371
452
|
authMode,
|
|
@@ -394,8 +475,7 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
394
475
|
shareableDebug,
|
|
395
476
|
internalCatalogScopeHeader: INTERNAL_CATALOG_SCOPE_HEADER,
|
|
396
477
|
internalSelectedModelHeader: INTERNAL_SELECTED_MODEL_HEADER,
|
|
397
|
-
|
|
398
|
-
internalCollaborationAgentHeader: INTERNAL_COLLABORATION_AGENT_HEADER,
|
|
478
|
+
ultraEnabled,
|
|
399
479
|
requestSnapshots,
|
|
400
480
|
sessionAffinityState: {
|
|
401
481
|
orchestratorState,
|
|
@@ -461,29 +541,51 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
461
541
|
fallbackPersonality: opts.personality,
|
|
462
542
|
projectRoot: typeof input.worktree === "string" && input.worktree.trim() ? input.worktree : process.cwd(),
|
|
463
543
|
spoofMode,
|
|
464
|
-
|
|
465
|
-
|
|
544
|
+
ultraEnabled,
|
|
545
|
+
resolveAgentExecution: () => agentExecutionResolver.resolve({
|
|
546
|
+
sessionID: typeof hookInput.sessionID === "string" ? hookInput.sessionID : undefined,
|
|
547
|
+
agentName: hookInput.agent
|
|
548
|
+
})
|
|
466
549
|
});
|
|
467
550
|
const sessionID = typeof hookInput.sessionID === "string" ? hookInput.sessionID : "";
|
|
468
551
|
if (!sessionID)
|
|
469
552
|
return;
|
|
553
|
+
const messageID = requestMessageID(hookInput);
|
|
470
554
|
if (hookInput.model.providerID !== "openai") {
|
|
471
|
-
|
|
555
|
+
deleteCatalogRequestMetadata(sessionID, messageID);
|
|
472
556
|
return;
|
|
473
557
|
}
|
|
474
|
-
const
|
|
475
|
-
|
|
558
|
+
const metadata = catalogRequestMetadataBySession.get(sessionID) ?? {
|
|
559
|
+
byMessageID: new Map(),
|
|
560
|
+
unkeyed: []
|
|
561
|
+
};
|
|
562
|
+
const requestMetadata = {
|
|
476
563
|
catalogScopeKey: requestCatalogScopeKey,
|
|
477
|
-
injectedCatalogDefaultFields: paramsResult.injectedCatalogDefaultFields
|
|
478
|
-
|
|
479
|
-
|
|
564
|
+
injectedCatalogDefaultFields: paramsResult.injectedCatalogDefaultFields,
|
|
565
|
+
ultra: paramsResult.ultra
|
|
566
|
+
};
|
|
567
|
+
if (messageID) {
|
|
568
|
+
const pendingForMessage = metadata.byMessageID.get(messageID) ?? [];
|
|
569
|
+
pendingForMessage.push(requestMetadata);
|
|
570
|
+
metadata.byMessageID.set(messageID, pendingForMessage);
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
metadata.unkeyed.push(requestMetadata);
|
|
574
|
+
}
|
|
575
|
+
catalogRequestMetadataBySession.set(sessionID, metadata);
|
|
480
576
|
},
|
|
481
577
|
"chat.headers": async (hookInput, output) => {
|
|
482
|
-
const
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
578
|
+
const metadata = catalogRequestMetadataBySession.get(hookInput.sessionID);
|
|
579
|
+
const messageID = requestMessageID(hookInput);
|
|
580
|
+
const keyedMetadata = messageID ? metadata?.byMessageID.get(messageID) : undefined;
|
|
581
|
+
const queuedMetadata = messageID
|
|
582
|
+
? keyedMetadata?.length === 1
|
|
583
|
+
? keyedMetadata[0]
|
|
584
|
+
: undefined
|
|
585
|
+
: metadata?.unkeyed.length === 1
|
|
586
|
+
? metadata.unkeyed[0]
|
|
587
|
+
: undefined;
|
|
588
|
+
deleteCatalogRequestMetadata(hookInput.sessionID, messageID);
|
|
487
589
|
const requestCatalogScopeKey = queuedMetadata?.catalogScopeKey ?? activeCatalogScopeKey;
|
|
488
590
|
await handleChatHeadersHook({
|
|
489
591
|
hookInput,
|
|
@@ -491,13 +593,11 @@ export async function CodexAuthPlugin(input, opts = {}) {
|
|
|
491
593
|
spoofMode,
|
|
492
594
|
requestCatalogScopeKey,
|
|
493
595
|
injectedCatalogDefaultFields: queuedMetadata?.injectedCatalogDefaultFields,
|
|
596
|
+
ultra: queuedMetadata?.ultra,
|
|
597
|
+
internalUltraStateHeader: INTERNAL_ULTRA_STATE_HEADER,
|
|
494
598
|
internalCatalogScopeHeader: INTERNAL_CATALOG_SCOPE_HEADER,
|
|
495
599
|
internalCatalogDefaultsHeader: INTERNAL_CATALOG_DEFAULTS_HEADER,
|
|
496
|
-
internalSelectedModelHeader: INTERNAL_SELECTED_MODEL_HEADER
|
|
497
|
-
internalCollaborationModeHeader: INTERNAL_COLLABORATION_MODE_HEADER,
|
|
498
|
-
internalCollaborationAgentHeader: INTERNAL_COLLABORATION_AGENT_HEADER,
|
|
499
|
-
collaborationProfileEnabled,
|
|
500
|
-
orchestratorSubagentsEnabled
|
|
600
|
+
internalSelectedModelHeader: INTERNAL_SELECTED_MODEL_HEADER
|
|
501
601
|
});
|
|
502
602
|
},
|
|
503
603
|
"experimental.session.compacting": async (hookInput, output) => {
|