@namzu/bedrock 2.0.0 → 3.1.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 +70 -0
- package/dist/__tests__/model-reachability.test.d.ts +2 -0
- package/dist/__tests__/model-reachability.test.d.ts.map +1 -0
- package/dist/__tests__/model-reachability.test.js +64 -0
- package/dist/__tests__/model-reachability.test.js.map +1 -0
- package/dist/__tests__/thinking-refused.test.d.ts +2 -0
- package/dist/__tests__/thinking-refused.test.d.ts.map +1 -0
- package/dist/__tests__/thinking-refused.test.js +35 -0
- package/dist/__tests__/thinking-refused.test.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -1
- package/dist/client.js.map +1 -1
- package/dist/model-reachability.d.ts +28 -0
- package/dist/model-reachability.d.ts.map +1 -0
- package/dist/model-reachability.js +58 -0
- package/dist/model-reachability.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/model-reachability.test.ts +74 -0
- package/src/__tests__/thinking-refused.test.ts +44 -0
- package/src/client.ts +7 -1
- package/src/model-reachability.ts +61 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,75 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 06ddb7d: Refuses a model id this driver's wire cannot serve, instead of letting AWS
|
|
8
|
+
answer with a validation error that names neither the cause nor the fix.
|
|
9
|
+
|
|
10
|
+
This driver speaks Bedrock's `Converse` API, which serves ARN-versioned model
|
|
11
|
+
ids — `us.anthropic.claude-sonnet-4-5-20250929-v1:0` and friends, the
|
|
12
|
+
integration documented for Claude 4.6 and earlier.
|
|
13
|
+
|
|
14
|
+
The current generation is not on that wire. Claude Opus 5, Sonnet 5, Fable 5,
|
|
15
|
+
Opus 4.8 and Opus 4.7 are served by a different Bedrock integration that speaks
|
|
16
|
+
the Messages API shape, and their ids carry no version suffix at all
|
|
17
|
+
(`anthropic.claude-opus-5`). The vendor's own legacy page gives the reason they
|
|
18
|
+
are absent from its model table: they have no ARN-versioned ids.
|
|
19
|
+
|
|
20
|
+
Passing one here now throws before any AWS call, naming both what this wire
|
|
21
|
+
serves and where the newer models live.
|
|
22
|
+
|
|
23
|
+
It is a check on the id SHAPE, not a model list. An unrecognised but versioned
|
|
24
|
+
id passes untouched, and non-Claude models are not policed at all — a list that
|
|
25
|
+
has to be edited for every new model is wrong before anyone reads it.
|
|
26
|
+
|
|
27
|
+
Reaching the newer models needs a driver built for that endpoint. That is not
|
|
28
|
+
in this release, and guessing at a wire is how a driver ends up confidently
|
|
29
|
+
wrong; the reachability refusal is correct and complete on its own.
|
|
30
|
+
|
|
31
|
+
## 3.0.0
|
|
32
|
+
|
|
33
|
+
### Major Changes
|
|
34
|
+
|
|
35
|
+
- 1500973: Every driver that cannot think now says so instead of dropping the request.
|
|
36
|
+
|
|
37
|
+
`thinking` sits on `ChatCompletionParams`, so every driver accepts it. Five of
|
|
38
|
+
them — Bedrock, OpenRouter, HTTP, Ollama, LM Studio — implemented none of it
|
|
39
|
+
and dropped the field: the caller got an ordinary completion with an empty
|
|
40
|
+
`reasoning` array, which is indistinguishable from a model that simply chose
|
|
41
|
+
not to reason. The request looked honoured and the answer looked like an
|
|
42
|
+
answer.
|
|
43
|
+
|
|
44
|
+
The OpenAI driver already refused instead, with the reasoning written out
|
|
45
|
+
beside it. So the rule had been decided once and applied once, while five
|
|
46
|
+
siblings went on being silent. It moves to `@namzu/sdk` as
|
|
47
|
+
`assertThinkingUnsupported(driverName, params)`, and a new driver now inherits
|
|
48
|
+
it rather than re-deciding it.
|
|
49
|
+
|
|
50
|
+
The error names the driver, which in a multi-provider setup is the difference
|
|
51
|
+
between a bug report about the model and a one-line configuration fix.
|
|
52
|
+
|
|
53
|
+
**Turning thinking off stays a no-op** on all of them, because that is the
|
|
54
|
+
state a driver without thinking is already in — a config shared across
|
|
55
|
+
providers saying `{ type: 'disabled' }` should not fail on the ones that were
|
|
56
|
+
never going to think.
|
|
57
|
+
|
|
58
|
+
`assertThinkingSupported` in `@namzu/openai` is unchanged as an export and now
|
|
59
|
+
delegates to the shared helper. Its message changed: it no longer says
|
|
60
|
+
"extended thinking", because `adaptive` is refused too and calling that
|
|
61
|
+
extended would be wrong.
|
|
62
|
+
|
|
63
|
+
**Migration.** If you passed `thinking` to any of the five and relied on it
|
|
64
|
+
being ignored, remove it — you were receiving a non-thinking answer either way,
|
|
65
|
+
and now you find out at the call instead of by inspecting an empty array.
|
|
66
|
+
|
|
67
|
+
Not in this change: implementing thinking natively on Bedrock, which serves the
|
|
68
|
+
same Claude models through a different wire and deserves the per-model
|
|
69
|
+
resolution the Anthropic driver just gained. That needs the Converse request
|
|
70
|
+
and response shapes verified against the reference first, and is not something
|
|
71
|
+
to guess at.
|
|
72
|
+
|
|
3
73
|
## 2.0.0
|
|
4
74
|
|
|
5
75
|
### Major Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-reachability.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/model-reachability.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { BedrockProvider } from '../client.js';
|
|
3
|
+
import { assertModelReachable } from '../model-reachability.js';
|
|
4
|
+
/**
|
|
5
|
+
* This driver speaks Converse with ARN-versioned model ids. The current Claude
|
|
6
|
+
* generation is served by a different Bedrock integration whose ids carry no
|
|
7
|
+
* version suffix, and pointing this wire at one produced an opaque AWS
|
|
8
|
+
* validation error naming neither the cause nor the remedy.
|
|
9
|
+
*/
|
|
10
|
+
describe('model ids this wire can serve', () => {
|
|
11
|
+
const reachable = [
|
|
12
|
+
'anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
13
|
+
'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
14
|
+
'eu.anthropic.claude-opus-4-5-20251101-v1:0',
|
|
15
|
+
'global.anthropic.claude-opus-4-6-v1',
|
|
16
|
+
'apac.anthropic.claude-sonnet-4-20250514-v1:0',
|
|
17
|
+
'anthropic.claude-haiku-4-5-20251001-v1:0',
|
|
18
|
+
];
|
|
19
|
+
for (const model of reachable) {
|
|
20
|
+
it(`accepts ${model}`, () => {
|
|
21
|
+
expect(() => assertModelReachable(model)).not.toThrow();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const unreachable = [
|
|
25
|
+
'anthropic.claude-opus-5',
|
|
26
|
+
'anthropic.claude-sonnet-5',
|
|
27
|
+
'anthropic.claude-fable-5',
|
|
28
|
+
'anthropic.claude-opus-4-8',
|
|
29
|
+
'anthropic.claude-opus-4-7',
|
|
30
|
+
'us.anthropic.claude-opus-5',
|
|
31
|
+
];
|
|
32
|
+
for (const model of unreachable) {
|
|
33
|
+
it(`refuses ${model} and says why`, () => {
|
|
34
|
+
expect(() => assertModelReachable(model)).toThrow(/cannot reach/);
|
|
35
|
+
expect(() => assertModelReachable(model)).toThrow(/Converse API/);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
it('leaves a non-Claude model alone', () => {
|
|
39
|
+
// This driver serves whatever Bedrock serves. The check is about one
|
|
40
|
+
// vendor's id scheme, not about policing the catalogue.
|
|
41
|
+
expect(() => assertModelReachable('amazon.nova-pro-v1:0')).not.toThrow();
|
|
42
|
+
expect(() => assertModelReachable('meta.llama3-70b-instruct-v1:0')).not.toThrow();
|
|
43
|
+
});
|
|
44
|
+
it('accepts an unknown versioned Claude id', () => {
|
|
45
|
+
// A model this file has never heard of passes as long as its id has
|
|
46
|
+
// the shape this wire carries. A list that must be edited for every
|
|
47
|
+
// new model is a list that is wrong before anyone reads it.
|
|
48
|
+
expect(() => assertModelReachable('anthropic.claude-sonnet-9-20991231-v1:0')).not.toThrow();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe('the driver refuses before it calls AWS', () => {
|
|
52
|
+
it('throws on an unreachable model with no credentials in play', async () => {
|
|
53
|
+
const provider = new BedrockProvider({ region: 'us-east-1' });
|
|
54
|
+
await expect(async () => {
|
|
55
|
+
for await (const _ of provider.chatStream({
|
|
56
|
+
model: 'anthropic.claude-opus-5',
|
|
57
|
+
messages: [{ role: 'user', content: 'hi' }],
|
|
58
|
+
})) {
|
|
59
|
+
// drain
|
|
60
|
+
}
|
|
61
|
+
}).rejects.toThrow(/cannot reach "anthropic\.claude-opus-5"/);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=model-reachability.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-reachability.test.js","sourceRoot":"","sources":["../../src/__tests__/model-reachability.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D;;;;;GAKG;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG;QACjB,2CAA2C;QAC3C,8CAA8C;QAC9C,4CAA4C;QAC5C,qCAAqC;QACrC,8CAA8C;QAC9C,0CAA0C;KAC1C,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC/B,EAAE,CAAC,WAAW,KAAK,EAAE,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACxD,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG;QACnB,yBAAyB;QACzB,2BAA2B;QAC3B,0BAA0B;QAC1B,2BAA2B;QAC3B,2BAA2B;QAC3B,4BAA4B;KAC5B,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,EAAE,CAAC,WAAW,KAAK,eAAe,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;YACjE,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACH,CAAC;IAED,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,qEAAqE;QACrE,wDAAwD;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QACxE,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,oEAAoE;QACpE,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,yCAAyC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IAC5F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAW,CAAC,CAAA;QAEtE,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACzC,KAAK,EAAE,yBAAyB;gBAChC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aACnB,CAAC,EAAE,CAAC;gBAC5B,QAAQ;YACT,CAAC;QACF,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking-refused.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/thinking-refused.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { BedrockProvider } from '../client.js';
|
|
3
|
+
/**
|
|
4
|
+
* The shared guard's own tests pass whether or not this driver calls it, so
|
|
5
|
+
* this drives the real `chatStream`. The defect being fixed was exactly a
|
|
6
|
+
* declared parameter that no code path consumed — asserting the helper works
|
|
7
|
+
* would have reproduced that shape one level up.
|
|
8
|
+
*
|
|
9
|
+
* The guard runs before any client work, so no credentials and no network are
|
|
10
|
+
* involved: the request never gets that far.
|
|
11
|
+
*/
|
|
12
|
+
const provider = new BedrockProvider({ region: 'us-east-1' });
|
|
13
|
+
async function run(thinking) {
|
|
14
|
+
for await (const _chunk of provider.chatStream({
|
|
15
|
+
model: 'anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
16
|
+
messages: [{ role: 'user', content: 'hi' }],
|
|
17
|
+
...(thinking ? { thinking } : {}),
|
|
18
|
+
})) {
|
|
19
|
+
// drain
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
describe('BedrockProvider refuses a thinking request rather than dropping it', () => {
|
|
23
|
+
it('throws on a manual thinking request', async () => {
|
|
24
|
+
await expect(run({ type: 'enabled', budgetTokens: 10_000 })).rejects.toThrow(/BedrockProvider does not implement thinking/);
|
|
25
|
+
});
|
|
26
|
+
it('throws on an adaptive one', async () => {
|
|
27
|
+
await expect(run({ type: 'adaptive' })).rejects.toThrow(/does not implement thinking/);
|
|
28
|
+
});
|
|
29
|
+
it('does not throw for an explicit disable', async () => {
|
|
30
|
+
// Reaches the client and fails on credentials or network instead,
|
|
31
|
+
// which is the point: the guard let it past.
|
|
32
|
+
await expect(run({ type: 'disabled' })).rejects.not.toThrow(/does not implement thinking/);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=thinking-refused.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking-refused.test.js","sourceRoot":"","sources":["../../src/__tests__/thinking-refused.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;GAQG;AAEH,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAW,CAAC,CAAA;AAEtE,KAAK,UAAU,GAAG,CAAC,QAA2C;IAC7D,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC;QAC9C,KAAK,EAAE,2CAA2C;QAClD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACT,CAAC,EAAE,CAAC;QAC5B,QAAQ;IACT,CAAC;AACF,CAAC;AAED,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;IACnF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3E,6CAA6C,CAC7C,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,kEAAkE;QAClE,6CAA6C;QAC7C,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand, } from '@aws-sdk/client-bedrock-runtime';
|
|
2
|
-
import { toolResultToText } from '@namzu/sdk';
|
|
2
|
+
import { assertThinkingUnsupported, toolResultToText } from '@namzu/sdk';
|
|
3
3
|
import { ProviderRequestError, isCallerAbortError, isProviderRequestError, providerVendorError, } from '@namzu/sdk';
|
|
4
|
+
import { assertModelReachable } from './model-reachability.js';
|
|
4
5
|
function extractSystemBlocks(messages) {
|
|
5
6
|
return messages
|
|
6
7
|
.filter((m) => m.role === 'system')
|
|
@@ -206,6 +207,11 @@ export class BedrockProvider {
|
|
|
206
207
|
this.client = new BedrockRuntimeClient(clientConfig);
|
|
207
208
|
}
|
|
208
209
|
async *chatStream(params) {
|
|
210
|
+
assertThinkingUnsupported('BedrockProvider', params);
|
|
211
|
+
// Before any AWS call: an unreachable model id fails here with the
|
|
212
|
+
// reason and the fix, rather than as an opaque validation error from
|
|
213
|
+
// a service that was asked for something this wire does not carry.
|
|
214
|
+
assertModelReachable(params.model);
|
|
209
215
|
const system = extractSystemBlocks(params.messages);
|
|
210
216
|
const messages = toBedrockMessages(params.messages);
|
|
211
217
|
const toolConfig = toBedrockToolConfig(params);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether this driver's wire can serve a given model id.
|
|
3
|
+
*
|
|
4
|
+
* This driver speaks `Converse` / `ConverseStream` with ARN-versioned model
|
|
5
|
+
* ids — `anthropic.claude-sonnet-4-5-20250929-v1:0`, usually behind an
|
|
6
|
+
* inference-profile prefix (`us.`, `eu.`, `global.`). That is the integration
|
|
7
|
+
* documented for Claude 4.6 and earlier.
|
|
8
|
+
*
|
|
9
|
+
* The current generation is not on it. Claude Opus 5, Sonnet 5, Fable 5, Opus
|
|
10
|
+
* 4.8 and Opus 4.7 are served by a different Bedrock integration that speaks
|
|
11
|
+
* the Messages API shape, and their ids carry no version suffix at all
|
|
12
|
+
* (`anthropic.claude-opus-5`). The vendor's own legacy page states the reason
|
|
13
|
+
* they are absent from its model table: they do not have ARN-versioned model
|
|
14
|
+
* ids.
|
|
15
|
+
*
|
|
16
|
+
* So a caller passing a 5-series id here is not making a small mistake that a
|
|
17
|
+
* shrug would absorb — they are pointing a wire at models it was not built
|
|
18
|
+
* for, and the answer they get back is an opaque AWS validation error naming
|
|
19
|
+
* neither the cause nor the fix. Refusing with both is the whole value of
|
|
20
|
+
* knowing this.
|
|
21
|
+
*
|
|
22
|
+
* **This is a reachability check, not a capability table.** It does not claim
|
|
23
|
+
* to know which models exist, only which id SHAPE this wire accepts. A new
|
|
24
|
+
* ARN-versioned model passes without this file changing, which is the correct
|
|
25
|
+
* failure direction for a list that will go stale.
|
|
26
|
+
*/
|
|
27
|
+
export declare function assertModelReachable(modelId: string): void;
|
|
28
|
+
//# sourceMappingURL=model-reachability.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether this driver's wire can serve a given model id.
|
|
3
|
+
*
|
|
4
|
+
* This driver speaks `Converse` / `ConverseStream` with ARN-versioned model
|
|
5
|
+
* ids — `anthropic.claude-sonnet-4-5-20250929-v1:0`, usually behind an
|
|
6
|
+
* inference-profile prefix (`us.`, `eu.`, `global.`). That is the integration
|
|
7
|
+
* documented for Claude 4.6 and earlier.
|
|
8
|
+
*
|
|
9
|
+
* The current generation is not on it. Claude Opus 5, Sonnet 5, Fable 5, Opus
|
|
10
|
+
* 4.8 and Opus 4.7 are served by a different Bedrock integration that speaks
|
|
11
|
+
* the Messages API shape, and their ids carry no version suffix at all
|
|
12
|
+
* (`anthropic.claude-opus-5`). The vendor's own legacy page states the reason
|
|
13
|
+
* they are absent from its model table: they do not have ARN-versioned model
|
|
14
|
+
* ids.
|
|
15
|
+
*
|
|
16
|
+
* So a caller passing a 5-series id here is not making a small mistake that a
|
|
17
|
+
* shrug would absorb — they are pointing a wire at models it was not built
|
|
18
|
+
* for, and the answer they get back is an opaque AWS validation error naming
|
|
19
|
+
* neither the cause nor the fix. Refusing with both is the whole value of
|
|
20
|
+
* knowing this.
|
|
21
|
+
*
|
|
22
|
+
* **This is a reachability check, not a capability table.** It does not claim
|
|
23
|
+
* to know which models exist, only which id SHAPE this wire accepts. A new
|
|
24
|
+
* ARN-versioned model passes without this file changing, which is the correct
|
|
25
|
+
* failure direction for a list that will go stale.
|
|
26
|
+
*/
|
|
27
|
+
/** Inference-profile prefixes the Converse wire accepts on a model id. */
|
|
28
|
+
const PROFILE_PREFIXES = ['global.', 'us.', 'eu.', 'jp.', 'apac.'];
|
|
29
|
+
function stripProfilePrefix(modelId) {
|
|
30
|
+
for (const prefix of PROFILE_PREFIXES) {
|
|
31
|
+
if (modelId.startsWith(prefix))
|
|
32
|
+
return modelId.slice(prefix.length);
|
|
33
|
+
}
|
|
34
|
+
return modelId;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A Claude id with no ARN version suffix — the shape the newer Bedrock
|
|
38
|
+
* integration uses, and the one this wire cannot serve.
|
|
39
|
+
*
|
|
40
|
+
* Matched positively rather than by excluding known-good names: the set of
|
|
41
|
+
* versioned models grows, and a check that has to be edited for every new
|
|
42
|
+
* model is a check that will be wrong before it is read.
|
|
43
|
+
*/
|
|
44
|
+
const UNVERSIONED_CLAUDE = /^anthropic\.claude-(?:haiku|sonnet|opus|fable|mythos)-[a-z0-9.-]*$/;
|
|
45
|
+
function hasArnVersion(modelId) {
|
|
46
|
+
return /-v\d+(?::\d+)?$/.test(modelId);
|
|
47
|
+
}
|
|
48
|
+
export function assertModelReachable(modelId) {
|
|
49
|
+
const bare = stripProfilePrefix(modelId.trim().toLowerCase());
|
|
50
|
+
if (!bare.startsWith('anthropic.'))
|
|
51
|
+
return;
|
|
52
|
+
if (hasArnVersion(bare))
|
|
53
|
+
return;
|
|
54
|
+
if (!UNVERSIONED_CLAUDE.test(bare))
|
|
55
|
+
return;
|
|
56
|
+
throw new Error(`This driver cannot reach "${modelId}". It speaks Bedrock's Converse API, which serves ARN-versioned model ids such as "us.anthropic.claude-sonnet-4-5-20250929-v1:0" — Claude 4.6 and earlier. Models with no version suffix (Opus 5, Sonnet 5, Fable 5, Opus 4.8, Opus 4.7) are served by the newer Bedrock integration, which speaks the Messages API shape at a different endpoint and is not what this driver talks to. Use a versioned model id here, or reach the newer models through a driver built for that endpoint.`);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=model-reachability.js.map
|
|
@@ -0,0 +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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/bedrock",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.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",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@types/node": "^22.19.17",
|
|
45
45
|
"typescript": "^5.5.0",
|
|
46
46
|
"vitest": "^3.2.6",
|
|
47
|
-
"@namzu/sdk": "^
|
|
47
|
+
"@namzu/sdk": "^5.1.0"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "tsc --build",
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ChatCompletionParams } from '@namzu/sdk'
|
|
2
|
+
import { describe, expect, it } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import { BedrockProvider } from '../client.js'
|
|
5
|
+
import { assertModelReachable } from '../model-reachability.js'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This driver speaks Converse with ARN-versioned model ids. The current Claude
|
|
9
|
+
* generation is served by a different Bedrock integration whose ids carry no
|
|
10
|
+
* version suffix, and pointing this wire at one produced an opaque AWS
|
|
11
|
+
* validation error naming neither the cause nor the remedy.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
describe('model ids this wire can serve', () => {
|
|
15
|
+
const reachable = [
|
|
16
|
+
'anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
17
|
+
'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
18
|
+
'eu.anthropic.claude-opus-4-5-20251101-v1:0',
|
|
19
|
+
'global.anthropic.claude-opus-4-6-v1',
|
|
20
|
+
'apac.anthropic.claude-sonnet-4-20250514-v1:0',
|
|
21
|
+
'anthropic.claude-haiku-4-5-20251001-v1:0',
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
for (const model of reachable) {
|
|
25
|
+
it(`accepts ${model}`, () => {
|
|
26
|
+
expect(() => assertModelReachable(model)).not.toThrow()
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const unreachable = [
|
|
31
|
+
'anthropic.claude-opus-5',
|
|
32
|
+
'anthropic.claude-sonnet-5',
|
|
33
|
+
'anthropic.claude-fable-5',
|
|
34
|
+
'anthropic.claude-opus-4-8',
|
|
35
|
+
'anthropic.claude-opus-4-7',
|
|
36
|
+
'us.anthropic.claude-opus-5',
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
for (const model of unreachable) {
|
|
40
|
+
it(`refuses ${model} and says why`, () => {
|
|
41
|
+
expect(() => assertModelReachable(model)).toThrow(/cannot reach/)
|
|
42
|
+
expect(() => assertModelReachable(model)).toThrow(/Converse API/)
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
it('leaves a non-Claude model alone', () => {
|
|
47
|
+
// This driver serves whatever Bedrock serves. The check is about one
|
|
48
|
+
// vendor's id scheme, not about policing the catalogue.
|
|
49
|
+
expect(() => assertModelReachable('amazon.nova-pro-v1:0')).not.toThrow()
|
|
50
|
+
expect(() => assertModelReachable('meta.llama3-70b-instruct-v1:0')).not.toThrow()
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('accepts an unknown versioned Claude id', () => {
|
|
54
|
+
// A model this file has never heard of passes as long as its id has
|
|
55
|
+
// the shape this wire carries. A list that must be edited for every
|
|
56
|
+
// new model is a list that is wrong before anyone reads it.
|
|
57
|
+
expect(() => assertModelReachable('anthropic.claude-sonnet-9-20991231-v1:0')).not.toThrow()
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
describe('the driver refuses before it calls AWS', () => {
|
|
62
|
+
it('throws on an unreachable model with no credentials in play', async () => {
|
|
63
|
+
const provider = new BedrockProvider({ region: 'us-east-1' } as never)
|
|
64
|
+
|
|
65
|
+
await expect(async () => {
|
|
66
|
+
for await (const _ of provider.chatStream({
|
|
67
|
+
model: 'anthropic.claude-opus-5',
|
|
68
|
+
messages: [{ role: 'user', content: 'hi' }],
|
|
69
|
+
} as ChatCompletionParams)) {
|
|
70
|
+
// drain
|
|
71
|
+
}
|
|
72
|
+
}).rejects.toThrow(/cannot reach "anthropic\.claude-opus-5"/)
|
|
73
|
+
})
|
|
74
|
+
})
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ChatCompletionParams } from '@namzu/sdk'
|
|
2
|
+
import { describe, expect, it } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import { BedrockProvider } from '../client.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The shared guard's own tests pass whether or not this driver calls it, so
|
|
8
|
+
* this drives the real `chatStream`. The defect being fixed was exactly a
|
|
9
|
+
* declared parameter that no code path consumed — asserting the helper works
|
|
10
|
+
* would have reproduced that shape one level up.
|
|
11
|
+
*
|
|
12
|
+
* The guard runs before any client work, so no credentials and no network are
|
|
13
|
+
* involved: the request never gets that far.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const provider = new BedrockProvider({ region: 'us-east-1' } as never)
|
|
17
|
+
|
|
18
|
+
async function run(thinking?: ChatCompletionParams['thinking']): Promise<void> {
|
|
19
|
+
for await (const _chunk of provider.chatStream({
|
|
20
|
+
model: 'anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
21
|
+
messages: [{ role: 'user', content: 'hi' }],
|
|
22
|
+
...(thinking ? { thinking } : {}),
|
|
23
|
+
} as ChatCompletionParams)) {
|
|
24
|
+
// drain
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
describe('BedrockProvider refuses a thinking request rather than dropping it', () => {
|
|
29
|
+
it('throws on a manual thinking request', async () => {
|
|
30
|
+
await expect(run({ type: 'enabled', budgetTokens: 10_000 })).rejects.toThrow(
|
|
31
|
+
/BedrockProvider does not implement thinking/,
|
|
32
|
+
)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('throws on an adaptive one', async () => {
|
|
36
|
+
await expect(run({ type: 'adaptive' })).rejects.toThrow(/does not implement thinking/)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('does not throw for an explicit disable', async () => {
|
|
40
|
+
// Reaches the client and fails on credentials or network instead,
|
|
41
|
+
// which is the point: the guard let it past.
|
|
42
|
+
await expect(run({ type: 'disabled' })).rejects.not.toThrow(/does not implement thinking/)
|
|
43
|
+
})
|
|
44
|
+
})
|
package/src/client.ts
CHANGED
|
@@ -25,13 +25,14 @@ import type {
|
|
|
25
25
|
ToolChoice,
|
|
26
26
|
} from '@namzu/sdk'
|
|
27
27
|
import type { ToolResultContent } from '@namzu/sdk'
|
|
28
|
-
import { toolResultToText } from '@namzu/sdk'
|
|
28
|
+
import { assertThinkingUnsupported, 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
36
|
import type { BedrockConfig } from './types.js'
|
|
36
37
|
|
|
37
38
|
function extractSystemBlocks(messages: ChatCompletionParams['messages']): SystemContentBlock[] {
|
|
@@ -282,6 +283,11 @@ export class BedrockProvider implements LLMProvider {
|
|
|
282
283
|
}
|
|
283
284
|
|
|
284
285
|
async *chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk> {
|
|
286
|
+
assertThinkingUnsupported('BedrockProvider', params)
|
|
287
|
+
// Before any AWS call: an unreachable model id fails here with the
|
|
288
|
+
// reason and the fix, rather than as an opaque validation error from
|
|
289
|
+
// a service that was asked for something this wire does not carry.
|
|
290
|
+
assertModelReachable(params.model)
|
|
285
291
|
const system = extractSystemBlocks(params.messages)
|
|
286
292
|
const messages = toBedrockMessages(params.messages)
|
|
287
293
|
const toolConfig = toBedrockToolConfig(params)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether this driver's wire can serve a given model id.
|
|
3
|
+
*
|
|
4
|
+
* This driver speaks `Converse` / `ConverseStream` with ARN-versioned model
|
|
5
|
+
* ids — `anthropic.claude-sonnet-4-5-20250929-v1:0`, usually behind an
|
|
6
|
+
* inference-profile prefix (`us.`, `eu.`, `global.`). That is the integration
|
|
7
|
+
* documented for Claude 4.6 and earlier.
|
|
8
|
+
*
|
|
9
|
+
* The current generation is not on it. Claude Opus 5, Sonnet 5, Fable 5, Opus
|
|
10
|
+
* 4.8 and Opus 4.7 are served by a different Bedrock integration that speaks
|
|
11
|
+
* the Messages API shape, and their ids carry no version suffix at all
|
|
12
|
+
* (`anthropic.claude-opus-5`). The vendor's own legacy page states the reason
|
|
13
|
+
* they are absent from its model table: they do not have ARN-versioned model
|
|
14
|
+
* ids.
|
|
15
|
+
*
|
|
16
|
+
* So a caller passing a 5-series id here is not making a small mistake that a
|
|
17
|
+
* shrug would absorb — they are pointing a wire at models it was not built
|
|
18
|
+
* for, and the answer they get back is an opaque AWS validation error naming
|
|
19
|
+
* neither the cause nor the fix. Refusing with both is the whole value of
|
|
20
|
+
* knowing this.
|
|
21
|
+
*
|
|
22
|
+
* **This is a reachability check, not a capability table.** It does not claim
|
|
23
|
+
* to know which models exist, only which id SHAPE this wire accepts. A new
|
|
24
|
+
* ARN-versioned model passes without this file changing, which is the correct
|
|
25
|
+
* failure direction for a list that will go stale.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** Inference-profile prefixes the Converse wire accepts on a model id. */
|
|
29
|
+
const PROFILE_PREFIXES = ['global.', 'us.', 'eu.', 'jp.', 'apac.']
|
|
30
|
+
|
|
31
|
+
function stripProfilePrefix(modelId: string): string {
|
|
32
|
+
for (const prefix of PROFILE_PREFIXES) {
|
|
33
|
+
if (modelId.startsWith(prefix)) return modelId.slice(prefix.length)
|
|
34
|
+
}
|
|
35
|
+
return modelId
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A Claude id with no ARN version suffix — the shape the newer Bedrock
|
|
40
|
+
* integration uses, and the one this wire cannot serve.
|
|
41
|
+
*
|
|
42
|
+
* Matched positively rather than by excluding known-good names: the set of
|
|
43
|
+
* versioned models grows, and a check that has to be edited for every new
|
|
44
|
+
* model is a check that will be wrong before it is read.
|
|
45
|
+
*/
|
|
46
|
+
const UNVERSIONED_CLAUDE = /^anthropic\.claude-(?:haiku|sonnet|opus|fable|mythos)-[a-z0-9.-]*$/
|
|
47
|
+
|
|
48
|
+
function hasArnVersion(modelId: string): boolean {
|
|
49
|
+
return /-v\d+(?::\d+)?$/.test(modelId)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function assertModelReachable(modelId: string): void {
|
|
53
|
+
const bare = stripProfilePrefix(modelId.trim().toLowerCase())
|
|
54
|
+
if (!bare.startsWith('anthropic.')) return
|
|
55
|
+
if (hasArnVersion(bare)) return
|
|
56
|
+
if (!UNVERSIONED_CLAUDE.test(bare)) return
|
|
57
|
+
|
|
58
|
+
throw new Error(
|
|
59
|
+
`This driver cannot reach "${modelId}". It speaks Bedrock's Converse API, which serves ARN-versioned model ids such as "us.anthropic.claude-sonnet-4-5-20250929-v1:0" — Claude 4.6 and earlier. Models with no version suffix (Opus 5, Sonnet 5, Fable 5, Opus 4.8, Opus 4.7) are served by the newer Bedrock integration, which speaks the Messages API shape at a different endpoint and is not what this driver talks to. Use a versioned model id here, or reach the newer models through a driver built for that endpoint.`,
|
|
60
|
+
)
|
|
61
|
+
}
|