@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.272Z
4
+ // Generated at: 2026-04-06T20:39:08.676Z
5
5
 
6
6
  setBuildTimeData('features.googleDocs', {
7
7
  "id": "features.googleDocs",
@@ -11864,499 +11864,6 @@ setBuildTimeData('clients.websocket', {
11864
11864
  "envVars": []
11865
11865
  });
11866
11866
 
11867
- setBuildTimeData('clients.supabase', {
11868
- "id": "clients.supabase",
11869
- "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).",
11870
- "shortcut": "clients.supabase",
11871
- "className": "SupabaseClient",
11872
- "methods": {
11873
- "from": {
11874
- "description": "Start a query on a Postgres table or view.",
11875
- "parameters": {
11876
- "table": {
11877
- "type": "string",
11878
- "description": "The table or view name to query"
11879
- }
11880
- },
11881
- "required": [
11882
- "table"
11883
- ],
11884
- "returns": "void"
11885
- },
11886
- "rpc": {
11887
- "description": "Call a Postgres function (RPC).",
11888
- "parameters": {
11889
- "fn": {
11890
- "type": "string",
11891
- "description": "The function name"
11892
- },
11893
- "params": {
11894
- "type": "Record<string, unknown>",
11895
- "description": "Arguments to pass to the function"
11896
- },
11897
- "options": {
11898
- "type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
11899
- "description": "Optional settings (head, get, count)"
11900
- }
11901
- },
11902
- "required": [
11903
- "fn"
11904
- ],
11905
- "returns": "void"
11906
- },
11907
- "signInWithPassword": {
11908
- "description": "Sign in with email and password.",
11909
- "parameters": {
11910
- "email": {
11911
- "type": "string",
11912
- "description": "Parameter email"
11913
- },
11914
- "password": {
11915
- "type": "string",
11916
- "description": "Parameter password"
11917
- }
11918
- },
11919
- "required": [
11920
- "email",
11921
- "password"
11922
- ],
11923
- "returns": "void"
11924
- },
11925
- "signUp": {
11926
- "description": "Create a new user account with email and password.",
11927
- "parameters": {
11928
- "email": {
11929
- "type": "string",
11930
- "description": "Parameter email"
11931
- },
11932
- "password": {
11933
- "type": "string",
11934
- "description": "Parameter password"
11935
- }
11936
- },
11937
- "required": [
11938
- "email",
11939
- "password"
11940
- ],
11941
- "returns": "void"
11942
- },
11943
- "signOut": {
11944
- "description": "Sign the current user out.",
11945
- "parameters": {},
11946
- "required": [],
11947
- "returns": "void"
11948
- },
11949
- "getSession": {
11950
- "description": "Get the current session, if any.",
11951
- "parameters": {},
11952
- "required": [],
11953
- "returns": "void"
11954
- },
11955
- "getUser": {
11956
- "description": "Get the current user, if any.",
11957
- "parameters": {},
11958
- "required": [],
11959
- "returns": "void"
11960
- },
11961
- "invoke": {
11962
- "description": "Invoke a Supabase Edge Function by name.",
11963
- "parameters": {
11964
- "name": {
11965
- "type": "string",
11966
- "description": "Parameter name"
11967
- },
11968
- "body": {
11969
- "type": "any",
11970
- "description": "Parameter body"
11971
- }
11972
- },
11973
- "required": [
11974
- "name"
11975
- ],
11976
- "returns": "void"
11977
- },
11978
- "subscribe": {
11979
- "description": "Subscribe to realtime changes on a Postgres table.",
11980
- "parameters": {
11981
- "channelName": {
11982
- "type": "string",
11983
- "description": "A name for this subscription channel"
11984
- },
11985
- "table": {
11986
- "type": "string",
11987
- "description": "The table to listen to"
11988
- },
11989
- "callback": {
11990
- "type": "(payload: any) => void",
11991
- "description": "Called with the payload on each change"
11992
- },
11993
- "event": {
11994
- "type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
11995
- "description": "The event type to listen for (default: all changes)"
11996
- }
11997
- },
11998
- "required": [
11999
- "channelName",
12000
- "table",
12001
- "callback"
12002
- ],
12003
- "returns": "RealtimeChannel"
12004
- },
12005
- "unsubscribe": {
12006
- "description": "Unsubscribe and remove a realtime channel by name.",
12007
- "parameters": {
12008
- "channelName": {
12009
- "type": "string",
12010
- "description": "The channel name to remove"
12011
- }
12012
- },
12013
- "required": [
12014
- "channelName"
12015
- ],
12016
- "returns": "void"
12017
- },
12018
- "unsubscribeAll": {
12019
- "description": "Unsubscribe and remove all realtime channels.",
12020
- "parameters": {},
12021
- "required": [],
12022
- "returns": "void"
12023
- },
12024
- "connect": {
12025
- "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
12026
- "parameters": {},
12027
- "required": [],
12028
- "returns": "void"
12029
- },
12030
- "disconnect": {
12031
- "description": "Disconnect by signing out and removing all realtime channels.",
12032
- "parameters": {},
12033
- "required": [],
12034
- "returns": "void"
12035
- }
12036
- },
12037
- "getters": {
12038
- "sdk": {
12039
- "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
12040
- "returns": "SupabaseSDKClient<any, any>"
12041
- },
12042
- "storage": {
12043
- "description": "Returns the Supabase Storage client for managing buckets and files.",
12044
- "returns": "any"
12045
- },
12046
- "functions": {
12047
- "description": "Returns the Supabase Functions client.",
12048
- "returns": "any"
12049
- }
12050
- },
12051
- "events": {},
12052
- "state": {},
12053
- "options": {},
12054
- "envVars": [],
12055
- "examples": [
12056
- {
12057
- "language": "ts",
12058
- "code": "const supabase = container.client('supabase', {\n supabaseUrl: 'https://xyz.supabase.co',\n supabaseKey: 'your-anon-key',\n})\n\n// Query data\nconst { data } = await supabase.from('users').select('*')\n\n// Auth\nawait supabase.signInWithPassword('user@example.com', 'password')\n\n// Realtime\nsupabase.subscribe('changes', 'users', (payload) => {\n console.log('Change:', payload)\n})"
12059
- }
12060
- ]
12061
- });
12062
-
12063
- setBuildTimeData('clients.comfyui', {
12064
- "id": "clients.comfyui",
12065
- "description": "ComfyUI client — execute Stable Diffusion workflows via the ComfyUI API. Connects to a ComfyUI instance to queue prompts, track execution via WebSocket or polling, and download generated images. Supports both UI-format and API-format workflows with automatic conversion.",
12066
- "shortcut": "clients.comfyui",
12067
- "className": "ComfyUIClient",
12068
- "methods": {
12069
- "queuePrompt": {
12070
- "description": "Queue a prompt (API-format workflow) for execution.",
12071
- "parameters": {
12072
- "prompt": {
12073
- "type": "Record<string, any>",
12074
- "description": "The API-format workflow object"
12075
- },
12076
- "clientId": {
12077
- "type": "string",
12078
- "description": "Override the client ID for this request"
12079
- }
12080
- },
12081
- "required": [
12082
- "prompt"
12083
- ],
12084
- "returns": "Promise<{ prompt_id: string; number: number }>",
12085
- "examples": [
12086
- {
12087
- "language": "ts",
12088
- "code": "const { prompt_id } = await comfy.queuePrompt(apiWorkflow)"
12089
- }
12090
- ]
12091
- },
12092
- "getQueue": {
12093
- "description": "Get the current prompt queue status.",
12094
- "parameters": {},
12095
- "required": [],
12096
- "returns": "Promise<{ queue_running: any[]; queue_pending: any[] }>"
12097
- },
12098
- "getHistory": {
12099
- "description": "Get execution history, optionally for a specific prompt.",
12100
- "parameters": {
12101
- "promptId": {
12102
- "type": "string",
12103
- "description": "If provided, returns history for this prompt only"
12104
- }
12105
- },
12106
- "required": [],
12107
- "returns": "Promise<Record<string, any>>"
12108
- },
12109
- "getSystemStats": {
12110
- "description": "Get system stats including GPU memory and queue info.",
12111
- "parameters": {},
12112
- "required": [],
12113
- "returns": "Promise<any>"
12114
- },
12115
- "getObjectInfo": {
12116
- "description": "Get node type info with input/output schemas.",
12117
- "parameters": {
12118
- "nodeClass": {
12119
- "type": "string",
12120
- "description": "If provided, returns info for this node type only"
12121
- }
12122
- },
12123
- "required": [],
12124
- "returns": "Promise<any>"
12125
- },
12126
- "interrupt": {
12127
- "description": "Interrupt the currently executing prompt.",
12128
- "parameters": {},
12129
- "required": [],
12130
- "returns": "Promise<void>"
12131
- },
12132
- "getModels": {
12133
- "description": "List available models, optionally filtered by type.",
12134
- "parameters": {
12135
- "type": {
12136
- "type": "string",
12137
- "description": "Model type filter (e.g., 'checkpoints', 'loras')"
12138
- }
12139
- },
12140
- "required": [],
12141
- "returns": "Promise<string[]>"
12142
- },
12143
- "getEmbeddings": {
12144
- "description": "List available embedding models.",
12145
- "parameters": {},
12146
- "required": [],
12147
- "returns": "Promise<string[]>"
12148
- },
12149
- "uploadImage": {
12150
- "description": "Upload an image to ComfyUI's input directory.",
12151
- "parameters": {
12152
- "file": {
12153
- "type": "Buffer | Blob",
12154
- "description": "The image data as Buffer or Blob"
12155
- },
12156
- "filename": {
12157
- "type": "string",
12158
- "description": "File name for the upload"
12159
- },
12160
- "opts": {
12161
- "type": "{ subfolder?: string; type?: string; overwrite?: boolean }",
12162
- "description": "Upload options (subfolder, type, overwrite)"
12163
- }
12164
- },
12165
- "required": [
12166
- "file",
12167
- "filename"
12168
- ],
12169
- "returns": "Promise<any>"
12170
- },
12171
- "viewImage": {
12172
- "description": "Download a generated image from ComfyUI as a Buffer.",
12173
- "parameters": {
12174
- "filename": {
12175
- "type": "string",
12176
- "description": "The image filename"
12177
- },
12178
- "subfolder": {
12179
- "type": "any",
12180
- "description": "Subfolder within the output directory"
12181
- },
12182
- "type": {
12183
- "type": "any",
12184
- "description": "Image type ('output', 'input', 'temp')"
12185
- }
12186
- },
12187
- "required": [
12188
- "filename"
12189
- ],
12190
- "returns": "Promise<Buffer>"
12191
- },
12192
- "connectWs": {
12193
- "description": "Open a WebSocket connection to ComfyUI for real-time execution tracking. Events emitted: `execution_start`, `executing`, `progress`, `executed`, `execution_cached`, `execution_error`, `execution_complete`.",
12194
- "parameters": {},
12195
- "required": [],
12196
- "returns": "Promise<void>"
12197
- },
12198
- "disconnectWs": {
12199
- "description": "Close the WebSocket connection.",
12200
- "parameters": {},
12201
- "required": [],
12202
- "returns": "void"
12203
- },
12204
- "toApiFormat": {
12205
- "description": "Convert a UI-format workflow to the API format that /prompt expects. Requires a running ComfyUI instance to fetch `object_info` so we can map positional `widgets_values` to their named input fields. If the workflow is already in API format, it's returned as-is.",
12206
- "parameters": {
12207
- "workflow": {
12208
- "type": "Record<string, any>",
12209
- "description": "Parameter workflow"
12210
- }
12211
- },
12212
- "required": [
12213
- "workflow"
12214
- ],
12215
- "returns": "Promise<Record<string, any>>"
12216
- },
12217
- "runWorkflow": {
12218
- "description": "Run a ComfyUI workflow with optional runtime input overrides. Inputs can be provided in two forms: **Direct node mapping** (when no `inputMap` in options): ``` { '3': { seed: 42 }, '6': { text: 'a cat' } } ``` **Named inputs** (when `inputMap` is provided in options): ``` inputs: { positive_prompt: 'a cat', seed: 42 } options.inputMap: { positive_prompt: { nodeId: '6', field: 'text' }, seed: { nodeId: '3', field: 'seed' } } ```",
12219
- "parameters": {
12220
- "workflow": {
12221
- "type": "Record<string, any>",
12222
- "description": "Parameter workflow"
12223
- },
12224
- "inputs": {
12225
- "type": "Record<string, any>",
12226
- "description": "Parameter inputs"
12227
- },
12228
- "options": {
12229
- "type": "WorkflowRunOptions",
12230
- "description": "Parameter options",
12231
- "properties": {
12232
- "poll": {
12233
- "type": "boolean",
12234
- "description": "Use polling instead of WebSocket for tracking execution"
12235
- },
12236
- "pollInterval": {
12237
- "type": "number",
12238
- "description": "Polling interval in ms (default 1000)"
12239
- },
12240
- "inputMap": {
12241
- "type": "InputMapping",
12242
- "description": "Named input mapping: semantic name -> { nodeId, field }"
12243
- },
12244
- "outputDir": {
12245
- "type": "string",
12246
- "description": "If provided, output images are downloaded to this directory"
12247
- }
12248
- }
12249
- }
12250
- },
12251
- "required": [
12252
- "workflow"
12253
- ],
12254
- "returns": "Promise<WorkflowResult>"
12255
- }
12256
- },
12257
- "getters": {
12258
- "clientId": {
12259
- "description": "The unique client ID used for WebSocket session tracking.",
12260
- "returns": "string"
12261
- },
12262
- "wsURL": {
12263
- "description": "The WebSocket URL derived from baseURL or overridden via options.",
12264
- "returns": "string"
12265
- }
12266
- },
12267
- "events": {
12268
- "execution_start": {
12269
- "name": "execution_start",
12270
- "description": "Event emitted by ComfyUIClient",
12271
- "arguments": {}
12272
- },
12273
- "execution_complete": {
12274
- "name": "execution_complete",
12275
- "description": "Event emitted by ComfyUIClient",
12276
- "arguments": {}
12277
- },
12278
- "executing": {
12279
- "name": "executing",
12280
- "description": "Event emitted by ComfyUIClient",
12281
- "arguments": {}
12282
- },
12283
- "progress": {
12284
- "name": "progress",
12285
- "description": "Event emitted by ComfyUIClient",
12286
- "arguments": {}
12287
- },
12288
- "executed": {
12289
- "name": "executed",
12290
- "description": "Event emitted by ComfyUIClient",
12291
- "arguments": {}
12292
- },
12293
- "execution_cached": {
12294
- "name": "execution_cached",
12295
- "description": "Event emitted by ComfyUIClient",
12296
- "arguments": {}
12297
- },
12298
- "execution_error": {
12299
- "name": "execution_error",
12300
- "description": "Event emitted by ComfyUIClient",
12301
- "arguments": {}
12302
- }
12303
- },
12304
- "state": {},
12305
- "options": {},
12306
- "envVars": [],
12307
- "examples": [
12308
- {
12309
- "language": "ts",
12310
- "code": "const comfy = container.client('comfyui', { baseURL: 'http://localhost:8188' })\nconst result = await comfy.runWorkflow(workflow, {\n '6': { text: 'a beautiful sunset' }\n})\nconsole.log(result.images)"
12311
- }
12312
- ],
12313
- "types": {
12314
- "WorkflowRunOptions": {
12315
- "description": "",
12316
- "properties": {
12317
- "poll": {
12318
- "type": "boolean",
12319
- "description": "Use polling instead of WebSocket for tracking execution",
12320
- "optional": true
12321
- },
12322
- "pollInterval": {
12323
- "type": "number",
12324
- "description": "Polling interval in ms (default 1000)",
12325
- "optional": true
12326
- },
12327
- "inputMap": {
12328
- "type": "InputMapping",
12329
- "description": "Named input mapping: semantic name -> { nodeId, field }",
12330
- "optional": true
12331
- },
12332
- "outputDir": {
12333
- "type": "string",
12334
- "description": "If provided, output images are downloaded to this directory",
12335
- "optional": true
12336
- }
12337
- }
12338
- },
12339
- "WorkflowResult": {
12340
- "description": "",
12341
- "properties": {
12342
- "promptId": {
12343
- "type": "string",
12344
- "description": ""
12345
- },
12346
- "outputs": {
12347
- "type": "Record<string, any>",
12348
- "description": ""
12349
- },
12350
- "images": {
12351
- "type": "Array<{ filename: string; subfolder: string; type: string; localPath?: string }>",
12352
- "description": "",
12353
- "optional": true
12354
- }
12355
- }
12356
- }
12357
- }
12358
- });
12359
-
12360
11867
  setBuildTimeData('clients.openai', {
12361
11868
  "id": "clients.openai",
12362
11869
  "description": "OpenAI client — wraps the OpenAI SDK for chat completions, responses API, embeddings, and image generation. Provides convenience methods for common operations while tracking token usage and request counts. Supports both the Chat Completions API and the newer Responses API.",
@@ -12625,35 +12132,615 @@ setBuildTimeData('clients.openai', {
12625
12132
  ]
12626
12133
  });
12627
12134
 
12628
- setBuildTimeData('clients.elevenlabs', {
12629
- "id": "clients.elevenlabs",
12630
- "description": "ElevenLabs client — text-to-speech synthesis via the ElevenLabs REST API. Provides methods for listing voices, listing models, and generating speech audio. Audio is returned as a Buffer; use `say()` for a convenience method that writes to disk.",
12631
- "shortcut": "clients.elevenlabs",
12632
- "className": "ElevenLabsClient",
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",
12633
12140
  "methods": {
12634
- "beforeRequest": {
12635
- "description": "Inject the xi-api-key header before each request.",
12141
+ "connect": {
12142
+ "description": "Validate the VoiceBox server is reachable by hitting the health endpoint.",
12636
12143
  "parameters": {},
12637
12144
  "required": [],
12638
- "returns": "void"
12145
+ "returns": "Promise<this>"
12639
12146
  },
12640
- "connect": {
12641
- "description": "Validate the API key by listing available models.",
12147
+ "listProfiles": {
12148
+ "description": "List all voice profiles.",
12642
12149
  "parameters": {},
12643
12150
  "required": [],
12644
- "returns": "Promise<this>",
12151
+ "returns": "Promise<any[]>",
12645
12152
  "examples": [
12646
12153
  {
12647
12154
  "language": "ts",
12648
- "code": "await el.connect()"
12155
+ "code": "const profiles = await vb.listProfiles()\nconsole.log(profiles.map(p => `${p.name} (${p.sample_count} samples)`))"
12649
12156
  }
12650
12157
  ]
12651
12158
  },
12652
- "listVoices": {
12653
- "description": "List available voices with optional search and filtering.",
12159
+ "getProfile": {
12160
+ "description": "Get a single voice profile by ID.",
12654
12161
  "parameters": {
12655
- "options": {
12656
- "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
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
+
12519
+ setBuildTimeData('clients.supabase', {
12520
+ "id": "clients.supabase",
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).",
12522
+ "shortcut": "clients.supabase",
12523
+ "className": "SupabaseClient",
12524
+ "methods": {
12525
+ "from": {
12526
+ "description": "Start a query on a Postgres table or view.",
12527
+ "parameters": {
12528
+ "table": {
12529
+ "type": "string",
12530
+ "description": "The table or view name to query"
12531
+ }
12532
+ },
12533
+ "required": [
12534
+ "table"
12535
+ ],
12536
+ "returns": "void"
12537
+ },
12538
+ "rpc": {
12539
+ "description": "Call a Postgres function (RPC).",
12540
+ "parameters": {
12541
+ "fn": {
12542
+ "type": "string",
12543
+ "description": "The function name"
12544
+ },
12545
+ "params": {
12546
+ "type": "Record<string, unknown>",
12547
+ "description": "Arguments to pass to the function"
12548
+ },
12549
+ "options": {
12550
+ "type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
12551
+ "description": "Optional settings (head, get, count)"
12552
+ }
12553
+ },
12554
+ "required": [
12555
+ "fn"
12556
+ ],
12557
+ "returns": "void"
12558
+ },
12559
+ "signInWithPassword": {
12560
+ "description": "Sign in with email and password.",
12561
+ "parameters": {
12562
+ "email": {
12563
+ "type": "string",
12564
+ "description": "Parameter email"
12565
+ },
12566
+ "password": {
12567
+ "type": "string",
12568
+ "description": "Parameter password"
12569
+ }
12570
+ },
12571
+ "required": [
12572
+ "email",
12573
+ "password"
12574
+ ],
12575
+ "returns": "void"
12576
+ },
12577
+ "signUp": {
12578
+ "description": "Create a new user account with email and password.",
12579
+ "parameters": {
12580
+ "email": {
12581
+ "type": "string",
12582
+ "description": "Parameter email"
12583
+ },
12584
+ "password": {
12585
+ "type": "string",
12586
+ "description": "Parameter password"
12587
+ }
12588
+ },
12589
+ "required": [
12590
+ "email",
12591
+ "password"
12592
+ ],
12593
+ "returns": "void"
12594
+ },
12595
+ "signOut": {
12596
+ "description": "Sign the current user out.",
12597
+ "parameters": {},
12598
+ "required": [],
12599
+ "returns": "void"
12600
+ },
12601
+ "getSession": {
12602
+ "description": "Get the current session, if any.",
12603
+ "parameters": {},
12604
+ "required": [],
12605
+ "returns": "void"
12606
+ },
12607
+ "getUser": {
12608
+ "description": "Get the current user, if any.",
12609
+ "parameters": {},
12610
+ "required": [],
12611
+ "returns": "void"
12612
+ },
12613
+ "invoke": {
12614
+ "description": "Invoke a Supabase Edge Function by name.",
12615
+ "parameters": {
12616
+ "name": {
12617
+ "type": "string",
12618
+ "description": "Parameter name"
12619
+ },
12620
+ "body": {
12621
+ "type": "any",
12622
+ "description": "Parameter body"
12623
+ }
12624
+ },
12625
+ "required": [
12626
+ "name"
12627
+ ],
12628
+ "returns": "void"
12629
+ },
12630
+ "subscribe": {
12631
+ "description": "Subscribe to realtime changes on a Postgres table.",
12632
+ "parameters": {
12633
+ "channelName": {
12634
+ "type": "string",
12635
+ "description": "A name for this subscription channel"
12636
+ },
12637
+ "table": {
12638
+ "type": "string",
12639
+ "description": "The table to listen to"
12640
+ },
12641
+ "callback": {
12642
+ "type": "(payload: any) => void",
12643
+ "description": "Called with the payload on each change"
12644
+ },
12645
+ "event": {
12646
+ "type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
12647
+ "description": "The event type to listen for (default: all changes)"
12648
+ }
12649
+ },
12650
+ "required": [
12651
+ "channelName",
12652
+ "table",
12653
+ "callback"
12654
+ ],
12655
+ "returns": "RealtimeChannel"
12656
+ },
12657
+ "unsubscribe": {
12658
+ "description": "Unsubscribe and remove a realtime channel by name.",
12659
+ "parameters": {
12660
+ "channelName": {
12661
+ "type": "string",
12662
+ "description": "The channel name to remove"
12663
+ }
12664
+ },
12665
+ "required": [
12666
+ "channelName"
12667
+ ],
12668
+ "returns": "void"
12669
+ },
12670
+ "unsubscribeAll": {
12671
+ "description": "Unsubscribe and remove all realtime channels.",
12672
+ "parameters": {},
12673
+ "required": [],
12674
+ "returns": "void"
12675
+ },
12676
+ "connect": {
12677
+ "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
12678
+ "parameters": {},
12679
+ "required": [],
12680
+ "returns": "void"
12681
+ },
12682
+ "disconnect": {
12683
+ "description": "Disconnect by signing out and removing all realtime channels.",
12684
+ "parameters": {},
12685
+ "required": [],
12686
+ "returns": "void"
12687
+ }
12688
+ },
12689
+ "getters": {
12690
+ "sdk": {
12691
+ "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
12692
+ "returns": "SupabaseSDKClient<any, any>"
12693
+ },
12694
+ "storage": {
12695
+ "description": "Returns the Supabase Storage client for managing buckets and files.",
12696
+ "returns": "any"
12697
+ },
12698
+ "functions": {
12699
+ "description": "Returns the Supabase Functions client.",
12700
+ "returns": "any"
12701
+ }
12702
+ },
12703
+ "events": {},
12704
+ "state": {},
12705
+ "options": {},
12706
+ "envVars": [],
12707
+ "examples": [
12708
+ {
12709
+ "language": "ts",
12710
+ "code": "const supabase = container.client('supabase', {\n supabaseUrl: 'https://xyz.supabase.co',\n supabaseKey: 'your-anon-key',\n})\n\n// Query data\nconst { data } = await supabase.from('users').select('*')\n\n// Auth\nawait supabase.signInWithPassword('user@example.com', 'password')\n\n// Realtime\nsupabase.subscribe('changes', 'users', (payload) => {\n console.log('Change:', payload)\n})"
12711
+ }
12712
+ ]
12713
+ });
12714
+
12715
+ setBuildTimeData('clients.elevenlabs', {
12716
+ "id": "clients.elevenlabs",
12717
+ "description": "ElevenLabs client — text-to-speech synthesis via the ElevenLabs REST API. Provides methods for listing voices, listing models, and generating speech audio. Audio is returned as a Buffer; use `say()` for a convenience method that writes to disk.",
12718
+ "shortcut": "clients.elevenlabs",
12719
+ "className": "ElevenLabsClient",
12720
+ "methods": {
12721
+ "beforeRequest": {
12722
+ "description": "Inject the xi-api-key header before each request.",
12723
+ "parameters": {},
12724
+ "required": [],
12725
+ "returns": "void"
12726
+ },
12727
+ "connect": {
12728
+ "description": "Validate the API key by listing available models.",
12729
+ "parameters": {},
12730
+ "required": [],
12731
+ "returns": "Promise<this>",
12732
+ "examples": [
12733
+ {
12734
+ "language": "ts",
12735
+ "code": "await el.connect()"
12736
+ }
12737
+ ]
12738
+ },
12739
+ "listVoices": {
12740
+ "description": "List available voices with optional search and filtering.",
12741
+ "parameters": {
12742
+ "options": {
12743
+ "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
12657
12744
  "description": "Query parameters for filtering voices"
12658
12745
  }
12659
12746
  },
@@ -12889,6 +12976,303 @@ setBuildTimeData('clients.elevenlabs', {
12889
12976
  }
12890
12977
  });
12891
12978
 
12979
+ setBuildTimeData('clients.comfyui', {
12980
+ "id": "clients.comfyui",
12981
+ "description": "ComfyUI client — execute Stable Diffusion workflows via the ComfyUI API. Connects to a ComfyUI instance to queue prompts, track execution via WebSocket or polling, and download generated images. Supports both UI-format and API-format workflows with automatic conversion.",
12982
+ "shortcut": "clients.comfyui",
12983
+ "className": "ComfyUIClient",
12984
+ "methods": {
12985
+ "queuePrompt": {
12986
+ "description": "Queue a prompt (API-format workflow) for execution.",
12987
+ "parameters": {
12988
+ "prompt": {
12989
+ "type": "Record<string, any>",
12990
+ "description": "The API-format workflow object"
12991
+ },
12992
+ "clientId": {
12993
+ "type": "string",
12994
+ "description": "Override the client ID for this request"
12995
+ }
12996
+ },
12997
+ "required": [
12998
+ "prompt"
12999
+ ],
13000
+ "returns": "Promise<{ prompt_id: string; number: number }>",
13001
+ "examples": [
13002
+ {
13003
+ "language": "ts",
13004
+ "code": "const { prompt_id } = await comfy.queuePrompt(apiWorkflow)"
13005
+ }
13006
+ ]
13007
+ },
13008
+ "getQueue": {
13009
+ "description": "Get the current prompt queue status.",
13010
+ "parameters": {},
13011
+ "required": [],
13012
+ "returns": "Promise<{ queue_running: any[]; queue_pending: any[] }>"
13013
+ },
13014
+ "getHistory": {
13015
+ "description": "Get execution history, optionally for a specific prompt.",
13016
+ "parameters": {
13017
+ "promptId": {
13018
+ "type": "string",
13019
+ "description": "If provided, returns history for this prompt only"
13020
+ }
13021
+ },
13022
+ "required": [],
13023
+ "returns": "Promise<Record<string, any>>"
13024
+ },
13025
+ "getSystemStats": {
13026
+ "description": "Get system stats including GPU memory and queue info.",
13027
+ "parameters": {},
13028
+ "required": [],
13029
+ "returns": "Promise<any>"
13030
+ },
13031
+ "getObjectInfo": {
13032
+ "description": "Get node type info with input/output schemas.",
13033
+ "parameters": {
13034
+ "nodeClass": {
13035
+ "type": "string",
13036
+ "description": "If provided, returns info for this node type only"
13037
+ }
13038
+ },
13039
+ "required": [],
13040
+ "returns": "Promise<any>"
13041
+ },
13042
+ "interrupt": {
13043
+ "description": "Interrupt the currently executing prompt.",
13044
+ "parameters": {},
13045
+ "required": [],
13046
+ "returns": "Promise<void>"
13047
+ },
13048
+ "getModels": {
13049
+ "description": "List available models, optionally filtered by type.",
13050
+ "parameters": {
13051
+ "type": {
13052
+ "type": "string",
13053
+ "description": "Model type filter (e.g., 'checkpoints', 'loras')"
13054
+ }
13055
+ },
13056
+ "required": [],
13057
+ "returns": "Promise<string[]>"
13058
+ },
13059
+ "getEmbeddings": {
13060
+ "description": "List available embedding models.",
13061
+ "parameters": {},
13062
+ "required": [],
13063
+ "returns": "Promise<string[]>"
13064
+ },
13065
+ "uploadImage": {
13066
+ "description": "Upload an image to ComfyUI's input directory.",
13067
+ "parameters": {
13068
+ "file": {
13069
+ "type": "Buffer | Blob",
13070
+ "description": "The image data as Buffer or Blob"
13071
+ },
13072
+ "filename": {
13073
+ "type": "string",
13074
+ "description": "File name for the upload"
13075
+ },
13076
+ "opts": {
13077
+ "type": "{ subfolder?: string; type?: string; overwrite?: boolean }",
13078
+ "description": "Upload options (subfolder, type, overwrite)"
13079
+ }
13080
+ },
13081
+ "required": [
13082
+ "file",
13083
+ "filename"
13084
+ ],
13085
+ "returns": "Promise<any>"
13086
+ },
13087
+ "viewImage": {
13088
+ "description": "Download a generated image from ComfyUI as a Buffer.",
13089
+ "parameters": {
13090
+ "filename": {
13091
+ "type": "string",
13092
+ "description": "The image filename"
13093
+ },
13094
+ "subfolder": {
13095
+ "type": "any",
13096
+ "description": "Subfolder within the output directory"
13097
+ },
13098
+ "type": {
13099
+ "type": "any",
13100
+ "description": "Image type ('output', 'input', 'temp')"
13101
+ }
13102
+ },
13103
+ "required": [
13104
+ "filename"
13105
+ ],
13106
+ "returns": "Promise<Buffer>"
13107
+ },
13108
+ "connectWs": {
13109
+ "description": "Open a WebSocket connection to ComfyUI for real-time execution tracking. Events emitted: `execution_start`, `executing`, `progress`, `executed`, `execution_cached`, `execution_error`, `execution_complete`.",
13110
+ "parameters": {},
13111
+ "required": [],
13112
+ "returns": "Promise<void>"
13113
+ },
13114
+ "disconnectWs": {
13115
+ "description": "Close the WebSocket connection.",
13116
+ "parameters": {},
13117
+ "required": [],
13118
+ "returns": "void"
13119
+ },
13120
+ "toApiFormat": {
13121
+ "description": "Convert a UI-format workflow to the API format that /prompt expects. Requires a running ComfyUI instance to fetch `object_info` so we can map positional `widgets_values` to their named input fields. If the workflow is already in API format, it's returned as-is.",
13122
+ "parameters": {
13123
+ "workflow": {
13124
+ "type": "Record<string, any>",
13125
+ "description": "Parameter workflow"
13126
+ }
13127
+ },
13128
+ "required": [
13129
+ "workflow"
13130
+ ],
13131
+ "returns": "Promise<Record<string, any>>"
13132
+ },
13133
+ "runWorkflow": {
13134
+ "description": "Run a ComfyUI workflow with optional runtime input overrides. Inputs can be provided in two forms: **Direct node mapping** (when no `inputMap` in options): ``` { '3': { seed: 42 }, '6': { text: 'a cat' } } ``` **Named inputs** (when `inputMap` is provided in options): ``` inputs: { positive_prompt: 'a cat', seed: 42 } options.inputMap: { positive_prompt: { nodeId: '6', field: 'text' }, seed: { nodeId: '3', field: 'seed' } } ```",
13135
+ "parameters": {
13136
+ "workflow": {
13137
+ "type": "Record<string, any>",
13138
+ "description": "Parameter workflow"
13139
+ },
13140
+ "inputs": {
13141
+ "type": "Record<string, any>",
13142
+ "description": "Parameter inputs"
13143
+ },
13144
+ "options": {
13145
+ "type": "WorkflowRunOptions",
13146
+ "description": "Parameter options",
13147
+ "properties": {
13148
+ "poll": {
13149
+ "type": "boolean",
13150
+ "description": "Use polling instead of WebSocket for tracking execution"
13151
+ },
13152
+ "pollInterval": {
13153
+ "type": "number",
13154
+ "description": "Polling interval in ms (default 1000)"
13155
+ },
13156
+ "inputMap": {
13157
+ "type": "InputMapping",
13158
+ "description": "Named input mapping: semantic name -> { nodeId, field }"
13159
+ },
13160
+ "outputDir": {
13161
+ "type": "string",
13162
+ "description": "If provided, output images are downloaded to this directory"
13163
+ }
13164
+ }
13165
+ }
13166
+ },
13167
+ "required": [
13168
+ "workflow"
13169
+ ],
13170
+ "returns": "Promise<WorkflowResult>"
13171
+ }
13172
+ },
13173
+ "getters": {
13174
+ "clientId": {
13175
+ "description": "The unique client ID used for WebSocket session tracking.",
13176
+ "returns": "string"
13177
+ },
13178
+ "wsURL": {
13179
+ "description": "The WebSocket URL derived from baseURL or overridden via options.",
13180
+ "returns": "string"
13181
+ }
13182
+ },
13183
+ "events": {
13184
+ "execution_start": {
13185
+ "name": "execution_start",
13186
+ "description": "Event emitted by ComfyUIClient",
13187
+ "arguments": {}
13188
+ },
13189
+ "execution_complete": {
13190
+ "name": "execution_complete",
13191
+ "description": "Event emitted by ComfyUIClient",
13192
+ "arguments": {}
13193
+ },
13194
+ "executing": {
13195
+ "name": "executing",
13196
+ "description": "Event emitted by ComfyUIClient",
13197
+ "arguments": {}
13198
+ },
13199
+ "progress": {
13200
+ "name": "progress",
13201
+ "description": "Event emitted by ComfyUIClient",
13202
+ "arguments": {}
13203
+ },
13204
+ "executed": {
13205
+ "name": "executed",
13206
+ "description": "Event emitted by ComfyUIClient",
13207
+ "arguments": {}
13208
+ },
13209
+ "execution_cached": {
13210
+ "name": "execution_cached",
13211
+ "description": "Event emitted by ComfyUIClient",
13212
+ "arguments": {}
13213
+ },
13214
+ "execution_error": {
13215
+ "name": "execution_error",
13216
+ "description": "Event emitted by ComfyUIClient",
13217
+ "arguments": {}
13218
+ }
13219
+ },
13220
+ "state": {},
13221
+ "options": {},
13222
+ "envVars": [],
13223
+ "examples": [
13224
+ {
13225
+ "language": "ts",
13226
+ "code": "const comfy = container.client('comfyui', { baseURL: 'http://localhost:8188' })\nconst result = await comfy.runWorkflow(workflow, {\n '6': { text: 'a beautiful sunset' }\n})\nconsole.log(result.images)"
13227
+ }
13228
+ ],
13229
+ "types": {
13230
+ "WorkflowRunOptions": {
13231
+ "description": "",
13232
+ "properties": {
13233
+ "poll": {
13234
+ "type": "boolean",
13235
+ "description": "Use polling instead of WebSocket for tracking execution",
13236
+ "optional": true
13237
+ },
13238
+ "pollInterval": {
13239
+ "type": "number",
13240
+ "description": "Polling interval in ms (default 1000)",
13241
+ "optional": true
13242
+ },
13243
+ "inputMap": {
13244
+ "type": "InputMapping",
13245
+ "description": "Named input mapping: semantic name -> { nodeId, field }",
13246
+ "optional": true
13247
+ },
13248
+ "outputDir": {
13249
+ "type": "string",
13250
+ "description": "If provided, output images are downloaded to this directory",
13251
+ "optional": true
13252
+ }
13253
+ }
13254
+ },
13255
+ "WorkflowResult": {
13256
+ "description": "",
13257
+ "properties": {
13258
+ "promptId": {
13259
+ "type": "string",
13260
+ "description": ""
13261
+ },
13262
+ "outputs": {
13263
+ "type": "Record<string, any>",
13264
+ "description": ""
13265
+ },
13266
+ "images": {
13267
+ "type": "Array<{ filename: string; subfolder: string; type: string; localPath?: string }>",
13268
+ "description": "",
13269
+ "optional": true
13270
+ }
13271
+ }
13272
+ }
13273
+ }
13274
+ });
13275
+
12892
13276
  setBuildTimeData('servers.mcp', {
12893
13277
  "id": "servers.mcp",
12894
13278
  "description": "MCP (Model Context Protocol) server for exposing tools, resources, and prompts to AI clients like Claude Code. Uses the low-level MCP SDK Server class directly with Zod 4 native JSON Schema conversion. Register tools, resources, and prompts programmatically, then start the server over stdio (for CLI integration) or HTTP (for remote access).",
@@ -13615,6 +13999,16 @@ setBuildTimeData('features.assistantsManager', {
13615
13999
  "hasVoice": {
13616
14000
  "type": "boolean",
13617
14001
  "description": "Whether a voice.yaml configuration file exists."
14002
+ },
14003
+ "about": {
14004
+ "type": "string",
14005
+ "description": "Contents of ABOUT.md if present, undefined otherwise.",
14006
+ "optional": true
14007
+ },
14008
+ "meta": {
14009
+ "type": "Record<string, any>",
14010
+ "description": "Frontmatter metadata parsed from CORE.md.",
14011
+ "optional": true
13618
14012
  }
13619
14013
  }
13620
14014
  }
@@ -31309,515 +31703,24 @@ export const introspectionData = [
31309
31703
  "arguments": {}
31310
31704
  },
31311
31705
  "message": {
31312
- "name": "message",
31313
- "description": "Event emitted by WebSocketClient",
31314
- "arguments": {}
31315
- },
31316
- "close": {
31317
- "name": "close",
31318
- "description": "Event emitted by WebSocketClient",
31319
- "arguments": {}
31320
- },
31321
- "reconnecting": {
31322
- "name": "reconnecting",
31323
- "description": "Event emitted by WebSocketClient",
31324
- "arguments": {}
31325
- }
31326
- },
31327
- "state": {},
31328
- "options": {},
31329
- "envVars": []
31330
- },
31331
- {
31332
- "id": "clients.supabase",
31333
- "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).",
31334
- "shortcut": "clients.supabase",
31335
- "className": "SupabaseClient",
31336
- "methods": {
31337
- "from": {
31338
- "description": "Start a query on a Postgres table or view.",
31339
- "parameters": {
31340
- "table": {
31341
- "type": "string",
31342
- "description": "The table or view name to query"
31343
- }
31344
- },
31345
- "required": [
31346
- "table"
31347
- ],
31348
- "returns": "void"
31349
- },
31350
- "rpc": {
31351
- "description": "Call a Postgres function (RPC).",
31352
- "parameters": {
31353
- "fn": {
31354
- "type": "string",
31355
- "description": "The function name"
31356
- },
31357
- "params": {
31358
- "type": "Record<string, unknown>",
31359
- "description": "Arguments to pass to the function"
31360
- },
31361
- "options": {
31362
- "type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
31363
- "description": "Optional settings (head, get, count)"
31364
- }
31365
- },
31366
- "required": [
31367
- "fn"
31368
- ],
31369
- "returns": "void"
31370
- },
31371
- "signInWithPassword": {
31372
- "description": "Sign in with email and password.",
31373
- "parameters": {
31374
- "email": {
31375
- "type": "string",
31376
- "description": "Parameter email"
31377
- },
31378
- "password": {
31379
- "type": "string",
31380
- "description": "Parameter password"
31381
- }
31382
- },
31383
- "required": [
31384
- "email",
31385
- "password"
31386
- ],
31387
- "returns": "void"
31388
- },
31389
- "signUp": {
31390
- "description": "Create a new user account with email and password.",
31391
- "parameters": {
31392
- "email": {
31393
- "type": "string",
31394
- "description": "Parameter email"
31395
- },
31396
- "password": {
31397
- "type": "string",
31398
- "description": "Parameter password"
31399
- }
31400
- },
31401
- "required": [
31402
- "email",
31403
- "password"
31404
- ],
31405
- "returns": "void"
31406
- },
31407
- "signOut": {
31408
- "description": "Sign the current user out.",
31409
- "parameters": {},
31410
- "required": [],
31411
- "returns": "void"
31412
- },
31413
- "getSession": {
31414
- "description": "Get the current session, if any.",
31415
- "parameters": {},
31416
- "required": [],
31417
- "returns": "void"
31418
- },
31419
- "getUser": {
31420
- "description": "Get the current user, if any.",
31421
- "parameters": {},
31422
- "required": [],
31423
- "returns": "void"
31424
- },
31425
- "invoke": {
31426
- "description": "Invoke a Supabase Edge Function by name.",
31427
- "parameters": {
31428
- "name": {
31429
- "type": "string",
31430
- "description": "Parameter name"
31431
- },
31432
- "body": {
31433
- "type": "any",
31434
- "description": "Parameter body"
31435
- }
31436
- },
31437
- "required": [
31438
- "name"
31439
- ],
31440
- "returns": "void"
31441
- },
31442
- "subscribe": {
31443
- "description": "Subscribe to realtime changes on a Postgres table.",
31444
- "parameters": {
31445
- "channelName": {
31446
- "type": "string",
31447
- "description": "A name for this subscription channel"
31448
- },
31449
- "table": {
31450
- "type": "string",
31451
- "description": "The table to listen to"
31452
- },
31453
- "callback": {
31454
- "type": "(payload: any) => void",
31455
- "description": "Called with the payload on each change"
31456
- },
31457
- "event": {
31458
- "type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
31459
- "description": "The event type to listen for (default: all changes)"
31460
- }
31461
- },
31462
- "required": [
31463
- "channelName",
31464
- "table",
31465
- "callback"
31466
- ],
31467
- "returns": "RealtimeChannel"
31468
- },
31469
- "unsubscribe": {
31470
- "description": "Unsubscribe and remove a realtime channel by name.",
31471
- "parameters": {
31472
- "channelName": {
31473
- "type": "string",
31474
- "description": "The channel name to remove"
31475
- }
31476
- },
31477
- "required": [
31478
- "channelName"
31479
- ],
31480
- "returns": "void"
31481
- },
31482
- "unsubscribeAll": {
31483
- "description": "Unsubscribe and remove all realtime channels.",
31484
- "parameters": {},
31485
- "required": [],
31486
- "returns": "void"
31487
- },
31488
- "connect": {
31489
- "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
31490
- "parameters": {},
31491
- "required": [],
31492
- "returns": "void"
31493
- },
31494
- "disconnect": {
31495
- "description": "Disconnect by signing out and removing all realtime channels.",
31496
- "parameters": {},
31497
- "required": [],
31498
- "returns": "void"
31499
- }
31500
- },
31501
- "getters": {
31502
- "sdk": {
31503
- "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
31504
- "returns": "SupabaseSDKClient<any, any>"
31505
- },
31506
- "storage": {
31507
- "description": "Returns the Supabase Storage client for managing buckets and files.",
31508
- "returns": "any"
31509
- },
31510
- "functions": {
31511
- "description": "Returns the Supabase Functions client.",
31512
- "returns": "any"
31513
- }
31514
- },
31515
- "events": {},
31516
- "state": {},
31517
- "options": {},
31518
- "envVars": [],
31519
- "examples": [
31520
- {
31521
- "language": "ts",
31522
- "code": "const supabase = container.client('supabase', {\n supabaseUrl: 'https://xyz.supabase.co',\n supabaseKey: 'your-anon-key',\n})\n\n// Query data\nconst { data } = await supabase.from('users').select('*')\n\n// Auth\nawait supabase.signInWithPassword('user@example.com', 'password')\n\n// Realtime\nsupabase.subscribe('changes', 'users', (payload) => {\n console.log('Change:', payload)\n})"
31523
- }
31524
- ]
31525
- },
31526
- {
31527
- "id": "clients.comfyui",
31528
- "description": "ComfyUI client — execute Stable Diffusion workflows via the ComfyUI API. Connects to a ComfyUI instance to queue prompts, track execution via WebSocket or polling, and download generated images. Supports both UI-format and API-format workflows with automatic conversion.",
31529
- "shortcut": "clients.comfyui",
31530
- "className": "ComfyUIClient",
31531
- "methods": {
31532
- "queuePrompt": {
31533
- "description": "Queue a prompt (API-format workflow) for execution.",
31534
- "parameters": {
31535
- "prompt": {
31536
- "type": "Record<string, any>",
31537
- "description": "The API-format workflow object"
31538
- },
31539
- "clientId": {
31540
- "type": "string",
31541
- "description": "Override the client ID for this request"
31542
- }
31543
- },
31544
- "required": [
31545
- "prompt"
31546
- ],
31547
- "returns": "Promise<{ prompt_id: string; number: number }>",
31548
- "examples": [
31549
- {
31550
- "language": "ts",
31551
- "code": "const { prompt_id } = await comfy.queuePrompt(apiWorkflow)"
31552
- }
31553
- ]
31554
- },
31555
- "getQueue": {
31556
- "description": "Get the current prompt queue status.",
31557
- "parameters": {},
31558
- "required": [],
31559
- "returns": "Promise<{ queue_running: any[]; queue_pending: any[] }>"
31560
- },
31561
- "getHistory": {
31562
- "description": "Get execution history, optionally for a specific prompt.",
31563
- "parameters": {
31564
- "promptId": {
31565
- "type": "string",
31566
- "description": "If provided, returns history for this prompt only"
31567
- }
31568
- },
31569
- "required": [],
31570
- "returns": "Promise<Record<string, any>>"
31571
- },
31572
- "getSystemStats": {
31573
- "description": "Get system stats including GPU memory and queue info.",
31574
- "parameters": {},
31575
- "required": [],
31576
- "returns": "Promise<any>"
31577
- },
31578
- "getObjectInfo": {
31579
- "description": "Get node type info with input/output schemas.",
31580
- "parameters": {
31581
- "nodeClass": {
31582
- "type": "string",
31583
- "description": "If provided, returns info for this node type only"
31584
- }
31585
- },
31586
- "required": [],
31587
- "returns": "Promise<any>"
31588
- },
31589
- "interrupt": {
31590
- "description": "Interrupt the currently executing prompt.",
31591
- "parameters": {},
31592
- "required": [],
31593
- "returns": "Promise<void>"
31594
- },
31595
- "getModels": {
31596
- "description": "List available models, optionally filtered by type.",
31597
- "parameters": {
31598
- "type": {
31599
- "type": "string",
31600
- "description": "Model type filter (e.g., 'checkpoints', 'loras')"
31601
- }
31602
- },
31603
- "required": [],
31604
- "returns": "Promise<string[]>"
31605
- },
31606
- "getEmbeddings": {
31607
- "description": "List available embedding models.",
31608
- "parameters": {},
31609
- "required": [],
31610
- "returns": "Promise<string[]>"
31611
- },
31612
- "uploadImage": {
31613
- "description": "Upload an image to ComfyUI's input directory.",
31614
- "parameters": {
31615
- "file": {
31616
- "type": "Buffer | Blob",
31617
- "description": "The image data as Buffer or Blob"
31618
- },
31619
- "filename": {
31620
- "type": "string",
31621
- "description": "File name for the upload"
31622
- },
31623
- "opts": {
31624
- "type": "{ subfolder?: string; type?: string; overwrite?: boolean }",
31625
- "description": "Upload options (subfolder, type, overwrite)"
31626
- }
31627
- },
31628
- "required": [
31629
- "file",
31630
- "filename"
31631
- ],
31632
- "returns": "Promise<any>"
31633
- },
31634
- "viewImage": {
31635
- "description": "Download a generated image from ComfyUI as a Buffer.",
31636
- "parameters": {
31637
- "filename": {
31638
- "type": "string",
31639
- "description": "The image filename"
31640
- },
31641
- "subfolder": {
31642
- "type": "any",
31643
- "description": "Subfolder within the output directory"
31644
- },
31645
- "type": {
31646
- "type": "any",
31647
- "description": "Image type ('output', 'input', 'temp')"
31648
- }
31649
- },
31650
- "required": [
31651
- "filename"
31652
- ],
31653
- "returns": "Promise<Buffer>"
31654
- },
31655
- "connectWs": {
31656
- "description": "Open a WebSocket connection to ComfyUI for real-time execution tracking. Events emitted: `execution_start`, `executing`, `progress`, `executed`, `execution_cached`, `execution_error`, `execution_complete`.",
31657
- "parameters": {},
31658
- "required": [],
31659
- "returns": "Promise<void>"
31660
- },
31661
- "disconnectWs": {
31662
- "description": "Close the WebSocket connection.",
31663
- "parameters": {},
31664
- "required": [],
31665
- "returns": "void"
31666
- },
31667
- "toApiFormat": {
31668
- "description": "Convert a UI-format workflow to the API format that /prompt expects. Requires a running ComfyUI instance to fetch `object_info` so we can map positional `widgets_values` to their named input fields. If the workflow is already in API format, it's returned as-is.",
31669
- "parameters": {
31670
- "workflow": {
31671
- "type": "Record<string, any>",
31672
- "description": "Parameter workflow"
31673
- }
31674
- },
31675
- "required": [
31676
- "workflow"
31677
- ],
31678
- "returns": "Promise<Record<string, any>>"
31679
- },
31680
- "runWorkflow": {
31681
- "description": "Run a ComfyUI workflow with optional runtime input overrides. Inputs can be provided in two forms: **Direct node mapping** (when no `inputMap` in options): ``` { '3': { seed: 42 }, '6': { text: 'a cat' } } ``` **Named inputs** (when `inputMap` is provided in options): ``` inputs: { positive_prompt: 'a cat', seed: 42 } options.inputMap: { positive_prompt: { nodeId: '6', field: 'text' }, seed: { nodeId: '3', field: 'seed' } } ```",
31682
- "parameters": {
31683
- "workflow": {
31684
- "type": "Record<string, any>",
31685
- "description": "Parameter workflow"
31686
- },
31687
- "inputs": {
31688
- "type": "Record<string, any>",
31689
- "description": "Parameter inputs"
31690
- },
31691
- "options": {
31692
- "type": "WorkflowRunOptions",
31693
- "description": "Parameter options",
31694
- "properties": {
31695
- "poll": {
31696
- "type": "boolean",
31697
- "description": "Use polling instead of WebSocket for tracking execution"
31698
- },
31699
- "pollInterval": {
31700
- "type": "number",
31701
- "description": "Polling interval in ms (default 1000)"
31702
- },
31703
- "inputMap": {
31704
- "type": "InputMapping",
31705
- "description": "Named input mapping: semantic name -> { nodeId, field }"
31706
- },
31707
- "outputDir": {
31708
- "type": "string",
31709
- "description": "If provided, output images are downloaded to this directory"
31710
- }
31711
- }
31712
- }
31713
- },
31714
- "required": [
31715
- "workflow"
31716
- ],
31717
- "returns": "Promise<WorkflowResult>"
31718
- }
31719
- },
31720
- "getters": {
31721
- "clientId": {
31722
- "description": "The unique client ID used for WebSocket session tracking.",
31723
- "returns": "string"
31724
- },
31725
- "wsURL": {
31726
- "description": "The WebSocket URL derived from baseURL or overridden via options.",
31727
- "returns": "string"
31728
- }
31729
- },
31730
- "events": {
31731
- "execution_start": {
31732
- "name": "execution_start",
31733
- "description": "Event emitted by ComfyUIClient",
31734
- "arguments": {}
31735
- },
31736
- "execution_complete": {
31737
- "name": "execution_complete",
31738
- "description": "Event emitted by ComfyUIClient",
31739
- "arguments": {}
31740
- },
31741
- "executing": {
31742
- "name": "executing",
31743
- "description": "Event emitted by ComfyUIClient",
31744
- "arguments": {}
31745
- },
31746
- "progress": {
31747
- "name": "progress",
31748
- "description": "Event emitted by ComfyUIClient",
31749
- "arguments": {}
31750
- },
31751
- "executed": {
31752
- "name": "executed",
31753
- "description": "Event emitted by ComfyUIClient",
31754
- "arguments": {}
31755
- },
31756
- "execution_cached": {
31757
- "name": "execution_cached",
31758
- "description": "Event emitted by ComfyUIClient",
31759
- "arguments": {}
31760
- },
31761
- "execution_error": {
31762
- "name": "execution_error",
31763
- "description": "Event emitted by ComfyUIClient",
31764
- "arguments": {}
31765
- }
31766
- },
31767
- "state": {},
31768
- "options": {},
31769
- "envVars": [],
31770
- "examples": [
31771
- {
31772
- "language": "ts",
31773
- "code": "const comfy = container.client('comfyui', { baseURL: 'http://localhost:8188' })\nconst result = await comfy.runWorkflow(workflow, {\n '6': { text: 'a beautiful sunset' }\n})\nconsole.log(result.images)"
31774
- }
31775
- ],
31776
- "types": {
31777
- "WorkflowRunOptions": {
31778
- "description": "",
31779
- "properties": {
31780
- "poll": {
31781
- "type": "boolean",
31782
- "description": "Use polling instead of WebSocket for tracking execution",
31783
- "optional": true
31784
- },
31785
- "pollInterval": {
31786
- "type": "number",
31787
- "description": "Polling interval in ms (default 1000)",
31788
- "optional": true
31789
- },
31790
- "inputMap": {
31791
- "type": "InputMapping",
31792
- "description": "Named input mapping: semantic name -> { nodeId, field }",
31793
- "optional": true
31794
- },
31795
- "outputDir": {
31796
- "type": "string",
31797
- "description": "If provided, output images are downloaded to this directory",
31798
- "optional": true
31799
- }
31800
- }
31801
- },
31802
- "WorkflowResult": {
31803
- "description": "",
31804
- "properties": {
31805
- "promptId": {
31806
- "type": "string",
31807
- "description": ""
31808
- },
31809
- "outputs": {
31810
- "type": "Record<string, any>",
31811
- "description": ""
31812
- },
31813
- "images": {
31814
- "type": "Array<{ filename: string; subfolder: string; type: string; localPath?: string }>",
31815
- "description": "",
31816
- "optional": true
31817
- }
31818
- }
31706
+ "name": "message",
31707
+ "description": "Event emitted by WebSocketClient",
31708
+ "arguments": {}
31709
+ },
31710
+ "close": {
31711
+ "name": "close",
31712
+ "description": "Event emitted by WebSocketClient",
31713
+ "arguments": {}
31714
+ },
31715
+ "reconnecting": {
31716
+ "name": "reconnecting",
31717
+ "description": "Event emitted by WebSocketClient",
31718
+ "arguments": {}
31819
31719
  }
31820
- }
31720
+ },
31721
+ "state": {},
31722
+ "options": {},
31723
+ "envVars": []
31821
31724
  },
31822
31725
  {
31823
31726
  "id": "clients.openai",
@@ -32086,6 +31989,584 @@ export const introspectionData = [
32086
31989
  }
32087
31990
  ]
32088
31991
  },
31992
+ {
31993
+ "id": "clients.voicebox",
31994
+ "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).",
31995
+ "shortcut": "clients.voicebox",
31996
+ "className": "VoiceBoxClient",
31997
+ "methods": {
31998
+ "connect": {
31999
+ "description": "Validate the VoiceBox server is reachable by hitting the health endpoint.",
32000
+ "parameters": {},
32001
+ "required": [],
32002
+ "returns": "Promise<this>"
32003
+ },
32004
+ "listProfiles": {
32005
+ "description": "List all voice profiles.",
32006
+ "parameters": {},
32007
+ "required": [],
32008
+ "returns": "Promise<any[]>",
32009
+ "examples": [
32010
+ {
32011
+ "language": "ts",
32012
+ "code": "const profiles = await vb.listProfiles()\nconsole.log(profiles.map(p => `${p.name} (${p.sample_count} samples)`))"
32013
+ }
32014
+ ]
32015
+ },
32016
+ "getProfile": {
32017
+ "description": "Get a single voice profile by ID.",
32018
+ "parameters": {
32019
+ "profileId": {
32020
+ "type": "string",
32021
+ "description": "Parameter profileId"
32022
+ }
32023
+ },
32024
+ "required": [
32025
+ "profileId"
32026
+ ],
32027
+ "returns": "Promise<any>"
32028
+ },
32029
+ "createProfile": {
32030
+ "description": "Create a new voice profile.",
32031
+ "parameters": {
32032
+ "name": {
32033
+ "type": "string",
32034
+ "description": "Parameter name"
32035
+ },
32036
+ "options": {
32037
+ "type": "{ description?: string; language?: string }",
32038
+ "description": "Parameter options"
32039
+ }
32040
+ },
32041
+ "required": [
32042
+ "name"
32043
+ ],
32044
+ "returns": "Promise<any>"
32045
+ },
32046
+ "listEffects": {
32047
+ "description": "List available audio effects and their parameter definitions.",
32048
+ "parameters": {},
32049
+ "required": [],
32050
+ "returns": "Promise<any>"
32051
+ },
32052
+ "synthesize": {
32053
+ "description": "Synthesize speech from text using the streaming endpoint. Returns audio as a WAV Buffer (synchronous — blocks until audio is ready).",
32054
+ "parameters": {
32055
+ "text": {
32056
+ "type": "string",
32057
+ "description": "The text to convert to speech"
32058
+ },
32059
+ "options": {
32060
+ "type": "SynthesizeOptions",
32061
+ "description": "Profile, engine, model, and other synthesis options",
32062
+ "properties": {
32063
+ "profileId": {
32064
+ "type": "string",
32065
+ "description": ""
32066
+ },
32067
+ "engine": {
32068
+ "type": "string",
32069
+ "description": ""
32070
+ },
32071
+ "modelSize": {
32072
+ "type": "string",
32073
+ "description": ""
32074
+ },
32075
+ "language": {
32076
+ "type": "string",
32077
+ "description": ""
32078
+ },
32079
+ "instruct": {
32080
+ "type": "string",
32081
+ "description": ""
32082
+ },
32083
+ "seed": {
32084
+ "type": "number",
32085
+ "description": ""
32086
+ },
32087
+ "maxChunkChars": {
32088
+ "type": "number",
32089
+ "description": ""
32090
+ },
32091
+ "crossfadeMs": {
32092
+ "type": "number",
32093
+ "description": ""
32094
+ },
32095
+ "normalize": {
32096
+ "type": "boolean",
32097
+ "description": ""
32098
+ },
32099
+ "effectsChain": {
32100
+ "type": "EffectConfig[]",
32101
+ "description": ""
32102
+ },
32103
+ "disableCache": {
32104
+ "type": "boolean",
32105
+ "description": ""
32106
+ }
32107
+ }
32108
+ }
32109
+ },
32110
+ "required": [
32111
+ "text"
32112
+ ],
32113
+ "returns": "Promise<Buffer>",
32114
+ "examples": [
32115
+ {
32116
+ "language": "ts",
32117
+ "code": "const audio = await vb.synthesize('Hello world', { profileId: 'abc-123' })\n// audio is a Buffer of WAV data"
32118
+ }
32119
+ ]
32120
+ },
32121
+ "generate": {
32122
+ "description": "Generate speech asynchronously (returns metadata, not audio). Use getAudio() to fetch the audio after generation completes.",
32123
+ "parameters": {
32124
+ "text": {
32125
+ "type": "string",
32126
+ "description": "Parameter text"
32127
+ },
32128
+ "options": {
32129
+ "type": "SynthesizeOptions",
32130
+ "description": "Parameter options",
32131
+ "properties": {
32132
+ "profileId": {
32133
+ "type": "string",
32134
+ "description": ""
32135
+ },
32136
+ "engine": {
32137
+ "type": "string",
32138
+ "description": ""
32139
+ },
32140
+ "modelSize": {
32141
+ "type": "string",
32142
+ "description": ""
32143
+ },
32144
+ "language": {
32145
+ "type": "string",
32146
+ "description": ""
32147
+ },
32148
+ "instruct": {
32149
+ "type": "string",
32150
+ "description": ""
32151
+ },
32152
+ "seed": {
32153
+ "type": "number",
32154
+ "description": ""
32155
+ },
32156
+ "maxChunkChars": {
32157
+ "type": "number",
32158
+ "description": ""
32159
+ },
32160
+ "crossfadeMs": {
32161
+ "type": "number",
32162
+ "description": ""
32163
+ },
32164
+ "normalize": {
32165
+ "type": "boolean",
32166
+ "description": ""
32167
+ },
32168
+ "effectsChain": {
32169
+ "type": "EffectConfig[]",
32170
+ "description": ""
32171
+ },
32172
+ "disableCache": {
32173
+ "type": "boolean",
32174
+ "description": ""
32175
+ }
32176
+ }
32177
+ }
32178
+ },
32179
+ "required": [
32180
+ "text"
32181
+ ],
32182
+ "returns": "Promise<any>"
32183
+ },
32184
+ "getAudio": {
32185
+ "description": "Fetch generated audio by generation ID. Returns WAV Buffer.",
32186
+ "parameters": {
32187
+ "generationId": {
32188
+ "type": "string",
32189
+ "description": "Parameter generationId"
32190
+ }
32191
+ },
32192
+ "required": [
32193
+ "generationId"
32194
+ ],
32195
+ "returns": "Promise<Buffer>"
32196
+ },
32197
+ "say": {
32198
+ "description": "Synthesize and write audio to a file.",
32199
+ "parameters": {
32200
+ "text": {
32201
+ "type": "string",
32202
+ "description": "Parameter text"
32203
+ },
32204
+ "outputPath": {
32205
+ "type": "string",
32206
+ "description": "Parameter outputPath"
32207
+ },
32208
+ "options": {
32209
+ "type": "SynthesizeOptions",
32210
+ "description": "Parameter options",
32211
+ "properties": {
32212
+ "profileId": {
32213
+ "type": "string",
32214
+ "description": ""
32215
+ },
32216
+ "engine": {
32217
+ "type": "string",
32218
+ "description": ""
32219
+ },
32220
+ "modelSize": {
32221
+ "type": "string",
32222
+ "description": ""
32223
+ },
32224
+ "language": {
32225
+ "type": "string",
32226
+ "description": ""
32227
+ },
32228
+ "instruct": {
32229
+ "type": "string",
32230
+ "description": ""
32231
+ },
32232
+ "seed": {
32233
+ "type": "number",
32234
+ "description": ""
32235
+ },
32236
+ "maxChunkChars": {
32237
+ "type": "number",
32238
+ "description": ""
32239
+ },
32240
+ "crossfadeMs": {
32241
+ "type": "number",
32242
+ "description": ""
32243
+ },
32244
+ "normalize": {
32245
+ "type": "boolean",
32246
+ "description": ""
32247
+ },
32248
+ "effectsChain": {
32249
+ "type": "EffectConfig[]",
32250
+ "description": ""
32251
+ },
32252
+ "disableCache": {
32253
+ "type": "boolean",
32254
+ "description": ""
32255
+ }
32256
+ }
32257
+ }
32258
+ },
32259
+ "required": [
32260
+ "text",
32261
+ "outputPath"
32262
+ ],
32263
+ "returns": "Promise<string>"
32264
+ }
32265
+ },
32266
+ "getters": {},
32267
+ "events": {
32268
+ "failure": {
32269
+ "name": "failure",
32270
+ "description": "Event emitted by VoiceBoxClient",
32271
+ "arguments": {}
32272
+ },
32273
+ "profiles": {
32274
+ "name": "profiles",
32275
+ "description": "Event emitted by VoiceBoxClient",
32276
+ "arguments": {}
32277
+ },
32278
+ "speech": {
32279
+ "name": "speech",
32280
+ "description": "Event emitted by VoiceBoxClient",
32281
+ "arguments": {}
32282
+ }
32283
+ },
32284
+ "state": {},
32285
+ "options": {},
32286
+ "envVars": [],
32287
+ "examples": [
32288
+ {
32289
+ "language": "ts",
32290
+ "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"
32291
+ }
32292
+ ],
32293
+ "types": {
32294
+ "SynthesizeOptions": {
32295
+ "description": "",
32296
+ "properties": {
32297
+ "profileId": {
32298
+ "type": "string",
32299
+ "description": "",
32300
+ "optional": true
32301
+ },
32302
+ "engine": {
32303
+ "type": "string",
32304
+ "description": "",
32305
+ "optional": true
32306
+ },
32307
+ "modelSize": {
32308
+ "type": "string",
32309
+ "description": "",
32310
+ "optional": true
32311
+ },
32312
+ "language": {
32313
+ "type": "string",
32314
+ "description": "",
32315
+ "optional": true
32316
+ },
32317
+ "instruct": {
32318
+ "type": "string",
32319
+ "description": "",
32320
+ "optional": true
32321
+ },
32322
+ "seed": {
32323
+ "type": "number",
32324
+ "description": "",
32325
+ "optional": true
32326
+ },
32327
+ "maxChunkChars": {
32328
+ "type": "number",
32329
+ "description": "",
32330
+ "optional": true
32331
+ },
32332
+ "crossfadeMs": {
32333
+ "type": "number",
32334
+ "description": "",
32335
+ "optional": true
32336
+ },
32337
+ "normalize": {
32338
+ "type": "boolean",
32339
+ "description": "",
32340
+ "optional": true
32341
+ },
32342
+ "effectsChain": {
32343
+ "type": "EffectConfig[]",
32344
+ "description": "",
32345
+ "optional": true
32346
+ },
32347
+ "disableCache": {
32348
+ "type": "boolean",
32349
+ "description": "",
32350
+ "optional": true
32351
+ }
32352
+ }
32353
+ },
32354
+ "EffectConfig": {
32355
+ "description": "",
32356
+ "properties": {
32357
+ "type": {
32358
+ "type": "string",
32359
+ "description": ""
32360
+ },
32361
+ "enabled": {
32362
+ "type": "boolean",
32363
+ "description": "",
32364
+ "optional": true
32365
+ },
32366
+ "params": {
32367
+ "type": "Record<string, any>",
32368
+ "description": "",
32369
+ "optional": true
32370
+ }
32371
+ }
32372
+ }
32373
+ }
32374
+ },
32375
+ {
32376
+ "id": "clients.supabase",
32377
+ "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).",
32378
+ "shortcut": "clients.supabase",
32379
+ "className": "SupabaseClient",
32380
+ "methods": {
32381
+ "from": {
32382
+ "description": "Start a query on a Postgres table or view.",
32383
+ "parameters": {
32384
+ "table": {
32385
+ "type": "string",
32386
+ "description": "The table or view name to query"
32387
+ }
32388
+ },
32389
+ "required": [
32390
+ "table"
32391
+ ],
32392
+ "returns": "void"
32393
+ },
32394
+ "rpc": {
32395
+ "description": "Call a Postgres function (RPC).",
32396
+ "parameters": {
32397
+ "fn": {
32398
+ "type": "string",
32399
+ "description": "The function name"
32400
+ },
32401
+ "params": {
32402
+ "type": "Record<string, unknown>",
32403
+ "description": "Arguments to pass to the function"
32404
+ },
32405
+ "options": {
32406
+ "type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
32407
+ "description": "Optional settings (head, get, count)"
32408
+ }
32409
+ },
32410
+ "required": [
32411
+ "fn"
32412
+ ],
32413
+ "returns": "void"
32414
+ },
32415
+ "signInWithPassword": {
32416
+ "description": "Sign in with email and password.",
32417
+ "parameters": {
32418
+ "email": {
32419
+ "type": "string",
32420
+ "description": "Parameter email"
32421
+ },
32422
+ "password": {
32423
+ "type": "string",
32424
+ "description": "Parameter password"
32425
+ }
32426
+ },
32427
+ "required": [
32428
+ "email",
32429
+ "password"
32430
+ ],
32431
+ "returns": "void"
32432
+ },
32433
+ "signUp": {
32434
+ "description": "Create a new user account with email and password.",
32435
+ "parameters": {
32436
+ "email": {
32437
+ "type": "string",
32438
+ "description": "Parameter email"
32439
+ },
32440
+ "password": {
32441
+ "type": "string",
32442
+ "description": "Parameter password"
32443
+ }
32444
+ },
32445
+ "required": [
32446
+ "email",
32447
+ "password"
32448
+ ],
32449
+ "returns": "void"
32450
+ },
32451
+ "signOut": {
32452
+ "description": "Sign the current user out.",
32453
+ "parameters": {},
32454
+ "required": [],
32455
+ "returns": "void"
32456
+ },
32457
+ "getSession": {
32458
+ "description": "Get the current session, if any.",
32459
+ "parameters": {},
32460
+ "required": [],
32461
+ "returns": "void"
32462
+ },
32463
+ "getUser": {
32464
+ "description": "Get the current user, if any.",
32465
+ "parameters": {},
32466
+ "required": [],
32467
+ "returns": "void"
32468
+ },
32469
+ "invoke": {
32470
+ "description": "Invoke a Supabase Edge Function by name.",
32471
+ "parameters": {
32472
+ "name": {
32473
+ "type": "string",
32474
+ "description": "Parameter name"
32475
+ },
32476
+ "body": {
32477
+ "type": "any",
32478
+ "description": "Parameter body"
32479
+ }
32480
+ },
32481
+ "required": [
32482
+ "name"
32483
+ ],
32484
+ "returns": "void"
32485
+ },
32486
+ "subscribe": {
32487
+ "description": "Subscribe to realtime changes on a Postgres table.",
32488
+ "parameters": {
32489
+ "channelName": {
32490
+ "type": "string",
32491
+ "description": "A name for this subscription channel"
32492
+ },
32493
+ "table": {
32494
+ "type": "string",
32495
+ "description": "The table to listen to"
32496
+ },
32497
+ "callback": {
32498
+ "type": "(payload: any) => void",
32499
+ "description": "Called with the payload on each change"
32500
+ },
32501
+ "event": {
32502
+ "type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
32503
+ "description": "The event type to listen for (default: all changes)"
32504
+ }
32505
+ },
32506
+ "required": [
32507
+ "channelName",
32508
+ "table",
32509
+ "callback"
32510
+ ],
32511
+ "returns": "RealtimeChannel"
32512
+ },
32513
+ "unsubscribe": {
32514
+ "description": "Unsubscribe and remove a realtime channel by name.",
32515
+ "parameters": {
32516
+ "channelName": {
32517
+ "type": "string",
32518
+ "description": "The channel name to remove"
32519
+ }
32520
+ },
32521
+ "required": [
32522
+ "channelName"
32523
+ ],
32524
+ "returns": "void"
32525
+ },
32526
+ "unsubscribeAll": {
32527
+ "description": "Unsubscribe and remove all realtime channels.",
32528
+ "parameters": {},
32529
+ "required": [],
32530
+ "returns": "void"
32531
+ },
32532
+ "connect": {
32533
+ "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
32534
+ "parameters": {},
32535
+ "required": [],
32536
+ "returns": "void"
32537
+ },
32538
+ "disconnect": {
32539
+ "description": "Disconnect by signing out and removing all realtime channels.",
32540
+ "parameters": {},
32541
+ "required": [],
32542
+ "returns": "void"
32543
+ }
32544
+ },
32545
+ "getters": {
32546
+ "sdk": {
32547
+ "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
32548
+ "returns": "SupabaseSDKClient<any, any>"
32549
+ },
32550
+ "storage": {
32551
+ "description": "Returns the Supabase Storage client for managing buckets and files.",
32552
+ "returns": "any"
32553
+ },
32554
+ "functions": {
32555
+ "description": "Returns the Supabase Functions client.",
32556
+ "returns": "any"
32557
+ }
32558
+ },
32559
+ "events": {},
32560
+ "state": {},
32561
+ "options": {},
32562
+ "envVars": [],
32563
+ "examples": [
32564
+ {
32565
+ "language": "ts",
32566
+ "code": "const supabase = container.client('supabase', {\n supabaseUrl: 'https://xyz.supabase.co',\n supabaseKey: 'your-anon-key',\n})\n\n// Query data\nconst { data } = await supabase.from('users').select('*')\n\n// Auth\nawait supabase.signInWithPassword('user@example.com', 'password')\n\n// Realtime\nsupabase.subscribe('changes', 'users', (payload) => {\n console.log('Change:', payload)\n})"
32567
+ }
32568
+ ]
32569
+ },
32089
32570
  {
32090
32571
  "id": "clients.elevenlabs",
32091
32572
  "description": "ElevenLabs client — text-to-speech synthesis via the ElevenLabs REST API. Provides methods for listing voices, listing models, and generating speech audio. Audio is returned as a Buffer; use `say()` for a convenience method that writes to disk.",
@@ -32349,6 +32830,302 @@ export const introspectionData = [
32349
32830
  }
32350
32831
  }
32351
32832
  },
32833
+ {
32834
+ "id": "clients.comfyui",
32835
+ "description": "ComfyUI client — execute Stable Diffusion workflows via the ComfyUI API. Connects to a ComfyUI instance to queue prompts, track execution via WebSocket or polling, and download generated images. Supports both UI-format and API-format workflows with automatic conversion.",
32836
+ "shortcut": "clients.comfyui",
32837
+ "className": "ComfyUIClient",
32838
+ "methods": {
32839
+ "queuePrompt": {
32840
+ "description": "Queue a prompt (API-format workflow) for execution.",
32841
+ "parameters": {
32842
+ "prompt": {
32843
+ "type": "Record<string, any>",
32844
+ "description": "The API-format workflow object"
32845
+ },
32846
+ "clientId": {
32847
+ "type": "string",
32848
+ "description": "Override the client ID for this request"
32849
+ }
32850
+ },
32851
+ "required": [
32852
+ "prompt"
32853
+ ],
32854
+ "returns": "Promise<{ prompt_id: string; number: number }>",
32855
+ "examples": [
32856
+ {
32857
+ "language": "ts",
32858
+ "code": "const { prompt_id } = await comfy.queuePrompt(apiWorkflow)"
32859
+ }
32860
+ ]
32861
+ },
32862
+ "getQueue": {
32863
+ "description": "Get the current prompt queue status.",
32864
+ "parameters": {},
32865
+ "required": [],
32866
+ "returns": "Promise<{ queue_running: any[]; queue_pending: any[] }>"
32867
+ },
32868
+ "getHistory": {
32869
+ "description": "Get execution history, optionally for a specific prompt.",
32870
+ "parameters": {
32871
+ "promptId": {
32872
+ "type": "string",
32873
+ "description": "If provided, returns history for this prompt only"
32874
+ }
32875
+ },
32876
+ "required": [],
32877
+ "returns": "Promise<Record<string, any>>"
32878
+ },
32879
+ "getSystemStats": {
32880
+ "description": "Get system stats including GPU memory and queue info.",
32881
+ "parameters": {},
32882
+ "required": [],
32883
+ "returns": "Promise<any>"
32884
+ },
32885
+ "getObjectInfo": {
32886
+ "description": "Get node type info with input/output schemas.",
32887
+ "parameters": {
32888
+ "nodeClass": {
32889
+ "type": "string",
32890
+ "description": "If provided, returns info for this node type only"
32891
+ }
32892
+ },
32893
+ "required": [],
32894
+ "returns": "Promise<any>"
32895
+ },
32896
+ "interrupt": {
32897
+ "description": "Interrupt the currently executing prompt.",
32898
+ "parameters": {},
32899
+ "required": [],
32900
+ "returns": "Promise<void>"
32901
+ },
32902
+ "getModels": {
32903
+ "description": "List available models, optionally filtered by type.",
32904
+ "parameters": {
32905
+ "type": {
32906
+ "type": "string",
32907
+ "description": "Model type filter (e.g., 'checkpoints', 'loras')"
32908
+ }
32909
+ },
32910
+ "required": [],
32911
+ "returns": "Promise<string[]>"
32912
+ },
32913
+ "getEmbeddings": {
32914
+ "description": "List available embedding models.",
32915
+ "parameters": {},
32916
+ "required": [],
32917
+ "returns": "Promise<string[]>"
32918
+ },
32919
+ "uploadImage": {
32920
+ "description": "Upload an image to ComfyUI's input directory.",
32921
+ "parameters": {
32922
+ "file": {
32923
+ "type": "Buffer | Blob",
32924
+ "description": "The image data as Buffer or Blob"
32925
+ },
32926
+ "filename": {
32927
+ "type": "string",
32928
+ "description": "File name for the upload"
32929
+ },
32930
+ "opts": {
32931
+ "type": "{ subfolder?: string; type?: string; overwrite?: boolean }",
32932
+ "description": "Upload options (subfolder, type, overwrite)"
32933
+ }
32934
+ },
32935
+ "required": [
32936
+ "file",
32937
+ "filename"
32938
+ ],
32939
+ "returns": "Promise<any>"
32940
+ },
32941
+ "viewImage": {
32942
+ "description": "Download a generated image from ComfyUI as a Buffer.",
32943
+ "parameters": {
32944
+ "filename": {
32945
+ "type": "string",
32946
+ "description": "The image filename"
32947
+ },
32948
+ "subfolder": {
32949
+ "type": "any",
32950
+ "description": "Subfolder within the output directory"
32951
+ },
32952
+ "type": {
32953
+ "type": "any",
32954
+ "description": "Image type ('output', 'input', 'temp')"
32955
+ }
32956
+ },
32957
+ "required": [
32958
+ "filename"
32959
+ ],
32960
+ "returns": "Promise<Buffer>"
32961
+ },
32962
+ "connectWs": {
32963
+ "description": "Open a WebSocket connection to ComfyUI for real-time execution tracking. Events emitted: `execution_start`, `executing`, `progress`, `executed`, `execution_cached`, `execution_error`, `execution_complete`.",
32964
+ "parameters": {},
32965
+ "required": [],
32966
+ "returns": "Promise<void>"
32967
+ },
32968
+ "disconnectWs": {
32969
+ "description": "Close the WebSocket connection.",
32970
+ "parameters": {},
32971
+ "required": [],
32972
+ "returns": "void"
32973
+ },
32974
+ "toApiFormat": {
32975
+ "description": "Convert a UI-format workflow to the API format that /prompt expects. Requires a running ComfyUI instance to fetch `object_info` so we can map positional `widgets_values` to their named input fields. If the workflow is already in API format, it's returned as-is.",
32976
+ "parameters": {
32977
+ "workflow": {
32978
+ "type": "Record<string, any>",
32979
+ "description": "Parameter workflow"
32980
+ }
32981
+ },
32982
+ "required": [
32983
+ "workflow"
32984
+ ],
32985
+ "returns": "Promise<Record<string, any>>"
32986
+ },
32987
+ "runWorkflow": {
32988
+ "description": "Run a ComfyUI workflow with optional runtime input overrides. Inputs can be provided in two forms: **Direct node mapping** (when no `inputMap` in options): ``` { '3': { seed: 42 }, '6': { text: 'a cat' } } ``` **Named inputs** (when `inputMap` is provided in options): ``` inputs: { positive_prompt: 'a cat', seed: 42 } options.inputMap: { positive_prompt: { nodeId: '6', field: 'text' }, seed: { nodeId: '3', field: 'seed' } } ```",
32989
+ "parameters": {
32990
+ "workflow": {
32991
+ "type": "Record<string, any>",
32992
+ "description": "Parameter workflow"
32993
+ },
32994
+ "inputs": {
32995
+ "type": "Record<string, any>",
32996
+ "description": "Parameter inputs"
32997
+ },
32998
+ "options": {
32999
+ "type": "WorkflowRunOptions",
33000
+ "description": "Parameter options",
33001
+ "properties": {
33002
+ "poll": {
33003
+ "type": "boolean",
33004
+ "description": "Use polling instead of WebSocket for tracking execution"
33005
+ },
33006
+ "pollInterval": {
33007
+ "type": "number",
33008
+ "description": "Polling interval in ms (default 1000)"
33009
+ },
33010
+ "inputMap": {
33011
+ "type": "InputMapping",
33012
+ "description": "Named input mapping: semantic name -> { nodeId, field }"
33013
+ },
33014
+ "outputDir": {
33015
+ "type": "string",
33016
+ "description": "If provided, output images are downloaded to this directory"
33017
+ }
33018
+ }
33019
+ }
33020
+ },
33021
+ "required": [
33022
+ "workflow"
33023
+ ],
33024
+ "returns": "Promise<WorkflowResult>"
33025
+ }
33026
+ },
33027
+ "getters": {
33028
+ "clientId": {
33029
+ "description": "The unique client ID used for WebSocket session tracking.",
33030
+ "returns": "string"
33031
+ },
33032
+ "wsURL": {
33033
+ "description": "The WebSocket URL derived from baseURL or overridden via options.",
33034
+ "returns": "string"
33035
+ }
33036
+ },
33037
+ "events": {
33038
+ "execution_start": {
33039
+ "name": "execution_start",
33040
+ "description": "Event emitted by ComfyUIClient",
33041
+ "arguments": {}
33042
+ },
33043
+ "execution_complete": {
33044
+ "name": "execution_complete",
33045
+ "description": "Event emitted by ComfyUIClient",
33046
+ "arguments": {}
33047
+ },
33048
+ "executing": {
33049
+ "name": "executing",
33050
+ "description": "Event emitted by ComfyUIClient",
33051
+ "arguments": {}
33052
+ },
33053
+ "progress": {
33054
+ "name": "progress",
33055
+ "description": "Event emitted by ComfyUIClient",
33056
+ "arguments": {}
33057
+ },
33058
+ "executed": {
33059
+ "name": "executed",
33060
+ "description": "Event emitted by ComfyUIClient",
33061
+ "arguments": {}
33062
+ },
33063
+ "execution_cached": {
33064
+ "name": "execution_cached",
33065
+ "description": "Event emitted by ComfyUIClient",
33066
+ "arguments": {}
33067
+ },
33068
+ "execution_error": {
33069
+ "name": "execution_error",
33070
+ "description": "Event emitted by ComfyUIClient",
33071
+ "arguments": {}
33072
+ }
33073
+ },
33074
+ "state": {},
33075
+ "options": {},
33076
+ "envVars": [],
33077
+ "examples": [
33078
+ {
33079
+ "language": "ts",
33080
+ "code": "const comfy = container.client('comfyui', { baseURL: 'http://localhost:8188' })\nconst result = await comfy.runWorkflow(workflow, {\n '6': { text: 'a beautiful sunset' }\n})\nconsole.log(result.images)"
33081
+ }
33082
+ ],
33083
+ "types": {
33084
+ "WorkflowRunOptions": {
33085
+ "description": "",
33086
+ "properties": {
33087
+ "poll": {
33088
+ "type": "boolean",
33089
+ "description": "Use polling instead of WebSocket for tracking execution",
33090
+ "optional": true
33091
+ },
33092
+ "pollInterval": {
33093
+ "type": "number",
33094
+ "description": "Polling interval in ms (default 1000)",
33095
+ "optional": true
33096
+ },
33097
+ "inputMap": {
33098
+ "type": "InputMapping",
33099
+ "description": "Named input mapping: semantic name -> { nodeId, field }",
33100
+ "optional": true
33101
+ },
33102
+ "outputDir": {
33103
+ "type": "string",
33104
+ "description": "If provided, output images are downloaded to this directory",
33105
+ "optional": true
33106
+ }
33107
+ }
33108
+ },
33109
+ "WorkflowResult": {
33110
+ "description": "",
33111
+ "properties": {
33112
+ "promptId": {
33113
+ "type": "string",
33114
+ "description": ""
33115
+ },
33116
+ "outputs": {
33117
+ "type": "Record<string, any>",
33118
+ "description": ""
33119
+ },
33120
+ "images": {
33121
+ "type": "Array<{ filename: string; subfolder: string; type: string; localPath?: string }>",
33122
+ "description": "",
33123
+ "optional": true
33124
+ }
33125
+ }
33126
+ }
33127
+ }
33128
+ },
32352
33129
  {
32353
33130
  "id": "servers.mcp",
32354
33131
  "description": "MCP (Model Context Protocol) server for exposing tools, resources, and prompts to AI clients like Claude Code. Uses the low-level MCP SDK Server class directly with Zod 4 native JSON Schema conversion. Register tools, resources, and prompts programmatically, then start the server over stdio (for CLI integration) or HTTP (for remote access).",
@@ -33072,6 +33849,16 @@ export const introspectionData = [
33072
33849
  "hasVoice": {
33073
33850
  "type": "boolean",
33074
33851
  "description": "Whether a voice.yaml configuration file exists."
33852
+ },
33853
+ "about": {
33854
+ "type": "string",
33855
+ "description": "Contents of ABOUT.md if present, undefined otherwise.",
33856
+ "optional": true
33857
+ },
33858
+ "meta": {
33859
+ "type": "Record<string, any>",
33860
+ "description": "Frontmatter metadata parsed from CORE.md.",
33861
+ "optional": true
33075
33862
  }
33076
33863
  }
33077
33864
  }