mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 08:15:53 +00:00
feat: 大规模清理 claude 的类型问题及依赖
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
import type { BetaUsage as Usage } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs'
|
||||
import { roughTokenCountEstimationForMessages } from '../services/tokenEstimation.js'
|
||||
import type { AssistantMessage, Message } from '../types/message.js'
|
||||
import type { AssistantMessage, ContentItem, Message } from '../types/message.js'
|
||||
import { SYNTHETIC_MESSAGES, SYNTHETIC_MODEL } from './messages.js'
|
||||
import { jsonStringify } from './slowOperations.js'
|
||||
|
||||
export function getTokenUsage(message: Message): Usage | undefined {
|
||||
if (
|
||||
message?.type === 'assistant' &&
|
||||
message.message &&
|
||||
'usage' in message.message &&
|
||||
!(
|
||||
message.message.content[0]?.type === 'text' &&
|
||||
SYNTHETIC_MESSAGES.has(message.message.content[0].text)
|
||||
Array.isArray(message.message.content) &&
|
||||
(message.message.content as ContentItem[])[0]?.type === 'text' &&
|
||||
SYNTHETIC_MESSAGES.has((message.message.content as Array<ContentItem & { text: string }>)[0]!.text)
|
||||
) &&
|
||||
message.message.model !== SYNTHETIC_MODEL
|
||||
) {
|
||||
return message.message.usage
|
||||
return message.message.usage as Usage
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
@@ -184,15 +186,17 @@ export function getAssistantMessageContentLength(
|
||||
message: AssistantMessage,
|
||||
): number {
|
||||
let contentLength = 0
|
||||
for (const block of message.message.content) {
|
||||
const content = message.message?.content
|
||||
if (!Array.isArray(content)) return contentLength
|
||||
for (const block of content as ContentItem[]) {
|
||||
if (block.type === 'text') {
|
||||
contentLength += block.text.length
|
||||
contentLength += (block as ContentItem & { text: string }).text.length
|
||||
} else if (block.type === 'thinking') {
|
||||
contentLength += block.thinking.length
|
||||
contentLength += (block as ContentItem & { thinking: string }).thinking.length
|
||||
} else if (block.type === 'redacted_thinking') {
|
||||
contentLength += block.data.length
|
||||
contentLength += (block as ContentItem & { data: string }).data.length
|
||||
} else if (block.type === 'tool_use') {
|
||||
contentLength += jsonStringify(block.input).length
|
||||
contentLength += jsonStringify((block as ContentItem & { input: unknown }).input).length
|
||||
}
|
||||
}
|
||||
return contentLength
|
||||
@@ -252,10 +256,10 @@ export function tokenCountWithEstimation(messages: readonly Message[]): number {
|
||||
}
|
||||
return (
|
||||
getTokenCountFromUsage(usage) +
|
||||
roughTokenCountEstimationForMessages(messages.slice(i + 1))
|
||||
roughTokenCountEstimationForMessages(messages.slice(i + 1) as Parameters<typeof roughTokenCountEstimationForMessages>[0])
|
||||
)
|
||||
}
|
||||
i--
|
||||
}
|
||||
return roughTokenCountEstimationForMessages(messages)
|
||||
return roughTokenCountEstimationForMessages(messages as Parameters<typeof roughTokenCountEstimationForMessages>[0])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user