@strands-agents/sdk 1.1.0 → 1.3.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 (199) hide show
  1. package/README.md +6 -0
  2. package/dist/src/__tests__/interrupt.test.js +13 -8
  3. package/dist/src/__tests__/interrupt.test.js.map +1 -1
  4. package/dist/src/__tests__/mcp.test.js +221 -7
  5. package/dist/src/__tests__/mcp.test.js.map +1 -1
  6. package/dist/src/agent/__tests__/agent.interrupt.test.js +54 -5
  7. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +1 -1
  8. package/dist/src/agent/__tests__/agent.test.js +56 -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__/snapshot.test.js +98 -0
  13. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  14. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  15. package/dist/src/agent/agent-as-tool.js +2 -3
  16. package/dist/src/agent/agent-as-tool.js.map +1 -1
  17. package/dist/src/agent/agent.d.ts +65 -0
  18. package/dist/src/agent/agent.d.ts.map +1 -1
  19. package/dist/src/agent/agent.js +89 -10
  20. package/dist/src/agent/agent.js.map +1 -1
  21. package/dist/src/agent/printer.d.ts +14 -1
  22. package/dist/src/agent/printer.d.ts.map +1 -1
  23. package/dist/src/agent/printer.js +33 -5
  24. package/dist/src/agent/printer.js.map +1 -1
  25. package/dist/src/agent/snapshot.d.ts +9 -17
  26. package/dist/src/agent/snapshot.d.ts.map +1 -1
  27. package/dist/src/agent/snapshot.js +9 -17
  28. package/dist/src/agent/snapshot.js.map +1 -1
  29. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +371 -39
  30. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  31. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +26 -7
  32. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  33. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +192 -41
  34. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  35. package/dist/src/hooks/events.d.ts +24 -3
  36. package/dist/src/hooks/events.d.ts.map +1 -1
  37. package/dist/src/hooks/events.js +26 -4
  38. package/dist/src/hooks/events.js.map +1 -1
  39. package/dist/src/hooks/index.d.ts +1 -1
  40. package/dist/src/hooks/index.d.ts.map +1 -1
  41. package/dist/src/hooks/index.js +1 -1
  42. package/dist/src/hooks/index.js.map +1 -1
  43. package/dist/src/hooks/types.d.ts +2 -0
  44. package/dist/src/hooks/types.d.ts.map +1 -1
  45. package/dist/src/hooks/types.js +2 -0
  46. package/dist/src/hooks/types.js.map +1 -1
  47. package/dist/src/index.d.ts +8 -4
  48. package/dist/src/index.d.ts.map +1 -1
  49. package/dist/src/index.js +6 -2
  50. package/dist/src/index.js.map +1 -1
  51. package/dist/src/interrupt.d.ts +29 -2
  52. package/dist/src/interrupt.d.ts.map +1 -1
  53. package/dist/src/interrupt.js +45 -3
  54. package/dist/src/interrupt.js.map +1 -1
  55. package/dist/src/interventions/__tests__/handler.test.d.ts +2 -0
  56. package/dist/src/interventions/__tests__/handler.test.d.ts.map +1 -0
  57. package/dist/src/interventions/__tests__/handler.test.js +35 -0
  58. package/dist/src/interventions/__tests__/handler.test.js.map +1 -0
  59. package/dist/src/interventions/__tests__/registry.test.d.ts +2 -0
  60. package/dist/src/interventions/__tests__/registry.test.d.ts.map +1 -0
  61. package/dist/src/interventions/__tests__/registry.test.js +692 -0
  62. package/dist/src/interventions/__tests__/registry.test.js.map +1 -0
  63. package/dist/src/interventions/actions.d.ts +186 -0
  64. package/dist/src/interventions/actions.d.ts.map +1 -0
  65. package/dist/src/interventions/actions.js +56 -0
  66. package/dist/src/interventions/actions.js.map +1 -0
  67. package/dist/src/interventions/handler.d.ts +44 -0
  68. package/dist/src/interventions/handler.d.ts.map +1 -0
  69. package/dist/src/interventions/handler.js +41 -0
  70. package/dist/src/interventions/handler.js.map +1 -0
  71. package/dist/src/interventions/index.d.ts +12 -0
  72. package/dist/src/interventions/index.d.ts.map +1 -0
  73. package/dist/src/interventions/index.js +4 -0
  74. package/dist/src/interventions/index.js.map +1 -0
  75. package/dist/src/interventions/registry.d.ts +34 -0
  76. package/dist/src/interventions/registry.d.ts.map +1 -0
  77. package/dist/src/interventions/registry.js +248 -0
  78. package/dist/src/interventions/registry.js.map +1 -0
  79. package/dist/src/mcp.d.ts +38 -2
  80. package/dist/src/mcp.d.ts.map +1 -1
  81. package/dist/src/mcp.js +84 -7
  82. package/dist/src/mcp.js.map +1 -1
  83. package/dist/src/models/__tests__/anthropic.test.js +74 -10
  84. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  85. package/dist/src/models/__tests__/bedrock.test.js +43 -20
  86. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  87. package/dist/src/models/__tests__/google.test.js +14 -6
  88. package/dist/src/models/__tests__/google.test.js.map +1 -1
  89. package/dist/src/models/anthropic.d.ts +15 -3
  90. package/dist/src/models/anthropic.d.ts.map +1 -1
  91. package/dist/src/models/anthropic.js +30 -9
  92. package/dist/src/models/anthropic.js.map +1 -1
  93. package/dist/src/models/bedrock.d.ts +6 -7
  94. package/dist/src/models/bedrock.d.ts.map +1 -1
  95. package/dist/src/models/bedrock.js +31 -18
  96. package/dist/src/models/bedrock.js.map +1 -1
  97. package/dist/src/models/google/model.js +1 -1
  98. package/dist/src/models/google/model.js.map +1 -1
  99. package/dist/src/models/google/types.d.ts +5 -3
  100. package/dist/src/models/google/types.d.ts.map +1 -1
  101. package/dist/src/models/openai/__tests__/chat.test.js +10 -2
  102. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
  103. package/dist/src/models/openai/__tests__/mantle.test.d.ts +2 -0
  104. package/dist/src/models/openai/__tests__/mantle.test.d.ts.map +1 -0
  105. package/dist/src/models/openai/__tests__/mantle.test.js +189 -0
  106. package/dist/src/models/openai/__tests__/mantle.test.js.map +1 -0
  107. package/dist/src/models/openai/__tests__/responses.test.js +19 -0
  108. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  109. package/dist/src/models/openai/errors.d.ts.map +1 -1
  110. package/dist/src/models/openai/errors.js +7 -4
  111. package/dist/src/models/openai/errors.js.map +1 -1
  112. package/dist/src/models/openai/index.d.ts +1 -0
  113. package/dist/src/models/openai/index.d.ts.map +1 -1
  114. package/dist/src/models/openai/mantle.d.ts +77 -0
  115. package/dist/src/models/openai/mantle.d.ts.map +1 -0
  116. package/dist/src/models/openai/mantle.js +83 -0
  117. package/dist/src/models/openai/mantle.js.map +1 -0
  118. package/dist/src/models/openai/model.d.ts.map +1 -1
  119. package/dist/src/models/openai/model.js +29 -1
  120. package/dist/src/models/openai/model.js.map +1 -1
  121. package/dist/src/models/openai/types.d.ts +11 -0
  122. package/dist/src/models/openai/types.d.ts.map +1 -1
  123. package/dist/src/multiagent/__tests__/graph.tracer.test.js +14 -0
  124. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +1 -1
  125. package/dist/src/multiagent/__tests__/interrupts.test.d.ts +2 -0
  126. package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +1 -0
  127. package/dist/src/multiagent/__tests__/interrupts.test.js +390 -0
  128. package/dist/src/multiagent/__tests__/interrupts.test.js.map +1 -0
  129. package/dist/src/multiagent/__tests__/state.test.js +139 -1
  130. package/dist/src/multiagent/__tests__/state.test.js.map +1 -1
  131. package/dist/src/multiagent/events.d.ts +15 -1
  132. package/dist/src/multiagent/events.d.ts.map +1 -1
  133. package/dist/src/multiagent/events.js +18 -0
  134. package/dist/src/multiagent/events.js.map +1 -1
  135. package/dist/src/multiagent/graph.d.ts +37 -1
  136. package/dist/src/multiagent/graph.d.ts.map +1 -1
  137. package/dist/src/multiagent/graph.js +171 -43
  138. package/dist/src/multiagent/graph.js.map +1 -1
  139. package/dist/src/multiagent/multiagent.d.ts +78 -6
  140. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  141. package/dist/src/multiagent/multiagent.js +115 -1
  142. package/dist/src/multiagent/multiagent.js.map +1 -1
  143. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  144. package/dist/src/multiagent/nodes.js +55 -21
  145. package/dist/src/multiagent/nodes.js.map +1 -1
  146. package/dist/src/multiagent/state.d.ts +39 -3
  147. package/dist/src/multiagent/state.d.ts.map +1 -1
  148. package/dist/src/multiagent/state.js +80 -1
  149. package/dist/src/multiagent/state.js.map +1 -1
  150. package/dist/src/multiagent/swarm.d.ts +15 -0
  151. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  152. package/dist/src/multiagent/swarm.js +127 -37
  153. package/dist/src/multiagent/swarm.js.map +1 -1
  154. package/dist/src/registry/__tests__/tool-registry.test.js +26 -0
  155. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
  156. package/dist/src/registry/tool-registry.d.ts +9 -7
  157. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  158. package/dist/src/registry/tool-registry.js +29 -10
  159. package/dist/src/registry/tool-registry.js.map +1 -1
  160. package/dist/src/session/__tests__/session-manager.test.js +45 -3
  161. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  162. package/dist/src/session/session-manager.d.ts +5 -2
  163. package/dist/src/session/session-manager.d.ts.map +1 -1
  164. package/dist/src/session/session-manager.js +9 -6
  165. package/dist/src/session/session-manager.js.map +1 -1
  166. package/dist/src/telemetry/__tests__/meter.test.js +5 -27
  167. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  168. package/dist/src/telemetry/meter.d.ts +12 -4
  169. package/dist/src/telemetry/meter.d.ts.map +1 -1
  170. package/dist/src/telemetry/meter.js +13 -8
  171. package/dist/src/telemetry/meter.js.map +1 -1
  172. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  173. package/dist/src/tools/mcp-tool.js +3 -2
  174. package/dist/src/tools/mcp-tool.js.map +1 -1
  175. package/dist/src/tsconfig.tsbuildinfo +1 -1
  176. package/dist/src/types/__tests__/agent.test.js +97 -0
  177. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  178. package/dist/src/types/agent.d.ts +26 -5
  179. package/dist/src/types/agent.d.ts.map +1 -1
  180. package/dist/src/types/agent.js +20 -3
  181. package/dist/src/types/agent.js.map +1 -1
  182. package/dist/src/types/messages.d.ts +3 -1
  183. package/dist/src/types/messages.d.ts.map +1 -1
  184. package/dist/src/types/messages.js.map +1 -1
  185. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +208 -0
  186. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -1
  187. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts +2 -0
  188. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts.map +1 -0
  189. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js +149 -0
  190. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js.map +1 -0
  191. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  192. package/dist/src/vended-plugins/context-offloader/plugin.js +57 -10
  193. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  194. package/dist/src/vended-plugins/context-offloader/search.d.ts +25 -0
  195. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -0
  196. package/dist/src/vended-plugins/context-offloader/search.js +120 -0
  197. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -0
  198. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  199. package/package.json +11 -1
