@strands-agents/sdk 1.2.0 → 1.4.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.
Files changed (231) hide show
  1. package/README.md +13 -13
  2. package/dist/src/__fixtures__/test-sandbox.node.d.ts +15 -0
  3. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -0
  4. package/dist/src/__fixtures__/test-sandbox.node.js +22 -0
  5. package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -0
  6. package/dist/src/__tests__/mcp.test.js +14 -14
  7. package/dist/src/__tests__/mcp.test.js.map +1 -1
  8. package/dist/src/agent/__tests__/agent.test.js +195 -0
  9. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  10. package/dist/src/agent/__tests__/printer.test.js +58 -18
  11. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  12. package/dist/src/agent/__tests__/tool-caller.test.d.ts +2 -0
  13. package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +1 -0
  14. package/dist/src/agent/__tests__/tool-caller.test.js +459 -0
  15. package/dist/src/agent/__tests__/tool-caller.test.js.map +1 -0
  16. package/dist/src/agent/agent.d.ts +68 -2
  17. package/dist/src/agent/agent.d.ts.map +1 -1
  18. package/dist/src/agent/agent.js +125 -66
  19. package/dist/src/agent/agent.js.map +1 -1
  20. package/dist/src/agent/printer.d.ts +14 -1
  21. package/dist/src/agent/printer.d.ts.map +1 -1
  22. package/dist/src/agent/printer.js +33 -5
  23. package/dist/src/agent/printer.js.map +1 -1
  24. package/dist/src/agent/tool-caller.d.ts +149 -0
  25. package/dist/src/agent/tool-caller.d.ts.map +1 -0
  26. package/dist/src/agent/tool-caller.js +198 -0
  27. package/dist/src/agent/tool-caller.js.map +1 -0
  28. package/dist/src/errors.d.ts +17 -0
  29. package/dist/src/errors.d.ts.map +1 -1
  30. package/dist/src/errors.js +21 -0
  31. package/dist/src/errors.js.map +1 -1
  32. package/dist/src/hooks/types.d.ts +2 -0
  33. package/dist/src/hooks/types.d.ts.map +1 -1
  34. package/dist/src/hooks/types.js +2 -0
  35. package/dist/src/hooks/types.js.map +1 -1
  36. package/dist/src/index.d.ts +10 -3
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +6 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/interventions/__tests__/handler.test.d.ts +2 -0
  41. package/dist/src/interventions/__tests__/handler.test.d.ts.map +1 -0
  42. package/dist/src/interventions/__tests__/handler.test.js +35 -0
  43. package/dist/src/interventions/__tests__/handler.test.js.map +1 -0
  44. package/dist/src/interventions/__tests__/registry.test.d.ts +2 -0
  45. package/dist/src/interventions/__tests__/registry.test.d.ts.map +1 -0
  46. package/dist/src/interventions/__tests__/registry.test.js +692 -0
  47. package/dist/src/interventions/__tests__/registry.test.js.map +1 -0
  48. package/dist/src/interventions/actions.d.ts +186 -0
  49. package/dist/src/interventions/actions.d.ts.map +1 -0
  50. package/dist/src/interventions/actions.js +56 -0
  51. package/dist/src/interventions/actions.js.map +1 -0
  52. package/dist/src/interventions/handler.d.ts +43 -0
  53. package/dist/src/interventions/handler.d.ts.map +1 -0
  54. package/dist/src/interventions/handler.js +41 -0
  55. package/dist/src/interventions/handler.js.map +1 -0
  56. package/dist/src/interventions/index.d.ts +12 -0
  57. package/dist/src/interventions/index.d.ts.map +1 -0
  58. package/dist/src/interventions/index.js +4 -0
  59. package/dist/src/interventions/index.js.map +1 -0
  60. package/dist/src/interventions/registry.d.ts +36 -0
  61. package/dist/src/interventions/registry.d.ts.map +1 -0
  62. package/dist/src/interventions/registry.js +252 -0
  63. package/dist/src/interventions/registry.js.map +1 -0
  64. package/dist/src/mcp.d.ts +20 -15
  65. package/dist/src/mcp.d.ts.map +1 -1
  66. package/dist/src/mcp.js +15 -8
  67. package/dist/src/mcp.js.map +1 -1
  68. package/dist/src/models/__tests__/anthropic.test.js +72 -8
  69. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  70. package/dist/src/models/__tests__/bedrock.test.js +142 -0
  71. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  72. package/dist/src/models/anthropic.d.ts +10 -0
  73. package/dist/src/models/anthropic.d.ts.map +1 -1
  74. package/dist/src/models/anthropic.js +24 -8
  75. package/dist/src/models/anthropic.js.map +1 -1
  76. package/dist/src/models/bedrock.d.ts +26 -1
  77. package/dist/src/models/bedrock.d.ts.map +1 -1
  78. package/dist/src/models/bedrock.js +22 -4
  79. package/dist/src/models/bedrock.js.map +1 -1
  80. package/dist/src/models/openai/__tests__/chat.test.js +2 -10
  81. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
  82. package/dist/src/models/openai/__tests__/errors.test.d.ts +2 -0
  83. package/dist/src/models/openai/__tests__/errors.test.d.ts.map +1 -0
  84. package/dist/src/models/openai/__tests__/errors.test.js +30 -0
  85. package/dist/src/models/openai/__tests__/errors.test.js.map +1 -0
  86. package/dist/src/models/openai/__tests__/mantle.test.d.ts +2 -0
  87. package/dist/src/models/openai/__tests__/mantle.test.d.ts.map +1 -0
  88. package/dist/src/models/openai/__tests__/mantle.test.js +189 -0
  89. package/dist/src/models/openai/__tests__/mantle.test.js.map +1 -0
  90. package/dist/src/models/openai/__tests__/responses.test.js +0 -19
  91. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  92. package/dist/src/models/openai/errors.d.ts.map +1 -1
  93. package/dist/src/models/openai/errors.js +5 -3
  94. package/dist/src/models/openai/errors.js.map +1 -1
  95. package/dist/src/models/openai/index.d.ts +1 -0
  96. package/dist/src/models/openai/index.d.ts.map +1 -1
  97. package/dist/src/models/openai/mantle.d.ts +77 -0
  98. package/dist/src/models/openai/mantle.d.ts.map +1 -0
  99. package/dist/src/models/openai/mantle.js +83 -0
  100. package/dist/src/models/openai/mantle.js.map +1 -0
  101. package/dist/src/models/openai/model.d.ts.map +1 -1
  102. package/dist/src/models/openai/model.js +29 -1
  103. package/dist/src/models/openai/model.js.map +1 -1
  104. package/dist/src/models/openai/types.d.ts +11 -0
  105. package/dist/src/models/openai/types.d.ts.map +1 -1
  106. package/dist/src/multiagent/__tests__/nodes.test.js +50 -0
  107. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  108. package/dist/src/multiagent/nodes.d.ts +23 -2
  109. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  110. package/dist/src/multiagent/nodes.js +18 -4
  111. package/dist/src/multiagent/nodes.js.map +1 -1
  112. package/dist/src/registry/__tests__/tool-registry.test.js +50 -1
  113. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
  114. package/dist/src/registry/tool-registry.d.ts +13 -0
  115. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  116. package/dist/src/registry/tool-registry.js +35 -1
  117. package/dist/src/registry/tool-registry.js.map +1 -1
  118. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +2 -0
  119. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +1 -0
  120. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +252 -0
  121. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -0
  122. package/dist/src/sandbox/base.d.ts +138 -0
  123. package/dist/src/sandbox/base.d.ts.map +1 -0
  124. package/dist/src/sandbox/base.js +84 -0
  125. package/dist/src/sandbox/base.js.map +1 -0
  126. package/dist/src/sandbox/constants.d.ts +7 -0
  127. package/dist/src/sandbox/constants.d.ts.map +1 -0
  128. package/dist/src/sandbox/constants.js +7 -0
  129. package/dist/src/sandbox/constants.js.map +1 -0
  130. package/dist/src/sandbox/posix-shell.d.ts +32 -0
  131. package/dist/src/sandbox/posix-shell.d.ts.map +1 -0
  132. package/dist/src/sandbox/posix-shell.js +78 -0
  133. package/dist/src/sandbox/posix-shell.js.map +1 -0
  134. package/dist/src/sandbox/stream-process.d.ts +32 -0
  135. package/dist/src/sandbox/stream-process.d.ts.map +1 -0
  136. package/dist/src/sandbox/stream-process.js +160 -0
  137. package/dist/src/sandbox/stream-process.js.map +1 -0
  138. package/dist/src/sandbox/types.d.ts +57 -0
  139. package/dist/src/sandbox/types.d.ts.map +1 -0
  140. package/dist/src/sandbox/types.js +8 -0
  141. package/dist/src/sandbox/types.js.map +1 -0
  142. package/dist/src/telemetry/__tests__/meter.test.js +11 -0
  143. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  144. package/dist/src/telemetry/meter.d.ts +10 -6
  145. package/dist/src/telemetry/meter.d.ts.map +1 -1
  146. package/dist/src/telemetry/meter.js +16 -3
  147. package/dist/src/telemetry/meter.js.map +1 -1
  148. package/dist/src/tsconfig.tsbuildinfo +1 -1
  149. package/dist/src/types/__tests__/messages.test.js +28 -0
  150. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  151. package/dist/src/types/agent.d.ts +51 -0
  152. package/dist/src/types/agent.d.ts.map +1 -1
  153. package/dist/src/types/agent.js.map +1 -1
  154. package/dist/src/types/lifecycle-observer.d.ts +18 -0
  155. package/dist/src/types/lifecycle-observer.d.ts.map +1 -0
  156. package/dist/src/types/lifecycle-observer.js +2 -0
  157. package/dist/src/types/lifecycle-observer.js.map +1 -0
  158. package/dist/src/types/messages.d.ts +20 -2
  159. package/dist/src/types/messages.d.ts.map +1 -1
  160. package/dist/src/types/messages.js +9 -0
  161. package/dist/src/types/messages.js.map +1 -1
  162. package/dist/src/utils/shell-quote.d.ts +12 -0
  163. package/dist/src/utils/shell-quote.d.ts.map +1 -0
  164. package/dist/src/utils/shell-quote.js +14 -0
  165. package/dist/src/utils/shell-quote.js.map +1 -0
  166. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +2 -0
  167. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +1 -0
  168. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +358 -0
  169. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +1 -0
  170. package/dist/src/vended-interventions/hitl/hitl.d.ts +115 -0
  171. package/dist/src/vended-interventions/hitl/hitl.d.ts.map +1 -0
  172. package/dist/src/vended-interventions/hitl/hitl.js +138 -0
  173. package/dist/src/vended-interventions/hitl/hitl.js.map +1 -0
  174. package/dist/src/vended-interventions/hitl/index.d.ts +24 -0
  175. package/dist/src/vended-interventions/hitl/index.d.ts.map +1 -0
  176. package/dist/src/vended-interventions/hitl/index.js +23 -0
  177. package/dist/src/vended-interventions/hitl/index.js.map +1 -0
  178. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +2 -0
  179. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +1 -0
  180. package/dist/src/vended-interventions/steering/__tests__/handler.test.js +163 -0
  181. package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +1 -0
  182. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +2 -0
  183. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +1 -0
  184. package/dist/src/vended-interventions/steering/__tests__/llm.test.js +60 -0
  185. package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +1 -0
  186. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +2 -0
  187. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +1 -0
  188. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +94 -0
  189. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +1 -0
  190. package/dist/src/vended-interventions/steering/handlers/handler.d.ts +64 -0
  191. package/dist/src/vended-interventions/steering/handlers/handler.d.ts.map +1 -0
  192. package/dist/src/vended-interventions/steering/handlers/handler.js +71 -0
  193. package/dist/src/vended-interventions/steering/handlers/handler.js.map +1 -0
  194. package/dist/src/vended-interventions/steering/handlers/llm.d.ts +72 -0
  195. package/dist/src/vended-interventions/steering/handlers/llm.d.ts.map +1 -0
  196. package/dist/src/vended-interventions/steering/handlers/llm.js +177 -0
  197. package/dist/src/vended-interventions/steering/handlers/llm.js.map +1 -0
  198. package/dist/src/vended-interventions/steering/index.d.ts +31 -0
  199. package/dist/src/vended-interventions/steering/index.d.ts.map +1 -0
  200. package/dist/src/vended-interventions/steering/index.js +32 -0
  201. package/dist/src/vended-interventions/steering/index.js.map +1 -0
  202. package/dist/src/vended-interventions/steering/providers/context-provider.d.ts +55 -0
  203. package/dist/src/vended-interventions/steering/providers/context-provider.d.ts.map +1 -0
  204. package/dist/src/vended-interventions/steering/providers/context-provider.js +8 -0
  205. package/dist/src/vended-interventions/steering/providers/context-provider.js.map +1 -0
  206. package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts +49 -0
  207. package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts.map +1 -0
  208. package/dist/src/vended-interventions/steering/providers/tool-ledger.js +75 -0
  209. package/dist/src/vended-interventions/steering/providers/tool-ledger.js.map +1 -0
  210. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +208 -0
  211. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -1
  212. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts +2 -0
  213. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts.map +1 -0
  214. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js +149 -0
  215. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js.map +1 -0
  216. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  217. package/dist/src/vended-plugins/context-offloader/plugin.js +57 -10
  218. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  219. package/dist/src/vended-plugins/context-offloader/search.d.ts +25 -0
  220. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -0
  221. package/dist/src/vended-plugins/context-offloader/search.js +120 -0
  222. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -0
  223. package/dist/src/vended-plugins/index.d.ts +11 -0
  224. package/dist/src/vended-plugins/index.d.ts.map +1 -0
  225. package/dist/src/vended-plugins/index.js +11 -0
  226. package/dist/src/vended-plugins/index.js.map +1 -0
  227. package/dist/src/vended-tools/index.d.ts +17 -0
  228. package/dist/src/vended-tools/index.d.ts.map +1 -0
  229. package/dist/src/vended-tools/index.js +17 -0
  230. package/dist/src/vended-tools/index.js.map +1 -0
  231. package/package.json +37 -11
