@ap3x/ai 0.1.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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/api-registry.d.ts +23 -0
  4. package/dist/api-registry.d.ts.map +1 -0
  5. package/dist/auth/config-dir.d.ts +25 -0
  6. package/dist/auth/config-dir.d.ts.map +1 -0
  7. package/dist/auth/github-copilot.d.ts +74 -0
  8. package/dist/auth/github-copilot.d.ts.map +1 -0
  9. package/dist/auth/index.d.ts +10 -0
  10. package/dist/auth/index.d.ts.map +1 -0
  11. package/dist/auth/jwt.d.ts +32 -0
  12. package/dist/auth/jwt.d.ts.map +1 -0
  13. package/dist/auth/oauth-flow.d.ts +84 -0
  14. package/dist/auth/oauth-flow.d.ts.map +1 -0
  15. package/dist/auth/pkce.d.ts +20 -0
  16. package/dist/auth/pkce.d.ts.map +1 -0
  17. package/dist/auth/providers.d.ts +33 -0
  18. package/dist/auth/providers.d.ts.map +1 -0
  19. package/dist/auth/storage.d.ts +55 -0
  20. package/dist/auth/storage.d.ts.map +1 -0
  21. package/dist/auth/types.d.ts +88 -0
  22. package/dist/auth/types.d.ts.map +1 -0
  23. package/dist/auth/unified.d.ts +29 -0
  24. package/dist/auth/unified.d.ts.map +1 -0
  25. package/dist/env-api-keys.d.ts +16 -0
  26. package/dist/env-api-keys.d.ts.map +1 -0
  27. package/dist/event-stream.d.ts +33 -0
  28. package/dist/event-stream.d.ts.map +1 -0
  29. package/dist/generate-object.d.ts +63 -0
  30. package/dist/generate-object.d.ts.map +1 -0
  31. package/dist/images-models.d.ts +114 -0
  32. package/dist/images-models.d.ts.map +1 -0
  33. package/dist/images-registry.d.ts +23 -0
  34. package/dist/images-registry.d.ts.map +1 -0
  35. package/dist/images-schema.d.ts +21 -0
  36. package/dist/images-schema.d.ts.map +1 -0
  37. package/dist/images.d.ts +13 -0
  38. package/dist/images.d.ts.map +1 -0
  39. package/dist/index.d.ts +59 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +15656 -0
  42. package/dist/models/amazon-bedrock.models.generated.d.ts +1858 -0
  43. package/dist/models/amazon-bedrock.models.generated.d.ts.map +1 -0
  44. package/dist/models/ant-ling.models.generated.d.ts +86 -0
  45. package/dist/models/ant-ling.models.generated.d.ts.map +1 -0
  46. package/dist/models/anthropic.models.generated.d.ts +450 -0
  47. package/dist/models/anthropic.models.generated.d.ts.map +1 -0
  48. package/dist/models/azure-openai-responses.models.generated.d.ts +804 -0
  49. package/dist/models/azure-openai-responses.models.generated.d.ts.map +1 -0
  50. package/dist/models/cerebras.models.generated.d.ts +66 -0
  51. package/dist/models/cerebras.models.generated.d.ts.map +1 -0
  52. package/dist/models/cloudflare-ai-gateway.models.generated.d.ts +786 -0
  53. package/dist/models/cloudflare-ai-gateway.models.generated.d.ts.map +1 -0
  54. package/dist/models/cloudflare-workers-ai.models.generated.d.ts +302 -0
  55. package/dist/models/cloudflare-workers-ai.models.generated.d.ts.map +1 -0
  56. package/dist/models/deepseek.models.generated.d.ts +63 -0
  57. package/dist/models/deepseek.models.generated.d.ts.map +1 -0
  58. package/dist/models/fireworks.models.generated.d.ts +381 -0
  59. package/dist/models/fireworks.models.generated.d.ts.map +1 -0
  60. package/dist/models/github-copilot.models.generated.d.ts +698 -0
  61. package/dist/models/github-copilot.models.generated.d.ts.map +1 -0
  62. package/dist/models/google-vertex.models.generated.d.ts +202 -0
  63. package/dist/models/google-vertex.models.generated.d.ts.map +1 -0
  64. package/dist/models/google.models.generated.d.ts +351 -0
  65. package/dist/models/google.models.generated.d.ts.map +1 -0
  66. package/dist/models/groq.models.generated.d.ts +128 -0
  67. package/dist/models/groq.models.generated.d.ts.map +1 -0
  68. package/dist/models/huggingface.models.generated.d.ts +63 -0
  69. package/dist/models/huggingface.models.generated.d.ts.map +1 -0
  70. package/dist/models/kimi-coding.models.generated.d.ts +63 -0
  71. package/dist/models/kimi-coding.models.generated.d.ts.map +1 -0
  72. package/dist/models/minimax-cn.models.generated.d.ts +54 -0
  73. package/dist/models/minimax-cn.models.generated.d.ts.map +1 -0
  74. package/dist/models/minimax.models.generated.d.ts +54 -0
  75. package/dist/models/minimax.models.generated.d.ts.map +1 -0
  76. package/dist/models/mistral.models.generated.d.ts +513 -0
  77. package/dist/models/mistral.models.generated.d.ts.map +1 -0
  78. package/dist/models/moonshotai-cn.models.generated.d.ts +234 -0
  79. package/dist/models/moonshotai-cn.models.generated.d.ts.map +1 -0
  80. package/dist/models/moonshotai.models.generated.d.ts +234 -0
  81. package/dist/models/moonshotai.models.generated.d.ts.map +1 -0
  82. package/dist/models/nvidia.models.generated.d.ts +563 -0
  83. package/dist/models/nvidia.models.generated.d.ts.map +1 -0
  84. package/dist/models/openai.models.generated.d.ts +827 -0
  85. package/dist/models/openai.models.generated.d.ts.map +1 -0
  86. package/dist/models/opencode.models.generated.d.ts +69 -0
  87. package/dist/models/opencode.models.generated.d.ts.map +1 -0
  88. package/dist/models/openrouter.models.generated.d.ts +87 -0
  89. package/dist/models/openrouter.models.generated.d.ts.map +1 -0
  90. package/dist/models/together.models.generated.d.ts +598 -0
  91. package/dist/models/together.models.generated.d.ts.map +1 -0
  92. package/dist/models/vercel-ai-gateway.models.generated.d.ts +63 -0
  93. package/dist/models/vercel-ai-gateway.models.generated.d.ts.map +1 -0
  94. package/dist/models/xai.models.generated.d.ts +157 -0
  95. package/dist/models/xai.models.generated.d.ts.map +1 -0
  96. package/dist/models/xiaomi-token-plan-ams.models.generated.d.ts +108 -0
  97. package/dist/models/xiaomi-token-plan-ams.models.generated.d.ts.map +1 -0
  98. package/dist/models/xiaomi-token-plan-cn.models.generated.d.ts +108 -0
  99. package/dist/models/xiaomi-token-plan-cn.models.generated.d.ts.map +1 -0
  100. package/dist/models/xiaomi-token-plan-sgp.models.generated.d.ts +108 -0
  101. package/dist/models/xiaomi-token-plan-sgp.models.generated.d.ts.map +1 -0
  102. package/dist/models/xiaomi.models.generated.d.ts +129 -0
  103. package/dist/models/xiaomi.models.generated.d.ts.map +1 -0
  104. package/dist/models/zai-coding-cn.models.generated.d.ts +153 -0
  105. package/dist/models/zai-coding-cn.models.generated.d.ts.map +1 -0
  106. package/dist/models/zai.models.generated.d.ts +153 -0
  107. package/dist/models/zai.models.generated.d.ts.map +1 -0
  108. package/dist/models.d.ts +10734 -0
  109. package/dist/models.d.ts.map +1 -0
  110. package/dist/providers/amazon-bedrock.d.ts +173 -0
  111. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  112. package/dist/providers/anthropic.d.ts +25 -0
  113. package/dist/providers/anthropic.d.ts.map +1 -0
  114. package/dist/providers/azure-openai-responses.d.ts +17 -0
  115. package/dist/providers/azure-openai-responses.d.ts.map +1 -0
  116. package/dist/providers/cloudflare.d.ts +13 -0
  117. package/dist/providers/cloudflare.d.ts.map +1 -0
  118. package/dist/providers/faux-images.d.ts +41 -0
  119. package/dist/providers/faux-images.d.ts.map +1 -0
  120. package/dist/providers/faux.d.ts +61 -0
  121. package/dist/providers/faux.d.ts.map +1 -0
  122. package/dist/providers/github-copilot-headers.d.ts +14 -0
  123. package/dist/providers/github-copilot-headers.d.ts.map +1 -0
  124. package/dist/providers/google-images.d.ts +14 -0
  125. package/dist/providers/google-images.d.ts.map +1 -0
  126. package/dist/providers/google-shared.d.ts +53 -0
  127. package/dist/providers/google-shared.d.ts.map +1 -0
  128. package/dist/providers/google-vertex.d.ts +48 -0
  129. package/dist/providers/google-vertex.d.ts.map +1 -0
  130. package/dist/providers/google.d.ts +47 -0
  131. package/dist/providers/google.d.ts.map +1 -0
  132. package/dist/providers/mistral.d.ts +67 -0
  133. package/dist/providers/mistral.d.ts.map +1 -0
  134. package/dist/providers/openai-codex-responses.d.ts +17 -0
  135. package/dist/providers/openai-codex-responses.d.ts.map +1 -0
  136. package/dist/providers/openai-completions.d.ts +69 -0
  137. package/dist/providers/openai-completions.d.ts.map +1 -0
  138. package/dist/providers/openai-images.d.ts +17 -0
  139. package/dist/providers/openai-images.d.ts.map +1 -0
  140. package/dist/providers/openai-prompt-cache.d.ts +8 -0
  141. package/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  142. package/dist/providers/openai-responses-shared.d.ts +128 -0
  143. package/dist/providers/openai-responses-shared.d.ts.map +1 -0
  144. package/dist/providers/openai-responses.d.ts +63 -0
  145. package/dist/providers/openai-responses.d.ts.map +1 -0
  146. package/dist/providers/provider-runtime.d.ts +34 -0
  147. package/dist/providers/provider-runtime.d.ts.map +1 -0
  148. package/dist/providers/register-builtins.d.ts +11 -0
  149. package/dist/providers/register-builtins.d.ts.map +1 -0
  150. package/dist/providers/register-images.d.ts +8 -0
  151. package/dist/providers/register-images.d.ts.map +1 -0
  152. package/dist/providers/request-dispatch.d.ts +52 -0
  153. package/dist/providers/request-dispatch.d.ts.map +1 -0
  154. package/dist/providers/simple-options.d.ts +42 -0
  155. package/dist/providers/simple-options.d.ts.map +1 -0
  156. package/dist/providers/tool-call-id.d.ts +46 -0
  157. package/dist/providers/tool-call-id.d.ts.map +1 -0
  158. package/dist/providers/transform-messages.d.ts +22 -0
  159. package/dist/providers/transform-messages.d.ts.map +1 -0
  160. package/dist/stream.d.ts +18 -0
  161. package/dist/stream.d.ts.map +1 -0
  162. package/dist/types.d.ts +448 -0
  163. package/dist/types.d.ts.map +1 -0
  164. package/dist/utils/abort-signals.d.ts +16 -0
  165. package/dist/utils/abort-signals.d.ts.map +1 -0
  166. package/dist/utils/estimate.d.ts +35 -0
  167. package/dist/utils/estimate.d.ts.map +1 -0
  168. package/dist/utils/hash.d.ts +7 -0
  169. package/dist/utils/hash.d.ts.map +1 -0
  170. package/dist/utils/json-parse.d.ts +16 -0
  171. package/dist/utils/json-parse.d.ts.map +1 -0
  172. package/dist/utils/node-http-proxy.d.ts +34 -0
  173. package/dist/utils/node-http-proxy.d.ts.map +1 -0
  174. package/dist/utils/overflow.d.ts +25 -0
  175. package/dist/utils/overflow.d.ts.map +1 -0
  176. package/dist/utils/sanitize-unicode.d.ts +9 -0
  177. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  178. package/dist/utils/sse.d.ts +21 -0
  179. package/dist/utils/sse.d.ts.map +1 -0
  180. package/dist/validation.d.ts +31 -0
  181. package/dist/validation.d.ts.map +1 -0
  182. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-id.d.ts","sourceRoot":"","sources":["../../src/providers/tool-call-id.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,SAAS,GACT,SAAS,GACT,QAAQ,CAAC;AAEb,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAOpE,CAAC;AA2BF,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAazE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAUvE;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAoB1E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,UAAQ,GAAG,MAAM,CAiBjG"}
