@mcp-abap-adt/llm-agent 8.1.2 → 8.3.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.
Files changed (46) hide show
  1. package/dist/agents/anthropic-agent.d.ts +5 -8
  2. package/dist/agents/anthropic-agent.d.ts.map +1 -1
  3. package/dist/agents/anthropic-agent.js +97 -73
  4. package/dist/agents/anthropic-agent.js.map +1 -1
  5. package/dist/agents/base.d.ts +0 -11
  6. package/dist/agents/base.d.ts.map +1 -1
  7. package/dist/agents/base.js +0 -246
  8. package/dist/agents/base.js.map +1 -1
  9. package/dist/agents/deepseek-agent.d.ts +4 -8
  10. package/dist/agents/deepseek-agent.d.ts.map +1 -1
  11. package/dist/agents/deepseek-agent.js +80 -52
  12. package/dist/agents/deepseek-agent.js.map +1 -1
  13. package/dist/agents/openai-agent.d.ts +0 -4
  14. package/dist/agents/openai-agent.d.ts.map +1 -1
  15. package/dist/agents/openai-agent.js +72 -51
  16. package/dist/agents/openai-agent.js.map +1 -1
  17. package/dist/generated/version.d.ts +1 -1
  18. package/dist/generated/version.js +1 -1
  19. package/dist/llm-providers/anthropic.d.ts +3 -3
  20. package/dist/llm-providers/anthropic.d.ts.map +1 -1
  21. package/dist/llm-providers/anthropic.js +137 -10
  22. package/dist/llm-providers/anthropic.js.map +1 -1
  23. package/dist/llm-providers/base.d.ts +5 -5
  24. package/dist/llm-providers/base.d.ts.map +1 -1
  25. package/dist/llm-providers/base.js.map +1 -1
  26. package/dist/llm-providers/deepseek.d.ts +11 -13
  27. package/dist/llm-providers/deepseek.d.ts.map +1 -1
  28. package/dist/llm-providers/deepseek.js +14 -105
  29. package/dist/llm-providers/deepseek.js.map +1 -1
  30. package/dist/llm-providers/openai.d.ts +6 -5
  31. package/dist/llm-providers/openai.d.ts.map +1 -1
  32. package/dist/llm-providers/openai.js +47 -15
  33. package/dist/llm-providers/openai.js.map +1 -1
  34. package/dist/llm-providers/sap-core-ai.js +3 -3
  35. package/dist/llm-providers/sap-core-ai.js.map +1 -1
  36. package/dist/smart-agent/adapters/non-streaming-llm.d.ts +1 -0
  37. package/dist/smart-agent/adapters/non-streaming-llm.d.ts.map +1 -1
  38. package/dist/smart-agent/adapters/non-streaming-llm.js +4 -0
  39. package/dist/smart-agent/adapters/non-streaming-llm.js.map +1 -1
  40. package/dist/smart-agent/check-models-cli.js +14 -0
  41. package/dist/smart-agent/check-models-cli.js.map +1 -1
  42. package/dist/smart-agent/interfaces/llm.d.ts +6 -0
  43. package/dist/smart-agent/interfaces/llm.d.ts.map +1 -1
  44. package/dist/types.d.ts +13 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/package.json +1 -1
