@mcp-abap-adt/llm-agent 11.1.1 → 12.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.
Files changed (98) hide show
  1. package/README.md +9 -2
  2. package/dist/adapters/cline-client-adapter.d.ts +18 -0
  3. package/dist/adapters/cline-client-adapter.d.ts.map +1 -0
  4. package/dist/adapters/cline-client-adapter.js +21 -0
  5. package/dist/adapters/cline-client-adapter.js.map +1 -0
  6. package/dist/api-adapters/anthropic-adapter.d.ts +10 -0
  7. package/dist/api-adapters/anthropic-adapter.d.ts.map +1 -0
  8. package/dist/api-adapters/anthropic-adapter.js +356 -0
  9. package/dist/api-adapters/anthropic-adapter.js.map +1 -0
  10. package/dist/api-adapters/index.d.ts +3 -0
  11. package/dist/api-adapters/index.d.ts.map +1 -0
  12. package/dist/api-adapters/index.js +3 -0
  13. package/dist/api-adapters/index.js.map +1 -0
  14. package/dist/api-adapters/openai-adapter.d.ts +10 -0
  15. package/dist/api-adapters/openai-adapter.d.ts.map +1 -0
  16. package/dist/api-adapters/openai-adapter.js +277 -0
  17. package/dist/api-adapters/openai-adapter.js.map +1 -0
  18. package/dist/cache/index.d.ts +4 -0
  19. package/dist/cache/index.d.ts.map +1 -0
  20. package/dist/cache/index.js +3 -0
  21. package/dist/cache/index.js.map +1 -0
  22. package/dist/cache/noop-tool-cache.d.ts +7 -0
  23. package/dist/cache/noop-tool-cache.d.ts.map +1 -0
  24. package/dist/cache/noop-tool-cache.js +8 -0
  25. package/dist/cache/noop-tool-cache.js.map +1 -0
  26. package/dist/cache/tool-cache.d.ts +14 -0
  27. package/dist/cache/tool-cache.d.ts.map +1 -0
  28. package/dist/cache/tool-cache.js +32 -0
  29. package/dist/cache/tool-cache.js.map +1 -0
  30. package/dist/cache/types.d.ts +7 -0
  31. package/dist/cache/types.d.ts.map +1 -0
  32. package/dist/cache/types.js +2 -0
  33. package/dist/cache/types.js.map +1 -0
  34. package/dist/external-tools-normalizer.d.ts +15 -0
  35. package/dist/external-tools-normalizer.d.ts.map +1 -0
  36. package/dist/external-tools-normalizer.js +146 -0
  37. package/dist/external-tools-normalizer.js.map +1 -0
  38. package/dist/index.d.ts +18 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +21 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/interfaces/api-adapter.d.ts +36 -0
  43. package/dist/interfaces/api-adapter.d.ts.map +1 -0
  44. package/dist/interfaces/api-adapter.js +9 -0
  45. package/dist/interfaces/api-adapter.js.map +1 -0
  46. package/dist/interfaces/client-adapter.d.ts +23 -0
  47. package/dist/interfaces/client-adapter.d.ts.map +1 -0
  48. package/dist/interfaces/client-adapter.js +10 -0
  49. package/dist/interfaces/client-adapter.js.map +1 -0
  50. package/dist/logger/types.d.ts +63 -0
  51. package/dist/logger/types.d.ts.map +1 -0
  52. package/dist/logger/types.js +2 -0
  53. package/dist/logger/types.js.map +1 -0
  54. package/dist/policy/fallback-llm-call-strategy.d.ts +16 -0
  55. package/dist/policy/fallback-llm-call-strategy.d.ts.map +1 -0
  56. package/dist/policy/fallback-llm-call-strategy.js +66 -0
  57. package/dist/policy/fallback-llm-call-strategy.js.map +1 -0
  58. package/dist/policy/index.d.ts +4 -0
  59. package/dist/policy/index.d.ts.map +1 -0
  60. package/dist/policy/index.js +4 -0
  61. package/dist/policy/index.js.map +1 -0
  62. package/dist/policy/non-streaming-llm-call-strategy.d.ts +6 -0
  63. package/dist/policy/non-streaming-llm-call-strategy.d.ts.map +1 -0
  64. package/dist/policy/non-streaming-llm-call-strategy.js +21 -0
  65. package/dist/policy/non-streaming-llm-call-strategy.js.map +1 -0
  66. package/dist/policy/streaming-llm-call-strategy.d.ts +6 -0
  67. package/dist/policy/streaming-llm-call-strategy.d.ts.map +1 -0
  68. package/dist/policy/streaming-llm-call-strategy.js +7 -0
  69. package/dist/policy/streaming-llm-call-strategy.js.map +1 -0
  70. package/dist/resilience/circuit-breaker-embedder.d.ts +16 -0
  71. package/dist/resilience/circuit-breaker-embedder.d.ts.map +1 -0
  72. package/dist/resilience/circuit-breaker-embedder.js +47 -0
  73. package/dist/resilience/circuit-breaker-embedder.js.map +1 -0
  74. package/dist/resilience/circuit-breaker-llm.d.ts +19 -0
  75. package/dist/resilience/circuit-breaker-llm.d.ts.map +1 -0
  76. package/dist/resilience/circuit-breaker-llm.js +72 -0
  77. package/dist/resilience/circuit-breaker-llm.js.map +1 -0
  78. package/dist/resilience/circuit-breaker.d.ts +36 -0
  79. package/dist/resilience/circuit-breaker.d.ts.map +1 -0
  80. package/dist/resilience/circuit-breaker.js +60 -0
  81. package/dist/resilience/circuit-breaker.js.map +1 -0
  82. package/dist/resilience/fallback-rag.d.ts +21 -0
  83. package/dist/resilience/fallback-rag.d.ts.map +1 -0
  84. package/dist/resilience/fallback-rag.js +80 -0
  85. package/dist/resilience/fallback-rag.js.map +1 -0
  86. package/dist/resilience/index.d.ts +5 -0
  87. package/dist/resilience/index.d.ts.map +1 -0
  88. package/dist/resilience/index.js +5 -0
  89. package/dist/resilience/index.js.map +1 -0
  90. package/dist/testing/index.d.ts +5 -2
  91. package/dist/testing/index.d.ts.map +1 -1
  92. package/dist/testing/index.js +30 -0
  93. package/dist/testing/index.js.map +1 -1
  94. package/dist/tool-call-deltas.d.ts +4 -0
  95. package/dist/tool-call-deltas.d.ts.map +1 -0
  96. package/dist/tool-call-deltas.js +25 -0
  97. package/dist/tool-call-deltas.js.map +1 -0
  98. package/package.json +2 -2
