@ai-game-assets/dev 0.5.6 → 0.7.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.
Files changed (38) hide show
  1. package/dist/asset-store.d.ts +27 -1
  2. package/dist/asset-store.d.ts.map +1 -1
  3. package/dist/asset-store.js +314 -8
  4. package/dist/asset-store.js.map +1 -1
  5. package/dist/audio-provider.d.ts +1 -0
  6. package/dist/audio-provider.d.ts.map +1 -1
  7. package/dist/audio-provider.js +23 -1
  8. package/dist/audio-provider.js.map +1 -1
  9. package/dist/build-manifest.d.ts.map +1 -1
  10. package/dist/build-manifest.js +14 -0
  11. package/dist/build-manifest.js.map +1 -1
  12. package/dist/image-generation-sizes.d.ts +7 -0
  13. package/dist/image-generation-sizes.d.ts.map +1 -0
  14. package/dist/image-generation-sizes.js +15 -0
  15. package/dist/image-generation-sizes.js.map +1 -0
  16. package/dist/index.d.ts +6 -6
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -3
  19. package/dist/index.js.map +1 -1
  20. package/dist/internal.d.ts +1 -1
  21. package/dist/internal.d.ts.map +1 -1
  22. package/dist/provider-image-processing.d.ts +5 -1
  23. package/dist/provider-image-processing.d.ts.map +1 -1
  24. package/dist/provider-image-processing.js +278 -9
  25. package/dist/provider-image-processing.js.map +1 -1
  26. package/dist/provider.d.ts +45 -1
  27. package/dist/provider.d.ts.map +1 -1
  28. package/dist/provider.js +477 -57
  29. package/dist/provider.js.map +1 -1
  30. package/dist/server.d.ts +78 -2
  31. package/dist/server.d.ts.map +1 -1
  32. package/dist/server.js +339 -28
  33. package/dist/server.js.map +1 -1
  34. package/dist/tileset-sheet-processing.d.ts +49 -0
  35. package/dist/tileset-sheet-processing.d.ts.map +1 -0
  36. package/dist/tileset-sheet-processing.js +357 -0
  37. package/dist/tileset-sheet-processing.js.map +1 -0
  38. package/package.json +5 -3
