feat: 大规模清理 claude 的类型问题及依赖

This commit is contained in:
claude-code-best
2026-03-31 22:21:35 +08:00
parent 2c759fe6fa
commit 4c0a655a1c
38 changed files with 1154 additions and 718 deletions

View File

@@ -7,6 +7,7 @@ import type {
SDKStatusMessage,
SDKSystemMessage,
SDKToolProgressMessage,
SDKUserMessage,
} from '../entrypoints/agentSdkTypes.js'
import type {
AssistantMessage,
@@ -171,10 +172,11 @@ export function convertSDKMessage(
): ConvertedMessage {
switch (msg.type) {
case 'assistant':
return { type: 'message', message: convertAssistantMessage(msg) }
return { type: 'message', message: convertAssistantMessage(msg as SDKAssistantMessage) }
case 'user': {
const content = msg.message?.content
const userMsg = msg as SDKUserMessage
const content = userMsg.message?.content
// Tool result messages from the remote server need to be converted so
// they render and collapse like local tool results. Detect via content
// shape (tool_result blocks) — parent_tool_use_id is NOT reliable: the
@@ -187,9 +189,9 @@ export function convertSDKMessage(
type: 'message',
message: createUserMessage({
content,
toolUseResult: msg.tool_use_result,
uuid: msg.uuid,
timestamp: msg.timestamp,
toolUseResult: userMsg.tool_use_result,
uuid: userMsg.uuid,
timestamp: userMsg.timestamp,
}),
}
}
@@ -202,9 +204,9 @@ export function convertSDKMessage(
type: 'message',
message: createUserMessage({
content,
toolUseResult: msg.tool_use_result,
uuid: msg.uuid,
timestamp: msg.timestamp,
toolUseResult: userMsg.tool_use_result,
uuid: userMsg.uuid,
timestamp: userMsg.timestamp,
}),
}
}
@@ -215,40 +217,42 @@ export function convertSDKMessage(
}
case 'stream_event':
return { type: 'stream_event', event: convertStreamEvent(msg) }
return { type: 'stream_event', event: convertStreamEvent(msg as SDKPartialAssistantMessage) }
case 'result':
// Only show result messages for errors. Success results are noise
// in multi-turn sessions (isLoading=false is sufficient signal).
if (msg.subtype !== 'success') {
return { type: 'message', message: convertResultMessage(msg) }
if ((msg as SDKResultMessage).subtype !== 'success') {
return { type: 'message', message: convertResultMessage(msg as SDKResultMessage) }
}
return { type: 'ignored' }
case 'system':
if (msg.subtype === 'init') {
return { type: 'message', message: convertInitMessage(msg) }
case 'system': {
const sysMsg = msg as SDKSystemMessage
if (sysMsg.subtype === 'init') {
return { type: 'message', message: convertInitMessage(sysMsg) }
}
if (msg.subtype === 'status') {
const statusMsg = convertStatusMessage(msg)
if (sysMsg.subtype === 'status') {
const statusMsg = convertStatusMessage(msg as SDKStatusMessage)
return statusMsg
? { type: 'message', message: statusMsg }
: { type: 'ignored' }
}
if (msg.subtype === 'compact_boundary') {
if (sysMsg.subtype === 'compact_boundary') {
return {
type: 'message',
message: convertCompactBoundaryMessage(msg),
message: convertCompactBoundaryMessage(msg as SDKCompactBoundaryMessage),
}
}
// hook_response and other subtypes
logForDebugging(
`[sdkMessageAdapter] Ignoring system message subtype: ${msg.subtype}`,
`[sdkMessageAdapter] Ignoring system message subtype: ${sysMsg.subtype}`,
)
return { type: 'ignored' }
}
case 'tool_progress':
return { type: 'message', message: convertToolProgressMessage(msg) }
return { type: 'message', message: convertToolProgressMessage(msg as SDKToolProgressMessage) }
case 'auth_status':
// Auth status is handled separately, not converted to a display message
@@ -296,7 +300,7 @@ export function isSuccessResult(msg: SDKResultMessage): boolean {
*/
export function getResultText(msg: SDKResultMessage): string | null {
if (msg.subtype === 'success') {
return msg.result
return msg.result ?? null
}
return null
}