@soederpop/luca 0.0.14 → 0.0.16
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/architect/CORE.md +3 -0
- package/assistants/architect/hooks.ts +3 -0
- package/assistants/architect/tools.ts +10 -0
- package/package.json +1 -1
- package/src/agi/features/assistant.ts +5 -0
- package/src/agi/features/conversation.ts +67 -4
- package/src/bootstrap/generated.ts +1 -1
- package/src/commands/chat.ts +12 -0
- package/src/introspection/generated.agi.ts +472 -446
- package/src/introspection/generated.node.ts +469 -443
- package/src/introspection/generated.web.ts +1 -1
- package/src/scaffolds/generated.ts +1 -1
- package/src/servers/express.ts +23 -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-20T16:22:28.971Z
|
|
5
5
|
|
|
6
6
|
setBuildTimeData('features.googleDocs', {
|
|
7
7
|
"id": "features.googleDocs",
|
|
@@ -9787,202 +9787,6 @@ setBuildTimeData('clients.openai', {
|
|
|
9787
9787
|
]
|
|
9788
9788
|
});
|
|
9789
9789
|
|
|
9790
|
-
setBuildTimeData('clients.supabase', {
|
|
9791
|
-
"id": "clients.supabase",
|
|
9792
|
-
"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).",
|
|
9793
|
-
"shortcut": "clients.supabase",
|
|
9794
|
-
"className": "SupabaseClient",
|
|
9795
|
-
"methods": {
|
|
9796
|
-
"from": {
|
|
9797
|
-
"description": "Start a query on a Postgres table or view.",
|
|
9798
|
-
"parameters": {
|
|
9799
|
-
"table": {
|
|
9800
|
-
"type": "string",
|
|
9801
|
-
"description": "The table or view name to query"
|
|
9802
|
-
}
|
|
9803
|
-
},
|
|
9804
|
-
"required": [
|
|
9805
|
-
"table"
|
|
9806
|
-
],
|
|
9807
|
-
"returns": "void"
|
|
9808
|
-
},
|
|
9809
|
-
"rpc": {
|
|
9810
|
-
"description": "Call a Postgres function (RPC).",
|
|
9811
|
-
"parameters": {
|
|
9812
|
-
"fn": {
|
|
9813
|
-
"type": "string",
|
|
9814
|
-
"description": "The function name"
|
|
9815
|
-
},
|
|
9816
|
-
"params": {
|
|
9817
|
-
"type": "Record<string, unknown>",
|
|
9818
|
-
"description": "Arguments to pass to the function"
|
|
9819
|
-
},
|
|
9820
|
-
"options": {
|
|
9821
|
-
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
9822
|
-
"description": "Optional settings (head, get, count)"
|
|
9823
|
-
}
|
|
9824
|
-
},
|
|
9825
|
-
"required": [
|
|
9826
|
-
"fn"
|
|
9827
|
-
],
|
|
9828
|
-
"returns": "void"
|
|
9829
|
-
},
|
|
9830
|
-
"signInWithPassword": {
|
|
9831
|
-
"description": "Sign in with email and password.",
|
|
9832
|
-
"parameters": {
|
|
9833
|
-
"email": {
|
|
9834
|
-
"type": "string",
|
|
9835
|
-
"description": "Parameter email"
|
|
9836
|
-
},
|
|
9837
|
-
"password": {
|
|
9838
|
-
"type": "string",
|
|
9839
|
-
"description": "Parameter password"
|
|
9840
|
-
}
|
|
9841
|
-
},
|
|
9842
|
-
"required": [
|
|
9843
|
-
"email",
|
|
9844
|
-
"password"
|
|
9845
|
-
],
|
|
9846
|
-
"returns": "void"
|
|
9847
|
-
},
|
|
9848
|
-
"signUp": {
|
|
9849
|
-
"description": "Create a new user account with email and password.",
|
|
9850
|
-
"parameters": {
|
|
9851
|
-
"email": {
|
|
9852
|
-
"type": "string",
|
|
9853
|
-
"description": "Parameter email"
|
|
9854
|
-
},
|
|
9855
|
-
"password": {
|
|
9856
|
-
"type": "string",
|
|
9857
|
-
"description": "Parameter password"
|
|
9858
|
-
}
|
|
9859
|
-
},
|
|
9860
|
-
"required": [
|
|
9861
|
-
"email",
|
|
9862
|
-
"password"
|
|
9863
|
-
],
|
|
9864
|
-
"returns": "void"
|
|
9865
|
-
},
|
|
9866
|
-
"signOut": {
|
|
9867
|
-
"description": "Sign the current user out.",
|
|
9868
|
-
"parameters": {},
|
|
9869
|
-
"required": [],
|
|
9870
|
-
"returns": "void"
|
|
9871
|
-
},
|
|
9872
|
-
"getSession": {
|
|
9873
|
-
"description": "Get the current session, if any.",
|
|
9874
|
-
"parameters": {},
|
|
9875
|
-
"required": [],
|
|
9876
|
-
"returns": "void"
|
|
9877
|
-
},
|
|
9878
|
-
"getUser": {
|
|
9879
|
-
"description": "Get the current user, if any.",
|
|
9880
|
-
"parameters": {},
|
|
9881
|
-
"required": [],
|
|
9882
|
-
"returns": "void"
|
|
9883
|
-
},
|
|
9884
|
-
"invoke": {
|
|
9885
|
-
"description": "Invoke a Supabase Edge Function by name.",
|
|
9886
|
-
"parameters": {
|
|
9887
|
-
"name": {
|
|
9888
|
-
"type": "string",
|
|
9889
|
-
"description": "Parameter name"
|
|
9890
|
-
},
|
|
9891
|
-
"body": {
|
|
9892
|
-
"type": "any",
|
|
9893
|
-
"description": "Parameter body"
|
|
9894
|
-
}
|
|
9895
|
-
},
|
|
9896
|
-
"required": [
|
|
9897
|
-
"name"
|
|
9898
|
-
],
|
|
9899
|
-
"returns": "void"
|
|
9900
|
-
},
|
|
9901
|
-
"subscribe": {
|
|
9902
|
-
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
9903
|
-
"parameters": {
|
|
9904
|
-
"channelName": {
|
|
9905
|
-
"type": "string",
|
|
9906
|
-
"description": "A name for this subscription channel"
|
|
9907
|
-
},
|
|
9908
|
-
"table": {
|
|
9909
|
-
"type": "string",
|
|
9910
|
-
"description": "The table to listen to"
|
|
9911
|
-
},
|
|
9912
|
-
"callback": {
|
|
9913
|
-
"type": "(payload: any) => void",
|
|
9914
|
-
"description": "Called with the payload on each change"
|
|
9915
|
-
},
|
|
9916
|
-
"event": {
|
|
9917
|
-
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
9918
|
-
"description": "The event type to listen for (default: all changes)"
|
|
9919
|
-
}
|
|
9920
|
-
},
|
|
9921
|
-
"required": [
|
|
9922
|
-
"channelName",
|
|
9923
|
-
"table",
|
|
9924
|
-
"callback"
|
|
9925
|
-
],
|
|
9926
|
-
"returns": "RealtimeChannel"
|
|
9927
|
-
},
|
|
9928
|
-
"unsubscribe": {
|
|
9929
|
-
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
9930
|
-
"parameters": {
|
|
9931
|
-
"channelName": {
|
|
9932
|
-
"type": "string",
|
|
9933
|
-
"description": "The channel name to remove"
|
|
9934
|
-
}
|
|
9935
|
-
},
|
|
9936
|
-
"required": [
|
|
9937
|
-
"channelName"
|
|
9938
|
-
],
|
|
9939
|
-
"returns": "void"
|
|
9940
|
-
},
|
|
9941
|
-
"unsubscribeAll": {
|
|
9942
|
-
"description": "Unsubscribe and remove all realtime channels.",
|
|
9943
|
-
"parameters": {},
|
|
9944
|
-
"required": [],
|
|
9945
|
-
"returns": "void"
|
|
9946
|
-
},
|
|
9947
|
-
"connect": {
|
|
9948
|
-
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
9949
|
-
"parameters": {},
|
|
9950
|
-
"required": [],
|
|
9951
|
-
"returns": "void"
|
|
9952
|
-
},
|
|
9953
|
-
"disconnect": {
|
|
9954
|
-
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
9955
|
-
"parameters": {},
|
|
9956
|
-
"required": [],
|
|
9957
|
-
"returns": "void"
|
|
9958
|
-
}
|
|
9959
|
-
},
|
|
9960
|
-
"getters": {
|
|
9961
|
-
"sdk": {
|
|
9962
|
-
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
9963
|
-
"returns": "SupabaseSDKClient<any, any>"
|
|
9964
|
-
},
|
|
9965
|
-
"storage": {
|
|
9966
|
-
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
9967
|
-
"returns": "any"
|
|
9968
|
-
},
|
|
9969
|
-
"functions": {
|
|
9970
|
-
"description": "Returns the Supabase Functions client.",
|
|
9971
|
-
"returns": "any"
|
|
9972
|
-
}
|
|
9973
|
-
},
|
|
9974
|
-
"events": {},
|
|
9975
|
-
"state": {},
|
|
9976
|
-
"options": {},
|
|
9977
|
-
"envVars": [],
|
|
9978
|
-
"examples": [
|
|
9979
|
-
{
|
|
9980
|
-
"language": "ts",
|
|
9981
|
-
"code": "const supabase = container.client('supabase', {\n supabaseUrl: 'https://xyz.supabase.co',\n supabaseKey: 'your-anon-key',\n})\n\n// Query data\nconst { data } = await supabase.from('users').select('*')\n\n// Auth\nawait supabase.signInWithPassword('user@example.com', 'password')\n\n// Realtime\nsupabase.subscribe('changes', 'users', (payload) => {\n console.log('Change:', payload)\n})"
|
|
9982
|
-
}
|
|
9983
|
-
]
|
|
9984
|
-
});
|
|
9985
|
-
|
|
9986
9790
|
setBuildTimeData('clients.comfyui', {
|
|
9987
9791
|
"id": "clients.comfyui",
|
|
9988
9792
|
"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.",
|
|
@@ -10415,24 +10219,220 @@ setBuildTimeData('clients.elevenlabs', {
|
|
|
10415
10219
|
"description": "Event emitted by ElevenLabsClient",
|
|
10416
10220
|
"arguments": {}
|
|
10417
10221
|
},
|
|
10418
|
-
"voices": {
|
|
10419
|
-
"name": "voices",
|
|
10420
|
-
"description": "Event emitted by ElevenLabsClient",
|
|
10421
|
-
"arguments": {}
|
|
10222
|
+
"voices": {
|
|
10223
|
+
"name": "voices",
|
|
10224
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
10225
|
+
"arguments": {}
|
|
10226
|
+
},
|
|
10227
|
+
"speech": {
|
|
10228
|
+
"name": "speech",
|
|
10229
|
+
"description": "Event emitted by ElevenLabsClient",
|
|
10230
|
+
"arguments": {}
|
|
10231
|
+
}
|
|
10232
|
+
},
|
|
10233
|
+
"state": {},
|
|
10234
|
+
"options": {},
|
|
10235
|
+
"envVars": [],
|
|
10236
|
+
"examples": [
|
|
10237
|
+
{
|
|
10238
|
+
"language": "ts",
|
|
10239
|
+
"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"
|
|
10240
|
+
}
|
|
10241
|
+
]
|
|
10242
|
+
});
|
|
10243
|
+
|
|
10244
|
+
setBuildTimeData('clients.supabase', {
|
|
10245
|
+
"id": "clients.supabase",
|
|
10246
|
+
"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).",
|
|
10247
|
+
"shortcut": "clients.supabase",
|
|
10248
|
+
"className": "SupabaseClient",
|
|
10249
|
+
"methods": {
|
|
10250
|
+
"from": {
|
|
10251
|
+
"description": "Start a query on a Postgres table or view.",
|
|
10252
|
+
"parameters": {
|
|
10253
|
+
"table": {
|
|
10254
|
+
"type": "string",
|
|
10255
|
+
"description": "The table or view name to query"
|
|
10256
|
+
}
|
|
10257
|
+
},
|
|
10258
|
+
"required": [
|
|
10259
|
+
"table"
|
|
10260
|
+
],
|
|
10261
|
+
"returns": "void"
|
|
10262
|
+
},
|
|
10263
|
+
"rpc": {
|
|
10264
|
+
"description": "Call a Postgres function (RPC).",
|
|
10265
|
+
"parameters": {
|
|
10266
|
+
"fn": {
|
|
10267
|
+
"type": "string",
|
|
10268
|
+
"description": "The function name"
|
|
10269
|
+
},
|
|
10270
|
+
"params": {
|
|
10271
|
+
"type": "Record<string, unknown>",
|
|
10272
|
+
"description": "Arguments to pass to the function"
|
|
10273
|
+
},
|
|
10274
|
+
"options": {
|
|
10275
|
+
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
10276
|
+
"description": "Optional settings (head, get, count)"
|
|
10277
|
+
}
|
|
10278
|
+
},
|
|
10279
|
+
"required": [
|
|
10280
|
+
"fn"
|
|
10281
|
+
],
|
|
10282
|
+
"returns": "void"
|
|
10283
|
+
},
|
|
10284
|
+
"signInWithPassword": {
|
|
10285
|
+
"description": "Sign in with email and password.",
|
|
10286
|
+
"parameters": {
|
|
10287
|
+
"email": {
|
|
10288
|
+
"type": "string",
|
|
10289
|
+
"description": "Parameter email"
|
|
10290
|
+
},
|
|
10291
|
+
"password": {
|
|
10292
|
+
"type": "string",
|
|
10293
|
+
"description": "Parameter password"
|
|
10294
|
+
}
|
|
10295
|
+
},
|
|
10296
|
+
"required": [
|
|
10297
|
+
"email",
|
|
10298
|
+
"password"
|
|
10299
|
+
],
|
|
10300
|
+
"returns": "void"
|
|
10301
|
+
},
|
|
10302
|
+
"signUp": {
|
|
10303
|
+
"description": "Create a new user account with email and password.",
|
|
10304
|
+
"parameters": {
|
|
10305
|
+
"email": {
|
|
10306
|
+
"type": "string",
|
|
10307
|
+
"description": "Parameter email"
|
|
10308
|
+
},
|
|
10309
|
+
"password": {
|
|
10310
|
+
"type": "string",
|
|
10311
|
+
"description": "Parameter password"
|
|
10312
|
+
}
|
|
10313
|
+
},
|
|
10314
|
+
"required": [
|
|
10315
|
+
"email",
|
|
10316
|
+
"password"
|
|
10317
|
+
],
|
|
10318
|
+
"returns": "void"
|
|
10319
|
+
},
|
|
10320
|
+
"signOut": {
|
|
10321
|
+
"description": "Sign the current user out.",
|
|
10322
|
+
"parameters": {},
|
|
10323
|
+
"required": [],
|
|
10324
|
+
"returns": "void"
|
|
10325
|
+
},
|
|
10326
|
+
"getSession": {
|
|
10327
|
+
"description": "Get the current session, if any.",
|
|
10328
|
+
"parameters": {},
|
|
10329
|
+
"required": [],
|
|
10330
|
+
"returns": "void"
|
|
10331
|
+
},
|
|
10332
|
+
"getUser": {
|
|
10333
|
+
"description": "Get the current user, if any.",
|
|
10334
|
+
"parameters": {},
|
|
10335
|
+
"required": [],
|
|
10336
|
+
"returns": "void"
|
|
10337
|
+
},
|
|
10338
|
+
"invoke": {
|
|
10339
|
+
"description": "Invoke a Supabase Edge Function by name.",
|
|
10340
|
+
"parameters": {
|
|
10341
|
+
"name": {
|
|
10342
|
+
"type": "string",
|
|
10343
|
+
"description": "Parameter name"
|
|
10344
|
+
},
|
|
10345
|
+
"body": {
|
|
10346
|
+
"type": "any",
|
|
10347
|
+
"description": "Parameter body"
|
|
10348
|
+
}
|
|
10349
|
+
},
|
|
10350
|
+
"required": [
|
|
10351
|
+
"name"
|
|
10352
|
+
],
|
|
10353
|
+
"returns": "void"
|
|
10354
|
+
},
|
|
10355
|
+
"subscribe": {
|
|
10356
|
+
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
10357
|
+
"parameters": {
|
|
10358
|
+
"channelName": {
|
|
10359
|
+
"type": "string",
|
|
10360
|
+
"description": "A name for this subscription channel"
|
|
10361
|
+
},
|
|
10362
|
+
"table": {
|
|
10363
|
+
"type": "string",
|
|
10364
|
+
"description": "The table to listen to"
|
|
10365
|
+
},
|
|
10366
|
+
"callback": {
|
|
10367
|
+
"type": "(payload: any) => void",
|
|
10368
|
+
"description": "Called with the payload on each change"
|
|
10369
|
+
},
|
|
10370
|
+
"event": {
|
|
10371
|
+
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
10372
|
+
"description": "The event type to listen for (default: all changes)"
|
|
10373
|
+
}
|
|
10374
|
+
},
|
|
10375
|
+
"required": [
|
|
10376
|
+
"channelName",
|
|
10377
|
+
"table",
|
|
10378
|
+
"callback"
|
|
10379
|
+
],
|
|
10380
|
+
"returns": "RealtimeChannel"
|
|
10381
|
+
},
|
|
10382
|
+
"unsubscribe": {
|
|
10383
|
+
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
10384
|
+
"parameters": {
|
|
10385
|
+
"channelName": {
|
|
10386
|
+
"type": "string",
|
|
10387
|
+
"description": "The channel name to remove"
|
|
10388
|
+
}
|
|
10389
|
+
},
|
|
10390
|
+
"required": [
|
|
10391
|
+
"channelName"
|
|
10392
|
+
],
|
|
10393
|
+
"returns": "void"
|
|
10394
|
+
},
|
|
10395
|
+
"unsubscribeAll": {
|
|
10396
|
+
"description": "Unsubscribe and remove all realtime channels.",
|
|
10397
|
+
"parameters": {},
|
|
10398
|
+
"required": [],
|
|
10399
|
+
"returns": "void"
|
|
10400
|
+
},
|
|
10401
|
+
"connect": {
|
|
10402
|
+
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
10403
|
+
"parameters": {},
|
|
10404
|
+
"required": [],
|
|
10405
|
+
"returns": "void"
|
|
10406
|
+
},
|
|
10407
|
+
"disconnect": {
|
|
10408
|
+
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
10409
|
+
"parameters": {},
|
|
10410
|
+
"required": [],
|
|
10411
|
+
"returns": "void"
|
|
10412
|
+
}
|
|
10413
|
+
},
|
|
10414
|
+
"getters": {
|
|
10415
|
+
"sdk": {
|
|
10416
|
+
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
10417
|
+
"returns": "SupabaseSDKClient<any, any>"
|
|
10418
|
+
},
|
|
10419
|
+
"storage": {
|
|
10420
|
+
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
10421
|
+
"returns": "any"
|
|
10422
10422
|
},
|
|
10423
|
-
"
|
|
10424
|
-
"
|
|
10425
|
-
"
|
|
10426
|
-
"arguments": {}
|
|
10423
|
+
"functions": {
|
|
10424
|
+
"description": "Returns the Supabase Functions client.",
|
|
10425
|
+
"returns": "any"
|
|
10427
10426
|
}
|
|
10428
10427
|
},
|
|
10428
|
+
"events": {},
|
|
10429
10429
|
"state": {},
|
|
10430
10430
|
"options": {},
|
|
10431
10431
|
"envVars": [],
|
|
10432
10432
|
"examples": [
|
|
10433
10433
|
{
|
|
10434
10434
|
"language": "ts",
|
|
10435
|
-
"code": "const
|
|
10435
|
+
"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})"
|
|
10436
10436
|
}
|
|
10437
10437
|
]
|
|
10438
10438
|
});
|
|
@@ -10657,6 +10657,19 @@ setBuildTimeData('servers.express', {
|
|
|
10657
10657
|
],
|
|
10658
10658
|
"returns": "Promise<this>"
|
|
10659
10659
|
},
|
|
10660
|
+
"useEndpointModules": {
|
|
10661
|
+
"description": "",
|
|
10662
|
+
"parameters": {
|
|
10663
|
+
"modules": {
|
|
10664
|
+
"type": "EndpointModule[]",
|
|
10665
|
+
"description": "Parameter modules"
|
|
10666
|
+
}
|
|
10667
|
+
},
|
|
10668
|
+
"required": [
|
|
10669
|
+
"modules"
|
|
10670
|
+
],
|
|
10671
|
+
"returns": "Promise<this>"
|
|
10672
|
+
},
|
|
10660
10673
|
"serveOpenAPISpec": {
|
|
10661
10674
|
"description": "",
|
|
10662
10675
|
"parameters": {
|
|
@@ -20906,256 +20919,61 @@ export const introspectionData = [
|
|
|
20906
20919
|
"returns": "Promise<string>",
|
|
20907
20920
|
"examples": [
|
|
20908
20921
|
{
|
|
20909
|
-
"language": "ts",
|
|
20910
|
-
"code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
|
|
20911
|
-
}
|
|
20912
|
-
]
|
|
20913
|
-
}
|
|
20914
|
-
},
|
|
20915
|
-
"getters": {
|
|
20916
|
-
"defaultModel": {
|
|
20917
|
-
"description": "The default model used for completions, from options or 'gpt-4o'.",
|
|
20918
|
-
"returns": "string"
|
|
20919
|
-
},
|
|
20920
|
-
"raw": {
|
|
20921
|
-
"description": "The underlying OpenAI SDK instance for advanced use cases.",
|
|
20922
|
-
"returns": "OpenAI"
|
|
20923
|
-
}
|
|
20924
|
-
},
|
|
20925
|
-
"events": {
|
|
20926
|
-
"connected": {
|
|
20927
|
-
"name": "connected",
|
|
20928
|
-
"description": "Event emitted by OpenAIClient",
|
|
20929
|
-
"arguments": {}
|
|
20930
|
-
},
|
|
20931
|
-
"failure": {
|
|
20932
|
-
"name": "failure",
|
|
20933
|
-
"description": "Event emitted by OpenAIClient",
|
|
20934
|
-
"arguments": {}
|
|
20935
|
-
},
|
|
20936
|
-
"completion": {
|
|
20937
|
-
"name": "completion",
|
|
20938
|
-
"description": "Event emitted by OpenAIClient",
|
|
20939
|
-
"arguments": {}
|
|
20940
|
-
},
|
|
20941
|
-
"embedding": {
|
|
20942
|
-
"name": "embedding",
|
|
20943
|
-
"description": "Event emitted by OpenAIClient",
|
|
20944
|
-
"arguments": {}
|
|
20945
|
-
},
|
|
20946
|
-
"image": {
|
|
20947
|
-
"name": "image",
|
|
20948
|
-
"description": "Event emitted by OpenAIClient",
|
|
20949
|
-
"arguments": {}
|
|
20950
|
-
},
|
|
20951
|
-
"models": {
|
|
20952
|
-
"name": "models",
|
|
20953
|
-
"description": "Event emitted by OpenAIClient",
|
|
20954
|
-
"arguments": {}
|
|
20955
|
-
}
|
|
20956
|
-
},
|
|
20957
|
-
"state": {},
|
|
20958
|
-
"options": {},
|
|
20959
|
-
"envVars": [],
|
|
20960
|
-
"examples": [
|
|
20961
|
-
{
|
|
20962
|
-
"language": "ts",
|
|
20963
|
-
"code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
|
|
20964
|
-
}
|
|
20965
|
-
]
|
|
20966
|
-
},
|
|
20967
|
-
{
|
|
20968
|
-
"id": "clients.supabase",
|
|
20969
|
-
"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).",
|
|
20970
|
-
"shortcut": "clients.supabase",
|
|
20971
|
-
"className": "SupabaseClient",
|
|
20972
|
-
"methods": {
|
|
20973
|
-
"from": {
|
|
20974
|
-
"description": "Start a query on a Postgres table or view.",
|
|
20975
|
-
"parameters": {
|
|
20976
|
-
"table": {
|
|
20977
|
-
"type": "string",
|
|
20978
|
-
"description": "The table or view name to query"
|
|
20979
|
-
}
|
|
20980
|
-
},
|
|
20981
|
-
"required": [
|
|
20982
|
-
"table"
|
|
20983
|
-
],
|
|
20984
|
-
"returns": "void"
|
|
20985
|
-
},
|
|
20986
|
-
"rpc": {
|
|
20987
|
-
"description": "Call a Postgres function (RPC).",
|
|
20988
|
-
"parameters": {
|
|
20989
|
-
"fn": {
|
|
20990
|
-
"type": "string",
|
|
20991
|
-
"description": "The function name"
|
|
20992
|
-
},
|
|
20993
|
-
"params": {
|
|
20994
|
-
"type": "Record<string, unknown>",
|
|
20995
|
-
"description": "Arguments to pass to the function"
|
|
20996
|
-
},
|
|
20997
|
-
"options": {
|
|
20998
|
-
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
20999
|
-
"description": "Optional settings (head, get, count)"
|
|
21000
|
-
}
|
|
21001
|
-
},
|
|
21002
|
-
"required": [
|
|
21003
|
-
"fn"
|
|
21004
|
-
],
|
|
21005
|
-
"returns": "void"
|
|
21006
|
-
},
|
|
21007
|
-
"signInWithPassword": {
|
|
21008
|
-
"description": "Sign in with email and password.",
|
|
21009
|
-
"parameters": {
|
|
21010
|
-
"email": {
|
|
21011
|
-
"type": "string",
|
|
21012
|
-
"description": "Parameter email"
|
|
21013
|
-
},
|
|
21014
|
-
"password": {
|
|
21015
|
-
"type": "string",
|
|
21016
|
-
"description": "Parameter password"
|
|
21017
|
-
}
|
|
21018
|
-
},
|
|
21019
|
-
"required": [
|
|
21020
|
-
"email",
|
|
21021
|
-
"password"
|
|
21022
|
-
],
|
|
21023
|
-
"returns": "void"
|
|
21024
|
-
},
|
|
21025
|
-
"signUp": {
|
|
21026
|
-
"description": "Create a new user account with email and password.",
|
|
21027
|
-
"parameters": {
|
|
21028
|
-
"email": {
|
|
21029
|
-
"type": "string",
|
|
21030
|
-
"description": "Parameter email"
|
|
21031
|
-
},
|
|
21032
|
-
"password": {
|
|
21033
|
-
"type": "string",
|
|
21034
|
-
"description": "Parameter password"
|
|
21035
|
-
}
|
|
21036
|
-
},
|
|
21037
|
-
"required": [
|
|
21038
|
-
"email",
|
|
21039
|
-
"password"
|
|
21040
|
-
],
|
|
21041
|
-
"returns": "void"
|
|
21042
|
-
},
|
|
21043
|
-
"signOut": {
|
|
21044
|
-
"description": "Sign the current user out.",
|
|
21045
|
-
"parameters": {},
|
|
21046
|
-
"required": [],
|
|
21047
|
-
"returns": "void"
|
|
21048
|
-
},
|
|
21049
|
-
"getSession": {
|
|
21050
|
-
"description": "Get the current session, if any.",
|
|
21051
|
-
"parameters": {},
|
|
21052
|
-
"required": [],
|
|
21053
|
-
"returns": "void"
|
|
21054
|
-
},
|
|
21055
|
-
"getUser": {
|
|
21056
|
-
"description": "Get the current user, if any.",
|
|
21057
|
-
"parameters": {},
|
|
21058
|
-
"required": [],
|
|
21059
|
-
"returns": "void"
|
|
21060
|
-
},
|
|
21061
|
-
"invoke": {
|
|
21062
|
-
"description": "Invoke a Supabase Edge Function by name.",
|
|
21063
|
-
"parameters": {
|
|
21064
|
-
"name": {
|
|
21065
|
-
"type": "string",
|
|
21066
|
-
"description": "Parameter name"
|
|
21067
|
-
},
|
|
21068
|
-
"body": {
|
|
21069
|
-
"type": "any",
|
|
21070
|
-
"description": "Parameter body"
|
|
21071
|
-
}
|
|
21072
|
-
},
|
|
21073
|
-
"required": [
|
|
21074
|
-
"name"
|
|
21075
|
-
],
|
|
21076
|
-
"returns": "void"
|
|
21077
|
-
},
|
|
21078
|
-
"subscribe": {
|
|
21079
|
-
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
21080
|
-
"parameters": {
|
|
21081
|
-
"channelName": {
|
|
21082
|
-
"type": "string",
|
|
21083
|
-
"description": "A name for this subscription channel"
|
|
21084
|
-
},
|
|
21085
|
-
"table": {
|
|
21086
|
-
"type": "string",
|
|
21087
|
-
"description": "The table to listen to"
|
|
21088
|
-
},
|
|
21089
|
-
"callback": {
|
|
21090
|
-
"type": "(payload: any) => void",
|
|
21091
|
-
"description": "Called with the payload on each change"
|
|
21092
|
-
},
|
|
21093
|
-
"event": {
|
|
21094
|
-
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
21095
|
-
"description": "The event type to listen for (default: all changes)"
|
|
21096
|
-
}
|
|
21097
|
-
},
|
|
21098
|
-
"required": [
|
|
21099
|
-
"channelName",
|
|
21100
|
-
"table",
|
|
21101
|
-
"callback"
|
|
21102
|
-
],
|
|
21103
|
-
"returns": "RealtimeChannel"
|
|
21104
|
-
},
|
|
21105
|
-
"unsubscribe": {
|
|
21106
|
-
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
21107
|
-
"parameters": {
|
|
21108
|
-
"channelName": {
|
|
21109
|
-
"type": "string",
|
|
21110
|
-
"description": "The channel name to remove"
|
|
21111
|
-
}
|
|
21112
|
-
},
|
|
21113
|
-
"required": [
|
|
21114
|
-
"channelName"
|
|
21115
|
-
],
|
|
21116
|
-
"returns": "void"
|
|
21117
|
-
},
|
|
21118
|
-
"unsubscribeAll": {
|
|
21119
|
-
"description": "Unsubscribe and remove all realtime channels.",
|
|
21120
|
-
"parameters": {},
|
|
21121
|
-
"required": [],
|
|
21122
|
-
"returns": "void"
|
|
21123
|
-
},
|
|
21124
|
-
"connect": {
|
|
21125
|
-
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
21126
|
-
"parameters": {},
|
|
21127
|
-
"required": [],
|
|
21128
|
-
"returns": "void"
|
|
21129
|
-
},
|
|
21130
|
-
"disconnect": {
|
|
21131
|
-
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
21132
|
-
"parameters": {},
|
|
21133
|
-
"required": [],
|
|
21134
|
-
"returns": "void"
|
|
20922
|
+
"language": "ts",
|
|
20923
|
+
"code": "const reply = await openai.chat([\n { role: 'system', content: 'You are a pirate.' },\n { role: 'user', content: 'Hello!' }\n])"
|
|
20924
|
+
}
|
|
20925
|
+
]
|
|
21135
20926
|
}
|
|
21136
20927
|
},
|
|
21137
20928
|
"getters": {
|
|
21138
|
-
"
|
|
21139
|
-
"description": "
|
|
21140
|
-
"returns": "
|
|
20929
|
+
"defaultModel": {
|
|
20930
|
+
"description": "The default model used for completions, from options or 'gpt-4o'.",
|
|
20931
|
+
"returns": "string"
|
|
21141
20932
|
},
|
|
21142
|
-
"
|
|
21143
|
-
"description": "
|
|
21144
|
-
"returns": "
|
|
20933
|
+
"raw": {
|
|
20934
|
+
"description": "The underlying OpenAI SDK instance for advanced use cases.",
|
|
20935
|
+
"returns": "OpenAI"
|
|
20936
|
+
}
|
|
20937
|
+
},
|
|
20938
|
+
"events": {
|
|
20939
|
+
"connected": {
|
|
20940
|
+
"name": "connected",
|
|
20941
|
+
"description": "Event emitted by OpenAIClient",
|
|
20942
|
+
"arguments": {}
|
|
21145
20943
|
},
|
|
21146
|
-
"
|
|
21147
|
-
"
|
|
21148
|
-
"
|
|
20944
|
+
"failure": {
|
|
20945
|
+
"name": "failure",
|
|
20946
|
+
"description": "Event emitted by OpenAIClient",
|
|
20947
|
+
"arguments": {}
|
|
20948
|
+
},
|
|
20949
|
+
"completion": {
|
|
20950
|
+
"name": "completion",
|
|
20951
|
+
"description": "Event emitted by OpenAIClient",
|
|
20952
|
+
"arguments": {}
|
|
20953
|
+
},
|
|
20954
|
+
"embedding": {
|
|
20955
|
+
"name": "embedding",
|
|
20956
|
+
"description": "Event emitted by OpenAIClient",
|
|
20957
|
+
"arguments": {}
|
|
20958
|
+
},
|
|
20959
|
+
"image": {
|
|
20960
|
+
"name": "image",
|
|
20961
|
+
"description": "Event emitted by OpenAIClient",
|
|
20962
|
+
"arguments": {}
|
|
20963
|
+
},
|
|
20964
|
+
"models": {
|
|
20965
|
+
"name": "models",
|
|
20966
|
+
"description": "Event emitted by OpenAIClient",
|
|
20967
|
+
"arguments": {}
|
|
21149
20968
|
}
|
|
21150
20969
|
},
|
|
21151
|
-
"events": {},
|
|
21152
20970
|
"state": {},
|
|
21153
20971
|
"options": {},
|
|
21154
20972
|
"envVars": [],
|
|
21155
20973
|
"examples": [
|
|
21156
20974
|
{
|
|
21157
20975
|
"language": "ts",
|
|
21158
|
-
"code": "const
|
|
20976
|
+
"code": "const openai = container.client('openai', { defaultModel: 'gpt-4o' })\nconst answer = await openai.ask('What is the meaning of life?')\nconsole.log(answer)"
|
|
21159
20977
|
}
|
|
21160
20978
|
]
|
|
21161
20979
|
},
|
|
@@ -21611,6 +21429,201 @@ export const introspectionData = [
|
|
|
21611
21429
|
}
|
|
21612
21430
|
]
|
|
21613
21431
|
},
|
|
21432
|
+
{
|
|
21433
|
+
"id": "clients.supabase",
|
|
21434
|
+
"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).",
|
|
21435
|
+
"shortcut": "clients.supabase",
|
|
21436
|
+
"className": "SupabaseClient",
|
|
21437
|
+
"methods": {
|
|
21438
|
+
"from": {
|
|
21439
|
+
"description": "Start a query on a Postgres table or view.",
|
|
21440
|
+
"parameters": {
|
|
21441
|
+
"table": {
|
|
21442
|
+
"type": "string",
|
|
21443
|
+
"description": "The table or view name to query"
|
|
21444
|
+
}
|
|
21445
|
+
},
|
|
21446
|
+
"required": [
|
|
21447
|
+
"table"
|
|
21448
|
+
],
|
|
21449
|
+
"returns": "void"
|
|
21450
|
+
},
|
|
21451
|
+
"rpc": {
|
|
21452
|
+
"description": "Call a Postgres function (RPC).",
|
|
21453
|
+
"parameters": {
|
|
21454
|
+
"fn": {
|
|
21455
|
+
"type": "string",
|
|
21456
|
+
"description": "The function name"
|
|
21457
|
+
},
|
|
21458
|
+
"params": {
|
|
21459
|
+
"type": "Record<string, unknown>",
|
|
21460
|
+
"description": "Arguments to pass to the function"
|
|
21461
|
+
},
|
|
21462
|
+
"options": {
|
|
21463
|
+
"type": "{ head?: boolean; get?: boolean; count?: \"exact\" | \"planned\" | \"estimated\" }",
|
|
21464
|
+
"description": "Optional settings (head, get, count)"
|
|
21465
|
+
}
|
|
21466
|
+
},
|
|
21467
|
+
"required": [
|
|
21468
|
+
"fn"
|
|
21469
|
+
],
|
|
21470
|
+
"returns": "void"
|
|
21471
|
+
},
|
|
21472
|
+
"signInWithPassword": {
|
|
21473
|
+
"description": "Sign in with email and password.",
|
|
21474
|
+
"parameters": {
|
|
21475
|
+
"email": {
|
|
21476
|
+
"type": "string",
|
|
21477
|
+
"description": "Parameter email"
|
|
21478
|
+
},
|
|
21479
|
+
"password": {
|
|
21480
|
+
"type": "string",
|
|
21481
|
+
"description": "Parameter password"
|
|
21482
|
+
}
|
|
21483
|
+
},
|
|
21484
|
+
"required": [
|
|
21485
|
+
"email",
|
|
21486
|
+
"password"
|
|
21487
|
+
],
|
|
21488
|
+
"returns": "void"
|
|
21489
|
+
},
|
|
21490
|
+
"signUp": {
|
|
21491
|
+
"description": "Create a new user account with email and password.",
|
|
21492
|
+
"parameters": {
|
|
21493
|
+
"email": {
|
|
21494
|
+
"type": "string",
|
|
21495
|
+
"description": "Parameter email"
|
|
21496
|
+
},
|
|
21497
|
+
"password": {
|
|
21498
|
+
"type": "string",
|
|
21499
|
+
"description": "Parameter password"
|
|
21500
|
+
}
|
|
21501
|
+
},
|
|
21502
|
+
"required": [
|
|
21503
|
+
"email",
|
|
21504
|
+
"password"
|
|
21505
|
+
],
|
|
21506
|
+
"returns": "void"
|
|
21507
|
+
},
|
|
21508
|
+
"signOut": {
|
|
21509
|
+
"description": "Sign the current user out.",
|
|
21510
|
+
"parameters": {},
|
|
21511
|
+
"required": [],
|
|
21512
|
+
"returns": "void"
|
|
21513
|
+
},
|
|
21514
|
+
"getSession": {
|
|
21515
|
+
"description": "Get the current session, if any.",
|
|
21516
|
+
"parameters": {},
|
|
21517
|
+
"required": [],
|
|
21518
|
+
"returns": "void"
|
|
21519
|
+
},
|
|
21520
|
+
"getUser": {
|
|
21521
|
+
"description": "Get the current user, if any.",
|
|
21522
|
+
"parameters": {},
|
|
21523
|
+
"required": [],
|
|
21524
|
+
"returns": "void"
|
|
21525
|
+
},
|
|
21526
|
+
"invoke": {
|
|
21527
|
+
"description": "Invoke a Supabase Edge Function by name.",
|
|
21528
|
+
"parameters": {
|
|
21529
|
+
"name": {
|
|
21530
|
+
"type": "string",
|
|
21531
|
+
"description": "Parameter name"
|
|
21532
|
+
},
|
|
21533
|
+
"body": {
|
|
21534
|
+
"type": "any",
|
|
21535
|
+
"description": "Parameter body"
|
|
21536
|
+
}
|
|
21537
|
+
},
|
|
21538
|
+
"required": [
|
|
21539
|
+
"name"
|
|
21540
|
+
],
|
|
21541
|
+
"returns": "void"
|
|
21542
|
+
},
|
|
21543
|
+
"subscribe": {
|
|
21544
|
+
"description": "Subscribe to realtime changes on a Postgres table.",
|
|
21545
|
+
"parameters": {
|
|
21546
|
+
"channelName": {
|
|
21547
|
+
"type": "string",
|
|
21548
|
+
"description": "A name for this subscription channel"
|
|
21549
|
+
},
|
|
21550
|
+
"table": {
|
|
21551
|
+
"type": "string",
|
|
21552
|
+
"description": "The table to listen to"
|
|
21553
|
+
},
|
|
21554
|
+
"callback": {
|
|
21555
|
+
"type": "(payload: any) => void",
|
|
21556
|
+
"description": "Called with the payload on each change"
|
|
21557
|
+
},
|
|
21558
|
+
"event": {
|
|
21559
|
+
"type": "\"INSERT\" | \"UPDATE\" | \"DELETE\" | \"*\"",
|
|
21560
|
+
"description": "The event type to listen for (default: all changes)"
|
|
21561
|
+
}
|
|
21562
|
+
},
|
|
21563
|
+
"required": [
|
|
21564
|
+
"channelName",
|
|
21565
|
+
"table",
|
|
21566
|
+
"callback"
|
|
21567
|
+
],
|
|
21568
|
+
"returns": "RealtimeChannel"
|
|
21569
|
+
},
|
|
21570
|
+
"unsubscribe": {
|
|
21571
|
+
"description": "Unsubscribe and remove a realtime channel by name.",
|
|
21572
|
+
"parameters": {
|
|
21573
|
+
"channelName": {
|
|
21574
|
+
"type": "string",
|
|
21575
|
+
"description": "The channel name to remove"
|
|
21576
|
+
}
|
|
21577
|
+
},
|
|
21578
|
+
"required": [
|
|
21579
|
+
"channelName"
|
|
21580
|
+
],
|
|
21581
|
+
"returns": "void"
|
|
21582
|
+
},
|
|
21583
|
+
"unsubscribeAll": {
|
|
21584
|
+
"description": "Unsubscribe and remove all realtime channels.",
|
|
21585
|
+
"parameters": {},
|
|
21586
|
+
"required": [],
|
|
21587
|
+
"returns": "void"
|
|
21588
|
+
},
|
|
21589
|
+
"connect": {
|
|
21590
|
+
"description": "Connect is a no-op since the Supabase SDK initializes on construction. The client is ready to use immediately after creation.",
|
|
21591
|
+
"parameters": {},
|
|
21592
|
+
"required": [],
|
|
21593
|
+
"returns": "void"
|
|
21594
|
+
},
|
|
21595
|
+
"disconnect": {
|
|
21596
|
+
"description": "Disconnect by signing out and removing all realtime channels.",
|
|
21597
|
+
"parameters": {},
|
|
21598
|
+
"required": [],
|
|
21599
|
+
"returns": "void"
|
|
21600
|
+
}
|
|
21601
|
+
},
|
|
21602
|
+
"getters": {
|
|
21603
|
+
"sdk": {
|
|
21604
|
+
"description": "Returns the raw Supabase SDK client for full access to all SDK methods.",
|
|
21605
|
+
"returns": "SupabaseSDKClient<any, any>"
|
|
21606
|
+
},
|
|
21607
|
+
"storage": {
|
|
21608
|
+
"description": "Returns the Supabase Storage client for managing buckets and files.",
|
|
21609
|
+
"returns": "any"
|
|
21610
|
+
},
|
|
21611
|
+
"functions": {
|
|
21612
|
+
"description": "Returns the Supabase Functions client.",
|
|
21613
|
+
"returns": "any"
|
|
21614
|
+
}
|
|
21615
|
+
},
|
|
21616
|
+
"events": {},
|
|
21617
|
+
"state": {},
|
|
21618
|
+
"options": {},
|
|
21619
|
+
"envVars": [],
|
|
21620
|
+
"examples": [
|
|
21621
|
+
{
|
|
21622
|
+
"language": "ts",
|
|
21623
|
+
"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})"
|
|
21624
|
+
}
|
|
21625
|
+
]
|
|
21626
|
+
},
|
|
21614
21627
|
{
|
|
21615
21628
|
"id": "servers.mcp",
|
|
21616
21629
|
"description": "MCP (Model Context Protocol) server for exposing tools, resources, and prompts to AI clients like Claude Code. Uses the low-level MCP SDK Server class directly with Zod 4 native JSON Schema conversion. Register tools, resources, and prompts programmatically, then start the server over stdio (for CLI integration) or HTTP (for remote access).",
|
|
@@ -21830,6 +21843,19 @@ export const introspectionData = [
|
|
|
21830
21843
|
],
|
|
21831
21844
|
"returns": "Promise<this>"
|
|
21832
21845
|
},
|
|
21846
|
+
"useEndpointModules": {
|
|
21847
|
+
"description": "",
|
|
21848
|
+
"parameters": {
|
|
21849
|
+
"modules": {
|
|
21850
|
+
"type": "EndpointModule[]",
|
|
21851
|
+
"description": "Parameter modules"
|
|
21852
|
+
}
|
|
21853
|
+
},
|
|
21854
|
+
"required": [
|
|
21855
|
+
"modules"
|
|
21856
|
+
],
|
|
21857
|
+
"returns": "Promise<this>"
|
|
21858
|
+
},
|
|
21833
21859
|
"serveOpenAPISpec": {
|
|
21834
21860
|
"description": "",
|
|
21835
21861
|
"parameters": {
|