@@ -20,7 +20,7 @@ import { glob } from './tools/glob'
2020import { listDirectory } from './tools/list-directory'
2121import { getFiles } from './tools/read-files'
2222import { runTerminalCommand } from './tools/run-terminal-command'
23- import { NetworkError } from './errors'
23+ import { NetworkError , ErrorCodes } from './errors'
2424
2525import type { CustomToolDefinition } from './custom-tool'
2626import type { RunState } from './run-state'
@@ -245,9 +245,9 @@ export async function run({
245245 return getCancelledRunState ( )
246246 }
247247
248- async function onError ( error : { message : string } ) {
248+ async function onError ( error : { message : string ; code : string } ) {
249249 if ( handleEvent ) {
250- await handleEvent ( { type : 'error' , message : error . message } )
250+ await handleEvent ( { type : 'error' , message : error . message , code : error . code } )
251251 }
252252 }
253253
@@ -435,7 +435,7 @@ export async function run({
435435 } ,
436436 sendAction : ( { action } ) => {
437437 if ( action . type === 'action-error' ) {
438- onError ( { message : action . message } )
438+ onError ( { message : action . message , code : ErrorCodes . INTERNAL_ERROR } )
439439 return
440440 }
441441 if ( action . type === 'response-chunk' ) {
@@ -497,15 +497,15 @@ export async function run({
497497 if ( ! userInfoResult . success ) {
498498 const err = userInfoResult . error
499499 const errorMessage = err . message || 'Failed to resolve user information from API key'
500- await onError ( { message : errorMessage } )
500+ await onError ( { message : errorMessage , code : err . code ?? ErrorCodes . INTERNAL_ERROR } )
501501 clearStreamTimeout ( )
502502 return getCancelledRunState ( errorMessage )
503503 }
504504
505505 const userInfo = userInfoResult . value
506506 if ( ! userInfo ) {
507507 const errorMessage = 'Invalid API key or user not found'
508- await onError ( { message : errorMessage } )
508+ await onError ( { message : errorMessage , code : ErrorCodes . USER_NOT_FOUND } )
509509 clearStreamTimeout ( )
510510 return getCancelledRunState ( errorMessage )
511511 }
@@ -538,7 +538,7 @@ export async function run({
538538 return
539539 }
540540 const errorMessage = error . message || String ( error )
541- await onError ( { message : errorMessage } )
541+ await onError ( { message : errorMessage , code : ErrorCodes . NETWORK_ERROR } )
542542 settleResolve ( getCancelledRunState ( errorMessage ) )
543543 } )
544544 } catch ( error ) {
@@ -698,11 +698,11 @@ async function handlePromptResponse({
698698} : {
699699 action : ServerAction < 'prompt-response' > | ServerAction < 'prompt-error' >
700700 resolve : ( value : RunReturnType ) => any
701- onError : ( error : { message : string } ) => void
701+ onError : ( error : { message : string ; code : string } ) => void
702702 initialSessionState : SessionState
703703} ) {
704704 if ( action . type === 'prompt-error' ) {
705- onError ( { message : action . message } )
705+ onError ( { message : action . message , code : ErrorCodes . INTERNAL_ERROR } )
706706 resolve ( {
707707 sessionState : initialSessionState ,
708708 output : {
@@ -720,7 +720,7 @@ async function handlePromptResponse({
720720 JSON . stringify ( parsedOutput . error . issues ) ,
721721 'If this issues persists, please contact support@codebuff.com' ,
722722 ] . join ( '\n' )
723- onError ( { message } )
723+ onError ( { message, code : ErrorCodes . INVALID_RESPONSE } )
724724 resolve ( {
725725 sessionState : initialSessionState ,
726726 output : {
@@ -744,6 +744,7 @@ async function handlePromptResponse({
744744 action satisfies never
745745 onError ( {
746746 message : 'Internal error: prompt response type not handled' ,
747+ code : ErrorCodes . INTERNAL_ERROR ,
747748 } )
748749 resolve ( {
749750 sessionState : initialSessionState ,
0 commit comments