File tree Expand file tree Collapse file tree
extensions/codex/src/app-server Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -481,6 +481,38 @@ describe("CodexAppServerClient", () => {
481481 } ) ;
482482 } ) ;
483483
484+ it ( "returns JSON-RPC internal errors when server request handlers throw" , async ( ) => {
485+ const warn = vi . spyOn ( embeddedAgentLog , "warn" ) . mockImplementation ( ( ) => undefined ) ;
486+ const harness = createClientHarness ( ) ;
487+ clients . push ( harness . client ) ;
488+ harness . client . addRequestHandler ( ( request ) => {
489+ if ( request . method === "account/chatgptAuthTokens/refresh" ) {
490+ throw new Error ( "refresh_token_invalidated: reauthentication required" ) ;
491+ }
492+ return undefined ;
493+ } ) ;
494+
495+ harness . send ( {
496+ id : "srv-refresh" ,
497+ method : "account/chatgptAuthTokens/refresh" ,
498+ params : { accountId : "acct-1" } ,
499+ } ) ;
500+ await vi . waitFor ( ( ) => expect ( harness . writes . length ) . toBe ( 1 ) ) ;
501+
502+ expect ( JSON . parse ( harness . writes [ 0 ] ?? "{}" ) ) . toEqual ( {
503+ id : "srv-refresh" ,
504+ error : {
505+ code : - 32603 ,
506+ message : "refresh_token_invalidated: reauthentication required" ,
507+ } ,
508+ } ) ;
509+ expect ( warn ) . toHaveBeenCalledWith ( "codex app-server server request handler failed" , {
510+ id : "srv-refresh" ,
511+ method : "account/chatgptAuthTokens/refresh" ,
512+ error : expect . any ( Error ) ,
513+ } ) ;
514+ } ) ;
515+
484516 it ( "fails closed when a dynamic tool server request handler hangs" , async ( ) => {
485517 vi . useFakeTimers ( ) ;
486518 const warn = vi . spyOn ( embeddedAgentLog , "warn" ) . mockImplementation ( ( ) => undefined ) ;
Original file line number Diff line number Diff line change @@ -468,10 +468,17 @@ export class CodexAppServerClient {
468468 }
469469 this . writeMessage ( { id : request . id , result : defaultServerRequestResponse ( request ) } ) ;
470470 } catch ( error ) {
471+ const message = error instanceof Error ? error . message : String ( error ) ;
472+ embeddedAgentLog . warn ( "codex app-server server request handler failed" , {
473+ id : request . id ,
474+ method : request . method ,
475+ error,
476+ } ) ;
471477 this . writeMessage ( {
472478 id : request . id ,
473479 error : {
474- message : error instanceof Error ? error . message : String ( error ) ,
480+ code : - 32603 ,
481+ message,
475482 } ,
476483 } ) ;
477484 }
You can’t perform that action at this time.
0 commit comments