@iam-brain/opencode-codex-auth 1.4.4 → 1.5.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 (128) hide show
  1. package/dist/lib/codex-native/auth-menu-flow.js +2 -2
  2. package/dist/lib/codex-native/auth-menu-flow.js.map +1 -1
  3. package/dist/lib/codex-native/catalog-sync.d.ts +4 -0
  4. package/dist/lib/codex-native/catalog-sync.d.ts.map +1 -1
  5. package/dist/lib/codex-native/catalog-sync.js +36 -1
  6. package/dist/lib/codex-native/catalog-sync.js.map +1 -1
  7. package/dist/lib/codex-native/chat-hooks.d.ts +1 -1
  8. package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -1
  9. package/dist/lib/codex-native/chat-hooks.js +1 -1
  10. package/dist/lib/codex-native/chat-hooks.js.map +1 -1
  11. package/dist/lib/codex-native/oauth-server.d.ts +17 -2
  12. package/dist/lib/codex-native/oauth-server.d.ts.map +1 -1
  13. package/dist/lib/codex-native/oauth-server.js +123 -3
  14. package/dist/lib/codex-native/oauth-server.js.map +1 -1
  15. package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -1
  16. package/dist/lib/codex-native/openai-loader-fetch.js +1 -1
  17. package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -1
  18. package/dist/lib/codex-native/request-transform-model-service-tier.d.ts.map +1 -1
  19. package/dist/lib/codex-native/request-transform-model-service-tier.js +7 -1
  20. package/dist/lib/codex-native/request-transform-model-service-tier.js.map +1 -1
  21. package/dist/lib/codex-native/request-transform-model.d.ts.map +1 -1
  22. package/dist/lib/codex-native/request-transform-model.js +48 -1
  23. package/dist/lib/codex-native/request-transform-model.js.map +1 -1
  24. package/dist/lib/codex-native/request-transform-payload-helpers.d.ts.map +1 -1
  25. package/dist/lib/codex-native/request-transform-payload-helpers.js +6 -1
  26. package/dist/lib/codex-native/request-transform-payload-helpers.js.map +1 -1
  27. package/dist/lib/codex-native/request-transform-payload.d.ts +1 -0
  28. package/dist/lib/codex-native/request-transform-payload.d.ts.map +1 -1
  29. package/dist/lib/codex-native/request-transform-payload.js +48 -2
  30. package/dist/lib/codex-native/request-transform-payload.js.map +1 -1
  31. package/dist/lib/codex-status-tool.js +1 -1
  32. package/dist/lib/codex-status-tool.js.map +1 -1
  33. package/dist/lib/codex-status-ui.js +1 -1
  34. package/dist/lib/codex-status-ui.js.map +1 -1
  35. package/dist/lib/config/file.d.ts +33 -0
  36. package/dist/lib/config/file.d.ts.map +1 -0
  37. package/dist/lib/config/file.js +503 -0
  38. package/dist/lib/config/file.js.map +1 -0
  39. package/dist/lib/config/resolve.d.ts +10 -1
  40. package/dist/lib/config/resolve.d.ts.map +1 -1
  41. package/dist/lib/config/resolve.js +62 -1
  42. package/dist/lib/config/resolve.js.map +1 -1
  43. package/dist/lib/config.d.ts +2 -5
  44. package/dist/lib/config.d.ts.map +1 -1
  45. package/dist/lib/config.js +2 -5
  46. package/dist/lib/config.js.map +1 -1
  47. package/dist/lib/storage/{domain-state.d.ts → auth-state.d.ts} +13 -2
  48. package/dist/lib/storage/auth-state.d.ts.map +1 -0
  49. package/dist/lib/storage/{domain-state.js → auth-state.js} +246 -26
  50. package/dist/lib/storage/auth-state.js.map +1 -0
  51. package/dist/lib/storage.d.ts +1 -1
  52. package/dist/lib/storage.d.ts.map +1 -1
  53. package/dist/lib/storage.js +2 -3
  54. package/dist/lib/storage.js.map +1 -1
  55. package/dist/lib/ui/auth-menu.d.ts +18 -1
  56. package/dist/lib/ui/auth-menu.d.ts.map +1 -1
  57. package/dist/lib/ui/auth-menu.js +78 -3
  58. package/dist/lib/ui/auth-menu.js.map +1 -1
  59. package/dist/lib/ui/tty.d.ts +40 -0
  60. package/dist/lib/ui/tty.d.ts.map +1 -0
  61. package/dist/lib/ui/{tty/select.js → tty.js} +57 -6
  62. package/dist/lib/ui/tty.js.map +1 -0
  63. package/package.json +2 -2
  64. package/dist/lib/codex-native/catalog-auth.d.ts +0 -6
  65. package/dist/lib/codex-native/catalog-auth.d.ts.map +0 -1
  66. package/dist/lib/codex-native/catalog-auth.js +0 -37
  67. package/dist/lib/codex-native/catalog-auth.js.map +0 -1
  68. package/dist/lib/codex-native/oauth-server-debug.d.ts +0 -10
  69. package/dist/lib/codex-native/oauth-server-debug.d.ts.map +0 -1
  70. package/dist/lib/codex-native/oauth-server-debug.js +0 -92
  71. package/dist/lib/codex-native/oauth-server-debug.js.map +0 -1
  72. package/dist/lib/codex-native/oauth-server-network.d.ts +0 -5
  73. package/dist/lib/codex-native/oauth-server-network.d.ts.map +0 -1
  74. package/dist/lib/codex-native/oauth-server-network.js +0 -39
  75. package/dist/lib/codex-native/oauth-server-network.js.map +0 -1
  76. package/dist/lib/codex-native/oauth-server-types.d.ts +0 -24
  77. package/dist/lib/codex-native/oauth-server-types.d.ts.map +0 -1
  78. package/dist/lib/codex-native/oauth-server-types.js +0 -2
  79. package/dist/lib/codex-native/oauth-server-types.js.map +0 -1
  80. package/dist/lib/codex-native/request-transform-gpt54-limits.d.ts +0 -2
  81. package/dist/lib/codex-native/request-transform-gpt54-limits.d.ts.map +0 -1
  82. package/dist/lib/codex-native/request-transform-gpt54-limits.js +0 -40
  83. package/dist/lib/codex-native/request-transform-gpt54-limits.js.map +0 -1
  84. package/dist/lib/codex-native/request-transform-shared.d.ts +0 -8
  85. package/dist/lib/codex-native/request-transform-shared.d.ts.map +0 -1
  86. package/dist/lib/codex-native/request-transform-shared.js +0 -49
  87. package/dist/lib/codex-native/request-transform-shared.js.map +0 -1
  88. package/dist/lib/codex-native/request-transform.d.ts +0 -4
  89. package/dist/lib/codex-native/request-transform.d.ts.map +0 -1
  90. package/dist/lib/codex-native/request-transform.js +0 -4
  91. package/dist/lib/codex-native/request-transform.js.map +0 -1
  92. package/dist/lib/config/behavior-settings.d.ts +0 -3
  93. package/dist/lib/config/behavior-settings.d.ts.map +0 -1
  94. package/dist/lib/config/behavior-settings.js +0 -33
  95. package/dist/lib/config/behavior-settings.js.map +0 -1
  96. package/dist/lib/config/io.d.ts +0 -16
  97. package/dist/lib/config/io.d.ts.map +0 -1
  98. package/dist/lib/config/io.js +0 -64
  99. package/dist/lib/config/io.js.map +0 -1
  100. package/dist/lib/config/parse.d.ts +0 -22
  101. package/dist/lib/config/parse.d.ts.map +0 -1
  102. package/dist/lib/config/parse.js +0 -327
  103. package/dist/lib/config/parse.js.map +0 -1
  104. package/dist/lib/config/validation.d.ts +0 -6
  105. package/dist/lib/config/validation.d.ts.map +0 -1
  106. package/dist/lib/config/validation.js +0 -171
  107. package/dist/lib/config/validation.js.map +0 -1
  108. package/dist/lib/storage/domain-state.d.ts.map +0 -1
  109. package/dist/lib/storage/domain-state.js.map +0 -1
  110. package/dist/lib/storage/migration.d.ts +0 -13
  111. package/dist/lib/storage/migration.d.ts.map +0 -1
  112. package/dist/lib/storage/migration.js +0 -225
  113. package/dist/lib/storage/migration.js.map +0 -1
  114. package/dist/lib/ui/auth-menu-runner.d.ts +0 -19
  115. package/dist/lib/ui/auth-menu-runner.d.ts.map +0 -1
  116. package/dist/lib/ui/auth-menu-runner.js +0 -79
  117. package/dist/lib/ui/auth-menu-runner.js.map +0 -1
  118. package/dist/lib/ui/tty/ansi.d.ts +0 -18
  119. package/dist/lib/ui/tty/ansi.d.ts.map +0 -1
  120. package/dist/lib/ui/tty/ansi.js +0 -37
  121. package/dist/lib/ui/tty/ansi.js.map +0 -1
  122. package/dist/lib/ui/tty/confirm.d.ts +0 -7
  123. package/dist/lib/ui/tty/confirm.d.ts.map +0 -1
  124. package/dist/lib/ui/tty/confirm.js +0 -20
  125. package/dist/lib/ui/tty/confirm.js.map +0 -1
  126. package/dist/lib/ui/tty/select.d.ts +0 -17
  127. package/dist/lib/ui/tty/select.d.ts.map +0 -1
  128. package/dist/lib/ui/tty/select.js.map +0 -1
