@wrenautomation/models 0.1.0 → 0.7.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 +26 -5
- package/dist/errors.d.ts +13 -1
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -1
- package/dist/fake.d.ts +1 -1
- package/dist/fake.js +7 -3
- package/dist/fake.js.map +1 -1
- package/dist/hear.d.ts +2 -0
- package/dist/hear.js +11 -0
- package/dist/hear.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +10 -1
- package/dist/keys.js +39 -2
- package/dist/keys.js.map +1 -1
- package/dist/prices.js +7 -0
- package/dist/prices.js.map +1 -1
- package/dist/providers.d.ts +42 -3
- package/dist/providers.js +109 -1
- package/dist/providers.js.map +1 -1
- package/dist/sdk.d.ts +8 -1
- package/dist/sdk.js +33 -16
- package/dist/sdk.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/package.json +7 -19
package/README.md
CHANGED
|
@@ -10,8 +10,8 @@ a new price goes here, never in the caller. No guard enforces this; this file an
|
|
|
10
10
|
|
|
11
11
|
| Import | Does | Runs in |
|
|
12
12
|
|---|---|---|
|
|
13
|
-
| `@wrenautomation/models` | `Model`, `Part`, `Usage`; `anthropic`, `gemini`, `cohere`, `compatible` (Groq, OpenRouter, Mistral, Cerebras, OpenAI), `gateway`; `rotating` key rings; `fakeModel`, `scriptedModel`; the errors | Node, Workers |
|
|
14
|
-
| `@wrenautomation/models/hear` | speech to text: `groqEar`, `cohereEar`, `compatibleEar` (any `/audio/transcriptions` server) | Node, Workers |
|
|
13
|
+
| `@wrenautomation/models` | `Model`, `Part`, `Usage`; `anthropic`, `gemini`, `cohere`, `compatible` (Groq, OpenRouter, Mistral, Cerebras, OpenAI), `gateway`; `rotating` key rings, `fallback` model order, `geminiLiveKeys`, `geminiFile` (Files API upload); `fakeModel`, `scriptedModel`; the errors | Node, Workers |
|
|
14
|
+
| `@wrenautomation/models/hear` | speech to text: `groqEar`, `cohereEar`, `compatibleEar` (any `/audio/transcriptions` server); `fakeEar` | Node, Workers |
|
|
15
15
|
| `@wrenautomation/models/prices` | one price table: `MODEL_PRICES`, `SPEECH_PRICES`, `priceUsd`, `priced`, `speechUsd`, `addUsage`, `pricesText` | Node, Workers |
|
|
16
16
|
| `@wrenautomation/models/command` | a shell command as a model (`commandModel`), Claude Code on the subscription (`claudeCode`) | Node |
|
|
17
17
|
| `@wrenautomation/models/spec` | a model from a setting string: `modelFromSpec("anthropic:sonnet", env)` | Node |
|
|
@@ -19,7 +19,7 @@ a new price goes here, never in the caller. No guard enforces this; this file an
|
|
|
19
19
|
## Use
|
|
20
20
|
|
|
21
21
|
```ts
|
|
22
|
-
import { anthropic, gemini } from "@wrenautomation/models";
|
|
22
|
+
import { anthropic, fallback, gemini } from "@wrenautomation/models";
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
|
|
25
25
|
const claude = anthropic({ key: [key1, key2], model: "sonnet" });
|
|
@@ -34,8 +34,27 @@ const reply = await eyes.complete({
|
|
|
34
34
|
],
|
|
35
35
|
effort: "low",
|
|
36
36
|
});
|
|
37
|
+
|
|
38
|
+
// A stretch of a YouTube video, sampled at one frame per 2 s, at low resolution.
|
|
39
|
+
const clip = await eyes.complete({
|
|
40
|
+
prompt: [
|
|
41
|
+
{ type: "video", data: new URL(youtubeUrl), mediaType: "video/mp4", clip: { startS: 60, endS: 90, fps: 0.5 } },
|
|
42
|
+
{ type: "text", text: "What is said and shown?" },
|
|
43
|
+
],
|
|
44
|
+
resolution: "low",
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Newest model first; each call starts at the top and moves down past a busy or refused one.
|
|
48
|
+
const reader = fallback([gemini({ key, model: "gemini-3.8-flash" }), gemini({ key })], { passes: 4 });
|
|
37
49
|
```
|
|
38
50
|
|
|
51
|
+
Gemini reads a clipped video on generateContent: `withClips` adds the `videoMetadata` field the SDK
|
|
52
|
+
does not send. The Interactions API also reads a stretch, but on free keys its flash quota is spent
|
|
53
|
+
at once (seen 2026-10-27; flash-lite answered).
|
|
54
|
+
|
|
55
|
+
A file too large to send inline goes up once with `geminiFile`. It lives in one key's project, so
|
|
56
|
+
read its `part` with a Gemini model on `file.key` alone, then `file.drop()`.
|
|
57
|
+
|
|
39
58
|
Spec strings: `fake`, `claude-code[:model]`, `anthropic[:haiku|sonnet|opus|id]`, `gateway[:alias]`,
|
|
40
59
|
`gemini[:id]`, `cohere[:id]`, `groq|openrouter|mistral|cerebras|openai[:id]`, `command:<shell command>`.
|
|
41
60
|
Keys come from `<VENDOR>_API_KEY`, or a ring `NUM_<VENDOR>` + `<VENDOR>_API_KEY_1..n`.
|
|
@@ -52,10 +71,12 @@ name, so a host that holds two copies of this package still sorts them.
|
|
|
52
71
|
| `InputRejected` | 400, 413, 422 | change the request |
|
|
53
72
|
| `Unsupported` | a part kind the model does not take | pick another model; parts are never dropped |
|
|
54
73
|
| `Cut` | the output cap stopped the answer | `partial` holds the text so far, `usage` its cost |
|
|
74
|
+
| `Filtered` | the vendor stopped the answer itself (Gemini's `RECITATION`, `SAFETY`, a failed run) | `stop` says which; ask in other words |
|
|
55
75
|
| `NoAnswer` | `ask` found no object of the shape after its repairs | `issues` says why |
|
|
56
76
|
|
|
57
|
-
A key ring moves past a refused or busy key at once. When every key is busy, it waits 2 s, then
|
|
58
|
-
doubles up to 30 s, for `passes` passes (default 1). Retries inside the SDK are off.
|
|
77
|
+
A key ring moves past a refused or busy key at once, and passes over a refused key on later calls. When every key is busy, it waits 2 s, then
|
|
78
|
+
doubles up to 30 s, for `passes` passes (default 1). Retries inside the SDK are off. An error never carries the key: a vendor that echoes it (Gemini
|
|
79
|
+
does, on a suspended key) has it put out as `[key]`.
|
|
59
80
|
|
|
60
81
|
## Prices
|
|
61
82
|
|
package/dist/errors.d.ts
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* a dropped connection). `Refused`: this key is bad (401, 402, 403); the key ring moves on.
|
|
4
4
|
* `InputRejected`: the vendor refused this input (400, 413, 422); record it and go on.
|
|
5
5
|
* `Unsupported`: the model cannot take a part it was given. `Cut`: the output cap stopped the
|
|
6
|
-
* answer; the text so far and its tokens come with it.
|
|
6
|
+
* answer; the text so far and its tokens come with it. `Filtered`: the vendor stopped the answer
|
|
7
|
+
* itself (a safety or recitation filter, a failed run); `stop` says which, and asking in other
|
|
8
|
+
* words may pass. Each is checked by shape too (`isCut`):
|
|
7
9
|
* a host may hold two copies of this package while its pins catch up.
|
|
8
10
|
*/
|
|
9
11
|
import type { PartKind, Usage } from "./types.js";
|
|
@@ -34,7 +36,15 @@ export declare class Cut extends Error {
|
|
|
34
36
|
readonly usage: Usage | undefined;
|
|
35
37
|
constructor(message: string, partial: string, usage?: Usage);
|
|
36
38
|
}
|
|
39
|
+
export declare class Filtered extends Error {
|
|
40
|
+
/** The vendor's stop reason (`RECITATION`, `SAFETY`, `refusal`). */
|
|
41
|
+
readonly stop: string;
|
|
42
|
+
readonly partial: string;
|
|
43
|
+
readonly usage: Usage | undefined;
|
|
44
|
+
constructor(message: string, stop: string, partial: string, usage?: Usage);
|
|
45
|
+
}
|
|
37
46
|
export declare const isCut: (err: unknown) => err is Cut;
|
|
47
|
+
export declare const isFiltered: (err: unknown) => err is Filtered;
|
|
38
48
|
export declare const isTransient: (err: unknown) => err is Transient;
|
|
39
49
|
export declare const isRefused: (err: unknown) => err is Refused;
|
|
40
50
|
export declare const isInputRejected: (err: unknown) => err is InputRejected;
|
|
@@ -46,5 +56,7 @@ export declare const transientStatus: (status: number) => boolean;
|
|
|
46
56
|
export declare function statusError(message: string, status: number, retryAfter?: string | number | null): Error;
|
|
47
57
|
/** The error for a response that is not ok. */
|
|
48
58
|
export declare const httpError: (what: string, res: Response, detail?: string) => Error;
|
|
59
|
+
/** `text` with each secret (an API key) put out: a vendor may echo the key in its message. */
|
|
60
|
+
export declare const redact: (text: string, secrets?: readonly string[]) => string;
|
|
49
61
|
/** A fetch that threw (the network, a timeout): always transient. */
|
|
50
62
|
export declare const transport: (what: string, err: unknown) => Transient;
|
package/dist/errors.js
CHANGED
|
@@ -43,8 +43,22 @@ export class Cut extends Error {
|
|
|
43
43
|
this.usage = usage;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
export class Filtered extends Error {
|
|
47
|
+
/** The vendor's stop reason (`RECITATION`, `SAFETY`, `refusal`). */
|
|
48
|
+
stop;
|
|
49
|
+
partial;
|
|
50
|
+
usage;
|
|
51
|
+
constructor(message, stop, partial, usage) {
|
|
52
|
+
super(message);
|
|
53
|
+
this.name = "Filtered";
|
|
54
|
+
this.stop = stop;
|
|
55
|
+
this.partial = partial;
|
|
56
|
+
this.usage = usage;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
46
59
|
const named = (err, name) => err instanceof Error && err.name === name;
|
|
47
60
|
export const isCut = (err) => named(err, "Cut") && typeof err.partial === "string";
|
|
61
|
+
export const isFiltered = (err) => named(err, "Filtered") && typeof err.stop === "string";
|
|
48
62
|
export const isTransient = (err) => named(err, "Transient");
|
|
49
63
|
export const isRefused = (err) => named(err, "Refused");
|
|
50
64
|
export const isInputRejected = (err) => named(err, "InputRejected");
|
|
@@ -74,6 +88,8 @@ export function statusError(message, status, retryAfter) {
|
|
|
74
88
|
}
|
|
75
89
|
/** The error for a response that is not ok. */
|
|
76
90
|
export const httpError = (what, res, detail) => statusError(`${what}: HTTP ${res.status}${detail ? ` ${detail}` : ""}`, res.status, res.headers.get("retry-after"));
|
|
91
|
+
/** `text` with each secret (an API key) put out: a vendor may echo the key in its message. */
|
|
92
|
+
export const redact = (text, secrets = []) => secrets.reduce((t, s) => (s.length >= 8 ? t.split(s).join("[key]") : t), text);
|
|
77
93
|
/** A fetch that threw (the network, a timeout): always transient. */
|
|
78
94
|
export const transport = (what, err) => new Transient(`${what}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
79
95
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/fake.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Model, Request } from "./types.js";
|
|
2
|
-
/** Answers each call from `respond` (the prompt's text and the
|
|
2
|
+
/** Answers each call from `respond` (the prompt's text and the request), or a fixed string. */
|
|
3
3
|
export declare function fakeModel(respond?: string | ((prompt: string, req: Request) => string | Promise<string>), id?: string): Model;
|
|
4
4
|
/** Answers from a fixed list, in order; an object answer is sent as its JSON. Throws past the end. */
|
|
5
5
|
export declare function scriptedModel(answers: readonly unknown[], id?: string): Model;
|
package/dist/fake.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Models for tests and dry runs: no network, no keys. */
|
|
2
|
-
import { modelOf
|
|
2
|
+
import { modelOf } from "./model.js";
|
|
3
3
|
const reply = (text, model) => ({
|
|
4
4
|
text,
|
|
5
5
|
usage: {},
|
|
@@ -8,14 +8,18 @@ const reply = (text, model) => ({
|
|
|
8
8
|
ms: 0,
|
|
9
9
|
raw: { fake: true },
|
|
10
10
|
});
|
|
11
|
-
/**
|
|
11
|
+
/** The prompt's text parts, joined; media parts are skipped (they are on `req.prompt`). */
|
|
12
|
+
const textOf = (prompt) => typeof prompt === "string"
|
|
13
|
+
? prompt
|
|
14
|
+
: prompt.flatMap((p) => (p.type === "text" ? [p.text] : [])).join("\n\n");
|
|
15
|
+
/** Answers each call from `respond` (the prompt's text and the request), or a fixed string. */
|
|
12
16
|
export function fakeModel(respond = "{}", id = "fake") {
|
|
13
17
|
return modelOf({
|
|
14
18
|
id,
|
|
15
19
|
provider: "fake",
|
|
16
20
|
takes: new Set(["text", "image", "video", "audio", "pdf"]),
|
|
17
21
|
async complete(req) {
|
|
18
|
-
const text = typeof respond === "string" ? respond : await respond(
|
|
22
|
+
const text = typeof respond === "string" ? respond : await respond(textOf(req.prompt), req);
|
|
19
23
|
return reply(text, id);
|
|
20
24
|
},
|
|
21
25
|
});
|
package/dist/fake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAS,EAAE,CAAC,CAAC;IACrD,IAAI;IACJ,KAAK,EAAE,EAAE;IACT,KAAK;IACL,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACpB,CAAC,CAAC;AAEH,2FAA2F;AAC3F,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAE,EAAE,CAC3C,OAAO,MAAM,KAAK,QAAQ;IACxB,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE9E,+FAA+F;AAC/F,MAAM,UAAU,SAAS,CACvB,UAAiF,IAAI,EACrF,EAAE,GAAG,MAAM;IAEX,OAAO,OAAO,CAAC;QACb,EAAE;QACF,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1D,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5F,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAAC,OAA2B,EAAE,EAAE,GAAG,UAAU;IACxE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
package/dist/hear.d.ts
CHANGED
|
@@ -61,3 +61,5 @@ export declare const groqEar: (o: {
|
|
|
61
61
|
rotate?: RotateOptions;
|
|
62
62
|
fetch?: typeof fetch;
|
|
63
63
|
}) => Ear;
|
|
64
|
+
/** An ear for tests and dry runs: no network, no keys. Answers each call from `respond`. */
|
|
65
|
+
export declare function fakeEar(respond?: string | ((audio: Audio, o: HearOptions) => string | Promise<string>), id?: string): Ear;
|
package/dist/hear.js
CHANGED
|
@@ -92,4 +92,15 @@ export const groqEar = (o) => compatibleEar({
|
|
|
92
92
|
...(o.rotate ? { rotate: o.rotate } : {}),
|
|
93
93
|
...(o.fetch ? { fetch: o.fetch } : {}),
|
|
94
94
|
});
|
|
95
|
+
/** An ear for tests and dry runs: no network, no keys. Answers each call from `respond`. */
|
|
96
|
+
export function fakeEar(respond = "", id = "fake:ear") {
|
|
97
|
+
return {
|
|
98
|
+
id,
|
|
99
|
+
model: id,
|
|
100
|
+
async hear(audio, o = {}) {
|
|
101
|
+
const text = typeof respond === "string" ? respond : await respond(audio, o);
|
|
102
|
+
return { text, model: id, ms: 0, usd: 0 };
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
95
106
|
//# sourceMappingURL=hear.js.map
|
package/dist/hear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hear.js","sourceRoot":"","sources":["../src/hear.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hear.js","sourceRoot":"","sources":["../src/hear.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from "./errors.js";
|
|
7
7
|
export { fakeModel, scriptedModel } from "./fake.js";
|
|
8
|
-
export { cursor, type EnvMap, fleetKeys, overRing, type RotateOptions, rotating } from "./keys.js";
|
|
8
|
+
export { cursor, type EnvMap, fallback, fleetKeys, overRing, type RotateOptions, rotating, } from "./keys.js";
|
|
9
9
|
export { askWith, asRequest, checkParts, modelOf, promptText, TEXT_ONLY } from "./model.js";
|
|
10
10
|
export { NoAnswer, parseAnswer, wellFormed } from "./parse.js";
|
|
11
11
|
export { addUsage, priced } from "./prices.js";
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from "./errors.js";
|
|
7
7
|
export { fakeModel, scriptedModel } from "./fake.js";
|
|
8
|
-
export { cursor, fleetKeys, overRing, rotating } from "./keys.js";
|
|
8
|
+
export { cursor, fallback, fleetKeys, overRing, rotating, } from "./keys.js";
|
|
9
9
|
export { askWith, asRequest, checkParts, modelOf, promptText, TEXT_ONLY } from "./model.js";
|
|
10
10
|
export { NoAnswer, parseAnswer, wellFormed } from "./parse.js";
|
|
11
11
|
export { addUsage, priced } from "./prices.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EACL,MAAM,EAEN,QAAQ,EACR,SAAS,EACT,QAAQ,EAER,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAwB,QAAQ,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/keys.d.ts
CHANGED
|
@@ -23,5 +23,14 @@ export interface RotateOptions {
|
|
|
23
23
|
export declare function overRing<K, T>(ring: readonly K[], call: (k: K) => Promise<T>, start: () => number, o?: RotateOptions): Promise<T>;
|
|
24
24
|
/** A round-robin cursor: each call returns the next index. */
|
|
25
25
|
export declare const cursor: () => () => number;
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* One model over several keys (one model per key), by `overRing`. A key refused once (401, 402,
|
|
28
|
+
* 403: suspended, revoked) is passed over on later calls; when every key has been refused, the
|
|
29
|
+
* whole ring is tried again so the error is a live one.
|
|
30
|
+
*/
|
|
27
31
|
export declare function rotating(models: readonly Model[], o?: RotateOptions): Model;
|
|
32
|
+
/**
|
|
33
|
+
* Models in order of preference (`gemini-3.8-flash`, then `gemini-3.5-flash`): each call starts at
|
|
34
|
+
* the first and moves down past a busy or refused one. The reply's `model` names who answered.
|
|
35
|
+
*/
|
|
36
|
+
export declare function fallback(models: readonly Model[], o?: RotateOptions): Model;
|
package/dist/keys.js
CHANGED
|
@@ -55,7 +55,11 @@ export const cursor = () => {
|
|
|
55
55
|
let n = 0;
|
|
56
56
|
return () => n++;
|
|
57
57
|
};
|
|
58
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* One model over several keys (one model per key), by `overRing`. A key refused once (401, 402,
|
|
60
|
+
* 403: suspended, revoked) is passed over on later calls; when every key has been refused, the
|
|
61
|
+
* whole ring is tried again so the error is a live one.
|
|
62
|
+
*/
|
|
59
63
|
export function rotating(models, o = {}) {
|
|
60
64
|
const first = models[0];
|
|
61
65
|
if (!first)
|
|
@@ -63,11 +67,44 @@ export function rotating(models, o = {}) {
|
|
|
63
67
|
if (models.length === 1 && (o.passes ?? 1) <= 1)
|
|
64
68
|
return first;
|
|
65
69
|
const next = cursor();
|
|
70
|
+
const dead = new Set();
|
|
71
|
+
const call = (req) => async (m) => {
|
|
72
|
+
try {
|
|
73
|
+
return await m.complete(req);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (isRefused(err))
|
|
77
|
+
dead.add(m);
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
66
81
|
return modelOf({
|
|
67
82
|
id: first.id,
|
|
68
83
|
provider: first.provider,
|
|
69
84
|
takes: first.takes,
|
|
70
|
-
complete: (req) =>
|
|
85
|
+
complete: (req) => {
|
|
86
|
+
const live = models.filter((m) => !dead.has(m));
|
|
87
|
+
return overRing(live.length ? live : models, call(req), next, o);
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Models in order of preference (`gemini-3.8-flash`, then `gemini-3.5-flash`): each call starts at
|
|
93
|
+
* the first and moves down past a busy or refused one. The reply's `model` names who answered.
|
|
94
|
+
*/
|
|
95
|
+
export function fallback(models, o = {}) {
|
|
96
|
+
const first = models[0];
|
|
97
|
+
if (!first)
|
|
98
|
+
throw new Error("fallback needs at least one model");
|
|
99
|
+
const takes = new Set(models.flatMap((m) => [...m.takes]).filter((k) => models.every((m) => m.takes.has(k))));
|
|
100
|
+
return modelOf({
|
|
101
|
+
id: first.id,
|
|
102
|
+
provider: first.provider,
|
|
103
|
+
takes,
|
|
104
|
+
complete: (req) => {
|
|
105
|
+
const next = cursor();
|
|
106
|
+
return overRing(models, (m) => m.complete(req), next, o);
|
|
107
|
+
},
|
|
71
108
|
});
|
|
72
109
|
}
|
|
73
110
|
//# sourceMappingURL=keys.js.map
|
package/dist/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/prices.js
CHANGED
|
@@ -47,6 +47,13 @@ export const MODEL_PRICES = [
|
|
|
47
47
|
vendor: "groq",
|
|
48
48
|
tiers: [{ upTo: null, rate: { input: 0.15, output: 0.6, cacheRead: 0.075 } }],
|
|
49
49
|
},
|
|
50
|
+
{
|
|
51
|
+
// Introductory to 2026-12-31; from 2027-01-01 $1.50 in, $7.50 out.
|
|
52
|
+
model: "gemini-3.8-flash",
|
|
53
|
+
name: "Gemini 3.8 Flash",
|
|
54
|
+
vendor: "google",
|
|
55
|
+
tiers: [{ upTo: null, rate: { input: 0.75, output: 3.75 } }],
|
|
56
|
+
},
|
|
50
57
|
{
|
|
51
58
|
model: "gemini-3.5-flash",
|
|
52
59
|
name: "Gemini 3.5 Flash",
|
package/dist/prices.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prices.js","sourceRoot":"","sources":["../src/prices.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prices.js","sourceRoot":"","sources":["../src/prices.ts"],"names":[],"mappings":"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"}
|
package/dist/providers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RotateOptions } from "./keys.js";
|
|
2
|
-
import type { Model } from "./types.js";
|
|
2
|
+
import type { Clip, Model, Part } from "./types.js";
|
|
3
3
|
/** Short names for the current Claude models. A full id passes through. */
|
|
4
4
|
export declare const ANTHROPIC_MODELS: Readonly<Record<string, string>>;
|
|
5
5
|
export declare const anthropicModelId: (name: string) => string;
|
|
@@ -9,13 +9,52 @@ export interface VendorOptions {
|
|
|
9
9
|
model?: string;
|
|
10
10
|
rotate?: RotateOptions;
|
|
11
11
|
limitMs?: number;
|
|
12
|
-
/**
|
|
12
|
+
/** The wire: a test's, or a proxy's (wren's gateway holds Gemini keys behind one). */
|
|
13
13
|
fetch?: typeof fetch;
|
|
14
14
|
}
|
|
15
15
|
/** Claude on Wren's own key. Default Haiku 5.5. */
|
|
16
16
|
export declare function anthropic(o: VendorOptions): Model;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Gemini on the free key ring. It takes every part kind, YouTube URLs as video included. A video
|
|
19
|
+
* part with a `clip` goes to generateContent with `videoMetadata` (`withClips`). Gemini's
|
|
20
|
+
* Interactions API also reads a stretch, but on free keys its flash quota is spent at once.
|
|
21
|
+
*/
|
|
18
22
|
export declare function gemini(o: VendorOptions): Model;
|
|
23
|
+
/**
|
|
24
|
+
* A fetch that adds Gemini's `videoMetadata` to each video part of a generateContent body: one
|
|
25
|
+
* clip per video part, in prompt order (`undefined` leaves that part whole). The SDK builds the
|
|
26
|
+
* rest of the body and reads the reply.
|
|
27
|
+
*/
|
|
28
|
+
export declare function withClips(clips: readonly (Clip | undefined)[], go: typeof fetch): typeof fetch;
|
|
29
|
+
/** A file in Gemini's Files API: read it with a Gemini model on `key` alone. */
|
|
30
|
+
export interface GeminiFile {
|
|
31
|
+
/** The file lives in this key's project; another key cannot read it. */
|
|
32
|
+
key: string;
|
|
33
|
+
/** `files/<id>`. */
|
|
34
|
+
name: string;
|
|
35
|
+
part: Part;
|
|
36
|
+
/** Deletes it now. The API also deletes it after 48 hours. */
|
|
37
|
+
drop(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Uploads bytes too large to send inline (a long video) to Gemini's Files API, through the SDK's
|
|
41
|
+
* uploader, and waits until the file can be read. It tries each key in turn: a key that refuses
|
|
42
|
+
* passes to the next.
|
|
43
|
+
*/
|
|
44
|
+
export declare function geminiFile(data: Uint8Array, o: {
|
|
45
|
+
key: string | readonly string[];
|
|
46
|
+
mediaType: string;
|
|
47
|
+
displayName?: string;
|
|
48
|
+
pollMs?: number;
|
|
49
|
+
fetch?: typeof fetch;
|
|
50
|
+
}): Promise<GeminiFile>;
|
|
51
|
+
/**
|
|
52
|
+
* The Gemini keys the API still takes. A suspended key answers 403 and the ring passes it at once,
|
|
53
|
+
* but only after the call is sent: check first before a large inline body goes to each.
|
|
54
|
+
*/
|
|
55
|
+
export declare function geminiLiveKeys(keys: readonly string[], o?: {
|
|
56
|
+
fetch?: typeof fetch;
|
|
57
|
+
}): Promise<string[]>;
|
|
19
58
|
/** Cohere's own API on the free key ring: text and images. */
|
|
20
59
|
export declare function cohere(o: VendorOptions): Model;
|
|
21
60
|
/** OpenAI-compatible vendors: base URL, default model, and whether Wren's keys there are free. */
|
package/dist/providers.js
CHANGED
|
@@ -30,29 +30,136 @@ export function anthropic(o) {
|
|
|
30
30
|
const modelId = anthropicModelId(o.model ?? "haiku");
|
|
31
31
|
return ring(keyList(o.key), (apiKey) => sdkModel({
|
|
32
32
|
provider: "anthropic",
|
|
33
|
+
secret: apiKey,
|
|
33
34
|
modelId,
|
|
34
35
|
model: createAnthropic({ apiKey, ...wire(o) })(modelId),
|
|
35
36
|
takes: kinds("text", "image", "pdf"),
|
|
36
37
|
...(o.limitMs ? { limitMs: o.limitMs } : {}),
|
|
37
38
|
}), o.rotate, "anthropic");
|
|
38
39
|
}
|
|
39
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Gemini on the free key ring. It takes every part kind, YouTube URLs as video included. A video
|
|
42
|
+
* part with a `clip` goes to generateContent with `videoMetadata` (`withClips`). Gemini's
|
|
43
|
+
* Interactions API also reads a stretch, but on free keys its flash quota is spent at once.
|
|
44
|
+
*/
|
|
40
45
|
export function gemini(o) {
|
|
41
46
|
const modelId = o.model ?? "gemini-3.5-flash";
|
|
42
47
|
return ring(keyList(o.key), (apiKey) => sdkModel({
|
|
43
48
|
provider: "google",
|
|
49
|
+
secret: apiKey,
|
|
44
50
|
modelId,
|
|
45
51
|
model: createGoogle({ apiKey, ...wire(o) })(modelId),
|
|
52
|
+
clipModel: (clips) => createGoogle({ apiKey, fetch: withClips(clips, o.fetch ?? fetch) })(modelId),
|
|
46
53
|
takes: kinds("text", "image", "video", "audio", "pdf"),
|
|
47
54
|
free: true,
|
|
48
55
|
...(o.limitMs ? { limitMs: o.limitMs } : {}),
|
|
49
56
|
}), o.rotate, "gemini");
|
|
50
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* A fetch that adds Gemini's `videoMetadata` to each video part of a generateContent body: one
|
|
60
|
+
* clip per video part, in prompt order (`undefined` leaves that part whole). The SDK builds the
|
|
61
|
+
* rest of the body and reads the reply.
|
|
62
|
+
*/
|
|
63
|
+
export function withClips(clips, go) {
|
|
64
|
+
return (url, init) => {
|
|
65
|
+
if (typeof init?.body !== "string")
|
|
66
|
+
return go(url, init);
|
|
67
|
+
const body = JSON.parse(init.body);
|
|
68
|
+
let n = 0;
|
|
69
|
+
for (const content of body.contents ?? [])
|
|
70
|
+
for (const part of content.parts ?? []) {
|
|
71
|
+
const file = (part.fileData ?? part.inlineData);
|
|
72
|
+
if (!file?.mimeType?.startsWith("video/"))
|
|
73
|
+
continue;
|
|
74
|
+
const clip = clips[n++];
|
|
75
|
+
if (clip)
|
|
76
|
+
part.videoMetadata = {
|
|
77
|
+
startOffset: `${clip.startS}s`,
|
|
78
|
+
endOffset: `${clip.endS}s`,
|
|
79
|
+
...(clip.fps ? { fps: clip.fps } : {}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return go(url, { ...init, body: JSON.stringify(body) });
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const GEMINI_API = "https://generativelanguage.googleapis.com/v1beta";
|
|
86
|
+
function filePart(uri, mediaType) {
|
|
87
|
+
const data = new URL(uri);
|
|
88
|
+
if (mediaType === "application/pdf")
|
|
89
|
+
return { type: "pdf", data };
|
|
90
|
+
const kind = mediaType.split("/")[0];
|
|
91
|
+
if (kind === "video" || kind === "audio" || kind === "image")
|
|
92
|
+
return { type: kind, data, mediaType };
|
|
93
|
+
throw new Error(`gemini file: no part kind for ${mediaType}`);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Uploads bytes too large to send inline (a long video) to Gemini's Files API, through the SDK's
|
|
97
|
+
* uploader, and waits until the file can be read. It tries each key in turn: a key that refuses
|
|
98
|
+
* passes to the next.
|
|
99
|
+
*/
|
|
100
|
+
export async function geminiFile(data, o) {
|
|
101
|
+
const keys = keyList(o.key);
|
|
102
|
+
if (!keys.length)
|
|
103
|
+
throw new Error("gemini file needs at least one key");
|
|
104
|
+
let last = "";
|
|
105
|
+
for (const key of keys) {
|
|
106
|
+
try {
|
|
107
|
+
const up = await createGoogle({ apiKey: key, ...wire(o) })
|
|
108
|
+
.files()
|
|
109
|
+
.uploadFile({
|
|
110
|
+
data: { type: "data", data },
|
|
111
|
+
mediaType: o.mediaType,
|
|
112
|
+
providerOptions: {
|
|
113
|
+
google: {
|
|
114
|
+
...(o.displayName ? { displayName: o.displayName } : {}),
|
|
115
|
+
...(o.pollMs ? { pollIntervalMs: o.pollMs } : {}),
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const uri = up.providerReference.google;
|
|
120
|
+
const name = String(up.providerMetadata?.google?.name ?? "");
|
|
121
|
+
if (!uri || !name)
|
|
122
|
+
throw new Error("no file uri in the reply");
|
|
123
|
+
const go = o.fetch ?? fetch;
|
|
124
|
+
return {
|
|
125
|
+
key,
|
|
126
|
+
name,
|
|
127
|
+
part: filePart(uri, o.mediaType),
|
|
128
|
+
drop: async () => {
|
|
129
|
+
await go(`${GEMINI_API}/${name}`, {
|
|
130
|
+
method: "DELETE",
|
|
131
|
+
headers: { "x-goog-api-key": key },
|
|
132
|
+
}).catch(() => { });
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
last = (err instanceof Error ? err.message : String(err))
|
|
138
|
+
.replaceAll(key, "<key>")
|
|
139
|
+
.slice(0, 200);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
throw new Error(`gemini file: every key refused, last ${last}`);
|
|
143
|
+
}
|
|
144
|
+
const GEMINI_MODELS = "https://generativelanguage.googleapis.com/v1beta/models?pageSize=1";
|
|
145
|
+
/**
|
|
146
|
+
* The Gemini keys the API still takes. A suspended key answers 403 and the ring passes it at once,
|
|
147
|
+
* but only after the call is sent: check first before a large inline body goes to each.
|
|
148
|
+
*/
|
|
149
|
+
export async function geminiLiveKeys(keys, o = {}) {
|
|
150
|
+
const fetchFn = o.fetch ?? fetch;
|
|
151
|
+
const ok = await Promise.all(keys.map((key) => fetchFn(GEMINI_MODELS, {
|
|
152
|
+
headers: { "x-goog-api-key": key },
|
|
153
|
+
signal: AbortSignal.timeout(15_000),
|
|
154
|
+
}).then((r) => r.ok, () => false)));
|
|
155
|
+
return keys.filter((_, i) => ok[i]);
|
|
156
|
+
}
|
|
51
157
|
/** Cohere's own API on the free key ring: text and images. */
|
|
52
158
|
export function cohere(o) {
|
|
53
159
|
const modelId = o.model ?? "command-a-03-2025";
|
|
54
160
|
return ring(keyList(o.key), (apiKey) => sdkModel({
|
|
55
161
|
provider: "cohere",
|
|
162
|
+
secret: apiKey,
|
|
56
163
|
modelId,
|
|
57
164
|
model: createCohere({ apiKey, ...wire(o) })(modelId),
|
|
58
165
|
takes: modelId.includes("vision") ? kinds("text", "image") : TEXT_ONLY,
|
|
@@ -86,6 +193,7 @@ export function compatible(vendor, o) {
|
|
|
86
193
|
const modelId = o.model ?? spec.model;
|
|
87
194
|
return ring(keyList(o.key), (apiKey) => sdkModel({
|
|
88
195
|
provider: vendor,
|
|
196
|
+
secret: apiKey,
|
|
89
197
|
modelId,
|
|
90
198
|
model: createOpenAICompatible({ name: vendor, baseURL: spec.baseURL, apiKey, ...wire(o) })(modelId),
|
|
91
199
|
takes: TEXT_ONLY,
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAsB,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAa,EAAyB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAG,CAAC,GAA+B,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7F,MAAM,IAAI,GAAG,CACX,IAAuB,EACvB,IAA4B,EAC5B,CAA4B,EAC5B,MAAc,EACP,EAAE;IACT,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACxB,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAYzF,MAAM,IAAI,GAAG,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAElF,mDAAmD;AACnD,MAAM,UAAU,SAAS,CAAC,CAAgB;IACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC;IACrD,OAAO,IAAI,CACT,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACd,CAAC,MAAM,EAAE,EAAE,CACT,QAAQ,CAAC;QACP,QAAQ,EAAE,WAAW;QACrB,OAAO;QACP,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACvD,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC,EACJ,CAAC,CAAC,MAAM,EACR,WAAW,CACZ,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* caller (a runner, a key ring) owns trying again.
|
|
5
5
|
*/
|
|
6
6
|
import { type LanguageModel } from "ai";
|
|
7
|
-
import type { Model, PartKind } from "./types.js";
|
|
7
|
+
import type { Clip, Model, PartKind } from "./types.js";
|
|
8
8
|
/** The ceiling when a request names none. A long extract with quotes passed 4096 on a live run. */
|
|
9
9
|
export declare const DEFAULT_MAX_TOKENS = 8192;
|
|
10
10
|
/** One call, wall clock: a long draft takes a minute or two. */
|
|
@@ -15,6 +15,11 @@ export interface SdkModelOptions {
|
|
|
15
15
|
/** The vendor's model id. */
|
|
16
16
|
modelId: string;
|
|
17
17
|
model: LanguageModel;
|
|
18
|
+
/**
|
|
19
|
+
* The model for a request with a clipped video, given each video part's clip in prompt order.
|
|
20
|
+
* Gemini's: generateContent with `videoMetadata`, a field the SDK does not send (`withClips`).
|
|
21
|
+
*/
|
|
22
|
+
clipModel?: (clips: readonly (Clip | undefined)[]) => LanguageModel;
|
|
18
23
|
takes: ReadonlySet<PartKind>;
|
|
19
24
|
/** Tokens added to every ceiling for a model that thinks inside its output budget. */
|
|
20
25
|
thinking?: number;
|
|
@@ -23,5 +28,7 @@ export interface SdkModelOptions {
|
|
|
23
28
|
/** The id the price table knows, when it is not `modelId`. */
|
|
24
29
|
priceId?: string;
|
|
25
30
|
limitMs?: number;
|
|
31
|
+
/** The call's key, put out of every error message. */
|
|
32
|
+
secret?: string;
|
|
26
33
|
}
|
|
27
34
|
export declare function sdkModel(o: SdkModelOptions): Model;
|
package/dist/sdk.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* caller (a runner, a key ring) owns trying again.
|
|
5
5
|
*/
|
|
6
6
|
import { APICallError, generateText, } from "ai";
|
|
7
|
-
import { Cut, statusError, Transient, transport } from "./errors.js";
|
|
7
|
+
import { Cut, Filtered, redact, statusError, Transient, transport } from "./errors.js";
|
|
8
8
|
import { modelOf } from "./model.js";
|
|
9
9
|
import { wellFormed } from "./parse.js";
|
|
10
10
|
import { priced } from "./prices.js";
|
|
@@ -21,16 +21,30 @@ const GEMINI_LEVEL = {
|
|
|
21
21
|
xhigh: "high",
|
|
22
22
|
max: "high",
|
|
23
23
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const GEMINI_RESOLUTION = {
|
|
25
|
+
low: "MEDIA_RESOLUTION_LOW",
|
|
26
|
+
medium: "MEDIA_RESOLUTION_MEDIUM",
|
|
27
|
+
high: "MEDIA_RESOLUTION_HIGH",
|
|
28
|
+
};
|
|
29
|
+
/** Effort and resolution as the vendor's options. */
|
|
30
|
+
function vendorOptions(provider, req) {
|
|
27
31
|
if (provider === "anthropic")
|
|
28
|
-
return { providerOptions: { anthropic: { effort } } };
|
|
29
|
-
if (provider
|
|
30
|
-
return {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
return req.effort ? { providerOptions: { anthropic: { effort: req.effort } } } : {};
|
|
33
|
+
if (provider !== "google")
|
|
34
|
+
return {};
|
|
35
|
+
const level = req.effort ? GEMINI_LEVEL[req.effort] : undefined;
|
|
36
|
+
const google = {
|
|
37
|
+
...(level ? { thinkingConfig: { thinkingLevel: level } } : {}),
|
|
38
|
+
...(req.resolution ? { mediaResolution: GEMINI_RESOLUTION[req.resolution] } : {}),
|
|
39
|
+
};
|
|
40
|
+
return Object.keys(google).length ? { providerOptions: { google } } : {};
|
|
41
|
+
}
|
|
42
|
+
/** Each video part's clip, in prompt order; null when no part has one. */
|
|
43
|
+
function clipsOf(req) {
|
|
44
|
+
if (typeof req.prompt === "string")
|
|
45
|
+
return null;
|
|
46
|
+
const clips = req.prompt.flatMap((p) => (p.type === "video" ? [p.clip] : []));
|
|
47
|
+
return clips.some(Boolean) ? clips : null;
|
|
34
48
|
}
|
|
35
49
|
function contentOf(parts) {
|
|
36
50
|
return parts.map((p) => {
|
|
@@ -38,7 +52,7 @@ function contentOf(parts) {
|
|
|
38
52
|
case "text":
|
|
39
53
|
return { type: "text", text: wellFormed(p.text) };
|
|
40
54
|
case "image":
|
|
41
|
-
return { type: "
|
|
55
|
+
return { type: "file", data: p.data, mediaType: p.mediaType };
|
|
42
56
|
case "pdf":
|
|
43
57
|
return { type: "file", data: p.data, mediaType: "application/pdf" };
|
|
44
58
|
default:
|
|
@@ -64,13 +78,13 @@ function input(provider, req) {
|
|
|
64
78
|
...body,
|
|
65
79
|
};
|
|
66
80
|
}
|
|
67
|
-
function failure(what, err, signal) {
|
|
81
|
+
function failure(what, err, signal, secrets) {
|
|
68
82
|
if (signal?.aborted)
|
|
69
83
|
return err;
|
|
70
84
|
if (APICallError.isInstance(err)) {
|
|
71
85
|
if (err.statusCode === undefined)
|
|
72
86
|
return transport(what, err);
|
|
73
|
-
const detail = err.message.slice(0, 300);
|
|
87
|
+
const detail = redact(err.message, secrets).slice(0, 300);
|
|
74
88
|
return statusError(`${what}: HTTP ${err.statusCode} ${detail}`, err.statusCode, err.responseHeaders?.["retry-after"]);
|
|
75
89
|
}
|
|
76
90
|
if (err instanceof Error && (err.name === "TimeoutError" || err.name === "AbortError"))
|
|
@@ -90,19 +104,20 @@ export function sdkModel(o) {
|
|
|
90
104
|
const started = performance.now();
|
|
91
105
|
const timeout = AbortSignal.timeout(limitMs);
|
|
92
106
|
const abortSignal = req.signal ? AbortSignal.any([req.signal, timeout]) : timeout;
|
|
107
|
+
const clips = o.clipModel ? clipsOf(req) : null;
|
|
93
108
|
let result;
|
|
94
109
|
try {
|
|
95
110
|
result = await generateText({
|
|
96
|
-
model: o.model,
|
|
111
|
+
model: clips && o.clipModel ? o.clipModel(clips) : o.model,
|
|
97
112
|
...input(o.provider, req),
|
|
98
113
|
maxOutputTokens: Math.max(req.maxTokens ?? DEFAULT_MAX_TOKENS, FLOOR_TOKENS) + (o.thinking ?? 0),
|
|
99
|
-
...
|
|
114
|
+
...vendorOptions(o.provider, req),
|
|
100
115
|
maxRetries: 0,
|
|
101
116
|
abortSignal,
|
|
102
117
|
});
|
|
103
118
|
}
|
|
104
119
|
catch (err) {
|
|
105
|
-
throw failure(id, err, req.signal);
|
|
120
|
+
throw failure(id, err, req.signal, o.secret ? [o.secret] : []);
|
|
106
121
|
}
|
|
107
122
|
const u = result.usage;
|
|
108
123
|
const tokens = {};
|
|
@@ -118,6 +133,8 @@ export function sdkModel(o) {
|
|
|
118
133
|
const stop = result.rawFinishReason ?? result.finishReason;
|
|
119
134
|
if (result.finishReason === "length")
|
|
120
135
|
throw new Cut(`${id} stopped at its output cap (${stop})`, result.text, usage);
|
|
136
|
+
if (result.finishReason === "content-filter")
|
|
137
|
+
throw new Filtered(`${id} stopped the answer itself (${stop})`, String(stop), result.text, usage);
|
|
121
138
|
if (!result.text)
|
|
122
139
|
throw new Error(`${id}: no text in the reply (stop ${stop})`);
|
|
123
140
|
return {
|
package/dist/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,YAAY,EACZ,YAAY,GAIb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
import type { ZodType } from "zod";
|
|
7
7
|
/** What a part holds: bytes (base64 or raw) or a URL the vendor fetches itself. */
|
|
8
8
|
export type Source = Uint8Array | string | URL;
|
|
9
|
+
/** A stretch of a video, in seconds from its start; `fps` samples frames (Gemini's default is 1). */
|
|
10
|
+
export interface Clip {
|
|
11
|
+
startS: number;
|
|
12
|
+
endS: number;
|
|
13
|
+
fps?: number;
|
|
14
|
+
}
|
|
9
15
|
export type Part = {
|
|
10
16
|
type: "text";
|
|
11
17
|
text: string;
|
|
@@ -17,6 +23,7 @@ export type Part = {
|
|
|
17
23
|
type: "video";
|
|
18
24
|
data: Source;
|
|
19
25
|
mediaType: string;
|
|
26
|
+
clip?: Clip;
|
|
20
27
|
} | {
|
|
21
28
|
type: "audio";
|
|
22
29
|
data: Source;
|
|
@@ -35,6 +42,8 @@ export interface Request {
|
|
|
35
42
|
/** A ceiling against a runaway answer, never the length: the prompt says how long. */
|
|
36
43
|
maxTokens?: number;
|
|
37
44
|
effort?: Effort;
|
|
45
|
+
/** How finely images and video are sampled. Gemini reads it (low is a quarter of the tokens); others ignore it. */
|
|
46
|
+
resolution?: "low" | "medium" | "high";
|
|
38
47
|
/** What the call is for (`triage`, `drafts`). No vendor sees it; meters group by it. */
|
|
39
48
|
purpose?: string;
|
|
40
49
|
signal?: AbortSignal;
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrenautomation/models",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "One door to every model: a Model takes text, image, video, audio and PDF parts, answers with text, tokens and USD, and parses an answer to a zod shape. Adapters for Anthropic, Gemini, Cohere, any OpenAI-compatible server and a shell command (claude -p); ears for speech to text; one price table; one key ring.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/wrenautomation/
|
|
7
|
+
"url": "git+https://github.com/wrenautomation/engine.git",
|
|
8
|
+
"directory": "packages/models"
|
|
8
9
|
},
|
|
9
10
|
"license": "PolyForm-Shield-1.0.0",
|
|
10
11
|
"files": [
|
|
@@ -39,20 +40,9 @@
|
|
|
39
40
|
"import": "./dist/spec.js"
|
|
40
41
|
}
|
|
41
42
|
},
|
|
42
|
-
"packageManager": "pnpm@9.15.0",
|
|
43
43
|
"engines": {
|
|
44
44
|
"node": ">=24"
|
|
45
45
|
},
|
|
46
|
-
"scripts": {
|
|
47
|
-
"prepare": "git config core.hooksPath .githooks || true",
|
|
48
|
-
"lint": "biome check --error-on-warnings .",
|
|
49
|
-
"lint:fix": "biome check --write .",
|
|
50
|
-
"typecheck": "tsc --noEmit",
|
|
51
|
-
"build": "rm -rf dist && tsc",
|
|
52
|
-
"test": "vitest run",
|
|
53
|
-
"gates": "lockf -t 900 /tmp/wren_automation-checks.lock sh -c 'pnpm lint && pnpm typecheck && pnpm test'",
|
|
54
|
-
"prepublishOnly": "pnpm build"
|
|
55
|
-
},
|
|
56
46
|
"dependencies": {
|
|
57
47
|
"@ai-sdk/anthropic": "4.0.90",
|
|
58
48
|
"@ai-sdk/cohere": "4.0.71",
|
|
@@ -61,10 +51,8 @@
|
|
|
61
51
|
"ai": "7.0.155",
|
|
62
52
|
"zod": "4.6.5"
|
|
63
53
|
},
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"typescript": "5.9.3",
|
|
68
|
-
"vitest": "5.0.1"
|
|
54
|
+
"scripts": {
|
|
55
|
+
"typecheck": "tsc --noEmit",
|
|
56
|
+
"build": "rm -rf dist && tsc"
|
|
69
57
|
}
|
|
70
|
-
}
|
|
58
|
+
}
|