pi2dsh 0.7.0 → 0.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 (100) hide show
  1. package/README.md +5 -2
  2. package/README.zh.md +4 -2
  3. package/dist/analyzer-C86ba-27.mjs +626 -0
  4. package/dist/analyzer-C86ba-27.mjs.map +1 -0
  5. package/dist/cli.mjs +3 -1
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/compat/pi-ai.d.mts +1 -11
  8. package/dist/compat/pi-ai.d.mts.map +1 -1
  9. package/dist/compat/pi-ai.mjs +2 -2
  10. package/dist/credentials-oauth.mjs +1 -1
  11. package/dist/generator-C0jNM-yu.mjs +298 -0
  12. package/dist/generator-C0jNM-yu.mjs.map +1 -0
  13. package/dist/host.d.mts +2 -0
  14. package/dist/host.d.mts.map +1 -1
  15. package/dist/host.mjs +2 -1
  16. package/dist/host.mjs.map +1 -1
  17. package/dist/index.d.mts +29 -10
  18. package/dist/index.d.mts.map +1 -1
  19. package/dist/index.mjs +27 -4
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/mcp-config-Dlou-ZA-.mjs +707 -0
  22. package/dist/mcp-config-Dlou-ZA-.mjs.map +1 -0
  23. package/dist/{pi-ai-B4hucafU.mjs → pi-ai-BA3h0Dwv.mjs} +2 -84
  24. package/dist/pi-ai-BA3h0Dwv.mjs.map +1 -0
  25. package/dist/{runtime-k3IlCgjQ.mjs → runtime-DMEJknhK.mjs} +115 -960
  26. package/dist/runtime-DMEJknhK.mjs.map +1 -0
  27. package/dist/runtime.d.mts +19 -6
  28. package/dist/runtime.d.mts.map +1 -1
  29. package/dist/runtime.mjs +2 -2
  30. package/package.json +6 -3
  31. package/dist/all-BChhwMVE.mjs +0 -28512
  32. package/dist/all-BChhwMVE.mjs.map +0 -1
  33. package/dist/anthropic-messages-Dlw4T0S4.mjs +0 -6438
  34. package/dist/anthropic-messages-Dlw4T0S4.mjs.map +0 -1
  35. package/dist/azure-openai-responses-vGUNukZ7.mjs +0 -209
  36. package/dist/azure-openai-responses-vGUNukZ7.mjs.map +0 -1
  37. package/dist/deferred-tools-BD4g5QUx.mjs +0 -32
  38. package/dist/deferred-tools-BD4g5QUx.mjs.map +0 -1
  39. package/dist/diagnostics-CJye1UFh.mjs +0 -99
  40. package/dist/diagnostics-CJye1UFh.mjs.map +0 -1
  41. package/dist/dist-DY2GeEQ6.mjs +0 -1089
  42. package/dist/dist-DY2GeEQ6.mjs.map +0 -1
  43. package/dist/dist-DYfTHu0C.mjs +0 -1246
  44. package/dist/dist-DYfTHu0C.mjs.map +0 -1
  45. package/dist/error-body-DKA3lknR.mjs +0 -104
  46. package/dist/error-body-DKA3lknR.mjs.map +0 -1
  47. package/dist/github-copilot-headers-CZo2QHrt.mjs +0 -25
  48. package/dist/github-copilot-headers-CZo2QHrt.mjs.map +0 -1
  49. package/dist/google-generative-ai-C30gRjRi.mjs +0 -358
  50. package/dist/google-generative-ai-C30gRjRi.mjs.map +0 -1
  51. package/dist/google-shared-W8g3Esep.mjs +0 -29042
  52. package/dist/google-shared-W8g3Esep.mjs.map +0 -1
  53. package/dist/google-vertex--O_gyVYA.mjs +0 -402
  54. package/dist/google-vertex--O_gyVYA.mjs.map +0 -1
  55. package/dist/hash-Dbggamac.mjs +0 -19
  56. package/dist/hash-Dbggamac.mjs.map +0 -1
  57. package/dist/headers-CPzZhJQn.mjs +0 -17
  58. package/dist/headers-CPzZhJQn.mjs.map +0 -1
  59. package/dist/images-models-DJtHo9Rp.mjs +0 -1068
  60. package/dist/images-models-DJtHo9Rp.mjs.map +0 -1
  61. package/dist/json-parse-C-vG4_qc.mjs +0 -384
  62. package/dist/json-parse-C-vG4_qc.mjs.map +0 -1
  63. package/dist/mcp-config-Cful6uUS.mjs +0 -1618
  64. package/dist/mcp-config-Cful6uUS.mjs.map +0 -1
  65. package/dist/mistral-conversations-LSDG9sjq.mjs +0 -42007
  66. package/dist/mistral-conversations-LSDG9sjq.mjs.map +0 -1
  67. package/dist/multipart-parser-CoM3rwav.mjs +0 -301
  68. package/dist/multipart-parser-CoM3rwav.mjs.map +0 -1
  69. package/dist/openai-codex-responses-JxII_OUX.mjs +0 -1169
  70. package/dist/openai-codex-responses-JxII_OUX.mjs.map +0 -1
  71. package/dist/openai-completions-Dp-VwLzJ.mjs +0 -947
  72. package/dist/openai-completions-Dp-VwLzJ.mjs.map +0 -1
  73. package/dist/openai-completions-lite-BrM7gJzs.mjs +0 -316
  74. package/dist/openai-completions-lite-BrM7gJzs.mjs.map +0 -1
  75. package/dist/openai-prompt-cache-BDWtZRKh.mjs +0 -11
  76. package/dist/openai-prompt-cache-BDWtZRKh.mjs.map +0 -1
  77. package/dist/openai-responses-CWmNks8K.mjs +0 -247
  78. package/dist/openai-responses-CWmNks8K.mjs.map +0 -1
  79. package/dist/openai-responses-shared-CYgIDTf3.mjs +0 -572
  80. package/dist/openai-responses-shared-CYgIDTf3.mjs.map +0 -1
  81. package/dist/openrouter-images-DfAULV7l.mjs +0 -127
  82. package/dist/openrouter-images-DfAULV7l.mjs.map +0 -1
  83. package/dist/otel-Boafyju5.mjs +0 -24935
  84. package/dist/otel-Boafyju5.mjs.map +0 -1
  85. package/dist/pi-ai-B4hucafU.mjs.map +0 -1
  86. package/dist/pi-messages-HzGtvc5_.mjs +0 -306
  87. package/dist/pi-messages-HzGtvc5_.mjs.map +0 -1
  88. package/dist/provider-env-C9gOBFJi.mjs +0 -40
  89. package/dist/provider-env-C9gOBFJi.mjs.map +0 -1
  90. package/dist/provider-retry-Cw6YJ4cr.mjs +0 -80
  91. package/dist/provider-retry-Cw6YJ4cr.mjs.map +0 -1
  92. package/dist/runtime-k3IlCgjQ.mjs.map +0 -1
  93. package/dist/sanitize-unicode-wLA11KvZ.mjs +0 -29
  94. package/dist/sanitize-unicode-wLA11KvZ.mjs.map +0 -1
  95. package/dist/src-D0GRWCE8.mjs +0 -5031
  96. package/dist/src-D0GRWCE8.mjs.map +0 -1
  97. package/dist/transform-messages-DGq9mvhA.mjs +0 -379
  98. package/dist/transform-messages-DGq9mvhA.mjs.map +0 -1
  99. package/dist/uuid-DtFT7tOE.mjs +0 -65
  100. package/dist/uuid-DtFT7tOE.mjs.map +0 -1
