interscript 3.2.0 → 4.0.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.
@@ -17,8 +17,6 @@
17
17
  export type { Model, ModelArtifacts, ModelFactory, ModelKind, ModelLoadParams, ModelRef, InferenceInputs, InferenceOutputs, InferenceSession, Tensor, } from "./types.js";
18
18
  export { registerModel, loadModel, registeredKinds, resetModels } from "./registry.js";
19
19
  export { createSession, detectBackend } from "./session/index.js";
20
- export { setModelBase, getModelBase } from "./provision/base.js";
21
- export { loadManifest, resolveManifestEntry, artifactUrls, sidecarFilenames, setInlineManifest, setManifestUrl, type AssetVariant, type Manifest, type ManifestModelEntry, } from "./provision/manifest.js";
22
20
  /**
23
21
  * The IMF v1 registry — models.yaml resolution over GitHub Releases
24
22
  * (sha256-sidecar-verified). This is the canonical way to load models
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,GACP,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAA;AAEhC;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAIrC,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,GACP,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAIrC,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
package/dist/ml/index.js CHANGED
@@ -16,8 +16,6 @@
16
16
  */
17
17
  export { registerModel, loadModel, registeredKinds, resetModels } from "./registry.js";
18
18
  export { createSession, detectBackend } from "./session/index.js";
19
- export { setModelBase, getModelBase } from "./provision/base.js";
20
- export { loadManifest, resolveManifestEntry, artifactUrls, sidecarFilenames, setInlineManifest, setManifestUrl, } from "./provision/manifest.js";
21
19
  /**
22
20
  * The IMF v1 registry — models.yaml resolution over GitHub Releases
23
21
  * (sha256-sidecar-verified). This is the canonical way to load models
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAeH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GAIf,MAAM,yBAAyB,CAAA;AAEhC;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,sEAAsE;AACtE,oDAAoD;AACpD,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAeH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,sEAAsE;AACtE,oDAAoD;AACpD,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
@@ -6,15 +6,13 @@
6
6
  * browsers); falls back to filesystem reads in Node when given a
7
7
  * `file:` or relative URL.
8
8
  *
9
- * The manifest (version URL mapping) lives in `./manifest.ts`.
10
- * The base URL (CDN mirror override) lives in `./base.ts`.
11
- *
12
- * Adding a new provision source (e.g. IPFS, BitTorrent) = adding a
13
- * new provisioner file. Existing code never changes (OCP).
9
+ * The manifest-based resolution layer was removed in 4.0.0: models
10
+ * resolve through the IMF registry (`imf`, GitHub Releases index,
11
+ * sha256-verified) or an explicit `url` on the ModelRef.
14
12
  */
15
13
  import type { ModelArtifacts, ModelRef } from "../types.js";
16
14
  import type { InferenceSession } from "../session/index.js";
