@namzu/bedrock 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - f8355de: tool schemas are rendered in the dialect each wire actually parses
8
+
9
+ A tool with a tuple-shaped field took down every request that offered it. The
10
+ kernel renders one canonical JSON Schema in draft-07, where a tuple is
11
+ `items: [a, b]`; one of the wires namzu speaks validates tool input as JSON
12
+ Schema 2020-12, where that spelling is invalid and a tuple must be
13
+ `prefixItems`. Every driver forwarded the rendering verbatim, so the built-in
14
+ `read` tool — whose `readRange` is a Zod tuple — produced a 400 that rejected
15
+ the **whole** request, taking every other tool in the call down with it. The
16
+ turn died before generating a token.
17
+
18
+ The failure had nothing to do with strict tool use, which is why the guard
19
+ added for the previous schema outage never saw it: it fires with strict
20
+ validation unset, and with strict on the dialect error arrives _first_.
21
+
22
+ Which dialect a wire parses is a property of the wire, so the conversion now
23
+ happens at each driver's boundary rather than in the renderer:
24
+
25
+ ```ts
26
+ import { toSchemaDialect, findDraft07Only } from "@namzu/sdk";
27
+
28
+ toSchemaDialect(schema, "2020-12"); // items: [a, b] -> prefixItems: [a, b]
29
+ findDraft07Only(schema); // paths that no 2020-12 parser will accept
30
+ ```
31
+
32
+ `renderToolSchema` is exported now too, so a caller assembling its own tool
33
+ payload gets the same memoized, `$schema`-stripped, deep-frozen rendering the
34
+ kernel puts on the wire — byte-identical across iterations, which matters
35
+ because the tools block sits at position 0 of the prompt-cache prefix.
36
+
37
+ `ToolCatalog` used to convert schemas through its own inline call with the same
38
+ options. Same output, none of the guarantees: no `$schema` stripping, no
39
+ memoization, no freeze. It goes through `renderToolSchema` now.
40
+
41
+ **Breaking, for the three drivers.** Their `@namzu/sdk` peer range was
42
+ `>=1.3.0` and is now `>=6.0.0`. That range was already wrong — the drivers call
43
+ kernel functions added well after 1.3.0 — and it would now let a package
44
+ manager install a combination that throws on every request carrying a tool.
45
+ Upgrade the kernel alongside the driver.
46
+
47
+ The conversion follows the model on multi-vendor wires. Bedrock's Converse API
48
+ carries several vendors through one request shape, and the 2020-12 requirement
49
+ was measured on one of them, so schemas bound for the others are left in the
50
+ dialect they were rendered in. Guessing there would trade a known break for an
51
+ unmeasured one.
52
+
3
53
  ## 3.1.0
4
54
 
5
55
  ### Minor Changes
@@ -162,10 +162,21 @@ describe('@namzu/bedrock — provider error taxonomy', () => {
162
162
  providerId: 'bedrock',
163
163
  });
164
164
  });
