oc-chatgpt-multi-auth 4.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 (134) hide show
  1. package/LICENSE +37 -0
  2. package/README.md +507 -0
  3. package/assets/opencode-logo-ornate-dark.svg +18 -0
  4. package/assets/readme-hero.svg +31 -0
  5. package/config/README.md +110 -0
  6. package/config/minimal-opencode.json +13 -0
  7. package/config/opencode-legacy.json +572 -0
  8. package/config/opencode-modern.json +240 -0
  9. package/dist/index.d.ts +45 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +971 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/accounts.d.ts +120 -0
  14. package/dist/lib/accounts.d.ts.map +1 -0
  15. package/dist/lib/accounts.js +579 -0
  16. package/dist/lib/accounts.js.map +1 -0
  17. package/dist/lib/auth/auth.d.ts +51 -0
  18. package/dist/lib/auth/auth.d.ts.map +1 -0
  19. package/dist/lib/auth/auth.js +180 -0
  20. package/dist/lib/auth/auth.js.map +1 -0
  21. package/dist/lib/auth/browser.d.ts +17 -0
  22. package/dist/lib/auth/browser.d.ts.map +1 -0
  23. package/dist/lib/auth/browser.js +83 -0
  24. package/dist/lib/auth/browser.js.map +1 -0
  25. package/dist/lib/auth/server.d.ts +10 -0
  26. package/dist/lib/auth/server.d.ts.map +1 -0
  27. package/dist/lib/auth/server.js +85 -0
  28. package/dist/lib/auth/server.js.map +1 -0
  29. package/dist/lib/auto-update-checker.d.ts +10 -0
  30. package/dist/lib/auto-update-checker.d.ts.map +1 -0
  31. package/dist/lib/auto-update-checker.js +129 -0
  32. package/dist/lib/auto-update-checker.js.map +1 -0
  33. package/dist/lib/cli.d.ts +9 -0
  34. package/dist/lib/cli.d.ts.map +1 -0
  35. package/dist/lib/cli.js +50 -0
  36. package/dist/lib/cli.js.map +1 -0
  37. package/dist/lib/config.d.ts +17 -0
  38. package/dist/lib/config.d.ts.map +1 -0
  39. package/dist/lib/config.js +102 -0
  40. package/dist/lib/config.js.map +1 -0
  41. package/dist/lib/constants.d.ts +74 -0
  42. package/dist/lib/constants.d.ts.map +1 -0
  43. package/dist/lib/constants.js +74 -0
  44. package/dist/lib/constants.js.map +1 -0
  45. package/dist/lib/context-overflow.d.ts +27 -0
  46. package/dist/lib/context-overflow.d.ts.map +1 -0
  47. package/dist/lib/context-overflow.js +124 -0
  48. package/dist/lib/context-overflow.js.map +1 -0
  49. package/dist/lib/index.d.ts +13 -0
  50. package/dist/lib/index.d.ts.map +1 -0
  51. package/dist/lib/index.js +13 -0
  52. package/dist/lib/index.js.map +1 -0
  53. package/dist/lib/logger.d.ts +22 -0
  54. package/dist/lib/logger.d.ts.map +1 -0
  55. package/dist/lib/logger.js +175 -0
  56. package/dist/lib/logger.js.map +1 -0
  57. package/dist/lib/oauth-success.html +712 -0
  58. package/dist/lib/prompts/codex-opencode-bridge.d.ts +19 -0
  59. package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
  60. package/dist/lib/prompts/codex-opencode-bridge.js +152 -0
  61. package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
  62. package/dist/lib/prompts/codex.d.ts +32 -0
  63. package/dist/lib/prompts/codex.d.ts.map +1 -0
  64. package/dist/lib/prompts/codex.js +262 -0
  65. package/dist/lib/prompts/codex.js.map +1 -0
  66. package/dist/lib/prompts/opencode-codex.d.ts +21 -0
  67. package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
  68. package/dist/lib/prompts/opencode-codex.js +91 -0
  69. package/dist/lib/prompts/opencode-codex.js.map +1 -0
  70. package/dist/lib/recovery/constants.d.ts +12 -0
  71. package/dist/lib/recovery/constants.d.ts.map +1 -0
  72. package/dist/lib/recovery/constants.js +25 -0
  73. package/dist/lib/recovery/constants.js.map +1 -0
  74. package/dist/lib/recovery/index.d.ts +12 -0
  75. package/dist/lib/recovery/index.d.ts.map +1 -0
  76. package/dist/lib/recovery/index.js +12 -0
  77. package/dist/lib/recovery/index.js.map +1 -0
  78. package/dist/lib/recovery/storage.d.ts +24 -0
  79. package/dist/lib/recovery/storage.d.ts.map +1 -0
  80. package/dist/lib/recovery/storage.js +354 -0
  81. package/dist/lib/recovery/storage.js.map +1 -0
  82. package/dist/lib/recovery/types.d.ts +116 -0
  83. package/dist/lib/recovery/types.d.ts.map +1 -0
  84. package/dist/lib/recovery/types.js +7 -0
  85. package/dist/lib/recovery/types.js.map +1 -0
  86. package/dist/lib/recovery.d.ts +31 -0
  87. package/dist/lib/recovery.d.ts.map +1 -0
  88. package/dist/lib/recovery.js +308 -0
  89. package/dist/lib/recovery.js.map +1 -0
  90. package/dist/lib/refresh-queue.d.ts +100 -0
  91. package/dist/lib/refresh-queue.d.ts.map +1 -0
  92. package/dist/lib/refresh-queue.js +196 -0
  93. package/dist/lib/refresh-queue.js.map +1 -0
  94. package/dist/lib/request/fetch-helpers.d.ts +81 -0
  95. package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
  96. package/dist/lib/request/fetch-helpers.js +325 -0
  97. package/dist/lib/request/fetch-helpers.js.map +1 -0
  98. package/dist/lib/request/helpers/input-utils.d.ts +7 -0
  99. package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
  100. package/dist/lib/request/helpers/input-utils.js +213 -0
  101. package/dist/lib/request/helpers/input-utils.js.map +1 -0
  102. package/dist/lib/request/helpers/model-map.d.ts +28 -0
  103. package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
  104. package/dist/lib/request/helpers/model-map.js +109 -0
  105. package/dist/lib/request/helpers/model-map.js.map +1 -0
  106. package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
  107. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
  108. package/dist/lib/request/rate-limit-backoff.js +74 -0
  109. package/dist/lib/request/rate-limit-backoff.js.map +1 -0
  110. package/dist/lib/request/request-transformer.d.ts +93 -0
  111. package/dist/lib/request/request-transformer.d.ts.map +1 -0
  112. package/dist/lib/request/request-transformer.js +405 -0
  113. package/dist/lib/request/request-transformer.js.map +1 -0
  114. package/dist/lib/request/response-handler.d.ts +14 -0
  115. package/dist/lib/request/response-handler.d.ts.map +1 -0
  116. package/dist/lib/request/response-handler.js +90 -0
  117. package/dist/lib/request/response-handler.js.map +1 -0
  118. package/dist/lib/rotation.d.ts +121 -0
  119. package/dist/lib/rotation.d.ts.map +1 -0
  120. package/dist/lib/rotation.js +248 -0
  121. package/dist/lib/rotation.js.map +1 -0
  122. package/dist/lib/storage.d.ts +91 -0
  123. package/dist/lib/storage.d.ts.map +1 -0
  124. package/dist/lib/storage.js +323 -0
  125. package/dist/lib/storage.js.map +1 -0
  126. package/dist/lib/types.d.ts +185 -0
  127. package/dist/lib/types.d.ts.map +1 -0
  128. package/dist/lib/types.js +2 -0
  129. package/dist/lib/types.js.map +1 -0
  130. package/package.json +86 -0
  131. package/scripts/copy-oauth-success.js +37 -0
  132. package/scripts/install-opencode-codex-auth.js +193 -0
  133. package/scripts/test-all-models.sh +260 -0
  134. package/scripts/validate-model-map.sh +97 -0
