@@ -699,6 +699,13 @@ function emitSessionApiClass(className: string, node: Record<string, unknown>, c
699699 const paramEntries = ( method . params ?. properties ? Object . entries ( method . params . properties ) : [ ] ) . filter ( ( [ k ] ) => k !== "sessionId" ) ;
700700 const requiredSet = new Set ( method . params ?. required || [ ] ) ;
701701
702+ // Sort so required params come before optional (C# requires defaults at end)
703+ paramEntries . sort ( ( a , b ) => {
704+ const aReq = requiredSet . has ( a [ 0 ] ) ? 0 : 1 ;
705+ const bReq = requiredSet . has ( b [ 0 ] ) ? 0 : 1 ;
706+ return aReq - bReq ;
707+ } ) ;
708+
702709 const requestClassName = `${ typeToClassName ( method . rpcMethod ) } Request` ;
703710 if ( method . params ) {
704711 const reqClass = emitRpcClass ( requestClassName , method . params , "internal" , classes ) ;
@@ -711,8 +718,9 @@ function emitSessionApiClass(className: string, node: Record<string, unknown>, c
711718
712719 for ( const [ pName , pSchema ] of paramEntries ) {
713720 if ( typeof pSchema !== "object" ) continue ;
714- const csType = resolveRpcType ( pSchema as JSONSchema7 , requiredSet . has ( pName ) , requestClassName , toPascalCase ( pName ) , classes ) ;
715- sigParams . push ( `${ csType } ${ pName } ` ) ;
721+ const isReq = requiredSet . has ( pName ) ;
722+ const csType = resolveRpcType ( pSchema as JSONSchema7 , isReq , requestClassName , toPascalCase ( pName ) , classes ) ;
723+ sigParams . push ( `${ csType } ${ pName } ${ isReq ? "" : " = null" } ` ) ;
716724 bodyAssignments . push ( `${ toPascalCase ( pName ) } = ${ pName } ` ) ;
717725 }
718726 sigParams . push ( "CancellationToken cancellationToken = default" ) ;
0 commit comments