pi2dsh 0.13.2 → 0.13.3
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/README.md +22 -19
- package/README.zh.md +18 -15
- package/dist/{analyzer-CJFwQlSG.mjs → analyzer-DBtUYKI1.mjs} +2 -2
- package/dist/{analyzer-CJFwQlSG.mjs.map → analyzer-DBtUYKI1.mjs.map} +1 -1
- package/dist/anthropic-messages-CaYTgvLF.mjs +6436 -0
- package/dist/anthropic-messages-CaYTgvLF.mjs.map +1 -0
- package/dist/azure-openai-responses-HKWkzl2m.mjs +208 -0
- package/dist/azure-openai-responses-HKWkzl2m.mjs.map +1 -0
- package/dist/cli.mjs +3 -2
- package/dist/cli.mjs.map +1 -1
- package/dist/compat/pi-ai.d.mts +3 -2636
- package/dist/compat/pi-ai.mjs +3 -2
- package/dist/compat/pi-coding-agent.d.mts +2 -2
- package/dist/compat/pi-coding-agent.mjs +2 -2
- package/dist/{mcp-config-_idn-pzI.mjs → compatibility-Bz6ZXA7F.mjs} +8 -185
- package/dist/compatibility-Bz6ZXA7F.mjs.map +1 -0
- package/dist/completionchunk-Dhk56lZl.mjs +5212 -0
- package/dist/completionchunk-Dhk56lZl.mjs.map +1 -0
- package/dist/{credentials-oauth-Txs6oew8.mjs → credentials-oauth-CAohSLcB.mjs} +3 -3
- package/dist/{credentials-oauth-Txs6oew8.mjs.map → credentials-oauth-CAohSLcB.mjs.map} +1 -1
- package/dist/credentials-oauth.mjs +1 -1
- package/dist/deferred-tools-BD4g5QUx.mjs +32 -0
- package/dist/deferred-tools-BD4g5QUx.mjs.map +1 -0
- package/dist/diagnostics-BqYkodgB.mjs +35 -0
- package/dist/diagnostics-BqYkodgB.mjs.map +1 -0
- package/dist/dist-QBBA-dL_.mjs +1246 -0
- package/dist/dist-QBBA-dL_.mjs.map +1 -0
- package/dist/error-body-DKA3lknR.mjs +104 -0
- package/dist/error-body-DKA3lknR.mjs.map +1 -0
- package/dist/event-stream-QxN1yvIF.mjs +64 -0
- package/dist/event-stream-QxN1yvIF.mjs.map +1 -0
- package/dist/from-BCscBQ9P.mjs +3856 -0
- package/dist/from-BCscBQ9P.mjs.map +1 -0
- package/dist/github-copilot-headers-CZo2QHrt.mjs +25 -0
- package/dist/github-copilot-headers-CZo2QHrt.mjs.map +1 -0
- package/dist/google-generative-ai-2gCFYp-t.mjs +356 -0
- package/dist/google-generative-ai-2gCFYp-t.mjs.map +1 -0
- package/dist/google-shared-75IdVyrx.mjs +29041 -0
- package/dist/google-shared-75IdVyrx.mjs.map +1 -0
- package/dist/google-vertex-Bhyo4z2i.mjs +400 -0
- package/dist/google-vertex-Bhyo4z2i.mjs.map +1 -0
- package/dist/hash-Dbggamac.mjs +19 -0
- package/dist/hash-Dbggamac.mjs.map +1 -0
- package/dist/headers-CPzZhJQn.mjs +17 -0
- package/dist/headers-CPzZhJQn.mjs.map +1 -0
- package/dist/host.d.mts +12 -2
- package/dist/host.d.mts.map +1 -1
- package/dist/host.mjs +43 -5
- package/dist/host.mjs.map +1 -1
- package/dist/index.d.mts +5 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +40 -16
- package/dist/index.mjs.map +1 -1
- package/dist/json-parse-CZ0U0sj_.mjs +384 -0
- package/dist/json-parse-CZ0U0sj_.mjs.map +1 -0
- package/dist/mcp-config-jmzbgdHa.mjs +181 -0
- package/dist/mcp-config-jmzbgdHa.mjs.map +1 -0
- package/dist/mistral-conversations-DJyeTo8C.mjs +36921 -0
- package/dist/mistral-conversations-DJyeTo8C.mjs.map +1 -0
- package/dist/multipart-parser-SRcGkVuX.mjs +301 -0
- package/dist/multipart-parser-SRcGkVuX.mjs.map +1 -0
- package/dist/{pi-ai-D7PqVeWs.mjs → openai-DkzRh5_G.mjs} +78 -5063
- package/dist/openai-DkzRh5_G.mjs.map +1 -0
- package/dist/openai-codex-responses-DedxQjNG.mjs +1220 -0
- package/dist/openai-codex-responses-DedxQjNG.mjs.map +1 -0
- package/dist/openai-completions-DrjrWRdX.mjs +945 -0
- package/dist/openai-completions-DrjrWRdX.mjs.map +1 -0
- package/dist/openai-prompt-cache-BDWtZRKh.mjs +11 -0
- package/dist/openai-prompt-cache-BDWtZRKh.mjs.map +1 -0
- package/dist/openai-responses-BRdGpBX6.mjs +251 -0
- package/dist/openai-responses-BRdGpBX6.mjs.map +1 -0
- package/dist/openai-responses-shared-BmnSvdKL.mjs +570 -0
- package/dist/openai-responses-shared-BmnSvdKL.mjs.map +1 -0
- package/dist/otel-CBhmS-NR.mjs +24935 -0
- package/dist/otel-CBhmS-NR.mjs.map +1 -0
- package/dist/pi-ai-CfokFhIL.d.mts +2673 -0
- package/dist/pi-ai-CfokFhIL.d.mts.map +1 -0
- package/dist/pi-ai-Dh7HUxbt.mjs +3239 -0
- package/dist/pi-ai-Dh7HUxbt.mjs.map +1 -0
- package/dist/{pi-coding-agent-B0PT23gE.d.mts → pi-coding-agent-69yY0ke-.d.mts} +4 -2
- package/dist/{pi-coding-agent-B0PT23gE.d.mts.map → pi-coding-agent-69yY0ke-.d.mts.map} +1 -1
- package/dist/{pi-coding-agent-BVZu0dHG.mjs → pi-coding-agent-Cvez0jkF.mjs} +0 -0
- package/dist/{pi-coding-agent-BVZu0dHG.mjs.map → pi-coding-agent-Cvez0jkF.mjs.map} +1 -1
- package/dist/pi-messages-D61G2tgs.mjs +307 -0
- package/dist/pi-messages-D61G2tgs.mjs.map +1 -0
- package/dist/provider-env-C72pF4vP.mjs +40 -0
- package/dist/provider-env-C72pF4vP.mjs.map +1 -0
- package/dist/provider-retry-Cw6YJ4cr.mjs +80 -0
- package/dist/provider-retry-Cw6YJ4cr.mjs.map +1 -0
- package/dist/rolldown-runtime-CTfmNlz1.mjs +44 -0
- package/dist/{runtime-DEjs_Qlf.mjs → runtime-Dd2KhoX-.mjs} +659 -125
- package/dist/runtime-Dd2KhoX-.mjs.map +1 -0
- package/dist/runtime.d.mts +135 -26
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/simple-options-B_GO8FDE.mjs +456 -0
- package/dist/simple-options-B_GO8FDE.mjs.map +1 -0
- package/dist/src-DlTagfW5.mjs +1186 -0
- package/dist/src-DlTagfW5.mjs.map +1 -0
- package/dist/{types-7IWJPPvS.d.mts → types-B9VBF8le.d.mts} +2 -9
- package/dist/{types-7IWJPPvS.d.mts.map → types-B9VBF8le.d.mts.map} +1 -1
- package/package.json +2 -2
- package/dist/compat/pi-ai.d.mts.map +0 -1
- package/dist/mcp-config-_idn-pzI.mjs.map +0 -1
- package/dist/pi-ai-D7PqVeWs.mjs.map +0 -1
- package/dist/runtime-DEjs_Qlf.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi-ai-D7PqVeWs.mjs","names":["sleep","EventStream","AssistantMessageEventStream","AssistantMessageEventStream","sleep","qs.stringify","Messages","isAutoParsableTool","hasAutoParseableInput","parseToolCall","EventStream","EventStream","isAutoParsableTool","partialParse","isAutoParsableTool","hasAutoParseableInput","partialParse","Completions","MessagesAPI.Messages","Messages","CompletionsAPI.Completions","Completions","TranscriptionsAPI.Transcriptions","TranslationsAPI.Translations","SpeechAPI.Speech","Sessions","Realtime","SessionsAPI.Sessions","TranscriptionSessionsAPI.TranscriptionSessions","Sessions","Threads","SessionsAPI.Sessions","ThreadsAPI.Threads","Threads","_a","EventStream","Runs","StepsAPI.Steps","sleep","RunsAPI.Runs","MessagesAPI.Messages","Runs","RealtimeAPI.Realtime","ChatKitAPI.ChatKit","AssistantsAPI.Assistants","ThreadsAPI.Threads","Realtime","Content","Files","ContentAPI.Content","Content","FilesAPI.Files","Files","ItemsAPI.Items","OutputItemsAPI.OutputItems","RunsAPI.Runs","Files","sleep","Graders","GradersAPI.Graders","Graders","Checkpoints","PermissionsAPI.Permissions","CheckpointsAPI.Checkpoints","MethodsAPI.Methods","JobsAPI.Jobs","CheckpointsAPI.Checkpoints","AlphaAPI.Alpha","Checkpoints","GraderModelsAPI.GraderModels","ClientSecretsAPI.ClientSecrets","CallsAPI.Calls","EventStream","InputItemsAPI.InputItems","InputTokensAPI.InputTokens","Content","ContentAPI.Content","ContentAPI.Content","VersionsAPI.Versions","Content","PartsAPI.Parts","sleep","sleep","FilesAPI.Files","FileBatchesAPI.FileBatches","API.Completions","API.Chat","API.Embeddings","API.Files","API.Images","API.Audio","API.Moderations","API.Models","API.FineTuning","API.Graders","API.VectorStores","API.Webhooks","API.Beta","API.Batches","API.Uploads","API.Responses","API.Realtime","API.Conversations","API.Evals","API.Containers","API.Skills","API.Videos","Errors.OpenAIError","Shims.getDefaultFetch","Opts.FallbackEncoder","Errors.APIUserAbortError","Errors.APIConnectionTimeoutError","Errors.APIConnectionError","Shims.CancelReadableStream","Pagination.PagePromise","sleep","Shims.ReadableStreamFrom","Errors.APIError","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Errors.InvalidWebhookSignatureError","Uploads.toFile","Files","UploadsAPIUploads","EXTENDED_THINKING_LEVELS","getSupportedThinkingLevels","clampThinkingLevel","safeJsonStringify","procEnvCache","getBunSandboxEnvValue","getProviderEnvValue","abortableSleep","exports","partialParse","_exhaustive","getProviderEnvValue","stream","clampThinkingLevel","DEFAULT_POLL_INTERVAL_SECONDS","CLIENT_ID","AUTHORIZE_URL","TOKEN_URL","REDIRECT_URI","DEVICE_CODE_TIMEOUT_SECONDS","parseAuthorizationInput","exchangeAuthorizationCode","decode","CLIENT_ID","values","CLIENT_ID","codexFlow","anthropicFlow","copilotFlow","kimiFlow"],"sources":["../src/compat/vendor/pi-uuid.ts","../src/compat/vendor/pi-ai-retry.ts","../src/compat/vendor/pi-ai-overflow.ts","../src/compat/vendor/pi-ai-event-stream.ts","../src/compat/vendor/pi-ai-lazy.ts","../src/compat/vendor/pi-ai-provider.ts","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/tslib.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/uuid.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/errors.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/core/error.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/values.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/sleep.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/version.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/detect-platform.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/shims.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/request-options.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/qs/formats.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/qs/utils.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/qs/stringify.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/query.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/bytes.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/decoders/line.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/log.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/core/streaming.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/parse.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/core/api-promise.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/core/pagination.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/uploads.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/to-file.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/core/resource.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/path.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/chat/completions/messages.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/parser.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/chatCompletionUtils.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/EventStream.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/RunnableFunction.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/AbstractChatCompletionRunner.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/ChatCompletionRunner.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/_vendor/partial-json-parser/parser.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/ChatCompletionStream.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/chat/completions/completions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/chat/chat.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/headers.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/audio/speech.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/audio/transcriptions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/audio/translations.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/audio/audio.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/batches.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/assistants.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/realtime/sessions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/realtime/realtime.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/chatkit/sessions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/chatkit/threads.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/chatkit/chatkit.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/threads/messages.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/threads/runs/steps.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/base64.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/internal/utils/env.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/AssistantStream.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/threads/runs/runs.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/threads/threads.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/beta/beta.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/completions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/containers/files/content.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/containers/files/files.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/containers/containers.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/conversations/items.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/conversations/conversations.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/embeddings.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/evals/runs/output-items.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/evals/runs/runs.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/evals/evals.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/files.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/methods.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/alpha/graders.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/fine-tuning/fine-tuning.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/graders/grader-models.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/graders/graders.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/images.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/models.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/moderations.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/realtime/calls.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/realtime/client-secrets.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/realtime/realtime.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/ResponsesParser.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/responses/ResponseStream.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/responses/input-items.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/responses/input-tokens.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/responses/responses.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/skills/content.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/skills/versions/content.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/skills/versions/versions.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/skills/skills.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/uploads/parts.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/uploads/uploads.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/lib/Util.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/vector-stores/file-batches.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/vector-stores/files.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/vector-stores/vector-stores.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/videos.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/resources/webhooks/webhooks.mjs","../node_modules/.pnpm/openai@6.26.0_ws@8.21.3_zod@4.4.3/node_modules/openai/client.mjs","../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/utils/event-stream.js","../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/models.js","../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/utils/deferred-tools.js","../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/utils/error-body.js","../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/utils/headers.js","../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/utils/provider-env.js","../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/utils/provider-retry.js","../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/constrained-sampling.js","../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/github-copilot-headers.js","../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-prompt-cache.js","../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/utils/hash.js","../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/options.js","../node_modules/.pnpm/partial-json@0.1.7/node_modules/partial-json/dist/index.js","../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/utils/json-parse.js","../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/utils/sanitize-unicode.js","../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/transform-messages.js","../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-shared.js","../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/utils/estimate.js","../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/simple-options.js","../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","../src/compat/vendor/pi-oauth-flows/provider-env.ts","../src/compat/vendor/pi-oauth-flows/device-code.ts","../src/compat/vendor/pi-oauth-flows/oauth-page.ts","../src/compat/vendor/pi-oauth-flows/pkce.ts","../src/compat/vendor/pi-oauth-flows/openai-codex.ts","../src/compat/vendor/pi-oauth-flows/anthropic.ts","../src/compat/vendor/pi-oauth-flows/data/github-copilot.json","../src/compat/vendor/pi-oauth-flows/model-catalog.ts","../src/compat/vendor/pi-oauth-flows/github-copilot.models.ts","../src/compat/vendor/pi-oauth-flows/github-copilot.ts","../src/compat/vendor/pi-oauth-flows/kimi-coding.ts","../src/compat/pi-ai.ts"],"sourcesContent":["// @ts-nocheck — vendored Pi source; checked upstream under Pi's own tsconfig.\nlet lastTimestamp = -Infinity;\nlet sequence = 0;\n\nfunction fillRandomBytes(bytes: Uint8Array<ArrayBuffer>): void {\n\tif (globalThis.crypto?.getRandomValues) {\n\t\tglobalThis.crypto.getRandomValues(bytes);\n\t\treturn;\n\t}\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbytes[i] = Math.floor(Math.random() * 256);\n\t}\n}\n\n/** Generate a time-ordered UUIDv7. */\nexport function uuidv7(): string {\n\tconst random = new Uint8Array(16);\n\tfillRandomBytes(random);\n\tconst timestamp = Date.now();\n\n\tif (timestamp > lastTimestamp) {\n\t\tsequence = random[6] * 0x1000000 + random[7] * 0x10000 + random[8] * 0x100 + random[9];\n\t\tlastTimestamp = timestamp;\n\t} else {\n\t\tsequence = (sequence + 1) >>> 0;\n\t\tif (sequence === 0) lastTimestamp++;\n\t}\n\n\tconst bytes = new Uint8Array(16);\n\tbytes[0] = (lastTimestamp / 0x10000000000) & 0xff;\n\tbytes[1] = (lastTimestamp / 0x100000000) & 0xff;\n\tbytes[2] = (lastTimestamp / 0x1000000) & 0xff;\n\tbytes[3] = (lastTimestamp / 0x10000) & 0xff;\n\tbytes[4] = (lastTimestamp / 0x100) & 0xff;\n\tbytes[5] = lastTimestamp & 0xff;\n\tbytes[6] = 0x70 | ((sequence >>> 28) & 0x0f);\n\tbytes[7] = (sequence >>> 20) & 0xff;\n\tbytes[8] = 0x80 | ((sequence >>> 14) & 0x3f);\n\tbytes[9] = (sequence >>> 6) & 0xff;\n\tbytes[10] = ((sequence & 0x3f) << 2) | (random[10] & 0x03);\n\tbytes[11] = random[11];\n\tbytes[12] = random[12];\n\tbytes[13] = random[13];\n\tbytes[14] = random[14];\n\tbytes[15] = random[15];\n\n\tconst hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\"));\n\treturn `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(6, 8).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10, 16).join(\"\")}`;\n}\n","// @ts-nocheck — vendored Pi source; checked upstream under Pi's own tsconfig.\nimport type { AssistantMessage } from \"./pi-types.ts\";\n\nfunction buildProviderErrorPattern(patterns: readonly string[]): RegExp {\n\treturn new RegExp(patterns.join(\"|\"), \"i\");\n}\n\nconst NON_RETRYABLE_PROVIDER_LIMIT_ERROR_PATTERN = buildProviderErrorPattern([\n\t// OpenCode Go/free-tier limits returned as 429 JSON error types by OpenCode's\n\t// Zen API. These are subscription/account limits, not transient throttles.\n\t\"GoUsageLimitError\",\n\t\"FreeUsageLimitError\",\n\n\t// OpenCode Go subscription-limit text asks users to enable available-balance\n\t// usage after rolling/weekly/monthly limits are reached.\n\t\"Monthly usage limit reached\",\n\t\"available balance\",\n\n\t// Generic quota/budget/billing exhaustion. `insufficient_quota` is OpenAI's\n\t// quota/billing error code; the other strings cover common gateway wording.\n\t\"insufficient_quota\",\n\t\"out of budget\",\n\t\"quota exceeded\",\n\t\"billing\",\n]);\n\nconst RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([\n\t// Generic provider load, HTTP status, and server-side transient failures.\n\t\"overloaded\",\n\t\"rate.?limit\",\n\t\"too many requests\",\n\t\"429\",\n\t\"500\",\n\t\"502\",\n\t\"503\",\n\t\"504\",\n\t\"524\",\n\t\"service.?unavailable\",\n\t\"server.?error\",\n\t\"internal.?error\",\n\n\t// Wrapper/provider text for transient upstream failures, including OpenRouter\n\t// \"Provider returned error\" responses (#2264).\n\t\"provider.?returned.?error\",\n\t\"exceeded request buffer limit while retrying upstream\",\n\n\t// Network, proxy, and fetch transport failures. This includes OpenAI Codex\n\t// raw-fetch failures such as \"upstream connect\", \"connection refused\", and\n\t// \"reset before headers\" (#733), plus OpenRouter connection drops (#3317).\n\t\"network.?error\",\n\t\"connection.?error\",\n\t\"connection.?refused\",\n\t\"connection.?lost\",\n\t\"other side closed\",\n\t\"fetch failed\",\n\t\"getaddrinfo\",\n\t\"ENOTFOUND\",\n\t\"EAI_AGAIN\",\n\t\"upstream.?connect\",\n\t\"reset before headers\",\n\t\"socket hang up\",\n\t\"socket connection was closed\",\n\t\"timed? out\",\n\t\"timeout\",\n\t\"terminated\",\n\n\t// WebSocket transports can report close/error text instead of HTTP/fetch text.\n\t\"websocket.?closed\",\n\t\"websocket.?error\",\n\n\t// Premature stream endings from SDKs and transports. Anthropic can throw\n\t// \"stream ended without ...\" and \"Anthropic stream ended before message_stop\"\n\t// (#4433); Bedrock/Smithy can throw an HTTP/2 no-response error (#3594).\n\t\"ended without\",\n\t\"stream ended before message_stop\",\n\t\"stream ended before a terminal response event\",\n\t\"http2 request did not get a response\",\n\n\t// Provider-requested retry delay cap failures should flow through the outer\n\t// retry policy so callers can surface/abort the backoff (#1123).\n\t\"retry delay\",\n\n\t// Explicit retry guidance emitted mid-stream by OpenAI Responses and Bedrock\n\t// stream exceptions (#6019).\n\t\"you can retry your request\",\n\t\"try your request again\",\n\t\"please retry your request\",\n\n\t// gRPC based providers (e.g. NVIDIA NIM)\n\t\"ResourceExhausted\",\n]);\n\n/**\n * Retry policy: bounded attempts with exponential backoff (`baseDelayMs * 2^(attempt-1)`).\n * Matches `settings.retry` (`enabled`, `maxRetries`, `baseDelayMs`) in coding-agent; kept\n * here so the classifier and the policy-driven retry loop live together and stay reusable\n * by the SDK and other callers.\n */\nexport interface RetryPolicy {\n\tenabled: boolean;\n\t/** Max retry attempts (0 = no retries). The initial call never counts as a retry. */\n\tmaxRetries: number;\n\t/** Base delay in ms. Per-attempt delay is `baseDelayMs * 2^(attempt-1)` before jitter. */\n\tbaseDelayMs: number;\n}\n\n/** Optional callbacks emitted by {@link retryAssistantCall} around each retry. */\nexport interface RetryCallbacks {\n\t/** Emitted before the backoff sleep of each retry attempt (1-indexed). */\n\tonRetryScheduled?: (\n\t\tattempt: number,\n\t\tmaxAttempts: number,\n\t\tdelayMs: number,\n\t\terrorMessage: string,\n\t) => void | Promise<void>;\n\t/** Emitted after the backoff sleep, immediately before the retried call starts. */\n\tonRetryAttemptStart?: () => void | Promise<void>;\n\t/** Emitted once when the loop ends: success if a later call completed normally. */\n\tonRetryFinished?: (success: boolean, attempt: number, finalError?: string) => void | Promise<void>;\n}\n\nclass RetrySleepAbortError extends Error {\n\tconstructor() {\n\t\tsuper(\"Aborted\");\n\t}\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) {\n\t\t\treject(new RetrySleepAbortError());\n\t\t\treturn;\n\t\t}\n\t\tconst timeout = setTimeout(resolve, ms);\n\t\tsignal?.addEventListener(\n\t\t\t\"abort\",\n\t\t\t() => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\treject(new RetrySleepAbortError());\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t});\n}\n\n/**\n * Run a single assistant-producing call with bounded retry on transient errors.\n *\n * Behavior:\n * - A successful response is returned immediately. Aborts are terminal and never\n * retried, but reported as unsuccessful if they happen after a retry was scheduled.\n * Aborts during the backoff sleep are normalized to an aborted `AssistantMessage`\n * too, so callers do not need to care when cancellation happened.\n * - A non-retryable error (per {@link isRetryableAssistantError}, including quota/\n * billing exhaustion) is returned immediately so deterministic errors fail fast.\n * - Otherwise retries up to `maxRetries` times with exponential backoff, emitting\n * `onRetryScheduled` before each sleep, `onRetryAttemptStart` after each sleep before\n * the retried call starts, and `onRetryFinished` once at the end (whether the loop\n * ends in success, exhausted retries, or an aborted backoff).\n *\n * When `policy` is undefined or disabled, the first response is returned unchanged\n * (equivalent to calling `produce()` directly).\n */\nexport async function retryAssistantCall(\n\tproduce: () => Promise<AssistantMessage>,\n\tpolicy: RetryPolicy | undefined,\n\tsignal: AbortSignal | undefined,\n\tcallbacks?: RetryCallbacks,\n): Promise<AssistantMessage> {\n\tconst maxAttempts = policy?.enabled ? policy.maxRetries : 0;\n\n\tlet attempt = 0;\n\tlet lastRetry: { attempt: number; errorMessage: string } | undefined;\n\tfor (;;) {\n\t\tconst response = await produce();\n\n\t\t// Abort: terminal but not successful. Never retry an aborted message.\n\t\tif (response.stopReason === \"aborted\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Success: non-error, non-abort responses return as-is.\n\t\tif (response.stopReason !== \"error\") {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(true, lastRetry.attempt);\n\t\t\treturn response;\n\t\t}\n\n\t\t// Non-retryable, or budget exhausted: return the final error message.\n\t\tif (attempt >= maxAttempts || !isRetryableAssistantError(response)) {\n\t\t\tif (lastRetry) await callbacks?.onRetryFinished?.(false, lastRetry.attempt, response.errorMessage);\n\t\t\treturn response;\n\t\t}\n\n\t\tattempt++;\n\t\tlastRetry = { attempt, errorMessage: response.errorMessage || \"Unknown error\" };\n\t\tconst delayMs = policy!.baseDelayMs * 2 ** (attempt - 1);\n\t\tawait callbacks?.onRetryScheduled?.(attempt, maxAttempts, delayMs, lastRetry.errorMessage);\n\n\t\t// Normalize aborts during retry backoff to the same AssistantMessage shape as\n\t\t// provider stream aborts, so callers do not need to care when cancellation happened.\n\t\ttry {\n\t\t\tawait sleep(delayMs, signal);\n\t\t} catch (error) {\n\t\t\tawait callbacks?.onRetryFinished?.(false, attempt, lastRetry.errorMessage);\n\t\t\tif (error instanceof RetrySleepAbortError) {\n\t\t\t\treturn { ...response, stopReason: \"aborted\", errorMessage: undefined };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait callbacks?.onRetryAttemptStart?.();\n\t}\n}\n\n/**\n * Classifies whether a failed assistant message looks like a transient provider\n * or transport error, so callers can decide if the last assistant turn should be\n * restarted.\n *\n * This does not implement retry policy. Callers should first handle context\n * overflow separately, then apply their own retry budget, backoff, and reporting\n * before restarting the assistant turn.\n */\nexport function isRetryableAssistantError(message: AssistantMessage): boolean {\n\tif (message.stopReason !== \"error\" || !message.errorMessage) return false;\n\tconst errorMessage = message.errorMessage;\n\tif (NON_RETRYABLE_PROVIDER_LIMIT_ERROR_PATTERN.test(errorMessage)) return false;\n\treturn RETRYABLE_PROVIDER_ERROR_PATTERN.test(errorMessage);\n}\n","// @ts-nocheck — vendored Pi source; checked upstream under Pi's own tsconfig.\nimport type { AssistantMessage } from \"./pi-types.ts\";\n\n/**\n * Regex patterns to detect context overflow errors from different providers.\n *\n * These patterns match error messages returned when the input exceeds\n * the model's context window.\n *\n * Provider-specific patterns (with example error messages):\n *\n * - Anthropic: \"prompt is too long: 213462 tokens > 200000 maximum\"\n * - Anthropic: \"413 {\\\"error\\\":{\\\"type\\\":\\\"request_too_large\\\",\\\"message\\\":\\\"Request exceeds the maximum size\\\"}}\"\n * - OpenAI: \"Your input exceeds the context window of this model\"\n * - OpenAI/LiteLLM: \"Requested token count exceeds the model's maximum context length of 131072 tokens\"\n * - OpenAI-compatible: \"Input length (265330) exceeds model's maximum context length (262144).\"\n * - Google: \"The input token count (1196265) exceeds the maximum number of tokens allowed (1048575)\"\n * - xAI: \"This model's maximum prompt length is 131072 but the request contains 537812 tokens\"\n * - Groq: \"Please reduce the length of the messages or completion\"\n * - OpenRouter: \"This endpoint's maximum context length is X tokens. However, you requested about Y tokens\"\n * - OpenRouter/Poolside: \"Input length X exceeds the maximum allowed input length of Y tokens.\"\n * - Together AI: \"The input (X tokens) is longer than the model's context length (Y tokens).\"\n * - llama.cpp: \"the request exceeds the available context size, try increasing it\"\n * - LM Studio: \"tokens to keep from the initial prompt is greater than the context length\"\n * - GitHub Copilot: \"prompt token count of X exceeds the limit of Y\"\n * - MiniMax: \"invalid params, context window exceeds limit\"\n * - Kimi For Coding: \"Your request exceeded model token limit: X (requested: Y)\"\n * - DS4: \"Prompt has X tokens, but the configured context size is Y tokens\"\n * - Cerebras: \"400/413 status code (no body)\"\n * - Mistral: \"Prompt contains X tokens ... too large for model with Y maximum context length\"\n * - z.ai: Does NOT error, accepts overflow silently - handled via usage.input > contextWindow\n * - Xiaomi MiMo: Truncates input to fill contextWindow exactly, then returns finish_reason \"length\"\n * with output=0 (no room left to generate). Detected via stopReason \"length\" + zero output +\n * input filling the context window.\n * - DashScope/Qwen: \"Range of input length should be [1, X]\" (HTTP 400 invalid_parameter_error)\n * - Ollama: Some deployments truncate silently, others return errors like \"prompt too long; exceeded max context length by X tokens\"\n */\nconst OVERFLOW_PATTERNS = [\n\t/prompt is too long/i, // Anthropic token overflow\n\t/request_too_large/i, // Anthropic request byte-size overflow (HTTP 413)\n\t/input is too long for requested model/i, // Amazon Bedrock\n\t/exceeds the context window/i, // OpenAI (Completions & Responses API)\n\t/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\\d,]+ tokens?|\\s*\\([\\d,]+\\))/i, // OpenAI-compatible proxies (LiteLLM)\n\t/input token count.*exceeds the maximum/i, // Google (Gemini)\n\t/maximum prompt length is \\d+/i, // xAI (Grok)\n\t/reduce the length of the messages/i, // Groq\n\t/maximum context length is \\d+ tokens/i, // OpenRouter (most backends)\n\t/exceeds (?:the )?maximum allowed input length of [\\d,]+ tokens?/i, // OpenRouter/Poolside\n\t/input \\(\\d+ tokens\\) is longer than the model'?s context length \\(\\d+ tokens\\)/i, // Together AI\n\t/exceeds the limit of \\d+/i, // GitHub Copilot\n\t/exceeds the available context size/i, // llama.cpp server\n\t/greater than the context length/i, // LM Studio\n\t/context window exceeds limit/i, // MiniMax\n\t/exceeded model token limit/i, // Kimi For Coding\n\t/too large for model with \\d+ maximum context length/i, // Mistral\n\t/prompt has [\\d,]+ tokens?, but the configured context size is [\\d,]+ tokens?/i, // DS4 server\n\t/model_context_window_exceeded/i, // z.ai non-standard finish_reason surfaced as error text\n\t/prompt too long; exceeded (?:max )?context length/i, // Ollama explicit overflow error\n\t/range of input length should be/i, // DashScope / Qwen Token Plan\n\t/context[_ ]length[_ ]exceeded/i, // Generic fallback\n\t/too many tokens/i, // Generic fallback\n\t/token limit exceeded/i, // Generic fallback\n\t/^4(?:00|13)\\s*(?:status code)?\\s*\\(no body\\)/i, // Cerebras: 400/413 with no body\n];\n\n/**\n * Patterns that indicate non-overflow errors (e.g. rate limiting, server errors).\n * Error messages matching any of these are excluded from overflow detection\n * even if they also match an OVERFLOW_PATTERN.\n *\n * Example: Bedrock formats throttling errors as \"ThrottlingException: Too many tokens,\n * please wait before trying again.\" which would match the /too many tokens/i overflow\n * pattern without this exclusion.\n */\nconst NON_OVERFLOW_PATTERNS = [\n\t/^(Throttling error|Service unavailable):/i, // AWS Bedrock non-overflow errors (human-readable prefixes from formatBedrockError)\n\t/rate limit/i, // Generic rate limiting\n\t/too many requests/i, // Generic HTTP 429 style\n];\n\n/**\n * Check if an assistant message represents a context overflow error.\n *\n * This handles three cases:\n * 1. Error-based overflow: Most providers return stopReason \"error\" with a\n * specific error message pattern.\n * 2. Silent overflow: Some providers accept overflow requests and return\n * successfully. For these, we check if usage.input exceeds the context window.\n * 3. Length-stop overflow: Xiaomi MiMo can return \"length\" with zero output when\n * the input fills the context window.\n *\n * ## Reliability by Provider\n *\n * **Reliable detection (returns error with detectable message):**\n * - Anthropic: \"prompt is too long: X tokens > Y maximum\" or \"request_too_large\"\n * - OpenAI (Completions & Responses): \"exceeds the context window\", \"exceeds the model's maximum context length of X tokens\", or \"exceeds model's maximum context length (X)\"\n * - Google Gemini: \"input token count exceeds the maximum\"\n * - xAI (Grok): \"maximum prompt length is X but request contains Y\"\n * - Groq: \"reduce the length of the messages\"\n * - Cerebras: 400/413 status code (no body)\n * - Mistral: \"Prompt contains X tokens ... too large for model with Y maximum context length\"\n * - OpenRouter (most backends): \"maximum context length is X tokens\"\n * - OpenRouter/Poolside: \"Input length X exceeds the maximum allowed input length of Y tokens.\"\n * - Together AI: \"The input (X tokens) is longer than the model's context length (Y tokens).\"\n * - llama.cpp: \"exceeds the available context size\"\n * - LM Studio: \"greater than the context length\"\n * - Kimi For Coding: \"exceeded model token limit: X (requested: Y)\"\n * - DS4: \"Prompt has X tokens, but the configured context size is Y tokens\"\n * - DashScope/Qwen: \"Range of input length should be [1, X]\"\n *\n * **Unreliable detection:**\n * - z.ai: Sometimes accepts overflow silently (detectable via usage.input > contextWindow),\n * sometimes returns rate limit errors. Pass contextWindow param to detect silent overflow.\n * - Xiaomi MiMo: Truncates input to fit contextWindow then returns stopReason \"length\" with\n * output=0. Pass contextWindow param to detect via the \"filled context + zero output\" signal.\n * - Ollama: May truncate input silently for some setups, but may also return explicit\n * overflow errors that match the patterns above. Silent truncation still cannot be\n * detected here because we do not know the expected token count.\n *\n * ## Custom Providers\n *\n * If you've added custom models via settings.json, this function may not detect\n * overflow errors from those providers. To add support:\n *\n * 1. Send a request that exceeds the model's context window\n * 2. Check the errorMessage in the response\n * 3. Create a regex pattern that matches the error\n * 4. The pattern should be added to OVERFLOW_PATTERNS in this file, or\n * check the errorMessage yourself before calling this function\n *\n * @param message - The assistant message to check\n * @param contextWindow - Optional context window size for detecting silent overflow (z.ai)\n * @returns true if the message indicates a context overflow\n */\nexport function isContextOverflow(message: AssistantMessage, contextWindow?: number): boolean {\n\t// Case 1: Check error message patterns\n\tif (message.stopReason === \"error\" && message.errorMessage) {\n\t\t// Skip messages matching known non-overflow patterns (e.g. throttling / rate-limit)\n\t\tconst isNonOverflow = NON_OVERFLOW_PATTERNS.some((p) => p.test(message.errorMessage!));\n\t\tif (!isNonOverflow && OVERFLOW_PATTERNS.some((p) => p.test(message.errorMessage!))) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Case 2: Silent overflow (z.ai style) - successful but usage exceeds context\n\tif (contextWindow && message.stopReason === \"stop\") {\n\t\tconst inputTokens = message.usage.input + message.usage.cacheRead;\n\t\tif (inputTokens > contextWindow) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Case 3: Length-stop overflow (Xiaomi MiMo style) - server truncates oversized input\n\t// to fit the context window, leaving no room for output. Returns stopReason \"length\"\n\t// with output=0 and input+cacheRead filling the context window.\n\tif (contextWindow && message.stopReason === \"length\" && message.usage.output === 0) {\n\t\tconst inputTokens = message.usage.input + message.usage.cacheRead;\n\t\tif (inputTokens >= contextWindow * 0.99) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Check whether a length stop ended below the caller or model's intended output limit.\n * Such responses may be caused by context pressure or provider-side truncation, so callers\n * can make one bounded compact-and-retry attempt. `desiredMaxOutput` must be the original\n * limit before any context-based clamping.\n */\nexport function isRecoverableLength(message: AssistantMessage, desiredMaxOutput: number): boolean {\n\treturn message.stopReason === \"length\" && desiredMaxOutput > 0 && message.usage.output < desiredMaxOutput;\n}\n\n/**\n * Get the overflow patterns for testing purposes.\n */\nexport function getOverflowPatterns(): RegExp[] {\n\treturn [...OVERFLOW_PATTERNS];\n}\n","// @ts-nocheck — vendored Pi source (pi-ai utils/event-stream.js @0.84.1, MIT, see ./PI-LICENSE); unchanged.\n// Generic event stream class for async iteration\nexport class EventStream {\n queue = [];\n waiting = [];\n done = false;\n finalResultPromise;\n resolveFinalResult;\n isComplete;\n extractResult;\n constructor(isComplete, extractResult) {\n this.isComplete = isComplete;\n this.extractResult = extractResult;\n this.finalResultPromise = new Promise((resolve) => {\n this.resolveFinalResult = resolve;\n });\n }\n push(event) {\n if (this.done)\n return;\n if (this.isComplete(event)) {\n this.done = true;\n this.resolveFinalResult(this.extractResult(event));\n }\n // Deliver to waiting consumer or queue it\n const waiter = this.waiting.shift();\n if (waiter) {\n waiter({ value: event, done: false });\n }\n else {\n this.queue.push(event);\n }\n }\n end(result) {\n this.done = true;\n if (result !== undefined) {\n this.resolveFinalResult(result);\n }\n // Notify all waiting consumers that we're done\n while (this.waiting.length > 0) {\n const waiter = this.waiting.shift();\n waiter({ value: undefined, done: true });\n }\n }\n async *[Symbol.asyncIterator]() {\n while (true) {\n if (this.queue.length > 0) {\n yield this.queue.shift();\n }\n else if (this.done) {\n return;\n }\n else {\n const result = await new Promise((resolve) => this.waiting.push(resolve));\n if (result.done)\n return;\n yield result.value;\n }\n }\n }\n result() {\n return this.finalResultPromise;\n }\n}\nexport class AssistantMessageEventStream extends EventStream {\n constructor() {\n super((event) => event.type === \"done\" || event.type === \"error\", (event) => {\n if (event.type === \"done\") {\n return event.message;\n }\n else if (event.type === \"error\") {\n return event.error;\n }\n throw new Error(\"Unexpected event type for final result\");\n });\n }\n}\n/** Factory function for AssistantMessageEventStream (for use in extensions) */\nexport function createAssistantMessageEventStream() {\n return new AssistantMessageEventStream();\n}\n//# sourceMappingURL=event-stream.js.map","// @ts-nocheck — vendored Pi source (pi-ai api/lazy.js @0.84.1, MIT, see ./PI-LICENSE); import remapped, logic unchanged.\nimport { AssistantMessageEventStream } from './pi-ai-event-stream.js';\nfunction createSetupErrorMessage(model, error) {\n return {\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: \"error\",\n errorMessage: error instanceof Error ? error.message : String(error),\n timestamp: Date.now(),\n };\n}\nfunction hasResult(source) {\n return typeof source.result === \"function\";\n}\nasync function forwardStream(target, source) {\n for await (const event of source) {\n target.push(event);\n }\n target.end(hasResult(source) ? await source.result() : undefined);\n}\n/**\n * Returns a stream synchronously while running async setup (auth resolution,\n * lazy module loading) behind it. Setup failures terminate the stream with an\n * error event.\n */\nexport function lazyStream(model, setup) {\n const outer = new AssistantMessageEventStream();\n setup()\n .then((inner) => forwardStream(outer, inner))\n .catch((error) => {\n const message = createSetupErrorMessage(model, error);\n outer.push({ type: \"error\", reason: \"error\", error: message });\n outer.end(message);\n });\n return outer;\n}\nexport function lazyApi(load, capabilities) {\n const api = {\n stream: (model, context, options) => lazyStream(model, async () => (await load()).stream(model, context, options)),\n streamSimple: (model, context, options) => lazyStream(model, async () => (await load()).streamSimple(model, context, options)),\n };\n if (capabilities?.fetchDeferred) {\n api.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {\n const implementation = await load();\n if (!implementation.fetchDeferred)\n throw new Error(\"API does not support deferred responses\");\n return implementation.fetchDeferred(model, handle, options);\n });\n }\n if (capabilities?.cancelDeferred) {\n api.cancelDeferred = async (model, handle, options) => {\n const implementation = await load();\n if (!implementation.cancelDeferred)\n throw new Error(\"API cannot cancel deferred responses\");\n await implementation.cancelDeferred(model, handle, options);\n };\n }\n return api;\n}\n//# sourceMappingURL=lazy.js.map","// @ts-nocheck — vendored Pi source excerpts (pi-ai auth/resolve.js ModelsError + models.js createProvider @0.84.1, MIT, see ./PI-LICENSE); logic unchanged.\nimport { lazyStream } from './pi-ai-lazy.js'\nfunction withCauseDetail(message, cause) {\n if (cause === undefined || cause === null)\n return message;\n const detail = formatThrownValue(cause).trim();\n if (!detail || message.includes(detail))\n return message;\n return `${message}: ${detail}`;\n}\nexport class ModelsError extends Error {\n code;\n constructor(code, message, options) {\n super(withCauseDetail(message, options?.cause), options);\n this.name = \"ModelsError\";\n this.code = code;\n }\n}\n/**\n * Builds a provider from parts. Built-in provider factories and models.json\n * custom providers both go through this. A single `api` streams all models;\n * an `api` map dispatches on `model.api`, and a model whose api has no entry\n * produces a stream error.\n */\nexport function createProvider(input) {\n const baselineModels = input.models;\n let dynamicModels = [];\n const fetchModels = input.fetchModels;\n const currentModels = () => {\n const merged = [...baselineModels];\n for (const model of dynamicModels) {\n const index = merged.findIndex((entry) => entry.id === model.id);\n if (index >= 0)\n merged[index] = model;\n else\n merged.push(model);\n }\n return merged;\n };\n const single = typeof input.api.stream === \"function\" ? input.api : undefined;\n const byApi = single ? undefined : input.api;\n const apiFor = (model) => single ?? byApi?.[model.api];\n const dispatch = (model, run) => {\n const streams = apiFor(model);\n if (!streams) {\n return lazyStream(model, async () => {\n throw new ModelsError(\"stream\", `Provider ${input.id} has no API implementation for \"${model.api}\"`);\n });\n }\n return run(streams);\n };\n const provider = {\n id: input.id,\n name: input.name ?? input.id,\n baseUrl: input.baseUrl,\n headers: input.headers,\n auth: input.auth,\n getModels: currentModels,\n refreshModels: fetchModels\n ? async (context) => {\n if (context.stored) {\n const restored = context.stored.models\n .filter((model) => model.provider === input.id)\n .map((model) => model);\n if (!(await context.publish({\n update: () => {\n dynamicModels = restored;\n },\n }))) {\n return;\n }\n }\n if (!context.allowNetwork || context.signal.aborted)\n return;\n const refreshed = await fetchModels(context);\n if (context.signal.aborted)\n return;\n await context.publish({\n persist: { models: refreshed, checkedAt: Date.now() },\n update: () => {\n dynamicModels = refreshed;\n },\n });\n }\n : undefined,\n filterModels: input.filterModels,\n stream: (model, context, options) => dispatch(model, (streams) => streams.stream(model, context, options)),\n streamSimple: (model, context, options) => dispatch(model, (streams) => streams.streamSimple(model, context, options)),\n };\n const streams = single ? [single] : Object.values(byApi ?? {}).filter((entry) => entry !== undefined);\n if (streams.some((entry) => entry.fetchDeferred !== undefined)) {\n provider.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {\n const implementation = apiFor(model);\n if (!implementation?.fetchDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} does not support deferred responses for \"${model.api}\"`);\n }\n return implementation.fetchDeferred(model, handle, options);\n });\n }\n if (streams.some((entry) => entry.cancelDeferred !== undefined)) {\n provider.cancelDeferred = async (model, handle, options) => {\n const implementation = apiFor(model);\n if (!implementation?.cancelDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} cannot cancel deferred responses for \"${model.api}\"`);\n }\n await implementation.cancelDeferred(model, handle, options);\n };\n }\n return provider;\n}\n","function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? (f.value = value) : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport { __classPrivateFieldSet, __classPrivateFieldGet };\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * https://stackoverflow.com/a/2117523\n */\nexport let uuid4 = function () {\n const { crypto } = globalThis;\n if (crypto?.randomUUID) {\n uuid4 = crypto.randomUUID.bind(crypto);\n return crypto.randomUUID();\n }\n const u8 = new Uint8Array(1);\n const randomByte = crypto ? () => crypto.getRandomValues(u8)[0] : () => (Math.random() * 0xff) & 0xff;\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16));\n};\n//# sourceMappingURL=uuid.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function isAbortError(err) {\n return (typeof err === 'object' &&\n err !== null &&\n // Spec-compliant fetch implementations\n (('name' in err && err.name === 'AbortError') ||\n // Expo fetch\n ('message' in err && String(err.message).includes('FetchRequestCanceledException'))));\n}\nexport const castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n if (Object.prototype.toString.call(err) === '[object Error]') {\n // @ts-ignore - not all envs have native support for cause yet\n const error = new Error(err.message, err.cause ? { cause: err.cause } : {});\n if (err.stack)\n error.stack = err.stack;\n // @ts-ignore - not all envs have native support for cause yet\n if (err.cause && !error.cause)\n error.cause = err.cause;\n if (err.name)\n error.name = err.name;\n return error;\n }\n }\n catch { }\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\n//# sourceMappingURL=errors.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"../internal/errors.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.requestID = headers?.get('x-request-id');\n this.error = error;\n const data = error;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n const error = errorResponse?.['error'];\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexport class APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexport class APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\nexport class LengthFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the length limit was reached`);\n }\n}\nexport class ContentFilterFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the request was rejected by the content filter`);\n }\n}\nexport class InvalidWebhookSignatureError extends Error {\n constructor(message) {\n super(message);\n }\n}\n//# sourceMappingURL=error.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nexport const isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nexport let isArray = (val) => ((isArray = Array.isArray), isArray(val));\nexport let isReadonlyArray = isArray;\n/** Returns an object if the given value isn't an object, otherwise returns as-is */\nexport function maybeObj(x) {\n if (typeof x !== 'object') {\n return {};\n }\n return x ?? {};\n}\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nexport function isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexport const ensurePresent = (value) => {\n if (value == null) {\n throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n }\n return value;\n};\nexport const validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\nexport const coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceBoolean(value);\n};\nexport const safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\n//# sourceMappingURL=values.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n//# sourceMappingURL=sleep.mjs.map","export const VERSION = '6.26.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { VERSION } from \"../version.mjs\";\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\n/**\n * Note this does not detect 'browser'; for that, use getBrowserInfo().\n */\nfunction getDetectedPlatform() {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return 'deno';\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return 'edge';\n }\n if (Object.prototype.toString.call(typeof globalThis.process !== 'undefined' ? globalThis.process : 0) === '[object process]') {\n return 'node';\n }\n return 'unknown';\n}\nconst getPlatformProperties = () => {\n const detectedPlatform = getDetectedPlatform();\n if (detectedPlatform === 'deno') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': globalThis.process.version,\n };\n }\n // Check if Node.js\n if (detectedPlatform === 'node') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(globalThis.process.platform ?? 'unknown'),\n 'X-Stainless-Arch': normalizeArch(globalThis.process.arch ?? 'unknown'),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': globalThis.process.version ?? 'unknown',\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nexport const getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\n//# sourceMappingURL=detect-platform.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function getDefaultFetch() {\n if (typeof fetch !== 'undefined') {\n return fetch;\n }\n throw new Error('`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`');\n}\nexport function makeReadableStream(...args) {\n const ReadableStream = globalThis.ReadableStream;\n if (typeof ReadableStream === 'undefined') {\n // Note: All of the platforms / runtimes we officially support already define\n // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.\n throw new Error('`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`');\n }\n return new ReadableStream(...args);\n}\nexport function ReadableStreamFrom(iterable) {\n let iter = Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n return makeReadableStream({\n start() { },\n async pull(controller) {\n const { done, value } = await iter.next();\n if (done) {\n controller.close();\n }\n else {\n controller.enqueue(value);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n}\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable(stream) {\n if (stream[Symbol.asyncIterator])\n return stream;\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done)\n reader.releaseLock(); // release lock when stream becomes closed\n return result;\n }\n catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n/**\n * Cancels a ReadableStream we don't need to consume.\n * See https://undici.nodejs.org/#/?id=garbage-collection\n */\nexport async function CancelReadableStream(stream) {\n if (stream === null || typeof stream !== 'object')\n return;\n if (stream[Symbol.asyncIterator]) {\n await stream[Symbol.asyncIterator]().return?.();\n return;\n }\n const reader = stream.getReader();\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n}\n//# sourceMappingURL=shims.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const FallbackEncoder = ({ headers, body }) => {\n return {\n bodyHeaders: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(body),\n };\n};\n//# sourceMappingURL=request-options.mjs.map","export const default_format = 'RFC3986';\nexport const default_formatter = (v) => String(v);\nexport const formatters = {\n RFC1738: (v) => String(v).replace(/%20/g, '+'),\n RFC3986: default_formatter,\n};\nexport const RFC1738 = 'RFC1738';\nexport const RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.mjs.map","import { RFC1738 } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nexport let has = (obj, key) => ((has = Object.hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),\n has(obj, key));\nconst hex_table = /* @__PURE__ */ (() => {\n const array = [];\n for (let i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n return array;\n})();\nfunction compact_queue(queue) {\n while (queue.length > 1) {\n const item = queue.pop();\n if (!item)\n continue;\n const obj = item.obj[item.prop];\n if (isArray(obj)) {\n const compacted = [];\n for (let j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n // @ts-ignore\n item.obj[item.prop] = compacted;\n }\n }\n}\nfunction array_to_object(source, options) {\n const obj = options && options.plainObjects ? Object.create(null) : {};\n for (let i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n return obj;\n}\nexport function merge(target, source, options = {}) {\n if (!source) {\n return target;\n }\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n }\n else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {\n target[source] = true;\n }\n }\n else {\n return [target, source];\n }\n return target;\n }\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n let mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n // @ts-ignore\n mergeTarget = array_to_object(target, options);\n }\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has(target, i)) {\n const targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n }\n else {\n target.push(item);\n }\n }\n else {\n target[i] = item;\n }\n });\n return target;\n }\n return Object.keys(source).reduce(function (acc, key) {\n const value = source[key];\n if (has(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n }\n else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n}\nexport function assign_single_source(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n}\nexport function decode(str, _, charset) {\n const strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n }\n catch (e) {\n return strWithoutPlus;\n }\n}\nconst limit = 1024;\nexport const encode = (str, _defaultEncoder, charset, _kind, format) => {\n // This code was originally written by Brian White for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n let string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n }\n else if (typeof str !== 'string') {\n string = String(str);\n }\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n let out = '';\n for (let j = 0; j < string.length; j += limit) {\n const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n const arr = [];\n for (let i = 0; i < segment.length; ++i) {\n let c = segment.charCodeAt(i);\n if (c === 0x2d || // -\n c === 0x2e || // .\n c === 0x5f || // _\n c === 0x7e || // ~\n (c >= 0x30 && c <= 0x39) || // 0-9\n (c >= 0x41 && c <= 0x5a) || // a-z\n (c >= 0x61 && c <= 0x7a) || // A-Z\n (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n if (c < 0x80) {\n arr[arr.length] = hex_table[c];\n continue;\n }\n if (c < 0x800) {\n arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n if (c < 0xd800 || c >= 0xe000) {\n arr[arr.length] =\n hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n i += 1;\n c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n arr[arr.length] =\n hex_table[0xf0 | (c >> 18)] +\n hex_table[0x80 | ((c >> 12) & 0x3f)] +\n hex_table[0x80 | ((c >> 6) & 0x3f)] +\n hex_table[0x80 | (c & 0x3f)];\n }\n out += arr.join('');\n }\n return out;\n};\nexport function compact(value) {\n const queue = [{ obj: { o: value }, prop: 'o' }];\n const refs = [];\n for (let i = 0; i < queue.length; ++i) {\n const item = queue[i];\n // @ts-ignore\n const obj = item.obj[item.prop];\n const keys = Object.keys(obj);\n for (let j = 0; j < keys.length; ++j) {\n const key = keys[j];\n const val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n compact_queue(queue);\n return value;\n}\nexport function is_regexp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexport function is_buffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexport function combine(a, b) {\n return [].concat(a, b);\n}\nexport function maybe_map(val, fn) {\n if (isArray(val)) {\n const mapped = [];\n for (let i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n}\n//# sourceMappingURL=utils.mjs.map","import { encode, is_buffer, maybe_map, has } from \"./utils.mjs\";\nimport { default_format, default_formatter, formatters } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nconst array_prefix_generators = {\n brackets(prefix) {\n return String(prefix) + '[]';\n },\n comma: 'comma',\n indices(prefix, key) {\n return String(prefix) + '[' + key + ']';\n },\n repeat(prefix) {\n return String(prefix);\n },\n};\nconst push_to_array = function (arr, value_or_array) {\n Array.prototype.push.apply(arr, isArray(value_or_array) ? value_or_array : [value_or_array]);\n};\nlet toISOString;\nconst defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: encode,\n encodeValuesOnly: false,\n format: default_format,\n formatter: default_formatter,\n /** @deprecated */\n indices: false,\n serializeDate(date) {\n return (toISOString ?? (toISOString = Function.prototype.call.bind(Date.prototype.toISOString)))(date);\n },\n skipNulls: false,\n strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n return (typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n typeof v === 'symbol' ||\n typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n let obj = object;\n let tmp_sc = sideChannel;\n let step = 0;\n let find_flag = false;\n while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n // Where object last appeared in the ref tree\n const pos = tmp_sc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n }\n else {\n find_flag = true; // Break while\n }\n }\n if (typeof tmp_sc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n }\n else if (obj instanceof Date) {\n obj = serializeDate?.(obj);\n }\n else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = maybe_map(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate?.(value);\n }\n return value;\n });\n }\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ?\n // @ts-expect-error\n encoder(prefix, defaults.encoder, charset, 'key', format)\n : prefix;\n }\n obj = '';\n }\n if (is_non_nullish_primitive(obj) || is_buffer(obj)) {\n if (encoder) {\n const key_value = encodeValuesOnly ? prefix\n // @ts-expect-error\n : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [\n formatter?.(key_value) +\n '=' +\n // @ts-expect-error\n formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n ];\n }\n return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n }\n const values = [];\n if (typeof obj === 'undefined') {\n return values;\n }\n let obj_keys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n // @ts-expect-error values only\n obj = maybe_map(obj, encoder);\n }\n obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n }\n else if (isArray(filter)) {\n obj_keys = filter;\n }\n else {\n const keys = Object.keys(obj);\n obj_keys = sort ? keys.sort(sort) : keys;\n }\n const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n const adjusted_prefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjusted_prefix + '[]';\n }\n for (let j = 0; j < obj_keys.length; ++j) {\n const key = obj_keys[j];\n const value = \n // @ts-ignore\n typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n if (skipNulls && value === null) {\n continue;\n }\n // @ts-ignore\n const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n const key_prefix = isArray(obj) ?\n typeof generateArrayPrefix === 'function' ?\n generateArrayPrefix(adjusted_prefix, encoded_key)\n : adjusted_prefix\n : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n sideChannel.set(object, step);\n const valueSideChannel = new WeakMap();\n valueSideChannel.set(sentinel, sideChannel);\n push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n // @ts-ignore\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n }\n return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n const charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n let format = default_format;\n if (typeof opts.format !== 'undefined') {\n if (!has(formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n const formatter = formatters[format];\n let filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n let arrayFormat;\n if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n arrayFormat = opts.arrayFormat;\n }\n else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n }\n else {\n arrayFormat = defaults.arrayFormat;\n }\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n const allowDots = typeof opts.allowDots === 'undefined' ?\n !!opts.encodeDotInKeys === true ?\n true\n : defaults.allowDots\n : !!opts.allowDots;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n // @ts-ignore\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n // @ts-ignore\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n };\n}\nexport function stringify(object, opts = {}) {\n let obj = object;\n const options = normalize_stringify_options(opts);\n let obj_keys;\n let filter;\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n }\n else if (isArray(options.filter)) {\n filter = options.filter;\n obj_keys = filter;\n }\n const keys = [];\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n if (!obj_keys) {\n obj_keys = Object.keys(obj);\n }\n if (options.sort) {\n obj_keys.sort(options.sort);\n }\n const sideChannel = new WeakMap();\n for (let i = 0; i < obj_keys.length; ++i) {\n const key = obj_keys[i];\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n push_to_array(keys, inner_stringify(obj[key], key, \n // @ts-expect-error\n generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n }\n const joined = keys.join(options.delimiter);\n let prefix = options.addQueryPrefix === true ? '?' : '';\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n }\n else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n return joined.length > 0 ? prefix + joined : '';\n}\n//# sourceMappingURL=stringify.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport * as qs from \"../qs/stringify.mjs\";\nexport function stringifyQuery(query) {\n return qs.stringify(query, { arrayFormat: 'brackets' });\n}\n//# sourceMappingURL=query.mjs.map","export function concatBytes(buffers) {\n let length = 0;\n for (const buffer of buffers) {\n length += buffer.length;\n }\n const output = new Uint8Array(length);\n let index = 0;\n for (const buffer of buffers) {\n output.set(buffer, index);\n index += buffer.length;\n }\n return output;\n}\nlet encodeUTF8_;\nexport function encodeUTF8(str) {\n let encoder;\n return (encodeUTF8_ ??\n ((encoder = new globalThis.TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder))))(str);\n}\nlet decodeUTF8_;\nexport function decodeUTF8(bytes) {\n let decoder;\n return (decodeUTF8_ ??\n ((decoder = new globalThis.TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder))))(bytes);\n}\n//# sourceMappingURL=bytes.mjs.map","var _LineDecoder_buffer, _LineDecoder_carriageReturnIndex;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../tslib.mjs\";\nimport { concatBytes, decodeUTF8, encodeUTF8 } from \"../utils/bytes.mjs\";\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n constructor() {\n _LineDecoder_buffer.set(this, void 0);\n _LineDecoder_carriageReturnIndex.set(this, void 0);\n __classPrivateFieldSet(this, _LineDecoder_buffer, new Uint8Array(), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n decode(chunk) {\n if (chunk == null) {\n return [];\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n __classPrivateFieldSet(this, _LineDecoder_buffer, concatBytes([__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), binaryChunk]), \"f\");\n const lines = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n continue;\n }\n // we got double \\r or \\rtext\\n\n if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n lines.push(decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\")), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n continue;\n }\n const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n const line = decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, endIndex));\n lines.push(line);\n __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(patternIndex.index), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n return lines;\n }\n flush() {\n if (!__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\n_LineDecoder_buffer = new WeakMap(), _LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n return null;\n}\nexport function findDoubleNewlineIndex(buffer) {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n return -1;\n}\n//# sourceMappingURL=line.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { hasOwn } from \"./values.mjs\";\nconst levelNumbers = {\n off: 0,\n error: 200,\n warn: 300,\n info: 400,\n debug: 500,\n};\nexport const parseLogLevel = (maybeLevel, sourceName, client) => {\n if (!maybeLevel) {\n return undefined;\n }\n if (hasOwn(levelNumbers, maybeLevel)) {\n return maybeLevel;\n }\n loggerFor(client).warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);\n return undefined;\n};\nfunction noop() { }\nfunction makeLogFn(fnLevel, logger, logLevel) {\n if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {\n return noop;\n }\n else {\n // Don't wrap logger functions, we want the stacktrace intact!\n return logger[fnLevel].bind(logger);\n }\n}\nconst noopLogger = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n};\nlet cachedLoggers = /* @__PURE__ */ new WeakMap();\nexport function loggerFor(client) {\n const logger = client.logger;\n const logLevel = client.logLevel ?? 'off';\n if (!logger) {\n return noopLogger;\n }\n const cachedLogger = cachedLoggers.get(logger);\n if (cachedLogger && cachedLogger[0] === logLevel) {\n return cachedLogger[1];\n }\n const levelLogger = {\n error: makeLogFn('error', logger, logLevel),\n warn: makeLogFn('warn', logger, logLevel),\n info: makeLogFn('info', logger, logLevel),\n debug: makeLogFn('debug', logger, logLevel),\n };\n cachedLoggers.set(logger, [logLevel, levelLogger]);\n return levelLogger;\n}\nexport const formatRequestDetails = (details) => {\n if (details.options) {\n details.options = { ...details.options };\n delete details.options['headers']; // redundant + leaks internals\n }\n if (details.headers) {\n details.headers = Object.fromEntries((details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(([name, value]) => [\n name,\n (name.toLowerCase() === 'authorization' ||\n name.toLowerCase() === 'cookie' ||\n name.toLowerCase() === 'set-cookie') ?\n '***'\n : value,\n ]));\n }\n if ('retryOfRequestLogID' in details) {\n if (details.retryOfRequestLogID) {\n details.retryOf = details.retryOfRequestLogID;\n }\n delete details.retryOfRequestLogID;\n }\n return details;\n};\n//# sourceMappingURL=log.mjs.map","var _Stream_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { makeReadableStream } from \"../internal/shims.mjs\";\nimport { findDoubleNewlineIndex, LineDecoder } from \"../internal/decoders/line.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"../internal/shims.mjs\";\nimport { isAbortError } from \"../internal/errors.mjs\";\nimport { encodeUTF8 } from \"../internal/utils/bytes.mjs\";\nimport { loggerFor } from \"../internal/utils/log.mjs\";\nimport { APIError } from \"./error.mjs\";\nexport class Stream {\n constructor(iterator, controller, client) {\n this.iterator = iterator;\n _Stream_client.set(this, void 0);\n this.controller = controller;\n __classPrivateFieldSet(this, _Stream_client, client, \"f\");\n }\n static fromSSEResponse(response, controller, client, synthesizeEventData) {\n let consumed = false;\n const logger = client ? loggerFor(client) : console;\n async function* iterator() {\n if (consumed) {\n throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (done)\n continue;\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n if (sse.event === null || !sse.event.startsWith('thread.')) {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n logger.error(`Could not parse message into JSON:`, sse.data);\n logger.error(`From chunk:`, sse.raw);\n throw e;\n }\n if (data && data.error) {\n throw new APIError(undefined, data.error, undefined, response.headers);\n }\n yield synthesizeEventData ? { event: sse.event, data } : data;\n }\n else {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n // TODO: Is this where the error should be thrown?\n if (sse.event == 'error') {\n throw new APIError(undefined, data.error, data.message, undefined);\n }\n yield { event: sse.event, data: data };\n }\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e))\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller, client);\n }\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream(readableStream, controller, client) {\n let consumed = false;\n async function* iterLines() {\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n async function* iterator() {\n if (consumed) {\n throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done)\n continue;\n if (line)\n yield JSON.parse(line);\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e))\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller, client);\n }\n [(_Stream_client = new WeakMap(), Symbol.asyncIterator)]() {\n return this.iterator();\n }\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee() {\n const left = [];\n const right = [];\n const iterator = this.iterator();\n const teeIterator = (queue) => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift();\n },\n };\n };\n return [\n new Stream(() => teeIterator(left), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n new Stream(() => teeIterator(right), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n ];\n }\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream() {\n const self = this;\n let iter;\n return makeReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done)\n return ctrl.close();\n const bytes = encodeUTF8(JSON.stringify(value) + '\\n');\n ctrl.enqueue(bytes);\n }\n catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\nexport async function* _iterSSEMessages(response, controller) {\n if (!response.body) {\n controller.abort();\n if (typeof globalThis.navigator !== 'undefined' &&\n globalThis.navigator.product === 'ReactNative') {\n throw new OpenAIError(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`);\n }\n throw new OpenAIError(`Attempted to iterate over a response with no body`);\n }\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n }\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n}\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n let data = new Uint8Array();\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n let patternIndex;\n while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n if (data.length > 0) {\n yield data;\n }\n}\nclass SSEDecoder {\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n decode(line) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length)\n return null;\n const sse = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n this.event = null;\n this.data = [];\n this.chunks = [];\n return sse;\n }\n this.chunks.push(line);\n if (line.startsWith(':')) {\n return null;\n }\n let [fieldname, _, value] = partition(line, ':');\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n if (fieldname === 'event') {\n this.event = value;\n }\n else if (fieldname === 'data') {\n this.data.push(value);\n }\n return null;\n }\n}\nfunction partition(str, delimiter) {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n return [str, '', ''];\n}\n//# sourceMappingURL=streaming.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { Stream } from \"../core/streaming.mjs\";\nimport { formatRequestDetails, loggerFor } from \"./utils/log.mjs\";\nexport async function defaultParseResponse(client, props) {\n const { response, requestLogID, retryOfRequestLogID, startTime } = props;\n const body = await (async () => {\n if (props.options.stream) {\n loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller, client, props.options.__synthesizeEventData);\n }\n return Stream.fromSSEResponse(response, props.controller, client, props.options.__synthesizeEventData);\n }\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const contentLength = response.headers.get('content-length');\n if (contentLength === '0') {\n // if there is no content we can't do anything\n return undefined;\n }\n const json = await response.json();\n return addRequestID(json, response);\n }\n const text = await response.text();\n return text;\n })();\n loggerFor(client).debug(`[${requestLogID}] response parsed`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n body,\n durationMs: Date.now() - startTime,\n }));\n return body;\n}\nexport function addRequestID(value, response) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value;\n }\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('x-request-id'),\n enumerable: false,\n });\n}\n//# sourceMappingURL=parse.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _APIPromise_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { defaultParseResponse, addRequestID, } from \"../internal/parse.mjs\";\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n constructor(client, responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n _APIPromise_client.set(this, void 0);\n __classPrivateFieldSet(this, _APIPromise_client, client, \"f\");\n }\n _thenUnwrap(transform) {\n return new APIPromise(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), this.responsePromise, async (client, props) => addRequestID(transform(await this.parseResponse(client, props), props), props.response));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the X-Request-ID header which is useful for debugging requests and reporting\n * issues to OpenAI.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('x-request-id') };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then((data) => this.parseResponse(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), data));\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\n_APIPromise_client = new WeakMap();\n//# sourceMappingURL=api-promise.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _AbstractPage_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { defaultParseResponse } from \"../internal/parse.mjs\";\nimport { APIPromise } from \"./api-promise.mjs\";\nimport { maybeObj } from \"../internal/utils/values.mjs\";\nexport class AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageRequestOptions() != null;\n }\n async getNextPage() {\n const nextOptions = this.nextPageRequestOptions();\n if (!nextOptions) {\n throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(client, request, async (client, props) => new Page(client, props.response, await defaultParseResponse(client, props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.object = body.object;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n nextPageRequestOptions() {\n return null;\n }\n}\nexport class CursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n nextPageRequestOptions() {\n const data = this.getPaginatedItems();\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after: id,\n },\n };\n }\n}\nexport class ConversationCursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.last_id = body.last_id || '';\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n nextPageRequestOptions() {\n const cursor = this.last_id;\n if (!cursor) {\n return null;\n }\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after: cursor,\n },\n };\n }\n}\n//# sourceMappingURL=pagination.mjs.map","import { ReadableStreamFrom } from \"./shims.mjs\";\nexport const checkFileSupport = () => {\n if (typeof File === 'undefined') {\n const { process } = globalThis;\n const isOldNode = typeof process?.versions?.node === 'string' && parseInt(process.versions.node.split('.')) < 20;\n throw new Error('`File` is not defined as a global, which is required for file uploads.' +\n (isOldNode ?\n \" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.\"\n : ''));\n }\n};\n/**\n * Construct a `File` instance. This is used to ensure a helpful error is thrown\n * for environments that don't define a global `File` yet.\n */\nexport function makeFile(fileBits, fileName, options) {\n checkFileSupport();\n return new File(fileBits, fileName ?? 'unknown_file', options);\n}\nexport function getName(value) {\n return (((typeof value === 'object' &&\n value !== null &&\n (('name' in value && value.name && String(value.name)) ||\n ('url' in value && value.url && String(value.url)) ||\n ('filename' in value && value.filename && String(value.filename)) ||\n ('path' in value && value.path && String(value.path)))) ||\n '')\n .split(/[\\\\/]/)\n .pop() || undefined);\n}\nexport const isAsyncIterable = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts, fetch) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\nexport const multipartFormRequestOptions = async (opts, fetch) => {\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\nconst supportsFormDataMap = /* @__PURE__ */ new WeakMap();\n/**\n * node-fetch doesn't support the global FormData object in recent node versions. Instead of sending\n * properly-encoded form data, it just stringifies the object, resulting in a request body of \"[object FormData]\".\n * This function detects if the fetch function provided supports the global FormData object to avoid\n * confusing error messages later on.\n */\nfunction supportsFormData(fetchObject) {\n const fetch = typeof fetchObject === 'function' ? fetchObject : fetchObject.fetch;\n const cached = supportsFormDataMap.get(fetch);\n if (cached)\n return cached;\n const promise = (async () => {\n try {\n const FetchResponse = ('Response' in fetch ?\n fetch.Response\n : (await fetch('data:,')).constructor);\n const data = new FormData();\n if (data.toString() === (await new FetchResponse(data).text())) {\n return false;\n }\n return true;\n }\n catch {\n // avoid false negatives\n return true;\n }\n })();\n supportsFormDataMap.set(fetch, promise);\n return promise;\n}\nexport const createForm = async (body, fetch) => {\n if (!(await supportsFormData(fetch))) {\n throw new TypeError('The provided fetch function does not support file uploads with the current global FormData class.');\n }\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\n// We check for Blob not File because Bun.File doesn't inherit from File,\n// but they both inherit from Blob and have a `name` property at runtime.\nconst isNamedBlob = (value) => value instanceof Blob && 'name' in value;\nconst isUploadable = (value) => typeof value === 'object' &&\n value !== null &&\n (value instanceof Response || isAsyncIterable(value) || isNamedBlob(value));\nconst hasUploadableValue = (value) => {\n if (isUploadable(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if (value instanceof Response) {\n form.append(key, makeFile([await value.blob()], getName(value)));\n }\n else if (isAsyncIterable(value)) {\n form.append(key, makeFile([await new Response(ReadableStreamFrom(value)).blob()], getName(value)));\n }\n else if (isNamedBlob(value)) {\n form.append(key, value, getName(value));\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.mjs.map","import { getName, makeFile, isAsyncIterable } from \"./uploads.mjs\";\nimport { checkFileSupport } from \"./uploads.mjs\";\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\nconst isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n checkFileSupport();\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if (isFileLike(value)) {\n if (value instanceof File) {\n return value;\n }\n return makeFile([await value.arrayBuffer()], value.name);\n }\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop());\n return makeFile(await getBytes(blob), name, options);\n }\n const parts = await getBytes(value);\n name || (name = getName(value));\n if (!options?.type) {\n const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return makeFile(parts, name, options);\n}\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if (isBlobLike(value)) {\n parts.push(value instanceof Blob ? value : await value.arrayBuffer());\n }\n else if (isAsyncIterable(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(...(await getBytes(chunk))); // TODO, consider validating?\n }\n }\n else {\n const constructor = value?.constructor?.name;\n throw new Error(`Unexpected data type: ${typeof value}${constructor ? `; constructor: ${constructor}` : ''}${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n if (typeof value !== 'object' || value === null)\n return '';\n const props = Object.getOwnPropertyNames(value);\n return `; props: [${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n//# sourceMappingURL=to-file.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n constructor(client) {\n this._client = client;\n }\n}\n//# sourceMappingURL=resource.mjs.map","import { OpenAIError } from \"../../core/error.mjs\";\n/**\n * Percent-encode everything that isn't safe to have in a path without encoding safe chars.\n *\n * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:\n * > unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * > sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * > pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n */\nexport function encodeURIPath(str) {\n return str.replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);\n}\nconst EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));\nexport const createPathTagFunction = (pathEncoder = encodeURIPath) => function path(statics, ...params) {\n // If there are no params, no processing is needed.\n if (statics.length === 1)\n return statics[0];\n let postPath = false;\n const invalidSegments = [];\n const path = statics.reduce((previousValue, currentValue, index) => {\n if (/[?#]/.test(currentValue)) {\n postPath = true;\n }\n const value = params[index];\n let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);\n if (index !== params.length &&\n (value == null ||\n (typeof value === 'object' &&\n // handle values from other realms\n value.toString ===\n Object.getPrototypeOf(Object.getPrototypeOf(value.hasOwnProperty ?? EMPTY) ?? EMPTY)\n ?.toString))) {\n encoded = value + '';\n invalidSegments.push({\n start: previousValue.length + currentValue.length,\n length: encoded.length,\n error: `Value of type ${Object.prototype.toString\n .call(value)\n .slice(8, -1)} is not a valid path parameter`,\n });\n }\n return previousValue + currentValue + (index === params.length ? '' : encoded);\n }, '');\n const pathOnly = path.split(/[?#]/, 1)[0];\n const invalidSegmentPattern = /(?<=^|\\/)(?:\\.|%2e){1,2}(?=\\/|$)/gi;\n let match;\n // Find all invalid segments\n while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {\n invalidSegments.push({\n start: match.index,\n length: match[0].length,\n error: `Value \"${match[0]}\" can\\'t be safely passed as a path parameter`,\n });\n }\n invalidSegments.sort((a, b) => a.start - b.start);\n if (invalidSegments.length > 0) {\n let lastEnd = 0;\n const underline = invalidSegments.reduce((acc, segment) => {\n const spaces = ' '.repeat(segment.start - lastEnd);\n const arrows = '^'.repeat(segment.length);\n lastEnd = segment.start + segment.length;\n return acc + spaces + arrows;\n }, '');\n throw new OpenAIError(`Path parameters result in path with invalid segments:\\n${invalidSegments\n .map((e) => e.error)\n .join('\\n')}\\n${path}\\n${underline}`);\n }\n return path;\n};\n/**\n * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.\n */\nexport const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);\n//# sourceMappingURL=path.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Given a list of messages comprising a conversation, the model will return a response.\n */\nexport class Messages extends APIResource {\n /**\n * Get the messages in a stored chat completion. Only Chat Completions that have\n * been created with the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatCompletionStoreMessage of client.chat.completions.messages.list(\n * 'completion_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(completionID, query = {}, options) {\n return this._client.getAPIList(path `/chat/completions/${completionID}/messages`, (CursorPage), { query, ...options });\n }\n}\n//# sourceMappingURL=messages.mjs.map","import { ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from \"../error.mjs\";\nexport function isChatCompletionFunctionTool(tool) {\n return tool !== undefined && 'function' in tool && tool.function !== undefined;\n}\nexport function makeParseableResponseFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function makeParseableTextFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableResponseFormat(response_format) {\n return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexport function makeParseableTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexport function maybeParseChatCompletion(completion, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...completion,\n choices: completion.choices.map((choice) => {\n assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n return {\n ...choice,\n message: {\n ...choice.message,\n parsed: null,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls,\n }\n : undefined),\n },\n };\n }),\n };\n }\n return parseChatCompletion(completion, params);\n}\nexport function parseChatCompletion(completion, params) {\n const choices = completion.choices.map((choice) => {\n if (choice.finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (choice.finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n return {\n ...choice,\n message: {\n ...choice.message,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n }\n : undefined),\n parsed: choice.message.content && !choice.message.refusal ?\n parseResponseFormat(params, choice.message.content)\n : null,\n },\n };\n });\n return { ...completion, choices };\n}\nfunction parseResponseFormat(params, content) {\n if (params.response_format?.type !== 'json_schema') {\n return null;\n }\n if (params.response_format?.type === 'json_schema') {\n if ('$parseRaw' in params.response_format) {\n const response_format = params.response_format;\n return response_format.$parseRaw(content);\n }\n return JSON.parse(content);\n }\n return null;\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name); // TS doesn't narrow based on isChatCompletionTool\n return {\n ...toolCall,\n function: {\n ...toolCall.function,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n : null,\n },\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params || !('tools' in params) || !params.tools) {\n return false;\n }\n const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name);\n return (isChatCompletionFunctionTool(inputTool) &&\n (isAutoParsableTool(inputTool) || inputTool?.function.strict || false));\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.response_format)) {\n return true;\n }\n return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexport function assertToolCallsAreChatCompletionFunctionToolCalls(toolCalls) {\n for (const toolCall of toolCalls || []) {\n if (toolCall.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool calls are supported; Received \\`${toolCall.type}\\``);\n }\n }\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\n//# sourceMappingURL=parser.mjs.map","export const isAssistantMessage = (message) => {\n return message?.role === 'assistant';\n};\nexport const isToolMessage = (message) => {\n return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map","var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nexport class EventStream {\n constructor() {\n _EventStream_instances.add(this);\n this.controller = new AbortController();\n _EventStream_connectedPromise.set(this, void 0);\n _EventStream_resolveConnectedPromise.set(this, () => { });\n _EventStream_rejectConnectedPromise.set(this, () => { });\n _EventStream_endPromise.set(this, void 0);\n _EventStream_resolveEndPromise.set(this, () => { });\n _EventStream_rejectEndPromise.set(this, () => { });\n _EventStream_listeners.set(this, {});\n _EventStream_ended.set(this, false);\n _EventStream_errored.set(this, false);\n _EventStream_aborted.set(this, false);\n _EventStream_catchingPromiseCreated.set(this, false);\n __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n }), \"f\");\n __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n }), \"f\");\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n }\n _run(executor) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n }, 0);\n }\n _connected() {\n if (this.ended)\n return;\n __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n this._emit('connect');\n }\n get ended() {\n return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n }\n get errored() {\n return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n }\n get aborted() {\n return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n }\n abort() {\n this.controller.abort();\n }\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener });\n return this;\n }\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (!listeners)\n return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0)\n listeners.splice(index, 1);\n return this;\n }\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted(event) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n if (event !== 'error')\n this.once('error', reject);\n this.once(event, resolve);\n });\n }\n async done() {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n }\n _emit(event, ...args) {\n // make sure we don't emit any events after end\n if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n return;\n }\n if (event === 'end') {\n __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n }\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (listeners) {\n __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n listeners.forEach(({ listener }) => listener(...args));\n }\n if (event === 'abort') {\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n return;\n }\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n }\n }\n _emitFinal() { }\n}\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n if (error instanceof Error && error.name === 'AbortError') {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n return this._emit('abort', error);\n }\n if (error instanceof OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError = new OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.mjs.map","export function isRunnableFunctionWithParse(fn) {\n return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n constructor(input) {\n this.type = 'function';\n this.function = input;\n }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map","var _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionToolCall, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { __classPrivateFieldGet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableTool, parseChatCompletion } from \"../lib/parser.mjs\";\nimport { isAssistantMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner extends EventStream {\n constructor() {\n super(...arguments);\n _AbstractChatCompletionRunner_instances.add(this);\n this._chatCompletions = [];\n this.messages = [];\n }\n _addChatCompletion(chatCompletion) {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message)\n this._addMessage(message);\n return chatCompletion;\n }\n _addMessage(message, emit = true) {\n if (!('content' in message))\n message.content = null;\n this.messages.push(message);\n if (emit) {\n this._emit('message', message);\n if (isToolMessage(message) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionToolCallResult', message.content);\n }\n else if (isAssistantMessage(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionToolCall', tool_call.function);\n }\n }\n }\n }\n }\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion() {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n }\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n }\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionToolCall() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n }\n async finalFunctionToolCallResult() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n }\n async totalUsage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n }\n allChatCompletions() {\n return [...this._chatCompletions];\n }\n _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion)\n this._emit('finalChatCompletion', completion);\n const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n if (finalMessage)\n this._emit('finalMessage', finalMessage);\n const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n if (finalContent)\n this._emit('finalContent', finalContent);\n const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n if (finalFunctionCall)\n this._emit('finalFunctionToolCall', finalFunctionCall);\n const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n if (finalFunctionCallResult != null)\n this._emit('finalFunctionToolCallResult', finalFunctionCallResult);\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n }\n }\n async _createChatCompletion(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n this._connected();\n return this._addChatCompletion(parseChatCompletion(chatCompletion, params));\n }\n async _runChatCompletion(client, params, options) {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(client, params, options);\n }\n async _runTools(client, params, options) {\n const role = 'tool';\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice.type === 'function' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n // TODO(someday): clean this logic up\n const inputTools = params.tools.map((tool) => {\n if (isAutoParsableTool(tool)) {\n if (!tool.$callback) {\n throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n }\n return {\n type: 'function',\n function: {\n function: tool.$callback,\n name: tool.function.name,\n description: tool.function.description || '',\n parameters: tool.function.parameters,\n parse: tool.$parseRaw,\n strict: true,\n },\n };\n }\n return tool;\n });\n const functionsByName = {};\n for (const f of inputTools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n const tools = 'tools' in params ?\n inputTools.map((t) => t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters,\n description: t.function.description,\n strict: t.function.strict,\n },\n }\n : t)\n : undefined;\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls?.length) {\n return;\n }\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function')\n continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n .map((name) => JSON.stringify(name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, tool_call_id, content });\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n return;\n }\n}\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if (isAssistantMessage(message)) {\n // TODO: support audio here\n const ret = {\n ...message,\n content: message.content ?? null,\n refusal: message.refusal ?? null,\n };\n return ret;\n }\n }\n throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCall = function _AbstractChatCompletionRunner_getFinalFunctionToolCall() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isAssistantMessage(message) && message?.tool_calls?.length) {\n return message.tool_calls.filter((x) => x.type === 'function').at(-1)?.function;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult = function _AbstractChatCompletionRunner_getFinalFunctionToolCallResult() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isToolMessage(message) &&\n message.content != null &&\n typeof message.content === 'string' &&\n this.messages.some((x) => x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n return message.content;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n const total = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n if (params.n != null && params.n > 1) {\n throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n return (typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map","import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n static runTools(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n _addMessage(message, emit = true) {\n super._addMessage(message, emit);\n if (isAssistantMessage(message) && message.content) {\n this._emit('content', message.content);\n }\n }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map","const STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n STR,\n NUM,\n ARR,\n OBJ,\n NULL,\n BOOL,\n NAN,\n INFINITY,\n MINUS_INFINITY,\n INF,\n SPECIAL,\n ATOM,\n COLLECTION,\n ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nclass MalformedJSON extends Error {\n}\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n if (typeof jsonString !== 'string') {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON('Unexpected end of input');\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === '{')\n return parseObj();\n if (jsonString[index] === '[')\n return parseArr();\n if (jsonString.substring(index, index + 4) === 'null' ||\n (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === 'true' ||\n (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === 'false' ||\n (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === 'Infinity' ||\n (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === '-Infinity' ||\n (Allow.MINUS_INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n '-Infinity'.startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === 'NaN' ||\n (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n escape = jsonString[index] === '\\\\' ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n }\n }\n markPartialJSON('Unterminated string literal');\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== '}') {\n skipBlank();\n if (index >= length && Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === ',')\n index++; // skip comma\n }\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== ']') {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === ',') {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (Allow.NUM & allow) {\n try {\n if ('.' === jsonString[jsonString.length - 1])\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n }\n catch (e) { }\n }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === '-')\n index++;\n while (jsonString[index] && !',]}'.includes(jsonString[index]))\n index++;\n if (index == length && !(Allow.NUM & allow))\n markPartialJSON('Unterminated number literal');\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexport { partialParse, PartialJSON, MalformedJSON };\n//# sourceMappingURL=parser.mjs.map","var _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nimport { APIUserAbortError, ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError, } from \"../error.mjs\";\nimport { hasAutoParseableInput, isAutoParsableResponseFormat, isAutoParsableTool, isChatCompletionFunctionTool, maybeParseChatCompletion, shouldParseToolCall, } from \"../lib/parser.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n constructor(params) {\n super();\n _ChatCompletionStream_instances.add(this);\n _ChatCompletionStream_params.set(this, void 0);\n _ChatCompletionStream_choiceEventStates.set(this, void 0);\n _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n }\n get currentChatCompletionSnapshot() {\n return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n }\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static createChatCompletion(client, params, options) {\n const runner = new ChatCompletionStream(params);\n runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n return runner;\n }\n async _createChatCompletion(client, params, options) {\n super._createChatCompletion;\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const chunk of stream) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n if (state) {\n return state;\n }\n state = {\n content_done: false,\n refusal_done: false,\n logprobs_content_done: false,\n logprobs_refusal_done: false,\n done_tool_calls: new Set(),\n current_tool_call_index: null,\n };\n __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n return state;\n }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n if (this.ended)\n return;\n const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n this._emit('chunk', chunk, completion);\n for (const choice of chunk.choices) {\n const choiceSnapshot = completion.choices[choice.index];\n if (choice.delta.content != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.content) {\n this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n this._emit('content.delta', {\n delta: choice.delta.content,\n snapshot: choiceSnapshot.message.content,\n parsed: choiceSnapshot.message.parsed,\n });\n }\n if (choice.delta.refusal != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.refusal) {\n this._emit('refusal.delta', {\n delta: choice.delta.refusal,\n snapshot: choiceSnapshot.message.refusal,\n });\n }\n if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.content.delta', {\n content: choice.logprobs?.content,\n snapshot: choiceSnapshot.logprobs?.content ?? [],\n });\n }\n if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.refusal.delta', {\n refusal: choice.logprobs?.refusal,\n snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n });\n }\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.finish_reason) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n for (const toolCall of choice.delta.tool_calls ?? []) {\n if (state.current_tool_call_index !== toolCall.index) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n // new tool call started, the previous one is done\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n state.current_tool_call_index = toolCall.index;\n }\n for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n if (!toolCallSnapshot?.type) {\n continue;\n }\n if (toolCallSnapshot?.type === 'function') {\n this._emit('tool_calls.function.arguments.delta', {\n name: toolCallSnapshot.function?.name,\n index: toolCallDelta.index,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n arguments_delta: toolCallDelta.function?.arguments ?? '',\n });\n }\n else {\n assertNever(toolCallSnapshot?.type);\n }\n }\n }\n }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (state.done_tool_calls.has(toolCallIndex)) {\n // we've already fired the done event\n return;\n }\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n if (!toolCallSnapshot) {\n throw new Error('no tool call snapshot');\n }\n if (!toolCallSnapshot.type) {\n throw new Error('tool call snapshot missing `type`');\n }\n if (toolCallSnapshot.type === 'function') {\n const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => isChatCompletionFunctionTool(tool) && tool.function.name === toolCallSnapshot.function.name); // TS doesn't narrow based on isChatCompletionTool\n this._emit('tool_calls.function.arguments.done', {\n name: toolCallSnapshot.function.name,\n index: toolCallIndex,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n : null,\n });\n }\n else {\n assertNever(toolCallSnapshot.type);\n }\n }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.message.content && !state.content_done) {\n state.content_done = true;\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n this._emit('content.done', {\n content: choiceSnapshot.message.content,\n parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n });\n }\n if (choiceSnapshot.message.refusal && !state.refusal_done) {\n state.refusal_done = true;\n this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n }\n if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n state.logprobs_content_done = true;\n this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n }\n if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n state.logprobs_refusal_done = true;\n this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n }\n }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any chunks`);\n }\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n if (isAutoParsableResponseFormat(responseFormat)) {\n return responseFormat;\n }\n return null;\n }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n var _a, _b, _c, _d;\n let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n ...rest,\n choices: [],\n }, \"f\");\n }\n else {\n Object.assign(snapshot, rest);\n }\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n }\n else {\n const { content, refusal, ...rest } = logprobs;\n assertIsEmpty(rest);\n Object.assign(choice.logprobs, rest);\n if (content) {\n (_a = choice.logprobs).content ?? (_a.content = []);\n choice.logprobs.content.push(...content);\n }\n if (refusal) {\n (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n choice.logprobs.refusal.push(...refusal);\n }\n }\n }\n if (finish_reason) {\n choice.finish_reason = finish_reason;\n if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && hasAutoParseableInput(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n if (finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n }\n }\n Object.assign(choice, other);\n if (!delta)\n continue; // Shouldn't happen; just in case.\n const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n assertIsEmpty(rest);\n Object.assign(choice.message, rest);\n if (refusal) {\n choice.message.refusal = (choice.message.refusal || '') + refusal;\n }\n if (role)\n choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n }\n else {\n if (function_call.name)\n choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (content) {\n choice.message.content = (choice.message.content || '') + content;\n if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n choice.message.parsed = partialParse(choice.message.content);\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls)\n choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n Object.assign(tool_call, rest);\n if (id)\n tool_call.id = id;\n if (type)\n tool_call.type = type;\n if (fn)\n tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n if (fn?.name)\n tool_call.function.name = fn.name;\n if (fn?.arguments) {\n tool_call.function.arguments += fn.arguments;\n if (shouldParseToolCall(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n tool_call.function.parsed_arguments = partialParse(tool_call.function.arguments);\n }\n }\n }\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(chunk);\n }\n else {\n pushQueue.push(chunk);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\nfunction finalizeChatCompletion(snapshot, params) {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n const completion = {\n ...rest,\n id,\n choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n if (!finish_reason) {\n throw new OpenAIError(`missing finish_reason for choice ${index}`);\n }\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) {\n throw new OpenAIError(`missing role for choice ${index}`);\n }\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) {\n throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n }\n if (!name) {\n throw new OpenAIError(`missing function_call.name for choice ${index}`);\n }\n return {\n ...choiceRest,\n message: {\n content,\n function_call: { arguments: args, name },\n role,\n refusal: message.refusal ?? null,\n },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n refusal: message.refusal ?? null,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n }\n if (type == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n }\n if (name == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n }\n if (args == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n }\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n finish_reason,\n index,\n logprobs,\n };\n }),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n return maybeParseChatCompletion(completion, params);\n}\nfunction str(x) {\n return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.mjs.map","import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStreamingRunner(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(\n // @ts-expect-error TODO these types are incompatible\n params);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages } from \"./messages.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nimport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nimport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nimport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nimport { parseChatCompletion, validateInputTools } from \"../../../lib/parser.mjs\";\n/**\n * Given a list of messages comprising a conversation, the model will return a response.\n */\nexport class Completions extends APIResource {\n constructor() {\n super(...arguments);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body, options) {\n return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n }\n /**\n * Get a stored chat completion. Only Chat Completions that have been created with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * const chatCompletion =\n * await client.chat.completions.retrieve('completion_id');\n * ```\n */\n retrieve(completionID, options) {\n return this._client.get(path `/chat/completions/${completionID}`, options);\n }\n /**\n * Modify a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be modified. Currently, the only\n * supported modification is to update the `metadata` field.\n *\n * @example\n * ```ts\n * const chatCompletion = await client.chat.completions.update(\n * 'completion_id',\n * { metadata: { foo: 'string' } },\n * );\n * ```\n */\n update(completionID, body, options) {\n return this._client.post(path `/chat/completions/${completionID}`, { body, ...options });\n }\n /**\n * List stored Chat Completions. Only Chat Completions that have been stored with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatCompletion of client.chat.completions.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/chat/completions', (CursorPage), { query, ...options });\n }\n /**\n * Delete a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be deleted.\n *\n * @example\n * ```ts\n * const chatCompletionDeleted =\n * await client.chat.completions.delete('completion_id');\n * ```\n */\n delete(completionID, options) {\n return this._client.delete(path `/chat/completions/${completionID}`, options);\n }\n parse(body, options) {\n validateInputTools(body.tools);\n return this._client.chat.completions\n .create(body, {\n ...options,\n headers: {\n ...options?.headers,\n 'X-Stainless-Helper-Method': 'chat.completions.parse',\n },\n })\n ._thenUnwrap((completion) => parseChatCompletion(completion, body));\n }\n runTools(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runTools(this._client, body, options);\n }\n return ChatCompletionRunner.runTools(this._client, body, options);\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ChatCompletionStream.createChatCompletion(this._client, body, options);\n }\n}\nexport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nexport { ParsingToolFunction, } from \"../../../lib/RunnableFunction.mjs\";\nexport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nexport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nCompletions.Messages = Messages;\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as CompletionsAPI from \"./completions/completions.mjs\";\nimport { Completions, } from \"./completions/completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nChat.Completions = Completions;\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { isReadonlyArray } from \"./utils/values.mjs\";\nconst brand_privateNullableHeaders = /* @__PURE__ */ Symbol('brand.privateNullableHeaders');\nfunction* iterateHeaders(headers) {\n if (!headers)\n return;\n if (brand_privateNullableHeaders in headers) {\n const { values, nulls } = headers;\n yield* values.entries();\n for (const name of nulls) {\n yield [name, null];\n }\n return;\n }\n let shouldClear = false;\n let iter;\n if (headers instanceof Headers) {\n iter = headers.entries();\n }\n else if (isReadonlyArray(headers)) {\n iter = headers;\n }\n else {\n shouldClear = true;\n iter = Object.entries(headers ?? {});\n }\n for (let row of iter) {\n const name = row[0];\n if (typeof name !== 'string')\n throw new TypeError('expected header name to be a string');\n const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];\n let didClear = false;\n for (const value of values) {\n if (value === undefined)\n continue;\n // Objects keys always overwrite older headers, they never append.\n // Yield a null to clear the header before adding the new values.\n if (shouldClear && !didClear) {\n didClear = true;\n yield [name, null];\n }\n yield [name, value];\n }\n }\n}\nexport const buildHeaders = (newHeaders) => {\n const targetHeaders = new Headers();\n const nullHeaders = new Set();\n for (const headers of newHeaders) {\n const seenHeaders = new Set();\n for (const [name, value] of iterateHeaders(headers)) {\n const lowerName = name.toLowerCase();\n if (!seenHeaders.has(lowerName)) {\n targetHeaders.delete(name);\n seenHeaders.add(lowerName);\n }\n if (value === null) {\n targetHeaders.delete(name);\n nullHeaders.add(lowerName);\n }\n else {\n targetHeaders.append(name, value);\n nullHeaders.delete(lowerName);\n }\n }\n }\n return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };\n};\nexport const isEmptyHeaders = (headers) => {\n for (const _ of iterateHeaders(headers))\n return false;\n return true;\n};\n//# sourceMappingURL=headers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Speech extends APIResource {\n /**\n * Generates audio from the input text.\n *\n * Returns the audio file content, or a stream of audio events.\n *\n * @example\n * ```ts\n * const speech = await client.audio.speech.create({\n * input: 'input',\n * model: 'string',\n * voice: 'ash',\n * });\n *\n * const content = await speech.blob();\n * console.log(content);\n * ```\n */\n create(body, options) {\n return this._client.post('/audio/speech', {\n body,\n ...options,\n headers: buildHeaders([{ Accept: 'application/octet-stream' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=speech.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Transcriptions extends APIResource {\n create(body, options) {\n return this._client.post('/audio/transcriptions', multipartFormRequestOptions({\n body,\n ...options,\n stream: body.stream ?? false,\n __metadata: { model: body.model },\n }, this._client));\n }\n}\n//# sourceMappingURL=transcriptions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Translations extends APIResource {\n create(body, options) {\n return this._client.post('/audio/translations', multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }, this._client));\n }\n}\n//# sourceMappingURL=translations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as SpeechAPI from \"./speech.mjs\";\nimport { Speech } from \"./speech.mjs\";\nimport * as TranscriptionsAPI from \"./transcriptions.mjs\";\nimport { Transcriptions, } from \"./transcriptions.mjs\";\nimport * as TranslationsAPI from \"./translations.mjs\";\nimport { Translations, } from \"./translations.mjs\";\nexport class Audio extends APIResource {\n constructor() {\n super(...arguments);\n this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n this.translations = new TranslationsAPI.Translations(this._client);\n this.speech = new SpeechAPI.Speech(this._client);\n }\n}\nAudio.Transcriptions = Transcriptions;\nAudio.Translations = Translations;\nAudio.Speech = Speech;\n//# sourceMappingURL=audio.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * Create large batches of API requests to run asynchronously.\n */\nexport class Batches extends APIResource {\n /**\n * Creates and executes a batch from an uploaded file of requests\n */\n create(body, options) {\n return this._client.post('/batches', { body, ...options });\n }\n /**\n * Retrieves a batch.\n */\n retrieve(batchID, options) {\n return this._client.get(path `/batches/${batchID}`, options);\n }\n /**\n * List your organization's batches.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/batches', (CursorPage), { query, ...options });\n }\n /**\n * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n * 10 minutes, before changing to `cancelled`, where it will have partial results\n * (if any) available in the output file.\n */\n cancel(batchID, options) {\n return this._client.post(path `/batches/${batchID}/cancel`, options);\n }\n}\n//# sourceMappingURL=batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n */\nexport class Assistants extends APIResource {\n /**\n * Create an assistant with a model and instructions.\n *\n * @deprecated\n */\n create(body, options) {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieves an assistant.\n *\n * @deprecated\n */\n retrieve(assistantID, options) {\n return this._client.get(path `/assistants/${assistantID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Modifies an assistant.\n *\n * @deprecated\n */\n update(assistantID, body, options) {\n return this._client.post(path `/assistants/${assistantID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of assistants.\n *\n * @deprecated\n */\n list(query = {}, options) {\n return this._client.getAPIList('/assistants', (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Delete an assistant.\n *\n * @deprecated\n */\n delete(assistantID, options) {\n return this._client.delete(path `/assistants/${assistantID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=assistants.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API. Can be configured with the same session parameters as the\n * `session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const session =\n * await client.beta.realtime.sessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class TranscriptionSessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API specifically for realtime transcriptions. Can be configured with\n * the same session parameters as the `transcription_session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const transcriptionSession =\n * await client.beta.realtime.transcriptionSessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/transcription_sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=transcription-sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions, } from \"./sessions.mjs\";\nimport * as TranscriptionSessionsAPI from \"./transcription-sessions.mjs\";\nimport { TranscriptionSessions, } from \"./transcription-sessions.mjs\";\n/**\n * @deprecated Realtime has now launched and is generally available. The old beta API is now deprecated.\n */\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.transcriptionSessions = new TranscriptionSessionsAPI.TranscriptionSessions(this._client);\n }\n}\nRealtime.Sessions = Sessions;\nRealtime.TranscriptionSessions = TranscriptionSessions;\n//# sourceMappingURL=realtime.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create a ChatKit session.\n *\n * @example\n * ```ts\n * const chatSession =\n * await client.beta.chatkit.sessions.create({\n * user: 'x',\n * workflow: { id: 'id' },\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/chatkit/sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n });\n }\n /**\n * Cancel an active ChatKit session and return its most recent metadata.\n *\n * Cancelling prevents new requests from using the issued client secret.\n *\n * @example\n * ```ts\n * const chatSession =\n * await client.beta.chatkit.sessions.cancel('cksess_123');\n * ```\n */\n cancel(sessionID, options) {\n return this._client.post(path `/chatkit/sessions/${sessionID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Threads extends APIResource {\n /**\n * Retrieve a ChatKit thread by its identifier.\n *\n * @example\n * ```ts\n * const chatkitThread =\n * await client.beta.chatkit.threads.retrieve('cthr_123');\n * ```\n */\n retrieve(threadID, options) {\n return this._client.get(path `/chatkit/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n });\n }\n /**\n * List ChatKit threads with optional pagination and user filters.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatkitThread of client.beta.chatkit.threads.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/chatkit/threads', (ConversationCursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n });\n }\n /**\n * Delete a ChatKit thread along with its items and stored attachments.\n *\n * @example\n * ```ts\n * const thread = await client.beta.chatkit.threads.delete(\n * 'cthr_123',\n * );\n * ```\n */\n delete(threadID, options) {\n return this._client.delete(path `/chatkit/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n });\n }\n /**\n * List items that belong to a ChatKit thread.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const thread of client.beta.chatkit.threads.listItems(\n * 'cthr_123',\n * )) {\n * // ...\n * }\n * ```\n */\n listItems(threadID, query = {}, options) {\n return this._client.getAPIList(path `/chatkit/threads/${threadID}/items`, (ConversationCursorPage), { query, ...options, headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]) });\n }\n}\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions } from \"./sessions.mjs\";\nimport * as ThreadsAPI from \"./threads.mjs\";\nimport { Threads, } from \"./threads.mjs\";\nexport class ChatKit extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nChatKit.Sessions = Sessions;\nChatKit.Threads = Threads;\n//# sourceMappingURL=chatkit.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Messages extends APIResource {\n /**\n * Create a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(threadID, body, options) {\n return this._client.post(path `/threads/${threadID}/messages`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieve a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(messageID, params, options) {\n const { thread_id } = params;\n return this._client.get(path `/threads/${thread_id}/messages/${messageID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Modifies a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(messageID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/messages/${messageID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of messages for a given thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(threadID, query = {}, options) {\n return this._client.getAPIList(path `/threads/${threadID}/messages`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Deletes a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n delete(messageID, params, options) {\n const { thread_id } = params;\n return this._client.delete(path `/threads/${thread_id}/messages/${messageID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Steps extends APIResource {\n /**\n * Retrieves a run step.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(stepID, params, options) {\n const { thread_id, run_id, ...query } = params;\n return this._client.get(path `/threads/${thread_id}/runs/${run_id}/steps/${stepID}`, {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of run steps belonging to a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(runID, params, options) {\n const { thread_id, ...query } = params;\n return this._client.getAPIList(path `/threads/${thread_id}/runs/${runID}/steps`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=steps.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\nimport { encodeUTF8 } from \"./bytes.mjs\";\nexport const toBase64 = (data) => {\n if (!data)\n return '';\n if (typeof globalThis.Buffer !== 'undefined') {\n return globalThis.Buffer.from(data).toString('base64');\n }\n if (typeof data === 'string') {\n data = encodeUTF8(data);\n }\n if (typeof btoa !== 'undefined') {\n return btoa(String.fromCharCode.apply(null, data));\n }\n throw new OpenAIError('Cannot generate base64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexport const fromBase64 = (str) => {\n if (typeof globalThis.Buffer !== 'undefined') {\n const buf = globalThis.Buffer.from(str, 'base64');\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n if (typeof atob !== 'undefined') {\n const bstr = atob(str);\n const buf = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n buf[i] = bstr.charCodeAt(i);\n }\n return buf;\n }\n throw new OpenAIError('Cannot decode base64 string; Expected `Buffer` or `atob` to be defined');\n};\n/**\n * Converts a Base64 encoded string to a Float32Array.\n * @param base64Str - The Base64 encoded string.\n * @returns An Array of numbers interpreted as Float32 values.\n */\nexport const toFloat32Array = (base64Str) => {\n if (typeof Buffer !== 'undefined') {\n // for Node.js environment\n const buf = Buffer.from(base64Str, 'base64');\n return Array.from(new Float32Array(buf.buffer, buf.byteOffset, buf.length / Float32Array.BYTES_PER_ELEMENT));\n }\n else {\n // for legacy web platform APIs\n const binaryStr = atob(base64Str);\n const len = binaryStr.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryStr.charCodeAt(i);\n }\n return Array.from(new Float32Array(bytes.buffer));\n }\n};\n//# sourceMappingURL=base64.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n if (typeof globalThis.process !== 'undefined') {\n return globalThis.process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof globalThis.Deno !== 'undefined') {\n return globalThis.Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\n//# sourceMappingURL=env.mjs.map","var _AssistantStream_instances, _a, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isObj } from \"../internal/utils.mjs\";\nexport class AssistantStream extends EventStream {\n constructor() {\n super(...arguments);\n _AssistantStream_instances.add(this);\n //Track all events in a single list for reference\n _AssistantStream_events.set(this, []);\n //Used to accumulate deltas\n //We are accumulating many types so the value here is not strict\n _AssistantStream_runStepSnapshots.set(this, {});\n _AssistantStream_messageSnapshots.set(this, {});\n _AssistantStream_messageSnapshot.set(this, void 0);\n _AssistantStream_finalRun.set(this, void 0);\n _AssistantStream_currentContentIndex.set(this, void 0);\n _AssistantStream_currentContent.set(this, void 0);\n _AssistantStream_currentToolCallIndex.set(this, void 0);\n _AssistantStream_currentToolCall.set(this, void 0);\n //For current snapshot methods\n _AssistantStream_currentEvent.set(this, void 0);\n _AssistantStream_currentRunSnapshot.set(this, void 0);\n _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n }\n [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n //Catch all for passing along all events\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n static fromReadableStream(stream) {\n const runner = new _a();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n static createToolAssistantStream(runId, runs, params, options) {\n const runner = new _a();\n runner._run(() => runner._runToolAssistantStream(runId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createToolAssistantStream(run, runId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.submitToolOutputs(runId, body, {\n ...options,\n signal: this.controller.signal,\n });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static createThreadAssistantStream(params, thread, options) {\n const runner = new _a();\n runner._run(() => runner._threadAssistantStream(params, thread, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n static createAssistantStream(threadId, runs, params, options) {\n const runner = new _a();\n runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n currentEvent() {\n return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n }\n currentRun() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n }\n currentMessageSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n }\n currentRunStepSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n }\n async finalRunSteps() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n }\n async finalMessages() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n }\n async finalRun() {\n await this.done();\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run was not received.');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n }\n async _createThreadAssistantStream(thread, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n async _createAssistantStream(run, threadId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static accumulateDelta(acc, delta) {\n for (const [key, deltaValue] of Object.entries(delta)) {\n if (!acc.hasOwnProperty(key)) {\n acc[key] = deltaValue;\n continue;\n }\n let accValue = acc[key];\n if (accValue === null || accValue === undefined) {\n acc[key] = deltaValue;\n continue;\n }\n // We don't accumulate these special properties\n if (key === 'index' || key === 'type') {\n acc[key] = deltaValue;\n continue;\n }\n // Type-specific accumulation logic\n if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n accValue += deltaValue;\n }\n else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n accValue += deltaValue;\n }\n else if (isObj(accValue) && isObj(deltaValue)) {\n accValue = this.accumulateDelta(accValue, deltaValue);\n }\n else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n accValue.push(...deltaValue); // Use spread syntax for efficient addition\n continue;\n }\n for (const deltaEntry of deltaValue) {\n if (!isObj(deltaEntry)) {\n throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n }\n const index = deltaEntry['index'];\n if (index == null) {\n console.error(deltaEntry);\n throw new Error('Expected array delta entry to have an `index` property');\n }\n if (typeof index !== 'number') {\n throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n }\n const accEntry = accValue[index];\n if (accEntry == null) {\n accValue.push(deltaEntry);\n }\n else {\n accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n }\n }\n continue;\n }\n else {\n throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n }\n acc[key] = accValue;\n }\n return acc;\n }\n _addRun(run) {\n return run;\n }\n async _threadAssistantStream(params, thread, options) {\n return await this._createThreadAssistantStream(thread, params, options);\n }\n async _runAssistantStream(threadId, runs, params, options) {\n return await this._createAssistantStream(runs, threadId, params, options);\n }\n async _runToolAssistantStream(runId, runs, params, options) {\n return await this._createToolAssistantStream(runs, runId, params, options);\n }\n}\n_a = AssistantStream, _AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n switch (event.event) {\n case 'thread.created':\n //No action on this event.\n break;\n case 'thread.run.created':\n case 'thread.run.queued':\n case 'thread.run.in_progress':\n case 'thread.run.requires_action':\n case 'thread.run.completed':\n case 'thread.run.incomplete':\n case 'thread.run.failed':\n case 'thread.run.cancelling':\n case 'thread.run.cancelled':\n case 'thread.run.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n break;\n case 'thread.run.step.created':\n case 'thread.run.step.in_progress':\n case 'thread.run.step.delta':\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n break;\n case 'thread.message.created':\n case 'thread.message.in_progress':\n case 'thread.message.delta':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n break;\n case 'error':\n //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n default:\n assertNever(event);\n }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run has not been received');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n for (const content of newContent) {\n const snapshotContent = accumulatedMessage.content[content.index];\n if (snapshotContent?.type == 'text') {\n this._emit('textCreated', snapshotContent.text);\n }\n }\n switch (event.event) {\n case 'thread.message.created':\n this._emit('messageCreated', event.data);\n break;\n case 'thread.message.in_progress':\n break;\n case 'thread.message.delta':\n this._emit('messageDelta', event.data.delta, accumulatedMessage);\n if (event.data.delta.content) {\n for (const content of event.data.delta.content) {\n //If it is text delta, emit a text delta event\n if (content.type == 'text' && content.text) {\n let textDelta = content.text;\n let snapshot = accumulatedMessage.content[content.index];\n if (snapshot && snapshot.type == 'text') {\n this._emit('textDelta', textDelta, snapshot.text);\n }\n else {\n throw Error('The snapshot associated with this text delta is not text or missing');\n }\n }\n if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n //See if we have in progress content\n if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n case 'text':\n this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'image_file':\n this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n }\n }\n break;\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //We emit the latest content we were working on on completion (including incomplete)\n if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n if (currentContent) {\n switch (currentContent.type) {\n case 'image_file':\n this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'text':\n this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n }\n if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n this._emit('messageDone', event.data);\n }\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n switch (event.event) {\n case 'thread.run.step.created':\n this._emit('runStepCreated', event.data);\n break;\n case 'thread.run.step.delta':\n const delta = event.data.delta;\n if (delta.step_details &&\n delta.step_details.type == 'tool_calls' &&\n delta.step_details.tool_calls &&\n accumulatedRunStep.step_details.type == 'tool_calls') {\n for (const toolCall of delta.step_details.tool_calls) {\n if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n }\n else {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n }\n }\n this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n break;\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n const details = event.data.step_details;\n if (details.type == 'tool_calls') {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n }\n this._emit('runStepDone', event.data, accumulatedRunStep);\n break;\n case 'thread.run.step.in_progress':\n break;\n }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n switch (event.event) {\n case 'thread.run.step.created':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n return event.data;\n case 'thread.run.step.delta':\n let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n if (!snapshot) {\n throw Error('Received a RunStepDelta before creation of a snapshot');\n }\n let data = event.data;\n if (data.delta) {\n const accumulated = _a.accumulateDelta(snapshot, data.delta);\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n }\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n case 'thread.run.step.in_progress':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n break;\n }\n if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n let newContent = [];\n switch (event.event) {\n case 'thread.message.created':\n //On creation the snapshot is just the initial message\n return [event.data, newContent];\n case 'thread.message.delta':\n if (!snapshot) {\n throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n }\n let data = event.data;\n //If this delta does not have content, nothing to process\n if (data.delta.content) {\n for (const contentElement of data.delta.content) {\n if (contentElement.index in snapshot.content) {\n let currentContent = snapshot.content[contentElement.index];\n snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n }\n else {\n snapshot.content[contentElement.index] = contentElement;\n // This is a new element\n newContent.push(contentElement);\n }\n }\n }\n return [snapshot, newContent];\n case 'thread.message.in_progress':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //No changes on other thread events\n if (snapshot) {\n return [snapshot, newContent];\n }\n else {\n throw Error('Received thread message event with no existing snapshot');\n }\n }\n throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n return _a.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n switch (event.event) {\n case 'thread.run.created':\n break;\n case 'thread.run.queued':\n break;\n case 'thread.run.in_progress':\n break;\n case 'thread.run.requires_action':\n case 'thread.run.cancelled':\n case 'thread.run.failed':\n case 'thread.run.completed':\n case 'thread.run.expired':\n case 'thread.run.incomplete':\n __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n break;\n case 'thread.run.cancelling':\n break;\n }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as StepsAPI from \"./steps.mjs\";\nimport { Steps, } from \"./steps.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../../lib/AssistantStream.mjs\";\nimport { sleep } from \"../../../../internal/utils/sleep.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.steps = new StepsAPI.Steps(this._client);\n }\n create(threadID, params, options) {\n const { include, ...body } = params;\n return this._client.post(path `/threads/${threadID}/runs`, {\n query: { include },\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: params.stream ?? false,\n __synthesizeEventData: true,\n });\n }\n /**\n * Retrieves a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(runID, params, options) {\n const { thread_id } = params;\n return this._client.get(path `/threads/${thread_id}/runs/${runID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Modifies a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(runID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of runs belonging to a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(threadID, query = {}, options) {\n return this._client.getAPIList(path `/threads/${threadID}/runs`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Cancels a run that is `in_progress`.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n cancel(runID, params, options) {\n const { thread_id } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * A helper to create a run an poll for a terminal state. More information on Run\n * lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndPoll(threadId, body, options) {\n const run = await this.create(threadId, body, options);\n return await this.poll(run.id, { thread_id: threadId }, options);\n }\n /**\n * Create a Run stream\n *\n * @deprecated use `stream` instead\n */\n createAndStream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n /**\n * A helper to poll a run status until it reaches a terminal state. More\n * information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async poll(runId, params, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const { data: run, response } = await this.retrieve(runId, params, {\n ...options,\n headers: { ...options?.headers, ...headers },\n }).withResponse();\n switch (run.status) {\n //If we are in any sort of intermediate state we poll\n case 'queued':\n case 'in_progress':\n case 'cancelling':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n //We return the run in any terminal state.\n case 'requires_action':\n case 'incomplete':\n case 'cancelled':\n case 'completed':\n case 'failed':\n case 'expired':\n return run;\n }\n }\n }\n /**\n * Create a Run stream\n */\n stream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n submitToolOutputs(runID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}/submit_tool_outputs`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: params.stream ?? false,\n __synthesizeEventData: true,\n });\n }\n /**\n * A helper to submit a tool output to a run and poll for a terminal run state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async submitToolOutputsAndPoll(runId, params, options) {\n const run = await this.submitToolOutputs(runId, params, options);\n return await this.poll(run.id, params, options);\n }\n /**\n * Submit the tool outputs from a previous run and stream the run to a terminal\n * state. More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n submitToolOutputsStream(runId, params, options) {\n return AssistantStream.createToolAssistantStream(runId, this._client.beta.threads.runs, params, options);\n }\n}\nRuns.Steps = Steps;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages, } from \"./messages.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../lib/AssistantStream.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Threads extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n /**\n * Create a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(body = {}, options) {\n return this._client.post('/threads', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieves a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadID, options) {\n return this._client.get(path `/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Modifies a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadID, body, options) {\n return this._client.post(path `/threads/${threadID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Delete a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n delete(threadID, options) {\n return this._client.delete(path `/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n createAndRun(body, options) {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: body.stream ?? false,\n __synthesizeEventData: true,\n });\n }\n /**\n * A helper to create a thread, start a run and then poll for a terminal state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndRunPoll(body, options) {\n const run = await this.createAndRun(body, options);\n return await this.runs.poll(run.id, { thread_id: run.thread_id }, options);\n }\n /**\n * Create a thread and stream the run back\n */\n createAndRunStream(body, options) {\n return AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n }\n}\nThreads.Runs = Runs;\nThreads.Messages = Messages;\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as AssistantsAPI from \"./assistants.mjs\";\nimport { Assistants, } from \"./assistants.mjs\";\nimport * as RealtimeAPI from \"./realtime/realtime.mjs\";\nimport { Realtime, } from \"./realtime/realtime.mjs\";\nimport * as ChatKitAPI from \"./chatkit/chatkit.mjs\";\nimport { ChatKit } from \"./chatkit/chatkit.mjs\";\nimport * as ThreadsAPI from \"./threads/threads.mjs\";\nimport { Threads, } from \"./threads/threads.mjs\";\nexport class Beta extends APIResource {\n constructor() {\n super(...arguments);\n this.realtime = new RealtimeAPI.Realtime(this._client);\n this.chatkit = new ChatKitAPI.ChatKit(this._client);\n this.assistants = new AssistantsAPI.Assistants(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nBeta.Realtime = Realtime;\nBeta.ChatKit = ChatKit;\nBeta.Assistants = Assistants;\nBeta.Threads = Threads;\n//# sourceMappingURL=beta.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\n/**\n * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.\n */\nexport class Completions extends APIResource {\n create(body, options) {\n return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Retrieve Container File Content\n */\n retrieve(fileID, params, options) {\n const { container_id } = params;\n return this._client.get(path `/containers/${container_id}/files/${fileID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../../internal/uploads.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a Container File\n *\n * You can send either a multipart/form-data request with the raw file content, or\n * a JSON request with a file ID.\n */\n create(containerID, body, options) {\n return this._client.post(path `/containers/${containerID}/files`, maybeMultipartFormRequestOptions({ body, ...options }, this._client));\n }\n /**\n * Retrieve Container File\n */\n retrieve(fileID, params, options) {\n const { container_id } = params;\n return this._client.get(path `/containers/${container_id}/files/${fileID}`, options);\n }\n /**\n * List Container files\n */\n list(containerID, query = {}, options) {\n return this._client.getAPIList(path `/containers/${containerID}/files`, (CursorPage), {\n query,\n ...options,\n });\n }\n /**\n * Delete Container File\n */\n delete(fileID, params, options) {\n const { container_id } = params;\n return this._client.delete(path `/containers/${container_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n}\nFiles.Content = Content;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FilesAPI from \"./files/files.mjs\";\nimport { Files, } from \"./files/files.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Containers extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n }\n /**\n * Create Container\n */\n create(body, options) {\n return this._client.post('/containers', { body, ...options });\n }\n /**\n * Retrieve Container\n */\n retrieve(containerID, options) {\n return this._client.get(path `/containers/${containerID}`, options);\n }\n /**\n * List Containers\n */\n list(query = {}, options) {\n return this._client.getAPIList('/containers', (CursorPage), { query, ...options });\n }\n /**\n * Delete Container\n */\n delete(containerID, options) {\n return this._client.delete(path `/containers/${containerID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n}\nContainers.Files = Files;\n//# sourceMappingURL=containers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage conversations and conversation items.\n */\nexport class Items extends APIResource {\n /**\n * Create items in a conversation with the given ID.\n */\n create(conversationID, params, options) {\n const { include, ...body } = params;\n return this._client.post(path `/conversations/${conversationID}/items`, {\n query: { include },\n body,\n ...options,\n });\n }\n /**\n * Get a single item from a conversation with the given IDs.\n */\n retrieve(itemID, params, options) {\n const { conversation_id, ...query } = params;\n return this._client.get(path `/conversations/${conversation_id}/items/${itemID}`, { query, ...options });\n }\n /**\n * List all items for a conversation with the given ID.\n */\n list(conversationID, query = {}, options) {\n return this._client.getAPIList(path `/conversations/${conversationID}/items`, (ConversationCursorPage), { query, ...options });\n }\n /**\n * Delete an item from a conversation with the given IDs.\n */\n delete(itemID, params, options) {\n const { conversation_id } = params;\n return this._client.delete(path `/conversations/${conversation_id}/items/${itemID}`, options);\n }\n}\n//# sourceMappingURL=items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as ItemsAPI from \"./items.mjs\";\nimport { Items, } from \"./items.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage conversations and conversation items.\n */\nexport class Conversations extends APIResource {\n constructor() {\n super(...arguments);\n this.items = new ItemsAPI.Items(this._client);\n }\n /**\n * Create a conversation.\n */\n create(body = {}, options) {\n return this._client.post('/conversations', { body, ...options });\n }\n /**\n * Get a conversation\n */\n retrieve(conversationID, options) {\n return this._client.get(path `/conversations/${conversationID}`, options);\n }\n /**\n * Update a conversation\n */\n update(conversationID, body, options) {\n return this._client.post(path `/conversations/${conversationID}`, { body, ...options });\n }\n /**\n * Delete a conversation. Items in the conversation will not be deleted.\n */\n delete(conversationID, options) {\n return this._client.delete(path `/conversations/${conversationID}`, options);\n }\n}\nConversations.Items = Items;\n//# sourceMappingURL=conversations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { loggerFor, toFloat32Array } from \"../internal/utils.mjs\";\n/**\n * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.\n */\nexport class Embeddings extends APIResource {\n /**\n * Creates an embedding vector representing the input text.\n *\n * @example\n * ```ts\n * const createEmbeddingResponse =\n * await client.embeddings.create({\n * input: 'The quick brown fox jumped over the lazy dog',\n * model: 'text-embedding-3-small',\n * });\n * ```\n */\n create(body, options) {\n const hasUserProvidedEncodingFormat = !!body.encoding_format;\n // No encoding_format specified, defaulting to base64 for performance reasons\n // See https://github.com/openai/openai-node/pull/1312\n let encoding_format = hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';\n if (hasUserProvidedEncodingFormat) {\n loggerFor(this._client).debug('embeddings/user defined encoding_format:', body.encoding_format);\n }\n const response = this._client.post('/embeddings', {\n body: {\n ...body,\n encoding_format: encoding_format,\n },\n ...options,\n });\n // if the user specified an encoding_format, return the response as-is\n if (hasUserProvidedEncodingFormat) {\n return response;\n }\n // in this stage, we are sure the user did not specify an encoding_format\n // and we defaulted to base64 for performance reasons\n // we are sure then that the response is base64 encoded, let's decode it\n // the returned result will be a float32 array since this is OpenAI API's default encoding\n loggerFor(this._client).debug('embeddings/decoding base64 embeddings from base64');\n return response._thenUnwrap((response) => {\n if (response && response.data) {\n response.data.forEach((embeddingBase64Obj) => {\n const embeddingBase64Str = embeddingBase64Obj.embedding;\n embeddingBase64Obj.embedding = toFloat32Array(embeddingBase64Str);\n });\n }\n return response;\n });\n }\n}\n//# sourceMappingURL=embeddings.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class OutputItems extends APIResource {\n /**\n * Get an evaluation run output item by ID.\n */\n retrieve(outputItemID, params, options) {\n const { eval_id, run_id } = params;\n return this._client.get(path `/evals/${eval_id}/runs/${run_id}/output_items/${outputItemID}`, options);\n }\n /**\n * Get a list of output items for an evaluation run.\n */\n list(runID, params, options) {\n const { eval_id, ...query } = params;\n return this._client.getAPIList(path `/evals/${eval_id}/runs/${runID}/output_items`, (CursorPage), { query, ...options });\n }\n}\n//# sourceMappingURL=output-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as OutputItemsAPI from \"./output-items.mjs\";\nimport { OutputItems, } from \"./output-items.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.outputItems = new OutputItemsAPI.OutputItems(this._client);\n }\n /**\n * Kicks off a new run for a given evaluation, specifying the data source, and what\n * model configuration to use to test. The datasource will be validated against the\n * schema specified in the config of the evaluation.\n */\n create(evalID, body, options) {\n return this._client.post(path `/evals/${evalID}/runs`, { body, ...options });\n }\n /**\n * Get an evaluation run by ID.\n */\n retrieve(runID, params, options) {\n const { eval_id } = params;\n return this._client.get(path `/evals/${eval_id}/runs/${runID}`, options);\n }\n /**\n * Get a list of runs for an evaluation.\n */\n list(evalID, query = {}, options) {\n return this._client.getAPIList(path `/evals/${evalID}/runs`, (CursorPage), {\n query,\n ...options,\n });\n }\n /**\n * Delete an eval run.\n */\n delete(runID, params, options) {\n const { eval_id } = params;\n return this._client.delete(path `/evals/${eval_id}/runs/${runID}`, options);\n }\n /**\n * Cancel an ongoing evaluation run.\n */\n cancel(runID, params, options) {\n const { eval_id } = params;\n return this._client.post(path `/evals/${eval_id}/runs/${runID}`, options);\n }\n}\nRuns.OutputItems = OutputItems;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class Evals extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n }\n /**\n * Create the structure of an evaluation that can be used to test a model's\n * performance. An evaluation is a set of testing criteria and the config for a\n * data source, which dictates the schema of the data used in the evaluation. After\n * creating an evaluation, you can run it on different models and model parameters.\n * We support several types of graders and datasources. For more information, see\n * the [Evals guide](https://platform.openai.com/docs/guides/evals).\n */\n create(body, options) {\n return this._client.post('/evals', { body, ...options });\n }\n /**\n * Get an evaluation by ID.\n */\n retrieve(evalID, options) {\n return this._client.get(path `/evals/${evalID}`, options);\n }\n /**\n * Update certain properties of an evaluation.\n */\n update(evalID, body, options) {\n return this._client.post(path `/evals/${evalID}`, { body, ...options });\n }\n /**\n * List evaluations for a project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/evals', (CursorPage), { query, ...options });\n }\n /**\n * Delete an evaluation.\n */\n delete(evalID, options) {\n return this._client.delete(path `/evals/${evalID}`, options);\n }\n}\nEvals.Runs = Runs;\n//# sourceMappingURL=evals.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { sleep } from \"../internal/utils/sleep.mjs\";\nimport { APIConnectionTimeoutError } from \"../error.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * Files are used to upload documents that can be used with features like Assistants and Fine-tuning.\n */\nexport class Files extends APIResource {\n /**\n * Upload a file that can be used across various endpoints. Individual files can be\n * up to 512 MB, and each project can store up to 2.5 TB of files in total. There\n * is no organization-wide storage limit.\n *\n * - The Assistants API supports files up to 2 million tokens and of specific file\n * types. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools)\n * for details.\n * - The Fine-tuning API only supports `.jsonl` files. The input also has certain\n * required formats for fine-tuning\n * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input)\n * or\n * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n * models.\n * - The Batch API only supports `.jsonl` files up to 200 MB in size. The input\n * also has a specific required\n * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body, options) {\n return this._client.post('/files', multipartFormRequestOptions({ body, ...options }, this._client));\n }\n /**\n * Returns information about a specific file.\n */\n retrieve(fileID, options) {\n return this._client.get(path `/files/${fileID}`, options);\n }\n /**\n * Returns a list of files.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/files', (CursorPage), { query, ...options });\n }\n /**\n * Delete a file and remove it from all vector stores.\n */\n delete(fileID, options) {\n return this._client.delete(path `/files/${fileID}`, options);\n }\n /**\n * Returns the contents of the specified file.\n */\n content(fileID, options) {\n return this._client.get(path `/files/${fileID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n const start = Date.now();\n let file = await this.retrieve(id);\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await sleep(pollInterval);\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n return file;\n }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class Methods extends APIResource {\n}\n//# sourceMappingURL=methods.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Graders extends APIResource {\n /**\n * Run a grader.\n *\n * @example\n * ```ts\n * const response = await client.fineTuning.alpha.graders.run({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * model_sample: 'model_sample',\n * });\n * ```\n */\n run(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/run', { body, ...options });\n }\n /**\n * Validate a grader.\n *\n * @example\n * ```ts\n * const response =\n * await client.fineTuning.alpha.graders.validate({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * });\n * ```\n */\n validate(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/validate', { body, ...options });\n }\n}\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as GradersAPI from \"./graders.mjs\";\nimport { Graders, } from \"./graders.mjs\";\nexport class Alpha extends APIResource {\n constructor() {\n super(...arguments);\n this.graders = new GradersAPI.Graders(this._client);\n }\n}\nAlpha.Graders = Graders;\n//# sourceMappingURL=alpha.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, Page, } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Permissions extends APIResource {\n /**\n * **NOTE:** Calling this endpoint requires an [admin API key](../admin-api-keys).\n *\n * This enables organization owners to share fine-tuned models with other projects\n * in their organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionCreateResponse of client.fineTuning.checkpoints.permissions.create(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * { project_ids: ['string'] },\n * )) {\n * // ...\n * }\n * ```\n */\n create(fineTunedModelCheckpoint, body, options) {\n return this._client.getAPIList(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, (Page), { body, method: 'post', ...options });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to view all permissions for a\n * fine-tuned model checkpoint.\n *\n * @deprecated Retrieve is deprecated. Please swap to the paginated list method instead.\n */\n retrieve(fineTunedModelCheckpoint, query = {}, options) {\n return this._client.get(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, {\n query,\n ...options,\n });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to view all permissions for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionListResponse of client.fineTuning.checkpoints.permissions.list(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n list(fineTunedModelCheckpoint, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, (ConversationCursorPage), { query, ...options });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to delete a permission for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * const permission =\n * await client.fineTuning.checkpoints.permissions.delete(\n * 'cp_zc4Q7MP6XxulcVzj4MZdwsAB',\n * {\n * fine_tuned_model_checkpoint:\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * },\n * );\n * ```\n */\n delete(permissionID, params, options) {\n const { fine_tuned_model_checkpoint } = params;\n return this._client.delete(path `/fine_tuning/checkpoints/${fine_tuned_model_checkpoint}/permissions/${permissionID}`, options);\n }\n}\n//# sourceMappingURL=permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as PermissionsAPI from \"./permissions.mjs\";\nimport { Permissions, } from \"./permissions.mjs\";\nexport class Checkpoints extends APIResource {\n constructor() {\n super(...arguments);\n this.permissions = new PermissionsAPI.Permissions(this._client);\n }\n}\nCheckpoints.Permissions = Permissions;\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Checkpoints extends APIResource {\n /**\n * List checkpoints for a fine-tuning job.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJobCheckpoint of client.fineTuning.jobs.checkpoints.list(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n list(fineTuningJobID, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/checkpoints`, (CursorPage), { query, ...options });\n }\n}\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints.mjs\";\nimport { Checkpoints, } from \"./checkpoints.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Jobs extends APIResource {\n constructor() {\n super(...arguments);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n }\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.create({\n * model: 'gpt-4o-mini',\n * training_file: 'file-abc123',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/fine_tuning/jobs', { body, ...options });\n }\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.retrieve(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n retrieve(fineTuningJobID, options) {\n return this._client.get(path `/fine_tuning/jobs/${fineTuningJobID}`, options);\n }\n /**\n * List your organization's fine-tuning jobs\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJob of client.fineTuning.jobs.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/fine_tuning/jobs', (CursorPage), { query, ...options });\n }\n /**\n * Immediately cancel a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.cancel(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n cancel(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/cancel`, options);\n }\n /**\n * Get status updates for a fine-tuning job.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJobEvent of client.fineTuning.jobs.listEvents(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n listEvents(fineTuningJobID, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/events`, (CursorPage), { query, ...options });\n }\n /**\n * Pause a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.pause(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n pause(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/pause`, options);\n }\n /**\n * Resume a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.resume(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n resume(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/resume`, options);\n }\n}\nJobs.Checkpoints = Checkpoints;\n//# sourceMappingURL=jobs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as MethodsAPI from \"./methods.mjs\";\nimport { Methods, } from \"./methods.mjs\";\nimport * as AlphaAPI from \"./alpha/alpha.mjs\";\nimport { Alpha } from \"./alpha/alpha.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints/checkpoints.mjs\";\nimport { Checkpoints } from \"./checkpoints/checkpoints.mjs\";\nimport * as JobsAPI from \"./jobs/jobs.mjs\";\nimport { Jobs, } from \"./jobs/jobs.mjs\";\nexport class FineTuning extends APIResource {\n constructor() {\n super(...arguments);\n this.methods = new MethodsAPI.Methods(this._client);\n this.jobs = new JobsAPI.Jobs(this._client);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n this.alpha = new AlphaAPI.Alpha(this._client);\n }\n}\nFineTuning.Methods = Methods;\nFineTuning.Jobs = Jobs;\nFineTuning.Checkpoints = Checkpoints;\nFineTuning.Alpha = Alpha;\n//# sourceMappingURL=fine-tuning.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class GraderModels extends APIResource {\n}\n//# sourceMappingURL=grader-models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as GraderModelsAPI from \"./grader-models.mjs\";\nimport { GraderModels, } from \"./grader-models.mjs\";\nexport class Graders extends APIResource {\n constructor() {\n super(...arguments);\n this.graderModels = new GraderModelsAPI.GraderModels(this._client);\n }\n}\nGraders.GraderModels = GraderModels;\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\n/**\n * Given a prompt and/or an input image, the model will generate a new image.\n */\nexport class Images extends APIResource {\n /**\n * Creates a variation of a given image. This endpoint only supports `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.createVariation({\n * image: fs.createReadStream('otter.png'),\n * });\n * ```\n */\n createVariation(body, options) {\n return this._client.post('/images/variations', multipartFormRequestOptions({ body, ...options }, this._client));\n }\n edit(body, options) {\n return this._client.post('/images/edits', multipartFormRequestOptions({ body, ...options, stream: body.stream ?? false }, this._client));\n }\n generate(body, options) {\n return this._client.post('/images/generations', { body, ...options, stream: body.stream ?? false });\n }\n}\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { Page } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * List and describe the various models available in the API.\n */\nexport class Models extends APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model, options) {\n return this._client.get(path `/models/${model}`, options);\n }\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options) {\n return this._client.getAPIList('/models', (Page), options);\n }\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n delete(model, options) {\n return this._client.delete(path `/models/${model}`, options);\n }\n}\n//# sourceMappingURL=models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\n/**\n * Given text and/or image inputs, classifies if those inputs are potentially harmful.\n */\nexport class Moderations extends APIResource {\n /**\n * Classifies if text and/or image inputs are potentially harmful. Learn more in\n * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n */\n create(body, options) {\n return this._client.post('/moderations', { body, ...options });\n }\n}\n//# sourceMappingURL=moderations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Calls extends APIResource {\n /**\n * Accept an incoming SIP call and configure the realtime session that will handle\n * it.\n *\n * @example\n * ```ts\n * await client.realtime.calls.accept('call_id', {\n * type: 'realtime',\n * });\n * ```\n */\n accept(callID, body, options) {\n return this._client.post(path `/realtime/calls/${callID}/accept`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n /**\n * End an active Realtime API call, whether it was initiated over SIP or WebRTC.\n *\n * @example\n * ```ts\n * await client.realtime.calls.hangup('call_id');\n * ```\n */\n hangup(callID, options) {\n return this._client.post(path `/realtime/calls/${callID}/hangup`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n /**\n * Transfer an active SIP call to a new destination using the SIP REFER verb.\n *\n * @example\n * ```ts\n * await client.realtime.calls.refer('call_id', {\n * target_uri: 'tel:+14155550123',\n * });\n * ```\n */\n refer(callID, body, options) {\n return this._client.post(path `/realtime/calls/${callID}/refer`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n /**\n * Decline an incoming SIP call by returning a SIP status code to the caller.\n *\n * @example\n * ```ts\n * await client.realtime.calls.reject('call_id');\n * ```\n */\n reject(callID, body = {}, options) {\n return this._client.post(path `/realtime/calls/${callID}/reject`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n}\n//# sourceMappingURL=calls.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class ClientSecrets extends APIResource {\n /**\n * Create a Realtime client secret with an associated session configuration.\n *\n * Client secrets are short-lived tokens that can be passed to a client app, such\n * as a web frontend or mobile client, which grants access to the Realtime API\n * without leaking your main API key. You can configure a custom TTL for each\n * client secret.\n *\n * You can also attach session configuration options to the client secret, which\n * will be applied to any sessions created using that client secret, but these can\n * also be overridden by the client connection.\n *\n * [Learn more about authentication with client secrets over WebRTC](https://platform.openai.com/docs/guides/realtime-webrtc).\n *\n * Returns the created client secret and the effective session object. The client\n * secret is a string that looks like `ek_1234`.\n *\n * @example\n * ```ts\n * const clientSecret =\n * await client.realtime.clientSecrets.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/client_secrets', { body, ...options });\n }\n}\n//# sourceMappingURL=client-secrets.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as CallsAPI from \"./calls.mjs\";\nimport { Calls } from \"./calls.mjs\";\nimport * as ClientSecretsAPI from \"./client-secrets.mjs\";\nimport { ClientSecrets, } from \"./client-secrets.mjs\";\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.clientSecrets = new ClientSecretsAPI.ClientSecrets(this._client);\n this.calls = new CallsAPI.Calls(this._client);\n }\n}\nRealtime.ClientSecrets = ClientSecrets;\nRealtime.Calls = Calls;\n//# sourceMappingURL=realtime.mjs.map","import { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableResponseFormat } from \"../lib/parser.mjs\";\nexport function maybeParseResponse(response, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...response,\n output_parsed: null,\n output: response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: null,\n };\n }\n if (item.type === 'message') {\n return {\n ...item,\n content: item.content.map((content) => ({\n ...content,\n parsed: null,\n })),\n };\n }\n else {\n return item;\n }\n }),\n };\n }\n return parseResponse(response, params);\n}\nexport function parseResponse(response, params) {\n const output = response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: parseToolCall(params, item),\n };\n }\n if (item.type === 'message') {\n const content = item.content.map((content) => {\n if (content.type === 'output_text') {\n return {\n ...content,\n parsed: parseTextFormat(params, content.text),\n };\n }\n return content;\n });\n return {\n ...item,\n content,\n };\n }\n return item;\n });\n const parsed = Object.assign({}, response, { output });\n if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n addOutputText(parsed);\n }\n Object.defineProperty(parsed, 'output_parsed', {\n enumerable: true,\n get() {\n for (const output of parsed.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text' && content.parsed !== null) {\n return content.parsed;\n }\n }\n }\n return null;\n },\n });\n return parsed;\n}\nfunction parseTextFormat(params, content) {\n if (params.text?.format?.type !== 'json_schema') {\n return null;\n }\n if ('$parseRaw' in params.text?.format) {\n const text_format = params.text?.format;\n return text_format.$parseRaw(content);\n }\n return JSON.parse(content);\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.text?.format)) {\n return true;\n }\n return false;\n}\nexport function makeParseableResponseTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nfunction getInputToolByName(input_tools, name) {\n return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return {\n ...toolCall,\n ...toolCall,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n : inputTool?.strict ? JSON.parse(toolCall.arguments)\n : null,\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexport function addOutputText(rsp) {\n const texts = [];\n for (const output of rsp.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text') {\n texts.push(content.text);\n }\n }\n }\n rsp.output_text = texts.join('');\n}\n//# sourceMappingURL=ResponsesParser.mjs.map","var _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../../error.mjs\";\nimport { EventStream } from \"../EventStream.mjs\";\nimport { maybeParseResponse } from \"../ResponsesParser.mjs\";\nexport class ResponseStream extends EventStream {\n constructor(params) {\n super();\n _ResponseStream_instances.add(this);\n _ResponseStream_params.set(this, void 0);\n _ResponseStream_currentResponseSnapshot.set(this, void 0);\n _ResponseStream_finalResponse.set(this, void 0);\n __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n }\n static createResponse(client, params, options) {\n const runner = new ResponseStream(params);\n runner._run(() => runner._createOrRetrieveResponse(client, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createOrRetrieveResponse(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n let stream;\n let starting_after = null;\n if ('response_id' in params) {\n stream = await client.responses.retrieve(params.response_id, { stream: true }, { ...options, signal: this.controller.signal, stream: true });\n starting_after = params.starting_after ?? null;\n }\n else {\n stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n }\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event, starting_after);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n }\n [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event, starting_after) {\n if (this.ended)\n return;\n const maybeEmit = (name, event) => {\n if (starting_after == null || event.sequence_number > starting_after) {\n this._emit(name, event);\n }\n };\n const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n maybeEmit('event', event);\n switch (event.type) {\n case 'response.output_text.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n maybeEmit('response.output_text.delta', {\n ...event,\n snapshot: content.text,\n });\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n maybeEmit('response.function_call_arguments.delta', {\n ...event,\n snapshot: output.arguments,\n });\n }\n break;\n }\n default:\n maybeEmit(event.type, event);\n break;\n }\n }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any events`);\n }\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n return parsedResponse;\n }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n if (event.type !== 'response.created') {\n throw new OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n }\n snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n return snapshot;\n }\n switch (event.type) {\n case 'response.output_item.added': {\n snapshot.output.push(event.item);\n break;\n }\n case 'response.content_part.added': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n const type = output.type;\n const part = event.part;\n if (type === 'message' && part.type !== 'reasoning_text') {\n output.content.push(part);\n }\n else if (type === 'reasoning' && part.type === 'reasoning_text') {\n if (!output.content) {\n output.content = [];\n }\n output.content.push(part);\n }\n break;\n }\n case 'response.output_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n output.arguments += event.delta;\n }\n break;\n }\n case 'response.reasoning_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'reasoning') {\n const content = output.content?.[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'reasoning_text') {\n throw new OpenAIError(`expected content to be 'reasoning_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.completed': {\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n break;\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n }\n const event = pushQueue.shift();\n return { value: event, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n /**\n * @returns a promise that resolves with the final Response, or rejects\n * if an error occurred or the stream ended prematurely without producing a REsponse.\n */\n async finalResponse() {\n await this.done();\n const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n if (!response)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return response;\n }\n}\nfunction finalizeResponse(snapshot, params) {\n return maybeParseResponse(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class InputItems extends APIResource {\n /**\n * Returns a list of input items for a given response.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const responseItem of client.responses.inputItems.list(\n * 'response_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(responseID, query = {}, options) {\n return this._client.getAPIList(path `/responses/${responseID}/input_items`, (CursorPage), { query, ...options });\n }\n}\n//# sourceMappingURL=input-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class InputTokens extends APIResource {\n /**\n * Returns input token counts of the request.\n *\n * Returns an object with `object` set to `response.input_tokens` and an\n * `input_tokens` count.\n *\n * @example\n * ```ts\n * const response = await client.responses.inputTokens.count();\n * ```\n */\n count(body = {}, options) {\n return this._client.post('/responses/input_tokens', { body, ...options });\n }\n}\n//# sourceMappingURL=input-tokens.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { parseResponse, addOutputText, } from \"../../lib/ResponsesParser.mjs\";\nimport { ResponseStream } from \"../../lib/responses/ResponseStream.mjs\";\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as InputItemsAPI from \"./input-items.mjs\";\nimport { InputItems } from \"./input-items.mjs\";\nimport * as InputTokensAPI from \"./input-tokens.mjs\";\nimport { InputTokens } from \"./input-tokens.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Responses extends APIResource {\n constructor() {\n super(...arguments);\n this.inputItems = new InputItemsAPI.InputItems(this._client);\n this.inputTokens = new InputTokensAPI.InputTokens(this._client);\n }\n create(body, options) {\n return this._client.post('/responses', { body, ...options, stream: body.stream ?? false })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n retrieve(responseID, query = {}, options) {\n return this._client.get(path `/responses/${responseID}`, {\n query,\n ...options,\n stream: query?.stream ?? false,\n })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n /**\n * Deletes a model response with the given ID.\n *\n * @example\n * ```ts\n * await client.responses.delete(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n delete(responseID, options) {\n return this._client.delete(path `/responses/${responseID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n });\n }\n parse(body, options) {\n return this._client.responses\n .create(body, options)\n ._thenUnwrap((response) => parseResponse(response, body));\n }\n /**\n * Creates a model response stream\n */\n stream(body, options) {\n return ResponseStream.createResponse(this._client, body, options);\n }\n /**\n * Cancels a model response with the given ID. Only responses created with the\n * `background` parameter set to `true` can be cancelled.\n * [Learn more](https://platform.openai.com/docs/guides/background).\n *\n * @example\n * ```ts\n * const response = await client.responses.cancel(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n cancel(responseID, options) {\n return this._client.post(path `/responses/${responseID}/cancel`, options);\n }\n /**\n * Compact a conversation. Returns a compacted response object.\n *\n * Learn when and how to compact long-running conversations in the\n * [conversation state guide](https://platform.openai.com/docs/guides/conversation-state#managing-the-context-window).\n * For ZDR-compatible compaction details, see\n * [Compaction (advanced)](https://platform.openai.com/docs/guides/conversation-state#compaction-advanced).\n *\n * @example\n * ```ts\n * const compactedResponse = await client.responses.compact({\n * model: 'gpt-5.4',\n * });\n * ```\n */\n compact(body, options) {\n return this._client.post('/responses/compact', { body, ...options });\n }\n}\nResponses.InputItems = InputItems;\nResponses.InputTokens = InputTokens;\n//# sourceMappingURL=responses.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Download a skill zip bundle by its ID.\n */\n retrieve(skillID, options) {\n return this._client.get(path `/skills/${skillID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Download a skill version zip bundle.\n */\n retrieve(version, params, options) {\n const { skill_id } = params;\n return this._client.get(path `/skills/${skill_id}/versions/${version}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../../internal/uploads.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Versions extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a new immutable skill version.\n */\n create(skillID, body = {}, options) {\n return this._client.post(path `/skills/${skillID}/versions`, maybeMultipartFormRequestOptions({ body, ...options }, this._client));\n }\n /**\n * Get a specific skill version.\n */\n retrieve(version, params, options) {\n const { skill_id } = params;\n return this._client.get(path `/skills/${skill_id}/versions/${version}`, options);\n }\n /**\n * List skill versions for a skill.\n */\n list(skillID, query = {}, options) {\n return this._client.getAPIList(path `/skills/${skillID}/versions`, (CursorPage), {\n query,\n ...options,\n });\n }\n /**\n * Delete a skill version.\n */\n delete(version, params, options) {\n const { skill_id } = params;\n return this._client.delete(path `/skills/${skill_id}/versions/${version}`, options);\n }\n}\nVersions.Content = Content;\n//# sourceMappingURL=versions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport * as VersionsAPI from \"./versions/versions.mjs\";\nimport { Versions, } from \"./versions/versions.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Skills extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n this.versions = new VersionsAPI.Versions(this._client);\n }\n /**\n * Create a new skill.\n */\n create(body = {}, options) {\n return this._client.post('/skills', maybeMultipartFormRequestOptions({ body, ...options }, this._client));\n }\n /**\n * Get a skill by its ID.\n */\n retrieve(skillID, options) {\n return this._client.get(path `/skills/${skillID}`, options);\n }\n /**\n * Update the default version pointer for a skill.\n */\n update(skillID, body, options) {\n return this._client.post(path `/skills/${skillID}`, { body, ...options });\n }\n /**\n * List all skills for the current project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/skills', (CursorPage), { query, ...options });\n }\n /**\n * Delete a skill by its ID.\n */\n delete(skillID, options) {\n return this._client.delete(path `/skills/${skillID}`, options);\n }\n}\nSkills.Content = Content;\nSkills.Versions = Versions;\n//# sourceMappingURL=skills.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Use Uploads to upload large files in multiple parts.\n */\nexport class Parts extends APIResource {\n /**\n * Adds a\n * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n * A Part represents a chunk of bytes from the file you are trying to upload.\n *\n * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n * maximum of 8 GB.\n *\n * It is possible to add multiple Parts in parallel. You can decide the intended\n * order of the Parts when you\n * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n */\n create(uploadID, body, options) {\n return this._client.post(path `/uploads/${uploadID}/parts`, multipartFormRequestOptions({ body, ...options }, this._client));\n }\n}\n//# sourceMappingURL=parts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as PartsAPI from \"./parts.mjs\";\nimport { Parts } from \"./parts.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Use Uploads to upload large files in multiple parts.\n */\nexport class Uploads extends APIResource {\n constructor() {\n super(...arguments);\n this.parts = new PartsAPI.Parts(this._client);\n }\n /**\n * Creates an intermediate\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n * that you can add\n * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n * after you create it.\n *\n * Once you complete the Upload, we will create a\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * contains all the parts you uploaded. This File is usable in the rest of our\n * platform as a regular File object.\n *\n * For certain `purpose` values, the correct `mime_type` must be specified. Please\n * refer to documentation for the\n * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n *\n * For guidance on the proper filename extensions for each purpose, please follow\n * the documentation on\n * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n *\n * Returns the Upload object with status `pending`.\n */\n create(body, options) {\n return this._client.post('/uploads', { body, ...options });\n }\n /**\n * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n *\n * Returns the Upload object with status `cancelled`.\n */\n cancel(uploadID, options) {\n return this._client.post(path `/uploads/${uploadID}/cancel`, options);\n }\n /**\n * Completes the\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n *\n * Within the returned Upload object, there is a nested\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * is ready to use in the rest of the platform.\n *\n * You can specify the order of the Parts by passing in an ordered list of the Part\n * IDs.\n *\n * The number of bytes uploaded upon completion must match the number of bytes\n * initially specified when creating the Upload object. No Parts may be added after\n * an Upload is completed. Returns the Upload object with status `completed`,\n * including an additional `file` property containing the created usable File\n * object.\n */\n complete(uploadID, body, options) {\n return this._client.post(path `/uploads/${uploadID}/complete`, { body, ...options });\n }\n}\nUploads.Parts = Parts;\n//# sourceMappingURL=uploads.mjs.map","/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nexport const allSettledWithThrow = async (promises) => {\n const results = await Promise.allSettled(promises);\n const rejected = results.filter((result) => result.status === 'rejected');\n if (rejected.length) {\n for (const result of rejected) {\n console.error(result.reason);\n }\n throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n }\n // Note: TS was complaining about using `.filter().map()` here for some reason\n const values = [];\n for (const result of results) {\n if (result.status === 'fulfilled') {\n values.push(result.value);\n }\n }\n return values;\n};\n//# sourceMappingURL=Util.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils/sleep.mjs\";\nimport { allSettledWithThrow } from \"../../lib/Util.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class FileBatches extends APIResource {\n /**\n * Create a vector store file batch.\n */\n create(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}/file_batches`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieves a vector store file batch.\n */\n retrieve(batchID, params, options) {\n const { vector_store_id } = params;\n return this._client.get(path `/vector_stores/${vector_store_id}/file_batches/${batchID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Cancel a vector store file batch. This attempts to cancel the processing of\n * files in this batch as soon as possible.\n */\n cancel(batchID, params, options) {\n const { vector_store_id } = params;\n return this._client.post(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Create a vector store batch and poll until all files have been processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const batch = await this.create(vectorStoreId, body);\n return await this.poll(vectorStoreId, batch.id, options);\n }\n /**\n * Returns a list of vector store files in a batch.\n */\n listFiles(batchID, params, options) {\n const { vector_store_id, ...query } = params;\n return this._client.getAPIList(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/files`, (CursorPage), { query, ...options, headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]) });\n }\n /**\n * Wait for the given file batch to be processed.\n *\n * Note: this will return even if one of the files failed to process, you need to\n * check batch.file_counts.failed_count to handle this case.\n */\n async poll(vectorStoreID, batchID, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const { data: batch, response } = await this.retrieve(batchID, { vector_store_id: vectorStoreID }, {\n ...options,\n headers,\n }).withResponse();\n switch (batch.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'cancelled':\n case 'completed':\n return batch;\n }\n }\n }\n /**\n * Uploads the given files concurrently and then creates a vector store file batch.\n *\n * The concurrency limit is configurable using the `maxConcurrency` parameter.\n */\n async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n if (files == null || files.length == 0) {\n throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n }\n const configuredConcurrency = options?.maxConcurrency ?? 5;\n // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n const client = this._client;\n const fileIterator = files.values();\n const allFileIds = [...fileIds];\n // This code is based on this design. The libraries don't accommodate our environment limits.\n // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n async function processFiles(iterator) {\n for (let item of iterator) {\n const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n allFileIds.push(fileObj.id);\n }\n }\n // Start workers to process results\n const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n // Wait for all processing to complete.\n await allSettledWithThrow(workers);\n return await this.createAndPoll(vectorStoreId, {\n file_ids: allFileIds,\n });\n }\n}\n//# sourceMappingURL=file-batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n /**\n * Create a vector store file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to a\n * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n */\n create(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}/files`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieves a vector store file.\n */\n retrieve(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.get(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Update attributes on a vector store file.\n */\n update(fileID, params, options) {\n const { vector_store_id, ...body } = params;\n return this._client.post(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of vector store files.\n */\n list(vectorStoreID, query = {}, options) {\n return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/files`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Delete a vector store file. This will remove the file from the vector store but\n * the file itself will not be deleted. To delete the file, use the\n * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n * endpoint.\n */\n delete(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.delete(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Attach a file to the given vector store and wait for it to be processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const file = await this.create(vectorStoreId, body, options);\n return await this.poll(vectorStoreId, file.id, options);\n }\n /**\n * Wait for the vector store file to finish processing.\n *\n * Note: this will return even if the file failed to process, you need to check\n * file.last_error and file.status to handle these cases\n */\n async poll(vectorStoreID, fileID, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const fileResponse = await this.retrieve(fileID, {\n vector_store_id: vectorStoreID,\n }, { ...options, headers }).withResponse();\n const file = fileResponse.data;\n switch (file.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'completed':\n return file;\n }\n }\n }\n /**\n * Upload a file to the `files` API and then attach it to the given vector store.\n *\n * Note the file will be asynchronously processed (you can use the alternative\n * polling helper method to wait for processing to complete).\n */\n async upload(vectorStoreId, file, options) {\n const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n }\n /**\n * Add a file to a vector store and poll until processing is complete.\n */\n async uploadAndPoll(vectorStoreId, file, options) {\n const fileInfo = await this.upload(vectorStoreId, file, options);\n return await this.poll(vectorStoreId, fileInfo.id, options);\n }\n /**\n * Retrieve the parsed contents of a vector store file.\n */\n content(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.getAPIList(path `/vector_stores/${vector_store_id}/files/${fileID}/content`, (Page), { ...options, headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]) });\n }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FileBatchesAPI from \"./file-batches.mjs\";\nimport { FileBatches, } from \"./file-batches.mjs\";\nimport * as FilesAPI from \"./files.mjs\";\nimport { Files, } from \"./files.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class VectorStores extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n }\n /**\n * Create a vector store.\n */\n create(body, options) {\n return this._client.post('/vector_stores', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Retrieves a vector store.\n */\n retrieve(vectorStoreID, options) {\n return this._client.get(path `/vector_stores/${vectorStoreID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Modifies a vector store.\n */\n update(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Returns a list of vector stores.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/vector_stores', (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Delete a vector store.\n */\n delete(vectorStoreID, options) {\n return this._client.delete(path `/vector_stores/${vectorStoreID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n /**\n * Search a vector store for relevant chunks based on a query and file attributes\n * filter.\n */\n search(vectorStoreID, body, options) {\n return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/search`, (Page), {\n body,\n method: 'post',\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n });\n }\n}\nVectorStores.Files = Files;\nVectorStores.FileBatches = FileBatches;\n//# sourceMappingURL=vector-stores.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { ConversationCursorPage } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../internal/uploads.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Videos extends APIResource {\n /**\n * Create a new video generation job from a prompt and optional reference assets.\n */\n create(body, options) {\n return this._client.post('/videos', maybeMultipartFormRequestOptions({ body, ...options }, this._client));\n }\n /**\n * Fetch the latest metadata for a generated video.\n */\n retrieve(videoID, options) {\n return this._client.get(path `/videos/${videoID}`, options);\n }\n /**\n * List recently generated videos for the current project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/videos', (ConversationCursorPage), { query, ...options });\n }\n /**\n * Permanently delete a completed or failed video and its stored assets.\n */\n delete(videoID, options) {\n return this._client.delete(path `/videos/${videoID}`, options);\n }\n /**\n * Download the generated video bytes or a derived preview asset.\n *\n * Streams the rendered video content for the specified video job.\n */\n downloadContent(videoID, query = {}, options) {\n return this._client.get(path `/videos/${videoID}/content`, {\n query,\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __binaryResponse: true,\n });\n }\n /**\n * Create a remix of a completed video using a refreshed prompt.\n */\n remix(videoID, body, options) {\n return this._client.post(path `/videos/${videoID}/remix`, maybeMultipartFormRequestOptions({ body, ...options }, this._client));\n }\n}\n//# sourceMappingURL=videos.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _Webhooks_instances, _Webhooks_validateSecret, _Webhooks_getRequiredHeader;\nimport { __classPrivateFieldGet } from \"../../internal/tslib.mjs\";\nimport { InvalidWebhookSignatureError } from \"../../error.mjs\";\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nexport class Webhooks extends APIResource {\n constructor() {\n super(...arguments);\n _Webhooks_instances.add(this);\n }\n /**\n * Validates that the given payload was sent by OpenAI and parses the payload.\n */\n async unwrap(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n await this.verifySignature(payload, headers, secret, tolerance);\n return JSON.parse(payload);\n }\n /**\n * Validates whether or not the webhook payload was sent by OpenAI.\n *\n * An error will be raised if the webhook payload was not sent by OpenAI.\n *\n * @param payload - The webhook payload\n * @param headers - The webhook headers\n * @param secret - The webhook secret (optional, will use client secret if not provided)\n * @param tolerance - Maximum age of the webhook in seconds (default: 300 = 5 minutes)\n */\n async verifySignature(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n if (typeof crypto === 'undefined' ||\n typeof crypto.subtle.importKey !== 'function' ||\n typeof crypto.subtle.verify !== 'function') {\n throw new Error('Webhook signature verification is only supported when the `crypto` global is defined');\n }\n __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_validateSecret).call(this, secret);\n const headersObj = buildHeaders([headers]).values;\n const signatureHeader = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-signature');\n const timestamp = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-timestamp');\n const webhookId = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-id');\n // Validate timestamp to prevent replay attacks\n const timestampSeconds = parseInt(timestamp, 10);\n if (isNaN(timestampSeconds)) {\n throw new InvalidWebhookSignatureError('Invalid webhook timestamp format');\n }\n const nowSeconds = Math.floor(Date.now() / 1000);\n if (nowSeconds - timestampSeconds > tolerance) {\n throw new InvalidWebhookSignatureError('Webhook timestamp is too old');\n }\n if (timestampSeconds > nowSeconds + tolerance) {\n throw new InvalidWebhookSignatureError('Webhook timestamp is too new');\n }\n // Extract signatures from v1,<base64> format\n // The signature header can have multiple values, separated by spaces.\n // Each value is in the format v1,<base64>. We should accept if any match.\n const signatures = signatureHeader\n .split(' ')\n .map((part) => (part.startsWith('v1,') ? part.substring(3) : part));\n // Decode the secret if it starts with whsec_\n const decodedSecret = secret.startsWith('whsec_') ?\n Buffer.from(secret.replace('whsec_', ''), 'base64')\n : Buffer.from(secret, 'utf-8');\n // Create the signed payload: {webhook_id}.{timestamp}.{payload}\n const signedPayload = webhookId ? `${webhookId}.${timestamp}.${payload}` : `${timestamp}.${payload}`;\n // Import the secret as a cryptographic key for HMAC\n const key = await crypto.subtle.importKey('raw', decodedSecret, { name: 'HMAC', hash: 'SHA-256' }, false, ['verify']);\n // Check if any signature matches using timing-safe WebCrypto verify\n for (const signature of signatures) {\n try {\n const signatureBytes = Buffer.from(signature, 'base64');\n const isValid = await crypto.subtle.verify('HMAC', key, signatureBytes, new TextEncoder().encode(signedPayload));\n if (isValid) {\n return; // Valid signature found\n }\n }\n catch {\n // Invalid base64 or signature format, continue to next signature\n continue;\n }\n }\n throw new InvalidWebhookSignatureError('The given webhook signature does not match the expected signature');\n }\n}\n_Webhooks_instances = new WeakSet(), _Webhooks_validateSecret = function _Webhooks_validateSecret(secret) {\n if (typeof secret !== 'string' || secret.length === 0) {\n throw new Error(`The webhook secret must either be set using the env var, OPENAI_WEBHOOK_SECRET, on the client class, OpenAI({ webhookSecret: '123' }), or passed to this function`);\n }\n}, _Webhooks_getRequiredHeader = function _Webhooks_getRequiredHeader(headers, name) {\n if (!headers) {\n throw new Error(`Headers are required`);\n }\n const value = headers.get(name);\n if (value === null || value === undefined) {\n throw new Error(`Missing required header: ${name}`);\n }\n return value;\n};\n//# sourceMappingURL=webhooks.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _OpenAI_instances, _a, _OpenAI_encoder, _OpenAI_baseURLOverridden;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"./internal/tslib.mjs\";\nimport { uuid4 } from \"./internal/utils/uuid.mjs\";\nimport { validatePositiveInteger, isAbsoluteURL, safeJSON } from \"./internal/utils/values.mjs\";\nimport { sleep } from \"./internal/utils/sleep.mjs\";\nimport { castToError, isAbortError } from \"./internal/errors.mjs\";\nimport { getPlatformHeaders } from \"./internal/detect-platform.mjs\";\nimport * as Shims from \"./internal/shims.mjs\";\nimport * as Opts from \"./internal/request-options.mjs\";\nimport { stringifyQuery } from \"./internal/utils/query.mjs\";\nimport { VERSION } from \"./version.mjs\";\nimport * as Errors from \"./core/error.mjs\";\nimport * as Pagination from \"./core/pagination.mjs\";\nimport * as Uploads from \"./core/uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { APIPromise } from \"./core/api-promise.mjs\";\nimport { Batches, } from \"./resources/batches.mjs\";\nimport { Completions, } from \"./resources/completions.mjs\";\nimport { Embeddings, } from \"./resources/embeddings.mjs\";\nimport { Files, } from \"./resources/files.mjs\";\nimport { Images, } from \"./resources/images.mjs\";\nimport { Models } from \"./resources/models.mjs\";\nimport { Moderations, } from \"./resources/moderations.mjs\";\nimport { Videos, } from \"./resources/videos.mjs\";\nimport { Audio } from \"./resources/audio/audio.mjs\";\nimport { Beta } from \"./resources/beta/beta.mjs\";\nimport { Chat } from \"./resources/chat/chat.mjs\";\nimport { Containers, } from \"./resources/containers/containers.mjs\";\nimport { Conversations } from \"./resources/conversations/conversations.mjs\";\nimport { Evals, } from \"./resources/evals/evals.mjs\";\nimport { FineTuning } from \"./resources/fine-tuning/fine-tuning.mjs\";\nimport { Graders } from \"./resources/graders/graders.mjs\";\nimport { Realtime } from \"./resources/realtime/realtime.mjs\";\nimport { Responses } from \"./resources/responses/responses.mjs\";\nimport { Skills, } from \"./resources/skills/skills.mjs\";\nimport { Uploads as UploadsAPIUploads, } from \"./resources/uploads/uploads.mjs\";\nimport { VectorStores, } from \"./resources/vector-stores/vector-stores.mjs\";\nimport { Webhooks } from \"./resources/webhooks/webhooks.mjs\";\nimport { isRunningInBrowser } from \"./internal/detect-platform.mjs\";\nimport { buildHeaders } from \"./internal/headers.mjs\";\nimport { readEnv } from \"./internal/utils/env.mjs\";\nimport { formatRequestDetails, loggerFor, parseLogLevel, } from \"./internal/utils/log.mjs\";\nimport { isEmptyObj } from \"./internal/utils/values.mjs\";\n/**\n * API Client for interfacing with the OpenAI API.\n */\nexport class OpenAI {\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n * @param {string | null | undefined} [opts.webhookSecret=process.env['OPENAI_WEBHOOK_SECRET'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.\n * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = readEnv('OPENAI_BASE_URL'), apiKey = readEnv('OPENAI_API_KEY'), organization = readEnv('OPENAI_ORG_ID') ?? null, project = readEnv('OPENAI_PROJECT_ID') ?? null, webhookSecret = readEnv('OPENAI_WEBHOOK_SECRET') ?? null, ...opts } = {}) {\n _OpenAI_instances.add(this);\n _OpenAI_encoder.set(this, void 0);\n /**\n * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.\n */\n this.completions = new API.Completions(this);\n this.chat = new API.Chat(this);\n /**\n * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.\n */\n this.embeddings = new API.Embeddings(this);\n /**\n * Files are used to upload documents that can be used with features like Assistants and Fine-tuning.\n */\n this.files = new API.Files(this);\n /**\n * Given a prompt and/or an input image, the model will generate a new image.\n */\n this.images = new API.Images(this);\n this.audio = new API.Audio(this);\n /**\n * Given text and/or image inputs, classifies if those inputs are potentially harmful.\n */\n this.moderations = new API.Moderations(this);\n /**\n * List and describe the various models available in the API.\n */\n this.models = new API.Models(this);\n this.fineTuning = new API.FineTuning(this);\n this.graders = new API.Graders(this);\n this.vectorStores = new API.VectorStores(this);\n this.webhooks = new API.Webhooks(this);\n this.beta = new API.Beta(this);\n /**\n * Create large batches of API requests to run asynchronously.\n */\n this.batches = new API.Batches(this);\n /**\n * Use Uploads to upload large files in multiple parts.\n */\n this.uploads = new API.Uploads(this);\n this.responses = new API.Responses(this);\n this.realtime = new API.Realtime(this);\n /**\n * Manage conversations and conversation items.\n */\n this.conversations = new API.Conversations(this);\n /**\n * Manage and run evals in the OpenAI platform.\n */\n this.evals = new API.Evals(this);\n this.containers = new API.Containers(this);\n this.skills = new API.Skills(this);\n this.videos = new API.Videos(this);\n if (apiKey === undefined) {\n throw new Errors.OpenAIError('Missing credentials. Please pass an `apiKey`, or set the `OPENAI_API_KEY` environment variable.');\n }\n const options = {\n apiKey,\n organization,\n project,\n webhookSecret,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n }\n this.baseURL = options.baseURL;\n this.timeout = options.timeout ?? _a.DEFAULT_TIMEOUT /* 10 minutes */;\n this.logger = options.logger ?? console;\n const defaultLogLevel = 'warn';\n // Set default logLevel early so that we can log a warning in parseLogLevel.\n this.logLevel = defaultLogLevel;\n this.logLevel =\n parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??\n parseLogLevel(readEnv('OPENAI_LOG'), \"process.env['OPENAI_LOG']\", this) ??\n defaultLogLevel;\n this.fetchOptions = options.fetchOptions;\n this.maxRetries = options.maxRetries ?? 2;\n this.fetch = options.fetch ?? Shims.getDefaultFetch();\n __classPrivateFieldSet(this, _OpenAI_encoder, Opts.FallbackEncoder, \"f\");\n this._options = options;\n this.apiKey = typeof apiKey === 'string' ? apiKey : 'Missing Key';\n this.organization = organization;\n this.project = project;\n this.webhookSecret = webhookSecret;\n }\n /**\n * Create a new client instance re-using the same options given to the current client with optional overriding.\n */\n withOptions(options) {\n const client = new this.constructor({\n ...this._options,\n baseURL: this.baseURL,\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n logger: this.logger,\n logLevel: this.logLevel,\n fetch: this.fetch,\n fetchOptions: this.fetchOptions,\n apiKey: this.apiKey,\n organization: this.organization,\n project: this.project,\n webhookSecret: this.webhookSecret,\n ...options,\n });\n return client;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n validateHeaders({ values, nulls }) {\n return;\n }\n async authHeaders(opts) {\n return buildHeaders([{ Authorization: `Bearer ${this.apiKey}` }]);\n }\n stringifyQuery(query) {\n return stringifyQuery(query);\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n makeStatusError(status, error, message, headers) {\n return Errors.APIError.generate(status, error, message, headers);\n }\n async _callApiKey() {\n const apiKey = this._options.apiKey;\n if (typeof apiKey !== 'function')\n return false;\n let token;\n try {\n token = await apiKey();\n }\n catch (err) {\n if (err instanceof Errors.OpenAIError)\n throw err;\n throw new Errors.OpenAIError(`Failed to get token from 'apiKey' function: ${err.message}`, \n // @ts-ignore\n { cause: err });\n }\n if (typeof token !== 'string' || !token) {\n throw new Errors.OpenAIError(`Expected 'apiKey' function argument to return a string but it returned ${token}`);\n }\n this.apiKey = token;\n return true;\n }\n buildURL(path, query, defaultBaseURL) {\n const baseURL = (!__classPrivateFieldGet(this, _OpenAI_instances, \"m\", _OpenAI_baseURLOverridden).call(this) && defaultBaseURL) || this.baseURL;\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) {\n await this._callApiKey();\n }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then((opts) => {\n return { method, path, ...opts };\n }));\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));\n }\n async makeRequest(optionsInput, retriesRemaining, retryOfRequestLogID) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = await this.buildRequest(options, {\n retryCount: maxRetries - retriesRemaining,\n });\n await this.prepareRequest(req, { url, options });\n /** Not an API request ID, just for correlating local log entries. */\n const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');\n const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;\n const startTime = Date.now();\n loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({\n retryOfRequestLogID,\n method: options.method,\n url,\n options,\n headers: req.headers,\n }));\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n const headersTime = Date.now();\n if (response instanceof globalThis.Error) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n // detect native connection timeout errors\n // deno throws \"TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)\"\n // undici throws \"TypeError: fetch failed\" with cause \"ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)\"\n // others do not provide enough information to distinguish timeouts from other connection errors\n const isTimeout = isAbortError(response) ||\n /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));\n if (retriesRemaining) {\n loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`);\n loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }));\n return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n }\n loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`);\n loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`, formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }));\n if (isTimeout) {\n throw new Errors.APIConnectionTimeoutError();\n }\n throw new Errors.APIConnectionError({ cause: response });\n }\n const specialHeaders = [...response.headers.entries()]\n .filter(([name]) => name === 'x-request-id')\n .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))\n .join('');\n const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${response.ok ? 'succeeded' : 'failed'} with status ${response.status} in ${headersTime - startTime}ms`;\n if (!response.ok) {\n const shouldRetry = await this.shouldRetry(response);\n if (retriesRemaining && shouldRetry) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n // We don't need the body of this response.\n await Shims.CancelReadableStream(response.body);\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }));\n return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID, response.headers);\n }\n const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n const errText = await response.text().catch((err) => castToError(err).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n message: errMessage,\n durationMs: Date.now() - startTime,\n }));\n const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);\n throw err;\n }\n loggerFor(this).info(responseInfo);\n loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }));\n return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, opts && 'then' in opts ?\n opts.then((opts) => ({ method: 'get', path, ...opts }))\n : { method: 'get', path, ...opts });\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null, undefined);\n return new Pagination.PagePromise(this, request, Page);\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, method, ...options } = init || {};\n const abort = this._makeAbort(controller);\n if (signal)\n signal.addEventListener('abort', abort, { once: true });\n const timeout = setTimeout(abort, ms);\n const isReadableBody = (globalThis.ReadableStream && options.body instanceof globalThis.ReadableStream) ||\n (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);\n const fetchOptions = {\n signal: controller.signal,\n ...(isReadableBody ? { duplex: 'half' } : {}),\n method: 'GET',\n ...options,\n };\n if (method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = method.toUpperCase();\n }\n try {\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n return await this.fetch.call(undefined, url, fetchOptions);\n }\n finally {\n clearTimeout(timeout);\n }\n }\n async shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, requestLogID, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.get('retry-after');\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time, just do what it\n // says, but otherwise calculate a default\n if (timeoutMillis === undefined) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1, requestLogID);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n async buildRequest(inputOptions, { retryCount = 0 } = {}) {\n const options = { ...inputOptions };\n const { method, path, query, defaultBaseURL } = options;\n const url = this.buildURL(path, query, defaultBaseURL);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const { bodyHeaders, body } = this.buildBody({ options });\n const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });\n const req = {\n method,\n headers: reqHeaders,\n ...(options.signal && { signal: options.signal }),\n ...(globalThis.ReadableStream &&\n body instanceof globalThis.ReadableStream && { duplex: 'half' }),\n ...(body && { body }),\n ...(this.fetchOptions ?? {}),\n ...(options.fetchOptions ?? {}),\n };\n return { req, url, timeout: options.timeout };\n }\n async buildHeaders({ options, method, bodyHeaders, retryCount, }) {\n let idempotencyHeaders = {};\n if (this.idempotencyHeader && method !== 'get') {\n if (!options.idempotencyKey)\n options.idempotencyKey = this.defaultIdempotencyKey();\n idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;\n }\n const headers = buildHeaders([\n idempotencyHeaders,\n {\n Accept: 'application/json',\n 'User-Agent': this.getUserAgent(),\n 'X-Stainless-Retry-Count': String(retryCount),\n ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),\n ...getPlatformHeaders(),\n 'OpenAI-Organization': this.organization,\n 'OpenAI-Project': this.project,\n },\n await this.authHeaders(options),\n this._options.defaultHeaders,\n bodyHeaders,\n options.headers,\n ]);\n this.validateHeaders(headers);\n return headers.values;\n }\n _makeAbort(controller) {\n // note: we can't just inline this method inside `fetchWithTimeout()` because then the closure\n // would capture all request options, and cause a memory leak.\n return () => controller.abort();\n }\n buildBody({ options: { body, headers: rawHeaders } }) {\n if (!body) {\n return { bodyHeaders: undefined, body: undefined };\n }\n const headers = buildHeaders([rawHeaders]);\n if (\n // Pass raw type verbatim\n ArrayBuffer.isView(body) ||\n body instanceof ArrayBuffer ||\n body instanceof DataView ||\n (typeof body === 'string' &&\n // Preserve legacy string encoding behavior for now\n headers.values.has('content-type')) ||\n // `Blob` is superset of `File`\n (globalThis.Blob && body instanceof globalThis.Blob) ||\n // `FormData` -> `multipart/form-data`\n body instanceof FormData ||\n // `URLSearchParams` -> `application/x-www-form-urlencoded`\n body instanceof URLSearchParams ||\n // Send chunked stream (each chunk has own `length`)\n (globalThis.ReadableStream && body instanceof globalThis.ReadableStream)) {\n return { bodyHeaders: undefined, body: body };\n }\n else if (typeof body === 'object' &&\n (Symbol.asyncIterator in body ||\n (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))) {\n return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body) };\n }\n else if (typeof body === 'object' &&\n headers.values.get('content-type') === 'application/x-www-form-urlencoded') {\n return {\n bodyHeaders: { 'content-type': 'application/x-www-form-urlencoded' },\n body: this.stringifyQuery(body),\n };\n }\n else {\n return __classPrivateFieldGet(this, _OpenAI_encoder, \"f\").call(this, { body, headers });\n }\n }\n}\n_a = OpenAI, _OpenAI_encoder = new WeakMap(), _OpenAI_instances = new WeakSet(), _OpenAI_baseURLOverridden = function _OpenAI_baseURLOverridden() {\n return this.baseURL !== 'https://api.openai.com/v1';\n};\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.InvalidWebhookSignatureError = Errors.InvalidWebhookSignatureError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.Completions = Completions;\nOpenAI.Chat = Chat;\nOpenAI.Embeddings = Embeddings;\nOpenAI.Files = Files;\nOpenAI.Images = Images;\nOpenAI.Audio = Audio;\nOpenAI.Moderations = Moderations;\nOpenAI.Models = Models;\nOpenAI.FineTuning = FineTuning;\nOpenAI.Graders = Graders;\nOpenAI.VectorStores = VectorStores;\nOpenAI.Webhooks = Webhooks;\nOpenAI.Beta = Beta;\nOpenAI.Batches = Batches;\nOpenAI.Uploads = UploadsAPIUploads;\nOpenAI.Responses = Responses;\nOpenAI.Realtime = Realtime;\nOpenAI.Conversations = Conversations;\nOpenAI.Evals = Evals;\nOpenAI.Containers = Containers;\nOpenAI.Skills = Skills;\nOpenAI.Videos = Videos;\n//# sourceMappingURL=client.mjs.map","// Generic event stream class for async iteration\nexport class EventStream {\n queue = [];\n waiting = [];\n done = false;\n finalResultPromise;\n resolveFinalResult;\n isComplete;\n extractResult;\n constructor(isComplete, extractResult) {\n this.isComplete = isComplete;\n this.extractResult = extractResult;\n this.finalResultPromise = new Promise((resolve) => {\n this.resolveFinalResult = resolve;\n });\n }\n push(event) {\n if (this.done)\n return;\n if (this.isComplete(event)) {\n this.done = true;\n this.resolveFinalResult(this.extractResult(event));\n }\n // Deliver to waiting consumer or queue it\n const waiter = this.waiting.shift();\n if (waiter) {\n waiter({ value: event, done: false });\n }\n else {\n this.queue.push(event);\n }\n }\n end(result) {\n this.done = true;\n if (result !== undefined) {\n this.resolveFinalResult(result);\n }\n // Notify all waiting consumers that we're done\n while (this.waiting.length > 0) {\n const waiter = this.waiting.shift();\n waiter({ value: undefined, done: true });\n }\n }\n async *[Symbol.asyncIterator]() {\n while (true) {\n if (this.queue.length > 0) {\n yield this.queue.shift();\n }\n else if (this.done) {\n return;\n }\n else {\n const result = await new Promise((resolve) => this.waiting.push(resolve));\n if (result.done)\n return;\n yield result.value;\n }\n }\n }\n result() {\n return this.finalResultPromise;\n }\n}\nexport class AssistantMessageEventStream extends EventStream {\n constructor() {\n super((event) => event.type === \"done\" || event.type === \"error\", (event) => {\n if (event.type === \"done\") {\n return event.message;\n }\n else if (event.type === \"error\") {\n return event.error;\n }\n throw new Error(\"Unexpected event type for final result\");\n });\n }\n}\n/** Factory function for AssistantMessageEventStream (for use in extensions) */\nexport function createAssistantMessageEventStream() {\n return new AssistantMessageEventStream();\n}\n//# sourceMappingURL=event-stream.js.map","import { lazyStream } from \"./api/lazy.js\";\nimport { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.js\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.js\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.js\";\nimport { InMemoryModelsStore } from \"./models-store.js\";\nimport { operationSignal, raceWithAbortSignal } from \"./utils/abort.js\";\nexport { ModelsError } from \"./auth/resolve.js\";\nfunction mergeHeaders(base, override) {\n if (!base && !override)\n return undefined;\n const merged = { ...base };\n for (const [name, value] of Object.entries(override ?? {})) {\n const lowerName = name.toLowerCase();\n for (const existingName of Object.keys(merged)) {\n if (existingName.toLowerCase() === lowerName)\n delete merged[existingName];\n }\n merged[name] = value;\n }\n return merged;\n}\nclass ModelsImpl {\n providers = new Map();\n credentials;\n modelsStore;\n authContext;\n refreshGenerations = new Map();\n refreshControllers = new Map();\n publicationChains = new Map();\n constructor(options) {\n this.credentials = options?.credentials ?? new InMemoryCredentialStore();\n this.modelsStore = options?.modelsStore ?? new InMemoryModelsStore();\n this.authContext = options?.authContext ?? defaultAuthContext();\n }\n setProvider(provider) {\n this.supersedeProviderRefresh(provider.id);\n this.providers.set(provider.id, provider);\n }\n deleteProvider(id) {\n this.supersedeProviderRefresh(id);\n this.providers.delete(id);\n }\n clearProviders() {\n for (const id of new Set([...this.providers.keys(), ...this.refreshControllers.keys()])) {\n this.supersedeProviderRefresh(id);\n }\n this.providers.clear();\n }\n getProviders() {\n return Array.from(this.providers.values());\n }\n getProvider(id) {\n return this.providers.get(id);\n }\n getModels(provider) {\n if (provider !== undefined) {\n const entry = this.providers.get(provider);\n if (!entry)\n return [];\n try {\n return entry.getModels();\n }\n catch {\n return [];\n }\n }\n const models = [];\n for (const entry of this.providers.values()) {\n try {\n models.push(...entry.getModels());\n }\n catch {\n // Best-effort: ill-behaved providers yield no models.\n }\n }\n return models;\n }\n getModel(provider, id) {\n return this.getModels(provider).find((model) => model.id === id);\n }\n supersedeProviderRefresh(providerId) {\n const generation = (this.refreshGenerations.get(providerId) ?? 0) + 1;\n this.refreshGenerations.set(providerId, generation);\n const previous = this.refreshControllers.get(providerId);\n if (previous) {\n this.refreshControllers.delete(providerId);\n previous.abort();\n }\n return generation;\n }\n beginProviderRefresh(providerId) {\n const generation = this.supersedeProviderRefresh(providerId);\n const controller = new AbortController();\n this.refreshControllers.set(providerId, controller);\n return { generation, controller };\n }\n publishProviderModels(providerId, generation, signal, publication) {\n const previous = this.publicationChains.get(providerId) ?? Promise.resolve();\n const queued = (async () => {\n await previous.catch(() => { });\n if (signal.aborted || this.refreshGenerations.get(providerId) !== generation)\n return false;\n if (publication.persist === null) {\n await this.modelsStore.delete(providerId, { signal });\n }\n else if (publication.persist !== undefined) {\n await this.modelsStore.write(providerId, structuredClone(publication.persist), { signal });\n }\n if (signal.aborted || this.refreshGenerations.get(providerId) !== generation)\n return false;\n publication.update?.();\n return true;\n })();\n const tail = queued.catch(() => { });\n this.publicationChains.set(providerId, tail);\n void tail.then(() => {\n if (this.publicationChains.get(providerId) === tail)\n this.publicationChains.delete(providerId);\n });\n return raceWithAbortSignal(queued, signal);\n }\n async runProviderRefreshPhase(provider, credential, allowNetwork, force, generation, signal) {\n const stored = await this.modelsStore.read(provider.id, { signal });\n await provider.refreshModels({\n credential,\n stored: stored ? structuredClone(stored) : undefined,\n publish: (publication) => this.publishProviderModels(provider.id, generation, signal, publication),\n allowNetwork,\n force: allowNetwork ? force : undefined,\n signal,\n });\n }\n async refresh(options = {}) {\n const allowNetwork = options.allowNetwork ?? true;\n const callerSignal = operationSignal(options.signal);\n const errors = new Map();\n if (callerSignal.aborted)\n return { aborted: true, errors };\n const selected = options.providers ? new Set(options.providers) : undefined;\n const refreshable = Array.from(this.providers.values()).filter((provider) => provider.refreshModels !== undefined && (!selected || selected.has(provider.id)));\n const refresh = Promise.all(refreshable.map(async (provider) => {\n const { generation, controller } = this.beginProviderRefresh(provider.id);\n const signal = AbortSignal.any([callerSignal, controller.signal]);\n const operation = (async () => {\n let storedCredential;\n let credentialError;\n try {\n storedCredential = await this.readCredential(provider.id, signal);\n }\n catch (error) {\n credentialError = error;\n }\n // Restore cached provider state before auth resolution or network access.\n await this.runProviderRefreshPhase(provider, storedCredential, false, undefined, generation, signal);\n if (credentialError !== undefined)\n throw credentialError;\n if (!allowNetwork || signal.aborted)\n return;\n const credential = await this.resolveRefreshCredential(provider, storedCredential, signal);\n if (!credential)\n return;\n await this.runProviderRefreshPhase(provider, credential, true, options.force, generation, signal);\n })();\n try {\n await raceWithAbortSignal(operation, signal);\n }\n catch (error) {\n if (!signal.aborted) {\n errors.set(provider.id, error instanceof Error\n ? error\n : new ModelsError(\"model_source\", `Model refresh failed for ${provider.id}`, { cause: error }));\n }\n }\n finally {\n if (this.refreshControllers.get(provider.id) === controller) {\n this.refreshControllers.delete(provider.id);\n }\n }\n }));\n try {\n await raceWithAbortSignal(refresh, callerSignal);\n }\n catch (error) {\n if (!callerSignal.aborted)\n throw error;\n }\n return { aborted: callerSignal.aborted, errors: new Map(errors) };\n }\n async resolveRefreshCredential(provider, stored, signal) {\n if (stored?.type === \"oauth\") {\n const oauth = provider.auth.oauth;\n if (!oauth)\n return undefined;\n if (Date.now() < stored.expires)\n return stored;\n if (signal.aborted)\n return undefined;\n const post = await this.credentials.modify(provider.id, async (current) => {\n if (current?.type !== \"oauth\" || Date.now() < current.expires)\n return undefined;\n return oauth.refresh(current, signal);\n }, { signal });\n return post?.type === \"oauth\" ? post : undefined;\n }\n const apiKey = provider.auth.apiKey;\n if (!apiKey)\n return undefined;\n const credential = stored?.type === \"api_key\" ? stored : undefined;\n const result = await apiKey.resolve({ ctx: this.authContext, credential, signal });\n if (!result)\n return undefined;\n return { type: \"api_key\", key: result.auth.apiKey, env: result.env };\n }\n async readCredential(providerId, signal) {\n try {\n return await this.credentials.read(providerId, { signal });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n }\n }\n async checkProviderAuth(provider, credential, signal) {\n if (credential?.type === \"oauth\") {\n return provider.auth.oauth ? { source: \"OAuth\", type: \"oauth\" } : undefined;\n }\n const apiKey = provider.auth.apiKey;\n if (!apiKey)\n return undefined;\n if (apiKey.check) {\n try {\n return await apiKey.check({\n ctx: this.authContext,\n credential: credential?.type === \"api_key\" ? credential : undefined,\n signal,\n });\n }\n catch (error) {\n throw new ModelsError(\"auth\", `API key auth check failed for provider ${provider.id}`, { cause: error });\n }\n }\n const resolution = await resolveProviderAuth(provider, this.credentials, this.authContext, { signal });\n return resolution ? { source: resolution.source, type: \"api_key\" } : undefined;\n }\n checkAuth(providerId, options) {\n const signal = operationSignal(options?.signal);\n const check = (async () => {\n signal.throwIfAborted();\n const provider = this.providers.get(providerId);\n if (!provider)\n return undefined;\n return this.checkProviderAuth(provider, await this.readCredential(providerId, signal), signal);\n })();\n return raceWithAbortSignal(check, signal);\n }\n getAvailable(providerId, options) {\n const signal = operationSignal(options?.signal);\n const available = (async () => {\n signal.throwIfAborted();\n const providers = providerId\n ? [this.providers.get(providerId)].filter((entry) => entry !== undefined)\n : this.getProviders();\n const checks = await Promise.all(providers.map(async (provider) => {\n const credential = await this.readCredential(provider.id, signal);\n return { provider, credential, auth: await this.checkProviderAuth(provider, credential, signal) };\n }));\n return checks.flatMap(({ provider, credential, auth }) => {\n if (!auth)\n return [];\n const models = provider.getModels();\n return provider.filterModels?.(models, credential) ?? models;\n });\n })();\n return raceWithAbortSignal(available, signal);\n }\n async getAuth(providerOrModel, overrides) {\n const signal = operationSignal(overrides?.signal);\n const providerId = typeof providerOrModel === \"string\" ? providerOrModel : providerOrModel.provider;\n const provider = this.providers.get(providerId);\n if (!provider)\n return undefined;\n const result = await resolveProviderAuth(provider, this.credentials, this.authContext, { ...overrides, signal });\n if (!result || typeof providerOrModel === \"string\" || !providerOrModel.headers)\n return result;\n return {\n ...result,\n auth: {\n ...result.auth,\n headers: mergeHeaders(result.auth.headers, providerOrModel.headers),\n },\n };\n }\n async login(providerId, type, interaction) {\n const signal = operationSignal(interaction.signal);\n signal.throwIfAborted();\n const provider = this.providers.get(providerId);\n if (!provider)\n throw new ModelsError(\"provider\", `Unknown provider: ${providerId}`);\n const method = type === \"oauth\" ? provider.auth.oauth : provider.auth.apiKey;\n if (!method?.login) {\n throw new ModelsError(\"auth\", `${provider.name} does not support ${type} login`);\n }\n const loginOperation = method.login({ ...interaction, signal });\n const credential = await raceWithAbortSignal(loginOperation, signal);\n let mutationStarted = false;\n let markMutationStarted;\n const started = new Promise((resolve) => {\n markMutationStarted = resolve;\n });\n const mutation = this.credentials.modify(providerId, async () => {\n mutationStarted = true;\n markMutationStarted?.();\n return credential;\n }, { signal });\n void mutation.catch(() => { });\n try {\n await new Promise((resolve, reject) => {\n const onAbort = () => {\n if (!mutationStarted)\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n void Promise.race([started, mutation]).then(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, (error) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n });\n if (signal.aborted)\n onAbort();\n });\n await mutation;\n }\n catch (error) {\n signal.throwIfAborted();\n throw new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n }\n return credential;\n }\n async logout(providerId, options) {\n const signal = operationSignal(options?.signal);\n signal.throwIfAborted();\n try {\n await this.credentials.delete(providerId, { signal });\n }\n catch (error) {\n signal.throwIfAborted();\n throw new ModelsError(\"auth\", `Credential store delete failed for ${providerId}`, { cause: error });\n }\n }\n requireProvider(model) {\n const provider = this.providers.get(model.provider);\n if (!provider) {\n throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n }\n return provider;\n }\n async applyAuth(model, options) {\n this.requireProvider(model);\n const resolution = await this.getAuth(model, {\n apiKey: options?.apiKey,\n env: options?.env,\n signal: options?.signal,\n });\n if (!resolution) {\n throw new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n }\n const auth = resolution.auth;\n // Explicit request options win per-field; the Models-only transform runs last.\n const apiKey = options?.apiKey ?? auth.apiKey;\n let headers = mergeHeaders(auth.headers, options?.headers);\n if (options?.transformHeaders)\n headers = await options.transformHeaders(headers ?? {});\n const env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n const requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n const { transformHeaders: _transformHeaders, ...providerOptions } = options ?? {};\n const requestOptions = { ...providerOptions, apiKey, headers, env };\n return { requestModel, requestOptions };\n }\n stream(model, context, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.stream(requestModel, context, requestOptions);\n });\n }\n async complete(model, context, options) {\n return this.stream(model, context, options).result();\n }\n streamSimple(model, context, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.streamSimple(requestModel, context, requestOptions);\n });\n }\n async completeSimple(model, context, options) {\n return this.streamSimple(model, context, options).result();\n }\n async fetchDeferred(model, handle, options) {\n return lazyStream(model, async () => {\n const provider = this.requireProvider(model);\n if (!provider.fetchDeferred) {\n throw new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n }\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n return provider.fetchDeferred(requestModel, handle, requestOptions);\n }).result();\n }\n async cancelDeferred(model, handle, options) {\n const provider = this.requireProvider(model);\n if (!provider.cancelDeferred) {\n throw new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n }\n const { requestModel, requestOptions } = await this.applyAuth(model, options);\n await provider.cancelDeferred(requestModel, handle, requestOptions);\n }\n}\nexport function createModels(options) {\n return new ModelsImpl(options);\n}\n/**\n * Builds a provider from parts. Built-in provider factories and models.json\n * custom providers both go through this. A single `api` streams all models;\n * an `api` map dispatches on `model.api`, and a model whose api has no entry\n * produces a stream error.\n */\nexport function createProvider(input) {\n const baselineModels = input.models;\n let dynamicModels = [];\n const fetchModels = input.fetchModels;\n const currentModels = () => {\n const merged = [...baselineModels];\n for (const model of dynamicModels) {\n const index = merged.findIndex((entry) => entry.id === model.id);\n if (index >= 0)\n merged[index] = model;\n else\n merged.push(model);\n }\n return merged;\n };\n const single = typeof input.api.stream === \"function\" ? input.api : undefined;\n const byApi = single ? undefined : input.api;\n const apiFor = (model) => single ?? byApi?.[model.api];\n const dispatch = (model, run) => {\n const streams = apiFor(model);\n if (!streams) {\n return lazyStream(model, async () => {\n throw new ModelsError(\"stream\", `Provider ${input.id} has no API implementation for \"${model.api}\"`);\n });\n }\n return run(streams);\n };\n const provider = {\n id: input.id,\n name: input.name ?? input.id,\n baseUrl: input.baseUrl,\n headers: input.headers,\n auth: input.auth,\n getModels: currentModels,\n refreshModels: fetchModels\n ? async (context) => {\n if (context.stored) {\n const restored = context.stored.models\n .filter((model) => model.provider === input.id)\n .map((model) => model);\n if (!(await context.publish({\n update: () => {\n dynamicModels = restored;\n },\n }))) {\n return;\n }\n }\n if (!context.allowNetwork || context.signal.aborted)\n return;\n const refreshed = await fetchModels(context);\n if (context.signal.aborted)\n return;\n await context.publish({\n persist: { models: refreshed, checkedAt: Date.now() },\n update: () => {\n dynamicModels = refreshed;\n },\n });\n }\n : undefined,\n filterModels: input.filterModels,\n stream: (model, context, options) => dispatch(model, (streams) => streams.stream(model, context, options)),\n streamSimple: (model, context, options) => dispatch(model, (streams) => streams.streamSimple(model, context, options)),\n };\n const streams = single ? [single] : Object.values(byApi ?? {}).filter((entry) => entry !== undefined);\n if (streams.some((entry) => entry.fetchDeferred !== undefined)) {\n provider.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {\n const implementation = apiFor(model);\n if (!implementation?.fetchDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} does not support deferred responses for \"${model.api}\"`);\n }\n return implementation.fetchDeferred(model, handle, options);\n });\n }\n if (streams.some((entry) => entry.cancelDeferred !== undefined)) {\n provider.cancelDeferred = async (model, handle, options) => {\n const implementation = apiFor(model);\n if (!implementation?.cancelDeferred) {\n throw new ModelsError(\"provider\", `Provider ${input.id} cannot cancel deferred responses for \"${model.api}\"`);\n }\n await implementation.cancelDeferred(model, handle, options);\n };\n }\n return provider;\n}\n/**\n * Runtime-checked narrowing for dynamically looked-up models:\n *\n * ```ts\n * const model = models.getModel(\"anthropic\", \"claude-opus-4-7\");\n * if (model && hasApi(model, \"anthropic-messages\")) {\n * // model: Model<\"anthropic-messages\">, stream options fully typed\n * }\n * ```\n */\nexport function hasApi(model, api) {\n return model.api === api;\n}\nexport function calculateCost(model, usage) {\n const inputTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n let rates = model.cost;\n let matchedThreshold = -1;\n for (const tier of model.cost.tiers ?? []) {\n if (inputTokens > tier.inputTokensAbove && tier.inputTokensAbove > matchedThreshold) {\n rates = tier;\n matchedThreshold = tier.inputTokensAbove;\n }\n }\n // Anthropic charges 2x base input for 1h cache writes.\n const longWrite = usage.cacheWrite1h ?? 0;\n const shortWrite = usage.cacheWrite - longWrite;\n usage.cost.input = (rates.input / 1000000) * usage.input;\n usage.cost.output = (rates.output / 1000000) * usage.output;\n usage.cost.cacheRead = (rates.cacheRead / 1000000) * usage.cacheRead;\n usage.cost.cacheWrite = (rates.cacheWrite * shortWrite + rates.input * 2 * longWrite) / 1000000;\n usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n return usage.cost;\n}\nconst EXTENDED_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\nexport function getSupportedThinkingLevels(model) {\n if (!model.reasoning)\n return [\"off\"];\n return EXTENDED_THINKING_LEVELS.filter((level) => {\n const mapped = model.thinkingLevelMap?.[level];\n if (mapped === null)\n return false;\n if (level === \"xhigh\" || level === \"max\")\n return mapped !== undefined;\n return true;\n });\n}\nexport function clampThinkingLevel(model, level) {\n const availableLevels = getSupportedThinkingLevels(model);\n if (availableLevels.includes(level))\n return level;\n const requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n if (requestedIndex === -1)\n return availableLevels[0] ?? \"off\";\n for (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n const candidate = EXTENDED_THINKING_LEVELS[i];\n if (availableLevels.includes(candidate))\n return candidate;\n }\n for (let i = requestedIndex - 1; i >= 0; i--) {\n const candidate = EXTENDED_THINKING_LEVELS[i];\n if (availableLevels.includes(candidate))\n return candidate;\n }\n return availableLevels[0] ?? \"off\";\n}\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual(a, b) {\n if (!a || !b)\n return false;\n return a.id === b.id && a.provider === b.provider;\n}\n//# sourceMappingURL=models.js.map","const identityToolName = (name) => name;\n/** Split current tools into prefix and transcript-loaded definitions. */\nexport function splitDeferredTools(context, enabled, normalizeName = identityToolName) {\n const uniqueTools = new Map();\n for (const tool of context.tools ?? [])\n uniqueTools.set(normalizeName(tool.name), tool);\n if (!enabled)\n return { immediate: [...uniqueTools.values()], deferred: new Map() };\n const deferredNames = new Set();\n const usedNames = new Set();\n for (const message of context.messages) {\n if (message.role === \"assistant\") {\n for (const block of message.content) {\n if (block.type === \"toolCall\")\n usedNames.add(normalizeName(block.name));\n }\n }\n else if (message.role === \"toolResult\") {\n for (const name of message.addedToolNames ?? []) {\n const normalizedName = normalizeName(name);\n if (!usedNames.has(normalizedName))\n deferredNames.add(normalizedName);\n }\n }\n }\n const immediate = [];\n const deferred = new Map();\n for (const [name, tool] of uniqueTools) {\n if (deferredNames.has(name))\n deferred.set(name, tool);\n else\n immediate.push(tool);\n }\n return { immediate, deferred };\n}\n//# sourceMappingURL=deferred-tools.js.map","// Shared normalization for provider HTTP error objects.\n//\n// Endpoints behind a proxy / gateway may return a non-2xx response whose body\n// the provider SDK cannot fold into `error.message`. The SDK error object still\n// carries the HTTP status and the raw/parsed body, but under SDK-specific field\n// names. Provider catch blocks that read only `error.message` therefore drop\n// the body and surface opaque messages like `\"403 status code (no body)\"` or\n// collapse to `\"Unknown: UnknownError\"`.\n//\n// `normalizeProviderError` probes the known SDK field shapes (Mistral,\n// `openai`, `@google/genai`, AWS Bedrock) and returns a struct each provider\n// composes into its display string. The `messageCarriesBody` flag captures the\n// Anthropic / `@google/genai` happy path where the SDK already folded the body\n// into the message, so providers can preserve it without double-printing.\nexport const MAX_PROVIDER_ERROR_BODY_CHARS = 4000;\nexport function normalizeProviderError(error) {\n if (!(error instanceof Error)) {\n return { message: safeJsonStringify(error), messageCarriesBody: false };\n }\n const sdkError = error;\n const status = extractStatus(sdkError);\n const body = extractBody(sdkError);\n const messageCarriesBody = body === undefined || error.message.includes(body);\n return {\n status,\n body,\n message: error.message,\n messageCarriesBody,\n };\n}\n/**\n * Probe the HTTP status, first numeric hit wins, in SDK-field order:\n * `statusCode` (Mistral) → `status` (`openai`, `@google/genai`) →\n * `$metadata.httpStatusCode` (Bedrock) → `$response.statusCode` (Bedrock).\n */\nfunction extractStatus(error) {\n if (typeof error.statusCode === \"number\")\n return error.statusCode;\n if (typeof error.status === \"number\")\n return error.status;\n if (typeof error.$metadata?.httpStatusCode === \"number\")\n return error.$metadata.httpStatusCode;\n if (typeof error.$response?.statusCode === \"number\")\n return error.$response.statusCode;\n return undefined;\n}\n/**\n * Probe the raw body reason, first usable hit wins, in SDK-field order:\n * `body` string (Mistral) → `error` parsed JSON body object (`openai` SDK's\n * `this.error`) → `$response.body` (Bedrock). Empty objects and unread response\n * streams are treated as no body so they do not surface as `\"{}\"` or serialized\n * stream internals. The chosen body is truncated to the cap.\n */\nfunction extractBody(error) {\n const bodyText = pickBodyText(error);\n if (bodyText === undefined)\n return undefined;\n const trimmed = bodyText.trim();\n if (trimmed.length === 0)\n return undefined;\n return truncateErrorText(trimmed, MAX_PROVIDER_ERROR_BODY_CHARS);\n}\nfunction pickBodyText(error) {\n if (typeof error.body === \"string\")\n return error.body;\n if (isPlainNonEmptyObject(error.error))\n return safeJsonStringify(error.error);\n const responseBody = error.$response?.body;\n if (typeof responseBody === \"string\")\n return responseBody;\n if (isReadableStreamLike(responseBody))\n return undefined;\n if (isPlainNonEmptyObject(responseBody))\n return safeJsonStringify(responseBody);\n return undefined;\n}\nfunction isReadableStreamLike(value) {\n return typeof value === \"object\" && value !== null && \"pipe\" in value && typeof value.pipe === \"function\";\n}\n/**\n * Only a PLAIN object counts as an HTTP body. SDK error fields can hold class\n * instances instead of parsed bodies — AWS SDK v3's `$response.body` is an\n * HTTP stream/response wrapper object, and stringifying one produced garbage\n * like `{\"_events\":...}` as the \"body\", which then REPLACED `error.message`\n * in the composed display string. `error.message` is where the SDK puts the\n * real deserialized exception text (\"Input is too long...\", schema validation\n * details, ...), so the one useful string was discarded for noise. A class\n * instance yields no body, `messageCarriesBody` stays true, and the real\n * message survives. Complements the `pipe` sniffing above: web\n * ReadableStreams (pipeTo/pipeThrough, no `pipe`) and non-stream SDK wrapper\n * classes fail the prototype check, while parsed JSON bodies (plain objects\n * by construction) still pass.\n */\nfunction isPlainNonEmptyObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto !== Object.prototype && proto !== null)\n return false;\n return Object.keys(value).length > 0;\n}\n/**\n * Compose a display string from a normalized error. When the message already\n * carries the body (Anthropic / `@google/genai` happy path) or no body/status\n * was extracted, the message is returned unchanged. Otherwise the status and\n * body are surfaced, with an optional provider prefix.\n *\n * - no prefix: `\"<status>: <body>\"`\n * - prefix: `\"<prefix> (<status>): <body>\"`\n */\nexport function formatProviderError(norm, prefix) {\n if (norm.messageCarriesBody || norm.status === undefined || norm.body === undefined) {\n return prefix !== undefined && norm.status !== undefined\n ? `${prefix} (${norm.status}): ${norm.message}`\n : norm.message;\n }\n return prefix !== undefined ? `${prefix} (${norm.status}): ${norm.body}` : `${norm.status}: ${norm.body}`;\n}\nexport function truncateErrorText(text, maxChars) {\n if (text.length <= maxChars)\n return text;\n return `${text.slice(0, maxChars)}... [truncated ${text.length - maxChars} chars]`;\n}\nexport function safeJsonStringify(value) {\n try {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? String(value) : serialized;\n }\n catch {\n return String(value);\n }\n}\n//# sourceMappingURL=error-body.js.map","export function headersToRecord(headers) {\n const result = {};\n for (const [key, value] of headers.entries()) {\n result[key] = value;\n }\n return result;\n}\nexport function providerHeadersToRecord(headers) {\n if (!headers)\n return undefined;\n const result = {};\n for (const [key, value] of Object.entries(headers)) {\n if (value !== null)\n result[key] = value;\n }\n return Object.keys(result).length > 0 ? result : undefined;\n}\n//# sourceMappingURL=headers.js.map","let procEnvCache = null;\n/**\n * Fallback for https://github.com/oven-sh/bun/issues/27802.\n * Bun compiled binaries can expose an empty process.env inside Linux sandboxes\n * even though /proc/self/environ contains the environment.\n *\n * This intentionally duplicates restoreSandboxEnv() in\n * packages/coding-agent/src/bun/restore-sandbox-env.ts. The ai package can be\n * used directly, without going through that entrypoint, so provider env lookup\n * must not depend on process.env having been patched.\n */\nfunction getBunSandboxEnvValue(name) {\n if (typeof process === \"undefined\" || !process.versions?.bun || Object.keys(process.env).length > 0) {\n return undefined;\n }\n if (procEnvCache === null) {\n procEnvCache = new Map();\n try {\n const { readFileSync } = require(\"node:fs\");\n const data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n for (const entry of data.split(\"\\0\")) {\n const idx = entry.indexOf(\"=\");\n if (idx > 0) {\n procEnvCache.set(entry.slice(0, idx), entry.slice(idx + 1));\n }\n }\n }\n catch {\n // /proc/self/environ may not exist or may not be readable.\n }\n }\n return procEnvCache.get(name);\n}\n/**\n * Resolve a provider env value from scoped overrides, normal process.env, then\n * the duplicated Bun sandbox fallback for direct pi-ai consumers.\n */\nexport function getProviderEnvValue(name, env) {\n return (env?.[name] ||\n (typeof process !== \"undefined\" ? process.env[name] : undefined) ||\n getBunSandboxEnvValue(name) ||\n undefined);\n}\n//# sourceMappingURL=provider-env.js.map","const DEFAULT_MAX_RETRY_DELAY_MS = 60_000;\nfunction isProviderError(error) {\n if (!(error instanceof Error) || !(\"status\" in error) || !(\"headers\" in error))\n return false;\n return ((error.status === undefined || typeof error.status === \"number\") &&\n (error.headers === undefined || error.headers instanceof Headers));\n}\n/** Mirrors the pinned OpenAI/Anthropic SDK retry policy; review when either SDK is upgraded. */\nfunction isRetryableProviderError(error) {\n const shouldRetry = error.headers?.get(\"x-should-retry\");\n if (shouldRetry === \"true\")\n return true;\n if (shouldRetry === \"false\")\n return false;\n if (error.status === undefined)\n return true;\n return (error.status === 408 ||\n error.status === 409 ||\n error.status === 429 ||\n (typeof error.status === \"number\" && error.status >= 500));\n}\nfunction validateServerRetryDelayMs(delayMs, maxRetryDelayMs, providerErrorMessage) {\n const maxDelayMs = maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS;\n if (maxDelayMs > 0 && delayMs > maxDelayMs) {\n throw new Error(`Server requested ${Math.ceil(delayMs / 1000)}s retry delay (max: ${Math.ceil(maxDelayMs / 1000)}s). ${providerErrorMessage}`);\n }\n return delayMs;\n}\nfunction getRetryDelayMs(error, retryIndex, maxRetryDelayMs) {\n const retryAfterMs = error.headers?.get(\"retry-after-ms\");\n if (retryAfterMs) {\n const value = Number.parseFloat(retryAfterMs);\n if (!Number.isNaN(value))\n return validateServerRetryDelayMs(value, maxRetryDelayMs, error.message);\n }\n const retryAfter = error.headers?.get(\"retry-after\");\n if (retryAfter) {\n const seconds = Number.parseFloat(retryAfter);\n const delayMs = Number.isNaN(seconds) ? Date.parse(retryAfter) - Date.now() : seconds * 1000;\n return validateServerRetryDelayMs(delayMs, maxRetryDelayMs, error.message);\n }\n const exponentialDelay = Math.min(0.5 * 2 ** retryIndex, 8) * 1000;\n return exponentialDelay * (1 - Math.random() * 0.25);\n}\nfunction createAbortError() {\n const error = new Error(\"Request aborted\");\n error.name = \"AbortError\";\n return error;\n}\nfunction abortableSleep(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(createAbortError());\n return;\n }\n const onAbort = () => {\n clearTimeout(timeout);\n reject(createAbortError());\n };\n const timeout = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, Math.max(0, ms));\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n/**\n * Reproduce the retry behavior used by the OpenAI and Anthropic SDKs while making\n * their backoff sleep interruptible. Their built-in retry timers ignore the\n * request AbortSignal, so callers must invoke the SDK with `maxRetries: 0` and\n * wrap the request with this helper. Provider-requested delays above\n * `maxRetryDelayMs` fail immediately (60 seconds by default); set it to zero to\n * disable the limit.\n */\nexport async function retryProviderRequest(request, options = {}) {\n const maxRetries = options.maxRetries ?? 0;\n let retriesRemaining = maxRetries;\n for (;;) {\n try {\n // Each retry is a fresh SDK request, so X-Stainless-Retry-Count remains zero.\n return await request();\n }\n catch (error) {\n if (options.signal?.aborted)\n throw createAbortError();\n if (retriesRemaining <= 0 || !isProviderError(error) || !isRetryableProviderError(error))\n throw error;\n const retryIndex = maxRetries - retriesRemaining;\n retriesRemaining--;\n await abortableSleep(getRetryDelayMs(error, retryIndex, options.maxRetryDelayMs), options.signal);\n }\n }\n}\n//# sourceMappingURL=provider-retry.js.map","export function getGrammarToolInput(toolName, arguments_, inputProperty) {\n const input = arguments_[inputProperty];\n if (typeof input !== \"string\") {\n throw new Error(`Grammar tool call \"${toolName}\" requires argument \"${inputProperty}\" to be a string.`);\n }\n return input;\n}\nexport function appendGrammarToolInputJsonDelta(buffer, inputProperty, nextInput, close) {\n if (buffer.closed) {\n if (close && nextInput === buffer.input)\n return undefined;\n throw new Error(`grammar tool input for property \"${inputProperty}\" changed after it was closed`);\n }\n if (!nextInput.startsWith(buffer.input)) {\n throw new Error(`grammar tool input for property \"${inputProperty}\" changed non-monotonically`);\n }\n const inputDelta = nextInput.slice(buffer.input.length);\n if (!close && inputDelta.length === 0)\n return undefined;\n let delta = \"\";\n if (!buffer.started) {\n delta += `{${JSON.stringify(inputProperty)}:\"`;\n buffer.started = true;\n }\n delta += JSON.stringify(inputDelta).slice(1, -1);\n buffer.input = nextInput;\n if (close) {\n delta += '\"}';\n buffer.closed = true;\n }\n return delta;\n}\nfunction inferGrammarInputProperty(tool) {\n const schema = tool.parameters;\n if (schema.type !== \"object\") {\n throw new Error(\"grammar constrained sampling requires an object parameter schema\");\n }\n if (!Array.isArray(schema.required) || schema.required.length !== 1 || typeof schema.required[0] !== \"string\") {\n throw new Error(\"grammar constrained sampling requires exactly one required string property\");\n }\n const inputProperty = schema.required[0];\n if (!schema.properties?.[inputProperty]) {\n throw new Error(`grammar constrained sampling requires a properties entry for ${inputProperty}`);\n }\n if (schema.properties[inputProperty]?.type !== \"string\") {\n throw new Error(`grammar constrained sampling property ${inputProperty} must have type string`);\n }\n return inputProperty;\n}\nexport function resolveJsonSchemaStrictSampling(tool, supportsStrictMode) {\n const config = tool.constrainedSampling;\n if (!config || config.type !== \"json_schema\") {\n return undefined;\n }\n if (supportsStrictMode) {\n return true;\n }\n if (config.strict === \"require\") {\n throw new Error(`Tool \"${tool.name}\" requires JSON-schema constrained sampling, but strict tools are unsupported.`);\n }\n return undefined;\n}\nexport function resolveGrammarConstrainedSampling(tool, supportsOpenAIGrammarTools) {\n const config = tool.constrainedSampling;\n if (!config || config.type !== \"grammar\") {\n return undefined;\n }\n if (!supportsOpenAIGrammarTools) {\n return undefined;\n }\n const larkDefinition = config.variants.openai_lark;\n const regexDefinition = config.variants.openai_regex;\n const hasLarkDefinition = typeof larkDefinition === \"string\" && larkDefinition.trim().length > 0;\n const hasRegexDefinition = typeof regexDefinition === \"string\" && regexDefinition.trim().length > 0;\n if (!hasLarkDefinition && !hasRegexDefinition) {\n throw new Error(`Tool \"${tool.name}\" cannot use grammar constrained sampling: no supported grammar variant was provided.`);\n }\n try {\n return {\n format: hasLarkDefinition ? \"lark\" : \"regex\",\n definition: hasLarkDefinition ? larkDefinition : regexDefinition,\n inputProperty: inferGrammarInputProperty(tool),\n };\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Tool \"${tool.name}\" cannot use grammar constrained sampling: ${message}.`);\n }\n}\nexport function createGrammarToolInputProperties(tools, supportsOpenAIGrammarTools) {\n const properties = new Map();\n for (const tool of tools ?? []) {\n const grammar = resolveGrammarConstrainedSampling(tool, supportsOpenAIGrammarTools);\n if (grammar) {\n properties.set(tool.name, grammar.inputProperty);\n }\n }\n return properties;\n}\n//# sourceMappingURL=constrained-sampling.js.map","// Copilot expects X-Initiator to indicate whether the request is user-initiated\n// or agent-initiated (e.g. follow-up after assistant/tool messages).\nexport function inferCopilotInitiator(messages) {\n const last = messages[messages.length - 1];\n return last && last.role !== \"user\" ? \"agent\" : \"user\";\n}\n// Copilot requires Copilot-Vision-Request header when sending images\nexport function hasCopilotVisionInput(messages) {\n return messages.some((msg) => {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n return msg.content.some((c) => c.type === \"image\");\n }\n if (msg.role === \"toolResult\" && Array.isArray(msg.content)) {\n return msg.content.some((c) => c.type === \"image\");\n }\n return false;\n });\n}\nexport function buildCopilotDynamicHeaders(params) {\n const headers = {\n \"X-Initiator\": inferCopilotInitiator(params.messages),\n \"Openai-Intent\": \"conversation-edits\",\n };\n if (params.hasImages) {\n headers[\"Copilot-Vision-Request\"] = \"true\";\n }\n return headers;\n}\n//# sourceMappingURL=github-copilot-headers.js.map","export const OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH = 64;\nexport function clampOpenAIPromptCacheKey(key) {\n if (key === undefined)\n return undefined;\n const chars = Array.from(key);\n if (chars.length <= OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH)\n return key;\n return chars.slice(0, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH).join(\"\");\n}\n//# sourceMappingURL=openai-prompt-cache.js.map","/** Fast deterministic hash to shorten long strings */\nexport function shortHash(str) {\n let h1 = 0xdeadbeef;\n let h2 = 0x41c6ce57;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (h2 >>> 0).toString(36) + (h1 >>> 0).toString(36);\n}\n//# sourceMappingURL=hash.js.map","\"use strict\";\n/**\n * Sometimes you don't allow every type to be partially parsed.\n * For example, you may not want a partial number because it may increase its size gradually before it's complete.\n * In this case, you can use the `Allow` object to control what types you allow to be partially parsed.\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.ALL = exports.COLLECTION = exports.ATOM = exports.SPECIAL = exports.INF = exports._INFINITY = exports.INFINITY = exports.NAN = exports.BOOL = exports.NULL = exports.OBJ = exports.ARR = exports.NUM = exports.STR = void 0;\n/**\n * allow partial strings like `\"hello \\u12` to be parsed as `\"hello \"`\n */\nexports.STR = 0b000000001;\n/**\n * allow partial numbers like `123.` to be parsed as `123`\n */\nexports.NUM = 0b000000010;\n/**\n * allow partial arrays like `[1, 2,` to be parsed as `[1, 2]`\n */\nexports.ARR = 0b000000100;\n/**\n * allow partial objects like `{\"a\": 1, \"b\":` to be parsed as `{\"a\": 1}`\n */\nexports.OBJ = 0b000001000;\n/**\n * allow `nu` to be parsed as `null`\n */\nexports.NULL = 0b000010000;\n/**\n * allow `tr` to be parsed as `true`, and `fa` to be parsed as `false`\n */\nexports.BOOL = 0b000100000;\n/**\n * allow `Na` to be parsed as `NaN`\n */\nexports.NAN = 0b001000000;\n/**\n * allow `Inf` to be parsed as `Infinity`\n */\nexports.INFINITY = 0b010000000;\n/**\n * allow `-Inf` to be parsed as `-Infinity`\n */\nexports._INFINITY = 0b100000000;\nexports.INF = exports.INFINITY | exports._INFINITY;\nexports.SPECIAL = exports.NULL | exports.BOOL | exports.INF | exports.NAN;\nexports.ATOM = exports.STR | exports.NUM | exports.SPECIAL;\nexports.COLLECTION = exports.ARR | exports.OBJ;\nexports.ALL = exports.ATOM | exports.COLLECTION;\n/**\n * Control what types you allow to be partially parsed.\n * The default is to allow all types to be partially parsed, which in most casees is the best option.\n * @example\n * If you don't want to allow partial objects, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, Allow.ARR); // [ { a: 1, b: 2 } ]\n * ```\n * Or you can use `~` to disallow a type:\n * ```ts\n * parse(`[{\"a\": 1, \"b\": 2}, {\"a\": 3,`, ~Allow.OBJ); // [ { a: 1, b: 2 } ]\n * ```\n * @example\n * If you don't want to allow partial strings, you can use the following code:\n * ```ts\n * import { Allow, parse } from \"partial-json\";\n * parse(`[\"complete string\", \"incompl`, ~Allow.STR); // [ 'complete string' ]\n * ```\n */\nexports.Allow = { STR: exports.STR, NUM: exports.NUM, ARR: exports.ARR, OBJ: exports.OBJ, NULL: exports.NULL, BOOL: exports.BOOL, NAN: exports.NAN, INFINITY: exports.INFINITY, _INFINITY: exports._INFINITY, INF: exports.INF, SPECIAL: exports.SPECIAL, ATOM: exports.ATOM, COLLECTION: exports.COLLECTION, ALL: exports.ALL };\nexports.default = exports.Allow;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Allow = exports.MalformedJSON = exports.PartialJSON = exports.parseJSON = exports.parse = void 0;\nconst options_1 = require(\"./options\");\nObject.defineProperty(exports, \"Allow\", { enumerable: true, get: function () { return options_1.Allow; } });\n__exportStar(require(\"./options\"), exports);\nclass PartialJSON extends Error {\n}\nexports.PartialJSON = PartialJSON;\nclass MalformedJSON extends Error {\n}\nexports.MalformedJSON = MalformedJSON;\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = options_1.Allow.ALL) {\n if (typeof jsonString !== \"string\") {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nexports.parseJSON = parseJSON;\n;\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON(\"Unexpected end of input\");\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === \"{\")\n return parseObj();\n if (jsonString[index] === \"[\")\n return parseArr();\n if (jsonString.substring(index, index + 4) === \"null\" || (options_1.Allow.NULL & allow && length - index < 4 && \"null\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === \"true\" || (options_1.Allow.BOOL & allow && length - index < 4 && \"true\".startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === \"false\" || (options_1.Allow.BOOL & allow && length - index < 5 && \"false\".startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === \"Infinity\" || (options_1.Allow.INFINITY & allow && length - index < 8 && \"Infinity\".startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === \"-Infinity\" || (options_1.Allow._INFINITY & allow && 1 < length - index && length - index < 9 && \"-Infinity\".startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === \"NaN\" || (options_1.Allow.NAN & allow && length - index < 3 && \"NaN\".startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === \"\\\\\"))) {\n escape = jsonString[index] === \"\\\\\" ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (options_1.Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"\\\\\")) + '\"');\n }\n }\n markPartialJSON(\"Unterminated string literal\");\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== \"}\") {\n skipBlank();\n if (index >= length && options_1.Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n obj[key] = value;\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === \",\")\n index++; // skip comma\n }\n }\n catch (e) {\n if (options_1.Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== \"]\") {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === \",\") {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (options_1.Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === \"-\")\n throwMalformedError(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (options_1.Allow.NUM & allow)\n try {\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) { }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === \"-\")\n index++;\n while (jsonString[index] && \",]}\".indexOf(jsonString[index]) === -1)\n index++;\n if (index == length && !(options_1.Allow.NUM & allow))\n markPartialJSON(\"Unterminated number literal\");\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === \"-\")\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf(\"e\")));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && \" \\n\\r\\t\".includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\nconst parse = parseJSON;\nexports.parse = parse;\n","import { parse as partialParse } from \"partial-json\";\nconst VALID_JSON_ESCAPES = new Set(['\"', \"\\\\\", \"/\", \"b\", \"f\", \"n\", \"r\", \"t\", \"u\"]);\nfunction isControlCharacter(char) {\n const codePoint = char.codePointAt(0);\n return codePoint !== undefined && codePoint >= 0x00 && codePoint <= 0x1f;\n}\nfunction escapeControlCharacter(char) {\n switch (char) {\n case \"\\b\":\n return \"\\\\b\";\n case \"\\f\":\n return \"\\\\f\";\n case \"\\n\":\n return \"\\\\n\";\n case \"\\r\":\n return \"\\\\r\";\n case \"\\t\":\n return \"\\\\t\";\n default:\n return `\\\\u${char.codePointAt(0)?.toString(16).padStart(4, \"0\") ?? \"0000\"}`;\n }\n}\n/**\n * Repairs malformed JSON string literals by:\n * - escaping raw control characters inside strings\n * - doubling backslashes before invalid escape characters\n */\nexport function repairJson(json) {\n let repaired = \"\";\n let inString = false;\n for (let index = 0; index < json.length; index++) {\n const char = json[index];\n if (!inString) {\n repaired += char;\n if (char === '\"') {\n inString = true;\n }\n continue;\n }\n if (char === '\"') {\n repaired += char;\n inString = false;\n continue;\n }\n if (char === \"\\\\\") {\n const nextChar = json[index + 1];\n if (nextChar === undefined) {\n repaired += \"\\\\\\\\\";\n continue;\n }\n if (nextChar === \"u\") {\n const unicodeDigits = json.slice(index + 2, index + 6);\n if (/^[0-9a-fA-F]{4}$/.test(unicodeDigits)) {\n repaired += `\\\\u${unicodeDigits}`;\n index += 5;\n continue;\n }\n }\n if (VALID_JSON_ESCAPES.has(nextChar)) {\n repaired += `\\\\${nextChar}`;\n index += 1;\n continue;\n }\n repaired += \"\\\\\\\\\";\n continue;\n }\n repaired += isControlCharacter(char) ? escapeControlCharacter(char) : char;\n }\n return repaired;\n}\nexport function parseJsonWithRepair(json) {\n try {\n return JSON.parse(json);\n }\n catch (error) {\n const repairedJson = repairJson(json);\n if (repairedJson !== json) {\n return JSON.parse(repairedJson);\n }\n throw error;\n }\n}\n/**\n * Attempts to parse potentially incomplete JSON during streaming.\n * Always returns a valid object, even if the JSON is incomplete.\n *\n * @param partialJson The partial JSON string from streaming\n * @returns Parsed object or empty object if parsing fails\n */\nexport function parseStreamingJson(partialJson) {\n if (!partialJson || partialJson.trim() === \"\") {\n return {};\n }\n try {\n return parseJsonWithRepair(partialJson);\n }\n catch {\n try {\n const result = partialParse(partialJson);\n return (result ?? {});\n }\n catch {\n try {\n const result = partialParse(repairJson(partialJson));\n return (result ?? {});\n }\n catch {\n return {};\n }\n }\n }\n}\n//# sourceMappingURL=json-parse.js.map","/**\n * Removes unpaired Unicode surrogate characters from a string.\n *\n * Unpaired surrogates (high surrogates 0xD800-0xDBFF without matching low surrogates 0xDC00-0xDFFF,\n * or vice versa) cause JSON serialization errors in many API providers.\n *\n * Valid emoji and other characters outside the Basic Multilingual Plane use properly paired\n * surrogates and will NOT be affected by this function.\n *\n * @param text - The text to sanitize\n * @returns The sanitized text with unpaired surrogates removed\n *\n * @example\n * // Valid emoji (properly paired surrogates) are preserved\n * sanitizeSurrogates(\"Hello 🙈 World\") // => \"Hello 🙈 World\"\n *\n * // Unpaired high surrogate is removed\n * const unpaired = String.fromCharCode(0xD83D); // high surrogate without low\n * sanitizeSurrogates(`Text ${unpaired} here`) // => \"Text here\"\n */\nexport function sanitizeSurrogates(text) {\n // Replace unpaired high surrogates (0xD800-0xDBFF not followed by low surrogate)\n // Replace unpaired low surrogates (0xDC00-0xDFFF not preceded by high surrogate)\n return text.replace(/[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/g, \"\");\n}\n//# sourceMappingURL=sanitize-unicode.js.map","const NON_VISION_USER_IMAGE_PLACEHOLDER = \"(image omitted: model does not support images)\";\nconst NON_VISION_TOOL_IMAGE_PLACEHOLDER = \"(tool image omitted: model does not support images)\";\nfunction replaceImagesWithPlaceholder(content, placeholder) {\n const result = [];\n let previousWasPlaceholder = false;\n for (const block of content) {\n if (block.type === \"image\") {\n if (!previousWasPlaceholder) {\n result.push({ type: \"text\", text: placeholder });\n }\n previousWasPlaceholder = true;\n continue;\n }\n result.push(block);\n previousWasPlaceholder = block.text === placeholder;\n }\n return result;\n}\nfunction downgradeUnsupportedImages(messages, model) {\n if (model.input.includes(\"image\")) {\n return messages;\n }\n return messages.map((msg) => {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n return {\n ...msg,\n content: replaceImagesWithPlaceholder(msg.content, NON_VISION_USER_IMAGE_PLACEHOLDER),\n };\n }\n if (msg.role === \"toolResult\") {\n return {\n ...msg,\n content: replaceImagesWithPlaceholder(msg.content, NON_VISION_TOOL_IMAGE_PLACEHOLDER),\n };\n }\n return msg;\n });\n}\n/**\n * Normalize tool call ID for cross-provider compatibility.\n * OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.\n * Anthropic APIs require IDs matching ^[a-zA-Z0-9_-]+$ (max 64 chars).\n */\nexport function transformMessages(messages, model, normalizeToolCallId) {\n // Build a map of original tool call IDs to normalized IDs\n const toolCallIdMap = new Map();\n // Normalize null/undefined content from untyped callers (custom tools, hand-built\n // histories, old session files) so downstream code can rely on the type contract.\n const normalizedMessages = messages.map((msg) => (msg.content == null ? { ...msg, content: [] } : msg));\n const imageAwareMessages = downgradeUnsupportedImages(normalizedMessages, model);\n // First pass: transform messages (unsupported image downgrade, thinking blocks, tool call ID normalization)\n const transformed = imageAwareMessages.map((msg) => {\n // User messages pass through unchanged\n if (msg.role === \"user\") {\n return msg;\n }\n // Handle toolResult messages - normalize toolCallId if we have a mapping\n if (msg.role === \"toolResult\") {\n const normalizedId = toolCallIdMap.get(msg.toolCallId);\n if (normalizedId && normalizedId !== msg.toolCallId) {\n return { ...msg, toolCallId: normalizedId };\n }\n return msg;\n }\n // Assistant messages need transformation check\n if (msg.role === \"assistant\") {\n const assistantMsg = msg;\n const isSameModel = assistantMsg.provider === model.provider &&\n assistantMsg.api === model.api &&\n assistantMsg.model === model.id;\n const transformedContent = assistantMsg.content.flatMap((block) => {\n if (block.type === \"thinking\") {\n // Redacted thinking is opaque encrypted content, only valid for the same model.\n // Drop it for cross-model to avoid API errors.\n if (block.redacted) {\n return isSameModel ? block : [];\n }\n // For same model: keep thinking blocks with signatures (needed for replay)\n // even if the thinking text is empty (OpenAI encrypted reasoning)\n if (isSameModel && block.thinkingSignature)\n return block;\n // Skip empty thinking blocks, convert others to plain text\n if (!block.thinking || block.thinking.trim() === \"\")\n return [];\n if (isSameModel)\n return block;\n return {\n type: \"text\",\n text: block.thinking,\n };\n }\n if (block.type === \"text\") {\n if (isSameModel)\n return block;\n return {\n type: \"text\",\n text: block.text,\n };\n }\n if (block.type === \"toolCall\") {\n const toolCall = block;\n let normalizedToolCall = toolCall;\n if (!isSameModel && toolCall.thoughtSignature) {\n normalizedToolCall = { ...toolCall };\n delete normalizedToolCall.thoughtSignature;\n }\n if (!isSameModel && normalizeToolCallId) {\n const normalizedId = normalizeToolCallId(toolCall.id, model, assistantMsg);\n if (normalizedId !== toolCall.id) {\n toolCallIdMap.set(toolCall.id, normalizedId);\n normalizedToolCall = { ...normalizedToolCall, id: normalizedId };\n }\n }\n return normalizedToolCall;\n }\n return block;\n });\n return {\n ...assistantMsg,\n content: transformedContent,\n };\n }\n return msg;\n });\n // Second pass: insert synthetic empty tool results for orphaned tool calls\n // This preserves thinking signatures and satisfies API requirements\n const result = [];\n let pendingToolCalls = [];\n let existingToolResultIds = new Set();\n const insertSyntheticToolResults = () => {\n if (pendingToolCalls.length > 0) {\n for (const tc of pendingToolCalls) {\n if (!existingToolResultIds.has(tc.id)) {\n result.push({\n role: \"toolResult\",\n toolCallId: tc.id,\n toolName: tc.name,\n content: [{ type: \"text\", text: \"No result provided\" }],\n isError: true,\n timestamp: Date.now(),\n });\n }\n }\n pendingToolCalls = [];\n existingToolResultIds = new Set();\n }\n };\n for (let i = 0; i < transformed.length; i++) {\n const msg = transformed[i];\n if (msg.role === \"assistant\") {\n // If we have pending orphaned tool calls from a previous assistant, insert synthetic results now\n insertSyntheticToolResults();\n // Skip errored/aborted assistant messages entirely.\n // These are incomplete turns that shouldn't be replayed:\n // - May have partial content (reasoning without message, incomplete tool calls)\n // - Replaying them can cause API errors (e.g., OpenAI \"reasoning without following item\")\n // - The model should retry from the last valid state\n const assistantMsg = msg;\n if (assistantMsg.stopReason === \"error\" || assistantMsg.stopReason === \"aborted\") {\n continue;\n }\n // Track tool calls from this assistant message\n const toolCalls = assistantMsg.content.filter((b) => b.type === \"toolCall\");\n if (toolCalls.length > 0) {\n pendingToolCalls = toolCalls;\n existingToolResultIds = new Set();\n }\n result.push(msg);\n }\n else if (msg.role === \"toolResult\") {\n existingToolResultIds.add(msg.toolCallId);\n result.push(msg);\n }\n else if (msg.role === \"user\") {\n // User message interrupts tool flow - insert synthetic results for orphaned calls\n insertSyntheticToolResults();\n result.push(msg);\n }\n else {\n result.push(msg);\n }\n }\n // If the conversation ends with unresolved tool calls, synthesize results now.\n insertSyntheticToolResults();\n return result;\n}\n//# sourceMappingURL=transform-messages.js.map","import { calculateCost } from \"../models.js\";\nimport { shortHash } from \"../utils/hash.js\";\nimport { parseStreamingJson } from \"../utils/json-parse.js\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.js\";\nimport { appendGrammarToolInputJsonDelta, getGrammarToolInput, resolveGrammarConstrainedSampling, resolveJsonSchemaStrictSampling, } from \"./constrained-sampling.js\";\nimport { transformMessages } from \"./transform-messages.js\";\n// =============================================================================\n// Utilities\n// =============================================================================\nfunction encodeTextSignatureV1(id, phase) {\n const payload = { v: 1, id };\n if (phase)\n payload.phase = phase;\n return JSON.stringify(payload);\n}\nfunction parseTextSignature(signature) {\n if (!signature)\n return undefined;\n if (signature.startsWith(\"{\")) {\n try {\n const parsed = JSON.parse(signature);\n if (parsed.v === 1 && typeof parsed.id === \"string\") {\n if (parsed.phase === \"commentary\" || parsed.phase === \"final_answer\") {\n return { id: parsed.id, phase: parsed.phase };\n }\n return { id: parsed.id };\n }\n }\n catch {\n // Fall through to legacy plain-string handling.\n }\n }\n return { id: signature };\n}\nfunction convertToolResultOutput(model, content) {\n const textResult = content\n .filter((c) => c.type === \"text\")\n .map((c) => c.text)\n .join(\"\\n\");\n const images = content.filter((c) => c.type === \"image\");\n const hasText = textResult.length > 0;\n if (images.length === 0 || !model.input.includes(\"image\")) {\n return sanitizeSurrogates(hasText ? textResult : images.length > 0 ? \"(see attached image)\" : \"(no tool output)\");\n }\n const output = [];\n if (hasText) {\n output.push({ type: \"input_text\", text: sanitizeSurrogates(textResult) });\n }\n for (const image of images) {\n output.push({\n type: \"input_image\",\n detail: \"auto\",\n image_url: `data:${image.mimeType};base64,${image.data}`,\n });\n }\n return output;\n}\n// =============================================================================\n// Message conversion\n// =============================================================================\nexport function convertResponsesMessages(model, context, allowedToolCallProviders, options) {\n const messages = [];\n const loadedToolNames = new Set();\n const normalizeIdPart = (part) => {\n const sanitized = part.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n const normalized = sanitized.length > 64 ? sanitized.slice(0, 64) : sanitized;\n return normalized.replace(/_+$/, \"\");\n };\n const buildForeignResponsesItemId = (itemId) => {\n const normalized = `fc_${shortHash(itemId)}`;\n return normalized.length > 64 ? normalized.slice(0, 64) : normalized;\n };\n const normalizeToolCallId = (id, _targetModel, source) => {\n if (!allowedToolCallProviders.has(model.provider))\n return normalizeIdPart(id);\n if (!id.includes(\"|\"))\n return normalizeIdPart(id);\n const [callId, itemId] = id.split(\"|\");\n const normalizedCallId = normalizeIdPart(callId);\n const isForeignToolCall = source.provider !== model.provider || source.api !== model.api;\n let normalizedItemId = isForeignToolCall ? buildForeignResponsesItemId(itemId) : normalizeIdPart(itemId);\n // OpenAI Responses API requires item id to start with \"fc\"\n if (!normalizedItemId.startsWith(\"fc_\")) {\n normalizedItemId = normalizeIdPart(`fc_${normalizedItemId}`);\n }\n return `${normalizedCallId}|${normalizedItemId}`;\n };\n const transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n const includeSystemPrompt = options?.includeSystemPrompt ?? true;\n if (includeSystemPrompt && context.systemPrompt) {\n const compat = model.compat;\n const role = model.reasoning && compat?.supportsDeveloperRole !== false ? \"developer\" : \"system\";\n messages.push({\n role,\n content: sanitizeSurrogates(context.systemPrompt),\n });\n }\n let msgIndex = 0;\n for (const msg of transformedMessages) {\n if (msg.role === \"user\") {\n if (typeof msg.content === \"string\") {\n messages.push({\n role: \"user\",\n content: [{ type: \"input_text\", text: sanitizeSurrogates(msg.content) }],\n });\n }\n else {\n const content = msg.content.map((item) => {\n if (item.type === \"text\") {\n return {\n type: \"input_text\",\n text: sanitizeSurrogates(item.text),\n };\n }\n return {\n type: \"input_image\",\n detail: \"auto\",\n image_url: `data:${item.mimeType};base64,${item.data}`,\n };\n });\n if (content.length === 0)\n continue;\n messages.push({\n role: \"user\",\n content,\n });\n }\n }\n else if (msg.role === \"assistant\") {\n const output = [];\n const assistantMsg = msg;\n const isDifferentModel = assistantMsg.model !== model.id &&\n assistantMsg.provider === model.provider &&\n assistantMsg.api === model.api;\n let textBlockIndex = 0;\n for (const block of msg.content) {\n if (block.type === \"thinking\") {\n if (block.thinkingSignature) {\n const reasoningItem = JSON.parse(block.thinkingSignature);\n output.push(reasoningItem);\n }\n }\n else if (block.type === \"text\") {\n const textBlock = block;\n const parsedSignature = parseTextSignature(textBlock.textSignature);\n const fallbackMessageId = textBlockIndex === 0 ? `msg_pi_${msgIndex}` : `msg_pi_${msgIndex}_${textBlockIndex}`;\n textBlockIndex++;\n // OpenAI requires id to be max 64 characters\n let msgId = parsedSignature?.id;\n if (!msgId) {\n msgId = fallbackMessageId;\n }\n else if (msgId.length > 64) {\n msgId = `msg_${shortHash(msgId)}`;\n }\n output.push({\n type: \"message\",\n role: \"assistant\",\n content: [{ type: \"output_text\", text: sanitizeSurrogates(textBlock.text), annotations: [] }],\n status: \"completed\",\n id: msgId,\n phase: parsedSignature?.phase,\n });\n }\n else if (block.type === \"toolCall\") {\n const toolCall = block;\n const [callId, itemIdRaw] = toolCall.id.split(\"|\");\n const customInputProperty = options?.grammarToolInputProperties?.get(toolCall.name);\n let itemId = itemIdRaw;\n // For different-model messages, set id to undefined to avoid pairing validation.\n // OpenAI tracks which fc_xxx IDs were paired with rs_xxx reasoning items.\n // By omitting the id, we avoid triggering that validation (like cross-provider does).\n // When replaying custom-tool calls as a function_call, also drop non-fc_* ids such as\n // ctc_* custom-tool ids because function_call item ids must be fc_*.\n if ((isDifferentModel && itemId?.startsWith(\"fc_\")) ||\n (customInputProperty === undefined && !itemId?.startsWith(\"fc_\"))) {\n itemId = undefined;\n }\n if (customInputProperty !== undefined) {\n output.push({\n type: \"custom_tool_call\",\n id: itemId,\n call_id: callId,\n name: toolCall.name,\n input: sanitizeSurrogates(getGrammarToolInput(toolCall.name, toolCall.arguments, customInputProperty)),\n });\n }\n else {\n output.push({\n type: \"function_call\",\n id: itemId,\n call_id: callId,\n name: toolCall.name,\n arguments: JSON.stringify(toolCall.arguments),\n });\n }\n }\n }\n if (output.length === 0)\n continue;\n messages.push(...output);\n }\n else if (msg.role === \"toolResult\") {\n const [callId] = msg.toolCallId.split(\"|\");\n const output = convertToolResultOutput(model, msg.content);\n if (options?.grammarToolInputProperties?.has(msg.toolName)) {\n messages.push({\n type: \"custom_tool_call_output\",\n call_id: callId,\n output,\n });\n }\n else {\n messages.push({\n type: \"function_call_output\",\n call_id: callId,\n output,\n });\n }\n const deferredTools = [];\n for (const name of msg.addedToolNames ?? []) {\n const tool = options?.deferredTools?.get(name);\n if (!tool || loadedToolNames.has(name))\n continue;\n loadedToolNames.add(name);\n deferredTools.push(tool);\n }\n if (deferredTools.length > 0) {\n const names = deferredTools.map((tool) => tool.name);\n const searchCallId = `pi_tool_load_${shortHash(`${msg.toolCallId}:${names.join(\",\")}`)}`;\n messages.push({\n type: \"tool_search_call\",\n call_id: searchCallId,\n execution: \"client\",\n status: \"completed\",\n arguments: { query: names.join(\" \"), limit: names.length },\n });\n messages.push({\n type: \"tool_search_output\",\n call_id: searchCallId,\n execution: \"client\",\n status: \"completed\",\n tools: convertResponsesTools(deferredTools, {\n ...options?.toolOptions,\n deferLoading: true,\n }),\n });\n }\n }\n msgIndex++;\n }\n return messages;\n}\n// =============================================================================\n// Tool conversion\n// =============================================================================\nexport function convertResponsesTools(tools, options) {\n const defaultStrict = options?.strict === undefined ? false : options.strict;\n const supportsStrictMode = options?.supportsStrictMode ?? true;\n const supportsOpenAIGrammarTools = options?.supportsOpenAIGrammarTools ?? false;\n return tools.map((tool) => {\n const grammar = resolveGrammarConstrainedSampling(tool, supportsOpenAIGrammarTools);\n if (grammar) {\n return {\n type: \"custom\",\n name: tool.name,\n description: tool.description,\n format: {\n type: \"grammar\",\n syntax: grammar.format,\n definition: grammar.definition,\n },\n ...(options?.deferLoading ? { defer_loading: true } : {}),\n };\n }\n const constrainedStrict = resolveJsonSchemaStrictSampling(tool, supportsStrictMode);\n const functionTool = {\n type: \"function\",\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters, // TypeBox already generates JSON Schema\n ...(options?.deferLoading ? { defer_loading: true } : {}),\n };\n if (supportsStrictMode) {\n functionTool.strict = constrainedStrict ?? defaultStrict;\n }\n return functionTool;\n });\n}\nfunction getCustomToolCallInput(block) {\n const property = block.customInput?.property;\n if (property === undefined)\n return \"\";\n const value = block.arguments[property];\n return typeof value === \"string\" ? value : \"\";\n}\nfunction appendCustomToolCallInput(block, nextInput, close) {\n const customInput = block.customInput;\n if (!customInput)\n return undefined;\n const delta = appendGrammarToolInputJsonDelta(customInput.jsonBuffer, customInput.property, nextInput, close);\n block.arguments = { [customInput.property]: nextInput };\n return delta;\n}\nexport async function processResponsesStream(openaiStream, output, stream, model, options) {\n let sawTerminalResponseEvent = false;\n const outputSlots = new Map();\n const reasoningBlocksById = new Map();\n const applyMessagePhaseStopReason = (item) => {\n if (item.type === \"message\" && item.phase === \"final_answer\") {\n output.stopReason = \"stop\";\n }\n };\n const getSlot = (outputIndex, type) => {\n const slot = outputSlots.get(outputIndex);\n return slot?.type === type ? slot : undefined;\n };\n const pushToolCallDelta = (slot, delta) => {\n if (delta === undefined)\n return;\n stream.push({\n type: \"toolcall_delta\",\n contentIndex: slot.contentIndex,\n delta,\n partial: output,\n });\n };\n const createSlot = (outputIndex, item) => {\n if (item.type === \"reasoning\") {\n const block = { type: \"thinking\", thinking: \"\" };\n output.content.push(block);\n const slot = {\n type: \"thinking\",\n block,\n contentIndex: output.content.length - 1,\n };\n outputSlots.set(outputIndex, slot);\n stream.push({ type: \"thinking_start\", contentIndex: slot.contentIndex, partial: output });\n return slot;\n }\n if (item.type === \"message\") {\n applyMessagePhaseStopReason(item);\n const block = { type: \"text\", text: \"\" };\n output.content.push(block);\n const slot = { type: \"text\", block, contentIndex: output.content.length - 1 };\n outputSlots.set(outputIndex, slot);\n stream.push({ type: \"text_start\", contentIndex: slot.contentIndex, partial: output });\n return slot;\n }\n if (item.type === \"function_call\") {\n const block = {\n type: \"toolCall\",\n id: `${item.call_id}|${item.id}`,\n name: item.name,\n arguments: {},\n partialJson: item.arguments || \"\",\n };\n output.content.push(block);\n const slot = {\n type: \"toolCall\",\n block,\n contentIndex: output.content.length - 1,\n };\n outputSlots.set(outputIndex, slot);\n stream.push({ type: \"toolcall_start\", contentIndex: slot.contentIndex, partial: output });\n return slot;\n }\n if (item.type === \"custom_tool_call\") {\n const inputProperty = options?.grammarToolInputProperties?.get(item.name) ?? \"input\";\n const input = item.input || \"\";\n const block = {\n type: \"toolCall\",\n id: `${item.call_id}|${item.id}`,\n name: item.name,\n arguments: { [inputProperty]: input },\n customInput: {\n property: inputProperty,\n jsonBuffer: { input: \"\", started: false, closed: false },\n },\n };\n output.content.push(block);\n const slot = {\n type: \"toolCall\",\n block,\n contentIndex: output.content.length - 1,\n };\n outputSlots.set(outputIndex, slot);\n stream.push({ type: \"toolcall_start\", contentIndex: slot.contentIndex, partial: output });\n return slot;\n }\n return undefined;\n };\n const getOrCreateSlot = (outputIndex, item) => {\n return outputSlots.get(outputIndex) ?? createSlot(outputIndex, item);\n };\n // Azure OpenAI can omit reasoning.encrypted_content from response.output_item.done\n // and provide it only in response.completed.response.output. Backfill the\n // persisted reasoning signature from the terminal response to keep store:false\n // multi-turn replay stateless. See https://github.com/earendil-works/pi/issues/6409.\n const backfillReasoningSignatures = (responseOutput) => {\n for (const item of responseOutput) {\n if (item.type !== \"reasoning\" || !item.encrypted_content)\n continue;\n const block = reasoningBlocksById.get(item.id);\n if (!block?.thinkingSignature)\n continue;\n const storedItem = JSON.parse(block.thinkingSignature);\n if (storedItem.encrypted_content)\n continue;\n block.thinkingSignature = JSON.stringify({\n ...storedItem,\n encrypted_content: item.encrypted_content,\n });\n }\n };\n const finalizeResponse = (response) => {\n sawTerminalResponseEvent = true;\n backfillReasoningSignatures(response.output ?? []);\n if (response?.id) {\n output.responseId = response.id;\n }\n if (response?.usage) {\n const inputDetails = response.usage.input_tokens_details;\n const cachedTokens = inputDetails?.cached_tokens || 0;\n const cacheWriteTokens = inputDetails?.cache_write_tokens || 0;\n output.usage = {\n // OpenAI includes cached and cache-write tokens in input_tokens, so subtract both.\n input: Math.max(0, (response.usage.input_tokens || 0) - cachedTokens - cacheWriteTokens),\n output: response.usage.output_tokens || 0,\n cacheRead: cachedTokens,\n cacheWrite: cacheWriteTokens,\n reasoning: response.usage.output_tokens_details?.reasoning_tokens || 0,\n totalTokens: response.usage.total_tokens || 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n };\n }\n calculateCost(model, output.usage);\n if (options?.applyServiceTierPricing) {\n const serviceTier = options.resolveServiceTier\n ? options.resolveServiceTier(response?.service_tier, options.serviceTier)\n : (response?.service_tier ?? options.serviceTier);\n options.applyServiceTierPricing(output.usage, serviceTier);\n }\n // Map status to stop reason. For incomplete responses, retain the provider's\n // specific reason so max-output truncation and content filtering stay distinct.\n const status = response?.status;\n const incompleteDetails = response?.incomplete_details;\n const incompleteReason = typeof incompleteDetails?.reason === \"string\" ? incompleteDetails.reason : undefined;\n output.rawStopReason = incompleteReason ? `${status}.${incompleteReason}` : status;\n const mappedStop = mapStopReason(status, incompleteReason);\n output.stopReason = mappedStop.stopReason;\n output.errorMessage = mappedStop.errorMessage;\n if (output.content.some((b) => b.type === \"toolCall\") && output.stopReason === \"stop\") {\n output.stopReason = \"toolUse\";\n }\n };\n for await (const event of openaiStream) {\n if (event.type === \"response.created\") {\n output.responseId = event.response.id;\n }\n else if (event.type === \"response.output_item.added\") {\n createSlot(event.output_index, event.item);\n }\n else if (event.type === \"response.reasoning_summary_text.delta\") {\n const slot = getSlot(event.output_index, \"thinking\");\n if (!slot)\n continue;\n slot.block.thinking += event.delta;\n stream.push({\n type: \"thinking_delta\",\n contentIndex: slot.contentIndex,\n delta: event.delta,\n partial: output,\n });\n }\n else if (event.type === \"response.reasoning_summary_part.done\") {\n const slot = getSlot(event.output_index, \"thinking\");\n if (!slot)\n continue;\n slot.block.thinking += \"\\n\\n\";\n stream.push({\n type: \"thinking_delta\",\n contentIndex: slot.contentIndex,\n delta: \"\\n\\n\",\n partial: output,\n });\n }\n else if (event.type === \"response.reasoning_text.delta\") {\n const slot = getSlot(event.output_index, \"thinking\");\n if (!slot)\n continue;\n slot.block.thinking += event.delta;\n stream.push({\n type: \"thinking_delta\",\n contentIndex: slot.contentIndex,\n delta: event.delta,\n partial: output,\n });\n }\n else if (event.type === \"response.output_text.delta\") {\n const slot = getSlot(event.output_index, \"text\");\n if (!slot)\n continue;\n slot.block.text += event.delta;\n stream.push({\n type: \"text_delta\",\n contentIndex: slot.contentIndex,\n delta: event.delta,\n partial: output,\n });\n }\n else if (event.type === \"response.refusal.delta\") {\n const slot = getSlot(event.output_index, \"text\");\n if (!slot)\n continue;\n slot.block.text += event.delta;\n stream.push({\n type: \"text_delta\",\n contentIndex: slot.contentIndex,\n delta: event.delta,\n partial: output,\n });\n }\n else if (event.type === \"response.function_call_arguments.delta\") {\n const slot = getSlot(event.output_index, \"toolCall\");\n if (!slot || slot.block.partialJson === undefined)\n continue;\n slot.block.partialJson += event.delta;\n slot.block.arguments = parseStreamingJson(slot.block.partialJson);\n pushToolCallDelta(slot, event.delta);\n }\n else if (event.type === \"response.function_call_arguments.done\") {\n const slot = getSlot(event.output_index, \"toolCall\");\n if (!slot || slot.block.partialJson === undefined)\n continue;\n const previousPartialJson = slot.block.partialJson;\n slot.block.partialJson = event.arguments;\n slot.block.arguments = parseStreamingJson(slot.block.partialJson);\n if (event.arguments.startsWith(previousPartialJson)) {\n const delta = event.arguments.slice(previousPartialJson.length);\n if (delta.length > 0)\n pushToolCallDelta(slot, delta);\n }\n }\n else if (event.type === \"response.custom_tool_call_input.delta\") {\n const slot = getSlot(event.output_index, \"toolCall\");\n if (!slot || !slot.block.customInput)\n continue;\n pushToolCallDelta(slot, appendCustomToolCallInput(slot.block, getCustomToolCallInput(slot.block) + event.delta, false));\n }\n else if (event.type === \"response.custom_tool_call_input.done\") {\n const slot = getSlot(event.output_index, \"toolCall\");\n if (!slot || !slot.block.customInput)\n continue;\n pushToolCallDelta(slot, appendCustomToolCallInput(slot.block, event.input, true));\n }\n else if (event.type === \"response.output_item.done\") {\n const item = event.item;\n applyMessagePhaseStopReason(item);\n const slot = getOrCreateSlot(event.output_index, item);\n if (item.type === \"reasoning\" && slot?.type === \"thinking\") {\n const summaryText = item.summary?.map((s) => s.text).join(\"\\n\\n\") || \"\";\n const contentText = item.content?.map((c) => c.text).join(\"\\n\\n\") || \"\";\n slot.block.thinking = summaryText || contentText || slot.block.thinking;\n slot.block.thinkingSignature = JSON.stringify(item);\n reasoningBlocksById.set(item.id, slot.block);\n stream.push({\n type: \"thinking_end\",\n contentIndex: slot.contentIndex,\n content: slot.block.thinking,\n partial: output,\n });\n outputSlots.delete(event.output_index);\n }\n else if (item.type === \"message\" && slot?.type === \"text\") {\n slot.block.text = item.content?.map((c) => (c.type === \"output_text\" ? c.text : c.refusal)).join(\"\") || \"\";\n slot.block.textSignature = encodeTextSignatureV1(item.id, item.phase ?? undefined);\n stream.push({\n type: \"text_end\",\n contentIndex: slot.contentIndex,\n content: slot.block.text,\n partial: output,\n });\n outputSlots.delete(event.output_index);\n }\n else if (item.type === \"function_call\" &&\n slot?.type === \"toolCall\" &&\n slot.block.partialJson !== undefined) {\n slot.block.arguments = parseStreamingJson(item.arguments || slot.block.partialJson || \"{}\");\n // Finalize in-place and strip the scratch buffer so replay only\n // carries parsed arguments.\n delete slot.block.partialJson;\n stream.push({\n type: \"toolcall_end\",\n contentIndex: slot.contentIndex,\n toolCall: slot.block,\n partial: output,\n });\n outputSlots.delete(event.output_index);\n }\n else if (item.type === \"custom_tool_call\" && slot?.type === \"toolCall\" && slot.block.customInput) {\n pushToolCallDelta(slot, appendCustomToolCallInput(slot.block, item.input ?? getCustomToolCallInput(slot.block), true));\n delete slot.block.customInput;\n stream.push({\n type: \"toolcall_end\",\n contentIndex: slot.contentIndex,\n toolCall: slot.block,\n partial: output,\n });\n outputSlots.delete(event.output_index);\n }\n }\n else if (event.type === \"response.completed\" || event.type === \"response.incomplete\") {\n finalizeResponse(event.response);\n }\n else if (event.type === \"error\") {\n throw new Error(`Error Code ${event.code}: ${event.message}` || \"Unknown error\");\n }\n else if (event.type === \"response.failed\") {\n sawTerminalResponseEvent = true;\n output.rawStopReason = event.response?.status;\n const error = event.response?.error;\n const details = event.response?.incomplete_details;\n const msg = error\n ? `${error.code || \"unknown\"}: ${error.message || \"no message\"}`\n : details?.reason\n ? `incomplete: ${details.reason}`\n : \"Unknown error (no error details in response)\";\n throw new Error(msg);\n }\n }\n if (!sawTerminalResponseEvent) {\n throw new Error(\"OpenAI Responses stream ended before a terminal response event\");\n }\n}\nfunction mapStopReason(status, incompleteReason) {\n if (!status)\n return { stopReason: \"stop\" };\n switch (status) {\n case \"completed\":\n return { stopReason: \"stop\" };\n case \"incomplete\":\n if (incompleteReason === \"max_output_tokens\") {\n return { stopReason: \"length\" };\n }\n return {\n stopReason: \"error\",\n errorMessage: incompleteReason\n ? `Response incomplete: ${incompleteReason}`\n : \"Response incomplete without a provider reason\",\n };\n case \"failed\":\n case \"cancelled\":\n return { stopReason: \"error\" };\n // These two are wonky ...\n case \"in_progress\":\n case \"queued\":\n return { stopReason: \"stop\" };\n default: {\n const _exhaustive = status;\n throw new Error(`Unhandled stop reason: ${_exhaustive}`);\n }\n }\n}\n//# sourceMappingURL=openai-responses-shared.js.map","const CHARS_PER_TOKEN = 4;\nconst ESTIMATED_IMAGE_CHARS = 4800;\nexport function calculateContextTokens(usage) {\n return usage.totalTokens || usage.input + usage.output + usage.cacheRead + usage.cacheWrite;\n}\nfunction safeJsonStringify(value) {\n try {\n return JSON.stringify(value) ?? \"undefined\";\n }\n catch {\n return \"[unserializable]\";\n }\n}\nfunction estimateTextAndImageContentChars(content) {\n if (typeof content === \"string\")\n return content.length;\n let chars = 0;\n for (const block of content)\n chars += block.type === \"text\" ? block.text.length : ESTIMATED_IMAGE_CHARS;\n return chars;\n}\nexport function estimateTextTokens(text) {\n return Math.ceil(text.length / CHARS_PER_TOKEN);\n}\nexport function estimateTextAndImageContentTokens(content) {\n return Math.ceil(estimateTextAndImageContentChars(content) / CHARS_PER_TOKEN);\n}\nexport function estimateMessageTokens(message) {\n let chars = 0;\n if (message.role === \"user\")\n return estimateTextAndImageContentTokens(message.content);\n if (message.role === \"toolResult\")\n return estimateTextAndImageContentTokens(message.content);\n for (const block of message.content) {\n if (block.type === \"text\") {\n chars += block.text.length;\n }\n else if (block.type === \"thinking\") {\n chars += block.thinking.length;\n }\n else {\n chars += block.name.length + safeJsonStringify(block.arguments).length;\n }\n }\n return Math.ceil(chars / CHARS_PER_TOKEN);\n}\nfunction getLastAssistantUsageInfo(messages) {\n let latestPrefixTimestamp = Number.NEGATIVE_INFINITY;\n let usageInfo;\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i];\n if (message.role === \"assistant\") {\n const assistant = message;\n // A newer prefix message was inserted after this response (for example, a\n // compaction summary), so its usage cannot describe the current prefix.\n const usageAppliesToPrefix = assistant.timestamp >= latestPrefixTimestamp;\n if (usageAppliesToPrefix &&\n assistant.stopReason !== \"aborted\" &&\n assistant.stopReason !== \"error\" &&\n calculateContextTokens(assistant.usage) > 0) {\n usageInfo = { usage: assistant.usage, index: i };\n }\n }\n latestPrefixTimestamp = Math.max(latestPrefixTimestamp, message.timestamp);\n }\n return usageInfo;\n}\nfunction estimateMessages(messages) {\n const usageInfo = getLastAssistantUsageInfo(messages);\n if (usageInfo) {\n const usageTokens = calculateContextTokens(usageInfo.usage);\n let trailingTokens = 0;\n for (let i = usageInfo.index + 1; i < messages.length; i++) {\n trailingTokens += estimateMessageTokens(messages[i]);\n }\n return { tokens: usageTokens + trailingTokens, usageTokens, trailingTokens, lastUsageIndex: usageInfo.index };\n }\n let tokens = 0;\n for (const message of messages)\n tokens += estimateMessageTokens(message);\n return { tokens, usageTokens: 0, trailingTokens: tokens, lastUsageIndex: null };\n}\nfunction estimateToolsTokens(tools) {\n if (!tools || tools.length === 0)\n return 0;\n return estimateTextTokens(safeJsonStringify(tools));\n}\nfunction isMessageArray(value) {\n return Array.isArray(value);\n}\nexport function estimateContextTokens(context) {\n if (isMessageArray(context))\n return estimateMessages(context);\n const estimate = estimateMessages(context.messages);\n if (estimate.lastUsageIndex !== null) {\n const addedNames = new Set(context.messages\n .slice(estimate.lastUsageIndex + 1)\n .filter((message) => message.role === \"toolResult\")\n .flatMap((message) => message.addedToolNames ?? []));\n const addedToolTokens = estimateToolsTokens(context.tools?.filter((tool) => addedNames.has(tool.name)));\n return {\n tokens: estimate.tokens + addedToolTokens,\n usageTokens: estimate.usageTokens,\n trailingTokens: estimate.trailingTokens + addedToolTokens,\n lastUsageIndex: estimate.lastUsageIndex,\n };\n }\n const prefixTokens = (context.systemPrompt ? estimateTextTokens(context.systemPrompt) : 0) + estimateToolsTokens(context.tools);\n return {\n tokens: estimate.tokens + prefixTokens,\n usageTokens: estimate.usageTokens,\n trailingTokens: estimate.trailingTokens + prefixTokens,\n lastUsageIndex: estimate.lastUsageIndex,\n };\n}\n//# sourceMappingURL=estimate.js.map","import { estimateContextTokens } from \"../utils/estimate.js\";\nconst CONTEXT_SAFETY_TOKENS = 4096;\nconst MIN_MAX_TOKENS = 1;\nexport function clampMaxTokensToContext(model, context, maxTokens) {\n if (model.contextWindow <= 0)\n return Math.max(MIN_MAX_TOKENS, maxTokens);\n const available = model.contextWindow - estimateContextTokens(context).tokens - CONTEXT_SAFETY_TOKENS;\n return Math.min(maxTokens, Math.max(MIN_MAX_TOKENS, available));\n}\nexport function buildBaseOptions(model, context, options, apiKey) {\n const samplingParams = model.samplingParams || options?.samplingParams\n ? { ...model.samplingParams, ...options?.samplingParams }\n : undefined;\n return {\n temperature: options?.temperature,\n samplingParams,\n maxTokens: clampMaxTokensToContext(model, context, options?.maxTokens ?? model.maxTokens),\n signal: options?.signal,\n telemetryContext: options?.telemetryContext,\n apiKey: apiKey || options?.apiKey,\n fetch: options?.fetch,\n transport: options?.transport,\n cacheRetention: options?.cacheRetention,\n sessionId: options?.sessionId,\n headers: options?.headers,\n onPayload: options?.onPayload,\n onResponse: options?.onResponse,\n timeoutMs: options?.timeoutMs,\n websocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n maxRetries: options?.maxRetries,\n maxRetryDelayMs: options?.maxRetryDelayMs,\n metadata: options?.metadata,\n env: options?.env,\n };\n}\n/** Tokens always left for the answer when a thinking budget shares the response ceiling. */\nexport const MIN_ANSWER_TOKENS = 1024;\nexport function clampReasoning(effort) {\n return effort === \"xhigh\" || effort === \"max\" ? \"high\" : effort;\n}\nexport function adjustMaxTokensForThinking(\n// Undefined means no explicit caller cap. Use the model cap and fit thinking inside it.\nbaseMaxTokens, modelMaxTokens, reasoningLevel, customBudgets) {\n const defaultBudgets = {\n minimal: 1024,\n low: 2048,\n medium: 8192,\n high: 16384,\n };\n const budgets = { ...defaultBudgets, ...customBudgets };\n const level = clampReasoning(reasoningLevel);\n let thinkingBudget = budgets[level];\n const maxTokens = baseMaxTokens === undefined ? modelMaxTokens : Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);\n if (maxTokens <= thinkingBudget) {\n thinkingBudget = Math.max(0, maxTokens - MIN_ANSWER_TOKENS);\n }\n return { maxTokens, thinkingBudget };\n}\n//# sourceMappingURL=simple-options.js.map","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","// @ts-nocheck — vendored Pi source (pi-ai utils/provider-env.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\nlet procEnvCache = null;\n/**\n * Fallback for https://github.com/oven-sh/bun/issues/27802.\n * Bun compiled binaries can expose an empty process.env inside Linux sandboxes\n * even though /proc/self/environ contains the environment.\n *\n * This intentionally duplicates restoreSandboxEnv() in\n * packages/coding-agent/src/bun/restore-sandbox-env.ts. The ai package can be\n * used directly, without going through that entrypoint, so provider env lookup\n * must not depend on process.env having been patched.\n */\nfunction getBunSandboxEnvValue(name) {\n if (typeof process === \"undefined\" || !process.versions?.bun || Object.keys(process.env).length > 0) {\n return undefined;\n }\n if (procEnvCache === null) {\n procEnvCache = new Map();\n try {\n const { readFileSync } = require(\"node:fs\");\n const data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n for (const entry of data.split(\"\\0\")) {\n const idx = entry.indexOf(\"=\");\n if (idx > 0) {\n procEnvCache.set(entry.slice(0, idx), entry.slice(idx + 1));\n }\n }\n }\n catch {\n // /proc/self/environ may not exist or may not be readable.\n }\n }\n return procEnvCache.get(name);\n}\n/**\n * Resolve a provider env value from scoped overrides, normal process.env, then\n * the duplicated Bun sandbox fallback for direct pi-ai consumers.\n */\nexport function getProviderEnvValue(name, env) {\n return (env?.[name] ||\n (typeof process !== \"undefined\" ? process.env[name] : undefined) ||\n getBunSandboxEnvValue(name) ||\n undefined);\n}\n//# sourceMappingURL=provider-env.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/device-code.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\nconst CANCEL_MESSAGE = \"Login cancelled\";\nconst TIMEOUT_MESSAGE = \"Device flow timed out\";\nconst SLOW_DOWN_TIMEOUT_MESSAGE = \"Device flow timed out after one or more slow_down responses. This is often caused by clock drift in WSL or VM environments. Please sync or restart the VM clock and try again.\";\nconst MINIMUM_INTERVAL_MS = 1000;\n// RFC 8628 section 3.2: if the authorization server omits `interval`, the client must use 5 seconds.\nconst DEFAULT_POLL_INTERVAL_SECONDS = 5;\n// RFC 8628 section 3.5: `slow_down` means the polling interval must increase by 5 seconds.\nconst SLOW_DOWN_INTERVAL_INCREMENT_MS = 5000;\nfunction abortableSleep(ms, signal, cancelMessage) {\n return new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(new Error(cancelMessage));\n return;\n }\n const onAbort = () => {\n clearTimeout(timeout);\n reject(new Error(cancelMessage));\n };\n const timeout = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\nexport async function pollOAuthDeviceCodeFlow(options) {\n const deadline = typeof options.expiresInSeconds === \"number\"\n ? Date.now() + options.expiresInSeconds * 1000\n : Number.POSITIVE_INFINITY;\n let intervalMs = Math.max(MINIMUM_INTERVAL_MS, Math.floor((options.intervalSeconds ?? DEFAULT_POLL_INTERVAL_SECONDS) * 1000));\n let slowDownResponses = 0;\n if (options.waitBeforeFirstPoll) {\n const remainingMs = deadline - Date.now();\n if (remainingMs > 0) {\n await abortableSleep(Math.min(intervalMs, remainingMs), options.signal, CANCEL_MESSAGE);\n }\n }\n while (Date.now() < deadline) {\n if (options.signal.aborted) {\n throw new Error(CANCEL_MESSAGE);\n }\n const result = await options.poll();\n if (result.status === \"complete\") {\n return result.value;\n }\n if (result.status === \"failed\") {\n throw new Error(result.message);\n }\n if (result.status === \"slow_down\") {\n slowDownResponses += 1;\n // Use the server-provided interval when given (GitHub reports the new required minimum\n // in `interval`); trusting only a client-tracked value risks polling early forever under\n // WSL/VM clock drift. Otherwise apply RFC 8628 section 3.5: increase by 5 seconds.\n intervalMs =\n typeof result.intervalSeconds === \"number\" &&\n Number.isFinite(result.intervalSeconds) &&\n result.intervalSeconds > 0\n ? Math.max(MINIMUM_INTERVAL_MS, Math.floor(result.intervalSeconds * 1000))\n : Math.max(MINIMUM_INTERVAL_MS, intervalMs + SLOW_DOWN_INTERVAL_INCREMENT_MS);\n }\n const remainingMs = deadline - Date.now();\n if (remainingMs <= 0) {\n break;\n }\n await abortableSleep(Math.min(intervalMs, remainingMs), options.signal, CANCEL_MESSAGE);\n }\n throw new Error(slowDownResponses > 0 ? SLOW_DOWN_TIMEOUT_MESSAGE : TIMEOUT_MESSAGE);\n}\n//# sourceMappingURL=device-code.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/oauth-page.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\nconst LOGO_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 800\" aria-hidden=\"true\"><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M165.29 165.29 H517.36 V400 H400 V517.36 H282.65 V634.72 H165.29 Z M282.65 282.65 V400 H400 V282.65 Z\"/><path fill=\"#fff\" d=\"M517.36 400 H634.72 V634.72 H517.36 Z\"/></svg>`;\nfunction escapeHtml(value) {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\")\n .replaceAll('\"', \""\")\n .replaceAll(\"'\", \"'\");\n}\nfunction renderPage(options) {\n const title = escapeHtml(options.title);\n const heading = escapeHtml(options.heading);\n const message = escapeHtml(options.message);\n const details = options.details ? escapeHtml(options.details) : undefined;\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${title}</title>\n <style>\n :root {\n --text: #fafafa;\n --text-dim: #a1a1aa;\n --page-bg: #09090b;\n --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n }\n * { box-sizing: border-box; }\n html { color-scheme: dark; }\n body {\n margin: 0;\n min-height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n background: var(--page-bg);\n color: var(--text);\n font-family: var(--font-sans);\n text-align: center;\n }\n main {\n width: 100%;\n max-width: 560px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .logo {\n width: 72px;\n height: 72px;\n display: block;\n margin-bottom: 24px;\n }\n h1 {\n margin: 0 0 10px;\n font-size: 28px;\n line-height: 1.15;\n font-weight: 650;\n color: var(--text);\n }\n p {\n margin: 0;\n line-height: 1.7;\n color: var(--text-dim);\n font-size: 15px;\n }\n .details {\n margin-top: 16px;\n font-family: var(--font-mono);\n font-size: 13px;\n color: var(--text-dim);\n white-space: pre-wrap;\n word-break: break-word;\n }\n </style>\n</head>\n<body>\n <main>\n <div class=\"logo\">${LOGO_SVG}</div>\n <h1>${heading}</h1>\n <p>${message}</p>\n ${details ? `<div class=\"details\">${details}</div>` : \"\"}\n </main>\n</body>\n</html>`;\n}\nexport function oauthSuccessHtml(message) {\n return renderPage({\n title: \"Authentication successful\",\n heading: \"Authentication successful\",\n message,\n });\n}\nexport function oauthErrorHtml(message, details) {\n return renderPage({\n title: \"Authentication failed\",\n heading: \"Authentication failed\",\n message,\n details,\n });\n}\n//# sourceMappingURL=oauth-page.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/pkce.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n/**\n * PKCE utilities using Web Crypto API.\n * Works in both Node.js 20+ and browsers.\n */\n/**\n * Encode bytes as base64url string.\n */\nfunction base64urlEncode(bytes) {\n let binary = \"\";\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n/**\n * Generate PKCE code verifier and challenge.\n * Uses Web Crypto API for cross-platform compatibility.\n */\nexport async function generatePKCE() {\n // Generate random verifier\n const verifierBytes = new Uint8Array(32);\n crypto.getRandomValues(verifierBytes);\n const verifier = base64urlEncode(verifierBytes);\n // Compute SHA-256 challenge\n const encoder = new TextEncoder();\n const data = encoder.encode(verifier);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const challenge = base64urlEncode(new Uint8Array(hashBuffer));\n return { verifier, challenge };\n}\n//# sourceMappingURL=pkce.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/openai-codex.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n/**\n * OpenAI Codex (ChatGPT OAuth) flow\n *\n * NOTE: This module uses Node.js crypto and http for the OAuth callback.\n * It is only intended for CLI use, not browser environments.\n */\n// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _randomBytes = null;\nlet _http = null;\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n import(\"node:crypto\").then((m) => {\n _randomBytes = m.randomBytes;\n });\n import(\"node:http\").then((m) => {\n _http = m;\n });\n}\nimport { getProviderEnvValue } from './provider-env.js';\nimport { pollOAuthDeviceCodeFlow } from \"./device-code.js\";\nimport { oauthErrorHtml, oauthSuccessHtml } from \"./oauth-page.js\";\nimport { generatePKCE } from \"./pkce.js\";\nconst CLIENT_ID = \"app_EMoamEEZ73f0CkXaXp7hrann\";\nconst AUTH_BASE_URL = \"https://auth.openai.com\";\nconst AUTHORIZE_URL = `${AUTH_BASE_URL}/oauth/authorize`;\nconst TOKEN_URL = `${AUTH_BASE_URL}/oauth/token`;\nconst REDIRECT_URI = \"http://localhost:1455/auth/callback\";\nconst DEVICE_USER_CODE_URL = `${AUTH_BASE_URL}/api/accounts/deviceauth/usercode`;\nconst DEVICE_TOKEN_URL = `${AUTH_BASE_URL}/api/accounts/deviceauth/token`;\nconst DEVICE_VERIFICATION_URI = `${AUTH_BASE_URL}/codex/device`;\nconst DEVICE_REDIRECT_URI = `${AUTH_BASE_URL}/deviceauth/callback`;\nconst DEVICE_CODE_TIMEOUT_SECONDS = 15 * 60;\nconst OPENAI_CODEX_BROWSER_LOGIN_METHOD = \"browser\";\nconst OPENAI_CODEX_DEVICE_CODE_LOGIN_METHOD = \"device_code\";\nconst SCOPE = \"openid profile email offline_access\";\nconst JWT_CLAIM_PATH = \"https://api.openai.com/auth\";\nfunction getCallbackHost() {\n return getProviderEnvValue(\"PI_OAUTH_CALLBACK_HOST\") || \"127.0.0.1\";\n}\nfunction createState() {\n if (!_randomBytes) {\n throw new Error(\"OpenAI Codex OAuth is only available in Node.js environments\");\n }\n return _randomBytes(16).toString(\"hex\");\n}\nfunction parseAuthorizationInput(input) {\n const value = input.trim();\n if (!value)\n return {};\n try {\n const url = new URL(value);\n return {\n code: url.searchParams.get(\"code\") ?? undefined,\n state: url.searchParams.get(\"state\") ?? undefined,\n };\n }\n catch {\n // not a URL\n }\n if (value.includes(\"#\")) {\n const [code, state] = value.split(\"#\", 2);\n return { code, state };\n }\n if (value.includes(\"code=\")) {\n const params = new URLSearchParams(value);\n return {\n code: params.get(\"code\") ?? undefined,\n state: params.get(\"state\") ?? undefined,\n };\n }\n return { code: value };\n}\nfunction decodeJwt(token) {\n try {\n const parts = token.split(\".\");\n if (parts.length !== 3)\n return null;\n const payload = parts[1] ?? \"\";\n const decoded = atob(payload);\n return JSON.parse(decoded);\n }\n catch {\n return null;\n }\n}\nasync function fetchWithLoginCancellation(input, init) {\n try {\n return await fetch(input, init);\n }\n catch (error) {\n if (init.signal?.aborted) {\n throw new Error(\"Login cancelled\");\n }\n throw error;\n }\n}\nasync function readTokenResponse(response, operation) {\n if (!response.ok) {\n const text = await response.text().catch(() => \"\");\n throw new Error(`OpenAI Codex token ${operation} failed (${response.status}): ${text || response.statusText}`);\n }\n const rawJson = await response.json();\n const json = rawJson;\n if (!json?.access_token || !json.refresh_token || typeof json.expires_in !== \"number\") {\n throw new Error(`OpenAI Codex token ${operation} response missing fields: ${JSON.stringify(json)}`);\n }\n return {\n access: json.access_token,\n refresh: json.refresh_token,\n expires: Date.now() + json.expires_in * 1000,\n };\n}\nasync function exchangeAuthorizationCode(code, verifier, redirectUri, signal) {\n const response = await fetchWithLoginCancellation(TOKEN_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n grant_type: \"authorization_code\",\n client_id: CLIENT_ID,\n code,\n code_verifier: verifier,\n redirect_uri: redirectUri,\n }),\n signal,\n });\n return readTokenResponse(response, \"exchange\");\n}\nasync function refreshAccessToken(refreshToken, signal) {\n let response;\n try {\n response = await fetch(TOKEN_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: refreshToken,\n client_id: CLIENT_ID,\n }),\n signal,\n });\n }\n catch (error) {\n throw new Error(`OpenAI Codex token refresh error: ${error instanceof Error ? error.message : String(error)}`);\n }\n return readTokenResponse(response, \"refresh\");\n}\nasync function startOpenAICodexDeviceAuth(signal) {\n const response = await fetchWithLoginCancellation(DEVICE_USER_CODE_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ client_id: CLIENT_ID }),\n signal,\n });\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(\"OpenAI Codex device code login is not enabled for this server. Use browser login or verify the server URL.\");\n }\n const responseBody = await response.text().catch(() => \"\");\n throw new Error(`OpenAI Codex device code request failed with status ${response.status}${responseBody ? `: ${responseBody}` : \"\"}`);\n }\n const rawJson = await response.json();\n const json = rawJson;\n const intervalSeconds = typeof json?.interval === \"string\" ? Number(json.interval.trim()) : json?.interval;\n if (!json?.device_auth_id ||\n !json.user_code ||\n typeof intervalSeconds !== \"number\" ||\n !Number.isFinite(intervalSeconds) ||\n intervalSeconds < 0) {\n throw new Error(`Invalid OpenAI Codex device code response: ${JSON.stringify(json)}`);\n }\n return {\n deviceAuthId: json.device_auth_id,\n userCode: json.user_code,\n intervalSeconds,\n };\n}\nasync function pollOpenAICodexDeviceAuth(device, signal) {\n return pollOAuthDeviceCodeFlow({\n intervalSeconds: device.intervalSeconds,\n expiresInSeconds: DEVICE_CODE_TIMEOUT_SECONDS,\n signal,\n poll: async () => {\n const response = await fetchWithLoginCancellation(DEVICE_TOKEN_URL, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n device_auth_id: device.deviceAuthId,\n user_code: device.userCode,\n }),\n signal,\n });\n if (response.ok) {\n const rawJson = await response.json();\n const json = rawJson;\n if (!json?.authorization_code || !json.code_verifier) {\n return {\n status: \"failed\",\n message: `Invalid OpenAI Codex device auth token response: ${JSON.stringify(json)}`,\n };\n }\n return {\n status: \"complete\",\n value: { authorizationCode: json.authorization_code, codeVerifier: json.code_verifier },\n };\n }\n if (response.status === 403 || response.status === 404) {\n return { status: \"pending\" };\n }\n const responseBody = await response.text().catch(() => \"\");\n let errorCode;\n try {\n const json = JSON.parse(responseBody);\n const error = json?.error;\n errorCode = typeof error === \"object\" ? error?.code : error;\n }\n catch { }\n if (errorCode === \"deviceauth_authorization_pending\") {\n return { status: \"pending\" };\n }\n if (errorCode === \"slow_down\") {\n return { status: \"slow_down\" };\n }\n return {\n status: \"failed\",\n message: `OpenAI Codex device auth failed with status ${response.status}${responseBody ? `: ${responseBody}` : \"\"}`,\n };\n },\n });\n}\nasync function createAuthorizationFlow(originator = \"pi\") {\n const { verifier, challenge } = await generatePKCE();\n const state = createState();\n const url = new URL(AUTHORIZE_URL);\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"client_id\", CLIENT_ID);\n url.searchParams.set(\"redirect_uri\", REDIRECT_URI);\n url.searchParams.set(\"scope\", SCOPE);\n url.searchParams.set(\"code_challenge\", challenge);\n url.searchParams.set(\"code_challenge_method\", \"S256\");\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"id_token_add_organizations\", \"true\");\n url.searchParams.set(\"codex_cli_simplified_flow\", \"true\");\n url.searchParams.set(\"originator\", originator);\n return { verifier, state, url: url.toString() };\n}\nfunction startLocalOAuthServer(state) {\n if (!_http) {\n throw new Error(\"OpenAI Codex OAuth is only available in Node.js environments\");\n }\n let settleWait;\n const waitForCodePromise = new Promise((resolve) => {\n let settled = false;\n settleWait = (value) => {\n if (settled)\n return;\n settled = true;\n resolve(value);\n };\n });\n const server = _http.createServer((req, res) => {\n try {\n const url = new URL(req.url || \"\", \"http://localhost\");\n if (url.pathname !== \"/auth/callback\") {\n res.statusCode = 404;\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.end(oauthErrorHtml(\"Callback route not found.\"));\n return;\n }\n if (url.searchParams.get(\"state\") !== state) {\n res.statusCode = 400;\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.end(oauthErrorHtml(\"State mismatch.\"));\n return;\n }\n const code = url.searchParams.get(\"code\");\n if (!code) {\n res.statusCode = 400;\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.end(oauthErrorHtml(\"Missing authorization code.\"));\n return;\n }\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.end(oauthSuccessHtml(\"OpenAI authentication completed. You can close this window.\"));\n settleWait?.({ code });\n }\n catch {\n res.statusCode = 500;\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.end(oauthErrorHtml(\"Internal error while processing OAuth callback.\"));\n }\n });\n return new Promise((resolve) => {\n server\n .listen(1455, getCallbackHost(), () => {\n resolve({\n close: () => server.close(),\n cancelWait: () => {\n settleWait?.(null);\n },\n waitForCode: () => waitForCodePromise,\n });\n })\n .on(\"error\", (_err) => {\n settleWait?.(null);\n resolve({\n close: () => {\n try {\n server.close();\n }\n catch {\n // ignore\n }\n },\n cancelWait: () => { },\n waitForCode: async () => null,\n });\n });\n });\n}\nfunction getAccountId(accessToken) {\n const payload = decodeJwt(accessToken);\n const auth = payload?.[JWT_CLAIM_PATH];\n const accountId = auth?.chatgpt_account_id;\n return typeof accountId === \"string\" && accountId.length > 0 ? accountId : null;\n}\nfunction credentialsFromToken(token) {\n const accountId = getAccountId(token.access);\n if (!accountId) {\n throw new Error(\"Failed to extract accountId from token\");\n }\n return {\n type: \"oauth\",\n access: token.access,\n refresh: token.refresh,\n expires: token.expires,\n accountId,\n };\n}\nasync function exchangeAuthorizationCodeForCredentials(code, verifier, redirectUri, signal) {\n return credentialsFromToken(await exchangeAuthorizationCode(code, verifier, redirectUri, signal));\n}\nasync function loginOpenAICodexDeviceCode(interaction) {\n const device = await startOpenAICodexDeviceAuth(interaction.signal);\n interaction.notify({\n type: \"device_code\",\n userCode: device.userCode,\n verificationUri: DEVICE_VERIFICATION_URI,\n intervalSeconds: device.intervalSeconds,\n expiresInSeconds: DEVICE_CODE_TIMEOUT_SECONDS,\n });\n const code = await pollOpenAICodexDeviceAuth(device, interaction.signal);\n return exchangeAuthorizationCodeForCredentials(code.authorizationCode, code.codeVerifier, DEVICE_REDIRECT_URI, interaction.signal);\n}\nasync function loginOpenAICodex(interaction) {\n const { verifier, state, url } = await createAuthorizationFlow();\n const server = await startLocalOAuthServer(state);\n const manualAbort = new AbortController();\n const onAbort = () => server.cancelWait();\n interaction.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (interaction.signal.aborted)\n onAbort();\n let code;\n let manualCode;\n let manualError;\n interaction.notify({\n type: \"auth_url\",\n url,\n instructions: \"A browser window should open. Complete login to finish.\",\n });\n try {\n const manualPromise = interaction\n .prompt({\n type: \"manual_code\",\n message: \"Complete login in your browser, or paste the authorization code / redirect URL here:\",\n placeholder: REDIRECT_URI,\n signal: manualAbort.signal,\n })\n .then((input) => {\n manualCode = input;\n server.cancelWait();\n })\n .catch((error) => {\n manualError = error instanceof Error ? error : new Error(String(error));\n server.cancelWait();\n });\n const result = await server.waitForCode();\n if (manualError)\n throw manualError;\n if (result?.code) {\n code = result.code;\n }\n else if (manualCode) {\n const parsed = parseAuthorizationInput(manualCode);\n if (parsed.state && parsed.state !== state)\n throw new Error(\"State mismatch\");\n code = parsed.code;\n }\n if (!code) {\n await manualPromise;\n if (manualError)\n throw manualError;\n if (manualCode) {\n const parsed = parseAuthorizationInput(manualCode);\n if (parsed.state && parsed.state !== state)\n throw new Error(\"State mismatch\");\n code = parsed.code;\n }\n }\n if (!code)\n throw new Error(\"Missing authorization code\");\n return exchangeAuthorizationCodeForCredentials(code, verifier, REDIRECT_URI, interaction.signal);\n }\n finally {\n interaction.signal.removeEventListener(\"abort\", onAbort);\n manualAbort.abort();\n server.close();\n }\n}\n/**\n * Refresh OpenAI Codex OAuth token\n */\nasync function refreshOpenAICodexToken(refreshToken, signal) {\n return credentialsFromToken(await refreshAccessToken(refreshToken, signal));\n}\nexport const openaiCodexOAuth = {\n name: \"OpenAI (ChatGPT Plus/Pro)\",\n isSubscription: true,\n async login(interaction) {\n const method = await interaction.prompt({\n type: \"select\",\n message: \"Select OpenAI Codex login method:\",\n options: [\n { id: OPENAI_CODEX_BROWSER_LOGIN_METHOD, label: \"Browser login (default)\" },\n { id: OPENAI_CODEX_DEVICE_CODE_LOGIN_METHOD, label: \"Device code login (headless)\" },\n ],\n });\n if (method === OPENAI_CODEX_DEVICE_CODE_LOGIN_METHOD) {\n return loginOpenAICodexDeviceCode(interaction);\n }\n if (method !== OPENAI_CODEX_BROWSER_LOGIN_METHOD) {\n throw new Error(`Unknown OpenAI Codex login method: ${method}`);\n }\n return loginOpenAICodex(interaction);\n },\n refresh: (credential, signal) => refreshOpenAICodexToken(credential.refresh, signal),\n async toAuth(credential) {\n return { apiKey: credential.access };\n },\n};\n//# sourceMappingURL=openai-codex.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/anthropic.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n/**\n * Anthropic OAuth flow (Claude Pro/Max)\n *\n * NOTE: This module uses Node.js http.createServer for the OAuth callback server.\n * It is only intended for CLI use, not browser environments.\n */\nimport { getProviderEnvValue } from './provider-env.js';\nimport { oauthErrorHtml, oauthSuccessHtml } from \"./oauth-page.js\";\nimport { generatePKCE } from \"./pkce.js\";\nlet nodeApis = null;\nlet nodeApisPromise = null;\nconst decode = (s) => atob(s);\nconst CLIENT_ID = decode(\"OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl\");\nconst AUTHORIZE_URL = \"https://claude.ai/oauth/authorize\";\nconst TOKEN_URL = \"https://platform.claude.com/v1/oauth/token\";\nconst CALLBACK_HOST = getProviderEnvValue(\"PI_OAUTH_CALLBACK_HOST\") || \"127.0.0.1\";\nconst CALLBACK_PORT = 53692;\nconst CALLBACK_PATH = \"/callback\";\nconst REDIRECT_URI = `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;\nconst SCOPES = \"org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload\";\nasync function getNodeApis() {\n if (nodeApis)\n return nodeApis;\n if (!nodeApisPromise) {\n if (typeof process === \"undefined\" || (!process.versions?.node && !process.versions?.bun)) {\n throw new Error(\"Anthropic OAuth is only available in Node.js environments\");\n }\n nodeApisPromise = import(\"node:http\").then((httpModule) => ({\n createServer: httpModule.createServer,\n }));\n }\n nodeApis = await nodeApisPromise;\n return nodeApis;\n}\nfunction parseAuthorizationInput(input) {\n const value = input.trim();\n if (!value)\n return {};\n try {\n const url = new URL(value);\n return {\n code: url.searchParams.get(\"code\") ?? undefined,\n state: url.searchParams.get(\"state\") ?? undefined,\n };\n }\n catch {\n // not a URL\n }\n if (value.includes(\"#\")) {\n const [code, state] = value.split(\"#\", 2);\n return { code, state };\n }\n if (value.includes(\"code=\")) {\n const params = new URLSearchParams(value);\n return {\n code: params.get(\"code\") ?? undefined,\n state: params.get(\"state\") ?? undefined,\n };\n }\n return { code: value };\n}\nfunction formatErrorDetails(error) {\n if (error instanceof Error) {\n const details = [`${error.name}: ${error.message}`];\n const errorWithCode = error;\n if (errorWithCode.code)\n details.push(`code=${errorWithCode.code}`);\n if (typeof errorWithCode.errno !== \"undefined\")\n details.push(`errno=${String(errorWithCode.errno)}`);\n if (typeof error.cause !== \"undefined\") {\n details.push(`cause=${formatErrorDetails(error.cause)}`);\n }\n if (error.stack) {\n details.push(`stack=${error.stack}`);\n }\n return details.join(\"; \");\n }\n return String(error);\n}\nasync function startCallbackServer(expectedState) {\n const { createServer } = await getNodeApis();\n return new Promise((resolve, reject) => {\n let settleWait;\n const waitForCodePromise = new Promise((resolveWait) => {\n let settled = false;\n settleWait = (value) => {\n if (settled)\n return;\n settled = true;\n resolveWait(value);\n };\n });\n const server = createServer((req, res) => {\n try {\n const url = new URL(req.url || \"\", \"http://localhost\");\n if (url.pathname !== CALLBACK_PATH) {\n res.writeHead(404, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(oauthErrorHtml(\"Callback route not found.\"));\n return;\n }\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n const error = url.searchParams.get(\"error\");\n if (error) {\n res.writeHead(400, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(oauthErrorHtml(\"Anthropic authentication did not complete.\", `Error: ${error}`));\n return;\n }\n if (!code || !state) {\n res.writeHead(400, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(oauthErrorHtml(\"Missing code or state parameter.\"));\n return;\n }\n if (state !== expectedState) {\n res.writeHead(400, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(oauthErrorHtml(\"State mismatch.\"));\n return;\n }\n res.writeHead(200, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(oauthSuccessHtml(\"Anthropic authentication completed. You can close this window.\"));\n settleWait?.({ code, state });\n }\n catch {\n res.writeHead(500, { \"Content-Type\": \"text/plain; charset=utf-8\" });\n res.end(\"Internal error\");\n }\n });\n server.on(\"error\", (err) => {\n reject(err);\n });\n server.listen(CALLBACK_PORT, CALLBACK_HOST, () => {\n resolve({\n server,\n redirectUri: REDIRECT_URI,\n cancelWait: () => {\n settleWait?.(null);\n },\n waitForCode: () => waitForCodePromise,\n });\n });\n });\n}\nasync function postJson(url, body, signal) {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(body),\n signal: AbortSignal.any([signal, AbortSignal.timeout(30_000)]),\n });\n const responseBody = await response.text();\n if (!response.ok) {\n throw new Error(`HTTP request failed. status=${response.status}; url=${url}; body=${responseBody}`);\n }\n return responseBody;\n}\nasync function exchangeAuthorizationCode(code, state, verifier, redirectUri, signal) {\n let responseBody;\n try {\n responseBody = await postJson(TOKEN_URL, {\n grant_type: \"authorization_code\",\n client_id: CLIENT_ID,\n code,\n state,\n redirect_uri: redirectUri,\n code_verifier: verifier,\n }, signal);\n }\n catch (error) {\n throw new Error(`Token exchange request failed. url=${TOKEN_URL}; redirect_uri=${redirectUri}; response_type=authorization_code; details=${formatErrorDetails(error)}`);\n }\n let tokenData;\n try {\n tokenData = JSON.parse(responseBody);\n }\n catch (error) {\n throw new Error(`Token exchange returned invalid JSON. url=${TOKEN_URL}; body=${responseBody}; details=${formatErrorDetails(error)}`);\n }\n return {\n type: \"oauth\",\n refresh: tokenData.refresh_token,\n access: tokenData.access_token,\n expires: Date.now() + tokenData.expires_in * 1000 - 5 * 60 * 1000,\n };\n}\nasync function loginAnthropic(interaction) {\n const { verifier, challenge } = await generatePKCE();\n const server = await startCallbackServer(verifier);\n const manualAbort = new AbortController();\n const onAbort = () => server.cancelWait();\n interaction.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (interaction.signal.aborted)\n onAbort();\n let code;\n let state;\n let manualInput;\n let manualError;\n try {\n const authParams = new URLSearchParams({\n code: \"true\",\n client_id: CLIENT_ID,\n response_type: \"code\",\n redirect_uri: REDIRECT_URI,\n scope: SCOPES,\n code_challenge: challenge,\n code_challenge_method: \"S256\",\n state: verifier,\n });\n interaction.notify({\n type: \"auth_url\",\n url: `${AUTHORIZE_URL}?${authParams.toString()}`,\n instructions: \"Complete login in your browser. If the browser is on another machine, paste the final redirect URL here.\",\n });\n const manualPromise = interaction\n .prompt({\n type: \"manual_code\",\n message: \"Complete login in your browser, or paste the authorization code / redirect URL here:\",\n placeholder: REDIRECT_URI,\n signal: manualAbort.signal,\n })\n .then((input) => {\n manualInput = input;\n server.cancelWait();\n })\n .catch((error) => {\n manualError = error instanceof Error ? error : new Error(String(error));\n server.cancelWait();\n });\n const result = await server.waitForCode();\n if (manualError)\n throw manualError;\n if (result?.code) {\n code = result.code;\n state = result.state;\n }\n else if (manualInput) {\n const parsed = parseAuthorizationInput(manualInput);\n if (parsed.state && parsed.state !== verifier)\n throw new Error(\"OAuth state mismatch\");\n code = parsed.code;\n state = parsed.state ?? verifier;\n }\n if (!code) {\n await manualPromise;\n if (manualError)\n throw manualError;\n if (manualInput) {\n const parsed = parseAuthorizationInput(manualInput);\n if (parsed.state && parsed.state !== verifier)\n throw new Error(\"OAuth state mismatch\");\n code = parsed.code;\n state = parsed.state ?? verifier;\n }\n }\n if (!code)\n throw new Error(\"Missing authorization code\");\n if (!state)\n throw new Error(\"Missing OAuth state\");\n interaction.notify({ type: \"progress\", message: \"Exchanging authorization code for tokens...\" });\n return exchangeAuthorizationCode(code, state, verifier, REDIRECT_URI, interaction.signal);\n }\n finally {\n interaction.signal.removeEventListener(\"abort\", onAbort);\n manualAbort.abort();\n server.server.close();\n }\n}\n/**\n * Refresh Anthropic OAuth token\n */\nasync function refreshAnthropicToken(refreshToken, signal) {\n let responseBody;\n try {\n responseBody = await postJson(TOKEN_URL, {\n grant_type: \"refresh_token\",\n client_id: CLIENT_ID,\n refresh_token: refreshToken,\n }, signal);\n }\n catch (error) {\n throw new Error(`Anthropic token refresh request failed. url=${TOKEN_URL}; details=${formatErrorDetails(error)}`);\n }\n let data;\n try {\n data = JSON.parse(responseBody);\n }\n catch (error) {\n throw new Error(`Anthropic token refresh returned invalid JSON. url=${TOKEN_URL}; body=${responseBody}; details=${formatErrorDetails(error)}`);\n }\n return {\n type: \"oauth\",\n refresh: data.refresh_token,\n access: data.access_token,\n expires: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,\n };\n}\nexport const anthropicOAuth = {\n name: \"Anthropic (Claude Pro/Max)\",\n isSubscription: true,\n login: loginAnthropic,\n refresh: (credential, signal) => refreshAnthropicToken(credential.refresh, signal),\n async toAuth(credential) {\n return { apiKey: credential.access };\n },\n};\n//# sourceMappingURL=anthropic.js.map","","// @ts-nocheck — vendored Pi source (pi-ai model-catalog.js @0.84.1, MIT, see ../PI-LICENSE); unchanged.\nexport function flattenModelCatalog(_provider, groups) {\n return Object.assign({}, ...Object.values(groups));\n}\n//# sourceMappingURL=model-catalog.js.map","// @ts-nocheck — vendored Pi source (pi-ai providers/github-copilot.models.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\nimport values from \"./data/github-copilot.json\" with { type: \"json\" };\nimport { flattenModelCatalog } from './model-catalog.js';\nexport const GITHUB_COPILOT_MODELS = flattenModelCatalog(\"github-copilot\", values);\n//# sourceMappingURL=github-copilot.models.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/github-copilot.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n/**\n * GitHub Copilot OAuth flow\n */\nimport { GITHUB_COPILOT_MODELS } from './github-copilot.models.js';\nimport { pollOAuthDeviceCodeFlow } from \"./device-code.js\";\nconst decode = (s) => atob(s);\nconst CLIENT_ID = decode(\"SXYxLmI1MDdhMDhjODdlY2ZlOTg=\");\nconst COPILOT_HEADERS = {\n \"User-Agent\": \"GitHubCopilotChat/0.35.0\",\n \"Editor-Version\": \"vscode/1.107.0\",\n \"Editor-Plugin-Version\": \"copilot-chat/0.35.0\",\n \"Copilot-Integration-Id\": \"vscode-chat\",\n};\nconst COPILOT_API_VERSION = \"2026-06-01\";\nfunction normalizeDomain(input) {\n const trimmed = input.trim();\n if (!trimmed)\n return null;\n try {\n const url = trimmed.includes(\"://\") ? new URL(trimmed) : new URL(`https://${trimmed}`);\n return url.hostname;\n }\n catch {\n return null;\n }\n}\nfunction getUrls(domain) {\n return {\n deviceCodeUrl: `https://${domain}/login/device/code`,\n accessTokenUrl: `https://${domain}/login/oauth/access_token`,\n copilotTokenUrl: `https://api.${domain}/copilot_internal/v2/token`,\n };\n}\n/**\n * Parse the proxy-ep from a Copilot token and convert to API base URL.\n * Token format: tid=...;exp=...;proxy-ep=proxy.individual.githubcopilot.com;...\n * Returns API URL like https://api.individual.githubcopilot.com\n */\nfunction getBaseUrlFromToken(token) {\n const match = token.match(/proxy-ep=([^;]+)/);\n if (!match)\n return null;\n const proxyHost = match[1];\n // Convert proxy.xxx to api.xxx\n const apiHost = proxyHost.replace(/^proxy\\./, \"api.\");\n return `https://${apiHost}`;\n}\nfunction getGitHubCopilotBaseUrl(token, enterpriseDomain) {\n // If we have a token, extract the base URL from proxy-ep\n if (token) {\n const urlFromToken = getBaseUrlFromToken(token);\n if (urlFromToken)\n return urlFromToken;\n }\n // Fallback for enterprise or if token parsing fails\n if (enterpriseDomain)\n return `https://copilot-api.${enterpriseDomain}`;\n return \"https://api.individual.githubcopilot.com\";\n}\nfunction asRecord(value) {\n return value && typeof value === \"object\" ? value : undefined;\n}\nfunction parseAvailableCopilotModelIds(raw, allowPolicyFallback) {\n const data = asRecord(raw)?.data;\n if (!Array.isArray(data)) {\n throw new Error(\"Invalid Copilot models response\");\n }\n const pickerIds = [];\n const policyEnabledIds = [];\n for (const rawItem of data) {\n const item = asRecord(rawItem);\n const id = item?.id;\n if (!item || typeof id !== \"string\")\n continue;\n const capabilities = asRecord(item.capabilities);\n const supports = asRecord(capabilities?.supports);\n if (supports?.tool_calls === false)\n continue;\n const policy = asRecord(item.policy);\n if (item.model_picker_enabled === true && policy?.state !== \"disabled\")\n pickerIds.push(id);\n if (policy?.state === \"enabled\")\n policyEnabledIds.push(id);\n }\n return pickerIds.length > 0 || !allowPolicyFallback ? pickerIds : policyEnabledIds;\n}\nasync function fetchAvailableGitHubCopilotModelIds(copilotToken, enterpriseDomain, signal) {\n const baseUrl = getGitHubCopilotBaseUrl(copilotToken, enterpriseDomain);\n // Some Individual accounts return false for every picker flag despite explicit enabled policies.\n // Limit the fallback to that endpoint so other account types keep strict picker semantics.\n const allowPolicyFallback = baseUrl === \"https://api.individual.githubcopilot.com\";\n const raw = await fetchJson(`${baseUrl}/models`, {\n headers: {\n Accept: \"application/json\",\n Authorization: `Bearer ${copilotToken}`,\n ...COPILOT_HEADERS,\n \"X-GitHub-Api-Version\": COPILOT_API_VERSION,\n },\n signal: AbortSignal.any([signal, AbortSignal.timeout(5000)]),\n });\n return parseAvailableCopilotModelIds(raw, allowPolicyFallback);\n}\nasync function fetchJson(url, init) {\n const response = await fetch(url, init);\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`${response.status} ${response.statusText}: ${text}`);\n }\n return response.json();\n}\nasync function startDeviceFlow(domain, signal) {\n const urls = getUrls(domain);\n const data = await fetchJson(urls.deviceCodeUrl, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"User-Agent\": \"GitHubCopilotChat/0.35.0\",\n },\n body: new URLSearchParams({\n client_id: CLIENT_ID,\n scope: \"read:user\",\n }),\n signal,\n });\n if (!data || typeof data !== \"object\") {\n throw new Error(\"Invalid device code response\");\n }\n const deviceCode = data.device_code;\n const userCode = data.user_code;\n const verificationUri = data.verification_uri;\n const interval = data.interval;\n const expiresIn = data.expires_in;\n if (typeof deviceCode !== \"string\" ||\n typeof userCode !== \"string\" ||\n typeof verificationUri !== \"string\" ||\n (interval !== undefined && typeof interval !== \"number\") ||\n typeof expiresIn !== \"number\") {\n throw new Error(\"Invalid device code response fields\");\n }\n // The verification URI is opened in the user's browser and to prevent `open` from\n // opening an executable or similar, we force it to be a URL.\n let parsedUri;\n try {\n parsedUri = new URL(verificationUri);\n }\n catch {\n throw new Error(\"Untrusted verification_uri in device code response\");\n }\n if (parsedUri.protocol !== \"https:\" && parsedUri.protocol !== \"http:\") {\n throw new Error(\"Untrusted verification_uri in device code response\");\n }\n return {\n device_code: deviceCode,\n user_code: userCode,\n verification_uri: parsedUri.href,\n interval,\n expires_in: expiresIn,\n };\n}\nasync function pollForGitHubAccessToken(domain, device, signal) {\n const urls = getUrls(domain);\n return pollOAuthDeviceCodeFlow({\n intervalSeconds: device.interval,\n expiresInSeconds: device.expires_in,\n waitBeforeFirstPoll: true,\n signal,\n poll: async () => {\n const raw = await fetchJson(urls.accessTokenUrl, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"User-Agent\": \"GitHubCopilotChat/0.35.0\",\n },\n body: new URLSearchParams({\n client_id: CLIENT_ID,\n device_code: device.device_code,\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n }),\n signal,\n });\n if (raw && typeof raw === \"object\" && typeof raw.access_token === \"string\") {\n return { status: \"complete\", value: raw.access_token };\n }\n if (raw && typeof raw === \"object\" && typeof raw.error === \"string\") {\n const { error, error_description: description, interval } = raw;\n if (error === \"authorization_pending\") {\n return { status: \"pending\" };\n }\n if (error === \"slow_down\") {\n return { status: \"slow_down\", intervalSeconds: typeof interval === \"number\" ? interval : undefined };\n }\n const descriptionSuffix = description ? `: ${description}` : \"\";\n return { status: \"failed\", message: `Device flow failed: ${error}${descriptionSuffix}` };\n }\n return { status: \"failed\", message: \"Invalid device token response\" };\n },\n });\n}\nasync function refreshGitHubCopilotAccessToken(refreshToken, enterpriseDomain, signal) {\n const domain = enterpriseDomain || \"github.com\";\n const urls = getUrls(domain);\n const raw = await fetchJson(urls.copilotTokenUrl, {\n headers: {\n Accept: \"application/json\",\n Authorization: `Bearer ${refreshToken}`,\n ...COPILOT_HEADERS,\n },\n signal,\n });\n if (!raw || typeof raw !== \"object\") {\n throw new Error(\"Invalid Copilot token response\");\n }\n const token = raw.token;\n const expiresAt = raw.expires_at;\n if (typeof token !== \"string\" || typeof expiresAt !== \"number\") {\n throw new Error(\"Invalid Copilot token response fields\");\n }\n return {\n type: \"oauth\",\n refresh: refreshToken,\n access: token,\n expires: expiresAt * 1000 - 5 * 60 * 1000,\n enterpriseUrl: enterpriseDomain,\n };\n}\n/**\n * Refresh GitHub Copilot token\n */\nasync function refreshGitHubCopilotToken(refreshToken, enterpriseDomain, signal) {\n const credentials = await refreshGitHubCopilotAccessToken(refreshToken, enterpriseDomain, signal);\n return {\n ...credentials,\n availableModelIds: await fetchAvailableGitHubCopilotModelIds(credentials.access, enterpriseDomain, signal),\n };\n}\n/**\n * Enable a model for the user's GitHub Copilot account.\n * This is required for some models (like Claude, Grok) before they can be used.\n */\nasync function enableGitHubCopilotModel(token, modelId, enterpriseDomain, signal) {\n const baseUrl = getGitHubCopilotBaseUrl(token, enterpriseDomain);\n const url = `${baseUrl}/models/${modelId}/policy`;\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n ...COPILOT_HEADERS,\n \"openai-intent\": \"chat-policy\",\n \"x-interaction-type\": \"chat-policy\",\n },\n body: JSON.stringify({ state: \"enabled\" }),\n signal,\n });\n return response.ok;\n }\n catch (error) {\n if (signal.aborted)\n throw error;\n return false;\n }\n}\n/**\n * Enable all known GitHub Copilot models that may require policy acceptance.\n * Called after successful login to ensure all models are available.\n */\nasync function enableAllGitHubCopilotModels(token, enterpriseDomain, signal) {\n const models = Object.values(GITHUB_COPILOT_MODELS);\n await Promise.all(models.map(async (model) => {\n await enableGitHubCopilotModel(token, model.id, enterpriseDomain, signal);\n }));\n}\nasync function loginGitHubCopilot(interaction) {\n const input = await interaction.prompt({\n type: \"text\",\n message: \"GitHub Enterprise URL/domain (blank for github.com)\",\n placeholder: \"company.ghe.com\",\n });\n if (interaction.signal.aborted)\n throw new Error(\"Login cancelled\");\n const trimmed = input.trim();\n const enterpriseDomain = normalizeDomain(input);\n if (trimmed && !enterpriseDomain)\n throw new Error(\"Invalid GitHub Enterprise URL/domain\");\n const domain = enterpriseDomain || \"github.com\";\n const device = await startDeviceFlow(domain, interaction.signal);\n interaction.notify({\n type: \"device_code\",\n userCode: device.user_code,\n verificationUri: device.verification_uri,\n intervalSeconds: device.interval,\n expiresInSeconds: device.expires_in,\n });\n const githubAccessToken = await pollForGitHubAccessToken(domain, device, interaction.signal);\n const credentials = await refreshGitHubCopilotAccessToken(githubAccessToken, enterpriseDomain ?? undefined, interaction.signal);\n interaction.notify({ type: \"progress\", message: \"Enabling models...\" });\n await enableAllGitHubCopilotModels(credentials.access, enterpriseDomain ?? undefined, interaction.signal);\n return {\n ...credentials,\n availableModelIds: await fetchAvailableGitHubCopilotModelIds(credentials.access, enterpriseDomain ?? undefined, interaction.signal),\n };\n}\nfunction copilotEnterpriseDomain(credential) {\n const enterpriseUrl = credential.enterpriseUrl;\n if (typeof enterpriseUrl !== \"string\" || !enterpriseUrl)\n return undefined;\n return normalizeDomain(enterpriseUrl) ?? undefined;\n}\nexport const githubCopilotOAuth = {\n name: \"GitHub Copilot\",\n isSubscription: true,\n login: loginGitHubCopilot,\n refresh: (credential, signal) => refreshGitHubCopilotToken(credential.refresh, copilotEnterpriseDomain(credential), signal),\n /** Derive the credential-specific proxy endpoint for each request. */\n async toAuth(credential) {\n return {\n apiKey: credential.access,\n baseUrl: getGitHubCopilotBaseUrl(credential.access, copilotEnterpriseDomain(credential)),\n };\n },\n};\n//# sourceMappingURL=github-copilot.js.map","// @ts-nocheck — vendored Pi source (pi-ai auth/oauth/kimi-coding.js @0.84.1, MIT, see ../PI-LICENSE);\n// imports remapped to sibling vendored files, logic byte-identical.\n/**\n * Kimi Code (subscription) OAuth flow\n *\n * RFC 8628 device authorization grant against https://auth.kimi.com with JSON\n * responses. The access token authenticates requests to\n * https://api.kimi.com/coding as an `Authorization: Bearer` header.\n */\nimport { getProviderEnvValue } from './provider-env.js';\nimport { pollOAuthDeviceCodeFlow } from \"./device-code.js\";\nconst CLIENT_ID = \"17e5f671-d194-4dfb-9706-5516cb48c098\";\nconst DEFAULT_OAUTH_HOST = \"https://auth.kimi.com\";\nconst DEVICE_CODE_TIMEOUT_SECONDS = 15 * 60;\nconst DEFAULT_POLL_INTERVAL_SECONDS = 5;\nconst REQUEST_TIMEOUT_MS = 30 * 1000;\nconst REFRESH_MAX_RETRIES = 3;\nfunction getOauthHost() {\n const override = getProviderEnvValue(\"KIMI_CODE_OAUTH_HOST\") || getProviderEnvValue(\"KIMI_OAUTH_HOST\");\n return (override || DEFAULT_OAUTH_HOST).replace(/\\/+$/, \"\");\n}\nfunction requestSignal(signal) {\n return AbortSignal.any([AbortSignal.timeout(REQUEST_TIMEOUT_MS), signal]);\n}\nfunction formUrlEncode(fields) {\n return new URLSearchParams(fields).toString();\n}\nasync function readJson(response) {\n try {\n const json = await response.json();\n return json && typeof json === \"object\" ? json : null;\n }\n catch {\n return null;\n }\n}\n/** The verification URI is opened in the user's browser; only http(s) URLs are trusted. */\nfunction trustedHttpUrl(value) {\n if (typeof value !== \"string\" || !value)\n return null;\n try {\n const url = new URL(value);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\")\n return null;\n return url.href;\n }\n catch {\n return null;\n }\n}\nasync function startDeviceAuthorization(oauthHost, signal) {\n const response = await fetch(`${oauthHost}/api/oauth/device_authorization`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: formUrlEncode({ client_id: CLIENT_ID }),\n signal: requestSignal(signal),\n });\n if (!response.ok) {\n const text = await response.text().catch(() => \"\");\n throw new Error(`Kimi Code device authorization failed with status ${response.status}${text ? `: ${text}` : \"\"}`);\n }\n const json = await readJson(response);\n const deviceCode = json?.device_code;\n const userCode = json?.user_code;\n const verificationUri = json?.verification_uri;\n const verificationUriComplete = json?.verification_uri_complete;\n if (typeof deviceCode !== \"string\" ||\n typeof userCode !== \"string\" ||\n typeof verificationUri !== \"string\" ||\n typeof verificationUriComplete !== \"string\" ||\n !trustedHttpUrl(verificationUriComplete) ||\n !trustedHttpUrl(verificationUri)) {\n throw new Error(`Invalid Kimi Code device authorization response: ${JSON.stringify(json)}`);\n }\n const interval = json?.interval;\n const expiresIn = json?.expires_in;\n return {\n deviceCode,\n userCode,\n verificationUri,\n verificationUriComplete,\n intervalSeconds: typeof interval === \"number\" && Number.isFinite(interval) && interval > 0\n ? interval\n : DEFAULT_POLL_INTERVAL_SECONDS,\n expiresInSeconds: typeof expiresIn === \"number\" && Number.isFinite(expiresIn) && expiresIn > 0\n ? expiresIn\n : DEVICE_CODE_TIMEOUT_SECONDS,\n };\n}\nfunction parseTokenResponse(json, operation) {\n const accessToken = json?.access_token;\n const refreshToken = json?.refresh_token;\n const expiresIn = json?.expires_in;\n if (typeof accessToken !== \"string\" ||\n !accessToken ||\n typeof refreshToken !== \"string\" ||\n !refreshToken ||\n typeof expiresIn !== \"number\" ||\n !Number.isFinite(expiresIn) ||\n expiresIn <= 0) {\n throw new Error(`Kimi Code token ${operation} response missing fields: ${JSON.stringify(json)}`);\n }\n return {\n access: accessToken,\n refresh: refreshToken,\n expires: Date.now() + expiresIn * 1000,\n };\n}\nasync function pollForToken(oauthHost, device, signal) {\n return pollOAuthDeviceCodeFlow({\n intervalSeconds: device.intervalSeconds,\n expiresInSeconds: device.expiresInSeconds,\n waitBeforeFirstPoll: true,\n signal,\n poll: async () => {\n const response = await fetch(`${oauthHost}/api/oauth/token`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: formUrlEncode({\n client_id: CLIENT_ID,\n device_code: device.deviceCode,\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n }),\n signal: requestSignal(signal),\n });\n if (response.status >= 500) {\n const text = await response.text().catch(() => \"\");\n return {\n status: \"failed\",\n message: `Kimi Code device token request failed with status ${response.status}${text ? `: ${text}` : \"\"}`,\n };\n }\n const json = await readJson(response);\n if (response.ok && typeof json?.access_token === \"string\") {\n try {\n return { status: \"complete\", value: parseTokenResponse(json, \"poll\") };\n }\n catch (error) {\n return { status: \"failed\", message: error instanceof Error ? error.message : String(error) };\n }\n }\n const error = json?.error;\n const description = typeof json?.error_description === \"string\" ? `: ${json.error_description}` : \"\";\n if (error === \"authorization_pending\") {\n return { status: \"pending\" };\n }\n if (error === \"slow_down\") {\n const interval = json?.interval;\n return {\n status: \"slow_down\",\n intervalSeconds: typeof interval === \"number\" && interval > 0 ? interval : undefined,\n };\n }\n if (error === \"expired_token\") {\n return { status: \"failed\", message: \"Kimi Code device authorization expired. Please restart login.\" };\n }\n if (error === \"access_denied\") {\n return { status: \"failed\", message: \"Kimi Code login was denied.\" };\n }\n return {\n status: \"failed\",\n message: `Kimi Code device token request failed (status ${response.status})${typeof error === \"string\" ? `: ${error}${description}` : \"\"}`,\n };\n },\n });\n}\nfunction sleep(ms, signal) {\n return new Promise((resolve, reject) => {\n signal.throwIfAborted();\n const onAbort = () => {\n clearTimeout(timeout);\n reject(signal.reason);\n };\n const timeout = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\nfunction isRetryableRefreshFailure(response) {\n return response.status === 429 || response.status >= 500;\n}\nasync function refreshToken(oauthHost, refreshTokenValue, signal) {\n let lastError;\n for (let attempt = 0; attempt <= REFRESH_MAX_RETRIES; attempt++) {\n if (attempt > 0) {\n await sleep(1000 * 2 ** (attempt - 1), signal);\n }\n if (signal.aborted) {\n throw new Error(\"Kimi Code token refresh aborted\");\n }\n let response;\n try {\n response = await fetch(`${oauthHost}/api/oauth/token`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: formUrlEncode({\n client_id: CLIENT_ID,\n grant_type: \"refresh_token\",\n refresh_token: refreshTokenValue,\n }),\n signal: requestSignal(signal),\n });\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n continue;\n }\n const json = await readJson(response);\n if (response.ok) {\n return parseTokenResponse(json, \"refresh\");\n }\n // Unauthorized: the stored credential is dead; Models clears it and prompts re-login.\n if (response.status === 401 || response.status === 403 || json?.error === \"invalid_grant\") {\n const description = typeof json?.error_description === \"string\" ? `: ${json.error_description}` : \"\";\n throw new Error(`Kimi Code token refresh unauthorized (status ${response.status})${description}`);\n }\n if (isRetryableRefreshFailure(response) && attempt < REFRESH_MAX_RETRIES) {\n lastError = new Error(`Kimi Code token refresh failed with status ${response.status}`);\n continue;\n }\n const text = JSON.stringify(json);\n throw new Error(`Kimi Code token refresh failed with status ${response.status}${text ? `: ${text}` : \"\"}`);\n }\n throw lastError ?? new Error(\"Kimi Code token refresh failed\");\n}\nasync function loginKimiCoding(interaction) {\n const oauthHost = getOauthHost();\n const device = await startDeviceAuthorization(oauthHost, interaction.signal);\n interaction.notify({\n type: \"device_code\",\n userCode: device.userCode,\n verificationUri: device.verificationUriComplete,\n intervalSeconds: device.intervalSeconds,\n expiresInSeconds: device.expiresInSeconds,\n });\n const token = await pollForToken(oauthHost, device, interaction.signal);\n return { type: \"oauth\", access: token.access, refresh: token.refresh, expires: token.expires };\n}\nexport const kimiCodingOAuth = {\n name: \"Kimi Code (subscription)\",\n isSubscription: true,\n loginLabel: \"Sign in with Kimi Code\",\n login: loginKimiCoding,\n refresh: async (credential, signal) => {\n const token = await refreshToken(getOauthHost(), credential.refresh, signal);\n return { type: \"oauth\", access: token.access, refresh: token.refresh, expires: token.expires };\n },\n async toAuth(credential) {\n return { headers: { Authorization: `Bearer ${credential.access}` } };\n },\n};\n//# sourceMappingURL=kimi-coding.js.map","// Headless @earendil-works/pi-ai compatibility surface.\n//\n// Provider SDKs, OAuth flows, and streaming transports stay native to DSH;\n// this module carries the schema helpers, error classifiers, and thinking-\n// level math that Pi extensions import for their own logic. Overflow/retry\n// classifiers are vendored byte-identical (see ./vendor/PI-LICENSE) so\n// pattern tables stay in sync with Pi.\n\nexport type { Static, TSchema } from 'typebox'\nexport { Type } from 'typebox'\nexport { isContextOverflow, isRecoverableLength } from './vendor/pi-ai-overflow.js'\nexport { isRetryableAssistantError } from './vendor/pi-ai-retry.js'\nexport { uuidv7 } from './vendor/pi-uuid.js'\nexport type {\n AgentMessage,\n AssistantMessage,\n ImageContent,\n Message,\n TextContent,\n ThinkingContent,\n ToolCallContent,\n ToolResultMessage,\n Usage,\n UserMessage,\n} from './vendor/pi-types.js'\n\nexport type ThinkingLevel = 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'\nexport type ModelThinkingLevel = 'off' | ThinkingLevel\nexport type ThinkingLevelMap = Partial<Record<ModelThinkingLevel, string | null>>\nexport type Api = string\n\nexport interface Model<TApi extends Api = Api> {\n id: string\n name?: string\n api?: TApi\n provider?: string\n baseUrl?: string\n reasoning?: boolean\n thinkingLevelMap?: ThinkingLevelMap\n input?: readonly ('text' | 'image')[]\n contextWindow?: number\n maxTokens?: number\n [key: string]: unknown\n}\n\nconst EXTENDED_THINKING_LEVELS: ModelThinkingLevel[] = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max']\n\nexport function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[] {\n return EXTENDED_THINKING_LEVELS.filter(level => {\n const mapped = model.thinkingLevelMap?.[level]\n if (mapped === null) return false\n if (level === 'xhigh' || level === 'max') return mapped !== undefined\n return true\n })\n}\n\nexport function clampThinkingLevel<TApi extends Api>(\n model: Model<TApi>,\n level: ModelThinkingLevel,\n): ModelThinkingLevel {\n const availableLevels = getSupportedThinkingLevels(model)\n if (availableLevels.includes(level)) return level\n const requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level)\n if (requestedIndex === -1) return availableLevels[0] ?? 'off'\n for (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i += 1) {\n const candidate = EXTENDED_THINKING_LEVELS[i]!\n if (availableLevels.includes(candidate)) return candidate\n }\n for (let i = requestedIndex - 1; i >= 0; i -= 1) {\n const candidate = EXTENDED_THINKING_LEVELS[i]!\n if (availableLevels.includes(candidate)) return candidate\n }\n return availableLevels[0] ?? 'off'\n}\n\nexport function modelsAreEqual<TApi extends Api>(\n a: Model<TApi> | null | undefined,\n b: Model<TApi> | null | undefined,\n): boolean {\n if (a === null || a === undefined || b === null || b === undefined) return false\n return a.id === b.id && a.provider === b.provider\n}\n\ninterface TextishContent {\n type: string\n text?: string\n [key: string]: unknown\n}\n\nexport function contentText(content: string | readonly TextishContent[], separator = '\\n'): string {\n if (typeof content === 'string') return content\n return content\n .filter(block => block.type === 'text')\n .map(block => String(block.text ?? ''))\n .join(separator)\n}\n\n// Legacy pi-ai/compat global-registry API. The registry is bridge-local:\n// providers registered here are visible to the same package but never route\n// real model calls (DSH llm adapters own those).\nconst compatProviders = new Map<string, unknown>()\n\nexport function registerProvider(name: string, provider: unknown): void {\n compatProviders.set(name, provider)\n}\n\n// Pi's compat getProviders() returns provider NAMES (callers iterate and\n// Set() them).\nexport function getProviders(): string[] {\n return [...compatProviders.keys()]\n}\n\nexport function getProvider(name: string): unknown {\n return compatProviders.get(name)\n}\n\nexport function getModel(_provider: string, _id: string): undefined {\n return undefined\n}\n\n// Pi exports both spellings of these three (`getModels` is an alias for\n// `getBuiltinModels`, and the providers/all entry uses the builtin spelling).\n// A package importing the name we happened not to export throws at load and\n// takes its whole package down, which reads as \"the plugin is broken\".\nexport const getBuiltinModels = (provider?: string): unknown[] => getModels(provider)\nexport const getBuiltinModel = (provider: string, id: string): undefined => getModel(provider, id)\nexport const getBuiltinProviders = (): string[] => getProviders()\n\nexport function getModels(_provider?: string): unknown[] {\n return []\n}\n\n// Provider declaration factory, vendored from Pi (provider packages like\n// pi-provider-litellm build their provider object with it at load time and\n// hand it to pi.registerProvider). Model TRANSPORT stays native to DSH llm:\n// the lazy API factories below return Pi's exact lazy-stream surface, and if\n// a stream is ever actually requested the setup fails through Pi's own error\n// channel (an error event on the stream) instead of pretending to call a model.\nexport { createProvider, ModelsError } from './vendor/pi-ai-provider.js'\nexport { lazyApi, lazyStream } from './vendor/pi-ai-lazy.js'\nexport { AssistantMessageEventStream } from './vendor/pi-ai-event-stream.js'\n\n// A transport-owning provider package is different from a package merely\n// asking Pi to call a model: it deliberately builds its own wire client and\n// hands that transport to registerProvider(). pi-grok is one such package —\n// its stream wrapper delegates to Pi's standard Responses implementation and\n// relies on that implementation's onPayload seam. Export the REAL helper so\n// the package keeps owning the request body while pi2dsh wraps the finished\n// provider as a native DSH llm adapter. This dependency is bundled into the\n// shim artifact; the installed package does not need its own pi-ai runtime.\nexport { streamSimple as streamSimpleOpenAIResponses } from '@earendil-works/pi-ai/api/openai-responses'\n\n\n// Pi's official OAuth flows, vendored byte-identical: OpenAI Codex\n// (PKCE + localhost:1455 callback server, device-code fallback), Anthropic,\n// GitHub Copilot, Kimi Coding. Each exposes pi-ai's native oauth surface\n// (login(interaction)/refresh/toAuth) and runs its real protocol against the\n// real endpoints — account packages like @narumitw/pi-accounts load them\n// through builtinProviders()/the lazy loaders below.\nexport { openaiCodexOAuth } from './vendor/pi-oauth-flows/openai-codex.js'\nexport { anthropicOAuth } from './vendor/pi-oauth-flows/anthropic.js'\nexport { githubCopilotOAuth } from './vendor/pi-oauth-flows/github-copilot.js'\nexport { kimiCodingOAuth } from './vendor/pi-oauth-flows/kimi-coding.js'\nexport { generatePKCE } from './vendor/pi-oauth-flows/pkce.js'\nexport { pollOAuthDeviceCodeFlow } from './vendor/pi-oauth-flows/device-code.js'\n\nimport { openaiCodexOAuth as codexFlow } from './vendor/pi-oauth-flows/openai-codex.js'\nimport { anthropicOAuth as anthropicFlow } from './vendor/pi-oauth-flows/anthropic.js'\nimport { githubCopilotOAuth as copilotFlow } from './vendor/pi-oauth-flows/github-copilot.js'\nimport { kimiCodingOAuth as kimiFlow } from './vendor/pi-oauth-flows/kimi-coding.js'\n\n// The provider catalog surface account packages consume: id + the real OAuth\n// flow. Model catalogs stay empty — model routing is DSH-native in this host.\nexport function builtinProviders(): Array<{ id: string, name: string, api: string, baseUrl: string, models: never[], auth: { oauth: unknown } }> {\n const entry = (id: string, name: string, baseUrl: string, oauth: unknown) => ({\n id, name, api: 'openai-completions', baseUrl, models: [] as never[], auth: { oauth },\n })\n return [\n entry('openai-codex', 'OpenAI (ChatGPT Plus/Pro)', 'https://chatgpt.com/backend-api/codex', codexFlow),\n entry('anthropic', 'Anthropic', 'https://api.anthropic.com', anthropicFlow),\n entry('github-copilot', 'GitHub Copilot', 'https://api.githubcopilot.com', copilotFlow),\n entry('kimi-coding', 'Kimi Code', 'https://api.moonshot.ai/anthropic', kimiFlow),\n ]\n}\n\nexport const loadOpenAICodexOAuth = async (): Promise<unknown> => codexFlow\nexport const loadAnthropicOAuth = async (): Promise<unknown> => anthropicFlow\nexport const loadGitHubCopilotOAuth = async (): Promise<unknown> => copilotFlow\nexport const loadKimiCodingOAuth = async (): Promise<unknown> => kimiFlow\n\n// pi-ai/compat's process-wide api-provider registry, same semantics as\n// upstream: one entry per api id, streams wrapped with an api-match guard,\n// unregistration scoped to the owning sourceId. Packages use it as a shared\n// fallback table (pi-provider-kimi-code registers stream handlers here inside\n// a try/catch it designed for hosts without the module) — providing the real\n// surface keeps that optional path working instead of turning a resolvable\n// import with a missing export into a crash.\ninterface CompatApiProvider {\n api: string\n stream: (...args: unknown[]) => unknown\n streamSimple: (...args: unknown[]) => unknown\n}\n\nconst apiProviderRegistry = new Map<string, { provider: CompatApiProvider, sourceId: string | undefined }>()\n\nfunction guardApi(api: string, fn: (...args: unknown[]) => unknown): (...args: unknown[]) => unknown {\n return (model: unknown, ...rest: unknown[]) => {\n const modelApi = (model as { api?: unknown } | undefined)?.api\n if (modelApi !== api) throw new Error(`Mismatched api: ${String(modelApi)} expected ${api}`)\n return fn(model, ...rest)\n }\n}\n\nexport function registerApiProvider(provider: CompatApiProvider, sourceId?: string): void {\n apiProviderRegistry.set(provider.api, {\n provider: {\n api: provider.api,\n stream: guardApi(provider.api, provider.stream),\n streamSimple: guardApi(provider.api, provider.streamSimple),\n },\n sourceId,\n })\n}\n\nexport function getApiProvider(api: string): CompatApiProvider | undefined {\n return apiProviderRegistry.get(api)?.provider\n}\n\nexport function getApiProviders(): CompatApiProvider[] {\n return Array.from(apiProviderRegistry.values(), entry => entry.provider)\n}\n\nexport function unregisterApiProviders(sourceId: string): void {\n for (const [api, entry] of apiProviderRegistry.entries()) {\n if (entry.sourceId === sourceId) apiProviderRegistry.delete(api)\n }\n}\n\n// Designated-model calls. When a pi2dsh runtime with a mounted DSH llm\n// service is active, complete()/stream() run REAL model calls through\n// ctx.llm.stream() (the host installs the bridge at mount). Without one, the\n// explicit-failure contract stands — never a fabricated response.\ntype PiAiLlmBridge = (model: UnknownRecord, context: UnknownRecord, options: UnknownRecord | undefined) => {\n result(): Promise<unknown>\n [Symbol.asyncIterator](): AsyncIterator<unknown>\n}\n\ntype UnknownRecord = Record<string, unknown>\n\nlet activeLlmBridge: PiAiLlmBridge | undefined\n\nexport function __setPiAiLlmBridge(bridge: PiAiLlmBridge | undefined): void {\n activeLlmBridge = bridge\n}\n\n// Internal bridge access for the pi-coding-agent shim: the vendored\n// summarization/compaction functions take Pi's own streamFn injection point,\n// and pi2dsh injects this bridge there so every model call runs on the ONE\n// path (the DSH llm route). Undefined without a mounted llm service — the\n// vendored fallback then fails loud instead of reaching a provider SDK.\nexport function __getPiAiLlmBridge(): PiAiLlmBridge | undefined {\n return activeLlmBridge\n}\n\nfunction requireLlmBridge(api: string): PiAiLlmBridge {\n if (activeLlmBridge === undefined) {\n throw new Error(`pi2dsh: pi-ai ${api}() needs a DSH llm service; this composition mounts none, so model calls cannot be routed`)\n }\n return activeLlmBridge\n}\n\nexport async function complete(model: UnknownRecord, context: UnknownRecord, options?: UnknownRecord): Promise<unknown> {\n const stream = requireLlmBridge('complete')(model, context, options)\n const result = await stream.result()\n if (result instanceof Error) throw result\n return result\n}\n\nexport function stream(model: UnknownRecord, context: UnknownRecord, options?: UnknownRecord): unknown {\n return requireLlmBridge('stream')(model, context, options)\n}\n\n/**\n * Pi's per-protocol transport factories.\n *\n * Pi ships one factory per wire protocol (`pi-ai/compat`), and a gateway\n * package's most common shape is to take the standard one for its protocol and\n * hand it to `registerProvider`. Without these names such a package throws at\n * import — `openAICompletionsApi is not a function` — and the whole package\n * fails to mount, which reads as \"the plugin is broken\" rather than \"the bridge\n * is missing an export\".\n *\n * The provider each returns is not a wire client: its stream is the same DSH\n * llm route `complete()` and `stream()` already run on, so every model call in\n * this process keeps going through the one directory and the one path. Without\n * a mounted llm service it fails loud rather than reaching a provider SDK.\n * @param api - the protocol id this factory serves.\n * @returns a provider carrying that protocol's id and the routed stream.\n */\nfunction routedApi(api: string): { api: string, stream: PiAiLlmBridge, streamSimple: PiAiLlmBridge } {\n const routed: PiAiLlmBridge = (model, context, options) => requireLlmBridge(api)(model, context, options)\n return { api, stream: routed, streamSimple: routed }\n}\n\nexport const anthropicMessagesApi = (): ReturnType<typeof routedApi> => routedApi('anthropic-messages')\nexport const openAICompletionsApi = (): ReturnType<typeof routedApi> => routedApi('openai-completions')\nexport const openAIResponsesApi = (): ReturnType<typeof routedApi> => routedApi('openai-responses')\nexport const openAICodexResponsesApi = (): ReturnType<typeof routedApi> => routedApi('openai-codex-responses')\nexport const azureOpenAIResponsesApi = (): ReturnType<typeof routedApi> => routedApi('azure-openai-responses')\nexport const googleGenerativeAIApi = (): ReturnType<typeof routedApi> => routedApi('google-generative-ai')\nexport const googleVertexApi = (): ReturnType<typeof routedApi> => routedApi('google-vertex')\nexport const mistralConversationsApi = (): ReturnType<typeof routedApi> => routedApi('mistral-conversations')\nexport const bedrockConverseStreamApi = (): ReturnType<typeof routedApi> => routedApi('bedrock-converse-stream')\nexport const piMessagesApi = (): ReturnType<typeof routedApi> => routedApi('pi-messages')\n\nexport interface StringEnumOptions<T extends readonly string[]> {\n description?: string\n default?: T[number]\n}\n\nexport function StringEnum<T extends readonly string[]>(\n values: T,\n options: StringEnumOptions<T> = {},\n): { type: 'string'; enum: T; description?: string; default?: T[number] } {\n return {\n type: 'string',\n enum: values,\n ...(options.description !== undefined ? { description: options.description } : {}),\n ...(options.default !== undefined ? { default: options.default } : {}),\n }\n}\n"],"x_google_ignoreList":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128],"mappings":"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"}
|