165
- it('drops a secret-bearing validation stream event without retaining cause', async () => {
166
- const secret = 'aws-secret-FAKE-DO-NOT-LOG';
165
+ it('keeps a validation stream event’s complaint, scrubbed, and still retains no cause', async () => {
166
+ // This test used to assert the opposite half: that the vendor's sentence
167
+ // was dropped whole. That was the safe-looking reading of "an error body
168
+ // can echo a credential", and it cost a day of production downtime —
169
+ // the wire had been naming the exact offending field the entire time and
170
+ // the SDK deleted the sentence before anyone could read it.
171
+ //
172
+ // So the guarantee changed shape rather than weakening: what is scrubbed
173
+ // is anything CREDENTIAL-SHAPED, and what survives is the complaint. The
174
+ // `cause` half is unchanged and still matters — a `cause` survives every
175
+ // logger that serializes an error chain, which is how the raw body would
176
+ // get out regardless of what the message says.
177
+ const key = 'AKIAIOSFODNN7EXAMPLE';
167
178
  const aws = new ValidationException({
168
- message: `invalid request echoed ${secret}`,
179
+ message: `inputSchema is invalid, echoed from key ${key}`,
169
180
  $metadata: { httpStatusCode: 400 },
170
181
  });
171
182
  const err = await captureChatStreamError(providerStreaming({ validationException: aws }));
@@ -174,7 +185,8 @@ describe('@namzu/bedrock — provider error taxonomy', () => {
174
185
  kind: 'bad_request',
175
186
  providerId: 'bedrock',
176
187
  });
177
- expect(err.message).not.toContain(secret);
188
+ expect(err.message).toContain('inputSchema is invalid');
189
+ expect(err.message).not.toContain(key);
178
190
  expect('cause' in err).toBe(false);
179
191
  });
180
192
  it('preserves the caller abort reason when the SDK replaces the error object', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"error-taxonomy.test.js","sourceRoot":"","sources":["../../src/__tests__/error-taxonomy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-taxonomy.test.js","sourceRoot":"","sources":["../../src/__tests__/error-taxonomy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-schema-dialect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-dialect.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tool-schema-dialect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import { findDraft07Only } from '@namzu/sdk';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { toBedrockToolConfig } from '../client.js';
4
+ /**
5
+ * Converse carries Claude, so it carries Claude's schema dialect too.
6
+ *
7
+ * The kernel renders tool schemas as draft-07, where a tuple is
8
+ * `items: [a, b]`. Anthropic's serving layer validates `input_schema` as JSON
9
+ * Schema 2020-12, where that spelling is invalid — the tuple has to be
10
+ * `prefixItems` — and it rejects the whole request rather than ignoring the
11
+ * field, so one tuple-shaped tool takes down every tool in the call.
12
+ *
13
+ * That fix landed on the direct Anthropic driver and on the HTTP driver's
14
+ * Anthropic branch, and this driver was missed. It reaches the same models
15
+ * through a different front door; the validation happens in the same place.
16
+ *
17
+ * The conversion follows the MODEL, not the endpoint, because Converse is
18
+ * multi-vendor: `meta.llama*` and `mistral.*` come through this same function,
19
+ * and nothing establishes that they read 2020-12. Converting their schemas
20
+ * would be trading a known break for an unmeasured one.
21
+ */
22
+ const TUPLE_TOOL = [
23
+ {
24
+ type: 'function',
25
+ function: {
26
+ name: 'read',
27
+ description: 'reads',
28
+ parameters: {
29
+ type: 'object',
30
+ properties: {
31
+ // What `z.tuple([z.number(), z.number()])` renders to.
32
+ readRange: {
33
+ type: 'array',
34
+ items: [{ type: 'number' }, { type: 'number' }],
35
+ minItems: 2,
36
+ maxItems: 2,
37
+ },
38
+ },
39
+ },
40
+ },
41
+ },
42
+ ];
43
+ function rangeOf(model) {
44
+ const config = toBedrockToolConfig({ model, messages: [], tools: TUPLE_TOOL });
45
+ const json = config?.tools?.[0]?.toolSpec?.inputSchema?.json;
46
+ const properties = json.properties;
47
+ return properties.readRange;
48
+ }
49
+ function schemaOf(model) {
50
+ const config = toBedrockToolConfig({ model, messages: [], tools: TUPLE_TOOL });
51
+ return config?.tools?.[0]?.toolSpec?.inputSchema?.json;
52
+ }
53
+ describe('a tuple reaches Claude on Converse in the dialect Claude reads', () => {
54
+ it.each([
55
+ ['anthropic.claude-sonnet-4-20250514', 'a bare vendor id'],
56
+ ['us.anthropic.claude-sonnet-4-5-20250929-v1:0', 'behind an inference profile'],
57
+ ['EU.Anthropic.Claude-Opus-4-1-v1:0', 'in whatever case the caller wrote'],
58
+ ])('converts for %s (%s)', (model) => {
59
+ expect(findDraft07Only(schemaOf(model))).toEqual([]);
60
+ const range = rangeOf(model);
61
+ expect(range.prefixItems).toHaveLength(2);
62
+ expect(range.items).toBeUndefined();
63
+ });
64
+ it('leaves another vendor on this wire alone', () => {
65
+ // Not timidity — the absence of a measurement. Anthropic's requirement
66
+ // was measured against its own wire; no such reading exists for these,
67
+ // and converting on a guess swaps a known break for an unknown one.
68
+ const range = rangeOf('meta.llama3-70b-instruct-v1:0');
69
+ expect(range.items).toHaveLength(2);
70
+ expect(range.prefixItems).toBeUndefined();
71
+ });
72
+ it('does not disturb a schema with no tuple in it', () => {
73
+ const config = toBedrockToolConfig({
74
+ model: 'anthropic.claude-sonnet-4-20250514',
75
+ messages: [],
76
+ tools: [
77
+ {
78
+ type: 'function',
79
+ function: {
80
+ name: 'ls',
81
+ description: 'lists',
82
+ parameters: {
83
+ type: 'object',
84
+ properties: { path: { type: 'string' } },
85
+ required: ['path'],
86
+ },
87
+ },
88
+ },
89
+ ],
90
+ });
91
+ expect(config?.tools?.[0]?.toolSpec?.inputSchema?.json).toEqual({
92
+ type: 'object',
93
+ properties: { path: { type: 'string' } },
94
+ required: ['path'],
95
+ });
96
+ });
97
+ });
98
+ //# sourceMappingURL=tool-schema-dialect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schema-dialect.test.js","sourceRoot":"","sources":["../../src/__tests__/tool-schema-dialect.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,OAAO,IAAI,cAAc,EAOzB,iBAAiB,EAEjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACX,oBAAoB,EAEpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,UAAU,EAEV,MAAM,YAAY,CAAA;AAUnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAY/C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,cAAc,EAAE,CAgE9F;AA6BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,SAAS,CA0C/F;AAYD,UAAU,eAAe;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,UAAU,CAmBnE;AAoBD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,oBAOlC,CAAA;AAED,qBAAa,eAAgB,YAAW,WAAW;IAClD,QAAQ,CAAC,EAAE,aAAY;IACvB,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,QAAQ,CAAC,YAAY,uBAAuB;IAE5C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,aAAa;IAoB1B,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAAC,WAAW,CAAC;IAuKrE,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmClC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAerC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,OAAO,IAAI,cAAc,EAOzB,iBAAiB,EAEjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACX,oBAAoB,EAEpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,UAAU,EAEV,MAAM,YAAY,CAAA;AAUnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAY/C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,cAAc,EAAE,CAgE9F;AA6BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,SAAS,CAoD/F;AAYD,UAAU,eAAe;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,UAAU,CAmBnE;AAoBD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,oBAOlC,CAAA;AAED,qBAAa,eAAgB,YAAW,WAAW;IAClD,QAAQ,CAAC,EAAE,aAAY;IACvB,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,QAAQ,CAAC,YAAY,uBAAuB;IAE5C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,aAAa;IAoB1B,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAAC,WAAW,CAAC;IAuKrE,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmClC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAerC"}
package/dist/client.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand, } from '@aws-sdk/client-bedrock-runtime';
2
- import { assertThinkingUnsupported, toolResultToText } from '@namzu/sdk';
2
+ import { assertThinkingUnsupported, toSchemaDialect, toolResultToText } from '@namzu/sdk';
3
3
  import { ProviderRequestError, isCallerAbortError, isProviderRequestError, providerVendorError, } from '@namzu/sdk';
4
- import { assertModelReachable } from './model-reachability.js';
4
+ import { assertModelReachable, isAnthropicServedModel } from './model-reachability.js';
5
5
  function extractSystemBlocks(messages) {
6
6
  return messages
7
7
  .filter((m) => m.role === 'system')
@@ -98,12 +98,19 @@ export function toBedrockToolConfig(params) {
98
98
  if (params.toolChoice === 'none')
99
99
  return undefined;
100
100
  if (params.tools && params.tools.length > 0) {
101
+ // Claude reached through Converse is still Claude: its serving layer
102
+ // validates `inputSchema.json` as JSON Schema 2020-12, so a tuple
103
+ // rendered in draft-07's `items: [a, b]` spelling fails here for the
104
+ // same reason it fails on the direct wire. Converse carries other
105
+ // vendors too, and nothing says they read 2020-12, so the conversion
106
+ // follows the model rather than the endpoint.
107
+ const dialect = isAnthropicServedModel(params.model) ? '2020-12' : 'draft-07';
101
108
  const tools = params.tools.map((t) => ({
102
109
  toolSpec: {
103
110
  name: t.function.name,
104
111
  description: t.function.description ?? '',
105
112
  inputSchema: {
106
- json: (t.function.parameters ?? {}),
113
+ json: toSchemaDialect((t.function.parameters ?? {}), dialect),
107
114
  },
108
115
  },
109
116
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,eAAe,EACf,qBAAqB,GACrB,MAAM,iCAAiC,CAAA;AAuBxC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D,SAAS,mBAAmB,CAAC,QAA0C;IACtE,OAAO,QAAQ;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAClC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA0C;IAC3E,MAAM,GAAG,GAAqB,EAAE,CAAA;IAEhC,IAAI,kBAAkB,GAAmB,EAAE,CAAA;IAE3C,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAA;YACvD,kBAAkB,GAAG,EAAE,CAAA;QACxB,CAAC;IACF,CAAC,CAAA;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAEnC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,GAA2D,CAAA;YAC3E,kEAAkE;YAClE,gEAAgE;YAChE,4DAA4D;YAC5D,+DAA+D;YAC/D,gDAAgD;YAChD,MAAM,WAAW,GAA2B;gBAC3C,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC7C,CAAA;YACD,kBAAkB,CAAC,IAAI,CAAC;gBACvB,UAAU,EAAE;oBACX,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;oBAC1C,OAAO,EAAE,CAAC,WAAW,CAAC;iBACtB;aACD,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QAED,gBAAgB,EAAE,CAAA;QAElB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrE,MAAM,OAAO,GAAmB,EAAE,CAAA;YAClC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YACpC,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE;wBACR,SAAS,EAAE,EAAE,CAAC,EAAE;wBAChB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;wBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;qBAChD;iBACD,CAAC,CAAA;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;YACxC,SAAQ;QACT,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACxF,GAAG,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;SACnB,CAAC,CAAA;IACH,CAAC;IAED,gBAAgB,EAAE,CAAA;IAElB,OAAO,GAAG,CAAA;AACX,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA0C;IAC5E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACpC,IACC,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,WAAW,IAAI,GAAG;YAClB,GAAG,CAAC,SAAS;YACb,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EACvB,CAAC;YACF,OAAO,IAAI,CAAA;QACZ,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA0C;IAC9E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACrE,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA4B;IAC/D,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IAElD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK,CAAC,GAAG,CACrC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC;YACA,QAAQ,EAAE;gBACT,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACrB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;gBACzC,WAAW,EAAE;oBACZ,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAA4B;iBAC9D;aACD;SACD,CAAS,CACX,CAAA;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACtD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,IAAI,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAW,SAAS,CAAC,GAAG,CAClC,CAAC,IAAI,EAAE,EAAE,CACR,CAAC;gBACA,QAAQ,EAAE;oBACT,IAAI;oBACJ,WAAW,EAAE,aAAa;oBAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;iBACzC;aACD,CAAS,CACX,CAAA;YACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAA;QAC3C,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,EAAe;IACxC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAC7C,IAAI,EAAE,KAAK,UAAU;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;IACzC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;AACpB,CAAC;AAUD,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;YACN,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;SACnB,CAAA;IACF,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAA;IACpC,OAAO;QACN,YAAY,EAAE,KAAK;QACnB,gBAAgB,EAAE,MAAM;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK,GAAG,MAAM;QAC9C,YAAY,EAAE,GAAG,CAAC,wBAAwB,IAAI,CAAC;QAC/C,gBAAgB,EAAE,GAAG,CAAC,yBAAyB,IAAI,CAAC;KACpD,CAAA;AACF,CAAC;AAID,SAAS,aAAa,CAAC,MAAe;IACrC,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe;YACnB,OAAO,MAAM,CAAA;QACd,KAAK,UAAU;YACd,OAAO,YAAY,CAAA;QACpB,KAAK,YAAY;YAChB,OAAO,QAAQ,CAAA;QAChB,KAAK,kBAAkB;YACtB,OAAO,gBAAgB,CAAA;QACxB;YACC,OAAO,MAAM,CAAA;IACf,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACzD,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,uBAAuB,EAAE,IAAI;IAC7B,cAAc,EAAE,KAAK;IACrB,2DAA2D;IAC3D,iBAAiB,EAAE,KAAK;CACxB,CAAA;AAED,MAAM,OAAO,eAAe;IAClB,EAAE,GAAG,SAAS,CAAA;IACd,IAAI,GAAG,aAAa,CAAA;IACpB,YAAY,GAAG,oBAAoB,CAAA;IAEpC,MAAM,CAAsB;IAC5B,MAAM,CAAe;IAE7B,YAAY,MAAqB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,MAAM,YAAY,GAA4B,EAAE,CAAA;QAEhD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QACpC,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAClD,YAAY,CAAC,WAAW,GAAG;gBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAA;QACF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CAAC,MAA4B;QAC7C,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;QACpD,mEAAmE;QACnE,qEAAqE;QACrE,mEAAmE;QACnE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAE9C,MAAM,eAAe,GAA4B,EAAE,CAAA;QACnD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QAChF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;QACtF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,eAAe,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACjE,IAAI,MAAM,CAAC,IAAI;YAAE,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAA;QAE5D,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC;YACzC,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC9C,QAAQ;YACR,UAAU;YACV,eAAe;SACf,CAAC,CAAA;QAEF,uEAAuE;QACvE,2EAA2E;QAC3E,yEAAyE;QACzE,2CAA2C;QAC3C,IAAI,QAAqC,CAAA;QACzC,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC1C,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO;gBAC9C,sEAAsE;gBACtE,WAAW,EAAE,MAAM,CAAC,MAAM;aAC1B,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;gBAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAA;YAC9E,IAAI,sBAAsB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAA;YAC1C,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,oBAAoB,CAAC;gBAC9B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,uCAAuC;aAC/C,CAAC,CAAA;QACH,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAEzE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAsD,CAAA;QACrF,IAAI,aAAa,GAAG,CAAC,CAAA;QAErB,IAAI,CAAC;YACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,MAA6C,EAAE,CAAC;gBAClF,iEAAiE;gBACjE,uDAAuD;gBACvD,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;gBAE/B,2DAA2D;gBAC3D,gEAAgE;gBAChE,oDAAoD;gBACpD,MAAM,aAAa,GAClB,CAAC,yBAAyB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;oBAChF,CAAC,2BAA2B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpF,CAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;oBACxE,CAAC,qBAAqB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;oBACxE,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;gBACzF,IAAI,aAAa,EAAE,CAAC;oBACnB,MAAM,mBAAmB,CAAC;wBACzB,UAAU,EAAE,SAAS;wBACrB,KAAK,EAAE,aAAa;qBACpB,CAAC,CAAA;gBACH,CAAC;gBAED,IAAI,CAAC;oBACJ,IAAI,mBAAmB,IAAI,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;wBACpE,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAA;wBAC3C,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;4BACnC,MAAM;gCACL,EAAE,EAAE,SAAS;gCACb,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;6BAC9B,CAAA;wBACF,CAAC;wBAED,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;4BACzC,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,aAAa,CAAA;4BACtE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;4BACvC,IAAI,MAAM,EAAE,CAAC;gCACZ,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;gCACxC,MAAM;oCACL,EAAE,EAAE,SAAS;oCACb,KAAK,EAAE;wCACN,SAAS,EAAE;4CACV;gDACC,KAAK,EAAE,GAAG;gDACV,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE;6CAClD;yCACD;qCACD;iCACD,CAAA;4BACF,CAAC;wBACF,CAAC;oBACF,CAAC;oBAED,IAAI,mBAAmB,IAAI,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;wBACpE,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAA;wBAC3C,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;4BACzC,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,aAAa,CAAA;4BACtE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;gCACxB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;gCACnD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;gCAC9B,IAAI,EAAE,EAAE;6BACR,CAAC,CAAA;4BACF,MAAM;gCACL,EAAE,EAAE,SAAS;gCACb,KAAK,EAAE;oCACN,SAAS,EAAE;wCACV;4CACC,KAAK,EAAE,GAAG;4CACV,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;4CAC3B,IAAI,EAAE,UAAU;4CAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;yCAC5C;qCACD;iCACD;6BACD,CAAA;4BACD,aAAa,GAAG,GAAG,GAAG,CAAC,CAAA;wBACxB,CAAC;oBACF,CAAC;oBAED,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;oBAClC,CAAC;oBAED,IAAI,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACjD,MAAM;4BACL,EAAE,EAAE,SAAS;4BACb,KAAK,EAAE,EAAE;4BACT,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC;yBACzD,CAAA;oBACF,CAAC;oBAED,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAA;wBACxE,MAAM;4BACL,EAAE,EAAE,SAAS;4BACb,KAAK,EAAE,EAAE;4BACT,KAAK;yBACL,CAAA;oBACF,CAAC;gBACF,CAAC;gBAAC,OAAO,QAAQ,EAAE,CAAC;oBACnB,IAAI,sBAAsB,CAAC,QAAQ,CAAC;wBAAE,MAAM,QAAQ,CAAA;oBACpD,MAAM,IAAI,oBAAoB,CAAC;wBAC9B,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,SAAS;wBACrB,MAAM,EAAE,6CAA6C;qBACrD,CAAC,CAAA;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;gBAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAA;YAC9E,IAAI,sBAAsB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAA;YAC1C,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACjE,CAAC;IACF,CAAC;IAED,KAAK,CAAC,UAAU;QACf,OAAO;YACN;gBACC,EAAE,EAAE,oCAAoC;gBACxC,IAAI,EAAE,2BAA2B;gBACjC,aAAa,EAAE,OAAO;gBACtB,eAAe,EAAE,MAAM;gBACvB,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,IAAI;gBACjB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACvB;YACD;gBACC,EAAE,EAAE,mCAAmC;gBACvC,IAAI,EAAE,0BAA0B;gBAChC,aAAa,EAAE,OAAO;gBACtB,eAAe,EAAE,MAAM;gBACvB,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,GAAG;gBAChB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACvB;YACD;gBACC,EAAE,EAAE,sBAAsB;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,aAAa,EAAE,OAAO;gBACtB,eAAe,EAAE,KAAK;gBACtB,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,GAAG;gBAChB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACvB;SACD,CAAA;IACF,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;gBACnC,OAAO,EAAE,mCAAmC;gBAC5C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvD,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;aACjC,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChD,cAAc,EAAE,IAAI;aACpB,CAAC,CAAA;YACF,OAAO,QAAQ,CAAC,SAAS,CAAC,cAAc,KAAK,GAAG,CAAA;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -24,5 +24,17 @@
24
24
  * ARN-versioned model passes without this file changing, which is the correct
25
25
  * failure direction for a list that will go stale.
26
26
  */
27
+ /**
28
+ * Whether this id names a model Anthropic serves.
29
+ *
30
+ * Converse is a multi-vendor wire — the same request shape carries Claude,
31
+ * Llama, Mistral and more — so a property of the Anthropic models is not a
32
+ * property of the wire. Tool input schemas are one: Anthropic's serving layer
33
+ * validates them against JSON Schema 2020-12 regardless of which front door the
34
+ * request came through, while nothing says the other vendors on this wire do.
35
+ * Rendering the dialect Anthropic requires, only for the models that require
36
+ * it, is the claim that can actually be defended.
37
+ */
38
+ export declare function isAnthropicServedModel(modelId: string): boolean;
27
39
  export declare function assertModelReachable(modelId: string): void;
28
40
  //# sourceMappingURL=model-reachability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-reachability.d.ts","sourceRoot":"","sources":["../src/model-reachability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA0BH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAS1D"}
1
+ {"version":3,"file":"model-reachability.d.ts","sourceRoot":"","sources":["../src/model-reachability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA0BH;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAS1D"}
@@ -45,6 +45,20 @@ const UNVERSIONED_CLAUDE = /^anthropic\.claude-(?:haiku|sonnet|opus|fable|mythos
45
45
  function hasArnVersion(modelId) {
46
46
  return /-v\d+(?::\d+)?$/.test(modelId);
47
47
  }
48
+ /**
49
+ * Whether this id names a model Anthropic serves.
50
+ *
51
+ * Converse is a multi-vendor wire — the same request shape carries Claude,
52
+ * Llama, Mistral and more — so a property of the Anthropic models is not a
53
+ * property of the wire. Tool input schemas are one: Anthropic's serving layer
54
+ * validates them against JSON Schema 2020-12 regardless of which front door the
55
+ * request came through, while nothing says the other vendors on this wire do.
56
+ * Rendering the dialect Anthropic requires, only for the models that require
57
+ * it, is the claim that can actually be defended.
58
+ */
59
+ export function isAnthropicServedModel(modelId) {
60
+ return stripProfilePrefix(modelId.trim().toLowerCase()).startsWith('anthropic.');
61
+ }
48
62
  export function assertModelReachable(modelId) {
49
63
  const bare = stripProfilePrefix(modelId.trim().toLowerCase());
50
64
  if (!bare.startsWith('anthropic.'))
@@ -1 +1 @@
1
- {"version":3,"file":"model-reachability.js","sourceRoot":"","sources":["../src/model-reachability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AAElE,SAAS,kBAAkB,CAAC,OAAe;IAC1C,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,oEAAoE,CAAA;AAE/F,SAAS,aAAa,CAAC,OAAe;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACnD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAM;IAC1C,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAM;IAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAM;IAE1C,MAAM,IAAI,KAAK,CACd,6BAA6B,OAAO,4dAA4d,CAChgB,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"model-reachability.js","sourceRoot":"","sources":["../src/model-reachability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AAElE,SAAS,kBAAkB,CAAC,OAAe;IAC1C,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,OAAO,CAAA;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,oEAAoE,CAAA;AAE/F,SAAS,aAAa,CAAC,OAAe;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACrD,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACnD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAM;IAC1C,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAM;IAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAM;IAE1C,MAAM,IAAI,KAAK,CACd,6BAA6B,OAAO,4dAA4d,CAChgB,CAAA;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/bedrock",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "AWS Bedrock LLM provider for @namzu/sdk. Provides Converse API (chat + streaming) with full tool-use support.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "type": "module",
@@ -37,14 +37,14 @@
37
37
  "@aws-sdk/client-bedrock-runtime": "^3.1101.0"
38
38
  },
39
39
  "peerDependencies": {
40
- "@namzu/sdk": ">=1.3.0"
40
+ "@namzu/sdk": ">=6.0.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@biomejs/biome": "^1.9.4",
44
44
  "@types/node": "^22.19.17",
45
45
  "typescript": "^5.5.0",
46
46
  "vitest": "^3.2.6",
47
- "@namzu/sdk": "^5.1.0"
47
+ "@namzu/sdk": "^6.0.0"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "tsc --build",
@@ -202,10 +202,21 @@ describe('@namzu/bedrock — provider error taxonomy', () => {
202
202
  })
203
203
  })
204
204
 
205
- it('drops a secret-bearing validation stream event without retaining cause', async () => {
206
- const secret = 'aws-secret-FAKE-DO-NOT-LOG'
205
+ it('keeps a validation stream event’s complaint, scrubbed, and still retains no cause', async () => {
206
+ // This test used to assert the opposite half: that the vendor's sentence
207
+ // was dropped whole. That was the safe-looking reading of "an error body
208
+ // can echo a credential", and it cost a day of production downtime —
209
+ // the wire had been naming the exact offending field the entire time and
210
+ // the SDK deleted the sentence before anyone could read it.
211
+ //
212
+ // So the guarantee changed shape rather than weakening: what is scrubbed
213
+ // is anything CREDENTIAL-SHAPED, and what survives is the complaint. The
214
+ // `cause` half is unchanged and still matters — a `cause` survives every
215
+ // logger that serializes an error chain, which is how the raw body would
216
+ // get out regardless of what the message says.
217
+ const key = 'AKIAIOSFODNN7EXAMPLE'
207
218
  const aws = new ValidationException({
208
- message: `invalid request echoed ${secret}`,
219
+ message: `inputSchema is invalid, echoed from key ${key}`,
209
220
  $metadata: { httpStatusCode: 400 },
210
221
  })
211
222
 
@@ -216,7 +227,8 @@ describe('@namzu/bedrock — provider error taxonomy', () => {
216
227
  kind: 'bad_request',
217
228
  providerId: 'bedrock',
218
229
  })
219
- expect((err as Error).message).not.toContain(secret)
230
+ expect((err as Error).message).toContain('inputSchema is invalid')
231
+ expect((err as Error).message).not.toContain(key)
220
232
  expect('cause' in (err as object)).toBe(false)
221
233
  })
222
234
 
@@ -0,0 +1,108 @@
1
+ import { findDraft07Only } from '@namzu/sdk'
2
+ import { describe, expect, it } from 'vitest'
3
+
4
+ import { toBedrockToolConfig } from '../client.js'
5
+
6
+ /**
7
+ * Converse carries Claude, so it carries Claude's schema dialect too.
8
+ *
9
+ * The kernel renders tool schemas as draft-07, where a tuple is
10
+ * `items: [a, b]`. Anthropic's serving layer validates `input_schema` as JSON
11
+ * Schema 2020-12, where that spelling is invalid — the tuple has to be
12
+ * `prefixItems` — and it rejects the whole request rather than ignoring the
13
+ * field, so one tuple-shaped tool takes down every tool in the call.
14
+ *
15
+ * That fix landed on the direct Anthropic driver and on the HTTP driver's
16
+ * Anthropic branch, and this driver was missed. It reaches the same models
17
+ * through a different front door; the validation happens in the same place.
18
+ *
19
+ * The conversion follows the MODEL, not the endpoint, because Converse is
20
+ * multi-vendor: `meta.llama*` and `mistral.*` come through this same function,
21
+ * and nothing establishes that they read 2020-12. Converting their schemas
22
+ * would be trading a known break for an unmeasured one.
23
+ */
24
+
25
+ const TUPLE_TOOL = [
26
+ {
27
+ type: 'function' as const,
28
+ function: {
29
+ name: 'read',
30
+ description: 'reads',
31
+ parameters: {
32
+ type: 'object',
33
+ properties: {
34
+ // What `z.tuple([z.number(), z.number()])` renders to.
35
+ readRange: {
36
+ type: 'array',
37
+ items: [{ type: 'number' }, { type: 'number' }],
38
+ minItems: 2,
39
+ maxItems: 2,
40
+ },
41
+ },
42
+ },
43
+ },
44
+ },
45
+ ]
46
+
47
+ function rangeOf(model: string): Record<string, unknown> {
48
+ const config = toBedrockToolConfig({ model, messages: [], tools: TUPLE_TOOL })
49
+ const json = config?.tools?.[0]?.toolSpec?.inputSchema?.json as Record<string, unknown>
50
+ const properties = json.properties as Record<string, Record<string, unknown>>
51
+ return properties.readRange as Record<string, unknown>
52
+ }
53
+
54
+ function schemaOf(model: string): Record<string, unknown> {
55
+ const config = toBedrockToolConfig({ model, messages: [], tools: TUPLE_TOOL })
56
+ return config?.tools?.[0]?.toolSpec?.inputSchema?.json as Record<string, unknown>
57
+ }
58
+
59
+ describe('a tuple reaches Claude on Converse in the dialect Claude reads', () => {
60
+ it.each([
61
+ ['anthropic.claude-sonnet-4-20250514', 'a bare vendor id'],
62
+ ['us.anthropic.claude-sonnet-4-5-20250929-v1:0', 'behind an inference profile'],
63
+ ['EU.Anthropic.Claude-Opus-4-1-v1:0', 'in whatever case the caller wrote'],
64
+ ])('converts for %s (%s)', (model) => {
65
+ expect(findDraft07Only(schemaOf(model))).toEqual([])
66
+
67
+ const range = rangeOf(model)
68
+ expect(range.prefixItems).toHaveLength(2)
69
+ expect(range.items).toBeUndefined()
70
+ })
71
+
72
+ it('leaves another vendor on this wire alone', () => {
73
+ // Not timidity — the absence of a measurement. Anthropic's requirement
74
+ // was measured against its own wire; no such reading exists for these,
75
+ // and converting on a guess swaps a known break for an unknown one.
76
+ const range = rangeOf('meta.llama3-70b-instruct-v1:0')
77
+
78
+ expect(range.items).toHaveLength(2)
79
+ expect(range.prefixItems).toBeUndefined()
80
+ })
81
+
82
+ it('does not disturb a schema with no tuple in it', () => {
83
+ const config = toBedrockToolConfig({
84
+ model: 'anthropic.claude-sonnet-4-20250514',
85
+ messages: [],
86
+ tools: [
87
+ {
88
+ type: 'function',
89
+ function: {
90
+ name: 'ls',
91
+ description: 'lists',
92
+ parameters: {
93
+ type: 'object',
94
+ properties: { path: { type: 'string' } },
95
+ required: ['path'],
96
+ },
97
+ },
98
+ },
99
+ ],
100
+ })
101
+
102
+ expect(config?.tools?.[0]?.toolSpec?.inputSchema?.json).toEqual({
103
+ type: 'object',
104
+ properties: { path: { type: 'string' } },
105
+ required: ['path'],
106
+ })
107
+ })
108
+ })
package/src/client.ts CHANGED
@@ -24,15 +24,15 @@ import type {
24
24
  TokenUsage,
25
25
  ToolChoice,
26
26
  } from '@namzu/sdk'
27
- import type { ToolResultContent } from '@namzu/sdk'
28
- import { assertThinkingUnsupported, toolResultToText } from '@namzu/sdk'
27
+ import type { JsonSchemaDialect, ToolResultContent } from '@namzu/sdk'
28
+ import { assertThinkingUnsupported, toSchemaDialect, toolResultToText } from '@namzu/sdk'
29
29
  import {
30
30
  ProviderRequestError,
31
31
  isCallerAbortError,
32
32
  isProviderRequestError,
33
33
  providerVendorError,
34
34
  } from '@namzu/sdk'
35
- import { assertModelReachable } from './model-reachability.js'
35
+ import { assertModelReachable, isAnthropicServedModel } from './model-reachability.js'
36
36
  import type { BedrockConfig } from './types.js'
37
37
 
38
38
  function extractSystemBlocks(messages: ChatCompletionParams['messages']): SystemContentBlock[] {
@@ -145,6 +145,13 @@ export function toBedrockToolConfig(params: ChatCompletionParams): ToolConfigura
145
145
  if (params.toolChoice === 'none') return undefined
146
146
 
147
147
  if (params.tools && params.tools.length > 0) {
148
+ // Claude reached through Converse is still Claude: its serving layer
149
+ // validates `inputSchema.json` as JSON Schema 2020-12, so a tuple
150
+ // rendered in draft-07's `items: [a, b]` spelling fails here for the
151
+ // same reason it fails on the direct wire. Converse carries other
152
+ // vendors too, and nothing says they read 2020-12, so the conversion
153
+ // follows the model rather than the endpoint.
154
+ const dialect: JsonSchemaDialect = isAnthropicServedModel(params.model) ? '2020-12' : 'draft-07'
148
155
  const tools: Tool[] = params.tools.map(
149
156
  (t) =>
150
157
  ({
@@ -152,7 +159,10 @@ export function toBedrockToolConfig(params: ChatCompletionParams): ToolConfigura
152
159
  name: t.function.name,
153
160
  description: t.function.description ?? '',
154
161
  inputSchema: {
155
- json: (t.function.parameters ?? {}) as Record<string, unknown>,
162
+ json: toSchemaDialect(
163
+ (t.function.parameters ?? {}) as Record<string, unknown>,
164
+ dialect,
165
+ ),
156
166
  },
157
167
  },
158
168
  }) as Tool,
@@ -49,6 +49,21 @@ function hasArnVersion(modelId: string): boolean {
49
49
  return /-v\d+(?::\d+)?$/.test(modelId)
50
50
  }
51
51
 
52
+ /**
53
+ * Whether this id names a model Anthropic serves.
54
+ *
55
+ * Converse is a multi-vendor wire — the same request shape carries Claude,
56
+ * Llama, Mistral and more — so a property of the Anthropic models is not a
57
+ * property of the wire. Tool input schemas are one: Anthropic's serving layer
58
+ * validates them against JSON Schema 2020-12 regardless of which front door the
59
+ * request came through, while nothing says the other vendors on this wire do.
60
+ * Rendering the dialect Anthropic requires, only for the models that require
61
+ * it, is the claim that can actually be defended.
62
+ */
63
+ export function isAnthropicServedModel(modelId: string): boolean {
64
+ return stripProfilePrefix(modelId.trim().toLowerCase()).startsWith('anthropic.')
65
+ }
66
+
52
67
  export function assertModelReachable(modelId: string): void {
53
68
  const bare = stripProfilePrefix(modelId.trim().toLowerCase())
54
69
  if (!bare.startsWith('anthropic.')) return