@@ -49,43 +49,45 @@ export class AgentSideConnection {
4949 switch ( method ) {
5050 case schema . AGENT_METHODS . initialize : {
5151 const validatedParams = schema . initializeRequestSchema . parse ( params ) ;
52- return agent . initialize ( validatedParams as schema . InitializeRequest ) ;
52+ return agent . initialize ( validatedParams ) ;
5353 }
5454 case schema . AGENT_METHODS . session_new : {
5555 const validatedParams = schema . newSessionRequestSchema . parse ( params ) ;
56- return agent . newSession ( validatedParams as schema . NewSessionRequest ) ;
56+ return agent . newSession ( validatedParams ) ;
5757 }
5858 case schema . AGENT_METHODS . session_load : {
5959 if ( ! agent . loadSession ) {
6060 throw RequestError . methodNotFound ( method ) ;
6161 }
6262 const validatedParams = schema . loadSessionRequestSchema . parse ( params ) ;
63- return agent . loadSession (
64- validatedParams as schema . LoadSessionRequest ,
65- ) ;
63+ return agent . loadSession ( validatedParams ) ;
6664 }
6765 case schema . AGENT_METHODS . session_set_mode : {
6866 if ( ! agent . setSessionMode ) {
6967 throw RequestError . methodNotFound ( method ) ;
7068 }
7169 const validatedParams =
7270 schema . setSessionModeRequestSchema . parse ( params ) ;
73- const result = await agent . setSessionMode (
74- validatedParams as schema . SetSessionModeRequest ,
75- ) ;
71+ const result = await agent . setSessionMode ( validatedParams ) ;
7672 return result ?? { } ;
7773 }
7874 case schema . AGENT_METHODS . authenticate : {
7975 const validatedParams =
8076 schema . authenticateRequestSchema . parse ( params ) ;
81- const result = await agent . authenticate (
82- validatedParams as schema . AuthenticateRequest ,
83- ) ;
77+ const result = await agent . authenticate ( validatedParams ) ;
8478 return result ?? { } ;
8579 }
8680 case schema . AGENT_METHODS . session_prompt : {
8781 const validatedParams = schema . promptRequestSchema . parse ( params ) ;
88- return agent . prompt ( validatedParams as schema . PromptRequest ) ;
82+ return agent . prompt ( validatedParams ) ;
83+ }
84+ case schema . AGENT_METHODS . session_set_model : {
85+ if ( ! agent . setSessionModel ) {
86+ throw RequestError . methodNotFound ( method ) ;
87+ }
88+ const validatedParams =
89+ schema . setSessionModelRequestSchema . parse ( params ) ;
90+ return agent . setSessionModel ( validatedParams ) ;
8991 }
9092 default :
9193 if ( method . startsWith ( "_" ) ) {
@@ -108,7 +110,7 @@ export class AgentSideConnection {
108110 switch ( method ) {
109111 case schema . AGENT_METHODS . session_cancel : {
110112 const validatedParams = schema . cancelNotificationSchema . parse ( params ) ;
111- return agent . cancel ( validatedParams as schema . CancelNotification ) ;
113+ return agent . cancel ( validatedParams ) ;
112114 }
113115 default :
114116 if ( method . startsWith ( "_" ) ) {
@@ -223,10 +225,10 @@ export class AgentSideConnection {
223225 async createTerminal (
224226 params : schema . CreateTerminalRequest ,
225227 ) : Promise < TerminalHandle > {
226- const response = ( await this . #connection. sendRequest (
227- schema . CLIENT_METHODS . terminal_create ,
228- params ,
229- ) ) as schema . CreateTerminalResponse ;
228+ const response = await this . #connection. sendRequest <
229+ schema . CreateTerminalRequest ,
230+ schema . CreateTerminalResponse
231+ > ( schema . CLIENT_METHODS . terminal_create , params ) ;
230232
231233 return new TerminalHandle (
232234 response . terminalId ,
@@ -399,59 +401,43 @@ export class ClientSideConnection implements Agent {
399401 case schema . CLIENT_METHODS . fs_write_text_file : {
400402 const validatedParams =
401403 schema . writeTextFileRequestSchema . parse ( params ) ;
402- return client . writeTextFile ?.(
403- validatedParams as schema . WriteTextFileRequest ,
404- ) ;
404+ return client . writeTextFile ?.( validatedParams ) ;
405405 }
406406 case schema . CLIENT_METHODS . fs_read_text_file : {
407407 const validatedParams =
408408 schema . readTextFileRequestSchema . parse ( params ) ;
409- return client . readTextFile ?.(
410- validatedParams as schema . ReadTextFileRequest ,
411- ) ;
409+ return client . readTextFile ?.( validatedParams ) ;
412410 }
413411 case schema . CLIENT_METHODS . session_request_permission : {
414412 const validatedParams =
415413 schema . requestPermissionRequestSchema . parse ( params ) ;
416- return client . requestPermission (
417- validatedParams as schema . RequestPermissionRequest ,
418- ) ;
414+ return client . requestPermission ( validatedParams ) ;
419415 }
420416 case schema . CLIENT_METHODS . terminal_create : {
421417 const validatedParams =
422418 schema . createTerminalRequestSchema . parse ( params ) ;
423- return client . createTerminal ?.(
424- validatedParams as schema . CreateTerminalRequest ,
425- ) ;
419+ return client . createTerminal ?.( validatedParams ) ;
426420 }
427421 case schema . CLIENT_METHODS . terminal_output : {
428422 const validatedParams =
429423 schema . terminalOutputRequestSchema . parse ( params ) ;
430- return client . terminalOutput ?.(
431- validatedParams as schema . TerminalOutputRequest ,
432- ) ;
424+ return client . terminalOutput ?.( validatedParams ) ;
433425 }
434426 case schema . CLIENT_METHODS . terminal_release : {
435427 const validatedParams =
436428 schema . releaseTerminalRequestSchema . parse ( params ) ;
437- const result = await client . releaseTerminal ?.(
438- validatedParams as schema . ReleaseTerminalRequest ,
439- ) ;
429+ const result = await client . releaseTerminal ?.( validatedParams ) ;
440430 return result ?? { } ;
441431 }
442432 case schema . CLIENT_METHODS . terminal_wait_for_exit : {
443433 const validatedParams =
444434 schema . waitForTerminalExitRequestSchema . parse ( params ) ;
445- return client . waitForTerminalExit ?.(
446- validatedParams as schema . WaitForTerminalExitRequest ,
447- ) ;
435+ return client . waitForTerminalExit ?.( validatedParams ) ;
448436 }
449437 case schema . CLIENT_METHODS . terminal_kill : {
450438 const validatedParams =
451439 schema . killTerminalCommandRequestSchema . parse ( params ) ;
452- const result = await client . killTerminal ?.(
453- validatedParams as schema . KillTerminalCommandRequest ,
454- ) ;
440+ const result = await client . killTerminal ?.( validatedParams ) ;
455441 return result ?? { } ;
456442 }
457443 default :
@@ -478,9 +464,7 @@ export class ClientSideConnection implements Agent {
478464 case schema . CLIENT_METHODS . session_update : {
479465 const validatedParams =
480466 schema . sessionNotificationSchema . parse ( params ) ;
481- return client . sessionUpdate (
482- validatedParams as schema . SessionNotification ,
483- ) ;
467+ return client . sessionUpdate ( validatedParams ) ;
484468 }
485469 default :
486470 // Handle extension notifications (any method starting with '_')
@@ -598,6 +582,24 @@ export class ClientSideConnection implements Agent {
598582 ) ;
599583 }
600584
585+ /**
586+ * **UNSTABLE**
587+ *
588+ * This capability is not part of the spec yet, and may be removed or changed at any point.
589+ *
590+ * Select a model for a given session.
591+ */
592+ async setSessionModel (
593+ params : schema . SetSessionModelRequest ,
594+ ) : Promise < schema . SetSessionModelResponse > {
595+ return (
596+ ( await this . #connection. sendRequest (
597+ schema . AGENT_METHODS . session_set_mode ,
598+ params ,
599+ ) ) ?? { }
600+ ) ;
601+ }
602+
601603 /**
602604 * Authenticates the client using the specified authentication method.
603605 *
@@ -771,7 +773,7 @@ class Connection {
771773 }
772774 } else if ( "id" in message ) {
773775 // It's a response
774- this . #handleResponse( message as AnyResponse ) ;
776+ this . #handleResponse( message ) ;
775777 } else {
776778 console . error ( "Invalid message" , { message } ) ;
777779 }
@@ -1215,6 +1217,16 @@ export interface Agent {
12151217 setSessionMode ?(
12161218 params : schema . SetSessionModeRequest ,
12171219 ) : Promise < schema . SetSessionModeResponse | void > ;
1220+ /**
1221+ * **UNSTABLE**
1222+ *
1223+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1224+ *
1225+ * Select a model for a given session.
1226+ */
1227+ setSessionModel ?(
1228+ params : schema . SetSessionModelRequest ,
1229+ ) : Promise < schema . SetSessionModelResponse | void > ;
12181230 /**
12191231 * Authenticates the client using the specified authentication method.
12201232 *
0 commit comments