@alisio/plugin-semantic 0.0.0-stage → 0.1.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.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.es.md +168 -0
  3. package/README.md +160 -2
  4. package/THIRD_PARTY_NOTICES.md +42 -0
  5. package/assets/architecture.svg +1 -0
  6. package/assets/ask-flow.svg +1 -0
  7. package/cover.svg +53 -0
  8. package/dist/apps.d.ts +26 -0
  9. package/dist/apps.d.ts.map +1 -0
  10. package/dist/apps.js +141 -0
  11. package/dist/apps.js.map +1 -0
  12. package/dist/embedded.html +3043 -0
  13. package/dist/engine/download.d.ts +77 -0
  14. package/dist/engine/download.d.ts.map +1 -0
  15. package/dist/engine/download.js +213 -0
  16. package/dist/engine/download.js.map +1 -0
  17. package/dist/engine/embedder.d.ts +55 -0
  18. package/dist/engine/embedder.d.ts.map +1 -0
  19. package/dist/engine/embedder.js +182 -0
  20. package/dist/engine/embedder.js.map +1 -0
  21. package/dist/engine/infer.d.ts +22 -0
  22. package/dist/engine/infer.d.ts.map +1 -0
  23. package/dist/engine/infer.js +53 -0
  24. package/dist/engine/infer.js.map +1 -0
  25. package/dist/engine/models.d.ts +45 -0
  26. package/dist/engine/models.d.ts.map +1 -0
  27. package/dist/engine/models.js +132 -0
  28. package/dist/engine/models.js.map +1 -0
  29. package/dist/engine/runtime.d.ts +46 -0
  30. package/dist/engine/runtime.d.ts.map +1 -0
  31. package/dist/engine/runtime.js +172 -0
  32. package/dist/engine/runtime.js.map +1 -0
  33. package/dist/engine/setup.d.ts +82 -0
  34. package/dist/engine/setup.d.ts.map +1 -0
  35. package/dist/engine/setup.js +183 -0
  36. package/dist/engine/setup.js.map +1 -0
  37. package/dist/engine/store.d.ts +46 -0
  38. package/dist/engine/store.d.ts.map +1 -0
  39. package/dist/engine/store.js +288 -0
  40. package/dist/engine/store.js.map +1 -0
  41. package/dist/engine/tar.d.ts +18 -0
  42. package/dist/engine/tar.d.ts.map +1 -0
  43. package/dist/engine/tar.js +198 -0
  44. package/dist/engine/tar.js.map +1 -0
  45. package/dist/engine/worker.d.ts +2 -0
  46. package/dist/engine/worker.d.ts.map +1 -0
  47. package/dist/engine/worker.js +64 -0
  48. package/dist/engine/worker.js.map +1 -0
  49. package/dist/errors.d.ts +15 -0
  50. package/dist/errors.d.ts.map +1 -0
  51. package/dist/errors.js +59 -0
  52. package/dist/errors.js.map +1 -0
  53. package/dist/index.d.ts +20 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +269 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/messages.d.ts +53 -0
  58. package/dist/messages.d.ts.map +1 -0
  59. package/dist/messages.js +118 -0
  60. package/dist/messages.js.map +1 -0
  61. package/dist/notebook/answer.d.ts +35 -0
  62. package/dist/notebook/answer.d.ts.map +1 -0
  63. package/dist/notebook/answer.js +88 -0
  64. package/dist/notebook/answer.js.map +1 -0
  65. package/dist/notebook/chunk.d.ts +23 -0
  66. package/dist/notebook/chunk.d.ts.map +1 -0
  67. package/dist/notebook/chunk.js +124 -0
  68. package/dist/notebook/chunk.js.map +1 -0
  69. package/dist/notebook/db.d.ts +107 -0
  70. package/dist/notebook/db.d.ts.map +1 -0
  71. package/dist/notebook/db.js +356 -0
  72. package/dist/notebook/db.js.map +1 -0
  73. package/dist/notebook/docx.d.ts +3 -0
  74. package/dist/notebook/docx.d.ts.map +1 -0
  75. package/dist/notebook/docx.js +16 -0
  76. package/dist/notebook/docx.js.map +1 -0
  77. package/dist/notebook/extract.d.ts +11 -0
  78. package/dist/notebook/extract.d.ts.map +1 -0
  79. package/dist/notebook/extract.js +99 -0
  80. package/dist/notebook/extract.js.map +1 -0
  81. package/dist/notebook/jobs.d.ts +31 -0
  82. package/dist/notebook/jobs.d.ts.map +1 -0
  83. package/dist/notebook/jobs.js +84 -0
  84. package/dist/notebook/jobs.js.map +1 -0
  85. package/dist/notebook/ooxml.d.ts +6 -0
  86. package/dist/notebook/ooxml.d.ts.map +1 -0
  87. package/dist/notebook/ooxml.js +131 -0
  88. package/dist/notebook/ooxml.js.map +1 -0
  89. package/dist/notebook/retrieve.d.ts +14 -0
  90. package/dist/notebook/retrieve.d.ts.map +1 -0
  91. package/dist/notebook/retrieve.js +37 -0
  92. package/dist/notebook/retrieve.js.map +1 -0
  93. package/dist/notebook/service.d.ts +92 -0
  94. package/dist/notebook/service.d.ts.map +1 -0
  95. package/dist/notebook/service.js +752 -0
  96. package/dist/notebook/service.js.map +1 -0
  97. package/dist/notebook/workspace.d.ts +17 -0
  98. package/dist/notebook/workspace.d.ts.map +1 -0
  99. package/dist/notebook/workspace.js +75 -0
  100. package/dist/notebook/workspace.js.map +1 -0
  101. package/dist/notebook/zip.d.ts +33 -0
  102. package/dist/notebook/zip.d.ts.map +1 -0
  103. package/dist/notebook/zip.js +154 -0
  104. package/dist/notebook/zip.js.map +1 -0
  105. package/dist/paths.d.ts +17 -0
  106. package/dist/paths.d.ts.map +1 -0
  107. package/dist/paths.js +28 -0
  108. package/dist/paths.js.map +1 -0
  109. package/dist/version.d.ts +2 -0
  110. package/dist/version.d.ts.map +1 -0
  111. package/dist/version.js +3 -0
  112. package/dist/version.js.map +1 -0
  113. package/icon.svg +16 -0
  114. package/package.json +62 -3