package/README.md CHANGED
@@ -4,10 +4,17 @@ Core interfaces, types, and lightweight default implementations for LLM agent or
4
4
 
5
5
  This package is the abstraction layer consumed by `@mcp-abap-adt/llm-agent-server` and by downstream applications that want to build their own agent on our interfaces. It ships:
6
6
 
7
- - All `I*` interfaces (IRag, IRagEditor, IRagProvider, IRagRegistry, ILlm, IMcpClient, IPipeline, etc.)
7
+ - All `I*` interfaces (IRag, IRagEditor, IRagProvider, IRagRegistry, ILlm, IMcpClient, IPipeline, IClientAdapter, ILlmApiAdapter, IToolCache, ILogger, etc.)
8
8
  - Shared types (Message, ToolCall, RagMetadata, CallOptions, Result, errors)
9
9
  - Lightweight RAG implementations (InMemoryRag, VectorRag, QdrantRag, InMemoryRagProvider, VectorRagProvider, QdrantRagProvider, SimpleRagRegistry, SimpleRagProviderRegistry, edit strategies, id strategies, corrections module, overlay rags, MCP tool factory)
10
+ - Library helpers usable when embedding SmartAgent in your own server:
11
+ - **Resilience**: `CircuitBreaker`, `CircuitBreakerLlm`, `CircuitBreakerEmbedder`, `FallbackRag`
12
+ - **LLM call policies**: `NonStreamingLlmCallStrategy`, `StreamingLlmCallStrategy`, `FallbackLlmCallStrategy`
13
+ - **Tool cache**: `ToolCache`, `NoopToolCache`
14
+ - **API adapters** (Anthropic Messages / OpenAI Chat Completions ↔ SmartAgent): `AnthropicApiAdapter`, `OpenAiApiAdapter`, with `NormalizedRequest` / `ApiRequestContext` / `ApiSseEvent` / `AdapterValidationError`
15
+ - **Client adapters**: `ClineClientAdapter`
16
+ - **Tool utilities**: `normalizeAndValidateExternalTools`, `normalizeExternalTools`, `getStreamToolCallName`, `toToolCallDelta`
10
17
 
