@moxxy/plugin-provider-openai-codex 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/models.js CHANGED
@@ -17,15 +17,15 @@ export const codexModels = [
17
17
  // under the same ids the API uses (sol/terra/luna — no `-codex` variant).
18
18
  // Sol is OpenAI's default Codex model. The ChatGPT-plan window cap applies
19
19
  // here too, so keep them at 400k like the rest of this list.
20
- { id: 'gpt-5.6-sol', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
21
- { id: 'gpt-5.6-terra', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
22
- { id: 'gpt-5.6-luna', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
23
- { id: 'gpt-5.5', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
24
- { id: 'gpt-5.4', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
25
- { id: 'gpt-5.4-mini', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
26
- { id: 'gpt-5.3-codex', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
27
- { id: 'gpt-5.3-codex-spark', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
28
- { id: 'gpt-5.2', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
20
+ { id: 'gpt-5.6-sol', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
21
+ { id: 'gpt-5.6-terra', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
22
+ { id: 'gpt-5.6-luna', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
23
+ { id: 'gpt-5.5', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
24
+ { id: 'gpt-5.4', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
25
+ { id: 'gpt-5.4-mini', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
26
+ { id: 'gpt-5.3-codex', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
27
+ { id: 'gpt-5.3-codex-spark', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
28
+ { id: 'gpt-5.2', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
29
29
  ];
30
30
  // OpenAI's own Codex default moved to gpt-5.6-sol at GA (July 9, 2026); mirror
31
31
  // it so a ChatGPT-plan user who hasn't pinned a model gets the current flagship.
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+EAA+E;AAC/E,+EAA+E;AAC/E,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAmC;IACzD,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,8DAA8D;IAC9D,8EAA8E;IAC9E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,6DAA6D;IAC7D,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC7L,EAAE,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC/L,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC9L,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IACzL,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IACzL,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC9L,EAAE,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IAC/L,EAAE,EAAE,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;IACrM,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE;CAC1L,CAAC;AAEF,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0B9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,MAAM,kDAAe;IAE9B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA8C;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAoC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA4B;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,MAAM,GAAE,mBAAwB;IAmBrC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC;IAiH3D,WAAW,CACf,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,GACpE,OAAO,CAAC,MAAM,CAAC;IAiBlB,OAAO,CAAC,SAAS;YAUH,WAAW;IAWzB;;;;;;;OAOG;YACW,UAAU;CA4CzB"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0B9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,MAAM,kDAAe;IAE9B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA8C;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAoC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA4B;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,MAAM,GAAE,mBAAwB;IAmBrC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC;IA4I3D,WAAW,CACf,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,GACpE,OAAO,CAAC,MAAM,CAAC;IAiBlB,OAAO,CAAC,SAAS;YAUH,WAAW;IAWzB;;;;;;;OAOG;YACW,UAAU;CA4CzB"}
package/dist/provider.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { webcrypto } from 'node:crypto';
2
- import { classifyHttpStatus, estimateTextTokens } from '@moxxy/sdk';
2
+ import { classifyHttpStatus, estimateTextTokens, resolveProviderTools } from '@moxxy/sdk';
3
3
  import { isAuthRejection, withCredentialLock } from '@moxxy/plugin-oauth';
4
4
  import { CODEX_RESPONSES_URL, refreshTokens } from './oauth.js';
5
5
  import { codexModels, DEFAULT_CODEX_MODEL } from './models.js';
@@ -89,13 +89,22 @@ export class CodexProvider {
89
89
  const emitReasoning = req.reasoning != null && req.reasoning !== false;
90
90
  const reqEffort = typeof req.reasoning === 'object' ? req.reasoning.effort : undefined;
91
91
  const reasoningEffort = reqEffort ?? this.reasoningEffort;
92
+ const resolvedTools = resolveProviderTools(req.tools, this.models, model);
93
+ const nativeRequest = { ...req, model, tools: resolvedTools.tools };
92
94
  // Pass the session id as the Responses prefix-cache key so repeated turns
93
95
  // in a session reuse the cached prefix (cheaper + faster). Codex DOES
94
96
  // support this even though the Chat-Completions providers ignore cacheHints.
95
- const body = toResponsesBody({ ...req, model }, {
97
+ const body = toResponsesBody(nativeRequest, {
96
98
  sessionHint: sessionId,
97
99
  ...(reasoningEffort ? { reasoningEffort } : {}),
100
+ ...(resolvedTools.hostedTools.length > 0 ? { hostedTools: resolvedTools.hostedTools } : {}),
98
101
  });
102
+ const fallbackBody = resolvedTools.hostedTools.length > 0
103
+ ? toResponsesBody({ ...req, model }, {
104
+ sessionHint: sessionId,
105
+ ...(reasoningEffort ? { reasoningEffort } : {}),
106
+ })
107
+ : null;
99
108
  // Internal idle watchdog: aborts the request if the backend stalls (accepts
100
109
  // the POST but never sends headers/body, or goes silent mid-stream) so the
101
110
  // turn can't hang forever when the caller supplied no AbortSignal. Composed
@@ -153,10 +162,25 @@ export class CodexProvider {
153
162
  return;
154
163
  }
155
164
  }
165
+ let errorText;
166
+ if (!response.ok && fallbackBody) {
167
+ errorText = await readCappedText(response, MAX_ERROR_BODY_CHARS);
168
+ if (isHostedWebSearchRejection(response.status, errorText)) {
169
+ try {
170
+ armIdle();
171
+ response = await this.postCodex(fallbackBody, sessionId, signal);
172
+ errorText = undefined;
173
+ }
174
+ catch (err) {
175
+ yield toErrorEvent(err);
176
+ return;
177
+ }
178
+ }
179
+ }
156
180
  if (!response.ok || !response.body) {
157
181
  // Cap the buffered error body: a hostile/broken backend could otherwise
158
182
  // stream a huge body that we'd hold in full and then put into a string.
159
- const text = await readCappedText(response, MAX_ERROR_BODY_CHARS);
183
+ const text = errorText ?? await readCappedText(response, MAX_ERROR_BODY_CHARS);
160
184
  // Derive the retryable verdict from the SDK's status classifier so it
161
185
  // stays consistent with the rest of moxxy (429 + 5xx are retryable).
162
186
  const classified = classifyHttpStatus(response.status);
@@ -269,6 +293,12 @@ export class CodexProvider {
269
293
  });
270
294
  }
271
295
  }
296
+ function isHostedWebSearchRejection(status, body) {
297
+ if (status !== 400)
298
+ return false;
299
+ const normalized = body.toLowerCase();
300
+ return normalized.includes('web_search') || normalized.includes('web search');
301
+ }
272
302
  function withAccountId(tokens, accountId) {
273
303
  return accountId
274
304
  ? { access: tokens.access, refresh: tokens.refresh, expires: tokens.expires, accountId }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ProviderMessage, type ProviderRequest, type ToolDef } from '@moxxy/sdk';
1
+ import { type HostedTool, type ProviderMessage, type ProviderRequest, type ToolDef } from '@moxxy/sdk';
2
2
  /**
3
3
  * Responses-API "input" item shape. We only emit the subset codex uses:
4
4
  * - `message` items with role + a string-or-rich content
@@ -33,13 +33,16 @@ type ResponsesContent = {
33
33
  filename?: string;
34
34
  file_data: string;
35
35
  };
36
- interface ResponsesTool {
36
+ interface ResponsesFunctionTool {
37
37
  type: 'function';
38
38
  name: string;
39
39
  description: string;
40
40
  parameters: unknown;
41
41
  strict?: boolean;
42
42
  }
43
+ type ResponsesTool = ResponsesFunctionTool | {
44
+ type: 'web_search';
45
+ };
43
46
  export interface ResponsesBody {
44
47
  model: string;
45
48
  instructions?: string;
@@ -67,10 +70,11 @@ export interface ResponsesBody {
67
70
  */
68
71
  export declare function extractSystemText(messages: ReadonlyArray<ProviderMessage>, explicitSystem?: string): string;
69
72
  export declare function toResponsesInput(messages: ReadonlyArray<ProviderMessage>): ResponsesInputItem[];
70
- export declare function toResponsesTools(tools: ReadonlyArray<ToolDef>): ResponsesTool[];
73
+ export declare function toResponsesTools(tools: ReadonlyArray<ToolDef>): ResponsesFunctionTool[];
71
74
  export interface BuildBodyOptions {
72
75
  readonly sessionHint?: string;
73
76
  readonly reasoningEffort?: 'low' | 'medium' | 'high';
77
+ readonly hostedTools?: ReadonlyArray<HostedTool>;
74
78
  }
75
79
  export declare function toResponsesBody(req: ProviderRequest, opts?: BuildBodyOptions): ResponsesBody;
76
80
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvG;;;;;GAKG;AACH,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CAMpB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,CAmD/F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,EAAE,CAO/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtD;AAkDD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,GAAE,gBAAqB,GAAG,aAAa,CAiBhG"}
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,UAAU,qBAAqB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CAMpB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,CAmD/F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,qBAAqB,EAAE,CAOvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAClD;AAkDD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,GAAE,gBAAqB,GAAG,aAAa,CAqBhG"}
package/dist/translate.js CHANGED
@@ -1,4 +1,4 @@
1
- import { zodToJsonSchema } from '@moxxy/sdk';
1
+ import { zodToJsonSchema, } from '@moxxy/sdk';
2
2
  function contentBlocksToInputText(role, blocks) {
3
3
  const out = [];
4
4
  for (const block of blocks) {
@@ -159,8 +159,13 @@ export function toResponsesBody(req, opts = {}) {
159
159
  reasoning: { effort: opts.reasoningEffort ?? 'medium', summary: 'auto' },
160
160
  include: ['reasoning.encrypted_content'],
161
161
  };
162
- if (req.tools && req.tools.length > 0)
163
- body.tools = toResponsesTools(req.tools);
162
+ const tools = req.tools ? toResponsesTools(req.tools) : [];
163
+ for (const hosted of opts.hostedTools ?? []) {
164
+ if (hosted.type === 'web_search')
165
+ tools.push({ type: 'web_search' });
166
+ }
167
+ if (tools.length > 0)
168
+ body.tools = tools;
164
169
  if (opts.sessionHint)
165
170
  body.prompt_cache_key = opts.sessionHint;
166
171
  if (req.maxTokens !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moxxy/plugin-provider-openai-codex",
3
- "version": "0.31.0",
3
+ "version": "0.33.0",
4
4
  "description": "OpenAI Codex (ChatGPT Pro/Plus OAuth) LLMProvider plugin for moxxy. Streams against https://chatgpt.com/backend-api/codex/responses using PKCE-based OAuth tokens.",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -59,16 +59,17 @@
59
59
  }
60
60
  },
61
61
  "dependencies": {
62
- "@moxxy/sdk": "0.31.0",
63
- "@moxxy/plugin-oauth": "0.31.0"
62
+ "@moxxy/plugin-browser": "0.33.0",
63
+ "@moxxy/plugin-oauth": "0.33.0",
64
+ "@moxxy/sdk": "0.33.0"
64
65
  },
65
66
  "devDependencies": {
66
67
  "@types/node": "^22.10.0",
67
68
  "typescript": "^5.7.3",
68
69
  "vitest": "^2.1.8",
69
70
  "zod": "^3.24.0",
70
- "@moxxy/vitest-preset": "0.0.0",
71
- "@moxxy/tsconfig": "0.0.0"
71
+ "@moxxy/tsconfig": "0.0.0",
72
+ "@moxxy/vitest-preset": "0.0.0"
72
73
  },
73
74
  "scripts": {
74
75
  "build": "tsc -p tsconfig.json",
package/src/models.ts CHANGED
@@ -19,15 +19,15 @@ export const codexModels: ReadonlyArray<ModelDescriptor> = [
19
19
  // under the same ids the API uses (sol/terra/luna — no `-codex` variant).
20
20
  // Sol is OpenAI's default Codex model. The ChatGPT-plan window cap applies
21
21
  // here too, so keep them at 400k like the rest of this list.
22
- { id: 'gpt-5.6-sol', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
23
- { id: 'gpt-5.6-terra', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
24
- { id: 'gpt-5.6-luna', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
25
- { id: 'gpt-5.5', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
26
- { id: 'gpt-5.4', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
27
- { id: 'gpt-5.4-mini', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
28
- { id: 'gpt-5.3-codex', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
29
- { id: 'gpt-5.3-codex-spark', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
30
- { id: 'gpt-5.2', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true },
22
+ { id: 'gpt-5.6-sol', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
23
+ { id: 'gpt-5.6-terra', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
24
+ { id: 'gpt-5.6-luna', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
25
+ { id: 'gpt-5.5', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
26
+ { id: 'gpt-5.4', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
27
+ { id: 'gpt-5.4-mini', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
28
+ { id: 'gpt-5.3-codex', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
29
+ { id: 'gpt-5.3-codex-spark', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
30
+ { id: 'gpt-5.2', contextWindow: 400_000, maxOutputTokens: 128_000, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
31
31
  ];
32
32
 
33
33
  // OpenAI's own Codex default moved to gpt-5.6-sol at GA (July 9, 2026); mirror
@@ -6,7 +6,7 @@ import { CodexProvider } from './provider.js';
6
6
  import { CODEX_RESPONSES_URL } from './oauth.js';
7
7
  import type { CodexTokens } from './types.js';
8
8
  import type { ProviderEvent, ProviderRequest } from '@moxxy/sdk';
9
- import { assertDefined } from '@moxxy/sdk';
9
+ import { assertDefined, defineTool, z } from '@moxxy/sdk';
10
10
 
11
11
  // The refresh path takes a cross-process lockfile under `<moxxy home>/locks`;
12
12
  // point MOXXY_HOME at a temp dir so tests never touch the real ~/.moxxy.
@@ -57,6 +57,38 @@ function baseRequest(over: Partial<ProviderRequest> = {}): ProviderRequest {
57
57
  }
58
58
 
59
59
  describe('CodexProvider.stream', () => {
60
+ it('uses hosted web search first and retries with the client fallback when the backend rejects it', async () => {
61
+ const bodies: Array<{ tools?: Array<{ type: string; name?: string }> }> = [];
62
+ const fakeFetch = vi.fn(async (_url: RequestInfo | URL, init?: RequestInit) => {
63
+ bodies.push(JSON.parse(String(init?.body)) as { tools?: Array<{ type: string; name?: string }> });
64
+ if (bodies.length === 1) {
65
+ return new Response('{"error":"web_search is not enabled"}', { status: 400 });
66
+ }
67
+ return new Response(sseStream(['data: {"type":"response.completed"}\n\n']), { status: 200 });
68
+ });
69
+ const fallback = defineTool({
70
+ name: 'web_search',
71
+ description: 'fallback search',
72
+ inputSchema: z.object({ query: z.string() }),
73
+ hosted: { type: 'web_search' },
74
+ handler: () => [],
75
+ });
76
+ const provider = new CodexProvider({
77
+ tokens: makeTokens(),
78
+ fetch: fakeFetch as unknown as typeof fetch,
79
+ });
80
+
81
+ const events = await collect(provider.stream(baseRequest({ tools: [fallback] })));
82
+
83
+ expect(bodies).toHaveLength(2);
84
+ expect(bodies[0]?.tools).toEqual([{ type: 'web_search' }]);
85
+ expect(bodies[1]?.tools).toEqual([
86
+ expect.objectContaining({ type: 'function', name: 'web_search' }),
87
+ ]);
88
+ expect(events.some((event) => event.type === 'error')).toBe(false);
89
+ expect(events.at(-1)).toMatchObject({ type: 'message_end', stopReason: 'end_turn' });
90
+ });
91
+
60
92
  it('sends Bearer auth, ChatGPT-Account-Id, originator and User-Agent headers', async () => {
61
93
  const captured: { url?: string; init?: RequestInit } = {};
62
94
  const fakeFetch = vi.fn(async (url: RequestInfo | URL, init?: RequestInit) => {
package/src/provider.ts CHANGED
@@ -4,7 +4,7 @@ import type {
4
4
  ProviderEvent,
5
5
  ProviderRequest,
6
6
  } from '@moxxy/sdk';
7
- import { classifyHttpStatus, estimateTextTokens } from '@moxxy/sdk';
7
+ import { classifyHttpStatus, estimateTextTokens, resolveProviderTools } from '@moxxy/sdk';
8
8
  import { isAuthRejection, withCredentialLock } from '@moxxy/plugin-oauth';
9
9
  import { CODEX_RESPONSES_URL, refreshTokens } from './oauth.js';
10
10
  import { codexModels, DEFAULT_CODEX_MODEL } from './models.js';
@@ -138,16 +138,28 @@ export class CodexProvider implements LLMProvider {
138
138
  const emitReasoning = req.reasoning != null && req.reasoning !== false;
139
139
  const reqEffort = typeof req.reasoning === 'object' ? req.reasoning.effort : undefined;
140
140
  const reasoningEffort = reqEffort ?? this.reasoningEffort;
141
+ const resolvedTools = resolveProviderTools(req.tools, this.models, model);
142
+ const nativeRequest = { ...req, model, tools: resolvedTools.tools };
141
143
  // Pass the session id as the Responses prefix-cache key so repeated turns
142
144
  // in a session reuse the cached prefix (cheaper + faster). Codex DOES
143
145
  // support this even though the Chat-Completions providers ignore cacheHints.
144
146
  const body = toResponsesBody(
145
- { ...req, model },
147
+ nativeRequest,
146
148
  {
147
149
  sessionHint: sessionId,
148
150
  ...(reasoningEffort ? { reasoningEffort } : {}),
151
+ ...(resolvedTools.hostedTools.length > 0 ? { hostedTools: resolvedTools.hostedTools } : {}),
149
152
  },
150
153
  );
154
+ const fallbackBody = resolvedTools.hostedTools.length > 0
155
+ ? toResponsesBody(
156
+ { ...req, model },
157
+ {
158
+ sessionHint: sessionId,
159
+ ...(reasoningEffort ? { reasoningEffort } : {}),
160
+ },
161
+ )
162
+ : null;
151
163
 
152
164
  // Internal idle watchdog: aborts the request if the backend stalls (accepts
153
165
  // the POST but never sends headers/body, or goes silent mid-stream) so the
@@ -209,10 +221,25 @@ export class CodexProvider implements LLMProvider {
209
221
  }
210
222
  }
211
223
 
224
+ let errorText: string | undefined;
225
+ if (!response.ok && fallbackBody) {
226
+ errorText = await readCappedText(response, MAX_ERROR_BODY_CHARS);
227
+ if (isHostedWebSearchRejection(response.status, errorText)) {
228
+ try {
229
+ armIdle();
230
+ response = await this.postCodex(fallbackBody, sessionId, signal);
231
+ errorText = undefined;
232
+ } catch (err) {
233
+ yield toErrorEvent(err);
234
+ return;
235
+ }
236
+ }
237
+ }
238
+
212
239
  if (!response.ok || !response.body) {
213
240
  // Cap the buffered error body: a hostile/broken backend could otherwise
214
241
  // stream a huge body that we'd hold in full and then put into a string.
215
- const text = await readCappedText(response, MAX_ERROR_BODY_CHARS);
242
+ const text = errorText ?? await readCappedText(response, MAX_ERROR_BODY_CHARS);
216
243
  // Derive the retryable verdict from the SDK's status classifier so it
217
244
  // stays consistent with the rest of moxxy (429 + 5xx are retryable).
218
245
  const classified = classifyHttpStatus(response.status);
@@ -327,6 +354,12 @@ export class CodexProvider implements LLMProvider {
327
354
  }
328
355
  }
329
356
 
357
+ function isHostedWebSearchRejection(status: number, body: string): boolean {
358
+ if (status !== 400) return false;
359
+ const normalized = body.toLowerCase();
360
+ return normalized.includes('web_search') || normalized.includes('web search');
361
+ }
362
+
330
363
  function withAccountId(tokens: CodexTokens, accountId: string | undefined): CodexTokens {
331
364
  return accountId
332
365
  ? { access: tokens.access, refresh: tokens.refresh, expires: tokens.expires, accountId }
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
+ import { defineTool, z } from '@moxxy/sdk';
2
3
  import { extractSystemText, toResponsesBody, toResponsesInput } from './translate.js';
3
4
 
4
5
  describe('toResponsesInput', () => {
@@ -92,4 +93,21 @@ describe('toResponsesBody', () => {
92
93
  expect(body).not.toHaveProperty('max_output_tokens');
93
94
  expect(body).not.toHaveProperty('temperature');
94
95
  });
96
+
97
+ it('serializes hosted web search beside ordinary function tools', () => {
98
+ const read = defineTool({
99
+ name: 'Read',
100
+ description: 'read',
101
+ inputSchema: z.object({ path: z.string() }),
102
+ handler: () => '',
103
+ });
104
+ const body = toResponsesBody(
105
+ { ...req, tools: [read] },
106
+ { hostedTools: [{ type: 'web_search' }] },
107
+ );
108
+ expect(body.tools).toEqual([
109
+ expect.objectContaining({ type: 'function', name: 'Read' }),
110
+ { type: 'web_search' },
111
+ ]);
112
+ });
95
113
  });
package/src/translate.ts CHANGED
@@ -1,4 +1,10 @@
1
- import { zodToJsonSchema, type ProviderMessage, type ProviderRequest, type ToolDef } from '@moxxy/sdk';
1
+ import {
2
+ zodToJsonSchema,
3
+ type HostedTool,
4
+ type ProviderMessage,
5
+ type ProviderRequest,
6
+ type ToolDef,
7
+ } from '@moxxy/sdk';
2
8
 
3
9
  /**
4
10
  * Responses-API "input" item shape. We only emit the subset codex uses:
@@ -17,7 +23,7 @@ type ResponsesContent =
17
23
  | { type: 'input_image'; image_url: string }
18
24
  | { type: 'input_file'; filename?: string; file_data: string };
19
25
 
20
- interface ResponsesTool {
26
+ interface ResponsesFunctionTool {
21
27
  type: 'function';
22
28
  name: string;
23
29
  description: string;
@@ -25,6 +31,8 @@ interface ResponsesTool {
25
31
  strict?: boolean;
26
32
  }
27
33
 
34
+ type ResponsesTool = ResponsesFunctionTool | { type: 'web_search' };
35
+
28
36
  export interface ResponsesBody {
29
37
  model: string;
30
38
  instructions?: string;
@@ -142,7 +150,7 @@ export function toResponsesInput(messages: ReadonlyArray<ProviderMessage>): Resp
142
150
  return out;
143
151
  }
144
152
 
145
- export function toResponsesTools(tools: ReadonlyArray<ToolDef>): ResponsesTool[] {
153
+ export function toResponsesTools(tools: ReadonlyArray<ToolDef>): ResponsesFunctionTool[] {
146
154
  return tools.map((t) => ({
147
155
  type: 'function' as const,
148
156
  name: t.name,
@@ -154,6 +162,7 @@ export function toResponsesTools(tools: ReadonlyArray<ToolDef>): ResponsesTool[]
154
162
  export interface BuildBodyOptions {
155
163
  readonly sessionHint?: string;
156
164
  readonly reasoningEffort?: 'low' | 'medium' | 'high';
165
+ readonly hostedTools?: ReadonlyArray<HostedTool>;
157
166
  }
158
167
 
159
168
  /**
@@ -216,7 +225,11 @@ export function toResponsesBody(req: ProviderRequest, opts: BuildBodyOptions = {
216
225
  reasoning: { effort: opts.reasoningEffort ?? 'medium', summary: 'auto' },
217
226
  include: ['reasoning.encrypted_content'],
218
227
  };
219
- if (req.tools && req.tools.length > 0) body.tools = toResponsesTools(req.tools);
228
+ const tools: ResponsesTool[] = req.tools ? toResponsesTools(req.tools) : [];
229
+ for (const hosted of opts.hostedTools ?? []) {
230
+ if (hosted.type === 'web_search') tools.push({ type: 'web_search' });
231
+ }
232
+ if (tools.length > 0) body.tools = tools;
220
233
  if (opts.sessionHint) body.prompt_cache_key = opts.sessionHint;
221
234
  if (req.maxTokens !== undefined) noteMaxTokensUnsupported();
222
235
  if (req.temperature !== undefined) noteTemperatureUnsupported();