@ai-game-assets/dev 0.1.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.
@@ -0,0 +1,33 @@
1
+ import { type AiAssetManifest, type AiAssetVersion, type GeneratedAssetOption } from "./internal.js";
2
+ export type AssetStoreOptions = {
3
+ manifestPath: string;
4
+ assetsDir: string;
5
+ publicPathPrefix?: string;
6
+ manifestModulePath?: string;
7
+ };
8
+ export type SaveGeneratedOptionInput = {
9
+ assetId: string;
10
+ versionName: string;
11
+ option: GeneratedAssetOption;
12
+ activate?: boolean;
13
+ notes?: string;
14
+ };
15
+ export type SaveGeneratedOptionResult = {
16
+ manifest: AiAssetManifest;
17
+ version: AiAssetVersion;
18
+ filePath: string;
19
+ };
20
+ export type SaveStyleGuideInput = {
21
+ prompt?: string;
22
+ images: Array<{
23
+ name: string;
24
+ mimeType: string;
25
+ image: Uint8Array;
26
+ }>;
27
+ };
28
+ export declare function readManifest(manifestPath: string): Promise<AiAssetManifest>;
29
+ export declare function writeManifest(manifestPath: string, manifest: AiAssetManifest): Promise<void>;
30
+ export declare function saveGeneratedOption(options: AssetStoreOptions, input: SaveGeneratedOptionInput): Promise<SaveGeneratedOptionResult>;
31
+ export declare function saveStyleGuide(options: AssetStoreOptions, input: SaveStyleGuideInput): Promise<AiAssetManifest>;
32
+ export declare function writeManifestModule(modulePath: string, manifest: AiAssetManifest): Promise<void>;
33
+ //# sourceMappingURL=asset-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-store.d.ts","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EAEpB,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,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,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,235 @@
1
+ import { addVersion, assertManifest, createAiAssetVersion } from "./internal.js";
2
+ import { mkdir, readFile, readdir, rename, stat, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export async function readManifest(manifestPath) {
5
+ if (await isDirectory(manifestPath)) {
6
+ return readManifestDirectory(manifestPath);
7
+ }
8
+ const raw = await readFile(manifestPath, "utf8");
9
+ const manifest = JSON.parse(raw);
10
+ assertManifest(manifest);
11
+ return manifest;
12
+ }
13
+ export async function writeManifest(manifestPath, manifest) {
14
+ if (await isDirectory(manifestPath)) {
15
+ await writeManifestDirectory(manifestPath, manifest);
16
+ return;
17
+ }
18
+ await mkdir(path.dirname(manifestPath), { recursive: true });
19
+ await writeFile(`${manifestPath}.tmp`, `${JSON.stringify(manifest, null, 2)}\n`);
20
+ await rename(`${manifestPath}.tmp`, manifestPath);
21
+ }
22
+ export async function saveGeneratedOption(options, input) {
23
+ const manifest = await readManifest(options.manifestPath);
24
+ const asset = manifest.assets[input.assetId];
25
+ if (!asset) {
26
+ throw new Error(`Unknown AI asset "${input.assetId}".`);
27
+ }
28
+ const extension = extensionFromMimeType(input.option.mimeType);
29
+ const fileName = `${sanitizeFilePart(input.assetId)}.${sanitizeFilePart(input.versionName)}.${extension}`;
30
+ const filePath = path.join(options.assetsDir, fileName);
31
+ const publicFile = options.publicPathPrefix ? `${options.publicPathPrefix}/${fileName}` : fileName;
32
+ await mkdir(options.assetsDir, { recursive: true });
33
+ await writeFile(filePath, input.option.image);
34
+ const version = createAiAssetVersion(asset, {
35
+ name: input.versionName,
36
+ file: publicFile,
37
+ prompt: input.option.prompt,
38
+ model: input.option.model,
39
+ revisedPrompt: input.option.revisedPrompt,
40
+ settings: input.option.settings,
41
+ audioSettings: input.option.audioSettings,
42
+ audioPlayback: input.option.audioPlayback,
43
+ voiceSettings: input.option.voiceSettings,
44
+ durationSeconds: input.option.durationSeconds,
45
+ parentVersion: asset.activeVersion || undefined,
46
+ notes: input.notes
47
+ });
48
+ const updatedAsset = addVersion(asset, input.versionName, version, {
49
+ activate: input.activate
50
+ });
51
+ manifest.assets[input.assetId] = input.activate
52
+ ? {
53
+ ...updatedAsset,
54
+ prompt: version.prompt,
55
+ dimensions: input.option.dimensions ?? updatedAsset.dimensions,
56
+ frameGrid: input.option.frameGrid ?? updatedAsset.frameGrid,
57
+ animations: input.option.animations ?? updatedAsset.animations,
58
+ settings: {
59
+ ...updatedAsset.settings,
60
+ ...version.settings
61
+ },
62
+ audioSettings: {
63
+ ...updatedAsset.audioSettings,
64
+ ...version.audioSettings
65
+ },
66
+ audioPlayback: {
67
+ ...updatedAsset.audioPlayback,
68
+ ...version.audioPlayback
69
+ },
70
+ voiceSettings: {
71
+ ...updatedAsset.voiceSettings,
72
+ ...version.voiceSettings
73
+ }
74
+ }
75
+ : updatedAsset;
76
+ await writeManifest(options.manifestPath, manifest);
77
+ if (options.manifestModulePath) {
78
+ await writeManifestModule(options.manifestModulePath, manifest);
79
+ }
80
+ return {
81
+ manifest,
82
+ version,
83
+ filePath
84
+ };
85
+ }
86
+ export async function saveStyleGuide(options, input) {
87
+ const manifest = await readManifest(options.manifestPath);
88
+ const timestamp = Date.now();
89
+ const images = [];
90
+ await mkdir(options.assetsDir, { recursive: true });
91
+ for (const [index, image] of input.images.entries()) {
92
+ const extension = extensionFromMimeType(image.mimeType);
93
+ const fileName = `style-guide.${timestamp}.${index + 1}.${extension}`;
94
+ const filePath = path.join(options.assetsDir, fileName);
95
+ const publicFile = options.publicPathPrefix ? `${options.publicPathPrefix}/${fileName}` : fileName;
96
+ await writeFile(filePath, image.image);
97
+ images.push({
98
+ name: image.name,
99
+ file: publicFile,
100
+ mimeType: image.mimeType
101
+ });
102
+ }
103
+ const prompt = input.prompt?.trim() || undefined;
104
+ manifest.styleGuide = prompt || images.length ? { prompt, images } : undefined;
105
+ await writeManifest(options.manifestPath, manifest);
106
+ if (options.manifestModulePath) {
107
+ await writeManifestModule(options.manifestModulePath, manifest);
108
+ }
109
+ return manifest;
110
+ }
111
+ export async function writeManifestModule(modulePath, manifest) {
112
+ await mkdir(path.dirname(modulePath), { recursive: true });
113
+ const styleGuideArgument = manifest.styleGuide
114
+ ? [`, ${JSON.stringify({ styleGuide: manifest.styleGuide }, null, 2)}`]
115
+ : [];
116
+ await writeFile(modulePath, [
117
+ "import { defineAiAssets } from \"@ai-game-assets/core\";",
118
+ "",
119
+ "export const assets = defineAiAssets(",
120
+ `${JSON.stringify(manifest.assets, null, 2)}`,
121
+ ...styleGuideArgument,
122
+ ");",
123
+ ""
124
+ ].join("\n"));
125
+ }
126
+ function sanitizeFilePart(value) {
127
+ return value.replace(/[^a-zA-Z0-9._-]/g, "-");
128
+ }
129
+ async function isDirectory(filePath) {
130
+ try {
131
+ return (await stat(filePath)).isDirectory();
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ async function readManifestDirectory(manifestDir) {
138
+ const assets = {};
139
+ const assetPaths = {};
140
+ let styleGuide;
141
+ for (const filePath of await jsonFiles(manifestDir)) {
142
+ const relativePath = path.relative(manifestDir, filePath);
143
+ if (relativePath === "style-guide.json") {
144
+ styleGuide = JSON.parse(await readFile(filePath, "utf8"));
145
+ continue;
146
+ }
147
+ const asset = JSON.parse(await readFile(filePath, "utf8"));
148
+ assets[asset.id] = asset;
149
+ assetPaths[asset.id] = path.dirname(relativePath) === "."
150
+ ? []
151
+ : path.dirname(relativePath).split(path.sep);
152
+ }
153
+ const manifest = {
154
+ schemaVersion: 1,
155
+ assets,
156
+ styleGuide,
157
+ assetPaths
158
+ };
159
+ assertManifest(manifest);
160
+ return manifest;
161
+ }
162
+ async function writeManifestDirectory(manifestDir, manifest) {
163
+ await mkdir(manifestDir, { recursive: true });
164
+ if (manifest.styleGuide) {
165
+ await writeJsonFile(path.join(manifestDir, "style-guide.json"), manifest.styleGuide);
166
+ }
167
+ for (const asset of Object.values(manifest.assets)) {
168
+ const folderParts = manifest.assetPaths?.[asset.id] ?? inferAssetFolder(asset);
169
+ const filePath = path.join(manifestDir, ...folderParts, `${sanitizeFilePart(asset.id)}.json`);
170
+ await writeJsonFile(filePath, asset);
171
+ }
172
+ }
173
+ async function writeJsonFile(filePath, value) {
174
+ await mkdir(path.dirname(filePath), { recursive: true });
175
+ await writeFile(`${filePath}.tmp`, `${JSON.stringify(value, null, 2)}\n`);
176
+ await rename(`${filePath}.tmp`, filePath);
177
+ }
178
+ async function jsonFiles(rootDir) {
179
+ const entries = await readdir(rootDir, { withFileTypes: true });
180
+ const files = [];
181
+ for (const entry of entries) {
182
+ const filePath = path.join(rootDir, entry.name);
183
+ if (entry.isDirectory()) {
184
+ files.push(...await jsonFiles(filePath));
185
+ }
186
+ else if (entry.isFile() && entry.name.endsWith(".json")) {
187
+ files.push(filePath);
188
+ }
189
+ }
190
+ return files.sort();
191
+ }
192
+ function inferAssetFolder(asset) {
193
+ if (asset.kind === "sound")
194
+ return ["Sfx"];
195
+ if (asset.kind === "music")
196
+ return ["Music"];
197
+ if (asset.kind === "voice" || asset.kind === "voice-line")
198
+ return ["Voices"];
199
+ if (asset.id.startsWith("invader."))
200
+ return ["Graphics", "Invaders"];
201
+ if (asset.id.startsWith("ui."))
202
+ return ["Graphics", "UI"];
203
+ if (asset.id.startsWith("laser."))
204
+ return ["Graphics", "Lasers"];
205
+ if (asset.id.startsWith("background."))
206
+ return ["Graphics", "Background"];
207
+ return ["Graphics"];
208
+ }
209
+ function extensionFromMimeType(mimeType) {
210
+ switch (mimeType) {
211
+ case "image/png":
212
+ return "png";
213
+ case "image/webp":
214
+ return "webp";
215
+ case "image/jpeg":
216
+ return "jpg";
217
+ case "image/svg+xml":
218
+ return "svg";
219
+ case "audio/mpeg":
220
+ return "mp3";
221
+ case "audio/wav":
222
+ case "audio/x-wav":
223
+ return "wav";
224
+ case "audio/ogg":
225
+ return "ogg";
226
+ case "audio/opus":
227
+ return "opus";
228
+ case "audio/L16":
229
+ case "audio/pcm":
230
+ return "pcm";
231
+ default:
232
+ throw new Error(`Unsupported generated asset mime type "${mimeType}".`);
233
+ }
234
+ }
235
+ //# sourceMappingURL=asset-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-store.js","sourceRoot":"","sources":["../src/asset-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AiAssetDefinition, AiAudioGenerationSettings, AiVoiceGenerationSettings } from "@ai-game-assets/core";
2
+ import type { GeneratedAssetOption, GeneratedAssetOptionCallback } from "./provider.js";
3
+ export type GenerateAudioAssetRequest = {
4
+ asset: AiAssetDefinition;
5
+ prompt?: string;
6
+ count?: number;
7
+ audioSettings?: AiAudioGenerationSettings;
8
+ voiceSettings?: AiVoiceGenerationSettings;
9
+ resolveVoiceId?: (voiceAssetId: string) => string | undefined;
10
+ };
11
+ export type AiAudioProvider = {
12
+ generate(request: GenerateAudioAssetRequest, onOption?: GeneratedAssetOptionCallback): Promise<GeneratedAssetOption[]>;
13
+ createVoice?(request: {
14
+ asset: AiAssetDefinition;
15
+ option: GeneratedAssetOption;
16
+ versionName: string;
17
+ }): Promise<AiVoiceGenerationSettings | undefined>;
18
+ };
19
+ export type ElevenLabsAudioProviderOptions = {
20
+ apiKey?: string;
21
+ sfxModel?: string;
22
+ musicModel?: string;
23
+ outputFormat?: string;
24
+ promptInfluence?: number;
25
+ };
26
+ export declare function createElevenLabsAudioProvider(options?: ElevenLabsAudioProviderOptions): AiAudioProvider;
27
+ //# sourceMappingURL=audio-provider.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,290 @@
1
+ export function createElevenLabsAudioProvider(options = {}) {
2
+ return {
3
+ async generate(request, onOption) {
4
+ const apiKey = options.apiKey ?? process.env.ELEVENLABS_API_KEY;
5
+ if (!apiKey) {
6
+ throw new Error("ELEVENLABS_API_KEY is required to generate audio assets. Image generation can still be used without it.");
7
+ }
8
+ const count = request.count ?? 1;
9
+ const generated = [];
10
+ if (request.asset.kind === "voice") {
11
+ return generateElevenLabsVoicePreviews(apiKey, request, options, count, onOption);
12
+ }
13
+ if (request.asset.kind === "voice-line") {
14
+ return generateElevenLabsVoiceLine(apiKey, request, options, count, onOption);
15
+ }
16
+ const generatedByIndex = await Promise.all(Array.from({ length: count }, async (_, index) => {
17
+ const option = await generateElevenLabsAudio(apiKey, request, options);
18
+ await onOption?.(option, index);
19
+ return option;
20
+ }));
21
+ generated.push(...generatedByIndex);
22
+ return generated;
23
+ },
24
+ async createVoice(request) {
25
+ const apiKey = options.apiKey ?? process.env.ELEVENLABS_API_KEY;
26
+ if (!apiKey) {
27
+ throw new Error("ELEVENLABS_API_KEY is required to promote designed voices. Image generation can still be used without it.");
28
+ }
29
+ const generatedVoiceId = request.option.voiceSettings?.generatedVoiceId;
30
+ if (!generatedVoiceId || request.option.voiceSettings?.voiceId) {
31
+ return request.option.voiceSettings;
32
+ }
33
+ const voiceDescription = request.option.prompt || request.asset.prompt;
34
+ const response = await fetch("https://api.elevenlabs.io/v1/text-to-voice", {
35
+ method: "POST",
36
+ headers: {
37
+ "Content-Type": "application/json",
38
+ "xi-api-key": apiKey
39
+ },
40
+ body: JSON.stringify({
41
+ voice_name: readableVoiceName(request.asset.id, request.versionName),
42
+ voice_description: voiceDescription,
43
+ generated_voice_id: generatedVoiceId,
44
+ labels: {
45
+ source: "ai-game-assets"
46
+ }
47
+ })
48
+ });
49
+ if (!response.ok) {
50
+ throw new Error(`ElevenLabs voice creation failed (${response.status}): ${await response.text()}`);
51
+ }
52
+ const body = await response.json();
53
+ if (!body.voice_id) {
54
+ throw new Error("ElevenLabs voice creation did not return a voice_id.");
55
+ }
56
+ return {
57
+ ...request.option.voiceSettings,
58
+ provider: "elevenlabs",
59
+ voiceId: body.voice_id,
60
+ generatedVoiceId
61
+ };
62
+ }
63
+ };
64
+ }
65
+ async function generateElevenLabsVoicePreviews(apiKey, request, options, count, onOption) {
66
+ const voiceSettings = {
67
+ ...request.asset.voiceSettings,
68
+ ...request.voiceSettings
69
+ };
70
+ const audioSettings = {
71
+ ...request.asset.audioSettings,
72
+ ...request.audioSettings
73
+ };
74
+ const format = audioSettings.format ?? "mp3";
75
+ const outputFormat = options.outputFormat ?? elevenLabsOutputFormat(format);
76
+ const prompt = request.prompt ?? request.asset.prompt;
77
+ const generated = [];
78
+ let seed = voiceSettings.seed ?? Math.floor(Math.random() * 2_147_483_647);
79
+ while (generated.length < count) {
80
+ const url = new URL("https://api.elevenlabs.io/v1/text-to-voice/design");
81
+ url.searchParams.set("output_format", outputFormat);
82
+ const response = await fetch(url, {
83
+ method: "POST",
84
+ headers: {
85
+ "Content-Type": "application/json",
86
+ "xi-api-key": apiKey
87
+ },
88
+ body: JSON.stringify({
89
+ voice_description: prompt,
90
+ model_id: voiceSettings.model ?? "eleven_multilingual_ttv_v2",
91
+ text: voiceSettings.previewText,
92
+ auto_generate_text: !voiceSettings.previewText,
93
+ loudness: voiceSettings.loudness,
94
+ seed
95
+ })
96
+ });
97
+ if (!response.ok) {
98
+ throw new Error(`ElevenLabs voice design failed (${response.status}): ${await response.text()}`);
99
+ }
100
+ const body = await response.json();
101
+ for (const preview of body.previews ?? []) {
102
+ if (!preview.audio_base_64 || !preview.generated_voice_id)
103
+ continue;
104
+ const option = {
105
+ image: Buffer.from(preview.audio_base_64, "base64"),
106
+ mimeType: preview.media_type || mimeTypeForAudioFormat(format),
107
+ prompt,
108
+ model: voiceSettings.model ?? "eleven_multilingual_ttv_v2",
109
+ audioSettings: {
110
+ provider: "elevenlabs",
111
+ ...audioSettings,
112
+ format
113
+ },
114
+ audioPlayback: request.asset.audioPlayback,
115
+ voiceSettings: {
116
+ provider: "elevenlabs",
117
+ ...voiceSettings,
118
+ previewText: body.text ?? voiceSettings.previewText,
119
+ generatedVoiceId: preview.generated_voice_id
120
+ },
121
+ durationSeconds: preview.duration_secs
122
+ };
123
+ generated.push(option);
124
+ await onOption?.(option, generated.length - 1);
125
+ if (generated.length >= count)
126
+ break;
127
+ }
128
+ seed += 1;
129
+ }
130
+ return generated;
131
+ }
132
+ async function generateElevenLabsVoiceLine(apiKey, request, options, count, onOption) {
133
+ const voiceSettings = {
134
+ ...request.asset.voiceSettings,
135
+ ...request.voiceSettings
136
+ };
137
+ const audioSettings = {
138
+ ...request.asset.audioSettings,
139
+ ...request.audioSettings
140
+ };
141
+ const format = audioSettings.format ?? "mp3";
142
+ const generated = [];
143
+ const voiceId = voiceSettings.voiceId ??
144
+ (voiceSettings.voiceAssetId ? request.resolveVoiceId?.(voiceSettings.voiceAssetId) : undefined);
145
+ if (!voiceId) {
146
+ throw new Error(`Voice line "${request.asset.id}" needs a promoted base voice before it can be generated.`);
147
+ }
148
+ const generatedByIndex = await Promise.all(Array.from({ length: count }, async (_, index) => {
149
+ const line = voiceSettings.text ?? request.asset.prompt;
150
+ const direction = (request.prompt ?? voiceSettings.direction)?.trim();
151
+ const model = voiceSettings.model ??
152
+ audioSettings.model ??
153
+ (direction ? "eleven_v3" : "eleven_multilingual_v2");
154
+ const text = direction ? `[${sanitizeElevenLabsAudioTag(direction)}]\n${line}` : line;
155
+ const url = new URL(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(voiceId)}`);
156
+ url.searchParams.set("output_format", options.outputFormat ?? elevenLabsOutputFormat(format));
157
+ const response = await fetch(url, {
158
+ method: "POST",
159
+ headers: {
160
+ "Content-Type": "application/json",
161
+ "xi-api-key": apiKey
162
+ },
163
+ body: JSON.stringify({
164
+ text,
165
+ model_id: model
166
+ })
167
+ });
168
+ if (!response.ok) {
169
+ throw new Error(`ElevenLabs voice line generation failed (${response.status}): ${await response.text()}`);
170
+ }
171
+ const option = {
172
+ image: new Uint8Array(await response.arrayBuffer()),
173
+ mimeType: mimeTypeForAudioFormat(format),
174
+ prompt: direction ?? request.asset.prompt,
175
+ model,
176
+ audioSettings: {
177
+ provider: "elevenlabs",
178
+ ...audioSettings,
179
+ format
180
+ },
181
+ audioPlayback: request.asset.audioPlayback,
182
+ voiceSettings: {
183
+ provider: "elevenlabs",
184
+ ...voiceSettings,
185
+ voiceId,
186
+ text: line,
187
+ direction
188
+ }
189
+ };
190
+ await onOption?.(option, index);
191
+ return option;
192
+ }));
193
+ generated.push(...generatedByIndex);
194
+ return generated;
195
+ }
196
+ function sanitizeElevenLabsAudioTag(direction) {
197
+ return direction
198
+ .replace(/[\r\n]+/g, " ")
199
+ .replace(/[\[\]]/g, "")
200
+ .replace(/\s+/g, " ")
201
+ .trim();
202
+ }
203
+ async function generateElevenLabsAudio(apiKey, request, options) {
204
+ const audioSettings = {
205
+ ...request.asset.audioSettings,
206
+ ...request.audioSettings
207
+ };
208
+ const prompt = request.prompt ?? request.asset.prompt;
209
+ const format = audioSettings.format ?? "mp3";
210
+ const outputFormat = options.outputFormat ?? elevenLabsOutputFormat(format);
211
+ const isMusic = request.asset.kind === "music";
212
+ const endpoint = isMusic
213
+ ? "https://api.elevenlabs.io/v1/music"
214
+ : "https://api.elevenlabs.io/v1/sound-generation";
215
+ const url = new URL(endpoint);
216
+ url.searchParams.set("output_format", outputFormat);
217
+ const response = await fetch(url, {
218
+ method: "POST",
219
+ headers: {
220
+ "Content-Type": "application/json",
221
+ "xi-api-key": apiKey
222
+ },
223
+ body: JSON.stringify(isMusic
224
+ ? {
225
+ prompt,
226
+ music_length_ms: audioSettings.durationSeconds
227
+ ? Math.round(audioSettings.durationSeconds * 1000)
228
+ : undefined,
229
+ model_id: audioSettings.model ?? options.musicModel ?? "music_v1",
230
+ force_instrumental: true
231
+ }
232
+ : {
233
+ text: prompt,
234
+ duration_seconds: audioSettings.durationSeconds,
235
+ loop: audioSettings.loop,
236
+ prompt_influence: options.promptInfluence ?? 0.3,
237
+ model_id: audioSettings.model ?? options.sfxModel ?? "eleven_text_to_sound_v2"
238
+ })
239
+ });
240
+ if (!response.ok) {
241
+ throw new Error(`ElevenLabs audio generation failed (${response.status}): ${await response.text()}`);
242
+ }
243
+ const bytes = new Uint8Array(await response.arrayBuffer());
244
+ return {
245
+ image: bytes,
246
+ mimeType: mimeTypeForAudioFormat(format),
247
+ prompt,
248
+ model: audioSettings.model ?? (isMusic ? options.musicModel ?? "music_v1" : options.sfxModel ?? "eleven_text_to_sound_v2"),
249
+ audioSettings: {
250
+ provider: "elevenlabs",
251
+ ...audioSettings,
252
+ format
253
+ },
254
+ durationSeconds: audioSettings.durationSeconds
255
+ };
256
+ }
257
+ function elevenLabsOutputFormat(format) {
258
+ switch (format) {
259
+ case "wav":
260
+ return "pcm_44100";
261
+ case "opus":
262
+ return "opus_48000_32";
263
+ case "pcm":
264
+ return "pcm_44100";
265
+ case "ogg":
266
+ return "mp3_44100_128";
267
+ case "mp3":
268
+ default:
269
+ return "mp3_44100_128";
270
+ }
271
+ }
272
+ function mimeTypeForAudioFormat(format) {
273
+ switch (format) {
274
+ case "wav":
275
+ return "audio/wav";
276
+ case "ogg":
277
+ return "audio/ogg";
278
+ case "opus":
279
+ return "audio/opus";
280
+ case "pcm":
281
+ return "audio/pcm";
282
+ case "mp3":
283
+ default:
284
+ return "audio/mpeg";
285
+ }
286
+ }
287
+ function readableVoiceName(assetId, versionName) {
288
+ return `${assetId.replace(/[._-]+/g, " ")} ${versionName}`.slice(0, 100);
289
+ }
290
+ //# sourceMappingURL=audio-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-provider.js","sourceRoot":"","sources":["../src/audio-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type { AiImageProvider, GenerateAssetReference, GeneratedAssetOption, GenerateAssetRequest, OpenAiImageProviderOptions } from "./provider.js";
2
+ export { createOpenAiImageProvider } from "./provider.js";
3
+ export type { AiAudioProvider, ElevenLabsAudioProviderOptions, GenerateAudioAssetRequest } from "./audio-provider.js";
4
+ export { createElevenLabsAudioProvider } from "./audio-provider.js";
5
+ export type { AssetStoreOptions, SaveGeneratedOptionInput, SaveGeneratedOptionResult, SaveStyleGuideInput } from "./asset-store.js";
6
+ export { readManifest, saveGeneratedOption, saveStyleGuide, writeManifestModule, writeManifest } from "./asset-store.js";
7
+ export type { AiAssetDevServerOptions } from "./server.js";
8
+ export { createAiAssetDevServer } from "./server.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,YAAY,EACV,eAAe,EACf,8BAA8B,EAC9B,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { createOpenAiImageProvider } from "./provider.js";
2
+ export { createElevenLabsAudioProvider } from "./audio-provider.js";
3
+ export { readManifest, saveGeneratedOption, saveStyleGuide, writeManifestModule, writeManifest } from "./asset-store.js";
4
+ export { createAiAssetDevServer } from "./server.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAQ1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AASpE,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}