@@ -0,0 +1,248 @@
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
+ _registerHooks(hookRegistry) {
31
+ if (this._handlers.some((h) => h.beforeInvocation !== InterventionHandler.prototype.beforeInvocation)) {
32
+ hookRegistry.addCallback(BeforeInvocationEvent, (e) => this._onBeforeInvocation(e), {
33
+ order: HookOrder.INTERVENTION_INPUT,
34
+ });
35
+ }
36
+ if (this._handlers.some((h) => h.beforeToolCall !== InterventionHandler.prototype.beforeToolCall)) {
37
+ hookRegistry.addCallback(BeforeToolCallEvent, (e) => this._onBeforeToolCall(e), {
38
+ order: HookOrder.INTERVENTION_INPUT,
39
+ });
40
+ }
41
+ if (this._handlers.some((h) => h.afterToolCall !== InterventionHandler.prototype.afterToolCall)) {
42
+ hookRegistry.addCallback(AfterToolCallEvent, (e) => this._onAfterToolCall(e), {
43
+ order: HookOrder.INTERVENTION_OUTPUT,
44
+ });
45
+ }
46
+ if (this._handlers.some((h) => h.beforeModelCall !== InterventionHandler.prototype.beforeModelCall)) {
47
+ hookRegistry.addCallback(BeforeModelCallEvent, (e) => this._onBeforeModelCall(e), {
48
+ order: HookOrder.INTERVENTION_INPUT,
49
+ });
50
+ }
51
+ if (this._handlers.some((h) => h.afterModelCall !== InterventionHandler.prototype.afterModelCall)) {
52
+ hookRegistry.addCallback(AfterModelCallEvent, (e) => this._onAfterModelCall(e), {
53
+ order: HookOrder.INTERVENTION_OUTPUT,
54
+ });
55
+ }
56
+ }
57
+ async _onBeforeInvocation(event) {
58
+ return this._dispatch(event, 'beforeInvocation', (action, handlerName) => {
59
+ switch (action.type) {
60
+ case 'deny':
61
+ event.cancel = `DENIED: ${action.reason}`;
62
+ return true;
63
+ case 'guide':
64
+ event.cancel = `GUIDANCE: ${action.feedback}`;
65
+ return false;
66
+ case 'transform':
67
+ action.apply(event);
68
+ return false;
69
+ case 'proceed':
70
+ return false;
71
+ default:
72
+ logger.warn(`handler=<${handlerName}>, event=<beforeInvocation> | ${action.type} has no effect`);
73
+ return false;
74
+ }
75
+ });
76
+ }
77
+ async _onBeforeToolCall(event) {
78
+ return this._dispatch(event, 'beforeToolCall', (action, handlerName) => {
79
+ const actionType = action.type;
80
+ switch (actionType) {
81
+ case 'deny':
82
+ event.cancel = `DENIED: ${action.reason}`;
83
+ return true;
84
+ case 'confirm': {
85
+ // If response is provided, it's passed as a preemptive value to
86
+ // event.interrupt() — the interrupt is registered but never pauses.
87
+ // If no response, event.interrupt() throws InterruptError on first
88
+ // call (pausing the agent for external resume).
89
+ const result = event.interrupt({
90
+ name: handlerName,
91
+ reason: action.prompt,
92
+ ...(action.response !== undefined && { response: action.response }),
93
+ });
94
+ const check = action.evaluate ?? defaultEvaluate;
95
+ if (!check(result)) {
96
+ event.cancel = `CONFIRMATION_FAILED: ${action.prompt}`;
97
+ return true;
98
+ }
99
+ return false;
100
+ }
101
+ case 'guide':
102
+ event.cancel = `GUIDANCE: ${action.feedback}`;
103
+ return false;
104
+ case 'transform':
105
+ action.apply(event);
106
+ return false;
107
+ case 'proceed':
108
+ return false;
109
+ default:
110
+ logger.warn(`handler=<${handlerName}>, event=<beforeToolCall> | ${actionType} has no effect`);
111
+ return false;
112
+ }
113
+ });
114
+ }
115
+ async _onAfterToolCall(event) {
116
+ return this._dispatch(event, 'afterToolCall', (action, handlerName) => {
117
+ switch (action.type) {
118
+ case 'transform':
119
+ action.apply(event);
120
+ return false;
121
+ case 'proceed':
122
+ return false;
123
+ default:
124
+ logger.warn(`handler=<${handlerName}>, event=<afterToolCall> | ${action.type} has no effect`);
125
+ return false;
126
+ }
127
+ });
128
+ }
129
+ // Guide on beforeModelCall injects feedback as a user message so the model sees
130
+ // it on this call, rather than cancelling (which would end the invocation).
131
+ async _onBeforeModelCall(event) {
132
+ return this._dispatch(event, 'beforeModelCall', (action, handlerName) => {
133
+ switch (action.type) {
134
+ case 'deny':
135
+ event.cancel = `DENIED: ${action.reason}`;
136
+ return true;
137
+ case 'guide':
138
+ // Direct push bypasses MessageAddedEvent and conversation manager.
139
+ // This matches what plugins can do today via event.agent.messages.
140
+ event.agent.messages.push(new Message({ role: 'user', content: [new TextBlock(action.feedback)] }));
141
+ return false;
142
+ case 'transform':
143
+ action.apply(event);
144
+ return false;
145
+ case 'proceed':
146
+ return false;
147
+ default:
148
+ logger.warn(`handler=<${handlerName}>, event=<beforeModelCall> | ${action.type} has no effect`);
149
+ return false;
150
+ }
151
+ });
152
+ }
153
+ async _onAfterModelCall(event) {
154
+ return this._dispatch(event, 'afterModelCall', (action, handlerName) => {
155
+ switch (action.type) {
156
+ case 'guide':
157
+ event.retry = true;
158
+ // Direct push bypasses MessageAddedEvent and conversation manager, so this
159
+ // message won't trigger context management and could push the context over
160
+ // the limit. LocalAgent doesn't expose a message-append method that goes
161
+ // through the hook pipeline. This matches what plugins can do today.
162
+ event.agent.messages.push(new Message({ role: 'user', content: [new TextBlock(action.feedback)] }));
163
+ return false;
164
+ case 'transform':
165
+ action.apply(event);
166
+ return false;
167
+ case 'proceed':
168
+ return false;
169
+ default:
170
+ logger.warn(`handler=<${handlerName}>, event=<afterModelCall> | ${action.type} has no effect`);
171
+ return false;
172
+ }
173
+ });
174
+ }
175
+ /**
176
+ * Iterate handlers in registration order and resolve the winning action.
177
+ *
178
+ * - Deny short-circuits immediately (remaining handlers are skipped).
179
+ * - Confirm pauses for human input; if denied short-circuits, if approved continues.
180
+ * - Guide feedback strings accumulate across handlers and are applied at the end.
181
+ * - Transform is applied in-place so later handlers see the mutation.
182
+ * - If a handler throws, behavior depends on {@link InterventionHandler.onError}:
183
+ * `'throw'` (default) rethrows, `'deny'` fails closed, `'proceed'` skips.
184
+ */
185
+ async _dispatch(event, method, apply) {
186
+ logger.debug(`event=<${method}> | dispatching to ${this._handlers.length} handler(s)`);
187
+ const guides = [];
188
+ for (const handler of this._handlers) {
189
+ if (handler[method] === InterventionHandler.prototype[method])
190
+ continue;
191
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | evaluating`);
192
+ let action;
193
+ try {
194
+ action = await handler[method](event);
195
+ }
196
+ catch (error) {
197
+ action = this._handleError(handler, method, error);
198
+ if (!action)
199
+ continue;
200
+ }
201
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | returned ${action.type}`);
202
+ if (action.type === 'guide') {
203
+ guides.push({ handlerName: handler.name, action });
204
+ }
205
+ else {
206
+ try {
207
+ if (apply(action, handler.name)) {
208
+ logger.debug(`handler=<${handler.name}>, event=<${method}> | short-circuited`);
209
+ return;
210
+ }
211
+ }
212
+ catch (error) {
213
+ // InterruptError is intentional control flow (pauses the agent),
214
+ // not a handler failure. Always propagate regardless of onError.
215
+ if (error instanceof InterruptError) {
216
+ throw error;
217
+ }
218
+ const errorAction = this._handleError(handler, method, error);
219
+ if (errorAction) {
220
+ if (apply(errorAction, handler.name)) {
221
+ return;
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ // Guide feedback accumulates across handlers. Only applied if
228
+ // no earlier handler short-circuited (deny/confirm).
229
+ if (guides.length > 0) {
230
+ logger.debug(`event=<${method}> | applying accumulated guide from ${guides.length} handler(s)`);
231
+ const feedback = guides.map((g) => `[${g.handlerName}] ${g.action.feedback}`).join('\n');
232
+ apply({ type: 'guide', feedback }, '');
233
+ }
234
+ }
235
+ _handleError(handler, method, error) {
236
+ const errorMsg = error instanceof Error ? error.message : String(error);
237
+ if (handler.onError === 'throw') {
238
+ throw error;
239
+ }
240
+ else if (handler.onError === 'deny') {
241
+ return { type: 'deny', reason: `Handler threw: ${errorMsg}` };
242
+ }
243
+ else {
244
+ return undefined;
245
+ }
246
+ }
247
+ }
248
+ //# 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
@@ -1,5 +1,6 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
+ import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
3
4
  import { type ServerCapabilities, type Implementation, type LoggingMessageNotificationParams } from '@modelcontextprotocol/sdk/types.js';
4
5
  import type { JSONValue } from './types/json.js';
5
6
  import type { ElicitationCallback } from './types/elicitation.js';
@@ -44,9 +45,30 @@ export interface TasksConfig {
44
45
  }
45
46
  /** Connection state of an MCP client. */
46
47
  export type McpConnectionState = 'disconnected' | 'connected' | 'failed';
48
+ /** Options for MCP tool invocation. */
49
+ export interface McpCallToolOptions {
50
+ /** AbortSignal to cancel the in-flight request. */
51
+ signal?: AbortSignal;
52
+ }
53
+ /** OAuth client credentials for machine-to-machine authentication. */
54
+ export interface McpClientCredentials {
55
+ clientId: string;
56
+ clientSecret: string;
57
+ /** OAuth scopes to request. Joined with spaces before sending to the token endpoint. */
58
+ scopes?: string[];
59
+ }
47
60
  /** Arguments for configuring an MCP Client. */
48
61
  export type McpClientConfig = RuntimeConfig & {
49
- transport: McpTransport;
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>;
50
72
  /** Disable OpenTelemetry MCP instrumentation. */
51
73
  disableMcpInstrumentation?: boolean;
52
74
  /**
@@ -82,7 +104,12 @@ export declare class McpClient {
82
104
  private _disableMcpInstrumentation;
83
105
  private _tasksConfig;
84
106
  private _elicitationCallback;
107
+ private _registeredToolNames;
108
+ private _onToolsChanged;
109
+ private _refreshingTools;
110
+ private _pendingRefresh;
85
111
  constructor(args: McpClientConfig);
112
+ private static _resolveTransport;
86
113
  get client(): Client;
87
114
  get serverCapabilities(): ServerCapabilities | undefined;
88
115
  get serverVersion(): Implementation | undefined;
@@ -116,6 +143,14 @@ export declare class McpClient {
116
143
  * @returns A promise that resolves with an array of McpTool instances.
117
144
  */
118
145
  listTools(): Promise<McpTool[]>;
146
+ /**
147
+ * Sets a callback invoked when the MCP server's tool list changes at runtime.
148
+ *
149
+ * @param callback - Handler receiving the previous tool names and the refreshed tool instances,
150
+ * or undefined to remove the callback.
151
+ */
152
+ set onToolsChanged(callback: ((oldTools: string[], newTools: McpTool[]) => void) | undefined);
153
+ private _handleToolsChanged;
119
154
  /**
120
155
  * Invoke a tool on the connected MCP server using an McpTool instance.
121
156
  *
@@ -125,8 +160,9 @@ export declare class McpClient {
125
160
  *
126
161
  * @param tool - The McpTool instance to invoke.
127
162
  * @param args - The arguments to pass to the tool.
163
+ * @param options - Optional settings for the request.
128
164
  * @returns A promise that resolves with the result of the tool invocation.
129
165
  */
130
- callTool(tool: McpTool, args: JSONValue): Promise<JSONValue>;
166
+ callTool(tool: McpTool, args: JSONValue, options?: McpCallToolOptions): Promise<JSONValue>;
131
167
  }
132
168
  //# sourceMappingURL=mcp.d.ts.map
@@ -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":"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"}
package/dist/src/mcp.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
3
+ import { ClientCredentialsProvider } from '@modelcontextprotocol/sdk/client/auth-extensions.js';
2
4
  import { takeResult } from '@modelcontextprotocol/sdk/shared/responseMessage.js';
3
5
  import { ElicitRequestSchema, LoggingMessageNotificationSchema, } from '@modelcontextprotocol/sdk/types.js';
4
6
  import { context, propagation, trace } from '@opentelemetry/api';
@@ -20,10 +22,14 @@ export class McpClient {
20
22
  _disableMcpInstrumentation;
21
23
  _tasksConfig;
22
24
  _elicitationCallback;
25
+ _registeredToolNames = new Set();
26
+ _onToolsChanged;
27
+ _refreshingTools = false;
28
+ _pendingRefresh = false;
23
29
  constructor(args) {
24
30
  this._clientName = args.applicationName || 'strands-agents-ts-sdk';
25
31
  this._clientVersion = args.applicationVersion || '0.0.1';
26
- this._transport = args.transport;
32
+ this._transport = McpClient._resolveTransport(args);
27
33
  this._state = 'disconnected';
28
34
  this._failOpen = args.failOpen ?? false;
29
35
  this._logHandler = args.logHandler ?? defaultLogHandler;
@@ -32,12 +38,51 @@ export class McpClient {
32
38
  this._client = new Client({
33
39
  name: this._clientName,
34
40
  version: this._clientVersion,
35
- }, this._elicitationCallback ? { capabilities: { elicitation: { form: {}, url: {} } } } : undefined);
41
+ }, {
42
+ ...(this._elicitationCallback ? { capabilities: { elicitation: { form: {}, url: {} } } } : undefined),
43
+ listChanged: {
44
+ tools: {
45
+ autoRefresh: false,
46
+ debounceMs: 300,
47
+ onChanged: () => {
48
+ this._handleToolsChanged();
49
+ },
50
+ },
51
+ },
52
+ });
36
53
  this._client.setNotificationHandler(LoggingMessageNotificationSchema, (notification) => {
37
54
  this._logHandler(notification.params);
38
55
  });
39
56
  this._disableMcpInstrumentation = args.disableMcpInstrumentation ?? false;
40
57
  }
58
+ static _resolveTransport(args) {
59
+ if (args.transport && args.url) {
60
+ throw new Error('McpClientConfig: provide either "transport" or "url", not both');
61
+ }
62
+ if (!args.transport && !args.url) {
63
+ throw new Error('McpClientConfig: either "transport" or "url" must be provided');
64
+ }
65
+ if (args.transport) {
66
+ if (args.auth || args.authProvider || args.headers) {
67
+ throw new Error('McpClientConfig: "auth", "authProvider", and "headers" require "url" (not compatible with "transport")');
68
+ }
69
+ return args.transport;
70
+ }
71
+ if (args.auth && args.authProvider) {
72
+ throw new Error('McpClientConfig: provide either "auth" or "authProvider", not both');
73
+ }
74
+ const authProvider = args.auth
75
+ ? new ClientCredentialsProvider({
76
+ clientId: args.auth.clientId,
77
+ clientSecret: args.auth.clientSecret,
78
+ ...(args.auth.scopes && { scope: args.auth.scopes.join(' ') }),
79
+ })
80
+ : args.authProvider;
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);
85
+ }
41
86
  get client() {
42
87
  return this._client;
43
88
  }
@@ -126,8 +171,39 @@ export class McpClient {
126
171
  })));