@@ -1,4 +1,4 @@
1
- import { type AiAssetManifest, type AiAssetVersion, type GeneratedAssetOption } from "./internal.js";
1
+ import { type AiAssetDefinition, type AiAssetManifest, type AiAssetVersion, type AiTilesetAnimation, type AiTilesetTileTransform, type GeneratedAssetOption } from "./internal.js";
2
2
  export type AssetStoreOptions = {
3
3
  manifestPath: string;
4
4
  assetsDir: string;
@@ -9,6 +9,11 @@ export type SaveGeneratedOptionInput = {
9
9
  assetId: string;
10
10
  versionName: string;
11
11
  option: GeneratedAssetOption;
12
+ tilesetSource?: {
13
+ image: Uint8Array;
14
+ mimeType: string;
15
+ };
16
+ tilesetTransforms?: AiTilesetTileTransform[];
12
17
  activate?: boolean;
13
18
  notes?: string;
14
19
  };
@@ -17,6 +22,26 @@ export type SaveGeneratedOptionResult = {
17
22
  version: AiAssetVersion;
18
23
  filePath: string;
19
24
  };
25
+ export type TilesetAnimationFrameInput = {
26
+ image: Uint8Array;
27
+ mimeType: string;
28
+ };
29
+ export type SaveTilesetAnimationInput = {
30
+ assetId: string;
31
+ animationKey: string;
32
+ frames: TilesetAnimationFrameInput[];
33
+ definition?: AiTilesetAnimation;
34
+ versionName?: string;
35
+ notes?: string;
36
+ };
37
+ export type SaveTilesetAnimationResult = {
38
+ manifest: AiAssetManifest;
39
+ asset: AiAssetDefinition;
40
+ versionName: string;
41
+ version: AiAssetVersion;
42
+ filePath: string;
43
+ animationFilePaths: string[];
44
+ };
20
45
  export type SaveStyleGuideInput = {
21
46
  prompt?: string;
22
47
  images: Array<{
@@ -40,6 +65,7 @@ export type EnsureTargetVariantResult = {
40
65
  export declare function readManifest(manifestPath: string): Promise<AiAssetManifest>;
41
66
  export declare function writeManifest(manifestPath: string, manifest: AiAssetManifest): Promise<void>;
42
67
  export declare function saveGeneratedOption(options: AssetStoreOptions, input: SaveGeneratedOptionInput): Promise<SaveGeneratedOptionResult>;
68
+ export declare function saveTilesetAnimation(options: AssetStoreOptions, input: SaveTilesetAnimationInput): Promise<SaveTilesetAnimationResult>;
43
69
  export declare function saveStyleGuide(options: AssetStoreOptions, input: SaveStyleGuideInput): Promise<AiAssetManifest>;
44
70
  export declare function deleteAssetVersion(options: AssetStoreOptions, input: DeleteAssetVersionInput): Promise<AiAssetManifest>;
45
71
  export declare function ensureTargetVariant(options: AssetStoreOptions, input: EnsureTargetVariantInput): Promise<EnsureTargetVariantResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"asset-store.d.ts","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EAGpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CASjF;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAyEpC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,eAAe,CAAC,CA+B1B;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA+B1B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAsEpC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"asset-store.d.ts","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { addVersion, assertManifest, createAiAssetVersion } from "./internal.js";
2
+ import { randomUUID } from "node:crypto";
2
3
  import { mkdir, readFile, readdir, rename, stat, unlink, writeFile } from "node:fs/promises";
3
4
  import path from "node:path";
5
+ import { PNG } from "pngjs";
4
6
  export async function readManifest(manifestPath) {
5
7
  if (await isDirectory(manifestPath)) {
6
8
  return readManifestDirectory(manifestPath);
@@ -29,8 +31,26 @@ export async function saveGeneratedOption(options, input) {
29
31
  const fileName = `${sanitizeFilePart(input.assetId)}.${sanitizeFilePart(input.versionName)}.${extension}`;
30
32
  const filePath = path.join(options.assetsDir, fileName);
31
33
  const publicFile = options.publicPathPrefix ? `${options.publicPathPrefix}/${fileName}` : fileName;
34
+ assertTilesetEditInput(asset, input);
35
+ const tilesetSourceExtension = input.tilesetSource
36
+ ? extensionFromMimeType(input.tilesetSource.mimeType)
37
+ : undefined;
38
+ const tilesetSourceFileName = tilesetSourceExtension
39
+ ? `${sanitizeFilePart(input.assetId)}.${sanitizeFilePart(input.versionName)}.tileset-source.${tilesetSourceExtension}`
40
+ : undefined;
41
+ const tilesetSourceFilePath = tilesetSourceFileName
42
+ ? path.join(options.assetsDir, tilesetSourceFileName)
43
+ : undefined;
44
+ const publicTilesetSourceFile = tilesetSourceFileName
45
+ ? publicAssetFile(options, tilesetSourceFileName)
46
+ : undefined;
32
47
  await mkdir(options.assetsDir, { recursive: true });
33
- await writeFile(filePath, input.option.image);
48
+ await Promise.all([
49
+ writeFile(filePath, input.option.image),
50
+ ...(tilesetSourceFilePath && input.tilesetSource
51
+ ? [writeFile(tilesetSourceFilePath, input.tilesetSource.image)]
52
+ : [])
53
+ ]);
34
54
  const version = createAiAssetVersion(asset, {
35
55
  name: input.versionName,
36
56
  file: publicFile,
@@ -43,8 +63,13 @@ export async function saveGeneratedOption(options, input) {
43
63
  voiceSettings: input.option.voiceSettings,
44
64
  durationSeconds: input.option.durationSeconds,
45
65
  parentVersion: asset.activeVersion || undefined,
46
- notes: input.notes
66
+ notes: input.notes,
67
+ tilesetSourceFile: publicTilesetSourceFile,
68
+ tilesetTransforms: input.tilesetTransforms
47
69
  });
70
+ // Promoting a newly generated tileset base intentionally starts a clean
71
+ // bundle. Its animation sheets describe the previous base's exact pixels
72
+ // and must be regenerated (or explicitly composed via saveTilesetAnimation).
48
73
  const updatedAsset = addVersion(asset, input.versionName, version, {
49
74
  activate: input.activate
50
75
  });
@@ -54,6 +79,7 @@ export async function saveGeneratedOption(options, input) {
54
79
  prompt: version.prompt,
55
80
  dimensions: input.option.dimensions ?? updatedAsset.dimensions,
56
81
  frameGrid: input.option.frameGrid ?? updatedAsset.frameGrid,
82
+ tileset: input.option.tileset ?? updatedAsset.tileset,
57
83
  animations: input.option.animations ?? updatedAsset.animations,
58
84
  settings: {
59
85
  ...updatedAsset.settings,
@@ -73,6 +99,7 @@ export async function saveGeneratedOption(options, input) {
73
99
  }
74
100
  }
75
101
  : updatedAsset;
102
+ assertManifest(manifest);
76
103
  await writeManifest(options.manifestPath, manifest);
77
104
  if (options.manifestModulePath) {
78
105
  await writeManifestModule(options.manifestModulePath, manifest);
@@ -83,6 +110,178 @@ export async function saveGeneratedOption(options, input) {
83
110
  filePath
84
111
  };
85
112
  }
113
+ export async function saveTilesetAnimation(options, input) {
114
+ const manifest = await readManifest(options.manifestPath);
115
+ const previousManifest = structuredClone(manifest);
116
+ const asset = manifest.assets[input.assetId];
117
+ if (!asset) {
118
+ throw new Error(`Unknown AI asset "${input.assetId}".`);
119
+ }
120
+ if (asset.kind !== "tileset" || !asset.tileset) {
121
+ throw new Error(`AI asset "${input.assetId}" is not a tileset.`);
122
+ }
123
+ const declaredAnimation = asset.tileset.animations?.find((candidate) => candidate.key === input.animationKey);
124
+ if (!declaredAnimation) {
125
+ throw new Error(`Unknown tileset animation "${input.animationKey}" for AI asset "${input.assetId}".`);
126
+ }
127
+ const animation = input.definition ?? declaredAnimation;
128
+ if (animation.key !== input.animationKey) {
129
+ throw new Error("Tileset animation definition key must match animationKey.");
130
+ }
131
+ const assetDefinition = input.definition ? {
132
+ ...asset,
133
+ tileset: {
134
+ ...asset.tileset,
135
+ animations: (asset.tileset.animations ?? []).map((candidate) => (candidate.key === input.animationKey ? animation : candidate))
136
+ }
137
+ } : asset;
138
+ if (input.frames.length !== animation.frameCount) {
139
+ throw new Error(`Tileset animation "${input.animationKey}" requires exactly ${animation.frameCount} frames.`);
140
+ }
141
+ const dimensions = asset.dimensions;
142
+ if (!dimensions) {
143
+ throw new Error(`AI tileset "${input.assetId}" requires dimensions.`);
144
+ }
145
+ for (const [index, frame] of input.frames.entries()) {
146
+ if (!frame.image.byteLength || frame.mimeType !== "image/png") {
147
+ throw new Error(`Tileset animation frame ${index + 1} must be a non-empty PNG image.`);
148
+ }
149
+ let png;
150
+ try {
151
+ png = PNG.sync.read(Buffer.from(frame.image));
152
+ }
153
+ catch {
154
+ throw new Error(`Tileset animation frame ${index + 1} is not a valid PNG image.`);
155
+ }
156
+ if (png.width !== dimensions.width || png.height !== dimensions.height) {
157
+ throw new Error(`Tileset animation frame ${index + 1} must be ${dimensions.width}x${dimensions.height}; received ${png.width}x${png.height}.`);
158
+ }
159
+ }
160
+ const sourceVersionName = asset.activeVersion;
161
+ const sourceVersion = asset.versions[sourceVersionName];
162
+ if (!sourceVersion) {
163
+ throw new Error(`AI tileset "${input.assetId}" requires an active base version.`);
164
+ }
165
+ const versionName = input.versionName?.trim() ||
166
+ `${sourceVersionName}.${sanitizeFilePart(input.animationKey)}.${Date.now()}`;
167
+ if (asset.versions[versionName]) {
168
+ throw new Error(`Version "${versionName}" already exists for AI asset "${input.assetId}".`);
169
+ }
170
+ const transactionId = randomUUID();
171
+ const fileStem = [
172
+ sanitizeFilePart(input.assetId),
173
+ sanitizeFilePart(versionName),
174
+ transactionId.slice(0, 8)
175
+ ].join(".");
176
+ const pendingFiles = [];
177
+ const queueFile = (fileName, image) => {
178
+ const filePath = path.join(options.assetsDir, fileName);
179
+ pendingFiles.push({
180
+ image,
181
+ fileName,
182
+ filePath,
183
+ temporaryPath: `${filePath}.tmp-${transactionId}`,
184
+ publicFile: publicAssetFile(options, fileName)
185
+ });
186
+ };
187
+ const baseExtension = extensionFromFileName(sourceVersion.file);
188
+ queueFile(`${fileStem}.${baseExtension}`, await readStoredAssetFile(options, sourceVersion.file));
189
+ let tilesetSourceFile;
190
+ if (sourceVersion.tilesetSourceFile) {
191
+ const sourceExtension = extensionFromFileName(sourceVersion.tilesetSourceFile);
192
+ queueFile(`${fileStem}.tileset-source.${sourceExtension}`, await readStoredAssetFile(options, sourceVersion.tilesetSourceFile));
193
+ tilesetSourceFile = pendingFiles.at(-1);
194
+ }
195
+ const sequenceFiles = {};
196
+ for (const definition of assetDefinition.tileset?.animations ?? []) {
197
+ if (definition.key === input.animationKey) {
198
+ const publicFiles = [];
199
+ for (const [index, frame] of input.frames.entries()) {
200
+ const extension = extensionFromMimeType(frame.mimeType);
201
+ const fileName = `${fileStem}.tileset.${sanitizeFilePart(definition.key)}.${index + 1}.${extension}`;
202
+ queueFile(fileName, frame.image);
203
+ publicFiles.push(publicAssetFile(options, fileName));
204
+ }
205
+ sequenceFiles[definition.key] = { files: publicFiles };
206
+ continue;
207
+ }
208
+ const sourceSequence = sourceVersion.tilesetAnimations?.[definition.key];
209
+ if (!sourceSequence)
210
+ continue;
211
+ const publicFiles = [];
212
+ for (const [index, sourceFile] of sourceSequence.files.entries()) {
213
+ const extension = extensionFromFileName(sourceFile);
214
+ const fileName = `${fileStem}.tileset.${sanitizeFilePart(definition.key)}.${index + 1}.${extension}`;
215
+ queueFile(fileName, await readStoredAssetFile(options, sourceFile));
216
+ publicFiles.push(publicAssetFile(options, fileName));
217
+ }
218
+ sequenceFiles[definition.key] = { files: publicFiles };
219
+ }
220
+ await mkdir(options.assetsDir, { recursive: true });
221
+ const committedPaths = [];
222
+ let manifestWritten = false;
223
+ try {
224
+ await Promise.all(pendingFiles.map((file) => writeFile(file.temporaryPath, file.image)));
225
+ for (const file of pendingFiles) {
226
+ await rename(file.temporaryPath, file.filePath);
227
+ committedPaths.push(file.filePath);
228
+ }
229
+ const baseFile = pendingFiles[0];
230
+ if (!baseFile) {
231
+ throw new Error(`AI tileset "${input.assetId}" did not produce a base file.`);
232
+ }
233
+ const version = createAiAssetVersion(assetDefinition, {
234
+ name: versionName,
235
+ file: baseFile.publicFile,
236
+ prompt: sourceVersion.prompt,
237
+ model: sourceVersion.model,
238
+ revisedPrompt: sourceVersion.revisedPrompt,
239
+ settings: sourceVersion.settings,
240
+ parentVersion: sourceVersionName,
241
+ notes: input.notes,
242
+ tilesetAnimations: sequenceFiles,
243
+ tilesetSourceFile: tilesetSourceFile?.publicFile,
244
+ tilesetTransforms: sourceVersion.tilesetTransforms
245
+ });
246
+ const updatedAsset = addVersion(assetDefinition, versionName, version, { activate: true });
247
+ manifest.assets[input.assetId] = updatedAsset;
248
+ assertManifest(manifest);
249
+ await writeManifest(options.manifestPath, manifest);
250
+ manifestWritten = true;
251
+ if (options.manifestModulePath) {
252
+ try {
253
+ await writeManifestModule(options.manifestModulePath, manifest);
254
+ }
255
+ catch (error) {
256
+ try {
257
+ await writeManifest(options.manifestPath, previousManifest);
258
+ manifestWritten = false;
259
+ }
260
+ catch (rollbackError) {
261
+ throw new AggregateError([error, rollbackError], "Tileset animation was saved, but manifest module generation and manifest rollback both failed.");
262
+ }
263
+ throw error;
264
+ }
265
+ }
266
+ return {
267
+ manifest,
268
+ asset: updatedAsset,
269
+ versionName,
270
+ version,
271
+ filePath: baseFile.filePath,
272
+ animationFilePaths: pendingFiles
273
+ .filter((file) => file !== baseFile && file !== tilesetSourceFile)
274
+ .map((file) => file.filePath)
275
+ };
276
+ }
277
+ catch (error) {
278
+ await Promise.all(pendingFiles.map((file) => unlinkIfPresent(file.temporaryPath)));
279
+ if (!manifestWritten) {
280
+ await Promise.all(committedPaths.map((filePath) => unlinkIfPresent(filePath)));
281
+ }
282
+ throw error;
283
+ }
284
+ }
86
285
  export async function saveStyleGuide(options, input) {
87
286
  const manifest = await readManifest(options.manifestPath);
88
287
  const timestamp = Date.now();
@@ -120,16 +319,22 @@ export async function deleteAssetVersion(options, input) {
120
319
  if (asset.activeVersion === input.versionName) {
121
320
  throw new Error(`Cannot delete active version "${input.versionName}" for AI asset "${input.assetId}".`);
122
321
  }
123
- await deleteVersionFile(options, asset.versions[input.versionName]);
322
+ const deletedVersion = asset.versions[input.versionName];
124
323
  const { [input.versionName]: _deleted, ...remainingVersions } = asset.versions;
125
324
  manifest.assets[input.assetId] = {
126
325
  ...asset,
127
326
  versions: remainingVersions
128
327
  };
328
+ assertManifest(manifest);
129
329
  await writeManifest(options.manifestPath, manifest);
130
330
  if (options.manifestModulePath) {
131
331
  await writeManifestModule(options.manifestModulePath, manifest);
132
332
  }
333
+ // Target variants initially share their source asset's immutable version
334
+ // files. Only clean up paths which no remaining version still references.
335
+ // The manifest is committed first so a cleanup failure can leave at worst
336
+ // an orphaned file, never a live version pointing at a deleted one.
337
+ await deleteUnreferencedVersionFiles(options, manifest, deletedVersion);
133
338
  return manifest;
134
339
  }
135
340
  export async function ensureTargetVariant(options, input) {
@@ -156,7 +361,19 @@ export async function ensureTargetVariant(options, input) {
156
361
  manifest.assets[variantAssetId] = {
157
362
  ...sourceAsset,
158
363
  id: variantAssetId,
159
- versions: { ...sourceAsset.versions },
364
+ versions: Object.fromEntries(Object.entries(sourceAsset.versions).map(([versionName, version]) => [
365
+ versionName,
366
+ {
367
+ ...version,
368
+ tilesetTransforms: version.tilesetTransforms?.map((transform) => ({ ...transform })),
369
+ tilesetAnimations: version.tilesetAnimations
370
+ ? Object.fromEntries(Object.entries(version.tilesetAnimations).map(([key, sequence]) => [
371
+ key,
372
+ { files: [...sequence.files] }
373
+ ]))
374
+ : undefined
375
+ }
376
+ ])),
160
377
  linkedAnimationAssets: sourceAsset.linkedAnimationAssets
161
378
  ? { ...sourceAsset.linkedAnimationAssets }
162
379
  : undefined,
@@ -164,6 +381,16 @@ export async function ensureTargetVariant(options, input) {
164
381
  audioSettings: sourceAsset.audioSettings ? { ...sourceAsset.audioSettings } : undefined,
165
382
  audioPlayback: sourceAsset.audioPlayback ? { ...sourceAsset.audioPlayback } : undefined,
166
383
  voiceSettings: sourceAsset.voiceSettings ? { ...sourceAsset.voiceSettings } : undefined,
384
+ tileset: sourceAsset.tileset
385
+ ? {
386
+ ...sourceAsset.tileset,
387
+ tiles: sourceAsset.tileset.tiles?.map((tile) => ({ ...tile })),
388
+ animations: sourceAsset.tileset.animations?.map((animation) => ({
389
+ ...animation,
390
+ frameTimings: animation.frameTimings?.map((timing) => ({ ...timing }))
391
+ }))
392
+ }
393
+ : undefined,
167
394
  tags: sourceAsset.tags ? [...sourceAsset.tags] : undefined
168
395
  };
169
396
  manifest.assetPaths = {
@@ -204,7 +431,8 @@ export async function writeManifestModule(modulePath, manifest) {
204
431
  const optionsLines = Object.keys(optionsArgument).length
205
432
  ? [`, ${JSON.stringify(optionsArgument, null, 2)}`]
206
433
  : [];
207
- await writeFile(modulePath, [
434
+ const temporaryPath = `${modulePath}.tmp-${randomUUID()}`;
435
+ const source = [
208
436
  "import { defineAiAssets } from \"@ai-game-assets/core\";",
209
437
  "",
210
438
  "export const assets = defineAiAssets(",
@@ -212,7 +440,15 @@ export async function writeManifestModule(modulePath, manifest) {
212
440
  ...optionsLines,
213
441
  ");",
214
442
  ""
215
- ].join("\n"));
443
+ ].join("\n");
444
+ try {
445
+ await writeFile(temporaryPath, source);
446
+ await rename(temporaryPath, modulePath);
447
+ }
448
+ catch (error) {
449
+ await unlinkIfPresent(temporaryPath);
450
+ throw error;
451
+ }
216
452
  }
217
453
  function sanitizeFilePart(value) {
218
454
  return value.replace(/[^a-zA-Z0-9._-]/g, "-");
@@ -233,8 +469,78 @@ function uniqueAssetId(manifest, baseAssetId) {
233
469
  }
234
470
  return candidate;
235
471
  }
236
- async function deleteVersionFile(options, version) {
237
- const filePath = path.join(options.assetsDir, path.basename(version.file));
472
+ async function deleteUnreferencedVersionFiles(options, manifest, version) {
473
+ const referencedFiles = new Set(Object.values(manifest.assets).flatMap((asset) => Object.values(asset.versions).flatMap(versionFiles)));
474
+ const files = versionFiles(version).filter((file) => !referencedFiles.has(file));
475
+ for (const file of files) {
476
+ await unlinkIfPresent(path.join(options.assetsDir, path.basename(file)));
477
+ }
478
+ }
479
+ function versionFiles(version) {
480
+ return [
481
+ version.file,
482
+ ...(version.tilesetSourceFile ? [version.tilesetSourceFile] : []),
483
+ ...Object.values(version.tilesetAnimations ?? {}).flatMap((sequence) => sequence.files)
484
+ ];
485
+ }
486
+ function assertTilesetEditInput(asset, input) {
487
+ const tilesetSource = input.tilesetSource;
488
+ const tilesetTransforms = input.tilesetTransforms;
489
+ const hasSource = tilesetSource !== undefined;
490
+ const hasTransforms = tilesetTransforms !== undefined;
491
+ if (hasSource !== hasTransforms) {
492
+ throw new Error("tilesetSource and tilesetTransforms must be provided together.");
493
+ }
494
+ if (!hasSource && !hasTransforms)
495
+ return;
496
+ if (!tilesetSource || !tilesetTransforms) {
497
+ throw new Error("tilesetSource and tilesetTransforms must be provided together.");
498
+ }
499
+ if (asset.kind !== "tileset" || !asset.tileset) {
500
+ throw new Error("Tileset edit metadata is only valid for tileset assets.");
501
+ }
502
+ if (!tilesetSource.image.byteLength) {
503
+ throw new Error("Tileset source image must not be empty.");
504
+ }
505
+ if (!tilesetSource.mimeType.startsWith("image/")) {
506
+ throw new Error("Tileset source must be an image.");
507
+ }
508
+ const tileset = input.option.tileset ?? asset.tileset;
509
+ const tileCount = Math.min(tileset.tileCount ?? tileset.columns * tileset.rows, tileset.columns * tileset.rows);
510
+ if (!Array.isArray(tilesetTransforms) || tilesetTransforms.length !== tileCount) {
511
+ throw new Error(`tilesetTransforms must contain exactly ${tileCount} entries.`);
512
+ }
513
+ for (const [index, transform] of tilesetTransforms.entries()) {
514
+ if (!Number.isInteger(transform?.offsetX) || !Number.isInteger(transform?.offsetY)) {
515
+ throw new Error(`tilesetTransforms.${index} offsets must be integers.`);
516
+ }
517
+ if (!Number.isFinite(transform?.scaleX) ||
518
+ transform.scaleX <= 0 ||
519
+ !Number.isFinite(transform?.scaleY) ||
520
+ transform.scaleY <= 0) {
521
+ throw new Error(`tilesetTransforms.${index} scales must be positive numbers.`);
522
+ }
523
+ }
524
+ }
525
+ async function readStoredAssetFile(options, publicFile) {
526
+ if (/^[a-z][a-z\d+.-]*:/i.test(publicFile) || publicFile.startsWith("//")) {
527
+ throw new Error(`Cannot compose a local tileset version from external file "${publicFile}".`);
528
+ }
529
+ return readFile(path.join(options.assetsDir, path.basename(publicFile)));
530
+ }
531
+ function publicAssetFile(options, fileName) {
532
+ return options.publicPathPrefix
533
+ ? `${options.publicPathPrefix.replace(/\/$/, "")}/${fileName}`
534
+ : fileName;
535
+ }
536
+ function extensionFromFileName(fileName) {
537
+ const extension = path.extname(fileName).slice(1).toLowerCase();
538
+ if (!extension || !/^[a-z0-9]+$/.test(extension)) {
539
+ throw new Error(`Cannot determine an asset extension from "${fileName}".`);
540
+ }
541
+ return extension;
542
+ }
543
+ async function unlinkIfPresent(filePath) {
238
544
  try {
239
545
  await unlink(filePath);
240
546
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asset-store.js","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,oBAAoB,EAOrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,IAAI,MAAM,WAAW,CAAC;AA+C7B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB;IACrD,IAAI,MAAM,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IACpD,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAoB,EACpB,QAAyB;IAEzB,IAAI,MAAM,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,GAAG,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,MAAM,CAAC,GAAG,YAAY,MAAM,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,KAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;IAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,UAAU,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAElF,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE;QAC1C,IAAI,EAAE,KAAK,CAAC,WAAW;QACvB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;QACzB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACzC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;QAC/B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACzC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACzC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;QACzC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC7C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;QAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE;QACjE,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ;QAC7C,CAAC,CAAC;YACE,GAAG,YAAY;YACf,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU;YAC9D,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS;YAC3D,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU;YAC9D,QAAQ,EAAE;gBACR,GAAG,YAAY,CAAC,QAAQ;gBACxB,GAAG,OAAO,CAAC,QAAQ;aACpB;YACD,aAAa,EAAE;gBACb,GAAG,YAAY,CAAC,aAAa;gBAC7B,GAAG,OAAO,CAAC,aAAa;aACzB;YACD,aAAa,EAAE;gBACb,GAAG,YAAY,CAAC,aAAa;gBAC7B,GAAG,OAAO,CAAC,aAAa;aACzB;YACD,aAAa,EAAE;gBACb,GAAG,YAAY,CAAC,aAAa;gBAC7B,GAAG,OAAO,CAAC,aAAa;aACzB;SACF;QACH,CAAC,CAAC,YAAY,CAAC;IAEjB,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA0B,EAC1B,KAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAA6C,EAAE,CAAC;IAE5D,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,eAAe,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,UAAU,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAElF,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACjD,QAAQ,CAAC,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA0B,EAC1B,KAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,WAAW,mBAAmB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,WAAW,mBAAmB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,iBAAiB,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC/E,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;QAC/B,GAAG,KAAK;QACR,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;IAEF,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,KAA+B;IAE/B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9D,IAAI,sBAAsB,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,CAAC,QAAQ,WAAW,KAAK,CAAC,OAAO,+BAA+B,sBAAsB,IAAI,CAC3G,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,sBAAsB;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAClC,QAAQ,EACR,GAAG,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CACtD,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG;QAChC,GAAG,WAAW;QACd,EAAE,EAAE,cAAc;QAClB,QAAQ,EAAE,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE;QACrC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;YACtD,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,qBAAqB,EAAE;YAC1C,CAAC,CAAC,SAAS;QACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QACxE,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC;IACF,QAAQ,CAAC,UAAU,GAAG;QACpB,GAAG,QAAQ,CAAC,UAAU;QACtB,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,WAAW,CAAC;KACxF,CAAC;IACF,QAAQ,CAAC,OAAO,GAAG;QACjB,GAAG,QAAQ,CAAC,OAAO;QACnB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAChB,GAAG,MAAM;YACT,QAAQ,EAAE;gBACR,GAAG,MAAM,CAAC,QAAQ;gBAClB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc;aAChC;SACF;KACF,CAAC;IAEF,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,cAAc;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,QAAyB;IAEzB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU;QAC5C,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE;QACrC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO;QACtC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;QAC/B,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG;QACtB,GAAG,kBAAkB;QACrB,GAAG,eAAe;KACnB,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM;QACtD,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,CACb,UAAU,EACV;QACE,0DAA0D;QAC1D,EAAE;QACF,uCAAuC;QACvC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC7C,GAAG,YAAY;QACf,IAAI;QACJ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,QAAyB,EAAE,WAAmB;IACnE,IAAI,SAAS,GAAG,WAAW,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,SAAS,GAAG,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAA0B,EAC1B,OAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IACtD,MAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,IAAI,UAAyC,CAAC;IAC9C,IAAI,OAAkD,CAAC;IAEvD,KAAK,MAAM,QAAQ,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,YAAY,KAAK,kBAAkB,EAAE,CAAC;YACxC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAsB,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAkC,CAAC;YACxF,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAsB,CAAC;QAChF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACzB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAoB;QAChC,aAAa,EAAE,CAAC;QAChB,MAAM;QACN,UAAU;QACV,OAAO;QACP,UAAU;KACX,CAAC;IACF,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,QAAyB;IAEzB,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,WAAW,EACX,GAAG,WAAW,EACd,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CACrC,CAAC;QACF,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,KAAc;IAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,GAAG,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,MAAM,CAAC,GAAG,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAe;IACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7E,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1E,OAAO,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,KAAK,CAAC;QACf,KAAK,eAAe;YAClB,OAAO,KAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,KAAK,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;QACf;YACE,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,IAAI,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"asset-store.js","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export type ElevenLabsAudioProviderOptions = {
22
22
  musicModel?: string;
23
23
  outputFormat?: string;
24
24
  promptInfluence?: number;
25
+ maxConcurrentMusicRequests?: number;
25
26
  };
26
27
  export declare function createElevenLabsAudioProvider(options?: ElevenLabsAudioProviderOptions): AiAudioProvider;
27
28
  //# sourceMappingURL=audio-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audio-provider.d.ts","sourceRoot":"","sources":["../src/audio-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CACN,OAAO,EAAE,yBAAyB,EAClC,QAAQ,CAAC,EAAE,4BAA4B,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,iBAAiB,CAAC;QACzB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,eAAe,CAqFjB"}
1
+ {"version":3,"file":"audio-provider.d.ts","sourceRoot":"","sources":["../src/audio-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAEjB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CACN,OAAO,EAAE,yBAAyB,EAClC,QAAQ,CAAC,EAAE,4BAA4B,GACtC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,iBAAiB,CAAC;QACzB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,eAAe,CA0FjB"}
@@ -1,4 +1,5 @@
1
1
  export function createElevenLabsAudioProvider(options = {}) {
2
+ const runMusicRequest = createConcurrencyLimiter(options.maxConcurrentMusicRequests ?? 2);
2
3
  return {
3
4
  async generate(request, onOption) {
4
5
  const apiKey = options.apiKey ?? process.env.ELEVENLABS_API_KEY;
@@ -14,7 +15,10 @@ export function createElevenLabsAudioProvider(options = {}) {
14
15
  return generateElevenLabsVoiceLine(apiKey, request, options, count, onOption);
15
16
  }
16
17
  const generatedByIndex = await Promise.all(Array.from({ length: count }, async (_, index) => {
17
- const option = await generateElevenLabsAudio(apiKey, request, options);
18
+ const generate = () => generateElevenLabsAudio(apiKey, request, options);
19
+ const option = request.asset.kind === "music"
20
+ ? await runMusicRequest(generate)
21
+ : await generate();
18
22
  await onOption?.(option, index);
19
23
  return option;
20
24
  }));
@@ -200,6 +204,24 @@ function sanitizeElevenLabsAudioTag(direction) {
200
204
  .replace(/\s+/g, " ")
201
205
  .trim();
202
206
  }
207
+ function createConcurrencyLimiter(maxConcurrentRequests) {
208
+ const limit = Math.max(1, Math.floor(maxConcurrentRequests));
209
+ const waiting = [];
210
+ let active = 0;
211
+ return async (operation) => {
212
+ if (active >= limit) {
213
+ await new Promise((resolve) => waiting.push(resolve));
214
+ }
215
+ active += 1;
216
+ try {
217
+ return await operation();
218
+ }
219
+ finally {
220
+ active -= 1;
221
+ waiting.shift()?.();
222
+ }
223
+ };
224
+ }
203
225
  async function generateElevenLabsAudio(apiKey, request, options) {
204
226
  const audioSettings = {
205
227
  ...request.asset.audioSettings,