@@ -182,14 +182,14 @@ export function render<
182
182
[ name in keyof TS ] : {
183
183
description ?: string ;
184
184
parameters : TS [ name ] ;
185
- render : Renderer < z . output < TS [ name ] > > ;
185
+ render : Renderer < z . infer < TS [ name ] > > ;
186
186
} ;
187
187
} ;
188
188
functions ?: {
189
189
[ name in keyof FS ] : {
190
190
description ?: string ;
191
191
parameters : FS [ name ] ;
192
- render : Renderer < z . output < FS [ name ] > > ;
192
+ render : Renderer < z . infer < FS [ name ] > > ;
193
193
} ;
194
194
} ;
195
195
initial ?: ReactNode ;
@@ -300,27 +300,6 @@ export function render<
300
300
let hasFunction = false ;
301
301
let content = '' ;
302
302
303
- const parseFunctionCallArguments = ( fn : {
304
- type : 'functions' | 'tools' ;
305
- name : string ;
306
- arguments : any ;
307
- } ) => {
308
- const renderer =
309
- fn . type === 'functions'
310
- ? options . functions ?. [ fn . name ]
311
- : options . tools ?. [ fn . name ] ;
312
-
313
- const safeParsed = renderer ?. parameters . safeParse ( fn . arguments ) ;
314
-
315
- if ( safeParsed && ! safeParsed . success ) {
316
- throw new Error (
317
- `Invalid function call arguments in message. ${ safeParsed . error . message } ` ,
318
- ) ;
319
- }
320
-
321
- return safeParsed ?. data ;
322
- } ;
323
-
324
303
consumeStream (
325
304
OpenAIStream (
326
305
( await options . provider . chat . completions . create ( {
@@ -345,10 +324,7 @@ export function render<
345
324
async experimental_onFunctionCall ( functionCallPayload ) {
346
325
hasFunction = true ;
347
326
handleRender (
348
- parseFunctionCallArguments ( {
349
- ...functionCallPayload ,
350
- type : 'functions' ,
351
- } ) ,
327
+ functionCallPayload . arguments ,
352
328
options . functions ?. [ functionCallPayload . name as any ]
353
329
?. render ,
354
330
ui ,
@@ -358,16 +334,13 @@ export function render<
358
334
: { } ) ,
359
335
...( tools
360
336
? {
361
- async experimental_onToolCall ( toolCallPayload ) {
337
+ async experimental_onToolCall ( toolCallPayload : any ) {
362
338
hasFunction = true ;
363
339
364
340
// TODO: We might need Promise.all here?
365
341
for ( const tool of toolCallPayload . tools ) {
366
342
handleRender (
367
- parseFunctionCallArguments ( {
368
- type : 'tools' ,
369
- ...tool . func ,
370
- } ) ,
343
+ tool . func . arguments ,
371
344
options . tools ?. [ tool . func . name as any ] ?. render ,
372
345
ui ,
373
346
) ;
0 commit comments