@soederpop/luca 0.0.34 → 0.0.35
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.
- package/bun.lock +0 -1
- package/docs/README.md +1 -1
- package/docs/TABLE-OF-CONTENTS.md +0 -1
- package/docs/bootstrap/SKILL.md +1 -1
- package/package.json +1 -2
- package/scripts/examples/using-assistant-with-mcp.ts +2 -7
- package/scripts/test-linux-binary.sh +80 -0
- package/src/bootstrap/generated.ts +2 -92
- package/src/cli/build-info.ts +2 -2
- package/src/introspection/generated.agi.ts +628 -887
- package/src/introspection/generated.node.ts +780 -1039
- package/src/introspection/generated.web.ts +1 -1
- package/src/node/container.ts +0 -5
- package/src/python/generated.ts +1 -1
- package/src/scaffolds/generated.ts +1 -1
- package/docs/examples/port-exposer.md +0 -89
- package/src/node/features/port-exposer.ts +0 -351
|
@@ -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-
|
|
4
|
+
// Generated at: 2026-03-27T03:29:26.633Z
|
|
5
5
|
|
|
6
6
|
setBuildTimeData('features.googleDocs', {
|
|
7
7
|
"id": "features.googleDocs",
|
|
@@ -8861,136 +8861,6 @@ setBuildTimeData('features.processManager', {
|
|
|
8861
8861
|
}
|
|
8862
8862
|
});
|
|
8863
8863
|
|
|
8864
|
-
setBuildTimeData('portExposer', {
|
|
8865
|
-
"id": "portExposer",
|
|
8866
|
-
"description": "Port Exposer Feature Exposes local HTTP services via ngrok with SSL-enabled public URLs. Perfect for development, testing, and sharing local services securely. Features: - SSL-enabled public URLs for local services - Custom subdomains and domains (with paid plans) - Authentication options (basic auth, OAuth) - Regional endpoint selection - Connection state management",
|
|
8867
|
-
"shortcut": "portExposer",
|
|
8868
|
-
"className": "PortExposer",
|
|
8869
|
-
"methods": {
|
|
8870
|
-
"expose": {
|
|
8871
|
-
"description": "Expose the local port via ngrok. Creates an ngrok tunnel to the specified local port and returns the SSL-enabled public URL. Emits `exposed` on success or `error` on failure.",
|
|
8872
|
-
"parameters": {
|
|
8873
|
-
"port": {
|
|
8874
|
-
"type": "number",
|
|
8875
|
-
"description": "Optional port override; falls back to `options.port`"
|
|
8876
|
-
}
|
|
8877
|
-
},
|
|
8878
|
-
"required": [],
|
|
8879
|
-
"returns": "Promise<string>",
|
|
8880
|
-
"examples": [
|
|
8881
|
-
{
|
|
8882
|
-
"language": "ts",
|
|
8883
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nconst url = await exposer.expose()\nconsole.log(`Public URL: ${url}`)\n\n// Override port at call time\nconst url2 = await exposer.expose(8080)"
|
|
8884
|
-
}
|
|
8885
|
-
]
|
|
8886
|
-
},
|
|
8887
|
-
"close": {
|
|
8888
|
-
"description": "Stop exposing the port and close the ngrok tunnel. Tears down the ngrok listener, resets connection state, and emits `closed`. Safe to call when no tunnel is active (no-op).",
|
|
8889
|
-
"parameters": {},
|
|
8890
|
-
"required": [],
|
|
8891
|
-
"returns": "Promise<void>",
|
|
8892
|
-
"examples": [
|
|
8893
|
-
{
|
|
8894
|
-
"language": "ts",
|
|
8895
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\n// ... later\nawait exposer.close()\nconsole.log(exposer.isConnected()) // false"
|
|
8896
|
-
}
|
|
8897
|
-
]
|
|
8898
|
-
},
|
|
8899
|
-
"getPublicUrl": {
|
|
8900
|
-
"description": "Get the current public URL if connected. Returns the live URL from the ngrok listener, or `undefined` if no tunnel is active.",
|
|
8901
|
-
"parameters": {},
|
|
8902
|
-
"required": [],
|
|
8903
|
-
"returns": "string | undefined",
|
|
8904
|
-
"examples": [
|
|
8905
|
-
{
|
|
8906
|
-
"language": "ts",
|
|
8907
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nconsole.log(exposer.getPublicUrl()) // 'https://abc123.ngrok.io'"
|
|
8908
|
-
}
|
|
8909
|
-
]
|
|
8910
|
-
},
|
|
8911
|
-
"isConnected": {
|
|
8912
|
-
"description": "Check if the ngrok tunnel is currently connected.",
|
|
8913
|
-
"parameters": {},
|
|
8914
|
-
"required": [],
|
|
8915
|
-
"returns": "boolean",
|
|
8916
|
-
"examples": [
|
|
8917
|
-
{
|
|
8918
|
-
"language": "ts",
|
|
8919
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nconsole.log(exposer.isConnected()) // false\nawait exposer.expose()\nconsole.log(exposer.isConnected()) // true"
|
|
8920
|
-
}
|
|
8921
|
-
]
|
|
8922
|
-
},
|
|
8923
|
-
"getConnectionInfo": {
|
|
8924
|
-
"description": "Get a snapshot of the current connection information. Returns an object with the tunnel's connected status, public URL, local port, connection timestamp, and session metadata.",
|
|
8925
|
-
"parameters": {},
|
|
8926
|
-
"required": [],
|
|
8927
|
-
"returns": "void",
|
|
8928
|
-
"examples": [
|
|
8929
|
-
{
|
|
8930
|
-
"language": "ts",
|
|
8931
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nconst info = exposer.getConnectionInfo()\nconsole.log(info.publicUrl, info.localPort, info.connectedAt)"
|
|
8932
|
-
}
|
|
8933
|
-
]
|
|
8934
|
-
},
|
|
8935
|
-
"reconnect": {
|
|
8936
|
-
"description": "Close the existing tunnel and re-expose with optionally updated options. Calls `close()` first, merges any new options, then calls `expose()`.",
|
|
8937
|
-
"parameters": {
|
|
8938
|
-
"newOptions": {
|
|
8939
|
-
"type": "Partial<PortExposerOptions>",
|
|
8940
|
-
"description": "Optional partial options to merge before reconnecting"
|
|
8941
|
-
}
|
|
8942
|
-
},
|
|
8943
|
-
"required": [],
|
|
8944
|
-
"returns": "Promise<string>",
|
|
8945
|
-
"examples": [
|
|
8946
|
-
{
|
|
8947
|
-
"language": "ts",
|
|
8948
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\n// Switch to a different port\nconst newUrl = await exposer.reconnect({ port: 8080 })"
|
|
8949
|
-
}
|
|
8950
|
-
]
|
|
8951
|
-
},
|
|
8952
|
-
"disable": {
|
|
8953
|
-
"description": "Disable the feature, ensuring the ngrok tunnel is closed first. Overrides the base `disable()` to guarantee that the tunnel is torn down before the feature is marked as disabled.",
|
|
8954
|
-
"parameters": {},
|
|
8955
|
-
"required": [],
|
|
8956
|
-
"returns": "Promise<this>",
|
|
8957
|
-
"examples": [
|
|
8958
|
-
{
|
|
8959
|
-
"language": "ts",
|
|
8960
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nawait exposer.disable()"
|
|
8961
|
-
}
|
|
8962
|
-
]
|
|
8963
|
-
}
|
|
8964
|
-
},
|
|
8965
|
-
"getters": {},
|
|
8966
|
-
"events": {
|
|
8967
|
-
"exposed": {
|
|
8968
|
-
"name": "exposed",
|
|
8969
|
-
"description": "Event emitted by PortExposer",
|
|
8970
|
-
"arguments": {}
|
|
8971
|
-
},
|
|
8972
|
-
"error": {
|
|
8973
|
-
"name": "error",
|
|
8974
|
-
"description": "Event emitted by PortExposer",
|
|
8975
|
-
"arguments": {}
|
|
8976
|
-
},
|
|
8977
|
-
"closed": {
|
|
8978
|
-
"name": "closed",
|
|
8979
|
-
"description": "Event emitted by PortExposer",
|
|
8980
|
-
"arguments": {}
|
|
8981
|
-
}
|
|
8982
|
-
},
|
|
8983
|
-
"state": {},
|
|
8984
|
-
"options": {},
|
|
8985
|
-
"envVars": [],
|
|
8986
|
-
"examples": [
|
|
8987
|
-
{
|
|
8988
|
-
"language": "ts",
|
|
8989
|
-
"code": "// Basic usage\nconst exposer = container.feature('portExposer', { port: 3000 })\nconst url = await exposer.expose()\nconsole.log(`Service available at: ${url}`)\n\n// With custom subdomain\nconst exposer = container.feature('portExposer', {\n port: 8080,\n subdomain: 'my-app',\n authToken: 'your-ngrok-token'\n})"
|
|
8990
|
-
}
|
|
8991
|
-
]
|
|
8992
|
-
});
|
|
8993
|
-
|
|
8994
8864
|
setBuildTimeData('features.googleSheets', {
|
|
8995
8865
|
"id": "features.googleSheets",
|
|
8996
8866
|
"description": "Google Sheets feature for reading spreadsheet data as JSON, CSV, or raw arrays. Depends on the googleAuth feature for authentication. Creates a Sheets v4 API client lazily and provides convenient methods for reading tabular data.",
|
|
@@ -12186,464 +12056,464 @@ setBuildTimeData('clients.openai', {
|
|
|
12186
12056
|
]
|
|
12187
12057
|
});
|
|
12188
12058
|
|
|
12189
|
-
setBuildTimeData('clients.
|
|
12190
|
-
"id": "clients.
|
|
12191
|
-
"description": "
|
|
12192
|
-
"shortcut": "clients.
|
|
12193
|
-
"className": "
|
|
12059
|
+
setBuildTimeData('clients.elevenlabs', {
|
|
12060
|
+
"id": "clients.elevenlabs",
|
|
12061
|
+
"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.",
|
|
12062
|
+
"shortcut": "clients.elevenlabs",
|
|
12063
|
+
"className": "ElevenLabsClient",
|
|
12194
12064
|
"methods": {
|
|
12195
|
-
"
|
|
12196
|
-
"description": "
|
|
12065
|
+
"beforeRequest": {
|
|
12066
|
+
"description": "Inject the xi-api-key header before each request.",
|
|
12067
|
+
"parameters": {},
|
|
12068
|
+
"required": [],
|
|
12069
|
+
"returns": "void"
|
|
12070
|
+
},
|
|
12071
|
+
"connect": {
|
|
12072
|
+
"description": "Validate the API key by listing available models.",
|
|
12073
|
+
"parameters": {},
|
|
12074
|
+
"required": [],
|
|
12075
|
+
"returns": "Promise<this>",
|
|
12076
|
+
"examples": [
|
|
12077
|
+
{
|
|
12078
|
+
"language": "ts",
|
|
12079
|
+
"code": "await el.connect()"
|
|
12080
|
+
}
|
|
12081
|
+
]
|
|
12082
|
+
},
|
|
12083
|
+
"listVoices": {
|
|
12084
|
+
"description": "List available voices with optional search and filtering.",
|
|
12197
12085
|
"parameters": {
|
|
12198
|
-
"
|
|
12199
|
-
"type": "string",
|
|
12200
|
-
"description": "
|
|
12086
|
+
"options": {
|
|
12087
|
+
"type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
|
|
12088
|
+
"description": "Query parameters for filtering voices"
|
|
12201
12089
|
}
|
|
12202
12090
|
},
|
|
12203
|
-
"required": [
|
|
12204
|
-
|
|
12205
|
-
|
|
12206
|
-
|
|
12091
|
+
"required": [],
|
|
12092
|
+
"returns": "Promise<any>",
|
|
12093
|
+
"examples": [
|
|
12094
|
+
{
|
|
12095
|
+
"language": "ts",
|
|
12096
|
+
"code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
|
|
12097
|
+
}
|
|
12098
|
+
]
|
|
12207
12099
|
},
|
|
12208
|
-
"
|
|
12209
|
-
"description": "
|
|
12100
|
+
"getVoice": {
|
|
12101
|
+
"description": "Get details for a single voice.",
|
|
12210
12102
|
"parameters": {
|
|
12211
|
-
"
|
|
12103
|
+
"voiceId": {
|
|
12212
12104
|
"type": "string",
|
|
12213
|
-
"description": "The
|
|
12214
|
-
},
|
|
12215
|
-
"params": {
|
|
12216
|
-
"type": "Record<string, unknown>",
|
|
12217
|
-
"description": "Arguments to pass to the function"
|
|
12218
|
-
},
|
|
12219
|
-
"options": {
|
|
12220
|
-
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
12221
|
-
"description": "Optional settings (head, get, count)"
|
|
12105
|
+
"description": "The voice ID to look up"
|
|
12222
12106
|
}
|
|
12223
12107
|
},
|
|
12224
12108
|
"required": [
|
|
12225
|
-
"
|
|
12109
|
+
"voiceId"
|
|
12226
12110
|
],
|
|
12227
|
-
"returns": "
|
|
12111
|
+
"returns": "Promise<any>",
|
|
12112
|
+
"examples": [
|
|
12113
|
+
{
|
|
12114
|
+
"language": "ts",
|
|
12115
|
+
"code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
|
|
12116
|
+
}
|
|
12117
|
+
]
|
|
12228
12118
|
},
|
|
12229
|
-
"
|
|
12230
|
-
"description": "
|
|
12119
|
+
"listModels": {
|
|
12120
|
+
"description": "List available TTS models.",
|
|
12121
|
+
"parameters": {},
|
|
12122
|
+
"required": [],
|
|
12123
|
+
"returns": "Promise<any[]>",
|
|
12124
|
+
"examples": [
|
|
12125
|
+
{
|
|
12126
|
+
"language": "ts",
|
|
12127
|
+
"code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
|
|
12128
|
+
}
|
|
12129
|
+
]
|
|
12130
|
+
},
|
|
12131
|
+
"synthesize": {
|
|
12132
|
+
"description": "Synthesize speech from text, returning audio as a Buffer.",
|
|
12231
12133
|
"parameters": {
|
|
12232
|
-
"
|
|
12134
|
+
"text": {
|
|
12233
12135
|
"type": "string",
|
|
12234
|
-
"description": "
|
|
12136
|
+
"description": "The text to convert to speech"
|
|
12235
12137
|
},
|
|
12236
|
-
"
|
|
12237
|
-
"type": "
|
|
12238
|
-
"description": "
|
|
12138
|
+
"options": {
|
|
12139
|
+
"type": "SynthesizeOptions",
|
|
12140
|
+
"description": "Voice, model, format, and voice settings overrides",
|
|
12141
|
+
"properties": {
|
|
12142
|
+
"voiceId": {
|
|
12143
|
+
"type": "string",
|
|
12144
|
+
"description": ""
|
|
12145
|
+
},
|
|
12146
|
+
"modelId": {
|
|
12147
|
+
"type": "string",
|
|
12148
|
+
"description": ""
|
|
12149
|
+
},
|
|
12150
|
+
"outputFormat": {
|
|
12151
|
+
"type": "string",
|
|
12152
|
+
"description": ""
|
|
12153
|
+
},
|
|
12154
|
+
"voiceSettings": {
|
|
12155
|
+
"type": "ElevenLabsVoiceSettings",
|
|
12156
|
+
"description": ""
|
|
12157
|
+
},
|
|
12158
|
+
"disableCache": {
|
|
12159
|
+
"type": "boolean",
|
|
12160
|
+
"description": ""
|
|
12161
|
+
}
|
|
12162
|
+
}
|
|
12239
12163
|
}
|
|
12240
12164
|
},
|
|
12241
12165
|
"required": [
|
|
12242
|
-
"
|
|
12243
|
-
"password"
|
|
12166
|
+
"text"
|
|
12244
12167
|
],
|
|
12245
|
-
"returns": "
|
|
12168
|
+
"returns": "Promise<Buffer>",
|
|
12169
|
+
"examples": [
|
|
12170
|
+
{
|
|
12171
|
+
"language": "ts",
|
|
12172
|
+
"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})"
|
|
12173
|
+
}
|
|
12174
|
+
]
|
|
12246
12175
|
},
|
|
12247
|
-
"
|
|
12248
|
-
"description": "
|
|
12176
|
+
"say": {
|
|
12177
|
+
"description": "Synthesize speech and write the audio to a file.",
|
|
12249
12178
|
"parameters": {
|
|
12250
|
-
"
|
|
12179
|
+
"text": {
|
|
12251
12180
|
"type": "string",
|
|
12252
|
-
"description": "
|
|
12181
|
+
"description": "The text to convert to speech"
|
|
12253
12182
|
},
|
|
12254
|
-
"
|
|
12183
|
+
"outputPath": {
|
|
12255
12184
|
"type": "string",
|
|
12256
|
-
"description": "
|
|
12257
|
-
}
|
|
12258
|
-
},
|
|
12259
|
-
"required": [
|
|
12260
|
-
"email",
|
|
12261
|
-
"password"
|
|
12262
|
-
],
|
|
12263
|
-
"returns": "void"
|
|
12264
|
-
},
|
|
12265
|
-
"signOut": {
|
|
12266
|
-
"description": "Sign the current user out.",
|
|
12267
|
-
"parameters": {},
|
|
12268
|
-
"required": [],
|
|
12269
|
-
"returns": "void"
|
|
12270
|
-
},
|
|
12271
|
-
"getSession": {
|
|
12272
|
-
"description": "Get the current session, if any.",
|
|
12273
|
-
"parameters": {},
|
|
12274
|
-
"required": [],
|
|
12275
|
-
"returns": "void"
|
|
12276
|
-
},
|
|
12277
|
-
"getUser": {
|
|
12278
|
-
"description": "Get the current user, if any.",
|
|
12279
|
-
"parameters": {},
|
|
12280
|
-
"required": [],
|
|
12281
|
-
"returns": "void"
|
|
12282
|
-
},
|
|
12283
|
-
"invoke": {
|
|
12284
|
-
"description": "Invoke a Supabase Edge Function by name.",
|
|
12285
|
-
"parameters": {
|
|
12286
|
-
"name": {
|
|
12287
|
-
"type": "string",
|
|
12288
|
-
"description": "Parameter name"
|
|
12289
|
-
},
|
|
12290
|
-
"body": {
|
|
12291
|
-
"type": "any",
|
|
12292
|
-
"description": "Parameter body"
|
|
12293
|
-
}
|
|
12294
|
-
},
|
|
12295
|
-
"required": [
|
|
12296
|
-
"name"
|
|
12297
|
-
],
|
|
12298
|
-
"returns": "void"
|
|
12299
|
-
},
|
|
12300
|
-
"subscribe": {
|
|
12301
|
-
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
12302
|
-
"parameters": {
|
|
12303
|
-
"channelName": {
|
|
12304
|
-
"type": "string",
|
|
12305
|
-
"description": "A name for this subscription channel"
|
|
12306
|
-
},
|
|
12307
|
-
"table": {
|
|
12308
|
-
"type": "string",
|
|
12309
|
-
"description": "The table to listen to"
|
|
12310
|
-
},
|
|
12311
|
-
"callback": {
|
|
12312
|
-
"type": "(payload: any) => void",
|
|
12313
|
-
"description": "Called with the payload on each change"
|
|
12185
|
+
"description": "File path to write the audio to"
|
|
12314
12186
|
},
|
|
12315
|
-
"
|
|
12316
|
-
"type": "
|
|
12317
|
-
"description": "
|
|
12187
|
+
"options": {
|
|
12188
|
+
"type": "SynthesizeOptions",
|
|
12189
|
+
"description": "Voice, model, format, and voice settings overrides",
|
|
12190
|
+
"properties": {
|
|
12191
|
+
"voiceId": {
|
|
12192
|
+
"type": "string",
|
|
12193
|
+
"description": ""
|
|
12194
|
+
},
|
|
12195
|
+
"modelId": {
|
|
12196
|
+
"type": "string",
|
|
12197
|
+
"description": ""
|
|
12198
|
+
},
|
|
12199
|
+
"outputFormat": {
|
|
12200
|
+
"type": "string",
|
|
12201
|
+
"description": ""
|
|
12202
|
+
},
|
|
12203
|
+
"voiceSettings": {
|
|
12204
|
+
"type": "ElevenLabsVoiceSettings",
|
|
12205
|
+
"description": ""
|
|
12206
|
+
},
|
|
12207
|
+
"disableCache": {
|
|
12208
|
+
"type": "boolean",
|
|
12209
|
+
"description": ""
|
|
12210
|
+
}
|
|
12211
|
+
}
|
|
12318
12212
|
}
|
|
12319
12213
|
},
|
|
12320
12214
|
"required": [
|
|
12321
|
-
"
|
|
12322
|
-
"
|
|
12323
|
-
"callback"
|
|
12215
|
+
"text",
|
|
12216
|
+
"outputPath"
|
|
12324
12217
|
],
|
|
12325
|
-
"returns": "
|
|
12326
|
-
|
|
12327
|
-
|
|
12328
|
-
|
|
12329
|
-
|
|
12330
|
-
"channelName": {
|
|
12331
|
-
"type": "string",
|
|
12332
|
-
"description": "The channel name to remove"
|
|
12218
|
+
"returns": "Promise<string>",
|
|
12219
|
+
"examples": [
|
|
12220
|
+
{
|
|
12221
|
+
"language": "ts",
|
|
12222
|
+
"code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
|
|
12333
12223
|
}
|
|
12334
|
-
|
|
12335
|
-
"required": [
|
|
12336
|
-
"channelName"
|
|
12337
|
-
],
|
|
12338
|
-
"returns": "void"
|
|
12339
|
-
},
|
|
12340
|
-
"unsubscribeAll": {
|
|
12341
|
-
"description": "Unsubscribe and remove all realtime channels.",
|
|
12342
|
-
"parameters": {},
|
|
12343
|
-
"required": [],
|
|
12344
|
-
"returns": "void"
|
|
12345
|
-
},
|
|
12346
|
-
"connect": {
|
|
12347
|
-
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
12348
|
-
"parameters": {},
|
|
12349
|
-
"required": [],
|
|
12350
|
-
"returns": "void"
|
|
12351
|
-
},
|
|
12352
|
-
"disconnect": {
|
|
12353
|
-
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
12354
|
-
"parameters": {},
|
|
12355
|
-
"required": [],
|
|
12356
|
-
"returns": "void"
|
|
12224
|
+
]
|
|
12357
12225
|
}
|
|
12358
12226
|
},
|
|
12359
12227
|
"getters": {
|
|
12360
|
-
"
|
|
12361
|
-
"description": "
|
|
12362
|
-
"returns": "
|
|
12228
|
+
"apiKey": {
|
|
12229
|
+
"description": "The resolved API key from options or environment.",
|
|
12230
|
+
"returns": "string"
|
|
12231
|
+
}
|
|
12232
|
+
},
|
|
12233
|
+
"events": {
|
|
12234
|
+
"failure": {
|
|
12235
|
+
"name": "failure",
|
|
12236
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
12237
|
+
"arguments": {}
|
|
12363
12238
|
},
|
|
12364
|
-
"
|
|
12365
|
-
"
|
|
12366
|
-
"
|
|
12239
|
+
"voices": {
|
|
12240
|
+
"name": "voices",
|
|
12241
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
12242
|
+
"arguments": {}
|
|
12367
12243
|
},
|
|
12368
|
-
"
|
|
12369
|
-
"
|
|
12370
|
-
"
|
|
12244
|
+
"speech": {
|
|
12245
|
+
"name": "speech",
|
|
12246
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
12247
|
+
"arguments": {}
|
|
12371
12248
|
}
|
|
12372
12249
|
},
|
|
12373
|
-
"events": {},
|
|
12374
12250
|
"state": {},
|
|
12375
12251
|
"options": {},
|
|
12376
12252
|
"envVars": [],
|
|
12377
12253
|
"examples": [
|
|
12378
12254
|
{
|
|
12379
12255
|
"language": "ts",
|
|
12380
|
-
"code": "const
|
|
12256
|
+
"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"
|
|
12381
12257
|
}
|
|
12382
|
-
]
|
|
12258
|
+
],
|
|
12259
|
+
"types": {
|
|
12260
|
+
"SynthesizeOptions": {
|
|
12261
|
+
"description": "",
|
|
12262
|
+
"properties": {
|
|
12263
|
+
"voiceId": {
|
|
12264
|
+
"type": "string",
|
|
12265
|
+
"description": "",
|
|
12266
|
+
"optional": true
|
|
12267
|
+
},
|
|
12268
|
+
"modelId": {
|
|
12269
|
+
"type": "string",
|
|
12270
|
+
"description": "",
|
|
12271
|
+
"optional": true
|
|
12272
|
+
},
|
|
12273
|
+
"outputFormat": {
|
|
12274
|
+
"type": "string",
|
|
12275
|
+
"description": "",
|
|
12276
|
+
"optional": true
|
|
12277
|
+
},
|
|
12278
|
+
"voiceSettings": {
|
|
12279
|
+
"type": "ElevenLabsVoiceSettings",
|
|
12280
|
+
"description": "",
|
|
12281
|
+
"optional": true
|
|
12282
|
+
},
|
|
12283
|
+
"disableCache": {
|
|
12284
|
+
"type": "boolean",
|
|
12285
|
+
"description": "",
|
|
12286
|
+
"optional": true
|
|
12287
|
+
}
|
|
12288
|
+
}
|
|
12289
|
+
},
|
|
12290
|
+
"ElevenLabsVoiceSettings": {
|
|
12291
|
+
"description": "",
|
|
12292
|
+
"properties": {
|
|
12293
|
+
"stability": {
|
|
12294
|
+
"type": "number",
|
|
12295
|
+
"description": "",
|
|
12296
|
+
"optional": true
|
|
12297
|
+
},
|
|
12298
|
+
"similarityBoost": {
|
|
12299
|
+
"type": "number",
|
|
12300
|
+
"description": "",
|
|
12301
|
+
"optional": true
|
|
12302
|
+
},
|
|
12303
|
+
"style": {
|
|
12304
|
+
"type": "number",
|
|
12305
|
+
"description": "",
|
|
12306
|
+
"optional": true
|
|
12307
|
+
},
|
|
12308
|
+
"speed": {
|
|
12309
|
+
"type": "number",
|
|
12310
|
+
"description": "",
|
|
12311
|
+
"optional": true
|
|
12312
|
+
},
|
|
12313
|
+
"useSpeakerBoost": {
|
|
12314
|
+
"type": "boolean",
|
|
12315
|
+
"description": "",
|
|
12316
|
+
"optional": true
|
|
12317
|
+
}
|
|
12318
|
+
}
|
|
12319
|
+
}
|
|
12320
|
+
}
|
|
12383
12321
|
});
|
|
12384
12322
|
|
|
12385
|
-
setBuildTimeData('clients.
|
|
12386
|
-
"id": "clients.
|
|
12387
|
-
"description": "
|
|
12388
|
-
"shortcut": "clients.
|
|
12389
|
-
"className": "
|
|
12323
|
+
setBuildTimeData('clients.supabase', {
|
|
12324
|
+
"id": "clients.supabase",
|
|
12325
|
+
"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).",
|
|
12326
|
+
"shortcut": "clients.supabase",
|
|
12327
|
+
"className": "SupabaseClient",
|
|
12390
12328
|
"methods": {
|
|
12391
|
-
"
|
|
12392
|
-
"description": "
|
|
12393
|
-
"parameters": {
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
"connect": {
|
|
12398
|
-
"description": "Validate the API key by listing available models.",
|
|
12399
|
-
"parameters": {},
|
|
12400
|
-
"required": [],
|
|
12401
|
-
"returns": "Promise<this>",
|
|
12402
|
-
"examples": [
|
|
12403
|
-
{
|
|
12404
|
-
"language": "ts",
|
|
12405
|
-
"code": "await el.connect()"
|
|
12329
|
+
"from": {
|
|
12330
|
+
"description": "Start a query on a Postgres table or view.",
|
|
12331
|
+
"parameters": {
|
|
12332
|
+
"table": {
|
|
12333
|
+
"type": "string",
|
|
12334
|
+
"description": "The table or view name to query"
|
|
12406
12335
|
}
|
|
12407
|
-
|
|
12336
|
+
},
|
|
12337
|
+
"required": [
|
|
12338
|
+
"table"
|
|
12339
|
+
],
|
|
12340
|
+
"returns": "void"
|
|
12408
12341
|
},
|
|
12409
|
-
"
|
|
12410
|
-
"description": "
|
|
12342
|
+
"rpc": {
|
|
12343
|
+
"description": "Call a Postgres function (RPC).",
|
|
12411
12344
|
"parameters": {
|
|
12345
|
+
"fn": {
|
|
12346
|
+
"type": "string",
|
|
12347
|
+
"description": "The function name"
|
|
12348
|
+
},
|
|
12349
|
+
"params": {
|
|
12350
|
+
"type": "Record<string, unknown>",
|
|
12351
|
+
"description": "Arguments to pass to the function"
|
|
12352
|
+
},
|
|
12412
12353
|
"options": {
|
|
12413
|
-
"type": "{
|
|
12414
|
-
"description": "
|
|
12354
|
+
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
12355
|
+
"description": "Optional settings (head, get, count)"
|
|
12415
12356
|
}
|
|
12416
12357
|
},
|
|
12417
|
-
"required": [
|
|
12418
|
-
|
|
12419
|
-
|
|
12420
|
-
|
|
12421
|
-
"language": "ts",
|
|
12422
|
-
"code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
|
|
12423
|
-
}
|
|
12424
|
-
]
|
|
12358
|
+
"required": [
|
|
12359
|
+
"fn"
|
|
12360
|
+
],
|
|
12361
|
+
"returns": "void"
|
|
12425
12362
|
},
|
|
12426
|
-
"
|
|
12427
|
-
"description": "
|
|
12363
|
+
"signInWithPassword": {
|
|
12364
|
+
"description": "Sign in with email and password.",
|
|
12428
12365
|
"parameters": {
|
|
12429
|
-
"
|
|
12366
|
+
"email": {
|
|
12430
12367
|
"type": "string",
|
|
12431
|
-
"description": "
|
|
12368
|
+
"description": "Parameter email"
|
|
12369
|
+
},
|
|
12370
|
+
"password": {
|
|
12371
|
+
"type": "string",
|
|
12372
|
+
"description": "Parameter password"
|
|
12432
12373
|
}
|
|
12433
12374
|
},
|
|
12434
12375
|
"required": [
|
|
12435
|
-
"
|
|
12376
|
+
"email",
|
|
12377
|
+
"password"
|
|
12436
12378
|
],
|
|
12437
|
-
"returns": "
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12441
|
-
|
|
12379
|
+
"returns": "void"
|
|
12380
|
+
},
|
|
12381
|
+
"signUp": {
|
|
12382
|
+
"description": "Create a new user account with email and password.",
|
|
12383
|
+
"parameters": {
|
|
12384
|
+
"email": {
|
|
12385
|
+
"type": "string",
|
|
12386
|
+
"description": "Parameter email"
|
|
12387
|
+
},
|
|
12388
|
+
"password": {
|
|
12389
|
+
"type": "string",
|
|
12390
|
+
"description": "Parameter password"
|
|
12442
12391
|
}
|
|
12443
|
-
|
|
12392
|
+
},
|
|
12393
|
+
"required": [
|
|
12394
|
+
"email",
|
|
12395
|
+
"password"
|
|
12396
|
+
],
|
|
12397
|
+
"returns": "void"
|
|
12444
12398
|
},
|
|
12445
|
-
"
|
|
12446
|
-
"description": "
|
|
12399
|
+
"signOut": {
|
|
12400
|
+
"description": "Sign the current user out.",
|
|
12447
12401
|
"parameters": {},
|
|
12448
12402
|
"required": [],
|
|
12449
|
-
"returns": "
|
|
12450
|
-
"examples": [
|
|
12451
|
-
{
|
|
12452
|
-
"language": "ts",
|
|
12453
|
-
"code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
|
|
12454
|
-
}
|
|
12455
|
-
]
|
|
12403
|
+
"returns": "void"
|
|
12456
12404
|
},
|
|
12457
|
-
"
|
|
12458
|
-
"description": "
|
|
12405
|
+
"getSession": {
|
|
12406
|
+
"description": "Get the current session, if any.",
|
|
12407
|
+
"parameters": {},
|
|
12408
|
+
"required": [],
|
|
12409
|
+
"returns": "void"
|
|
12410
|
+
},
|
|
12411
|
+
"getUser": {
|
|
12412
|
+
"description": "Get the current user, if any.",
|
|
12413
|
+
"parameters": {},
|
|
12414
|
+
"required": [],
|
|
12415
|
+
"returns": "void"
|
|
12416
|
+
},
|
|
12417
|
+
"invoke": {
|
|
12418
|
+
"description": "Invoke a Supabase Edge Function by name.",
|
|
12459
12419
|
"parameters": {
|
|
12460
|
-
"
|
|
12420
|
+
"name": {
|
|
12461
12421
|
"type": "string",
|
|
12462
|
-
"description": "
|
|
12422
|
+
"description": "Parameter name"
|
|
12463
12423
|
},
|
|
12464
|
-
"
|
|
12465
|
-
"type": "
|
|
12466
|
-
"description": "
|
|
12467
|
-
"properties": {
|
|
12468
|
-
"voiceId": {
|
|
12469
|
-
"type": "string",
|
|
12470
|
-
"description": ""
|
|
12471
|
-
},
|
|
12472
|
-
"modelId": {
|
|
12473
|
-
"type": "string",
|
|
12474
|
-
"description": ""
|
|
12475
|
-
},
|
|
12476
|
-
"outputFormat": {
|
|
12477
|
-
"type": "string",
|
|
12478
|
-
"description": ""
|
|
12479
|
-
},
|
|
12480
|
-
"voiceSettings": {
|
|
12481
|
-
"type": "ElevenLabsVoiceSettings",
|
|
12482
|
-
"description": ""
|
|
12483
|
-
},
|
|
12484
|
-
"disableCache": {
|
|
12485
|
-
"type": "boolean",
|
|
12486
|
-
"description": ""
|
|
12487
|
-
}
|
|
12488
|
-
}
|
|
12424
|
+
"body": {
|
|
12425
|
+
"type": "any",
|
|
12426
|
+
"description": "Parameter body"
|
|
12489
12427
|
}
|
|
12490
12428
|
},
|
|
12491
12429
|
"required": [
|
|
12492
|
-
"
|
|
12430
|
+
"name"
|
|
12493
12431
|
],
|
|
12494
|
-
"returns": "
|
|
12495
|
-
"examples": [
|
|
12496
|
-
{
|
|
12497
|
-
"language": "ts",
|
|
12498
|
-
"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})"
|
|
12499
|
-
}
|
|
12500
|
-
]
|
|
12432
|
+
"returns": "void"
|
|
12501
12433
|
},
|
|
12502
|
-
"
|
|
12503
|
-
"description": "
|
|
12434
|
+
"subscribe": {
|
|
12435
|
+
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
12504
12436
|
"parameters": {
|
|
12505
|
-
"
|
|
12437
|
+
"channelName": {
|
|
12506
12438
|
"type": "string",
|
|
12507
|
-
"description": "
|
|
12439
|
+
"description": "A name for this subscription channel"
|
|
12508
12440
|
},
|
|
12509
|
-
"
|
|
12441
|
+
"table": {
|
|
12510
12442
|
"type": "string",
|
|
12511
|
-
"description": "
|
|
12443
|
+
"description": "The table to listen to"
|
|
12512
12444
|
},
|
|
12513
|
-
"
|
|
12514
|
-
"type": "
|
|
12515
|
-
"description": "
|
|
12516
|
-
|
|
12517
|
-
|
|
12518
|
-
|
|
12519
|
-
|
|
12520
|
-
},
|
|
12521
|
-
"modelId": {
|
|
12522
|
-
"type": "string",
|
|
12523
|
-
"description": ""
|
|
12524
|
-
},
|
|
12525
|
-
"outputFormat": {
|
|
12526
|
-
"type": "string",
|
|
12527
|
-
"description": ""
|
|
12528
|
-
},
|
|
12529
|
-
"voiceSettings": {
|
|
12530
|
-
"type": "ElevenLabsVoiceSettings",
|
|
12531
|
-
"description": ""
|
|
12532
|
-
},
|
|
12533
|
-
"disableCache": {
|
|
12534
|
-
"type": "boolean",
|
|
12535
|
-
"description": ""
|
|
12536
|
-
}
|
|
12537
|
-
}
|
|
12445
|
+
"callback": {
|
|
12446
|
+
"type": "(payload: any) => void",
|
|
12447
|
+
"description": "Called with the payload on each change"
|
|
12448
|
+
},
|
|
12449
|
+
"event": {
|
|
12450
|
+
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
12451
|
+
"description": "The event type to listen for (default: all changes)"
|
|
12538
12452
|
}
|
|
12539
12453
|
},
|
|
12540
12454
|
"required": [
|
|
12541
|
-
"
|
|
12542
|
-
"
|
|
12455
|
+
"channelName",
|
|
12456
|
+
"table",
|
|
12457
|
+
"callback"
|
|
12543
12458
|
],
|
|
12544
|
-
"returns": "
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12459
|
+
"returns": "RealtimeChannel"
|
|
12460
|
+
},
|
|
12461
|
+
"unsubscribe": {
|
|
12462
|
+
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
12463
|
+
"parameters": {
|
|
12464
|
+
"channelName": {
|
|
12465
|
+
"type": "string",
|
|
12466
|
+
"description": "The channel name to remove"
|
|
12549
12467
|
}
|
|
12550
|
-
|
|
12468
|
+
},
|
|
12469
|
+
"required": [
|
|
12470
|
+
"channelName"
|
|
12471
|
+
],
|
|
12472
|
+
"returns": "void"
|
|
12473
|
+
},
|
|
12474
|
+
"unsubscribeAll": {
|
|
12475
|
+
"description": "Unsubscribe and remove all realtime channels.",
|
|
12476
|
+
"parameters": {},
|
|
12477
|
+
"required": [],
|
|
12478
|
+
"returns": "void"
|
|
12479
|
+
},
|
|
12480
|
+
"connect": {
|
|
12481
|
+
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
12482
|
+
"parameters": {},
|
|
12483
|
+
"required": [],
|
|
12484
|
+
"returns": "void"
|
|
12485
|
+
},
|
|
12486
|
+
"disconnect": {
|
|
12487
|
+
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
12488
|
+
"parameters": {},
|
|
12489
|
+
"required": [],
|
|
12490
|
+
"returns": "void"
|
|
12551
12491
|
}
|
|
12552
12492
|
},
|
|
12553
12493
|
"getters": {
|
|
12554
|
-
"
|
|
12555
|
-
"description": "
|
|
12556
|
-
"returns": "
|
|
12557
|
-
}
|
|
12558
|
-
},
|
|
12559
|
-
"events": {
|
|
12560
|
-
"failure": {
|
|
12561
|
-
"name": "failure",
|
|
12562
|
-
"description": "Event emitted by ElevenLabsClient",
|
|
12563
|
-
"arguments": {}
|
|
12494
|
+
"sdk": {
|
|
12495
|
+
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
12496
|
+
"returns": "SupabaseSDKClient<any, any>"
|
|
12564
12497
|
},
|
|
12565
|
-
"
|
|
12566
|
-
"
|
|
12567
|
-
"
|
|
12568
|
-
"arguments": {}
|
|
12498
|
+
"storage": {
|
|
12499
|
+
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
12500
|
+
"returns": "any"
|
|
12569
12501
|
},
|
|
12570
|
-
"
|
|
12571
|
-
"
|
|
12572
|
-
"
|
|
12573
|
-
"arguments": {}
|
|
12502
|
+
"functions": {
|
|
12503
|
+
"description": "Returns the Supabase Functions client.",
|
|
12504
|
+
"returns": "any"
|
|
12574
12505
|
}
|
|
12575
12506
|
},
|
|
12507
|
+
"events": {},
|
|
12576
12508
|
"state": {},
|
|
12577
12509
|
"options": {},
|
|
12578
12510
|
"envVars": [],
|
|
12579
12511
|
"examples": [
|
|
12580
12512
|
{
|
|
12581
12513
|
"language": "ts",
|
|
12582
|
-
"code": "const
|
|
12583
|
-
}
|
|
12584
|
-
],
|
|
12585
|
-
"types": {
|
|
12586
|
-
"SynthesizeOptions": {
|
|
12587
|
-
"description": "",
|
|
12588
|
-
"properties": {
|
|
12589
|
-
"voiceId": {
|
|
12590
|
-
"type": "string",
|
|
12591
|
-
"description": "",
|
|
12592
|
-
"optional": true
|
|
12593
|
-
},
|
|
12594
|
-
"modelId": {
|
|
12595
|
-
"type": "string",
|
|
12596
|
-
"description": "",
|
|
12597
|
-
"optional": true
|
|
12598
|
-
},
|
|
12599
|
-
"outputFormat": {
|
|
12600
|
-
"type": "string",
|
|
12601
|
-
"description": "",
|
|
12602
|
-
"optional": true
|
|
12603
|
-
},
|
|
12604
|
-
"voiceSettings": {
|
|
12605
|
-
"type": "ElevenLabsVoiceSettings",
|
|
12606
|
-
"description": "",
|
|
12607
|
-
"optional": true
|
|
12608
|
-
},
|
|
12609
|
-
"disableCache": {
|
|
12610
|
-
"type": "boolean",
|
|
12611
|
-
"description": "",
|
|
12612
|
-
"optional": true
|
|
12613
|
-
}
|
|
12614
|
-
}
|
|
12615
|
-
},
|
|
12616
|
-
"ElevenLabsVoiceSettings": {
|
|
12617
|
-
"description": "",
|
|
12618
|
-
"properties": {
|
|
12619
|
-
"stability": {
|
|
12620
|
-
"type": "number",
|
|
12621
|
-
"description": "",
|
|
12622
|
-
"optional": true
|
|
12623
|
-
},
|
|
12624
|
-
"similarityBoost": {
|
|
12625
|
-
"type": "number",
|
|
12626
|
-
"description": "",
|
|
12627
|
-
"optional": true
|
|
12628
|
-
},
|
|
12629
|
-
"style": {
|
|
12630
|
-
"type": "number",
|
|
12631
|
-
"description": "",
|
|
12632
|
-
"optional": true
|
|
12633
|
-
},
|
|
12634
|
-
"speed": {
|
|
12635
|
-
"type": "number",
|
|
12636
|
-
"description": "",
|
|
12637
|
-
"optional": true
|
|
12638
|
-
},
|
|
12639
|
-
"useSpeakerBoost": {
|
|
12640
|
-
"type": "boolean",
|
|
12641
|
-
"description": "",
|
|
12642
|
-
"optional": true
|
|
12643
|
-
}
|
|
12644
|
-
}
|
|
12514
|
+
"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})"
|
|
12645
12515
|
}
|
|
12646
|
-
|
|
12516
|
+
]
|
|
12647
12517
|
});
|
|
12648
12518
|
|
|
12649
12519
|
setBuildTimeData('clients.comfyui', {
|
|
@@ -27550,157 +27420,28 @@ export const introspectionData = [
|
|
|
27550
27420
|
"optional": true
|
|
27551
27421
|
},
|
|
27552
27422
|
"env": {
|
|
27553
|
-
"type": "Record<string, string>",
|
|
27554
|
-
"description": "Additional environment variables merged with process.env",
|
|
27555
|
-
"optional": true
|
|
27556
|
-
},
|
|
27557
|
-
"stdin": {
|
|
27558
|
-
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27559
|
-
"description": "stdin mode: 'pipe' to write to the process, 'inherit', or 'ignore' (default: 'ignore')",
|
|
27560
|
-
"optional": true
|
|
27561
|
-
},
|
|
27562
|
-
"stdout": {
|
|
27563
|
-
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27564
|
-
"description": "stdout mode: 'pipe' to capture output, 'inherit', or 'ignore' (default: 'pipe')",
|
|
27565
|
-
"optional": true
|
|
27566
|
-
},
|
|
27567
|
-
"stderr": {
|
|
27568
|
-
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27569
|
-
"description": "stderr mode: 'pipe' to capture errors, 'inherit', or 'ignore' (default: 'pipe')",
|
|
27570
|
-
"optional": true
|
|
27571
|
-
}
|
|
27572
|
-
}
|
|
27573
|
-
}
|
|
27574
|
-
}
|
|
27575
|
-
},
|
|
27576
|
-
{
|
|
27577
|
-
"id": "portExposer",
|
|
27578
|
-
"description": "Port Exposer Feature Exposes local HTTP services via ngrok with SSL-enabled public URLs. Perfect for development, testing, and sharing local services securely. Features: - SSL-enabled public URLs for local services - Custom subdomains and domains (with paid plans) - Authentication options (basic auth, OAuth) - Regional endpoint selection - Connection state management",
|
|
27579
|
-
"shortcut": "portExposer",
|
|
27580
|
-
"className": "PortExposer",
|
|
27581
|
-
"methods": {
|
|
27582
|
-
"expose": {
|
|
27583
|
-
"description": "Expose the local port via ngrok. Creates an ngrok tunnel to the specified local port and returns the SSL-enabled public URL. Emits `exposed` on success or `error` on failure.",
|
|
27584
|
-
"parameters": {
|
|
27585
|
-
"port": {
|
|
27586
|
-
"type": "number",
|
|
27587
|
-
"description": "Optional port override; falls back to `options.port`"
|
|
27588
|
-
}
|
|
27589
|
-
},
|
|
27590
|
-
"required": [],
|
|
27591
|
-
"returns": "Promise<string>",
|
|
27592
|
-
"examples": [
|
|
27593
|
-
{
|
|
27594
|
-
"language": "ts",
|
|
27595
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nconst url = await exposer.expose()\nconsole.log(`Public URL: ${url}`)\n\n// Override port at call time\nconst url2 = await exposer.expose(8080)"
|
|
27596
|
-
}
|
|
27597
|
-
]
|
|
27598
|
-
},
|
|
27599
|
-
"close": {
|
|
27600
|
-
"description": "Stop exposing the port and close the ngrok tunnel. Tears down the ngrok listener, resets connection state, and emits `closed`. Safe to call when no tunnel is active (no-op).",
|
|
27601
|
-
"parameters": {},
|
|
27602
|
-
"required": [],
|
|
27603
|
-
"returns": "Promise<void>",
|
|
27604
|
-
"examples": [
|
|
27605
|
-
{
|
|
27606
|
-
"language": "ts",
|
|
27607
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\n// ... later\nawait exposer.close()\nconsole.log(exposer.isConnected()) // false"
|
|
27608
|
-
}
|
|
27609
|
-
]
|
|
27610
|
-
},
|
|
27611
|
-
"getPublicUrl": {
|
|
27612
|
-
"description": "Get the current public URL if connected. Returns the live URL from the ngrok listener, or `undefined` if no tunnel is active.",
|
|
27613
|
-
"parameters": {},
|
|
27614
|
-
"required": [],
|
|
27615
|
-
"returns": "string | undefined",
|
|
27616
|
-
"examples": [
|
|
27617
|
-
{
|
|
27618
|
-
"language": "ts",
|
|
27619
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nconsole.log(exposer.getPublicUrl()) // 'https://abc123.ngrok.io'"
|
|
27620
|
-
}
|
|
27621
|
-
]
|
|
27622
|
-
},
|
|
27623
|
-
"isConnected": {
|
|
27624
|
-
"description": "Check if the ngrok tunnel is currently connected.",
|
|
27625
|
-
"parameters": {},
|
|
27626
|
-
"required": [],
|
|
27627
|
-
"returns": "boolean",
|
|
27628
|
-
"examples": [
|
|
27629
|
-
{
|
|
27630
|
-
"language": "ts",
|
|
27631
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nconsole.log(exposer.isConnected()) // false\nawait exposer.expose()\nconsole.log(exposer.isConnected()) // true"
|
|
27632
|
-
}
|
|
27633
|
-
]
|
|
27634
|
-
},
|
|
27635
|
-
"getConnectionInfo": {
|
|
27636
|
-
"description": "Get a snapshot of the current connection information. Returns an object with the tunnel's connected status, public URL, local port, connection timestamp, and session metadata.",
|
|
27637
|
-
"parameters": {},
|
|
27638
|
-
"required": [],
|
|
27639
|
-
"returns": "void",
|
|
27640
|
-
"examples": [
|
|
27641
|
-
{
|
|
27642
|
-
"language": "ts",
|
|
27643
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nconst info = exposer.getConnectionInfo()\nconsole.log(info.publicUrl, info.localPort, info.connectedAt)"
|
|
27644
|
-
}
|
|
27645
|
-
]
|
|
27646
|
-
},
|
|
27647
|
-
"reconnect": {
|
|
27648
|
-
"description": "Close the existing tunnel and re-expose with optionally updated options. Calls `close()` first, merges any new options, then calls `expose()`.",
|
|
27649
|
-
"parameters": {
|
|
27650
|
-
"newOptions": {
|
|
27651
|
-
"type": "Partial<PortExposerOptions>",
|
|
27652
|
-
"description": "Optional partial options to merge before reconnecting"
|
|
27653
|
-
}
|
|
27654
|
-
},
|
|
27655
|
-
"required": [],
|
|
27656
|
-
"returns": "Promise<string>",
|
|
27657
|
-
"examples": [
|
|
27658
|
-
{
|
|
27659
|
-
"language": "ts",
|
|
27660
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\n// Switch to a different port\nconst newUrl = await exposer.reconnect({ port: 8080 })"
|
|
27661
|
-
}
|
|
27662
|
-
]
|
|
27663
|
-
},
|
|
27664
|
-
"disable": {
|
|
27665
|
-
"description": "Disable the feature, ensuring the ngrok tunnel is closed first. Overrides the base `disable()` to guarantee that the tunnel is torn down before the feature is marked as disabled.",
|
|
27666
|
-
"parameters": {},
|
|
27667
|
-
"required": [],
|
|
27668
|
-
"returns": "Promise<this>",
|
|
27669
|
-
"examples": [
|
|
27670
|
-
{
|
|
27671
|
-
"language": "ts",
|
|
27672
|
-
"code": "const exposer = container.feature('portExposer', { port: 3000 })\nawait exposer.expose()\nawait exposer.disable()"
|
|
27673
|
-
}
|
|
27674
|
-
]
|
|
27675
|
-
}
|
|
27676
|
-
},
|
|
27677
|
-
"getters": {},
|
|
27678
|
-
"events": {
|
|
27679
|
-
"exposed": {
|
|
27680
|
-
"name": "exposed",
|
|
27681
|
-
"description": "Event emitted by PortExposer",
|
|
27682
|
-
"arguments": {}
|
|
27683
|
-
},
|
|
27684
|
-
"error": {
|
|
27685
|
-
"name": "error",
|
|
27686
|
-
"description": "Event emitted by PortExposer",
|
|
27687
|
-
"arguments": {}
|
|
27688
|
-
},
|
|
27689
|
-
"closed": {
|
|
27690
|
-
"name": "closed",
|
|
27691
|
-
"description": "Event emitted by PortExposer",
|
|
27692
|
-
"arguments": {}
|
|
27693
|
-
}
|
|
27694
|
-
},
|
|
27695
|
-
"state": {},
|
|
27696
|
-
"options": {},
|
|
27697
|
-
"envVars": [],
|
|
27698
|
-
"examples": [
|
|
27699
|
-
{
|
|
27700
|
-
"language": "ts",
|
|
27701
|
-
"code": "// Basic usage\nconst exposer = container.feature('portExposer', { port: 3000 })\nconst url = await exposer.expose()\nconsole.log(`Service available at: ${url}`)\n\n// With custom subdomain\nconst exposer = container.feature('portExposer', {\n port: 8080,\n subdomain: 'my-app',\n authToken: 'your-ngrok-token'\n})"
|
|
27423
|
+
"type": "Record<string, string>",
|
|
27424
|
+
"description": "Additional environment variables merged with process.env",
|
|
27425
|
+
"optional": true
|
|
27426
|
+
},
|
|
27427
|
+
"stdin": {
|
|
27428
|
+
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27429
|
+
"description": "stdin mode: 'pipe' to write to the process, 'inherit', or 'ignore' (default: 'ignore')",
|
|
27430
|
+
"optional": true
|
|
27431
|
+
},
|
|
27432
|
+
"stdout": {
|
|
27433
|
+
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27434
|
+
"description": "stdout mode: 'pipe' to capture output, 'inherit', or 'ignore' (default: 'pipe')",
|
|
27435
|
+
"optional": true
|
|
27436
|
+
},
|
|
27437
|
+
"stderr": {
|
|
27438
|
+
"type": "'pipe' | 'inherit' | 'ignore' | null",
|
|
27439
|
+
"description": "stderr mode: 'pipe' to capture errors, 'inherit', or 'ignore' (default: 'pipe')",
|
|
27440
|
+
"optional": true
|
|
27441
|
+
}
|
|
27442
|
+
}
|
|
27702
27443
|
}
|
|
27703
|
-
|
|
27444
|
+
}
|
|
27704
27445
|
},
|
|
27705
27446
|
{
|
|
27706
27447
|
"id": "features.googleSheets",
|
|
@@ -30820,264 +30561,69 @@ export const introspectionData = [
|
|
|
30820
30561
|
"options": {
|
|
30821
30562
|
"type": "Partial<OpenAI.Chat.Completions.ChatCompletionCreateParams>",
|
|
30822
30563
|
"description": "Additional completion parameters"
|
|
30823
|
-
}
|
|
30824
|
-
},
|
|
30825
|
-
"required": [
|
|
30826
|
-
"messages"
|
|
30827
|
-
],
|
|
30828
|
-
"returns": "Promise<string>",
|
|
30829
|
-
"examples": [
|
|
30830
|
-
{
|
|
30831
|
-
"language": "ts",
|
|
30832
|
-
"code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
|
|
30833
|
-
}
|
|
30834
|
-
]
|
|
30835
|
-
}
|
|
30836
|
-
},
|
|
30837
|
-
"getters": {
|
|
30838
|
-
"defaultModel": {
|
|
30839
|
-
"description": "The default model used for completions, from options or 'gpt-4o'.",
|
|
30840
|
-
"returns": "string"
|
|
30841
|
-
},
|
|
30842
|
-
"raw": {
|
|
30843
|
-
"description": "The underlying OpenAI SDK instance for advanced use cases.",
|
|
30844
|
-
"returns": "OpenAI"
|
|
30845
|
-
}
|
|
30846
|
-
},
|
|
30847
|
-
"events": {
|
|
30848
|
-
"connected": {
|
|
30849
|
-
"name": "connected",
|
|
30850
|
-
"description": "Event emitted by OpenAIClient",
|
|
30851
|
-
"arguments": {}
|
|
30852
|
-
},
|
|
30853
|
-
"failure": {
|
|
30854
|
-
"name": "failure",
|
|
30855
|
-
"description": "Event emitted by OpenAIClient",
|
|
30856
|
-
"arguments": {}
|
|
30857
|
-
},
|
|
30858
|
-
"completion": {
|
|
30859
|
-
"name": "completion",
|
|
30860
|
-
"description": "Event emitted by OpenAIClient",
|
|
30861
|
-
"arguments": {}
|
|
30862
|
-
},
|
|
30863
|
-
"embedding": {
|
|
30864
|
-
"name": "embedding",
|
|
30865
|
-
"description": "Event emitted by OpenAIClient",
|
|
30866
|
-
"arguments": {}
|
|
30867
|
-
},
|
|
30868
|
-
"image": {
|
|
30869
|
-
"name": "image",
|
|
30870
|
-
"description": "Event emitted by OpenAIClient",
|
|
30871
|
-
"arguments": {}
|
|
30872
|
-
},
|
|
30873
|
-
"models": {
|
|
30874
|
-
"name": "models",
|
|
30875
|
-
"description": "Event emitted by OpenAIClient",
|
|
30876
|
-
"arguments": {}
|
|
30877
|
-
}
|
|
30878
|
-
},
|
|
30879
|
-
"state": {},
|
|
30880
|
-
"options": {},
|
|
30881
|
-
"envVars": [],
|
|
30882
|
-
"examples": [
|
|
30883
|
-
{
|
|
30884
|
-
"language": "ts",
|
|
30885
|
-
"code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
|
|
30886
|
-
}
|
|
30887
|
-
]
|
|
30888
|
-
},
|
|
30889
|
-
{
|
|
30890
|
-
"id": "clients.supabase",
|
|
30891
|
-
"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).",
|
|
30892
|
-
"shortcut": "clients.supabase",
|
|
30893
|
-
"className": "SupabaseClient",
|
|
30894
|
-
"methods": {
|
|
30895
|
-
"from": {
|
|
30896
|
-
"description": "Start a query on a Postgres table or view.",
|
|
30897
|
-
"parameters": {
|
|
30898
|
-
"table": {
|
|
30899
|
-
"type": "string",
|
|
30900
|
-
"description": "The table or view name to query"
|
|
30901
|
-
}
|
|
30902
|
-
},
|
|
30903
|
-
"required": [
|
|
30904
|
-
"table"
|
|
30905
|
-
],
|
|
30906
|
-
"returns": "void"
|
|
30907
|
-
},
|
|
30908
|
-
"rpc": {
|
|
30909
|
-
"description": "Call a Postgres function (RPC).",
|
|
30910
|
-
"parameters": {
|
|
30911
|
-
"fn": {
|
|
30912
|
-
"type": "string",
|
|
30913
|
-
"description": "The function name"
|
|
30914
|
-
},
|
|
30915
|
-
"params": {
|
|
30916
|
-
"type": "Record<string, unknown>",
|
|
30917
|
-
"description": "Arguments to pass to the function"
|
|
30918
|
-
},
|
|
30919
|
-
"options": {
|
|
30920
|
-
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
30921
|
-
"description": "Optional settings (head, get, count)"
|
|
30922
|
-
}
|
|
30923
|
-
},
|
|
30924
|
-
"required": [
|
|
30925
|
-
"fn"
|
|
30926
|
-
],
|
|
30927
|
-
"returns": "void"
|
|
30928
|
-
},
|
|
30929
|
-
"signInWithPassword": {
|
|
30930
|
-
"description": "Sign in with email and password.",
|
|
30931
|
-
"parameters": {
|
|
30932
|
-
"email": {
|
|
30933
|
-
"type": "string",
|
|
30934
|
-
"description": "Parameter email"
|
|
30935
|
-
},
|
|
30936
|
-
"password": {
|
|
30937
|
-
"type": "string",
|
|
30938
|
-
"description": "Parameter password"
|
|
30939
|
-
}
|
|
30940
|
-
},
|
|
30941
|
-
"required": [
|
|
30942
|
-
"email",
|
|
30943
|
-
"password"
|
|
30944
|
-
],
|
|
30945
|
-
"returns": "void"
|
|
30946
|
-
},
|
|
30947
|
-
"signUp": {
|
|
30948
|
-
"description": "Create a new user account with email and password.",
|
|
30949
|
-
"parameters": {
|
|
30950
|
-
"email": {
|
|
30951
|
-
"type": "string",
|
|
30952
|
-
"description": "Parameter email"
|
|
30953
|
-
},
|
|
30954
|
-
"password": {
|
|
30955
|
-
"type": "string",
|
|
30956
|
-
"description": "Parameter password"
|
|
30957
|
-
}
|
|
30958
|
-
},
|
|
30959
|
-
"required": [
|
|
30960
|
-
"email",
|
|
30961
|
-
"password"
|
|
30962
|
-
],
|
|
30963
|
-
"returns": "void"
|
|
30964
|
-
},
|
|
30965
|
-
"signOut": {
|
|
30966
|
-
"description": "Sign the current user out.",
|
|
30967
|
-
"parameters": {},
|
|
30968
|
-
"required": [],
|
|
30969
|
-
"returns": "void"
|
|
30970
|
-
},
|
|
30971
|
-
"getSession": {
|
|
30972
|
-
"description": "Get the current session, if any.",
|
|
30973
|
-
"parameters": {},
|
|
30974
|
-
"required": [],
|
|
30975
|
-
"returns": "void"
|
|
30976
|
-
},
|
|
30977
|
-
"getUser": {
|
|
30978
|
-
"description": "Get the current user, if any.",
|
|
30979
|
-
"parameters": {},
|
|
30980
|
-
"required": [],
|
|
30981
|
-
"returns": "void"
|
|
30982
|
-
},
|
|
30983
|
-
"invoke": {
|
|
30984
|
-
"description": "Invoke a Supabase Edge Function by name.",
|
|
30985
|
-
"parameters": {
|
|
30986
|
-
"name": {
|
|
30987
|
-
"type": "string",
|
|
30988
|
-
"description": "Parameter name"
|
|
30989
|
-
},
|
|
30990
|
-
"body": {
|
|
30991
|
-
"type": "any",
|
|
30992
|
-
"description": "Parameter body"
|
|
30993
|
-
}
|
|
30994
|
-
},
|
|
30995
|
-
"required": [
|
|
30996
|
-
"name"
|
|
30997
|
-
],
|
|
30998
|
-
"returns": "void"
|
|
30999
|
-
},
|
|
31000
|
-
"subscribe": {
|
|
31001
|
-
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
31002
|
-
"parameters": {
|
|
31003
|
-
"channelName": {
|
|
31004
|
-
"type": "string",
|
|
31005
|
-
"description": "A name for this subscription channel"
|
|
31006
|
-
},
|
|
31007
|
-
"table": {
|
|
31008
|
-
"type": "string",
|
|
31009
|
-
"description": "The table to listen to"
|
|
31010
|
-
},
|
|
31011
|
-
"callback": {
|
|
31012
|
-
"type": "(payload: any) => void",
|
|
31013
|
-
"description": "Called with the payload on each change"
|
|
31014
|
-
},
|
|
31015
|
-
"event": {
|
|
31016
|
-
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
31017
|
-
"description": "The event type to listen for (default: all changes)"
|
|
31018
|
-
}
|
|
31019
|
-
},
|
|
31020
|
-
"required": [
|
|
31021
|
-
"channelName",
|
|
31022
|
-
"table",
|
|
31023
|
-
"callback"
|
|
31024
|
-
],
|
|
31025
|
-
"returns": "RealtimeChannel"
|
|
31026
|
-
},
|
|
31027
|
-
"unsubscribe": {
|
|
31028
|
-
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
31029
|
-
"parameters": {
|
|
31030
|
-
"channelName": {
|
|
31031
|
-
"type": "string",
|
|
31032
|
-
"description": "The channel name to remove"
|
|
31033
|
-
}
|
|
31034
|
-
},
|
|
31035
|
-
"required": [
|
|
31036
|
-
"channelName"
|
|
31037
|
-
],
|
|
31038
|
-
"returns": "void"
|
|
31039
|
-
},
|
|
31040
|
-
"unsubscribeAll": {
|
|
31041
|
-
"description": "Unsubscribe and remove all realtime channels.",
|
|
31042
|
-
"parameters": {},
|
|
31043
|
-
"required": [],
|
|
31044
|
-
"returns": "void"
|
|
31045
|
-
},
|
|
31046
|
-
"connect": {
|
|
31047
|
-
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
31048
|
-
"parameters": {},
|
|
31049
|
-
"required": [],
|
|
31050
|
-
"returns": "void"
|
|
31051
|
-
},
|
|
31052
|
-
"disconnect": {
|
|
31053
|
-
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
31054
|
-
"parameters": {},
|
|
31055
|
-
"required": [],
|
|
31056
|
-
"returns": "void"
|
|
30564
|
+
}
|
|
30565
|
+
},
|
|
30566
|
+
"required": [
|
|
30567
|
+
"messages"
|
|
30568
|
+
],
|
|
30569
|
+
"returns": "Promise<string>",
|
|
30570
|
+
"examples": [
|
|
30571
|
+
{
|
|
30572
|
+
"language": "ts",
|
|
30573
|
+
"code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
|
|
30574
|
+
}
|
|
30575
|
+
]
|
|
31057
30576
|
}
|
|
31058
30577
|
},
|
|
31059
30578
|
"getters": {
|
|
31060
|
-
"
|
|
31061
|
-
"description": "
|
|
31062
|
-
"returns": "
|
|
30579
|
+
"defaultModel": {
|
|
30580
|
+
"description": "The default model used for completions, from options or 'gpt-4o'.",
|
|
30581
|
+
"returns": "string"
|
|
31063
30582
|
},
|
|
31064
|
-
"
|
|
31065
|
-
"description": "
|
|
31066
|
-
"returns": "
|
|
30583
|
+
"raw": {
|
|
30584
|
+
"description": "The underlying OpenAI SDK instance for advanced use cases.",
|
|
30585
|
+
"returns": "OpenAI"
|
|
30586
|
+
}
|
|
30587
|
+
},
|
|
30588
|
+
"events": {
|
|
30589
|
+
"connected": {
|
|
30590
|
+
"name": "connected",
|
|
30591
|
+
"description": "Event emitted by OpenAIClient",
|
|
30592
|
+
"arguments": {}
|
|
31067
30593
|
},
|
|
31068
|
-
"
|
|
31069
|
-
"
|
|
31070
|
-
"
|
|
30594
|
+
"failure": {
|
|
30595
|
+
"name": "failure",
|
|
30596
|
+
"description": "Event emitted by OpenAIClient",
|
|
30597
|
+
"arguments": {}
|
|
30598
|
+
},
|
|
30599
|
+
"completion": {
|
|
30600
|
+
"name": "completion",
|
|
30601
|
+
"description": "Event emitted by OpenAIClient",
|
|
30602
|
+
"arguments": {}
|
|
30603
|
+
},
|
|
30604
|
+
"embedding": {
|
|
30605
|
+
"name": "embedding",
|
|
30606
|
+
"description": "Event emitted by OpenAIClient",
|
|
30607
|
+
"arguments": {}
|
|
30608
|
+
},
|
|
30609
|
+
"image": {
|
|
30610
|
+
"name": "image",
|
|
30611
|
+
"description": "Event emitted by OpenAIClient",
|
|
30612
|
+
"arguments": {}
|
|
30613
|
+
},
|
|
30614
|
+
"models": {
|
|
30615
|
+
"name": "models",
|
|
30616
|
+
"description": "Event emitted by OpenAIClient",
|
|
30617
|
+
"arguments": {}
|
|
31071
30618
|
}
|
|
31072
30619
|
},
|
|
31073
|
-
"events": {},
|
|
31074
30620
|
"state": {},
|
|
31075
30621
|
"options": {},
|
|
31076
30622
|
"envVars": [],
|
|
31077
30623
|
"examples": [
|
|
31078
30624
|
{
|
|
31079
30625
|
"language": "ts",
|
|
31080
|
-
"code": "const
|
|
30626
|
+
"code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
|
|
31081
30627
|
}
|
|
31082
30628
|
]
|
|
31083
30629
|
},
|
|
@@ -31344,6 +30890,201 @@ export const introspectionData = [
|
|
|
31344
30890
|
}
|
|
31345
30891
|
}
|
|
31346
30892
|
},
|
|
30893
|
+
{
|
|
30894
|
+
"id": "clients.supabase",
|
|
30895
|
+
"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).",
|
|
30896
|
+
"shortcut": "clients.supabase",
|
|
30897
|
+
"className": "SupabaseClient",
|
|
30898
|
+
"methods": {
|
|
30899
|
+
"from": {
|
|
30900
|
+
"description": "Start a query on a Postgres table or view.",
|
|
30901
|
+
"parameters": {
|
|
30902
|
+
"table": {
|
|
30903
|
+
"type": "string",
|
|
30904
|
+
"description": "The table or view name to query"
|
|
30905
|
+
}
|
|
30906
|
+
},
|
|
30907
|
+
"required": [
|
|
30908
|
+
"table"
|
|
30909
|
+
],
|
|
30910
|
+
"returns": "void"
|
|
30911
|
+
},
|
|
30912
|
+
"rpc": {
|
|
30913
|
+
"description": "Call a Postgres function (RPC).",
|
|
30914
|
+
"parameters": {
|
|
30915
|
+
"fn": {
|
|
30916
|
+
"type": "string",
|
|
30917
|
+
"description": "The function name"
|
|
30918
|
+
},
|
|
30919
|
+
"params": {
|
|
30920
|
+
"type": "Record<string, unknown>",
|
|
30921
|
+
"description": "Arguments to pass to the function"
|
|
30922
|
+
},
|
|
30923
|
+
"options": {
|
|
30924
|
+
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
30925
|
+
"description": "Optional settings (head, get, count)"
|
|
30926
|
+
}
|
|
30927
|
+
},
|
|
30928
|
+
"required": [
|
|
30929
|
+
"fn"
|
|
30930
|
+
],
|
|
30931
|
+
"returns": "void"
|
|
30932
|
+
},
|
|
30933
|
+
"signInWithPassword": {
|
|
30934
|
+
"description": "Sign in with email and password.",
|
|
30935
|
+
"parameters": {
|
|
30936
|
+
"email": {
|
|
30937
|
+
"type": "string",
|
|
30938
|
+
"description": "Parameter email"
|
|
30939
|
+
},
|
|
30940
|
+
"password": {
|
|
30941
|
+
"type": "string",
|
|
30942
|
+
"description": "Parameter password"
|
|
30943
|
+
}
|
|
30944
|
+
},
|
|
30945
|
+
"required": [
|
|
30946
|
+
"email",
|
|
30947
|
+
"password"
|
|
30948
|
+
],
|
|
30949
|
+
"returns": "void"
|
|
30950
|
+
},
|
|
30951
|
+
"signUp": {
|
|
30952
|
+
"description": "Create a new user account with email and password.",
|
|
30953
|
+
"parameters": {
|
|
30954
|
+
"email": {
|
|
30955
|
+
"type": "string",
|
|
30956
|
+
"description": "Parameter email"
|
|
30957
|
+
},
|
|
30958
|
+
"password": {
|
|
30959
|
+
"type": "string",
|
|
30960
|
+
"description": "Parameter password"
|
|
30961
|
+
}
|
|
30962
|
+
},
|
|
30963
|
+
"required": [
|
|
30964
|
+
"email",
|
|
30965
|
+
"password"
|
|
30966
|
+
],
|
|
30967
|
+
"returns": "void"
|
|
30968
|
+
},
|
|
30969
|
+
"signOut": {
|
|
30970
|
+
"description": "Sign the current user out.",
|
|
30971
|
+
"parameters": {},
|
|
30972
|
+
"required": [],
|
|
30973
|
+
"returns": "void"
|
|
30974
|
+
},
|
|
30975
|
+
"getSession": {
|
|
30976
|
+
"description": "Get the current session, if any.",
|
|
30977
|
+
"parameters": {},
|
|
30978
|
+
"required": [],
|
|
30979
|
+
"returns": "void"
|
|
30980
|
+
},
|
|
30981
|
+
"getUser": {
|
|
30982
|
+
"description": "Get the current user, if any.",
|
|
30983
|
+
"parameters": {},
|
|
30984
|
+
"required": [],
|
|
30985
|
+
"returns": "void"
|
|
30986
|
+
},
|
|
30987
|
+
"invoke": {
|
|
30988
|
+
"description": "Invoke a Supabase Edge Function by name.",
|
|
30989
|
+
"parameters": {
|
|
30990
|
+
"name": {
|
|
30991
|
+
"type": "string",
|
|
30992
|
+
"description": "Parameter name"
|
|
30993
|
+
},
|
|
30994
|
+
"body": {
|
|
30995
|
+
"type": "any",
|
|
30996
|
+
"description": "Parameter body"
|
|
30997
|
+
}
|
|
30998
|
+
},
|
|
30999
|
+
"required": [
|
|
31000
|
+
"name"
|
|
31001
|
+
],
|
|
31002
|
+
"returns": "void"
|
|
31003
|
+
},
|
|
31004
|
+
"subscribe": {
|
|
31005
|
+
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
31006
|
+
"parameters": {
|
|
31007
|
+
"channelName": {
|
|
31008
|
+
"type": "string",
|
|
31009
|
+
"description": "A name for this subscription channel"
|
|
31010
|
+
},
|
|
31011
|
+
"table": {
|
|
31012
|
+
"type": "string",
|
|
31013
|
+
"description": "The table to listen to"
|
|
31014
|
+
},
|
|
31015
|
+
"callback": {
|
|
31016
|
+
"type": "(payload: any) => void",
|
|
31017
|
+
"description": "Called with the payload on each change"
|
|
31018
|
+
},
|
|
31019
|
+
"event": {
|
|
31020
|
+
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
31021
|
+
"description": "The event type to listen for (default: all changes)"
|
|
31022
|
+
}
|
|
31023
|
+
},
|
|
31024
|
+
"required": [
|
|
31025
|
+
"channelName",
|
|
31026
|
+
"table",
|
|
31027
|
+
"callback"
|
|
31028
|
+
],
|
|
31029
|
+
"returns": "RealtimeChannel"
|
|
31030
|
+
},
|
|
31031
|
+
"unsubscribe": {
|
|
31032
|
+
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
31033
|
+
"parameters": {
|
|
31034
|
+
"channelName": {
|
|
31035
|
+
"type": "string",
|
|
31036
|
+
"description": "The channel name to remove"
|
|
31037
|
+
}
|
|
31038
|
+
},
|
|
31039
|
+
"required": [
|
|
31040
|
+
"channelName"
|
|
31041
|
+
],
|
|
31042
|
+
"returns": "void"
|
|
31043
|
+
},
|
|
31044
|
+
"unsubscribeAll": {
|
|
31045
|
+
"description": "Unsubscribe and remove all realtime channels.",
|
|
31046
|
+
"parameters": {},
|
|
31047
|
+
"required": [],
|
|
31048
|
+
"returns": "void"
|
|
31049
|
+
},
|
|
31050
|
+
"connect": {
|
|
31051
|
+
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
31052
|
+
"parameters": {},
|
|
31053
|
+
"required": [],
|
|
31054
|
+
"returns": "void"
|
|
31055
|
+
},
|
|
31056
|
+
"disconnect": {
|
|
31057
|
+
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
31058
|
+
"parameters": {},
|
|
31059
|
+
"required": [],
|
|
31060
|
+
"returns": "void"
|
|
31061
|
+
}
|
|
31062
|
+
},
|
|
31063
|
+
"getters": {
|
|
31064
|
+
"sdk": {
|
|
31065
|
+
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
31066
|
+
"returns": "SupabaseSDKClient<any, any>"
|
|
31067
|
+
},
|
|
31068
|
+
"storage": {
|
|
31069
|
+
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
31070
|
+
"returns": "any"
|
|
31071
|
+
},
|
|
31072
|
+
"functions": {
|
|
31073
|
+
"description": "Returns the Supabase Functions client.",
|
|
31074
|
+
"returns": "any"
|
|
31075
|
+
}
|
|
31076
|
+
},
|
|
31077
|
+
"events": {},
|
|
31078
|
+
"state": {},
|
|
31079
|
+
"options": {},
|
|
31080
|
+
"envVars": [],
|
|
31081
|
+
"examples": [
|
|
31082
|
+
{
|
|
31083
|
+
"language": "ts",
|
|
31084
|
+
"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})"
|
|
31085
|
+
}
|
|
31086
|
+
]
|
|
31087
|
+
},
|
|
31347
31088
|
{
|
|
31348
31089
|
"id": "clients.comfyui",
|
|
31349
31090
|
"description": "ComfyUI client — execute Stable Diffusion workflows via the ComfyUI API. Connects to a ComfyUI instance to queue prompts, track execution via WebSocket or polling, and download generated images. Supports both UI-format and API-format workflows with automatic conversion.",
|