@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.
Files changed (107) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +47 -36
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/codex-cache-layout.d.ts +0 -4
  5. package/dist/lib/codex-cache-layout.d.ts.map +1 -1
  6. package/dist/lib/codex-cache-layout.js +0 -8
  7. package/dist/lib/codex-cache-layout.js.map +1 -1
  8. package/dist/lib/codex-native/agent-execution.d.ts +44 -0
  9. package/dist/lib/codex-native/agent-execution.d.ts.map +1 -0
  10. package/dist/lib/codex-native/agent-execution.js +126 -0
  11. package/dist/lib/codex-native/agent-execution.js.map +1 -0
  12. package/dist/lib/codex-native/chat-hooks.d.ts +8 -6
  13. package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -1
  14. package/dist/lib/codex-native/chat-hooks.js +59 -43
  15. package/dist/lib/codex-native/chat-hooks.js.map +1 -1
  16. package/dist/lib/codex-native/client-identity.js +1 -1
  17. package/dist/lib/codex-native/instruction-utils.d.ts +5 -0
  18. package/dist/lib/codex-native/instruction-utils.d.ts.map +1 -0
  19. package/dist/lib/codex-native/instruction-utils.js +58 -0
  20. package/dist/lib/codex-native/instruction-utils.js.map +1 -0
  21. package/dist/lib/codex-native/openai-loader-fetch.d.ts +1 -2
  22. package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -1
  23. package/dist/lib/codex-native/openai-loader-fetch.js +25 -27
  24. package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -1
  25. package/dist/lib/codex-native/request-transform-model-service-tier.d.ts.map +1 -1
  26. package/dist/lib/codex-native/request-transform-model-service-tier.js +23 -5
  27. package/dist/lib/codex-native/request-transform-model-service-tier.js.map +1 -1
  28. package/dist/lib/codex-native/request-transform-model.d.ts +7 -2
  29. package/dist/lib/codex-native/request-transform-model.d.ts.map +1 -1
  30. package/dist/lib/codex-native/request-transform-model.js +14 -0
  31. package/dist/lib/codex-native/request-transform-model.js.map +1 -1
  32. package/dist/lib/codex-native/request-transform-payload.d.ts +5 -0
  33. package/dist/lib/codex-native/request-transform-payload.d.ts.map +1 -1
  34. package/dist/lib/codex-native/request-transform-payload.js +71 -3
  35. package/dist/lib/codex-native/request-transform-payload.js.map +1 -1
  36. package/dist/lib/codex-native/ultra.d.ts +34 -0
  37. package/dist/lib/codex-native/ultra.d.ts.map +1 -0
  38. package/dist/lib/codex-native/ultra.js +192 -0
  39. package/dist/lib/codex-native/ultra.js.map +1 -0
  40. package/dist/lib/codex-native.d.ts +6 -2
  41. package/dist/lib/codex-native.d.ts.map +1 -1
  42. package/dist/lib/codex-native.js +136 -36
  43. package/dist/lib/codex-native.js.map +1 -1
  44. package/dist/lib/config/file.d.ts.map +1 -1
  45. package/dist/lib/config/file.js +47 -10
  46. package/dist/lib/config/file.js.map +1 -1
  47. package/dist/lib/config/resolve.d.ts +2 -2
  48. package/dist/lib/config/resolve.d.ts.map +1 -1
  49. package/dist/lib/config/resolve.js +11 -21
  50. package/dist/lib/config/resolve.js.map +1 -1
  51. package/dist/lib/config/types.d.ts +14 -5
  52. package/dist/lib/config/types.d.ts.map +1 -1
  53. package/dist/lib/config/types.js +15 -10
  54. package/dist/lib/config/types.js.map +1 -1
  55. package/dist/lib/config.d.ts +1 -1
  56. package/dist/lib/config.d.ts.map +1 -1
  57. package/dist/lib/config.js +1 -1
  58. package/dist/lib/config.js.map +1 -1
  59. package/dist/lib/fetch-orchestrator-helpers.d.ts.map +1 -1
  60. package/dist/lib/fetch-orchestrator-helpers.js +2 -1
  61. package/dist/lib/fetch-orchestrator-helpers.js.map +1 -1
  62. package/dist/lib/installer-cli.d.ts.map +1 -1
  63. package/dist/lib/installer-cli.js +4 -14
  64. package/dist/lib/installer-cli.js.map +1 -1
  65. package/dist/lib/legacy-orchestrator-cleanup.d.ts +10 -0
  66. package/dist/lib/legacy-orchestrator-cleanup.d.ts.map +1 -0
  67. package/dist/lib/legacy-orchestrator-cleanup.js +48 -0
  68. package/dist/lib/legacy-orchestrator-cleanup.js.map +1 -0
  69. package/dist/lib/model-catalog/cache-helpers.js +1 -1
  70. package/dist/lib/model-catalog/cache-helpers.js.map +1 -1
  71. package/dist/lib/model-catalog/provider.d.ts +9 -0
  72. package/dist/lib/model-catalog/provider.d.ts.map +1 -1
  73. package/dist/lib/model-catalog/provider.js +121 -10
  74. package/dist/lib/model-catalog/provider.js.map +1 -1
  75. package/dist/lib/model-catalog/shared.d.ts +24 -1
  76. package/dist/lib/model-catalog/shared.d.ts.map +1 -1
  77. package/dist/lib/model-catalog/shared.js +50 -4
  78. package/dist/lib/model-catalog/shared.js.map +1 -1
  79. package/dist/lib/model-catalog.d.ts +1 -1
  80. package/dist/lib/model-catalog.d.ts.map +1 -1
  81. package/dist/lib/model-catalog.js +1 -1
  82. package/dist/lib/model-catalog.js.map +1 -1
  83. package/dist/lib/plugin-lifecycle.d.ts +9 -0
  84. package/dist/lib/plugin-lifecycle.d.ts.map +1 -0
  85. package/dist/lib/plugin-lifecycle.js +28 -0
  86. package/dist/lib/plugin-lifecycle.js.map +1 -0
  87. package/dist/lib/request-snapshots.d.ts.map +1 -1
  88. package/dist/lib/request-snapshots.js +3 -0
  89. package/dist/lib/request-snapshots.js.map +1 -1
  90. package/dist/lib/shareable-debug.d.ts +4 -0
  91. package/dist/lib/shareable-debug.d.ts.map +1 -1
  92. package/dist/lib/shareable-debug.js +6 -3
  93. package/dist/lib/shareable-debug.js.map +1 -1
  94. package/package.json +5 -3
  95. package/schemas/codex-config.schema.json +23 -6
  96. package/dist/lib/codex-native/collaboration.d.ts +0 -26
  97. package/dist/lib/codex-native/collaboration.d.ts.map +0 -1
  98. package/dist/lib/codex-native/collaboration.js +0 -211
  99. package/dist/lib/codex-native/collaboration.js.map +0 -1
  100. package/dist/lib/codex-prompts-cache.d.ts +0 -17
  101. package/dist/lib/codex-prompts-cache.d.ts.map +0 -1
  102. package/dist/lib/codex-prompts-cache.js +0 -186
  103. package/dist/lib/codex-prompts-cache.js.map +0 -1
  104. package/dist/lib/orchestrator-agent.d.ts +0 -31
  105. package/dist/lib/orchestrator-agent.d.ts.map +0 -1
  106. package/dist/lib/orchestrator-agent.js +0 -271
  107. 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
- collaborationProfileEnabled?: boolean;
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;AAK7D,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;AAMpB,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;AAgBtC,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;AAwBhH,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,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,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAkJD,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,CAgW3G"}
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"}
@@ -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 collaborationProfileEnabled = typeof opts.collaborationProfileEnabled === "boolean" ? opts.collaborationProfileEnabled : runtimeMode === "codex";
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
- internalCollaborationModeHeader: INTERNAL_COLLABORATION_MODE_HEADER,
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
- collaborationProfileEnabled,
465
- orchestratorSubagentsEnabled
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
- catalogRequestMetadataBySession.delete(sessionID);
555
+ deleteCatalogRequestMetadata(sessionID, messageID);
472
556
  return;
473
557
  }
474
- const queue = catalogRequestMetadataBySession.get(sessionID) ?? [];
475
- queue.push({
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
- catalogRequestMetadataBySession.set(sessionID, queue);
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 queue = catalogRequestMetadataBySession.get(hookInput.sessionID);
483
- const queuedMetadata = queue?.shift();
484
- if (queue && queue.length === 0) {
485
- catalogRequestMetadataBySession.delete(hookInput.sessionID);
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) => {