@whwrm/react-agent 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/dist/agent.js ADDED
@@ -0,0 +1,337 @@
1
+ import { buildLLMRequest, parseLLMResponse, findProvider } from './providers.js';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { resolve } from 'path';
4
+ function estimateTokens(text) {
5
+ if (!text)
6
+ return 0;
7
+ const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
8
+ const otherChars = text.length - chineseChars;
9
+ const chineseTokens = Math.ceil(chineseChars / 1.5);
10
+ const otherTokens = Math.ceil(otherChars / 4);
11
+ return chineseTokens + otherTokens;
12
+ }
13
+ function estimateMessagesTokens(messages) {
14
+ let total = 0;
15
+ for (const msg of messages) {
16
+ total += 4;
17
+ if (typeof msg.content === 'string') {
18
+ total += estimateTokens(msg.content);
19
+ }
20
+ if (msg.tool_calls) {
21
+ for (const tc of msg.tool_calls) {
22
+ total += estimateTokens(tc.name);
23
+ total += estimateTokens(JSON.stringify(tc.arguments));
24
+ }
25
+ }
26
+ if (msg.name)
27
+ total += estimateTokens(msg.name);
28
+ if (msg.tool_call_id)
29
+ total += estimateTokens(msg.tool_call_id);
30
+ }
31
+ return total;
32
+ }
33
+ function estimateToolsTokens(tools) {
34
+ let total = 0;
35
+ for (const t of tools) {
36
+ total += estimateTokens(t.function.name);
37
+ total += estimateTokens(t.function.description);
38
+ if (t.function.parameters) {
39
+ total += estimateTokens(JSON.stringify(t.function.parameters));
40
+ }
41
+ }
42
+ return total;
43
+ }
44
+ export class ReactAgent {
45
+ config;
46
+ messages = [];
47
+ toolDefinitions = [];
48
+ skillDefinitions = [];
49
+ toolCallsCount = 0;
50
+ iterations = 0;
51
+ lastUsage = {};
52
+ constructor(config) {
53
+ this.config = {
54
+ maxIterations: 20,
55
+ contextWindowTokens: 128000,
56
+ ...config,
57
+ };
58
+ this.loadDefinitions();
59
+ }
60
+ loadDefinitions() {
61
+ if (this.config.tools?.definitionsFile) {
62
+ const file = resolve(this.config.tools.definitionsFile);
63
+ if (existsSync(file)) {
64
+ try {
65
+ const content = readFileSync(file, 'utf-8');
66
+ this.toolDefinitions = JSON.parse(content);
67
+ }
68
+ catch (e) {
69
+ console.warn(`Failed to load tools from ${file}:`, e);
70
+ }
71
+ }
72
+ }
73
+ else if (this.config.tools?.definitions) {
74
+ this.toolDefinitions = this.config.tools.definitions;
75
+ }
76
+ if (this.config.skills?.definitionsFile) {
77
+ const file = resolve(this.config.skills.definitionsFile);
78
+ if (existsSync(file)) {
79
+ try {
80
+ const content = readFileSync(file, 'utf-8');
81
+ this.skillDefinitions = JSON.parse(content);
82
+ }
83
+ catch (e) {
84
+ console.warn(`Failed to load skills from ${file}:`, e);
85
+ }
86
+ }
87
+ }
88
+ else if (this.config.skills?.definitions) {
89
+ this.skillDefinitions = this.config.skills.definitions;
90
+ }
91
+ }
92
+ async run(userMessage, callbacks) {
93
+ const result = await this.runFull(userMessage, callbacks);
94
+ return result.content;
95
+ }
96
+ async runFull(userMessage, callbacks) {
97
+ this.messages.push({ role: 'user', content: userMessage });
98
+ this.toolCallsCount = 0;
99
+ this.iterations = 0;
100
+ for (let i = 0; i < this.config.maxIterations; i++) {
101
+ this.iterations = i + 1;
102
+ try {
103
+ const messages = this.buildMessages();
104
+ callbacks?.onLLMCall?.(messages);
105
+ const response = await this.callLLM();
106
+ if (response.usage) {
107
+ this.lastUsage = {
108
+ promptTokens: response.usage.prompt_tokens,
109
+ completionTokens: response.usage.completion_tokens,
110
+ };
111
+ }
112
+ callbacks?.onLLMResponse?.(response);
113
+ if (response.tool_calls?.length) {
114
+ this.messages.push({
115
+ role: 'assistant',
116
+ content: response.content || '',
117
+ tool_calls: response.tool_calls,
118
+ });
119
+ for (const tc of response.tool_calls) {
120
+ this.toolCallsCount++;
121
+ callbacks?.onToolCall?.(tc.name, tc.arguments);
122
+ try {
123
+ const result = await this.executeTool(tc);
124
+ callbacks?.onToolResult?.(tc.name, result);
125
+ this.messages.push({
126
+ role: 'tool',
127
+ tool_call_id: tc.id,
128
+ name: tc.name,
129
+ content: result,
130
+ });
131
+ }
132
+ catch (e) {
133
+ const error = e instanceof Error ? e : new Error(String(e));
134
+ callbacks?.onError?.(error, `tool:${tc.name}`);
135
+ callbacks?.onToolResult?.(tc.name, `Error: ${error.message}`);
136
+ this.messages.push({
137
+ role: 'tool',
138
+ tool_call_id: tc.id,
139
+ name: tc.name,
140
+ content: `Error: ${error.message}`,
141
+ });
142
+ }
143
+ }
144
+ }
145
+ else {
146
+ this.messages.push({
147
+ role: 'assistant',
148
+ content: response.content || '',
149
+ });
150
+ return {
151
+ content: response.content || '',
152
+ toolCallsCount: this.toolCallsCount,
153
+ iterations: this.iterations,
154
+ };
155
+ }
156
+ }
157
+ catch (e) {
158
+ const error = e instanceof Error ? e : new Error(String(e));
159
+ callbacks?.onError?.(error, 'llm');
160
+ throw error;
161
+ }
162
+ }
163
+ const timeoutMsg = `达到最大循环次数 ${this.config.maxIterations}`;
164
+ callbacks?.onError?.(new Error(timeoutMsg), 'max_iterations');
165
+ return {
166
+ content: timeoutMsg,
167
+ toolCallsCount: this.toolCallsCount,
168
+ iterations: this.iterations,
169
+ };
170
+ }
171
+ async callLLM() {
172
+ const messages = this.buildMessages();
173
+ const tools = this.getToolDefinitions();
174
+ const { url, headers, body } = buildLLMRequest(this.config.llm, this.config.providers, messages, tools.length > 0 ? tools : undefined);
175
+ const res = await fetch(url, {
176
+ method: 'POST',
177
+ headers,
178
+ body: JSON.stringify(body),
179
+ });
180
+ if (!res.ok) {
181
+ const text = await res.text();
182
+ throw new Error(`LLM API 错误 (${res.status}): ${text}`);
183
+ }
184
+ const data = await res.json();
185
+ const providerName = this.config.llm.provider || findProvider(this.config.llm.model)?.name;
186
+ return parseLLMResponse(data, providerName);
187
+ }
188
+ async executeTool(tc) {
189
+ const isSkill = this.skillDefinitions.some((s) => s.name === tc.name);
190
+ if (isSkill) {
191
+ return this.callSkillAPI(tc);
192
+ }
193
+ return this.callToolAPI(tc);
194
+ }
195
+ async callToolAPI(tc) {
196
+ if (!this.config.tools?.url) {
197
+ throw new Error('Tools API URL 未配置');
198
+ }
199
+ const headers = {
200
+ 'Content-Type': 'application/json',
201
+ ...this.config.tools.headers,
202
+ };
203
+ if (this.config.tools.apiKey) {
204
+ headers['Authorization'] = `Bearer ${this.config.tools.apiKey}`;
205
+ }
206
+ const res = await fetch(`${this.config.tools.url}/execute`, {
207
+ method: 'POST',
208
+ headers,
209
+ body: JSON.stringify({
210
+ tool: tc.name,
211
+ arguments: tc.arguments,
212
+ }),
213
+ });
214
+ if (!res.ok) {
215
+ const text = await res.text();
216
+ throw new Error(`Tool API 错误 (${res.status}): ${text}`);
217
+ }
218
+ const data = await res.json();
219
+ return typeof data.result === 'string' ? data.result : JSON.stringify(data);
220
+ }
221
+ async callSkillAPI(tc) {
222
+ if (!this.config.skills?.url) {
223
+ throw new Error('Skills API URL 未配置');
224
+ }
225
+ const headers = {
226
+ 'Content-Type': 'application/json',
227
+ ...this.config.skills.headers,
228
+ };
229
+ if (this.config.skills.apiKey) {
230
+ headers['Authorization'] = `Bearer ${this.config.skills.apiKey}`;
231
+ }
232
+ const res = await fetch(`${this.config.skills.url}/invoke`, {
233
+ method: 'POST',
234
+ headers,
235
+ body: JSON.stringify({
236
+ skill: tc.name,
237
+ arguments: tc.arguments,
238
+ }),
239
+ });
240
+ if (!res.ok) {
241
+ const text = await res.text();
242
+ throw new Error(`Skill API 错误 (${res.status}): ${text}`);
243
+ }
244
+ const data = await res.json();
245
+ return typeof data.result === 'string' ? data.result : JSON.stringify(data);
246
+ }
247
+ buildMessages() {
248
+ const messages = [];
249
+ if (this.config.systemPrompt) {
250
+ messages.push({ role: 'system', content: this.config.systemPrompt });
251
+ }
252
+ messages.push(...this.messages);
253
+ return messages;
254
+ }
255
+ getToolDefinitions() {
256
+ const tools = [];
257
+ for (const t of this.toolDefinitions) {
258
+ tools.push({
259
+ type: 'function',
260
+ function: t,
261
+ });
262
+ }
263
+ for (const s of this.skillDefinitions) {
264
+ tools.push({
265
+ type: 'function',
266
+ function: {
267
+ name: s.name,
268
+ description: s.description,
269
+ parameters: s.parameters || { type: 'object', properties: {} },
270
+ },
271
+ });
272
+ }
273
+ return tools;
274
+ }
275
+ clear() {
276
+ this.messages = [];
277
+ this.toolCallsCount = 0;
278
+ this.iterations = 0;
279
+ this.lastUsage = {};
280
+ }
281
+ reload() {
282
+ this.loadDefinitions();
283
+ }
284
+ getMessages() {
285
+ return [...this.messages];
286
+ }
287
+ getToolDefinitionsList() {
288
+ return [...this.toolDefinitions];
289
+ }
290
+ getSkillDefinitionsList() {
291
+ return [...this.skillDefinitions];
292
+ }
293
+ getEstimatedPromptTokens() {
294
+ const messages = this.buildMessages();
295
+ let total = estimateMessagesTokens(messages);
296
+ const tools = this.getToolDefinitions();
297
+ if (tools.length > 0) {
298
+ total += estimateToolsTokens(tools);
299
+ }
300
+ return total;
301
+ }
302
+ getContextUsageRatio() {
303
+ const estimated = this.getEstimatedPromptTokens();
304
+ return estimated / this.config.contextWindowTokens;
305
+ }
306
+ getContextStatus() {
307
+ const estimated = this.getEstimatedPromptTokens();
308
+ const windowSize = this.config.contextWindowTokens;
309
+ const ratio = estimated / windowSize;
310
+ const percent = (ratio * 100).toFixed(1);
311
+ const remaining = windowSize - estimated;
312
+ let level;
313
+ if (ratio < 0.5)
314
+ level = 'low';
315
+ else if (ratio < 0.7)
316
+ level = 'medium';
317
+ else if (ratio < 0.9)
318
+ level = 'high';
319
+ else
320
+ level = 'critical';
321
+ return {
322
+ estimatedTokens: estimated,
323
+ windowSize,
324
+ usageRatio: ratio,
325
+ usagePercent: percent,
326
+ remainingTokens: remaining,
327
+ level,
328
+ };
329
+ }
330
+ getLastUsage() {
331
+ return { ...this.lastUsage };
332
+ }
333
+ isNearContextLimit(threshold = 0.8) {
334
+ return this.getContextUsageRatio() >= threshold;
335
+ }
336
+ }
337
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ReactAgent } from './agent.js';
2
+ import { findProvider, PROVIDERS, resolveEnvVars } from './providers.js';
3
+ import { createToolServer, registerTool, registerSkill, getToolHandler, getToolDefinitions, getSkillDefinitions, globalRegistry, clearRegistry, createRegistry, closeAllServers, type ToolHandler, type SkillHandler, type ToolServerOptions, type ToolRegistry } from './registry.js';
4
+ import type { AgentConfig, AgentCallbacks, AgentResult, ToolDefinition, SkillDefinition, Message, ToolCall, LLMResponse, LLMConfig, ProvidersConfig, ProviderConfig, AzureProviderConfig, ToolsConfig, SkillsConfig, ContextStatus } from './types.js';
5
+ export { ReactAgent, findProvider, PROVIDERS, resolveEnvVars };
6
+ export { createToolServer, registerTool, registerSkill, getToolHandler, getToolDefinitions, getSkillDefinitions, globalRegistry, clearRegistry, createRegistry, closeAllServers, };
7
+ export type { ToolHandler, SkillHandler, ToolServerOptions, ToolRegistry, };
8
+ export type { AgentConfig, AgentCallbacks, AgentResult, ToolDefinition, SkillDefinition, Message, ToolCall, LLMResponse, LLMConfig, ProvidersConfig, ProviderConfig, AzureProviderConfig, ToolsConfig, SkillsConfig, ContextStatus, };
9
+ export declare function ask(config: AgentConfig, message: string, callbacks?: AgentCallbacks): Promise<string>;
10
+ export declare function askFull(config: AgentConfig, message: string, callbacks?: AgentCallbacks): Promise<AgentResult>;
11
+ export declare function loadConfig(file: string): AgentConfig;
12
+ export declare function loadTools(file: string): ToolDefinition[];
13
+ export declare function loadSkills(file: string): SkillDefinition[];
14
+ export declare function createAgent(config: AgentConfig): ReactAgent;
15
+ export declare function estimateTokens(text: string): number;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,CAAC;AACF,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,CAAC;AACF,YAAY,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,GACd,CAAC;AAEF,wBAAsB,GAAG,CACvB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAOpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAOxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAO1D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAE3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD"}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ import { ReactAgent } from './agent.js';
2
+ import { findProvider, PROVIDERS, resolveEnvVars } from './providers.js';
3
+ import { createToolServer, registerTool, registerSkill, getToolHandler, getToolDefinitions, getSkillDefinitions, globalRegistry, clearRegistry, createRegistry, closeAllServers, } from './registry.js';
4
+ import { readFileSync, existsSync } from 'fs';
5
+ import { resolve } from 'path';
6
+ export { ReactAgent, findProvider, PROVIDERS, resolveEnvVars };
7
+ export { createToolServer, registerTool, registerSkill, getToolHandler, getToolDefinitions, getSkillDefinitions, globalRegistry, clearRegistry, createRegistry, closeAllServers, };
8
+ export async function ask(config, message, callbacks) {
9
+ const agent = new ReactAgent(config);
10
+ return agent.run(message, callbacks);
11
+ }
12
+ export async function askFull(config, message, callbacks) {
13
+ const agent = new ReactAgent(config);
14
+ return agent.runFull(message, callbacks);
15
+ }
16
+ export function loadConfig(file) {
17
+ const path = resolve(file);
18
+ if (!existsSync(path)) {
19
+ throw new Error(`配置文件不存在: ${path}`);
20
+ }
21
+ const content = readFileSync(path, 'utf-8');
22
+ return JSON.parse(content);
23
+ }
24
+ export function loadTools(file) {
25
+ const path = resolve(file);
26
+ if (!existsSync(path)) {
27
+ throw new Error(`工具配置文件不存在: ${path}`);
28
+ }
29
+ const content = readFileSync(path, 'utf-8');
30
+ return JSON.parse(content);
31
+ }
32
+ export function loadSkills(file) {
33
+ const path = resolve(file);
34
+ if (!existsSync(path)) {
35
+ throw new Error(`技能配置文件不存在: ${path}`);
36
+ }
37
+ const content = readFileSync(path, 'utf-8');
38
+ return JSON.parse(content);
39
+ }
40
+ export function createAgent(config) {
41
+ return new ReactAgent(config);
42
+ }
43
+ export function estimateTokens(text) {
44
+ if (!text)
45
+ return 0;
46
+ const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
47
+ const otherChars = text.length - chineseChars;
48
+ const chineseTokens = Math.ceil(chineseChars / 1.5);
49
+ const otherTokens = Math.ceil(otherChars / 4);
50
+ return chineseTokens + otherTokens;
51
+ }
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAKhB,MAAM,eAAe,CAAC;AAkBvB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,GAChB,CAAC;AAyBF,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,MAAmB,EACnB,OAAe,EACf,SAA0B;IAE1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAmB,EACnB,OAAe,EACf,SAA0B;IAE1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,aAAa,GAAG,WAAW,CAAC;AACrC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ProvidersConfig, LLMConfig } from './types.js';
2
+ export interface ProviderSpec {
3
+ name: string;
4
+ keywords: string[];
5
+ envKey: string;
6
+ displayName: string;
7
+ baseUrl: string;
8
+ path: string;
9
+ headerPrefix: string;
10
+ isGateway: boolean;
11
+ modelPrefix: string;
12
+ }
13
+ export declare const PROVIDERS: ProviderSpec[];
14
+ export declare function resolveEnvVars(value: string): string;
15
+ export declare function findProvider(model: string, providerName?: string): ProviderSpec | undefined;
16
+ export declare function buildLLMRequest(llmConfig: LLMConfig, providersConfig: ProvidersConfig | undefined, messages: any[], tools: any[] | undefined): {
17
+ url: string;
18
+ headers: Record<string, string>;
19
+ body: any;
20
+ };
21
+ export declare function parseLLMResponse(data: any, providerName?: string): any;
22
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,YAAY,EAiLnC,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAmB3F;AAmCD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAAG,SAAS,EAC5C,QAAQ,EAAE,GAAG,EAAE,EACf,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,GACvB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CA0J7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,GAAG,CA6DtE"}