@namzu/bedrock 0.0.1

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/client.js ADDED
@@ -0,0 +1,410 @@
1
+ import { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand, } from '@aws-sdk/client-bedrock-runtime';
2
+ function extractSystemBlocks(messages) {
3
+ return messages
4
+ .filter((m) => m.role === 'system')
5
+ .map((m) => ({ text: typeof m.content === 'string' ? m.content : '' }));
6
+ }
7
+ function toBedrockRole(role) {
8
+ return role === 'assistant' ? 'assistant' : 'user';
9
+ }
10
+ function toBedrockMessages(messages) {
11
+ const out = [];
12
+ let pendingToolResults = [];
13
+ const flushToolResults = () => {
14
+ if (pendingToolResults.length > 0) {
15
+ out.push({ role: 'user', content: pendingToolResults });
16
+ pendingToolResults = [];
17
+ }
18
+ };
19
+ for (const msg of messages) {
20
+ if (msg.role === 'system')
21
+ continue;
22
+ if (msg.role === 'tool') {
23
+ const toolMsg = msg;
24
+ const resultBlock = {
25
+ text: typeof toolMsg.content === 'string' ? toolMsg.content : JSON.stringify(toolMsg.content),
26
+ };
27
+ pendingToolResults.push({
28
+ toolResult: {
29
+ toolUseId: toolMsg.toolCallId ?? 'unknown',
30
+ content: [resultBlock],
31
+ },
32
+ });
33
+ continue;
34
+ }
35
+ flushToolResults();
36
+ if (msg.role === 'assistant' && 'toolCalls' in msg && msg.toolCalls) {
37
+ const content = [];
38
+ if (msg.content) {
39
+ content.push({ text: msg.content });
40
+ }
41
+ for (const tc of msg.toolCalls) {
42
+ content.push({
43
+ toolUse: {
44
+ toolUseId: tc.id,
45
+ name: tc.function.name,
46
+ input: JSON.parse(tc.function.arguments || '{}'),
47
+ },
48
+ });
49
+ }
50
+ out.push({ role: 'assistant', content });
51
+ continue;
52
+ }
53
+ const text = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
54
+ out.push({
55
+ role: toBedrockRole(msg.role),
56
+ content: [{ text }],
57
+ });
58
+ }
59
+ flushToolResults();
60
+ return out;
61
+ }
62
+ function messagesContainToolBlocks(messages) {
63
+ for (const msg of messages) {
64
+ if (msg.role === 'tool')
65
+ return true;
66
+ if (msg.role === 'assistant' &&
67
+ 'toolCalls' in msg &&
68
+ msg.toolCalls &&
69
+ msg.toolCalls.length > 0) {
70
+ return true;
71
+ }
72
+ }
73
+ return false;
74
+ }
75
+ function extractToolNamesFromHistory(messages) {
76
+ const names = new Set();
77
+ for (const msg of messages) {
78
+ if (msg.role === 'assistant' && 'toolCalls' in msg && msg.toolCalls) {
79
+ for (const tc of msg.toolCalls) {
80
+ names.add(tc.function.name);
81
+ }
82
+ }
83
+ }
84
+ return Array.from(names);
85
+ }
86
+ function toBedrockToolConfig(params) {
87
+ if (params.tools && params.tools.length > 0) {
88
+ const tools = params.tools.map((t) => ({
89
+ toolSpec: {
90
+ name: t.function.name,
91
+ description: t.function.description ?? '',
92
+ inputSchema: {
93
+ json: (t.function.parameters ?? {}),
94
+ },
95
+ },
96
+ }));
97
+ const toolChoice = formatToolChoice(params.toolChoice);
98
+ return { tools, toolChoice };
99
+ }
100
+ if (messagesContainToolBlocks(params.messages)) {
101
+ const toolNames = extractToolNamesFromHistory(params.messages);
102
+ if (toolNames.length > 0) {
103
+ const tools = toolNames.map((name) => ({
104
+ toolSpec: {
105
+ name,
106
+ description: '(completed)',
107
+ inputSchema: { json: { type: 'object' } },
108
+ },
109
+ }));
110
+ return { tools, toolChoice: { auto: {} } };
111
+ }
112
+ }
113
+ return undefined;
114
+ }
115
+ function formatToolChoice(tc) {
116
+ if (!tc || tc === 'auto')
117
+ return { auto: {} };
118
+ if (tc === 'none')
119
+ return { auto: {} };
120
+ if (tc === 'required')
121
+ return { any: {} };
122
+ if (typeof tc === 'object' && tc.type === 'function') {
123
+ return { tool: { name: tc.function.name } };
124
+ }
125
+ return { auto: {} };
126
+ }
127
+ function parseUsage(raw) {
128
+ if (!raw) {
129
+ return {
130
+ promptTokens: 0,
131
+ completionTokens: 0,
132
+ totalTokens: 0,
133
+ cachedTokens: 0,
134
+ cacheWriteTokens: 0,
135
+ };
136
+ }
137
+ const input = raw.inputTokens ?? 0;
138
+ const output = raw.outputTokens ?? 0;
139
+ return {
140
+ promptTokens: input,
141
+ completionTokens: output,
142
+ totalTokens: raw.totalTokens ?? input + output,
143
+ cachedTokens: raw.cacheReadInputTokenCount ?? 0,
144
+ cacheWriteTokens: raw.cacheWriteInputTokenCount ?? 0,
145
+ };
146
+ }
147
+ function mapStopReason(reason) {
148
+ switch (reason) {
149
+ case 'end_turn':
150
+ case 'stop_sequence':
151
+ return 'stop';
152
+ case 'tool_use':
153
+ return 'tool_calls';
154
+ case 'max_tokens':
155
+ return 'length';
156
+ case 'content_filtered':
157
+ return 'content_filter';
158
+ default:
159
+ return 'stop';
160
+ }
161
+ }
162
+ function extractResponseContent(content) {
163
+ if (!content || content.length === 0)
164
+ return { text: null, toolCalls: undefined };
165
+ let text = null;
166
+ const toolCalls = [];
167
+ for (const block of content) {
168
+ if ('text' in block && block.text) {
169
+ text = (text ?? '') + block.text;
170
+ }
171
+ if ('toolUse' in block && block.toolUse) {
172
+ const tu = block.toolUse;
173
+ toolCalls.push({
174
+ id: tu.toolUseId ?? `tool-${Date.now()}`,
175
+ type: 'function',
176
+ function: {
177
+ name: tu.name ?? '',
178
+ arguments: JSON.stringify(tu.input ?? {}),
179
+ },
180
+ });
181
+ }
182
+ }
183
+ return {
184
+ text,
185
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
186
+ };
187
+ }
188
+ export class BedrockProvider {
189
+ id = 'bedrock';
190
+ name = 'AWS Bedrock';
191
+ client;
192
+ config;
193
+ constructor(config) {
194
+ this.config = config;
195
+ const clientConfig = {};
196
+ if (config.region) {
197
+ clientConfig.region = config.region;
198
+ }
199
+ if (config.accessKeyId && config.secretAccessKey) {
200
+ clientConfig.credentials = {
201
+ accessKeyId: config.accessKeyId,
202
+ secretAccessKey: config.secretAccessKey,
203
+ ...(config.sessionToken ? { sessionToken: config.sessionToken } : {}),
204
+ };
205
+ }
206
+ this.client = new BedrockRuntimeClient(clientConfig);
207
+ }
208
+ async chat(params) {
209
+ const system = extractSystemBlocks(params.messages);
210
+ const messages = toBedrockMessages(params.messages);
211
+ const toolConfig = toBedrockToolConfig(params);
212
+ const inferenceConfig = {};
213
+ if (params.maxTokens !== undefined)
214
+ inferenceConfig.maxTokens = params.maxTokens;
215
+ if (params.temperature !== undefined)
216
+ inferenceConfig.temperature = params.temperature;
217
+ if (params.topP !== undefined)
218
+ inferenceConfig.topP = params.topP;
219
+ if (params.stop)
220
+ inferenceConfig.stopSequences = params.stop;
221
+ const command = new ConverseCommand({
222
+ modelId: params.model,
223
+ system: system.length > 0 ? system : undefined,
224
+ messages,
225
+ toolConfig,
226
+ inferenceConfig,
227
+ });
228
+ const response = await this.client.send(command, {
229
+ requestTimeout: this.config.timeout ?? 120_000,
230
+ });
231
+ const { text, toolCalls } = extractResponseContent(response.output?.message?.content);
232
+ const usage = parseUsage(response.usage);
233
+ const finishReason = mapStopReason(response.stopReason);
234
+ const requestId = response.$metadata.requestId ?? `bedrock-${Date.now()}`;
235
+ return {
236
+ id: requestId,
237
+ model: params.model,
238
+ message: {
239
+ role: 'assistant',
240
+ content: text,
241
+ toolCalls,
242
+ },
243
+ finishReason,
244
+ usage,
245
+ };
246
+ }
247
+ async *chatStream(params) {
248
+ const system = extractSystemBlocks(params.messages);
249
+ const messages = toBedrockMessages(params.messages);
250
+ const toolConfig = toBedrockToolConfig(params);
251
+ const inferenceConfig = {};
252
+ if (params.maxTokens !== undefined)
253
+ inferenceConfig.maxTokens = params.maxTokens;
254
+ if (params.temperature !== undefined)
255
+ inferenceConfig.temperature = params.temperature;
256
+ if (params.topP !== undefined)
257
+ inferenceConfig.topP = params.topP;
258
+ if (params.stop)
259
+ inferenceConfig.stopSequences = params.stop;
260
+ const command = new ConverseStreamCommand({
261
+ modelId: params.model,
262
+ system: system.length > 0 ? system : undefined,
263
+ messages,
264
+ toolConfig,
265
+ inferenceConfig,
266
+ });
267
+ const response = await this.client.send(command, {
268
+ requestTimeout: this.config.timeout ?? 120_000,
269
+ });
270
+ if (!response.stream) {
271
+ throw new Error('Bedrock returned no stream body');
272
+ }
273
+ const requestId = response.$metadata.requestId ?? `bedrock-${Date.now()}`;
274
+ const activeToolCalls = new Map();
275
+ let toolCallIndex = 0;
276
+ for await (const event of response.stream) {
277
+ try {
278
+ if ('contentBlockDelta' in event && event.contentBlockDelta?.delta) {
279
+ const delta = event.contentBlockDelta.delta;
280
+ if ('text' in delta && delta.text) {
281
+ yield {
282
+ id: requestId,
283
+ delta: { content: delta.text },
284
+ };
285
+ }
286
+ if ('toolUse' in delta && delta.toolUse) {
287
+ const idx = event.contentBlockDelta.contentBlockIndex ?? toolCallIndex;
288
+ const active = activeToolCalls.get(idx);
289
+ if (active) {
290
+ active.args += delta.toolUse.input ?? '';
291
+ yield {
292
+ id: requestId,
293
+ delta: {
294
+ toolCalls: [
295
+ {
296
+ index: idx,
297
+ function: { arguments: delta.toolUse.input ?? '' },
298
+ },
299
+ ],
300
+ },
301
+ };
302
+ }
303
+ }
304
+ }
305
+ if ('contentBlockStart' in event && event.contentBlockStart?.start) {
306
+ const start = event.contentBlockStart.start;
307
+ if ('toolUse' in start && start.toolUse) {
308
+ const idx = event.contentBlockStart.contentBlockIndex ?? toolCallIndex;
309
+ activeToolCalls.set(idx, {
310
+ id: start.toolUse.toolUseId ?? `tool-${Date.now()}`,
311
+ name: start.toolUse.name ?? '',
312
+ args: '',
313
+ });
314
+ yield {
315
+ id: requestId,
316
+ delta: {
317
+ toolCalls: [
318
+ {
319
+ index: idx,
320
+ id: start.toolUse.toolUseId,
321
+ type: 'function',
322
+ function: { name: start.toolUse.name ?? '' },
323
+ },
324
+ ],
325
+ },
326
+ };
327
+ toolCallIndex = idx + 1;
328
+ }
329
+ }
330
+ if ('contentBlockStop' in event) {
331
+ }
332
+ if ('messageStop' in event && event.messageStop) {
333
+ yield {
334
+ id: requestId,
335
+ delta: {},
336
+ finishReason: mapStopReason(event.messageStop.stopReason),
337
+ };
338
+ }
339
+ if ('metadata' in event && event.metadata?.usage) {
340
+ const usage = parseUsage(event.metadata.usage);
341
+ yield {
342
+ id: requestId,
343
+ delta: {},
344
+ usage,
345
+ };
346
+ }
347
+ }
348
+ catch (parseErr) {
349
+ yield {
350
+ id: requestId,
351
+ delta: { content: undefined },
352
+ finishReason: undefined,
353
+ usage: undefined,
354
+ error: `Stream parse error: ${parseErr instanceof Error ? parseErr.message : String(parseErr)}`,
355
+ };
356
+ }
357
+ }
358
+ }
359
+ async listModels() {
360
+ return [
361
+ {
362
+ id: 'anthropic.claude-sonnet-4-20250514',
363
+ name: 'Claude Sonnet 4 (Bedrock)',
364
+ contextWindow: 200_000,
365
+ maxOutputTokens: 64_000,
366
+ inputPrice: 3.0,
367
+ outputPrice: 15.0,
368
+ supportsToolUse: true,
369
+ supportsStreaming: true,
370
+ },
371
+ {
372
+ id: 'anthropic.claude-haiku-4-20250514',
373
+ name: 'Claude Haiku 4 (Bedrock)',
374
+ contextWindow: 200_000,
375
+ maxOutputTokens: 64_000,
376
+ inputPrice: 0.8,
377
+ outputPrice: 4.0,
378
+ supportsToolUse: true,
379
+ supportsStreaming: true,
380
+ },
381
+ {
382
+ id: 'amazon.nova-pro-v1:0',
383
+ name: 'Amazon Nova Pro',
384
+ contextWindow: 300_000,
385
+ maxOutputTokens: 5_000,
386
+ inputPrice: 0.8,
387
+ outputPrice: 3.2,
388
+ supportsToolUse: true,
389
+ supportsStreaming: true,
390
+ },
391
+ ];
392
+ }
393
+ async healthCheck() {
394
+ try {
395
+ const command = new ConverseCommand({
396
+ modelId: 'anthropic.claude-haiku-4-20250514',
397
+ messages: [{ role: 'user', content: [{ text: 'hi' }] }],
398
+ inferenceConfig: { maxTokens: 1 },
399
+ });
400
+ const response = await this.client.send(command, {
401
+ requestTimeout: 5000,
402
+ });
403
+ return response.$metadata.httpStatusCode === 200;
404
+ }
405
+ catch {
406
+ return false;
407
+ }
408
+ }
409
+ }
410
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type ProviderCapabilities, type RegisterOptions } from '@namzu/sdk';
2
+ import type { BedrockProviderConfig } from './types.js';
3
+ declare module '@namzu/sdk' {
4
+ interface ProviderConfigRegistry {
5
+ bedrock: BedrockProviderConfig;
6
+ }
7
+ }
8
+ export declare const BEDROCK_CAPABILITIES: ProviderCapabilities;
9
+ /**
10
+ * Register `BedrockProvider` under the `'bedrock'` type in `@namzu/sdk`'s
11
+ * `ProviderRegistry`. Call once at app startup before
12
+ * `ProviderRegistry.create({ type: 'bedrock', ... })`.
13
+ *
14
+ * Throws `DuplicateProviderError` if `'bedrock'` is already registered.
15
+ * Pass `{ replace: true }` to override.
16
+ */
17
+ export declare function registerBedrock(options?: RegisterOptions): void;
18
+ export { BedrockProvider } from './client.js';
19
+ export type { BedrockConfig, BedrockProviderConfig } from './types.js';
20
+ //# 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,KAAK,oBAAoB,EAAoB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAU,sBAAsB;QAC/B,OAAO,EAAE,qBAAqB,CAAA;KAC9B;CACD;AAED,eAAO,MAAM,oBAAoB,EAAE,oBAIlC,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAE/D;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ import { ProviderRegistry } from '@namzu/sdk';
2
+ import { BedrockProvider } from './client.js';
3
+ export const BEDROCK_CAPABILITIES = {
4
+ supportsTools: true,
5
+ supportsStreaming: true,
6
+ supportsFunctionCalling: true,
7
+ };
8
+ /**
9
+ * Register `BedrockProvider` under the `'bedrock'` type in `@namzu/sdk`'s
10
+ * `ProviderRegistry`. Call once at app startup before
11
+ * `ProviderRegistry.create({ type: 'bedrock', ... })`.
12
+ *
13
+ * Throws `DuplicateProviderError` if `'bedrock'` is already registered.
14
+ * Pass `{ replace: true }` to override.
15
+ */
16
+ export function registerBedrock(options) {
17
+ ProviderRegistry.register('bedrock', BedrockProvider, BEDROCK_CAPABILITIES, options);
18
+ }
19
+ export { BedrockProvider } from './client.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,gBAAgB,EAAwB,MAAM,YAAY,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAW7C,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACzD,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,uBAAuB,EAAE,IAAI;CAC7B,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB;IACxD,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;AACrF,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Bedrock-specific provider config shapes.
3
+ *
4
+ * `BedrockConfig` is the constructor input for `BedrockProvider` (no discriminator).
5
+ * `BedrockProviderConfig` is the shape the consumer passes to
6
+ * `ProviderRegistry.create({ type: 'bedrock', ... })` — it extends `BedrockConfig`
7
+ * with the `type: 'bedrock'` discriminator for the registry's generic narrowing.
8
+ */
9
+ export interface BedrockConfig {
10
+ region?: string;
11
+ accessKeyId?: string;
12
+ secretAccessKey?: string;
13
+ sessionToken?: string;
14
+ timeout?: number;
15
+ }
16
+ export interface BedrockProviderConfig extends BedrockConfig {
17
+ type: 'bedrock';
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,IAAI,EAAE,SAAS,CAAA;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bedrock-specific provider config shapes.
3
+ *
4
+ * `BedrockConfig` is the constructor input for `BedrockProvider` (no discriminator).
5
+ * `BedrockProviderConfig` is the shape the consumer passes to
6
+ * `ProviderRegistry.create({ type: 'bedrock', ... })` — it extends `BedrockConfig`
7
+ * with the `type: 'bedrock'` discriminator for the registry's generic narrowing.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@namzu/bedrock",
3
+ "version": "0.0.1",
4
+ "description": "AWS Bedrock LLM provider for @namzu/sdk. Provides Converse API (chat + streaming) with full tool-use support.",
5
+ "license": "FSL-1.1-MIT",
6
+ "type": "module",
7
+ "homepage": "https://github.com/cogitave/namzu#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/cogitave/namzu.git",
11
+ "directory": "packages/providers/bedrock"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/cogitave/namzu/issues"
15
+ },
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/index.js",
21
+ "types": "./dist/index.d.ts"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "src",
27
+ "LICENSE.md",
28
+ "README.md",
29
+ "CHANGELOG.md"
30
+ ],
31
+ "sideEffects": false,
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "provenance": false
35
+ },
36
+ "dependencies": {
37
+ "@aws-sdk/client-bedrock-runtime": "^3.700.0"
38
+ },
39
+ "peerDependencies": {
40
+ "@namzu/sdk": "^1 || ^0.1.6"
41
+ },
42
+ "devDependencies": {
43
+ "@biomejs/biome": "^1.9.4",
44
+ "@types/node": "^22.19.17",
45
+ "typescript": "^5.5.0",
46
+ "vitest": "^2.0.0",
47
+ "@namzu/sdk": "^0.1.8"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc --build",
51
+ "dev": "tsc --build --watch",
52
+ "lint": "biome check src/",
53
+ "lint:fix": "biome check --write src/",
54
+ "format": "biome format --write src/",
55
+ "test": "vitest run --passWithNoTests",
56
+ "typecheck": "tsc --noEmit",
57
+ "verify": "bash scripts/verify.sh",
58
+ "release:patch": "bash scripts/release.sh patch",
59
+ "release:minor": "bash scripts/release.sh minor",
60
+ "release:major": "bash scripts/release.sh major",
61
+ "release:rc": "bash scripts/release.sh rc",
62
+ "release:beta": "bash scripts/release.sh beta",
63
+ "release:stable": "bash scripts/release.sh stable",
64
+ "release:dry": "bash scripts/release.sh patch --dry-run"
65
+ }
66
+ }
@@ -0,0 +1,50 @@
1
+ import { DuplicateProviderError, ProviderRegistry } from '@namzu/sdk'
2
+ import { beforeEach, describe, expect, it } from 'vitest'
3
+ import { BEDROCK_CAPABILITIES, registerBedrock } from '../index.js'
4
+
5
+ // Ensure a clean slate between tests. The sdk pre-registers 'mock' on import
6
+ // via its sideEffects whitelist; we only need to clear 'bedrock' to make
7
+ // re-registration deterministic across tests.
8
+ beforeEach(() => {
9
+ if (ProviderRegistry.isSupported('bedrock')) {
10
+ ProviderRegistry.unregister('bedrock')
11
+ }
12
+ })
13
+
14
+ describe('@namzu/bedrock', () => {
15
+ describe('registerBedrock()', () => {
16
+ it("adds 'bedrock' to the ProviderRegistry", () => {
17
+ expect(ProviderRegistry.isSupported('bedrock')).toBe(false)
18
+ registerBedrock()
19
+ expect(ProviderRegistry.isSupported('bedrock')).toBe(true)
20
+ expect(ProviderRegistry.listTypes()).toContain('bedrock')
21
+ })
22
+
23
+ it('throws DuplicateProviderError when called twice without options', () => {
24
+ registerBedrock()
25
+ expect(() => registerBedrock()).toThrowError(DuplicateProviderError)
26
+ })
27
+
28
+ it('allows re-registration when { replace: true } is passed', () => {
29
+ registerBedrock()
30
+ expect(() => registerBedrock({ replace: true })).not.toThrow()
31
+ expect(ProviderRegistry.isSupported('bedrock')).toBe(true)
32
+ })
33
+
34
+ it('exposes capabilities through the registry after registration', () => {
35
+ registerBedrock()
36
+ const caps = ProviderRegistry.getCapabilities('bedrock')
37
+ expect(caps).toEqual(BEDROCK_CAPABILITIES)
38
+ })
39
+ })
40
+
41
+ describe('BEDROCK_CAPABILITIES', () => {
42
+ it('declares the expected capability flags', () => {
43
+ expect(BEDROCK_CAPABILITIES).toEqual({
44
+ supportsTools: true,
45
+ supportsStreaming: true,
46
+ supportsFunctionCalling: true,
47
+ })
48
+ })
49
+ })
50
+ })