@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 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 — the cowork
670
- workspace surface that motivated the work in the first place.
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
- export declare function parseBedrockUsage(raw?: RawBedrockUsage): TokenUsage;
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`
@@ -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;AAqH/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAC1C,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,cAAc,EAAE,CAqElB;AA6BD,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,cAAc,UAAQ,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;CAClC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,UAAU,CAmBnE;AAoBD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,oBASlC,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;IAmL3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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, CACHE_POINT);
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(CACHE_POINT);
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(CACHE_POINT);
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
- export function parseBedrockUsage(raw) {
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
- const system = extractSystemBlocks(params.messages, cachingEnabled);
375
- const messages = toBedrockMessages(params.messages, { cachePoint: cachingEnabled });
376
- const toolConfig = toBedrockToolConfig(params, cachingEnabled);
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: start.toolUse.toolUseId ?? `tool-${Date.now()}`,
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: start.toolUse.toolUseId,
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: {},
@@ -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';
@@ -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;CAChB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,IAAI,EAAE,SAAS,CAAA;CACf"}
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.1.3",
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": "^44.0.0"
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, CACHE_POINT)
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(messages: BedrockMessage[], cacheEnd: number): void {
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(CACHE_POINT)
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(CACHE_POINT)
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
- export function parseBedrockUsage(raw?: RawBedrockUsage): TokenUsage {
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
- const system = extractSystemBlocks(params.messages, cachingEnabled)
470
- const messages = toBedrockMessages(params.messages, { cachePoint: cachingEnabled })
471
- const toolConfig = toBedrockToolConfig(params, cachingEnabled)
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: start.toolUse.toolUseId ?? `tool-${Date.now()}`,
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: start.toolUse.toolUseId,
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 {