@ai-ecoverse/kev.js 0.3.0 → 0.4.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/README.md CHANGED
@@ -144,16 +144,38 @@ checkpoint temperature. `kev.systemOne(req, { dateFacts: true })` is `KEV_DATE_F
144
144
  Weight files are cached in Cache Storage (`kev-web-v1`). In the demo page, `window.kev.systemOne(...)` works from
145
145
  the console, and `?verbose` logs where onnxruntime placed each node.
146
146
 
147
+ `loadKev` also reads a bundle that is already on disk, in place: pass a directory handle that holds it (OPFS, or
148
+ `showDirectoryPicker()`) or a function that reads a file by its bundle path, instead of a URL. Nothing is fetched and
149
+ nothing is copied into Cache Storage, so a 9 GB model is stored once. `modelFiles(manifest, variant)` lists the files a
150
+ variant loads with their sizes, for a download or resume step; a local file of the wrong size fails the load by name.
151
+
152
+ ```ts
153
+ const opfs = await (await navigator.storage.getDirectory()).getDirectoryHandle("kev-9b");
154
+ const kev = await loadKev(opfs, { ort, variant: "q8f32" });
155
+ // or through a virtual file system: loadKev((path) => fs.readFileBinary(`/models/kev-9b/${path}`), { ort })
156
+ ```
157
+
147
158
  ## Testing
148
159
 
149
160
  ```bash
150
161
  npm test # rendering, tokenization, encoding, date_facts, temperature; full runtime on onnxruntime-node
151
162
  KEV_VARIANTS=fp32 npm test # just the exact variant
152
163
  KEV_MODEL=kev-4b npm test # fixtures/kev-4b.json against public/models/kev-4b
164
+ npm run fetch-model -- kev-0.8b q8f32 # published bundle -> public/models/kev-0.8b (resumes; keeps files at size)
165
+ npx playwright install chromium && npm run test:browser # Chromium: loadKev from the real OPFS, the model on WASM and WebGPU
153
166
  cd export && uv run python -m kev_web_export.parity --model build/kev-0.8b/web-q8f32/model.onnx \
154
167
  --head build/kev-0.8b/head.safetensors --fixtures ../fixtures/kev-0.8b.json