@@ -0,0 +1,503 @@
1
+ import fs from "node:fs";
2
+ import fsPromises from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { isRecord } from "../util.js";
6
+ import { CONFIG_FILE, DEFAULT_CODEX_CONFIG_TEMPLATE } from "./types.js";
7
+ function describeValueType(value) {
8
+ if (Array.isArray(value))
9
+ return "array";
10
+ if (value === null)
11
+ return "null";
12
+ return typeof value;
13
+ }
14
+ function pushValidationIssue(issues, input) {
15
+ issues.push(`${input.path}: expected ${input.expected}, got ${describeValueType(input.actual)}`);
16
+ }
17
+ export function parseEnvBoolean(value) {
18
+ if (value === undefined)
19
+ return undefined;
20
+ const normalized = value.trim().toLowerCase();
21
+ if (normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on")
22
+ return true;
23
+ if (normalized === "0" || normalized === "false" || normalized === "no" || normalized === "off")
24
+ return false;
25
+ return undefined;
26
+ }
27
+ export function parseEnvNumber(value) {
28
+ if (value === undefined)
29
+ return undefined;
30
+ if (value.trim().length === 0)
31
+ return undefined;
32
+ const n = Number(value);
33
+ return Number.isFinite(n) ? n : undefined;
34
+ }
35
+ function stripJsonComments(raw) {
36
+ let out = "";
37
+ let inString = false;
38
+ let escaped = false;
39
+ let inLineComment = false;
40
+ let inBlockComment = false;
41
+ for (let index = 0; index < raw.length; index += 1) {
42
+ const ch = raw[index];
43
+ const next = raw[index + 1];
44
+ if (inLineComment) {
45
+ if (ch === "\n" || ch === "\r") {
46
+ inLineComment = false;
47
+ out += ch;
48
+ }
49
+ continue;
50
+ }
51
+ if (inBlockComment) {
52
+ if (ch === "*" && next === "/") {
53
+ inBlockComment = false;
54
+ index += 1;
55
+ continue;
56
+ }
57
+ if (ch === "\n" || ch === "\r") {
58
+ out += ch;
59
+ }
60
+ continue;
61
+ }
62
+ if (inString) {
63
+ out += ch;
64
+ if (escaped) {
65
+ escaped = false;
66
+ }
67
+ else if (ch === "\\") {
68
+ escaped = true;
69
+ }
70
+ else if (ch === '"') {
71
+ inString = false;
72
+ }
73
+ continue;
74
+ }
75
+ if (ch === '"') {
76
+ inString = true;
77
+ out += ch;
78
+ continue;
79
+ }
80
+ if (ch === "/" && next === "/") {
81
+ inLineComment = true;
82
+ index += 1;
83
+ continue;
84
+ }
85
+ if (ch === "/" && next === "*") {
86
+ inBlockComment = true;
87
+ index += 1;
88
+ continue;
89
+ }
90
+ out += ch;
91
+ }
92
+ return out;
93
+ }
94
+ function normalizeModelBehaviorSettings(raw) {
95
+ if (!isRecord(raw))
96
+ return undefined;
97
+ const out = {};
98
+ const personality = normalizePersonalityOption(raw.personality);
99
+ if (personality)
100
+ out.personality = personality;
101
+ if (typeof raw.thinkingSummaries === "boolean")
102
+ out.thinkingSummaries = raw.thinkingSummaries;
103
+ if (typeof raw.verbosityEnabled === "boolean")
104
+ out.verbosityEnabled = raw.verbosityEnabled;
105
+ const verbosity = normalizeVerbosityOption(raw.verbosity);
106
+ if (verbosity)
107
+ out.verbosity = verbosity;
108
+ const serviceTier = normalizeServiceTierOption(raw.serviceTier);
109
+ if (serviceTier)
110
+ out.serviceTier = serviceTier;
111
+ if (!out.personality &&
112
+ out.thinkingSummaries === undefined &&
113
+ out.verbosityEnabled === undefined &&
114
+ out.verbosity === undefined &&
115
+ out.serviceTier === undefined) {
116
+ return undefined;
117
+ }
118
+ return out;
119
+ }
120
+ function normalizeModelConfigOverride(raw) {
121
+ if (!isRecord(raw))
122
+ return undefined;
123
+ const modelBehavior = normalizeModelBehaviorSettings(raw);
124
+ const rawVariants = isRecord(raw.variants) ? raw.variants : undefined;
125
+ let variants;
126
+ if (rawVariants) {
127
+ const variantMap = {};
128
+ for (const [variantName, value] of Object.entries(rawVariants)) {
129
+ const normalized = normalizeModelBehaviorSettings(value);
130
+ if (!normalized)
131
+ continue;
132
+ variantMap[variantName] = {
133
+ ...(normalized.personality ? { personality: normalized.personality } : {}),
134
+ ...(normalized.thinkingSummaries !== undefined ? { thinkingSummaries: normalized.thinkingSummaries } : {}),
135
+ ...(normalized.verbosityEnabled !== undefined ? { verbosityEnabled: normalized.verbosityEnabled } : {}),
136
+ ...(normalized.verbosity ? { verbosity: normalized.verbosity } : {}),
137
+ ...(normalized.serviceTier ? { serviceTier: normalized.serviceTier } : {})
138
+ };
139
+ }
140
+ if (Object.keys(variantMap).length > 0) {
141
+ variants = variantMap;
142
+ }
143
+ }
144
+ if (!modelBehavior && !variants) {
145
+ return undefined;
146
+ }
147
+ return {
148
+ ...(modelBehavior?.personality ? { personality: modelBehavior.personality } : {}),
149
+ ...(modelBehavior?.thinkingSummaries !== undefined ? { thinkingSummaries: modelBehavior.thinkingSummaries } : {}),
150
+ ...(modelBehavior?.verbosityEnabled !== undefined ? { verbosityEnabled: modelBehavior.verbosityEnabled } : {}),
151
+ ...(modelBehavior?.verbosity ? { verbosity: modelBehavior.verbosity } : {}),
152
+ ...(modelBehavior?.serviceTier ? { serviceTier: modelBehavior.serviceTier } : {}),
153
+ ...(variants ? { variants } : {})
154
+ };
155
+ }
156
+ function normalizeNewBehaviorSections(raw) {
157
+ const global = normalizeModelBehaviorSettings(raw.global);
158
+ const perModelRaw = isRecord(raw.perModel) ? raw.perModel : undefined;
159
+ let perModel;
160
+ if (perModelRaw) {
161
+ const modelMap = {};
162
+ for (const [modelName, value] of Object.entries(perModelRaw)) {
163
+ const normalized = normalizeModelConfigOverride(value);
164
+ if (!normalized)
165
+ continue;
166
+ modelMap[modelName] = normalized;
167
+ }
168
+ if (Object.keys(modelMap).length > 0) {
169
+ perModel = modelMap;
170
+ }
171
+ }
172
+ if (!global && !perModel)
173
+ return undefined;
174
+ return {
175
+ ...(global ? { global } : {}),
176
+ ...(perModel ? { perModel } : {})
177
+ };
178
+ }
179
+ function validateModelBehaviorShape(value, pathPrefix, issues) {
180
+ if (!isRecord(value)) {
181
+ pushValidationIssue(issues, { path: pathPrefix, expected: "object", actual: value });
182
+ return;
183
+ }
184
+ if ("personality" in value && typeof value.personality !== "string") {
185
+ pushValidationIssue(issues, { path: `${pathPrefix}.personality`, expected: "string", actual: value.personality });
186
+ }
187
+ if ("thinkingSummaries" in value && typeof value.thinkingSummaries !== "boolean") {
188
+ pushValidationIssue(issues, {
189
+ path: `${pathPrefix}.thinkingSummaries`,
190
+ expected: "boolean",
191
+ actual: value.thinkingSummaries
192
+ });
193
+ }
194
+ if ("verbosityEnabled" in value && typeof value.verbosityEnabled !== "boolean") {
195
+ pushValidationIssue(issues, {
196
+ path: `${pathPrefix}.verbosityEnabled`,
197
+ expected: "boolean",
198
+ actual: value.verbosityEnabled
199
+ });
200
+ }
201
+ if ("verbosity" in value) {
202
+ const verbosity = value.verbosity;
203
+ const normalized = typeof verbosity === "string" ? verbosity.trim().toLowerCase() : "";
204
+ if (!(normalized === "default" || normalized === "low" || normalized === "medium" || normalized === "high")) {
205
+ pushValidationIssue(issues, {
206
+ path: `${pathPrefix}.verbosity`,
207
+ expected: '"default" | "low" | "medium" | "high"',
208
+ actual: verbosity
209
+ });
210
+ }
211
+ }
212
+ if ("serviceTier" in value) {
213
+ const serviceTier = value.serviceTier;
214
+ const normalized = typeof serviceTier === "string" ? serviceTier.trim().toLowerCase() : "";
215
+ if (!(normalized === "default" || normalized === "priority" || normalized === "flex")) {
216
+ pushValidationIssue(issues, {
217
+ path: `${pathPrefix}.serviceTier`,
218
+ expected: '"default" | "priority" | "flex"',
219
+ actual: serviceTier
220
+ });
221
+ }
222
+ }
223
+ }
224
+ export function parseConfigJsonWithComments(raw) {
225
+ return JSON.parse(stripJsonComments(raw));
226
+ }
227
+ export function normalizePersonalityOption(value) {
228
+ if (typeof value !== "string")
229
+ return undefined;
230
+ const normalized = value.trim().toLowerCase();
231
+ if (!normalized)
232
+ return undefined;
233
+ if (normalized.includes("/") || normalized.includes("\\") || normalized.includes("..")) {
234
+ return undefined;
235
+ }
236
+ return normalized;
237
+ }
238
+ export function parseSpoofMode(value) {
239
+ if (typeof value !== "string")
240
+ return undefined;
241
+ const normalized = value.trim().toLowerCase();
242
+ if (normalized === "native")
243
+ return "native";
244
+ if (normalized === "codex")
245
+ return "codex";
246
+ return undefined;
247
+ }
248
+ export function parseRuntimeMode(value) {
249
+ if (typeof value !== "string")
250
+ return undefined;
251
+ const normalized = value.trim().toLowerCase();
252
+ if (normalized === "native")
253
+ return "native";
254
+ if (normalized === "codex")
255
+ return "codex";
256
+ return undefined;
257
+ }
258
+ export function parseRotationStrategy(value) {
259
+ if (typeof value !== "string")
260
+ return undefined;
261
+ const normalized = value.trim().toLowerCase();
262
+ if (normalized === "sticky" || normalized === "hybrid" || normalized === "round_robin") {
263
+ return normalized;
264
+ }
265
+ return undefined;
266
+ }
267
+ export function parsePromptCacheKeyStrategy(value) {
268
+ if (typeof value !== "string")
269
+ return undefined;
270
+ const normalized = value.trim().toLowerCase();
271
+ if (normalized === "default" || normalized === "project")
272
+ return normalized;
273
+ return undefined;
274
+ }
275
+ export function normalizeVerbosityOption(value) {
276
+ if (typeof value !== "string")
277
+ return undefined;
278
+ const normalized = value.trim().toLowerCase();
279
+ if (normalized === "default" || normalized === "low" || normalized === "medium" || normalized === "high") {
280
+ return normalized;
281
+ }
282
+ return undefined;
283
+ }
284
+ export function normalizeServiceTierOption(value) {
285
+ if (typeof value !== "string")
286
+ return undefined;
287
+ const normalized = value.trim().toLowerCase();
288
+ if (normalized === "default" || normalized === "priority" || normalized === "flex") {
289
+ return normalized;
290
+ }
291
+ return undefined;
292
+ }
293
+ export function validateConfigFileObject(raw) {
294
+ const issues = [];
295
+ if (!isRecord(raw)) {
296
+ pushValidationIssue(issues, { path: "$", expected: "object", actual: raw });
297
+ return { valid: false, issues };
298
+ }
299
+ if ("$schema" in raw && typeof raw.$schema !== "string") {
300
+ pushValidationIssue(issues, { path: "$schema", expected: "string", actual: raw.$schema });
301
+ }
302
+ if ("debug" in raw && typeof raw.debug !== "boolean") {
303
+ pushValidationIssue(issues, { path: "debug", expected: "boolean", actual: raw.debug });
304
+ }
305
+ if ("quiet" in raw && typeof raw.quiet !== "boolean") {
306
+ pushValidationIssue(issues, { path: "quiet", expected: "boolean", actual: raw.quiet });
307
+ }
308
+ if ("refreshAhead" in raw) {
309
+ if (!isRecord(raw.refreshAhead)) {
310
+ pushValidationIssue(issues, { path: "refreshAhead", expected: "object", actual: raw.refreshAhead });
311
+ }
312
+ else {
313
+ if ("enabled" in raw.refreshAhead && typeof raw.refreshAhead.enabled !== "boolean") {
314
+ pushValidationIssue(issues, {
315
+ path: "refreshAhead.enabled",
316
+ expected: "boolean",
317
+ actual: raw.refreshAhead.enabled
318
+ });
319
+ }
320
+ if ("bufferMs" in raw.refreshAhead &&
321
+ (typeof raw.refreshAhead.bufferMs !== "number" || !Number.isFinite(raw.refreshAhead.bufferMs))) {
322
+ pushValidationIssue(issues, {
323
+ path: "refreshAhead.bufferMs",
324
+ expected: "number",
325
+ actual: raw.refreshAhead.bufferMs
326
+ });
327
+ }
328
+ }
329
+ }
330
+ if ("runtime" in raw) {
331
+ if (!isRecord(raw.runtime)) {
332
+ pushValidationIssue(issues, { path: "runtime", expected: "object", actual: raw.runtime });
333
+ }
334
+ else {
335
+ const runtime = raw.runtime;
336
+ const enumChecks = [
337
+ { field: "mode", allowed: ["native", "codex"] },
338
+ { field: "rotationStrategy", allowed: ["sticky", "hybrid", "round_robin"] },
339
+ { field: "promptCacheKeyStrategy", allowed: ["default", "project"] }
340
+ ];
341
+ for (const check of enumChecks) {
342
+ const value = runtime[check.field];
343
+ if (value === undefined)
344
+ continue;
345
+ const normalized = typeof value === "string" ? value.trim().toLowerCase() : "";
346
+ if (!check.allowed.includes(normalized)) {
347
+ pushValidationIssue(issues, {
348
+ path: `runtime.${check.field}`,
349
+ expected: check.allowed.map((item) => `"${item}"`).join(" | "),
350
+ actual: value
351
+ });
352
+ }
353
+ }
354
+ const boolFields = [
355
+ "sanitizeInputs",
356
+ "developerMessagesToUser",
357
+ "codexCompactionOverride",
358
+ "headerSnapshots",
359
+ "headerSnapshotBodies",
360
+ "headerTransformDebug",
361
+ "pidOffset",
362
+ "collaborationProfile",
363
+ "orchestratorSubagents"
364
+ ];
365
+ for (const field of boolFields) {
366
+ if (field in runtime && typeof runtime[field] !== "boolean") {
367
+ pushValidationIssue(issues, {
368
+ path: `runtime.${field}`,
369
+ expected: "boolean",
370
+ actual: runtime[field]
371
+ });
372
+ }
373
+ }
374
+ }
375
+ }
376
+ if ("global" in raw) {
377
+ validateModelBehaviorShape(raw.global, "global", issues);
378
+ }
379
+ if ("perModel" in raw) {
380
+ if (!isRecord(raw.perModel)) {
381
+ pushValidationIssue(issues, { path: "perModel", expected: "object", actual: raw.perModel });
382
+ }
383
+ else {
384
+ for (const [modelName, modelValue] of Object.entries(raw.perModel)) {
385
+ validateModelBehaviorShape(modelValue, `perModel.${modelName}`, issues);
386
+ if (!isRecord(modelValue) || !("variants" in modelValue))
387
+ continue;
388
+ const variants = modelValue.variants;
389
+ if (!isRecord(variants)) {
390
+ pushValidationIssue(issues, {
391
+ path: `perModel.${modelName}.variants`,
392
+ expected: "object",
393
+ actual: variants
394
+ });
395
+ continue;
396
+ }
397
+ for (const [variantName, variantValue] of Object.entries(variants)) {
398
+ validateModelBehaviorShape(variantValue, `perModel.${modelName}.variants.${variantName}`, issues);
399
+ }
400
+ }
401
+ }
402
+ }
403
+ return { valid: issues.length === 0, issues };
404
+ }
405
+ export function parseConfigFileObject(raw) {
406
+ if (!isRecord(raw))
407
+ return {};
408
+ const behaviorSettings = normalizeNewBehaviorSections(raw);
409
+ const personalityFromBehavior = behaviorSettings?.global?.personality;
410
+ const runtime = isRecord(raw.runtime) ? raw.runtime : undefined;
411
+ const debug = typeof raw.debug === "boolean" ? raw.debug : undefined;
412
+ const proactiveRefresh = isRecord(raw.refreshAhead) && typeof raw.refreshAhead.enabled === "boolean" ? raw.refreshAhead.enabled : undefined;
413
+ const proactiveRefreshBufferMs = isRecord(raw.refreshAhead) && typeof raw.refreshAhead.bufferMs === "number" ? raw.refreshAhead.bufferMs : undefined;
414
+ const quietMode = typeof raw.quiet === "boolean" ? raw.quiet : undefined;
415
+ const mode = parseRuntimeMode(runtime?.mode);
416
+ const rotationStrategy = parseRotationStrategy(runtime?.rotationStrategy);
417
+ const promptCacheKeyStrategy = parsePromptCacheKeyStrategy(runtime?.promptCacheKeyStrategy);
418
+ const spoofMode = mode === "native" ? "native" : mode === "codex" ? "codex" : undefined;
419
+ const compatInputSanitizer = typeof runtime?.sanitizeInputs === "boolean" ? runtime.sanitizeInputs : undefined;
420
+ const remapDeveloperMessagesToUser = typeof runtime?.developerMessagesToUser === "boolean" ? runtime.developerMessagesToUser : undefined;
421
+ const codexCompactionOverride = typeof runtime?.codexCompactionOverride === "boolean" ? runtime.codexCompactionOverride : undefined;
422
+ const headerSnapshots = typeof runtime?.headerSnapshots === "boolean" ? runtime.headerSnapshots : undefined;
423
+ const headerSnapshotBodies = typeof runtime?.headerSnapshotBodies === "boolean" ? runtime.headerSnapshotBodies : undefined;
424
+ const headerTransformDebug = typeof runtime?.headerTransformDebug === "boolean" ? runtime.headerTransformDebug : undefined;
425
+ const pidOffsetEnabled = typeof runtime?.pidOffset === "boolean" ? runtime.pidOffset : undefined;
426
+ const collaborationProfileEnabled = typeof runtime?.collaborationProfile === "boolean" ? runtime.collaborationProfile : undefined;
427
+ const orchestratorSubagentsEnabled = typeof runtime?.orchestratorSubagents === "boolean" ? runtime.orchestratorSubagents : undefined;
428
+ return {
429
+ debug,
430
+ proactiveRefresh,
431
+ proactiveRefreshBufferMs,
432
+ quiet: quietMode,
433
+ quietMode,
434
+ pidOffsetEnabled,
435
+ personality: personalityFromBehavior,
436
+ mode,
437
+ rotationStrategy,
438
+ promptCacheKeyStrategy,
439
+ spoofMode,
440
+ compatInputSanitizer,
441
+ remapDeveloperMessagesToUser,
442
+ codexCompactionOverride,
443
+ headerSnapshots,
444
+ headerSnapshotBodies,
445
+ headerTransformDebug,
446
+ collaborationProfile: collaborationProfileEnabled,
447
+ collaborationProfileEnabled,
448
+ orchestratorSubagents: orchestratorSubagentsEnabled,
449
+ orchestratorSubagentsEnabled,
450
+ behaviorSettings
451
+ };
452
+ }
453
+ export function resolveDefaultConfigPath(env) {
454
+ const xdgRoot = env.XDG_CONFIG_HOME?.trim();
455
+ if (xdgRoot) {
456
+ return path.join(xdgRoot, "opencode", CONFIG_FILE);
457
+ }
458
+ return path.join(os.homedir(), ".config", "opencode", CONFIG_FILE);
459
+ }
460
+ export async function ensureDefaultConfigFile(input = {}) {
461
+ const env = input.env ?? process.env;
462
+ const filePath = input.filePath ?? resolveDefaultConfigPath(env);
463
+ const overwrite = input.overwrite === true;
464
+ if (!overwrite && fs.existsSync(filePath)) {
465
+ return { filePath, created: false };
466
+ }
467
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
468
+ await fsPromises.writeFile(filePath, DEFAULT_CODEX_CONFIG_TEMPLATE, { encoding: "utf8", mode: 0o600 });
469
+ try {
470
+ await fsPromises.chmod(filePath, 0o600);
471
+ }
472
+ catch (error) {
473
+ if (error instanceof Error) {
474
+ // best-effort permission hardening
475
+ }
476
+ }
477
+ return { filePath, created: true };
478
+ }
479
+ export function loadConfigFile(input = {}) {
480
+ const env = input.env ?? process.env;
481
+ const explicitPath = input.filePath ?? env.OPENCODE_OPENAI_MULTI_CONFIG_PATH?.trim();
482
+ const candidates = explicitPath ? [explicitPath] : [resolveDefaultConfigPath(env)];
483
+ for (const filePath of candidates) {
484
+ if (!filePath || !fs.existsSync(filePath))
485
+ continue;
486
+ try {
487
+ const raw = fs.readFileSync(filePath, "utf8");
488
+ const parsed = parseConfigJsonWithComments(raw);
489
+ const validation = validateConfigFileObject(parsed);
490
+ if (!validation.valid) {
491
+ console.warn(`[opencode-codex-auth] Invalid codex-config at ${filePath}. ${validation.issues.join("; ")}`);
492
+ continue;
493
+ }
494
+ return parseConfigFileObject(parsed);
495
+ }
496
+ catch (error) {
497
+ const detail = error instanceof Error ? error.message : String(error);
498
+ console.warn(`[opencode-codex-auth] Failed to read codex-config at ${filePath}. ${detail}`);
499
+ }
500
+ }
501
+ return {};
502
+ }
503
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../lib/config/file.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import type { RotationStrategy } from "../types.js";
2
- import type { BehaviorSettings, CodexSpoofMode, PersonalityOption, PluginConfig, PluginRuntimeMode, PromptCacheKeyStrategy } from "./types.js";
2
+ import type { BehaviorSettings, CodexSpoofMode, ModelBehaviorOverride, PersonalityOption, PluginConfig, PluginRuntimeMode, PromptCacheKeyStrategy } from "./types.js";
3
+ export declare function cloneBehaviorSettings(input: BehaviorSettings | undefined): BehaviorSettings | undefined;
4
+ export declare function buildResolvedBehaviorSettings(input: {
5
+ fileBehavior: BehaviorSettings | undefined;
6
+ envPersonality: PersonalityOption | undefined;
7
+ envThinkingSummaries: boolean | undefined;
8
+ envVerbosityEnabled: boolean | undefined;
9
+ envVerbosity: ModelBehaviorOverride["verbosity"];
10
+ envServiceTier: ModelBehaviorOverride["serviceTier"];
11
+ }): BehaviorSettings | undefined;
3
12
  export declare function resolveConfig(input: {
4
13
  env: Record<string, string | undefined>;
5
14
  file?: Partial<PluginConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../lib/config/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAanD,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B,GAAG,YAAY,CA0Ff;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAE9D;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAErE;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAIrE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,GAAG,SAAS,CAE/E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,CAE9D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CAG5D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,sBAAsB,CAEnF;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,sCAAsC,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAGjF;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAI5E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAIzE;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAEnF;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,CAEnF"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../lib/config/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAYnD,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAOnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CA6BvG;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC1C,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC7C,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,YAAY,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAChD,cAAc,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAA;CACrD,GAAG,gBAAgB,GAAG,SAAS,CAiC/B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B,GAAG,YAAY,CA0Ff;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAE9D;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAErE;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAIrE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,GAAG,SAAS,CAE/E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,CAE9D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,iBAAiB,CAG5D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,sBAAsB,CAEnF;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,sCAAsC,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAGjF;AAED,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAI5E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAIzE;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAEnF;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,CAEnF"}
@@ -1,4 +1,65 @@
1
- import { buildResolvedBehaviorSettings, normalizePersonalityOption, normalizeServiceTierOption, normalizeVerbosityOption, parseEnvBoolean, parseEnvNumber, parsePromptCacheKeyStrategy, parseRotationStrategy, parseRuntimeMode, parseSpoofMode } from "./parse.js";
1
+ import { normalizePersonalityOption, normalizeServiceTierOption, normalizeVerbosityOption, parseEnvBoolean, parseEnvNumber, parsePromptCacheKeyStrategy, parseRotationStrategy, parseRuntimeMode, parseSpoofMode } from "./file.js";
2
+ function cloneBehaviorOverride(input) {
3
+ if (!input)
4
+ return undefined;
5
+ return { ...input };
6
+ }
7
+ export function cloneBehaviorSettings(input) {
8
+ if (!input)
9
+ return undefined;
10
+ return {
11
+ ...(input.global
12
+ ? {
13
+ global: cloneBehaviorOverride(input.global)
14
+ }
15
+ : {}),
16
+ perModel: input.perModel
17
+ ? Object.fromEntries(Object.entries(input.perModel).map(([key, value]) => [
18
+ key,
19
+ {
20
+ ...cloneBehaviorOverride(value),
21
+ ...(value.variants
22
+ ? {
23
+ variants: Object.fromEntries(Object.entries(value.variants).map(([variantKey, variantValue]) => [
24
+ variantKey,
25
+ cloneBehaviorOverride(variantValue) ?? {}
26
+ ]))
27
+ }
28
+ : {})
29
+ }
30
+ ]))
31
+ : undefined
32
+ };
33
+ }
34
+ export function buildResolvedBehaviorSettings(input) {
35
+ const behaviorSettings = cloneBehaviorSettings(input.fileBehavior) ?? {};
36
+ const globalBehavior = {
37
+ ...(behaviorSettings.global ?? {})
38
+ };
39
+ if (input.envPersonality) {
40
+ globalBehavior.personality = input.envPersonality;
41
+ }
42
+ if (input.envThinkingSummaries !== undefined) {
43
+ globalBehavior.thinkingSummaries = input.envThinkingSummaries;
44
+ }
45
+ if (input.envVerbosityEnabled !== undefined) {
46
+ globalBehavior.verbosityEnabled = input.envVerbosityEnabled;
47
+ }
48
+ if (input.envVerbosity) {
49
+ globalBehavior.verbosity = input.envVerbosity;
50
+ }
51
+ if (input.envServiceTier) {
52
+ globalBehavior.serviceTier = input.envServiceTier;
53
+ }
54
+ if (globalBehavior.personality !== undefined ||
55
+ globalBehavior.thinkingSummaries !== undefined ||
56
+ globalBehavior.verbosityEnabled !== undefined ||
57
+ globalBehavior.verbosity !== undefined ||
58
+ globalBehavior.serviceTier !== undefined) {
59
+ behaviorSettings.global = globalBehavior;
60
+ }
61
+ return behaviorSettings.global !== undefined || behaviorSettings.perModel !== undefined ? behaviorSettings : undefined;
62
+ }
2
63
  export function resolveConfig(input) {
3
64
  const env = input.env;
4
65
  const file = input.file ?? {};