@helix3/helix-cli 0.1.13-helix3.55 → 0.1.13-helix3.57
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 +25 -2
- package/dist/assets.d.ts +127 -11
- package/dist/assets.js +188 -29
- package/dist/assets.js.map +1 -1
- package/dist/character/importCharacter.js +5 -2
- package/dist/character/importCharacter.js.map +1 -1
- package/dist/character/meshyToHelixMap.d.ts +3 -0
- package/dist/character/meshyToHelixMap.js +76 -1
- package/dist/character/meshyToHelixMap.js.map +1 -1
- package/dist/character/stages/retargetClip.js +27 -11
- package/dist/character/stages/retargetClip.js.map +1 -1
- package/dist/index.js +234 -2
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/lib.js +10 -1
- package/dist/lib.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,8 +47,10 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
|
|
|
47
47
|
| `helix item publish <mesh.glb> --title <t> [--kind <k>] [--slot <tag>] [--gender <g>] [--price-lix <n> \| --personal] [--thumbnail <f>] [--dry-run]` | Publish a universal item (wearable / avatar / home item) from one `.glb`; the server verifies the mesh inline. |
|
|
48
48
|
| `helix preview-video <slug> <youtube-url>` | Set or clear a published world's YouTube preview. |
|
|
49
49
|
| `helix thumbnail set <slug> <file>` | Upload a thumbnail or preview image through the CLI-owned media path. |
|
|
50
|
-
| `helix assets
|
|
51
|
-
| `helix assets
|
|
50
|
+
| `helix assets search\|get\|versions\|track\|install\|update` | Search the typed Vault with explainable ranking; inspect/manage annotations and immutable versions; install by durable ID with verified SHA-256 receipts. |
|
|
51
|
+
| `helix assets start\|status\|generate\|resume` | Start or poll generation without duplicates. Props/characters use the main Dreamer path; standalone assets use the shared broker and report the auto-published `vaultAssetId`. |
|
|
52
|
+
| `helix assets generate-image\|generate-material\|generate-audio\|generate-environment` | Run the supported standalone generation adapters. Material is a validated PBR bundle (1K default, explicit 2K); splats declare object/fragment/environment scope. Animation remains an explicit unavailable boundary. |
|
|
53
|
+
| `helix assets materials\|material` | Discover the small built-in material palette and resolve its immutable map URLs before searching or generating. |
|
|
52
54
|
| `helix assets credits\|check-loaders` | Render asset credits from provenance and reject models requiring unsupported loaders. |
|
|
53
55
|
| `helix world audit\|source-audit\|perf-gate\|prove-live` | Run the blocking world QA, performance, and deployed-build identity gates. |
|
|
54
56
|
| `helix doctor [--project <dir>]` | Print the environment + whether the @helix toolchain (CLI/MCP/SDK/manifest) is current. |
|
|
@@ -69,6 +71,27 @@ The programmatic surface (`publishWorld`, `checkBundle`, `whoAmI`, …) is expor
|
|
|
69
71
|
modules. Agent integrations should instruct or delegate to the `helix` commands above rather than
|
|
70
72
|
reimplementing operational behavior in a transport package.
|
|
71
73
|
|
|
74
|
+
## Vault lifecycle
|
|
75
|
+
|
|
76
|
+
Use the durable Vault UUID as the handle. Search results include independent lexical, hard-filter,
|
|
77
|
+
measured-performance, reuse, and availability explanations; they do not collapse those signals into
|
|
78
|
+
a made-up score. `helix assets install` resolves the current immutable version, follows the
|
|
79
|
+
`/download` indirection, verifies its server checksum and byte count, installs related material maps,
|
|
80
|
+
and writes `public/helix.assets.json`. A checksum mismatch fails before a provenance receipt is
|
|
81
|
+
written.
|
|
82
|
+
|
|
83
|
+
Generation is source-agnostic at the backend:
|
|
84
|
+
|
|
85
|
+
- `prop` and `character` start through the main Dreamer route because they use its verified
|
|
86
|
+
universal-item flow.
|
|
87
|
+
- `image`, `material`, `audio`, and `gaussian_splat` start through the shared asset route.
|
|
88
|
+
Gaussian splats must declare `object`, `fragment`, or `environment` scope.
|
|
89
|
+
- `animation` fails locally with `CAPABILITY_UNAVAILABLE`; it never starts a chargeable job.
|
|
90
|
+
|
|
91
|
+
Run `helix assets status <job-id> --pipeline dreamer|asset` to poll an existing job. A successful
|
|
92
|
+
default-on generation reports `vaultAssetId` and `vaultAutoPublish: "published"`; an explicit
|
|
93
|
+
creator opt-out reports `"disabled"`.
|
|
94
|
+
|
|
72
95
|
## Item publish flow
|
|
73
96
|
|
|
74
97
|
`helix item publish` is a different shape from a world publish: one mesh, one round trip, an
|
package/dist/assets.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { CliCredentials } from './config';
|
|
2
|
+
export declare const VAULT_ASSET_KINDS: readonly ["prop", "character", "animation", "audio", "texture", "material", "environment", "terrain", "vfx", "decal", "sky", "gaussian_splat", "scene", "unreal_package"];
|
|
3
|
+
export type VaultAssetKind = (typeof VAULT_ASSET_KINDS)[number];
|
|
2
4
|
export type DreamerAssetKind = 'prop' | 'character';
|
|
3
|
-
export type StandaloneAssetKind = 'image' | 'audio' | 'gaussian_splat' | 'animation';
|
|
5
|
+
export type StandaloneAssetKind = 'image' | 'prop' | 'material' | 'audio' | 'gaussian_splat' | 'animation';
|
|
4
6
|
export type DreamerApprovalGate = 'concept' | 'preview';
|
|
7
|
+
export type DreamerPipeline = 'dreamer' | 'asset';
|
|
5
8
|
export type DreamerAssetJob = {
|
|
6
9
|
id: string;
|
|
7
10
|
status: string;
|
|
@@ -13,6 +16,13 @@ export type DreamerAssetJob = {
|
|
|
13
16
|
sparkSpentTotal?: number;
|
|
14
17
|
error?: string;
|
|
15
18
|
publishedItemId?: string | null;
|
|
19
|
+
vaultAssetId?: string | null;
|
|
20
|
+
vaultAutoPublish?: 'published' | 'disabled';
|
|
21
|
+
verification?: {
|
|
22
|
+
vaultAssetId?: string | null;
|
|
23
|
+
vaultAutoPublish?: 'published' | 'disabled';
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
} | null;
|
|
16
26
|
artifacts?: {
|
|
17
27
|
meshUrl?: string;
|
|
18
28
|
thumbnailUrl?: string;
|
|
@@ -50,27 +60,69 @@ export type VaultAssetSummary = {
|
|
|
50
60
|
assetId: string;
|
|
51
61
|
slug: string;
|
|
52
62
|
title: string;
|
|
53
|
-
kind:
|
|
63
|
+
kind: VaultAssetKind;
|
|
54
64
|
origin: string;
|
|
55
65
|
visibility: string;
|
|
56
66
|
artifactUrl?: string;
|
|
57
67
|
mimeType?: string;
|
|
58
68
|
artifactMimeType?: string;
|
|
69
|
+
artifactSizeBytes?: number;
|
|
59
70
|
currentVersion?: number;
|
|
71
|
+
selectionExplanation?: VaultSelectionExplanation | null;
|
|
60
72
|
[key: string]: unknown;
|
|
61
73
|
};
|
|
74
|
+
export type ResolvedVaultArtifact = {
|
|
75
|
+
assetId: string;
|
|
76
|
+
version: number;
|
|
77
|
+
url: string | null;
|
|
78
|
+
urlKind: 'cdn' | 'unavailable';
|
|
79
|
+
mimeType: string;
|
|
80
|
+
sizeBytes: number;
|
|
81
|
+
checksumSha256: string | null;
|
|
82
|
+
relatedArtifacts: VaultRelatedArtifact[];
|
|
83
|
+
};
|
|
84
|
+
export type VaultRelatedArtifact = {
|
|
85
|
+
role: string;
|
|
86
|
+
url: string | null;
|
|
87
|
+
mimeType: string;
|
|
88
|
+
sizeBytes: number;
|
|
89
|
+
checksumSha256: string;
|
|
90
|
+
};
|
|
62
91
|
export type VaultAssetDetail = VaultAssetSummary & {
|
|
63
|
-
artifact
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
92
|
+
artifact: ResolvedVaultArtifact;
|
|
93
|
+
usedInWorlds?: Array<Record<string, unknown>>;
|
|
94
|
+
};
|
|
95
|
+
export type VaultSelectionExplanation = {
|
|
96
|
+
rankMode: 'relevance' | 'performance' | 'reuse';
|
|
97
|
+
lexical: {
|
|
98
|
+
matchedTerms: string[];
|
|
99
|
+
matchedFields: Array<'title' | 'description' | 'tags' | 'kind'>;
|
|
100
|
+
};
|
|
101
|
+
hardFilters: Record<string, string | string[]>;
|
|
102
|
+
performance: {
|
|
103
|
+
tier: string | null;
|
|
104
|
+
costScore: number | null;
|
|
105
|
+
qualityScore: number | null;
|
|
106
|
+
};
|
|
107
|
+
reuse: {
|
|
108
|
+
worldUsageCount: number;
|
|
109
|
+
usageCount: number;
|
|
110
|
+
lastUsedAt: string | null;
|
|
111
|
+
};
|
|
112
|
+
availability: {
|
|
113
|
+
performanceMeasured: boolean;
|
|
114
|
+
qualityMeasured: boolean;
|
|
115
|
+
reuseObserved: boolean;
|
|
69
116
|
};
|
|
70
117
|
};
|
|
71
118
|
export type VaultAssetSearch = {
|
|
72
119
|
q?: string;
|
|
73
|
-
kind?:
|
|
120
|
+
kind?: VaultAssetKind[];
|
|
121
|
+
subtype?: string;
|
|
122
|
+
scope?: 'object' | 'fragment' | 'environment';
|
|
123
|
+
format?: string;
|
|
124
|
+
performanceTier?: 'mobile' | 'desktop' | 'cinematic' | 'unknown';
|
|
125
|
+
rank?: 'relevance' | 'performance' | 'reuse';
|
|
74
126
|
skeleton?: string;
|
|
75
127
|
engine?: string;
|
|
76
128
|
license?: string;
|
|
@@ -83,12 +135,48 @@ export type VaultAssetSearch = {
|
|
|
83
135
|
export type InstalledVaultAsset = {
|
|
84
136
|
assetId: string;
|
|
85
137
|
slug: string;
|
|
86
|
-
kind:
|
|
87
|
-
version: number
|
|
138
|
+
kind: VaultAssetKind;
|
|
139
|
+
version: number;
|
|
88
140
|
path: string;
|
|
89
141
|
sourceUrl: string;
|
|
90
142
|
checksumSha256: string;
|
|
143
|
+
sizeBytes: number;
|
|
144
|
+
relatedArtifacts: Array<{
|
|
145
|
+
role: string;
|
|
146
|
+
path: string;
|
|
147
|
+
sourceUrl: string;
|
|
148
|
+
checksumSha256: string;
|
|
149
|
+
sizeBytes: number;
|
|
150
|
+
}>;
|
|
151
|
+
};
|
|
152
|
+
export type VaultAssetVersion = {
|
|
153
|
+
version: number;
|
|
154
|
+
url: string | null;
|
|
155
|
+
mimeType: string;
|
|
156
|
+
sizeBytes: number;
|
|
157
|
+
checksumSha256: string | null;
|
|
158
|
+
notes?: string | null;
|
|
159
|
+
createdAt: string;
|
|
91
160
|
};
|
|
161
|
+
export type VaultMetadataUpdate = {
|
|
162
|
+
title?: string;
|
|
163
|
+
description?: string | null;
|
|
164
|
+
tags?: string[];
|
|
165
|
+
contentRating?: 'everyone' | 'teen' | 'mature' | 'adult';
|
|
166
|
+
contentRatingAttestationAccepted?: boolean;
|
|
167
|
+
};
|
|
168
|
+
export type VaultAssetUsage = {
|
|
169
|
+
assetId: string;
|
|
170
|
+
worldUsageCount: number;
|
|
171
|
+
usageCount: number;
|
|
172
|
+
lastUsedAt: string | null;
|
|
173
|
+
usedInWorlds: Array<Record<string, unknown>>;
|
|
174
|
+
};
|
|
175
|
+
export declare class UnavailableCapabilityError extends Error {
|
|
176
|
+
readonly capability: string;
|
|
177
|
+
readonly code = "CAPABILITY_UNAVAILABLE";
|
|
178
|
+
constructor(capability: string, message: string);
|
|
179
|
+
}
|
|
92
180
|
export type MaterialCatalogEntry = {
|
|
93
181
|
id: string;
|
|
94
182
|
name: string;
|
|
@@ -109,6 +197,8 @@ export type MaterialCatalogResult = {
|
|
|
109
197
|
materials: MaterialCatalogEntry[];
|
|
110
198
|
};
|
|
111
199
|
export declare function generateAndPublishAsset(creds: CliCredentials, input: GenerateAssetInput, options?: GenerateAssetOptions): Promise<DreamerAssetJob>;
|
|
200
|
+
export declare function startDreamerAssetGeneration(creds: CliCredentials, input: GenerateAssetInput): Promise<DreamerAssetJob>;
|
|
201
|
+
export declare function getDreamerAssetGenerationJob(creds: CliCredentials, jobId: string): Promise<DreamerAssetJob>;
|
|
112
202
|
export declare function resumeAndPublishAsset(creds: CliCredentials, jobId: string, options?: GenerateAssetOptions): Promise<DreamerAssetJob>;
|
|
113
203
|
export declare function generateStandaloneAsset(creds: CliCredentials, input: {
|
|
114
204
|
kind: StandaloneAssetKind;
|
|
@@ -118,15 +208,36 @@ export declare function generateStandaloneAsset(creds: CliCredentials, input: {
|
|
|
118
208
|
title?: string;
|
|
119
209
|
loop?: boolean;
|
|
120
210
|
durationSeconds?: number;
|
|
211
|
+
resolution?: 1024 | 2048;
|
|
212
|
+
splatScope?: 'object' | 'fragment' | 'environment';
|
|
213
|
+
sessionId?: string;
|
|
121
214
|
}, options?: {
|
|
122
215
|
pollIntervalMs?: number;
|
|
123
216
|
timeoutMs?: number;
|
|
124
217
|
onProgress?: (job: StandaloneGeneratedAsset) => void;
|
|
125
218
|
}): Promise<StandaloneGeneratedAsset>;
|
|
219
|
+
export declare function startStandaloneAssetGeneration(creds: CliCredentials, input: {
|
|
220
|
+
kind: StandaloneAssetKind;
|
|
221
|
+
prompt: string;
|
|
222
|
+
additionalPrompt?: string;
|
|
223
|
+
projectId?: string;
|
|
224
|
+
sessionId?: string;
|
|
225
|
+
title?: string;
|
|
226
|
+
loop?: boolean;
|
|
227
|
+
durationSeconds?: number;
|
|
228
|
+
resolution?: 1024 | 2048;
|
|
229
|
+
splatScope?: 'object' | 'fragment' | 'environment';
|
|
230
|
+
}): Promise<{
|
|
231
|
+
jobId: string;
|
|
232
|
+
status: 'queued';
|
|
233
|
+
}>;
|
|
234
|
+
export declare function getStandaloneAssetGenerationJob(creds: CliCredentials, jobId: string): Promise<StandaloneGeneratedAsset>;
|
|
126
235
|
export declare function generateImage(creds: CliCredentials, input: {
|
|
127
236
|
prompt: string;
|
|
128
237
|
additionalPrompt?: string;
|
|
129
238
|
projectId?: string;
|
|
239
|
+
sessionId?: string;
|
|
240
|
+
title?: string;
|
|
130
241
|
}, options?: {
|
|
131
242
|
pollIntervalMs?: number;
|
|
132
243
|
timeoutMs?: number;
|
|
@@ -137,6 +248,11 @@ export declare function searchVaultAssets(apiUrl: string, query?: VaultAssetSear
|
|
|
137
248
|
totalItems: number;
|
|
138
249
|
}>;
|
|
139
250
|
export declare function getVaultAsset(apiUrl: string, assetId: string, creds?: CliCredentials): Promise<VaultAssetDetail>;
|
|
251
|
+
export declare function getVaultAssetVersions(apiUrl: string, assetId: string, creds?: CliCredentials): Promise<{
|
|
252
|
+
items: VaultAssetVersion[];
|
|
253
|
+
}>;
|
|
254
|
+
export declare function updateVaultAssetMetadata(creds: CliCredentials, assetId: string, update: VaultMetadataUpdate): Promise<VaultAssetSummary>;
|
|
255
|
+
export declare function getVaultAssetUsage(apiUrl: string, assetId: string, creds?: CliCredentials): Promise<VaultAssetUsage>;
|
|
140
256
|
export declare function installVaultAsset(worldDir: string, apiUrl: string, assetId: string, creds?: CliCredentials): Promise<InstalledVaultAsset>;
|
|
141
257
|
export declare function listMaterials(apiUrl: string, query?: {
|
|
142
258
|
q?: string;
|
package/dist/assets.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnavailableCapabilityError = exports.VAULT_ASSET_KINDS = void 0;
|
|
3
4
|
exports.generateAndPublishAsset = generateAndPublishAsset;
|
|
5
|
+
exports.startDreamerAssetGeneration = startDreamerAssetGeneration;
|
|
6
|
+
exports.getDreamerAssetGenerationJob = getDreamerAssetGenerationJob;
|
|
4
7
|
exports.resumeAndPublishAsset = resumeAndPublishAsset;
|
|
5
8
|
exports.generateStandaloneAsset = generateStandaloneAsset;
|
|
9
|
+
exports.startStandaloneAssetGeneration = startStandaloneAssetGeneration;
|
|
10
|
+
exports.getStandaloneAssetGenerationJob = getStandaloneAssetGenerationJob;
|
|
6
11
|
exports.generateImage = generateImage;
|
|
7
12
|
exports.searchVaultAssets = searchVaultAssets;
|
|
8
13
|
exports.getVaultAsset = getVaultAsset;
|
|
14
|
+
exports.getVaultAssetVersions = getVaultAssetVersions;
|
|
15
|
+
exports.updateVaultAssetMetadata = updateVaultAssetMetadata;
|
|
16
|
+
exports.getVaultAssetUsage = getVaultAssetUsage;
|
|
9
17
|
exports.installVaultAsset = installVaultAsset;
|
|
10
18
|
exports.listMaterials = listMaterials;
|
|
11
19
|
exports.resolveMaterial = resolveMaterial;
|
|
@@ -13,21 +21,72 @@ const node_crypto_1 = require("node:crypto");
|
|
|
13
21
|
const promises_1 = require("node:fs/promises");
|
|
14
22
|
const node_path_1 = require("node:path");
|
|
15
23
|
const api_1 = require("./api");
|
|
24
|
+
exports.VAULT_ASSET_KINDS = [
|
|
25
|
+
'prop',
|
|
26
|
+
'character',
|
|
27
|
+
'animation',
|
|
28
|
+
'audio',
|
|
29
|
+
'texture',
|
|
30
|
+
'material',
|
|
31
|
+
'environment',
|
|
32
|
+
'terrain',
|
|
33
|
+
'vfx',
|
|
34
|
+
'decal',
|
|
35
|
+
'sky',
|
|
36
|
+
'gaussian_splat',
|
|
37
|
+
'scene',
|
|
38
|
+
'unreal_package',
|
|
39
|
+
];
|
|
40
|
+
class UnavailableCapabilityError extends Error {
|
|
41
|
+
capability;
|
|
42
|
+
code = 'CAPABILITY_UNAVAILABLE';
|
|
43
|
+
constructor(capability, message) {
|
|
44
|
+
super(message);
|
|
45
|
+
this.capability = capability;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.UnavailableCapabilityError = UnavailableCapabilityError;
|
|
16
49
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
50
|
function isTerminalFailure(job) {
|
|
18
51
|
return ['failed', 'blocked_insufficient_spark', 'cancelled'].includes(job.status);
|
|
19
52
|
}
|
|
53
|
+
function normalizeDreamerAssetJob(job) {
|
|
54
|
+
const vaultAssetId = job.vaultAssetId ??
|
|
55
|
+
(typeof job.verification?.vaultAssetId === 'string'
|
|
56
|
+
? job.verification.vaultAssetId
|
|
57
|
+
: null);
|
|
58
|
+
const vaultAutoPublish = job.vaultAutoPublish ??
|
|
59
|
+
(job.verification?.vaultAutoPublish === 'disabled'
|
|
60
|
+
? 'disabled'
|
|
61
|
+
: vaultAssetId
|
|
62
|
+
? 'published'
|
|
63
|
+
: undefined);
|
|
64
|
+
return {
|
|
65
|
+
...job,
|
|
66
|
+
...(vaultAssetId ? { vaultAssetId } : {}),
|
|
67
|
+
...(vaultAutoPublish ? { vaultAutoPublish } : {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
20
70
|
async function generateAndPublishAsset(creds, input, options = {}) {
|
|
21
71
|
const api = api_1.HelixApi.forCredentials(creds);
|
|
22
|
-
const job = await
|
|
72
|
+
const job = await startDreamerAssetGeneration(creds, input);
|
|
73
|
+
return driveDreamerAssetJob(api, job, options);
|
|
74
|
+
}
|
|
75
|
+
async function startDreamerAssetGeneration(creds, input) {
|
|
76
|
+
const api = api_1.HelixApi.forCredentials(creds);
|
|
77
|
+
return normalizeDreamerAssetJob(await api.request('POST', '/api/v1/dreamer/generate', {
|
|
23
78
|
...input,
|
|
24
79
|
kind: input.kind === 'prop' ? 'home_item' : 'avatar',
|
|
25
|
-
});
|
|
26
|
-
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
function getDreamerAssetGenerationJob(creds, jobId) {
|
|
83
|
+
return api_1.HelixApi.forCredentials(creds)
|
|
84
|
+
.request('GET', `/api/v1/dreamer/jobs/${encodeURIComponent(jobId)}`)
|
|
85
|
+
.then(normalizeDreamerAssetJob);
|
|
27
86
|
}
|
|
28
87
|
async function resumeAndPublishAsset(creds, jobId, options = {}) {
|
|
29
88
|
const api = api_1.HelixApi.forCredentials(creds);
|
|
30
|
-
const job = await
|
|
89
|
+
const job = await getDreamerAssetGenerationJob(creds, jobId);
|
|
31
90
|
return driveDreamerAssetJob(api, job, options);
|
|
32
91
|
}
|
|
33
92
|
async function driveDreamerAssetJob(api, initialJob, options) {
|
|
@@ -44,28 +103,27 @@ async function driveDreamerAssetJob(api, initialJob, options) {
|
|
|
44
103
|
return job;
|
|
45
104
|
const gate = job.awaitingApproval?.gate;
|
|
46
105
|
if (gate && !approved.has(gate)) {
|
|
47
|
-
job = await api.request('POST', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}/approve`, { gate });
|
|
106
|
+
job = normalizeDreamerAssetJob(await api.request('POST', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}/approve`, { gate }));
|
|
48
107
|
approved.add(gate);
|
|
49
108
|
continue;
|
|
50
109
|
}
|
|
51
110
|
if (!job.awaitingApproval &&
|
|
52
111
|
(job.status === 'preview_ready' || job.currentStage === 'publish')) {
|
|
53
|
-
job = await api.request('POST', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}/publish`, { visibility: options.visibility ?? 'public' });
|
|
112
|
+
job = normalizeDreamerAssetJob(await api.request('POST', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}/publish`, { visibility: options.visibility ?? 'public' }));
|
|
54
113
|
if (job.publishedItemId)
|
|
55
114
|
return job;
|
|
56
115
|
}
|
|
57
116
|
await sleep(pollIntervalMs);
|
|
58
|
-
job = await api.request('GET', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}`);
|
|
117
|
+
job = normalizeDreamerAssetJob(await api.request('GET', `/api/v1/dreamer/jobs/${encodeURIComponent(job.id)}`));
|
|
59
118
|
}
|
|
60
119
|
throw new Error(`Dreamer asset generation job ${job.id} timed out after ${options.timeoutMs ?? 20 * 60_000}ms at ${job.status}:${job.awaitingApproval?.gate ?? job.currentStage ?? 'unknown'}`);
|
|
61
120
|
}
|
|
62
121
|
async function generateStandaloneAsset(creds, input, options = {}) {
|
|
63
|
-
const api = api_1.HelixApi.forCredentials(creds);
|
|
64
122
|
const pollIntervalMs = options.pollIntervalMs ?? 2_000;
|
|
65
123
|
const deadline = Date.now() + (options.timeoutMs ?? 10 * 60_000);
|
|
66
|
-
const accepted = await
|
|
124
|
+
const accepted = await startStandaloneAssetGeneration(creds, input);
|
|
67
125
|
while (Date.now() < deadline) {
|
|
68
|
-
const job = await
|
|
126
|
+
const job = await getStandaloneAssetGenerationJob(creds, accepted.jobId);
|
|
69
127
|
options.onProgress?.(job);
|
|
70
128
|
if (job.status === 'succeeded')
|
|
71
129
|
return job;
|
|
@@ -76,6 +134,15 @@ async function generateStandaloneAsset(creds, input, options = {}) {
|
|
|
76
134
|
}
|
|
77
135
|
throw new Error(`Dreamer ${input.kind} generation job ${accepted.jobId} timed out after ${options.timeoutMs ?? 10 * 60_000}ms`);
|
|
78
136
|
}
|
|
137
|
+
async function startStandaloneAssetGeneration(creds, input) {
|
|
138
|
+
if (input.kind === 'animation') {
|
|
139
|
+
throw new UnavailableCapabilityError('animation_generation', 'Animation generation is not available yet. Use a published Vault animation or upload a skeleton-gated clip.');
|
|
140
|
+
}
|
|
141
|
+
return api_1.HelixApi.forCredentials(creds).request('POST', '/api/v1/dreamer/assets/generate', input);
|
|
142
|
+
}
|
|
143
|
+
function getStandaloneAssetGenerationJob(creds, jobId) {
|
|
144
|
+
return api_1.HelixApi.forCredentials(creds).request('GET', `/api/v1/dreamer/assets/jobs/${encodeURIComponent(jobId)}`);
|
|
145
|
+
}
|
|
79
146
|
function generateImage(creds, input, options = {}) {
|
|
80
147
|
return generateStandaloneAsset(creds, { kind: 'image', ...input }, options);
|
|
81
148
|
}
|
|
@@ -86,7 +153,19 @@ async function searchVaultAssets(apiUrl, query = {}, creds) {
|
|
|
86
153
|
params.set('q', query.q);
|
|
87
154
|
for (const kind of query.kind ?? [])
|
|
88
155
|
params.append('kind', kind);
|
|
89
|
-
for (const key of [
|
|
156
|
+
for (const key of [
|
|
157
|
+
'subtype',
|
|
158
|
+
'scope',
|
|
159
|
+
'format',
|
|
160
|
+
'performanceTier',
|
|
161
|
+
'rank',
|
|
162
|
+
'skeleton',
|
|
163
|
+
'engine',
|
|
164
|
+
'license',
|
|
165
|
+
'source',
|
|
166
|
+
'origin',
|
|
167
|
+
'creatorId',
|
|
168
|
+
]) {
|
|
90
169
|
if (query[key])
|
|
91
170
|
params.set(key, String(query[key]));
|
|
92
171
|
}
|
|
@@ -101,10 +180,24 @@ function getVaultAsset(apiUrl, assetId, creds) {
|
|
|
101
180
|
const api = creds ? api_1.HelixApi.forCredentials(creds) : new api_1.HelixApi(apiUrl);
|
|
102
181
|
return api.request('GET', `/api/v1/vault/assets/${encodeURIComponent(assetId)}`);
|
|
103
182
|
}
|
|
183
|
+
function getVaultAssetVersions(apiUrl, assetId, creds) {
|
|
184
|
+
const api = creds ? api_1.HelixApi.forCredentials(creds) : new api_1.HelixApi(apiUrl);
|
|
185
|
+
return api.request('GET', `/api/v1/vault/assets/${encodeURIComponent(assetId)}/versions`);
|
|
186
|
+
}
|
|
187
|
+
function updateVaultAssetMetadata(creds, assetId, update) {
|
|
188
|
+
return api_1.HelixApi.forCredentials(creds).request('PATCH', `/api/v1/vault/assets/${encodeURIComponent(assetId)}`, update);
|
|
189
|
+
}
|
|
190
|
+
async function getVaultAssetUsage(apiUrl, assetId, creds) {
|
|
191
|
+
const detail = await getVaultAsset(apiUrl, assetId, creds);
|
|
192
|
+
return {
|
|
193
|
+
assetId: detail.assetId,
|
|
194
|
+
worldUsageCount: typeof detail.worldUsageCount === 'number' ? detail.worldUsageCount : 0,
|
|
195
|
+
usageCount: typeof detail.usageCount === 'number' ? detail.usageCount : 0,
|
|
196
|
+
lastUsedAt: typeof detail.lastUsedAt === 'string' ? detail.lastUsedAt : null,
|
|
197
|
+
usedInWorlds: detail.usedInWorlds ?? [],
|
|
198
|
+
};
|
|
199
|
+
}
|
|
104
200
|
function extensionFor(url, mimeType) {
|
|
105
|
-
const fromUrl = (0, node_path_1.extname)(new URL(url).pathname).toLowerCase();
|
|
106
|
-
if (/^\.[a-z0-9]{2,5}$/.test(fromUrl))
|
|
107
|
-
return fromUrl;
|
|
108
201
|
const byMime = {
|
|
109
202
|
'model/gltf-binary': '.glb',
|
|
110
203
|
'model/gltf+json': '.gltf',
|
|
@@ -113,32 +206,94 @@ function extensionFor(url, mimeType) {
|
|
|
113
206
|
'image/webp': '.webp',
|
|
114
207
|
'audio/mpeg': '.mp3',
|
|
115
208
|
'audio/ogg': '.ogg',
|
|
209
|
+
'application/json': '.json',
|
|
210
|
+
'application/vnd.helix.material+json': '.helix-material.json',
|
|
211
|
+
'application/vnd.helix.scene+json': '.helix-scene.json',
|
|
212
|
+
'application/vnd.helix.terrain+json': '.helix-terrain.json',
|
|
213
|
+
'application/vnd.helix.vfx+json': '.helix-vfx.json',
|
|
214
|
+
'application/vnd.helix.decal+json': '.helix-decal.json',
|
|
215
|
+
'image/ktx2': '.ktx2',
|
|
216
|
+
'image/vnd.radiance': '.hdr',
|
|
217
|
+
'image/x-exr': '.exr',
|
|
218
|
+
'application/x-spz': '.spz',
|
|
116
219
|
};
|
|
117
|
-
|
|
220
|
+
const semanticExtension = byMime[mimeType ?? ''];
|
|
221
|
+
if (semanticExtension?.includes('.helix-'))
|
|
222
|
+
return semanticExtension;
|
|
223
|
+
const fromUrl = (0, node_path_1.extname)(new URL(url).pathname).toLowerCase();
|
|
224
|
+
if (/^\.[a-z0-9]{2,5}$/.test(fromUrl))
|
|
225
|
+
return fromUrl;
|
|
226
|
+
return semanticExtension ?? '.bin';
|
|
227
|
+
}
|
|
228
|
+
function safeName(value, fallback) {
|
|
229
|
+
return (value
|
|
230
|
+
.replace(/[^a-z0-9_.-]+/gi, '-')
|
|
231
|
+
.replace(/^-+|-+$/g, '')
|
|
232
|
+
.toLowerCase() || fallback);
|
|
233
|
+
}
|
|
234
|
+
async function downloadAndVerify(input) {
|
|
235
|
+
const response = await fetch(input.url, {
|
|
236
|
+
headers: input.token ? { authorization: `Bearer ${input.token}` } : {},
|
|
237
|
+
});
|
|
238
|
+
if (!response.ok) {
|
|
239
|
+
throw new Error(`${input.label} download failed (${response.status})`);
|
|
240
|
+
}
|
|
241
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
242
|
+
const checksumSha256 = (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
|
|
243
|
+
if (input.expectedChecksumSha256 &&
|
|
244
|
+
checksumSha256.toLowerCase() !== input.expectedChecksumSha256.toLowerCase()) {
|
|
245
|
+
throw new Error(`${input.label} checksum mismatch: expected ${input.expectedChecksumSha256}, received ${checksumSha256}`);
|
|
246
|
+
}
|
|
247
|
+
if (input.expectedSizeBytes > 0 && bytes.length !== input.expectedSizeBytes) {
|
|
248
|
+
throw new Error(`${input.label} size mismatch: expected ${input.expectedSizeBytes} bytes, received ${bytes.length}`);
|
|
249
|
+
}
|
|
250
|
+
return { bytes, checksumSha256 };
|
|
118
251
|
}
|
|
119
252
|
async function installVaultAsset(worldDir, apiUrl, assetId, creds) {
|
|
120
253
|
const detail = await getVaultAsset(apiUrl, assetId, creds);
|
|
121
254
|
const artifactUrl = detail.artifact?.url ?? detail.artifactUrl;
|
|
122
255
|
if (!artifactUrl)
|
|
123
256
|
throw new Error(`Vault asset ${assetId} has no downloadable artifact`);
|
|
124
|
-
const version = detail.artifact
|
|
257
|
+
const version = detail.artifact.version;
|
|
125
258
|
const downloadUrl = `${apiUrl.replace(/\/+$/, '')}/api/v1/vault/assets/${encodeURIComponent(assetId)}/download${version ? `?version=${version}` : ''}`;
|
|
126
|
-
const
|
|
127
|
-
|
|
259
|
+
const { bytes, checksumSha256 } = await downloadAndVerify({
|
|
260
|
+
url: downloadUrl,
|
|
261
|
+
token: creds?.token,
|
|
262
|
+
expectedChecksumSha256: detail.artifact.checksumSha256,
|
|
263
|
+
expectedSizeBytes: detail.artifact.sizeBytes,
|
|
264
|
+
label: `Vault asset ${assetId}`,
|
|
128
265
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
const bytes = Buffer.from(await response.arrayBuffer());
|
|
133
|
-
const extension = extensionFor(artifactUrl, detail.artifact?.mimeType ?? detail.artifactMimeType ?? detail.mimeType);
|
|
134
|
-
const safeSlug = (detail.slug || (0, node_path_1.basename)(new URL(artifactUrl).pathname, extension) || 'asset')
|
|
135
|
-
.replace(/[^a-z0-9-]+/gi, '-')
|
|
136
|
-
.replace(/^-+|-+$/g, '')
|
|
137
|
-
.toLowerCase();
|
|
266
|
+
const extension = extensionFor(artifactUrl, detail.artifact.mimeType ?? detail.artifactMimeType ?? detail.mimeType);
|
|
267
|
+
const safeSlug = safeName(detail.slug || (0, node_path_1.basename)(new URL(artifactUrl).pathname, extension), 'asset');
|
|
138
268
|
const relativePath = (0, node_path_1.join)('public', 'assets', 'vault', assetId, `${safeSlug}${extension}`);
|
|
139
269
|
const outputPath = (0, node_path_1.join)(worldDir, relativePath);
|
|
140
|
-
|
|
270
|
+
const assetDir = (0, node_path_1.join)(worldDir, 'public', 'assets', 'vault', assetId);
|
|
271
|
+
await (0, promises_1.mkdir)(assetDir, { recursive: true });
|
|
141
272
|
await (0, promises_1.writeFile)(outputPath, bytes);
|
|
273
|
+
const installedRelated = [];
|
|
274
|
+
for (const related of detail.artifact.relatedArtifacts ?? []) {
|
|
275
|
+
if (!related.url) {
|
|
276
|
+
throw new Error(`Vault asset ${assetId} related artifact "${related.role}" is unavailable`);
|
|
277
|
+
}
|
|
278
|
+
const downloaded = await downloadAndVerify({
|
|
279
|
+
url: related.url,
|
|
280
|
+
token: creds?.token,
|
|
281
|
+
expectedChecksumSha256: related.checksumSha256,
|
|
282
|
+
expectedSizeBytes: related.sizeBytes,
|
|
283
|
+
label: `Vault asset ${assetId} related artifact "${related.role}"`,
|
|
284
|
+
});
|
|
285
|
+
const relatedExtension = extensionFor(related.url, related.mimeType);
|
|
286
|
+
const filename = `${safeName(related.role, 'related')}${relatedExtension}`;
|
|
287
|
+
const relatedPath = (0, node_path_1.join)('public', 'assets', 'vault', assetId, filename);
|
|
288
|
+
await (0, promises_1.writeFile)((0, node_path_1.join)(worldDir, relatedPath), downloaded.bytes);
|
|
289
|
+
installedRelated.push({
|
|
290
|
+
role: related.role,
|
|
291
|
+
path: relatedPath,
|
|
292
|
+
sourceUrl: related.url,
|
|
293
|
+
checksumSha256: downloaded.checksumSha256,
|
|
294
|
+
sizeBytes: downloaded.bytes.length,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
142
297
|
const receiptPath = (0, node_path_1.join)(worldDir, 'public', 'helix.assets.json');
|
|
143
298
|
let prior = {
|
|
144
299
|
version: 1,
|
|
@@ -158,7 +313,9 @@ async function installVaultAsset(worldDir, apiUrl, assetId, creds) {
|
|
|
158
313
|
version,
|
|
159
314
|
path: relativePath,
|
|
160
315
|
sourceUrl: downloadUrl,
|
|
161
|
-
checksumSha256
|
|
316
|
+
checksumSha256,
|
|
317
|
+
sizeBytes: bytes.length,
|
|
318
|
+
relatedArtifacts: installedRelated,
|
|
162
319
|
};
|
|
163
320
|
const artifactKey = new URL(artifactUrl).pathname.replace(/^\/+/, '');
|
|
164
321
|
prior.vaultAssets = [
|
|
@@ -169,6 +326,8 @@ async function installVaultAsset(worldDir, apiUrl, assetId, creds) {
|
|
|
169
326
|
kind: detail.kind,
|
|
170
327
|
artifactKey,
|
|
171
328
|
integrity: `sha256-${installed.checksumSha256}`,
|
|
329
|
+
checksumSha256: installed.checksumSha256,
|
|
330
|
+
relatedArtifacts: installedRelated,
|
|
172
331
|
},
|
|
173
332
|
];
|
|
174
333
|
prior.assets = [
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|