@@ -0,0 +1,45 @@
1
+ /** One file of a pinned model snapshot; `sha256` is checked before the file is ever used (D3). */
2
+ export interface ModelFile {
3
+ path: string;
4
+ bytes: number;
5
+ sha256: string;
6
+ }
7
+ export interface ModelSpec {
8
+ /** Value of `options.model`. */
9
+ key: string;
10
+ label: string;
11
+ /** Hugging Face repository holding the ONNX export. */
12
+ repo: string;
13
+ /** Upstream model the export was converted from (shown in docs and notices). */
14
+ baseModel: string;
15
+ license: string;
16
+ /** Pinned commit of `repo`. */
17
+ revision: string;
18
+ dtype: "q8";
19
+ /** Declared size; the downloaded `config.json` (`hidden_size`) must agree. */
20
+ dimensions: number;
21
+ /** Model window in tokens, special tokens included. */
22
+ maxTokens: number;
23
+ prefixes: {
24
+ query: string;
25
+ document: string;
26
+ };
27
+ files: ModelFile[];
28
+ }
29
+ /**
30
+ * Curated table (§6.3, Q2: no free-form repository ids). Revisions and digests were read from the
31
+ * real downloads and the Hugging Face LFS metadata on 2026-11-10. The `Xenova/*` repositories are
32
+ * the ONNX conversions of the upstream models that transformers.js itself loads for `dtype: "q8"`.
33
+ */
34
+ export declare const MODELS: Record<string, ModelSpec>;
35
+ export declare const DEFAULT_MODEL = "e5-small";
36
+ /** The model chosen by `options.model`; anything outside the table is `unknown_model`. */
37
+ export declare function resolveModel(option: unknown): ModelSpec;
38
+ /** `<repo>@<revision>#<dtype>` (D6): any change makes the core reject old collections. */
39
+ export declare const modelId: (spec: ModelSpec) => string;
40
+ export declare const totalBytes: (spec: ModelSpec) => number;
41
+ /** Directory name of a model snapshot inside the cache. */
42
+ export declare const modelDirName: (spec: ModelSpec) => string;
43
+ /** Consumers never add prefixes (D7): the provider maps the kind to the family's prefix. */
44
+ export declare function applyPrefix(spec: ModelSpec, kind: "query" | "document", text: string): string;
45
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/engine/models.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC;IACZ,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAKD;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAuG5C,CAAC;AAEF,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAMvD;AAED,0FAA0F;AAC1F,eAAO,MAAM,OAAO,SAAU,SAAS,WAAkD,CAAC;AAE1F,eAAO,MAAM,UAAU,SAAU,SAAS,WAAoD,CAAC;AAE/F,2DAA2D;AAC3D,eAAO,MAAM,YAAY,SAAU,SAAS,WAAgD,CAAC;AAE7F,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7F"}
@@ -0,0 +1,132 @@
1
+ import { SemanticPluginError } from "../errors.js";
2
+ const E5 = { query: "query: ", document: "passage: " };
3
+ const ONNX = "onnx/model_quantized.onnx";
4
+ /**
5
+ * Curated table (§6.3, Q2: no free-form repository ids). Revisions and digests were read from the
6
+ * real downloads and the Hugging Face LFS metadata on 2026-11-10. The `Xenova/*` repositories are
7
+ * the ONNX conversions of the upstream models that transformers.js itself loads for `dtype: "q8"`.
8
+ */
9
+ export const MODELS = {
10
+ "e5-small": {
11
+ key: "e5-small",
12
+ label: "multilingual-e5-small (q8)",
13
+ repo: "Xenova/multilingual-e5-small",
14
+ baseModel: "intfloat/multilingual-e5-small",
15
+ license: "MIT",
16
+ revision: "761b726dd34fb83930e26aab4e9ac3899aa1fa78",
17
+ dtype: "q8",
18
+ dimensions: 384,
19
+ maxTokens: 512,
20
+ prefixes: E5,
21
+ files: [
22
+ {
23
+ path: "config.json",
24
+ bytes: 658,
25
+ sha256: "cb99455288675345e1a4f411438d5d0adbba5fbd3a67ea4fb03c015433b996c1",
26
+ },
27
+ {
28
+ path: "tokenizer_config.json",
29
+ bytes: 443,
30
+ sha256: "a1d6bc8734a6f635dc158508bef000f8e2e5a759c7d92f984b2c86e5ff53425b",
31
+ },
32
+ {
33
+ path: "tokenizer.json",
34
+ bytes: 17_082_730,
35
+ sha256: "0b44a9d7b51c3c62626640cda0e2c2f70fdacdc25bbbd68038369d14ebdf4c39",
36
+ },
37
+ {
38
+ path: ONNX,
39
+ bytes: 118_308_185,
40
+ sha256: "f80102d3f2a1229f387d3c81909990d8945513e347b0eab049f7de3c6f98c193",
41
+ },
42
+ ],
43
+ },
44
+ "e5-base": {
45
+ key: "e5-base",
46
+ label: "multilingual-e5-base (q8)",
47
+ repo: "Xenova/multilingual-e5-base",
48
+ baseModel: "intfloat/multilingual-e5-base",
49
+ license: "MIT",
50
+ revision: "1ec9243030a27d1a115d5c340572074c125b58b2",
51
+ dtype: "q8",
52
+ dimensions: 768,
53
+ maxTokens: 512,
54
+ prefixes: E5,
55
+ files: [
56
+ {
57
+ path: "config.json",
58
+ bytes: 686,
59
+ sha256: "4c27930e59106027abab56f7531c1fa6b14bbf31e8229ec36d68affa4e869bcd",
60
+ },
61
+ {
62
+ path: "tokenizer_config.json",
63
+ bytes: 418,
64
+ sha256: "efb5c0d09722e5fe59a462cd2a9976ee216d55b037597d997cd3fe833216da15",
65
+ },
66
+ {
67
+ path: "tokenizer.json",
68
+ bytes: 17_082_660,
69
+ sha256: "62c24cdc13d4c9952d63718d6c9fa4c287974249e16b7ade6d5a85e7bbb75626",
70
+ },
71
+ {
72
+ path: ONNX,
73
+ bytes: 278_647_662,
74
+ sha256: "df7a9a29309e3ad491e1783adf8baee710262cc06079c7cbab63c630277fac94",
75
+ },
76
+ ],
77
+ },
78
+ minilm: {
79
+ key: "minilm",
80
+ label: "paraphrase-multilingual-MiniLM-L12-v2 (q8)",
81
+ repo: "Xenova/paraphrase-multilingual-MiniLM-L12-v2",
82
+ baseModel: "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
83
+ license: "Apache-2.0",
84
+ revision: "2c4055b12046f11709e9df2c122e59ffbdc2f900",
85
+ dtype: "q8",
86
+ dimensions: 384,
87
+ maxTokens: 128,
88
+ prefixes: { query: "", document: "" },
89
+ files: [
90
+ {
91
+ path: "config.json",
92
+ bytes: 673,
93
+ sha256: "05b570bff786faa5c4604152aa16f19f77ed6dfc31e47dd0f3dd987078693ac7",
94
+ },
95
+ {
96
+ path: "tokenizer_config.json",
97
+ bytes: 496,
98
+ sha256: "3f5961b9ac86288cccdb97f32fb848d6187c78e1603958c53f3ea1f296b7d8a2",
99
+ },
100
+ {
101
+ path: "tokenizer.json",
102
+ bytes: 17_082_913,
103
+ sha256: "b60b6b43406a48bf3638526314f3d232d97058bc93472ff2de930d43686fa441",
104
+ },
105
+ {
106
+ path: ONNX,
107
+ bytes: 118_308_126,
108
+ sha256: "66fc00f5f29afcaff34092e1bdd20008ca3918265a82fb9695a551e510cc4ebc",
109
+ },
110
+ ],
111
+ },
112
+ };
113
+ export const DEFAULT_MODEL = "e5-small";
114
+ /** The model chosen by `options.model`; anything outside the table is `unknown_model`. */
115
+ export function resolveModel(option) {
116
+ if (option === undefined || option === null)
117
+ return MODELS[DEFAULT_MODEL];
118
+ const spec = typeof option === "string" && Object.hasOwn(MODELS, option) ? MODELS[option] : undefined;
119
+ if (!spec)
120
+ throw new SemanticPluginError("unknown_model");
121
+ return spec;
122
+ }
123
+ /** `<repo>@<revision>#<dtype>` (D6): any change makes the core reject old collections. */
124
+ export const modelId = (spec) => `${spec.repo}@${spec.revision}#${spec.dtype}`;
125
+ export const totalBytes = (spec) => spec.files.reduce((sum, f) => sum + f.bytes, 0);
126
+ /** Directory name of a model snapshot inside the cache. */
127
+ export const modelDirName = (spec) => `${spec.key}-${spec.revision.slice(0, 12)}`;
128
+ /** Consumers never add prefixes (D7): the provider maps the kind to the family's prefix. */
129
+ export function applyPrefix(spec, kind, text) {
130
+ return `${spec.prefixes[kind]}${text}`;
131
+ }
132
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/engine/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type Fetcher, type ProgressTracker } from "./download.js";
2
+ export declare const ORT_VERSION = "1.30.0";
3
+ export interface RuntimePackage {
4
+ name: string;
5
+ version: string;
6
+ url: string;
7
+ /** Size of the tarball. */
8
+ bytes: number;
9
+ /** `dist.integrity` from the npm registry (sha512, base64). */
10
+ integrity: string;
11
+ /** Archive path -> path under the package directory, or null to skip. */
12
+ select(path: string, platform: string, arch: string): string | null;
13
+ }
14
+ /** The pinned packages (read from the npm registry on 2026-11-10). */
15
+ export declare const RUNTIME_PACKAGES: RuntimePackage[];
16
+ /** Platforms with a CPU binary in the pinned tarball. */
17
+ export declare const RUNTIME_PLATFORMS: string[];
18
+ export interface RuntimeTarget {
19
+ platform: string;
20
+ arch: string;
21
+ }
22
+ export declare const currentTarget: () => RuntimeTarget;
23
+ export declare const runtimeSupported: (target?: RuntimeTarget) => boolean;
24
+ /** Directory of the extracted runtime for one platform. */
25
+ export declare const runtimePath: (cacheRoot: string, target?: RuntimeTarget) => string;
26
+ export declare const runtimeBytes: (packages?: RuntimePackage[]) => number;
27
+ /** Cheap check: the marker matches the pinned packages and every extracted file has its size. */
28
+ export declare function isRuntimeReady(cacheRoot: string, target?: RuntimeTarget, packages?: RuntimePackage[]): Promise<boolean>;
29
+ export interface InstallOptions {
30
+ fetcher?: Fetcher;
31
+ signal: AbortSignal;
32
+ tracker: ProgressTracker;
33
+ target?: RuntimeTarget;
34
+ packages?: RuntimePackage[];
35
+ }
36
+ /**
37
+ * Downloads, verifies and extracts the runtime atomically (temp directory, then rename). A
38
+ * cancelled or failed install removes its partial tarball and temp directory; a tarball left by a
39
+ * crash is resumed with `Range` and verified as a whole.
40
+ */
41
+ export declare function installRuntime(cacheRoot: string, options: InstallOptions): Promise<{
42
+ installed: boolean;
43
+ }>;
44
+ /** Loads the cached runtime (CommonJS) from its own directory, never from the plugin's deps. */
45
+ export declare function loadRuntime<T = unknown>(dir: string): T;
46
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/engine/runtime.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhG,eAAO,MAAM,WAAW,WAAW,CAAC;AAGpC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACrE;AAMD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAiC5C,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,aAAa,QAAO,aAG/B,CAAC;AACH,eAAO,MAAM,gBAAgB,YAAY,aAAa,YACW,CAAC;AAElE,2DAA2D;AAC3D,eAAO,MAAM,WAAW,cAAe,MAAM,WAAU,aAAa,WACa,CAAC;AAElF,eAAO,MAAM,YAAY,cAAc,cAAc,EAAE,WACR,CAAC;AAWhD,iGAAiG;AACjG,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,aAA+B,EACvC,QAAQ,GAAE,cAAc,EAAqB,GAC5C,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAoEjC;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAGvD"}
@@ -0,0 +1,172 @@
1
+ // ONNX Runtime fetched on first use (owner O9): the pinned onnxruntime-node npm tarball is
2
+ // downloaded once, verified against the registry's sha512 integrity, and only the current
3
+ // platform's CPU binaries plus the JS loader are extracted into the cache. No npm, no install
4
+ // scripts, never the CUDA/TensorRT providers.
5
+ import { randomUUID } from "node:crypto";
6
+ import { mkdir, readFile, rename, rm, rmdir, stat, writeFile } from "node:fs/promises";
7
+ import { createRequire } from "node:module";
8
+ import { dirname, join } from "node:path";
9
+ import { SemanticPluginError } from "../errors.js";
10
+ import { failDownload, fetchVerified } from "./download.js";
11
+ import { extractTarGz } from "./tar.js";
12
+ export const ORT_VERSION = "1.30.0";
13
+ const NAPI = "napi-v6";
14
+ const strip = (path) => path.startsWith("package/") ? path.slice("package/".length) : null;
15
+ const GPU = /cuda|tensorrt/i;
16
+ /** The pinned packages (read from the npm registry on 2026-11-10). */
17
+ export const RUNTIME_PACKAGES = [
18
+ {
19
+ name: "onnxruntime-node",
20
+ version: ORT_VERSION,
21
+ url: `https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-${ORT_VERSION}.tgz`,
22
+ bytes: 113_507_888,
23
+ integrity: "sha512-twhs1C2C/BFkz1yc5OY0KIU2GUq6DURO7hD4bx5Q2Qy3nAMJwRXW8xU3NVczE29VA9lolLOYepoD8fjTGOfIqw==",
24
+ select(path, platform, arch) {
25
+ const rel = strip(path);
26
+ if (!rel)
27
+ return null;
28
+ if (rel === "package.json")
29
+ return rel;
30
+ if (/^dist\/[^/]+\.js$/.test(rel))
31
+ return rel;
32
+ const bin = `bin/${NAPI}/${platform}/${arch}/`;
33
+ if (rel.startsWith(bin) && !rel.slice(bin.length).includes("/") && !GPU.test(rel))
34
+ return rel;
35
+ return null;
36
+ },
37
+ },
38
+ {
39
+ name: "onnxruntime-common",
40
+ version: ORT_VERSION,
41
+ url: `https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-${ORT_VERSION}.tgz`,
42
+ bytes: 66_795,
43
+ integrity: "sha512-7fdVWjAID1dVhH/G8qK3APARunV4VkBFoCQAP7qp4Wkab0mrorvmc+sqiT+mKXOzDqdjN5j+/Z9nb4gzNPWcyA==",
44
+ select(path) {
45
+ const rel = strip(path);
46
+ if (!rel)
47
+ return null;
48
+ if (rel === "package.json")
49
+ return rel;
50
+ if (/^dist\/cjs\/.+\.js$/.test(rel) || rel === "dist/cjs/package.json")
51
+ return rel;
52
+ return null;
53
+ },
54
+ },
55
+ ];
56
+ /** Platforms with a CPU binary in the pinned tarball. */
57
+ export const RUNTIME_PLATFORMS = [
58
+ "linux/x64",
59
+ "linux/arm64",
60
+ "darwin/arm64",
61
+ "win32/x64",
62
+ "win32/arm64",
63
+ ];
64
+ export const currentTarget = () => ({
65
+ platform: process.platform,
66
+ arch: process.arch,
67
+ });
68
+ export const runtimeSupported = (target = currentTarget()) => RUNTIME_PLATFORMS.includes(`${target.platform}/${target.arch}`);
69
+ /** Directory of the extracted runtime for one platform. */
70
+ export const runtimePath = (cacheRoot, target = currentTarget()) => join(cacheRoot, `onnxruntime-${ORT_VERSION}-${target.platform}-${target.arch}`);
71
+ export const runtimeBytes = (packages = RUNTIME_PACKAGES) => packages.reduce((sum, p) => sum + p.bytes, 0);
72
+ const MARKER = ".verified.json";
73
+ /** Cheap check: the marker matches the pinned packages and every extracted file has its size. */
74
+ export async function isRuntimeReady(cacheRoot, target = currentTarget(), packages = RUNTIME_PACKAGES) {
75
+ const dir = runtimePath(cacheRoot, target);
76
+ let marker;
77
+ try {
78
+ marker = JSON.parse(await readFile(join(dir, MARKER), "utf8"));
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ if (marker.version !== ORT_VERSION ||
84
+ marker.platform !== target.platform ||
85
+ marker.arch !== target.arch)
86
+ return false;
87
+ if (JSON.stringify(marker.integrity) !== JSON.stringify(packages.map((p) => p.integrity)))
88
+ return false;
89
+ const files = Object.entries(marker.files ?? {});
90
+ if (!files.some(([path]) => path.endsWith("onnxruntime_binding.node")))
91
+ return false;
92
+ for (const [path, info] of files) {
93
+ const s = await stat(join(dir, path)).catch(() => undefined);
94
+ if (!s?.isFile() || s.size !== info.bytes)
95
+ return false;
96
+ }
97
+ return true;
98
+ }
99
+ /**
100
+ * Downloads, verifies and extracts the runtime atomically (temp directory, then rename). A
101
+ * cancelled or failed install removes its partial tarball and temp directory; a tarball left by a
102
+ * crash is resumed with `Range` and verified as a whole.
103
+ */
104
+ export async function installRuntime(cacheRoot, options) {
105
+ const target = options.target ?? currentTarget();
106
+ const packages = options.packages ?? RUNTIME_PACKAGES;
107
+ const { signal, tracker } = options;
108
+ const fetcher = options.fetcher ?? globalThis.fetch;
109
+ if (!runtimeSupported(target))
110
+ throw new SemanticPluginError("engine_unavailable");
111
+ if (await isRuntimeReady(cacheRoot, target, packages))
112
+ return { installed: false };
113
+ const partialDir = join(cacheRoot, ".partial", "runtime");
114
+ const temp = join(cacheRoot, ".partial", `runtime-${randomUUID()}`);
115
+ await mkdir(partialDir, { recursive: true, mode: 0o700 });
116
+ const files = {};
117
+ try {
118
+ for (const pkg of packages) {
119
+ signal.throwIfAborted();
120
+ const archive = join(partialDir, `${pkg.name}-${pkg.version}.tgz`);
121
+ tracker.begin(`${pkg.name}-${pkg.version}.tgz`, pkg.bytes);
122
+ const [algorithm, value] = pkg.integrity.split("-", 2);
123
+ if (algorithm !== "sha512" || !value)
124
+ throw new SemanticPluginError("model_corrupt");
125
+ try {
126
+ await fetchVerified(fetcher, pkg.url, archive, pkg.bytes, { algorithm: "sha512", value, encoding: "base64" }, signal, (n) => tracker.update(n));
127
+ }
128
+ catch (error) {
129
+ await failDownload(archive, error, signal);
130
+ }
131
+ const base = join("node_modules", pkg.name);
132
+ const extracted = await extractTarGz(archive, join(temp, base), (path) => pkg.select(path, target.platform, target.arch), { signal });
133
+ for (const [path, info] of Object.entries(extracted))
134
+ files[`${base}/${path}`] = info;
135
+ await rm(archive, { force: true });
136
+ tracker.end();
137
+ }
138
+ if (!Object.keys(files).some((path) => path.endsWith("onnxruntime_binding.node")))
139
+ throw new SemanticPluginError("engine_unavailable");
140
+ const marker = {
141
+ version: ORT_VERSION,
142
+ platform: target.platform,
143
+ arch: target.arch,
144
+ integrity: packages.map((p) => p.integrity),
145
+ files,
146
+ };
147
+ await writeFile(join(temp, MARKER), JSON.stringify(marker), { mode: 0o600 });
148
+ const final = runtimePath(cacheRoot, target);
149
+ await rm(final, { recursive: true, force: true });
150
+ await mkdir(dirname(final), { recursive: true, mode: 0o700 });
151
+ await rename(temp, final);
152
+ return { installed: true };
153
+ }
154
+ catch (error) {
155
+ await rm(temp, { recursive: true, force: true });
156
+ if (signal.aborted) {
157
+ await rm(partialDir, { recursive: true, force: true });
158
+ throw new SemanticPluginError("cancelled");
159
+ }
160
+ throw error instanceof SemanticPluginError ? error : new SemanticPluginError("download_failed");
161
+ }
162
+ finally {
163
+ await rm(partialDir, { recursive: true, force: true }).catch(() => { });
164
+ await rmdir(join(cacheRoot, ".partial")).catch(() => { });
165
+ }
166
+ }
167
+ /** Loads the cached runtime (CommonJS) from its own directory, never from the plugin's deps. */
168
+ export function loadRuntime(dir) {
169
+ const require = createRequire(join(dir, "loader.cjs"));
170
+ return require("onnxruntime-node");
171
+ }
172
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/engine/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { SemanticActivationResult, SemanticApi } from "@alisio/sdk";
2
+ import { type SemanticPluginErrorCode } from "../errors.js";
3
+ import { type Locale } from "../messages.js";
4
+ import { type DownloadProgress, type Fetcher } from "./download.js";
5
+ import type { E5Embedder } from "./embedder.js";
6
+ import { type ModelSpec } from "./models.js";
7
+ import { type RuntimePackage, type RuntimeTarget } from "./runtime.js";
8
+ export declare const EMBEDDING_ID = "semantic.e5";
9
+ export declare const STORE_ID = "semantic.lance";
10
+ export type ActivationOutcome = SemanticActivationResult["status"] | "no_semantic_api" | "activate_unsupported";
11
+ export interface SetupResult {
12
+ downloaded: boolean;
13
+ activation: ActivationOutcome;
14
+ active?: {
15
+ embedding?: string;
16
+ store?: string;
17
+ };
18
+ message?: string;
19
+ }
20
+ export interface SetupJob {
21
+ id: string;
22
+ kind: "setup";
23
+ state: "running" | "done" | "failed" | "cancelled";
24
+ progress: number;
25
+ detail?: DownloadProgress;
26
+ result?: SetupResult;
27
+ error?: SemanticPluginErrorCode;
28
+ }
29
+ export interface SetupPlan {
30
+ key: string;
31
+ label: string;
32
+ /** Bytes still to download this first time (runtime + model). 0 once prepared. */
33
+ bytes: number;
34
+ prepared: boolean;
35
+ destination: string;
36
+ runtime: {
37
+ bytes: number;
38
+ ready: boolean;
39
+ supported: boolean;
40
+ };
41
+ model: {
42
+ bytes: number;
43
+ ready: boolean;
44
+ };
45
+ }
46
+ export interface SetupOptions {
47
+ spec: ModelSpec;
48
+ cacheRoot: string;
49
+ embedder: E5Embedder;
50
+ semantic: SemanticApi | undefined;
51
+ fetcher?: Fetcher;
52
+ /** Test seams for the runtime download (defaults: pinned packages, this process's platform). */
53
+ runtimePackages?: RuntimePackage[];
54
+ target?: RuntimeTarget;
55
+ }
56
+ /**
57
+ * The one setup flow shared by `/semantic:setup` and the app's "Prepare" step (§6.1): show the
58
+ * model, its size and destination; download and verify it as a job with progress; then ask the host
59
+ * to activate this plugin's providers. Never runs on install or on a first query.
60
+ */
61
+ export declare class SetupManager {
62
+ private readonly options;
63
+ private readonly jobs;
64
+ private current;
65
+ constructor(options: SetupOptions);
66
+ plan(): Promise<SetupPlan>;
67
+ running(): boolean;
68
+ get(id: string): SetupJob | undefined;
69
+ cancel(id: string): boolean;
70
+ currentId(): string | undefined;
71
+ cancelRunning(): boolean;
72
+ /** Starts the setup job, or returns the one already running. */
73
+ start(): SetupJob;
74
+ run(): Promise<SetupJob>;
75
+ /** Full text of `/semantic:setup`: notice (first time only), progress milestones, outcome. */
76
+ commandText(locale: Locale): Promise<string>;
77
+ /** Cancels a running download (plugin dispose). */
78
+ dispose(): void;
79
+ private execute;
80
+ private activate;
81
+ }
82
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/engine/setup.ts"],"names":[],"mappings":"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"}