@@ -521,21 +521,26 @@ export class ChatModel extends Disposable implements IChatModel {
521
521
this . _welcomeMessage = new ChatWelcomeMessageModel ( this , content ) ;
522
522
}
523
523
524
- return requests . map ( ( raw : ISerializableChatRequestData ) => {
525
- const parsedRequest = typeof raw . message === 'string' ? this . getParsedRequestFromString ( raw . message ) :
526
- reviveParsedChatRequest ( raw . message ) ;
527
- const request = new ChatRequestModel ( this , parsedRequest , raw . providerRequestId ) ;
528
- if ( raw . response || raw . responseErrorDetails ) {
529
- const agent = raw . agent && this . chatAgentService . getAgents ( ) . find ( a => a . id === raw . agent ! . id ) ; // TODO do something reasonable if this agent has disappeared since the last session
530
- request . response = new ChatResponseModel ( raw . response ?? [ new MarkdownString ( raw . response ) ] , this , agent , true , raw . isCanceled , raw . vote , raw . providerRequestId , raw . responseErrorDetails , raw . followups ) ;
531
- }
532
- return request ;
533
- } ) ;
524
+ try {
525
+ return requests . map ( ( raw : ISerializableChatRequestData ) => {
526
+ const parsedRequest = typeof raw . message === 'string' ? this . getParsedRequestFromString ( raw . message ) :
527
+ reviveParsedChatRequest ( raw . message ) ;
528
+ const request = new ChatRequestModel ( this , parsedRequest , raw . providerRequestId ) ;
529
+ if ( raw . response || raw . responseErrorDetails ) {
530
+ const agent = raw . agent && this . chatAgentService . getAgents ( ) . find ( a => a . id === raw . agent ! . id ) ; // TODO do something reasonable if this agent has disappeared since the last session
531
+ request . response = new ChatResponseModel ( raw . response ?? [ new MarkdownString ( raw . response ) ] , this , agent , true , raw . isCanceled , raw . vote , raw . providerRequestId , raw . responseErrorDetails , raw . followups ) ;
532
+ }
533
+ return request ;
534
+ } ) ;
535
+ } catch ( error ) {
536
+ this . logService . error ( 'Failed to parse chat data' , error ) ;
537
+ return [ ] ;
538
+ }
534
539
}
535
540
536
541
private getParsedRequestFromString ( message : string ) : IParsedChatRequest {
537
542
// TODO These offsets won't be used, but chat replies need to go through the parser as well
538
- const parts = [ new ChatRequestTextPart ( new OffsetRange ( 1 , message . length ) , { startColumn : 1 , startLineNumber : 1 , endColumn : 1 , endLineNumber : 1 } , message ) ] ;
543
+ const parts = [ new ChatRequestTextPart ( new OffsetRange ( 0 , message . length ) , { startColumn : 1 , startLineNumber : 1 , endColumn : 1 , endLineNumber : 1 } , message ) ] ;
539
544
return {
540
545
text : message ,
541
546
parts
0 commit comments