@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/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
- type ModelSourceKind = "file-path" | "url" | "blob-storage-url" | "blob" | "array-buffer" | "uint8-array" | "stream";
6
- type ModelProvenance = Readonly<{
7
- sourceId?: string;
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
- type ModelSource = Readonly<{
23
- kind: "file-path";
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: "strict" | "tolerant" | "forensic";
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?: "strict" | "tolerant" | "forensic";
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
- type ModelSourceKind = "file-path" | "url" | "blob-storage-url" | "blob" | "array-buffer" | "uint8-array" | "stream";
6
- type ModelProvenance = Readonly<{
7
- sourceId?: string;
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
- type ModelSource = Readonly<{
23
- kind: "file-path";
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: "strict" | "tolerant" | "forensic";
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?: "strict" | "tolerant" | "forensic";
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 cacheKey = createModelCacheKey(input.contentHash, adapter.formatId, { adapterOptions: options.adapterOptions ?? null, maxBytes: byteLimit(options.fetchPolicy?.maxBytes) });
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 context = {
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, options) {
464
- const workerMode = options.worker?.mode ?? "auto";
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,