pi2dsh 0.15.2 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +41 -60
  2. package/README.zh.md +34 -54
  3. package/dist/{analyzer-C5FQXB7R.mjs → analyzer-dRAMYI3l.mjs} +2 -2
  4. package/dist/{analyzer-C5FQXB7R.mjs.map → analyzer-dRAMYI3l.mjs.map} +1 -1
  5. package/dist/cli.mjs +2 -3
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/compat/pi-ai.d.mts +1 -1
  8. package/dist/compat/pi-ai.mjs +1 -2
  9. package/dist/compat/pi-coding-agent.mjs +1 -1
  10. package/dist/credentials-oauth.d.mts +8 -2
  11. package/dist/credentials-oauth.d.mts.map +1 -1
  12. package/dist/credentials-oauth.mjs +134 -1
  13. package/dist/credentials-oauth.mjs.map +1 -0
  14. package/dist/{google-generative-ai-2gCFYp-t.mjs → google-generative-ai-Dpb_X-Kt.mjs} +2 -2
  15. package/dist/{google-generative-ai-2gCFYp-t.mjs.map → google-generative-ai-Dpb_X-Kt.mjs.map} +1 -1
  16. package/dist/{google-shared-75IdVyrx.mjs → google-shared-CL1Za-ev.mjs} +12 -12
  17. package/dist/{google-shared-75IdVyrx.mjs.map → google-shared-CL1Za-ev.mjs.map} +1 -1
  18. package/dist/{google-vertex-Bhyo4z2i.mjs → google-vertex-BXRKa49Y.mjs} +2 -2
  19. package/dist/{google-vertex-Bhyo4z2i.mjs.map → google-vertex-BXRKa49Y.mjs.map} +1 -1
  20. package/dist/host.mjs +1 -1
  21. package/dist/index.d.mts.map +1 -1
  22. package/dist/index.mjs +3 -4
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/{compatibility-DVMqXJux.mjs → mcp-config-2s_i_H3R.mjs} +180 -3
  25. package/dist/mcp-config-2s_i_H3R.mjs.map +1 -0
  26. package/dist/{mistral-conversations-DJyeTo8C.mjs → mistral-conversations-D-Kf38nj.mjs} +5491 -407
  27. package/dist/mistral-conversations-D-Kf38nj.mjs.map +1 -0
  28. package/dist/{multipart-parser-SRcGkVuX.mjs → multipart-parser-CBAi6PxA.mjs} +2 -2
  29. package/dist/{multipart-parser-SRcGkVuX.mjs.map → multipart-parser-CBAi6PxA.mjs.map} +1 -1
  30. package/dist/{credentials-oauth-Didpkkjx.mjs → oauth-bridge-C_MAPMGA.mjs} +11 -88
  31. package/dist/oauth-bridge-C_MAPMGA.mjs.map +1 -0
  32. package/dist/oauth-bridge-hOnT3acY.d.mts +34 -0
  33. package/dist/oauth-bridge-hOnT3acY.d.mts.map +1 -0
  34. package/dist/{otel-CBhmS-NR.mjs → otel-EL651-JR.mjs} +2 -2
  35. package/dist/{otel-CBhmS-NR.mjs.map → otel-EL651-JR.mjs.map} +1 -1
  36. package/dist/{pi-ai-DpqiLdPA.mjs → pi-ai-DQPHUR9S.mjs} +252 -7
  37. package/dist/pi-ai-DQPHUR9S.mjs.map +1 -0
  38. package/dist/{pi-ai-ZU5MelXy.d.mts → pi-ai-hGbYES_v.d.mts} +2 -2
  39. package/dist/{pi-ai-ZU5MelXy.d.mts.map → pi-ai-hGbYES_v.d.mts.map} +1 -1
  40. package/dist/{pi-coding-agent-DK8hbJP5.mjs → pi-coding-agent-f3_hNCpd.mjs} +0 -0
  41. package/dist/{pi-coding-agent-DK8hbJP5.mjs.map → pi-coding-agent-f3_hNCpd.mjs.map} +1 -1
  42. package/dist/{runtime-BlbKWw7W.mjs → runtime-C6_pOPmL.mjs} +198 -47
  43. package/dist/runtime-C6_pOPmL.mjs.map +1 -0
  44. package/dist/runtime.d.mts +29 -47
  45. package/dist/runtime.d.mts.map +1 -1
  46. package/dist/runtime.mjs +1 -1
  47. package/dist/{from-BCscBQ9P.mjs → src-85HOaW5W.mjs} +1185 -10
  48. package/dist/src-85HOaW5W.mjs.map +1 -0
  49. package/package.json +28 -21
  50. package/dist/compatibility-DVMqXJux.mjs.map +0 -1
  51. package/dist/completionchunk-Dhk56lZl.mjs +0 -5212
  52. package/dist/completionchunk-Dhk56lZl.mjs.map +0 -1
  53. package/dist/credentials-oauth-Didpkkjx.mjs.map +0 -1
  54. package/dist/from-BCscBQ9P.mjs.map +0 -1
  55. package/dist/mcp-config-jmzbgdHa.mjs +0 -181
  56. package/dist/mcp-config-jmzbgdHa.mjs.map +0 -1
  57. package/dist/mistral-conversations-DJyeTo8C.mjs.map +0 -1
  58. package/dist/openai-responses-BRdGpBX6.mjs +0 -251
  59. package/dist/openai-responses-BRdGpBX6.mjs.map +0 -1
  60. package/dist/pi-ai-DpqiLdPA.mjs.map +0 -1
  61. package/dist/runtime-BlbKWw7W.mjs.map +0 -1
  62. package/dist/src-DlTagfW5.mjs +0 -1186
  63. package/dist/src-DlTagfW5.mjs.map +0 -1