@@ -0,0 +1,22 @@
1
+ import type { Api, AssistantMessage, Message, Model } from "../types";
2
+ /**
3
+ * Cross-provider message normalization, run by every adapter before building a
4
+ * vendor request.
5
+ *
6
+ * Pass 1 (per message):
7
+ * - downgrade images the target model can't accept to text placeholders;
8
+ * - for assistant turns, decide "same model" (provider + api + id match):
9
+ * same-model thinking blocks (incl. redacted and signed-but-empty) are kept
10
+ * for replay; cross-model thinking becomes plain text (or is dropped if
11
+ * empty); cross-model tool calls drop `thoughtSignature` and have their ids
12
+ * rewritten via the optional `normalizeToolCallId` (recording id -> newId so
13
+ * later tool results re-point to the new id).
14
+ *
15
+ * Pass 2 (across messages):
16
+ * - synthesize "No result provided" error tool results for orphaned tool calls
17
+ * (preserves API pairing rules and thinking signatures);
18
+ * - drop assistant turns whose `stopReason` is `error`/`aborted` (incomplete
19
+ * turns must not be replayed).
20
+ */
21
+ export declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string): Message[];
22
+ //# sourceMappingURL=transform-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-messages.d.ts","sourceRoot":"","sources":["../../src/providers/transform-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,gBAAgB,EAEhB,OAAO,EACP,KAAK,EAIN,MAAM,UAAU,CAAC;AAsDlB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAS,GAAG,EAChD,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,KAAK,MAAM,GACzF,OAAO,EAAE,CAwHX"}
@@ -0,0 +1,18 @@
1
+ import type { Api, AssistantMessage, AssistantMessageEventStream, Context, Model, ProviderStreamOptions, SimpleStreamOptions } from "./types";
2
+ export { getEnvApiKey } from "./env-api-keys";
3
+ /**
4
+ * Resolve a provider by `model.api`, inject an env API key when none is set,
5
+ * and delegate to the provider's full entry point. Never throws — a missing
6
+ * provider is surfaced as an `error` event in the returned stream.
7
+ */
8
+ export declare function stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions): AssistantMessageEventStream;
9
+ /** `stream(...).result()` — resolves the final {@link AssistantMessage}. */
10
+ export declare function complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions): Promise<AssistantMessage>;
11
+ /**
12
+ * Like {@link stream} but delegates to the provider's simple entry point, using
13
+ * the provider-agnostic `reasoning` / `thinkingBudgets` surface.
14
+ */
15
+ export declare function streamSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
16
+ /** `streamSimple(...).result()`. */
17
+ export declare function completeSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage>;
18
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,GAAG,EACH,gBAAgB,EAChB,2BAA2B,EAC3B,OAAO,EACP,KAAK,EACL,qBAAqB,EACrB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAoD9C;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,SAAS,GAAG,EACrC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,2BAA2B,CAM7B;AAED,4EAA4E;AAC5E,wBAAsB,QAAQ,CAAC,IAAI,SAAS,GAAG,EAC7C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,GAAG,EAC3C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,2BAA2B,CAM7B;AAED,oCAAoC;AACpC,wBAAsB,cAAc,CAAC,IAAI,SAAS,GAAG,EACnD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAE3B"}
@@ -0,0 +1,448 @@
1
+ import type { TSchema } from "@sinclair/typebox";
2
+ import type { AssistantMessageEventStream } from "./event-stream";
3
+ export type { AssistantMessageEventStream } from "./event-stream";
4
+ /**
5
+ * The known wire-protocol families AP3X ships providers for. The union is left
6
+ * open (see {@link Api}) so custom providers can register arbitrary api ids.
7
+ */
8
+ export type KnownApi = "openai-completions" | "mistral-conversations" | "openai-responses" | "azure-openai-responses" | "openai-codex-responses" | "anthropic-messages" | "bedrock-converse-stream" | "google-generative-ai" | "google-vertex";
9
+ /** Open string union: a known api family or any custom registered id. */
10
+ export type Api = KnownApi | (string & {});
11
+ export type KnownImagesApi = "openrouter-images" | "openai-images" | "google-images" | "faux-images";
12
+ export type ImagesApi = KnownImagesApi | (string & {});
13
+ /** Provider slugs AP3X knows about. Open union via {@link Provider}. */
14
+ export type KnownProvider = "amazon-bedrock" | "ant-ling" | "anthropic" | "google" | "google-vertex" | "openai" | "azure-openai-responses" | "openai-codex" | "nvidia" | "deepseek" | "github-copilot" | "xai" | "groq" | "cerebras" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "mistral" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "huggingface" | "fireworks" | "together" | "opencode" | "opencode-go" | "kimi-coding" | "cloudflare-workers-ai" | "cloudflare-ai-gateway" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp";
15
+ export type Provider = KnownProvider | (string & {});
16
+ export type KnownImagesProvider = "openrouter" | "openai" | "google" | "faux";
17
+ export type ImagesProvider = KnownImagesProvider | (string & {});
18
+ /** Abstract reasoning intensity, provider-agnostic. */
19
+ export type ThinkingLevel = "minimal" | "low" | "medium" | "high" | "xhigh";
20
+ /** A thinking level, or "off" to disable reasoning entirely. */
21
+ export type ModelThinkingLevel = "off" | ThinkingLevel;
22
+ /**
23
+ * Per-model map from an abstract thinking level to a provider-native value.
24
+ * A missing key falls back to the provider default; a `null` value marks the
25
+ * level as unsupported by that model.
26
+ */
27
+ export type ThinkingLevelMap = Partial<Record<ModelThinkingLevel, string | null>>;
28
+ /** Token budgets per thinking level for token-budget providers. */
29
+ export interface ThinkingBudgets {
30
+ minimal?: number;
31
+ low?: number;
32
+ medium?: number;
33
+ high?: number;
34
+ }
35
+ /** Prompt-cache retention preference. Providers map this onto native values. */
36
+ export type CacheRetention = "none" | "short" | "long";
37
+ /** Preferred transport for providers that support multiple. */
38
+ export type Transport = "sse" | "websocket" | "websocket-cached" | "auto";
39
+ /** Provider-scoped environment overrides. Values take precedence over `process.env`. */
40
+ export type ProviderEnv = Record<string, string>;
41
+ /**
42
+ * Caller header overrides merged over provider/API defaults. A string value
43
+ * sets (or replaces) a header; a `null` value SUPPRESSES a default header of
44
+ * the same name — distinct from an absent key, which leaves the default intact.
45
+ */
46
+ export type ProviderHeaders = Record<string, string | null>;
47
+ /** Minimal HTTP response surface exposed to the `onResponse` hook. */
48
+ export interface ProviderResponse {
49
+ status: number;
50
+ headers: Record<string, string>;
51
+ }
52
+ /** Base request options shared by every provider's full entry point. */
53
+ export interface StreamOptions {
54
+ temperature?: number;
55
+ maxTokens?: number;
56
+ signal?: AbortSignal;
57
+ apiKey?: string;
58
+ /** Preferred transport; ignored by providers that don't support it. */
59
+ transport?: Transport;
60
+ /** Prompt-cache retention preference. Default: "short". */
61
+ cacheRetention?: CacheRetention;
62
+ /** Session id used by providers for cache affinity / routing. */
63
+ sessionId?: string;
64
+ /**
65
+ * Inspect or replace the provider payload before it is sent. Return
66
+ * `undefined` to leave the payload unchanged.
67
+ */
68
+ onPayload?: (payload: unknown, model: Model<Api>) => unknown | undefined | Promise<unknown | undefined>;
69
+ /** Invoked after HTTP response headers arrive, before the body is consumed. */
70
+ onResponse?: (response: ProviderResponse, model: Model<Api>) => void | Promise<void>;
71
+ /**
72
+ * Extra HTTP headers merged over provider defaults (caller wins). A `null`
73
+ * value suppresses a provider/API default header with the same name.
74
+ */
75
+ headers?: ProviderHeaders;
76
+ /** HTTP request timeout in ms for SDKs that support it. */
77
+ timeoutMs?: number;
78
+ /** WebSocket connect-handshake timeout in ms. */
79
+ websocketConnectTimeoutMs?: number;
80
+ /** Maximum client-side retry attempts. */
81
+ maxRetries?: number;
82
+ /**
83
+ * Cap (ms) on a server-requested retry delay. If the server asks for longer,
84
+ * fail fast and surface the requested delay. Default 60000; 0 disables.
85
+ */
86
+ maxRetryDelayMs?: number;
87
+ /** Free-form metadata; providers read the fields they understand. */
88
+ metadata?: Record<string, unknown>;
89
+ /**
90
+ * Provider-scoped environment overrides. When present, values take precedence
91
+ * over `process.env` for provider configuration (endpoints, regional
92
+ * settings). Absent → resolution falls back to `process.env` unchanged.
93
+ */
94
+ env?: ProviderEnv;
95
+ }
96
+ /** {@link StreamOptions} plus arbitrary provider-specific extras. */
97
+ export type ProviderStreamOptions = StreamOptions & Record<string, unknown>;
98
+ /** Request options for one-shot image generation. */
99
+ export interface ImagesOptions {
100
+ signal?: AbortSignal;
101
+ apiKey?: string;
102
+ onPayload?: (payload: unknown, model: ImagesModel<ImagesApi>) => unknown | undefined | Promise<unknown | undefined>;
103
+ onResponse?: (response: ProviderResponse, model: ImagesModel<ImagesApi>) => void | Promise<void>;
104
+ headers?: Record<string, string>;
105
+ timeoutMs?: number;
106
+ maxRetries?: number;
107
+ maxRetryDelayMs?: number;
108
+ metadata?: Record<string, unknown>;
109
+ }
110
+ export type ProviderImagesOptions = ImagesOptions & Record<string, unknown>;
111
+ /**
112
+ * Provider-agnostic options for `streamSimple`/`completeSimple`. The single
113
+ * `reasoning` knob is mapped onto each provider's native reasoning surface.
114
+ */
115
+ export interface SimpleStreamOptions extends StreamOptions {
116
+ reasoning?: ThinkingLevel;
117
+ thinkingBudgets?: ThinkingBudgets;
118
+ }
119
+ /**
120
+ * The function shape every text provider implements.
121
+ *
122
+ * Contract: returns a stream synchronously. After invocation, request, model
123
+ * and runtime failures are encoded as an `error` event in the stream — never
124
+ * thrown. An error termination yields an {@link AssistantMessage} with
125
+ * `stopReason` of `"error"` or `"aborted"` and an `errorMessage`.
126
+ */
127
+ export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: Context, options?: TOptions) => AssistantMessageEventStream;
128
+ export type ImagesFunction<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> = (model: ImagesModel<TApi>, context: ImagesContext, options?: TOptions) => Promise<AssistantImages>;
129
+ /** Structured text-block signature for providers that round-trip message ids. */
130
+ export interface TextSignatureV1 {
131
+ v: 1;
132
+ id: string;
133
+ phase?: "commentary" | "final_answer";
134
+ }
135
+ export interface TextContent {
136
+ type: "text";
137
+ text: string;
138
+ /** Opaque per-block signature (legacy id string or {@link TextSignatureV1} JSON). */
139
+ textSignature?: string;
140
+ }
141
+ export interface ThinkingContent {
142
+ type: "thinking";
143
+ thinking: string;
144
+ /** Opaque reasoning signature; for redacted blocks holds the encrypted payload. */
145
+ thinkingSignature?: string;
146
+ /** When true the thinking was redacted by safety filters. */
147
+ redacted?: boolean;
148
+ }
149
+ export interface ImageContent {
150
+ type: "image";
151
+ /** base64-encoded image bytes. */
152
+ data: string;
153
+ /** e.g. "image/png", "image/jpeg". */
154
+ mimeType: string;
155
+ }
156
+ export interface ToolCall {
157
+ type: "toolCall";
158
+ id: string;
159
+ name: string;
160
+ arguments: Record<string, any>;
161
+ /** Google-specific: opaque signature for reusing thought context. */
162
+ thoughtSignature?: string;
163
+ }
164
+ export interface Usage {
165
+ input: number;
166
+ output: number;
167
+ cacheRead: number;
168
+ cacheWrite: number;
169
+ /**
170
+ * Subset of `cacheWrite` written with 1h retention. Only providers that split
171
+ * cache-write retention (Anthropic) report this. Priced at 2× base input by
172
+ * {@link calculateCost}. Left undefined when the provider does not report it.
173
+ */
174
+ cacheWrite1h?: number;
175
+ /**
176
+ * Reasoning/thinking tokens when the provider reports a breakdown. A subset of
177
+ * `output` (which already includes these). Set by providers that expose it;
178
+ * left undefined by providers that don't.
179
+ */
180
+ reasoning?: number;
181
+ totalTokens: number;
182
+ cost: {
183
+ input: number;
184
+ output: number;
185
+ cacheRead: number;
186
+ cacheWrite: number;
187
+ total: number;
188
+ };
189
+ }
190
+ export type StopReason = "stop" | "length" | "toolUse" | "error" | "aborted";
191
+ export interface UserMessage {
192
+ role: "user";
193
+ content: string | (TextContent | ImageContent)[];
194
+ timestamp: number;
195
+ }
196
+ export interface AssistantMessage {
197
+ role: "assistant";
198
+ content: (TextContent | ThinkingContent | ToolCall)[];
199
+ api: Api;
200
+ provider: Provider;
201
+ model: string;
202
+ /** Concrete response model when it differs from the requested model. */
203
+ responseModel?: string;
204
+ /** Provider-issued response/message identifier when available. */
205
+ responseId?: string;
206
+ /** Redacted runtime diagnostics for failures and recoveries. */
207
+ diagnostics?: AssistantMessageDiagnostic[];
208
+ usage: Usage;
209
+ stopReason: StopReason;
210
+ errorMessage?: string;
211
+ timestamp: number;
212
+ }
213
+ export interface ToolResultMessage<TDetails = any> {
214
+ role: "toolResult";
215
+ toolCallId: string;
216
+ toolName: string;
217
+ content: (TextContent | ImageContent)[];
218
+ details?: TDetails;
219
+ isError: boolean;
220
+ timestamp: number;
221
+ }
222
+ export type Message = UserMessage | AssistantMessage | ToolResultMessage;
223
+ export type ImagesInputContent = TextContent | ImageContent;
224
+ export type ImagesOutputContent = TextContent | ImageContent;
225
+ export interface ImagesContext {
226
+ input: ImagesInputContent[];
227
+ }
228
+ export type ImagesStopReason = "stop" | "error" | "aborted";
229
+ export interface AssistantImages {
230
+ api: ImagesApi;
231
+ provider: ImagesProvider;
232
+ model: string;
233
+ output: ImagesOutputContent[];
234
+ responseId?: string;
235
+ usage?: Usage;
236
+ stopReason: ImagesStopReason;
237
+ errorMessage?: string;
238
+ timestamp: number;
239
+ }
240
+ /** A callable tool: a name, a description and a TypeBox/JSON-Schema for its args. */
241
+ export interface Tool<TParameters extends TSchema = TSchema> {
242
+ name: string;
243
+ description: string;
244
+ parameters: TParameters;
245
+ }
246
+ export interface Context {
247
+ systemPrompt?: string;
248
+ messages: Message[];
249
+ tools?: Tool[];
250
+ }
251
+ /** Structured diagnostic captured alongside a failed/recovered message. */
252
+ export interface DiagnosticErrorInfo {
253
+ name?: string;
254
+ message: string;
255
+ stack?: string;
256
+ code?: string | number;
257
+ }
258
+ export interface AssistantMessageDiagnostic {
259
+ type: string;
260
+ timestamp: number;
261
+ error?: DiagnosticErrorInfo;
262
+ details?: Record<string, unknown>;
263
+ }
264
+ /**
265
+ * The streaming protocol. A well-formed stream emits `start`, then per content
266
+ * block a `*_start` / zero-or-more `*_delta` / `*_end` (or `toolcall_end`)
267
+ * sequence, terminating with exactly one `done` or `error`.
268
+ */
269
+ export type AssistantMessageEvent = {
270
+ type: "start";
271
+ partial: AssistantMessage;
272
+ } | {
273
+ type: "text_start";
274
+ contentIndex: number;
275
+ partial: AssistantMessage;
276
+ } | {
277
+ type: "text_delta";
278
+ contentIndex: number;
279
+ delta: string;
280
+ partial: AssistantMessage;
281
+ } | {
282
+ type: "text_end";
283
+ contentIndex: number;
284
+ content: string;
285
+ partial: AssistantMessage;
286
+ } | {
287
+ type: "thinking_start";
288
+ contentIndex: number;
289
+ partial: AssistantMessage;
290
+ } | {
291
+ type: "thinking_delta";
292
+ contentIndex: number;
293
+ delta: string;
294
+ partial: AssistantMessage;
295
+ } | {
296
+ type: "thinking_end";
297
+ contentIndex: number;
298
+ content: string;
299
+ partial: AssistantMessage;
300
+ } | {
301
+ type: "toolcall_start";
302
+ contentIndex: number;
303
+ partial: AssistantMessage;
304
+ } | {
305
+ type: "toolcall_delta";
306
+ contentIndex: number;
307
+ delta: string;
308
+ partial: AssistantMessage;
309
+ } | {
310
+ type: "toolcall_end";
311
+ contentIndex: number;
312
+ toolCall: ToolCall;
313
+ partial: AssistantMessage;
314
+ } | {
315
+ type: "done";
316
+ reason: Extract<StopReason, "stop" | "length" | "toolUse">;
317
+ message: AssistantMessage;
318
+ } | {
319
+ type: "error";
320
+ reason: Extract<StopReason, "aborted" | "error">;
321
+ error: AssistantMessage;
322
+ };
323
+ /** Override URL-based auto-detection for OpenAI-completions-compatible providers. */
324
+ export interface OpenAICompletionsCompat {
325
+ supportsStore?: boolean;
326
+ supportsDeveloperRole?: boolean;
327
+ supportsReasoningEffort?: boolean;
328
+ /** Default: true. */
329
+ supportsUsageInStreaming?: boolean;
330
+ maxTokensField?: "max_completion_tokens" | "max_tokens";
331
+ requiresToolResultName?: boolean;
332
+ requiresAssistantAfterToolResult?: boolean;
333
+ requiresThinkingAsText?: boolean;
334
+ requiresReasoningContentOnAssistantMessages?: boolean;
335
+ /** Default: "openai". */
336
+ thinkingFormat?: "openai" | "openrouter" | "deepseek" | "together" | "zai" | "qwen" | "qwen-chat-template" | "string-thinking" | "ant-ling";
337
+ openRouterRouting?: OpenRouterRouting;
338
+ vercelGatewayRouting?: VercelGatewayRouting;
339
+ zaiToolStream?: boolean;
340
+ /** Default: true. */
341
+ supportsStrictMode?: boolean;
342
+ cacheControlFormat?: "anthropic";
343
+ sendSessionAffinityHeaders?: boolean;
344
+ /** Default: true. */
345
+ supportsLongCacheRetention?: boolean;
346
+ }
347
+ /** Override auto-detection for OpenAI-Responses-compatible providers. */
348
+ export interface OpenAIResponsesCompat {
349
+ /** Default: true. */
350
+ supportsDeveloperRole?: boolean;
351
+ /** Default: true. */
352
+ sendSessionIdHeader?: boolean;
353
+ /** Default: true. */
354
+ supportsLongCacheRetention?: boolean;
355
+ }
356
+ /** Override auto-detection for Anthropic-Messages-compatible providers. */
357
+ export interface AnthropicMessagesCompat {
358
+ /** Default: true. */
359
+ supportsEagerToolInputStreaming?: boolean;
360
+ /** Default: true. */
361
+ supportsLongCacheRetention?: boolean;
362
+ /** Default: false. */
363
+ sendSessionAffinityHeaders?: boolean;
364
+ /** Default: true. */
365
+ supportsCacheControlOnTools?: boolean;
366
+ /** Default: true. */
367
+ supportsTemperature?: boolean;
368
+ /** Default: false. */
369
+ forceAdaptiveThinking?: boolean;
370
+ /** Default: false. */
371
+ allowEmptySignature?: boolean;
372
+ }
373
+ /** OpenRouter provider-routing preferences (sent as the `provider` field). */
374
+ export interface OpenRouterRouting {
375
+ allow_fallbacks?: boolean;
376
+ require_parameters?: boolean;
377
+ data_collection?: "deny" | "allow";
378
+ zdr?: boolean;
379
+ enforce_distillable_text?: boolean;
380
+ order?: string[];
381
+ only?: string[];
382
+ ignore?: string[];
383
+ quantizations?: string[];
384
+ sort?: string | {
385
+ by?: string;
386
+ partition?: string | null;
387
+ };
388
+ max_price?: {
389
+ prompt?: number | string;
390
+ completion?: number | string;
391
+ image?: number | string;
392
+ audio?: number | string;
393
+ request?: number | string;
394
+ };
395
+ preferred_min_throughput?: number | {
396
+ p50?: number;
397
+ p75?: number;
398
+ p90?: number;
399
+ p99?: number;
400
+ };
401
+ preferred_max_latency?: number | {
402
+ p50?: number;
403
+ p75?: number;
404
+ p90?: number;
405
+ p99?: number;
406
+ };
407
+ }
408
+ /** Vercel AI Gateway routing preferences. */
409
+ export interface VercelGatewayRouting {
410
+ only?: string[];
411
+ order?: string[];
412
+ }
413
+ /** Static metadata describing a single model. */
414
+ export interface Model<TApi extends Api> {
415
+ id: string;
416
+ name: string;
417
+ api: TApi;
418
+ provider: Provider;
419
+ baseUrl: string;
420
+ reasoning: boolean;
421
+ /** Maps abstract thinking levels to provider-native values; null = unsupported. */
422
+ thinkingLevelMap?: ThinkingLevelMap;
423
+ input: ("text" | "image")[];
424
+ /** Per-bucket rate in USD per million tokens. */
425
+ cost: {
426
+ input: number;
427
+ output: number;
428
+ cacheRead: number;
429
+ cacheWrite: number;
430
+ };
431
+ contextWindow: number;
432
+ maxTokens: number;
433
+ headers?: Record<string, string>;
434
+ /** Compatibility overrides; the applicable shape depends on `api`. */
435
+ compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : never;
436
+ }
437
+ export interface ImagesModel<TApi extends ImagesApi> extends Omit<Model<Api>, "api" | "provider" | "reasoning" | "contextWindow" | "maxTokens" | "compat"> {
438
+ api: TApi;
439
+ provider: ImagesProvider;
440
+ output: ("text" | "image")[];
441
+ }
442
+ /** The interface a text provider implements: a full and a simple entry point. */
443
+ export interface ApiProvider<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> {
444
+ api: TApi;
445
+ stream: StreamFunction<TApi, TOptions>;
446
+ streamSimple: StreamFunction<TApi, SimpleStreamOptions>;
447
+ }
448
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAElE,YAAY,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,wBAAwB,GACxB,oBAAoB,GACpB,yBAAyB,GACzB,sBAAsB,GACtB,eAAe,CAAC;AAEpB,yEAAyE;AACzE,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE3C,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,aAAa,CAAC;AAClB,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEvD,wEAAwE;AACxE,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,wBAAwB,GACxB,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,KAAK,GACL,MAAM,GACN,UAAU,GACV,YAAY,GACZ,mBAAmB,GACnB,KAAK,GACL,eAAe,GACf,SAAS,GACT,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,aAAa,GACb,WAAW,GACX,UAAU,GACV,UAAU,GACV,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,uBAAuB,GACvB,QAAQ,GACR,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEjE,uDAAuD;AACvD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5E,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,aAAa,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAElF,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAE1E,wFAAwF;AACxF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KACd,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACxD,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF;;;OAGG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;;OAIG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5E,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAC1B,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,GAAG,GAAG,GAAG,EACtB,QAAQ,SAAS,aAAa,GAAG,aAAa,IAC5C,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,KAAK,2BAA2B,CAAC;AAE9F,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,SAAS,GAAG,SAAS,EAClC,QAAQ,SAAS,aAAa,GAAG,aAAa,IAC5C,CACF,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACxB,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,QAAQ,KACf,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,CAAC,CAAC;IACL,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,GAAG,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC;IACtD,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAC3C,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,GAAG;IAC/C,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,MAAM,WAAW,IAAI,CAAC,WAAW,SAAS,OAAO,GAAG,OAAO;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC7F;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC;CAC3B,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEjG,qFAAqF;AACrF,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB;IACrB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC;IACxD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,2CAA2C,CAAC,EAAE,OAAO,CAAC;IACtD,yBAAyB;IACzB,cAAc,CAAC,EACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,UAAU,GACV,KAAK,GACL,MAAM,GACN,oBAAoB,GACpB,iBAAiB,GACjB,UAAU,CAAC;IACf,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,qBAAqB;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,sBAAsB;IACtB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB;IACrB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,qBAAqB;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3D,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC3B,CAAC;IACF,wBAAwB,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/F,qBAAqB,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7F;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,KAAK,CAAC,IAAI,SAAS,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAC5B,iDAAiD;IACjD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sEAAsE;IACtE,MAAM,CAAC,EAAE,IAAI,SAAS,oBAAoB,GACtC,uBAAuB,GACvB,IAAI,SAAS,kBAAkB,GAC7B,qBAAqB,GACrB,IAAI,SAAS,oBAAoB,GAC/B,uBAAuB,GACvB,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,SAAS,CACjD,SAAQ,IAAI,CACV,KAAK,CAAC,GAAG,CAAC,EACV,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,WAAW,GAAG,QAAQ,CAC5E;IACD,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC9B;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW,CAC1B,IAAI,SAAS,GAAG,GAAG,GAAG,EACtB,QAAQ,SAAS,aAAa,GAAG,aAAa;IAE9C,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,YAAY,EAAE,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;CACzD"}
@@ -0,0 +1,16 @@
1
+ export interface CombinedAbortSignal {
2
+ /** The combined signal, or `undefined` when there are no source signals. */
3
+ signal?: AbortSignal;
4
+ /** Remove the listeners attached to the source signals. */
5
+ cleanup: () => void;
6
+ }
7
+ /**
8
+ * Collapse zero, one, or many abort signals into a single signal.
9
+ *
10
+ * - No signals → `{ cleanup }` only.
11
+ * - One signal → that signal, with a no-op cleanup.
12
+ * - Many signals → a fresh controller that aborts (propagating `reason`) as
13
+ * soon as any source aborts. `cleanup` detaches the listeners.
14
+ */
15
+ export declare function combineAbortSignals(signals: readonly (AbortSignal | undefined)[]): CombinedAbortSignal;
16
+ //# sourceMappingURL=abort-signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-signals.d.ts","sourceRoot":"","sources":["../../src/utils/abort-signals.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GAC5C,mBAAmB,CAqCrB"}
@@ -0,0 +1,35 @@
1
+ import type { Context, ImageContent, Message, TextContent, Usage } from "../types";
2
+ /**
3
+ * A breakdown of a context's estimated token footprint. When the most recent
4
+ * successful assistant turn carries provider-reported usage, that figure anchors
5
+ * the estimate and only the messages after it are approximated.
6
+ */
7
+ export interface ContextUsageEstimate {
8
+ /** Estimated total context tokens. */
9
+ tokens: number;
10
+ /** Tokens reported by the anchoring assistant usage block (0 when none). */
11
+ usageTokens: number;
12
+ /** Estimated tokens for everything after the anchoring usage block. */
13
+ trailingTokens: number;
14
+ /** Index of the anchoring assistant message, or null when none was found. */
15
+ lastUsageIndex: number | null;
16
+ }
17
+ /** Best available token total from a usage record. */
18
+ export declare function calculateContextTokens(usage: Usage): number;
19
+ /** Estimate the token cost of a raw string. */
20
+ export declare function estimateTextTokens(text: string): number;
21
+ /** Estimate tokens for user/tool-result content (text plus flat-rated images). */
22
+ export declare function estimateTextAndImageContentTokens(content: string | Array<TextContent | ImageContent>): number;
23
+ /** Estimate the token cost of a single message across all roles. */
24
+ export declare function estimateMessageTokens(message: Message): number;
25
+ /**
26
+ * Estimate the total token footprint of a conversation context.
27
+ *
28
+ * When the transcript already contains a successful assistant turn with
29
+ * provider-reported usage, that usage anchors the estimate (it already accounts
30
+ * for the system prompt and tools) and only the trailing messages are
31
+ * approximated. Otherwise a character-based estimate covers every message plus
32
+ * the system prompt and tool schemas.
33
+ */
34
+ export declare function estimateContextTokens(context: Context | readonly Message[]): ContextUsageEstimate;
35
+ //# sourceMappingURL=estimate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/utils/estimate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,WAAW,EACX,KAAK,EACN,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAOD,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE3D;AAmBD,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,kFAAkF;AAClF,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,GAClD,MAAM,CAER;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAW9D;AAyCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,oBAAoB,CAiBjG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A small, fast, deterministic non-cryptographic string hash (xmur3/MurmurHash
3
+ * inspired). Returns a base-36 string. Used to derive bounded, stable ids when
4
+ * a vendor id would otherwise be too long or contain disallowed characters.
5
+ */
6
+ export declare function shortHash(str: string): string;
7
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW7C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Repair malformed JSON by escaping raw control characters inside string
3
+ * literals and doubling backslashes that precede an invalid escape character.
4
+ * Valid `\uXXXX` sequences are preserved. Never throws.
5
+ */
6
+ export declare function repairJson(json: string): string;
7
+ /** `JSON.parse`, retrying once with {@link repairJson} on failure. */
8
+ export declare function parseJsonWithRepair<T>(json: string): T;
9
+ /**
10
+ * Tolerantly parse possibly-incomplete streaming JSON. Always returns an
11
+ * object: empty input → `{}`; otherwise tries strict-with-repair, then
12
+ * partial-json, then partial-json on the repaired text, falling back to `{}`.
13
+ * Never throws.
14
+ */
15
+ export declare function parseStreamingJson<T = Record<string, unknown>>(partialJson: string | undefined): T;
16
+ //# sourceMappingURL=json-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-parse.d.ts","sourceRoot":"","sources":["../../src/utils/json-parse.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8C/C;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAUtD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,CAAC,CAiBH"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Proxy resolution for outbound provider HTTP(S) requests.
3
+ *
4
+ * Reads the conventional `*_proxy` / `no_proxy` environment variables (both the
5
+ * lowercase and uppercase spellings) and decides, for a given target URL, which
6
+ * HTTP/HTTPS proxy — if any — should carry the request. The environment is an
7
+ * injected parameter (defaulting to {@link process.env}) so the resolver is a
8
+ * pure function that unit tests can drive without mutating the real environment.
9
+ *
10
+ * Semantics mirror the de-facto behavior of common proxy-aware HTTP clients:
11
+ *
12
+ * - the proxy is chosen by the target's protocol (`https_proxy` for `https:`,
13
+ * `http_proxy` for `http:`, …), falling back to `all_proxy`;
14
+ * - `no_proxy` bypass rules are honored (`*` disables all proxying, exact host,
15
+ * leading-dot / `*.` domain-suffix matches, and an optional `:port` qualifier);
16
+ * - a proxy value without a scheme inherits the target's protocol;
17
+ * - only `http:` and `https:` proxy URLs are supported — SOCKS and PAC proxies
18
+ * are rejected because native `fetch` cannot dispatch through them.
19
+ */
20
+ /** An environment lookup table: variable name to value (as {@link process.env}). */
21
+ export type ProxyEnv = Record<string, string | undefined>;
22
+ /** Human-readable rejection for non-HTTP proxy schemes (SOCKS / PAC). */
23
+ export declare const UNSUPPORTED_PROXY_PROTOCOL_MESSAGE = "Unsupported proxy protocol: only http: and https: proxy URLs are supported (SOCKS and PAC proxies are not).";
24
+ /**
25
+ * Resolve the HTTP/HTTPS proxy URL that should carry a request to `targetUrl`,
26
+ * or `undefined` when the request must go direct.
27
+ *
28
+ * @param targetUrl the outbound request URL (string or {@link URL})
29
+ * @param env environment lookup table (defaults to {@link process.env})
30
+ * @throws when a proxy is configured but its URL is malformed, or uses an
31
+ * unsupported (non-HTTP/HTTPS) scheme such as SOCKS or PAC.
32
+ */
33
+ export declare function resolveHttpProxyUrlForTarget(targetUrl: string | URL, env?: ProxyEnv): URL | undefined;
34
+ //# sourceMappingURL=node-http-proxy.d.ts.map