diff --git a/src/services/api/errors.ts b/src/services/api/errors.ts index 5c6fd0d79..33ed253ed 100644 --- a/src/services/api/errors.ts +++ b/src/services/api/errors.ts @@ -916,7 +916,7 @@ export function getAssistantMessageFromError( // Connection errors (non-timeout) — use formatAPIError for detailed messages if (error instanceof APIConnectionError) { return createAssistantAPIErrorMessage({ - content: `${API_ERROR_MESSAGE_PREFIX}: ${formatAPIError(error)}`, + content: `${API_ERROR_MESSAGE_PREFIX}: ${formatAPIError(error as unknown as Parameters[0])}`, error: 'unknown', }) } diff --git a/src/services/rawDump/logger.ts b/src/services/rawDump/logger.ts index c72c65003..ec789f918 100644 --- a/src/services/rawDump/logger.ts +++ b/src/services/rawDump/logger.ts @@ -30,10 +30,21 @@ export function createLogger(prefix: string) { } } - return { - debug: (msg: string, meta?: Record) => write('debug', msg, meta), - info: (msg: string, meta?: Record) => write('info', msg, meta), - warn: (msg: string, meta?: Record) => write('warn', msg, meta), - error: (msg: string, meta?: Record) => write('error', msg, meta), - } + type LogFn = (level: string, msg: string, meta?: Record) => void + const log: LogFn & { + debug: (msg: string, meta?: Record) => void + info: (msg: string, meta?: Record) => void + warn: (msg: string, meta?: Record) => void + error: (msg: string, meta?: Record) => void + } = Object.assign( + (level: string, msg: string, meta?: Record) => write(level, msg, meta), + { + debug: (msg: string, meta?: Record) => write('debug', msg, meta), + info: (msg: string, meta?: Record) => write('info', msg, meta), + warn: (msg: string, meta?: Record) => write('warn', msg, meta), + error: (msg: string, meta?: Record) => write('error', msg, meta), + }, + ) + + return log } diff --git a/src/services/rawDump/worker.ts b/src/services/rawDump/worker.ts index be7c25f35..dfeca8d9e 100644 --- a/src/services/rawDump/worker.ts +++ b/src/services/rawDump/worker.ts @@ -412,7 +412,7 @@ export async function uploadConversation( } log('debug', 'sending conversation request', { task_id: payload.sessionID, request_id: requestID, bodyKeys: Object.keys(body) }) - await postJson(authData.baseUrl, authData.headers, '/raw-store/task-conversation', body) + await postJson(authData.baseUrl, authData.headers, '/raw-store/task-conversation', body as unknown as Record) state.conversation[key] = true log('info', 'conversation uploaded', { task_id: payload.sessionID, request_id: requestID, upstream_tokens: body.upstream_tokens, downstream_tokens: body.downstream_tokens }) return true @@ -433,13 +433,13 @@ export async function uploadSummary( const assistants = payload.messages.filter((m) => m.type === 'assistant') const { upstream_tokens, downstream_tokens } = assistants.reduce( - (acc, m) => { + (acc: { upstream_tokens: number; downstream_tokens: number }, m) => { const usage = extractUsage(m) acc.upstream_tokens += usage.input_tokens + usage.cache_read_input_tokens + usage.cache_creation_input_tokens acc.downstream_tokens += usage.output_tokens return acc }, - { upstream_tokens: 0, downstream_tokens: 0 }, + { upstream_tokens: 0, downstream_tokens: 0 } as { upstream_tokens: number; downstream_tokens: number }, ) const firstMsg = payload.messages[0] @@ -467,7 +467,7 @@ export async function uploadSummary( files: rawDiff ? extractFilesFromDiff(rawDiff) : [], } - await postJson(authData.baseUrl, authData.headers, '/raw-store/task-summary', body) + await postJson(authData.baseUrl, authData.headers, '/raw-store/task-summary', body as unknown as Record) log('info', 'summary uploaded', { task_id: payload.sessionID, upstream_tokens: body.upstream_tokens, downstream_tokens: body.downstream_tokens, diff_lines: body.diff_lines }) } @@ -525,7 +525,7 @@ export async function uploadCommits( comment: toCommitComment(commit.subject), subject: commit.subject, } - await postJson(authData.baseUrl, authData.headers, '/raw-store/commit', body) + await postJson(authData.baseUrl, authData.headers, '/raw-store/commit', body as unknown as Record) // 每成功一个 commit 立即更新 state,避免失败后全部重传 state.commits[stateKey] = commit.commit_id log('info', 'commit uploaded', { commit_id: commit.commit_id, progress: `${i + 1}/${commits.length}` }) diff --git a/src/utils/sideQueryOpenAICompat.ts b/src/utils/sideQueryOpenAICompat.ts index bab76b547..9dd5bafc1 100644 --- a/src/utils/sideQueryOpenAICompat.ts +++ b/src/utils/sideQueryOpenAICompat.ts @@ -5,6 +5,7 @@ */ import type OpenAI from 'openai' +import type { ChatCompletionMessageFunctionToolCall } from 'openai/resources/chat/completions/completions.js' import type { BetaMessage } from '@anthropic-ai/sdk/resources/beta/messages.js' import type { SideQueryOptions } from './sideQuery.js' import { logEvent } from '../services/analytics/index.js' @@ -98,18 +99,19 @@ export async function sideQueryOpenAICompat( const content: BetaMessage['content'] = [] if (choice?.message?.content) { - content.push({ type: 'text', text: choice.message.content }) + content.push({ type: 'text', text: choice.message.content, citations: null }) } if (choice?.message?.tool_calls) { for (const tc of choice.message.tool_calls) { + const funcTc = tc as ChatCompletionMessageFunctionToolCall let input: Record = {} try { - input = JSON.parse(tc.function.arguments) as Record + input = JSON.parse(funcTc.function.arguments) as Record } catch { // leave input empty on parse failure } - content.push({ type: 'tool_use', id: tc.id, name: tc.function.name, input }) + content.push({ type: 'tool_use', id: tc.id, name: funcTc.function.name, input }) } }