@plasius/gpu-model-runtime 0.3.0 → 0.3.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.
- package/README.md +40 -6
- package/dist/index.cjs +20 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -61
- package/dist/index.d.ts +12 -61
- package/dist/index.js +20 -15
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
+
import { GpuModelDiagnosticMode, GpuModelDocument, ModelSource as ModelSource$1, ModelProvenance as ModelProvenance$1 } from '@plasius/gpu-model-core';
|
|
2
|
+
export { GpuModelConversionDiagnostic, GpuModelDiagnosticMode, GpuModelDocument } from '@plasius/gpu-model-core';
|
|
1
3
|
import { ModelAssetRef, ModelLodLevel } from '@plasius/asset-contracts';
|
|
2
4
|
|
|
3
5
|
/** Default ceiling per entrypoint or related resource: 64 MiB. */
|
|
4
6
|
declare const DEFAULT_MODEL_MAX_BYTES: number;
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
sourceSystem?: string;
|
|
9
|
-
acquiredAt?: string;
|
|
10
|
-
licenseHint?: string;
|
|
11
|
-
}>;
|
|
7
|
+
/** Canonical source and policy contracts stay owned by the published core. */
|
|
8
|
+
type ModelSourceKind = ModelSource$1["kind"];
|
|
9
|
+
type ModelProvenance = ModelProvenance$1;
|
|
12
10
|
type ModelResourceInput = Readonly<{
|
|
13
11
|
bytes: ArrayBuffer | Blob | Uint8Array;
|
|
14
12
|
contentType?: string;
|
|
@@ -19,56 +17,9 @@ type ModelPackage = Readonly<{
|
|
|
19
17
|
baseUrl?: string;
|
|
20
18
|
resources?: Readonly<Record<string, ModelResourceInput>>;
|
|
21
19
|
}>;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
path: string;
|
|
25
|
-
mimeTypeHint?: string;
|
|
26
|
-
fileNameHint?: string;
|
|
27
|
-
package?: ModelPackage;
|
|
28
|
-
provenance?: ModelProvenance;
|
|
29
|
-
}> | Readonly<{
|
|
30
|
-
kind: "url";
|
|
31
|
-
url: string;
|
|
32
|
-
headers?: Readonly<Record<string, string>>;
|
|
33
|
-
mimeTypeHint?: string;
|
|
34
|
-
package?: ModelPackage;
|
|
35
|
-
provenance?: ModelProvenance;
|
|
36
|
-
}> | Readonly<{
|
|
37
|
-
kind: "blob-storage-url";
|
|
38
|
-
url: string;
|
|
39
|
-
credentialMode?: "anonymous" | "signed" | "runtime-resolved";
|
|
40
|
-
mimeTypeHint?: string;
|
|
41
|
-
package?: ModelPackage;
|
|
42
|
-
provenance?: ModelProvenance;
|
|
43
|
-
}> | Readonly<{
|
|
44
|
-
kind: "blob";
|
|
45
|
-
blob: Blob;
|
|
46
|
-
fileNameHint?: string;
|
|
47
|
-
mimeTypeHint?: string;
|
|
48
|
-
package?: ModelPackage;
|
|
49
|
-
provenance?: ModelProvenance;
|
|
50
|
-
}> | Readonly<{
|
|
51
|
-
kind: "array-buffer";
|
|
52
|
-
bytes: ArrayBuffer;
|
|
53
|
-
fileNameHint?: string;
|
|
54
|
-
mimeTypeHint?: string;
|
|
55
|
-
package?: ModelPackage;
|
|
56
|
-
provenance?: ModelProvenance;
|
|
57
|
-
}> | Readonly<{
|
|
58
|
-
kind: "uint8-array";
|
|
59
|
-
bytes: Uint8Array;
|
|
60
|
-
fileNameHint?: string;
|
|
61
|
-
mimeTypeHint?: string;
|
|
62
|
-
package?: ModelPackage;
|
|
63
|
-
provenance?: ModelProvenance;
|
|
64
|
-
}> | Readonly<{
|
|
65
|
-
kind: "stream";
|
|
66
|
-
stream: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>;
|
|
67
|
-
fileNameHint?: string;
|
|
68
|
-
mimeTypeHint?: string;
|
|
69
|
-
byteLengthHint?: number;
|
|
20
|
+
/** Runtime acquisition extends canonical IO with package-resource resolution. */
|
|
21
|
+
type ModelSource = ModelSource$1 & Readonly<{
|
|
70
22
|
package?: ModelPackage;
|
|
71
|
-
provenance?: ModelProvenance;
|
|
72
23
|
}>;
|
|
73
24
|
type ResourceReference = Readonly<{
|
|
74
25
|
path: string;
|
|
@@ -134,16 +85,16 @@ type SniffInput = Readonly<{
|
|
|
134
85
|
}>;
|
|
135
86
|
type AdapterLoadContext = Readonly<{
|
|
136
87
|
signal: AbortSignal;
|
|
137
|
-
mode:
|
|
88
|
+
mode: GpuModelDiagnosticMode;
|
|
138
89
|
execution: "main" | "worker";
|
|
139
90
|
adapterOptions: unknown;
|
|
140
91
|
}>;
|
|
141
|
-
type AdapterLoadResult<TCanonicalModel, TRendererReady = unknown> = Readonly<{
|
|
92
|
+
type AdapterLoadResult<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> = Readonly<{
|
|
142
93
|
canonicalModel: TCanonicalModel;
|
|
143
94
|
rendererReady?: TRendererReady;
|
|
144
95
|
diagnostics?: readonly unknown[];
|
|
145
96
|
}>;
|
|
146
|
-
interface ModelAdapter<TCanonicalModel, TRendererReady = unknown> {
|
|
97
|
+
interface ModelAdapter<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> {
|
|
147
98
|
readonly formatId: string;
|
|
148
99
|
readonly supportsWorker?: boolean;
|
|
149
100
|
sniff(input: SniffInput): number | boolean;
|
|
@@ -175,7 +126,7 @@ type ModelCache = Readonly<{
|
|
|
175
126
|
}>;
|
|
176
127
|
type LoadModelOptions = Readonly<{
|
|
177
128
|
signal?: AbortSignal;
|
|
178
|
-
mode?:
|
|
129
|
+
mode?: GpuModelDiagnosticMode;
|
|
179
130
|
adapterOptions?: unknown;
|
|
180
131
|
formatId?: string;
|
|
181
132
|
fetchPolicy?: FetchPolicy;
|
|
@@ -185,7 +136,7 @@ type LoadModelOptions = Readonly<{
|
|
|
185
136
|
mode?: "auto" | "never" | "always";
|
|
186
137
|
}>;
|
|
187
138
|
}>;
|
|
188
|
-
type ModelLoadResult<TCanonicalModel, TRendererReady = unknown> = Readonly<{
|
|
139
|
+
type ModelLoadResult<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> = Readonly<{
|
|
189
140
|
canonicalModel: TCanonicalModel;
|
|
190
141
|
rendererReady?: TRendererReady;
|
|
191
142
|
diagnostics?: readonly unknown[];
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
+
import { GpuModelDiagnosticMode, GpuModelDocument, ModelSource as ModelSource$1, ModelProvenance as ModelProvenance$1 } from '@plasius/gpu-model-core';
|
|
2
|
+
export { GpuModelConversionDiagnostic, GpuModelDiagnosticMode, GpuModelDocument } from '@plasius/gpu-model-core';
|
|
1
3
|
import { ModelAssetRef, ModelLodLevel } from '@plasius/asset-contracts';
|
|
2
4
|
|
|
3
5
|
/** Default ceiling per entrypoint or related resource: 64 MiB. */
|
|
4
6
|
declare const DEFAULT_MODEL_MAX_BYTES: number;
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
sourceSystem?: string;
|
|
9
|
-
acquiredAt?: string;
|
|
10
|
-
licenseHint?: string;
|
|
11
|
-
}>;
|
|
7
|
+
/** Canonical source and policy contracts stay owned by the published core. */
|
|
8
|
+
type ModelSourceKind = ModelSource$1["kind"];
|
|
9
|
+
type ModelProvenance = ModelProvenance$1;
|
|
12
10
|
type ModelResourceInput = Readonly<{
|
|
13
11
|
bytes: ArrayBuffer | Blob | Uint8Array;
|
|
14
12
|
contentType?: string;
|
|
@@ -19,56 +17,9 @@ type ModelPackage = Readonly<{
|
|
|
19
17
|
baseUrl?: string;
|
|
20
18
|
resources?: Readonly<Record<string, ModelResourceInput>>;
|
|
21
19
|
}>;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
path: string;
|
|
25
|
-
mimeTypeHint?: string;
|
|
26
|
-
fileNameHint?: string;
|
|
27
|
-
package?: ModelPackage;
|
|
28
|
-
provenance?: ModelProvenance;
|
|
29
|
-
}> | Readonly<{
|
|
30
|
-
kind: "url";
|
|
31
|
-
url: string;
|
|
32
|
-
headers?: Readonly<Record<string, string>>;
|
|
33
|
-
mimeTypeHint?: string;
|
|
34
|
-
package?: ModelPackage;
|
|
35
|
-
provenance?: ModelProvenance;
|
|
36
|
-
}> | Readonly<{
|
|
37
|
-
kind: "blob-storage-url";
|
|
38
|
-
url: string;
|
|
39
|
-
credentialMode?: "anonymous" | "signed" | "runtime-resolved";
|
|
40
|
-
mimeTypeHint?: string;
|
|
41
|
-
package?: ModelPackage;
|
|
42
|
-
provenance?: ModelProvenance;
|
|
43
|
-
}> | Readonly<{
|
|
44
|
-
kind: "blob";
|
|
45
|
-
blob: Blob;
|
|
46
|
-
fileNameHint?: string;
|
|
47
|
-
mimeTypeHint?: string;
|
|
48
|
-
package?: ModelPackage;
|
|
49
|
-
provenance?: ModelProvenance;
|
|
50
|
-
}> | Readonly<{
|
|
51
|
-
kind: "array-buffer";
|
|
52
|
-
bytes: ArrayBuffer;
|
|
53
|
-
fileNameHint?: string;
|
|
54
|
-
mimeTypeHint?: string;
|
|
55
|
-
package?: ModelPackage;
|
|
56
|
-
provenance?: ModelProvenance;
|
|
57
|
-
}> | Readonly<{
|
|
58
|
-
kind: "uint8-array";
|
|
59
|
-
bytes: Uint8Array;
|
|
60
|
-
fileNameHint?: string;
|
|
61
|
-
mimeTypeHint?: string;
|
|
62
|
-
package?: ModelPackage;
|
|
63
|
-
provenance?: ModelProvenance;
|
|
64
|
-
}> | Readonly<{
|
|
65
|
-
kind: "stream";
|
|
66
|
-
stream: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>;
|
|
67
|
-
fileNameHint?: string;
|
|
68
|
-
mimeTypeHint?: string;
|
|
69
|
-
byteLengthHint?: number;
|
|
20
|
+
/** Runtime acquisition extends canonical IO with package-resource resolution. */
|
|
21
|
+
type ModelSource = ModelSource$1 & Readonly<{
|
|
70
22
|
package?: ModelPackage;
|
|
71
|
-
provenance?: ModelProvenance;
|
|
72
23
|
}>;
|
|
73
24
|
type ResourceReference = Readonly<{
|
|
74
25
|
path: string;
|
|
@@ -134,16 +85,16 @@ type SniffInput = Readonly<{
|
|
|
134
85
|
}>;
|
|
135
86
|
type AdapterLoadContext = Readonly<{
|
|
136
87
|
signal: AbortSignal;
|
|
137
|
-
mode:
|
|
88
|
+
mode: GpuModelDiagnosticMode;
|
|
138
89
|
execution: "main" | "worker";
|
|
139
90
|
adapterOptions: unknown;
|
|
140
91
|
}>;
|
|
141
|
-
type AdapterLoadResult<TCanonicalModel, TRendererReady = unknown> = Readonly<{
|
|
92
|
+
type AdapterLoadResult<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> = Readonly<{
|
|
142
93
|
canonicalModel: TCanonicalModel;
|
|
143
94
|
rendererReady?: TRendererReady;
|
|
144
95
|
diagnostics?: readonly unknown[];
|
|
145
96
|
}>;
|
|
146
|
-
interface ModelAdapter<TCanonicalModel, TRendererReady = unknown> {
|
|
97
|
+
interface ModelAdapter<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> {
|
|
147
98
|
readonly formatId: string;
|
|
148
99
|
readonly supportsWorker?: boolean;
|
|
149
100
|
sniff(input: SniffInput): number | boolean;
|
|
@@ -175,7 +126,7 @@ type ModelCache = Readonly<{
|
|
|
175
126
|
}>;
|
|
176
127
|
type LoadModelOptions = Readonly<{
|
|
177
128
|
signal?: AbortSignal;
|
|
178
|
-
mode?:
|
|
129
|
+
mode?: GpuModelDiagnosticMode;
|
|
179
130
|
adapterOptions?: unknown;
|
|
180
131
|
formatId?: string;
|
|
181
132
|
fetchPolicy?: FetchPolicy;
|
|
@@ -185,7 +136,7 @@ type LoadModelOptions = Readonly<{
|
|
|
185
136
|
mode?: "auto" | "never" | "always";
|
|
186
137
|
}>;
|
|
187
138
|
}>;
|
|
188
|
-
type ModelLoadResult<TCanonicalModel, TRendererReady = unknown> = Readonly<{
|
|
139
|
+
type ModelLoadResult<TCanonicalModel = GpuModelDocument, TRendererReady = unknown> = Readonly<{
|
|
189
140
|
canonicalModel: TCanonicalModel;
|
|
190
141
|
rendererReady?: TRendererReady;
|
|
191
142
|
diagnostics?: readonly unknown[];
|
package/dist/index.js
CHANGED
|
@@ -431,7 +431,23 @@ var ModelRuntime = class {
|
|
|
431
431
|
fileName: input.fileName,
|
|
432
432
|
sourceKind: source.kind
|
|
433
433
|
}, options.formatId);
|
|
434
|
-
const
|
|
434
|
+
const workerMode = options.worker?.mode ?? "auto";
|
|
435
|
+
const canUseWorker = workerMode !== "never" && Boolean(this.workerDispatcher) && Boolean(adapter.supportsWorker);
|
|
436
|
+
if (workerMode === "always" && !canUseWorker) {
|
|
437
|
+
throw new Error(`Adapter ${adapter.formatId} does not support the requested worker execution`);
|
|
438
|
+
}
|
|
439
|
+
const context = {
|
|
440
|
+
signal: options.signal ?? new AbortController().signal,
|
|
441
|
+
mode: options.mode ?? "strict",
|
|
442
|
+
execution: canUseWorker ? "worker" : "main",
|
|
443
|
+
adapterOptions: options.adapterOptions ?? null
|
|
444
|
+
};
|
|
445
|
+
const cacheKey = createModelCacheKey(input.contentHash, adapter.formatId, {
|
|
446
|
+
adapterOptions: context.adapterOptions,
|
|
447
|
+
maxBytes: byteLimit(options.fetchPolicy?.maxBytes),
|
|
448
|
+
mode: context.mode,
|
|
449
|
+
execution: context.execution
|
|
450
|
+
});
|
|
435
451
|
const useCache = options.useCache ?? true;
|
|
436
452
|
if (useCache) {
|
|
437
453
|
const cached = await this.cache.get(cacheKey);
|
|
@@ -439,13 +455,7 @@ var ModelRuntime = class {
|
|
|
439
455
|
return { ...cached, fromCache: true };
|
|
440
456
|
}
|
|
441
457
|
}
|
|
442
|
-
const
|
|
443
|
-
signal: options.signal ?? new AbortController().signal,
|
|
444
|
-
mode: options.mode ?? "strict",
|
|
445
|
-
execution: "main",
|
|
446
|
-
adapterOptions: options.adapterOptions ?? null
|
|
447
|
-
};
|
|
448
|
-
const adapterResult = await this.loadWithExecution(adapter, input, context, options);
|
|
458
|
+
const adapterResult = await this.loadWithExecution(adapter, input, context);
|
|
449
459
|
const result = {
|
|
450
460
|
...adapterResult,
|
|
451
461
|
contentHash: input.contentHash,
|
|
@@ -460,13 +470,8 @@ var ModelRuntime = class {
|
|
|
460
470
|
}
|
|
461
471
|
return result;
|
|
462
472
|
}
|
|
463
|
-
async loadWithExecution(adapter, input, context
|
|
464
|
-
|
|
465
|
-
const canUseWorker = workerMode !== "never" && Boolean(this.workerDispatcher) && Boolean(adapter.supportsWorker);
|
|
466
|
-
if (workerMode === "always" && !canUseWorker) {
|
|
467
|
-
throw new Error(`Adapter ${adapter.formatId} does not support the requested worker execution`);
|
|
468
|
-
}
|
|
469
|
-
if (canUseWorker && this.workerDispatcher) {
|
|
473
|
+
async loadWithExecution(adapter, input, context) {
|
|
474
|
+
if (context.execution === "worker" && this.workerDispatcher) {
|
|
470
475
|
const workerRequest = {
|
|
471
476
|
formatId: adapter.formatId,
|
|
472
477
|
input,
|