feat: 全部类型问题解决

This commit is contained in:
claude-code-best
2026-04-11 10:24:00 +08:00
parent 7088fe3c8b
commit 6a70056910
135 changed files with 671 additions and 503 deletions

View File

@@ -169,11 +169,11 @@ export function estimateMessageTokens(messages: Message[]): number {
continue
}
if (!Array.isArray(message.message.content)) {
if (!Array.isArray(message.message!.content)) {
continue
}
for (const block of message.message.content) {
for (const block of message.message!.content) {
if (block.type === 'text') {
totalTokens += roughTokenCountEstimation(block.text)
} else if (block.type === 'tool_result') {
@@ -228,9 +228,9 @@ function collectCompactableToolIds(messages: Message[]): string[] {
for (const message of messages) {
if (
message.type === 'assistant' &&
Array.isArray(message.message.content)
Array.isArray(message.message!.content)
) {
for (const block of message.message.content) {
for (const block of message.message!.content) {
if (block.type === 'tool_use' && COMPACTABLE_TOOLS.has(block.name)) {
ids.push(block.id)
}
@@ -313,9 +313,9 @@ async function cachedMicrocompactPath(
const compactableToolIds = new Set(collectCompactableToolIds(messages))
// Second pass: register tool results grouped by user message
for (const message of messages) {
if (message.type === 'user' && Array.isArray(message.message.content)) {
if (message.type === 'user' && Array.isArray(message.message!.content)) {
const groupIds: string[] = []
for (const block of message.message.content) {
for (const block of message.message!.content) {
if (
block.type === 'tool_result' &&
compactableToolIds.has(block.tool_use_id) &&
@@ -375,7 +375,7 @@ async function cachedMicrocompactPath(
const baseline =
lastAsst?.type === 'assistant'
? ((
lastAsst.message.usage as unknown as Record<
lastAsst.message!.usage as unknown as Record<
string,
number | undefined
>
@@ -468,11 +468,11 @@ function maybeTimeBasedMicrocompact(
let tokensSaved = 0
const result: Message[] = messages.map(message => {
if (message.type !== 'user' || !Array.isArray(message.message.content)) {
if (message.type !== 'user' || !Array.isArray(message.message!.content)) {
return message
}
let touched = false
const newContent = message.message.content.map(block => {
const newContent = message.message!.content.map(block => {
if (
block.type === 'tool_result' &&
clearSet.has(block.tool_use_id) &&