@wrenautomation/models 0.33.1 → 0.34.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/dist/hear.d.ts +3 -1
- package/dist/hear.js +16 -2
- package/dist/hear.js.map +1 -1
- package/package.json +1 -1
package/dist/hear.d.ts
CHANGED
|
@@ -42,13 +42,15 @@ export interface EarOptions {
|
|
|
42
42
|
/** Bytes the vendor takes at most; a larger file throws before the call. */
|
|
43
43
|
maxBytes?: number;
|
|
44
44
|
limitMs?: number;
|
|
45
|
+
/** Calls a minute each key takes; calls space out to fit. None: no pace. */
|
|
46
|
+
perMinute?: number;
|
|
45
47
|
rotate?: RotateOptions;
|
|
46
48
|
fetch?: typeof fetch;
|
|
47
49
|
}
|
|
48
50
|
/** Any OpenAI-compatible transcription endpoint. Keys travel in a header, never in an error. */
|
|
49
51
|
export declare function compatibleEar(o: EarOptions): Ear;
|
|
50
52
|
export declare const COHERE_SPEECH_MODEL = "cohere-transcribe-03-2026";
|
|
51
|
-
/** Cohere's transcription
|
|
53
|
+
/** Cohere's transcription. 25 MB at most; 20 calls a minute a key (measured 2026-11-03). */
|
|
52
54
|
export declare const cohereEar: (o: {
|
|
53
55
|
key: string | readonly string[];
|
|
54
56
|
rotate?: RotateOptions;
|
package/dist/hear.js
CHANGED
|
@@ -24,6 +24,17 @@ export function compatibleEar(o) {
|
|
|
24
24
|
throw new Error(`${id} needs at least one key`);
|
|
25
25
|
const go = o.fetch ?? fetch;
|
|
26
26
|
const next = cursor();
|
|
27
|
+
// one slot chain per ear: gap = a minute / (rate x keys)
|
|
28
|
+
const gapMs = o.perMinute ? 60_000 / (o.perMinute * keys.length) : 0;
|
|
29
|
+
let slot = 0;
|
|
30
|
+
const paced = async () => {
|
|
31
|
+
if (!gapMs)
|
|
32
|
+
return;
|
|
33
|
+
const at = Math.max(Date.now(), slot);
|
|
34
|
+
slot = at + gapMs;
|
|
35
|
+
if (at > Date.now())
|
|
36
|
+
await new Promise((r) => setTimeout(r, at - Date.now()));
|
|
37
|
+
};
|
|
27
38
|
return {
|
|
28
39
|
id,
|
|
29
40
|
model: o.model,
|
|
@@ -32,13 +43,15 @@ export function compatibleEar(o) {
|
|
|
32
43
|
throw new Error(`${id}: ${(audio.data.byteLength / 1e6).toFixed(1)} MB of audio, over its ${o.maxBytes / 1e6} MB`);
|
|
33
44
|
const started = performance.now();
|
|
34
45
|
const once = async (key) => {
|
|
46
|
+
await paced();
|
|
35
47
|
const form = new FormData();
|
|
36
48
|
const name = audio.filename ?? `audio.${EXT[audio.mediaType] ?? "bin"}`;
|
|
37
|
-
|
|
49
|
+
// fields before the file: Cohere refuses a body with the file first (HTTP 400, 2026-11-03)
|
|
38
50
|
form.set("model", o.model);
|
|
39
51
|
if (o.jsonFormat !== false)
|
|
40
52
|
form.set("response_format", "json");
|
|
41
53
|
form.set("language", h.language ?? "en");
|
|
54
|
+
form.set("file", new Blob([audio.data], { type: audio.mediaType }), name);
|
|
42
55
|
const timeout = AbortSignal.timeout(o.limitMs ?? 120_000);
|
|
43
56
|
let res;
|
|
44
57
|
try {
|
|
@@ -71,7 +84,7 @@ export function compatibleEar(o) {
|
|
|
71
84
|
};
|
|
72
85
|
}
|
|
73
86
|
export const COHERE_SPEECH_MODEL = "cohere-transcribe-03-2026";
|
|
74
|
-
/** Cohere's transcription
|
|
87
|
+
/** Cohere's transcription. 25 MB at most; 20 calls a minute a key (measured 2026-11-03). */
|
|
75
88
|
export const cohereEar = (o) => compatibleEar({
|
|
76
89
|
url: "https://api.cohere.com/v2/audio/transcriptions",
|
|
77
90
|
model: COHERE_SPEECH_MODEL,
|
|
@@ -79,6 +92,7 @@ export const cohereEar = (o) => compatibleEar({
|
|
|
79
92
|
free: true,
|
|
80
93
|
jsonFormat: false,
|
|
81
94
|
maxBytes: 25_000_000,
|
|
95
|
+
perMinute: 20,
|
|
82
96
|
...o,
|
|
83
97
|
});
|
|
84
98
|
/** Whisper on Groq's free key ring. */
|
package/dist/hear.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hear.js","sourceRoot":"","sources":["../src/hear.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAsB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmCxC,MAAM,GAAG,GAA2B;IAClC,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;CACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"hear.js","sourceRoot":"","sources":["../src/hear.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrenautomation/models",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
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; a judge (Jev) for typed yes, no, pick and score answers; one price table; one key ring.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|