@@ -1,247 +0,0 @@
1
-
2
- import { a as AssistantMessageEventStream } from "./diagnostics-CJye1UFh.mjs";
3
- import { o as clampThinkingLevel } from "./images-models-DJtHo9Rp.mjs";
4
- import { t as splitDeferredTools } from "./deferred-tools-BD4g5QUx.mjs";
5
- import { t as headersToRecord } from "./headers-CPzZhJQn.mjs";
6
- import { t as getProviderEnvValue } from "./provider-env-C9gOBFJi.mjs";
7
- import { t as retryProviderRequest } from "./provider-retry-Cw6YJ4cr.mjs";
8
- import { c as createGrammarToolInputProperties, i as buildBaseOptions } from "./transform-messages-DGq9mvhA.mjs";
9
- import { n as hasCopilotVisionInput, t as buildCopilotDynamicHeaders } from "./github-copilot-headers-CZo2QHrt.mjs";
10
- import { n as normalizeProviderError, t as formatProviderError } from "./error-body-DKA3lknR.mjs";
11
- import { t as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-BDWtZRKh.mjs";
12
- import { n as convertResponsesTools, r as processResponsesStream, t as convertResponsesMessages } from "./openai-responses-shared-CYgIDTf3.mjs";
13
- import OpenAI from "openai";
14
- //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js
15
- const OPENAI_TOOL_CALL_PROVIDERS = /* @__PURE__ */ new Set([
16
- "openai",
17
- "openai-codex",
18
- "opencode"
19
- ]);
20
- const OPENAI_RESPONSES_MIN_OUTPUT_TOKENS = 16;
21
- function hasHeader(headers, name) {
22
- if (!headers) return false;
23
- const expected = name.toLowerCase();
24
- for (const [key, value] of Object.entries(headers)) if (key.toLowerCase() === expected && value !== null && value.trim().length > 0) return true;
25
- return false;
26
- }
27
- function getClientApiKey(provider, apiKey, headers) {
28
- if (apiKey) return apiKey;
29
- if (hasHeader(headers, "authorization") || hasHeader(headers, "cf-aig-authorization")) return "unused";
30
- throw new Error(`No API key for provider: ${provider}`);
31
- }
32
- function detectSessionAffinityFormat(model) {
33
- return model.provider === "openrouter" || model.baseUrl.includes("openrouter.ai") ? "openrouter" : "openai";
34
- }
35
- /**
36
- * Resolve cache retention preference.
37
- * Defaults to "short" and uses PI_CACHE_RETENTION for backward compatibility.
38
- */
39
- function resolveCacheRetention(cacheRetention, env) {
40
- if (cacheRetention) return cacheRetention;
41
- if (getProviderEnvValue("PI_CACHE_RETENTION", env) === "long") return "long";
42
- return "short";
43
- }
44
- function getCompat(model) {
45
- return {
46
- supportsDeveloperRole: model.compat?.supportsDeveloperRole ?? true,
47
- sessionAffinityFormat: model.compat?.sessionAffinityFormat ?? detectSessionAffinityFormat(model),
48
- supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,
49
- supportsStrictMode: model.compat?.supportsStrictMode ?? false,
50
- supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,
51
- supportsToolSearch: model.compat?.supportsToolSearch ?? false,
52
- supportsExplicitPromptCacheMode: model.compat?.supportsExplicitPromptCacheMode ?? false
53
- };
54
- }
55
- function getPromptCacheRetention(compat, cacheRetention) {
56
- return cacheRetention === "long" && compat.supportsLongCacheRetention ? "24h" : void 0;
57
- }
58
- function formatOpenAIResponsesError(error) {
59
- return formatProviderError(normalizeProviderError(error), "OpenAI API error");
60
- }
61
- /**
62
- * Generate function for OpenAI Responses API
63
- */
64
- const stream = (model, context, options) => {
65
- const stream = new AssistantMessageEventStream();
66
- (async () => {
67
- const output = {
68
- role: "assistant",
69
- content: [],
70
- api: model.api,
71
- provider: model.provider,
72
- model: model.id,
73
- usage: {
74
- input: 0,
75
- output: 0,
76
- cacheRead: 0,
77
- cacheWrite: 0,
78
- totalTokens: 0,
79
- cost: {
80
- input: 0,
81
- output: 0,
82
- cacheRead: 0,
83
- cacheWrite: 0,
84
- total: 0
85
- }
86
- },
87
- stopReason: "pending",
88
- timestamp: Date.now()
89
- };
90
- try {
91
- const apiKey = getClientApiKey(model.provider, options?.apiKey, options?.headers);
92
- const cacheSessionId = resolveCacheRetention(options?.cacheRetention, options?.env) === "none" ? void 0 : options?.sessionId;
93
- const compat = getCompat(model);
94
- const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools);
95
- const client = createClient(model, context, apiKey, options?.headers, options?.fetch, cacheSessionId);
96
- let params = buildParams(model, context, options, compat, grammarToolInputProperties);
97
- const nextParams = await options?.onPayload?.(params, model);
98
- if (nextParams !== void 0) params = nextParams;
99
- const requestOptions = {
100
- ...options?.signal ? { signal: options.signal } : {},
101
- ...options?.timeoutMs !== void 0 ? { timeout: options.timeoutMs } : {},
102
- maxRetries: 0
103
- };
104
- const { data: openaiStream, response } = await retryProviderRequest(() => client.responses.create(params, requestOptions).withResponse(), {
105
- maxRetries: options?.maxRetries,
106
- maxRetryDelayMs: options?.maxRetryDelayMs,
107
- signal: options?.signal
108
- });
109
- await options?.onResponse?.({
110
- status: response.status,
111
- headers: headersToRecord(response.headers)
112
- }, model);
113
- stream.push({
114
- type: "start",
115
- partial: output
116
- });
117
- await processResponsesStream(openaiStream, output, stream, model, {
118
- serviceTier: options?.serviceTier,
119
- grammarToolInputProperties,
120
- applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model)
121
- });
122
- if (options?.signal?.aborted) throw new Error("Request was aborted");
123
- if (output.stopReason === "pending") throw new Error("OpenAI Responses stream ended without a stop reason");
124
- if (output.stopReason === "aborted" || output.stopReason === "error") throw new Error(output.errorMessage || "An unknown error occurred");
125
- stream.push({
126
- type: "done",
127
- reason: output.stopReason,
128
- message: output
129
- });
130
- stream.end();
131
- } catch (error) {
132
- for (const block of output.content) {
133
- delete block.index;
134
- delete block.partialJson;
135
- delete block.customInput;
136
- }
137
- output.stopReason = options?.signal?.aborted ? "aborted" : "error";
138
- output.errorMessage = formatOpenAIResponsesError(error);
139
- stream.push({
140
- type: "error",
141
- reason: output.stopReason,
142
- error: output
143
- });
144
- stream.end();
145
- }
146
- })();
147
- return stream;
148
- };
149
- const streamSimple = (model, context, options) => {
150
- getClientApiKey(model.provider, options?.apiKey, options?.headers);
151
- const base = buildBaseOptions(model, context, options, options?.apiKey);
152
- const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : void 0;
153
- const reasoningEffort = clampedReasoning === "off" ? void 0 : clampedReasoning;
154
- return stream(model, context, {
155
- ...base,
156
- reasoningEffort
157
- });
158
- };
159
- function createClient(model, context, apiKey, optionsHeaders, fetch, sessionId) {
160
- const compat = getCompat(model);
161
- const headers = { ...model.headers };
162
- if (model.provider === "github-copilot") {
163
- const hasImages = hasCopilotVisionInput(context.messages);
164
- const copilotHeaders = buildCopilotDynamicHeaders({
165
- messages: context.messages,
166
- hasImages
167
- });
168
- Object.assign(headers, copilotHeaders);
169
- }
170
- if (sessionId) {
171
- if (compat.sessionAffinityFormat === "openrouter") headers["x-session-id"] = sessionId;
172
- else {
173
- if (compat.sessionAffinityFormat === "openai") headers.session_id = sessionId;
174
- headers["x-client-request-id"] = sessionId;
175
- }
176
- }
177
- if (optionsHeaders) Object.assign(headers, optionsHeaders);
178
- return new OpenAI({
179
- apiKey,
180
- baseURL: model.baseUrl,
181
- dangerouslyAllowBrowser: true,
182
- fetch,
183
- defaultHeaders: headers
184
- });
185
- }
186
- function buildParams(model, context, options, compat = getCompat(model), grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools)) {
187
- const toolPlacement = splitDeferredTools(context, compat.supportsToolSearch);
188
- const messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS, {
189
- grammarToolInputProperties,
190
- deferredTools: toolPlacement.deferred,
191
- toolOptions: {
192
- supportsStrictMode: compat.supportsStrictMode,
193
- supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools
194
- }
195
- });
196
- const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);
197
- const disableImplicitPromptCache = cacheRetention === "none" && compat.supportsExplicitPromptCacheMode;
198
- const params = {
199
- model: model.id,
200
- input: messages,
201
- stream: true,
202
- prompt_cache_key: cacheRetention === "none" ? void 0 : clampOpenAIPromptCacheKey(options?.sessionId),
203
- prompt_cache_retention: getPromptCacheRetention(compat, cacheRetention),
204
- prompt_cache_options: disableImplicitPromptCache ? { mode: "explicit" } : void 0,
205
- store: false
206
- };
207
- if (options?.maxTokens) params.max_output_tokens = Math.max(options.maxTokens, OPENAI_RESPONSES_MIN_OUTPUT_TOKENS);
208
- if (options?.temperature !== void 0) params.temperature = options?.temperature;
209
- if (options?.serviceTier !== void 0) params.service_tier = options.serviceTier;
210
- if (toolPlacement.immediate.length > 0) params.tools = convertResponsesTools(toolPlacement.immediate, {
211
- supportsStrictMode: compat.supportsStrictMode,
212
- supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools
213
- });
214
- if (options?.toolChoice !== void 0) params.tool_choice = options.toolChoice;
215
- if (model.reasoning) {
216
- if (options?.reasoningEffort || options?.reasoningSummary) {
217
- params.reasoning = {
218
- effort: options?.reasoningEffort ? model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort : "medium",
219
- summary: options?.reasoningSummary || "auto"
220
- };
221
- params.include = ["reasoning.encrypted_content"];
222
- } else if (model.provider !== "github-copilot" && model.thinkingLevelMap?.off !== null) params.reasoning = { effort: model.thinkingLevelMap?.off ?? "none" };
223
- if (model.provider === "xai") params.include = ["reasoning.encrypted_content"];
224
- }
225
- if (options?.samplingParams) Object.assign(params, options.samplingParams);
226
- return params;
227
- }
228
- function getServiceTierCostMultiplier(model, serviceTier) {
229
- switch (serviceTier) {
230
- case "flex": return .5;
231
- case "priority": return model.id === "gpt-5.5" ? 2.5 : 2;
232
- default: return 1;
233
- }
234
- }
235
- function applyServiceTierPricing(usage, serviceTier, model) {
236
- const multiplier = getServiceTierCostMultiplier(model, serviceTier);
237
- if (multiplier === 1) return;
238
- usage.cost.input *= multiplier;
239
- usage.cost.output *= multiplier;
240
- usage.cost.cacheRead *= multiplier;
241
- usage.cost.cacheWrite *= multiplier;
242
- usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
243
- }
244
- //#endregion
245
- export { stream, streamSimple };
246
-
247
- //# sourceMappingURL=openai-responses-CWmNks8K.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-responses-CWmNks8K.mjs","names":[],"sources":["../node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js"],"sourcesContent":["import OpenAI from \"openai\";\nimport { clampThinkingLevel } from \"../models.js\";\nimport { splitDeferredTools } from \"../utils/deferred-tools.js\";\nimport { formatProviderError, normalizeProviderError } from \"../utils/error-body.js\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.js\";\nimport { headersToRecord } from \"../utils/headers.js\";\nimport { getProviderEnvValue } from \"../utils/provider-env.js\";\nimport { retryProviderRequest } from \"../utils/provider-retry.js\";\nimport { createGrammarToolInputProperties } from \"./constrained-sampling.js\";\nimport { buildCopilotDynamicHeaders, hasCopilotVisionInput } from \"./github-copilot-headers.js\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.js\";\nimport { convertResponsesMessages, convertResponsesTools, processResponsesStream } from \"./openai-responses-shared.js\";\nimport { buildBaseOptions } from \"./simple-options.js\";\nconst OPENAI_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\"]);\n// OpenAI Responses rejects max_output_tokens below 16: https://github.com/earendil-works/pi/issues/6265\nconst OPENAI_RESPONSES_MIN_OUTPUT_TOKENS = 16;\nfunction hasHeader(headers, name) {\n if (!headers)\n return false;\n const expected = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === expected && value !== null && value.trim().length > 0)\n return true;\n }\n return false;\n}\nfunction getClientApiKey(provider, apiKey, headers) {\n if (apiKey)\n return apiKey;\n if (hasHeader(headers, \"authorization\") || hasHeader(headers, \"cf-aig-authorization\"))\n return \"unused\";\n throw new Error(`No API key for provider: ${provider}`);\n}\nfunction detectSessionAffinityFormat(model) {\n return model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\") ? \"openrouter\" : \"openai\";\n}\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention, env) {\n if (cacheRetention) {\n return cacheRetention;\n }\n if (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n return \"long\";\n }\n return \"short\";\n}\nfunction getCompat(model) {\n return {\n supportsDeveloperRole: model.compat?.supportsDeveloperRole ?? true,\n sessionAffinityFormat: model.compat?.sessionAffinityFormat ?? detectSessionAffinityFormat(model),\n supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,\n supportsStrictMode: model.compat?.supportsStrictMode ?? false,\n supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,\n supportsToolSearch: model.compat?.supportsToolSearch ?? false,\n supportsExplicitPromptCacheMode: model.compat?.supportsExplicitPromptCacheMode ?? false,\n };\n}\nfunction getPromptCacheRetention(compat, cacheRetention) {\n return cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"24h\" : undefined;\n}\nfunction formatOpenAIResponsesError(error) {\n return formatProviderError(normalizeProviderError(error), \"OpenAI API error\");\n}\n/**\n * Generate function for OpenAI Responses API\n */\nexport const stream = (model, context, options) => {\n const stream = new AssistantMessageEventStream();\n // Start async processing\n (async () => {\n const output = {\n role: \"assistant\",\n content: [],\n api: model.api,\n provider: model.provider,\n model: model.id,\n usage: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n },\n stopReason: \"pending\",\n timestamp: Date.now(),\n };\n try {\n // Create OpenAI client\n const apiKey = getClientApiKey(model.provider, options?.apiKey, options?.headers);\n const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n const cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n const compat = getCompat(model);\n const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools);\n const client = createClient(model, context, apiKey, options?.headers, options?.fetch, cacheSessionId);\n let params = buildParams(model, context, options, compat, grammarToolInputProperties);\n const nextParams = await options?.onPayload?.(params, model);\n if (nextParams !== undefined) {\n params = nextParams;\n }\n const requestOptions = {\n ...(options?.signal ? { signal: options.signal } : {}),\n ...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n maxRetries: 0,\n };\n const { data: openaiStream, response } = await retryProviderRequest(() => client.responses.create(params, requestOptions).withResponse(), {\n maxRetries: options?.maxRetries,\n maxRetryDelayMs: options?.maxRetryDelayMs,\n signal: options?.signal,\n });\n await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n stream.push({ type: \"start\", partial: output });\n await processResponsesStream(openaiStream, output, stream, model, {\n serviceTier: options?.serviceTier,\n grammarToolInputProperties,\n applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model),\n });\n if (options?.signal?.aborted) {\n throw new Error(\"Request was aborted\");\n }\n if (output.stopReason === \"pending\") {\n throw new Error(\"OpenAI Responses stream ended without a stop reason\");\n }\n if (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n throw new Error(output.errorMessage || \"An unknown error occurred\");\n }\n stream.push({ type: \"done\", reason: output.stopReason, message: output });\n stream.end();\n }\n catch (error) {\n for (const block of output.content) {\n delete block.index;\n // Streaming scratch buffers are only used during parsing; never persist them.\n delete block.partialJson;\n delete block.customInput;\n }\n output.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n output.errorMessage = formatOpenAIResponsesError(error);\n stream.push({ type: \"error\", reason: output.stopReason, error: output });\n stream.end();\n }\n })();\n return stream;\n};\nexport const streamSimple = (model, context, options) => {\n getClientApiKey(model.provider, options?.apiKey, options?.headers);\n const base = buildBaseOptions(model, context, options, options?.apiKey);\n const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;\n const reasoningEffort = clampedReasoning === \"off\" ? undefined : clampedReasoning;\n return stream(model, context, {\n ...base,\n reasoningEffort,\n });\n};\nfunction createClient(model, context, apiKey, optionsHeaders, fetch, sessionId) {\n const compat = getCompat(model);\n const headers = { ...model.headers };\n if (model.provider === \"github-copilot\") {\n const hasImages = hasCopilotVisionInput(context.messages);\n const copilotHeaders = buildCopilotDynamicHeaders({\n messages: context.messages,\n hasImages,\n });\n Object.assign(headers, copilotHeaders);\n }\n if (sessionId) {\n if (compat.sessionAffinityFormat === \"openrouter\") {\n headers[\"x-session-id\"] = sessionId;\n }\n else {\n if (compat.sessionAffinityFormat === \"openai\") {\n headers.session_id = sessionId;\n }\n headers[\"x-client-request-id\"] = sessionId;\n }\n }\n // Merge options headers last so they can override defaults\n if (optionsHeaders) {\n Object.assign(headers, optionsHeaders);\n }\n return new OpenAI({\n apiKey,\n baseURL: model.baseUrl,\n dangerouslyAllowBrowser: true,\n fetch,\n defaultHeaders: headers,\n });\n}\nfunction buildParams(model, context, options, compat = getCompat(model), grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools)) {\n const toolPlacement = splitDeferredTools(context, compat.supportsToolSearch);\n const messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS, {\n grammarToolInputProperties,\n deferredTools: toolPlacement.deferred,\n toolOptions: {\n supportsStrictMode: compat.supportsStrictMode,\n supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools,\n },\n });\n const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n const disableImplicitPromptCache = cacheRetention === \"none\" && compat.supportsExplicitPromptCacheMode;\n const params = {\n model: model.id,\n input: messages,\n stream: true,\n prompt_cache_key: cacheRetention === \"none\" ? undefined : clampOpenAIPromptCacheKey(options?.sessionId),\n prompt_cache_retention: getPromptCacheRetention(compat, cacheRetention),\n prompt_cache_options: disableImplicitPromptCache ? { mode: \"explicit\" } : undefined,\n store: false,\n };\n if (options?.maxTokens) {\n params.max_output_tokens = Math.max(options.maxTokens, OPENAI_RESPONSES_MIN_OUTPUT_TOKENS);\n }\n if (options?.temperature !== undefined) {\n params.temperature = options?.temperature;\n }\n if (options?.serviceTier !== undefined) {\n params.service_tier = options.serviceTier;\n }\n if (toolPlacement.immediate.length > 0) {\n params.tools = convertResponsesTools(toolPlacement.immediate, {\n supportsStrictMode: compat.supportsStrictMode,\n supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools,\n });\n }\n if (options?.toolChoice !== undefined) {\n params.tool_choice = options.toolChoice;\n }\n if (model.reasoning) {\n if (options?.reasoningEffort || options?.reasoningSummary) {\n const effort = options?.reasoningEffort\n ? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)\n : \"medium\";\n params.reasoning = {\n effort: effort,\n summary: options?.reasoningSummary || \"auto\",\n };\n params.include = [\"reasoning.encrypted_content\"];\n }\n else if (model.provider !== \"github-copilot\" && model.thinkingLevelMap?.off !== null) {\n params.reasoning = {\n effort: (model.thinkingLevelMap?.off ?? \"none\"),\n };\n }\n if (model.provider === \"xai\")\n params.include = [\"reasoning.encrypted_content\"];\n }\n // Last so custom keys override the named request fields.\n if (options?.samplingParams) {\n Object.assign(params, options.samplingParams);\n }\n return params;\n}\nfunction getServiceTierCostMultiplier(model, serviceTier) {\n switch (serviceTier) {\n case \"flex\":\n return 0.5;\n case \"priority\":\n return model.id === \"gpt-5.5\" ? 2.5 : 2;\n default:\n return 1;\n }\n}\nfunction applyServiceTierPricing(usage, serviceTier, model) {\n const multiplier = getServiceTierCostMultiplier(model, serviceTier);\n if (multiplier === 1)\n return;\n usage.cost.input *= multiplier;\n usage.cost.output *= multiplier;\n usage.cost.cacheRead *= multiplier;\n usage.cost.cacheWrite *= multiplier;\n usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n}\n//# sourceMappingURL=openai-responses.js.map"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;AAaA,MAAM,6CAA6B,IAAI,IAAI;CAAC;CAAU;CAAgB;AAAU,CAAC;AAEjF,MAAM,qCAAqC;AAC3C,SAAS,UAAU,SAAS,MAAM;CAC9B,IAAI,CAAC,SACD,OAAO;CACX,MAAM,WAAW,KAAK,YAAY;CAClC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,GAC7C,IAAI,IAAI,YAAY,MAAM,YAAY,UAAU,QAAQ,MAAM,KAAK,CAAC,CAAC,SAAS,GAC1E,OAAO;CAEf,OAAO;AACX;AACA,SAAS,gBAAgB,UAAU,QAAQ,SAAS;CAChD,IAAI,QACA,OAAO;CACX,IAAI,UAAU,SAAS,eAAe,KAAK,UAAU,SAAS,sBAAsB,GAChF,OAAO;CACX,MAAM,IAAI,MAAM,4BAA4B,UAAU;AAC1D;AACA,SAAS,4BAA4B,OAAO;CACxC,OAAO,MAAM,aAAa,gBAAgB,MAAM,QAAQ,SAAS,eAAe,IAAI,eAAe;AACvG;;;;;AAKA,SAAS,sBAAsB,gBAAgB,KAAK;CAChD,IAAI,gBACA,OAAO;CAEX,IAAI,oBAAoB,sBAAsB,GAAG,MAAM,QACnD,OAAO;CAEX,OAAO;AACX;AACA,SAAS,UAAU,OAAO;CACtB,OAAO;EACH,uBAAuB,MAAM,QAAQ,yBAAyB;EAC9D,uBAAuB,MAAM,QAAQ,yBAAyB,4BAA4B,KAAK;EAC/F,4BAA4B,MAAM,QAAQ,8BAA8B;EACxE,oBAAoB,MAAM,QAAQ,sBAAsB;EACxD,4BAA4B,MAAM,QAAQ,8BAA8B;EACxE,oBAAoB,MAAM,QAAQ,sBAAsB;EACxD,iCAAiC,MAAM,QAAQ,mCAAmC;CACtF;AACJ;AACA,SAAS,wBAAwB,QAAQ,gBAAgB;CACrD,OAAO,mBAAmB,UAAU,OAAO,6BAA6B,QAAQ,KAAA;AACpF;AACA,SAAS,2BAA2B,OAAO;CACvC,OAAO,oBAAoB,uBAAuB,KAAK,GAAG,kBAAkB;AAChF;;;;AAIA,MAAa,UAAU,OAAO,SAAS,YAAY;CAC/C,MAAM,SAAS,IAAI,4BAA4B;CAE/C,CAAC,YAAY;EACT,MAAM,SAAS;GACX,MAAM;GACN,SAAS,CAAC;GACV,KAAK,MAAM;GACX,UAAU,MAAM;GAChB,OAAO,MAAM;GACb,OAAO;IACH,OAAO;IACP,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,aAAa;IACb,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG,WAAW;KAAG,YAAY;KAAG,OAAO;IAAE;GACvE;GACA,YAAY;GACZ,WAAW,KAAK,IAAI;EACxB;EACA,IAAI;GAEA,MAAM,SAAS,gBAAgB,MAAM,UAAU,SAAS,QAAQ,SAAS,OAAO;GAEhF,MAAM,iBADiB,sBAAsB,SAAS,gBAAgB,SAAS,GAC3C,MAAM,SAAS,KAAA,IAAY,SAAS;GACxE,MAAM,SAAS,UAAU,KAAK;GAC9B,MAAM,6BAA6B,iCAAiC,QAAQ,OAAO,OAAO,0BAA0B;GACpH,MAAM,SAAS,aAAa,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,OAAO,cAAc;GACpG,IAAI,SAAS,YAAY,OAAO,SAAS,SAAS,QAAQ,0BAA0B;GACpF,MAAM,aAAa,MAAM,SAAS,YAAY,QAAQ,KAAK;GAC3D,IAAI,eAAe,KAAA,GACf,SAAS;GAEb,MAAM,iBAAiB;IACnB,GAAI,SAAS,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;IACpD,GAAI,SAAS,cAAc,KAAA,IAAY,EAAE,SAAS,QAAQ,UAAU,IAAI,CAAC;IACzE,YAAY;GAChB;GACA,MAAM,EAAE,MAAM,cAAc,aAAa,MAAM,2BAA2B,OAAO,UAAU,OAAO,QAAQ,cAAc,CAAC,CAAC,aAAa,GAAG;IACtI,YAAY,SAAS;IACrB,iBAAiB,SAAS;IAC1B,QAAQ,SAAS;GACrB,CAAC;GACD,MAAM,SAAS,aAAa;IAAE,QAAQ,SAAS;IAAQ,SAAS,gBAAgB,SAAS,OAAO;GAAE,GAAG,KAAK;GAC1G,OAAO,KAAK;IAAE,MAAM;IAAS,SAAS;GAAO,CAAC;GAC9C,MAAM,uBAAuB,cAAc,QAAQ,QAAQ,OAAO;IAC9D,aAAa,SAAS;IACtB;IACA,0BAA0B,OAAO,gBAAgB,wBAAwB,OAAO,aAAa,KAAK;GACtG,CAAC;GACD,IAAI,SAAS,QAAQ,SACjB,MAAM,IAAI,MAAM,qBAAqB;GAEzC,IAAI,OAAO,eAAe,WACtB,MAAM,IAAI,MAAM,qDAAqD;GAEzE,IAAI,OAAO,eAAe,aAAa,OAAO,eAAe,SACzD,MAAM,IAAI,MAAM,OAAO,gBAAgB,2BAA2B;GAEtE,OAAO,KAAK;IAAE,MAAM;IAAQ,QAAQ,OAAO;IAAY,SAAS;GAAO,CAAC;GACxE,OAAO,IAAI;EACf,SACO,OAAO;GACV,KAAK,MAAM,SAAS,OAAO,SAAS;IAChC,OAAO,MAAM;IAEb,OAAO,MAAM;IACb,OAAO,MAAM;GACjB;GACA,OAAO,aAAa,SAAS,QAAQ,UAAU,YAAY;GAC3D,OAAO,eAAe,2BAA2B,KAAK;GACtD,OAAO,KAAK;IAAE,MAAM;IAAS,QAAQ,OAAO;IAAY,OAAO;GAAO,CAAC;GACvE,OAAO,IAAI;EACf;CACJ,EAAA,CAAG;CACH,OAAO;AACX;AACA,MAAa,gBAAgB,OAAO,SAAS,YAAY;CACrD,gBAAgB,MAAM,UAAU,SAAS,QAAQ,SAAS,OAAO;CACjE,MAAM,OAAO,iBAAiB,OAAO,SAAS,SAAS,SAAS,MAAM;CACtE,MAAM,mBAAmB,SAAS,YAAY,mBAAmB,OAAO,QAAQ,SAAS,IAAI,KAAA;CAC7F,MAAM,kBAAkB,qBAAqB,QAAQ,KAAA,IAAY;CACjE,OAAO,OAAO,OAAO,SAAS;EAC1B,GAAG;EACH;CACJ,CAAC;AACL;AACA,SAAS,aAAa,OAAO,SAAS,QAAQ,gBAAgB,OAAO,WAAW;CAC5E,MAAM,SAAS,UAAU,KAAK;CAC9B,MAAM,UAAU,EAAE,GAAG,MAAM,QAAQ;CACnC,IAAI,MAAM,aAAa,kBAAkB;EACrC,MAAM,YAAY,sBAAsB,QAAQ,QAAQ;EACxD,MAAM,iBAAiB,2BAA2B;GAC9C,UAAU,QAAQ;GAClB;EACJ,CAAC;EACD,OAAO,OAAO,SAAS,cAAc;CACzC;CACA,IAAI,WAAW;EACX,IAAI,OAAO,0BAA0B,cACjC,QAAQ,kBAAkB;OAEzB;GACD,IAAI,OAAO,0BAA0B,UACjC,QAAQ,aAAa;GAEzB,QAAQ,yBAAyB;EACrC;CACJ;CAEA,IAAI,gBACA,OAAO,OAAO,SAAS,cAAc;CAEzC,OAAO,IAAI,OAAO;EACd;EACA,SAAS,MAAM;EACf,yBAAyB;EACzB;EACA,gBAAgB;CACpB,CAAC;AACL;AACA,SAAS,YAAY,OAAO,SAAS,SAAS,SAAS,UAAU,KAAK,GAAG,6BAA6B,iCAAiC,QAAQ,OAAO,OAAO,0BAA0B,GAAG;CACtL,MAAM,gBAAgB,mBAAmB,SAAS,OAAO,kBAAkB;CAC3E,MAAM,WAAW,yBAAyB,OAAO,SAAS,4BAA4B;EAClF;EACA,eAAe,cAAc;EAC7B,aAAa;GACT,oBAAoB,OAAO;GAC3B,4BAA4B,OAAO;EACvC;CACJ,CAAC;CACD,MAAM,iBAAiB,sBAAsB,SAAS,gBAAgB,SAAS,GAAG;CAClF,MAAM,6BAA6B,mBAAmB,UAAU,OAAO;CACvE,MAAM,SAAS;EACX,OAAO,MAAM;EACb,OAAO;EACP,QAAQ;EACR,kBAAkB,mBAAmB,SAAS,KAAA,IAAY,0BAA0B,SAAS,SAAS;EACtG,wBAAwB,wBAAwB,QAAQ,cAAc;EACtE,sBAAsB,6BAA6B,EAAE,MAAM,WAAW,IAAI,KAAA;EAC1E,OAAO;CACX;CACA,IAAI,SAAS,WACT,OAAO,oBAAoB,KAAK,IAAI,QAAQ,WAAW,kCAAkC;CAE7F,IAAI,SAAS,gBAAgB,KAAA,GACzB,OAAO,cAAc,SAAS;CAElC,IAAI,SAAS,gBAAgB,KAAA,GACzB,OAAO,eAAe,QAAQ;CAElC,IAAI,cAAc,UAAU,SAAS,GACjC,OAAO,QAAQ,sBAAsB,cAAc,WAAW;EAC1D,oBAAoB,OAAO;EAC3B,4BAA4B,OAAO;CACvC,CAAC;CAEL,IAAI,SAAS,eAAe,KAAA,GACxB,OAAO,cAAc,QAAQ;CAEjC,IAAI,MAAM,WAAW;EACjB,IAAI,SAAS,mBAAmB,SAAS,kBAAkB;GAIvD,OAAO,YAAY;IACf,QAJW,SAAS,kBACjB,MAAM,mBAAmB,QAAQ,oBAAoB,QAAQ,kBAC9D;IAGF,SAAS,SAAS,oBAAoB;GAC1C;GACA,OAAO,UAAU,CAAC,6BAA6B;EACnD,OACK,IAAI,MAAM,aAAa,oBAAoB,MAAM,kBAAkB,QAAQ,MAC5E,OAAO,YAAY,EACf,QAAS,MAAM,kBAAkB,OAAO,OAC5C;EAEJ,IAAI,MAAM,aAAa,OACnB,OAAO,UAAU,CAAC,6BAA6B;CACvD;CAEA,IAAI,SAAS,gBACT,OAAO,OAAO,QAAQ,QAAQ,cAAc;CAEhD,OAAO;AACX;AACA,SAAS,6BAA6B,OAAO,aAAa;CACtD,QAAQ,aAAR;EACI,KAAK,QACD,OAAO;EACX,KAAK,YACD,OAAO,MAAM,OAAO,YAAY,MAAM;EAC1C,SACI,OAAO;CACf;AACJ;AACA,SAAS,wBAAwB,OAAO,aAAa,OAAO;CACxD,MAAM,aAAa,6BAA6B,OAAO,WAAW;CAClE,IAAI,eAAe,GACf;CACJ,MAAM,KAAK,SAAS;CACpB,MAAM,KAAK,UAAU;CACrB,MAAM,KAAK,aAAa;CACxB,MAAM,KAAK,cAAc;CACzB,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK,SAAS,MAAM,KAAK,YAAY,MAAM,KAAK;AAChG"}