autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
115 lines (114 loc) • 3.47 kB
TypeScript
/**
* AgentRuntimeTypes — AgentRuntime 共享类型定义
*
* 从 AgentRuntime.ts 提取的接口和类型,
* 供 AgentRuntime、ToolExecutionPipeline、LarkTransport 及测试文件独立消费。
*
* @module AgentRuntimeTypes
*/
/** Tool call entry recorded during execution */
export interface ToolCallEntry {
tool: string;
name?: string;
args: Record<string, unknown>;
result: unknown;
durationMs: number;
}
/** LLM function call descriptor */
export interface FunctionCall {
id: string;
name: string;
args: Record<string, unknown>;
}
/** chatWithTools result from the AI provider */
export interface LLMResult {
type?: string;
text?: string | null;
functionCalls?: FunctionCall[] | null;
usage?: {
inputTokens?: number;
outputTokens?: number;
};
}
/** AI error with optional circuit breaker code */
export interface AiError extends Error {
code?: string;
}
/** Progress event emitted to listeners */
export interface ProgressEvent {
type: string;
agentId: string;
preset: string;
timestamp: number;
[key: string]: unknown;
}
/** Tool execution pipeline metadata */
export interface ToolMetadata {
cacheHit: boolean;
blocked: boolean;
isNew: boolean;
durationMs: number;
dedupMessage?: string;
isSubmit?: boolean;
}
/** File cache entry */
export interface FileCacheEntry {
relativePath: string;
content?: string;
name?: string;
}
export interface RuntimeConfig {
id?: string;
presetName?: string;
aiProvider: import('#external/ai/AiProvider.js').AiProvider;
toolRegistry: import('./tools/ToolRegistry.js').ToolRegistry;
container?: Record<string, unknown> | null;
capabilities?: import('./capabilities.js').Capability[];
strategy: import('./strategies.js').Strategy;
policies?: import('./policies.js').PolicyEngine;
persona?: Record<string, unknown>;
memory?: Record<string, unknown>;
onProgress?: ((event: ProgressEvent) => void) | null;
onToolCall?: ToolCallHook | null;
lang?: string | null;
projectRoot?: string;
additionalTools?: string[];
}
export type ToolCallHook = (name: string, args: Record<string, unknown>, result: unknown, iteration: number) => void;
export interface AgentResult {
reply: string;
toolCalls: ToolCallEntry[];
tokenUsage: {
input: number;
output: number;
};
iterations: number;
durationMs: number;
phases?: Record<string, unknown>;
state: Record<string, unknown>;
qualityWarning?: string;
[key: string]: unknown;
}
export interface ReactLoopOpts {
history?: Array<{
role: string;
content: string;
}>;
context?: Record<string, unknown>;
capabilityOverride?: string[];
budgetOverride?: Record<string, unknown>;
systemPromptOverride?: string;
onToolCall?: ToolCallHook | null;
contextWindow?: import('./context/ContextWindow.js').ContextWindow;
tracker?: Record<string, unknown>;
trace?: Record<string, unknown>;
memoryCoordinator?: Record<string, unknown>;
sharedState?: Record<string, unknown>;
source?: string;
toolChoiceOverride?: string | null;
/** 外部中止信号 — PipelineStrategy hard timeout 时取消进行中的 LLM 调用 */
abortSignal?: AbortSignal;
[key: string]: unknown;
}
/** 单次迭代允许的最大工具调用数 */
export declare const MAX_TOOL_CALLS_PER_ITER = 8;