@agenticc/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/README.zh-CN.md +372 -0
- package/dist/audit/index.d.ts +9 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +9 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/logger.d.ts +211 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +268 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/query.d.ts +164 -0
- package/dist/audit/query.d.ts.map +1 -0
- package/dist/audit/query.js +250 -0
- package/dist/audit/query.js.map +1 -0
- package/dist/conversation/context-builder.d.ts +119 -0
- package/dist/conversation/context-builder.d.ts.map +1 -0
- package/dist/conversation/context-builder.js +252 -0
- package/dist/conversation/context-builder.js.map +1 -0
- package/dist/conversation/index.d.ts +10 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +10 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/message-store.d.ts +231 -0
- package/dist/conversation/message-store.d.ts.map +1 -0
- package/dist/conversation/message-store.js +404 -0
- package/dist/conversation/message-store.js.map +1 -0
- package/dist/conversation/session.d.ts +201 -0
- package/dist/conversation/session.d.ts.map +1 -0
- package/dist/conversation/session.js +285 -0
- package/dist/conversation/session.js.map +1 -0
- package/dist/core/agent.d.ts +277 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +674 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentic-loop.d.ts +98 -0
- package/dist/core/agentic-loop.d.ts.map +1 -0
- package/dist/core/agentic-loop.js +496 -0
- package/dist/core/agentic-loop.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/intent-parser.d.ts +101 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/intent-parser.js +221 -0
- package/dist/core/intent-parser.js.map +1 -0
- package/dist/core/plan-generator.d.ts +133 -0
- package/dist/core/plan-generator.d.ts.map +1 -0
- package/dist/core/plan-generator.js +294 -0
- package/dist/core/plan-generator.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +120 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +369 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/response-handler.d.ts +141 -0
- package/dist/core/response-handler.d.ts.map +1 -0
- package/dist/core/response-handler.js +384 -0
- package/dist/core/response-handler.js.map +1 -0
- package/dist/core/tool-executor.d.ts +143 -0
- package/dist/core/tool-executor.d.ts.map +1 -0
- package/dist/core/tool-executor.js +354 -0
- package/dist/core/tool-executor.js.map +1 -0
- package/dist/core/tool-registry.d.ts +133 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +252 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/chunker.d.ts +78 -0
- package/dist/knowledge/chunker.d.ts.map +1 -0
- package/dist/knowledge/chunker.js +233 -0
- package/dist/knowledge/chunker.js.map +1 -0
- package/dist/knowledge/embedder.d.ts +93 -0
- package/dist/knowledge/embedder.d.ts.map +1 -0
- package/dist/knowledge/embedder.js +205 -0
- package/dist/knowledge/embedder.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +11 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/loaders/index.d.ts +10 -0
- package/dist/knowledge/loaders/index.d.ts.map +1 -0
- package/dist/knowledge/loaders/index.js +10 -0
- package/dist/knowledge/loaders/index.js.map +1 -0
- package/dist/knowledge/loaders/markdown.d.ts +88 -0
- package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
- package/dist/knowledge/loaders/markdown.js +205 -0
- package/dist/knowledge/loaders/markdown.js.map +1 -0
- package/dist/knowledge/loaders/yaml.d.ts +112 -0
- package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
- package/dist/knowledge/loaders/yaml.js +368 -0
- package/dist/knowledge/loaders/yaml.js.map +1 -0
- package/dist/knowledge/retriever.d.ts +144 -0
- package/dist/knowledge/retriever.d.ts.map +1 -0
- package/dist/knowledge/retriever.js +399 -0
- package/dist/knowledge/retriever.js.map +1 -0
- package/dist/knowledge/store.d.ts +146 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +420 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/llm/adapter.d.ts +194 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +42 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/adapters/anyrouter.d.ts +84 -0
- package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
- package/dist/llm/adapters/anyrouter.js +372 -0
- package/dist/llm/adapters/anyrouter.js.map +1 -0
- package/dist/llm/adapters/claude.d.ts +66 -0
- package/dist/llm/adapters/claude.d.ts.map +1 -0
- package/dist/llm/adapters/claude.js +323 -0
- package/dist/llm/adapters/claude.js.map +1 -0
- package/dist/llm/adapters/index.d.ts +12 -0
- package/dist/llm/adapters/index.d.ts.map +1 -0
- package/dist/llm/adapters/index.js +12 -0
- package/dist/llm/adapters/index.js.map +1 -0
- package/dist/llm/adapters/mimo.d.ts +85 -0
- package/dist/llm/adapters/mimo.d.ts.map +1 -0
- package/dist/llm/adapters/mimo.js +316 -0
- package/dist/llm/adapters/mimo.js.map +1 -0
- package/dist/llm/adapters/openai.d.ts +53 -0
- package/dist/llm/adapters/openai.d.ts.map +1 -0
- package/dist/llm/adapters/openai.js +293 -0
- package/dist/llm/adapters/openai.js.map +1 -0
- package/dist/llm/adapters/qwen.d.ts +53 -0
- package/dist/llm/adapters/qwen.d.ts.map +1 -0
- package/dist/llm/adapters/qwen.js +299 -0
- package/dist/llm/adapters/qwen.js.map +1 -0
- package/dist/llm/adapters/siliconflow.d.ts +69 -0
- package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
- package/dist/llm/adapters/siliconflow.js +331 -0
- package/dist/llm/adapters/siliconflow.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +12 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/manager.d.ts +97 -0
- package/dist/llm/manager.d.ts.map +1 -0
- package/dist/llm/manager.js +337 -0
- package/dist/llm/manager.js.map +1 -0
- package/dist/test-utils/arbitraries.d.ts +230 -0
- package/dist/test-utils/arbitraries.d.ts.map +1 -0
- package/dist/test-utils/arbitraries.js +280 -0
- package/dist/test-utils/arbitraries.js.map +1 -0
- package/dist/test-utils/cleanup.d.ts +184 -0
- package/dist/test-utils/cleanup.d.ts.map +1 -0
- package/dist/test-utils/cleanup.js +282 -0
- package/dist/test-utils/cleanup.js.map +1 -0
- package/dist/test-utils/config.d.ts +80 -0
- package/dist/test-utils/config.d.ts.map +1 -0
- package/dist/test-utils/config.js +94 -0
- package/dist/test-utils/config.js.map +1 -0
- package/dist/test-utils/index.d.ts +10 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +36 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/mocks.d.ts +170 -0
- package/dist/test-utils/mocks.d.ts.map +1 -0
- package/dist/test-utils/mocks.js +281 -0
- package/dist/test-utils/mocks.js.map +1 -0
- package/dist/types/config.d.ts +170 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +120 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/knowledge.d.ts +95 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +7 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/loop.d.ts +148 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/loop.js +16 -0
- package/dist/types/loop.js.map +1 -0
- package/dist/types/plugin.d.ts +137 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +15 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/response.d.ts +186 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +99 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/streaming.d.ts +478 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +483 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tool.d.ts +118 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +42 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/error.d.ts +22 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +36 -0
- package/dist/utils/error.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 类型安全的 Mock 工厂函数
|
|
3
|
+
*
|
|
4
|
+
* 提供统一的 Mock 创建方法,确保类型安全和一致性
|
|
5
|
+
*/
|
|
6
|
+
import type { LLMManager } from '../llm/manager.js';
|
|
7
|
+
import type { Tool, ToolResult, ToolContext, ToolParameterType } from '../types/tool.js';
|
|
8
|
+
import type { PluginContext, AgentPlugin } from '../types/plugin.js';
|
|
9
|
+
import type { AgentConfig } from '../types/config.js';
|
|
10
|
+
/**
|
|
11
|
+
* LLM 响应类型
|
|
12
|
+
*/
|
|
13
|
+
export interface MockLLMResponse {
|
|
14
|
+
content: string;
|
|
15
|
+
toolCalls?: Array<{
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
arguments: Record<string, unknown>;
|
|
19
|
+
}>;
|
|
20
|
+
finishReason?: 'stop' | 'tool_calls' | 'length' | 'content_filter';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Mock Tool 选项
|
|
24
|
+
*/
|
|
25
|
+
export interface MockToolOptions {
|
|
26
|
+
/** 工具执行结果 */
|
|
27
|
+
result?: ToolResult;
|
|
28
|
+
/** 是否需要确认 */
|
|
29
|
+
requiresConfirmation?: boolean;
|
|
30
|
+
/** 风险级别 */
|
|
31
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
32
|
+
/** 工具分类 */
|
|
33
|
+
category?: string;
|
|
34
|
+
/** 执行时抛出的错误 */
|
|
35
|
+
shouldThrow?: Error;
|
|
36
|
+
/** 工具参数定义 */
|
|
37
|
+
parameters?: Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
type: ToolParameterType;
|
|
40
|
+
description: string;
|
|
41
|
+
required: boolean;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Mock Plugin 选项
|
|
46
|
+
*/
|
|
47
|
+
export interface MockPluginOptions {
|
|
48
|
+
/** 命名空间 */
|
|
49
|
+
namespace?: string;
|
|
50
|
+
/** 版本号 */
|
|
51
|
+
version?: string;
|
|
52
|
+
/** 加载钩子 */
|
|
53
|
+
onLoad?: () => Promise<void>;
|
|
54
|
+
/** 卸载钩子 */
|
|
55
|
+
onUnload?: () => Promise<void>;
|
|
56
|
+
/** 健康检查 */
|
|
57
|
+
healthCheck?: () => Promise<boolean>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* LLM Manager Mock 类型(部分接口)
|
|
61
|
+
*/
|
|
62
|
+
export type MockLLMManagerType = Pick<LLMManager, 'generateWithTools' | 'generate' | 'supportsEmbeddings' | 'getLLMForTask' | 'embed'>;
|
|
63
|
+
/**
|
|
64
|
+
* 创建类型安全的 LLM Manager Mock
|
|
65
|
+
*
|
|
66
|
+
* @param responses - 预定义的响应序列
|
|
67
|
+
* @returns Mock LLM Manager
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const llm = createMockLLMManager([
|
|
72
|
+
* { content: 'First response' },
|
|
73
|
+
* { content: 'Second response', toolCalls: [...] },
|
|
74
|
+
* ]);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function createMockLLMManager(responses: MockLLMResponse[]): MockLLMManagerType;
|
|
78
|
+
/**
|
|
79
|
+
* 创建可重置的 LLM Manager Mock
|
|
80
|
+
*
|
|
81
|
+
* @param responses - 预定义的响应序列
|
|
82
|
+
* @returns 带 reset 方法的 Mock LLM Manager
|
|
83
|
+
*/
|
|
84
|
+
export declare function createResettableMockLLMManager(responses: MockLLMResponse[]): MockLLMManagerType & {
|
|
85
|
+
reset: () => void;
|
|
86
|
+
getCallCount: () => number;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* 创建 Mock Tool
|
|
90
|
+
*
|
|
91
|
+
* @param name - 工具名称
|
|
92
|
+
* @param options - 工具选项
|
|
93
|
+
* @returns Mock Tool
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const tool = createMockTool('my_tool', {
|
|
98
|
+
* requiresConfirmation: true,
|
|
99
|
+
* riskLevel: 'high',
|
|
100
|
+
* });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare function createMockTool(name: string, options?: MockToolOptions): Tool;
|
|
104
|
+
/**
|
|
105
|
+
* 创建带参数的 Mock Tool
|
|
106
|
+
*
|
|
107
|
+
* @param name - 工具名称
|
|
108
|
+
* @param params - 参数名列表
|
|
109
|
+
* @param options - 其他选项
|
|
110
|
+
* @returns Mock Tool
|
|
111
|
+
*/
|
|
112
|
+
export declare function createMockToolWithParams(name: string, params: string[], options?: Omit<MockToolOptions, 'parameters'>): Tool;
|
|
113
|
+
/**
|
|
114
|
+
* 创建 Mock Plugin Context
|
|
115
|
+
*
|
|
116
|
+
* @param overrides - 覆盖的属性
|
|
117
|
+
* @returns Mock Plugin Context
|
|
118
|
+
*/
|
|
119
|
+
export declare function createMockPluginContext(overrides?: Partial<PluginContext>): PluginContext;
|
|
120
|
+
/**
|
|
121
|
+
* 创建 Mock Tool Context
|
|
122
|
+
*
|
|
123
|
+
* @param overrides - 覆盖的属性
|
|
124
|
+
* @returns Mock Tool Context
|
|
125
|
+
*/
|
|
126
|
+
export declare function createMockToolContext(overrides?: Partial<ToolContext>): ToolContext;
|
|
127
|
+
/**
|
|
128
|
+
* 创建 Mock Plugin
|
|
129
|
+
*
|
|
130
|
+
* @param name - 插件名称
|
|
131
|
+
* @param tools - 工具列表
|
|
132
|
+
* @param options - 插件选项
|
|
133
|
+
* @returns Mock Plugin
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const plugin = createMockPlugin('my-plugin', [tool1, tool2], {
|
|
138
|
+
* namespace: 'myns',
|
|
139
|
+
* });
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function createMockPlugin(name: string, tools: Tool[], options?: MockPluginOptions): AgentPlugin;
|
|
143
|
+
/**
|
|
144
|
+
* 创建测试用 Agent 配置
|
|
145
|
+
*
|
|
146
|
+
* @param overrides - 覆盖的配置
|
|
147
|
+
* @returns Agent 配置
|
|
148
|
+
*/
|
|
149
|
+
export declare function createTestAgentConfig(overrides?: Partial<AgentConfig>): AgentConfig;
|
|
150
|
+
/**
|
|
151
|
+
* 创建带确认机制的测试配置
|
|
152
|
+
*/
|
|
153
|
+
export declare function createTestAgentConfigWithConfirmation(): AgentConfig;
|
|
154
|
+
/**
|
|
155
|
+
* 创建一系列工具调用响应
|
|
156
|
+
*
|
|
157
|
+
* @param toolName - 工具名称
|
|
158
|
+
* @param count - 调用次数
|
|
159
|
+
* @returns 响应数组
|
|
160
|
+
*/
|
|
161
|
+
export declare function createToolCallResponses(toolName: string, count: number): MockLLMResponse[];
|
|
162
|
+
/**
|
|
163
|
+
* 创建无限工具调用响应(用于测试 maxIterations)
|
|
164
|
+
*
|
|
165
|
+
* @param toolName - 工具名称
|
|
166
|
+
* @param maxResponses - 最大响应数
|
|
167
|
+
* @returns 响应数组
|
|
168
|
+
*/
|
|
169
|
+
export declare function createInfiniteToolCallResponses(toolName: string, maxResponses?: number): MockLLMResponse[];
|
|
170
|
+
//# sourceMappingURL=mocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/test-utils/mocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 类型安全的 Mock 工厂函数
|
|
3
|
+
*
|
|
4
|
+
* 提供统一的 Mock 创建方法,确保类型安全和一致性
|
|
5
|
+
*/
|
|
6
|
+
import { vi } from 'vitest';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Mock Factories
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* 创建类型安全的 LLM Manager Mock
|
|
12
|
+
*
|
|
13
|
+
* @param responses - 预定义的响应序列
|
|
14
|
+
* @returns Mock LLM Manager
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const llm = createMockLLMManager([
|
|
19
|
+
* { content: 'First response' },
|
|
20
|
+
* { content: 'Second response', toolCalls: [...] },
|
|
21
|
+
* ]);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export function createMockLLMManager(responses) {
|
|
25
|
+
let callIndex = 0;
|
|
26
|
+
const getNextResponse = () => {
|
|
27
|
+
const response = responses[callIndex] || responses[responses.length - 1];
|
|
28
|
+
callIndex++;
|
|
29
|
+
return {
|
|
30
|
+
...response,
|
|
31
|
+
finishReason: response.finishReason ?? (response.toolCalls ? 'tool_calls' : 'stop'),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
generateWithTools: vi.fn(async () => getNextResponse()),
|
|
36
|
+
generate: vi.fn(async () => getNextResponse().content),
|
|
37
|
+
supportsEmbeddings: vi.fn().mockReturnValue(false),
|
|
38
|
+
getLLMForTask: vi.fn(),
|
|
39
|
+
embed: vi.fn(async (text) => ({
|
|
40
|
+
embedding: new Array(1536).fill(0).map(() => Math.random()),
|
|
41
|
+
tokenCount: text.split(/\s+/).length,
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 创建可重置的 LLM Manager Mock
|
|
47
|
+
*
|
|
48
|
+
* @param responses - 预定义的响应序列
|
|
49
|
+
* @returns 带 reset 方法的 Mock LLM Manager
|
|
50
|
+
*/
|
|
51
|
+
export function createResettableMockLLMManager(responses) {
|
|
52
|
+
let callIndex = 0;
|
|
53
|
+
const getNextResponse = () => {
|
|
54
|
+
const response = responses[callIndex] || responses[responses.length - 1];
|
|
55
|
+
callIndex++;
|
|
56
|
+
return {
|
|
57
|
+
...response,
|
|
58
|
+
finishReason: response.finishReason ?? (response.toolCalls ? 'tool_calls' : 'stop'),
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const mock = {
|
|
62
|
+
generateWithTools: vi.fn(async () => getNextResponse()),
|
|
63
|
+
generate: vi.fn(async () => getNextResponse().content),
|
|
64
|
+
supportsEmbeddings: vi.fn().mockReturnValue(false),
|
|
65
|
+
getLLMForTask: vi.fn(),
|
|
66
|
+
embed: vi.fn(async (text) => ({
|
|
67
|
+
embedding: new Array(1536).fill(0).map(() => Math.random()),
|
|
68
|
+
tokenCount: text.split(/\s+/).length,
|
|
69
|
+
})),
|
|
70
|
+
reset: () => {
|
|
71
|
+
callIndex = 0;
|
|
72
|
+
vi.clearAllMocks();
|
|
73
|
+
},
|
|
74
|
+
getCallCount: () => callIndex,
|
|
75
|
+
};
|
|
76
|
+
return mock;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 创建 Mock Tool
|
|
80
|
+
*
|
|
81
|
+
* @param name - 工具名称
|
|
82
|
+
* @param options - 工具选项
|
|
83
|
+
* @returns Mock Tool
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const tool = createMockTool('my_tool', {
|
|
88
|
+
* requiresConfirmation: true,
|
|
89
|
+
* riskLevel: 'high',
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export function createMockTool(name, options = {}) {
|
|
94
|
+
const defaultResult = { success: true, content: 'Done' };
|
|
95
|
+
return {
|
|
96
|
+
name,
|
|
97
|
+
description: `Mock tool: ${name}`,
|
|
98
|
+
parameters: options.parameters ?? [],
|
|
99
|
+
category: options.category,
|
|
100
|
+
requiresConfirmation: options.requiresConfirmation,
|
|
101
|
+
riskLevel: options.riskLevel,
|
|
102
|
+
execute: vi.fn(async () => {
|
|
103
|
+
if (options.shouldThrow) {
|
|
104
|
+
throw options.shouldThrow;
|
|
105
|
+
}
|
|
106
|
+
return options.result ?? defaultResult;
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 创建带参数的 Mock Tool
|
|
112
|
+
*
|
|
113
|
+
* @param name - 工具名称
|
|
114
|
+
* @param params - 参数名列表
|
|
115
|
+
* @param options - 其他选项
|
|
116
|
+
* @returns Mock Tool
|
|
117
|
+
*/
|
|
118
|
+
export function createMockToolWithParams(name, params, options = {}) {
|
|
119
|
+
return createMockTool(name, {
|
|
120
|
+
...options,
|
|
121
|
+
parameters: params.map((p) => ({
|
|
122
|
+
name: p,
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: `Parameter: ${p}`,
|
|
125
|
+
required: true,
|
|
126
|
+
})),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 创建 Mock Plugin Context
|
|
131
|
+
*
|
|
132
|
+
* @param overrides - 覆盖的属性
|
|
133
|
+
* @returns Mock Plugin Context
|
|
134
|
+
*/
|
|
135
|
+
export function createMockPluginContext(overrides) {
|
|
136
|
+
return {
|
|
137
|
+
logger: {
|
|
138
|
+
info: vi.fn(),
|
|
139
|
+
warn: vi.fn(),
|
|
140
|
+
error: vi.fn(),
|
|
141
|
+
debug: vi.fn(),
|
|
142
|
+
},
|
|
143
|
+
knowledgeBase: {},
|
|
144
|
+
config: { env: 'test', debug: false },
|
|
145
|
+
services: {},
|
|
146
|
+
...overrides,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 创建 Mock Tool Context
|
|
151
|
+
*
|
|
152
|
+
* @param overrides - 覆盖的属性
|
|
153
|
+
* @returns Mock Tool Context
|
|
154
|
+
*/
|
|
155
|
+
export function createMockToolContext(overrides) {
|
|
156
|
+
return {
|
|
157
|
+
knowledgeBase: {},
|
|
158
|
+
sessionId: `test-session-${Date.now()}`,
|
|
159
|
+
logger: {
|
|
160
|
+
info: vi.fn(),
|
|
161
|
+
warn: vi.fn(),
|
|
162
|
+
error: vi.fn(),
|
|
163
|
+
debug: vi.fn(),
|
|
164
|
+
},
|
|
165
|
+
...overrides,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* 创建 Mock Plugin
|
|
170
|
+
*
|
|
171
|
+
* @param name - 插件名称
|
|
172
|
+
* @param tools - 工具列表
|
|
173
|
+
* @param options - 插件选项
|
|
174
|
+
* @returns Mock Plugin
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const plugin = createMockPlugin('my-plugin', [tool1, tool2], {
|
|
179
|
+
* namespace: 'myns',
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export function createMockPlugin(name, tools, options = {}) {
|
|
184
|
+
return {
|
|
185
|
+
name,
|
|
186
|
+
version: options.version ?? '1.0.0',
|
|
187
|
+
description: `Mock plugin: ${name}`,
|
|
188
|
+
namespace: options.namespace,
|
|
189
|
+
tools,
|
|
190
|
+
onLoad: options.onLoad,
|
|
191
|
+
onUnload: options.onUnload,
|
|
192
|
+
healthCheck: options.healthCheck,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 创建测试用 Agent 配置
|
|
197
|
+
*
|
|
198
|
+
* @param overrides - 覆盖的配置
|
|
199
|
+
* @returns Agent 配置
|
|
200
|
+
*/
|
|
201
|
+
export function createTestAgentConfig(overrides) {
|
|
202
|
+
return {
|
|
203
|
+
llm: {
|
|
204
|
+
mode: 'single',
|
|
205
|
+
default: {
|
|
206
|
+
provider: 'openai',
|
|
207
|
+
apiKey: 'test-key',
|
|
208
|
+
model: 'gpt-4',
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
database: {
|
|
212
|
+
url: 'memory://',
|
|
213
|
+
},
|
|
214
|
+
behavior: {
|
|
215
|
+
requireConfirmation: false,
|
|
216
|
+
maxIterations: 5,
|
|
217
|
+
timeoutMs: 5000,
|
|
218
|
+
},
|
|
219
|
+
...overrides,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 创建带确认机制的测试配置
|
|
224
|
+
*/
|
|
225
|
+
export function createTestAgentConfigWithConfirmation() {
|
|
226
|
+
return createTestAgentConfig({
|
|
227
|
+
behavior: {
|
|
228
|
+
requireConfirmation: true,
|
|
229
|
+
maxIterations: 5,
|
|
230
|
+
timeoutMs: 5000,
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// ============================================================================
|
|
235
|
+
// Mock Helpers
|
|
236
|
+
// ============================================================================
|
|
237
|
+
/**
|
|
238
|
+
* 创建一系列工具调用响应
|
|
239
|
+
*
|
|
240
|
+
* @param toolName - 工具名称
|
|
241
|
+
* @param count - 调用次数
|
|
242
|
+
* @returns 响应数组
|
|
243
|
+
*/
|
|
244
|
+
export function createToolCallResponses(toolName, count) {
|
|
245
|
+
const responses = [];
|
|
246
|
+
for (let i = 0; i < count; i++) {
|
|
247
|
+
responses.push({
|
|
248
|
+
content: `Calling ${toolName} (${i + 1}/${count})`,
|
|
249
|
+
toolCalls: [
|
|
250
|
+
{
|
|
251
|
+
id: `call_${i}`,
|
|
252
|
+
name: toolName,
|
|
253
|
+
arguments: {},
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
// 最后一个响应不包含工具调用
|
|
259
|
+
responses.push({ content: 'Done!' });
|
|
260
|
+
return responses;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* 创建无限工具调用响应(用于测试 maxIterations)
|
|
264
|
+
*
|
|
265
|
+
* @param toolName - 工具名称
|
|
266
|
+
* @param maxResponses - 最大响应数
|
|
267
|
+
* @returns 响应数组
|
|
268
|
+
*/
|
|
269
|
+
export function createInfiniteToolCallResponses(toolName, maxResponses = 100) {
|
|
270
|
+
return Array(maxResponses).fill({
|
|
271
|
+
content: 'Need more work.',
|
|
272
|
+
toolCalls: [
|
|
273
|
+
{
|
|
274
|
+
id: 'call_x',
|
|
275
|
+
name: toolName,
|
|
276
|
+
arguments: {},
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=mocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/test-utils/mocks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAsE5B,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA4B;IAC/D,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzE,SAAS,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,QAAQ;YACX,YAAY,EACV,QAAQ,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,YAAsB,CAAC,CAAC,CAAE,MAAgB,CAAC;SAC9F,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;QACvD,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC;QACtD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;QAClD,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YACpC,SAAS,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3D,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;SACrC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAA4B;IACzE,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzE,SAAS,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,QAAQ;YACX,YAAY,EACV,QAAQ,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,YAAsB,CAAC,CAAC,CAAE,MAAgB,CAAC;SAC9F,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,GAA2E;QACnF,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;QACvD,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC;QACtD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;QAClD,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YACpC,SAAS,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3D,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;SACrC,CAAC,CAAC;QACH,KAAK,EAAE,GAAG,EAAE;YACV,SAAS,GAAG,CAAC,CAAC;YACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;KAC9B,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,UAA2B,EAAE;IACxE,MAAM,aAAa,GAAe,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAErE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,cAAc,IAAI,EAAE;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAyB,EAAE;YAC7C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,WAAW,CAAC;YAC5B,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;QACzC,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,MAAgB,EAChB,UAA+C,EAAE;IAEjD,OAAO,cAAc,CAAC,IAAI,EAAE;QAC1B,GAAG,OAAO;QACV,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc,CAAC,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAkC;IACxE,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf;QACD,aAAa,EAAE,EAAS;QACxB,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QACrC,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAgC;IACpE,OAAO;QACL,aAAa,EAAE,EAAS;QACxB,SAAS,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,KAAa,EACb,UAA6B,EAAE;IAE/B,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;QACnC,WAAW,EAAE,gBAAgB,IAAI,EAAE;QACnC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAgC;IACpE,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,OAAO;aACf;SACF;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,WAAW;SACjB;QACD,QAAQ,EAAE;YACR,mBAAmB,EAAE,KAAK;YAC1B,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,IAAI;SAChB;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,qBAAqB,CAAC;QAC3B,QAAQ,EAAE;YACR,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,KAAa;IACrE,MAAM,SAAS,GAAsB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,WAAW,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG;YAClD,SAAS,EAAE;gBACT;oBACE,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,EAAE;iBACd;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAErC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAAgB,EAChB,YAAY,GAAG,GAAG;IAElB,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,EAAE;aACd;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the configuration interfaces for the Agent, LLM providers,
|
|
5
|
+
* and other system components.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Supported LLM providers
|
|
9
|
+
*/
|
|
10
|
+
export type LLMProvider = 'openai' | 'claude' | 'qwen' | 'siliconflow' | 'mimo' | 'anyrouter' | 'custom';
|
|
11
|
+
/**
|
|
12
|
+
* LLM task types for multi-LLM routing
|
|
13
|
+
*/
|
|
14
|
+
export type LLMTask = 'intent_parsing' | 'knowledge_retrieval' | 'tool_calling' | 'response_generation';
|
|
15
|
+
/**
|
|
16
|
+
* All LLM task types as a constant array
|
|
17
|
+
*/
|
|
18
|
+
export declare const LLM_TASKS: LLMTask[];
|
|
19
|
+
/**
|
|
20
|
+
* Configuration for a single LLM provider
|
|
21
|
+
*/
|
|
22
|
+
export interface LLMProviderConfig {
|
|
23
|
+
/** LLM provider type */
|
|
24
|
+
provider: LLMProvider;
|
|
25
|
+
/** API key for authentication */
|
|
26
|
+
apiKey: string;
|
|
27
|
+
/** Model identifier (e.g., 'gpt-4', 'claude-3-opus') */
|
|
28
|
+
model: string;
|
|
29
|
+
/** Custom API endpoint (for custom providers or proxies) */
|
|
30
|
+
baseUrl?: string;
|
|
31
|
+
/** Temperature for response generation (0-2) */
|
|
32
|
+
temperature?: number;
|
|
33
|
+
/** Maximum tokens in response */
|
|
34
|
+
maxTokens?: number;
|
|
35
|
+
/** Additional provider-specific options */
|
|
36
|
+
options?: Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* LLM configuration supporting single or multi-LLM modes
|
|
40
|
+
*/
|
|
41
|
+
export interface LLMConfig {
|
|
42
|
+
/** Operating mode: single LLM for all tasks or multiple specialized LLMs */
|
|
43
|
+
mode: 'single' | 'multi';
|
|
44
|
+
/** Default LLM configuration (used for all tasks in single mode) */
|
|
45
|
+
default: LLMProviderConfig;
|
|
46
|
+
/** Task-specific LLM assignments (only used in multi mode) */
|
|
47
|
+
taskAssignment?: {
|
|
48
|
+
/** LLM for parsing user intent */
|
|
49
|
+
intentParsing?: LLMProviderConfig;
|
|
50
|
+
/** LLM for knowledge retrieval and embedding */
|
|
51
|
+
knowledgeRetrieval?: LLMProviderConfig;
|
|
52
|
+
/** LLM for tool calling decisions */
|
|
53
|
+
toolCalling?: LLMProviderConfig;
|
|
54
|
+
/** LLM for generating final responses */
|
|
55
|
+
responseGeneration?: LLMProviderConfig;
|
|
56
|
+
};
|
|
57
|
+
/** Fallback LLM if primary fails */
|
|
58
|
+
fallback?: LLMProviderConfig;
|
|
59
|
+
/** Retry configuration */
|
|
60
|
+
retry?: {
|
|
61
|
+
/** Maximum number of retries */
|
|
62
|
+
maxRetries: number;
|
|
63
|
+
/** Initial delay in milliseconds */
|
|
64
|
+
initialDelayMs: number;
|
|
65
|
+
/** Maximum delay in milliseconds */
|
|
66
|
+
maxDelayMs: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Database configuration (deprecated - storage is now external)
|
|
71
|
+
* @deprecated Storage is managed externally. Use @ai-agent/storage-memory or other storage packages.
|
|
72
|
+
*/
|
|
73
|
+
export interface DatabaseConfig {
|
|
74
|
+
/** Database connection URL */
|
|
75
|
+
url: string;
|
|
76
|
+
/** Connection pool size */
|
|
77
|
+
poolSize?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Knowledge system configuration
|
|
81
|
+
*/
|
|
82
|
+
export interface KnowledgeConfig {
|
|
83
|
+
/** Embedding model configuration */
|
|
84
|
+
embedding?: {
|
|
85
|
+
/** Model to use for embeddings */
|
|
86
|
+
model: string;
|
|
87
|
+
/** Embedding dimension (e.g., 1536 for OpenAI ada-002) */
|
|
88
|
+
dimension: number;
|
|
89
|
+
};
|
|
90
|
+
/** Search configuration */
|
|
91
|
+
search?: {
|
|
92
|
+
/** Default number of results to return */
|
|
93
|
+
defaultTopK: number;
|
|
94
|
+
/** Minimum similarity score threshold */
|
|
95
|
+
minScore: number;
|
|
96
|
+
/** Default search method */
|
|
97
|
+
defaultMethod: 'keyword' | 'semantic' | 'hybrid';
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Logging configuration
|
|
102
|
+
*/
|
|
103
|
+
export interface LoggingConfig {
|
|
104
|
+
/** Log level */
|
|
105
|
+
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
106
|
+
/** Custom logger implementation */
|
|
107
|
+
logger?: Logger;
|
|
108
|
+
/** Enable performance metrics collection */
|
|
109
|
+
enableMetrics?: boolean;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Logger interface for custom logging implementations
|
|
113
|
+
*/
|
|
114
|
+
export interface Logger {
|
|
115
|
+
debug(message: string, data?: Record<string, unknown>): void;
|
|
116
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
117
|
+
warn(message: string, data?: Record<string, unknown>): void;
|
|
118
|
+
error(message: string, data?: Record<string, unknown>): void;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Agent behavior configuration
|
|
122
|
+
*/
|
|
123
|
+
export interface BehaviorConfig {
|
|
124
|
+
/** Maximum processing time in milliseconds */
|
|
125
|
+
timeoutMs?: number;
|
|
126
|
+
/** Maximum number of tool call iterations */
|
|
127
|
+
maxIterations?: number;
|
|
128
|
+
/** Whether to require confirmation for high-risk operations */
|
|
129
|
+
requireConfirmation?: boolean;
|
|
130
|
+
/** Confidence threshold for automatic execution */
|
|
131
|
+
confidenceThreshold?: number;
|
|
132
|
+
/** System prompt customization */
|
|
133
|
+
systemPrompt?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Complete Agent configuration
|
|
137
|
+
*/
|
|
138
|
+
export interface AgentConfig {
|
|
139
|
+
/** LLM configuration */
|
|
140
|
+
llm: LLMConfig;
|
|
141
|
+
/** Database configuration (deprecated - use external storage) */
|
|
142
|
+
database?: DatabaseConfig;
|
|
143
|
+
/** Knowledge system configuration */
|
|
144
|
+
knowledge?: KnowledgeConfig;
|
|
145
|
+
/** Agent behavior configuration */
|
|
146
|
+
behavior?: BehaviorConfig;
|
|
147
|
+
/** Logging configuration */
|
|
148
|
+
logging?: LoggingConfig;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Default configuration values
|
|
152
|
+
*/
|
|
153
|
+
export declare const DEFAULT_CONFIG: Partial<AgentConfig>;
|
|
154
|
+
/**
|
|
155
|
+
* Validates an LLMProviderConfig
|
|
156
|
+
*/
|
|
157
|
+
export declare function validateLLMProviderConfig(config: LLMProviderConfig): string[];
|
|
158
|
+
/**
|
|
159
|
+
* Validates an LLMConfig
|
|
160
|
+
*/
|
|
161
|
+
export declare function validateLLMConfig(config: LLMConfig): string[];
|
|
162
|
+
/**
|
|
163
|
+
* Validates a complete AgentConfig
|
|
164
|
+
*/
|
|
165
|
+
export declare function validateAgentConfig(config: AgentConfig): string[];
|
|
166
|
+
/**
|
|
167
|
+
* Gets the LLM configuration for a specific task
|
|
168
|
+
*/
|
|
169
|
+
export declare function getLLMConfigForTask(config: LLMConfig, task: LLMTask): LLMProviderConfig;
|
|
170
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|