@ai-ecoverse/kev.js 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { DecisionRecord } from "./api.ts";
2
+ export interface SpecialTokens {
3
+ state: number;
4
+ q: number;
5
+ opt: number;
6
+ opt_end: number;
7
+ decide: number;
8
+ }
9
+ export interface TokenizerLike {
10
+ encode(text: string, options?: {
11
+ add_special_tokens?: boolean;
12
+ }): {
13
+ ids: number[];
14
+ };
15
+ }
16
+ export interface Branch {
17
+ ids: number[];
18
+ pos: number[];
19
+ /** offset of <decide> within the branch */
20
+ decide: number;
21
+ /** offsets of each option's </opt> within the branch */
22
+ opts: number[];
23
+ }
24
+ export interface Encoding {
25
+ state: number[];
26
+ branches: Branch[];
27
+ stateTruncated: boolean;
28
+ /** total tokens across the packed sequence (state + all branches), as Kev reports usage.input_tokens */
29
+ tokens: number;
30
+ }
31
+ /** Tokenize caller-supplied text so it can never produce delimiter/control tokens: `<|name|>` becomes `<¦name¦>`. */
32
+ export declare function userTokens(tok: TokenizerLike, text: string): number[];
33
+ export interface EncodeOptions {
34
+ /** state tokens kept, including <state> (kev.serve uses 8192; training used 384) */
35
+ maxState?: number;
36
+ /** max tokens of state + one branch */
37
+ maxBranch?: number;
38
+ /** throw instead of truncating an over-long state */
39
+ strict?: boolean;
40
+ }
41
+ export declare function encode(tok: TokenizerLike, rec: DecisionRecord, sp: SpecialTokens, o?: EncodeOptions): Encoding;
42
+ //# sourceMappingURL=encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEzG,MAAM,WAAW,aAAa;IAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE;AAEtH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,wGAAwG;IACxG,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,qHAAqH;AACrH,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAErE;AAED,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,GAAE,aAAkB,GAAG,QAAQ,CAmBlH"}
package/dist/encode.js ADDED
@@ -0,0 +1,39 @@
1
+ // Token layout of one request (port of kev/model.py encode + rows_of, without option isolation, which the hybrid
2
+ // Qwen3.5 backbones do not support):
3
+ //
4
+ // <state> ...state...
5
+ // <q> instructions <opt> option 1 </opt> <opt> option 2 </opt> ... <decide> (one branch per question)
6
+ //
7
+ // Every branch continues the state's positions, so running the state once and then each branch as a continuation
8
+ // of the state's cache is exactly Kev's hybrid serving path (kev.model._branch_rows_from_prefix).
9
+ const SPECIAL_RE = /<\|([A-Za-z0-9_]+)\|>/g;
10
+ /** Tokenize caller-supplied text so it can never produce delimiter/control tokens: `<|name|>` becomes `<¦name¦>`. */
11
+ export function userTokens(tok, text) {
12
+ return tok.encode(text.replace(SPECIAL_RE, "<¦$1¦>"), { add_special_tokens: false }).ids;
13
+ }
14
+ export function encode(tok, rec, sp, o = {}) {
15
+ const maxState = o.maxState ?? 8192, maxBranch = o.maxBranch ?? 8192;
16
+ const stateTokens = userTokens(tok, rec.state);
17
+ if (o.strict && stateTokens.length + 1 > maxState)
18
+ throw new RangeError(`state exceeds ${maxState} tokens: ${stateTokens.length + 1}`);
19
+ const state = [sp.state, ...stateTokens.slice(0, maxState - 1)];
20
+ const L = state.length;
21
+ let tokens = L;
22
+ const branches = rec.questions.map((q) => {
23
+ const instr = [sp.q, ...userTokens(tok, q.instr)];
24
+ const spans = q.options.map((opt) => [sp.opt, ...userTokens(tok, opt), sp.opt_end]);
25
+ const ids = [...instr, ...spans.flat(), sp.decide];
26
+ if (ids.length > maxBranch - L)
27
+ throw new RangeError(`branch too long: ${ids.length}`);
28
+ const opts = [];
29
+ let cursor = instr.length;
30
+ for (const s of spans) {
31
+ cursor += s.length;
32
+ opts.push(cursor - 1);
33
+ }
34
+ tokens += ids.length;
35
+ return { ids, pos: ids.map((_, i) => L + i), decide: ids.length - 1, opts };
36
+ });
37
+ return { state, branches, stateTruncated: stateTokens.length + 1 > maxState, tokens };
38
+ }
39
+ //# sourceMappingURL=encode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,qCAAqC;AACrC,EAAE;AACF,wBAAwB;AACxB,4GAA4G;AAC5G,EAAE;AACF,iHAAiH;AACjH,kGAAkG;AAyBlG,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAE5C,qHAAqH;AACrH,MAAM,UAAU,UAAU,CAAC,GAAkB,EAAE,IAAY;IACzD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC;AAC3F,CAAC;AAWD,MAAM,UAAU,MAAM,CAAC,GAAkB,EAAE,GAAmB,EAAE,EAAiB,EAAE,CAAC,GAAkB,EAAE;IACtG,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;IACrE,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ;QAAE,MAAM,IAAI,UAAU,CAAC,iBAAiB,QAAQ,YAAY,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;IACvI,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;QACrE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;AACxF,CAAC"}
package/dist/head.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ export interface F32Tensor {
2
+ shape: number[];
3
+ data: Float32Array;
4
+ }
5
+ export declare function parseSafetensors(buf: ArrayBuffer): Record<string, F32Tensor>;
6
+ export declare class PointerHead {
7
+ readonly d: number;
8
+ readonly dp: number;
9
+ private qw;
10
+ private qb;
11
+ private kw;
12
+ private kb;
13
+ constructor(weights: Record<string, F32Tensor>);
14
+ static fromSafetensors(buf: ArrayBuffer): PointerHead;
15
+ private project;
16
+ logits(hDecide: Float32Array, hOpts: Float32Array[]): number[];
17
+ /** Softmax probabilities; temperature != 1 matches kev.serve's KEV_TEMPERATURE (p^(1/T), renormalised). */
18
+ probs(hDecide: Float32Array, hOpts: Float32Array[], temperature?: number): number[];
19
+ }
20
+ //# sourceMappingURL=head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"head.d.ts","sourceRoot":"","sources":["../src/head.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IAAG,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE;AAElE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAW5E;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAe;IAAC,OAAO,CAAC,EAAE,CAAe;IAAC,OAAO,CAAC,EAAE,CAAe;IAAC,OAAO,CAAC,EAAE,CAAe;IAEvG,YAAY,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAK7C;IAED,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,eAAoD;IAE3F,OAAO,CAAC,OAAO;IAWf,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAS7D;IAED,2GAA2G;IAC3G,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,WAAW,SAAI,GAAG,MAAM,EAAE,CAM7E;CACF"}
package/dist/head.js ADDED
@@ -0,0 +1,66 @@
1
+ // Kev's pointer head: logits_k = (Wk h_opt_k + bk) · (Wq h_decide + bq) / sqrt(dp), softmax over the options.
2
+ // Weights ship as fp32 safetensors (head.safetensors, written by kev_web_export.merge).
3
+ export function parseSafetensors(buf) {
4
+ const n = Number(new DataView(buf).getBigUint64(0, true));
5
+ const header = JSON.parse(new TextDecoder().decode(new Uint8Array(buf, 8, n)));
6
+ const out = {};
7
+ for (const [name, t] of Object.entries(header)) {
8
+ if (name === "__metadata__")
9
+ continue;
10
+ if (t.dtype !== "F32")
11
+ throw new Error(`${name}: expected F32, got ${t.dtype}`);
12
+ const [a, b] = t.data_offsets;
13
+ out[name] = { shape: t.shape, data: new Float32Array(buf.slice(8 + n + a, 8 + n + b)) }; // copy: offsets need not be 4-aligned
14
+ }
15
+ return out;
16
+ }
17
+ export class PointerHead {
18
+ d;
19
+ dp;
20
+ qw;
21
+ qb;
22
+ kw;
23
+ kb;
24
+ constructor(weights) {
25
+ const q = weights["q.weight"], k = weights["k.weight"];
26
+ if (!q || !k)
27
+ throw new Error("head weights must contain q.weight and k.weight");
28
+ [this.dp, this.d] = q.shape;
29
+ this.qw = q.data;
30
+ this.qb = weights["q.bias"].data;
31
+ this.kw = k.data;
32
+ this.kb = weights["k.bias"].data;
33
+ }
34
+ static fromSafetensors(buf) { return new PointerHead(parseSafetensors(buf)); }
35
+ project(w, b, h) {
36
+ const out = new Float64Array(this.dp);
37
+ for (let i = 0; i < this.dp; i++) {
38
+ let s = b[i];
39
+ const row = i * this.d;
40
+ for (let j = 0; j < this.d; j++)
41
+ s += w[row + j] * h[j];
42
+ out[i] = s;
43
+ }
44
+ return out;
45
+ }
46
+ logits(hDecide, hOpts) {
47
+ const q = this.project(this.qw, this.qb, hDecide);
48
+ const scale = 1 / Math.sqrt(this.dp);
49
+ return hOpts.map((h) => {
50
+ const k = this.project(this.kw, this.kb, h);
51
+ let s = 0;
52
+ for (let i = 0; i < this.dp; i++)
53
+ s += k[i] * q[i];
54
+ return s * scale;
55
+ });
56
+ }
57
+ /** Softmax probabilities; temperature != 1 matches kev.serve's KEV_TEMPERATURE (p^(1/T), renormalised). */
58
+ probs(hDecide, hOpts, temperature = 1) {
59
+ const z = this.logits(hDecide, hOpts).map((x) => x / temperature);
60
+ const m = Math.max(...z);
61
+ const e = z.map((x) => Math.exp(x - m));
62
+ const s = e.reduce((a, b) => a + b, 0);
63
+ return e.map((x) => x / s);
64
+ }
65
+ }
66
+ //# sourceMappingURL=head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"head.js","sourceRoot":"","sources":["../src/head.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./api.ts";
2
+ export * from "./encode.ts";
3
+ export * from "./head.ts";
4
+ export * from "./model.ts";
5
+ export * from "./load.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./api.js";
2
+ export * from "./encode.js";
3
+ export * from "./head.js";
4
+ export * from "./model.js";
5
+ export * from "./load.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
package/dist/load.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import type { InferenceSession } from "onnxruntime-common";
2
+ import { Kev, type KevOptions, type OrtModule } from "./model.ts";
3
+ export interface Progress {
4
+ file: string;
5
+ loaded: number;
6
+ total: number;
7
+ }
8
+ /** Coarse stage of loadKev, for a status line that keeps moving after the download finishes. */
9
+ export type LoadPhase = "manifest" | "download" | "session" | "ready";
10
+ export interface LoadOptions extends KevOptions {
11
+ ort: OrtModule;
12
+ /** variant in manifest.variants; default: the first one listed */
13
+ variant?: string;
14
+ /** e.g. ["webgpu"] or ["wasm"]; default ["webgpu", "wasm"] */
15
+ executionProviders?: InferenceSession.SessionOptions["executionProviders"];
16
+ onProgress?: (p: Progress) => void;
17
+ onPhase?: (phase: LoadPhase) => void;
18
+ /** Cache Storage bucket for model files; null disables caching. Default "kev-web-v1". */
19
+ cacheName?: string | null;
20
+ sessionOptions?: InferenceSession.SessionOptions;
21
+ /** weight files fetched at once. Default 2: on a bandwidth-limited link more streams are slower in aggregate
22
+ * (measured through a tunnel: 1.2 MB/s with one stream, 0.75 MB/s across six). */
23
+ concurrency?: number;
24
+ }
25
+ export declare function fetchFile(url: string, o?: {
26
+ cacheName?: string | null;
27
+ onProgress?: (p: Progress) => void;
28
+ file?: string;
29
+ bytes?: number;
30
+ rev?: string;
31
+ }): Promise<Uint8Array>;
32
+ export declare function loadKev(baseUrl: string, o: LoadOptions): Promise<Kev>;
33
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAoB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAEzE,gGAAgG;AAChG,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IAC3E,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC;IACjD;sFACkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyBD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBxL;AA2BD,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CA2B3E"}
package/dist/load.js ADDED
@@ -0,0 +1,118 @@
1
+ // Load a packaged Kev model (kev_web_export.package output) from a URL: manifest, tokenizer, head, ONNX graph and
2
+ // its external weights. Weight files are large (0.8 GB for kev-0.8b q8), so they are kept in Cache Storage when
3
+ // available and streamed with progress.
4
+ import { Tokenizer } from "@huggingface/tokenizers";
5
+ import { PointerHead } from "./head.js";
6
+ import { Kev } from "./model.js";
7
+ async function readWithProgress(res, file, onProgress, expected = 0) {
8
+ const total = expected || Number(res.headers.get("content-length") ?? 0);
9
+ if (!res.body || !onProgress)
10
+ return new Uint8Array(await res.arrayBuffer());
11
+ const reader = res.body.getReader();
12
+ const chunks = [];
13
+ let loaded = 0;
14
+ for (;;) {
15
+ const { done, value } = await reader.read();
16
+ if (done)
17
+ break;
18
+ chunks.push(value);
19
+ loaded += value.length;
20
+ onProgress({ file, loaded, total: total || loaded });
21
+ }
22
+ if (chunks.length === 1)
23
+ return chunks[0];
24
+ const out = new Uint8Array(loaded);
25
+ let o = 0;
26
+ for (const c of chunks) {
27
+ out.set(c, o);
28
+ o += c.length;
29
+ }
30
+ return out;
31
+ }
32
+ /** The Cache Storage key for one file of one model revision. Weights are republished under the same URLs with the
33
+ * same sizes, so the key carries the revision: a new checkpoint never reads an old one's cached bytes. */
34
+ const cacheKey = (url, rev) => (rev ? `${url}${url.includes("?") ? "&" : "?"}kev-rev=${encodeURIComponent(rev)}` : url);
35
+ export async function fetchFile(url, o = {}) {
36
+ const file = o.file ?? url;
37
+ const cache = o.cacheName !== null && typeof caches !== "undefined" ? await caches.open(o.cacheName ?? "kev-web-v1") : null;
38
+ const key = cacheKey(url, o.rev);
39
+ const hit = await cache?.match(key);
40
+ if (hit) {
41
+ const data = await readWithProgress(hit, file, o.onProgress, o.bytes);
42
+ if (!o.bytes || data.length === o.bytes)
43
+ return data;
44
+ await cache.delete(key); // truncated entry (e.g. a reload mid-download): fetch it again
45
+ }
46
+ const res = await fetch(url);
47
+ if (!res.ok)
48
+ throw new Error(`${url}: HTTP ${res.status}`);
49
+ // read first and cache the bytes afterwards: cache.put(res.clone()) would download the whole body before it
50
+ // resolves, so a multi-hundred-MB file would report no progress at all
51
+ const data = await readWithProgress(res, file, o.onProgress, o.bytes);
52
+ if (o.bytes && data.length !== o.bytes)
53
+ throw new Error(`${file}: expected ${o.bytes} bytes, received ${data.length}`);
54
+ if (cache) {
55
+ try {
56
+ await cache.put(key, new Response(data, { headers: { "content-type": res.headers.get("content-type") ?? "application/octet-stream", "content-length": String(data.length) } }));
57
+ }
58
+ catch { /* quota: run uncached */ }
59
+ }
60
+ return data;
61
+ }
62
+ const join = (base, path) => `${base.replace(/\/$/, "")}/${path}`;
63
+ /** Delete this model's cached files from other revisions: a superseded checkpoint is gigabytes of quota. */
64
+ async function dropOtherRevisions(baseUrl, rev, cacheName) {
65
+ if (cacheName === null || typeof caches === "undefined")
66
+ return;
67
+ const cache = await caches.open(cacheName ?? "kev-web-v1");
68
+ const prefix = `${baseUrl.replace(/\/$/, "")}/`;
69
+ for (const req of await cache.keys()) {
70
+ if (!req.url.startsWith(prefix))
71
+ continue;
72
+ const got = new URL(req.url).searchParams.get("kev-rev");
73
+ if (got !== rev)
74
+ await cache.delete(req);
75
+ }
76
+ }
77
+ /** Run jobs with a bounded number in flight: a model is split into many shards, and hundreds of parallel
78
+ * requests are slower than a handful and make progress jumpy. */
79
+ async function pool(jobs, limit) {
80
+ const out = new Array(jobs.length);
81
+ let next = 0;
82
+ await Promise.all(Array.from({ length: Math.min(limit, jobs.length) }, async () => {
83
+ for (let i = next++; i < jobs.length; i = next++)
84
+ out[i] = await jobs[i]();
85
+ }));
86
+ return out;
87
+ }
88
+ export async function loadKev(baseUrl, o) {
89
+ o.onPhase?.("manifest");
90
+ const decode = (b) => new TextDecoder().decode(b);
91
+ // the manifest is always fetched fresh: it names the revision everything else is cached under
92
+ const manifest = JSON.parse(decode(await fetchFile(join(baseUrl, "manifest.json"), { cacheName: null })));
93
+ const variant = o.variant ?? Object.keys(manifest.variants)[0];
94
+ const v = manifest.variants[variant];
95
+ if (!v)
96
+ throw new Error(`unknown variant ${variant}; have ${Object.keys(manifest.variants).join(", ")}`);
97
+ o.onPhase?.("download");
98
+ // announce every file up front so the total does not grow as downloads start
99
+ for (const [p, bytes] of Object.entries(v.sizes ?? {}))
100
+ o.onProgress?.({ file: p, loaded: 0, total: bytes });
101
+ const get = (p) => fetchFile(join(baseUrl, p), { cacheName: o.cacheName, onProgress: o.onProgress, file: p, bytes: v.sizes?.[p], rev: manifest.run });
102
+ const [tokJson, tokCfg] = (await Promise.all([get(manifest.files.tokenizer), get(manifest.files.tokenizer_config)])).map(decode);
103
+ const [head, graph, ...data] = await pool([manifest.files.head, v.model, ...v.data].map((p) => () => get(p)), o.concurrency ?? 2);
104
+ const tokenizer = new Tokenizer(JSON.parse(tokJson), JSON.parse(tokCfg));
105
+ o.onPhase?.("session");
106
+ const eps = o.executionProviders ?? ["webgpu", "wasm"];
107
+ const gpu = eps.some((e) => (typeof e === "string" ? e : e.name) === "webgpu");
108
+ const session = await o.ort.InferenceSession.create(graph, {
109
+ ...Kev.sessionOptions(manifest, variant, gpu),
110
+ executionProviders: eps,
111
+ externalData: v.data.map((p, i) => ({ path: p.split("/").pop(), data: data[i] })),
112
+ ...o.sessionOptions,
113
+ });
114
+ await dropOtherRevisions(baseUrl, manifest.run, o.cacheName);
115
+ o.onPhase?.("ready");
116
+ return new Kev({ ort: o.ort, session, head: PointerHead.fromSafetensors(head.slice().buffer), tokenizer, manifest, variant, options: o });
117
+ }
118
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import type { InferenceSession, Tensor } from "onnxruntime-common";
2
+ import { Tokenizer } from "@huggingface/tokenizers";
3
+ import { type Answer, type DecisionRecord, type SystemOneRequest, type SystemOneResponse } from "./api.ts";
4
+ import { type Encoding, type EncodeOptions, type SpecialTokens } from "./encode.ts";
5
+ import { PointerHead } from "./head.ts";
6
+ /** The subset of the onnxruntime-web / onnxruntime-node module the runtime uses (both satisfy it). */
7
+ export interface OrtModule {
8
+ InferenceSession: {
9
+ create(model: Uint8Array | string, options?: InferenceSession.SessionOptions): Promise<InferenceSession>;
10
+ };
11
+ Tensor: new (type: Tensor.Type, data: Tensor.DataType, dims: readonly number[]) => Tensor;
12
+ }
13
+ export interface IOInfo {
14
+ name: string;
15
+ type: "float16" | "float32" | "int64";
16
+ shape: (number | string)[];
17
+ /** cache inputs: the shape of an empty cache (batch 1, no past tokens) */
18
+ empty?: number[];
19
+ }
20
+ export interface VariantManifest {
21
+ model: string;
22
+ data: string[];
23
+ bytes: number;
24
+ io_dtype: "float16" | "float32";
25
+ /** bytes per file, so download progress is right even without a content-length header */
26
+ sizes?: Record<string, number>;
27
+ inputs: IOInfo[];
28
+ outputs: IOInfo[];
29
+ /** parity against the fp32 PyTorch model on the bundled fixtures */
30
+ parity?: {
31
+ max_abs_dp: number;
32
+ argmax_flips: number;
33
+ questions: number;
34
+ };
35
+ }
36
+ export interface KevManifest {
37
+ name: string;
38
+ run: string;
39
+ base: string;
40
+ hidden_size: number;
41
+ head_dim: number;
42
+ special: SpecialTokens;
43
+ max_state: number;
44
+ max_branch: number;
45
+ files: {
46
+ head: string;
47
+ tokenizer: string;
48
+ tokenizer_config: string;
49
+ };
50
+ variants: Record<string, VariantManifest>;
51
+ }
52
+ export interface KevOptions extends EncodeOptions {
53
+ /** kev.serve's KEV_TEMPERATURE: p^(1/T) renormalised. Default 1 (off). */
54
+ temperature?: number;
55
+ /** states whose caches are kept for reuse (LRU). Default 4, like kev.serve. 0 disables. */
56
+ stateCacheSize?: number;
57
+ }
58
+ export declare class Kev {
59
+ readonly manifest: KevManifest;
60
+ readonly variant: string;
61
+ readonly tokenizer: Tokenizer;
62
+ private ort;
63
+ private session;
64
+ private head;
65
+ private opts;
66
+ private cache;
67
+ private queue;
68
+ private v;
69
+ constructor(a: {
70
+ ort: OrtModule;
71
+ session: InferenceSession;
72
+ head: PointerHead;
73
+ tokenizer: Tokenizer;
74
+ manifest: KevManifest;
75
+ variant: string;
76
+ options?: KevOptions;
77
+ });
78
+ /** Session options that keep the state caches on the GPU between runs (WebGPU); harmless elsewhere. */
79
+ static sessionOptions(manifest: KevManifest, variant: string, gpu: boolean): InferenceSession.SessionOptions;
80
+ encode(rec: DecisionRecord): Encoding;
81
+ private serial;
82
+ private tensor;
83
+ private emptyPast;
84
+ private feeds;
85
+ private runState;
86
+ private disposeState;
87
+ /** Per-question probabilities for an encoded request. onQuestion fires as each question finishes. */
88
+ probsEncoded(enc: Encoding, onQuestion?: (index: number, probs: number[]) => void): Promise<number[][]>;
89
+ probs(rec: DecisionRecord): Promise<number[][]>;
90
+ /** POST /v1/systemone. onAnswer fires per question, so a caller can show answers as they land. */
91
+ systemOne(input: SystemOneRequest | unknown, opts?: {
92
+ onAnswer?: (id: string, answer: Answer, index: number) => void;
93
+ }): Promise<SystemOneResponse>;
94
+ /** POST /v1/systemone/separate: each question in its own request against the same state. */
95
+ systemOneSeparate(input: SystemOneRequest | unknown): Promise<SystemOneResponse>;
96
+ clearCache(): void;
97
+ release(): Promise<void>;
98
+ }
99
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}