Merge pull request #1284 from wsolarq11/fix/messages-boundary-null-error

fix: prevent null reference reading 'error' in MessagesBoundary
This commit is contained in:
claude-code-best
2026-06-25 17:18:00 +08:00
committed by GitHub
2 changed files with 6 additions and 2 deletions

View File

@@ -753,6 +753,7 @@ export function normalizeMessages(messages: Message[]): NormalizedMessage[] {
// and remains true for all subsequent messages in the normalization process. // and remains true for all subsequent messages in the normalization process.
let isNewChain = false let isNewChain = false
return messages.flatMap(message => { return messages.flatMap(message => {
if (!message) return []
switch (message.type) { switch (message.type) {
case 'assistant': { case 'assistant': {
const aMsg = message as AssistantMessage const aMsg = message as AssistantMessage
@@ -776,7 +777,7 @@ export function normalizeMessages(messages: Message[]): NormalizedMessage[] {
isVirtual: message.isVirtual, isVirtual: message.isVirtual,
requestId: message.requestId, requestId: message.requestId,
uuid, uuid,
error: message.error, error: message?.error,
isApiErrorMessage: message.isApiErrorMessage, isApiErrorMessage: message.isApiErrorMessage,
advisorModel: message.advisorModel, advisorModel: message.advisorModel,
} as NormalizedAssistantMessage } as NormalizedAssistantMessage
@@ -2376,6 +2377,7 @@ export function normalizeMessagesForAPI(
}, },
) )
.forEach(message => { .forEach(message => {
if (!message) return []
switch (message.type) { switch (message.type) {
case 'system': { case 'system': {
// local_command system messages need to be included as user messages // local_command system messages need to be included as user messages

View File

@@ -29,6 +29,7 @@ export function toInternalMessages(
messages: readonly DeepImmutable<SDKMessage>[], messages: readonly DeepImmutable<SDKMessage>[],
): Message[] { ): Message[] {
return messages.flatMap(message => { return messages.flatMap(message => {
if (!message) return []
switch (message.type) { switch (message.type) {
case 'assistant': case 'assistant':
return [ return [
@@ -127,6 +128,7 @@ export function fromSDKCompactMetadata(
export function toSDKMessages(messages: Message[]): SDKMessage[] { export function toSDKMessages(messages: Message[]): SDKMessage[] {
return messages.flatMap((message): SDKMessage[] => { return messages.flatMap((message): SDKMessage[] => {
if (!message) return []
switch (message.type) { switch (message.type) {
case 'assistant': case 'assistant':
return [ return [
@@ -138,7 +140,7 @@ export function toSDKMessages(messages: Message[]): SDKMessage[] {
session_id: getSessionId(), session_id: getSessionId(),
parent_tool_use_id: null, parent_tool_use_id: null,
uuid: message.uuid, uuid: message.uuid,
error: message.error, error: message?.error,
}, },
] ]
case 'user': case 'user':