127
172
  cursor = result.nextCursor;
128
173
  } while (cursor);
174
+ this._registeredToolNames = new Set(tools.map((t) => t.name));
129
175
  return tools;
130
176
  }
177
+ /**
178
+ * Sets a callback invoked when the MCP server's tool list changes at runtime.
179
+ *
180
+ * @param callback - Handler receiving the previous tool names and the refreshed tool instances,
181
+ * or undefined to remove the callback.
182
+ */
183
+ set onToolsChanged(callback) {
184
+ this._onToolsChanged = callback;
185
+ }
186
+ async _handleToolsChanged() {
187
+ if (this._refreshingTools) {
188
+ this._pendingRefresh = true;
189
+ return;
190
+ }
191
+ this._refreshingTools = true;
192
+ try {
193
+ do {
194
+ this._pendingRefresh = false;
195
+ const oldTools = [...this._registeredToolNames];
196
+ const newTools = await this.listTools();
197
+ this._onToolsChanged?.(oldTools, newTools);
198
+ } while (this._pendingRefresh);
199
+ }
200
+ catch (err) {
201
+ logger.warn(`client=<${this._clientName}>, error=<${err}> | failed to refresh tools after toolsChanged notification`);
202
+ }
203
+ finally {
204
+ this._refreshingTools = false;
205
+ }
206
+ }
131
207
  /**
132
208
  * Invoke a tool on the connected MCP server using an McpTool instance.
133
209
  *
@@ -137,14 +213,15 @@ export class McpClient {
137
213
  *
138
214
  * @param tool - The McpTool instance to invoke.
139
215
  * @param args - The arguments to pass to the tool.
216
+ * @param options - Optional settings for the request.
140
217
  * @returns A promise that resolves with the result of the tool invocation.
141
218
  */