155
168
  ```
156
169
 
170
+ The browser tests (`test/browser`, Playwright) run their cases in a module worker, as the demo does. Three write a
171
+ synthetic bundle into the browser's OPFS and load it through a directory handle and a read function. Two copy the
172
+ Kev-0.8B bundle into OPFS, load it from there on WASM and on WebGPU, and compare with the PyTorch fixtures; they also
173
+ check that no model file was fetched and nothing went to Cache Storage. Without a bundle, or without a WebGPU adapter,
174
+ those skip; `KEV_REQUIRE_MODEL=1` and `KEV_REQUIRE_WEBGPU=1` make that a failure. CI downloads the bundle (cached per
175
+ published manifest) and runs the Node and browser suites against it. Its runners have no GPU, so WebGPU runs on
176
+ SwiftShader (a CPU Vulkan): that checks the WebGPU kernels' results, not GPU speed, at about 150 s per fixture, so CI
177
+ runs two (`KEV_WEBGPU_FIXTURES`). `KEV_WEBGPU_SWIFTSHADER=1` forces that adapter locally.
178
+
157
179
  `scripts/cdp.mjs` drives a page in a Chrome started with `--remote-debugging-port=9222`, for checking the demo in a
158
180
  real browser: `node scripts/cdp.mjs '<expression>'` evaluates in the tab (`MATCH=` picks it by URL), and
159
181
  `node scripts/cdp.mjs --shot out.png` screenshots it.
package/dist/load.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import type { InferenceSession } from "onnxruntime-common";
2
- import { Kev, type KevOptions, type OrtModule } from "./model.ts";
2
+ import { Kev, type KevManifest, type KevOptions, type OrtModule } from "./model.ts";
3
3
  export interface Progress {
4
4
  file: string;
5
5
  loaded: number;
6
6
  total: number;
7
7
  }
8
+ /** Reads one file of a packaged model by its path in the bundle ("manifest.json", "r-<sha>/q8f32/model.onnx"). */
9
+ export type ReadModelFile = (path: string) => Promise<Uint8Array | ArrayBuffer | Blob>;
10
+ /** Where loadKev reads a model: a base URL (fetched, kept in Cache Storage), a directory holding the bundle (OPFS via
11
+ * navigator.storage.getDirectory(), or showDirectoryPicker()), or a function that reads a file by its bundle path. The
12
+ * last two are read in place: no fetch, no Cache Storage. */
13
+ export type ModelSource = string | FileSystemDirectoryHandle | ReadModelFile;
8
14
  /** Coarse stage of loadKev, for a status line that keeps moving after the download finishes. */
9
15
  export type LoadPhase = "manifest" | "download" | "session" | "ready";
10
16
  export interface LoadOptions extends KevOptions {
@@ -15,7 +21,7 @@ export interface LoadOptions extends KevOptions {
15
21
  executionProviders?: InferenceSession.SessionOptions["executionProviders"];
16
22
  onProgress?: (p: Progress) => void;
17
23
  onPhase?: (phase: LoadPhase) => void;
18
- /** Cache Storage bucket for model files; null disables caching. Default "kev-web-v1". */
24
+ /** Cache Storage bucket for model files; null disables caching. Default "kev-web-v1". Only URL sources are cached. */
19
25
  cacheName?: string | null;
20
26
  sessionOptions?: InferenceSession.SessionOptions;
21
27
  /** weight files fetched at once. Default 2: on a bandwidth-limited link more streams are slower in aggregate
@@ -29,5 +35,13 @@ export declare function fetchFile(url: string, o?: {
29
35
  bytes?: number;
30
36
  rev?: string;
31
37
  }): Promise<Uint8Array>;
32
- export declare function loadKev(baseUrl: string, o: LoadOptions): Promise<Kev>;
38
+ /** A ReadModelFile over a directory that holds the bundle as published (manifest.json at its root). */
39
+ export declare function directoryReader(dir: FileSystemDirectoryHandle): ReadModelFile;
40
+ /** Every file a variant loads besides manifest.json, with its size when the manifest records one. A download or resume
41
+ * step can fetch exactly these, and skip those already at their size. */
42
+ export declare function modelFiles(manifest: KevManifest, variant?: string): {
43
+ path: string;
44
+ bytes?: number;
45
+ }[];
46
+ export declare function loadKev(source: ModelSource, o: LoadOptions): Promise<Kev>;
33
47
  //# sourceMappingURL=load.d.ts.map
@@ -1 +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"}
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,EAAE,KAAK,WAAW,EAAE,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,kHAAkH;AAClH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;AAEvF;;6DAE6D;AAC7D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,yBAAyB,GAAG,aAAa,CAAC;AAE7E,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,sHAAsH;IACtH,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;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,GAAG,EAAE,yBAAyB,GAAG,aAAa,CAO7E;AAED;yEACyE;AACzE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,SAAoC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAKjI;AAuCD,wBAAsB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CA+B/E"}
package/dist/load.js CHANGED
@@ -1,6 +1,6 @@
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.
1
+ // Load a packaged Kev model (kev_web_export.package output): manifest, tokenizer, head, ONNX graph and its external
2
+ // weights. From a URL, weight files (0.8 GB for kev-0.8b q8) are kept in Cache Storage when available and streamed
3
+ // with progress. A model already on disk (OPFS, a picked directory, a virtual file system) is read in place.
4
4
  import { Tokenizer } from "@huggingface/tokenizers";
5
5
  import { PointerHead } from "./head.js";
6
6
  import { Kev } from "./model.js";
@@ -59,6 +59,37 @@ export async function fetchFile(url, o = {}) {
59
59
  }
60
60
  return data;
61
61
  }
62
+ /** A ReadModelFile over a directory that holds the bundle as published (manifest.json at its root). */
63
+ export function directoryReader(dir) {
64
+ return async (path) => {
65
+ const parts = path.split("/").filter(Boolean);
66
+ let d = dir;
67
+ for (const part of parts.slice(0, -1))
68
+ d = await d.getDirectoryHandle(part);
69
+ return (await d.getFileHandle(parts[parts.length - 1])).getFile();
70
+ };
71
+ }
72
+ /** Every file a variant loads besides manifest.json, with its size when the manifest records one. A download or resume
73
+ * step can fetch exactly these, and skip those already at their size. */
74
+ export function modelFiles(manifest, variant = Object.keys(manifest.variants)[0]) {
75
+ const v = manifest.variants[variant];
76
+ if (!v)
77
+ throw new Error(`unknown variant ${variant}; have ${Object.keys(manifest.variants).join(", ")}`);
78
+ return [manifest.files.tokenizer, manifest.files.tokenizer_config, manifest.files.head, v.model, ...v.data]
79
+ .map((path) => ({ path, bytes: v.sizes?.[path] }));
80
+ }
81
+ /** One file from a local source, as bytes. Views and buffers may come from another realm (a VFS over postMessage), so
82
+ * they are recognised by shape rather than instanceof. */
83
+ async function readLocal(read, file, o = {}) {
84
+ const got = await read(file);
85
+ const data = ArrayBuffer.isView(got) ? new Uint8Array(got.buffer, got.byteOffset, got.byteLength)
86
+ : typeof got.arrayBuffer === "function" ? new Uint8Array(await got.arrayBuffer())
87
+ : new Uint8Array(got);
88
+ if (o.bytes && data.length !== o.bytes)
89
+ throw new Error(`${file}: expected ${o.bytes} bytes, read ${data.length} (incomplete download?)`);
90
+ o.onProgress?.({ file, loaded: data.length, total: data.length });
91
+ return data;
92
+ }
62
93
  const join = (base, path) => `${base.replace(/\/$/, "")}/${path}`;
63
94
  /** Delete this model's cached files from other revisions: a superseded checkpoint is gigabytes of quota. */
64
95
  async function dropOtherRevisions(baseUrl, rev, cacheName) {
@@ -85,11 +116,14 @@ async function pool(jobs, limit) {
85
116
  }));
86
117
  return out;
87
118
  }
88
- export async function loadKev(baseUrl, o) {
119
+ export async function loadKev(source, o) {
120
+ const baseUrl = typeof source === "string" ? source : null;
121
+ const read = baseUrl !== null ? null : typeof source === "function" ? source : directoryReader(source);
89
122
  o.onPhase?.("manifest");
90
123
  const decode = (b) => new TextDecoder().decode(b);
91
124
  // 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 })));
125
+ const manifest = JSON.parse(decode(read ? await readLocal(read, "manifest.json")
126
+ : await fetchFile(join(baseUrl, "manifest.json"), { cacheName: null })));
93
127
  const variant = o.variant ?? Object.keys(manifest.variants)[0];
94
128
  const v = manifest.variants[variant];
95
129
  if (!v)
@@ -98,7 +132,8 @@ export async function loadKev(baseUrl, o) {
98
132
  // announce every file up front so the total does not grow as downloads start
99
133
  for (const [p, bytes] of Object.entries(v.sizes ?? {}))
100
134
  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 });
135
+ const get = (p) => read ? readLocal(read, p, { onProgress: o.onProgress, bytes: v.sizes?.[p] })
136
+ : fetchFile(join(baseUrl, p), { cacheName: o.cacheName, onProgress: o.onProgress, file: p, bytes: v.sizes?.[p], rev: manifest.run });
102
137
  const [tokJson, tokCfg] = (await Promise.all([get(manifest.files.tokenizer), get(manifest.files.tokenizer_config)])).map(decode);
103
138
  const [head, graph, ...data] = await pool([manifest.files.head, v.model, ...v.data].map((p) => () => get(p)), o.concurrency ?? 2);
104
139
  const tokenizer = new Tokenizer(JSON.parse(tokJson), JSON.parse(tokCfg));
@@ -111,7 +146,8 @@ export async function loadKev(baseUrl, o) {
111
146
  externalData: v.data.map((p, i) => ({ path: p.split("/").pop(), data: data[i] })),
112
147
  ...o.sessionOptions,
113
148
  });
114
- await dropOtherRevisions(baseUrl, manifest.run, o.cacheName);
149
+ if (baseUrl !== null)
150
+ await dropOtherRevisions(baseUrl, manifest.run, o.cacheName);
115
151
  o.onPhase?.("ready");
116
152
  return new Kev({ ort: o.ort, session, head: PointerHead.fromSafetensors(head.slice().buffer), tokenizer, manifest, variant, options: o });
117
153
  }
package/dist/load.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/kev.js",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Kev decision models in the browser: WebGPU/WASM via onnxruntime-web, TypeSafe System One API",
5
5
  "keywords": [
6
6
  "kev",
@@ -42,6 +42,8 @@
42
42
  "build:demo": "vite build demo",
43
43
  "typecheck": "tsc --noEmit -p .",
44
44
  "test": "node --import tsx --test test/*.test.ts",
45
+ "test:browser": "playwright test",
46
+ "fetch-model": "node --import tsx scripts/fetch-model.ts",
45
47
  "release": "semantic-release"
46
48
  },
47
49
  "dependencies": {
@@ -51,6 +53,7 @@
51
53
  "onnxruntime-common": ">=1.30.0"
52
54
  },
53
55
  "devDependencies": {
56
+ "@playwright/test": "1.63.0",
54
57
  "@semantic-release/changelog": "^7.0.0",
55
58
  "@semantic-release/git": "^11.0.1",
56
59
  "@types/node": "^26.0.0",