@vybestack/llxprt-code-core 0.7.0-nightly.251214.7c8736a50 → 0.7.0-nightly.251215.66bf0bc39

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 (56) hide show
  1. package/dist/src/auth/codex-device-flow.d.ts +56 -0
  2. package/dist/src/auth/codex-device-flow.js +231 -0
  3. package/dist/src/auth/codex-device-flow.js.map +1 -0
  4. package/dist/src/auth/token-store.d.ts +38 -8
  5. package/dist/src/auth/token-store.js +91 -15
  6. package/dist/src/auth/token-store.js.map +1 -1
  7. package/dist/src/auth/types.d.ts +82 -5
  8. package/dist/src/auth/types.js +28 -1
  9. package/dist/src/auth/types.js.map +1 -1
  10. package/dist/src/config/config.d.ts +34 -0
  11. package/dist/src/config/config.js +15 -0
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/confirmation-bus/message-bus.d.ts +18 -0
  14. package/dist/src/confirmation-bus/message-bus.js +48 -0
  15. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  16. package/dist/src/confirmation-bus/types.d.ts +23 -2
  17. package/dist/src/confirmation-bus/types.js +2 -0
  18. package/dist/src/confirmation-bus/types.js.map +1 -1
  19. package/dist/src/core/bucketFailoverIntegration.d.ts +61 -0
  20. package/dist/src/core/bucketFailoverIntegration.js +168 -0
  21. package/dist/src/core/bucketFailoverIntegration.js.map +1 -0
  22. package/dist/src/core/geminiChat.js +18 -3
  23. package/dist/src/core/geminiChat.js.map +1 -1
  24. package/dist/src/index.d.ts +1 -0
  25. package/dist/src/index.js +1 -0
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +6 -0
  28. package/dist/src/mcp/token-storage/keychain-token-storage.js +22 -4
  29. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  30. package/dist/src/providers/BaseProvider.d.ts +1 -0
  31. package/dist/src/providers/BaseProvider.js +2 -1
  32. package/dist/src/providers/BaseProvider.js.map +1 -1
  33. package/dist/src/providers/anthropic/AnthropicProvider.js +38 -8
  34. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  35. package/dist/src/providers/gemini/GeminiProvider.d.ts +11 -0
  36. package/dist/src/providers/gemini/GeminiProvider.js +75 -10
  37. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  38. package/dist/src/providers/openai/OpenAIProvider.js +76 -12
  39. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  40. package/dist/src/providers/openai-responses/CODEX_MODELS.d.ts +23 -0
  41. package/dist/src/providers/openai-responses/CODEX_MODELS.js +48 -0
  42. package/dist/src/providers/openai-responses/CODEX_MODELS.js.map +1 -0
  43. package/dist/src/providers/openai-responses/CODEX_PROMPT.d.ts +22 -0
  44. package/dist/src/providers/openai-responses/CODEX_PROMPT.js +332 -0
  45. package/dist/src/providers/openai-responses/CODEX_PROMPT.js.map +1 -0
  46. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +38 -2
  47. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +191 -32
  48. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
  49. package/dist/src/providers/openai-vercel/OpenAIVercelProvider.js +90 -7
  50. package/dist/src/providers/openai-vercel/OpenAIVercelProvider.js.map +1 -1
  51. package/dist/src/types/modelParams.d.ts +41 -0
  52. package/dist/src/types/modelParams.js +30 -0
  53. package/dist/src/types/modelParams.js.map +1 -1
  54. package/dist/src/utils/retry.js +33 -0
  55. package/dist/src/utils/retry.js.map +1 -1
  56. package/package.json +1 -1
@@ -23,6 +23,8 @@
23
23
  // Removed ConversationCache and peekActiveProviderRuntime dependencies to enforce stateless operation
24
24
  import { DebugLogger } from '../../debug/index.js';
25
25
  import { RESPONSES_API_MODELS } from '../openai/RESPONSES_API_MODELS.js';
26
+ import { CODEX_MODELS } from './CODEX_MODELS.js';
27
+ import { CODEX_SYSTEM_PROMPT } from './CODEX_PROMPT.js';
26
28
  import { parseResponsesStream, parseErrorResponse, } from '../openai/parseResponsesStream.js';