17
- import { type AssetFormat, type AssetVariant } from "./manifest.js";
15
+ import type { AssetFormat, AssetVariant } from "./types.js";
18
16
  export interface ProvisionedModel {
19
17
  readonly session: InferenceSession;
20
18
  readonly artifacts: ModelArtifacts;
@@ -50,10 +48,9 @@ export interface ProvisionOptions {
50
48
  readonly outputNames?: readonly string[];
51
49
  }
52
50
  /**
53
- * Provision a model from the manifest. Resolves the task version,
54
- * downloads the model file from the CDN (falls back to GitHub
55
- * Releases), opens an inference session, and fetches sidecar
56
- * artifacts (vocab, config, checksum) in parallel.
51
+ * Provision a model from an explicit URL. Downloads the model file,
52
+ * opens an inference session, and returns it with any artifacts the
53
+ * caller fetches separately.
57
54
  *
58
55
  * In Node, can read from the filesystem if `url` starts with `file:`
59
56
  * or is a relative path.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAA;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACxD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwC3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACxD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwB3B"}
@@ -6,48 +6,29 @@
6
6
  * browsers); falls back to filesystem reads in Node when given a
7
7
  * `file:` or relative URL.
8
8
  *
9
- * The manifest (version URL mapping) lives in `./manifest.ts`.
10
- * The base URL (CDN mirror override) lives in `./base.ts`.
11
- *
12
- * Adding a new provision source (e.g. IPFS, BitTorrent) = adding a
13
- * new provisioner file. Existing code never changes (OCP).
9
+ * The manifest-based resolution layer was removed in 4.0.0: models
10
+ * resolve through the IMF registry (`imf`, GitHub Releases index,
11
+ * sha256-verified) or an explicit `url` on the ModelRef.
14
12
  */
15
13
  import { createSession } from "../session/index.js";
16
- import { artifactUrls, resolveManifestEntry, sidecarFilenames, } from "./manifest.js";
17
14
  /**
18
- * Provision a model from the manifest. Resolves the task version,
19
- * downloads the model file from the CDN (falls back to GitHub
20
- * Releases), opens an inference session, and fetches sidecar
21
- * artifacts (vocab, config, checksum) in parallel.
15
+ * Provision a model from an explicit URL. Downloads the model file,
16
+ * opens an inference session, and returns it with any artifacts the
17
+ * caller fetches separately.
22
18
  *
23
19
  * In Node, can read from the filesystem if `url` starts with `file:`
24
20
  * or is a relative path.
25
21
  */
26
22
  export async function provisionModel(ref, opts = {}) {
27
- const variant = opts.variant ?? "q8";
28
23
  const format = opts.format ?? "onnx";
29
24
  const webgpu = opts.webgpu ?? true;
30
- const modelUrl = ref.url ?? (await resolveModelUrl(ref, variant, format));
31
- const modelBuffer = await fetchBytesWithFallback(modelUrl);
32
- const sidecars = await resolveSidecarUrls(ref, variant, format);
25
+ if (!ref.url) {
26
+ throw new Error(`No url on ModelRef kind=${ref.kind} id=${ref.id}. Load models via ` +
27
+ `\`import { imf } from "interscript/ml"\` and \`imf.resolve("${ref.id}")\` ` +
28
+ `(GitHub Releases index, sha256-verified), or pass an explicit \`url\` on the ModelRef.`);
29
+ }
30
+ const modelBuffer = await fetchBytesWithFallback(ref.url);
33
31
  const artifacts = {};
34
- await Promise.all(sidecars.map(async ({ filename, url }) => {
35
- try {
36
- const bytes = await fetchBytesWithFallback(url);
37
- if (filename.endsWith(".json") ||
38
- filename.endsWith(".yaml") ||
39
- filename.endsWith(".yml") ||
40
- filename.endsWith(".sha256")) {
41
- artifacts[filename] = new TextDecoder().decode(bytes);
42
- }
43
- else {
44
- artifacts[filename] = bytes;
45
- }
46
- }
47
- catch {
48
- // Sidecars are optional; missing ones are skipped.
49
- }
50
- }));
51
32
  const sessionOpts = { webgpu };
52
33
  if (format === "tflite") {
53
34
  sessionOpts.runtime = "litert";
@@ -61,30 +42,6 @@ export async function provisionModel(ref, opts = {}) {
61
42
  const session = await createSession(modelBuffer, sessionOpts);
62
43
  return { session, artifacts };
63
44
  }
64
- async function resolveModelUrl(ref, variant, format) {
65
- const entry = await resolveManifestEntry(ref.kind, ref.id);
66
- if (!entry) {
67
- throw new Error(`No manifest entry for kind=${ref.kind} id=${ref.id}. ` +
68
- `Pass an explicit \`url\` on the ModelRef or pin a task version in the manifest.`);
69
- }
70
- const { primary } = artifactUrls(entry, variant, format);
71
- return primary;
72
- }
73
- async function resolveSidecarUrls(ref, variant, format) {
74
- // If the caller provided an explicit URL, skip manifest-based sidecar
75
- // resolution — they've taken control of provisioning.
76
- if (ref.url)
77
- return [];
78
- const entry = await resolveManifestEntry(ref.kind, ref.id);
79
- if (!entry)
80
- return [];
81
- const { primary, assetName } = artifactUrls(entry, variant, format);
82
- const base = primary.slice(0, primary.lastIndexOf("/") + 1);
83
- return sidecarFilenames(entry, variant, format).map((filename) => ({
84
- filename,
85
- url: `${base}${filename.startsWith(assetName) ? filename : filename}`,
86
- }));
87
- }
88
45
  /**
89
46
  * Fetch bytes from a URL. Tries the URL as-given; if it's the CDN
90
47
  * primary and fails, the caller can supply a fallback URL via the
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,eAAe,CAAA;AAsCtB;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAa,EACb,OAAyB,EAAE;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;IAElC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzE,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAE1D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAwC,EAAE,CAAA;IACzD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAA;YAC/C,IACE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5B,CAAC;gBACD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,MAAM,WAAW,GAA4B,EAAE,MAAM,EAAE,CAAA;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;QAC9B,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAChG,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC7D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAC/B,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAa,EACb,OAAqB,EACrB,MAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,IAAI;YACrD,iFAAiF,CACpF,CAAA;IACH,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAa,EACb,OAAqB,EACrB,MAAmB;IAEnB,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjE,QAAQ;QACR,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;KACtE,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,uBAAuB;IACvB,IACE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACvB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjF,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ml/provision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAuCnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAa,EACb,OAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;IAElC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,oBAAoB;YAClE,+DAA+D,GAAG,CAAC,EAAE,OAAO;YAC5E,wFAAwF,CAC3F,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzD,MAAM,SAAS,GAAwC,EAAE,CAAA;IAEzD,MAAM,WAAW,GAA4B,EAAE,MAAM,EAAE,CAAA;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;QAC9B,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAChG,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC7D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,uBAAuB;IACvB,IACE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACvB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjF,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type AssetVariant = "fp32" | "q8" | "q4" | "fp16";
2
+ export type AssetFormat = "onnx" | "tflite";
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ml/provision/types.ts"],"names":[],"mappings":""}
@@ -115,13 +115,18 @@ async function executeFuncallAsync(rule, ctx) {
115
115
  ctx.current = await rababa(ctx.current, rule.kwargs);
116
116
  return;
117
117
  }
118
- // Other ASYNC_FUNCTIONS (secryst, etc.) still go through the generic
119
- // ML registry.
118
+ // Other ASYNC_FUNCTIONS (secryst, etc.) resolve model ids through
119
+ // the IMF registry (GitHub Releases index, sha256-verified).
120
120
  if (ASYNC_FUNCTIONS.has(rule.name)) {
121
- const { loadModel } = await import("../ml/index.js");
121
+ const { imf } = await import("../ml/index.js");
122
122
  const modelId = (rule.kwargs?.config ?? rule.kwargs?.model ?? "default");
123
- const model = await loadModel({ kind: rule.name, id: modelId });
124
- ctx.current = await model.transform(ctx.current);
123
+ const model = await imf.IMFModel.load(modelId);
124
+ try {
125
+ ctx.current = await model.translate(ctx.current);
126
+ }
127
+ finally {
128
+ await model.dispose();
129
+ }
125
130
  return;
126
131
  }
127
132
  // Fall back to the sync funcall executor for all other functions.
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../src/runtime/interpreter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../src/runtime/interpreter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "interscript",
3
- "version": "3.2.0",
3
+ "version": "4.0.0",
4
4
  "description": "Interscript TypeScript runtime — interoperable script conversion",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,14 +0,0 @@
1
- /**
2
- * Base URL for model artifacts. Owned here so every provisioner
3
- * (HTTP fetcher, manifest loader, future IPFS/Bittorrent) reads
4
- * from the same source. No circular deps.
5
- *
6
- * Default points at the jsDelivr mirror of `interscript/ml-models`
7
- * — works without npm install, edge-cached globally.
8
- *
9
- * Override at runtime with `setModelBase()` for self-hosted mirrors,
10
- * air-gapped envs, or staging deployments.
11
- */
12
- export declare function setModelBase(url: string): void;
13
- export declare function getModelBase(): string;
14
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Base URL for model artifacts. Owned here so every provisioner
3
- * (HTTP fetcher, manifest loader, future IPFS/Bittorrent) reads
4
- * from the same source. No circular deps.
5
- *
6
- * Default points at the jsDelivr mirror of `interscript/ml-models`
7
- * — works without npm install, edge-cached globally.
8
- *
9
- * Override at runtime with `setModelBase()` for self-hosted mirrors,
10
- * air-gapped envs, or staging deployments.
11
- */
12
- let modelBase = "https://cdn.jsdelivr.net/gh/interscript/ml-models@main/npm/models";
13
- export function setModelBase(url) {
14
- modelBase = url.replace(/\/$/, "");
15
- }
16
- export function getModelBase() {
17
- return modelBase;
18
- }
19
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/ml/provision/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,IAAI,SAAS,GAAG,mEAAmE,CAAA;AAEnF,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Manifest-driven model resolution.
3
- *
4
- * The source of truth for "what model version is current" lives in
5
- * the `@interscript/models` npm package (a tiny JSON manifest kept
6
- * in lockstep with GH Releases in `interscript/ml-models`).
7
- *
8
- * Resolution order for the manifest itself:
9
- * 1. Programmatically injected via `setManifestUrl()` or
10
- * `setInlineManifest()` (tests, air-gapped envs).
11
- * 2. The `@interscript/models` package, when installed.
12
- * 3. A remote JSON URL on the CDN (`manifest.json` next to the
13
- * release assets).
14
- *
15
- * See `ml-models/TODO.distribution/04-npm-packages.md` for the
16
- * full MECE breakdown of who owns what.
17
- */
18
- /**
19
- * Per-task manifest entry. Matches `npm/models/manifest.json` shape.
20
- */
21
- export interface ManifestModelEntry {
22
- readonly status: "preview" | "stable" | "deprecated";
23
- readonly version: string;
24
- readonly note?: string;
25
- readonly cdn_base: string;
26
- readonly github_base: string;
27
- }
28
- export interface Manifest {
29
- readonly schema_version: number;
30
- readonly models: Readonly<Record<string, ManifestModelEntry>>;
31
- }
32
- /**
33
- * Asset variants a release may ship. `fp32` (no suffix) is the
34
- * default; q8 is the browser-optimized default.
35
- */
36
- export type AssetVariant = "fp32" | "q8" | "q4" | "fp16";
37
- /**
38
- * Serialization format. ONNX is the historical default; LiteRT (.tflite)
39
- * is the 2026 alternative backed by Google's LiteRT.js runtime.
40
- *
41
- * The two formats are orthogonal to `AssetVariant` — both can be
42
- * quantized to q8, both can be fp32. The runtime that loads the file
43
- * is what differs.
44
- */
45
- export type AssetFormat = "onnx" | "tflite";
46
- export declare function setInlineManifest(m: Manifest | null): void;
47
- export declare function setManifestUrl(url: string | null): void;
48
- /**
49
- * Load the manifest. Cached after first call; bust the cache with
50
- * `setInlineManifest()` or `setManifestUrl()`.
51
- */
52
- export declare function loadManifest(): Promise<Manifest>;
53
- /**
54
- * Resolve a `(kind, id)` ref to a manifest entry. The `id` field on
55
- * a ModelRef carries the task name (e.g. "rababa_arabic"); the kind
56
- * is redundant but kept for backwards compatibility.
57
- *
58
- * Returns `null` if the task isn't in the manifest. Callers decide
59
- * whether that's an error or a "use bundled fallback" signal.
60
- */
61
- export declare function resolveManifestEntry(kind: string, id: string): Promise<ManifestModelEntry | null>;
62
- /**
63
- * Build concrete artifact URLs for a model. Prefers the CDN base;
64
- * GitHub Releases base is the fallback (slower, but no CDN cache).
65
- *
66
- * Both URLs use the same asset naming convention so a downloader
67
- * can verify checksums identically against either source.
68
- */
69
- export declare function artifactUrls(entry: ManifestModelEntry, variant?: AssetVariant, format?: AssetFormat): {
70
- primary: string;
71
- fallback: string;
72
- assetName: string;
73
- };
74
- /**
75
- * Sidecar artifacts that ship with every release. These names match
76
- * the release pipeline in `ml-models/.github/workflows/release.yml`.
77
- */
78
- export declare function sidecarFilenames(entry: ManifestModelEntry, variant?: AssetVariant, format?: AssetFormat): readonly string[];
79
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/ml/provision/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAA;AAkB3C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAG1D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAGvD;AAWD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,CAetD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAIpC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,YAAmB,EAC5B,MAAM,GAAE,WAAoB,GAC3B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAS1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,YAAmB,EAC5B,MAAM,GAAE,WAAoB,GAC3B,SAAS,MAAM,EAAE,CAGnB"}
@@ -1,122 +0,0 @@
1
- /**
2
- * Manifest-driven model resolution.
3
- *
4
- * The source of truth for "what model version is current" lives in
5
- * the `@interscript/models` npm package (a tiny JSON manifest kept
6
- * in lockstep with GH Releases in `interscript/ml-models`).
7
- *
8
- * Resolution order for the manifest itself:
9
- * 1. Programmatically injected via `setManifestUrl()` or
10
- * `setInlineManifest()` (tests, air-gapped envs).
11
- * 2. The `@interscript/models` package, when installed.
12
- * 3. A remote JSON URL on the CDN (`manifest.json` next to the
13
- * release assets).
14
- *
15
- * See `ml-models/TODO.distribution/04-npm-packages.md` for the
16
- * full MECE breakdown of who owns what.
17
- */
18
- import { getModelBase } from "./base.js";
19
- const VARIANT_SUFFIX = {
20
- fp32: "",
21
- q8: "-q8",
22
- q4: "-q4",
23
- fp16: "-fp16",
24
- };
25
- const FORMAT_EXTENSION = {
26
- onnx: ".onnx",
27
- tflite: ".tflite",
28
- };
29
- let cachedManifest = null;
30
- let inlineManifest = null;
31
- let manifestUrlOverride = null;
32
- export function setInlineManifest(m) {
33
- inlineManifest = m;
34
- cachedManifest = null;
35
- }
36
- export function setManifestUrl(url) {
37
- manifestUrlOverride = url;
38
- cachedManifest = null;
39
- }
40
- /**
41
- * Default manifest URL — sits next to release assets on the CDN.
42
- * Points at the jsDelivr mirror of the ml-models repo so it works
43
- * with zero npm install.
44
- */
45
- function defaultManifestUrl() {
46
- return `${getModelBase()}/npm/models/manifest.json`;
47
- }
48
- /**
49
- * Load the manifest. Cached after first call; bust the cache with
50
- * `setInlineManifest()` or `setManifestUrl()`.
51
- */
52
- export async function loadManifest() {
53
- if (cachedManifest)
54
- return cachedManifest;
55
- if (inlineManifest) {
56
- cachedManifest = inlineManifest;
57
- return cachedManifest;
58
- }
59
- const url = manifestUrlOverride ?? defaultManifestUrl();
60
- const res = await fetch(url);
61
- if (!res.ok) {
62
- throw new Error(`Failed to load model manifest from ${url}: ${res.status} ${res.statusText}`);
63
- }
64
- const json = (await res.json());
65
- cachedManifest = json;
66
- return json;
67
- }
68
- /**
69
- * Resolve a `(kind, id)` ref to a manifest entry. The `id` field on
70
- * a ModelRef carries the task name (e.g. "rababa_arabic"); the kind
71
- * is redundant but kept for backwards compatibility.
72
- *
73
- * Returns `null` if the task isn't in the manifest. Callers decide
74
- * whether that's an error or a "use bundled fallback" signal.
75
- */
76
- export async function resolveManifestEntry(kind, id) {
77
- const manifest = await loadManifest();
78
- const taskKey = id.startsWith(`${kind}_`) ? id : `${kind}_${id}`;
79
- return manifest.models[taskKey] ?? manifest.models[id] ?? null;
80
- }
81
- /**
82
- * Build concrete artifact URLs for a model. Prefers the CDN base;
83
- * GitHub Releases base is the fallback (slower, but no CDN cache).
84
- *
85
- * Both URLs use the same asset naming convention so a downloader
86
- * can verify checksums identically against either source.
87
- */
88
- export function artifactUrls(entry, variant = "q8", format = "onnx") {
89
- const assetName = assetNameFor(entry, variant, format);
90
- const versionedCdn = entry.cdn_base.replace("{version}", entry.version);
91
- const versionedGithub = entry.github_base.replace("{version}", entry.version);
92
- return {
93
- primary: `${versionedCdn}${assetName}`,
94
- fallback: `${versionedGithub}${assetName}`,
95
- assetName,
96
- };
97
- }
98
- /**
99
- * Sidecar artifacts that ship with every release. These names match
100
- * the release pipeline in `ml-models/.github/workflows/release.yml`.
101
- */
102
- export function sidecarFilenames(entry, variant = "q8", format = "onnx") {
103
- const asset = assetNameFor(entry, variant, format);
104
- return [`${asset}.sha256`, "vocab.json", "config.json"];
105
- }
106
- function assetNameFor(entry, variant, format = "onnx") {
107
- const task = taskNameFromBases(entry);
108
- return `${task}${VARIANT_SUFFIX[variant]}${FORMAT_EXTENSION[format]}`;
109
- }
110
- /**
111
- * Best-effort task name extraction from `cdn_base`/`github_base`.
112
- * Both bases end with `<task>-v{version}/`, so we slice off the
113
- * trailing version segment.
114
- */
115
- function taskNameFromBases(entry) {
116
- const lastSegment = entry.github_base.split("/").filter(Boolean).pop() ?? "";
117
- const suffix = "-v{version}";
118
- if (lastSegment.endsWith(suffix))
119
- return lastSegment.slice(0, -suffix.length);
120
- throw new Error(`Cannot extract task name from manifest entry. github_base=${entry.github_base}`);
121
- }
122
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/ml/provision/manifest.ts"],"names":[],"mappings":"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"}