@soederpop/luca 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assistants/codingAssistant/hooks.ts +7 -0
- package/package.json +1 -1
- package/scripts/test-assistant-hooks.ts +13 -0
- package/src/agi/features/skills-library.ts +7 -0
- package/src/bootstrap/generated.ts +1 -1
- package/src/cli/build-info.ts +2 -2
- package/src/introspection/generated.agi.ts +486 -460
- package/src/introspection/generated.node.ts +1270 -1270
- package/src/introspection/generated.web.ts +1 -1
- package/src/node/features/transpiler.ts +34 -9
- package/src/node/features/vm.ts +3 -2
- package/src/python/generated.ts +1 -1
- package/src/scaffolds/generated.ts +1 -1
- package/test/assistant.test.ts +72 -0
- package/test/vm-loadmodule.test.ts +213 -0
|
@@ -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-30T06:52:55.070Z
|
|
5
5
|
|
|
6
6
|
setBuildTimeData('features.googleDocs', {
|
|
7
7
|
"id": "features.googleDocs",
|
|
@@ -12106,6 +12106,202 @@ setBuildTimeData('clients.openai', {
|
|
|
12106
12106
|
]
|
|
12107
12107
|
});
|
|
12108
12108
|
|
|
12109
|
+
setBuildTimeData('clients.supabase', {
|
|
12110
|
+
"id": "clients.supabase",
|
|
12111
|
+
"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).",
|
|
12112
|
+
"shortcut": "clients.supabase",
|
|
12113
|
+
"className": "SupabaseClient",
|
|
12114
|
+
"methods": {
|
|
12115
|
+
"from": {
|
|
12116
|
+
"description": "Start a query on a Postgres table or view.",
|
|
12117
|
+
"parameters": {
|
|
12118
|
+
"table": {
|
|
12119
|
+
"type": "string",
|
|
12120
|
+
"description": "The table or view name to query"
|
|
12121
|
+
}
|
|
12122
|
+
},
|
|
12123
|
+
"required": [
|
|
12124
|
+
"table"
|
|
12125
|
+
],
|
|
12126
|
+
"returns": "void"
|
|
12127
|
+
},
|
|
12128
|
+
"rpc": {
|
|
12129
|
+
"description": "Call a Postgres function (RPC).",
|
|
12130
|
+
"parameters": {
|
|
12131
|
+
"fn": {
|
|
12132
|
+
"type": "string",
|
|
12133
|
+
"description": "The function name"
|
|
12134
|
+
},
|
|
12135
|
+
"params": {
|
|
12136
|
+
"type": "Record<string, unknown>",
|
|
12137
|
+
"description": "Arguments to pass to the function"
|
|
12138
|
+
},
|
|
12139
|
+
"options": {
|
|
12140
|
+
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
12141
|
+
"description": "Optional settings (head, get, count)"
|
|
12142
|
+
}
|
|
12143
|
+
},
|
|
12144
|
+
"required": [
|
|
12145
|
+
"fn"
|
|
12146
|
+
],
|
|
12147
|
+
"returns": "void"
|
|
12148
|
+
},
|
|
12149
|
+
"signInWithPassword": {
|
|
12150
|
+
"description": "Sign in with email and password.",
|
|
12151
|
+
"parameters": {
|
|
12152
|
+
"email": {
|
|
12153
|
+
"type": "string",
|
|
12154
|
+
"description": "Parameter email"
|
|
12155
|
+
},
|
|
12156
|
+
"password": {
|
|
12157
|
+
"type": "string",
|
|
12158
|
+
"description": "Parameter password"
|
|
12159
|
+
}
|
|
12160
|
+
},
|
|
12161
|
+
"required": [
|
|
12162
|
+
"email",
|
|
12163
|
+
"password"
|
|
12164
|
+
],
|
|
12165
|
+
"returns": "void"
|
|
12166
|
+
},
|
|
12167
|
+
"signUp": {
|
|
12168
|
+
"description": "Create a new user account with email and password.",
|
|
12169
|
+
"parameters": {
|
|
12170
|
+
"email": {
|
|
12171
|
+
"type": "string",
|
|
12172
|
+
"description": "Parameter email"
|
|
12173
|
+
},
|
|
12174
|
+
"password": {
|
|
12175
|
+
"type": "string",
|
|
12176
|
+
"description": "Parameter password"
|
|
12177
|
+
}
|
|
12178
|
+
},
|
|
12179
|
+
"required": [
|
|
12180
|
+
"email",
|
|
12181
|
+
"password"
|
|
12182
|
+
],
|
|
12183
|
+
"returns": "void"
|
|
12184
|
+
},
|
|
12185
|
+
"signOut": {
|
|
12186
|
+
"description": "Sign the current user out.",
|
|
12187
|
+
"parameters": {},
|
|
12188
|
+
"required": [],
|
|
12189
|
+
"returns": "void"
|
|
12190
|
+
},
|
|
12191
|
+
"getSession": {
|
|
12192
|
+
"description": "Get the current session, if any.",
|
|
12193
|
+
"parameters": {},
|
|
12194
|
+
"required": [],
|
|
12195
|
+
"returns": "void"
|
|
12196
|
+
},
|
|
12197
|
+
"getUser": {
|
|
12198
|
+
"description": "Get the current user, if any.",
|
|
12199
|
+
"parameters": {},
|
|
12200
|
+
"required": [],
|
|
12201
|
+
"returns": "void"
|
|
12202
|
+
},
|
|
12203
|
+
"invoke": {
|
|
12204
|
+
"description": "Invoke a Supabase Edge Function by name.",
|
|
12205
|
+
"parameters": {
|
|
12206
|
+
"name": {
|
|
12207
|
+
"type": "string",
|
|
12208
|
+
"description": "Parameter name"
|
|
12209
|
+
},
|
|
12210
|
+
"body": {
|
|
12211
|
+
"type": "any",
|
|
12212
|
+
"description": "Parameter body"
|
|
12213
|
+
}
|
|
12214
|
+
},
|
|
12215
|
+
"required": [
|
|
12216
|
+
"name"
|
|
12217
|
+
],
|
|
12218
|
+
"returns": "void"
|
|
12219
|
+
},
|
|
12220
|
+
"subscribe": {
|
|
12221
|
+
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
12222
|
+
"parameters": {
|
|
12223
|
+
"channelName": {
|
|
12224
|
+
"type": "string",
|
|
12225
|
+
"description": "A name for this subscription channel"
|
|
12226
|
+
},
|
|
12227
|
+
"table": {
|
|
12228
|
+
"type": "string",
|
|
12229
|
+
"description": "The table to listen to"
|
|
12230
|
+
},
|
|
12231
|
+
"callback": {
|
|
12232
|
+
"type": "(payload: any) => void",
|
|
12233
|
+
"description": "Called with the payload on each change"
|
|
12234
|
+
},
|
|
12235
|
+
"event": {
|
|
12236
|
+
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
12237
|
+
"description": "The event type to listen for (default: all changes)"
|
|
12238
|
+
}
|
|
12239
|
+
},
|
|
12240
|
+
"required": [
|
|
12241
|
+
"channelName",
|
|
12242
|
+
"table",
|
|
12243
|
+
"callback"
|
|
12244
|
+
],
|
|
12245
|
+
"returns": "RealtimeChannel"
|
|
12246
|
+
},
|
|
12247
|
+
"unsubscribe": {
|
|
12248
|
+
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
12249
|
+
"parameters": {
|
|
12250
|
+
"channelName": {
|
|
12251
|
+
"type": "string",
|
|
12252
|
+
"description": "The channel name to remove"
|
|
12253
|
+
}
|
|
12254
|
+
},
|
|
12255
|
+
"required": [
|
|
12256
|
+
"channelName"
|
|
12257
|
+
],
|
|
12258
|
+
"returns": "void"
|
|
12259
|
+
},
|
|
12260
|
+
"unsubscribeAll": {
|
|
12261
|
+
"description": "Unsubscribe and remove all realtime channels.",
|
|
12262
|
+
"parameters": {},
|
|
12263
|
+
"required": [],
|
|
12264
|
+
"returns": "void"
|
|
12265
|
+
},
|
|
12266
|
+
"connect": {
|
|
12267
|
+
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
12268
|
+
"parameters": {},
|
|
12269
|
+
"required": [],
|
|
12270
|
+
"returns": "void"
|
|
12271
|
+
},
|
|
12272
|
+
"disconnect": {
|
|
12273
|
+
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
12274
|
+
"parameters": {},
|
|
12275
|
+
"required": [],
|
|
12276
|
+
"returns": "void"
|
|
12277
|
+
}
|
|
12278
|
+
},
|
|
12279
|
+
"getters": {
|
|
12280
|
+
"sdk": {
|
|
12281
|
+
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
12282
|
+
"returns": "SupabaseSDKClient<any, any>"
|
|
12283
|
+
},
|
|
12284
|
+
"storage": {
|
|
12285
|
+
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
12286
|
+
"returns": "any"
|
|
12287
|
+
},
|
|
12288
|
+
"functions": {
|
|
12289
|
+
"description": "Returns the Supabase Functions client.",
|
|
12290
|
+
"returns": "any"
|
|
12291
|
+
}
|
|
12292
|
+
},
|
|
12293
|
+
"events": {},
|
|
12294
|
+
"state": {},
|
|
12295
|
+
"options": {},
|
|
12296
|
+
"envVars": [],
|
|
12297
|
+
"examples": [
|
|
12298
|
+
{
|
|
12299
|
+
"language": "ts",
|
|
12300
|
+
"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})"
|
|
12301
|
+
}
|
|
12302
|
+
]
|
|
12303
|
+
});
|
|
12304
|
+
|
|
12109
12305
|
setBuildTimeData('clients.elevenlabs', {
|
|
12110
12306
|
"id": "clients.elevenlabs",
|
|
12111
12307
|
"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.",
|
|
@@ -12370,202 +12566,6 @@ setBuildTimeData('clients.elevenlabs', {
|
|
|
12370
12566
|
}
|
|
12371
12567
|
});
|
|
12372
12568
|
|
|
12373
|
-
setBuildTimeData('clients.supabase', {
|
|
12374
|
-
"id": "clients.supabase",
|
|
12375
|
-
"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).",
|
|
12376
|
-
"shortcut": "clients.supabase",
|
|
12377
|
-
"className": "SupabaseClient",
|
|
12378
|
-
"methods": {
|
|
12379
|
-
"from": {
|
|
12380
|
-
"description": "Start a query on a Postgres table or view.",
|
|
12381
|
-
"parameters": {
|
|
12382
|
-
"table": {
|
|
12383
|
-
"type": "string",
|
|
12384
|
-
"description": "The table or view name to query"
|
|
12385
|
-
}
|
|
12386
|
-
},
|
|
12387
|
-
"required": [
|
|
12388
|
-
"table"
|
|
12389
|
-
],
|
|
12390
|
-
"returns": "void"
|
|
12391
|
-
},
|
|
12392
|
-
"rpc": {
|
|
12393
|
-
"description": "Call a Postgres function (RPC).",
|
|
12394
|
-
"parameters": {
|
|
12395
|
-
"fn": {
|
|
12396
|
-
"type": "string",
|
|
12397
|
-
"description": "The function name"
|
|
12398
|
-
},
|
|
12399
|
-
"params": {
|
|
12400
|
-
"type": "Record<string, unknown>",
|
|
12401
|
-
"description": "Arguments to pass to the function"
|
|
12402
|
-
},
|
|
12403
|
-
"options": {
|
|
12404
|
-
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
12405
|
-
"description": "Optional settings (head, get, count)"
|
|
12406
|
-
}
|
|
12407
|
-
},
|
|
12408
|
-
"required": [
|
|
12409
|
-
"fn"
|
|
12410
|
-
],
|
|
12411
|
-
"returns": "void"
|
|
12412
|
-
},
|
|
12413
|
-
"signInWithPassword": {
|
|
12414
|
-
"description": "Sign in with email and password.",
|
|
12415
|
-
"parameters": {
|
|
12416
|
-
"email": {
|
|
12417
|
-
"type": "string",
|
|
12418
|
-
"description": "Parameter email"
|
|
12419
|
-
},
|
|
12420
|
-
"password": {
|
|
12421
|
-
"type": "string",
|
|
12422
|
-
"description": "Parameter password"
|
|
12423
|
-
}
|
|
12424
|
-
},
|
|
12425
|
-
"required": [
|
|
12426
|
-
"email",
|
|
12427
|
-
"password"
|
|
12428
|
-
],
|
|
12429
|
-
"returns": "void"
|
|
12430
|
-
},
|
|
12431
|
-
"signUp": {
|
|
12432
|
-
"description": "Create a new user account with email and password.",
|
|
12433
|
-
"parameters": {
|
|
12434
|
-
"email": {
|
|
12435
|
-
"type": "string",
|
|
12436
|
-
"description": "Parameter email"
|
|
12437
|
-
},
|
|
12438
|
-
"password": {
|
|
12439
|
-
"type": "string",
|
|
12440
|
-
"description": "Parameter password"
|
|
12441
|
-
}
|
|
12442
|
-
},
|
|
12443
|
-
"required": [
|
|
12444
|
-
"email",
|
|
12445
|
-
"password"
|
|
12446
|
-
],
|
|
12447
|
-
"returns": "void"
|
|
12448
|
-
},
|
|
12449
|
-
"signOut": {
|
|
12450
|
-
"description": "Sign the current user out.",
|
|
12451
|
-
"parameters": {},
|
|
12452
|
-
"required": [],
|
|
12453
|
-
"returns": "void"
|
|
12454
|
-
},
|
|
12455
|
-
"getSession": {
|
|
12456
|
-
"description": "Get the current session, if any.",
|
|
12457
|
-
"parameters": {},
|
|
12458
|
-
"required": [],
|
|
12459
|
-
"returns": "void"
|
|
12460
|
-
},
|
|
12461
|
-
"getUser": {
|
|
12462
|
-
"description": "Get the current user, if any.",
|
|
12463
|
-
"parameters": {},
|
|
12464
|
-
"required": [],
|
|
12465
|
-
"returns": "void"
|
|
12466
|
-
},
|
|
12467
|
-
"invoke": {
|
|
12468
|
-
"description": "Invoke a Supabase Edge Function by name.",
|
|
12469
|
-
"parameters": {
|
|
12470
|
-
"name": {
|
|
12471
|
-
"type": "string",
|
|
12472
|
-
"description": "Parameter name"
|
|
12473
|
-
},
|
|
12474
|
-
"body": {
|
|
12475
|
-
"type": "any",
|
|
12476
|
-
"description": "Parameter body"
|
|
12477
|
-
}
|
|
12478
|
-
},
|
|
12479
|
-
"required": [
|
|
12480
|
-
"name"
|
|
12481
|
-
],
|
|
12482
|
-
"returns": "void"
|
|
12483
|
-
},
|
|
12484
|
-
"subscribe": {
|
|
12485
|
-
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
12486
|
-
"parameters": {
|
|
12487
|
-
"channelName": {
|
|
12488
|
-
"type": "string",
|
|
12489
|
-
"description": "A name for this subscription channel"
|
|
12490
|
-
},
|
|
12491
|
-
"table": {
|
|
12492
|
-
"type": "string",
|
|
12493
|
-
"description": "The table to listen to"
|
|
12494
|
-
},
|
|
12495
|
-
"callback": {
|
|
12496
|
-
"type": "(payload: any) => void",
|
|
12497
|
-
"description": "Called with the payload on each change"
|
|
12498
|
-
},
|
|
12499
|
-
"event": {
|
|
12500
|
-
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
12501
|
-
"description": "The event type to listen for (default: all changes)"
|
|
12502
|
-
}
|
|
12503
|
-
},
|
|
12504
|
-
"required": [
|
|
12505
|
-
"channelName",
|
|
12506
|
-
"table",
|
|
12507
|
-
"callback"
|
|
12508
|
-
],
|
|
12509
|
-
"returns": "RealtimeChannel"
|
|
12510
|
-
},
|
|
12511
|
-
"unsubscribe": {
|
|
12512
|
-
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
12513
|
-
"parameters": {
|
|
12514
|
-
"channelName": {
|
|
12515
|
-
"type": "string",
|
|
12516
|
-
"description": "The channel name to remove"
|
|
12517
|
-
}
|
|
12518
|
-
},
|
|
12519
|
-
"required": [
|
|
12520
|
-
"channelName"
|
|
12521
|
-
],
|
|
12522
|
-
"returns": "void"
|
|
12523
|
-
},
|
|
12524
|
-
"unsubscribeAll": {
|
|
12525
|
-
"description": "Unsubscribe and remove all realtime channels.",
|
|
12526
|
-
"parameters": {},
|
|
12527
|
-
"required": [],
|
|
12528
|
-
"returns": "void"
|
|
12529
|
-
},
|
|
12530
|
-
"connect": {
|
|
12531
|
-
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
12532
|
-
"parameters": {},
|
|
12533
|
-
"required": [],
|
|
12534
|
-
"returns": "void"
|
|
12535
|
-
},
|
|
12536
|
-
"disconnect": {
|
|
12537
|
-
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
12538
|
-
"parameters": {},
|
|
12539
|
-
"required": [],
|
|
12540
|
-
"returns": "void"
|
|
12541
|
-
}
|
|
12542
|
-
},
|
|
12543
|
-
"getters": {
|
|
12544
|
-
"sdk": {
|
|
12545
|
-
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
12546
|
-
"returns": "SupabaseSDKClient<any, any>"
|
|
12547
|
-
},
|
|
12548
|
-
"storage": {
|
|
12549
|
-
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
12550
|
-
"returns": "any"
|
|
12551
|
-
},
|
|
12552
|
-
"functions": {
|
|
12553
|
-
"description": "Returns the Supabase Functions client.",
|
|
12554
|
-
"returns": "any"
|
|
12555
|
-
}
|
|
12556
|
-
},
|
|
12557
|
-
"events": {},
|
|
12558
|
-
"state": {},
|
|
12559
|
-
"options": {},
|
|
12560
|
-
"envVars": [],
|
|
12561
|
-
"examples": [
|
|
12562
|
-
{
|
|
12563
|
-
"language": "ts",
|
|
12564
|
-
"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})"
|
|
12565
|
-
}
|
|
12566
|
-
]
|
|
12567
|
-
});
|
|
12568
|
-
|
|
12569
12569
|
setBuildTimeData('clients.comfyui', {
|
|
12570
12570
|
"id": "clients.comfyui",
|
|
12571
12571
|
"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.",
|
|
@@ -14955,6 +14955,19 @@ setBuildTimeData('features.skillsLibrary', {
|
|
|
14955
14955
|
"shortcut": "features.skillsLibrary",
|
|
14956
14956
|
"className": "SkillsLibrary",
|
|
14957
14957
|
"methods": {
|
|
14958
|
+
"setupToolsConsumer": {
|
|
14959
|
+
"description": "",
|
|
14960
|
+
"parameters": {
|
|
14961
|
+
"assistant": {
|
|
14962
|
+
"type": "Assistant",
|
|
14963
|
+
"description": "Parameter assistant"
|
|
14964
|
+
}
|
|
14965
|
+
},
|
|
14966
|
+
"required": [
|
|
14967
|
+
"assistant"
|
|
14968
|
+
],
|
|
14969
|
+
"returns": "void"
|
|
14970
|
+
},
|
|
14958
14971
|
"start": {
|
|
14959
14972
|
"description": "Start the skills library: read config, scan all locations.",
|
|
14960
14973
|
"parameters": {},
|
|
@@ -30727,269 +30740,6 @@ export const introspectionData = [
|
|
|
30727
30740
|
}
|
|
30728
30741
|
]
|
|
30729
30742
|
},
|
|
30730
|
-
{
|
|
30731
|
-
"id": "clients.elevenlabs",
|
|
30732
|
-
"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.",
|
|
30733
|
-
"shortcut": "clients.elevenlabs",
|
|
30734
|
-
"className": "ElevenLabsClient",
|
|
30735
|
-
"methods": {
|
|
30736
|
-
"beforeRequest": {
|
|
30737
|
-
"description": "Inject the xi-api-key header before each request.",
|
|
30738
|
-
"parameters": {},
|
|
30739
|
-
"required": [],
|
|
30740
|
-
"returns": "void"
|
|
30741
|
-
},
|
|
30742
|
-
"connect": {
|
|
30743
|
-
"description": "Validate the API key by listing available models.",
|
|
30744
|
-
"parameters": {},
|
|
30745
|
-
"required": [],
|
|
30746
|
-
"returns": "Promise<this>",
|
|
30747
|
-
"examples": [
|
|
30748
|
-
{
|
|
30749
|
-
"language": "ts",
|
|
30750
|
-
"code": "await el.connect()"
|
|
30751
|
-
}
|
|
30752
|
-
]
|
|
30753
|
-
},
|
|
30754
|
-
"listVoices": {
|
|
30755
|
-
"description": "List available voices with optional search and filtering.",
|
|
30756
|
-
"parameters": {
|
|
30757
|
-
"options": {
|
|
30758
|
-
"type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
|
|
30759
|
-
"description": "Query parameters for filtering voices"
|
|
30760
|
-
}
|
|
30761
|
-
},
|
|
30762
|
-
"required": [],
|
|
30763
|
-
"returns": "Promise<any>",
|
|
30764
|
-
"examples": [
|
|
30765
|
-
{
|
|
30766
|
-
"language": "ts",
|
|
30767
|
-
"code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
|
|
30768
|
-
}
|
|
30769
|
-
]
|
|
30770
|
-
},
|
|
30771
|
-
"getVoice": {
|
|
30772
|
-
"description": "Get details for a single voice.",
|
|
30773
|
-
"parameters": {
|
|
30774
|
-
"voiceId": {
|
|
30775
|
-
"type": "string",
|
|
30776
|
-
"description": "The voice ID to look up"
|
|
30777
|
-
}
|
|
30778
|
-
},
|
|
30779
|
-
"required": [
|
|
30780
|
-
"voiceId"
|
|
30781
|
-
],
|
|
30782
|
-
"returns": "Promise<any>",
|
|
30783
|
-
"examples": [
|
|
30784
|
-
{
|
|
30785
|
-
"language": "ts",
|
|
30786
|
-
"code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
|
|
30787
|
-
}
|
|
30788
|
-
]
|
|
30789
|
-
},
|
|
30790
|
-
"listModels": {
|
|
30791
|
-
"description": "List available TTS models.",
|
|
30792
|
-
"parameters": {},
|
|
30793
|
-
"required": [],
|
|
30794
|
-
"returns": "Promise<any[]>",
|
|
30795
|
-
"examples": [
|
|
30796
|
-
{
|
|
30797
|
-
"language": "ts",
|
|
30798
|
-
"code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
|
|
30799
|
-
}
|
|
30800
|
-
]
|
|
30801
|
-
},
|
|
30802
|
-
"synthesize": {
|
|
30803
|
-
"description": "Synthesize speech from text, returning audio as a Buffer.",
|
|
30804
|
-
"parameters": {
|
|
30805
|
-
"text": {
|
|
30806
|
-
"type": "string",
|
|
30807
|
-
"description": "The text to convert to speech"
|
|
30808
|
-
},
|
|
30809
|
-
"options": {
|
|
30810
|
-
"type": "SynthesizeOptions",
|
|
30811
|
-
"description": "Voice, model, format, and voice settings overrides",
|
|
30812
|
-
"properties": {
|
|
30813
|
-
"voiceId": {
|
|
30814
|
-
"type": "string",
|
|
30815
|
-
"description": ""
|
|
30816
|
-
},
|
|
30817
|
-
"modelId": {
|
|
30818
|
-
"type": "string",
|
|
30819
|
-
"description": ""
|
|
30820
|
-
},
|
|
30821
|
-
"outputFormat": {
|
|
30822
|
-
"type": "string",
|
|
30823
|
-
"description": ""
|
|
30824
|
-
},
|
|
30825
|
-
"voiceSettings": {
|
|
30826
|
-
"type": "ElevenLabsVoiceSettings",
|
|
30827
|
-
"description": ""
|
|
30828
|
-
},
|
|
30829
|
-
"disableCache": {
|
|
30830
|
-
"type": "boolean",
|
|
30831
|
-
"description": ""
|
|
30832
|
-
}
|
|
30833
|
-
}
|
|
30834
|
-
}
|
|
30835
|
-
},
|
|
30836
|
-
"required": [
|
|
30837
|
-
"text"
|
|
30838
|
-
],
|
|
30839
|
-
"returns": "Promise<Buffer>",
|
|
30840
|
-
"examples": [
|
|
30841
|
-
{
|
|
30842
|
-
"language": "ts",
|
|
30843
|
-
"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})"
|
|
30844
|
-
}
|
|
30845
|
-
]
|
|
30846
|
-
},
|
|
30847
|
-
"say": {
|
|
30848
|
-
"description": "Synthesize speech and write the audio to a file.",
|
|
30849
|
-
"parameters": {
|
|
30850
|
-
"text": {
|
|
30851
|
-
"type": "string",
|
|
30852
|
-
"description": "The text to convert to speech"
|
|
30853
|
-
},
|
|
30854
|
-
"outputPath": {
|
|
30855
|
-
"type": "string",
|
|
30856
|
-
"description": "File path to write the audio to"
|
|
30857
|
-
},
|
|
30858
|
-
"options": {
|
|
30859
|
-
"type": "SynthesizeOptions",
|
|
30860
|
-
"description": "Voice, model, format, and voice settings overrides",
|
|
30861
|
-
"properties": {
|
|
30862
|
-
"voiceId": {
|
|
30863
|
-
"type": "string",
|
|
30864
|
-
"description": ""
|
|
30865
|
-
},
|
|
30866
|
-
"modelId": {
|
|
30867
|
-
"type": "string",
|
|
30868
|
-
"description": ""
|
|
30869
|
-
},
|
|
30870
|
-
"outputFormat": {
|
|
30871
|
-
"type": "string",
|
|
30872
|
-
"description": ""
|
|
30873
|
-
},
|
|
30874
|
-
"voiceSettings": {
|
|
30875
|
-
"type": "ElevenLabsVoiceSettings",
|
|
30876
|
-
"description": ""
|
|
30877
|
-
},
|
|
30878
|
-
"disableCache": {
|
|
30879
|
-
"type": "boolean",
|
|
30880
|
-
"description": ""
|
|
30881
|
-
}
|
|
30882
|
-
}
|
|
30883
|
-
}
|
|
30884
|
-
},
|
|
30885
|
-
"required": [
|
|
30886
|
-
"text",
|
|
30887
|
-
"outputPath"
|
|
30888
|
-
],
|
|
30889
|
-
"returns": "Promise<string>",
|
|
30890
|
-
"examples": [
|
|
30891
|
-
{
|
|
30892
|
-
"language": "ts",
|
|
30893
|
-
"code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
|
|
30894
|
-
}
|
|
30895
|
-
]
|
|
30896
|
-
}
|
|
30897
|
-
},
|
|
30898
|
-
"getters": {
|
|
30899
|
-
"apiKey": {
|
|
30900
|
-
"description": "The resolved API key from options or environment.",
|
|
30901
|
-
"returns": "string"
|
|
30902
|
-
}
|
|
30903
|
-
},
|
|
30904
|
-
"events": {
|
|
30905
|
-
"failure": {
|
|
30906
|
-
"name": "failure",
|
|
30907
|
-
"description": "Event emitted by ElevenLabsClient",
|
|
30908
|
-
"arguments": {}
|
|
30909
|
-
},
|
|
30910
|
-
"voices": {
|
|
30911
|
-
"name": "voices",
|
|
30912
|
-
"description": "Event emitted by ElevenLabsClient",
|
|
30913
|
-
"arguments": {}
|
|
30914
|
-
},
|
|
30915
|
-
"speech": {
|
|
30916
|
-
"name": "speech",
|
|
30917
|
-
"description": "Event emitted by ElevenLabsClient",
|
|
30918
|
-
"arguments": {}
|
|
30919
|
-
}
|
|
30920
|
-
},
|
|
30921
|
-
"state": {},
|
|
30922
|
-
"options": {},
|
|
30923
|
-
"envVars": [],
|
|
30924
|
-
"examples": [
|
|
30925
|
-
{
|
|
30926
|
-
"language": "ts",
|
|
30927
|
-
"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"
|
|
30928
|
-
}
|
|
30929
|
-
],
|
|
30930
|
-
"types": {
|
|
30931
|
-
"SynthesizeOptions": {
|
|
30932
|
-
"description": "",
|
|
30933
|
-
"properties": {
|
|
30934
|
-
"voiceId": {
|
|
30935
|
-
"type": "string",
|
|
30936
|
-
"description": "",
|
|
30937
|
-
"optional": true
|
|
30938
|
-
},
|
|
30939
|
-
"modelId": {
|
|
30940
|
-
"type": "string",
|
|
30941
|
-
"description": "",
|
|
30942
|
-
"optional": true
|
|
30943
|
-
},
|
|
30944
|
-
"outputFormat": {
|
|
30945
|
-
"type": "string",
|
|
30946
|
-
"description": "",
|
|
30947
|
-
"optional": true
|
|
30948
|
-
},
|
|
30949
|
-
"voiceSettings": {
|
|
30950
|
-
"type": "ElevenLabsVoiceSettings",
|
|
30951
|
-
"description": "",
|
|
30952
|
-
"optional": true
|
|
30953
|
-
},
|
|
30954
|
-
"disableCache": {
|
|
30955
|
-
"type": "boolean",
|
|
30956
|
-
"description": "",
|
|
30957
|
-
"optional": true
|
|
30958
|
-
}
|
|
30959
|
-
}
|
|
30960
|
-
},
|
|
30961
|
-
"ElevenLabsVoiceSettings": {
|
|
30962
|
-
"description": "",
|
|
30963
|
-
"properties": {
|
|
30964
|
-
"stability": {
|
|
30965
|
-
"type": "number",
|
|
30966
|
-
"description": "",
|
|
30967
|
-
"optional": true
|
|
30968
|
-
},
|
|
30969
|
-
"similarityBoost": {
|
|
30970
|
-
"type": "number",
|
|
30971
|
-
"description": "",
|
|
30972
|
-
"optional": true
|
|
30973
|
-
},
|
|
30974
|
-
"style": {
|
|
30975
|
-
"type": "number",
|
|
30976
|
-
"description": "",
|
|
30977
|
-
"optional": true
|
|
30978
|
-
},
|
|
30979
|
-
"speed": {
|
|
30980
|
-
"type": "number",
|
|
30981
|
-
"description": "",
|
|
30982
|
-
"optional": true
|
|
30983
|
-
},
|
|
30984
|
-
"useSpeakerBoost": {
|
|
30985
|
-
"type": "boolean",
|
|
30986
|
-
"description": "",
|
|
30987
|
-
"optional": true
|
|
30988
|
-
}
|
|
30989
|
-
}
|
|
30990
|
-
}
|
|
30991
|
-
}
|
|
30992
|
-
},
|
|
30993
30743
|
{
|
|
30994
30744
|
"id": "clients.supabase",
|
|
30995
30745
|
"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).",
|
|
@@ -31185,6 +30935,269 @@ export const introspectionData = [
|
|
|
31185
30935
|
}
|
|
31186
30936
|
]
|
|
31187
30937
|
},
|
|
30938
|
+
{
|
|
30939
|
+
"id": "clients.elevenlabs",
|
|
30940
|
+
"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.",
|
|
30941
|
+
"shortcut": "clients.elevenlabs",
|
|
30942
|
+
"className": "ElevenLabsClient",
|
|
30943
|
+
"methods": {
|
|
30944
|
+
"beforeRequest": {
|
|
30945
|
+
"description": "Inject the xi-api-key header before each request.",
|
|
30946
|
+
"parameters": {},
|
|
30947
|
+
"required": [],
|
|
30948
|
+
"returns": "void"
|
|
30949
|
+
},
|
|
30950
|
+
"connect": {
|
|
30951
|
+
"description": "Validate the API key by listing available models.",
|
|
30952
|
+
"parameters": {},
|
|
30953
|
+
"required": [],
|
|
30954
|
+
"returns": "Promise<this>",
|
|
30955
|
+
"examples": [
|
|
30956
|
+
{
|
|
30957
|
+
"language": "ts",
|
|
30958
|
+
"code": "await el.connect()"
|
|
30959
|
+
}
|
|
30960
|
+
]
|
|
30961
|
+
},
|
|
30962
|
+
"listVoices": {
|
|
30963
|
+
"description": "List available voices with optional search and filtering.",
|
|
30964
|
+
"parameters": {
|
|
30965
|
+
"options": {
|
|
30966
|
+
"type": "{\n search?: string\n category?: string\n voice_type?: string\n page_size?: number\n next_page_token?: string\n }",
|
|
30967
|
+
"description": "Query parameters for filtering voices"
|
|
30968
|
+
}
|
|
30969
|
+
},
|
|
30970
|
+
"required": [],
|
|
30971
|
+
"returns": "Promise<any>",
|
|
30972
|
+
"examples": [
|
|
30973
|
+
{
|
|
30974
|
+
"language": "ts",
|
|
30975
|
+
"code": "const voices = await el.listVoices()\nconst premade = await el.listVoices({ category: 'premade' })"
|
|
30976
|
+
}
|
|
30977
|
+
]
|
|
30978
|
+
},
|
|
30979
|
+
"getVoice": {
|
|
30980
|
+
"description": "Get details for a single voice.",
|
|
30981
|
+
"parameters": {
|
|
30982
|
+
"voiceId": {
|
|
30983
|
+
"type": "string",
|
|
30984
|
+
"description": "The voice ID to look up"
|
|
30985
|
+
}
|
|
30986
|
+
},
|
|
30987
|
+
"required": [
|
|
30988
|
+
"voiceId"
|
|
30989
|
+
],
|
|
30990
|
+
"returns": "Promise<any>",
|
|
30991
|
+
"examples": [
|
|
30992
|
+
{
|
|
30993
|
+
"language": "ts",
|
|
30994
|
+
"code": "const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')\nconsole.log(voice.name, voice.settings)"
|
|
30995
|
+
}
|
|
30996
|
+
]
|
|
30997
|
+
},
|
|
30998
|
+
"listModels": {
|
|
30999
|
+
"description": "List available TTS models.",
|
|
31000
|
+
"parameters": {},
|
|
31001
|
+
"required": [],
|
|
31002
|
+
"returns": "Promise<any[]>",
|
|
31003
|
+
"examples": [
|
|
31004
|
+
{
|
|
31005
|
+
"language": "ts",
|
|
31006
|
+
"code": "const models = await el.listModels()\nconsole.log(models.map(m => m.model_id))"
|
|
31007
|
+
}
|
|
31008
|
+
]
|
|
31009
|
+
},
|
|
31010
|
+
"synthesize": {
|
|
31011
|
+
"description": "Synthesize speech from text, returning audio as a Buffer.",
|
|
31012
|
+
"parameters": {
|
|
31013
|
+
"text": {
|
|
31014
|
+
"type": "string",
|
|
31015
|
+
"description": "The text to convert to speech"
|
|
31016
|
+
},
|
|
31017
|
+
"options": {
|
|
31018
|
+
"type": "SynthesizeOptions",
|
|
31019
|
+
"description": "Voice, model, format, and voice settings overrides",
|
|
31020
|
+
"properties": {
|
|
31021
|
+
"voiceId": {
|
|
31022
|
+
"type": "string",
|
|
31023
|
+
"description": ""
|
|
31024
|
+
},
|
|
31025
|
+
"modelId": {
|
|
31026
|
+
"type": "string",
|
|
31027
|
+
"description": ""
|
|
31028
|
+
},
|
|
31029
|
+
"outputFormat": {
|
|
31030
|
+
"type": "string",
|
|
31031
|
+
"description": ""
|
|
31032
|
+
},
|
|
31033
|
+
"voiceSettings": {
|
|
31034
|
+
"type": "ElevenLabsVoiceSettings",
|
|
31035
|
+
"description": ""
|
|
31036
|
+
},
|
|
31037
|
+
"disableCache": {
|
|
31038
|
+
"type": "boolean",
|
|
31039
|
+
"description": ""
|
|
31040
|
+
}
|
|
31041
|
+
}
|
|
31042
|
+
}
|
|
31043
|
+
},
|
|
31044
|
+
"required": [
|
|
31045
|
+
"text"
|
|
31046
|
+
],
|
|
31047
|
+
"returns": "Promise<Buffer>",
|
|
31048
|
+
"examples": [
|
|
31049
|
+
{
|
|
31050
|
+
"language": "ts",
|
|
31051
|
+
"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})"
|
|
31052
|
+
}
|
|
31053
|
+
]
|
|
31054
|
+
},
|
|
31055
|
+
"say": {
|
|
31056
|
+
"description": "Synthesize speech and write the audio to a file.",
|
|
31057
|
+
"parameters": {
|
|
31058
|
+
"text": {
|
|
31059
|
+
"type": "string",
|
|
31060
|
+
"description": "The text to convert to speech"
|
|
31061
|
+
},
|
|
31062
|
+
"outputPath": {
|
|
31063
|
+
"type": "string",
|
|
31064
|
+
"description": "File path to write the audio to"
|
|
31065
|
+
},
|
|
31066
|
+
"options": {
|
|
31067
|
+
"type": "SynthesizeOptions",
|
|
31068
|
+
"description": "Voice, model, format, and voice settings overrides",
|
|
31069
|
+
"properties": {
|
|
31070
|
+
"voiceId": {
|
|
31071
|
+
"type": "string",
|
|
31072
|
+
"description": ""
|
|
31073
|
+
},
|
|
31074
|
+
"modelId": {
|
|
31075
|
+
"type": "string",
|
|
31076
|
+
"description": ""
|
|
31077
|
+
},
|
|
31078
|
+
"outputFormat": {
|
|
31079
|
+
"type": "string",
|
|
31080
|
+
"description": ""
|
|
31081
|
+
},
|
|
31082
|
+
"voiceSettings": {
|
|
31083
|
+
"type": "ElevenLabsVoiceSettings",
|
|
31084
|
+
"description": ""
|
|
31085
|
+
},
|
|
31086
|
+
"disableCache": {
|
|
31087
|
+
"type": "boolean",
|
|
31088
|
+
"description": ""
|
|
31089
|
+
}
|
|
31090
|
+
}
|
|
31091
|
+
}
|
|
31092
|
+
},
|
|
31093
|
+
"required": [
|
|
31094
|
+
"text",
|
|
31095
|
+
"outputPath"
|
|
31096
|
+
],
|
|
31097
|
+
"returns": "Promise<string>",
|
|
31098
|
+
"examples": [
|
|
31099
|
+
{
|
|
31100
|
+
"language": "ts",
|
|
31101
|
+
"code": "const path = await el.say('Hello world', './hello.mp3')\nconsole.log(`Audio saved to ${path}`)"
|
|
31102
|
+
}
|
|
31103
|
+
]
|
|
31104
|
+
}
|
|
31105
|
+
},
|
|
31106
|
+
"getters": {
|
|
31107
|
+
"apiKey": {
|
|
31108
|
+
"description": "The resolved API key from options or environment.",
|
|
31109
|
+
"returns": "string"
|
|
31110
|
+
}
|
|
31111
|
+
},
|
|
31112
|
+
"events": {
|
|
31113
|
+
"failure": {
|
|
31114
|
+
"name": "failure",
|
|
31115
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
31116
|
+
"arguments": {}
|
|
31117
|
+
},
|
|
31118
|
+
"voices": {
|
|
31119
|
+
"name": "voices",
|
|
31120
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
31121
|
+
"arguments": {}
|
|
31122
|
+
},
|
|
31123
|
+
"speech": {
|
|
31124
|
+
"name": "speech",
|
|
31125
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
31126
|
+
"arguments": {}
|
|
31127
|
+
}
|
|
31128
|
+
},
|
|
31129
|
+
"state": {},
|
|
31130
|
+
"options": {},
|
|
31131
|
+
"envVars": [],
|
|
31132
|
+
"examples": [
|
|
31133
|
+
{
|
|
31134
|
+
"language": "ts",
|
|
31135
|
+
"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"
|
|
31136
|
+
}
|
|
31137
|
+
],
|
|
31138
|
+
"types": {
|
|
31139
|
+
"SynthesizeOptions": {
|
|
31140
|
+
"description": "",
|
|
31141
|
+
"properties": {
|
|
31142
|
+
"voiceId": {
|
|
31143
|
+
"type": "string",
|
|
31144
|
+
"description": "",
|
|
31145
|
+
"optional": true
|
|
31146
|
+
},
|
|
31147
|
+
"modelId": {
|
|
31148
|
+
"type": "string",
|
|
31149
|
+
"description": "",
|
|
31150
|
+
"optional": true
|
|
31151
|
+
},
|
|
31152
|
+
"outputFormat": {
|
|
31153
|
+
"type": "string",
|
|
31154
|
+
"description": "",
|
|
31155
|
+
"optional": true
|
|
31156
|
+
},
|
|
31157
|
+
"voiceSettings": {
|
|
31158
|
+
"type": "ElevenLabsVoiceSettings",
|
|
31159
|
+
"description": "",
|
|
31160
|
+
"optional": true
|
|
31161
|
+
},
|
|
31162
|
+
"disableCache": {
|
|
31163
|
+
"type": "boolean",
|
|
31164
|
+
"description": "",
|
|
31165
|
+
"optional": true
|
|
31166
|
+
}
|
|
31167
|
+
}
|
|
31168
|
+
},
|
|
31169
|
+
"ElevenLabsVoiceSettings": {
|
|
31170
|
+
"description": "",
|
|
31171
|
+
"properties": {
|
|
31172
|
+
"stability": {
|
|
31173
|
+
"type": "number",
|
|
31174
|
+
"description": "",
|
|
31175
|
+
"optional": true
|
|
31176
|
+
},
|
|
31177
|
+
"similarityBoost": {
|
|
31178
|
+
"type": "number",
|
|
31179
|
+
"description": "",
|
|
31180
|
+
"optional": true
|
|
31181
|
+
},
|
|
31182
|
+
"style": {
|
|
31183
|
+
"type": "number",
|
|
31184
|
+
"description": "",
|
|
31185
|
+
"optional": true
|
|
31186
|
+
},
|
|
31187
|
+
"speed": {
|
|
31188
|
+
"type": "number",
|
|
31189
|
+
"description": "",
|
|
31190
|
+
"optional": true
|
|
31191
|
+
},
|
|
31192
|
+
"useSpeakerBoost": {
|
|
31193
|
+
"type": "boolean",
|
|
31194
|
+
"description": "",
|
|
31195
|
+
"optional": true
|
|
31196
|
+
}
|
|
31197
|
+
}
|
|
31198
|
+
}
|
|
31199
|
+
}
|
|
31200
|
+
},
|
|
31188
31201
|
{
|
|
31189
31202
|
"id": "clients.comfyui",
|
|
31190
31203
|
"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.",
|
|
@@ -33565,6 +33578,19 @@ export const introspectionData = [
|
|
|
33565
33578
|
"shortcut": "features.skillsLibrary",
|
|
33566
33579
|
"className": "SkillsLibrary",
|
|
33567
33580
|
"methods": {
|
|
33581
|
+
"setupToolsConsumer": {
|
|
33582
|
+
"description": "",
|
|
33583
|
+
"parameters": {
|
|
33584
|
+
"assistant": {
|
|
33585
|
+
"type": "Assistant",
|
|
33586
|
+
"description": "Parameter assistant"
|
|
33587
|
+
}
|
|
33588
|
+
},
|
|
33589
|
+
"required": [
|
|
33590
|
+
"assistant"
|
|
33591
|
+
],
|
|
33592
|
+
"returns": "void"
|
|
33593
|
+
},
|
|
33568
33594
|
"start": {
|
|
33569
33595
|
"description": "Start the skills library: read config, scan all locations.",
|
|
33570
33596
|
"parameters": {},
|