11
- For the full default agent (SmartAgent, pipeline, LLM providers, MCP client, HTTP server, CLI), install `@mcp-abap-adt/llm-agent-server`.
18
+ For the full default agent runtime (SmartAgent assembly, providers wiring, HTTP server, CLI), install `@mcp-abap-adt/llm-agent-server` — but if you only need the helpers above and you ship your own server, depending on `@mcp-abap-adt/llm-agent` is sufficient.
12
19
 
13
20
  See the repo root for design specs, migration notes, and architectural docs.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Client adapter for Cline (VS Code AI extension).
3
+ *
4
+ * Cline is a prompt-based agent: it describes tools as XML in the system
5
+ * prompt and expects the LLM to respond with XML tool calls in `content`.
6
+ * When a task is complete, Cline requires the response to be wrapped in
7
+ * `<attempt_completion>` XML.
8
+ *
9
+ * This adapter detects Cline by its system prompt signature and wraps
10
+ * the final response accordingly.
11
+ */
12
+ import type { IClientAdapter } from '../interfaces/client-adapter.js';
13
+ export declare class ClineClientAdapter implements IClientAdapter {
14
+ readonly name = "cline";
15
+ detect(systemPrompt: string): boolean;
16
+ wrapResponse(content: string): string;
17
+ }
18
+ //# sourceMappingURL=cline-client-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-client-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/cline-client-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,IAAI,WAAW;IAExB,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIrC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGtC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Client adapter for Cline (VS Code AI extension).
3
+ *
4
+ * Cline is a prompt-based agent: it describes tools as XML in the system
5
+ * prompt and expects the LLM to respond with XML tool calls in `content`.
6
+ * When a task is complete, Cline requires the response to be wrapped in
7
+ * `<attempt_completion>` XML.
8
+ *
9
+ * This adapter detects Cline by its system prompt signature and wraps
10
+ * the final response accordingly.
11
+ */
12
+ export class ClineClientAdapter {
13
+ name = 'cline';
14
+ detect(systemPrompt) {
15
+ return systemPrompt.includes('You are Cline');
16
+ }
17
+ wrapResponse(content) {
18
+ return `<attempt_completion>\n<result>\n${content}\n</result>\n</attempt_completion>`;
19
+ }
20
+ }
21
+ //# sourceMappingURL=cline-client-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-client-adapter.js","sourceRoot":"","sources":["../../src/adapters/cline-client-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,OAAO,CAAC;IAExB,MAAM,CAAC,YAAoB;QACzB,OAAO,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,mCAAmC,OAAO,oCAAoC,CAAC;IACxF,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { LlmStreamChunk, OrchestratorError, Result, SmartAgentResponse } from '@mcp-abap-adt/llm-agent';
2
+ import { type ApiRequestContext, type ApiSseEvent, type ILlmApiAdapter, type NormalizedRequest } from '../interfaces/api-adapter.js';
3
+ export declare class AnthropicApiAdapter implements ILlmApiAdapter {
4
+ readonly name = "anthropic";
5
+ normalizeRequest(request: unknown): NormalizedRequest;
6
+ formatResult(response: SmartAgentResponse, context: ApiRequestContext): unknown;
7
+ formatError(error: OrchestratorError, _context: ApiRequestContext): unknown;
8
+ transformStream(source: AsyncIterable<Result<LlmStreamChunk, OrchestratorError>>, context: ApiRequestContext): AsyncIterable<ApiSseEvent>;
9
+ }
10
+ //# sourceMappingURL=anthropic-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-adapter.d.ts","sourceRoot":"","sources":["../../src/api-adapters/anthropic-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EAEd,iBAAiB,EACjB,MAAM,EACN,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AA8BtC,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,IAAI,eAAe;IAM5B,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB;IAuIrD,YAAY,CACV,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,GACzB,OAAO;IA8CV,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAcpE,eAAe,CACpB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,EAChE,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAAC,WAAW,CAAC;CAiL9B"}
@@ -0,0 +1,356 @@
1
+ // src/smart-agent/api-adapters/anthropic-adapter.ts
2
+ import { randomUUID } from 'node:crypto';
3
+ import { AdapterValidationError, } from '../interfaces/api-adapter.js';
4
+ import { toToolCallDelta } from '../tool-call-deltas.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Helpers
7
+ // ---------------------------------------------------------------------------
8
+ function mapStopReason(r) {
9
+ switch (r) {
10
+ case 'stop':
11
+ return 'end_turn';
12
+ case 'tool_calls':
13
+ return 'tool_use';
14
+ case 'error':
15
+ return 'end_turn';
16
+ default:
17
+ return 'max_tokens';
18
+ }
19
+ }
20
+ function sse(event, data) {
21
+ return { event, data: JSON.stringify(data) };
22
+ }
23
+ // ---------------------------------------------------------------------------
24
+ // AnthropicApiAdapter
25
+ // ---------------------------------------------------------------------------
26
+ export class AnthropicApiAdapter {
27
+ name = 'anthropic';
28
+ // -------------------------------------------------------------------------
29
+ // normalizeRequest
30
+ // -------------------------------------------------------------------------
31
+ normalizeRequest(request) {
32
+ if (typeof request !== 'object' || request === null) {
33
+ throw new AdapterValidationError('Request body must be a JSON object');
34
+ }
35
+ const body = request;
36
+ if (!Array.isArray(body.messages)) {
37
+ throw new AdapterValidationError('messages must be a non-empty array');
38
+ }
39
+ if (body.messages.length === 0) {
40
+ throw new AdapterValidationError('messages must be a non-empty array');
41
+ }
42
+ const messages = [];
43
+ // Extract system field (Anthropic has it separate from messages)
44
+ if (typeof body.system === 'string' && body.system) {
45
+ messages.push({ role: 'system', content: body.system });
46
+ }
47
+ else if (Array.isArray(body.system)) {
48
+ // system can be an array of content blocks [{type: "text", text: "..."}]
49
+ const systemText = body.system
50
+ .filter((b) => b.type === 'text')
51
+ .map((b) => b.text)
52
+ .join('\n');
53
+ if (systemText) {
54
+ messages.push({ role: 'system', content: systemText });
55
+ }
56
+ }
57
+ // Convert Anthropic messages to normalized format
58
+ for (const msg of body.messages) {
59
+ const role = msg.role;
60
+ if (role === 'user') {
61
+ if (typeof msg.content === 'string') {
62
+ messages.push({ role: 'user', content: msg.content });
63
+ }
64
+ else if (Array.isArray(msg.content)) {
65
+ const blocks = msg.content;
66
+ const textParts = [];
67
+ for (const block of blocks) {
68
+ if (block.type === 'text') {
69
+ textParts.push(block.text);
70
+ }
71
+ else if (block.type === 'tool_result') {
72
+ // tool_result blocks become separate tool messages
73
+ const toolContent = typeof block.content === 'string'
74
+ ? block.content
75
+ : JSON.stringify(block.content);
76
+ messages.push({
77
+ role: 'tool',
78
+ content: toolContent,
79
+ tool_call_id: block.tool_use_id,
80
+ });
81
+ }
82
+ }
83
+ if (textParts.length > 0) {
84
+ messages.push({ role: 'user', content: textParts.join('\n') });
85
+ }
86
+ }
87
+ }
88
+ else if (role === 'assistant') {
89
+ if (typeof msg.content === 'string') {
90
+ messages.push({ role: 'assistant', content: msg.content });
91
+ }
92
+ else if (Array.isArray(msg.content)) {
93
+ const blocks = msg.content;
94
+ const textParts = [];
95
+ const toolCalls = [];
96
+ for (const block of blocks) {
97
+ if (block.type === 'text') {
98
+ textParts.push(block.text);
99
+ }
100
+ else if (block.type === 'tool_use') {
101
+ toolCalls.push({
102
+ id: block.id,
103
+ type: 'function',
104
+ function: {
105
+ name: block.name,
106
+ arguments: JSON.stringify(block.input),
107
+ },
108
+ });
109
+ }
110
+ }
111
+ const assistantMsg = {
112
+ role: 'assistant',
113
+ content: textParts.join('\n') || null,
114
+ };
115
+ if (toolCalls.length > 0) {
116
+ assistantMsg.tool_calls = toolCalls;
117
+ }
118
+ messages.push(assistantMsg);
119
+ }
120
+ }
121
+ }
122
+ const options = {};
123
+ if (body.temperature !== undefined)
124
+ options.temperature = body.temperature;
125
+ if (body.max_tokens !== undefined)
126
+ options.maxTokens = body.max_tokens;
127
+ if (body.top_p !== undefined)
128
+ options.topP = body.top_p;
129
+ if (Array.isArray(body.stop_sequences))
130
+ options.stop = body.stop_sequences;
131
+ if (Array.isArray(body.tools))
132
+ options.externalTools = body.tools;
133
+ if (body.model !== undefined)
134
+ options.model = body.model;
135
+ const id = `msg_${randomUUID()}`;
136
+ const context = {
137
+ adapterName: this.name,
138
+ protocol: {
139
+ id,
140
+ model: body.model ?? 'smart-agent',
141
+ },
142
+ };
143
+ return {
144
+ messages,
145
+ stream: body.stream === true,
146
+ options,
147
+ context,
148
+ };
149
+ }
150
+ // -------------------------------------------------------------------------
151
+ // formatResult
152
+ // -------------------------------------------------------------------------
153
+ formatResult(response, context) {
154
+ const { id, model } = context.protocol;
155
+ const content = [];
156
+ if (response.content) {
157
+ content.push({ type: 'text', text: response.content });
158
+ }
159
+ if (response.toolCalls) {
160
+ for (const tc of response.toolCalls) {
161
+ content.push({
162
+ type: 'tool_use',
163
+ id: tc.id,
164
+ name: tc.function.name,
165
+ input: JSON.parse(tc.function.arguments),
166
+ });
167
+ }
168
+ }
169
+ // Ensure at least one content block
170
+ if (content.length === 0) {
171
+ content.push({ type: 'text', text: '' });
172
+ }
173
+ return {
174
+ id,
175
+ type: 'message',
176
+ role: 'assistant',
177
+ model,
178
+ content,
179
+ stop_reason: mapStopReason(response.stopReason),
180
+ usage: {
181
+ input_tokens: response.usage?.promptTokens ?? 0,
182
+ output_tokens: response.usage?.completionTokens ?? 0,
183
+ },
184
+ };
185
+ }
186
+ // -------------------------------------------------------------------------
187
+ // formatError
188
+ // -------------------------------------------------------------------------
189
+ formatError(error, _context) {
190
+ return {
191
+ type: 'error',
192
+ error: {
193
+ type: 'api_error',
194
+ message: error.message,
195
+ },
196
+ };
197
+ }
198
+ // -------------------------------------------------------------------------
199
+ // transformStream
200
+ // -------------------------------------------------------------------------
201
+ async *transformStream(source, context) {
202
+ const { id, model } = context.protocol;
203
+ let messageStarted = false;
204
+ let blockIndex = 0;
205
+ let blockOpen = false;
206
+ let blockType = 'text';
207
+ let lastUsage = null;
208
+ // Helpers to emit block lifecycle events
209
+ const openTextBlock = () => {
210
+ blockOpen = true;
211
+ blockType = 'text';
212
+ return sse('content_block_start', {
213
+ type: 'content_block_start',
214
+ index: blockIndex,
215
+ content_block: { type: 'text', text: '' },
216
+ });
217
+ };
218
+ const closeBlock = () => {
219
+ blockOpen = false;
220
+ const evt = sse('content_block_stop', {
221
+ type: 'content_block_stop',
222
+ index: blockIndex,
223
+ });
224
+ blockIndex++;
225
+ return evt;
226
+ };
227
+ const emitMessageStart = () => {
228
+ messageStarted = true;
229
+ return sse('message_start', {
230
+ type: 'message_start',
231
+ message: {
232
+ id,
233
+ type: 'message',
234
+ role: 'assistant',
235
+ model,
236
+ content: [],
237
+ stop_reason: null,
238
+ usage: { input_tokens: 0, output_tokens: 0 },
239
+ },
240
+ });
241
+ };
242
+ for await (const chunk of source) {
243
+ // Error chunk
244
+ if (!chunk.ok) {
245
+ if (!messageStarted)
246
+ yield emitMessageStart();
247
+ if (blockOpen)
248
+ yield closeBlock();
249
+ yield sse('message_delta', {
250
+ type: 'message_delta',
251
+ delta: { stop_reason: 'end_turn' },
252
+ usage: lastUsage ?? { input_tokens: 0, output_tokens: 0 },
253
+ });
254
+ yield sse('message_stop', { type: 'message_stop' });
255
+ return;
256
+ }
257
+ const val = chunk.value;
258
+ // Skip heartbeat-only and timing-only chunks
259
+ if (!val.content &&
260
+ !val.toolCalls &&
261
+ !val.finishReason &&
262
+ !val.usage &&
263
+ (val.heartbeat || val.timing)) {
264
+ continue;
265
+ }
266
+ // Capture usage
267
+ if (val.usage) {
268
+ lastUsage = {
269
+ input_tokens: val.usage.promptTokens,
270
+ output_tokens: val.usage.completionTokens,
271
+ };
272
+ }
273
+ // Skip chunks that carry only usage
274
+ if (!val.content && !val.toolCalls && !val.finishReason) {
275
+ continue;
276
+ }
277
+ // Ensure message_start is emitted
278
+ if (!messageStarted)
279
+ yield emitMessageStart();
280
+ // Text content
281
+ if (val.content) {
282
+ if (!blockOpen || blockType !== 'text') {
283
+ if (blockOpen)
284
+ yield closeBlock();
285
+ yield openTextBlock();
286
+ }
287
+ yield sse('content_block_delta', {
288
+ type: 'content_block_delta',
289
+ index: blockIndex,
290
+ delta: { type: 'text_delta', text: val.content },
291
+ });
292
+ }
293
+ // Tool calls
294
+ if (val.toolCalls) {
295
+ // Close text block if open
296
+ if (blockOpen && blockType === 'text') {
297
+ yield closeBlock();
298
+ }
299
+ for (const call of val.toolCalls) {
300
+ const tc = toToolCallDelta(call, 0);
301
+ // Open tool_use block
302
+ blockOpen = true;
303
+ blockType = 'tool_use';
304
+ yield sse('content_block_start', {
305
+ type: 'content_block_start',
306
+ index: blockIndex,
307
+ content_block: {
308
+ type: 'tool_use',
309
+ id: tc.id ?? `toolu_${randomUUID()}`,
310
+ name: tc.name ?? '',
311
+ },
312
+ });
313
+ // Emit input_json_delta
314
+ if (tc.arguments) {
315
+ yield sse('content_block_delta', {
316
+ type: 'content_block_delta',
317
+ index: blockIndex,
318
+ delta: {
319
+ type: 'input_json_delta',
320
+ partial_json: tc.arguments,
321
+ },
322
+ });
323
+ }
324
+ // Close tool_use block
325
+ yield closeBlock();
326
+ }
327
+ }
328
+ // Finish reason
329
+ if (val.finishReason) {
330
+ if (blockOpen)
331
+ yield closeBlock();
332
+ yield sse('message_delta', {
333
+ type: 'message_delta',
334
+ delta: {
335
+ stop_reason: mapStopReason(val.finishReason),
336
+ },
337
+ usage: lastUsage ?? { input_tokens: 0, output_tokens: 0 },
338
+ });
339
+ yield sse('message_stop', { type: 'message_stop' });
340
+ return;
341
+ }
342
+ }
343
+ // Stream ended without finishReason — emit closing events
344
+ if (!messageStarted)
345
+ yield emitMessageStart();
346
+ if (blockOpen)
347
+ yield closeBlock();
348
+ yield sse('message_delta', {
349
+ type: 'message_delta',
350
+ delta: { stop_reason: 'end_turn' },
351
+ usage: lastUsage ?? { input_tokens: 0, output_tokens: 0 },
352
+ });
353
+ yield sse('message_stop', { type: 'message_stop' });
354
+ }
355
+ }
356
+ //# sourceMappingURL=anthropic-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-adapter.js","sourceRoot":"","sources":["../../src/api-adapters/anthropic-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { AnthropicApiAdapter } from './anthropic-adapter.js';
2
+ export { OpenAiApiAdapter } from './openai-adapter.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api-adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AnthropicApiAdapter } from './anthropic-adapter.js';
2
+ export { OpenAiApiAdapter } from './openai-adapter.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api-adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { LlmStreamChunk, OrchestratorError, Result, SmartAgentResponse } from '@mcp-abap-adt/llm-agent';
2
+ import { type ApiRequestContext, type ApiSseEvent, type ILlmApiAdapter, type NormalizedRequest } from '../interfaces/api-adapter.js';
3
+ export declare class OpenAiApiAdapter implements ILlmApiAdapter {
4
+ readonly name = "openai";
5
+ normalizeRequest(request: unknown): NormalizedRequest;
6
+ formatResult(response: SmartAgentResponse, context: ApiRequestContext): unknown;
7
+ formatError(error: OrchestratorError, _context: ApiRequestContext): unknown;
8
+ transformStream(source: AsyncIterable<Result<LlmStreamChunk, OrchestratorError>>, context: ApiRequestContext): AsyncIterable<ApiSseEvent>;
9
+ }
10
+ //# sourceMappingURL=openai-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-adapter.d.ts","sourceRoot":"","sources":["../../src/api-adapters/openai-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EAEd,iBAAiB,EACjB,MAAM,EACN,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AA0BtC,qBAAa,gBAAiB,YAAW,cAAc;IACrD,QAAQ,CAAC,IAAI,YAAY;IAMzB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB;IAiDrD,YAAY,CACV,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,GACzB,OAAO;IAyCV,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAcpE,eAAe,CACpB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,EAChE,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAAC,WAAW,CAAC;CAuL9B"}