@@ -1,6 +1,16 @@
1
1
 
2
- import { i as __require } from "./rolldown-runtime-CTfmNlz1.mjs";
2
+ import { i as __require, r as __exportAll } from "./rolldown-runtime-CTfmNlz1.mjs";
3
+ import { n as OpenAI } from "./openai-DkzRh5_G.mjs";
3
4
  import { t as AssistantMessageEventStream$1 } from "./event-stream-QxN1yvIF.mjs";
5
+ import { l as createGrammarToolInputProperties, m as clampThinkingLevel$1, r as buildBaseOptions } from "./simple-options-B_GO8FDE.mjs";
6
+ import { t as splitDeferredTools } from "./deferred-tools-BD4g5QUx.mjs";
7
+ import { n as normalizeProviderError, t as formatProviderError } from "./error-body-DKA3lknR.mjs";
8
+ import { t as headersToRecord } from "./headers-CPzZhJQn.mjs";
9
+ import { t as getProviderEnvValue$1 } from "./provider-env-C72pF4vP.mjs";
10
+ import { t as retryProviderRequest } from "./provider-retry-Cw6YJ4cr.mjs";
11
+ import { n as hasCopilotVisionInput, t as buildCopilotDynamicHeaders } from "./github-copilot-headers-CZo2QHrt.mjs";
12
+ import { t as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-BDWtZRKh.mjs";
13
+ import { n as convertResponsesTools, r as processResponsesStream, t as convertResponsesMessages } from "./openai-responses-shared-BmnSvdKL.mjs";
4
14
  import { AsyncLocalStorage } from "node:async_hooks";
5
15
  import { Type as Type$1 } from "typebox";
6
16
  //#region src/compat/vendor/pi-uuid.ts
@@ -635,6 +645,241 @@ function lazyApi(load, capabilities) {
635
645
  return api;
636
646
  }
637
647
  //#endregion
648
+ //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js
649
+ var openai_responses_exports = /* @__PURE__ */ __exportAll({
650
+ stream: () => stream$1,
651
+ streamSimple: () => streamSimple
652
+ });
653
+ const OPENAI_TOOL_CALL_PROVIDERS = /* @__PURE__ */ new Set([
654
+ "openai",
655
+ "openai-codex",
656
+ "opencode"
657
+ ]);
658
+ const OPENAI_RESPONSES_MIN_OUTPUT_TOKENS = 16;
659
+ function hasHeader(headers, name) {
660
+ if (!headers) return false;
661
+ const expected = name.toLowerCase();
662
+ for (const [key, value] of Object.entries(headers)) if (key.toLowerCase() === expected && value !== null && value.trim().length > 0) return true;
663
+ return false;
664
+ }
665
+ function getClientApiKey(provider, apiKey, headers) {
666
+ if (apiKey) return apiKey;
667
+ if (hasHeader(headers, "authorization") || hasHeader(headers, "cf-aig-authorization")) return "unused";
668
+ throw new Error(`No API key for provider: ${provider}`);
669
+ }
670
+ function detectSessionAffinityFormat(model) {
671
+ return model.provider === "openrouter" || model.baseUrl.includes("openrouter.ai") ? "openrouter" : "openai";
672
+ }
673
+ /**
674
+ * Resolve cache retention preference.
675
+ * Defaults to "short" and uses PI_CACHE_RETENTION for backward compatibility.
676
+ */
677
+ function resolveCacheRetention(cacheRetention, env) {
678
+ if (cacheRetention) return cacheRetention;
679
+ if (getProviderEnvValue$1("PI_CACHE_RETENTION", env) === "long") return "long";
680
+ return "short";
681
+ }
682
+ function getCompat(model) {
683
+ return {
684
+ supportsDeveloperRole: model.compat?.supportsDeveloperRole ?? true,
685
+ sessionAffinityFormat: model.compat?.sessionAffinityFormat ?? detectSessionAffinityFormat(model),
686
+ supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,
687
+ supportsStrictMode: model.compat?.supportsStrictMode ?? false,
688
+ supportsOpenAIGrammarTools: model.compat?.supportsOpenAIGrammarTools ?? false,
689
+ supportsToolSearch: model.compat?.supportsToolSearch ?? false,
690
+ supportsExplicitPromptCacheMode: model.compat?.supportsExplicitPromptCacheMode ?? false
691
+ };
692
+ }
693
+ function getPromptCacheRetention(compat, cacheRetention) {
694
+ return cacheRetention === "long" && compat.supportsLongCacheRetention ? "24h" : void 0;
695
+ }
696
+ function formatOpenAIResponsesError(error) {
697
+ return formatProviderError(normalizeProviderError(error), "OpenAI API error");
698
+ }
699
+ /**
700
+ * Generate function for OpenAI Responses API
701
+ */
702
+ const stream$1 = (model, context, options) => {
703
+ const stream = new AssistantMessageEventStream$1();
704
+ (async () => {
705
+ const output = {
706
+ role: "assistant",
707
+ content: [],
708
+ api: model.api,
709
+ provider: model.provider,
710
+ model: model.id,
711
+ usage: {
712
+ input: 0,
713
+ output: 0,
714
+ cacheRead: 0,
715
+ cacheWrite: 0,
716
+ totalTokens: 0,
717
+ cost: {
718
+ input: 0,
719
+ output: 0,
720
+ cacheRead: 0,
721
+ cacheWrite: 0,
722
+ total: 0
723
+ }
724
+ },
725
+ stopReason: "pending",
726
+ timestamp: Date.now()
727
+ };
728
+ try {
729
+ const apiKey = getClientApiKey(model.provider, options?.apiKey, options?.headers);
730
+ const cacheSessionId = resolveCacheRetention(options?.cacheRetention, options?.env) === "none" ? void 0 : options?.sessionId;
731
+ const compat = getCompat(model);
732
+ const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools);
733
+ const client = createClient(model, context, apiKey, options?.headers, options?.fetch, cacheSessionId);
734
+ let params = buildParams(model, context, options, compat, grammarToolInputProperties);
735
+ const nextParams = await options?.onPayload?.(params, model);
736
+ if (nextParams !== void 0) params = nextParams;
737
+ const requestOptions = {
738
+ ...options?.signal ? { signal: options.signal } : {},
739
+ ...options?.timeoutMs !== void 0 ? { timeout: options.timeoutMs } : {},
740
+ maxRetries: 0
741
+ };
742
+ const { data: openaiStream, response } = await retryProviderRequest(() => client.responses.create(params, requestOptions).withResponse(), {
743
+ maxRetries: options?.maxRetries,
744
+ maxRetryDelayMs: options?.maxRetryDelayMs,
745
+ signal: options?.signal
746
+ });
747
+ await options?.onResponse?.({
748
+ status: response.status,
749
+ headers: headersToRecord(response.headers)
750
+ }, model);
751
+ stream.push({
752
+ type: "start",
753
+ partial: output
754
+ });
755
+ await processResponsesStream(openaiStream, output, stream, model, {
756
+ serviceTier: options?.serviceTier,
757
+ grammarToolInputProperties,
758
+ applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model)
759
+ });
760
+ if (options?.signal?.aborted) throw new Error("Request was aborted");
761
+ if (output.stopReason === "pending") throw new Error("OpenAI Responses stream ended without a stop reason");
762
+ if (output.stopReason === "aborted" || output.stopReason === "error") throw new Error(output.errorMessage || "An unknown error occurred");
763
+ stream.push({
764
+ type: "done",
765
+ reason: output.stopReason,
766
+ message: output
767
+ });
768
+ stream.end();
769
+ } catch (error) {
770
+ for (const block of output.content) {
771
+ delete block.index;
772
+ delete block.partialJson;
773
+ delete block.customInput;
774
+ }
775
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
776
+ output.errorMessage = formatOpenAIResponsesError(error);
777
+ stream.push({
778
+ type: "error",
779
+ reason: output.stopReason,
780
+ error: output
781
+ });
782
+ stream.end();
783
+ }
784
+ })();
785
+ return stream;
786
+ };
787
+ const streamSimple = (model, context, options) => {
788
+ getClientApiKey(model.provider, options?.apiKey, options?.headers);
789
+ const base = buildBaseOptions(model, context, options, options?.apiKey);
790
+ const clampedReasoning = options?.reasoning ? clampThinkingLevel$1(model, options.reasoning) : void 0;
791
+ const reasoningEffort = clampedReasoning === "off" ? void 0 : clampedReasoning;
792
+ return stream$1(model, context, {
793
+ ...base,
794
+ reasoningEffort
795
+ });
796
+ };
797
+ function createClient(model, context, apiKey, optionsHeaders, fetch, sessionId) {
798
+ const compat = getCompat(model);
799
+ const headers = { ...model.headers };
800
+ if (model.provider === "github-copilot") {
801
+ const hasImages = hasCopilotVisionInput(context.messages);
802
+ const copilotHeaders = buildCopilotDynamicHeaders({
803
+ messages: context.messages,
804
+ hasImages
805
+ });
806
+ Object.assign(headers, copilotHeaders);
807
+ }
808
+ if (sessionId) {
809
+ if (compat.sessionAffinityFormat === "openrouter") headers["x-session-id"] = sessionId;
810
+ else {
811
+ if (compat.sessionAffinityFormat === "openai") headers.session_id = sessionId;
812
+ headers["x-client-request-id"] = sessionId;
813
+ }
814
+ }
815
+ if (optionsHeaders) Object.assign(headers, optionsHeaders);
816
+ return new OpenAI({
817
+ apiKey,
818
+ baseURL: model.baseUrl,
819
+ dangerouslyAllowBrowser: true,
820
+ fetch,
821
+ defaultHeaders: headers
822
+ });
823
+ }
824
+ function buildParams(model, context, options, compat = getCompat(model), grammarToolInputProperties = createGrammarToolInputProperties(context.tools, compat.supportsOpenAIGrammarTools)) {
825
+ const toolPlacement = splitDeferredTools(context, compat.supportsToolSearch);
826
+ const messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS, {
827
+ grammarToolInputProperties,
828
+ deferredTools: toolPlacement.deferred,
829
+ toolOptions: {
830
+ supportsStrictMode: compat.supportsStrictMode,
831
+ supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools
832
+ }
833
+ });
834
+ const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);
835
+ const disableImplicitPromptCache = cacheRetention === "none" && compat.supportsExplicitPromptCacheMode;
836
+ const params = {
837
+ model: model.id,
838
+ input: messages,
839
+ stream: true,
840
+ prompt_cache_key: cacheRetention === "none" ? void 0 : clampOpenAIPromptCacheKey(options?.sessionId),
841
+ prompt_cache_retention: getPromptCacheRetention(compat, cacheRetention),
842
+ prompt_cache_options: disableImplicitPromptCache ? { mode: "explicit" } : void 0,
843
+ store: false
844
+ };
845
+ if (options?.maxTokens) params.max_output_tokens = Math.max(options.maxTokens, OPENAI_RESPONSES_MIN_OUTPUT_TOKENS);
846
+ if (options?.temperature !== void 0) params.temperature = options?.temperature;
847
+ if (options?.serviceTier !== void 0) params.service_tier = options.serviceTier;
848
+ if (toolPlacement.immediate.length > 0) params.tools = convertResponsesTools(toolPlacement.immediate, {
849
+ supportsStrictMode: compat.supportsStrictMode,
850
+ supportsOpenAIGrammarTools: compat.supportsOpenAIGrammarTools
851
+ });
852
+ if (options?.toolChoice !== void 0) params.tool_choice = options.toolChoice;
853
+ if (model.reasoning) {
854
+ if (options?.reasoningEffort || options?.reasoningSummary) {
855
+ params.reasoning = {
856
+ effort: options?.reasoningEffort ? model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort : "medium",
857
+ summary: options?.reasoningSummary || "auto"
858
+ };
859
+ params.include = ["reasoning.encrypted_content"];
860
+ } else if (model.provider !== "github-copilot" && model.thinkingLevelMap?.off !== null) params.reasoning = { effort: model.thinkingLevelMap?.off ?? "none" };
861
+ if (model.provider === "xai") params.include = ["reasoning.encrypted_content"];
862
+ }
863
+ if (options?.samplingParams) Object.assign(params, options.samplingParams);
864
+ return params;
865
+ }
866
+ function getServiceTierCostMultiplier(model, serviceTier) {
867
+ switch (serviceTier) {
868
+ case "flex": return .5;
869
+ case "priority": return model.id === "gpt-5.5" ? 2.5 : 2;
870
+ default: return 1;
871
+ }
872
+ }
873
+ function applyServiceTierPricing(usage, serviceTier, model) {
874
+ const multiplier = getServiceTierCostMultiplier(model, serviceTier);
875
+ if (multiplier === 1) return;
876
+ usage.cost.input *= multiplier;
877
+ usage.cost.output *= multiplier;
878
+ usage.cost.cacheRead *= multiplier;
879
+ usage.cost.cacheWrite *= multiplier;
880
+ usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
881
+ }
882
+ //#endregion
638
883
  //#region src/compat/vendor/pi-oauth-flows/provider-env.ts
