@lingjingai/scriptctl 0.55.0 → 0.56.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.
- package/changes/0.56.0.md +13 -0
- package/dist/failures.d.ts +58 -0
- package/dist/failures.js +96 -0
- package/dist/failures.js.map +1 -0
- package/dist/infra/llm/doubao-video-model.js +25 -24
- package/dist/infra/llm/doubao-video-model.js.map +1 -1
- package/dist/infra/llm/failure-mapping.d.ts +6 -0
- package/dist/infra/llm/failure-mapping.js +146 -0
- package/dist/infra/llm/failure-mapping.js.map +1 -0
- package/dist/infra/llm/gemini-upload.js +14 -9
- package/dist/infra/llm/gemini-upload.js.map +1 -1
- package/dist/infra/llm/gemini-video-model.d.ts +4 -7
- package/dist/infra/llm/gemini-video-model.js +130 -38
- package/dist/infra/llm/gemini-video-model.js.map +1 -1
- package/dist/llm/router.js +37 -9
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/types.d.ts +14 -7
- package/dist/llm/types.js +26 -0
- package/dist/llm/types.js.map +1 -1
- package/dist/usecases/ingest/failure.d.ts +26 -0
- package/dist/usecases/ingest/failure.js +149 -0
- package/dist/usecases/ingest/failure.js.map +1 -0
- package/dist/usecases/ingest/status.d.ts +9 -5
- package/dist/usecases/ingest/status.js +64 -13
- package/dist/usecases/ingest/status.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.js +12 -13
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +1 -1
- package/skills/scriptctl/references/ingest-workflow.md +11 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 0.56.0
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- `scriptctl ingest status --json` includes `failure_summary` and typed `errors[]` fields with stable failure type/code enums, retryability, provider/model context, HTTP or system codes, Gemini policy feedback, and per-model fallback attempts.
|
|
5
|
+
|
|
6
|
+
## Changed
|
|
7
|
+
- Video ingest error sidecars preserve structured provider, network, policy, media, response, and pipeline failure data instead of flattening every episode failure into one message string.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
- Video ingest status classifies Gemini SDK request timeouts and Node TLS handshake errors under their specific timeout and TLS failure codes.
|
|
11
|
+
|
|
12
|
+
## Breaking
|
|
13
|
+
- None.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export declare const FAILURE_CODES: {
|
|
2
|
+
readonly policy: readonly ["content_blocked"];
|
|
3
|
+
readonly network: readonly ["dns_failed", "connection_refused", "connection_reset", "network_unreachable", "tls_failed", "network_failed"];
|
|
4
|
+
readonly timeout: readonly ["connect_timeout", "request_timeout", "media_processing_timeout"];
|
|
5
|
+
readonly rate_limit: readonly ["rate_limited"];
|
|
6
|
+
readonly authentication: readonly ["authentication_failed"];
|
|
7
|
+
readonly authorization: readonly ["permission_denied"];
|
|
8
|
+
readonly provider: readonly ["resource_not_found", "provider_unavailable", "request_rejected", "attempts_exhausted"];
|
|
9
|
+
readonly media: readonly ["media_upload_failed", "media_processing_failed", "media_too_large", "unsupported_media"];
|
|
10
|
+
readonly response: readonly ["output_truncated", "empty_response", "malformed_response"];
|
|
11
|
+
readonly pipeline: readonly ["serial_parse_failed", "source_mismatch", "pipeline_mismatch"];
|
|
12
|
+
readonly validation: readonly ["script_validation_failed"];
|
|
13
|
+
readonly cancelled: readonly ["cancelled"];
|
|
14
|
+
readonly unknown: readonly ["unknown", "legacy_unclassified"];
|
|
15
|
+
};
|
|
16
|
+
export type FailureCodeByType = {
|
|
17
|
+
[Type in keyof typeof FAILURE_CODES]: (typeof FAILURE_CODES)[Type][number];
|
|
18
|
+
};
|
|
19
|
+
export type FailureType = keyof typeof FAILURE_CODES;
|
|
20
|
+
export type FailureClassification = {
|
|
21
|
+
[Type in FailureType]: {
|
|
22
|
+
failure_type: Type;
|
|
23
|
+
failure_code: FailureCodeByType[Type];
|
|
24
|
+
};
|
|
25
|
+
}[FailureType];
|
|
26
|
+
export type GeminiPolicySource = "prompt" | "candidate";
|
|
27
|
+
export type GeminiPolicyReason = "SAFETY" | "PROHIBITED_CONTENT" | "BLOCKLIST" | "SPII" | "RECITATION" | "IMAGE_SAFETY" | "IMAGE_PROHIBITED_CONTENT" | "IMAGE_RECITATION" | "ESCALATION" | "OTHER" | "UNSPECIFIED" | "UNKNOWN";
|
|
28
|
+
export interface ProviderSafetyRating {
|
|
29
|
+
category: string;
|
|
30
|
+
probability: string;
|
|
31
|
+
blocked: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface FailureContext {
|
|
34
|
+
provider?: string;
|
|
35
|
+
model?: string;
|
|
36
|
+
operation?: string;
|
|
37
|
+
http_status?: number;
|
|
38
|
+
system_code?: string;
|
|
39
|
+
provider_source?: GeminiPolicySource;
|
|
40
|
+
provider_reason?: GeminiPolicyReason;
|
|
41
|
+
provider_reason_raw?: string;
|
|
42
|
+
finish_message?: string;
|
|
43
|
+
safety_ratings?: ProviderSafetyRating[];
|
|
44
|
+
details?: string[];
|
|
45
|
+
}
|
|
46
|
+
export type OperationalFailure = FailureClassification & FailureContext & {
|
|
47
|
+
retryable: boolean;
|
|
48
|
+
message: string;
|
|
49
|
+
};
|
|
50
|
+
export declare function parseFailureClassification(type: unknown, code: unknown): FailureClassification | null;
|
|
51
|
+
export declare function createOperationalFailure(classification: FailureClassification, fields: FailureContext & {
|
|
52
|
+
retryable: boolean;
|
|
53
|
+
message: string;
|
|
54
|
+
}): OperationalFailure;
|
|
55
|
+
export declare function classificationOf(failure: OperationalFailure): FailureClassification;
|
|
56
|
+
export declare function contextOf(failure: OperationalFailure): FailureContext;
|
|
57
|
+
export declare function aggregateFailures(failures: OperationalFailure[], message: string): OperationalFailure;
|
|
58
|
+
export declare function formatFailure(failure: OperationalFailure): string;
|
package/dist/failures.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const FAILURE_CODES = {
|
|
2
|
+
policy: ["content_blocked"],
|
|
3
|
+
network: ["dns_failed", "connection_refused", "connection_reset", "network_unreachable", "tls_failed", "network_failed"],
|
|
4
|
+
timeout: ["connect_timeout", "request_timeout", "media_processing_timeout"],
|
|
5
|
+
rate_limit: ["rate_limited"],
|
|
6
|
+
authentication: ["authentication_failed"],
|
|
7
|
+
authorization: ["permission_denied"],
|
|
8
|
+
provider: ["resource_not_found", "provider_unavailable", "request_rejected", "attempts_exhausted"],
|
|
9
|
+
media: ["media_upload_failed", "media_processing_failed", "media_too_large", "unsupported_media"],
|
|
10
|
+
response: ["output_truncated", "empty_response", "malformed_response"],
|
|
11
|
+
pipeline: ["serial_parse_failed", "source_mismatch", "pipeline_mismatch"],
|
|
12
|
+
validation: ["script_validation_failed"],
|
|
13
|
+
cancelled: ["cancelled"],
|
|
14
|
+
unknown: ["unknown", "legacy_unclassified"],
|
|
15
|
+
};
|
|
16
|
+
function oneOf(value, values) {
|
|
17
|
+
return typeof value === "string" && values.some((candidate) => candidate === value);
|
|
18
|
+
}
|
|
19
|
+
export function parseFailureClassification(type, code) {
|
|
20
|
+
switch (type) {
|
|
21
|
+
case "policy": return oneOf(code, FAILURE_CODES.policy) ? { failure_type: type, failure_code: code } : null;
|
|
22
|
+
case "network": return oneOf(code, FAILURE_CODES.network) ? { failure_type: type, failure_code: code } : null;
|
|
23
|
+
case "timeout": return oneOf(code, FAILURE_CODES.timeout) ? { failure_type: type, failure_code: code } : null;
|
|
24
|
+
case "rate_limit": return oneOf(code, FAILURE_CODES.rate_limit) ? { failure_type: type, failure_code: code } : null;
|
|
25
|
+
case "authentication": return oneOf(code, FAILURE_CODES.authentication) ? { failure_type: type, failure_code: code } : null;
|
|
26
|
+
case "authorization": return oneOf(code, FAILURE_CODES.authorization) ? { failure_type: type, failure_code: code } : null;
|
|
27
|
+
case "provider": return oneOf(code, FAILURE_CODES.provider) ? { failure_type: type, failure_code: code } : null;
|
|
28
|
+
case "media": return oneOf(code, FAILURE_CODES.media) ? { failure_type: type, failure_code: code } : null;
|
|
29
|
+
case "response": return oneOf(code, FAILURE_CODES.response) ? { failure_type: type, failure_code: code } : null;
|
|
30
|
+
case "pipeline": return oneOf(code, FAILURE_CODES.pipeline) ? { failure_type: type, failure_code: code } : null;
|
|
31
|
+
case "validation": return oneOf(code, FAILURE_CODES.validation) ? { failure_type: type, failure_code: code } : null;
|
|
32
|
+
case "cancelled": return oneOf(code, FAILURE_CODES.cancelled) ? { failure_type: type, failure_code: code } : null;
|
|
33
|
+
case "unknown": return oneOf(code, FAILURE_CODES.unknown) ? { failure_type: type, failure_code: code } : null;
|
|
34
|
+
default: return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function createOperationalFailure(classification, fields) {
|
|
38
|
+
return { ...classification, ...fields };
|
|
39
|
+
}
|
|
40
|
+
export function classificationOf(failure) {
|
|
41
|
+
switch (failure.failure_type) {
|
|
42
|
+
case "policy": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
43
|
+
case "network": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
44
|
+
case "timeout": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
45
|
+
case "rate_limit": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
46
|
+
case "authentication": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
47
|
+
case "authorization": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
48
|
+
case "provider": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
49
|
+
case "media": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
50
|
+
case "response": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
51
|
+
case "pipeline": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
52
|
+
case "validation": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
53
|
+
case "cancelled": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
54
|
+
case "unknown": return { failure_type: failure.failure_type, failure_code: failure.failure_code };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function contextOf(failure) {
|
|
58
|
+
return {
|
|
59
|
+
...(failure.provider !== undefined ? { provider: failure.provider } : {}),
|
|
60
|
+
...(failure.model !== undefined ? { model: failure.model } : {}),
|
|
61
|
+
...(failure.operation !== undefined ? { operation: failure.operation } : {}),
|
|
62
|
+
...(failure.http_status !== undefined ? { http_status: failure.http_status } : {}),
|
|
63
|
+
...(failure.system_code !== undefined ? { system_code: failure.system_code } : {}),
|
|
64
|
+
...(failure.provider_source !== undefined ? { provider_source: failure.provider_source } : {}),
|
|
65
|
+
...(failure.provider_reason !== undefined ? { provider_reason: failure.provider_reason } : {}),
|
|
66
|
+
...(failure.provider_reason_raw !== undefined ? { provider_reason_raw: failure.provider_reason_raw } : {}),
|
|
67
|
+
...(failure.finish_message !== undefined ? { finish_message: failure.finish_message } : {}),
|
|
68
|
+
...(failure.safety_ratings !== undefined ? { safety_ratings: failure.safety_ratings } : {}),
|
|
69
|
+
...(failure.details !== undefined ? { details: failure.details } : {}),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function aggregateFailures(failures, message) {
|
|
73
|
+
if (failures.length === 0) {
|
|
74
|
+
return createOperationalFailure({ failure_type: "unknown", failure_code: "unknown" }, { retryable: false, message });
|
|
75
|
+
}
|
|
76
|
+
const first = failures[0];
|
|
77
|
+
const sameClassification = failures.every((failure) => failure.failure_type === first.failure_type && failure.failure_code === first.failure_code);
|
|
78
|
+
const classification = sameClassification
|
|
79
|
+
? classificationOf(first)
|
|
80
|
+
: { failure_type: "provider", failure_code: "attempts_exhausted" };
|
|
81
|
+
return createOperationalFailure(classification, {
|
|
82
|
+
retryable: failures.some((failure) => failure.retryable),
|
|
83
|
+
message,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
export function formatFailure(failure) {
|
|
87
|
+
const route = failure.provider || failure.model
|
|
88
|
+
? `${failure.provider ?? "provider"}/${failure.model ?? "model"} `
|
|
89
|
+
: "";
|
|
90
|
+
const reason = failure.provider_reason ? ` provider_reason=${failure.provider_reason}` : "";
|
|
91
|
+
const system = failure.system_code ? ` system_code=${failure.system_code}` : "";
|
|
92
|
+
const status = failure.http_status !== undefined ? ` http_status=${failure.http_status}` : "";
|
|
93
|
+
const details = failure.details?.length ? ` | ${failure.details.join(" | ")}` : "";
|
|
94
|
+
return `${route}${failure.failure_type}/${failure.failure_code}${reason}${system}${status}: ${failure.message}${details}`;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=failures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failures.js","sourceRoot":"","sources":["../src/failures.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,34 +9,24 @@
|
|
|
9
9
|
import * as fs from "node:fs";
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import { LlmTransportError, } from "../../llm/types.js";
|
|
12
|
+
import { httpError, httpStatusOf, networkError } from "./failure-mapping.js";
|
|
12
13
|
import { addTokenUsage, withTransientRetry } from "./retry.js";
|
|
13
14
|
const POLL_INTERVAL_MS = 2000;
|
|
14
15
|
function delay(ms) {
|
|
15
16
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
16
17
|
}
|
|
17
|
-
function statusOf(error) {
|
|
18
|
-
if (error && typeof error === "object" && typeof error.status === "number") {
|
|
19
|
-
return error.status;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
18
|
// Map an SDK/HTTP error to a transport error with the shared retry policy: retry
|
|
24
19
|
// only transient network/timeout/408/429/5xx.
|
|
25
|
-
function toArkError(error, signal, what) {
|
|
20
|
+
function toArkError(error, signal, what, model) {
|
|
26
21
|
if (error instanceof LlmTransportError)
|
|
27
22
|
return error;
|
|
28
23
|
const message = error instanceof Error ? error.message : String(error);
|
|
29
|
-
const status =
|
|
24
|
+
const status = httpStatusOf(error);
|
|
25
|
+
const context = { provider: "doubao", model, operation: what };
|
|
30
26
|
if (status !== null) {
|
|
31
|
-
|
|
32
|
-
const code = status === 401 || status === 403 ? "auth" : status === 429 ? "rate_limited" : "request_failed";
|
|
33
|
-
return new LlmTransportError(code, `Doubao ${what} failed.`, { retryable, details: [`status: ${status}`, message.slice(0, 500)] });
|
|
27
|
+
return httpError(status, `Doubao ${what} failed.`, message.slice(0, 500), context);
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
return new LlmTransportError(aborted ? "request_failed" : "timeout", `Doubao ${what} failed.`, {
|
|
37
|
-
retryable: !aborted,
|
|
38
|
-
details: [message.slice(0, 500)],
|
|
39
|
-
});
|
|
29
|
+
return networkError(error, signal, `Doubao ${what} failed.`, message.slice(0, 500), context);
|
|
40
30
|
}
|
|
41
31
|
function arkUsage(u) {
|
|
42
32
|
if (!u)
|
|
@@ -76,7 +66,7 @@ export class DoubaoVideoModel {
|
|
|
76
66
|
return await this.client.uploadFile({ filePath: request.localPath, mimeType: request.localMime, fps: request.fps });
|
|
77
67
|
}
|
|
78
68
|
catch (error) {
|
|
79
|
-
throw toArkError(error, request.signal, "upload");
|
|
69
|
+
throw toArkError(error, request.signal, "upload", this.model);
|
|
80
70
|
}
|
|
81
71
|
});
|
|
82
72
|
if (!file.id)
|
|
@@ -93,22 +83,33 @@ export class DoubaoVideoModel {
|
|
|
93
83
|
const deadline = Date.now() + this.timeoutMs;
|
|
94
84
|
let status = "processing";
|
|
95
85
|
while (status === "processing" || status === "") {
|
|
96
|
-
if (signal?.aborted)
|
|
97
|
-
throw new LlmTransportError("
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
if (signal?.aborted) {
|
|
87
|
+
throw new LlmTransportError("cancelled", "Doubao upload aborted.", {
|
|
88
|
+
context: { provider: "doubao", model: this.model, operation: "file_poll" },
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (Date.now() >= deadline) {
|
|
92
|
+
throw new LlmTransportError("timeout", "Doubao file processing timed out.", {
|
|
93
|
+
retryable: true,
|
|
94
|
+
classification: { failure_type: "timeout", failure_code: "media_processing_timeout" },
|
|
95
|
+
context: { provider: "doubao", model: this.model, operation: "file_poll" },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
100
98
|
await delay(POLL_INTERVAL_MS);
|
|
101
99
|
let file;
|
|
102
100
|
try {
|
|
103
101
|
file = await this.client.getFile({ id });
|
|
104
102
|
}
|
|
105
103
|
catch (error) {
|
|
106
|
-
throw toArkError(error, signal, "
|
|
104
|
+
throw toArkError(error, signal, "file_poll", this.model);
|
|
107
105
|
}
|
|
108
106
|
status = (file.status ?? "").toLowerCase();
|
|
109
107
|
}
|
|
110
108
|
if (status === "failed" || status === "error") {
|
|
111
|
-
throw new LlmTransportError("invalid_response", "Doubao file processing failed."
|
|
109
|
+
throw new LlmTransportError("invalid_response", "Doubao file processing failed.", {
|
|
110
|
+
classification: { failure_type: "media", failure_code: "media_processing_failed" },
|
|
111
|
+
context: { provider: "doubao", model: this.model, operation: "file_poll" },
|
|
112
|
+
});
|
|
112
113
|
}
|
|
113
114
|
return id;
|
|
114
115
|
}
|
|
@@ -132,7 +133,7 @@ export class DoubaoVideoModel {
|
|
|
132
133
|
res = await this.client.createResponse(params, request.signal);
|
|
133
134
|
}
|
|
134
135
|
catch (error) {
|
|
135
|
-
throw toArkError(error, request.signal, "
|
|
136
|
+
throw toArkError(error, request.signal, "generate", this.model);
|
|
136
137
|
}
|
|
137
138
|
const status = (res.status ?? "").toLowerCase();
|
|
138
139
|
const usage = arkUsage(res.usage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubao-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/doubao-video-model.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,kFAAkF;AAClF,2EAA2E;AAC3E,6EAA6E;AAC7E,gFAAgF;AAChF,qEAAqE;AAErE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,iBAAiB,GAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwB/D,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"doubao-video-model.js","sourceRoot":"","sources":["../../../src/infra/llm/doubao-video-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type FailureContext } from "../../failures.js";
|
|
2
|
+
import { LlmTransportError } from "../../llm/types.js";
|
|
3
|
+
export declare function httpStatusOf(error: unknown): number | null;
|
|
4
|
+
export declare function systemCodeOf(error: unknown): string | undefined;
|
|
5
|
+
export declare function networkError(error: unknown, signal: AbortSignal | undefined, message: string, detail: string, context?: FailureContext): LlmTransportError;
|
|
6
|
+
export declare function httpError(status: number, message: string, detail: string, context?: FailureContext): LlmTransportError;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { LlmTransportError } from "../../llm/types.js";
|
|
2
|
+
function isRecord(value) {
|
|
3
|
+
return typeof value === "object" && value !== null;
|
|
4
|
+
}
|
|
5
|
+
function errorChain(error) {
|
|
6
|
+
const chain = [];
|
|
7
|
+
const seen = new Set();
|
|
8
|
+
let current = error;
|
|
9
|
+
while (isRecord(current) && !seen.has(current)) {
|
|
10
|
+
seen.add(current);
|
|
11
|
+
chain.push(current);
|
|
12
|
+
current = current["cause"];
|
|
13
|
+
}
|
|
14
|
+
return chain;
|
|
15
|
+
}
|
|
16
|
+
export function httpStatusOf(error) {
|
|
17
|
+
for (const item of errorChain(error)) {
|
|
18
|
+
if (typeof item["status"] === "number")
|
|
19
|
+
return item["status"];
|
|
20
|
+
if (typeof item["statusCode"] === "number")
|
|
21
|
+
return item["statusCode"];
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
export function systemCodeOf(error) {
|
|
26
|
+
for (const item of errorChain(error)) {
|
|
27
|
+
if (typeof item["code"] === "string")
|
|
28
|
+
return item["code"];
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
function errorNameOf(error) {
|
|
33
|
+
for (const item of errorChain(error)) {
|
|
34
|
+
if (typeof item["name"] === "string")
|
|
35
|
+
return item["name"];
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
function isRequestTimeout(error) {
|
|
40
|
+
const name = errorNameOf(error);
|
|
41
|
+
return name === "AbortError"
|
|
42
|
+
|| name === "TimeoutError"
|
|
43
|
+
|| name === "RequestTimeoutError"
|
|
44
|
+
|| name === "APIConnectionTimeoutError";
|
|
45
|
+
}
|
|
46
|
+
function networkClassification(systemCode) {
|
|
47
|
+
if (!systemCode)
|
|
48
|
+
return { failure_type: "network", failure_code: "network_failed" };
|
|
49
|
+
if (["ENOTFOUND", "EAI_AGAIN"].includes(systemCode)) {
|
|
50
|
+
return { failure_type: "network", failure_code: "dns_failed" };
|
|
51
|
+
}
|
|
52
|
+
if (systemCode === "ECONNREFUSED") {
|
|
53
|
+
return { failure_type: "network", failure_code: "connection_refused" };
|
|
54
|
+
}
|
|
55
|
+
if (["ECONNRESET", "EPIPE", "UND_ERR_SOCKET"].includes(systemCode)) {
|
|
56
|
+
return { failure_type: "network", failure_code: "connection_reset" };
|
|
57
|
+
}
|
|
58
|
+
if (["ENETUNREACH", "EHOSTUNREACH"].includes(systemCode)) {
|
|
59
|
+
return { failure_type: "network", failure_code: "network_unreachable" };
|
|
60
|
+
}
|
|
61
|
+
if (systemCode.startsWith("ERR_TLS_")
|
|
62
|
+
|| systemCode.startsWith("ERR_SSL_")
|
|
63
|
+
|| systemCode.startsWith("CERT_")
|
|
64
|
+
|| ["DEPTH_ZERO_SELF_SIGNED_CERT", "SELF_SIGNED_CERT_IN_CHAIN", "UNABLE_TO_VERIFY_LEAF_SIGNATURE"].includes(systemCode)) {
|
|
65
|
+
return { failure_type: "network", failure_code: "tls_failed" };
|
|
66
|
+
}
|
|
67
|
+
if (["ETIMEDOUT", "UND_ERR_CONNECT_TIMEOUT"].includes(systemCode)) {
|
|
68
|
+
return { failure_type: "timeout", failure_code: "connect_timeout" };
|
|
69
|
+
}
|
|
70
|
+
return { failure_type: "network", failure_code: "network_failed" };
|
|
71
|
+
}
|
|
72
|
+
export function networkError(error, signal, message, detail, context = {}) {
|
|
73
|
+
if (signal?.aborted) {
|
|
74
|
+
return new LlmTransportError("cancelled", message, {
|
|
75
|
+
details: [detail],
|
|
76
|
+
classification: { failure_type: "cancelled", failure_code: "cancelled" },
|
|
77
|
+
context,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const systemCode = systemCodeOf(error);
|
|
81
|
+
const classification = isRequestTimeout(error)
|
|
82
|
+
? { failure_type: "timeout", failure_code: "request_timeout" }
|
|
83
|
+
: networkClassification(systemCode);
|
|
84
|
+
const code = classification.failure_type === "timeout" ? "timeout" : "network";
|
|
85
|
+
return new LlmTransportError(code, message, {
|
|
86
|
+
retryable: true,
|
|
87
|
+
details: [detail],
|
|
88
|
+
classification,
|
|
89
|
+
context: { ...context, ...(systemCode ? { system_code: systemCode } : {}) },
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export function httpError(status, message, detail, context = {}) {
|
|
93
|
+
let code;
|
|
94
|
+
let classification;
|
|
95
|
+
let retryable = false;
|
|
96
|
+
if (status === 401) {
|
|
97
|
+
code = "auth";
|
|
98
|
+
classification = { failure_type: "authentication", failure_code: "authentication_failed" };
|
|
99
|
+
}
|
|
100
|
+
else if (status === 403) {
|
|
101
|
+
code = "permission_denied";
|
|
102
|
+
classification = { failure_type: "authorization", failure_code: "permission_denied" };
|
|
103
|
+
}
|
|
104
|
+
else if (status === 404) {
|
|
105
|
+
code = "endpoint";
|
|
106
|
+
classification = { failure_type: "provider", failure_code: "resource_not_found" };
|
|
107
|
+
}
|
|
108
|
+
else if (status === 408) {
|
|
109
|
+
code = "timeout";
|
|
110
|
+
classification = { failure_type: "timeout", failure_code: "request_timeout" };
|
|
111
|
+
retryable = true;
|
|
112
|
+
}
|
|
113
|
+
else if (status === 413 && context.operation === "upload") {
|
|
114
|
+
code = "request_failed";
|
|
115
|
+
classification = { failure_type: "media", failure_code: "media_too_large" };
|
|
116
|
+
}
|
|
117
|
+
else if (status === 415 && context.operation === "upload") {
|
|
118
|
+
code = "request_failed";
|
|
119
|
+
classification = { failure_type: "media", failure_code: "unsupported_media" };
|
|
120
|
+
}
|
|
121
|
+
else if (status === 429) {
|
|
122
|
+
code = "rate_limited";
|
|
123
|
+
classification = { failure_type: "rate_limit", failure_code: "rate_limited" };
|
|
124
|
+
retryable = true;
|
|
125
|
+
}
|
|
126
|
+
else if (status >= 500) {
|
|
127
|
+
code = "request_failed";
|
|
128
|
+
classification = { failure_type: "provider", failure_code: "provider_unavailable" };
|
|
129
|
+
retryable = true;
|
|
130
|
+
}
|
|
131
|
+
else if (context.operation === "upload") {
|
|
132
|
+
code = "request_failed";
|
|
133
|
+
classification = { failure_type: "media", failure_code: "media_upload_failed" };
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
code = "request_failed";
|
|
137
|
+
classification = { failure_type: "provider", failure_code: "request_rejected" };
|
|
138
|
+
}
|
|
139
|
+
return new LlmTransportError(code, message, {
|
|
140
|
+
retryable,
|
|
141
|
+
details: [`status: ${status}`, detail],
|
|
142
|
+
classification,
|
|
143
|
+
context: { ...context, http_status: status },
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=failure-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-mapping.js","sourceRoot":"","sources":["../../../src/infra/llm/failure-mapping.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAI1E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,KAAK,YAAY;WACvB,IAAI,KAAK,cAAc;WACvB,IAAI,KAAK,qBAAqB;WAC9B,IAAI,KAAK,2BAA2B,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA8B;IAC3D,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACpF,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;IAC1E,CAAC;IACD,IACE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;WAC9B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;WACjC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;WAC9B,CAAC,6BAA6B,EAAE,2BAA2B,EAAE,iCAAiC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EACvH,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAAc,EACd,MAA+B,EAC/B,OAAe,EACf,MAAc,EACd,UAA0B,EAAE;IAE5B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE;YACjD,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,cAAc,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;YACxE,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,cAAc,GAA0B,gBAAgB,CAAC,KAAK,CAAC;QACnE,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE;QAC9D,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,IAAI,GAAiB,cAAc,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;QAC1C,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,cAAc;QACd,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC5E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAAc,EACd,OAAe,EACf,MAAc,EACd,UAA0B,EAAE;IAE5B,IAAI,IAAkB,CAAC;IACvB,IAAI,cAAqC,CAAC;IAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,MAAM,CAAC;QACd,cAAc,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;IAC7F,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,mBAAmB,CAAC;QAC3B,cAAc,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACxF,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,UAAU,CAAC;QAClB,cAAc,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACpF,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,SAAS,CAAC;QACjB,cAAc,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;QAC9E,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5D,IAAI,GAAG,gBAAgB,CAAC;QACxB,cAAc,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAC9E,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5D,IAAI,GAAG,gBAAgB,CAAC;QACxB,cAAc,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;IAChF,CAAC;SAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,cAAc,CAAC;QACtB,cAAc,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;QAC9E,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,gBAAgB,CAAC;QACxB,cAAc,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACpF,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1C,IAAI,GAAG,gBAAgB,CAAC;QACxB,cAAc,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,gBAAgB,CAAC;QACxB,cAAc,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;QAC1C,SAAS;QACT,OAAO,EAAE,CAAC,WAAW,MAAM,EAAE,EAAE,MAAM,CAAC;QACtC,cAAc;QACd,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -9,6 +9,7 @@ import * as http from "node:http";
|
|
|
9
9
|
import * as https from "node:https";
|
|
10
10
|
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
11
11
|
import { LlmTransportError } from "../../llm/types.js";
|
|
12
|
+
import { httpError, networkError } from "./failure-mapping.js";
|
|
12
13
|
const DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com";
|
|
13
14
|
export function geminiUploadStartUrl(baseUrl, apiKey) {
|
|
14
15
|
const root = new URL(baseUrl ?? DEFAULT_BASE_URL);
|
|
@@ -95,14 +96,18 @@ export async function resumableUpload(params) {
|
|
|
95
96
|
}, JSON.stringify({ file: {} }), params.signal);
|
|
96
97
|
}
|
|
97
98
|
catch (e) {
|
|
98
|
-
|
|
99
|
+
const detail = safe(e instanceof Error ? e.message : String(e));
|
|
100
|
+
throw networkError(e, params.signal, "Gemini upload start failed.", detail, { operation: "upload" });
|
|
99
101
|
}
|
|
100
|
-
if (start.status === 401 || start.status === 403)
|
|
101
|
-
throw new LlmTransportError("auth", "Gemini upload unauthorized.", { details: [safe(start.body).slice(0, 300)] });
|
|
102
102
|
const uploadUrl = header(start.headers, "x-goog-upload-url");
|
|
103
|
-
if (start.status < 200 || start.status >= 300
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
if (start.status < 200 || start.status >= 300) {
|
|
104
|
+
throw httpError(start.status, "Gemini upload start failed.", safe(start.body).slice(0, 300), { operation: "upload" });
|
|
105
|
+
}
|
|
106
|
+
if (!uploadUrl) {
|
|
107
|
+
throw new LlmTransportError("invalid_response", "Gemini upload start returned no upload URL.", {
|
|
108
|
+
details: [safe(start.body).slice(0, 300)],
|
|
109
|
+
context: { operation: "upload", http_status: start.status },
|
|
110
|
+
});
|
|
106
111
|
}
|
|
107
112
|
const u = geminiUploadTransferUrl(uploadUrl, params.baseUrl);
|
|
108
113
|
let up;
|
|
@@ -113,11 +118,11 @@ export async function resumableUpload(params) {
|
|
|
113
118
|
}, fs.createReadStream(params.filePath), params.signal);
|
|
114
119
|
}
|
|
115
120
|
catch (e) {
|
|
116
|
-
|
|
121
|
+
const detail = safe(e instanceof Error ? e.message : String(e));
|
|
122
|
+
throw networkError(e, params.signal, "Gemini upload transfer failed.", detail, { operation: "upload" });
|
|
117
123
|
}
|
|
118
124
|
if (up.status < 200 || up.status >= 300) {
|
|
119
|
-
|
|
120
|
-
throw new LlmTransportError("request_failed", "Gemini upload transfer failed.", { retryable, details: [`status: ${up.status}`, safe(up.body).slice(0, 300)] });
|
|
125
|
+
throw httpError(up.status, "Gemini upload transfer failed.", safe(up.body).slice(0, 300), { operation: "upload" });
|
|
121
126
|
}
|
|
122
127
|
let parsed;
|
|
123
128
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-upload.js","sourceRoot":"","sources":["../../../src/infra/llm/gemini-upload.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,kEAAkE;AAElE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-upload.js","sourceRoot":"","sources":["../../../src/infra/llm/gemini-upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Candidate, GenerateContentResponsePromptFeedback, GenerateContentResponseUsageMetadata } from "@google/genai";
|
|
1
2
|
import type { LlmModelConfig, LlmProviderConfig } from "../../llm/config.js";
|
|
2
3
|
import { type VideoMediaInput, type VideoGenerationRequest, type VideoGenerationResponse, type VideoUnderstandingPort } from "../../llm/types.js";
|
|
3
4
|
export interface GeminiFile {
|
|
@@ -11,13 +12,9 @@ export interface GeminiFile {
|
|
|
11
12
|
}
|
|
12
13
|
export interface GeminiGenerateResponse {
|
|
13
14
|
text?: string;
|
|
14
|
-
candidates?:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
promptFeedback?: {
|
|
18
|
-
blockReason?: string;
|
|
19
|
-
};
|
|
20
|
-
usageMetadata?: unknown;
|
|
15
|
+
candidates?: Candidate[];
|
|
16
|
+
promptFeedback?: GenerateContentResponsePromptFeedback;
|
|
17
|
+
usageMetadata?: GenerateContentResponseUsageMetadata;
|
|
21
18
|
}
|
|
22
19
|
export interface GeminiClient {
|
|
23
20
|
files: {
|