142
- async callTool(tool, args) {
219
+ async callTool(tool, args, options) {
143
220
  await this.connect();
144
221
  if (this._state === 'failed')
145
222
  throw new Error('MCP server failed to connect. Call connect(true) to retry.');
146
223
  if (args === null || args === undefined) {
147
- return await this.callTool(tool, {});
224
+ return await this.callTool(tool, {}, options);
148
225
  }
149
226
  if (typeof args !== 'object' || Array.isArray(args)) {
150
227
  throw new Error(`MCP Protocol Error: Tool arguments must be a JSON Object (named parameters). Received: ${Array.isArray(args) ? 'Array' : typeof args}`);
@@ -154,15 +231,15 @@ export class McpClient {
154
231
  const toolArgs = enhancedArgs;
155
232
  // When tasksConfig is undefined, call tools directly without task management
156
233
  if (this._tasksConfig === undefined) {
157
- return (await this._client.callTool({ name: tool.name, arguments: toolArgs }));
234
+ return (await this._client.callTool({ name: tool.name, arguments: toolArgs }, undefined, options));
158
235
  }
159
236
  // When tasksConfig is defined (even as empty object), use task-based invocation
160
237
  // which supports long-running tools with progress tracking
161
- const stream = this._client.experimental.tasks.callToolStream({ name: tool.name, arguments: toolArgs }, undefined, // resultSchema - use default CallToolResultSchema
162
- {
238
+ const stream = this._client.experimental.tasks.callToolStream({ name: tool.name, arguments: toolArgs }, undefined, {
163
239
  timeout: this._tasksConfig.ttl ?? McpClient.DEFAULT_TTL,
164
240
  maxTotalTimeout: this._tasksConfig.pollTimeout ?? McpClient.DEFAULT_POLL_TIMEOUT,
165
241
  resetTimeoutOnProgress: true,
242
+ ...options,
166
243
  });
167
244
  const result = await takeResult(stream);
168
245
  return result;
@@ -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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"}