Files
ChatLab/apps/cli/src/ai/cross-chat-tool-adapter.ts
T
digua f9ba12e535 fix(ai): harden cross-chat analysis results
Resolve private ranking display names, apply privacy preprocessing consistently across cached recaps and structural labels, and bound model-visible overview payloads to the configured tool budget.
2026-08-24 00:25:35 +08:00

47 lines
1.6 KiB
TypeScript

import type {
AgentTool,
CrossChatAnalysisService,
PreprocessConfig,
SessionRuntimeAdapter,
} from '@openchatlab/node-runtime'
import {
countTokens,
preprocessCrossChatLabel,
preprocessCrossChatMessages,
preprocessCrossChatSummaries,
} from '@openchatlab/node-runtime'
import { createCrossChatAgentToolAdapters, type CrossChatToolExecutionContext } from '@openchatlab/tools'
export function createCliCrossChatTools(options: {
analysisService: CrossChatAnalysisService
sessionAdapter: SessionRuntimeAdapter
locale?: string
preprocessConfig?: Record<string, unknown>
maxToolResultTokens: number
}): AgentTool<any, any>[] {
const context: Omit<CrossChatToolExecutionContext, 'abortSignal' | 'reportProgress'> = {
locale: options.locale,
analysisService: options.analysisService,
maxToolResultTokens: options.maxToolResultTokens,
countTokens,
preprocessMessagesBySession: (sessionId, messages) =>
preprocessCrossChatMessages(
options.sessionAdapter,
sessionId,
messages,
options.preprocessConfig as PreprocessConfig | undefined
),
preprocessSummariesBySession: (sessionId, summaries) =>
preprocessCrossChatSummaries(
options.sessionAdapter,
sessionId,
summaries,
options.preprocessConfig as PreprocessConfig | undefined
),
preprocessModelLabel: (value, pseudonym) =>
preprocessCrossChatLabel(value, pseudonym, options.preprocessConfig as PreprocessConfig | undefined),
}
return createCrossChatAgentToolAdapters(context) as AgentTool<any, any>[]
}