@@ -0,0 +1,110 @@
1
+ # Configuration
2
+
3
+ This directory contains the official opencode configuration files for the OpenAI Codex OAuth plugin.
4
+
5
+ ## ⚠️ REQUIRED: Choose the Right Configuration
6
+
7
+ **Two configuration files are available based on your OpenCode version:**
8
+
9
+ | File | OpenCode Version | Description |
10
+ |------|------------------|-------------|
11
+ | [`opencode-modern.json`](./opencode-modern.json) | **v1.0.210+ (Jan 2026+)** | Compact config using variants system - 6 models with built-in reasoning level variants |
12
+ | [`opencode-legacy.json`](./opencode-legacy.json) | **v1.0.209 and below** | Extended config with separate model entries for each reasoning level - 20+ individual model definitions |
13
+
14
+ ### Which one should I use?
15
+
16
+ **If you have OpenCode v1.0.210 or newer** (check with `opencode --version`):
17
+ ```bash
18
+ cp config/opencode-modern.json ~/.config/opencode/opencode.json
19
+ ```
20
+
21
+ **If you have OpenCode v1.0.209 or older**:
22
+ ```bash
23
+ cp config/opencode-legacy.json ~/.config/opencode/opencode.json
24
+ ```
25
+
26
+ ### Why two configs?
27
+
28
+ OpenCode v1.0.210+ introduced a **variants system** that allows defining reasoning effort levels as variants under a single model. This reduces config size from 572 lines to ~150 lines while maintaining the same functionality.
29
+
30
+ **What you get:**
31
+
32
+ | Config File | Model Families | Reasoning Variants | Total Models |
33
+ |------------|----------------|-------------------|--------------|
34
+ | `opencode-modern.json` | 6 | Built-in variants (low/medium/high/xhigh) | 6 base models with 19 total variants |
35
+ | `opencode-legacy.json` | 6 | Separate model entries | 20 individual model definitions |
36
+
37
+ Both configs provide:
38
+ - ✅ All supported GPT 5.2/5.1 variants: gpt-5.2, gpt-5.2-codex, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-max, gpt-5.1-codex-mini
39
+ - ✅ Proper reasoning effort settings for each variant (including `xhigh` for Codex Max/5.2)
40
+ - ✅ Context limits (272k context / 128k output for all Codex families)
41
+ - ✅ Required options: `store: false`, `include: ["reasoning.encrypted_content"]`
42
+ - ✅ Image input support for all models
43
+ - ✅ All required metadata for OpenCode features
44
+
45
+ ### Modern Config Benefits (v1.0.210+)
46
+
47
+ - **74% smaller**: 150 lines vs 572 lines
48
+ - **DRY**: Common options defined once at provider level
49
+ - **Variant cycling**: Built-in support for `Ctrl+T` to switch reasoning levels
50
+ - **Easier maintenance**: Add new variants without copying model definitions
51
+
52
+ ## Usage
53
+
54
+ 1. **Check your OpenCode version**:
55
+ ```bash
56
+ opencode --version
57
+ ```
58
+
59
+ 2. **Copy the appropriate config** based on your version:
60
+ ```bash
61
+ # For v1.0.210+ (recommended):
62
+ cp config/opencode-modern.json ~/.config/opencode/opencode.json
63
+
64
+ # For older versions:
65
+ cp config/opencode-legacy.json ~/.config/opencode/opencode.json
66
+ ```
67
+
68
+ 3. **Run opencode**:
69
+ ```bash
70
+ # Modern config (v1.0.210+):
71
+ opencode run "task" --model=openai/gpt-5.2 --variant=medium
72
+ opencode run "task" --model=openai/gpt-5.2 --variant=high
73
+
74
+ # Legacy config:
75
+ opencode run "task" --model=openai/gpt-5.2-medium
76
+ opencode run "task" --model=openai/gpt-5.2-high
77
+ ```
78
+
79
+ > **⚠️ Important**: Use the config file appropriate for your OpenCode version. Using the modern config with an older OpenCode version (v1.0.209 or below) will not work correctly.
80
+
81
+ > **Note**: The config templates use an **unversioned** plugin entry (`oc-chatgpt-multi-auth`) so the installer can always pull the latest release. If you need reproducibility, pin a specific version manually.
82
+
83
+ ### Minimal config (advanced)
84
+
85
+ A barebones example is available at [`minimal-opencode.json`](./minimal-opencode.json). It’s intended for debugging and does not include the full GPT‑5.x/Codex preset/variant definitions.
86
+
87
+ For normal usage, prefer `opencode-modern.json` (v1.0.210+) or `opencode-legacy.json` (v1.0.209 and below).
88
+
89
+ ## Available Models
90
+
91
+
92
+ Both configs provide access to the same model families:
93
+
94
+ - **gpt-5.2** (none/low/medium/high/xhigh) - Latest GPT 5.2 model with full reasoning support
95
+ - **gpt-5.2-codex** (low/medium/high/xhigh) - GPT 5.2 Codex presets
96
+ - **gpt-5.1-codex-max** (low/medium/high/xhigh) - Codex Max presets
97
+ - **gpt-5.1-codex** (low/medium/high) - Codex model presets
98
+ - **gpt-5.1-codex-mini** (medium/high) - Codex mini tier presets
99
+ - **gpt-5.1** (none/low/medium/high) - General-purpose reasoning presets
100
+
101
+ All appear in the opencode model selector as "GPT 5.1 Codex Low (OAuth)", "GPT 5.1 High (OAuth)", etc.
102
+
103
+ ## Configuration Options
104
+
105
+ See the main [README.md](../README.md#configuration) for detailed documentation of all configuration options.
106
+
107
+ ## Version History
108
+
109
+ - **January 2026 (v1.0.210+)**: Introduced variant system support. Use `opencode-modern.json`
110
+ - **December 2025 and earlier**: Use `opencode-legacy.json`
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "plugin": ["oc-chatgpt-multi-auth"],
4
+
5
+ "provider": {
6
+ "openai": {
7
+ "options": {
8
+ "store": false
9
+ }
10
+ }
11
+ },
12
+ "model": "openai/gpt-5-codex"
13
+ }
@@ -0,0 +1,572 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "plugin": [
4
+ "oc-chatgpt-multi-auth"
5
+ ],
6
+
7
+ "provider": {
8
+ "openai": {
9
+ "options": {
10
+ "reasoningEffort": "medium",
11
+ "reasoningSummary": "auto",
12
+ "textVerbosity": "medium",
13
+ "include": [
14
+ "reasoning.encrypted_content"
15
+ ],
16
+ "store": false
17
+ },
18
+ "models": {
19
+ "gpt-5.2-none": {
20
+ "name": "GPT 5.2 None (OAuth)",
21
+ "limit": {
22
+ "context": 272000,
23
+ "output": 128000
24
+ },
25
+ "modalities": {
26
+ "input": [
27
+ "text",
28
+ "image"
29
+ ],
30
+ "output": [
31
+ "text"
32
+ ]
33
+ },
34
+ "options": {
35
+ "reasoningEffort": "none",
36
+ "reasoningSummary": "auto",
37
+ "textVerbosity": "medium",
38
+ "include": [
39
+ "reasoning.encrypted_content"
40
+ ],
41
+ "store": false
42
+ }
43
+ },
44
+ "gpt-5.2-low": {
45
+ "name": "GPT 5.2 Low (OAuth)",
46
+ "limit": {
47
+ "context": 272000,
48
+ "output": 128000
49
+ },
50
+ "modalities": {
51
+ "input": [
52
+ "text",
53
+ "image"
54
+ ],
55
+ "output": [
56
+ "text"
57
+ ]
58
+ },
59
+ "options": {
60
+ "reasoningEffort": "low",
61
+ "reasoningSummary": "auto",
62
+ "textVerbosity": "medium",
63
+ "include": [
64
+ "reasoning.encrypted_content"
65
+ ],
66
+ "store": false
67
+ }
68
+ },
69
+ "gpt-5.2-medium": {
70
+ "name": "GPT 5.2 Medium (OAuth)",
71
+ "limit": {
72
+ "context": 272000,
73
+ "output": 128000
74
+ },
75
+ "modalities": {
76
+ "input": [
77
+ "text",
78
+ "image"
79
+ ],
80
+ "output": [
81
+ "text"
82
+ ]
83
+ },
84
+ "options": {
85
+ "reasoningEffort": "medium",
86
+ "reasoningSummary": "auto",
87
+ "textVerbosity": "medium",
88
+ "include": [
89
+ "reasoning.encrypted_content"
90
+ ],
91
+ "store": false
92
+ }
93
+ },
94
+ "gpt-5.2-high": {
95
+ "name": "GPT 5.2 High (OAuth)",
96
+ "limit": {
97
+ "context": 272000,
98
+ "output": 128000
99
+ },
100
+ "modalities": {
101
+ "input": [
102
+ "text",
103
+ "image"
104
+ ],
105
+ "output": [
106
+ "text"
107
+ ]
108
+ },
109
+ "options": {
110
+ "reasoningEffort": "high",
111
+ "reasoningSummary": "detailed",
112
+ "textVerbosity": "medium",
113
+ "include": [
114
+ "reasoning.encrypted_content"
115
+ ],
116
+ "store": false
117
+ }
118
+ },
119
+ "gpt-5.2-xhigh": {
120
+ "name": "GPT 5.2 Extra High (OAuth)",
121
+ "limit": {
122
+ "context": 272000,
123
+ "output": 128000
124
+ },
125
+ "modalities": {
126
+ "input": [
127
+ "text",
128
+ "image"
129
+ ],
130
+ "output": [
131
+ "text"
132
+ ]
133
+ },
134
+ "options": {
135
+ "reasoningEffort": "xhigh",
136
+ "reasoningSummary": "detailed",
137
+ "textVerbosity": "medium",
138
+ "include": [
139
+ "reasoning.encrypted_content"
140
+ ],
141
+ "store": false
142
+ }
143
+ },
144
+ "gpt-5.2-codex-low": {
145
+ "name": "GPT 5.2 Codex Low (OAuth)",
146
+ "limit": {
147
+ "context": 272000,
148
+ "output": 128000
149
+ },
150
+ "modalities": {
151
+ "input": [
152
+ "text",
153
+ "image"
154
+ ],
155
+ "output": [
156
+ "text"
157
+ ]
158
+ },
159
+ "options": {
160
+ "reasoningEffort": "low",
161
+ "reasoningSummary": "auto",
162
+ "textVerbosity": "medium",
163
+ "include": [
164
+ "reasoning.encrypted_content"
165
+ ],
166
+ "store": false
167
+ }
168
+ },
169
+ "gpt-5.2-codex-medium": {
170
+ "name": "GPT 5.2 Codex Medium (OAuth)",
171
+ "limit": {
172
+ "context": 272000,
173
+ "output": 128000
174
+ },
175
+ "modalities": {
176
+ "input": [
177
+ "text",
178
+ "image"
179
+ ],
180
+ "output": [
181
+ "text"
182
+ ]
183
+ },
184
+ "options": {
185
+ "reasoningEffort": "medium",
186
+ "reasoningSummary": "auto",
187
+ "textVerbosity": "medium",
188
+ "include": [
189
+ "reasoning.encrypted_content"
190
+ ],
191
+ "store": false
192
+ }
193
+ },
194
+ "gpt-5.2-codex-high": {
195
+ "name": "GPT 5.2 Codex High (OAuth)",
196
+ "limit": {
197
+ "context": 272000,
198
+ "output": 128000
199
+ },
200
+ "modalities": {
201
+ "input": [
202
+ "text",
203
+ "image"
204
+ ],
205
+ "output": [
206
+ "text"
207
+ ]
208
+ },
209
+ "options": {
210
+ "reasoningEffort": "high",
211
+ "reasoningSummary": "detailed",
212
+ "textVerbosity": "medium",
213
+ "include": [
214
+ "reasoning.encrypted_content"
215
+ ],
216
+ "store": false
217
+ }
218
+ },
219
+ "gpt-5.2-codex-xhigh": {
220
+ "name": "GPT 5.2 Codex Extra High (OAuth)",
221
+ "limit": {
222
+ "context": 272000,
223
+ "output": 128000
224
+ },
225
+ "modalities": {
226
+ "input": [
227
+ "text",
228
+ "image"
229
+ ],
230
+ "output": [
231
+ "text"
232
+ ]
233
+ },
234
+ "options": {
235
+ "reasoningEffort": "xhigh",
236
+ "reasoningSummary": "detailed",
237
+ "textVerbosity": "medium",
238
+ "include": [
239
+ "reasoning.encrypted_content"
240
+ ],
241
+ "store": false
242
+ }
243
+ },
244
+ "gpt-5.1-codex-max-low": {
245
+ "name": "GPT 5.1 Codex Max Low (OAuth)",
246
+ "limit": {
247
+ "context": 272000,
248
+ "output": 128000
249
+ },
250
+ "modalities": {
251
+ "input": [
252
+ "text",
253
+ "image"
254
+ ],
255
+ "output": [
256
+ "text"
257
+ ]
258
+ },
259
+ "options": {
260
+ "reasoningEffort": "low",
261
+ "reasoningSummary": "detailed",
262
+ "textVerbosity": "medium",
263
+ "include": [
264
+ "reasoning.encrypted_content"
265
+ ],
266
+ "store": false
267
+ }
268
+ },
269
+ "gpt-5.1-codex-max-medium": {
270
+ "name": "GPT 5.1 Codex Max Medium (OAuth)",
271
+ "limit": {
272
+ "context": 272000,
273
+ "output": 128000
274
+ },
275
+ "modalities": {
276
+ "input": [
277
+ "text",
278
+ "image"
279
+ ],
280
+ "output": [
281
+ "text"
282
+ ]
283
+ },
284
+ "options": {
285
+ "reasoningEffort": "medium",
286
+ "reasoningSummary": "detailed",
287
+ "textVerbosity": "medium",
288
+ "include": [
289
+ "reasoning.encrypted_content"
290
+ ],
291
+ "store": false
292
+ }
293
+ },
294
+ "gpt-5.1-codex-max-high": {
295
+ "name": "GPT 5.1 Codex Max High (OAuth)",
296
+ "limit": {
297
+ "context": 272000,
298
+ "output": 128000
299
+ },
300
+ "modalities": {
301
+ "input": [
302
+ "text",
303
+ "image"
304
+ ],
305
+ "output": [
306
+ "text"
307
+ ]
308
+ },
309
+ "options": {
310
+ "reasoningEffort": "high",
311
+ "reasoningSummary": "detailed",
312
+ "textVerbosity": "medium",
313
+ "include": [
314
+ "reasoning.encrypted_content"
315
+ ],
316
+ "store": false
317
+ }
318
+ },
319
+ "gpt-5.1-codex-max-xhigh": {
320
+ "name": "GPT 5.1 Codex Max Extra High (OAuth)",
321
+ "limit": {
322
+ "context": 272000,
323
+ "output": 128000
324
+ },
325
+ "modalities": {
326
+ "input": [
327
+ "text",
328
+ "image"
329
+ ],
330
+ "output": [
331
+ "text"
332
+ ]
333
+ },
334
+ "options": {
335
+ "reasoningEffort": "xhigh",
336
+ "reasoningSummary": "detailed",
337
+ "textVerbosity": "medium",
338
+ "include": [
339
+ "reasoning.encrypted_content"
340
+ ],
341
+ "store": false
342
+ }
343
+ },
344
+ "gpt-5.1-codex-low": {
345
+ "name": "GPT 5.1 Codex Low (OAuth)",
346
+ "limit": {
347
+ "context": 272000,
348
+ "output": 128000
349
+ },
350
+ "modalities": {
351
+ "input": [
352
+ "text",
353
+ "image"
354
+ ],
355
+ "output": [
356
+ "text"
357
+ ]
358
+ },
359
+ "options": {
360
+ "reasoningEffort": "low",
361
+ "reasoningSummary": "auto",
362
+ "textVerbosity": "medium",
363
+ "include": [
364
+ "reasoning.encrypted_content"
365
+ ],
366
+ "store": false
367
+ }
368
+ },
369
+ "gpt-5.1-codex-medium": {
370
+ "name": "GPT 5.1 Codex Medium (OAuth)",
371
+ "limit": {
372
+ "context": 272000,
373
+ "output": 128000
374
+ },
375
+ "modalities": {
376
+ "input": [
377
+ "text",
378
+ "image"
379
+ ],
380
+ "output": [
381
+ "text"
382
+ ]
383
+ },
384
+ "options": {
385
+ "reasoningEffort": "medium",
386
+ "reasoningSummary": "auto",
387
+ "textVerbosity": "medium",
388
+ "include": [
389
+ "reasoning.encrypted_content"
390
+ ],
391
+ "store": false
392
+ }
393
+ },
394
+ "gpt-5.1-codex-high": {
395
+ "name": "GPT 5.1 Codex High (OAuth)",
396
+ "limit": {
397
+ "context": 272000,
398
+ "output": 128000
399
+ },
400
+ "modalities": {
401
+ "input": [
402
+ "text",
403
+ "image"
404
+ ],
405
+ "output": [
406
+ "text"
407
+ ]
408
+ },
409
+ "options": {
410
+ "reasoningEffort": "high",
411
+ "reasoningSummary": "detailed",
412
+ "textVerbosity": "medium",
413
+ "include": [
414
+ "reasoning.encrypted_content"
415
+ ],
416
+ "store": false
417
+ }
418
+ },
419
+ "gpt-5.1-codex-mini-medium": {
420
+ "name": "GPT 5.1 Codex Mini Medium (OAuth)",
421
+ "limit": {
422
+ "context": 272000,
423
+ "output": 128000
424
+ },
425
+ "modalities": {
426
+ "input": [
427
+ "text",
428
+ "image"
429
+ ],
430
+ "output": [
431
+ "text"
432
+ ]
433
+ },
434
+ "options": {
435
+ "reasoningEffort": "medium",
436
+ "reasoningSummary": "auto",
437
+ "textVerbosity": "medium",
438
+ "include": [
439
+ "reasoning.encrypted_content"
440
+ ],
441
+ "store": false
442
+ }
443
+ },
444
+ "gpt-5.1-codex-mini-high": {
445
+ "name": "GPT 5.1 Codex Mini High (OAuth)",
446
+ "limit": {
447
+ "context": 272000,
448
+ "output": 128000
449
+ },
450
+ "modalities": {
451
+ "input": [
452
+ "text",
453
+ "image"
454
+ ],
455
+ "output": [
456
+ "text"
457
+ ]
458
+ },
459
+ "options": {
460
+ "reasoningEffort": "high",
461
+ "reasoningSummary": "detailed",
462
+ "textVerbosity": "medium",
463
+ "include": [
464
+ "reasoning.encrypted_content"
465
+ ],
466
+ "store": false
467
+ }
468
+ },
469
+ "gpt-5.1-none": {
470
+ "name": "GPT 5.1 None (OAuth)",
471
+ "limit": {
472
+ "context": 272000,
473
+ "output": 128000
474
+ },
475
+ "modalities": {
476
+ "input": [
477
+ "text",
478
+ "image"
479
+ ],
480
+ "output": [
481
+ "text"
482
+ ]
483
+ },
484
+ "options": {
485
+ "reasoningEffort": "none",
486
+ "reasoningSummary": "auto",
487
+ "textVerbosity": "medium",
488
+ "include": [
489
+ "reasoning.encrypted_content"
490
+ ],
491
+ "store": false
492
+ }
493
+ },
494
+ "gpt-5.1-low": {
495
+ "name": "GPT 5.1 Low (OAuth)",
496
+ "limit": {
497
+ "context": 272000,
498
+ "output": 128000
499
+ },
500
+ "modalities": {
501
+ "input": [
502
+ "text",
503
+ "image"
504
+ ],
505
+ "output": [
506
+ "text"
507
+ ]
508
+ },
509
+ "options": {
510
+ "reasoningEffort": "low",
511
+ "reasoningSummary": "auto",
512
+ "textVerbosity": "low",
513
+ "include": [
514
+ "reasoning.encrypted_content"
515
+ ],
516
+ "store": false
517
+ }
518
+ },
519
+ "gpt-5.1-medium": {
520
+ "name": "GPT 5.1 Medium (OAuth)",
521
+ "limit": {
522
+ "context": 272000,
523
+ "output": 128000
524
+ },
525
+ "modalities": {
526
+ "input": [
527
+ "text",
528
+ "image"
529
+ ],
530
+ "output": [
531
+ "text"
532
+ ]
533
+ },
534
+ "options": {
535
+ "reasoningEffort": "medium",
536
+ "reasoningSummary": "auto",
537
+ "textVerbosity": "medium",
538
+ "include": [
539
+ "reasoning.encrypted_content"
540
+ ],
541
+ "store": false
542
+ }
543
+ },
544
+ "gpt-5.1-high": {
545
+ "name": "GPT 5.1 High (OAuth)",
546
+ "limit": {
547
+ "context": 272000,
548
+ "output": 128000
549
+ },
550
+ "modalities": {
551
+ "input": [
552
+ "text",
553
+ "image"
554
+ ],
555
+ "output": [
556
+ "text"
557
+ ]
558
+ },
559
+ "options": {
560
+ "reasoningEffort": "high",
561
+ "reasoningSummary": "detailed",
562
+ "textVerbosity": "high",
563
+ "include": [
564
+ "reasoning.encrypted_content"
565
+ ],
566
+ "store": false
567
+ }
568
+ }
569
+ }
570
+ }
571
+ }
572
+ }