@soederpop/luca 0.2.1 → 0.2.2

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.
@@ -1,7 +1,7 @@
1
1
  import { setBuildTimeData, setContainerBuildTimeData } from './index.js';
2
2
 
3
3
  // Auto-generated introspection registry data
4
- // Generated at: 2026-04-05T06:58:06.158Z
4
+ // Generated at: 2026-04-06T20:39:08.561Z
5
5
 
6
6
  setBuildTimeData('features.googleDocs', {
7
7
  "id": "features.googleDocs",
@@ -12132,6 +12132,390 @@ setBuildTimeData('clients.openai', {
12132
12132
  ]
12133
12133
  });
12134
12134
 
12135
+ setBuildTimeData('clients.voicebox', {
12136
+ "id": "clients.voicebox",
12137
+ "description": "VoiceBox client — local TTS synthesis via VoiceBox.sh REST API (Qwen3-TTS). Provides methods for managing voice profiles and generating speech audio locally. Uses the streaming endpoint for synchronous synthesis (returns WAV buffer).",
12138
+ "shortcut": "clients.voicebox",
12139
+ "className": "VoiceBoxClient",
12140
+ "methods": {
12141
+ "connect": {
12142
+ "description": "Validate the VoiceBox server is reachable by hitting the health endpoint.",
12143
+ "parameters": {},
12144
+ "required": [],
12145
+ "returns": "Promise<this>"
12146
+ },
12147
+ "listProfiles": {
12148
+ "description": "List all voice profiles.",
12149
+ "parameters": {},
12150
+ "required": [],
12151
+ "returns": "Promise<any[]>",
12152
+ "examples": [
12153
+ {
12154
+ "language": "ts",
12155
+ "code": "const profiles = await vb.listProfiles()\nconsole.log(profiles.map(p => `${p.name} (${p.sample_count} samples)`))"
12156
+ }
12157
+ ]
12158
+ },
12159
+ "getProfile": {
12160
+ "description": "Get a single voice profile by ID.",
12161
+ "parameters": {
12162
+ "profileId": {
12163
+ "type": "string",
12164
+ "description": "Parameter profileId"
12165
+ }
12166
+ },
12167
+ "required": [
12168
+ "profileId"
12169
+ ],
12170
+ "returns": "Promise<any>"
12171
+ },
12172
+ "createProfile": {
12173
+ "description": "Create a new voice profile.",
12174
+ "parameters": {
12175
+ "name": {
12176
+ "type": "string",
12177
+ "description": "Parameter name"
12178
+ },
12179
+ "options": {
12180
+ "type": "{ description?: string; language?: string }",
12181
+ "description": "Parameter options"
12182
+ }
12183
+ },
12184
+ "required": [
12185
+ "name"
12186
+ ],
12187
+ "returns": "Promise<any>"
12188
+ },
12189
+ "listEffects": {
12190
+ "description": "List available audio effects and their parameter definitions.",
12191
+ "parameters": {},
12192
+ "required": [],
12193
+ "returns": "Promise<any>"
12194
+ },
12195
+ "synthesize": {
12196
+ "description": "Synthesize speech from text using the streaming endpoint. Returns audio as a WAV Buffer (synchronous — blocks until audio is ready).",
12197
+ "parameters": {
12198
+ "text": {
12199
+ "type": "string",
12200
+ "description": "The text to convert to speech"
12201
+ },
12202
+ "options": {
12203
+ "type": "SynthesizeOptions",
12204
+ "description": "Profile, engine, model, and other synthesis options",
12205
+ "properties": {
12206
+ "profileId": {
12207
+ "type": "string",
12208
+ "description": ""
12209
+ },
12210
+ "engine": {
12211
+ "type": "string",
12212
+ "description": ""
12213
+ },
12214
+ "modelSize": {
12215
+ "type": "string",
12216
+ "description": ""
12217
+ },
12218
+ "language": {
12219
+ "type": "string",
12220
+ "description": ""
12221
+ },
12222
+ "instruct": {
12223
+ "type": "string",
12224
+ "description": ""
12225
+ },
12226
+ "seed": {
12227
+ "type": "number",
12228
+ "description": ""
12229
+ },
12230
+ "maxChunkChars": {
12231
+ "type": "number",
12232
+ "description": ""
12233
+ },
12234
+ "crossfadeMs": {
12235
+ "type": "number",
12236
+ "description": ""
12237
+ },
12238
+ "normalize": {
12239
+ "type": "boolean",
12240
+ "description": ""
12241
+ },
12242
+ "effectsChain": {
12243
+ "type": "EffectConfig[]",
12244
+ "description": ""
12245
+ },
12246
+ "disableCache": {
12247
+ "type": "boolean",
12248
+ "description": ""
12249
+ }
12250
+ }
12251
+ }
12252
+ },
12253
+ "required": [
12254
+ "text"
12255
+ ],
12256
+ "returns": "Promise<Buffer>",
12257
+ "examples": [
12258
+ {
12259
+ "language": "ts",
12260
+ "code": "const audio = await vb.synthesize('Hello world', { profileId: 'abc-123' })\n// audio is a Buffer of WAV data"
12261
+ }
12262
+ ]
12263
+ },
12264
+ "generate": {
12265
+ "description": "Generate speech asynchronously (returns metadata, not audio). Use getAudio() to fetch the audio after generation completes.",
12266
+ "parameters": {
12267
+ "text": {
12268
+ "type": "string",
12269
+ "description": "Parameter text"
12270
+ },
12271
+ "options": {
12272
+ "type": "SynthesizeOptions",
12273
+ "description": "Parameter options",
12274
+ "properties": {
12275
+ "profileId": {
12276
+ "type": "string",
12277
+ "description": ""
12278
+ },
12279
+ "engine": {
12280
+ "type": "string",
12281
+ "description": ""
12282
+ },
12283
+ "modelSize": {
12284
+ "type": "string",
12285
+ "description": ""
12286
+ },
12287
+ "language": {
12288
+ "type": "string",
12289
+ "description": ""
12290
+ },
12291
+ "instruct": {
12292
+ "type": "string",
12293
+ "description": ""
12294
+ },
12295
+ "seed": {
12296
+ "type": "number",
12297
+ "description": ""
12298
+ },
12299
+ "maxChunkChars": {
12300
+ "type": "number",
12301
+ "description": ""
12302
+ },
12303
+ "crossfadeMs": {
12304
+ "type": "number",
12305
+ "description": ""
12306
+ },
12307
+ "normalize": {
12308
+ "type": "boolean",
12309
+ "description": ""
12310
+ },
12311
+ "effectsChain": {
12312
+ "type": "EffectConfig[]",
12313
+ "description": ""
12314
+ },
12315
+ "disableCache": {
12316
+ "type": "boolean",
12317
+ "description": ""
12318
+ }
12319
+ }
12320
+ }
12321
+ },
12322
+ "required": [
12323
+ "text"
12324
+ ],
12325
+ "returns": "Promise<any>"
12326
+ },
12327
+ "getAudio": {
12328
+ "description": "Fetch generated audio by generation ID. Returns WAV Buffer.",
12329
+ "parameters": {
12330
+ "generationId": {
12331
+ "type": "string",
12332
+ "description": "Parameter generationId"
12333
+ }
12334
+ },
12335
+ "required": [
12336
+ "generationId"
12337
+ ],
12338
+ "returns": "Promise<Buffer>"
12339
+ },
12340
+ "say": {
12341
+ "description": "Synthesize and write audio to a file.",
12342
+ "parameters": {
12343
+ "text": {
12344
+ "type": "string",
12345
+ "description": "Parameter text"
12346
+ },
12347
+ "outputPath": {
12348
+ "type": "string",
12349
+ "description": "Parameter outputPath"
12350
+ },
12351
+ "options": {
12352
+ "type": "SynthesizeOptions",
12353
+ "description": "Parameter options",
12354
+ "properties": {
12355
+ "profileId": {
12356
+ "type": "string",
12357
+ "description": ""
12358
+ },
12359
+ "engine": {
12360
+ "type": "string",
12361
+ "description": ""
12362
+ },
12363
+ "modelSize": {
12364
+ "type": "string",
12365
+ "description": ""
12366
+ },
12367
+ "language": {
12368
+ "type": "string",
12369
+ "description": ""
12370
+ },
12371
+ "instruct": {
12372
+ "type": "string",
12373
+ "description": ""
12374
+ },
12375
+ "seed": {
12376
+ "type": "number",
12377
+ "description": ""
12378
+ },
12379
+ "maxChunkChars": {
12380
+ "type": "number",
12381
+ "description": ""
12382
+ },
12383
+ "crossfadeMs": {
12384
+ "type": "number",
12385
+ "description": ""
12386
+ },
12387
+ "normalize": {
12388
+ "type": "boolean",
12389
+ "description": ""
12390
+ },
12391
+ "effectsChain": {
12392
+ "type": "EffectConfig[]",
12393
+ "description": ""
12394
+ },
12395
+ "disableCache": {
12396
+ "type": "boolean",
12397
+ "description": ""
12398
+ }
12399
+ }
12400
+ }
12401
+ },
12402
+ "required": [
12403
+ "text",
12404
+ "outputPath"
12405
+ ],
12406
+ "returns": "Promise<string>"
12407
+ }
12408
+ },
12409
+ "getters": {},
12410
+ "events": {
12411
+ "failure": {
12412
+ "name": "failure",
12413
+ "description": "Event emitted by VoiceBoxClient",
12414
+ "arguments": {}
12415
+ },
12416
+ "profiles": {
12417
+ "name": "profiles",
12418
+ "description": "Event emitted by VoiceBoxClient",
12419
+ "arguments": {}
12420
+ },
12421
+ "speech": {
12422
+ "name": "speech",
12423
+ "description": "Event emitted by VoiceBoxClient",
12424
+ "arguments": {}
12425
+ }
12426
+ },
12427
+ "state": {},
12428
+ "options": {},
12429
+ "envVars": [],
12430
+ "examples": [
12431
+ {
12432
+ "language": "ts",
12433
+ "code": "const vb = container.client('voicebox')\nawait vb.connect()\nconst profiles = await vb.listProfiles()\nconst audio = await vb.synthesize('Hello world', { profileId: profiles[0].id })\n// audio is a Buffer of WAV data"
12434
+ }
12435
+ ],
12436
+ "types": {
12437
+ "SynthesizeOptions": {
12438
+ "description": "",
12439
+ "properties": {
12440
+ "profileId": {
12441
+ "type": "string",
12442
+ "description": "",
12443
+ "optional": true
12444
+ },
12445
+ "engine": {
12446
+ "type": "string",
12447
+ "description": "",
12448
+ "optional": true
12449
+ },
12450
+ "modelSize": {
12451
+ "type": "string",
12452
+ "description": "",
12453
+ "optional": true
12454
+ },
12455
+ "language": {
12456
+ "type": "string",
12457
+ "description": "",
12458
+ "optional": true
12459
+ },
12460
+ "instruct": {
12461
+ "type": "string",
12462
+ "description": "",
12463
+ "optional": true
12464
+ },
12465
+ "seed": {
12466
+ "type": "number",
12467
+ "description": "",
12468
+ "optional": true
12469
+ },
12470
+ "maxChunkChars": {
12471
+ "type": "number",
12472
+ "description": "",
12473
+ "optional": true
12474
+ },
12475
+ "crossfadeMs": {
12476
+ "type": "number",
12477
+ "description": "",
12478
+ "optional": true
12479
+ },
12480
+ "normalize": {
12481
+ "type": "boolean",
12482
+ "description": "",
12483
+ "optional": true
12484
+ },
12485
+ "effectsChain": {
12486
+ "type": "EffectConfig[]",
12487
+ "description": "",
12488
+ "optional": true
12489
+ },
12490
+ "disableCache": {
12491
+ "type": "boolean",
12492
+ "description": "",
12493
+ "optional": true
12494
+ }
12495
+ }
12496
+ },
12497
+ "EffectConfig": {
12498
+ "description": "",
12499
+ "properties": {
12500
+ "type": {
12501
+ "type": "string",
12502
+ "description": ""
12503
+ },
12504
+ "enabled": {
12505
+ "type": "boolean",
12506
+ "description": "",
12507
+ "optional": true
12508
+ },
12509
+ "params": {
12510
+ "type": "Record<string, any>",
12511
+ "description": "",
12512
+ "optional": true
12513
+ }
12514
+ }
12515
+ }
12516
+ }
12517
+ });
12518
+
12135
12519
  setBuildTimeData('clients.supabase', {
12136
12520
  "id": "clients.supabase",
12137
12521
  "description": "Supabase client for the Luca container system. Wraps the official `@supabase/supabase-js` SDK and exposes it through Luca's typed state, events, and introspection system. The SDK is isomorphic so this single implementation works in both Node and browser containers. Use `client.sdk` for full SDK access, or use the convenience wrappers for common operations (auth, database queries, storage, edge functions, realtime).",
@@ -25808,137 +26192,439 @@ export const introspectionData = [
25808
26192
  }
25809
26193
  },
25810
26194
  "required": [
25811
- "input"
26195
+ "input"
26196
+ ],
26197
+ "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
26198
+ "examples": [
26199
+ {
26200
+ "language": "ts",
26201
+ "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
26202
+ }
26203
+ ]
26204
+ },
26205
+ "createImage": {
26206
+ "description": "Generate an image from a text prompt using DALL-E.",
26207
+ "parameters": {
26208
+ "prompt": {
26209
+ "type": "string",
26210
+ "description": "Description of the image to generate"
26211
+ },
26212
+ "options": {
26213
+ "type": "Partial<OpenAI.Images.ImageGenerateParams>",
26214
+ "description": "Additional parameters (size, n, etc.)"
26215
+ }
26216
+ },
26217
+ "required": [
26218
+ "prompt"
26219
+ ],
26220
+ "returns": "Promise<OpenAI.Images.ImagesResponse>",
26221
+ "examples": [
26222
+ {
26223
+ "language": "ts",
26224
+ "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
26225
+ }
26226
+ ]
26227
+ },
26228
+ "listModels": {
26229
+ "description": "List all available models.",
26230
+ "parameters": {},
26231
+ "required": [],
26232
+ "returns": "Promise<OpenAI.Models.ModelsPage>",
26233
+ "examples": [
26234
+ {
26235
+ "language": "ts",
26236
+ "code": "const models = await openai.listModels()"
26237
+ }
26238
+ ]
26239
+ },
26240
+ "ask": {
26241
+ "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
26242
+ "parameters": {
26243
+ "question": {
26244
+ "type": "string",
26245
+ "description": "The question to ask"
26246
+ },
26247
+ "options": {
26248
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
26249
+ "description": "Additional completion parameters"
26250
+ }
26251
+ },
26252
+ "required": [
26253
+ "question"
26254
+ ],
26255
+ "returns": "Promise<string>",
26256
+ "examples": [
26257
+ {
26258
+ "language": "ts",
26259
+ "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
26260
+ }
26261
+ ]
26262
+ },
26263
+ "chat": {
26264
+ "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
26265
+ "parameters": {
26266
+ "messages": {
26267
+ "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
26268
+ "description": "Array of chat messages"
26269
+ },
26270
+ "options": {
26271
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
26272
+ "description": "Additional completion parameters"
26273
+ }
26274
+ },
26275
+ "required": [
26276
+ "messages"
26277
+ ],
26278
+ "returns": "Promise<string>",
26279
+ "examples": [
26280
+ {
26281
+ "language": "ts",
26282
+ "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
26283
+ }
26284
+ ]
26285
+ }
26286
+ },
26287
+ "getters": {
26288
+ "defaultModel": {
26289
+ "description": "The default model used for completions, from options or 'gpt-4o'.",
26290
+ "returns": "string"
26291
+ },
26292
+ "raw": {
26293
+ "description": "The underlying OpenAI SDK instance for advanced use cases.",
26294
+ "returns": "OpenAI"
26295
+ }
26296
+ },
26297
+ "events": {
26298
+ "connected": {
26299
+ "name": "connected",
26300
+ "description": "Event emitted by OpenAIClient",
26301
+ "arguments": {}
26302
+ },
26303
+ "failure": {
26304
+ "name": "failure",
26305
+ "description": "Event emitted by OpenAIClient",
26306
+ "arguments": {}
26307
+ },
26308
+ "completion": {
26309
+ "name": "completion",
26310
+ "description": "Event emitted by OpenAIClient",
26311
+ "arguments": {}
26312
+ },
26313
+ "embedding": {
26314
+ "name": "embedding",
26315
+ "description": "Event emitted by OpenAIClient",
26316
+ "arguments": {}
26317
+ },
26318
+ "image": {
26319
+ "name": "image",
26320
+ "description": "Event emitted by OpenAIClient",
26321
+ "arguments": {}
26322
+ },
26323
+ "models": {
26324
+ "name": "models",
26325
+ "description": "Event emitted by OpenAIClient",
26326
+ "arguments": {}
26327
+ }
26328
+ },
26329
+ "state": {},
26330
+ "options": {},
26331
+ "envVars": [],
26332
+ "examples": [
26333
+ {
26334
+ "language": "ts",
26335
+ "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
26336
+ }
26337
+ ]
26338
+ },
26339
+ {
26340
+ "id": "clients.voicebox",
26341
+ "description": "VoiceBox client — local TTS synthesis via VoiceBox.sh REST API (Qwen3-TTS). Provides methods for managing voice profiles and generating speech audio locally. Uses the streaming endpoint for synchronous synthesis (returns WAV buffer).",
26342
+ "shortcut": "clients.voicebox",
26343
+ "className": "VoiceBoxClient",
26344
+ "methods": {
26345
+ "connect": {
26346
+ "description": "Validate the VoiceBox server is reachable by hitting the health endpoint.",
26347
+ "parameters": {},
26348
+ "required": [],
26349
+ "returns": "Promise<this>"
26350
+ },
26351
+ "listProfiles": {
26352
+ "description": "List all voice profiles.",
26353
+ "parameters": {},
26354
+ "required": [],
26355
+ "returns": "Promise<any[]>",
26356
+ "examples": [
26357
+ {
26358
+ "language": "ts",
26359
+ "code": "const profiles = await vb.listProfiles()\nconsole.log(profiles.map(p => `${p.name} (${p.sample_count} samples)`))"
26360
+ }
26361
+ ]
26362
+ },
26363
+ "getProfile": {
26364
+ "description": "Get a single voice profile by ID.",
26365
+ "parameters": {
26366
+ "profileId": {
26367
+ "type": "string",
26368
+ "description": "Parameter profileId"
26369
+ }
26370
+ },
26371
+ "required": [
26372
+ "profileId"
26373
+ ],
26374
+ "returns": "Promise<any>"
26375
+ },
26376
+ "createProfile": {
26377
+ "description": "Create a new voice profile.",
26378
+ "parameters": {
26379
+ "name": {
26380
+ "type": "string",
26381
+ "description": "Parameter name"
26382
+ },
26383
+ "options": {
26384
+ "type": "{ description?: string; language?: string }",
26385
+ "description": "Parameter options"
26386
+ }
26387
+ },
26388
+ "required": [
26389
+ "name"
26390
+ ],
26391
+ "returns": "Promise<any>"
26392
+ },
26393
+ "listEffects": {
26394
+ "description": "List available audio effects and their parameter definitions.",
26395
+ "parameters": {},
26396
+ "required": [],
26397
+ "returns": "Promise<any>"
26398
+ },
26399
+ "synthesize": {
26400
+ "description": "Synthesize speech from text using the streaming endpoint. Returns audio as a WAV Buffer (synchronous — blocks until audio is ready).",
26401
+ "parameters": {
26402
+ "text": {
26403
+ "type": "string",
26404
+ "description": "The text to convert to speech"
26405
+ },
26406
+ "options": {
26407
+ "type": "SynthesizeOptions",
26408
+ "description": "Profile, engine, model, and other synthesis options",
26409
+ "properties": {
26410
+ "profileId": {
26411
+ "type": "string",
26412
+ "description": ""
26413
+ },
26414
+ "engine": {
26415
+ "type": "string",
26416
+ "description": ""
26417
+ },
26418
+ "modelSize": {
26419
+ "type": "string",
26420
+ "description": ""
26421
+ },
26422
+ "language": {
26423
+ "type": "string",
26424
+ "description": ""
26425
+ },
26426
+ "instruct": {
26427
+ "type": "string",
26428
+ "description": ""
26429
+ },
26430
+ "seed": {
26431
+ "type": "number",
26432
+ "description": ""
26433
+ },
26434
+ "maxChunkChars": {
26435
+ "type": "number",
26436
+ "description": ""
26437
+ },
26438
+ "crossfadeMs": {
26439
+ "type": "number",
26440
+ "description": ""
26441
+ },
26442
+ "normalize": {
26443
+ "type": "boolean",
26444
+ "description": ""
26445
+ },
26446
+ "effectsChain": {
26447
+ "type": "EffectConfig[]",
26448
+ "description": ""
26449
+ },
26450
+ "disableCache": {
26451
+ "type": "boolean",
26452
+ "description": ""
26453
+ }
26454
+ }
26455
+ }
26456
+ },
26457
+ "required": [
26458
+ "text"
25812
26459
  ],
25813
- "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
26460
+ "returns": "Promise<Buffer>",
25814
26461
  "examples": [
25815
26462
  {
25816
26463
  "language": "ts",
25817
- "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
26464
+ "code": "const audio = await vb.synthesize('Hello world', { profileId: 'abc-123' })\n// audio is a Buffer of WAV data"
25818
26465
  }
25819
26466
  ]
25820
26467
  },
25821
- "createImage": {
25822
- "description": "Generate an image from a text prompt using DALL-E.",
26468
+ "generate": {
26469
+ "description": "Generate speech asynchronously (returns metadata, not audio). Use getAudio() to fetch the audio after generation completes.",
25823
26470
  "parameters": {
25824
- "prompt": {
26471
+ "text": {
25825
26472
  "type": "string",
25826
- "description": "Description of the image to generate"
26473
+ "description": "Parameter text"
25827
26474
  },
25828
26475
  "options": {
25829
- "type": "Partial<OpenAI.Images.ImageGenerateParams>",
25830
- "description": "Additional parameters (size, n, etc.)"
26476
+ "type": "SynthesizeOptions",
26477
+ "description": "Parameter options",
26478
+ "properties": {
26479
+ "profileId": {
26480
+ "type": "string",
26481
+ "description": ""
26482
+ },
26483
+ "engine": {
26484
+ "type": "string",
26485
+ "description": ""
26486
+ },
26487
+ "modelSize": {
26488
+ "type": "string",
26489
+ "description": ""
26490
+ },
26491
+ "language": {
26492
+ "type": "string",
26493
+ "description": ""
26494
+ },
26495
+ "instruct": {
26496
+ "type": "string",
26497
+ "description": ""
26498
+ },
26499
+ "seed": {
26500
+ "type": "number",
26501
+ "description": ""
26502
+ },
26503
+ "maxChunkChars": {
26504
+ "type": "number",
26505
+ "description": ""
26506
+ },
26507
+ "crossfadeMs": {
26508
+ "type": "number",
26509
+ "description": ""
26510
+ },
26511
+ "normalize": {
26512
+ "type": "boolean",
26513
+ "description": ""
26514
+ },
26515
+ "effectsChain": {
26516
+ "type": "EffectConfig[]",
26517
+ "description": ""
26518
+ },
26519
+ "disableCache": {
26520
+ "type": "boolean",
26521
+ "description": ""
26522
+ }
26523
+ }
25831
26524
  }
25832
26525
  },
25833
26526
  "required": [
25834
- "prompt"
26527
+ "text"
25835
26528
  ],
25836
- "returns": "Promise<OpenAI.Images.ImagesResponse>",
25837
- "examples": [
25838
- {
25839
- "language": "ts",
25840
- "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
25841
- }
25842
- ]
25843
- },
25844
- "listModels": {
25845
- "description": "List all available models.",
25846
- "parameters": {},
25847
- "required": [],
25848
- "returns": "Promise<OpenAI.Models.ModelsPage>",
25849
- "examples": [
25850
- {
25851
- "language": "ts",
25852
- "code": "const models = await openai.listModels()"
25853
- }
25854
- ]
26529
+ "returns": "Promise<any>"
25855
26530
  },
25856
- "ask": {
25857
- "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
26531
+ "getAudio": {
26532
+ "description": "Fetch generated audio by generation ID. Returns WAV Buffer.",
25858
26533
  "parameters": {
25859
- "question": {
26534
+ "generationId": {
25860
26535
  "type": "string",
25861
- "description": "The question to ask"
25862
- },
25863
- "options": {
25864
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
25865
- "description": "Additional completion parameters"
26536
+ "description": "Parameter generationId"
25866
26537
  }
25867
26538
  },
25868
26539
  "required": [
25869
- "question"
26540
+ "generationId"
25870
26541
  ],
25871
- "returns": "Promise<string>",
25872
- "examples": [
25873
- {
25874
- "language": "ts",
25875
- "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
25876
- }
25877
- ]
26542
+ "returns": "Promise<Buffer>"
25878
26543
  },
25879
- "chat": {
25880
- "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
26544
+ "say": {
26545
+ "description": "Synthesize and write audio to a file.",
25881
26546
  "parameters": {
25882
- "messages": {
25883
- "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
25884
- "description": "Array of chat messages"
26547
+ "text": {
26548
+ "type": "string",
26549
+ "description": "Parameter text"
26550
+ },
26551
+ "outputPath": {
26552
+ "type": "string",
26553
+ "description": "Parameter outputPath"
25885
26554
  },
25886
26555
  "options": {
25887
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
25888
- "description": "Additional completion parameters"
26556
+ "type": "SynthesizeOptions",
26557
+ "description": "Parameter options",
26558
+ "properties": {
26559
+ "profileId": {
26560
+ "type": "string",
26561
+ "description": ""
26562
+ },
26563
+ "engine": {
26564
+ "type": "string",
26565
+ "description": ""
26566
+ },
26567
+ "modelSize": {
26568
+ "type": "string",
26569
+ "description": ""
26570
+ },
26571
+ "language": {
26572
+ "type": "string",
26573
+ "description": ""
26574
+ },
26575
+ "instruct": {
26576
+ "type": "string",
26577
+ "description": ""
26578
+ },
26579
+ "seed": {
26580
+ "type": "number",
26581
+ "description": ""
26582
+ },
26583
+ "maxChunkChars": {
26584
+ "type": "number",
26585
+ "description": ""
26586
+ },
26587
+ "crossfadeMs": {
26588
+ "type": "number",
26589
+ "description": ""
26590
+ },
26591
+ "normalize": {
26592
+ "type": "boolean",
26593
+ "description": ""
26594
+ },
26595
+ "effectsChain": {
26596
+ "type": "EffectConfig[]",
26597
+ "description": ""
26598
+ },
26599
+ "disableCache": {
26600
+ "type": "boolean",
26601
+ "description": ""
26602
+ }
26603
+ }
25889
26604
  }
25890
26605
  },
25891
26606
  "required": [
25892
- "messages"
26607
+ "text",
26608
+ "outputPath"
25893
26609
  ],
25894
- "returns": "Promise<string>",
25895
- "examples": [
25896
- {
25897
- "language": "ts",
25898
- "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
25899
- }
25900
- ]
25901
- }
25902
- },
25903
- "getters": {
25904
- "defaultModel": {
25905
- "description": "The default model used for completions, from options or 'gpt-4o'.",
25906
- "returns": "string"
25907
- },
25908
- "raw": {
25909
- "description": "The underlying OpenAI SDK instance for advanced use cases.",
25910
- "returns": "OpenAI"
26610
+ "returns": "Promise<string>"
25911
26611
  }
25912
26612
  },
26613
+ "getters": {},
25913
26614
  "events": {
25914
- "connected": {
25915
- "name": "connected",
25916
- "description": "Event emitted by OpenAIClient",
25917
- "arguments": {}
25918
- },
25919
26615
  "failure": {
25920
26616
  "name": "failure",
25921
- "description": "Event emitted by OpenAIClient",
25922
- "arguments": {}
25923
- },
25924
- "completion": {
25925
- "name": "completion",
25926
- "description": "Event emitted by OpenAIClient",
25927
- "arguments": {}
25928
- },
25929
- "embedding": {
25930
- "name": "embedding",
25931
- "description": "Event emitted by OpenAIClient",
26617
+ "description": "Event emitted by VoiceBoxClient",
25932
26618
  "arguments": {}
25933
26619
  },
25934
- "image": {
25935
- "name": "image",
25936
- "description": "Event emitted by OpenAIClient",
26620
+ "profiles": {
26621
+ "name": "profiles",
26622
+ "description": "Event emitted by VoiceBoxClient",
25937
26623
  "arguments": {}
25938
26624
  },
25939
- "models": {
25940
- "name": "models",
25941
- "description": "Event emitted by OpenAIClient",
26625
+ "speech": {
26626
+ "name": "speech",
26627
+ "description": "Event emitted by VoiceBoxClient",
25942
26628
  "arguments": {}
25943
26629
  }
25944
26630
  },
@@ -25948,9 +26634,90 @@ export const introspectionData = [
25948
26634
  "examples": [
25949
26635
  {
25950
26636
  "language": "ts",
25951
- "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
26637
+ "code": "const vb = container.client('voicebox')\nawait vb.connect()\nconst profiles = await vb.listProfiles()\nconst audio = await vb.synthesize('Hello world', { profileId: profiles[0].id })\n// audio is a Buffer of WAV data"
25952
26638
  }
25953
- ]
26639
+ ],
26640
+ "types": {
26641
+ "SynthesizeOptions": {
26642
+ "description": "",
26643
+ "properties": {
26644
+ "profileId": {
26645
+ "type": "string",
26646
+ "description": "",
26647
+ "optional": true
26648
+ },
26649
+ "engine": {
26650
+ "type": "string",
26651
+ "description": "",
26652
+ "optional": true
26653
+ },
26654
+ "modelSize": {
26655
+ "type": "string",
26656
+ "description": "",
26657
+ "optional": true
26658
+ },
26659
+ "language": {
26660
+ "type": "string",
26661
+ "description": "",
26662
+ "optional": true
26663
+ },
26664
+ "instruct": {
26665
+ "type": "string",
26666
+ "description": "",
26667
+ "optional": true
26668
+ },
26669
+ "seed": {
26670
+ "type": "number",
26671
+ "description": "",
26672
+ "optional": true
26673
+ },
26674
+ "maxChunkChars": {
26675
+ "type": "number",
26676
+ "description": "",
26677
+ "optional": true
26678
+ },
26679
+ "crossfadeMs": {
26680
+ "type": "number",
26681
+ "description": "",
26682
+ "optional": true
26683
+ },
26684
+ "normalize": {
26685
+ "type": "boolean",
26686
+ "description": "",
26687
+ "optional": true
26688
+ },
26689
+ "effectsChain": {
26690
+ "type": "EffectConfig[]",
26691
+ "description": "",
26692
+ "optional": true
26693
+ },
26694
+ "disableCache": {
26695
+ "type": "boolean",
26696
+ "description": "",
26697
+ "optional": true
26698
+ }
26699
+ }
26700
+ },
26701
+ "EffectConfig": {
26702
+ "description": "",
26703
+ "properties": {
26704
+ "type": {
26705
+ "type": "string",
26706
+ "description": ""
26707
+ },
26708
+ "enabled": {
26709
+ "type": "boolean",
26710
+ "description": "",
26711
+ "optional": true
26712
+ },
26713
+ "params": {
26714
+ "type": "Record<string, any>",
26715
+ "description": "",
26716
+ "optional": true
26717
+ }
26718
+ }
26719
+ }
26720
+ }
25954
26721
  },
25955
26722
  {
25956
26723
  "id": "clients.supabase",