@ank1015/providers 0.0.1

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 (99) hide show
  1. package/README.md +453 -0
  2. package/biome.json +43 -0
  3. package/dist/agent/agent-loop.d.ts +5 -0
  4. package/dist/agent/agent-loop.d.ts.map +1 -0
  5. package/dist/agent/agent-loop.js +219 -0
  6. package/dist/agent/agent-loop.js.map +1 -0
  7. package/dist/agent/types.d.ts +67 -0
  8. package/dist/agent/types.d.ts.map +1 -0
  9. package/dist/agent/types.js +3 -0
  10. package/dist/agent/types.js.map +1 -0
  11. package/dist/index.d.ts +10 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +29 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/models.d.ts +3 -0
  16. package/dist/models.d.ts.map +1 -0
  17. package/dist/models.generated.d.ts +247 -0
  18. package/dist/models.generated.d.ts.map +1 -0
  19. package/dist/models.generated.js +315 -0
  20. package/dist/models.generated.js.map +1 -0
  21. package/dist/models.js +41 -0
  22. package/dist/models.js.map +1 -0
  23. package/dist/providers/convert.d.ts +6 -0
  24. package/dist/providers/convert.d.ts.map +1 -0
  25. package/dist/providers/convert.js +207 -0
  26. package/dist/providers/convert.js.map +1 -0
  27. package/dist/providers/google.d.ts +26 -0
  28. package/dist/providers/google.d.ts.map +1 -0
  29. package/dist/providers/google.js +434 -0
  30. package/dist/providers/google.js.map +1 -0
  31. package/dist/providers/openai.d.ts +17 -0
  32. package/dist/providers/openai.d.ts.map +1 -0
  33. package/dist/providers/openai.js +396 -0
  34. package/dist/providers/openai.js.map +1 -0
  35. package/dist/stream.d.ts +4 -0
  36. package/dist/stream.d.ts.map +1 -0
  37. package/dist/stream.js +40 -0
  38. package/dist/stream.js.map +1 -0
  39. package/dist/test-google-agent-loop.d.ts +2 -0
  40. package/dist/test-google-agent-loop.d.ts.map +1 -0
  41. package/dist/test-google-agent-loop.js +186 -0
  42. package/dist/test-google-agent-loop.js.map +1 -0
  43. package/dist/test-google.d.ts +2 -0
  44. package/dist/test-google.d.ts.map +1 -0
  45. package/dist/test-google.js +41 -0
  46. package/dist/test-google.js.map +1 -0
  47. package/dist/types.d.ts +187 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +10 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/utils/event-stream.d.ts +16 -0
  52. package/dist/utils/event-stream.d.ts.map +1 -0
  53. package/dist/utils/event-stream.js +61 -0
  54. package/dist/utils/event-stream.js.map +1 -0
  55. package/dist/utils/json-parse.d.ts +9 -0
  56. package/dist/utils/json-parse.d.ts.map +1 -0
  57. package/dist/utils/json-parse.js +32 -0
  58. package/dist/utils/json-parse.js.map +1 -0
  59. package/dist/utils/sanitize-unicode.d.ts +22 -0
  60. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  61. package/dist/utils/sanitize-unicode.js +29 -0
  62. package/dist/utils/sanitize-unicode.js.map +1 -0
  63. package/dist/utils/validation.d.ts +11 -0
  64. package/dist/utils/validation.d.ts.map +1 -0
  65. package/dist/utils/validation.js +61 -0
  66. package/dist/utils/validation.js.map +1 -0
  67. package/package.json +33 -0
  68. package/src/agent/agent-loop.ts +275 -0
  69. package/src/agent/types.ts +80 -0
  70. package/src/index.ts +72 -0
  71. package/src/models.generated.ts +314 -0
  72. package/src/models.ts +45 -0
  73. package/src/providers/convert.ts +222 -0
  74. package/src/providers/google.ts +496 -0
  75. package/src/providers/openai.ts +437 -0
  76. package/src/stream.ts +60 -0
  77. package/src/types.ts +198 -0
  78. package/src/utils/event-stream.ts +60 -0
  79. package/src/utils/json-parse.ts +28 -0
  80. package/src/utils/sanitize-unicode.ts +25 -0
  81. package/src/utils/validation.ts +69 -0
  82. package/test/core/agent-loop.test.ts +958 -0
  83. package/test/core/stream.test.ts +409 -0
  84. package/test/data/red-circle.png +0 -0
  85. package/test/data/superintelligentwill.pdf +0 -0
  86. package/test/edge-cases/general.test.ts +565 -0
  87. package/test/integration/e2e.test.ts +530 -0
  88. package/test/models/cost.test.ts +499 -0
  89. package/test/models/registry.test.ts +298 -0
  90. package/test/providers/convert.test.ts +846 -0
  91. package/test/providers/google-schema.test.ts +666 -0
  92. package/test/providers/google-stream.test.ts +369 -0
  93. package/test/providers/openai-stream.test.ts +251 -0
  94. package/test/utils/event-stream.test.ts +289 -0
  95. package/test/utils/json-parse.test.ts +344 -0
  96. package/test/utils/sanitize-unicode.test.ts +329 -0
  97. package/test/utils/validation.test.ts +614 -0
  98. package/tsconfig.json +21 -0
  99. package/vitest.config.ts +9 -0
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ // This file is auto-generated by scripts/generate-models.ts
3
+ // Do not edit manually - run 'npm run generate-models' to update
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.MODELS = void 0;
6
+ exports.MODELS = {
7
+ // anthropic: {
8
+ // "claude-haiku-4-5": {
9
+ // id: "claude-haiku-4-5",
10
+ // name: "Claude Haiku 4.5 (latest)",
11
+ // api: "anthropic-messages",
12
+ // provider: "anthropic",
13
+ // baseUrl: "https://api.anthropic.com",
14
+ // reasoning: true,
15
+ // input: ["text", "image"],
16
+ // cost: {
17
+ // input: 1,
18
+ // output: 5,
19
+ // cacheRead: 0.1,
20
+ // cacheWrite: 1.25,
21
+ // },
22
+ // contextWindow: 200000,
23
+ // maxTokens: 64000,
24
+ // } satisfies Model<"anthropic-messages">,
25
+ // "claude-opus-4-5": {
26
+ // id: "claude-opus-4-5",
27
+ // name: "Claude Opus 4.5 (latest)",
28
+ // api: "anthropic-messages",
29
+ // provider: "anthropic",
30
+ // baseUrl: "https://api.anthropic.com",
31
+ // reasoning: true,
32
+ // input: ["text", "image"],
33
+ // cost: {
34
+ // input: 5,
35
+ // output: 25,
36
+ // cacheRead: 0.5,
37
+ // cacheWrite: 6.25,
38
+ // },
39
+ // contextWindow: 200000,
40
+ // maxTokens: 64000,
41
+ // } satisfies Model<"anthropic-messages">,
42
+ // "claude-sonnet-4-5": {
43
+ // id: "claude-sonnet-4-5",
44
+ // name: "Claude Sonnet 4.5 (latest)",
45
+ // api: "anthropic-messages",
46
+ // provider: "anthropic",
47
+ // baseUrl: "https://api.anthropic.com",
48
+ // reasoning: true,
49
+ // input: ["text", "image"],
50
+ // cost: {
51
+ // input: 3,
52
+ // output: 15,
53
+ // cacheRead: 0.3,
54
+ // cacheWrite: 3.75,
55
+ // },
56
+ // contextWindow: 200000,
57
+ // maxTokens: 64000,
58
+ // } satisfies Model<"anthropic-messages">,
59
+ // },
60
+ google: {
61
+ "gemini-2.5-flash-preview-05-20": {
62
+ id: "gemini-2.5-flash-preview-05-20",
63
+ name: "Gemini 2.5 Flash Preview 05-20",
64
+ api: "google",
65
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta",
66
+ reasoning: true,
67
+ input: ["text", "image"],
68
+ cost: {
69
+ input: 0.15,
70
+ output: 0.6,
71
+ cacheRead: 0.0375,
72
+ cacheWrite: 0,
73
+ },
74
+ contextWindow: 1048576,
75
+ maxTokens: 65536,
76
+ },
77
+ "gemini-flash-lite-latest": {
78
+ id: "gemini-flash-lite-latest",
79
+ name: "Gemini Flash-Lite Latest",
80
+ api: "google",
81
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta",
82
+ reasoning: true,
83
+ input: ["text", "image", "file"],
84
+ cost: {
85
+ input: 0.1,
86
+ output: 0.4,
87
+ cacheRead: 0.025,
88
+ cacheWrite: 0,
89
+ },
90
+ contextWindow: 1048576,
91
+ maxTokens: 65536,
92
+ },
93
+ "gemini-3-pro-preview": {
94
+ id: "gemini-3-pro-preview",
95
+ name: "Gemini 3 Pro Preview",
96
+ api: "google",
97
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta",
98
+ reasoning: true,
99
+ input: ["text", "image", "file"],
100
+ cost: {
101
+ input: 2,
102
+ output: 12,
103
+ cacheRead: 0.2,
104
+ cacheWrite: 0,
105
+ },
106
+ contextWindow: 1000000,
107
+ maxTokens: 64000,
108
+ },
109
+ "gemini-2.5-flash": {
110
+ id: "gemini-2.5-flash",
111
+ name: "Gemini 2.5 Flash",
112
+ api: "google",
113
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta",
114
+ reasoning: true,
115
+ input: ["text", "image", "file"],
116
+ cost: {
117
+ input: 0.3,
118
+ output: 2.5,
119
+ cacheRead: 0.075,
120
+ cacheWrite: 0,
121
+ },
122
+ contextWindow: 1048576,
123
+ maxTokens: 65536,
124
+ },
125
+ },
126
+ openai: {
127
+ "gpt-5.1-codex": {
128
+ id: "gpt-5.1-codex",
129
+ name: "GPT-5.1 Codex",
130
+ api: "openai",
131
+ baseUrl: "https://api.openai.com/v1",
132
+ reasoning: true,
133
+ input: ["text", "image", "file"],
134
+ cost: {
135
+ input: 1.25,
136
+ output: 10,
137
+ cacheRead: 0.125,
138
+ cacheWrite: 0,
139
+ },
140
+ contextWindow: 400000,
141
+ maxTokens: 128000,
142
+ },
143
+ "gpt-5.1-codex-mini": {
144
+ id: "gpt-5.1-codex-mini",
145
+ name: "GPT-5.1 Codex mini",
146
+ api: "openai",
147
+ baseUrl: "https://api.openai.com/v1",
148
+ reasoning: true,
149
+ input: ["text", "image", "file"],
150
+ cost: {
151
+ input: 0.25,
152
+ output: 2,
153
+ cacheRead: 0.025,
154
+ cacheWrite: 0,
155
+ },
156
+ contextWindow: 400000,
157
+ maxTokens: 128000,
158
+ },
159
+ "gpt-5.1": {
160
+ id: "gpt-5.1",
161
+ name: "GPT-5.1",
162
+ api: "openai",
163
+ baseUrl: "https://api.openai.com/v1",
164
+ reasoning: true,
165
+ input: ["text", "image", "file"],
166
+ cost: {
167
+ input: 1.25,
168
+ output: 10,
169
+ cacheRead: 0.13,
170
+ cacheWrite: 0,
171
+ },
172
+ contextWindow: 400000,
173
+ maxTokens: 128000,
174
+ },
175
+ "codex-mini-latest": {
176
+ id: "codex-mini-latest",
177
+ name: "Codex Mini",
178
+ api: "openai",
179
+ baseUrl: "https://api.openai.com/v1",
180
+ reasoning: true,
181
+ input: ["text"],
182
+ cost: {
183
+ input: 1.5,
184
+ output: 6,
185
+ cacheRead: 0.375,
186
+ cacheWrite: 0,
187
+ },
188
+ contextWindow: 200000,
189
+ maxTokens: 100000,
190
+ },
191
+ "gpt-5-nano": {
192
+ id: "gpt-5-nano",
193
+ name: "GPT-5 Nano",
194
+ api: "openai",
195
+ baseUrl: "https://api.openai.com/v1",
196
+ reasoning: true,
197
+ input: ["text", "image", "file"],
198
+ cost: {
199
+ input: 0.05,
200
+ output: 0.4,
201
+ cacheRead: 0.01,
202
+ cacheWrite: 0,
203
+ },
204
+ contextWindow: 400000,
205
+ maxTokens: 128000,
206
+ },
207
+ "gpt-5-codex": {
208
+ id: "gpt-5-codex",
209
+ name: "GPT-5-Codex",
210
+ api: "openai",
211
+ baseUrl: "https://api.openai.com/v1",
212
+ reasoning: true,
213
+ input: ["text", "image", "file"],
214
+ cost: {
215
+ input: 1.25,
216
+ output: 10,
217
+ cacheRead: 0.125,
218
+ cacheWrite: 0,
219
+ },
220
+ contextWindow: 400000,
221
+ maxTokens: 128000,
222
+ },
223
+ "gpt-5-mini": {
224
+ id: "gpt-5-mini",
225
+ name: "GPT-5 Mini",
226
+ api: "openai",
227
+ baseUrl: "https://api.openai.com/v1",
228
+ reasoning: true,
229
+ input: ["text", "image", "file"],
230
+ cost: {
231
+ input: 0.25,
232
+ output: 2,
233
+ cacheRead: 0.03,
234
+ cacheWrite: 0,
235
+ },
236
+ contextWindow: 400000,
237
+ maxTokens: 128000,
238
+ },
239
+ "gpt-5.1-codex-max": {
240
+ id: "gpt-5.1-codex-max",
241
+ name: "GPT-5.1 Codex Max",
242
+ api: "openai",
243
+ baseUrl: "https://api.openai.com/v1",
244
+ reasoning: true,
245
+ input: ["text", "image", "file"],
246
+ cost: {
247
+ input: 1.25,
248
+ output: 10,
249
+ cacheRead: 0.125,
250
+ cacheWrite: 0,
251
+ },
252
+ contextWindow: 400000,
253
+ maxTokens: 128000,
254
+ },
255
+ "gpt-5": {
256
+ id: "gpt-5",
257
+ name: "GPT-5",
258
+ api: "openai",
259
+ baseUrl: "https://api.openai.com/v1",
260
+ reasoning: true,
261
+ input: ["text", "image", "file"],
262
+ cost: {
263
+ input: 1.25,
264
+ output: 10,
265
+ cacheRead: 0.13,
266
+ cacheWrite: 0,
267
+ },
268
+ contextWindow: 400000,
269
+ maxTokens: 128000,
270
+ },
271
+ "gpt-5-pro": {
272
+ id: "gpt-5-pro",
273
+ name: "GPT-5 Pro",
274
+ api: "openai",
275
+ baseUrl: "https://api.openai.com/v1",
276
+ reasoning: true,
277
+ input: ["text", "image", "file"],
278
+ cost: {
279
+ input: 15,
280
+ output: 120,
281
+ cacheRead: 0,
282
+ cacheWrite: 0,
283
+ },
284
+ contextWindow: 400000,
285
+ maxTokens: 272000,
286
+ },
287
+ "gpt-5.1-chat-latest": {
288
+ id: "gpt-5.1-chat-latest",
289
+ name: "GPT-5.1 Chat",
290
+ api: "openai",
291
+ baseUrl: "https://api.openai.com/v1",
292
+ reasoning: true,
293
+ input: ["text", "image", "file"],
294
+ cost: {
295
+ input: 1.25,
296
+ output: 10,
297
+ cacheRead: 0.125,
298
+ cacheWrite: 0,
299
+ },
300
+ contextWindow: 128000,
301
+ maxTokens: 16384,
302
+ },
303
+ },
304
+ // groq: {
305
+ // },
306
+ // cerebras: {
307
+ // },
308
+ // xai: {
309
+ // },
310
+ // zai: {
311
+ // },
312
+ // openrouter: {
313
+ // }
314
+ };
315
+ //# sourceMappingURL=models.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.generated.js","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"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"}
package/dist/models.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateCost = calculateCost;
4
+ const models_generated_js_1 = require("./models.generated.js");
5
+ const modelRegistry = new Map();
6
+ // Initialize registry from MODELS on module load
7
+ for (const [provider, models] of Object.entries(models_generated_js_1.MODELS)) {
8
+ const providerModels = new Map();
9
+ for (const [id, model] of Object.entries(models)) {
10
+ providerModels.set(id, model);
11
+ }
12
+ modelRegistry.set(provider, providerModels);
13
+ }
14
+ // type ModelApi<
15
+ // TProvider extends KnownProvider,
16
+ // TModelId extends keyof (typeof MODELS)[TProvider],
17
+ // > = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;
18
+ // export function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(
19
+ // provider: TProvider,
20
+ // modelId: TModelId,
21
+ // ): Model<ModelApi<TProvider, TModelId>> {
22
+ // return modelRegistry.get(provider)?.get(modelId as string) as Model<ModelApi<TProvider, TModelId>>;
23
+ // }
24
+ // export function getProviders(): KnownProvider[] {
25
+ // return Array.from(modelRegistry.keys()) as KnownProvider[];
26
+ // }
27
+ // export function getModels<TProvider extends KnownProvider>(
28
+ // provider: TProvider,
29
+ // ): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {
30
+ // const models = modelRegistry.get(provider);
31
+ // return models ? (Array.from(models.values()) as Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[]) : [];
32
+ // }
33
+ function calculateCost(model, usage) {
34
+ usage.cost.input = (model.cost.input / 1000000) * usage.input;
35
+ usage.cost.output = (model.cost.output / 1000000) * usage.output;
36
+ usage.cost.cacheRead = (model.cost.cacheRead / 1000000) * usage.cacheRead;
37
+ usage.cost.cacheWrite = (model.cost.cacheWrite / 1000000) * usage.cacheWrite;
38
+ usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
39
+ return usage.cost;
40
+ }
41
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;AAqCA,sCAOC;AA5CD,+DAA+C;AAG/C,MAAM,aAAa,GAAyC,IAAI,GAAG,EAAE,CAAC;AAEtE,iDAAiD;AACjD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4BAAM,CAAC,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAAmB,CAAC,CAAC;IAC7C,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,iBAAiB;AACjB,oCAAoC;AACpC,sDAAsD;AACtD,oHAAoH;AAEpH,gHAAgH;AAChH,wBAAwB;AACxB,sBAAsB;AACtB,4CAA4C;AAC5C,uGAAuG;AACvG,IAAI;AAEJ,oDAAoD;AACpD,+DAA+D;AAC/D,IAAI;AAEJ,8DAA8D;AAC9D,wBAAwB;AACxB,sEAAsE;AACtE,+CAA+C;AAC/C,yHAAyH;AACzH,IAAI;AAEJ,SAAgB,aAAa,CAAmB,KAAkB,EAAE,KAAY;IAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACvG,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context, Model } from "../types";
2
+ import { ResponseInput } from "openai/resources/responses/responses.js";
3
+ import { ContentListUnion } from "@google/genai";
4
+ export declare function buildOpenAIMessages(model: Model<'openai'>, context: Context): ResponseInput;
5
+ export declare function buildGoogleMessages(model: Model<'google'>, context: Context): ContentListUnion;
6
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/providers/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAQ,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAoJ,MAAM,yCAAyC,CAAC;AAE1N,OAAO,EAAE,gBAAgB,EAAQ,MAAM,eAAe,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CA8G3F;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAuG9F"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOpenAIMessages = buildOpenAIMessages;
4
+ exports.buildGoogleMessages = buildGoogleMessages;
5
+ const sanitize_unicode_1 = require("../utils/sanitize-unicode");
6
+ function buildOpenAIMessages(model, context) {
7
+ const openAIMessages = [];
8
+ if (context.systemPrompt) {
9
+ openAIMessages.push({
10
+ role: 'developer',
11
+ content: (0, sanitize_unicode_1.sanitizeSurrogates)(context.systemPrompt)
12
+ });
13
+ }
14
+ ;
15
+ for (let i = 0; i < context.messages.length; i++) {
16
+ const message = context.messages[i];
17
+ // normalize for user message
18
+ if (message.role === 'user') {
19
+ const contents = [];
20
+ for (let p = 0; p < message.content.length; p++) {
21
+ const content = message.content[p];
22
+ if (content.type === 'text') {
23
+ contents.push({
24
+ type: 'input_text',
25
+ text: content.content
26
+ });
27
+ }
28
+ if (content.type === 'image' && model.input.includes("image")) {
29
+ contents.push({
30
+ type: 'input_image',
31
+ detail: 'auto',
32
+ image_url: `data:${content.mimeType};base64,${content.data}`
33
+ });
34
+ }
35
+ if (content.type === 'file' && model.input.includes("file")) {
36
+ contents.push({
37
+ type: 'input_file',
38
+ file_data: `data:${content.mimeType};base64,${content.data}`
39
+ });
40
+ }
41
+ }
42
+ openAIMessages.push({
43
+ role: 'user',
44
+ content: contents
45
+ });
46
+ }
47
+ // normalize for tool results
48
+ if (message.role === 'toolResult') {
49
+ const toolOutputs = [];
50
+ let hasText = false;
51
+ let hasImg = false;
52
+ let hasFile = false;
53
+ for (let p = 0; p < message.content.length; p++) {
54
+ const content = message.content[p];
55
+ if (content.type === 'text') {
56
+ toolOutputs.push({
57
+ type: 'input_text',
58
+ text: content.content
59
+ });
60
+ hasText = true;
61
+ }
62
+ if (content.type === 'image' && model.input.includes("image")) {
63
+ toolOutputs.push({
64
+ type: 'input_image',
65
+ detail: 'auto',
66
+ image_url: `data:${content.mimeType};base64,${content.data}`
67
+ });
68
+ hasImg = true;
69
+ }
70
+ if (content.type === 'file' && model.input.includes("file")) {
71
+ toolOutputs.push({
72
+ type: 'input_file',
73
+ file_data: `data:${content.mimeType};base64,${content.data}`
74
+ });
75
+ hasFile = true;
76
+ }
77
+ }
78
+ if (!hasText && (hasImg || hasFile)) {
79
+ toolOutputs.push({
80
+ type: 'input_text',
81
+ text: '(see attached)'
82
+ });
83
+ }
84
+ const toolResultInput = {
85
+ call_id: message.toolCallId,
86
+ output: toolOutputs,
87
+ type: 'function_call_output',
88
+ };
89
+ openAIMessages.push(toolResultInput);
90
+ }
91
+ // normalize for Assistant message
92
+ if (message.role === 'assistant') {
93
+ if (message._provider === 'openai') {
94
+ for (let p = 0; p < message.message.output.length; p++) {
95
+ const outputPart = message.message.output[p];
96
+ if (outputPart.type === 'function_call' || outputPart.type === 'message' || outputPart.type === 'reasoning') {
97
+ openAIMessages.push(outputPart);
98
+ }
99
+ }
100
+ }
101
+ // TODO Implement other provider conversions
102
+ else {
103
+ throw new Error(`Cannot convert ${message._provider} assistant message to ${model.api} format. ` +
104
+ `Cross-provider conversion for ${message._provider} → ${model.api} is not yet implemented.`);
105
+ }
106
+ }
107
+ }
108
+ return openAIMessages;
109
+ }
110
+ function buildGoogleMessages(model, context) {
111
+ const contents = [];
112
+ for (let i = 0; i < context.messages.length; i++) {
113
+ const message = context.messages[i];
114
+ if (message.role === 'user') {
115
+ const parts = [];
116
+ for (let p = 0; p < message.content.length; p++) {
117
+ const messageContent = message.content[p];
118
+ if (messageContent.type === 'text') {
119
+ parts.push({
120
+ text: messageContent.content
121
+ });
122
+ }
123
+ if (messageContent.type === 'image' && model.input.includes("image")) {
124
+ parts.push({
125
+ inlineData: {
126
+ mimeType: messageContent.mimeType,
127
+ data: messageContent.data
128
+ }
129
+ });
130
+ }
131
+ if (messageContent.type === 'file' && model.input.includes("file")) {
132
+ parts.push({
133
+ inlineData: {
134
+ mimeType: messageContent.mimeType,
135
+ data: messageContent.data
136
+ }
137
+ });
138
+ }
139
+ }
140
+ contents.push({
141
+ role: 'user',
142
+ parts
143
+ });
144
+ }
145
+ if (message.role === 'toolResult') {
146
+ const parts = [];
147
+ let textRes = '(see attached:)';
148
+ for (let p = 0; p < message.content.length; p++) {
149
+ const messageContent = message.content[p];
150
+ if (messageContent.type === 'text') {
151
+ textRes = messageContent.content;
152
+ }
153
+ if (messageContent.type === 'image' && model.input.includes("image")) {
154
+ parts.push({
155
+ inlineData: {
156
+ mimeType: messageContent.mimeType,
157
+ data: messageContent.data
158
+ }
159
+ });
160
+ }
161
+ if (messageContent.type === 'file' && model.input.includes("file")) {
162
+ parts.push({
163
+ inlineData: {
164
+ mimeType: messageContent.mimeType,
165
+ data: messageContent.data
166
+ }
167
+ });
168
+ }
169
+ }
170
+ contents.push({
171
+ role: 'user',
172
+ parts: [
173
+ {
174
+ functionResponse: {
175
+ id: message.toolCallId,
176
+ name: message.toolName,
177
+ parts,
178
+ response: {
179
+ result: textRes,
180
+ isError: message.isError
181
+ }
182
+ }
183
+ }
184
+ ]
185
+ });
186
+ }
187
+ if (message.role === 'assistant') {
188
+ if (message._provider === 'google') {
189
+ if (message.message.candidates) {
190
+ for (let p = 0; p < message.message.candidates?.length; p++) {
191
+ const candidate = message.message.candidates[p];
192
+ if (candidate.content) {
193
+ contents.push(candidate.content);
194
+ }
195
+ }
196
+ }
197
+ }
198
+ // TODO Implement other provider conversions
199
+ else {
200
+ throw new Error(`Cannot convert ${message._provider} assistant message to ${model.api} format. ` +
201
+ `Cross-provider conversion for ${message._provider} → ${model.api} is not yet implemented.`);
202
+ }
203
+ }
204
+ }
205
+ return contents;
206
+ }
207
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/providers/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { ThinkingLevel } from "@google/genai";
2
+ import { StreamFunction } from "../types";
3
+ export interface GoogleProviderOptions {
4
+ apiKey?: string;
5
+ signal?: AbortSignal;
6
+ temperature?: number;
7
+ maxOutputTokens?: number;
8
+ responseMimeType?: string;
9
+ thinkingConfig?: {
10
+ thinkingLevel: ThinkingLevel;
11
+ };
12
+ imageConfig?: {
13
+ aspectRatio?: "1:1" | "2:3" | "3:2" | "3:4" | "4:3" | "9:16" | "16:9" | "21:9";
14
+ imageSize?: '1K' | '2K' | '4K';
15
+ };
16
+ }
17
+ export declare const streamGoogle: StreamFunction<'google'>;
18
+ /**
19
+ * Transforms a JSON Schema to Google's supported subset.
20
+ * Main transformations:
21
+ * - Converts { "const": "value" } to { "enum": ["value"] }
22
+ * - Converts { "anyOf": [{ "const": "a" }, { "const": "b" }] } to { "enum": ["a", "b"] }
23
+ * - Recursively processes nested objects and arrays
24
+ */
25
+ export declare function transformSchemaForGoogle(schema: any): any;
26
+ //# sourceMappingURL=google.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EASH,aAAa,EAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAS,cAAc,EAAuH,MAAM,UAAU,CAAC;AAMtK,MAAM,WAAW,qBAAqB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAG;QACd,aAAa,EAAE,aAAa,CAAA;KAC/B,CAAC;IACF,WAAW,CAAC,EAAG;QACX,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC/E,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KAClC,CAAA;CACJ;AAKD,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,QAAQ,CAoRjD,CAAA;AA+DD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAwEzD"}