@jonab/azure-ai-sdk 0.5.17

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/README.md +2 -0
  2. package/dist/adapters/anthropic-adapter.d.ts +172 -0
  3. package/dist/adapters/anthropic-adapter.d.ts.map +1 -0
  4. package/dist/adapters/anthropic-adapter.js +394 -0
  5. package/dist/adapters/anthropic-adapter.js.map +1 -0
  6. package/dist/adapters/index.d.ts +15 -0
  7. package/dist/adapters/index.d.ts.map +1 -0
  8. package/dist/adapters/index.js +85 -0
  9. package/dist/adapters/index.js.map +1 -0
  10. package/dist/adapters/openai-adapter.d.ts +180 -0
  11. package/dist/adapters/openai-adapter.d.ts.map +1 -0
  12. package/dist/adapters/openai-adapter.js +363 -0
  13. package/dist/adapters/openai-adapter.js.map +1 -0
  14. package/dist/adapters/openai-legacy-adapter.d.ts +70 -0
  15. package/dist/adapters/openai-legacy-adapter.d.ts.map +1 -0
  16. package/dist/adapters/openai-legacy-adapter.js +38 -0
  17. package/dist/adapters/openai-legacy-adapter.js.map +1 -0
  18. package/dist/adapters/types.d.ts +109 -0
  19. package/dist/adapters/types.d.ts.map +1 -0
  20. package/dist/adapters/types.js +2 -0
  21. package/dist/adapters/types.js.map +1 -0
  22. package/dist/azure-foundry-chat-language-model.d.ts +37 -0
  23. package/dist/azure-foundry-chat-language-model.d.ts.map +1 -0
  24. package/dist/azure-foundry-chat-language-model.js +119 -0
  25. package/dist/azure-foundry-chat-language-model.js.map +1 -0
  26. package/dist/azure-foundry-chat-options.d.ts +34 -0
  27. package/dist/azure-foundry-chat-options.d.ts.map +1 -0
  28. package/dist/azure-foundry-chat-options.js +2 -0
  29. package/dist/azure-foundry-chat-options.js.map +1 -0
  30. package/dist/azure-foundry-error.d.ts +12 -0
  31. package/dist/azure-foundry-error.d.ts.map +1 -0
  32. package/dist/azure-foundry-error.js +15 -0
  33. package/dist/azure-foundry-error.js.map +1 -0
  34. package/dist/azure-foundry-provider.d.ts +239 -0
  35. package/dist/azure-foundry-provider.d.ts.map +1 -0
  36. package/dist/azure-foundry-provider.js +263 -0
  37. package/dist/azure-foundry-provider.js.map +1 -0
  38. package/dist/index.d.ts +5 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +35 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/version.d.ts +2 -0
  43. package/dist/version.d.ts.map +1 -0
  44. package/dist/version.js +2 -0
  45. package/dist/version.js.map +1 -0
  46. package/package.json +62 -0
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # azure-ai-sdk
2
+ azure-ai-sdk
@@ -0,0 +1,172 @@
1
+ import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';
2
+ import { ParseResult } from '@ai-sdk/provider-utils';
3
+ import { z } from 'zod';
4
+ import { ChatAdapter, ParsedResponse, ParsedStreamChunk } from './types.js';
5
+ export declare const anthropicResponseSchema: z.ZodObject<{
6
+ id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7
+ type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
8
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
9
+ content: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
10
+ type: z.ZodLiteral<"text">;
11
+ text: z.ZodString;
12
+ }, z.core.$strip>, z.ZodObject<{
13
+ type: z.ZodLiteral<"tool_use">;
14
+ id: z.ZodString;
15
+ name: z.ZodString;
16
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
17
+ }, z.core.$strip>]>>;
18
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
20
+ stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
22
+ input_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
+ output_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
24
+ }, z.core.$strip>>>;
25
+ }, z.core.$strip>;
26
+ declare const anthropicChunkSchema: z.ZodUnion<readonly [z.ZodObject<{
27
+ type: z.ZodLiteral<"message_start">;
28
+ message: z.ZodObject<{
29
+ id: z.ZodString;
30
+ type: z.ZodString;
31
+ role: z.ZodString;
32
+ content: z.ZodArray<z.ZodUnknown>;
33
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
36
+ input_tokens: z.ZodNumber;
37
+ output_tokens: z.ZodNumber;
38
+ }, z.core.$strip>>>;
39
+ }, z.core.$strip>;
40
+ }, z.core.$strip>, z.ZodObject<{
41
+ type: z.ZodLiteral<"content_block_start">;
42
+ index: z.ZodNumber;
43
+ content_block: z.ZodObject<{
44
+ type: z.ZodString;
45
+ text: z.ZodOptional<z.ZodString>;
46
+ id: z.ZodOptional<z.ZodString>;
47
+ name: z.ZodOptional<z.ZodString>;
48
+ input: z.ZodOptional<z.ZodUnknown>;
49
+ }, z.core.$strip>;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ type: z.ZodLiteral<"content_block_delta">;
52
+ index: z.ZodNumber;
53
+ delta: z.ZodUnion<readonly [z.ZodObject<{
54
+ type: z.ZodLiteral<"text_delta">;
55
+ text: z.ZodString;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ type: z.ZodLiteral<"input_json_delta">;
58
+ partial_json: z.ZodString;
59
+ }, z.core.$strip>]>;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ type: z.ZodLiteral<"content_block_stop">;
62
+ index: z.ZodNumber;
63
+ }, z.core.$strip>, z.ZodObject<{
64
+ type: z.ZodLiteral<"message_delta">;
65
+ delta: z.ZodObject<{
66
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
67
+ stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
68
+ }, z.core.$strip>;
69
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
70
+ output_tokens: z.ZodNumber;
71
+ }, z.core.$strip>>>;
72
+ }, z.core.$strip>, z.ZodObject<{
73
+ type: z.ZodLiteral<"message_stop">;
74
+ }, z.core.$strip>, z.ZodObject<{
75
+ type: z.ZodLiteral<"ping">;
76
+ }, z.core.$strip>]>;
77
+ type AnthropicResponse = z.infer<typeof anthropicResponseSchema>;
78
+ type AnthropicChunk = z.infer<typeof anthropicChunkSchema>;
79
+ export declare class AnthropicAdapter implements ChatAdapter<AnthropicResponse, AnthropicChunk> {
80
+ readonly responseSchema: z.ZodObject<{
81
+ id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ role: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
+ content: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
85
+ type: z.ZodLiteral<"text">;
86
+ text: z.ZodString;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ type: z.ZodLiteral<"tool_use">;
89
+ id: z.ZodString;
90
+ name: z.ZodString;
91
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
92
+ }, z.core.$strip>]>>;
93
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
94
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
95
+ stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
96
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
97
+ input_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
98
+ output_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
99
+ }, z.core.$strip>>>;
100
+ }, z.core.$strip>;
101
+ readonly chunkSchema: z.ZodUnion<readonly [z.ZodObject<{
102
+ type: z.ZodLiteral<"message_start">;
103
+ message: z.ZodObject<{
104
+ id: z.ZodString;
105
+ type: z.ZodString;
106
+ role: z.ZodString;
107
+ content: z.ZodArray<z.ZodUnknown>;
108
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
110
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
111
+ input_tokens: z.ZodNumber;
112
+ output_tokens: z.ZodNumber;
113
+ }, z.core.$strip>>>;
114
+ }, z.core.$strip>;
115
+ }, z.core.$strip>, z.ZodObject<{
116
+ type: z.ZodLiteral<"content_block_start">;
117
+ index: z.ZodNumber;
118
+ content_block: z.ZodObject<{
119
+ type: z.ZodString;
120
+ text: z.ZodOptional<z.ZodString>;
121
+ id: z.ZodOptional<z.ZodString>;
122
+ name: z.ZodOptional<z.ZodString>;
123
+ input: z.ZodOptional<z.ZodUnknown>;
124
+ }, z.core.$strip>;
125
+ }, z.core.$strip>, z.ZodObject<{
126
+ type: z.ZodLiteral<"content_block_delta">;
127
+ index: z.ZodNumber;
128
+ delta: z.ZodUnion<readonly [z.ZodObject<{
129
+ type: z.ZodLiteral<"text_delta">;
130
+ text: z.ZodString;
131
+ }, z.core.$strip>, z.ZodObject<{
132
+ type: z.ZodLiteral<"input_json_delta">;
133
+ partial_json: z.ZodString;
134
+ }, z.core.$strip>]>;
135
+ }, z.core.$strip>, z.ZodObject<{
136
+ type: z.ZodLiteral<"content_block_stop">;
137
+ index: z.ZodNumber;
138
+ }, z.core.$strip>, z.ZodObject<{
139
+ type: z.ZodLiteral<"message_delta">;
140
+ delta: z.ZodObject<{
141
+ stop_reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
142
+ stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
143
+ }, z.core.$strip>;
144
+ usage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
145
+ output_tokens: z.ZodNumber;
146
+ }, z.core.$strip>>>;
147
+ }, z.core.$strip>, z.ZodObject<{
148
+ type: z.ZodLiteral<"message_stop">;
149
+ }, z.core.$strip>, z.ZodObject<{
150
+ type: z.ZodLiteral<"ping">;
151
+ }, z.core.$strip>]>;
152
+ readonly urlSuffix = "/anthropic/v1/messages";
153
+ readonly additionalHeaders: {
154
+ 'anthropic-version': string;
155
+ };
156
+ private finishReason;
157
+ private inputTokens;
158
+ private outputTokens;
159
+ private readonly toolCallAccumulators;
160
+ private readonly openTextIds;
161
+ private readonly generateId;
162
+ constructor(generateId: () => string);
163
+ buildRequest(options: LanguageModelV3CallOptions, modelId: string, modelInBody: boolean): {
164
+ body: Record<string, unknown>;
165
+ warnings: SharedV3Warning[];
166
+ };
167
+ parseResponse(raw: AnthropicResponse): ParsedResponse;
168
+ parseChunk(chunk: ParseResult<AnthropicChunk>): ParsedStreamChunk[];
169
+ flush(): ParsedStreamChunk[];
170
+ }
171
+ export {};
172
+ //# sourceMappingURL=anthropic-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/anthropic-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAG1B,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAuC5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;iBAclC,CAAC;AAoEH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAQxB,CAAC;AAEH,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACjE,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAgK3D,qBAAa,gBAAiB,YAAW,WAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC;IACrF,QAAQ,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;sBAA2B;IAClD,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAAwB;IAG5C,QAAQ,CAAC,SAAS,4BAA4B;IAG9C,QAAQ,CAAC,iBAAiB;;MAAyC;IACnE,OAAO,CAAC,YAAY,CAAqE;IACzF,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGjC;IACJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;gBAE9B,UAAU,EAAE,MAAM,MAAM;IAIpC,YAAY,CACV,OAAO,EAAE,0BAA0B,EACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;KAAE;IAyBjE,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IA0BrD,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,iBAAiB,EAAE;IAiFnE,KAAK,IAAI,iBAAiB,EAAE;CAoB7B"}
@@ -0,0 +1,394 @@
1
+ import { z } from 'zod';
2
+ // ---------------------------------------------------------------------------
3
+ // Zod schemas
4
+ // ---------------------------------------------------------------------------
5
+ const textContentBlockSchema = z.object({
6
+ type: z.literal('text'),
7
+ text: z.string(),
8
+ });
9
+ const toolUseContentBlockSchema = z.object({
10
+ type: z.literal('tool_use'),
11
+ id: z.string(),
12
+ name: z.string(),
13
+ input: z.record(z.string(), z.unknown()),
14
+ });
15
+ const contentBlockSchema = z.union([textContentBlockSchema, toolUseContentBlockSchema]);
16
+ export const anthropicResponseSchema = z.object({
17
+ id: z.string().nullish(),
18
+ type: z.string().nullish(),
19
+ role: z.string().nullish(),
20
+ content: z.array(contentBlockSchema),
21
+ model: z.string().nullish(),
22
+ stop_reason: z.string().nullish(),
23
+ stop_sequence: z.string().nullish(),
24
+ usage: z
25
+ .object({
26
+ input_tokens: z.number().nullish(),
27
+ output_tokens: z.number().nullish(),
28
+ })
29
+ .nullish(),
30
+ });
31
+ // Anthropic streaming uses Server-Sent Events with different message types
32
+ const anthropicStreamMessageStartSchema = z.object({
33
+ type: z.literal('message_start'),
34
+ message: z.object({
35
+ id: z.string(),
36
+ type: z.string(),
37
+ role: z.string(),
38
+ content: z.array(z.unknown()),
39
+ model: z.string().nullish(),
40
+ stop_reason: z.string().nullish(),
41
+ usage: z
42
+ .object({
43
+ input_tokens: z.number(),
44
+ output_tokens: z.number(),
45
+ })
46
+ .nullish(),
47
+ }),
48
+ });
49
+ const anthropicStreamContentBlockStartSchema = z.object({
50
+ type: z.literal('content_block_start'),
51
+ index: z.number(),
52
+ content_block: z.object({
53
+ type: z.string(),
54
+ text: z.string().optional(),
55
+ id: z.string().optional(),
56
+ name: z.string().optional(),
57
+ input: z.unknown().optional(),
58
+ }),
59
+ });
60
+ const anthropicStreamContentBlockDeltaSchema = z.object({
61
+ type: z.literal('content_block_delta'),
62
+ index: z.number(),
63
+ delta: z.union([
64
+ z.object({ type: z.literal('text_delta'), text: z.string() }),
65
+ z.object({ type: z.literal('input_json_delta'), partial_json: z.string() }),
66
+ ]),
67
+ });
68
+ const anthropicStreamContentBlockStopSchema = z.object({
69
+ type: z.literal('content_block_stop'),
70
+ index: z.number(),
71
+ });
72
+ const anthropicStreamMessageDeltaSchema = z.object({
73
+ type: z.literal('message_delta'),
74
+ delta: z.object({
75
+ stop_reason: z.string().nullish(),
76
+ stop_sequence: z.string().nullish(),
77
+ }),
78
+ usage: z
79
+ .object({
80
+ output_tokens: z.number(),
81
+ })
82
+ .nullish(),
83
+ });
84
+ const anthropicStreamMessageStopSchema = z.object({
85
+ type: z.literal('message_stop'),
86
+ });
87
+ const anthropicStreamPingSchema = z.object({
88
+ type: z.literal('ping'),
89
+ });
90
+ const anthropicChunkSchema = z.union([
91
+ anthropicStreamMessageStartSchema,
92
+ anthropicStreamContentBlockStartSchema,
93
+ anthropicStreamContentBlockDeltaSchema,
94
+ anthropicStreamContentBlockStopSchema,
95
+ anthropicStreamMessageDeltaSchema,
96
+ anthropicStreamMessageStopSchema,
97
+ anthropicStreamPingSchema,
98
+ ]);
99
+ // ---------------------------------------------------------------------------
100
+ // Shared helpers
101
+ // ---------------------------------------------------------------------------
102
+ function mapFinishReason(reason) {
103
+ const raw = reason ?? undefined;
104
+ const unified = (() => {
105
+ switch (reason) {
106
+ case 'end_turn': return 'stop';
107
+ case 'max_tokens': return 'length';
108
+ case 'tool_use': return 'tool-calls';
109
+ case 'stop_sequence': return 'stop';
110
+ default: return 'other';
111
+ }
112
+ })();
113
+ return { unified, raw };
114
+ }
115
+ function convertToAnthropicMessages(prompt) {
116
+ const messages = [];
117
+ let systemPrompt;
118
+ for (const message of prompt) {
119
+ switch (message.role) {
120
+ case 'system': {
121
+ // Anthropic expects system as a separate parameter, not a message
122
+ systemPrompt = message.content;
123
+ break;
124
+ }
125
+ case 'user': {
126
+ const content = [];
127
+ for (const part of message.content) {
128
+ if (part.type === 'text') {
129
+ content.push({ type: 'text', text: part.text });
130
+ }
131
+ else if (part.type === 'file') {
132
+ const { data, mediaType } = part;
133
+ // Anthropic supports images via base64 URLs
134
+ if (mediaType.startsWith('image/')) {
135
+ let base64Data;
136
+ if (data instanceof URL) {
137
+ // For URLs, we'd need to fetch them; for now, treat as external
138
+ content.push({ type: 'text', text: `[Image URL: ${data.href}]` });
139
+ }
140
+ else if (typeof data === 'string') {
141
+ base64Data = data;
142
+ }
143
+ else {
144
+ base64Data = Buffer.from(data).toString('base64');
145
+ }
146
+ if (typeof data !== 'string' && !(data instanceof URL)) {
147
+ // Image blocks would go here, but Anthropic's model format differs
148
+ content.push({ type: 'text', text: `[Image: ${mediaType}]` });
149
+ }
150
+ }
151
+ }
152
+ }
153
+ messages.push({ role: 'user', content });
154
+ break;
155
+ }
156
+ case 'assistant': {
157
+ const content = [];
158
+ let textContent = '';
159
+ for (const part of message.content) {
160
+ switch (part.type) {
161
+ case 'text':
162
+ textContent += part.text;
163
+ break;
164
+ case 'tool-call':
165
+ if (textContent) {
166
+ content.push({ type: 'text', text: textContent });
167
+ textContent = '';
168
+ }
169
+ content.push({
170
+ type: 'tool_use',
171
+ id: part.toolCallId,
172
+ name: part.toolName,
173
+ input: typeof part.input === 'string' ? JSON.parse(part.input) : part.input,
174
+ });
175
+ break;
176
+ }
177
+ }
178
+ if (textContent) {
179
+ content.push({ type: 'text', text: textContent });
180
+ }
181
+ messages.push({ role: 'assistant', content });
182
+ break;
183
+ }
184
+ case 'tool': {
185
+ for (const part of message.content) {
186
+ if (part.type !== 'tool-result')
187
+ continue;
188
+ const content = toolResultToString(part.output);
189
+ messages.push({
190
+ role: 'user',
191
+ content: [
192
+ {
193
+ type: 'text',
194
+ text: `Tool result from ${part.toolCallId}: ${content}`,
195
+ },
196
+ ],
197
+ });
198
+ }
199
+ break;
200
+ }
201
+ }
202
+ }
203
+ return { messages, system: systemPrompt };
204
+ }
205
+ function toolResultToString(output) {
206
+ if (output.type === 'text' || output.type === 'error-text') {
207
+ return String(output.value ?? '');
208
+ }
209
+ if (output.type === 'json' || output.type === 'error-json') {
210
+ return JSON.stringify(output.value);
211
+ }
212
+ if (output.type === 'content' && Array.isArray(output.value)) {
213
+ return output.value
214
+ .map((p) => p.text ?? '')
215
+ .join('');
216
+ }
217
+ return JSON.stringify(output);
218
+ }
219
+ function buildTools(options) {
220
+ const warnings = [];
221
+ let tools;
222
+ if (options.topK != null)
223
+ warnings.push({ type: 'unsupported', feature: 'topK' });
224
+ if (options.presencePenalty != null)
225
+ warnings.push({ type: 'unsupported', feature: 'presencePenalty' });
226
+ if (options.frequencyPenalty != null)
227
+ warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });
228
+ if (options.tools && options.tools.length > 0) {
229
+ tools = options.tools
230
+ .filter((t) => t.type === 'function')
231
+ .map((t) => ({
232
+ name: t.name,
233
+ description: t.description,
234
+ input_schema: t.inputSchema,
235
+ }));
236
+ }
237
+ return { tools, warnings };
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // Anthropic adapter (Messages API for Azure Foundry)
241
+ // ---------------------------------------------------------------------------
242
+ export class AnthropicAdapter {
243
+ responseSchema = anthropicResponseSchema;
244
+ chunkSchema = anthropicChunkSchema;
245
+ // Anthropic Messages API path — overrides the default '/chat/completions'
246
+ urlSuffix = '/anthropic/v1/messages';
247
+ // Required by the Anthropic API
248
+ additionalHeaders = { 'anthropic-version': '2023-06-01' };
249
+ finishReason = { unified: 'other', raw: undefined };
250
+ inputTokens;
251
+ outputTokens;
252
+ toolCallAccumulators = new Map();
253
+ openTextIds = new Set();
254
+ generateId;
255
+ constructor(generateId) {
256
+ this.generateId = generateId;
257
+ }
258
+ buildRequest(options, modelId, modelInBody) {
259
+ const { tools, warnings } = buildTools(options);
260
+ const { messages, system } = convertToAnthropicMessages(options.prompt);
261
+ // Suppress temperature/top_p of 0
262
+ const explicitTemperature = options.temperature !== 0 ? options.temperature : undefined;
263
+ const explicitTopP = options.topP !== 0 ? options.topP : undefined;
264
+ const body = {
265
+ ...(modelInBody ? { model: modelId } : {}),
266
+ messages,
267
+ max_tokens: options.maxOutputTokens ?? 4096,
268
+ temperature: explicitTemperature,
269
+ top_p: explicitTopP,
270
+ ...(system ? { system } : {}),
271
+ ...(tools != null ? { tools } : {}),
272
+ };
273
+ for (const key of Object.keys(body)) {
274
+ if (body[key] === undefined)
275
+ delete body[key];
276
+ }
277
+ return { body, warnings };
278
+ }
279
+ parseResponse(raw) {
280
+ const content = [];
281
+ for (const block of raw.content) {
282
+ if (block.type === 'text') {
283
+ content.push({ type: 'text', text: block.text });
284
+ }
285
+ else if (block.type === 'tool_use') {
286
+ content.push({
287
+ type: 'tool-call',
288
+ toolCallId: block.id,
289
+ toolName: block.name,
290
+ input: JSON.stringify(block.input),
291
+ });
292
+ }
293
+ }
294
+ return {
295
+ content,
296
+ finishReason: mapFinishReason(raw.stop_reason),
297
+ usage: {
298
+ inputTokens: raw.usage?.input_tokens ?? undefined,
299
+ outputTokens: raw.usage?.output_tokens ?? undefined,
300
+ },
301
+ };
302
+ }
303
+ parseChunk(chunk) {
304
+ if (!chunk.success)
305
+ return [{ type: 'error', error: chunk.error }];
306
+ const parts = [];
307
+ const value = chunk.value;
308
+ switch (value.type) {
309
+ case 'message_start': {
310
+ if (value.message.usage) {
311
+ this.inputTokens = value.message.usage.input_tokens;
312
+ }
313
+ break;
314
+ }
315
+ case 'content_block_start': {
316
+ const idx = value.index;
317
+ if (value.content_block.type === 'text') {
318
+ const textId = `text-${idx}`;
319
+ this.openTextIds.add(textId);
320
+ parts.push({ type: 'text-start', id: textId });
321
+ }
322
+ else if (value.content_block.type === 'tool_use') {
323
+ const toolId = value.content_block.id ?? this.generateId();
324
+ const toolName = value.content_block.name ?? '';
325
+ this.toolCallAccumulators.set(idx, {
326
+ id: toolId,
327
+ name: toolName,
328
+ inputJson: '',
329
+ });
330
+ parts.push({ type: 'tool-input-start', id: toolId, toolName });
331
+ }
332
+ break;
333
+ }
334
+ case 'content_block_delta': {
335
+ const idx = value.index;
336
+ const delta = value.delta;
337
+ if (delta.type === 'text_delta') {
338
+ const textId = `text-${idx}`;
339
+ parts.push({ type: 'text-delta', id: textId, delta: delta.text });
340
+ }
341
+ else if (delta.type === 'input_json_delta') {
342
+ const acc = this.toolCallAccumulators.get(idx);
343
+ if (acc) {
344
+ acc.inputJson += delta.partial_json;
345
+ parts.push({ type: 'tool-input-delta', id: acc.id, delta: delta.partial_json });
346
+ }
347
+ }
348
+ break;
349
+ }
350
+ case 'content_block_stop': {
351
+ const idx = value.index;
352
+ const acc = this.toolCallAccumulators.get(idx);
353
+ if (acc) {
354
+ const textId = `text-${idx}`;
355
+ if (this.openTextIds.has(textId)) {
356
+ parts.push({ type: 'text-end', id: textId });
357
+ }
358
+ }
359
+ break;
360
+ }
361
+ case 'message_delta': {
362
+ if (value.delta.stop_reason) {
363
+ this.finishReason = mapFinishReason(value.delta.stop_reason);
364
+ }
365
+ if (value.usage) {
366
+ this.outputTokens = value.usage.output_tokens;
367
+ }
368
+ break;
369
+ }
370
+ case 'message_stop': {
371
+ // End of stream
372
+ break;
373
+ }
374
+ }
375
+ return parts;
376
+ }
377
+ flush() {
378
+ const parts = [];
379
+ for (const textId of this.openTextIds) {
380
+ parts.push({ type: 'text-end', id: textId });
381
+ }
382
+ for (const acc of this.toolCallAccumulators.values()) {
383
+ parts.push({ type: 'tool-input-end', id: acc.id });
384
+ parts.push({ type: 'tool-call', toolCallId: acc.id, toolName: acc.name, input: acc.inputJson });
385
+ }
386
+ parts.push({
387
+ type: 'finish',
388
+ finishReason: this.finishReason,
389
+ usage: { inputTokens: this.inputTokens, outputTokens: this.outputTokens },
390
+ });
391
+ return parts;
392
+ }
393
+ }
394
+ //# sourceMappingURL=anthropic-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-adapter.js","sourceRoot":"","sources":["../../src/adapters/anthropic-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AdapterType, ChatAdapter } from './types.js';
2
+ export { OpenAIAdapter } from './openai-adapter.js';
3
+ export { OpenAILegacyAdapter } from './openai-legacy-adapter.js';
4
+ export { AnthropicAdapter } from './anthropic-adapter.js';
5
+ export type { AdapterType, ChatAdapter } from './types.js';
6
+ /**
7
+ * Resolve and instantiate the correct ChatAdapter for a given model.
8
+ *
9
+ * Resolution order:
10
+ * 1. Explicit adapterType from settings — user always wins
11
+ * 2. Model ID heuristic — pattern-matched against known model families
12
+ * 3. Default: 'openai'
13
+ */
14
+ export declare function resolveAdapter(modelId: string, adapterType: AdapterType | undefined, idGenerator?: () => string): ChatAdapter;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6D3D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,WAAW,GAAE,MAAM,MAAmB,GACrC,WAAW,CAiBb"}