639
884
  let procEnvCache = null;
640
885
  /**
@@ -3007,7 +3252,7 @@ const anthropicMessagesApi = () => lazyApi(() => import("./anthropic-messages-Ca
3007
3252
  const openAICompletionsApi = () => lazyApi(() => import("./openai-completions-DrjrWRdX.mjs"));
3008
3253
  //#endregion
3009
3254
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.lazy.js
3010
- const openAIResponsesApi = () => lazyApi(() => import("./openai-responses-BRdGpBX6.mjs").then((n) => n.t));
3255
+ const openAIResponsesApi = () => lazyApi(() => Promise.resolve().then(() => openai_responses_exports));
3011
3256
  //#endregion
3012
3257
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.lazy.js
3013
3258
  const openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-responses-DedxQjNG.mjs"));
@@ -3016,13 +3261,13 @@ const openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-respo
3016
3261
  const azureOpenAIResponsesApi = () => lazyApi(() => import("./azure-openai-responses-HKWkzl2m.mjs"));
3017
3262
  //#endregion
3018
3263
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.lazy.js
3019
- const googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-2gCFYp-t.mjs"));
3264
+ const googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-Dpb_X-Kt.mjs"));
3020
3265
  //#endregion
3021
3266
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.lazy.js
3022
- const googleVertexApi = () => lazyApi(() => import("./google-vertex-Bhyo4z2i.mjs"));
3267
+ const googleVertexApi = () => lazyApi(() => import("./google-vertex-BXRKa49Y.mjs"));
3023
3268
  //#endregion
3024
3269
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.lazy.js
3025
- const mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-DJyeTo8C.mjs"));
3270
+ const mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-D-Kf38nj.mjs").then((n) => n.t));
3026
3271
  //#endregion
3027
3272
  //#region node_modules/.pnpm/@earendil-works+pi-ai@0.84.1_ws@8.21.3_zod@4.4.3/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.lazy.js
3028
3273
  var __rewriteRelativeImportExtension = function(path, preserveJsx) {
@@ -3239,6 +3484,6 @@ function StringEnum(values, options = {}) {
3239
3484
  };
3240
3485
  }
3241
3486
  //#endregion
3242
- export { isContextOverflow as $, stream as A, openAICompletionsApi as B, loadAnthropicOAuth as C, modelsAreEqual as D, loadOpenAICodexOAuth as E, googleVertexApi as F, openaiCodexOAuth as G, kimiCodingOAuth as H, googleGenerativeAIApi as I, ModelsError as J, generatePKCE as K, azureOpenAIResponsesApi as L, piMessagesApi as M, bedrockConverseStreamApi as N, registerApiProvider as O, mistralConversationsApi as P, AssistantMessageEventStream as Q, openAICodexResponsesApi as R, getSupportedThinkingLevels as S, loadKimiCodingOAuth as T, githubCopilotOAuth as U, anthropicMessagesApi as V, anthropicOAuth as W, lazyApi$1 as X, createProvider as Y, lazyStream$1 as Z, getBuiltinProviders as _, __runWithPiAiLlmBridge as a, getProvider as b, builtinProviders as c, contentText as d, isRecoverableLength as et, envApiKeyAuth as f, getBuiltinModels as g, getBuiltinModel as h, __getPiAiLlmBridge as i, unregisterApiProviders as j, registerProvider as k, clampThinkingLevel as l, getApiProviders as m, Type$1 as n, retryAssistantCall as nt, __runWithPiAiRuntime as o, getApiProvider as p, pollOAuthDeviceCodeFlow as q, __createPiAiRuntimeRegistry as r, uuidv7 as rt, __setPiAiLlmBridge as s, StringEnum as t, isRetryableAssistantError as tt, complete as u, getModel as v, loadGitHubCopilotOAuth as w, getProviders as x, getModels as y, openAIResponsesApi as z };
3487
+ export { AssistantMessageEventStream as $, stream as A, openAICompletionsApi as B, loadAnthropicOAuth as C, modelsAreEqual as D, loadOpenAICodexOAuth as E, googleVertexApi as F, openaiCodexOAuth as G, kimiCodingOAuth as H, googleGenerativeAIApi as I, streamSimple as J, generatePKCE as K, azureOpenAIResponsesApi as L, piMessagesApi as M, bedrockConverseStreamApi as N, registerApiProvider as O, mistralConversationsApi as P, lazyStream$1 as Q, openAICodexResponsesApi as R, getSupportedThinkingLevels as S, loadKimiCodingOAuth as T, githubCopilotOAuth as U, anthropicMessagesApi as V, anthropicOAuth as W, createProvider as X, ModelsError as Y, lazyApi$1 as Z, getBuiltinProviders as _, __runWithPiAiLlmBridge as a, getProvider as b, builtinProviders as c, contentText as d, isContextOverflow as et, envApiKeyAuth as f, getBuiltinModels as g, getBuiltinModel as h, __getPiAiLlmBridge as i, uuidv7 as it, unregisterApiProviders as j, registerProvider as k, clampThinkingLevel as l, getApiProviders as m, Type$1 as n, isRetryableAssistantError as nt, __runWithPiAiRuntime as o, getApiProvider as p, pollOAuthDeviceCodeFlow as q, __createPiAiRuntimeRegistry as r, retryAssistantCall as rt, __setPiAiLlmBridge as s, StringEnum as t, isRecoverableLength as tt, complete as u, getModel as v, loadGitHubCopilotOAuth as w, getProviders as x, getModels as y, openAIResponsesApi as z };
3243
3488
 
3244
- //# sourceMappingURL=pi-ai-DpqiLdPA.mjs.map
3489
+ //# sourceMappingURL=pi-ai-DQPHUR9S.mjs.map