@@ -14,27 +14,90 @@ export class DeepSeekAgent extends BaseAgent {
14
14
  * Call DeepSeek with tools using function calling (similar to OpenAI)
15
15
  */
16
16
  async callLLMWithTools(messages, tools, options) {
17
- // Convert MCP tools to DeepSeek function format (same as OpenAI)
18
17
  const functions = this.convertToolsToFunctions(tools);
19
- // Format messages for DeepSeek
20
- const formattedMessages = this.formatMessagesForDeepSeek(messages);
21
- const { client, model, config } = this.llmProvider;
22
- // Call DeepSeek API with tools
23
- const response = await client.post('/chat/completions', {
24
- model: options?.model ?? model,
25
- messages: formattedMessages,
26
- tools: functions.length > 0 ? functions : undefined,
27
- tool_choice: functions.length > 0 ? 'auto' : undefined,
28
- temperature: config.temperature || 0.7,
29
- max_tokens: config.maxTokens || 4096,
30
- });
31
- const choice = response.data.choices?.[0];
32
- const message = choice?.message ?? {};
18
+ const response = await this.llmProvider.chat(messages, functions.length > 0 ? functions : undefined, options);
33
19
  return {
34
- content: message.content || '',
35
- raw: response.data,
20
+ content: response.content,
21
+ raw: response.raw,
36
22
  };
37
23
  }
24
+ /**
25
+ * Stream DeepSeek response
26
+ */
27
+ async *streamLLMWithTools(messages, tools, options) {
28
+ const functions = this.convertToolsToFunctions(tools);
29
+ const toolCallMap = new Map();
30
+ let finishReason = 'stop';
31
+ for await (const chunk of this.llmProvider.streamChat(messages, functions.length > 0 ? functions : undefined, options)) {
32
+ // Yield text deltas
33
+ if (chunk.content) {
34
+ yield { type: 'text', delta: chunk.content };
35
+ }
36
+ // Extract usage and tool calls from raw
37
+ const raw = chunk.raw;
38
+ if (raw) {
39
+ const usage = raw.usage;
40
+ if (usage) {
41
+ yield {
42
+ type: 'usage',
43
+ promptTokens: usage.prompt_tokens ?? 0,
44
+ completionTokens: usage.completion_tokens ?? 0,
45
+ };
46
+ }
47
+ // Accumulate tool calls from raw delta
48
+ const choices = raw.choices;
49
+ const delta = choices?.[0]?.delta;
50
+ if (delta?.tool_calls) {
51
+ for (const tc of delta.tool_calls) {
52
+ const index = tc.index;
53
+ if (!toolCallMap.has(index)) {
54
+ toolCallMap.set(index, {
55
+ id: tc.id ?? '',
56
+ name: tc.function?.name ?? '',
57
+ arguments: '',
58
+ });
59
+ }
60
+ if (tc.function?.arguments) {
61
+ const accumulated = toolCallMap.get(index);
62
+ if (accumulated) {
63
+ accumulated.arguments += tc.function.arguments;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ // Track finish reason
70
+ if (chunk.finishReason) {
71
+ finishReason =
72
+ chunk.finishReason === 'tool_calls'
73
+ ? 'tool_calls'
74
+ : chunk.finishReason === 'length'
75
+ ? 'length'
76
+ : chunk.finishReason === 'error'
77
+ ? 'error'
78
+ : 'stop';
79
+ }
80
+ }
81
+ // Emit accumulated tool calls
82
+ if (toolCallMap.size > 0) {
83
+ const toolCalls = [...toolCallMap.entries()]
84
+ .sort(([a], [b]) => a - b)
85
+ .map(([, tc]) => ({
86
+ id: tc.id,
87
+ name: tc.name,
88
+ arguments: (() => {
89
+ try {
90
+ return JSON.parse(tc.arguments);
91
+ }
92
+ catch {
93
+ return {};
94
+ }
95
+ })(),
96
+ }));
97
+ yield { type: 'tool_calls', toolCalls };
98
+ }
99
+ yield { type: 'done', finishReason };
100
+ }
38
101
  /**
39
102
  * Convert MCP tools to DeepSeek function format
40
103
  */
@@ -54,40 +117,5 @@ export class DeepSeekAgent extends BaseAgent {
54
117
  };
55
118
  });
56
119
  }
57
- /**
58
- * Format messages for DeepSeek API (same as OpenAI)
59
- */
60
- formatMessagesForDeepSeek(messages) {
61
- return messages.map((msg) => {
62
- const formatted = {
63
- role: msg.role,
64
- // assistant messages with tool_calls must have content=null per OpenAI/DeepSeek protocol
65
- content: (msg.tool_calls?.length ? null : msg.content) ?? null,
66
- };
67
- if (msg.tool_call_id !== undefined)
68
- formatted.tool_call_id = msg.tool_call_id;
69
- if (msg.tool_calls !== undefined)
70
- formatted.tool_calls = msg.tool_calls;
71
- return formatted;
72
- });
73
- }
74
- /**
75
- * Stream DeepSeek response
76
- */
77
- async *streamLLMWithTools(messages, tools, options) {
78
- const functions = this.convertToolsToFunctions(tools);
79
- const { model, config } = this.llmProvider;
80
- const baseURL = config.baseURL || 'https://api.deepseek.com/v1';
81
- yield* this.streamOpenAICompatible(`${baseURL}/chat/completions`, { Authorization: `Bearer ${config.apiKey}` }, {
82
- model: options?.model ?? model,
83
- messages: this.formatMessagesForDeepSeek(messages),
84
- tools: functions.length > 0 ? functions : undefined,
85
- tool_choice: functions.length > 0 ? 'auto' : undefined,
86
- temperature: config.temperature || 0.7,
87
- max_tokens: config.maxTokens || 4096,
88
- stream: true,
89
- stream_options: { include_usage: true },
90
- });
91
- }
92
120
  }
93
121
  //# sourceMappingURL=deepseek-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-agent.js","sourceRoot":"","sources":["../../src/agents/deepseek-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepseek-agent.js","sourceRoot":"","sources":["../../src/agents/deepseek-agent.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,5 @@ export declare class OpenAIAgent extends BaseAgent {
28
28
  * Convert MCP tools to OpenAI function format
29
29
  */
30
30
  private convertToolsToOpenAIFunctions;
31
- /**
32
- * Format messages for OpenAI API
33
- */
34
- private formatMessagesForOpenAI;
35
31
  }
36
32
  //# sourceMappingURL=openai-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-agent.d.ts","sourceRoot":"","sources":["../../src/agents/openai-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,WAAW,CAAiB;gBAExB,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;cACa,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAgC9C;;OAEG;cACc,kBAAkB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;IA6BlD;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAuBrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAUhC"}
1
+ {"version":3,"file":"openai-agent.d.ts","sourceRoot":"","sources":["../../src/agents/openai-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,WAAW,CAAiB;gBAExB,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;cACa,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAe9C;;OAEG;cACc,kBAAkB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC;IAoGlD;;OAEG;IACH,OAAO,CAAC,6BAA6B;CAsBtC"}
@@ -15,27 +15,11 @@ export class OpenAIAgent extends BaseAgent {
15
15
  * Call OpenAI with tools using function calling
16
16
  */
17
17
  async callLLMWithTools(messages, tools, options) {
18
- // Convert MCP tools to OpenAI function format
19
18
  const functions = this.convertToolsToOpenAIFunctions(tools);
20
- // Format messages for OpenAI
21
- const formattedMessages = this.formatMessagesForOpenAI(messages);
22
- const { client, model, config } = this.llmProvider;
23
- // Call OpenAI API with tools
24
- const response = await client.post('/chat/completions', {
25
- model: options?.model ?? model,
26
- messages: formattedMessages,
27
- tools: functions.length > 0 ? functions : undefined,
28
- tool_choice: functions.length > 0 ? 'auto' : undefined,
29
- temperature: options?.temperature ?? config.temperature ?? 0.7,
30
- max_tokens: options?.maxTokens ?? config.maxTokens ?? 4096,
31
- top_p: options?.topP,
32
- stop: options?.stop,
33
- });
34
- const choice = response.data.choices?.[0];
35
- const message = choice?.message ?? {};
19
+ const response = await this.llmProvider.chat(messages, functions.length > 0 ? functions : undefined, options);
36
20
  return {
37
- content: message.content || '',
38
- raw: response.data,
21
+ content: response.content,
22
+ raw: response.raw,
39
23
  };
40
24
  }
41
25
  /**
@@ -43,29 +27,77 @@ export class OpenAIAgent extends BaseAgent {
43
27
  */
44
28
  async *streamLLMWithTools(messages, tools, options) {
45
29
  const functions = this.convertToolsToOpenAIFunctions(tools);
46
- const { model, config } = this.llmProvider;
47
- const baseURL = config.baseURL || 'https://api.openai.com/v1';
48
- const headers = {
49
- Authorization: `Bearer ${config.apiKey}`,
50
- };
51
- if (config.organization) {
52
- headers['OpenAI-Organization'] = config.organization;
30
+ const toolCallMap = new Map();
31
+ let finishReason = 'stop';
32
+ for await (const chunk of this.llmProvider.streamChat(messages, functions.length > 0 ? functions : undefined, options)) {
33
+ // Yield text deltas
34
+ if (chunk.content) {
35
+ yield { type: 'text', delta: chunk.content };
36
+ }
37
+ // Extract usage from raw
38
+ const raw = chunk.raw;
39
+ if (raw) {
40
+ const usage = raw.usage;
41
+ if (usage) {
42
+ yield {
43
+ type: 'usage',
44
+ promptTokens: usage.prompt_tokens ?? 0,
45
+ completionTokens: usage.completion_tokens ?? 0,
46
+ };
47
+ }
48
+ // Accumulate tool calls from raw delta
49
+ const choices = raw.choices;
50
+ const delta = choices?.[0]?.delta;
51
+ if (delta?.tool_calls) {
52
+ for (const tc of delta.tool_calls) {
53
+ const index = tc.index;
54
+ if (!toolCallMap.has(index)) {
55
+ toolCallMap.set(index, {
56
+ id: tc.id ?? '',
57
+ name: tc.function?.name ?? '',
58
+ arguments: '',
59
+ });
60
+ }
61
+ if (tc.function?.arguments) {
62
+ const accumulated = toolCallMap.get(index);
63
+ if (accumulated) {
64
+ accumulated.arguments += tc.function.arguments;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ // Track finish reason
71
+ if (chunk.finishReason) {
72
+ finishReason =
73
+ chunk.finishReason === 'tool_calls'
74
+ ? 'tool_calls'
75
+ : chunk.finishReason === 'length'
76
+ ? 'length'
77
+ : chunk.finishReason === 'error'
78
+ ? 'error'
79
+ : 'stop';
80
+ }
53
81
  }
54
- if (config.project) {
55
- headers['OpenAI-Project'] = config.project;
82
+ // Emit accumulated tool calls
83
+ if (toolCallMap.size > 0) {
84
+ const toolCalls = [...toolCallMap.entries()]
85
+ .sort(([a], [b]) => a - b)
86
+ .map(([, tc]) => ({
87
+ id: tc.id,
88
+ name: tc.name,
89
+ arguments: (() => {
90
+ try {
91
+ return JSON.parse(tc.arguments);
92
+ }
93
+ catch {
94
+ return {};
95
+ }
96
+ })(),
97
+ }));
98
+ yield { type: 'tool_calls', toolCalls };
56
99
  }
57
- yield* this.streamOpenAICompatible(`${baseURL}/chat/completions`, headers, {
58
- model: options?.model ?? model,
59
- messages: this.formatMessagesForOpenAI(messages),
60
- tools: functions.length > 0 ? functions : undefined,
61
- tool_choice: functions.length > 0 ? 'auto' : undefined,
62
- temperature: options?.temperature ?? config.temperature ?? 0.7,
63
- max_tokens: options?.maxTokens ?? config.maxTokens ?? 4096,
64
- top_p: options?.topP,
65
- stop: options?.stop,
66
- stream: true,
67
- stream_options: { include_usage: true },
68
- });
100
+ yield { type: 'done', finishReason };
69
101
  }
70
102
  /**
71
103
  * Convert MCP tools to OpenAI function format
@@ -86,16 +118,5 @@ export class OpenAIAgent extends BaseAgent {
86
118
  };
87
119
  });
88
120
  }
89
- /**
90
- * Format messages for OpenAI API
91
- */
92
- formatMessagesForOpenAI(messages) {
93
- return messages.map((msg) => ({
94
- role: msg.role,
95
- content: msg.content || null, // OpenAI requires null if empty
96
- tool_calls: msg.tool_calls,
97
- tool_call_id: msg.tool_call_id,
98
- }));
99
- }
100
121
  }
101
122
  //# sourceMappingURL=openai-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai-agent.js","sourceRoot":"","sources":["../../src/agents/openai-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-agent.js","sourceRoot":"","sources":["../../src/agents/openai-agent.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "8.1.2";
1
+ export declare const PACKAGE_VERSION = "8.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by scripts/generate-version.js — do not edit
2
- export const PACKAGE_VERSION = '8.1.2';
2
+ export const PACKAGE_VERSION = '8.3.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { type AxiosInstance } from 'axios';
5
5
  import type { IModelInfo } from '../smart-agent/interfaces/model-provider.js';
6
- import type { LLMProviderConfig, LLMResponse, Message } from '../types.js';
6
+ import type { LLMCallOptions, LLMProviderConfig, LLMResponse, Message } from '../types.js';
7
7
  import { BaseLLMProvider } from './base.js';
8
8
  export interface AnthropicConfig extends LLMProviderConfig {
9
9
  model?: string;
@@ -14,8 +14,8 @@ export declare class AnthropicProvider extends BaseLLMProvider<AnthropicConfig>
14
14
  readonly client: AxiosInstance;
15
15
  readonly model: string;
16
16
  constructor(config: AnthropicConfig);
17
- chat(messages: Message[]): Promise<LLMResponse>;
18
- streamChat(_messages: Message[]): AsyncIterable<LLMResponse>;
17
+ chat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): Promise<LLMResponse>;
18
+ streamChat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): AsyncIterable<LLMResponse>;
19
19
  getModels(): Promise<IModelInfo[]>;
20
20
  getEmbeddingModels(): Promise<IModelInfo[]>;
21
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/llm-providers/anthropic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,eAAe,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,MAAM,EAAE,eAAe;IAgB7B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC9C,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC;IAM7D,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD;;OAEG;IACH,OAAO,CAAC,cAAc;CAMvB"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/llm-providers/anthropic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,OAAO,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,eAAe,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,MAAM,EAAE,eAAe;IAgB7B,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC;IA6DhB,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,WAAW,CAAC;IA2HvB,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD;;OAEG;IACH,OAAO,CAAC,cAAc;CAMvB"}
@@ -19,26 +19,45 @@ export class AnthropicProvider extends BaseLLMProvider {
19
19
  },
20
20
  });
21
21
  }
22
- async chat(messages) {
22
+ async chat(messages, tools, options) {
23
23
  try {
24
- // Anthropic API uses different message format
25
24
  const systemMessage = messages.find((m) => m.role === 'system');
26
25
  const conversationMessages = messages.filter((m) => m.role !== 'system');
27
26
  const requestBody = {
28
- model: this.model,
27
+ model: options?.model ?? this.model,
29
28
  messages: this.formatMessages(conversationMessages),
30
- max_tokens: this.config.maxTokens || 4096,
31
- temperature: this.config.temperature || 0.7,
29
+ max_tokens: options?.maxTokens ?? this.config.maxTokens ?? 4096,
30
+ temperature: options?.temperature ?? this.config.temperature ?? 0.7,
31
+ ...(options?.topP !== undefined ? { top_p: options.topP } : {}),
32
+ ...(options?.stop ? { stop_sequences: options.stop } : {}),
32
33
  };
33
34
  if (systemMessage) {
34
35
  requestBody.system = systemMessage.content;
35
36
  }
37
+ if (tools && tools.length > 0) {
38
+ requestBody.tools = tools;
39
+ }
36
40
  const response = await this.client.post('/messages', requestBody);
37
- const content = response.data.content[0];
41
+ // Handle multi-block response (text + tool_use)
42
+ const content = response.data.content;
43
+ let textContent = '';
44
+ for (const block of content) {
45
+ if (block.type === 'text')
46
+ textContent += block.text;
47
+ }
48
+ const rawUsage = response.data.usage;
49
+ const usage = rawUsage
50
+ ? {
51
+ prompt_tokens: rawUsage.input_tokens ?? 0,
52
+ completion_tokens: rawUsage.output_tokens ?? 0,
53
+ total_tokens: (rawUsage.input_tokens ?? 0) + (rawUsage.output_tokens ?? 0),
54
+ }
55
+ : undefined;
38
56
  return {
39
- content: content.text || '',
57
+ content: textContent,
40
58
  finishReason: response.data.stop_reason,
41
59
  raw: response.data,
60
+ usage,
42
61
  };
43
62
  }
44
63
  catch (error) {
@@ -51,9 +70,117 @@ export class AnthropicProvider extends BaseLLMProvider {
51
70
  throw new Error(`Anthropic API error: ${message}`);
52
71
  }
53
72
  }
54
- // biome-ignore lint/correctness/useYield: intentionally unimplemented generator — streaming goes through AnthropicAgent
55
- async *streamChat(_messages) {
56
- throw new Error('AnthropicProvider.streamChat() is not used directly. Use AnthropicAgent.streamLLMWithTools() for streaming.');
73
+ async *streamChat(messages, tools, options) {
74
+ const systemMessage = messages.find((m) => m.role === 'system');
75
+ const conversationMessages = messages.filter((m) => m.role !== 'system');
76
+ const requestBody = {
77
+ model: options?.model ?? this.model,
78
+ messages: this.formatMessages(conversationMessages),
79
+ max_tokens: options?.maxTokens ?? this.config.maxTokens ?? 4096,
80
+ temperature: options?.temperature ?? this.config.temperature ?? 0.7,
81
+ stream: true,
82
+ ...(options?.topP !== undefined ? { top_p: options.topP } : {}),
83
+ ...(options?.stop ? { stop_sequences: options.stop } : {}),
84
+ };
85
+ if (systemMessage) {
86
+ requestBody.system = systemMessage.content;
87
+ }
88
+ if (tools && tools.length > 0) {
89
+ requestBody.tools = tools;
90
+ }
91
+ const baseURL = this.config.baseURL || 'https://api.anthropic.com/v1';
92
+ const response = await fetch(`${baseURL}/messages`, {
93
+ method: 'POST',
94
+ headers: {
95
+ 'Content-Type': 'application/json',
96
+ 'x-api-key': this.config.apiKey ?? '',
97
+ 'anthropic-version': '2023-06-01',
98
+ },
99
+ body: JSON.stringify(requestBody),
100
+ });
101
+ if (!response.ok || !response.body) {
102
+ const text = await response.text().catch(() => '');
103
+ throw new Error(`Anthropic streaming error: HTTP ${response.status} — ${text}`);
104
+ }
105
+ const reader = response.body.getReader();
106
+ const decoder = new TextDecoder();
107
+ let buffer = '';
108
+ try {
109
+ while (true) {
110
+ const { done, value } = await reader.read();
111
+ if (done)
112
+ break;
113
+ buffer += decoder.decode(value, { stream: true });
114
+ const lines = buffer.split('\n');
115
+ buffer = lines.pop() || '';
116
+ let eventType = '';
117
+ for (const line of lines) {
118
+ const trimmed = line.trim();
119
+ if (!trimmed) {
120
+ eventType = '';
121
+ continue;
122
+ }
123
+ if (trimmed.startsWith('event: ')) {
124
+ eventType = trimmed.slice(7);
125
+ continue;
126
+ }
127
+ if (!trimmed.startsWith('data: '))
128
+ continue;
129
+ const data = trimmed.slice(6);
130
+ try {
131
+ const parsed = JSON.parse(data);
132
+ if (eventType === 'content_block_delta' &&
133
+ parsed.delta?.type === 'text_delta') {
134
+ yield { content: parsed.delta.text || '', raw: parsed };
135
+ }
136
+ else if (eventType === 'message_start' && parsed.message?.usage) {
137
+ const u = parsed.message.usage;
138
+ yield {
139
+ content: '',
140
+ raw: parsed,
141
+ usage: {
142
+ prompt_tokens: u.input_tokens ?? 0,
143
+ completion_tokens: u.output_tokens ?? 0,
144
+ total_tokens: (u.input_tokens ?? 0) + (u.output_tokens ?? 0),
145
+ },
146
+ };
147
+ }
148
+ else if (eventType === 'message_delta') {
149
+ const u = parsed.usage;
150
+ yield {
151
+ content: '',
152
+ finishReason: parsed.delta?.stop_reason,
153
+ raw: parsed,
154
+ usage: u
155
+ ? {
156
+ prompt_tokens: 0,
157
+ completion_tokens: u.output_tokens ?? 0,
158
+ total_tokens: u.output_tokens ?? 0,
159
+ }
160
+ : undefined,
161
+ };
162
+ }
163
+ else if (eventType === 'error') {
164
+ const error = parsed.error;
165
+ throw new Error(`Anthropic stream error: ${error?.message ?? 'unknown'}`);
166
+ }
167
+ else {
168
+ yield { content: '', raw: parsed };
169
+ }
170
+ }
171
+ catch (e) {
172
+ if (e instanceof Error &&
173
+ e.message.startsWith('Anthropic stream error:')) {
174
+ throw e;
175
+ }
176
+ /* incomplete JSON — skip */
177
+ }
178
+ }
179
+ }
180
+ }
181
+ finally {
182
+ reader.releaseLock();
183
+ }
57
184
  }
58
185
  async getModels() {
59
186
  const response = await this.client.get('/models');
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/llm-providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/llm-providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@
2
2
  * Base interface for LLM providers
3
3
  */
4
4
  import type { IModelInfo } from '../smart-agent/interfaces/model-provider.js';
5
- import type { LLMProviderConfig, LLMResponse, Message } from '../types.js';
5
+ import type { LLMCallOptions, LLMProviderConfig, LLMResponse, Message } from '../types.js';
6
6
  export interface LLMProvider {
7
7
  /**
8
8
  * Send a chat message and get response
9
9
  */
10
- chat(messages: Message[], tools?: unknown[]): Promise<LLMResponse>;
10
+ chat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): Promise<LLMResponse>;
11
11
  /**
12
12
  * Stream chat response
13
13
  */
14
- streamChat(messages: Message[], tools?: unknown[]): AsyncIterable<LLMResponse>;
14
+ streamChat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): AsyncIterable<LLMResponse>;
15
15
  /**
16
16
  * Get available models
17
17
  */
@@ -24,8 +24,8 @@ export interface LLMProvider {
24
24
  export declare abstract class BaseLLMProvider<C extends LLMProviderConfig = LLMProviderConfig> implements LLMProvider {
25
25
  readonly config: C;
26
26
  constructor(config: C);
27
- abstract chat(messages: Message[], tools?: unknown[]): Promise<LLMResponse>;
28
- abstract streamChat(messages: Message[], tools?: unknown[]): AsyncIterable<LLMResponse>;
27
+ abstract chat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): Promise<LLMResponse>;
28
+ abstract streamChat(messages: Message[], tools?: unknown[], options?: LLMCallOptions): AsyncIterable<LLMResponse>;
29
29
  /**
30
30
  * Validate configuration
31
31
  */