@apicity/kie 0.5.4 → 0.6.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.
- package/README.md +156 -2
- package/dist/src/chat.d.ts +2 -2
- package/dist/src/chat.d.ts.map +1 -1
- package/dist/src/claude.d.ts +2 -2
- package/dist/src/claude.d.ts.map +1 -1
- package/dist/src/gemini-31-pro.d.ts +73 -0
- package/dist/src/gemini-31-pro.d.ts.map +1 -0
- package/dist/src/gemini-31-pro.js +126 -0
- package/dist/src/gemini-31-pro.js.map +1 -0
- package/dist/src/gemini.d.ts +66 -0
- package/dist/src/gemini.d.ts.map +1 -0
- package/dist/src/gemini.js +114 -0
- package/dist/src/gemini.js.map +1 -0
- package/dist/src/index.d.ts +10 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/kie.d.ts.map +1 -1
- package/dist/src/kie.js +67 -3
- package/dist/src/kie.js.map +1 -1
- package/dist/src/model-schemas.d.ts.map +1 -1
- package/dist/src/model-schemas.js +386 -36
- package/dist/src/model-schemas.js.map +1 -1
- package/dist/src/responses.d.ts +128 -0
- package/dist/src/responses.d.ts.map +1 -0
- package/dist/src/responses.js +104 -0
- package/dist/src/responses.js.map +1 -0
- package/dist/src/suno.d.ts +16 -16
- package/dist/src/suno.d.ts.map +1 -1
- package/dist/src/types.d.ts +50 -11
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/veo.d.ts +3 -3
- package/dist/src/veo.d.ts.map +1 -1
- package/dist/src/zod.d.ts +1322 -140
- package/dist/src/zod.d.ts.map +1 -1
- package/dist/src/zod.js +531 -32
- package/dist/src/zod.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Kie provider for video and image generation (Kling 3.0, Grok Imagine, Omnihuman
|
|
|
8
8
|
|
|
9
9
|
Runtime dependencies:
|
|
10
10
|
|
|
11
|
-
- `zod@^4.
|
|
11
|
+
- `zod@^4.4.3` — request schemas attached to every POST endpoint as `.schema`
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
@@ -104,6 +104,8 @@ External `image_urls` must point to JPEG, PNG, or WEBP images; KIE's
|
|
|
104
104
|
upstream limit is 7 images and 10 MB per image. `mode: "spicy"` is
|
|
105
105
|
only available when sourcing the image from a previous Grok `task_id`,
|
|
106
106
|
not from external image URLs.
|
|
107
|
+
Active image-to-video prompts are capped at 4096 characters, and
|
|
108
|
+
`duration` must be a whole number from 6 to 30 seconds.
|
|
107
109
|
|
|
108
110
|
`createTask` returns `{ code, msg, data: { taskId } }`. For production
|
|
109
111
|
workloads, pass `callBackUrl` so KIE can notify you when the job
|
|
@@ -112,6 +114,107 @@ finishes. Without a callback, poll
|
|
|
112
114
|
`fail`; successful responses carry generated media URLs in the
|
|
113
115
|
`resultJson` string.
|
|
114
116
|
|
|
117
|
+
## HappyHorse 1.1 model slugs
|
|
118
|
+
|
|
119
|
+
KIE exposes Alibaba HappyHorse 1.1 through the same shared
|
|
120
|
+
`kie.post.api.v1.jobs.createTask` endpoint. Use the 1.1 model slugs
|
|
121
|
+
`happyhorse-1-1/text-to-video`, `happyhorse-1-1/image-to-video`, and
|
|
122
|
+
`happyhorse-1-1/reference-to-video` with the input shapes shown in
|
|
123
|
+
KIE's docs at https://docs.kie.ai/market/happyhorse-1-1/text-to-video,
|
|
124
|
+
https://docs.kie.ai/market/happyhorse-1-1/image-to-video, and
|
|
125
|
+
https://docs.kie.ai/market/happyhorse-1-1/reference-to-video.
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
const textTask = await kie.post.api.v1.jobs.createTask({
|
|
129
|
+
model: "happyhorse-1-1/text-to-video",
|
|
130
|
+
input: {
|
|
131
|
+
prompt: "A dog running on the earth",
|
|
132
|
+
resolution: "1080p",
|
|
133
|
+
aspect_ratio: "16:9",
|
|
134
|
+
duration: 5,
|
|
135
|
+
},
|
|
136
|
+
callBackUrl: "https://example.com/api/callback",
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const imageTask = await kie.post.api.v1.jobs.createTask({
|
|
140
|
+
model: "happyhorse-1-1/image-to-video",
|
|
141
|
+
input: {
|
|
142
|
+
image_urls: ["https://example.com/first-frame.png"],
|
|
143
|
+
prompt: "A cat running on the grass",
|
|
144
|
+
resolution: "1080p",
|
|
145
|
+
duration: 5,
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const referenceTask = await kie.post.api.v1.jobs.createTask({
|
|
150
|
+
model: "happyhorse-1-1/reference-to-video",
|
|
151
|
+
input: {
|
|
152
|
+
reference_image: ["https://example.com/reference.png"],
|
|
153
|
+
prompt: "A cat running on the grass",
|
|
154
|
+
resolution: "1080p",
|
|
155
|
+
aspect_ratio: "16:9",
|
|
156
|
+
duration: 5,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
console.log(
|
|
161
|
+
textTask.data?.taskId,
|
|
162
|
+
imageTask.data?.taskId,
|
|
163
|
+
referenceTask.data?.taskId,
|
|
164
|
+
);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
For 1.1 image-to-video, `image_urls` is required and accepts exactly
|
|
168
|
+
one first-frame image URL. For 1.1 reference-to-video,
|
|
169
|
+
`reference_image` accepts 1-9 image URLs and prompts can refer to
|
|
170
|
+
the images by position. All three generation modes use `resolution`
|
|
171
|
+
(`"720p"` or `"1080p"`) and integer `duration` from 3 to 15 seconds;
|
|
172
|
+
text-to-video and reference-to-video also expose the wider 1.1
|
|
173
|
+
aspect-ratio set including `"21:9"` and `"9:21"`.
|
|
174
|
+
|
|
175
|
+
## Seedance 2 Mini createTask flow
|
|
176
|
+
|
|
177
|
+
Seedance 2 Mini also uses the shared KIE jobs endpoints. Submit
|
|
178
|
+
`model: "bytedance/seedance-2-mini"` to
|
|
179
|
+
`kie.post.api.v1.jobs.createTask`, then poll
|
|
180
|
+
`kie.get.api.v1.jobs.recordInfo(taskId)` or pass `callBackUrl` for
|
|
181
|
+
completion notifications.
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
const miniTask = await kie.post.api.v1.jobs.createTask({
|
|
185
|
+
model: "bytedance/seedance-2-mini",
|
|
186
|
+
input: {
|
|
187
|
+
prompt: "A compact launch video with crisp product details.",
|
|
188
|
+
reference_image_urls: ["https://example.com/product.png"],
|
|
189
|
+
reference_video_urls: ["https://example.com/source.mp4"],
|
|
190
|
+
reference_audio_urls: ["https://example.com/voice.wav"],
|
|
191
|
+
generate_audio: false,
|
|
192
|
+
resolution: "720p",
|
|
193
|
+
aspect_ratio: "16:9",
|
|
194
|
+
duration: 15,
|
|
195
|
+
web_search: false,
|
|
196
|
+
nsfw_checker: true,
|
|
197
|
+
},
|
|
198
|
+
callBackUrl: "https://example.com/api/kie-callback",
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
const miniInfo = await kie.get.api.v1.jobs.recordInfo(
|
|
202
|
+
miniTask.data!.taskId
|
|
203
|
+
);
|
|
204
|
+
const miniResult = miniInfo.data?.resultJson
|
|
205
|
+
? JSON.parse(miniInfo.data.resultJson)
|
|
206
|
+
: null;
|
|
207
|
+
console.log(miniInfo.data?.state, miniResult?.resultUrls);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`prompt` is optional and capped at 20000 characters. Media references
|
|
211
|
+
default to empty arrays when using the exported Zod schema. `duration`
|
|
212
|
+
is an integer from 4 to 15 seconds, `resolution` is `480p` or `720p`,
|
|
213
|
+
and `aspect_ratio` is one of `16:9`, `4:3`, `1:1`, `3:4`, `9:16`,
|
|
214
|
+
`21:9`, or `adaptive`. The schema defaults are `generate_audio: true`,
|
|
215
|
+
`resolution: "720p"`, `aspect_ratio: "16:9"`, `duration: 15`,
|
|
216
|
+
`web_search: false`, and `nsfw_checker: true`.
|
|
217
|
+
|
|
115
218
|
## Real-world example: Kling 3.0 Turbo createTask payloads
|
|
116
219
|
|
|
117
220
|
KIE's Kling 3.0 Turbo Quick Start exposes two createTask slugs:
|
|
@@ -282,7 +385,7 @@ console.log(result.resultUrls[0]);
|
|
|
282
385
|
|
|
283
386
|
## API Reference
|
|
284
387
|
|
|
285
|
-
|
|
388
|
+
30 endpoints across 19 groups. Each method mirrors an upstream URL path.
|
|
286
389
|
|
|
287
390
|
### chat
|
|
288
391
|
|
|
@@ -318,6 +421,23 @@ Source: [`packages/provider/kie/src/claude.ts`](src/claude.ts)
|
|
|
318
421
|
|
|
319
422
|
</details>
|
|
320
423
|
|
|
424
|
+
### codex
|
|
425
|
+
|
|
426
|
+
<details>
|
|
427
|
+
<summary><code>POST</code> <b><code>kie.codex.v1.responses</code></b></summary>
|
|
428
|
+
|
|
429
|
+
<code>POST https://api.kie.ai/codex/v1/responses</code>
|
|
430
|
+
|
|
431
|
+
[Upstream docs ↗](https://docs.kie.ai/market/chat/gpt-5-5)
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
const res = await kie.codex.v1.responses({ /* ... */ });
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
Source: [`packages/provider/kie/src/responses.ts`](src/responses.ts)
|
|
438
|
+
|
|
439
|
+
</details>
|
|
440
|
+
|
|
321
441
|
### common
|
|
322
442
|
|
|
323
443
|
<details>
|
|
@@ -386,6 +506,40 @@ Source: [`packages/provider/kie/src/kie.ts`](src/kie.ts)
|
|
|
386
506
|
|
|
387
507
|
</details>
|
|
388
508
|
|
|
509
|
+
### gemini
|
|
510
|
+
|
|
511
|
+
<details>
|
|
512
|
+
<summary><code>POST</code> <b><code>kie.gemini.post.v1.models.gemini35Flash.streamGenerateContent</code></b></summary>
|
|
513
|
+
|
|
514
|
+
<code>POST https://api.kie.ai/gemini/v1/models/gemini-3-5-flash:streamGenerateContent</code>
|
|
515
|
+
|
|
516
|
+
[Upstream docs ↗](https://docs.kie.ai/market/gemini/gemini-3-5-flash)
|
|
517
|
+
|
|
518
|
+
```typescript
|
|
519
|
+
const res = await kie.gemini.post.v1.models.gemini35Flash.streamGenerateContent({ /* ... */ });
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
Source: [`packages/provider/kie/src/gemini.ts`](src/gemini.ts)
|
|
523
|
+
|
|
524
|
+
</details>
|
|
525
|
+
|
|
526
|
+
### gemini31Pro
|
|
527
|
+
|
|
528
|
+
<details>
|
|
529
|
+
<summary><code>POST</code> <b><code>kie.gemini31Pro.post.v1.chat.completions</code></b></summary>
|
|
530
|
+
|
|
531
|
+
<code>POST https://api.kie.ai/gemini-3.1-pro/v1/chat/completions</code>
|
|
532
|
+
|
|
533
|
+
[Upstream docs ↗](https://docs.kie.ai/market/gemini/gemini-3-1-pro)
|
|
534
|
+
|
|
535
|
+
```typescript
|
|
536
|
+
const res = await kie.gemini31Pro.post.v1.chat.completions({ /* ... */ });
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
Source: [`packages/provider/kie/src/gemini-31-pro.ts`](src/gemini-31-pro.ts)
|
|
540
|
+
|
|
541
|
+
</details>
|
|
542
|
+
|
|
389
543
|
### generate
|
|
390
544
|
|
|
391
545
|
<details>
|
package/dist/src/chat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ApicitySchema } from "./types.js";
|
|
2
2
|
export interface KieChatContentPart {
|
|
3
3
|
type: "text" | "image_url";
|
|
4
4
|
text?: string;
|
|
@@ -46,7 +46,7 @@ export interface KieChatResponse {
|
|
|
46
46
|
}
|
|
47
47
|
interface KieChatCompletionsMethod {
|
|
48
48
|
(req: KieChatRequest, signal?: AbortSignal): Promise<KieChatResponse>;
|
|
49
|
-
schema:
|
|
49
|
+
schema: ApicitySchema<KieChatRequest>;
|
|
50
50
|
}
|
|
51
51
|
export interface KieChatProvider {
|
|
52
52
|
completions: KieChatCompletionsMethod;
|
package/dist/src/chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmB7C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC;CACH;AAGD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,wBAAwB;IAChC,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAqED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,eAAe,CAYjB"}
|
package/dist/src/claude.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ApicitySchema } from "./types.js";
|
|
2
2
|
export interface KieClaudeToolInputSchema {
|
|
3
3
|
type: string;
|
|
4
4
|
properties?: Record<string, unknown>;
|
|
@@ -58,7 +58,7 @@ export interface KieClaudeResponse {
|
|
|
58
58
|
}
|
|
59
59
|
interface KieClaudeMessagesMethod {
|
|
60
60
|
(req: KieClaudeRequest, signal?: AbortSignal): Promise<KieClaudeResponse>;
|
|
61
|
-
schema:
|
|
61
|
+
schema: ApicitySchema<KieClaudeRequest>;
|
|
62
62
|
}
|
|
63
63
|
interface KieClaudeV1Namespace {
|
|
64
64
|
messages: KieClaudeMessagesMethod;
|
package/dist/src/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAsB7C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,wBAAwB,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CAAC;IAChD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,qBAAqB,GAC7B,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,UAAU,uBAAuB;IAC/B,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;CACzC;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,oBAAoB,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,sBAAsB,CAAC;KAC9B,CAAC;CACH;AAMD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,iBAAiB,CA2EnB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ApicitySchema } from "./types.js";
|
|
2
|
+
import type { KieGemini31ProChatCompletionsRequest } from "./zod.js";
|
|
3
|
+
export interface KieGemini31ProChatMessage {
|
|
4
|
+
role?: string;
|
|
5
|
+
content?: string | null;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface KieGemini31ProChatDelta {
|
|
9
|
+
role?: string;
|
|
10
|
+
content?: string | null;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface KieGemini31ProChatChoice {
|
|
14
|
+
index?: number;
|
|
15
|
+
message?: KieGemini31ProChatMessage;
|
|
16
|
+
delta?: KieGemini31ProChatDelta;
|
|
17
|
+
finish_reason?: string | null;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface KieGemini31ProCompletionTokensDetails {
|
|
21
|
+
reasoning_tokens?: number;
|
|
22
|
+
audio_tokens?: number;
|
|
23
|
+
text_tokens?: number;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface KieGemini31ProChatUsage {
|
|
27
|
+
prompt_tokens?: number;
|
|
28
|
+
completion_tokens?: number;
|
|
29
|
+
total_tokens?: number;
|
|
30
|
+
completion_tokens_details?: KieGemini31ProCompletionTokensDetails;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export interface KieGemini31ProChatCompletionResponse {
|
|
34
|
+
id?: string;
|
|
35
|
+
object?: string;
|
|
36
|
+
created?: number;
|
|
37
|
+
model?: string;
|
|
38
|
+
choices?: KieGemini31ProChatChoice[];
|
|
39
|
+
usage?: KieGemini31ProChatUsage;
|
|
40
|
+
credits_consumed?: number;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
export interface KieGemini31ProChatCompletionChunk {
|
|
44
|
+
id?: string;
|
|
45
|
+
object?: string;
|
|
46
|
+
created?: number;
|
|
47
|
+
model?: string;
|
|
48
|
+
choices?: KieGemini31ProChatChoice[];
|
|
49
|
+
usage?: KieGemini31ProChatUsage;
|
|
50
|
+
[key: string]: unknown;
|
|
51
|
+
}
|
|
52
|
+
export type KieGemini31ProChatCompletionsResult = KieGemini31ProChatCompletionResponse | AsyncIterable<KieGemini31ProChatCompletionChunk>;
|
|
53
|
+
interface KieGemini31ProChatCompletionsMethod {
|
|
54
|
+
(req: KieGemini31ProChatCompletionsRequest, signal?: AbortSignal): Promise<KieGemini31ProChatCompletionsResult>;
|
|
55
|
+
schema: ApicitySchema<KieGemini31ProChatCompletionsRequest>;
|
|
56
|
+
}
|
|
57
|
+
interface KieGemini31ProChatNamespace {
|
|
58
|
+
completions: KieGemini31ProChatCompletionsMethod;
|
|
59
|
+
}
|
|
60
|
+
interface KieGemini31ProV1Namespace {
|
|
61
|
+
chat: KieGemini31ProChatNamespace;
|
|
62
|
+
}
|
|
63
|
+
interface KieGemini31ProPostNamespace {
|
|
64
|
+
v1: KieGemini31ProV1Namespace;
|
|
65
|
+
}
|
|
66
|
+
export interface KieGemini31ProProvider {
|
|
67
|
+
gemini31Pro: {
|
|
68
|
+
post: KieGemini31ProPostNamespace;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export declare function createGemini31ProProvider(baseURL: string, apiKey: string, doFetch: typeof fetch, timeout: number): KieGemini31ProProvider;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=gemini-31-pro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-31-pro.d.ts","sourceRoot":"","sources":["../../src/gemini-31-pro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { sseToIterable } from "./sse.js";
|
|
2
|
+
import { KieError } from "./types.js";
|
|
3
|
+
import { KieGemini31ProChatCompletionsRequestSchema } from "./zod.js";
|
|
4
|
+
function attachAbortHandler(signal, controller) {
|
|
5
|
+
if (!signal)
|
|
6
|
+
return;
|
|
7
|
+
if (signal.aborted) {
|
|
8
|
+
controller.abort();
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
signal.addEventListener("abort", () => controller.abort(), { once: true });
|
|
12
|
+
}
|
|
13
|
+
function isGemini31ProErrorBody(value) {
|
|
14
|
+
return typeof value === "object" && value !== null;
|
|
15
|
+
}
|
|
16
|
+
function codeToString(code) {
|
|
17
|
+
if (typeof code === "string")
|
|
18
|
+
return code;
|
|
19
|
+
if (typeof code === "number")
|
|
20
|
+
return String(code);
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
function formatGemini31ProError(status, body) {
|
|
24
|
+
if (isGemini31ProErrorBody(body)) {
|
|
25
|
+
if (body.error?.message) {
|
|
26
|
+
return {
|
|
27
|
+
message: `Kie Gemini 3.1 Pro API error ${status}: ${body.error.message}`,
|
|
28
|
+
code: body.error.type,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (typeof body.msg === "string") {
|
|
32
|
+
return {
|
|
33
|
+
message: `Kie Gemini 3.1 Pro API error ${status}: ${body.msg}`,
|
|
34
|
+
code: codeToString(body.code),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (typeof body.message === "string") {
|
|
38
|
+
return {
|
|
39
|
+
message: `Kie Gemini 3.1 Pro API error ${status}: ${body.message}`,
|
|
40
|
+
code: body.type,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { message: `Kie Gemini 3.1 Pro API error: ${status}` };
|
|
45
|
+
}
|
|
46
|
+
async function parseErrorResponse(res) {
|
|
47
|
+
let body = null;
|
|
48
|
+
try {
|
|
49
|
+
body = await res.json();
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore parse errors
|
|
53
|
+
}
|
|
54
|
+
const formatted = formatGemini31ProError(res.status, body);
|
|
55
|
+
return new KieError(formatted.message, res.status, body, formatted.code);
|
|
56
|
+
}
|
|
57
|
+
async function* parseChatCompletionsStream(res) {
|
|
58
|
+
for await (const data of sseToIterable(res)) {
|
|
59
|
+
if (data === "[DONE]") {
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
yield JSON.parse(data);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore keep-alive or non-JSON stream lines.
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function isEventStream(res) {
|
|
71
|
+
return (res.headers
|
|
72
|
+
.get("content-type")
|
|
73
|
+
?.toLowerCase()
|
|
74
|
+
.includes("text/event-stream") ?? false);
|
|
75
|
+
}
|
|
76
|
+
export function createGemini31ProProvider(baseURL, apiKey, doFetch, timeout) {
|
|
77
|
+
return {
|
|
78
|
+
gemini31Pro: {
|
|
79
|
+
post: {
|
|
80
|
+
v1: {
|
|
81
|
+
chat: {
|
|
82
|
+
// sig-ok: URL segment has a dot; TS namespace uses a valid identifier.
|
|
83
|
+
// POST https://api.kie.ai/gemini-3.1-pro/v1/chat/completions
|
|
84
|
+
// Docs: https://docs.kie.ai/market/gemini/gemini-3-1-pro
|
|
85
|
+
completions: Object.assign(async function completions(req, signal) {
|
|
86
|
+
const controller = new AbortController();
|
|
87
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
88
|
+
attachAbortHandler(signal, controller);
|
|
89
|
+
try {
|
|
90
|
+
const res = await doFetch(`${baseURL}/gemini-3.1-pro/v1/chat/completions`, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers: {
|
|
93
|
+
Authorization: `Bearer ${apiKey}`,
|
|
94
|
+
"Content-Type": "application/json",
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify(req),
|
|
97
|
+
signal: controller.signal,
|
|
98
|
+
});
|
|
99
|
+
clearTimeout(timeoutId);
|
|
100
|
+
if (!res.ok) {
|
|
101
|
+
throw await parseErrorResponse(res);
|
|
102
|
+
}
|
|
103
|
+
if (isEventStream(res)) {
|
|
104
|
+
return parseChatCompletionsStream(res);
|
|
105
|
+
}
|
|
106
|
+
return (await res.json());
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
clearTimeout(timeoutId);
|
|
110
|
+
if (error instanceof KieError)
|
|
111
|
+
throw error;
|
|
112
|
+
if (error instanceof SyntaxError) {
|
|
113
|
+
throw new KieError("Failed to parse Gemini 3.1 Pro chat response", 500);
|
|
114
|
+
}
|
|
115
|
+
throw new KieError(`Gemini 3.1 Pro chat request failed: ${error}`, 500);
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
118
|
+
schema: KieGemini31ProChatCompletionsRequestSchema,
|
|
119
|
+
}),
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=gemini-31-pro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-31-pro.js","sourceRoot":"","sources":["../../src/gemini-31-pro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ApicitySchema } from "./types.js";
|
|
2
|
+
import type { KieGemini35FlashStreamGenerateContentRequest } from "./zod.js";
|
|
3
|
+
export interface KieGeminiFunctionCall {
|
|
4
|
+
args?: Record<string, unknown>;
|
|
5
|
+
name?: string;
|
|
6
|
+
id?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface KieGeminiResponsePart {
|
|
9
|
+
text?: string;
|
|
10
|
+
functionCall?: KieGeminiFunctionCall;
|
|
11
|
+
thoughtSignature?: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface KieGeminiResponseContent {
|
|
15
|
+
role?: "model" | "user" | string;
|
|
16
|
+
parts?: KieGeminiResponsePart[];
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface KieGeminiCandidate {
|
|
20
|
+
content?: KieGeminiResponseContent;
|
|
21
|
+
finishReason?: string;
|
|
22
|
+
index?: number;
|
|
23
|
+
safetyRatings?: Array<Record<string, unknown>>;
|
|
24
|
+
groundingMetadata?: Record<string, unknown>;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
export interface KieGeminiUsageMetadata {
|
|
28
|
+
candidatesTokenCount?: number;
|
|
29
|
+
thoughtsTokenCount?: number;
|
|
30
|
+
totalTokenCount?: number;
|
|
31
|
+
promptTokenCount?: number;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
export interface KieGemini35FlashGenerateContentResponse {
|
|
35
|
+
candidates?: KieGeminiCandidate[];
|
|
36
|
+
modelVersion?: string;
|
|
37
|
+
usageMetadata?: KieGeminiUsageMetadata;
|
|
38
|
+
credits_consumed?: number;
|
|
39
|
+
responseId?: string;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
export type KieGemini35FlashStreamGenerateContentChunk = KieGemini35FlashGenerateContentResponse;
|
|
43
|
+
export type KieGemini35FlashStreamGenerateContentResult = KieGemini35FlashGenerateContentResponse | AsyncIterable<KieGemini35FlashStreamGenerateContentChunk>;
|
|
44
|
+
interface KieGemini35FlashStreamGenerateContentMethod {
|
|
45
|
+
(req: KieGemini35FlashStreamGenerateContentRequest, signal?: AbortSignal): Promise<KieGemini35FlashStreamGenerateContentResult>;
|
|
46
|
+
schema: ApicitySchema<KieGemini35FlashStreamGenerateContentRequest>;
|
|
47
|
+
}
|
|
48
|
+
interface KieGeminiModelsNamespace {
|
|
49
|
+
gemini35Flash: {
|
|
50
|
+
streamGenerateContent: KieGemini35FlashStreamGenerateContentMethod;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
interface KieGeminiPostV1Namespace {
|
|
54
|
+
models: KieGeminiModelsNamespace;
|
|
55
|
+
}
|
|
56
|
+
interface KieGeminiPostNamespace {
|
|
57
|
+
v1: KieGeminiPostV1Namespace;
|
|
58
|
+
}
|
|
59
|
+
export interface KieGeminiProvider {
|
|
60
|
+
gemini: {
|
|
61
|
+
post: KieGeminiPostNamespace;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export declare function createGeminiProvider(baseURL: string, apiKey: string, doFetch: typeof fetch, timeout: number): KieGeminiProvider;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,OAAO,CAAC;AAgB1E,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uCAAuC;IACtD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,0CAA0C,GACpD,uCAAuC,CAAC;AAE1C,MAAM,MAAM,2CAA2C,GACnD,uCAAuC,GACvC,aAAa,CAAC,0CAA0C,CAAC,CAAC;AAE9D,UAAU,2CAA2C;IACnD,CACE,GAAG,EAAE,4CAA4C,EACjD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,2CAA2C,CAAC,CAAC;IACxD,MAAM,EAAE,aAAa,CAAC,4CAA4C,CAAC,CAAC;CACrE;AAED,UAAU,wBAAwB;IAChC,aAAa,EAAE;QACb,qBAAqB,EAAE,2CAA2C,CAAC;KACpE,CAAC;CACH;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,wBAAwB,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,sBAAsB,CAAC;KAC9B,CAAC;CACH;AA0ED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,EACrB,OAAO,EAAE,MAAM,GACd,iBAAiB,CAqEnB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { sseToIterable } from "./sse.js";
|
|
2
|
+
import { KieError } from "./types.js";
|
|
3
|
+
import { KieGemini35FlashStreamGenerateContentRequestSchema } from "./zod.js";
|
|
4
|
+
function attachAbortHandler(signal, controller) {
|
|
5
|
+
if (!signal)
|
|
6
|
+
return;
|
|
7
|
+
if (signal.aborted) {
|
|
8
|
+
controller.abort();
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
signal.addEventListener("abort", () => controller.abort(), { once: true });
|
|
12
|
+
}
|
|
13
|
+
function isGeminiErrorBody(value) {
|
|
14
|
+
return typeof value === "object" && value !== null;
|
|
15
|
+
}
|
|
16
|
+
function formatGeminiError(status, body) {
|
|
17
|
+
if (isGeminiErrorBody(body)) {
|
|
18
|
+
if (body.error?.message) {
|
|
19
|
+
return {
|
|
20
|
+
message: `Kie Gemini API error ${status}: ${body.error.message}`,
|
|
21
|
+
code: body.error.type,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (typeof body.message === "string") {
|
|
25
|
+
return {
|
|
26
|
+
message: `Kie Gemini API error ${status}: ${body.message}`,
|
|
27
|
+
code: body.type,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { message: `Kie Gemini API error: ${status}` };
|
|
32
|
+
}
|
|
33
|
+
async function parseErrorResponse(res) {
|
|
34
|
+
let body = null;
|
|
35
|
+
try {
|
|
36
|
+
body = await res.json();
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// ignore parse errors
|
|
40
|
+
}
|
|
41
|
+
const formatted = formatGeminiError(res.status, body);
|
|
42
|
+
return new KieError(formatted.message, res.status, body, formatted.code);
|
|
43
|
+
}
|
|
44
|
+
async function* parseGeminiStream(res) {
|
|
45
|
+
for await (const data of sseToIterable(res)) {
|
|
46
|
+
if (data === "[DONE]") {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
yield JSON.parse(data);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Ignore provider keep-alive or non-JSON stream lines.
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function isEventStream(res) {
|
|
58
|
+
return (res.headers
|
|
59
|
+
.get("content-type")
|
|
60
|
+
?.toLowerCase()
|
|
61
|
+
.includes("text/event-stream") ?? false);
|
|
62
|
+
}
|
|
63
|
+
export function createGeminiProvider(baseURL, apiKey, doFetch, timeout) {
|
|
64
|
+
return {
|
|
65
|
+
gemini: {
|
|
66
|
+
post: {
|
|
67
|
+
v1: {
|
|
68
|
+
models: {
|
|
69
|
+
gemini35Flash: {
|
|
70
|
+
// POST https://api.kie.ai/gemini/v1/models/gemini-3-5-flash:streamGenerateContent
|
|
71
|
+
// Docs: https://docs.kie.ai/market/gemini/gemini-3-5-flash
|
|
72
|
+
streamGenerateContent: Object.assign(async function streamGenerateContent(req, signal) {
|
|
73
|
+
const controller = new AbortController();
|
|
74
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
75
|
+
attachAbortHandler(signal, controller);
|
|
76
|
+
try {
|
|
77
|
+
const res = await doFetch(`${baseURL}/gemini/v1/models/gemini-3-5-flash:streamGenerateContent`, {
|
|
78
|
+
method: "POST",
|
|
79
|
+
headers: {
|
|
80
|
+
"Content-Type": "application/json",
|
|
81
|
+
"X-Goog-Api-Key": apiKey,
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify(req),
|
|
84
|
+
signal: controller.signal,
|
|
85
|
+
});
|
|
86
|
+
clearTimeout(timeoutId);
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
throw await parseErrorResponse(res);
|
|
89
|
+
}
|
|
90
|
+
if (isEventStream(res)) {
|
|
91
|
+
return parseGeminiStream(res);
|
|
92
|
+
}
|
|
93
|
+
return (await res.json());
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
clearTimeout(timeoutId);
|
|
97
|
+
if (error instanceof KieError)
|
|
98
|
+
throw error;
|
|
99
|
+
if (error instanceof SyntaxError) {
|
|
100
|
+
throw new KieError("Failed to parse Gemini response", 500);
|
|
101
|
+
}
|
|
102
|
+
throw new KieError(`Gemini request failed: ${error}`, 500);
|
|
103
|
+
}
|
|
104
|
+
}, {
|
|
105
|
+
schema: KieGemini35FlashStreamGenerateContentRequestSchema,
|
|
106
|
+
}),
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"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"}
|