27
29
  import { BaseProvider, } from '../BaseProvider.js';
28
30
  import { convertToolsToOpenAIResponses } from './schemaConverter.js';
@@ -30,39 +32,110 @@ import { getCoreSystemPromptAsync } from '../../core/prompts.js';
30
32
  import { resolveUserMemory } from '../utils/userMemory.js';
31
33
  import { resolveRuntimeAuthToken } from '../utils/authToken.js';
32
34
  import { filterOpenAIRequestParams } from '../openai/openaiRequestParams.js';
35
+ import { CodexOAuthTokenSchema } from '../../auth/types.js';
36
+ import { retryWithBackoff, getErrorStatus, isNetworkTransientError, } from '../../utils/retry.js';
33
37
  export class OpenAIResponsesProvider extends BaseProvider {
34
38
  logger;
39
+ _isCodexMode;
35
40
  // @plan:PLAN-20251023-STATELESS-HARDENING.P08
36
41
  // @requirement:REQ-SP4-002/REQ-SP4-003
37
42
  // Removed static cache scope and conversation cache dependencies to achieve stateless operation
38
- constructor(apiKey, baseURL, config) {
43
+ constructor(apiKey, baseURL, config, oauthManager) {
44
+ // Detect Codex mode from baseURL at construction time
45
+ const isCodex = baseURL?.includes('chatgpt.com/backend-api/codex') ?? false;
39
46
  const baseConfig = {
40
47
  name: 'openai-responses',
41
48
  apiKey,
42
49
  baseURL: baseURL || 'https://api.openai.com/v1',
43
50
  envKeyNames: ['OPENAI_API_KEY'],
44
- isOAuthEnabled: false,
45
- oauthProvider: undefined,
46
- oauthManager: undefined,
51
+ isOAuthEnabled: isCodex && !!oauthManager,
52
+ oauthProvider: isCodex ? 'codex' : undefined,
53
+ oauthManager: isCodex ? oauthManager : undefined,
54
+ // Must set supportsOAuth here because supportsOAuth() is called in super()
55
+ // before _isCodexMode is set
56
+ supportsOAuth: isCodex,
47
57
  };
48
58
  super(baseConfig, config);
59
+ this._isCodexMode = isCodex;
49
60
  this.logger = new DebugLogger('llxprt:providers:openai-responses');
50
- this.logger.debug(() => `Constructor - baseURL: ${baseURL || 'https://api.openai.com/v1'}, apiKey: ${apiKey?.substring(0, 10) || 'none'}`);
61
+ this.logger.debug(() => `Constructor - baseURL: ${baseURL || 'https://api.openai.com/v1'}, hasApiKey: ${!!apiKey}, codexMode: ${isCodex}`);
51
62
  }
52
63
  /**
53
- * This provider does not support OAuth
64
+ * OAuth is supported in Codex mode
65
+ * Check baseURL directly to avoid timing issues with instance properties
66
+ * @plan PLAN-20251213-ISSUE160.P03
54
67
  */
55
- // @plan:PLAN-20251023-STATELESS-HARDENING.P08
56
- // @requirement:REQ-SP4-002/REQ-SP4-003
57
- // Removed stateful conversation cache methods to ensure stateless operation
58
68
  supportsOAuth() {
69
+ // Check baseURL directly - don't rely on _isCodexMode which may not be set yet
70
+ const baseURL = this.getBaseURL();
71
+ return this.isCodexMode(baseURL);
72
+ }
73
+ /**
74
+ * Detect if provider is in Codex mode based on baseURL
75
+ * @plan PLAN-20251213-ISSUE160.P03
76
+ */
77
+ isCodexMode(baseURL) {
78
+ return baseURL?.includes('chatgpt.com/backend-api/codex') ?? false;
79
+ }
80
+ /**
81
+ * @plan PLAN-20251215-issue813
82
+ * @requirement REQ-RETRY-001: OpenAIResponsesProvider must use retryWithBackoff for all fetch calls
83
+ *
84
+ * Determines if an error should trigger a retry.
85
+ * - 429 (rate limit) errors are retried
86
+ * - 5xx server errors are retried
87
+ * - 400 (bad request) errors are NOT retried
88
+ * - Network transient errors are retried
89
+ */
90
+ shouldRetryOnError(error) {
91
+ // Check for status using helper (handles error shapes from fetch)
92
+ const status = getErrorStatus(error);
93
+ if (status !== undefined) {
94
+ if (status === 400)
95
+ return false;
96
+ return status === 429 || (status >= 500 && status < 600);
97
+ }
98
+ // Check for network transient errors
99
+ if (isNetworkTransientError(error)) {
100
+ return true;
101
+ }
59
102
  return false;
60
103
  }
104
+ /**
105
+ * Get account_id from Codex OAuth token
106
+ * @plan PLAN-20251213-ISSUE160.P03
107
+ */
108
+ async getCodexAccountId() {
109
+ // Get OAuth manager from base config
110
+ const oauthManager = this.baseProviderConfig.oauthManager;
111
+ if (!oauthManager) {
112
+ throw new Error('Codex mode requires OAuth authentication with account_id - no OAuth manager available');
113
+ }
114
+ // Get the full token from the OAuth manager
115
+ // getOAuthToken returns the full token object (with account_id preserved via passthrough)
116
+ const token = await oauthManager.getOAuthToken?.('codex');
117
+ if (!token) {
118
+ throw new Error('Codex mode requires OAuth authentication - no token available. Run /auth codex enable');
119
+ }
120
+ // Validate with Zod schema to get account_id
121
+ const validatedToken = CodexOAuthTokenSchema.parse(token);
122
+ return validatedToken.account_id;
123
+ }
61
124
  getToolFormat() {
62
125
  // Always use OpenAI format for responses API
63
126
  return 'openai';
64
127
  }
65
128
  async getModels() {
129
+ const baseURL = this.getBaseURL() || 'https://api.openai.com/v1';
130
+ const isCodex = this.isCodexMode(baseURL);
131
+ // @plan PLAN-20251214-ISSUE160.P05
132
+ // Debug logging for model listing
133
+ this.logger.debug(() => `getModels() called: baseURL=${baseURL}, isCodexMode=${isCodex}, providerName=${this.name}`);
134
+ // @plan PLAN-20251214-ISSUE160.P06
135
+ // Fetch models from Codex API when in Codex mode
136
+ if (isCodex) {
137
+ return this.getCodexModels(baseURL);
138
+ }
66
139
  // Try to fetch models dynamically from the API
67
140
  const apiKey = await this.getAuthToken();
68
141
  if (!apiKey) {
@@ -75,13 +148,15 @@ export class OpenAIResponsesProvider extends BaseProvider {
75
148
  }));
76
149
  }
77
150
  try {
151
+ // @plan PLAN-20251215-issue813: Wrap with retryWithBackoff for 429/5xx handling
78
152
  // Fetch models from the API
79
- const baseURL = this.getBaseURL() || 'https://api.openai.com/v1';
80
- const response = await fetch(`${baseURL}/models`, {
153
+ const response = await retryWithBackoff(() => fetch(`${baseURL}/models`, {
81
154
  method: 'GET',
82
155
  headers: {
83
156
  Authorization: `Bearer ${apiKey}`,
84
157
  },
158
+ }), {
159
+ shouldRetryOnError: this.shouldRetryOnError.bind(this),
85
160
  });
86
161
  if (response.ok) {
87
162
  const data = (await response.json());
@@ -119,10 +194,30 @@ export class OpenAIResponsesProvider extends BaseProvider {
119
194
  supportedToolFormats: ['openai'],
120
195
  }));
121
196
  }
197
+ /**
198
+ * Get Codex models
199
+ *
200
+ * Note: The Codex /models endpoint is protected by Cloudflare bot detection
201
+ * which blocks automated requests (even with proper auth headers).
202
+ * The /responses endpoint works fine, but /models returns a Cloudflare challenge.
203
+ * Therefore, we use a hardcoded list based on codex-rs/core/tests/suite/list_models.rs
204
+ *
205
+ * @plan PLAN-20251214-ISSUE160.P06
206
+ */
207
+ async getCodexModels(_baseURL) {
208
+ this.logger.debug(() => 'Codex mode: returning hardcoded models (API blocked by Cloudflare)');
209
+ return CODEX_MODELS;
210
+ }
122
211
  getCurrentModel() {
123
212
  return this.getModel();
124
213
  }
125
214
  getDefaultModel() {
215
+ // @plan PLAN-20251213-ISSUE160.P04
216
+ // Return gpt-5.2 as default when in Codex mode
217
+ const baseURL = this.getBaseURL();
218
+ if (this.isCodexMode(baseURL)) {
219
+ return 'gpt-5.2';
220
+ }
126
221
  // Return the default model for responses API
127
222
  return 'o3-mini';
128
223
  }
@@ -190,11 +285,14 @@ export class OpenAIResponsesProvider extends BaseProvider {
190
285
  */
191
286
  async *generateChatCompletionWithOptions(options) {
192
287
  const { contents: content, tools } = options;
193
- const apiKey = (await this.getAuthToken()) ??
288
+ // Use getAuthTokenForPrompt() to trigger OAuth if needed
289
+ const apiKey = (await this.getAuthTokenForPrompt()) ??
194
290
  (await resolveRuntimeAuthToken(options.resolved.authToken)) ??
195
291
  '';
196
292
  if (!apiKey) {
197
- throw new Error('OpenAI API key is required to generate completions');
293
+ throw new Error(this._isCodexMode
294
+ ? 'Codex authentication required. Run /auth codex enable to authenticate.'
295
+ : 'OpenAI API key is required');
198
296
  }
199
297
  const resolvedModel = options.resolved.model || this.getDefaultModel();
200
298
  const toolNamesForPrompt = tools === undefined
@@ -225,28 +323,34 @@ export class OpenAIResponsesProvider extends BaseProvider {
225
323
  const textBlocks = c.blocks.filter((b) => b.type === 'text');
226
324
  const toolCallBlocks = c.blocks.filter((b) => b.type === 'tool_call');
227
325
  const contentText = textBlocks.map((b) => b.text).join('');
228
- if (contentText || toolCallBlocks.length > 0) {
229
- const assistantMsg = {
326
+ // Add assistant text content if present
327
+ if (contentText) {
328
+ input.push({
230
329
  role: 'assistant',
231
- };
232
- if (contentText) {
233
- assistantMsg.content = contentText;
234
- }
235
- else {
236
- assistantMsg.content = `[Called ${toolCallBlocks.length} tool${toolCallBlocks.length > 1 ? 's' : ''}: ${toolCallBlocks.map((tc) => tc.name).join(', ')}]`;
237
- }
238
- input.push(assistantMsg);
330
+ content: contentText,
331
+ });
332
+ }
333
+ // Add function_call items for each tool call (Responses API format)
334
+ for (const toolCall of toolCallBlocks) {
335
+ input.push({
336
+ type: 'function_call',
337
+ call_id: toolCall.id,
338
+ name: toolCall.name,
339
+ arguments: JSON.stringify(toolCall.parameters),
340
+ });
239
341
  }
240
342
  }
241
343
  else if (c.speaker === 'tool') {
242
- const toolResponseBlock = c.blocks.find((b) => b.type === 'tool_response');
243
- if (toolResponseBlock) {
344
+ // Convert tool responses to function_call_output format (Responses API)
345
+ const toolResponseBlocks = c.blocks.filter((b) => b.type === 'tool_response');
346
+ for (const toolResponseBlock of toolResponseBlocks) {
244
347
  const result = typeof toolResponseBlock.result === 'string'
245
348
  ? toolResponseBlock.result
246
349
  : JSON.stringify(toolResponseBlock.result);
247
350
  input.push({
248
- role: 'assistant',
249
- content: `[Tool ${toolResponseBlock.toolName} result]: ${result}`,
351
+ type: 'function_call_output',
352
+ call_id: toolResponseBlock.callId,
353
+ output: result,
250
354
  });
251
355
  }
252
356
  }
@@ -261,10 +365,24 @@ export class OpenAIResponsesProvider extends BaseProvider {
261
365
  const filteredSettingsParams = filterOpenAIRequestParams(settingsServiceModelParams);
262
366
  const filteredEphemeralParams = filterOpenAIRequestParams(runtimeConfigEphemeralSettings);
263
367
  // Include both ephemeral and persistent settings, with ephemeral settings taking precedence
264
- const requestOverrides = {
368
+ const mergedParams = {
265
369
  ...(filteredSettingsParams ?? {}),
266
370
  ...(filteredEphemeralParams ?? {}),
267
371
  };
372
+ // Translate max_tokens/max_completion_tokens to max_output_tokens for Responses API
373
+ // The Responses API uses max_output_tokens, not max_tokens (GPT-5 models)
374
+ const requestOverrides = {};
375
+ for (const [key, value] of Object.entries(mergedParams)) {
376
+ if (key === 'max_tokens' || key === 'max_completion_tokens') {
377
+ // Responses API uses max_output_tokens
378
+ requestOverrides['max_output_tokens'] = value;
379
+ this.logger.debug(() => `Translated ${key}=${value} to max_output_tokens for Responses API`);
380
+ }
381
+ else {
382
+ requestOverrides[key] = value;
383
+ }
384
+ }
385
+ this.logger.debug(() => `Request overrides: ${JSON.stringify(Object.keys(requestOverrides))}`);
268
386
  // @plan:PLAN-20251023-STATELESS-HARDENING.P08
269
387
  // @requirement:REQ-SP4-002/REQ-SP4-003
270
388
  // Prefer resolved options, then runtime config, then defaults instead of stored provider state
@@ -272,19 +390,48 @@ export class OpenAIResponsesProvider extends BaseProvider {
272
390
  this.getBaseURL() ??
273
391
  'https://api.openai.com/v1';
274
392
  const baseURL = baseURLCandidate.replace(/\/+$/u, '');
393
+ // @plan PLAN-20251213-ISSUE160.P03
394
+ // Detect Codex mode and handle accordingly
395
+ const isCodex = this.isCodexMode(baseURL);
396
+ // Build request input - filter out system messages for Codex (uses instructions field instead)
397
+ let requestInput = input;
398
+ if (isCodex) {
399
+ // In Codex mode, system prompt goes in instructions field, not input array
400
+ // Only filter items that have a 'role' property (function_call/function_call_output don't)
401
+ requestInput = requestInput.filter((msg) => !('role' in msg) || msg.role !== 'system');
402
+ }
275
403
  const request = {
276
404
  model: resolvedModel,
277
- input,
405
+ input: requestInput,
278
406
  stream: true,
279
407
  ...(requestOverrides || {}),
280
408
  };
281
409
  if (responsesTools && responsesTools.length > 0) {
282
410
  request.tools = responsesTools;
283
411
  }
412
+ // @plan PLAN-20251214-ISSUE160.P05
413
+ // Add Codex-specific request parameters
414
+ if (isCodex) {
415
+ // Codex API requires the official system prompt in instructions field
416
+ request.instructions = CODEX_SYSTEM_PROMPT;
417
+ request.store = false;
418
+ // Codex API (ChatGPT backend) doesn't support max_output_tokens parameter
419
+ // Remove it to prevent 400 errors
420
+ if ('max_output_tokens' in request) {
421
+ delete request.max_output_tokens;
422
+ this.logger.debug(() => 'Codex mode: removed unsupported max_output_tokens from request');
423
+ }
424
+ this.logger.debug(() => 'Codex mode: setting instructions and store=false');
425
+ }
284
426
  const responsesURL = `${baseURL}/responses`;
285
427
  const requestBody = JSON.stringify(request);
428
+ // @plan PLAN-20251214-ISSUE160.P05
429
+ // Codex API requires Content-Type without charset suffix
430
+ const contentType = isCodex
431
+ ? 'application/json'
432
+ : 'application/json; charset=utf-8';
286
433
  const bodyBlob = new Blob([requestBody], {
287
- type: 'application/json; charset=utf-8',
434
+ type: contentType,
288
435
  });
289
436
  // @plan:PLAN-20251023-STATELESS-HARDENING.P08
290
437
  // @requirement:REQ-SP4-002/REQ-SP4-003
@@ -292,16 +439,28 @@ export class OpenAIResponsesProvider extends BaseProvider {
292
439
  const customHeaders = this.getCustomHeaders();
293
440
  const headers = {
294
441
  Authorization: `Bearer ${apiKey}`,
295
- 'Content-Type': 'application/json; charset=utf-8',
442
+ 'Content-Type': contentType,
296
443
  ...(customHeaders ?? {}),
297
444
  };
298
- const response = await fetch(responsesURL, {
445
+ // @plan PLAN-20251214-ISSUE160.P05
446
+ // Add Codex-specific headers when in Codex mode
447
+ if (isCodex) {
448
+ const accountId = await this.getCodexAccountId();
449
+ headers['ChatGPT-Account-ID'] = accountId;
450
+ headers['originator'] = 'codex_cli_rs';
451
+ this.logger.debug(() => `Codex mode: adding headers for account ${accountId.substring(0, 8)}...`);
452
+ }
453
+ // @plan PLAN-20251215-issue813: Wrap with retryWithBackoff for 429/5xx handling
454
+ const response = await retryWithBackoff(() => fetch(responsesURL, {
299
455
  method: 'POST',
300
456
  headers,
301
457
  body: bodyBlob,
458
+ }), {
459
+ shouldRetryOnError: this.shouldRetryOnError.bind(this),
302
460
  });
303
461
  if (!response.ok) {
304
462
  const errorBody = await response.text();
463
+ this.logger.debug(() => `API error ${response.status}: ${errorBody.substring(0, 500)}`);
305
464
  throw parseErrorResponse(response.status, errorBody, this.name);
306
465
  }
307
466
  if (response.body) {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIResponsesProvider.js","sourceRoot":"","sources":["../../../../src/providers/openai-responses/OpenAIResponsesProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIResponsesProvider.js","sourceRoot":"","sources":["../../../../src/providers/openai-responses/OpenAIResponsesProvider.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,74 @@ const streamText = Ai.streamText;
42
42
  const generateText = Ai.generateText;
43
43
  const extractReasoningMiddleware = Ai.extractReasoningMiddleware;
44
44
  const wrapLanguageModel = Ai.wrapLanguageModel;
45
+ function isQwenBaseURL(baseURL) {
46
+ const candidate = baseURL?.trim();
47
+ if (!candidate)
48
+ return false;
49
+ const normalized = candidate.includes('://')
50
+ ? candidate
51
+ : `https://${candidate}`;
52
+ try {
53
+ const hostname = new URL(normalized).hostname.toLowerCase();
54
+ return (hostname === 'dashscope.aliyuncs.com' ||
55
+ hostname.endsWith('.dashscope.aliyuncs.com') ||
56
+ hostname === 'portal.qwen.ai' ||
57
+ hostname.endsWith('.qwen.ai') ||
58
+ hostname === 'api.qwen.com' ||
59
+ hostname.endsWith('.qwen.com'));
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ /**
66
+ * Some OpenAI-compatible providers reject the OpenAI "developer" role. The Vercel
67
+ * OpenAI provider maps system prompts to "developer" for non-gpt-* model IDs, so
68
+ * we rewrite it back to "system" for compatibility.
69
+ */
70
+ function createDeveloperRoleToSystemFetch(innerFetch) {
71
+ return async (input, init) => {
72
+ if (!init || typeof init.body !== 'string') {
73
+ return innerFetch(input, init);
74
+ }
75
+ let parsedBody;
76
+ try {
77
+ parsedBody = JSON.parse(init.body);
78
+ }
79
+ catch {
80
+ return innerFetch(input, init);
81
+ }
82
+ if (!parsedBody ||
83
+ typeof parsedBody !== 'object' ||
84
+ !('messages' in parsedBody) ||
85
+ !Array.isArray(parsedBody.messages)) {
86
+ return innerFetch(input, init);
87
+ }
88
+ let changed = false;
89
+ const rewrittenMessages = parsedBody.messages.map((message) => {
90
+ if (message &&
91
+ typeof message === 'object' &&
92
+ message.role === 'developer') {
93
+ changed = true;
94
+ return { ...message, role: 'system' };
95
+ }
96
+ return message;
97
+ });
98
+ if (!changed) {
99
+ return innerFetch(input, init);
100
+ }
101
+ const headers = new Headers(init.headers);
102
+ headers.delete('content-length');
103
+ return innerFetch(input, {
104
+ ...init,
105
+ headers,
106
+ body: JSON.stringify({
107
+ ...parsedBody,
108
+ messages: rewrittenMessages,
109
+ }),
110
+ });
111
+ };
112
+ }
45
113
  /**
46
114
  * Creates a custom fetch function that intercepts streaming responses
47
115
  * and extracts reasoning_content from SSE chunks.
@@ -137,18 +205,30 @@ export class OpenAIVercelProvider extends BaseProvider {
137
205
  constructor(apiKey, baseURL, config, oauthManager) {
138
206
  // Normalize empty string to undefined for proper precedence handling
139
207
  const normalizedApiKey = apiKey && apiKey.trim() !== '' ? apiKey : undefined;
208
+ const providerConfig = config;
209
+ const forceQwenOAuth = Boolean(providerConfig?.forceQwenOAuth);
210
+ const shouldEnableQwenOAuth = isQwenBaseURL(baseURL) || forceQwenOAuth;
140
211
  super({
141
212
  name: 'openaivercel',
142
213
  apiKey: normalizedApiKey,
143
214
  baseURL,
144
215
  envKeyNames: ['OPENAI_API_KEY'],
145
- // AI SDK-based provider does not use OAuth directly here.
146
- isOAuthEnabled: false,
147
- oauthProvider: undefined,
216
+ isOAuthEnabled: shouldEnableQwenOAuth && !!oauthManager,
217
+ oauthProvider: shouldEnableQwenOAuth ? 'qwen' : undefined,
148
218
  oauthManager,
149
219
  }, config);
150
220
  }
151
221
  supportsOAuth() {
222
+ const providerConfig = this.providerConfig;
223
+ if (providerConfig?.forceQwenOAuth) {
224
+ return true;
225
+ }
226
+ if (this.name === 'qwen') {
227
+ return true;
228
+ }
229
+ if (isQwenBaseURL(this.getBaseURL())) {
230
+ return true;
231
+ }
152
232
  return false;
153
233
  }
154
234
  /**
@@ -163,16 +243,21 @@ export class OpenAIVercelProvider extends BaseProvider {
163
243
  async createOpenAIClient(options, customFetch) {
164
244
  const authToken = (await resolveRuntimeAuthToken(options.resolved.authToken)) ?? '';
165
245
  const baseURL = options.resolved.baseURL ?? this.baseProviderConfig.baseURL;
246
+ const providerConfig = this.providerConfig;
247
+ const shouldForceSystemRole = Boolean(providerConfig?.forceQwenOAuth) || isQwenBaseURL(baseURL);
166
248
  // Allow local endpoints without authentication
167
249
  if (!authToken && !isLocalEndpoint(baseURL)) {
168
250
  throw new AuthenticationError(`Auth token unavailable for runtimeId=${options.runtime?.runtimeId} (REQ-SP4-003).`, this.name);
169
251
  }
170
252
  const headers = this.getCustomHeaders();
253
+ const fetchWithCompatibility = shouldForceSystemRole
254
+ ? createDeveloperRoleToSystemFetch(customFetch ?? fetch)
255
+ : customFetch;
171
256
  return createOpenAI({
172
257
  apiKey: authToken || undefined,
173
258
  baseURL: baseURL || undefined,
174
259
  headers: headers || undefined,
175
- fetch: customFetch,
260
+ fetch: fetchWithCompatibility,
176
261
  });
177
262
  }
178
263
  /**
@@ -1245,9 +1330,7 @@ export class OpenAIVercelProvider extends BaseProvider {
1245
1330
  return models.sort((a, b) => a.name.localeCompare(b.name));
1246
1331
  }
1247
1332
  getDefaultModel() {
1248
- const baseURL = this.getBaseURL();
1249
- if (baseURL &&
1250
- (baseURL.includes('qwen') || baseURL.includes('dashscope'))) {
1333
+ if (isQwenBaseURL(this.getBaseURL())) {
1251
1334
  return process.env.LLXPRT_DEFAULT_MODEL || 'qwen3-coder-plus';
1252
1335
  }
1253
1336
  return process.env.LLXPRT_DEFAULT_MODEL || 'gpt-4o';