@soederpop/luca 0.0.9 → 0.0.11

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-03-19T00:28:06.079Z
4
+ // Generated at: 2026-03-20T00:15:39.223Z
5
5
 
6
6
  setBuildTimeData('features.googleDocs', {
7
7
  "id": "features.googleDocs",
@@ -9519,274 +9519,6 @@ setBuildTimeData('clients.websocket', {
9519
9519
  ]
9520
9520
  });
9521
9521
 
9522
- setBuildTimeData('clients.openai', {
9523
- "id": "clients.openai",
9524
- "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.",
9525
- "shortcut": "clients.openai",
9526
- "className": "OpenAIClient",
9527
- "methods": {
9528
- "connect": {
9529
- "description": "Test the API connection by listing models.",
9530
- "parameters": {},
9531
- "required": [],
9532
- "returns": "Promise<this>",
9533
- "examples": [
9534
- {
9535
- "language": "ts",
9536
- "code": "await openai.connect()"
9537
- }
9538
- ]
9539
- },
9540
- "createChatCompletion": {
9541
- "description": "Create a chat completion using the Chat Completions API.",
9542
- "parameters": {
9543
- "messages": {
9544
- "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
9545
- "description": "Array of chat messages"
9546
- },
9547
- "options": {
9548
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
9549
- "description": "Additional parameters for the completion"
9550
- }
9551
- },
9552
- "required": [
9553
- "messages"
9554
- ],
9555
- "returns": "Promise<OpenAI.Chat.Completions.ChatCompletion>",
9556
- "examples": [
9557
- {
9558
- "language": "ts",
9559
- "code": "const response = await openai.createChatCompletion([\n { role: 'system', content: 'You are a helpful assistant.' },\n { role: 'user', content: 'Hello!' }\n])\nconsole.log(response.choices[0]?.message?.content)"
9560
- }
9561
- ]
9562
- },
9563
- "createResponse": {
9564
- "description": "Create a response using the Responses API.",
9565
- "parameters": {
9566
- "input": {
9567
- "type": "OpenAI.Responses.ResponseInput | string",
9568
- "description": "The input prompt or message array"
9569
- },
9570
- "options": {
9571
- "type": "Partial<OpenAI.Responses.ResponseCreateParamsNonStreaming>",
9572
- "description": "Additional parameters for the response"
9573
- }
9574
- },
9575
- "required": [
9576
- "input"
9577
- ],
9578
- "returns": "Promise<OpenAI.Responses.Response>",
9579
- "examples": [
9580
- {
9581
- "language": "ts",
9582
- "code": "const response = await openai.createResponse('Explain quantum computing')"
9583
- }
9584
- ]
9585
- },
9586
- "streamResponse": {
9587
- "description": "Stream a response using the Responses API.",
9588
- "parameters": {
9589
- "input": {
9590
- "type": "OpenAI.Responses.ResponseInput | string",
9591
- "description": "The input prompt or message array"
9592
- },
9593
- "options": {
9594
- "type": "Partial<OpenAI.Responses.ResponseCreateParamsStreaming>",
9595
- "description": "Additional parameters for the streaming response"
9596
- }
9597
- },
9598
- "required": [
9599
- "input"
9600
- ],
9601
- "returns": "Promise<AsyncIterable<OpenAI.Responses.ResponseStreamEvent>>",
9602
- "examples": [
9603
- {
9604
- "language": "ts",
9605
- "code": "const stream = await openai.streamResponse('Write a poem')\nfor await (const event of stream) {\n if (event.type === 'response.output_text.delta') {\n process.stdout.write(event.delta)\n }\n}"
9606
- }
9607
- ]
9608
- },
9609
- "createCompletion": {
9610
- "description": "Create a legacy text completion.",
9611
- "parameters": {
9612
- "prompt": {
9613
- "type": "string",
9614
- "description": "The text prompt to complete"
9615
- },
9616
- "options": {
9617
- "type": "Partial<OpenAI.Completions.CompletionCreateParams>",
9618
- "description": "Additional parameters for the completion"
9619
- }
9620
- },
9621
- "required": [
9622
- "prompt"
9623
- ],
9624
- "returns": "Promise<OpenAI.Completions.Completion>",
9625
- "examples": [
9626
- {
9627
- "language": "ts",
9628
- "code": "const response = await openai.createCompletion('Once upon a time')"
9629
- }
9630
- ]
9631
- },
9632
- "createEmbedding": {
9633
- "description": "Create text embeddings for semantic search or similarity comparisons.",
9634
- "parameters": {
9635
- "input": {
9636
- "type": "string | string[]",
9637
- "description": "A string or array of strings to embed"
9638
- },
9639
- "options": {
9640
- "type": "Partial<OpenAI.Embeddings.EmbeddingCreateParams>",
9641
- "description": "Additional parameters (model, etc.)"
9642
- }
9643
- },
9644
- "required": [
9645
- "input"
9646
- ],
9647
- "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
9648
- "examples": [
9649
- {
9650
- "language": "ts",
9651
- "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
9652
- }
9653
- ]
9654
- },
9655
- "createImage": {
9656
- "description": "Generate an image from a text prompt using DALL-E.",
9657
- "parameters": {
9658
- "prompt": {
9659
- "type": "string",
9660
- "description": "Description of the image to generate"
9661
- },
9662
- "options": {
9663
- "type": "Partial<OpenAI.Images.ImageGenerateParams>",
9664
- "description": "Additional parameters (size, n, etc.)"
9665
- }
9666
- },
9667
- "required": [
9668
- "prompt"
9669
- ],
9670
- "returns": "Promise<OpenAI.Images.ImagesResponse>",
9671
- "examples": [
9672
- {
9673
- "language": "ts",
9674
- "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
9675
- }
9676
- ]
9677
- },
9678
- "listModels": {
9679
- "description": "List all available models.",
9680
- "parameters": {},
9681
- "required": [],
9682
- "returns": "Promise<OpenAI.Models.ModelsPage>",
9683
- "examples": [
9684
- {
9685
- "language": "ts",
9686
- "code": "const models = await openai.listModels()"
9687
- }
9688
- ]
9689
- },
9690
- "ask": {
9691
- "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
9692
- "parameters": {
9693
- "question": {
9694
- "type": "string",
9695
- "description": "The question to ask"
9696
- },
9697
- "options": {
9698
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
9699
- "description": "Additional completion parameters"
9700
- }
9701
- },
9702
- "required": [
9703
- "question"
9704
- ],
9705
- "returns": "Promise<string>",
9706
- "examples": [
9707
- {
9708
- "language": "ts",
9709
- "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
9710
- }
9711
- ]
9712
- },
9713
- "chat": {
9714
- "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
9715
- "parameters": {
9716
- "messages": {
9717
- "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
9718
- "description": "Array of chat messages"
9719
- },
9720
- "options": {
9721
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
9722
- "description": "Additional completion parameters"
9723
- }
9724
- },
9725
- "required": [
9726
- "messages"
9727
- ],
9728
- "returns": "Promise<string>",
9729
- "examples": [
9730
- {
9731
- "language": "ts",
9732
- "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
9733
- }
9734
- ]
9735
- }
9736
- },
9737
- "getters": {
9738
- "defaultModel": {
9739
- "description": "The default model used for completions, from options or 'gpt-4o'.",
9740
- "returns": "string"
9741
- },
9742
- "raw": {
9743
- "description": "The underlying OpenAI SDK instance for advanced use cases.",
9744
- "returns": "OpenAI"
9745
- }
9746
- },
9747
- "events": {
9748
- "connected": {
9749
- "name": "connected",
9750
- "description": "Event emitted by OpenAIClient",
9751
- "arguments": {}
9752
- },
9753
- "failure": {
9754
- "name": "failure",
9755
- "description": "Event emitted by OpenAIClient",
9756
- "arguments": {}
9757
- },
9758
- "completion": {
9759
- "name": "completion",
9760
- "description": "Event emitted by OpenAIClient",
9761
- "arguments": {}
9762
- },
9763
- "embedding": {
9764
- "name": "embedding",
9765
- "description": "Event emitted by OpenAIClient",
9766
- "arguments": {}
9767
- },
9768
- "image": {
9769
- "name": "image",
9770
- "description": "Event emitted by OpenAIClient",
9771
- "arguments": {}
9772
- },
9773
- "models": {
9774
- "name": "models",
9775
- "description": "Event emitted by OpenAIClient",
9776
- "arguments": {}
9777
- }
9778
- },
9779
- "state": {},
9780
- "options": {},
9781
- "envVars": [],
9782
- "examples": [
9783
- {
9784
- "language": "ts",
9785
- "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
9786
- }
9787
- ]
9788
- });
9789
-
9790
9522
  setBuildTimeData('clients.supabase', {
9791
9523
  "id": "clients.supabase",
9792
9524
  "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).",
@@ -9919,66 +9651,268 @@ setBuildTimeData('clients.supabase', {
9919
9651
  }
9920
9652
  },
9921
9653
  "required": [
9922
- "channelName",
9923
- "table",
9924
- "callback"
9654
+ "channelName",
9655
+ "table",
9656
+ "callback"
9657
+ ],
9658
+ "returns": "RealtimeChannel"
9659
+ },
9660
+ "unsubscribe": {
9661
+ "description": "Unsubscribe and remove a realtime channel by name.",
9662
+ "parameters": {
9663
+ "channelName": {
9664
+ "type": "string",
9665
+ "description": "The channel name to remove"
9666
+ }
9667
+ },
9668
+ "required": [
9669
+ "channelName"
9670
+ ],
9671
+ "returns": "void"
9672
+ },
9673
+ "unsubscribeAll": {
9674
+ "description": "Unsubscribe and remove all realtime channels.",
9675
+ "parameters": {},
9676
+ "required": [],
9677
+ "returns": "void"
9678
+ },
9679
+ "connect": {
9680
+ "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
9681
+ "parameters": {},
9682
+ "required": [],
9683
+ "returns": "void"
9684
+ },
9685
+ "disconnect": {
9686
+ "description": "Disconnect by signing out and removing all realtime channels.",
9687
+ "parameters": {},
9688
+ "required": [],
9689
+ "returns": "void"
9690
+ }
9691
+ },
9692
+ "getters": {
9693
+ "sdk": {
9694
+ "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
9695
+ "returns": "SupabaseSDKClient<any, any>"
9696
+ },
9697
+ "storage": {
9698
+ "description": "Returns the Supabase Storage client for managing buckets and files.",
9699
+ "returns": "any"
9700
+ },
9701
+ "functions": {
9702
+ "description": "Returns the Supabase Functions client.",
9703
+ "returns": "any"
9704
+ }
9705
+ },
9706
+ "events": {},
9707
+ "state": {},
9708
+ "options": {},
9709
+ "envVars": [],
9710
+ "examples": [
9711
+ {
9712
+ "language": "ts",
9713
+ "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})"
9714
+ }
9715
+ ]
9716
+ });
9717
+
9718
+ setBuildTimeData('clients.elevenlabs', {
9719
+ "id": "clients.elevenlabs",
9720
+ "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.",
9721
+ "shortcut": "clients.elevenlabs",
9722
+ "className": "ElevenLabsClient",
9723
+ "methods": {
9724
+ "beforeRequest": {
9725
+ "description": "Inject the xi-api-key header before each request.",
9726
+ "parameters": {},
9727
+ "required": [],
9728
+ "returns": "void"
9729
+ },
9730
+ "connect": {
9731
+ "description": "Validate the API key by listing available models.",
9732
+ "parameters": {},
9733
+ "required": [],
9734
+ "returns": "Promise<this>",
9735
+ "examples": [
9736
+ {
9737
+ "language": "ts",
9738
+ "code": "await el.connect()"
9739
+ }
9740
+ ]
9741
+ },
9742
+ "listVoices": {
9743
+ "description": "List available voices with optional search and filtering.",
9744
+ "parameters": {
9745
+ "options": {
9746
+ "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
9747
+ "description": "Query parameters for filtering voices"
9748
+ }
9749
+ },
9750
+ "required": [],
9751
+ "returns": "Promise<any>",
9752
+ "examples": [
9753
+ {
9754
+ "language": "ts",
9755
+ "code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
9756
+ }
9757
+ ]
9758
+ },
9759
+ "getVoice": {
9760
+ "description": "Get details for a single voice.",
9761
+ "parameters": {
9762
+ "voiceId": {
9763
+ "type": "string",
9764
+ "description": "The voice ID to look up"
9765
+ }
9766
+ },
9767
+ "required": [
9768
+ "voiceId"
9769
+ ],
9770
+ "returns": "Promise<any>",
9771
+ "examples": [
9772
+ {
9773
+ "language": "ts",
9774
+ "code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
9775
+ }
9776
+ ]
9777
+ },
9778
+ "listModels": {
9779
+ "description": "List available TTS models.",
9780
+ "parameters": {},
9781
+ "required": [],
9782
+ "returns": "Promise<any[]>",
9783
+ "examples": [
9784
+ {
9785
+ "language": "ts",
9786
+ "code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
9787
+ }
9788
+ ]
9789
+ },
9790
+ "synthesize": {
9791
+ "description": "Synthesize speech from text, returning audio as a Buffer.",
9792
+ "parameters": {
9793
+ "text": {
9794
+ "type": "string",
9795
+ "description": "The text to convert to speech"
9796
+ },
9797
+ "options": {
9798
+ "type": "SynthesizeOptions",
9799
+ "description": "Voice, model, format, and voice settings overrides",
9800
+ "properties": {
9801
+ "voiceId": {
9802
+ "type": "string",
9803
+ "description": ""
9804
+ },
9805
+ "modelId": {
9806
+ "type": "string",
9807
+ "description": ""
9808
+ },
9809
+ "outputFormat": {
9810
+ "type": "string",
9811
+ "description": ""
9812
+ },
9813
+ "voiceSettings": {
9814
+ "type": "ElevenLabsVoiceSettings",
9815
+ "description": ""
9816
+ },
9817
+ "disableCache": {
9818
+ "type": "boolean",
9819
+ "description": ""
9820
+ }
9821
+ }
9822
+ }
9823
+ },
9824
+ "required": [
9825
+ "text"
9826
+ ],
9827
+ "returns": "Promise<Buffer>",
9828
+ "examples": [
9829
+ {
9830
+ "language": "ts",
9831
+ "code": "const audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data\n\nconst custom = await el.synthesize('Hello', {\n voiceId: '21m00Tcm4TlvDq8ikWAM',\n voiceSettings: { stability: 0.5, similarityBoost: 0.8 }\n})"
9832
+ }
9833
+ ]
9834
+ },
9835
+ "say": {
9836
+ "description": "Synthesize speech and write the audio to a file.",
9837
+ "parameters": {
9838
+ "text": {
9839
+ "type": "string",
9840
+ "description": "The text to convert to speech"
9841
+ },
9842
+ "outputPath": {
9843
+ "type": "string",
9844
+ "description": "File path to write the audio to"
9845
+ },
9846
+ "options": {
9847
+ "type": "SynthesizeOptions",
9848
+ "description": "Voice, model, format, and voice settings overrides",
9849
+ "properties": {
9850
+ "voiceId": {
9851
+ "type": "string",
9852
+ "description": ""
9853
+ },
9854
+ "modelId": {
9855
+ "type": "string",
9856
+ "description": ""
9857
+ },
9858
+ "outputFormat": {
9859
+ "type": "string",
9860
+ "description": ""
9861
+ },
9862
+ "voiceSettings": {
9863
+ "type": "ElevenLabsVoiceSettings",
9864
+ "description": ""
9865
+ },
9866
+ "disableCache": {
9867
+ "type": "boolean",
9868
+ "description": ""
9869
+ }
9870
+ }
9871
+ }
9872
+ },
9873
+ "required": [
9874
+ "text",
9875
+ "outputPath"
9925
9876
  ],
9926
- "returns": "RealtimeChannel"
9927
- },
9928
- "unsubscribe": {
9929
- "description": "Unsubscribe and remove a realtime channel by name.",
9930
- "parameters": {
9931
- "channelName": {
9932
- "type": "string",
9933
- "description": "The channel name to remove"
9877
+ "returns": "Promise<string>",
9878
+ "examples": [
9879
+ {
9880
+ "language": "ts",
9881
+ "code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
9934
9882
  }
9935
- },
9936
- "required": [
9937
- "channelName"
9938
- ],
9939
- "returns": "void"
9940
- },
9941
- "unsubscribeAll": {
9942
- "description": "Unsubscribe and remove all realtime channels.",
9943
- "parameters": {},
9944
- "required": [],
9945
- "returns": "void"
9946
- },
9947
- "connect": {
9948
- "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
9949
- "parameters": {},
9950
- "required": [],
9951
- "returns": "void"
9952
- },
9953
- "disconnect": {
9954
- "description": "Disconnect by signing out and removing all realtime channels.",
9955
- "parameters": {},
9956
- "required": [],
9957
- "returns": "void"
9883
+ ]
9958
9884
  }
9959
9885
  },
9960
9886
  "getters": {
9961
- "sdk": {
9962
- "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
9963
- "returns": "SupabaseSDKClient<any, any>"
9887
+ "apiKey": {
9888
+ "description": "The resolved API key from options or environment.",
9889
+ "returns": "string"
9890
+ }
9891
+ },
9892
+ "events": {
9893
+ "failure": {
9894
+ "name": "failure",
9895
+ "description": "Event emitted by ElevenLabsClient",
9896
+ "arguments": {}
9964
9897
  },
9965
- "storage": {
9966
- "description": "Returns the Supabase Storage client for managing buckets and files.",
9967
- "returns": "any"
9898
+ "voices": {
9899
+ "name": "voices",
9900
+ "description": "Event emitted by ElevenLabsClient",
9901
+ "arguments": {}
9968
9902
  },
9969
- "functions": {
9970
- "description": "Returns the Supabase Functions client.",
9971
- "returns": "any"
9903
+ "speech": {
9904
+ "name": "speech",
9905
+ "description": "Event emitted by ElevenLabsClient",
9906
+ "arguments": {}
9972
9907
  }
9973
9908
  },
9974
- "events": {},
9975
9909
  "state": {},
9976
9910
  "options": {},
9977
9911
  "envVars": [],
9978
9912
  "examples": [
9979
9913
  {
9980
9914
  "language": "ts",
9981
- "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})"
9915
+ "code": "const el = container.client('elevenlabs')\nawait el.connect()\nconst voices = await el.listVoices()\nconst audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data"
9982
9916
  }
9983
9917
  ]
9984
9918
  });
@@ -10149,280 +10083,346 @@ setBuildTimeData('clients.comfyui', {
10149
10083
  "description": "Parameter inputs"
10150
10084
  },
10151
10085
  "options": {
10152
- "type": "WorkflowRunOptions",
10153
- "description": "Parameter options",
10154
- "properties": {
10155
- "poll": {
10156
- "type": "boolean",
10157
- "description": "Use polling instead of WebSocket for tracking execution"
10158
- },
10159
- "pollInterval": {
10160
- "type": "number",
10161
- "description": "Polling interval in ms (default 1000)"
10162
- },
10163
- "inputMap": {
10164
- "type": "InputMapping",
10165
- "description": "Named input mapping: semantic name -> { nodeId, field }"
10166
- },
10167
- "outputDir": {
10168
- "type": "string",
10169
- "description": "If provided, output images are downloaded to this directory"
10170
- }
10171
- }
10086
+ "type": "WorkflowRunOptions",
10087
+ "description": "Parameter options",
10088
+ "properties": {
10089
+ "poll": {
10090
+ "type": "boolean",
10091
+ "description": "Use polling instead of WebSocket for tracking execution"
10092
+ },
10093
+ "pollInterval": {
10094
+ "type": "number",
10095
+ "description": "Polling interval in ms (default 1000)"
10096
+ },
10097
+ "inputMap": {
10098
+ "type": "InputMapping",
10099
+ "description": "Named input mapping: semantic name -> { nodeId, field }"
10100
+ },
10101
+ "outputDir": {
10102
+ "type": "string",
10103
+ "description": "If provided, output images are downloaded to this directory"
10104
+ }
10105
+ }
10106
+ }
10107
+ },
10108
+ "required": [
10109
+ "workflow"
10110
+ ],
10111
+ "returns": "Promise<WorkflowResult>"
10112
+ }
10113
+ },
10114
+ "getters": {
10115
+ "clientId": {
10116
+ "description": "The unique client ID used for WebSocket session tracking.",
10117
+ "returns": "string"
10118
+ },
10119
+ "wsURL": {
10120
+ "description": "The WebSocket URL derived from baseURL or overridden via options.",
10121
+ "returns": "string"
10122
+ }
10123
+ },
10124
+ "events": {
10125
+ "execution_start": {
10126
+ "name": "execution_start",
10127
+ "description": "Event emitted by ComfyUIClient",
10128
+ "arguments": {}
10129
+ },
10130
+ "execution_complete": {
10131
+ "name": "execution_complete",
10132
+ "description": "Event emitted by ComfyUIClient",
10133
+ "arguments": {}
10134
+ },
10135
+ "executing": {
10136
+ "name": "executing",
10137
+ "description": "Event emitted by ComfyUIClient",
10138
+ "arguments": {}
10139
+ },
10140
+ "progress": {
10141
+ "name": "progress",
10142
+ "description": "Event emitted by ComfyUIClient",
10143
+ "arguments": {}
10144
+ },
10145
+ "executed": {
10146
+ "name": "executed",
10147
+ "description": "Event emitted by ComfyUIClient",
10148
+ "arguments": {}
10149
+ },
10150
+ "execution_cached": {
10151
+ "name": "execution_cached",
10152
+ "description": "Event emitted by ComfyUIClient",
10153
+ "arguments": {}
10154
+ },
10155
+ "execution_error": {
10156
+ "name": "execution_error",
10157
+ "description": "Event emitted by ComfyUIClient",
10158
+ "arguments": {}
10159
+ }
10160
+ },
10161
+ "state": {},
10162
+ "options": {},
10163
+ "envVars": [],
10164
+ "examples": [
10165
+ {
10166
+ "language": "ts",
10167
+ "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)"
10168
+ }
10169
+ ]
10170
+ });
10171
+
10172
+ setBuildTimeData('clients.openai', {
10173
+ "id": "clients.openai",
10174
+ "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.",
10175
+ "shortcut": "clients.openai",
10176
+ "className": "OpenAIClient",
10177
+ "methods": {
10178
+ "connect": {
10179
+ "description": "Test the API connection by listing models.",
10180
+ "parameters": {},
10181
+ "required": [],
10182
+ "returns": "Promise<this>",
10183
+ "examples": [
10184
+ {
10185
+ "language": "ts",
10186
+ "code": "await openai.connect()"
10187
+ }
10188
+ ]
10189
+ },
10190
+ "createChatCompletion": {
10191
+ "description": "Create a chat completion using the Chat Completions API.",
10192
+ "parameters": {
10193
+ "messages": {
10194
+ "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
10195
+ "description": "Array of chat messages"
10196
+ },
10197
+ "options": {
10198
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
10199
+ "description": "Additional parameters for the completion"
10200
+ }
10201
+ },
10202
+ "required": [
10203
+ "messages"
10204
+ ],
10205
+ "returns": "Promise<OpenAI.Chat.Completions.ChatCompletion>",
10206
+ "examples": [
10207
+ {
10208
+ "language": "ts",
10209
+ "code": "const response = await openai.createChatCompletion([\n { role: 'system', content: 'You are a helpful assistant.' },\n { role: 'user', content: 'Hello!' }\n])\nconsole.log(response.choices[0]?.message?.content)"
10210
+ }
10211
+ ]
10212
+ },
10213
+ "createResponse": {
10214
+ "description": "Create a response using the Responses API.",
10215
+ "parameters": {
10216
+ "input": {
10217
+ "type": "OpenAI.Responses.ResponseInput | string",
10218
+ "description": "The input prompt or message array"
10219
+ },
10220
+ "options": {
10221
+ "type": "Partial<OpenAI.Responses.ResponseCreateParamsNonStreaming>",
10222
+ "description": "Additional parameters for the response"
10223
+ }
10224
+ },
10225
+ "required": [
10226
+ "input"
10227
+ ],
10228
+ "returns": "Promise<OpenAI.Responses.Response>",
10229
+ "examples": [
10230
+ {
10231
+ "language": "ts",
10232
+ "code": "const response = await openai.createResponse('Explain quantum computing')"
10233
+ }
10234
+ ]
10235
+ },
10236
+ "streamResponse": {
10237
+ "description": "Stream a response using the Responses API.",
10238
+ "parameters": {
10239
+ "input": {
10240
+ "type": "OpenAI.Responses.ResponseInput | string",
10241
+ "description": "The input prompt or message array"
10242
+ },
10243
+ "options": {
10244
+ "type": "Partial<OpenAI.Responses.ResponseCreateParamsStreaming>",
10245
+ "description": "Additional parameters for the streaming response"
10246
+ }
10247
+ },
10248
+ "required": [
10249
+ "input"
10250
+ ],
10251
+ "returns": "Promise<AsyncIterable<OpenAI.Responses.ResponseStreamEvent>>",
10252
+ "examples": [
10253
+ {
10254
+ "language": "ts",
10255
+ "code": "const stream = await openai.streamResponse('Write a poem')\nfor await (const event of stream) {\n if (event.type === 'response.output_text.delta') {\n process.stdout.write(event.delta)\n }\n}"
10256
+ }
10257
+ ]
10258
+ },
10259
+ "createCompletion": {
10260
+ "description": "Create a legacy text completion.",
10261
+ "parameters": {
10262
+ "prompt": {
10263
+ "type": "string",
10264
+ "description": "The text prompt to complete"
10265
+ },
10266
+ "options": {
10267
+ "type": "Partial<OpenAI.Completions.CompletionCreateParams>",
10268
+ "description": "Additional parameters for the completion"
10172
10269
  }
10173
10270
  },
10174
10271
  "required": [
10175
- "workflow"
10272
+ "prompt"
10176
10273
  ],
10177
- "returns": "Promise<WorkflowResult>"
10178
- }
10179
- },
10180
- "getters": {
10181
- "clientId": {
10182
- "description": "The unique client ID used for WebSocket session tracking.",
10183
- "returns": "string"
10184
- },
10185
- "wsURL": {
10186
- "description": "The WebSocket URL derived from baseURL or overridden via options.",
10187
- "returns": "string"
10188
- }
10189
- },
10190
- "events": {
10191
- "execution_start": {
10192
- "name": "execution_start",
10193
- "description": "Event emitted by ComfyUIClient",
10194
- "arguments": {}
10195
- },
10196
- "execution_complete": {
10197
- "name": "execution_complete",
10198
- "description": "Event emitted by ComfyUIClient",
10199
- "arguments": {}
10200
- },
10201
- "executing": {
10202
- "name": "executing",
10203
- "description": "Event emitted by ComfyUIClient",
10204
- "arguments": {}
10205
- },
10206
- "progress": {
10207
- "name": "progress",
10208
- "description": "Event emitted by ComfyUIClient",
10209
- "arguments": {}
10210
- },
10211
- "executed": {
10212
- "name": "executed",
10213
- "description": "Event emitted by ComfyUIClient",
10214
- "arguments": {}
10215
- },
10216
- "execution_cached": {
10217
- "name": "execution_cached",
10218
- "description": "Event emitted by ComfyUIClient",
10219
- "arguments": {}
10220
- },
10221
- "execution_error": {
10222
- "name": "execution_error",
10223
- "description": "Event emitted by ComfyUIClient",
10224
- "arguments": {}
10225
- }
10226
- },
10227
- "state": {},
10228
- "options": {},
10229
- "envVars": [],
10230
- "examples": [
10231
- {
10232
- "language": "ts",
10233
- "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)"
10234
- }
10235
- ]
10236
- });
10237
-
10238
- setBuildTimeData('clients.elevenlabs', {
10239
- "id": "clients.elevenlabs",
10240
- "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.",
10241
- "shortcut": "clients.elevenlabs",
10242
- "className": "ElevenLabsClient",
10243
- "methods": {
10244
- "beforeRequest": {
10245
- "description": "Inject the xi-api-key header before each request.",
10246
- "parameters": {},
10247
- "required": [],
10248
- "returns": "void"
10249
- },
10250
- "connect": {
10251
- "description": "Validate the API key by listing available models.",
10252
- "parameters": {},
10253
- "required": [],
10254
- "returns": "Promise<this>",
10274
+ "returns": "Promise<OpenAI.Completions.Completion>",
10255
10275
  "examples": [
10256
10276
  {
10257
10277
  "language": "ts",
10258
- "code": "await el.connect()"
10278
+ "code": "const response = await openai.createCompletion('Once upon a time')"
10259
10279
  }
10260
10280
  ]
10261
10281
  },
10262
- "listVoices": {
10263
- "description": "List available voices with optional search and filtering.",
10282
+ "createEmbedding": {
10283
+ "description": "Create text embeddings for semantic search or similarity comparisons.",
10264
10284
  "parameters": {
10285
+ "input": {
10286
+ "type": "string | string[]",
10287
+ "description": "A string or array of strings to embed"
10288
+ },
10265
10289
  "options": {
10266
- "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
10267
- "description": "Query parameters for filtering voices"
10290
+ "type": "Partial<OpenAI.Embeddings.EmbeddingCreateParams>",
10291
+ "description": "Additional parameters (model, etc.)"
10268
10292
  }
10269
10293
  },
10270
- "required": [],
10271
- "returns": "Promise<any>",
10294
+ "required": [
10295
+ "input"
10296
+ ],
10297
+ "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
10272
10298
  "examples": [
10273
10299
  {
10274
10300
  "language": "ts",
10275
- "code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
10301
+ "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
10276
10302
  }
10277
10303
  ]
10278
10304
  },
10279
- "getVoice": {
10280
- "description": "Get details for a single voice.",
10305
+ "createImage": {
10306
+ "description": "Generate an image from a text prompt using DALL-E.",
10281
10307
  "parameters": {
10282
- "voiceId": {
10308
+ "prompt": {
10283
10309
  "type": "string",
10284
- "description": "The voice ID to look up"
10310
+ "description": "Description of the image to generate"
10311
+ },
10312
+ "options": {
10313
+ "type": "Partial<OpenAI.Images.ImageGenerateParams>",
10314
+ "description": "Additional parameters (size, n, etc.)"
10285
10315
  }
10286
10316
  },
10287
10317
  "required": [
10288
- "voiceId"
10318
+ "prompt"
10289
10319
  ],
10290
- "returns": "Promise<any>",
10320
+ "returns": "Promise<OpenAI.Images.ImagesResponse>",
10291
10321
  "examples": [
10292
10322
  {
10293
10323
  "language": "ts",
10294
- "code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
10324
+ "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
10295
10325
  }
10296
10326
  ]
10297
10327
  },
10298
10328
  "listModels": {
10299
- "description": "List available TTS models.",
10329
+ "description": "List all available models.",
10300
10330
  "parameters": {},
10301
10331
  "required": [],
10302
- "returns": "Promise<any[]>",
10332
+ "returns": "Promise<OpenAI.Models.ModelsPage>",
10303
10333
  "examples": [
10304
10334
  {
10305
10335
  "language": "ts",
10306
- "code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
10336
+ "code": "const models = await openai.listModels()"
10307
10337
  }
10308
10338
  ]
10309
10339
  },
10310
- "synthesize": {
10311
- "description": "Synthesize speech from text, returning audio as a Buffer.",
10340
+ "ask": {
10341
+ "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
10312
10342
  "parameters": {
10313
- "text": {
10343
+ "question": {
10314
10344
  "type": "string",
10315
- "description": "The text to convert to speech"
10345
+ "description": "The question to ask"
10316
10346
  },
10317
10347
  "options": {
10318
- "type": "SynthesizeOptions",
10319
- "description": "Voice, model, format, and voice settings overrides",
10320
- "properties": {
10321
- "voiceId": {
10322
- "type": "string",
10323
- "description": ""
10324
- },
10325
- "modelId": {
10326
- "type": "string",
10327
- "description": ""
10328
- },
10329
- "outputFormat": {
10330
- "type": "string",
10331
- "description": ""
10332
- },
10333
- "voiceSettings": {
10334
- "type": "ElevenLabsVoiceSettings",
10335
- "description": ""
10336
- },
10337
- "disableCache": {
10338
- "type": "boolean",
10339
- "description": ""
10340
- }
10341
- }
10348
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
10349
+ "description": "Additional completion parameters"
10342
10350
  }
10343
10351
  },
10344
10352
  "required": [
10345
- "text"
10353
+ "question"
10346
10354
  ],
10347
- "returns": "Promise<Buffer>",
10355
+ "returns": "Promise<string>",
10348
10356
  "examples": [
10349
10357
  {
10350
10358
  "language": "ts",
10351
- "code": "const audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data\n\nconst custom = await el.synthesize('Hello', {\n voiceId: '21m00Tcm4TlvDq8ikWAM',\n voiceSettings: { stability: 0.5, similarityBoost: 0.8 }\n})"
10359
+ "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
10352
10360
  }
10353
10361
  ]
10354
10362
  },
10355
- "say": {
10356
- "description": "Synthesize speech and write the audio to a file.",
10363
+ "chat": {
10364
+ "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
10357
10365
  "parameters": {
10358
- "text": {
10359
- "type": "string",
10360
- "description": "The text to convert to speech"
10361
- },
10362
- "outputPath": {
10363
- "type": "string",
10364
- "description": "File path to write the audio to"
10366
+ "messages": {
10367
+ "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
10368
+ "description": "Array of chat messages"
10365
10369
  },
10366
10370
  "options": {
10367
- "type": "SynthesizeOptions",
10368
- "description": "Voice, model, format, and voice settings overrides",
10369
- "properties": {
10370
- "voiceId": {
10371
- "type": "string",
10372
- "description": ""
10373
- },
10374
- "modelId": {
10375
- "type": "string",
10376
- "description": ""
10377
- },
10378
- "outputFormat": {
10379
- "type": "string",
10380
- "description": ""
10381
- },
10382
- "voiceSettings": {
10383
- "type": "ElevenLabsVoiceSettings",
10384
- "description": ""
10385
- },
10386
- "disableCache": {
10387
- "type": "boolean",
10388
- "description": ""
10389
- }
10390
- }
10371
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
10372
+ "description": "Additional completion parameters"
10391
10373
  }
10392
10374
  },
10393
10375
  "required": [
10394
- "text",
10395
- "outputPath"
10376
+ "messages"
10396
10377
  ],
10397
10378
  "returns": "Promise<string>",
10398
10379
  "examples": [
10399
10380
  {
10400
10381
  "language": "ts",
10401
- "code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
10382
+ "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
10402
10383
  }
10403
10384
  ]
10404
10385
  }
10405
10386
  },
10406
10387
  "getters": {
10407
- "apiKey": {
10408
- "description": "The resolved API key from options or environment.",
10388
+ "defaultModel": {
10389
+ "description": "The default model used for completions, from options or 'gpt-4o'.",
10409
10390
  "returns": "string"
10391
+ },
10392
+ "raw": {
10393
+ "description": "The underlying OpenAI SDK instance for advanced use cases.",
10394
+ "returns": "OpenAI"
10410
10395
  }
10411
10396
  },
10412
10397
  "events": {
10398
+ "connected": {
10399
+ "name": "connected",
10400
+ "description": "Event emitted by OpenAIClient",
10401
+ "arguments": {}
10402
+ },
10413
10403
  "failure": {
10414
10404
  "name": "failure",
10415
- "description": "Event emitted by ElevenLabsClient",
10405
+ "description": "Event emitted by OpenAIClient",
10406
+ "arguments": {}
10407
+ },
10408
+ "completion": {
10409
+ "name": "completion",
10410
+ "description": "Event emitted by OpenAIClient",
10416
10411
  "arguments": {}
10417
10412
  },
10418
- "voices": {
10419
- "name": "voices",
10420
- "description": "Event emitted by ElevenLabsClient",
10413
+ "embedding": {
10414
+ "name": "embedding",
10415
+ "description": "Event emitted by OpenAIClient",
10421
10416
  "arguments": {}
10422
10417
  },
10423
- "speech": {
10424
- "name": "speech",
10425
- "description": "Event emitted by ElevenLabsClient",
10418
+ "image": {
10419
+ "name": "image",
10420
+ "description": "Event emitted by OpenAIClient",
10421
+ "arguments": {}
10422
+ },
10423
+ "models": {
10424
+ "name": "models",
10425
+ "description": "Event emitted by OpenAIClient",
10426
10426
  "arguments": {}
10427
10427
  }
10428
10428
  },
@@ -10432,7 +10432,7 @@ setBuildTimeData('clients.elevenlabs', {
10432
10432
  "examples": [
10433
10433
  {
10434
10434
  "language": "ts",
10435
- "code": "const el = container.client('elevenlabs')\nawait el.connect()\nconst voices = await el.listVoices()\nconst audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data"
10435
+ "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
10436
10436
  }
10437
10437
  ]
10438
10438
  });
@@ -22723,247 +22723,14 @@ export const introspectionData = [
22723
22723
  }
22724
22724
  },
22725
22725
  "events": {
22726
- "graphqlError": {
22727
- "name": "graphqlError",
22728
- "description": "Event emitted by GraphClient",
22729
- "arguments": {}
22730
- },
22731
- "failure": {
22732
- "name": "failure",
22733
- "description": "Event emitted by GraphClient",
22734
- "arguments": {}
22735
- }
22736
- },
22737
- "state": {},
22738
- "options": {},
22739
- "envVars": [],
22740
- "examples": [
22741
- {
22742
- "language": "ts",
22743
- "code": "const gql = container.client('graph', { baseURL: 'https://api.example.com' })\nconst data = await gql.query(`{ users { id name } }`)\nawait gql.mutate(`mutation($name: String!) { createUser(name: $name) { id } }`, { name: 'Alice' })"
22744
- }
22745
- ]
22746
- },
22747
- {
22748
- "id": "clients.rest",
22749
- "description": "HTTP REST client built on top of axios. Provides convenience methods for GET, POST, PUT, PATCH, and DELETE requests with automatic JSON handling, configurable base URL, and error event emission.",
22750
- "shortcut": "clients.rest",
22751
- "className": "RestClient",
22752
- "methods": {
22753
- "beforeRequest": {
22754
- "description": "",
22755
- "parameters": {},
22756
- "required": [],
22757
- "returns": "void"
22758
- },
22759
- "patch": {
22760
- "description": "Send a PATCH request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
22761
- "parameters": {
22762
- "url": {
22763
- "type": "string",
22764
- "description": "Request path relative to baseURL"
22765
- },
22766
- "data": {
22767
- "type": "any",
22768
- "description": "Request body"
22769
- },
22770
- "options": {
22771
- "type": "AxiosRequestConfig",
22772
- "description": "Additional axios request config"
22773
- }
22774
- },
22775
- "required": [
22776
- "url"
22777
- ],
22778
- "returns": "void"
22779
- },
22780
- "put": {
22781
- "description": "Send a PUT request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
22782
- "parameters": {
22783
- "url": {
22784
- "type": "string",
22785
- "description": "Request path relative to baseURL"
22786
- },
22787
- "data": {
22788
- "type": "any",
22789
- "description": "Request body"
22790
- },
22791
- "options": {
22792
- "type": "AxiosRequestConfig",
22793
- "description": "Additional axios request config"
22794
- }
22795
- },
22796
- "required": [
22797
- "url"
22798
- ],
22799
- "returns": "void"
22800
- },
22801
- "post": {
22802
- "description": "Send a POST request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
22803
- "parameters": {
22804
- "url": {
22805
- "type": "string",
22806
- "description": "Request path relative to baseURL"
22807
- },
22808
- "data": {
22809
- "type": "any",
22810
- "description": "Request body"
22811
- },
22812
- "options": {
22813
- "type": "AxiosRequestConfig",
22814
- "description": "Additional axios request config"
22815
- }
22816
- },
22817
- "required": [
22818
- "url"
22819
- ],
22820
- "returns": "void"
22821
- },
22822
- "delete": {
22823
- "description": "Send a DELETE request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
22824
- "parameters": {
22825
- "url": {
22826
- "type": "string",
22827
- "description": "Request path relative to baseURL"
22828
- },
22829
- "params": {
22830
- "type": "any",
22831
- "description": "Query parameters"
22832
- },
22833
- "options": {
22834
- "type": "AxiosRequestConfig",
22835
- "description": "Additional axios request config"
22836
- }
22837
- },
22838
- "required": [
22839
- "url"
22840
- ],
22841
- "returns": "void"
22842
- },
22843
- "get": {
22844
- "description": "Send a GET request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
22845
- "parameters": {
22846
- "url": {
22847
- "type": "string",
22848
- "description": "Request path relative to baseURL"
22849
- },
22850
- "params": {
22851
- "type": "any",
22852
- "description": "Query parameters"
22853
- },
22854
- "options": {
22855
- "type": "AxiosRequestConfig",
22856
- "description": "Additional axios request config"
22857
- }
22858
- },
22859
- "required": [
22860
- "url"
22861
- ],
22862
- "returns": "void"
22863
- },
22864
- "handleError": {
22865
- "description": "Handle an axios error by emitting 'failure' and returning the error as JSON.",
22866
- "parameters": {
22867
- "error": {
22868
- "type": "AxiosError",
22869
- "description": "Parameter error"
22870
- }
22871
- },
22872
- "required": [
22873
- "error"
22874
- ],
22875
- "returns": "void"
22876
- }
22877
- },
22878
- "getters": {
22879
- "useJSON": {
22880
- "description": "Whether JSON content-type headers should be set automatically.",
22881
- "returns": "any"
22882
- },
22883
- "baseURL": {
22884
- "description": "",
22885
- "returns": "any"
22886
- }
22887
- },
22888
- "events": {
22889
- "failure": {
22890
- "name": "failure",
22891
- "description": "Event emitted by RestClient",
22892
- "arguments": {}
22893
- }
22894
- },
22895
- "state": {},
22896
- "options": {},
22897
- "envVars": [],
22898
- "examples": [
22899
- {
22900
- "language": "ts",
22901
- "code": "const api = container.client('rest', { baseURL: 'https://api.example.com', json: true })\nconst users = await api.get('/users')\nawait api.post('/users', { name: 'Alice' })"
22902
- }
22903
- ]
22904
- },
22905
- {
22906
- "id": "clients.websocket",
22907
- "description": "WebSocket client that bridges raw WebSocket events to Luca's Helper event bus, providing a clean interface for sending/receiving messages, tracking connection state, and optional auto-reconnection with exponential backoff. Events emitted: - `open` — connection established - `message` — message received (JSON-parsed when possible) - `close` — connection closed (with code and reason) - `error` — connection error - `reconnecting` — attempting reconnection (with attempt number)",
22908
- "shortcut": "clients.websocket",
22909
- "className": "WebSocketClient",
22910
- "methods": {
22911
- "connect": {
22912
- "description": "Establish a WebSocket connection to the configured baseURL. Wires all raw WebSocket events (open, message, close, error) to the Helper event bus and updates connection state accordingly. Resolves once the connection is open; rejects on error.",
22913
- "parameters": {},
22914
- "required": [],
22915
- "returns": "Promise<this>"
22916
- },
22917
- "send": {
22918
- "description": "Send data over the WebSocket connection. Automatically JSON-serializes the payload. If not currently connected, attempts to connect first.",
22919
- "parameters": {
22920
- "data": {
22921
- "type": "any",
22922
- "description": "The data to send (will be JSON.stringify'd)"
22923
- }
22924
- },
22925
- "required": [
22926
- "data"
22927
- ],
22928
- "returns": "Promise<void>"
22929
- },
22930
- "disconnect": {
22931
- "description": "Gracefully close the WebSocket connection. Suppresses auto-reconnect and updates connection state to disconnected.",
22932
- "parameters": {},
22933
- "required": [],
22934
- "returns": "Promise<this>"
22935
- }
22936
- },
22937
- "getters": {
22938
- "hasError": {
22939
- "description": "Whether the client is in an error state.",
22940
- "returns": "any"
22941
- }
22942
- },
22943
- "events": {
22944
- "open": {
22945
- "name": "open",
22946
- "description": "Event emitted by WebSocketClient",
22947
- "arguments": {}
22948
- },
22949
- "error": {
22950
- "name": "error",
22951
- "description": "Event emitted by WebSocketClient",
22952
- "arguments": {}
22953
- },
22954
- "message": {
22955
- "name": "message",
22956
- "description": "Event emitted by WebSocketClient",
22957
- "arguments": {}
22958
- },
22959
- "close": {
22960
- "name": "close",
22961
- "description": "Event emitted by WebSocketClient",
22726
+ "graphqlError": {
22727
+ "name": "graphqlError",
22728
+ "description": "Event emitted by GraphClient",
22962
22729
  "arguments": {}
22963
22730
  },
22964
- "reconnecting": {
22965
- "name": "reconnecting",
22966
- "description": "Event emitted by WebSocketClient",
22731
+ "failure": {
22732
+ "name": "failure",
22733
+ "description": "Event emitted by GraphClient",
22967
22734
  "arguments": {}
22968
22735
  }
22969
22736
  },
@@ -22973,264 +22740,230 @@ export const introspectionData = [
22973
22740
  "examples": [
22974
22741
  {
22975
22742
  "language": "ts",
22976
- "code": "const ws = container.client('websocket', {\n baseURL: 'ws://localhost:8080',\n reconnect: true,\n maxReconnectAttempts: 5\n})\nws.on('message', (data) => console.log('Received:', data))\nawait ws.connect()\nawait ws.send({ type: 'hello' })"
22743
+ "code": "const gql = container.client('graph', { baseURL: 'https://api.example.com' })\nconst data = await gql.query(`{ users { id name } }`)\nawait gql.mutate(`mutation($name: String!) { createUser(name: $name) { id } }`, { name: 'Alice' })"
22977
22744
  }
22978
22745
  ]
22979
22746
  },
22980
22747
  {
22981
- "id": "clients.openai",
22982
- "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.",
22983
- "shortcut": "clients.openai",
22984
- "className": "OpenAIClient",
22748
+ "id": "clients.rest",
22749
+ "description": "HTTP REST client built on top of axios. Provides convenience methods for GET, POST, PUT, PATCH, and DELETE requests with automatic JSON handling, configurable base URL, and error event emission.",
22750
+ "shortcut": "clients.rest",
22751
+ "className": "RestClient",
22985
22752
  "methods": {
22986
- "connect": {
22987
- "description": "Test the API connection by listing models.",
22753
+ "beforeRequest": {
22754
+ "description": "",
22988
22755
  "parameters": {},
22989
22756
  "required": [],
22990
- "returns": "Promise<this>",
22991
- "examples": [
22992
- {
22993
- "language": "ts",
22994
- "code": "await openai.connect()"
22995
- }
22996
- ]
22757
+ "returns": "void"
22997
22758
  },
22998
- "createChatCompletion": {
22999
- "description": "Create a chat completion using the Chat Completions API.",
22759
+ "patch": {
22760
+ "description": "Send a PATCH request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
23000
22761
  "parameters": {
23001
- "messages": {
23002
- "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
23003
- "description": "Array of chat messages"
22762
+ "url": {
22763
+ "type": "string",
22764
+ "description": "Request path relative to baseURL"
23004
22765
  },
23005
- "options": {
23006
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23007
- "description": "Additional parameters for the completion"
23008
- }
23009
- },
23010
- "required": [
23011
- "messages"
23012
- ],
23013
- "returns": "Promise<OpenAI.Chat.Completions.ChatCompletion>",
23014
- "examples": [
23015
- {
23016
- "language": "ts",
23017
- "code": "const response = await openai.createChatCompletion([\n { role: 'system', content: 'You are a helpful assistant.' },\n { role: 'user', content: 'Hello!' }\n])\nconsole.log(response.choices[0]?.message?.content)"
23018
- }
23019
- ]
23020
- },
23021
- "createResponse": {
23022
- "description": "Create a response using the Responses API.",
23023
- "parameters": {
23024
- "input": {
23025
- "type": "OpenAI.Responses.ResponseInput | string",
23026
- "description": "The input prompt or message array"
22766
+ "data": {
22767
+ "type": "any",
22768
+ "description": "Request body"
23027
22769
  },
23028
22770
  "options": {
23029
- "type": "Partial<OpenAI.Responses.ResponseCreateParamsNonStreaming>",
23030
- "description": "Additional parameters for the response"
22771
+ "type": "AxiosRequestConfig",
22772
+ "description": "Additional axios request config"
23031
22773
  }
23032
22774
  },
23033
22775
  "required": [
23034
- "input"
22776
+ "url"
23035
22777
  ],
23036
- "returns": "Promise<OpenAI.Responses.Response>",
23037
- "examples": [
23038
- {
23039
- "language": "ts",
23040
- "code": "const response = await openai.createResponse('Explain quantum computing')"
23041
- }
23042
- ]
22778
+ "returns": "void"
23043
22779
  },
23044
- "streamResponse": {
23045
- "description": "Stream a response using the Responses API.",
22780
+ "put": {
22781
+ "description": "Send a PUT request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
23046
22782
  "parameters": {
23047
- "input": {
23048
- "type": "OpenAI.Responses.ResponseInput | string",
23049
- "description": "The input prompt or message array"
22783
+ "url": {
22784
+ "type": "string",
22785
+ "description": "Request path relative to baseURL"
22786
+ },
22787
+ "data": {
22788
+ "type": "any",
22789
+ "description": "Request body"
23050
22790
  },
23051
22791
  "options": {
23052
- "type": "Partial<OpenAI.Responses.ResponseCreateParamsStreaming>",
23053
- "description": "Additional parameters for the streaming response"
22792
+ "type": "AxiosRequestConfig",
22793
+ "description": "Additional axios request config"
23054
22794
  }
23055
22795
  },
23056
22796
  "required": [
23057
- "input"
22797
+ "url"
23058
22798
  ],
23059
- "returns": "Promise<AsyncIterable<OpenAI.Responses.ResponseStreamEvent>>",
23060
- "examples": [
23061
- {
23062
- "language": "ts",
23063
- "code": "const stream = await openai.streamResponse('Write a poem')\nfor await (const event of stream) {\n if (event.type === 'response.output_text.delta') {\n process.stdout.write(event.delta)\n }\n}"
23064
- }
23065
- ]
22799
+ "returns": "void"
23066
22800
  },
23067
- "createCompletion": {
23068
- "description": "Create a legacy text completion.",
22801
+ "post": {
22802
+ "description": "Send a POST request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
23069
22803
  "parameters": {
23070
- "prompt": {
22804
+ "url": {
23071
22805
  "type": "string",
23072
- "description": "The text prompt to complete"
22806
+ "description": "Request path relative to baseURL"
22807
+ },
22808
+ "data": {
22809
+ "type": "any",
22810
+ "description": "Request body"
23073
22811
  },
23074
22812
  "options": {
23075
- "type": "Partial<OpenAI.Completions.CompletionCreateParams>",
23076
- "description": "Additional parameters for the completion"
22813
+ "type": "AxiosRequestConfig",
22814
+ "description": "Additional axios request config"
23077
22815
  }
23078
22816
  },
23079
22817
  "required": [
23080
- "prompt"
22818
+ "url"
23081
22819
  ],
23082
- "returns": "Promise<OpenAI.Completions.Completion>",
23083
- "examples": [
23084
- {
23085
- "language": "ts",
23086
- "code": "const response = await openai.createCompletion('Once upon a time')"
23087
- }
23088
- ]
22820
+ "returns": "void"
23089
22821
  },
23090
- "createEmbedding": {
23091
- "description": "Create text embeddings for semantic search or similarity comparisons.",
22822
+ "delete": {
22823
+ "description": "Send a DELETE request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
23092
22824
  "parameters": {
23093
- "input": {
23094
- "type": "string | string[]",
23095
- "description": "A string or array of strings to embed"
22825
+ "url": {
22826
+ "type": "string",
22827
+ "description": "Request path relative to baseURL"
22828
+ },
22829
+ "params": {
22830
+ "type": "any",
22831
+ "description": "Query parameters"
23096
22832
  },
23097
22833
  "options": {
23098
- "type": "Partial<OpenAI.Embeddings.EmbeddingCreateParams>",
23099
- "description": "Additional parameters (model, etc.)"
22834
+ "type": "AxiosRequestConfig",
22835
+ "description": "Additional axios request config"
23100
22836
  }
23101
22837
  },
23102
22838
  "required": [
23103
- "input"
22839
+ "url"
23104
22840
  ],
23105
- "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
23106
- "examples": [
23107
- {
23108
- "language": "ts",
23109
- "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
23110
- }
23111
- ]
22841
+ "returns": "void"
23112
22842
  },
23113
- "createImage": {
23114
- "description": "Generate an image from a text prompt using DALL-E.",
22843
+ "get": {
22844
+ "description": "Send a GET request. Returns the parsed response body directly (not an axios Response wrapper). On HTTP errors, returns the error as JSON instead of throwing.",
23115
22845
  "parameters": {
23116
- "prompt": {
22846
+ "url": {
23117
22847
  "type": "string",
23118
- "description": "Description of the image to generate"
22848
+ "description": "Request path relative to baseURL"
22849
+ },
22850
+ "params": {
22851
+ "type": "any",
22852
+ "description": "Query parameters"
23119
22853
  },
23120
22854
  "options": {
23121
- "type": "Partial<OpenAI.Images.ImageGenerateParams>",
23122
- "description": "Additional parameters (size, n, etc.)"
22855
+ "type": "AxiosRequestConfig",
22856
+ "description": "Additional axios request config"
23123
22857
  }
23124
22858
  },
23125
22859
  "required": [
23126
- "prompt"
22860
+ "url"
23127
22861
  ],
23128
- "returns": "Promise<OpenAI.Images.ImagesResponse>",
23129
- "examples": [
23130
- {
23131
- "language": "ts",
23132
- "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
23133
- }
23134
- ]
23135
- },
23136
- "listModels": {
23137
- "description": "List all available models.",
23138
- "parameters": {},
23139
- "required": [],
23140
- "returns": "Promise<OpenAI.Models.ModelsPage>",
23141
- "examples": [
23142
- {
23143
- "language": "ts",
23144
- "code": "const models = await openai.listModels()"
23145
- }
23146
- ]
22862
+ "returns": "void"
23147
22863
  },
23148
- "ask": {
23149
- "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
22864
+ "handleError": {
22865
+ "description": "Handle an axios error by emitting 'failure' and returning the error as JSON.",
23150
22866
  "parameters": {
23151
- "question": {
23152
- "type": "string",
23153
- "description": "The question to ask"
23154
- },
23155
- "options": {
23156
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23157
- "description": "Additional completion parameters"
22867
+ "error": {
22868
+ "type": "AxiosError",
22869
+ "description": "Parameter error"
23158
22870
  }
23159
22871
  },
23160
22872
  "required": [
23161
- "question"
22873
+ "error"
23162
22874
  ],
23163
- "returns": "Promise<string>",
23164
- "examples": [
23165
- {
23166
- "language": "ts",
23167
- "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
23168
- }
23169
- ]
22875
+ "returns": "void"
22876
+ }
22877
+ },
22878
+ "getters": {
22879
+ "useJSON": {
22880
+ "description": "Whether JSON content-type headers should be set automatically.",
22881
+ "returns": "any"
22882
+ },
22883
+ "baseURL": {
22884
+ "description": "",
22885
+ "returns": "any"
22886
+ }
22887
+ },
22888
+ "events": {
22889
+ "failure": {
22890
+ "name": "failure",
22891
+ "description": "Event emitted by RestClient",
22892
+ "arguments": {}
22893
+ }
22894
+ },
22895
+ "state": {},
22896
+ "options": {},
22897
+ "envVars": [],
22898
+ "examples": [
22899
+ {
22900
+ "language": "ts",
22901
+ "code": "const api = container.client('rest', { baseURL: 'https://api.example.com', json: true })\nconst users = await api.get('/users')\nawait api.post('/users', { name: 'Alice' })"
22902
+ }
22903
+ ]
22904
+ },
22905
+ {
22906
+ "id": "clients.websocket",
22907
+ "description": "WebSocket client that bridges raw WebSocket events to Luca's Helper event bus, providing a clean interface for sending/receiving messages, tracking connection state, and optional auto-reconnection with exponential backoff. Events emitted: - `open` — connection established - `message` — message received (JSON-parsed when possible) - `close` — connection closed (with code and reason) - `error` — connection error - `reconnecting` — attempting reconnection (with attempt number)",
22908
+ "shortcut": "clients.websocket",
22909
+ "className": "WebSocketClient",
22910
+ "methods": {
22911
+ "connect": {
22912
+ "description": "Establish a WebSocket connection to the configured baseURL. Wires all raw WebSocket events (open, message, close, error) to the Helper event bus and updates connection state accordingly. Resolves once the connection is open; rejects on error.",
22913
+ "parameters": {},
22914
+ "required": [],
22915
+ "returns": "Promise<this>"
23170
22916
  },
23171
- "chat": {
23172
- "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
22917
+ "send": {
22918
+ "description": "Send data over the WebSocket connection. Automatically JSON-serializes the payload. If not currently connected, attempts to connect first.",
23173
22919
  "parameters": {
23174
- "messages": {
23175
- "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
23176
- "description": "Array of chat messages"
23177
- },
23178
- "options": {
23179
- "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23180
- "description": "Additional completion parameters"
22920
+ "data": {
22921
+ "type": "any",
22922
+ "description": "The data to send (will be JSON.stringify'd)"
23181
22923
  }
23182
22924
  },
23183
22925
  "required": [
23184
- "messages"
22926
+ "data"
23185
22927
  ],
23186
- "returns": "Promise<string>",
23187
- "examples": [
23188
- {
23189
- "language": "ts",
23190
- "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
23191
- }
23192
- ]
22928
+ "returns": "Promise<void>"
22929
+ },
22930
+ "disconnect": {
22931
+ "description": "Gracefully close the WebSocket connection. Suppresses auto-reconnect and updates connection state to disconnected.",
22932
+ "parameters": {},
22933
+ "required": [],
22934
+ "returns": "Promise<this>"
23193
22935
  }
23194
22936
  },
23195
22937
  "getters": {
23196
- "defaultModel": {
23197
- "description": "The default model used for completions, from options or 'gpt-4o'.",
23198
- "returns": "string"
23199
- },
23200
- "raw": {
23201
- "description": "The underlying OpenAI SDK instance for advanced use cases.",
23202
- "returns": "OpenAI"
22938
+ "hasError": {
22939
+ "description": "Whether the client is in an error state.",
22940
+ "returns": "any"
23203
22941
  }
23204
22942
  },
23205
22943
  "events": {
23206
- "connected": {
23207
- "name": "connected",
23208
- "description": "Event emitted by OpenAIClient",
23209
- "arguments": {}
23210
- },
23211
- "failure": {
23212
- "name": "failure",
23213
- "description": "Event emitted by OpenAIClient",
22944
+ "open": {
22945
+ "name": "open",
22946
+ "description": "Event emitted by WebSocketClient",
23214
22947
  "arguments": {}
23215
22948
  },
23216
- "completion": {
23217
- "name": "completion",
23218
- "description": "Event emitted by OpenAIClient",
22949
+ "error": {
22950
+ "name": "error",
22951
+ "description": "Event emitted by WebSocketClient",
23219
22952
  "arguments": {}
23220
22953
  },
23221
- "embedding": {
23222
- "name": "embedding",
23223
- "description": "Event emitted by OpenAIClient",
22954
+ "message": {
22955
+ "name": "message",
22956
+ "description": "Event emitted by WebSocketClient",
23224
22957
  "arguments": {}
23225
22958
  },
23226
- "image": {
23227
- "name": "image",
23228
- "description": "Event emitted by OpenAIClient",
22959
+ "close": {
22960
+ "name": "close",
22961
+ "description": "Event emitted by WebSocketClient",
23229
22962
  "arguments": {}
23230
22963
  },
23231
- "models": {
23232
- "name": "models",
23233
- "description": "Event emitted by OpenAIClient",
22964
+ "reconnecting": {
22965
+ "name": "reconnecting",
22966
+ "description": "Event emitted by WebSocketClient",
23234
22967
  "arguments": {}
23235
22968
  }
23236
22969
  },
@@ -23240,7 +22973,7 @@ export const introspectionData = [
23240
22973
  "examples": [
23241
22974
  {
23242
22975
  "language": "ts",
23243
- "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
22976
+ "code": "const ws = container.client('websocket', {\n baseURL: 'ws://localhost:8080',\n reconnect: true,\n maxReconnectAttempts: 5\n})\nws.on('message', (data) => console.log('Received:', data))\nawait ws.connect()\nawait ws.send({ type: 'hello' })"
23244
22977
  }
23245
22978
  ]
23246
22979
  },
@@ -23382,60 +23115,261 @@ export const introspectionData = [
23382
23115
  ],
23383
23116
  "returns": "RealtimeChannel"
23384
23117
  },
23385
- "unsubscribe": {
23386
- "description": "Unsubscribe and remove a realtime channel by name.",
23118
+ "unsubscribe": {
23119
+ "description": "Unsubscribe and remove a realtime channel by name.",
23120
+ "parameters": {
23121
+ "channelName": {
23122
+ "type": "string",
23123
+ "description": "The channel name to remove"
23124
+ }
23125
+ },
23126
+ "required": [
23127
+ "channelName"
23128
+ ],
23129
+ "returns": "void"
23130
+ },
23131
+ "unsubscribeAll": {
23132
+ "description": "Unsubscribe and remove all realtime channels.",
23133
+ "parameters": {},
23134
+ "required": [],
23135
+ "returns": "void"
23136
+ },
23137
+ "connect": {
23138
+ "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
23139
+ "parameters": {},
23140
+ "required": [],
23141
+ "returns": "void"
23142
+ },
23143
+ "disconnect": {
23144
+ "description": "Disconnect by signing out and removing all realtime channels.",
23145
+ "parameters": {},
23146
+ "required": [],
23147
+ "returns": "void"
23148
+ }
23149
+ },
23150
+ "getters": {
23151
+ "sdk": {
23152
+ "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
23153
+ "returns": "SupabaseSDKClient<any, any>"
23154
+ },
23155
+ "storage": {
23156
+ "description": "Returns the Supabase Storage client for managing buckets and files.",
23157
+ "returns": "any"
23158
+ },
23159
+ "functions": {
23160
+ "description": "Returns the Supabase Functions client.",
23161
+ "returns": "any"
23162
+ }
23163
+ },
23164
+ "events": {},
23165
+ "state": {},
23166
+ "options": {},
23167
+ "envVars": [],
23168
+ "examples": [
23169
+ {
23170
+ "language": "ts",
23171
+ "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})"
23172
+ }
23173
+ ]
23174
+ },
23175
+ {
23176
+ "id": "clients.elevenlabs",
23177
+ "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.",
23178
+ "shortcut": "clients.elevenlabs",
23179
+ "className": "ElevenLabsClient",
23180
+ "methods": {
23181
+ "beforeRequest": {
23182
+ "description": "Inject the xi-api-key header before each request.",
23183
+ "parameters": {},
23184
+ "required": [],
23185
+ "returns": "void"
23186
+ },
23187
+ "connect": {
23188
+ "description": "Validate the API key by listing available models.",
23189
+ "parameters": {},
23190
+ "required": [],
23191
+ "returns": "Promise<this>",
23192
+ "examples": [
23193
+ {
23194
+ "language": "ts",
23195
+ "code": "await el.connect()"
23196
+ }
23197
+ ]
23198
+ },
23199
+ "listVoices": {
23200
+ "description": "List available voices with optional search and filtering.",
23201
+ "parameters": {
23202
+ "options": {
23203
+ "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
23204
+ "description": "Query parameters for filtering voices"
23205
+ }
23206
+ },
23207
+ "required": [],
23208
+ "returns": "Promise<any>",
23209
+ "examples": [
23210
+ {
23211
+ "language": "ts",
23212
+ "code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
23213
+ }
23214
+ ]
23215
+ },
23216
+ "getVoice": {
23217
+ "description": "Get details for a single voice.",
23218
+ "parameters": {
23219
+ "voiceId": {
23220
+ "type": "string",
23221
+ "description": "The voice ID to look up"
23222
+ }
23223
+ },
23224
+ "required": [
23225
+ "voiceId"
23226
+ ],
23227
+ "returns": "Promise<any>",
23228
+ "examples": [
23229
+ {
23230
+ "language": "ts",
23231
+ "code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
23232
+ }
23233
+ ]
23234
+ },
23235
+ "listModels": {
23236
+ "description": "List available TTS models.",
23237
+ "parameters": {},
23238
+ "required": [],
23239
+ "returns": "Promise<any[]>",
23240
+ "examples": [
23241
+ {
23242
+ "language": "ts",
23243
+ "code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
23244
+ }
23245
+ ]
23246
+ },
23247
+ "synthesize": {
23248
+ "description": "Synthesize speech from text, returning audio as a Buffer.",
23249
+ "parameters": {
23250
+ "text": {
23251
+ "type": "string",
23252
+ "description": "The text to convert to speech"
23253
+ },
23254
+ "options": {
23255
+ "type": "SynthesizeOptions",
23256
+ "description": "Voice, model, format, and voice settings overrides",
23257
+ "properties": {
23258
+ "voiceId": {
23259
+ "type": "string",
23260
+ "description": ""
23261
+ },
23262
+ "modelId": {
23263
+ "type": "string",
23264
+ "description": ""
23265
+ },
23266
+ "outputFormat": {
23267
+ "type": "string",
23268
+ "description": ""
23269
+ },
23270
+ "voiceSettings": {
23271
+ "type": "ElevenLabsVoiceSettings",
23272
+ "description": ""
23273
+ },
23274
+ "disableCache": {
23275
+ "type": "boolean",
23276
+ "description": ""
23277
+ }
23278
+ }
23279
+ }
23280
+ },
23281
+ "required": [
23282
+ "text"
23283
+ ],
23284
+ "returns": "Promise<Buffer>",
23285
+ "examples": [
23286
+ {
23287
+ "language": "ts",
23288
+ "code": "const audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data\n\nconst custom = await el.synthesize('Hello', {\n voiceId: '21m00Tcm4TlvDq8ikWAM',\n voiceSettings: { stability: 0.5, similarityBoost: 0.8 }\n})"
23289
+ }
23290
+ ]
23291
+ },
23292
+ "say": {
23293
+ "description": "Synthesize speech and write the audio to a file.",
23387
23294
  "parameters": {
23388
- "channelName": {
23295
+ "text": {
23389
23296
  "type": "string",
23390
- "description": "The channel name to remove"
23297
+ "description": "The text to convert to speech"
23298
+ },
23299
+ "outputPath": {
23300
+ "type": "string",
23301
+ "description": "File path to write the audio to"
23302
+ },
23303
+ "options": {
23304
+ "type": "SynthesizeOptions",
23305
+ "description": "Voice, model, format, and voice settings overrides",
23306
+ "properties": {
23307
+ "voiceId": {
23308
+ "type": "string",
23309
+ "description": ""
23310
+ },
23311
+ "modelId": {
23312
+ "type": "string",
23313
+ "description": ""
23314
+ },
23315
+ "outputFormat": {
23316
+ "type": "string",
23317
+ "description": ""
23318
+ },
23319
+ "voiceSettings": {
23320
+ "type": "ElevenLabsVoiceSettings",
23321
+ "description": ""
23322
+ },
23323
+ "disableCache": {
23324
+ "type": "boolean",
23325
+ "description": ""
23326
+ }
23327
+ }
23391
23328
  }
23392
23329
  },
23393
23330
  "required": [
23394
- "channelName"
23331
+ "text",
23332
+ "outputPath"
23395
23333
  ],
23396
- "returns": "void"
23397
- },
23398
- "unsubscribeAll": {
23399
- "description": "Unsubscribe and remove all realtime channels.",
23400
- "parameters": {},
23401
- "required": [],
23402
- "returns": "void"
23403
- },
23404
- "connect": {
23405
- "description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
23406
- "parameters": {},
23407
- "required": [],
23408
- "returns": "void"
23409
- },
23410
- "disconnect": {
23411
- "description": "Disconnect by signing out and removing all realtime channels.",
23412
- "parameters": {},
23413
- "required": [],
23414
- "returns": "void"
23334
+ "returns": "Promise<string>",
23335
+ "examples": [
23336
+ {
23337
+ "language": "ts",
23338
+ "code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
23339
+ }
23340
+ ]
23415
23341
  }
23416
23342
  },
23417
23343
  "getters": {
23418
- "sdk": {
23419
- "description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
23420
- "returns": "SupabaseSDKClient<any, any>"
23344
+ "apiKey": {
23345
+ "description": "The resolved API key from options or environment.",
23346
+ "returns": "string"
23347
+ }
23348
+ },
23349
+ "events": {
23350
+ "failure": {
23351
+ "name": "failure",
23352
+ "description": "Event emitted by ElevenLabsClient",
23353
+ "arguments": {}
23421
23354
  },
23422
- "storage": {
23423
- "description": "Returns the Supabase Storage client for managing buckets and files.",
23424
- "returns": "any"
23355
+ "voices": {
23356
+ "name": "voices",
23357
+ "description": "Event emitted by ElevenLabsClient",
23358
+ "arguments": {}
23425
23359
  },
23426
- "functions": {
23427
- "description": "Returns the Supabase Functions client.",
23428
- "returns": "any"
23360
+ "speech": {
23361
+ "name": "speech",
23362
+ "description": "Event emitted by ElevenLabsClient",
23363
+ "arguments": {}
23429
23364
  }
23430
23365
  },
23431
- "events": {},
23432
23366
  "state": {},
23433
23367
  "options": {},
23434
23368
  "envVars": [],
23435
23369
  "examples": [
23436
23370
  {
23437
23371
  "language": "ts",
23438
- "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})"
23372
+ "code": "const el = container.client('elevenlabs')\nawait el.connect()\nconst voices = await el.listVoices()\nconst audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data"
23439
23373
  }
23440
23374
  ]
23441
23375
  },
@@ -23628,256 +23562,322 @@ export const introspectionData = [
23628
23562
  }
23629
23563
  },
23630
23564
  "required": [
23631
- "workflow"
23565
+ "workflow"
23566
+ ],
23567
+ "returns": "Promise<WorkflowResult>"
23568
+ }
23569
+ },
23570
+ "getters": {
23571
+ "clientId": {
23572
+ "description": "The unique client ID used for WebSocket session tracking.",
23573
+ "returns": "string"
23574
+ },
23575
+ "wsURL": {
23576
+ "description": "The WebSocket URL derived from baseURL or overridden via options.",
23577
+ "returns": "string"
23578
+ }
23579
+ },
23580
+ "events": {
23581
+ "execution_start": {
23582
+ "name": "execution_start",
23583
+ "description": "Event emitted by ComfyUIClient",
23584
+ "arguments": {}
23585
+ },
23586
+ "execution_complete": {
23587
+ "name": "execution_complete",
23588
+ "description": "Event emitted by ComfyUIClient",
23589
+ "arguments": {}
23590
+ },
23591
+ "executing": {
23592
+ "name": "executing",
23593
+ "description": "Event emitted by ComfyUIClient",
23594
+ "arguments": {}
23595
+ },
23596
+ "progress": {
23597
+ "name": "progress",
23598
+ "description": "Event emitted by ComfyUIClient",
23599
+ "arguments": {}
23600
+ },
23601
+ "executed": {
23602
+ "name": "executed",
23603
+ "description": "Event emitted by ComfyUIClient",
23604
+ "arguments": {}
23605
+ },
23606
+ "execution_cached": {
23607
+ "name": "execution_cached",
23608
+ "description": "Event emitted by ComfyUIClient",
23609
+ "arguments": {}
23610
+ },
23611
+ "execution_error": {
23612
+ "name": "execution_error",
23613
+ "description": "Event emitted by ComfyUIClient",
23614
+ "arguments": {}
23615
+ }
23616
+ },
23617
+ "state": {},
23618
+ "options": {},
23619
+ "envVars": [],
23620
+ "examples": [
23621
+ {
23622
+ "language": "ts",
23623
+ "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)"
23624
+ }
23625
+ ]
23626
+ },
23627
+ {
23628
+ "id": "clients.openai",
23629
+ "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.",
23630
+ "shortcut": "clients.openai",
23631
+ "className": "OpenAIClient",
23632
+ "methods": {
23633
+ "connect": {
23634
+ "description": "Test the API connection by listing models.",
23635
+ "parameters": {},
23636
+ "required": [],
23637
+ "returns": "Promise<this>",
23638
+ "examples": [
23639
+ {
23640
+ "language": "ts",
23641
+ "code": "await openai.connect()"
23642
+ }
23643
+ ]
23644
+ },
23645
+ "createChatCompletion": {
23646
+ "description": "Create a chat completion using the Chat Completions API.",
23647
+ "parameters": {
23648
+ "messages": {
23649
+ "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
23650
+ "description": "Array of chat messages"
23651
+ },
23652
+ "options": {
23653
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23654
+ "description": "Additional parameters for the completion"
23655
+ }
23656
+ },
23657
+ "required": [
23658
+ "messages"
23659
+ ],
23660
+ "returns": "Promise<OpenAI.Chat.Completions.ChatCompletion>",
23661
+ "examples": [
23662
+ {
23663
+ "language": "ts",
23664
+ "code": "const response = await openai.createChatCompletion([\n { role: 'system', content: 'You are a helpful assistant.' },\n { role: 'user', content: 'Hello!' }\n])\nconsole.log(response.choices[0]?.message?.content)"
23665
+ }
23666
+ ]
23667
+ },
23668
+ "createResponse": {
23669
+ "description": "Create a response using the Responses API.",
23670
+ "parameters": {
23671
+ "input": {
23672
+ "type": "OpenAI.Responses.ResponseInput | string",
23673
+ "description": "The input prompt or message array"
23674
+ },
23675
+ "options": {
23676
+ "type": "Partial<OpenAI.Responses.ResponseCreateParamsNonStreaming>",
23677
+ "description": "Additional parameters for the response"
23678
+ }
23679
+ },
23680
+ "required": [
23681
+ "input"
23682
+ ],
23683
+ "returns": "Promise<OpenAI.Responses.Response>",
23684
+ "examples": [
23685
+ {
23686
+ "language": "ts",
23687
+ "code": "const response = await openai.createResponse('Explain quantum computing')"
23688
+ }
23689
+ ]
23690
+ },
23691
+ "streamResponse": {
23692
+ "description": "Stream a response using the Responses API.",
23693
+ "parameters": {
23694
+ "input": {
23695
+ "type": "OpenAI.Responses.ResponseInput | string",
23696
+ "description": "The input prompt or message array"
23697
+ },
23698
+ "options": {
23699
+ "type": "Partial<OpenAI.Responses.ResponseCreateParamsStreaming>",
23700
+ "description": "Additional parameters for the streaming response"
23701
+ }
23702
+ },
23703
+ "required": [
23704
+ "input"
23705
+ ],
23706
+ "returns": "Promise<AsyncIterable<OpenAI.Responses.ResponseStreamEvent>>",
23707
+ "examples": [
23708
+ {
23709
+ "language": "ts",
23710
+ "code": "const stream = await openai.streamResponse('Write a poem')\nfor await (const event of stream) {\n if (event.type === 'response.output_text.delta') {\n process.stdout.write(event.delta)\n }\n}"
23711
+ }
23712
+ ]
23713
+ },
23714
+ "createCompletion": {
23715
+ "description": "Create a legacy text completion.",
23716
+ "parameters": {
23717
+ "prompt": {
23718
+ "type": "string",
23719
+ "description": "The text prompt to complete"
23720
+ },
23721
+ "options": {
23722
+ "type": "Partial<OpenAI.Completions.CompletionCreateParams>",
23723
+ "description": "Additional parameters for the completion"
23724
+ }
23725
+ },
23726
+ "required": [
23727
+ "prompt"
23632
23728
  ],
23633
- "returns": "Promise<WorkflowResult>"
23634
- }
23635
- },
23636
- "getters": {
23637
- "clientId": {
23638
- "description": "The unique client ID used for WebSocket session tracking.",
23639
- "returns": "string"
23640
- },
23641
- "wsURL": {
23642
- "description": "The WebSocket URL derived from baseURL or overridden via options.",
23643
- "returns": "string"
23644
- }
23645
- },
23646
- "events": {
23647
- "execution_start": {
23648
- "name": "execution_start",
23649
- "description": "Event emitted by ComfyUIClient",
23650
- "arguments": {}
23651
- },
23652
- "execution_complete": {
23653
- "name": "execution_complete",
23654
- "description": "Event emitted by ComfyUIClient",
23655
- "arguments": {}
23656
- },
23657
- "executing": {
23658
- "name": "executing",
23659
- "description": "Event emitted by ComfyUIClient",
23660
- "arguments": {}
23661
- },
23662
- "progress": {
23663
- "name": "progress",
23664
- "description": "Event emitted by ComfyUIClient",
23665
- "arguments": {}
23666
- },
23667
- "executed": {
23668
- "name": "executed",
23669
- "description": "Event emitted by ComfyUIClient",
23670
- "arguments": {}
23671
- },
23672
- "execution_cached": {
23673
- "name": "execution_cached",
23674
- "description": "Event emitted by ComfyUIClient",
23675
- "arguments": {}
23676
- },
23677
- "execution_error": {
23678
- "name": "execution_error",
23679
- "description": "Event emitted by ComfyUIClient",
23680
- "arguments": {}
23681
- }
23682
- },
23683
- "state": {},
23684
- "options": {},
23685
- "envVars": [],
23686
- "examples": [
23687
- {
23688
- "language": "ts",
23689
- "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)"
23690
- }
23691
- ]
23692
- },
23693
- {
23694
- "id": "clients.elevenlabs",
23695
- "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.",
23696
- "shortcut": "clients.elevenlabs",
23697
- "className": "ElevenLabsClient",
23698
- "methods": {
23699
- "beforeRequest": {
23700
- "description": "Inject the xi-api-key header before each request.",
23701
- "parameters": {},
23702
- "required": [],
23703
- "returns": "void"
23704
- },
23705
- "connect": {
23706
- "description": "Validate the API key by listing available models.",
23707
- "parameters": {},
23708
- "required": [],
23709
- "returns": "Promise<this>",
23729
+ "returns": "Promise<OpenAI.Completions.Completion>",
23710
23730
  "examples": [
23711
23731
  {
23712
23732
  "language": "ts",
23713
- "code": "await el.connect()"
23733
+ "code": "const response = await openai.createCompletion('Once upon a time')"
23714
23734
  }
23715
23735
  ]
23716
23736
  },
23717
- "listVoices": {
23718
- "description": "List available voices with optional search and filtering.",
23737
+ "createEmbedding": {
23738
+ "description": "Create text embeddings for semantic search or similarity comparisons.",
23719
23739
  "parameters": {
23740
+ "input": {
23741
+ "type": "string | string[]",
23742
+ "description": "A string or array of strings to embed"
23743
+ },
23720
23744
  "options": {
23721
- "type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
23722
- "description": "Query parameters for filtering voices"
23745
+ "type": "Partial<OpenAI.Embeddings.EmbeddingCreateParams>",
23746
+ "description": "Additional parameters (model, etc.)"
23723
23747
  }
23724
23748
  },
23725
- "required": [],
23726
- "returns": "Promise<any>",
23749
+ "required": [
23750
+ "input"
23751
+ ],
23752
+ "returns": "Promise<OpenAI.Embeddings.CreateEmbeddingResponse>",
23727
23753
  "examples": [
23728
23754
  {
23729
23755
  "language": "ts",
23730
- "code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
23756
+ "code": "const response = await openai.createEmbedding('Hello world')\nconsole.log(response.data[0].embedding.length)"
23731
23757
  }
23732
23758
  ]
23733
23759
  },
23734
- "getVoice": {
23735
- "description": "Get details for a single voice.",
23760
+ "createImage": {
23761
+ "description": "Generate an image from a text prompt using DALL-E.",
23736
23762
  "parameters": {
23737
- "voiceId": {
23763
+ "prompt": {
23738
23764
  "type": "string",
23739
- "description": "The voice ID to look up"
23765
+ "description": "Description of the image to generate"
23766
+ },
23767
+ "options": {
23768
+ "type": "Partial<OpenAI.Images.ImageGenerateParams>",
23769
+ "description": "Additional parameters (size, n, etc.)"
23740
23770
  }
23741
23771
  },
23742
23772
  "required": [
23743
- "voiceId"
23773
+ "prompt"
23744
23774
  ],
23745
- "returns": "Promise<any>",
23775
+ "returns": "Promise<OpenAI.Images.ImagesResponse>",
23746
23776
  "examples": [
23747
23777
  {
23748
23778
  "language": "ts",
23749
- "code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
23779
+ "code": "const response = await openai.createImage('A sunset over mountains')\nconsole.log(response.data[0].url)"
23750
23780
  }
23751
23781
  ]
23752
23782
  },
23753
23783
  "listModels": {
23754
- "description": "List available TTS models.",
23784
+ "description": "List all available models.",
23755
23785
  "parameters": {},
23756
23786
  "required": [],
23757
- "returns": "Promise<any[]>",
23787
+ "returns": "Promise<OpenAI.Models.ModelsPage>",
23758
23788
  "examples": [
23759
23789
  {
23760
23790
  "language": "ts",
23761
- "code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
23791
+ "code": "const models = await openai.listModels()"
23762
23792
  }
23763
23793
  ]
23764
23794
  },
23765
- "synthesize": {
23766
- "description": "Synthesize speech from text, returning audio as a Buffer.",
23795
+ "ask": {
23796
+ "description": "Ask a single question and get a text response. Convenience wrapper around `createChatCompletion` for simple Q&A.",
23767
23797
  "parameters": {
23768
- "text": {
23798
+ "question": {
23769
23799
  "type": "string",
23770
- "description": "The text to convert to speech"
23800
+ "description": "The question to ask"
23771
23801
  },
23772
23802
  "options": {
23773
- "type": "SynthesizeOptions",
23774
- "description": "Voice, model, format, and voice settings overrides",
23775
- "properties": {
23776
- "voiceId": {
23777
- "type": "string",
23778
- "description": ""
23779
- },
23780
- "modelId": {
23781
- "type": "string",
23782
- "description": ""
23783
- },
23784
- "outputFormat": {
23785
- "type": "string",
23786
- "description": ""
23787
- },
23788
- "voiceSettings": {
23789
- "type": "ElevenLabsVoiceSettings",
23790
- "description": ""
23791
- },
23792
- "disableCache": {
23793
- "type": "boolean",
23794
- "description": ""
23795
- }
23796
- }
23803
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23804
+ "description": "Additional completion parameters"
23797
23805
  }
23798
23806
  },
23799
23807
  "required": [
23800
- "text"
23808
+ "question"
23801
23809
  ],
23802
- "returns": "Promise<Buffer>",
23810
+ "returns": "Promise<string>",
23803
23811
  "examples": [
23804
23812
  {
23805
23813
  "language": "ts",
23806
- "code": "const audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data\n\nconst custom = await el.synthesize('Hello', {\n voiceId: '21m00Tcm4TlvDq8ikWAM',\n voiceSettings: { stability: 0.5, similarityBoost: 0.8 }\n})"
23814
+ "code": "const answer = await openai.ask('What is 2 + 2?')\nconsole.log(answer) // '4'"
23807
23815
  }
23808
23816
  ]
23809
23817
  },
23810
- "say": {
23811
- "description": "Synthesize speech and write the audio to a file.",
23818
+ "chat": {
23819
+ "description": "Send a multi-turn conversation and get a text response. Convenience wrapper around `createChatCompletion` that returns just the text.",
23812
23820
  "parameters": {
23813
- "text": {
23814
- "type": "string",
23815
- "description": "The text to convert to speech"
23816
- },
23817
- "outputPath": {
23818
- "type": "string",
23819
- "description": "File path to write the audio to"
23821
+ "messages": {
23822
+ "type": "OpenAI.Chat.Completions.ChatCompletionMessageParam[]",
23823
+ "description": "Array of chat messages"
23820
23824
  },
23821
23825
  "options": {
23822
- "type": "SynthesizeOptions",
23823
- "description": "Voice, model, format, and voice settings overrides",
23824
- "properties": {
23825
- "voiceId": {
23826
- "type": "string",
23827
- "description": ""
23828
- },
23829
- "modelId": {
23830
- "type": "string",
23831
- "description": ""
23832
- },
23833
- "outputFormat": {
23834
- "type": "string",
23835
- "description": ""
23836
- },
23837
- "voiceSettings": {
23838
- "type": "ElevenLabsVoiceSettings",
23839
- "description": ""
23840
- },
23841
- "disableCache": {
23842
- "type": "boolean",
23843
- "description": ""
23844
- }
23845
- }
23826
+ "type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
23827
+ "description": "Additional completion parameters"
23846
23828
  }
23847
23829
  },
23848
23830
  "required": [
23849
- "text",
23850
- "outputPath"
23831
+ "messages"
23851
23832
  ],
23852
23833
  "returns": "Promise<string>",
23853
23834
  "examples": [
23854
23835
  {
23855
23836
  "language": "ts",
23856
- "code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
23837
+ "code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
23857
23838
  }
23858
23839
  ]
23859
23840
  }
23860
23841
  },
23861
23842
  "getters": {
23862
- "apiKey": {
23863
- "description": "The resolved API key from options or environment.",
23843
+ "defaultModel": {
23844
+ "description": "The default model used for completions, from options or 'gpt-4o'.",
23864
23845
  "returns": "string"
23846
+ },
23847
+ "raw": {
23848
+ "description": "The underlying OpenAI SDK instance for advanced use cases.",
23849
+ "returns": "OpenAI"
23865
23850
  }
23866
23851
  },
23867
23852
  "events": {
23853
+ "connected": {
23854
+ "name": "connected",
23855
+ "description": "Event emitted by OpenAIClient",
23856
+ "arguments": {}
23857
+ },
23868
23858
  "failure": {
23869
23859
  "name": "failure",
23870
- "description": "Event emitted by ElevenLabsClient",
23860
+ "description": "Event emitted by OpenAIClient",
23871
23861
  "arguments": {}
23872
23862
  },
23873
- "voices": {
23874
- "name": "voices",
23875
- "description": "Event emitted by ElevenLabsClient",
23863
+ "completion": {
23864
+ "name": "completion",
23865
+ "description": "Event emitted by OpenAIClient",
23876
23866
  "arguments": {}
23877
23867
  },
23878
- "speech": {
23879
- "name": "speech",
23880
- "description": "Event emitted by ElevenLabsClient",
23868
+ "embedding": {
23869
+ "name": "embedding",
23870
+ "description": "Event emitted by OpenAIClient",
23871
+ "arguments": {}
23872
+ },
23873
+ "image": {
23874
+ "name": "image",
23875
+ "description": "Event emitted by OpenAIClient",
23876
+ "arguments": {}
23877
+ },
23878
+ "models": {
23879
+ "name": "models",
23880
+ "description": "Event emitted by OpenAIClient",
23881
23881
  "arguments": {}
23882
23882
  }
23883
23883
  },
@@ -23887,7 +23887,7 @@ export const introspectionData = [
23887
23887
  "examples": [
23888
23888
  {
23889
23889
  "language": "ts",
23890
- "code": "const el = container.client('elevenlabs')\nawait el.connect()\nconst voices = await el.listVoices()\nconst audio = await el.synthesize('Hello world')\n// audio is a Buffer of mp3 data"
23890
+ "code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
23891
23891
  }
23892
23892
  ]
23893
23893
  },