@@ -0,0 +1,252 @@
1
+ import { BeforeInvocationEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, } from '../hooks/events.js';
2
+ import { HookOrder } from '../hooks/types.js';
3
+ import { Message, TextBlock } from '../types/messages.js';
4
+ import { defaultEvaluate } from './actions.js';
5
+ import { InterventionHandler } from './handler.js';
6
+ import { InterruptError } from '../interrupt.js';
7
+ import { logger } from '../logging/logger.js';
8
+ /**
9
+ * Bridges {@link InterventionHandler} instances and the Strands hook system.
10
+ *
11
+ * Registers one hook callback per lifecycle event type, then dispatches to
12
+ * all handlers that override that method — in registration order, with
13
+ * short-circuiting on Deny (and denied Confirms) and accumulation for Guide.
14
+ *
15
+ * See {@link InterventionAction} for the action-to-event compatibility matrix.
16
+ */
17
+ export class InterventionRegistry {
18
+ _handlers;
19
+ constructor(handlers, hookRegistry) {
20
+ const seen = new Set();
21
+ for (const h of handlers) {
22
+ if (seen.has(h.name)) {
23
+ throw new Error(`Duplicate intervention handler name: '${h.name}'`);
24
+ }
25
+ seen.add(h.name);
26
+ }
27
+ this._handlers = handlers;
28
+ this._registerHooks(hookRegistry);
29
+ }
30
+ /** Registered handlers in registration order. */
31
+ get handlers() {
32
+ return this._handlers;
33
+ }
34
+ _registerHooks(hookRegistry) {
35
+ if (this._handlers.some((h) => h.beforeInvocation !== InterventionHandler.prototype.beforeInvocation)) {
36
+ hookRegistry.addCallback(BeforeInvocationEvent, (e) => this._onBeforeInvocation(e), {
37
+ order: HookOrder.INTERVENTION_INPUT,
38
+ });
39
+ }
40
+ if (this._handlers.some((h) => h.beforeToolCall !== InterventionHandler.prototype.beforeToolCall)) {
41
+ hookRegistry.addCallback(BeforeToolCallEvent, (e) => this._onBeforeToolCall(e), {
42
+ order: HookOrder.INTERVENTION_INPUT,
43
+ });
44
+ }
45
+ if (this._handlers.some((h) => h.afterToolCall !== InterventionHandler.prototype.afterToolCall)) {
46
+ hookRegistry.addCallback(AfterToolCallEvent, (e) => this._onAfterToolCall(e), {
47
+ order: HookOrder.INTERVENTION_OUTPUT,
48
+ });
49
+ }
50
+ if (this._handlers.some((h) => h.beforeModelCall !== InterventionHandler.prototype.beforeModelCall)) {
51
+ hookRegistry.addCallback(BeforeModelCallEvent, (e) => this._onBeforeModelCall(e), {
52
+ order: HookOrder.INTERVENTION_INPUT,
53
+ });
54
+ }
55
+ if (this._handlers.some((h) => h.afterModelCall !== InterventionHandler.prototype.afterModelCall)) {
56
+ hookRegistry.addCallback(AfterModelCallEvent, (e) => this._onAfterModelCall(e), {
57
+ order: HookOrder.INTERVENTION_OUTPUT,
58
+ });
59
+ }
60
+ }
61
+ async _onBeforeInvocation(event) {
62
+ return this._dispatch(event, 'beforeInvocation', (action, handlerName) => {
63
+ switch (action.type) {
64
+ case 'deny':
65
+ event.cancel = `DENIED: ${action.reason}`;
66
+ return true;
67
+ case 'guide':
68
+ event.cancel = `GUIDANCE: ${action.feedback}`;
69
+ return false;
70
+ case 'transform':
71
+ action.apply(event);
72
+ return false;
73
+ case 'proceed':
74
+ return false;
75
+ default:
76
+ logger.warn(`handler=<${handlerName}>, event=<beforeInvocation> | ${action.type} has no effect`);
77
+ return false;
78
+ }
79
+ });
80
+ }
81
+ async _onBeforeToolCall(event) {
82
+ return this._dispatch(event, 'beforeToolCall', (action, handlerName) => {
83
+ const actionType = action.type;
84
+ switch (actionType) {
85
+ case 'deny':
86
+ event.cancel = `DENIED: ${action.reason}`;
87
+ return true;
88
+ case 'confirm': {
89
+ // If response is provided, it's passed as a preemptive value to
90
+ // event.interrupt() — the interrupt is registered but never pauses.
91
+ // If no response, event.interrupt() throws InterruptError on first
92
+ // call (pausing the agent for external resume).
93
+ const result = event.interrupt({
94
+ name: handlerName,
95
+ reason: action.prompt,
96
+ ...(action.response !== undefined && { response: action.response }),
97
+ });
98
+ const check = action.evaluate ?? defaultEvaluate;
99
+ if (!check(result)) {
100
+ event.cancel = `CONFIRMATION_FAILED: ${action.prompt}`;
101
+ return true;
102
+ }
103
+ return false;
104
+ }
105
+ case 'guide':
106
+ event.cancel = `GUIDANCE: ${action.feedback}`;
107
+ return false;
108
+ case 'transform':
109
+ action.apply(event);
110
+ return false;
111
+ case 'proceed':
112
+ return false;
113
+ default:
114
+ logger.warn(`handler=<${handlerName}>, event=<beforeToolCall> | ${actionType} has no effect`);
115
+ return false;
116
+ }
117
+ });
118
+ }
119
+ async _onAfterToolCall(event) {
120
+ return this._dispatch(event, 'afterToolCall', (action, handlerName) => {
121
+ switch (action.type) {
122
+ case 'transform':
123
+ action.apply(event);
124
+ return false;
125
+ case 'proceed':
126
+ return false;
127
+ default:
128
+ logger.warn(`handler=<${handlerName}>, event=<afterToolCall> | ${action.type} has no effect`);
129
+ return false;
130
+ }
131
+ });
132
+ }
133
+ // Guide on beforeModelCall injects feedback as a user message so the model sees
134
+ // it on this call, rather than cancelling (which would end the invocation).
135
+ async _onBeforeModelCall(event) {
136
+ return this._dispatch(event, 'beforeModelCall', (action, handlerName) => {
137
+ switch (action.type) {
138
+ case 'deny':
139
+ event.cancel = `DENIED: ${action.reason}`;
140
+ return true;
141
+ case 'guide':
142
+ // Direct push bypasses MessageAddedEvent and conversation manager.
143
+ // This matches what plugins can do today via event.agent.messages.
144
+ event.agent.messages.push(new Message({ role: 'user', content: [new TextBlock(action.feedback)] }));
145
+ return false;
146
+ case 'transform':
147
+ action.apply(event);
148
+ return false;
149
+ case 'proceed':
150
+ return false;
151
+ default:
152
+ logger.warn(`handler=<${handlerName}>, event=<beforeModelCall> | ${action.type} has no effect`);
153
+ return false;
154
+ }
155
+ });
156
+ }
157
+ async _onAfterModelCall(event) {
158
+ return this._dispatch(event, 'afterModelCall', (action, handlerName) => {
159
+ switch (action.type) {
160
+ case 'guide':
161
+ event.retry = true;
162
+ // Direct push bypasses MessageAddedEvent and conversation manager, so this
163
+ // message won't trigger context management and could push the context over
164
+ // the limit. LocalAgent doesn't expose a message-append method that goes
165
+ // through the hook pipeline. This matches what plugins can do today.
166
+ event.agent.messages.push(new Message({ role: 'user', content: [new TextBlock(action.feedback)] }));
167
+ return false;
168
+ case 'transform':
169
+ action.apply(event);
170
+ return false;
171
+ case 'proceed':
172
+ return false;
173
+ default:
174
+ logger.warn(`handler=<${handlerName}>, event=<afterModelCall> | ${action.type} has no effect`);
175
+ return false;
176
+ }
177
+ });
178
+ }
179
+ /**
180
+ * Iterate handlers in registration order and resolve the winning action.
181
+ *
182
+ * - Deny short-circuits immediately (remaining handlers are skipped).
183
+ * - Confirm pauses for human input; if denied short-circuits, if approved continues.
184
+ * - Guide feedback strings accumulate across handlers and are applied at the end.
185
+ * - Transform is applied in-place so later handlers see the mutation.
186
+ * - If a handler throws, behavior depends on {@link InterventionHandler.onError}:
187
+ * `'throw'` (default) rethrows, `'deny'` fails closed, `'proceed'` skips.
188
+ */
189
+ async _dispatch(event, method, apply) {
190
+ logger.debug(`event=<${method}> | dispatching to ${this._handlers.length} handler(s)`);
191
+ const guides = [];
192
+ for (const handler of this._handlers) {
193
+ if (handler[method] === InterventionHandler.prototype[method])
194
+ continue;
195
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | evaluating`);
196
+ let action;
197
+ try {
198
+ action = await handler[method](event);
199
+ }
200
+ catch (error) {
201
+ action = this._handleError(handler, method, error);
202
+ if (!action)
203
+ continue;
204
+ }
205
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | returned ${action.type}`);
206
+ if (action.type === 'guide') {
207
+ guides.push({ handlerName: handler.name, action });
208
+ }
209
+ else {
210
+ try {
211
+ if (apply(action, handler.name)) {
212
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | short-circuited`);
213
+ return;
214
+ }
215
+ }
216
+ catch (error) {
217
+ // InterruptError is intentional control flow (pauses the agent),
218
+ // not a handler failure. Always propagate regardless of onError.
219
+ if (error instanceof InterruptError) {
220
+ throw error;
221
+ }
222
+ const errorAction = this._handleError(handler, method, error);
223
+ if (errorAction) {
224
+ if (apply(errorAction, handler.name)) {
225
+ return;
226
+ }
227
+ }
228
+ }
229
+ }
230
+ }
231
+ // Guide feedback accumulates across handlers. Only applied if
232
+ // no earlier handler short-circuited (deny/confirm).
233
+ if (guides.length > 0) {
234
+ logger.debug(`event=<${method}> | applying accumulated guide from ${guides.length} handler(s)`);
235
+ const feedback = guides.map((g) => `[${g.handlerName}] ${g.action.feedback}`).join('\n');
236
+ apply({ type: 'guide', feedback }, '');
237
+ }
238
+ }
239
+ _handleError(handler, method, error) {
240
+ const errorMsg = error instanceof Error ? error.message : String(error);
241
+ if (handler.onError === 'throw') {
242
+ throw error;
243
+ }
244
+ else if (handler.onError === 'deny') {
245
+ return { type: 'deny', reason: `Handler threw: ${errorMsg}` };
246
+ }
247
+ else {
248
+ return undefined;
249
+ }
250
+ }
251
+ }
252
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/interventions/registry.ts"],"names":[],"mappings":"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"}
package/dist/src/mcp.d.ts CHANGED
@@ -57,18 +57,8 @@ export interface McpClientCredentials {
57
57
  /** OAuth scopes to request. Joined with spaces before sending to the token endpoint. */
58
58
  scopes?: string[];
59
59
  }
60
- /** Arguments for configuring an MCP Client. */
61
- export type McpClientConfig = RuntimeConfig & {
62
- /** Pre-constructed transport. Mutually exclusive with `url`. */
63
- transport?: McpTransport;
64
- /** Server URL. When provided, a StreamableHTTP transport is constructed automatically. */
65
- url?: string | URL;
66
- /** Client credentials for OAuth machine-to-machine auth. Requires `url`. */
67
- auth?: McpClientCredentials;
68
- /** Custom OAuth provider for advanced auth flows. Requires `url`. Mutually exclusive with `auth`. */
69
- authProvider?: OAuthClientProvider;
70
- /** Custom headers to include on every request to the server. Requires `url`. */
71
- headers?: Record<string, string>;
60
+ /** Behavioral options shared by all MCP client configurations. */
61
+ export interface McpClientOptions extends RuntimeConfig {
72
62
  /** Disable OpenTelemetry MCP instrumentation. */
73
63
  disableMcpInstrumentation?: boolean;
74
64
  /**
@@ -84,9 +74,22 @@ export type McpClientConfig = RuntimeConfig & {
84
74
  */
85
75
  elicitationCallback?: ElicitationCallback;
86
76
  /** When true, connection failures are logged as warnings instead of throwing. */
87
- failOpen?: boolean;
77
+ continueOnError?: boolean;
88
78
  /** Called when the server emits a log message. Defaults to routing through the Strands logger. */
89
79
  logHandler?: (params: LoggingMessageNotificationParams) => void;
80
+ }
81
+ /** Arguments for configuring an MCP Client. */
82
+ export type McpClientConfig = McpClientOptions & {
83
+ /** Pre-constructed transport. Mutually exclusive with `url`. */
84
+ transport?: McpTransport;
85
+ /** Server URL. When provided, a StreamableHTTP transport is constructed automatically. */
86
+ url?: string | URL;
87
+ /** Client credentials for OAuth machine-to-machine auth. Requires `url`. */
88
+ auth?: McpClientCredentials;
89
+ /** Custom OAuth provider for advanced auth flows. Requires `url`. Mutually exclusive with `auth`. */
90
+ authProvider?: OAuthClientProvider;
91
+ /** Custom headers to include on every request to the server. Requires `url`. */
92
+ headers?: Record<string, string>;
90
93
  };
91
94
  /** MCP Client for interacting with Model Context Protocol servers. */
92
95
  export declare class McpClient {
@@ -99,7 +102,7 @@ export declare class McpClient {
99
102
  private _transport;
100
103
  private _state;
101
104
  private _client;
102
- private _failOpen;
105
+ private _continueOnError;
103
106
  private _logHandler;
104
107
  private _disableMcpInstrumentation;
105
108
  private _tasksConfig;
@@ -115,10 +118,12 @@ export declare class McpClient {
115
118
  get serverVersion(): Implementation | undefined;
116
119
  get serverInstructions(): string | undefined;
117
120
  get connectionState(): McpConnectionState;
121
+ get clientName(): string;
122
+ get continueOnError(): boolean;
118
123
  /**
119
124
  * Connects the MCP client to the server.
120
125
  *
121
- * Called lazily before any operation that requires a connection. When `failOpen` is true,
126
+ * Called lazily before any operation that requires a connection. When `continueOnError` is true,
122
127
  * connection failures are swallowed and the client enters a `'failed'` state — subsequent
123
128
  * calls are no-ops until `connect(true)` is called explicitly to retry.
124
129
  *
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAG9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAEnF,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gCAAgC,EACtC,MAAM,oCAAoC,CAAA;AAE3C,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAG7C;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAE5F,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,yCAAyC;AACzC,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAA;AAExE,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,iDAAiD;IACjD,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAEnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IAEzB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IAEzC,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,kGAAkG;IAClG,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,gCAAgC,KAAK,IAAI,CAAA;CAChE;AAED,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,gEAAgE;IAChE,SAAS,CAAC,EAAE,YAAY,CAAA;IAExB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAElB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,oBAAoB,CAAA;IAE3B,qGAAqG;IACrG,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAElC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC,CAAA;AAED,sEAAsE;AACtE,qBAAa,SAAS;IACpB,iEAAiE;IACjE,gBAAuB,WAAW,SAAQ;IAE1C,4EAA4E;IAC5E,gBAAuB,oBAAoB,UAAS;IAEpD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,eAAe,CAAiE;IACxF,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,eAAe,CAAQ;gBAEnB,IAAI,EAAE,eAAe;IAmCjC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkChC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,kBAAkB,IAAI,kBAAkB,GAAG,SAAS,CAEvD;IAED,IAAI,aAAa,IAAI,cAAc,GAAG,SAAS,CAE9C;IAED,IAAI,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAI,eAAe,IAAI,kBAAkB,CAExC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;;;;;;OASG;IACU,OAAO,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B/D;;;;OAIG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxC;;;OAGG;IACG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA8B5C;;;;;OAKG;IACH,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,EAE3F;YAEa,mBAAmB;IAsBjC;;;;;;;;;;;OAWG;IACU,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;CAmCxG"}
package/dist/src/mcp.js CHANGED
@@ -17,7 +17,7 @@ export class McpClient {
17
17
  _transport;
18
18
  _state;
19
19
  _client;
20
- _failOpen;
20
+ _continueOnError;
21
21
  _logHandler;
22
22
  _disableMcpInstrumentation;
23
23
  _tasksConfig;
@@ -31,7 +31,7 @@ export class McpClient {
31
31
  this._clientVersion = args.applicationVersion || '0.0.1';
32
32
  this._transport = McpClient._resolveTransport(args);
33
33
  this._state = 'disconnected';
34
- this._failOpen = args.failOpen ?? false;
34
+ this._continueOnError = args.continueOnError ?? false;
35
35
  this._logHandler = args.logHandler ?? defaultLogHandler;
36
36
  this._tasksConfig = args.tasksConfig;
37
37
  this._elicitationCallback = args.elicitationCallback;
@@ -79,9 +79,10 @@ export class McpClient {
79
79
  })
80
80
  : args.authProvider;
81
81
  const url = args.url instanceof URL ? args.url : new URL(args.url);
82
- return new StreamableHTTPClientTransport(url, authProvider || args.headers
83
- ? { ...(authProvider && { authProvider }), ...(args.headers && { requestInit: { headers: args.headers } }) }
84
- : undefined);
82
+ return new StreamableHTTPClientTransport(url, {
83
+ ...(authProvider && { authProvider }),
84
+ ...(args.headers && { requestInit: { headers: args.headers } }),
85
+ });
85
86
  }
86
87
  get client() {
87
88
  return this._client;
@@ -98,10 +99,16 @@ export class McpClient {
98
99
  get connectionState() {
99
100
  return this._state;
100
101
  }
102
+ get clientName() {
103
+ return this._clientName;
104
+ }
105
+ get continueOnError() {
106
+ return this._continueOnError;
107
+ }
101
108
  /**
102
109
  * Connects the MCP client to the server.
103
110
  *
104
- * Called lazily before any operation that requires a connection. When `failOpen` is true,
111
+ * Called lazily before any operation that requires a connection. When `continueOnError` is true,
105
112
  * connection failures are swallowed and the client enters a `'failed'` state — subsequent
106
113
  * calls are no-ops until `connect(true)` is called explicitly to retry.
107
114
  *
@@ -126,10 +133,10 @@ export class McpClient {
126
133
  this._state = 'connected';
127
134
  }
128
135
  catch (error) {
129
- if (!this._failOpen)
136
+ if (!this._continueOnError)
130
137
  throw error;
131
138
  this._state = 'failed';
132
- logger.warn(`client=<${this._clientName}>, error=<${error}> | MCP server failed to connect, continuing with failOpen`);
139
+ logger.warn(`client=<${this._clientName}>, error=<${error}> | MCP server failed to connect, continuing (continueOnError)`);
133
140
  }
134
141
  }
135
142
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -216,6 +216,20 @@ describe('AnthropicModel', () => {
216
216
  });
217
217
  expect(events).toContainEqual({ type: 'modelMessageStopEvent', stopReason: 'toolUse' });
218
218
  });
219
+ it.each([
220
+ ['pause_turn', 'pauseTurn'],
221
+ ['refusal', 'refusal'],
222
+ ])('maps anthropic stop reason "%s" to "%s"', async (anthropicReason, expected) => {
223
+ const mockClient = createMockClient(async function* () {
224
+ yield { type: 'message_start', message: { role: 'assistant', usage: { input_tokens: 1 } } };
225
+ yield { type: 'message_delta', delta: { stop_reason: anthropicReason }, usage: { output_tokens: 1 } };
226
+ yield { type: 'message_stop' };
227
+ });
228
+ const provider = new AnthropicModel({ client: mockClient });
229
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
230
+ const events = await collectIterator(provider.stream(messages));
231
+ expect(events).toContainEqual({ type: 'modelMessageStopEvent', stopReason: expected });
232
+ });
219
233
  it('handles thinking/reasoning events', async () => {
220
234
  const mockClient = createMockClient(async function* () {
221
235
  yield { type: 'message_start', message: { role: 'assistant', usage: { input_tokens: 10 } } };
@@ -289,17 +303,32 @@ describe('AnthropicModel', () => {
289
303
  const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
290
304
  await expect(collectIterator(provider.stream(messages))).rejects.toThrow('API Error');
291
305
  });
306
+ it('maps overload error to ContextWindowOverflowError', async () => {
307
+ const mockClient = createMockClient(async function* () {
308
+ yield { type: 'ping' }; // Satisfy linter require-yield
309
+ throw new Error('prompt is too long');
310
+ });
311
+ const provider = new AnthropicModel({ client: mockClient });
312
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
313
+ await expect(collectIterator(provider.stream(messages))).rejects.toThrow(ContextWindowOverflowError);
314
+ });
292
315
  it.each([
293
- 'PROMPT IS TOO LONG: request exceeds context window',
294
- 'max_tokens exceeded',
295
- 'input too long',
296
316
  'input is too long',
297
317
  'input length exceeds context window',
298
318
  'input and output tokens exceed your context limit',
299
- ])('maps context overflow error "%s" to ContextWindowOverflowError', async (message) => {
319
+ ])('maps overflow phrase %p to ContextWindowOverflowError', async (phrase) => {
300
320
  const mockClient = createMockClient(async function* () {
301
- yield { type: 'ping' }; // Satisfy linter require-yield
302
- throw new Error(message);
321
+ yield { type: 'ping' };
322
+ throw new Error(phrase);
323
+ });
324
+ const provider = new AnthropicModel({ client: mockClient });
325
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
326
+ await expect(collectIterator(provider.stream(messages))).rejects.toThrow(ContextWindowOverflowError);
327
+ });
328
+ it('matches overflow phrases case-insensitively', async () => {
329
+ const mockClient = createMockClient(async function* () {
330
+ yield { type: 'ping' };
331
+ throw new Error('PROMPT IS TOO LONG: 200000 tokens');
303
332
  });
304
333
  const provider = new AnthropicModel({ client: mockClient });
305
334
  const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
@@ -320,11 +349,12 @@ describe('AnthropicModel', () => {
320
349
  describe('request formatting', () => {
321
350
  // Helper to capture request arguments
322
351
  const setupCapture = () => {
323
- const captured = { request: null };
352
+ const captured = { request: null, options: null };
324
353
  const mockClient = {
325
354
  messages: {
326
- stream: vi.fn((req) => {
355
+ stream: vi.fn((req, opts) => {
327
356
  captured.request = req;
357
+ captured.options = opts;
328
358
  return (async function* () { })();
329
359
  }),
330
360
  },
@@ -471,6 +501,7 @@ describe('AnthropicModel', () => {
471
501
  const content = captured.request.messages[0].content[0];
472
502
  expect(content.type).toBe('document');
473
503
  expect(content.source.media_type).toBe('application/pdf');
504
+ expect(content.title).toBe('doc.pdf');
474
505
  });
475
506
  it('logs warning for unsupported GuardContentBlock in user message', async () => {
476
507
  const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { }); // Spy on console.warn (via logger)
@@ -617,6 +648,39 @@ describe('AnthropicModel', () => {
617
648
  warnSpy.mockRestore();
618
649
  });
619
650
  });
651
+ describe('Beta headers', () => {
652
+ it('does not pass per-request options when betas is unset', async () => {
653
+ const { captured, mockClient } = setupCapture();
654
+ const provider = new AnthropicModel({ client: mockClient });
655
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
656
+ await collectIterator(provider.stream(messages));
657
+ expect(captured.options).toBeUndefined();
658
+ });
659
+ it('forwards configured betas as a per-request anthropic-beta header', async () => {
660
+ const { captured, mockClient } = setupCapture();
661
+ const provider = new AnthropicModel({
662
+ client: mockClient,
663
+ betas: ['interleaved-thinking-2025-05-14', 'mcp-client-2025-11-20'],
664
+ });
665
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
666
+ await collectIterator(provider.stream(messages));
667
+ expect(captured.options).toEqual({
668
+ headers: { 'anthropic-beta': 'interleaved-thinking-2025-05-14,mcp-client-2025-11-20' },
669
+ });
670
+ });
671
+ it('reflects updateConfig({ betas }) on the next request', async () => {
672
+ const { captured, mockClient } = setupCapture();
673
+ const provider = new AnthropicModel({ client: mockClient });
674
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
675
+ await collectIterator(provider.stream(messages));
676
+ expect(captured.options).toBeUndefined();
677
+ provider.updateConfig({ betas: ['interleaved-thinking-2025-05-14'] });
678
+ await collectIterator(provider.stream(messages));
679
+ expect(captured.options).toEqual({
680
+ headers: { 'anthropic-beta': 'interleaved-thinking-2025-05-14' },
681
+ });
682
+ });
683
+ });
620
684
  });
621
685
  describe('countTokens', () => {
622
686
  const messages = [new Message({ role: 'user', content: [new TextBlock('hello')] })];