@namzu/bedrock 5.1.3 → 5.2.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 +29 -2
- package/dist/client.d.ts +18 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +95 -14
- package/dist/client.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +108 -13
- package/src/types.ts +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 38d62f7: Compact a large conversation that nobody is using just before its one-hour prompt cache expires, so coming back does not re-write the whole context. Off by default: nothing changes until you set `compaction.idleCompaction: true` (and `compaction.promptCacheTtl: 1h`, because only a one-hour cache is worth it) in the config file. `compaction.idleCompactionMinTokens` (default 200,000) and the `NAMZU_IDLE_COMPACT_MIN_TOKENS` variable set the smallest context worth it. A one-hour cache costs more per write than the five-minute default, which stays the default.
|
|
8
|
+
|
|
9
|
+
Additive for callers: `@namzu/sdk` adds optional `TokenUsage.cacheTtlMs` and `cacheWriteTtlTokens` (per call, never summed), `CacheControl.ttl`, the `cacheTtl` provider capability, a `CacheClock` helper, an optional `cache` field on the `token_usage_updated` event, and `compactSession({ trigger: 'idle' })`. (The widened `trigger` union is in its own `@namzu/sdk` major changeset.) `@namzu/anthropic` and `@namzu/bedrock` take `promptCacheTtl: '5m' | '1h'` (Bedrock sends `1h` only to Claude 4.5 and later) and report the lifetime the service wrote.
|
|
10
|
+
|
|
11
|
+
## 5.1.4
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 49491b9: The drivers now report more accurately how a response ended. The runtime uses this to tell a tool call the output limit cut off from one the model wrote badly.
|
|
16
|
+
|
|
17
|
+
- `@namzu/anthropic`: a tool call whose JSON does not parse no longer fails the whole stream with "the provider stream returned malformed data". The block close and the finish reason now reach the runtime. `model_context_window_exceeded` is reported as `length`, and `refusal` as `content_filter`. Both used to read as a normal `stop`.
|
|
18
|
+
- `@namzu/bedrock`: `model_context_window_exceeded` is reported as `length`, and `guardrail_intervened` as `content_filter`. A tool call opens with the id the driver keeps, so its arguments never arrive before an id.
|
|
19
|
+
- `@namzu/http`: the OpenAI dialect maps `finish_reason` instead of passing the server's string through. `function_call` becomes `tool_calls`; `max_tokens` and `max_output_tokens` become `length`; `model_length`, `context_length`, `context_length_exceeded` and `model_context_window_exceeded` become `length` with `finishDetail: 'context_window'`; `eos`, `eos_token`, `end_turn` and `stop_sequence` become `stop`. `error` fails the stream with a `ProviderRequestError` (`kind: 'server'`), as OpenRouter's does. A value it does not know reports no finish reason at all, which the runtime reads as a response that did not say how it ended, rather than as a normal finish. The Anthropic dialect gets the Anthropic mapping above and opens a tool call with the id its arguments carry.
|
|
20
|
+
- `@namzu/openrouter`: `finish_reason` is mapped the same way. `error` (the upstream model failed mid-generation) now fails the stream with a `ProviderRequestError` (`kind: 'server'`).
|
|
21
|
+
- `@namzu/deepseek`: `insufficient_system_resource` now fails the stream with a `ProviderRequestError` (`kind: 'server'`). It used to read as a finished answer.
|
|
22
|
+
- `@namzu/openai`: Codex's `response.incomplete` is reported as `length`, or as `content_filter` when that is the stated reason, with its usage. The stream used to end with no finish reason, so auto-continuation never ran.
|
|
23
|
+
- `@namzu/anthropic`, `@namzu/bedrock` and `@namzu/http`'s Anthropic dialect: a `model_context_window_exceeded` stop also carries `finishDetail: 'context_window'`, so the runtime does not ask the model to continue a reply that filled the whole context window.
|
|
24
|
+
- `@namzu/anthropic`, `@namzu/google` and `@namzu/openai` (Codex): the list of sources a driver appends after a hosted search now carries `contentOrigin: 'driver'` on its stream chunk. The text is unchanged. Without the mark, a tool call the output limit cut off before that list would be reported as malformed.
|
|
25
|
+
|
|
26
|
+
If you branch on `finishReason`, expect `length` or `content_filter` where you saw `stop` for these cases.
|
|
27
|
+
|
|
28
|
+
- 2d4ff9a: Earlier entries in this package's CHANGELOG no longer name one particular application built on namzu, or quote a path from outside this repository. This changes only the CHANGELOG.md that ships in the tarball; no code or types change, and there is nothing to do to upgrade.
|
|
29
|
+
|
|
3
30
|
## 5.1.3
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
|
@@ -666,8 +693,8 @@
|
|
|
666
693
|
The kernel now emits a per-message and per-tool-input lifecycle on the
|
|
667
694
|
event bus, and the provider contract collapses to a single streaming
|
|
668
695
|
entry point. Together these unlock live tool-call rendering (Calling →
|
|
669
|
-
Running → Done with incremental input) for SSE consumers —
|
|
670
|
-
workspace surface
|
|
696
|
+
Running → Done with incremental input) for SSE consumers — a live
|
|
697
|
+
workspace surface motivated the work in the first place.
|
|
671
698
|
|
|
672
699
|
## Breaking changes
|
|
673
700
|
|
package/dist/client.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { Message as BedrockMessage, ConverseStreamOutput, ToolConfiguration
|
|
|
2
2
|
import type { ChatCompletionParams, LLMProvider, ModelInfo, ProviderCapabilities, StreamChunk, TokenUsage } from '@namzu/sdk';
|
|
3
3
|
import type { BedrockHealthReport } from './health.js';
|
|
4
4
|
import type { BedrockConfig } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Claude models on this wire that accept a one-hour cache point: the 4.5
|
|
7
|
+
* generation and later. An older model rejects the field, so it is gated by
|
|
8
|
+
* name and fails toward the default lifetime.
|
|
9
|
+
*/
|
|
10
|
+
export declare function supportsOneHourCache(modelId: string): boolean;
|
|
5
11
|
/**
|
|
6
12
|
* The conversation in Converse's shape: roles alternating, and — when
|
|
7
13
|
* `cachePoint` is set — a cache point ending the history, before the
|
|
@@ -9,8 +15,9 @@ import type { BedrockConfig } from './types.js';
|
|
|
9
15
|
*/
|
|
10
16
|
export declare function toBedrockMessages(messages: ChatCompletionParams['messages'], options?: {
|
|
11
17
|
cachePoint?: boolean;
|
|
18
|
+
cacheTtl?: '5m' | '1h';
|
|
12
19
|
}): BedrockMessage[];
|
|
13
|
-
export declare function toBedrockToolConfig(params: ChatCompletionParams, cachingEnabled?: boolean): ToolConfiguration | undefined;
|
|
20
|
+
export declare function toBedrockToolConfig(params: ChatCompletionParams, cachingEnabled?: boolean, cacheTtl?: '5m' | '1h'): ToolConfiguration | undefined;
|
|
14
21
|
/**
|
|
15
22
|
* The failure Bedrock reported as a stream EVENT rather than as a throw.
|
|
16
23
|
*
|
|
@@ -27,8 +34,17 @@ interface RawBedrockUsage {
|
|
|
27
34
|
totalTokens?: number;
|
|
28
35
|
cacheReadInputTokenCount?: number;
|
|
29
36
|
cacheWriteInputTokenCount?: number;
|
|
37
|
+
/** Cache writes by lifetime, when the service breaks them down. */
|
|
38
|
+
cacheDetails?: {
|
|
39
|
+
ttl?: string;
|
|
40
|
+
inputTokens?: number;
|
|
41
|
+
}[];
|
|
30
42
|
}
|
|
31
|
-
|
|
43
|
+
/**
|
|
44
|
+
* `requestedTtl` is the lifetime the request asked for; it stands in only when
|
|
45
|
+
* the response carries no breakdown, and only for a call that cached.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseBedrockUsage(raw?: RawBedrockUsage, requestedTtl?: '5m' | '1h'): TokenUsage;
|
|
32
48
|
/**
|
|
33
49
|
* What this DRIVER does, not what Bedrock could do: tools are mapped
|
|
34
50
|
* to the Converse toolConfig, but user-message image `attachments`
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,OAAO,IAAI,cAAc,EAKzB,oBAAoB,EAGpB,iBAAiB,EAEjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACX,oBAAoB,EAEpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,UAAU,EAEV,MAAM,YAAY,CAAA;AASnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,OAAO,IAAI,cAAc,EAKzB,oBAAoB,EAGpB,iBAAiB,EAEjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EACX,oBAAoB,EAEpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,UAAU,EAEV,MAAM,YAAY,CAAA;AASnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiC/C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAyGD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAC1C,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAO,GAC5D,cAAc,EAAE,CAqElB;AA6BD,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,cAAc,UAAQ,EACtB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GACpB,iBAAiB,GAAG,SAAS,CA8D/B;AAYD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAQpE;AAED,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;IAClC,mEAAmE;IACnE,YAAY,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,CAoB/F;AA0DD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,oBAYlC,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;IAqM3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmCxC;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInD;;;;;;;;;;;;;OAaG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAsD/D"}
|
package/dist/client.js
CHANGED
|
@@ -19,6 +19,26 @@ import { assertModelReachable, isAnthropicServedModel } from './model-reachabili
|
|
|
19
19
|
* decision rather than a translation.
|
|
20
20
|
*/
|
|
21
21
|
const CACHE_POINT = { cachePoint: { type: 'default' } };
|
|
22
|
+
/**
|
|
23
|
+
* The extended-lifetime cache point. Sent only when a caller asked for `'1h'`
|
|
24
|
+
* (`promptCacheTtl` or `cacheControl.ttl`) AND the model is one that accepts
|
|
25
|
+
* it; `ttl` stays unset otherwise, so a request that did not ask is byte for
|
|
26
|
+
* byte what it was.
|
|
27
|
+
*/
|
|
28
|
+
const CACHE_POINT_1H = {
|
|
29
|
+
cachePoint: { type: 'default', ttl: '1h' },
|
|
30
|
+
};
|
|
31
|
+
function cachePointFor(ttl) {
|
|
32
|
+
return ttl === '1h' ? CACHE_POINT_1H : CACHE_POINT;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Claude models on this wire that accept a one-hour cache point: the 4.5
|
|
36
|
+
* generation and later. An older model rejects the field, so it is gated by
|
|
37
|
+
* name and fails toward the default lifetime.
|
|
38
|
+
*/
|
|
39
|
+
export function supportsOneHourCache(modelId) {
|
|
40
|
+
return /claude-(?:haiku|sonnet|opus)-(?:4-(?:[5-9]|\d{2})|[5-9])(?![0-9])/.test(modelId);
|
|
41
|
+
}
|
|
22
42
|
/**
|
|
23
43
|
* System text, with a cache point after the last STATIC block.
|
|
24
44
|
*
|
|
@@ -32,7 +52,7 @@ const CACHE_POINT = { cachePoint: { type: 'default' } };
|
|
|
32
52
|
* No static block means no system breakpoint, rather than a breakpoint in
|
|
33
53
|
* an arbitrary place.
|
|
34
54
|
*/
|
|
35
|
-
function extractSystemBlocks(messages, cachingEnabled = false) {
|
|
55
|
+
function extractSystemBlocks(messages, cachingEnabled = false, cacheTtl) {
|
|
36
56
|
const blocks = [];
|
|
37
57
|
let lastStatic = -1;
|
|
38
58
|
for (const m of messages) {
|
|
@@ -43,7 +63,7 @@ function extractSystemBlocks(messages, cachingEnabled = false) {
|
|
|
43
63
|
lastStatic = blocks.length - 1;
|
|
44
64
|
}
|
|
45
65
|
if (cachingEnabled && lastStatic >= 0)
|
|
46
|
-
blocks.splice(lastStatic + 1, 0,
|
|
66
|
+
blocks.splice(lastStatic + 1, 0, cachePointFor(cacheTtl));
|
|
47
67
|
return blocks;
|
|
48
68
|
}
|
|
49
69
|
/**
|
|
@@ -74,11 +94,11 @@ function isRequestOnlyContext(msg) {
|
|
|
74
94
|
* point after the request-only context would put text the next request
|
|
75
95
|
* replaces inside the cached prefix, so every read would miss.
|
|
76
96
|
*/
|
|
77
|
-
function applyMessageCachePoint(messages, cacheEnd) {
|
|
97
|
+
function applyMessageCachePoint(messages, cacheEnd, cacheTtl) {
|
|
78
98
|
for (let i = cacheEnd - 1; i >= 0; i--) {
|
|
79
99
|
const content = messages[i]?.content;
|
|
80
100
|
if (content && content.length > 0) {
|
|
81
|
-
content.push(
|
|
101
|
+
content.push(cachePointFor(cacheTtl));
|
|
82
102
|
return;
|
|
83
103
|
}
|
|
84
104
|
}
|
|
@@ -173,7 +193,7 @@ export function toBedrockMessages(messages, options = {}) {
|
|
|
173
193
|
// Placed before the merge, which may fold the context into the last
|
|
174
194
|
// history message; the point then sits between the two in one message.
|
|
175
195
|
if (options.cachePoint)
|
|
176
|
-
applyMessageCachePoint(out, cacheEnd ?? out.length);
|
|
196
|
+
applyMessageCachePoint(out, cacheEnd ?? out.length, options.cacheTtl);
|
|
177
197
|
return mergeConsecutiveRoles(out);
|
|
178
198
|
}
|
|
179
199
|
function messagesContainToolBlocks(messages) {
|
|
@@ -200,7 +220,7 @@ function extractToolNamesFromHistory(messages) {
|
|
|
200
220
|
}
|
|
201
221
|
return Array.from(names);
|
|
202
222
|
}
|
|
203
|
-
export function toBedrockToolConfig(params, cachingEnabled = false) {
|
|
223
|
+
export function toBedrockToolConfig(params, cachingEnabled = false, cacheTtl) {
|
|
204
224
|
// 'none' means the model must not call a tool. This used to map to the
|
|
205
225
|
// wire's 'auto', which means it MAY — the opposite, and silent. No wire
|
|
206
226
|
// format lets a model call a tool it was never given, so send none.
|
|
@@ -232,7 +252,7 @@ export function toBedrockToolConfig(params, cachingEnabled = false) {
|
|
|
232
252
|
// are the literal string `(completed)`, so caching them would pin a
|
|
233
253
|
// prefix that is not the caller's tool set.
|
|
234
254
|
if (cachingEnabled)
|
|
235
|
-
tools.push(
|
|
255
|
+
tools.push(cachePointFor(cacheTtl));
|
|
236
256
|
const toolChoice = formatToolChoice(params.toolChoice);
|
|
237
257
|
return { tools, toolChoice };
|
|
238
258
|
}
|
|
@@ -278,7 +298,11 @@ export function streamFailureIn(event) {
|
|
|
278
298
|
('throttlingException' in event ? event.throttlingException : undefined) ??
|
|
279
299
|
('serviceUnavailableException' in event ? event.serviceUnavailableException : undefined));
|
|
280
300
|
}
|
|
281
|
-
|
|
301
|
+
/**
|
|
302
|
+
* `requestedTtl` is the lifetime the request asked for; it stands in only when
|
|
303
|
+
* the response carries no breakdown, and only for a call that cached.
|
|
304
|
+
*/
|
|
305
|
+
export function parseBedrockUsage(raw, requestedTtl) {
|
|
282
306
|
if (!raw) {
|
|
283
307
|
return {
|
|
284
308
|
promptTokens: 0,
|
|
@@ -296,6 +320,37 @@ export function parseBedrockUsage(raw) {
|
|
|
296
320
|
totalTokens: raw.totalTokens ?? input + output,
|
|
297
321
|
cachedTokens: raw.cacheReadInputTokenCount ?? 0,
|
|
298
322
|
cacheWriteTokens: raw.cacheWriteInputTokenCount ?? 0,
|
|
323
|
+
...cacheLifetime(raw, requestedTtl),
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
function cacheLifetime(raw, requestedTtl) {
|
|
327
|
+
let fiveMin = 0;
|
|
328
|
+
let oneHour = 0;
|
|
329
|
+
for (const detail of raw.cacheDetails ?? []) {
|
|
330
|
+
if (detail.ttl === '1h')
|
|
331
|
+
oneHour += detail.inputTokens ?? 0;
|
|
332
|
+
else if (detail.ttl === '5m')
|
|
333
|
+
fiveMin += detail.inputTokens ?? 0;
|
|
334
|
+
}
|
|
335
|
+
const cacheTtlMs = oneHour > 0
|
|
336
|
+
? 3_600_000
|
|
337
|
+
: fiveMin > 0
|
|
338
|
+
? 300_000
|
|
339
|
+
: requestedTtl === undefined
|
|
340
|
+
? undefined
|
|
341
|
+
: requestedTtl === '1h'
|
|
342
|
+
? 3_600_000
|
|
343
|
+
: 300_000;
|
|
344
|
+
return {
|
|
345
|
+
...(cacheTtlMs !== undefined ? { cacheTtlMs } : {}),
|
|
346
|
+
...(raw.cacheDetails
|
|
347
|
+
? {
|
|
348
|
+
cacheWriteTtlTokens: {
|
|
349
|
+
...(fiveMin > 0 ? { fiveMin } : {}),
|
|
350
|
+
...(oneHour > 0 ? { oneHour } : {}),
|
|
351
|
+
},
|
|
352
|
+
}
|
|
353
|
+
: {}),
|
|
299
354
|
};
|
|
300
355
|
}
|
|
301
356
|
function mapStopReason(reason) {
|
|
@@ -305,9 +360,14 @@ function mapStopReason(reason) {
|
|
|
305
360
|
return 'stop';
|
|
306
361
|
case 'tool_use':
|
|
307
362
|
return 'tool_calls';
|
|
363
|
+
// Both stop the output where it stands; the second is the context
|
|
364
|
+
// window rather than `maxTokens`, and fell to 'stop', so a tool call it
|
|
365
|
+
// cut off read as one the model finished and got wrong.
|
|
308
366
|
case 'max_tokens':
|
|
367
|
+
case 'model_context_window_exceeded':
|
|
309
368
|
return 'length';
|
|
310
369
|
case 'content_filtered':
|
|
370
|
+
case 'guardrail_intervened':
|
|
311
371
|
return 'content_filter';
|
|
312
372
|
default:
|
|
313
373
|
return 'stop';
|
|
@@ -328,6 +388,9 @@ export const BEDROCK_CAPABILITIES = {
|
|
|
328
388
|
supportsDocuments: false,
|
|
329
389
|
supportsToolResultImages: false,
|
|
330
390
|
supportsToolResultDocuments: false,
|
|
391
|
+
// `'1h'` takes effect only on Claude 4.5 and later (`supportsOneHourCache`);
|
|
392
|
+
// any other model keeps the default lifetime.
|
|
393
|
+
cacheTtl: ['5m', '1h'],
|
|
331
394
|
};
|
|
332
395
|
export class BedrockProvider {
|
|
333
396
|
id = 'bedrock';
|
|
@@ -371,9 +434,17 @@ export class BedrockProvider {
|
|
|
371
434
|
// is a rejected request, which costs a caller a working integration
|
|
372
435
|
// rather than a discount they never had.
|
|
373
436
|
const cachingEnabled = params.cacheControl !== undefined && isAnthropicServedModel(params.model);
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
const
|
|
437
|
+
// A lifetime is claimed only for a call that caches. `'1h'` is asked for
|
|
438
|
+
// only where the model accepts it; otherwise the default lifetime stands.
|
|
439
|
+
const asked = params.cacheControl?.ttl ?? this.config.promptCacheTtl;
|
|
440
|
+
const cacheTtl = !cachingEnabled
|
|
441
|
+
? undefined
|
|
442
|
+
: asked === '1h' && supportsOneHourCache(params.model)
|
|
443
|
+
? '1h'
|
|
444
|
+
: '5m';
|
|
445
|
+
const system = extractSystemBlocks(params.messages, cachingEnabled, cacheTtl);
|
|
446
|
+
const messages = toBedrockMessages(params.messages, { cachePoint: cachingEnabled, cacheTtl });
|
|
447
|
+
const toolConfig = toBedrockToolConfig(params, cachingEnabled, cacheTtl);
|
|
377
448
|
const inferenceConfig = {};
|
|
378
449
|
if (params.maxTokens !== undefined)
|
|
379
450
|
inferenceConfig.maxTokens = params.maxTokens;
|
|
@@ -466,8 +537,9 @@ export class BedrockProvider {
|
|
|
466
537
|
const start = event.contentBlockStart.start;
|
|
467
538
|
if ('toolUse' in start && start.toolUse) {
|
|
468
539
|
const idx = event.contentBlockStart.contentBlockIndex ?? toolCallIndex;
|
|
540
|
+
const toolId = start.toolUse.toolUseId ?? `tool-${Date.now()}`;
|
|
469
541
|
activeToolCalls.set(idx, {
|
|
470
|
-
id:
|
|
542
|
+
id: toolId,
|
|
471
543
|
name: start.toolUse.name ?? '',
|
|
472
544
|
args: '',
|
|
473
545
|
});
|
|
@@ -477,7 +549,11 @@ export class BedrockProvider {
|
|
|
477
549
|
toolCalls: [
|
|
478
550
|
{
|
|
479
551
|
index: idx,
|
|
480
|
-
id
|
|
552
|
+
// The id this driver keeps is the id it announces. It
|
|
553
|
+
// announced the wire's, which is absent exactly when
|
|
554
|
+
// the fallback was made, and the call's arguments
|
|
555
|
+
// then arrived before any id at all.
|
|
556
|
+
id: toolId,
|
|
481
557
|
type: 'function',
|
|
482
558
|
function: { name: start.toolUse.name ?? '' },
|
|
483
559
|
},
|
|
@@ -494,10 +570,15 @@ export class BedrockProvider {
|
|
|
494
570
|
id: requestId,
|
|
495
571
|
delta: {},
|
|
496
572
|
finishReason: mapStopReason(event.messageStop.stopReason),
|
|
573
|
+
// The context window rather than `maxTokens`: the turn loop does
|
|
574
|
+
// not continue a reply that filled it.
|
|
575
|
+
...(event.messageStop.stopReason === 'model_context_window_exceeded'
|
|
576
|
+
? { finishDetail: 'context_window' }
|
|
577
|
+
: {}),
|
|
497
578
|
};
|
|
498
579
|
}
|
|
499
580
|
if ('metadata' in event && event.metadata?.usage) {
|
|
500
|
-
const usage = parseBedrockUsage(event.metadata.usage);
|
|
581
|
+
const usage = parseBedrockUsage(event.metadata.usage, cacheTtl);
|
|
501
582
|
yield {
|
|
502
583
|
id: requestId,
|
|
503
584
|
delta: {},
|
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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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,13 @@ export interface BedrockConfig {
|
|
|
12
12
|
secretAccessKey?: string;
|
|
13
13
|
sessionToken?: string;
|
|
14
14
|
timeout?: number;
|
|
15
|
+
/**
|
|
16
|
+
* How long the prompt cache lives: `'5m'` (the default) or `'1h'`. `'1h'` is
|
|
17
|
+
* sent only for Claude 4.5 and later models; any other model keeps the
|
|
18
|
+
* default. A call can override it with `cacheControl.ttl`. The longer
|
|
19
|
+
* lifetime costs more per cache write.
|
|
20
|
+
*/
|
|
21
|
+
promptCacheTtl?: '5m' | '1h';
|
|
15
22
|
}
|
|
16
23
|
export interface BedrockProviderConfig extends BedrockConfig {
|
|
17
24
|
type: 'bedrock';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;IAChB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,IAAI,EAAE,SAAS,CAAA;CACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/bedrock",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.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
|
"engines": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@types/node": "^22.19.17",
|
|
58
58
|
"typescript": "^5.5.0",
|
|
59
59
|
"vitest": "^4.1.11",
|
|
60
|
-
"@namzu/sdk": "^
|
|
60
|
+
"@namzu/sdk": "^54.0.0"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "tsc --build",
|
package/src/client.ts
CHANGED
|
@@ -51,6 +51,29 @@ import type { BedrockConfig } from './types.js'
|
|
|
51
51
|
*/
|
|
52
52
|
const CACHE_POINT: { cachePoint: CachePointBlock } = { cachePoint: { type: 'default' } }
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* The extended-lifetime cache point. Sent only when a caller asked for `'1h'`
|
|
56
|
+
* (`promptCacheTtl` or `cacheControl.ttl`) AND the model is one that accepts
|
|
57
|
+
* it; `ttl` stays unset otherwise, so a request that did not ask is byte for
|
|
58
|
+
* byte what it was.
|
|
59
|
+
*/
|
|
60
|
+
const CACHE_POINT_1H: { cachePoint: CachePointBlock } = {
|
|
61
|
+
cachePoint: { type: 'default', ttl: '1h' },
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function cachePointFor(ttl: '5m' | '1h' | undefined): { cachePoint: CachePointBlock } {
|
|
65
|
+
return ttl === '1h' ? CACHE_POINT_1H : CACHE_POINT
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Claude models on this wire that accept a one-hour cache point: the 4.5
|
|
70
|
+
* generation and later. An older model rejects the field, so it is gated by
|
|
71
|
+
* name and fails toward the default lifetime.
|
|
72
|
+
*/
|
|
73
|
+
export function supportsOneHourCache(modelId: string): boolean {
|
|
74
|
+
return /claude-(?:haiku|sonnet|opus)-(?:4-(?:[5-9]|\d{2})|[5-9])(?![0-9])/.test(modelId)
|
|
75
|
+
}
|
|
76
|
+
|
|
54
77
|
/**
|
|
55
78
|
* System text, with a cache point after the last STATIC block.
|
|
56
79
|
*
|
|
@@ -67,6 +90,7 @@ const CACHE_POINT: { cachePoint: CachePointBlock } = { cachePoint: { type: 'defa
|
|
|
67
90
|
function extractSystemBlocks(
|
|
68
91
|
messages: ChatCompletionParams['messages'],
|
|
69
92
|
cachingEnabled = false,
|
|
93
|
+
cacheTtl?: '5m' | '1h',
|
|
70
94
|
): SystemContentBlock[] {
|
|
71
95
|
const blocks: SystemContentBlock[] = []
|
|
72
96
|
let lastStatic = -1
|
|
@@ -77,7 +101,7 @@ function extractSystemBlocks(
|
|
|
77
101
|
if (m.cacheHint === 'cache') lastStatic = blocks.length - 1
|
|
78
102
|
}
|
|
79
103
|
|
|
80
|
-
if (cachingEnabled && lastStatic >= 0) blocks.splice(lastStatic + 1, 0,
|
|
104
|
+
if (cachingEnabled && lastStatic >= 0) blocks.splice(lastStatic + 1, 0, cachePointFor(cacheTtl))
|
|
81
105
|
|
|
82
106
|
return blocks
|
|
83
107
|
}
|
|
@@ -113,11 +137,15 @@ function isRequestOnlyContext(msg: ChatCompletionParams['messages'][number]): bo
|
|
|
113
137
|
* point after the request-only context would put text the next request
|
|
114
138
|
* replaces inside the cached prefix, so every read would miss.
|
|
115
139
|
*/
|
|
116
|
-
function applyMessageCachePoint(
|
|
140
|
+
function applyMessageCachePoint(
|
|
141
|
+
messages: BedrockMessage[],
|
|
142
|
+
cacheEnd: number,
|
|
143
|
+
cacheTtl?: '5m' | '1h',
|
|
144
|
+
): void {
|
|
117
145
|
for (let i = cacheEnd - 1; i >= 0; i--) {
|
|
118
146
|
const content = messages[i]?.content
|
|
119
147
|
if (content && content.length > 0) {
|
|
120
|
-
content.push(
|
|
148
|
+
content.push(cachePointFor(cacheTtl))
|
|
121
149
|
return
|
|
122
150
|
}
|
|
123
151
|
}
|
|
@@ -156,7 +184,7 @@ function toBedrockRole(role: string): ConversationRole {
|
|
|
156
184
|
*/
|
|
157
185
|
export function toBedrockMessages(
|
|
158
186
|
messages: ChatCompletionParams['messages'],
|
|
159
|
-
options: { cachePoint?: boolean } = {},
|
|
187
|
+
options: { cachePoint?: boolean; cacheTtl?: '5m' | '1h' } = {},
|
|
160
188
|
): BedrockMessage[] {
|
|
161
189
|
const out: BedrockMessage[] = []
|
|
162
190
|
let cacheEnd: number | undefined
|
|
@@ -224,7 +252,7 @@ export function toBedrockMessages(
|
|
|
224
252
|
|
|
225
253
|
// Placed before the merge, which may fold the context into the last
|
|
226
254
|
// history message; the point then sits between the two in one message.
|
|
227
|
-
if (options.cachePoint) applyMessageCachePoint(out, cacheEnd ?? out.length)
|
|
255
|
+
if (options.cachePoint) applyMessageCachePoint(out, cacheEnd ?? out.length, options.cacheTtl)
|
|
228
256
|
return mergeConsecutiveRoles(out)
|
|
229
257
|
}
|
|
230
258
|
|
|
@@ -258,6 +286,7 @@ function extractToolNamesFromHistory(messages: ChatCompletionParams['messages'])
|
|
|
258
286
|
export function toBedrockToolConfig(
|
|
259
287
|
params: ChatCompletionParams,
|
|
260
288
|
cachingEnabled = false,
|
|
289
|
+
cacheTtl?: '5m' | '1h',
|
|
261
290
|
): ToolConfiguration | undefined {
|
|
262
291
|
// 'none' means the model must not call a tool. This used to map to the
|
|
263
292
|
// wire's 'auto', which means it MAY — the opposite, and silent. No wire
|
|
@@ -296,7 +325,7 @@ export function toBedrockToolConfig(
|
|
|
296
325
|
// references a tool the caller no longer passes; their descriptions
|
|
297
326
|
// are the literal string `(completed)`, so caching them would pin a
|
|
298
327
|
// prefix that is not the caller's tool set.
|
|
299
|
-
if (cachingEnabled) tools.push(
|
|
328
|
+
if (cachingEnabled) tools.push(cachePointFor(cacheTtl))
|
|
300
329
|
|
|
301
330
|
const toolChoice = formatToolChoice(params.toolChoice)
|
|
302
331
|
return { tools, toolChoice }
|
|
@@ -357,9 +386,15 @@ interface RawBedrockUsage {
|
|
|
357
386
|
totalTokens?: number
|
|
358
387
|
cacheReadInputTokenCount?: number
|
|
359
388
|
cacheWriteInputTokenCount?: number
|
|
389
|
+
/** Cache writes by lifetime, when the service breaks them down. */
|
|
390
|
+
cacheDetails?: { ttl?: string; inputTokens?: number }[]
|
|
360
391
|
}
|
|
361
392
|
|
|
362
|
-
|
|
393
|
+
/**
|
|
394
|
+
* `requestedTtl` is the lifetime the request asked for; it stands in only when
|
|
395
|
+
* the response carries no breakdown, and only for a call that cached.
|
|
396
|
+
*/
|
|
397
|
+
export function parseBedrockUsage(raw?: RawBedrockUsage, requestedTtl?: '5m' | '1h'): TokenUsage {
|
|
363
398
|
if (!raw) {
|
|
364
399
|
return {
|
|
365
400
|
promptTokens: 0,
|
|
@@ -377,6 +412,40 @@ export function parseBedrockUsage(raw?: RawBedrockUsage): TokenUsage {
|
|
|
377
412
|
totalTokens: raw.totalTokens ?? input + output,
|
|
378
413
|
cachedTokens: raw.cacheReadInputTokenCount ?? 0,
|
|
379
414
|
cacheWriteTokens: raw.cacheWriteInputTokenCount ?? 0,
|
|
415
|
+
...cacheLifetime(raw, requestedTtl),
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
function cacheLifetime(
|
|
420
|
+
raw: RawBedrockUsage,
|
|
421
|
+
requestedTtl: '5m' | '1h' | undefined,
|
|
422
|
+
): Pick<TokenUsage, 'cacheTtlMs' | 'cacheWriteTtlTokens'> {
|
|
423
|
+
let fiveMin = 0
|
|
424
|
+
let oneHour = 0
|
|
425
|
+
for (const detail of raw.cacheDetails ?? []) {
|
|
426
|
+
if (detail.ttl === '1h') oneHour += detail.inputTokens ?? 0
|
|
427
|
+
else if (detail.ttl === '5m') fiveMin += detail.inputTokens ?? 0
|
|
428
|
+
}
|
|
429
|
+
const cacheTtlMs =
|
|
430
|
+
oneHour > 0
|
|
431
|
+
? 3_600_000
|
|
432
|
+
: fiveMin > 0
|
|
433
|
+
? 300_000
|
|
434
|
+
: requestedTtl === undefined
|
|
435
|
+
? undefined
|
|
436
|
+
: requestedTtl === '1h'
|
|
437
|
+
? 3_600_000
|
|
438
|
+
: 300_000
|
|
439
|
+
return {
|
|
440
|
+
...(cacheTtlMs !== undefined ? { cacheTtlMs } : {}),
|
|
441
|
+
...(raw.cacheDetails
|
|
442
|
+
? {
|
|
443
|
+
cacheWriteTtlTokens: {
|
|
444
|
+
...(fiveMin > 0 ? { fiveMin } : {}),
|
|
445
|
+
...(oneHour > 0 ? { oneHour } : {}),
|
|
446
|
+
},
|
|
447
|
+
}
|
|
448
|
+
: {}),
|
|
380
449
|
}
|
|
381
450
|
}
|
|
382
451
|
|
|
@@ -389,9 +458,14 @@ function mapStopReason(reason?: string): NamzuFinishReason {
|
|
|
389
458
|
return 'stop'
|
|
390
459
|
case 'tool_use':
|
|
391
460
|
return 'tool_calls'
|
|
461
|
+
// Both stop the output where it stands; the second is the context
|
|
462
|
+
// window rather than `maxTokens`, and fell to 'stop', so a tool call it
|
|
463
|
+
// cut off read as one the model finished and got wrong.
|
|
392
464
|
case 'max_tokens':
|
|
465
|
+
case 'model_context_window_exceeded':
|
|
393
466
|
return 'length'
|
|
394
467
|
case 'content_filtered':
|
|
468
|
+
case 'guardrail_intervened':
|
|
395
469
|
return 'content_filter'
|
|
396
470
|
default:
|
|
397
471
|
return 'stop'
|
|
@@ -413,6 +487,9 @@ export const BEDROCK_CAPABILITIES: ProviderCapabilities = {
|
|
|
413
487
|
supportsDocuments: false,
|
|
414
488
|
supportsToolResultImages: false,
|
|
415
489
|
supportsToolResultDocuments: false,
|
|
490
|
+
// `'1h'` takes effect only on Claude 4.5 and later (`supportsOneHourCache`);
|
|
491
|
+
// any other model keeps the default lifetime.
|
|
492
|
+
cacheTtl: ['5m', '1h'],
|
|
416
493
|
}
|
|
417
494
|
|
|
418
495
|
export class BedrockProvider implements LLMProvider {
|
|
@@ -466,9 +543,17 @@ export class BedrockProvider implements LLMProvider {
|
|
|
466
543
|
// rather than a discount they never had.
|
|
467
544
|
const cachingEnabled = params.cacheControl !== undefined && isAnthropicServedModel(params.model)
|
|
468
545
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
const
|
|
546
|
+
// A lifetime is claimed only for a call that caches. `'1h'` is asked for
|
|
547
|
+
// only where the model accepts it; otherwise the default lifetime stands.
|
|
548
|
+
const asked = params.cacheControl?.ttl ?? this.config.promptCacheTtl
|
|
549
|
+
const cacheTtl: '5m' | '1h' | undefined = !cachingEnabled
|
|
550
|
+
? undefined
|
|
551
|
+
: asked === '1h' && supportsOneHourCache(params.model)
|
|
552
|
+
? '1h'
|
|
553
|
+
: '5m'
|
|
554
|
+
const system = extractSystemBlocks(params.messages, cachingEnabled, cacheTtl)
|
|
555
|
+
const messages = toBedrockMessages(params.messages, { cachePoint: cachingEnabled, cacheTtl })
|
|
556
|
+
const toolConfig = toBedrockToolConfig(params, cachingEnabled, cacheTtl)
|
|
472
557
|
|
|
473
558
|
const inferenceConfig: Record<string, unknown> = {}
|
|
474
559
|
if (params.maxTokens !== undefined) inferenceConfig.maxTokens = params.maxTokens
|
|
@@ -565,8 +650,9 @@ export class BedrockProvider implements LLMProvider {
|
|
|
565
650
|
const start = event.contentBlockStart.start
|
|
566
651
|
if ('toolUse' in start && start.toolUse) {
|
|
567
652
|
const idx = event.contentBlockStart.contentBlockIndex ?? toolCallIndex
|
|
653
|
+
const toolId = start.toolUse.toolUseId ?? `tool-${Date.now()}`
|
|
568
654
|
activeToolCalls.set(idx, {
|
|
569
|
-
id:
|
|
655
|
+
id: toolId,
|
|
570
656
|
name: start.toolUse.name ?? '',
|
|
571
657
|
args: '',
|
|
572
658
|
})
|
|
@@ -576,7 +662,11 @@ export class BedrockProvider implements LLMProvider {
|
|
|
576
662
|
toolCalls: [
|
|
577
663
|
{
|
|
578
664
|
index: idx,
|
|
579
|
-
id
|
|
665
|
+
// The id this driver keeps is the id it announces. It
|
|
666
|
+
// announced the wire's, which is absent exactly when
|
|
667
|
+
// the fallback was made, and the call's arguments
|
|
668
|
+
// then arrived before any id at all.
|
|
669
|
+
id: toolId,
|
|
580
670
|
type: 'function',
|
|
581
671
|
function: { name: start.toolUse.name ?? '' },
|
|
582
672
|
},
|
|
@@ -595,11 +685,16 @@ export class BedrockProvider implements LLMProvider {
|
|
|
595
685
|
id: requestId,
|
|
596
686
|
delta: {},
|
|
597
687
|
finishReason: mapStopReason(event.messageStop.stopReason),
|
|
688
|
+
// The context window rather than `maxTokens`: the turn loop does
|
|
689
|
+
// not continue a reply that filled it.
|
|
690
|
+
...(event.messageStop.stopReason === 'model_context_window_exceeded'
|
|
691
|
+
? { finishDetail: 'context_window' as const }
|
|
692
|
+
: {}),
|
|
598
693
|
}
|
|
599
694
|
}
|
|
600
695
|
|
|
601
696
|
if ('metadata' in event && event.metadata?.usage) {
|
|
602
|
-
const usage = parseBedrockUsage(event.metadata.usage as RawBedrockUsage)
|
|
697
|
+
const usage = parseBedrockUsage(event.metadata.usage as RawBedrockUsage, cacheTtl)
|
|
603
698
|
yield {
|
|
604
699
|
id: requestId,
|
|
605
700
|
delta: {},
|
package/src/types.ts
CHANGED
|
@@ -13,6 +13,13 @@ export interface BedrockConfig {
|
|
|
13
13
|
secretAccessKey?: string
|
|
14
14
|
sessionToken?: string
|
|
15
15
|
timeout?: number
|
|
16
|
+
/**
|
|
17
|
+
* How long the prompt cache lives: `'5m'` (the default) or `'1h'`. `'1h'` is
|
|
18
|
+
* sent only for Claude 4.5 and later models; any other model keeps the
|
|
19
|
+
* default. A call can override it with `cacheControl.ttl`. The longer
|
|
20
|
+
* lifetime costs more per cache write.
|
|
21
|
+
*/
|
|
22
|
+
promptCacheTtl?: '5m' | '1h'
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
export interface BedrockProviderConfig extends BedrockConfig {
|