@anthropic-ai/sdk 0.114.0 → 0.115.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 (116) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts.map +1 -1
  4. package/client.js +8 -1
  5. package/client.js.map +1 -1
  6. package/client.mjs +8 -1
  7. package/client.mjs.map +1 -1
  8. package/core/streaming.d.mts.map +1 -1
  9. package/core/streaming.d.ts.map +1 -1
  10. package/core/streaming.js +3 -0
  11. package/core/streaming.js.map +1 -1
  12. package/core/streaming.mjs +3 -0
  13. package/core/streaming.mjs.map +1 -1
  14. package/internal/parse.d.mts.map +1 -1
  15. package/internal/parse.d.ts.map +1 -1
  16. package/internal/parse.js +10 -1
  17. package/internal/parse.js.map +1 -1
  18. package/internal/parse.mjs +10 -1
  19. package/internal/parse.mjs.map +1 -1
  20. package/internal/request-signal.d.mts +4 -0
  21. package/internal/request-signal.d.mts.map +1 -0
  22. package/internal/request-signal.d.ts +4 -0
  23. package/internal/request-signal.d.ts.map +1 -0
  24. package/internal/request-signal.js +50 -0
  25. package/internal/request-signal.js.map +1 -0
  26. package/internal/request-signal.mjs +45 -0
  27. package/internal/request-signal.mjs.map +1 -0
  28. package/lib/BetaMessageStream.d.mts.map +1 -1
  29. package/lib/BetaMessageStream.d.ts.map +1 -1
  30. package/lib/BetaMessageStream.js +3 -0
  31. package/lib/BetaMessageStream.js.map +1 -1
  32. package/lib/BetaMessageStream.mjs +3 -0
  33. package/lib/BetaMessageStream.mjs.map +1 -1
  34. package/lib/middleware.d.mts +5 -3
  35. package/lib/middleware.d.mts.map +1 -1
  36. package/lib/middleware.d.ts +5 -3
  37. package/lib/middleware.d.ts.map +1 -1
  38. package/lib/middleware.js +58 -15
  39. package/lib/middleware.js.map +1 -1
  40. package/lib/middleware.mjs +58 -15
  41. package/lib/middleware.mjs.map +1 -1
  42. package/lib/tools/BetaToolRunner.d.mts.map +1 -1
  43. package/lib/tools/BetaToolRunner.d.ts.map +1 -1
  44. package/lib/tools/BetaToolRunner.js +80 -7
  45. package/lib/tools/BetaToolRunner.js.map +1 -1
  46. package/lib/tools/BetaToolRunner.mjs +80 -7
  47. package/lib/tools/BetaToolRunner.mjs.map +1 -1
  48. package/package.json +1 -1
  49. package/resources/beta/agents/agents.d.mts +1 -1
  50. package/resources/beta/agents/agents.d.mts.map +1 -1
  51. package/resources/beta/agents/agents.d.ts +1 -1
  52. package/resources/beta/agents/agents.d.ts.map +1 -1
  53. package/resources/beta/agents/agents.js.map +1 -1
  54. package/resources/beta/agents/agents.mjs.map +1 -1
  55. package/resources/beta/beta.d.mts +3 -3
  56. package/resources/beta/beta.d.mts.map +1 -1
  57. package/resources/beta/beta.d.ts +3 -3
  58. package/resources/beta/beta.d.ts.map +1 -1
  59. package/resources/beta/beta.js.map +1 -1
  60. package/resources/beta/beta.mjs.map +1 -1
  61. package/resources/beta/index.d.mts +1 -1
  62. package/resources/beta/index.d.mts.map +1 -1
  63. package/resources/beta/index.d.ts +1 -1
  64. package/resources/beta/index.d.ts.map +1 -1
  65. package/resources/beta/index.js.map +1 -1
  66. package/resources/beta/index.mjs.map +1 -1
  67. package/resources/beta/messages/batches.d.mts +4 -3
  68. package/resources/beta/messages/batches.d.mts.map +1 -1
  69. package/resources/beta/messages/batches.d.ts +4 -3
  70. package/resources/beta/messages/batches.d.ts.map +1 -1
  71. package/resources/beta/messages/index.d.mts +1 -1
  72. package/resources/beta/messages/index.d.mts.map +1 -1
  73. package/resources/beta/messages/index.d.ts +1 -1
  74. package/resources/beta/messages/index.d.ts.map +1 -1
  75. package/resources/beta/messages/index.js.map +1 -1
  76. package/resources/beta/messages/index.mjs.map +1 -1
  77. package/resources/beta/messages/messages.d.mts +154 -6
  78. package/resources/beta/messages/messages.d.mts.map +1 -1
  79. package/resources/beta/messages/messages.d.ts +154 -6
  80. package/resources/beta/messages/messages.d.ts.map +1 -1
  81. package/resources/beta/messages/messages.js.map +1 -1
  82. package/resources/beta/messages/messages.mjs.map +1 -1
  83. package/resources/messages/messages.d.mts +1 -1
  84. package/resources/messages/messages.d.mts.map +1 -1
  85. package/resources/messages/messages.d.ts +1 -1
  86. package/resources/messages/messages.d.ts.map +1 -1
  87. package/resources/messages/messages.js.map +1 -1
  88. package/resources/messages/messages.mjs.map +1 -1
  89. package/src/client.ts +13 -1
  90. package/src/core/streaming.ts +3 -0
  91. package/src/internal/parse.ts +10 -1
  92. package/src/internal/request-signal.ts +68 -0
  93. package/src/lib/BetaMessageStream.ts +4 -0
  94. package/src/lib/middleware.ts +61 -16
  95. package/src/lib/tools/BetaToolRunner.ts +101 -8
  96. package/src/resources/beta/agents/agents.ts +1 -0
  97. package/src/resources/beta/beta.ts +22 -0
  98. package/src/resources/beta/index.ts +10 -0
  99. package/src/resources/beta/messages/batches.ts +4 -3
  100. package/src/resources/beta/messages/index.ts +10 -0
  101. package/src/resources/beta/messages/messages.ts +199 -4
  102. package/src/resources/messages/messages.ts +1 -0
  103. package/src/version.ts +1 -1
  104. package/version.d.mts +1 -1
  105. package/version.d.ts +1 -1
  106. package/version.js +1 -1
  107. package/version.mjs +1 -1
  108. package/lib/tools/ToolRunner.d.mts +0 -132
  109. package/lib/tools/ToolRunner.d.mts.map +0 -1
  110. package/lib/tools/ToolRunner.d.ts +0 -132
  111. package/lib/tools/ToolRunner.d.ts.map +0 -1
  112. package/lib/tools/ToolRunner.js +0 -294
  113. package/lib/tools/ToolRunner.js.map +0 -1
  114. package/lib/tools/ToolRunner.mjs +0 -290
  115. package/lib/tools/ToolRunner.mjs.map +0 -1
  116. package/src/lib/tools/ToolRunner.ts +0 -381
@@ -1,294 +0,0 @@
1
- "use strict";
2
- var _BetaToolRunner_instances, _BetaToolRunner_consumed, _BetaToolRunner_mutated, _BetaToolRunner_state, _BetaToolRunner_message, _BetaToolRunner_toolResponse, _BetaToolRunner_completion, _BetaToolRunner_iterationCount, _BetaToolRunner_generateToolResponse;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.BetaToolRunner = void 0;
5
- const tslib_1 = require("../../internal/tslib.js");
6
- const ToolError_1 = require("./ToolError.js");
7
- const error_1 = require("../../core/error.js");
8
- /**
9
- * Just Promise.withResolvers(), which is not available in all environments.
10
- */
11
- function promiseWithResolvers() {
12
- let resolve;
13
- let reject;
14
- const promise = new Promise((res, rej) => {
15
- resolve = res;
16
- reject = rej;
17
- });
18
- return { promise, resolve: resolve, reject: reject };
19
- }
20
- /**
21
- * A ToolRunner handles the automatic conversation loop between the assistant and tools.
22
- *
23
- * A ToolRunner is an async iterable that yields either BetaMessage or BetaMessageStream objects
24
- * depending on the streaming configuration.
25
- */
26
- class BetaToolRunner {
27
- constructor(client, params) {
28
- _BetaToolRunner_instances.add(this);
29
- this.client = client;
30
- /** Whether the async iterator has been consumed */
31
- _BetaToolRunner_consumed.set(this, false);
32
- /** Whether parameters have been mutated since the last API call */
33
- _BetaToolRunner_mutated.set(this, false);
34
- /** Current state containing the request parameters */
35
- _BetaToolRunner_state.set(this, void 0);
36
- /** Promise for the last message received from the assistant */
37
- _BetaToolRunner_message.set(this, void 0);
38
- /** Cached tool response to avoid redundant executions */
39
- _BetaToolRunner_toolResponse.set(this, void 0);
40
- /** Promise resolvers for waiting on completion */
41
- _BetaToolRunner_completion.set(this, void 0);
42
- /** Number of iterations (API requests) made so far */
43
- _BetaToolRunner_iterationCount.set(this, 0);
44
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_state, {
45
- params: {
46
- // You can't clone the entire params since there are functions as handlers.
47
- // You also don't really need to clone params.messages, but it probably will prevent a foot gun
48
- // somewhere.
49
- ...params,
50
- messages: structuredClone(params.messages),
51
- },
52
- }, "f");
53
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
54
- }
55
- async *[(_BetaToolRunner_consumed = new WeakMap(), _BetaToolRunner_mutated = new WeakMap(), _BetaToolRunner_state = new WeakMap(), _BetaToolRunner_message = new WeakMap(), _BetaToolRunner_toolResponse = new WeakMap(), _BetaToolRunner_completion = new WeakMap(), _BetaToolRunner_iterationCount = new WeakMap(), _BetaToolRunner_instances = new WeakSet(), Symbol.asyncIterator)]() {
56
- var _a;
57
- if (tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_consumed, "f")) {
58
- throw new error_1.AnthropicError('Cannot iterate over a consumed stream');
59
- }
60
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_consumed, true, "f");
61
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
62
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
63
- try {
64
- while (true) {
65
- let stream;
66
- try {
67
- if (tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations &&
68
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f") >= tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations) {
69
- break;
70
- }
71
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_mutated, false, "f");
72
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_message, undefined, "f");
73
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
74
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_iterationCount, (_a = tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f"), _a++, _a), "f");
75
- const { max_iterations, ...params } = tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
76
- if (params.stream) {
77
- stream = this.client.beta.messages.stream({ ...params });
78
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_message, stream.finalMessage(), "f");
79
- // Make sure that this promise doesn't throw before we get the option to do something about it.
80
- // Error will be caught when we call await this.#message ultimately
81
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f").catch(() => { });
82
- yield stream;
83
- }
84
- else {
85
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_message, this.client.beta.messages.create({ ...params, stream: false }), "f");
86
- yield tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f");
87
- }
88
- if (!tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
89
- const { role, content } = await tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f");
90
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push({ role, content });
91
- }
92
- const toolMessage = await tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.at(-1));
93
- if (toolMessage) {
94
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push(toolMessage);
95
- }
96
- if (!toolMessage && !tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
97
- break;
98
- }
99
- }
100
- finally {
101
- if (stream) {
102
- stream.abort();
103
- }
104
- }
105
- }
106
- if (!tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f")) {
107
- throw new error_1.AnthropicError('ToolRunner concluded without a message from the server');
108
- }
109
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_completion, "f").resolve(await tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f"));
110
- }
111
- catch (error) {
112
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_consumed, false, "f");
113
- // Silence unhandled promise errors
114
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_completion, "f").promise.catch(() => { });
115
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_completion, "f").reject(error);
116
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
117
- throw error;
118
- }
119
- }
120
- setMessagesParams(paramsOrMutator) {
121
- if (typeof paramsOrMutator === 'function') {
122
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params = paramsOrMutator(tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params);
123
- }
124
- else {
125
- tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params = paramsOrMutator;
126
- }
127
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
128
- // Invalidate cached tool response since parameters changed
129
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
130
- }
131
- /**
132
- * Get the tool response for the last message from the assistant.
133
- * Avoids redundant tool executions by caching results.
134
- *
135
- * @returns A promise that resolves to a BetaMessageParam containing tool results, or null if no tools need to be executed
136
- *
137
- * @example
138
- * const toolResponse = await runner.generateToolResponse();
139
- * if (toolResponse) {
140
- * console.log('Tool results:', toolResponse.content);
141
- * }
142
- */
143
- async generateToolResponse() {
144
- const message = (await tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_message, "f")) ?? this.params.messages.at(-1);
145
- if (!message) {
146
- return null;
147
- }
148
- return tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, message);
149
- }
150
- /**
151
- * Wait for the async iterator to complete. This works even if the async iterator hasn't yet started, and
152
- * will wait for an instance to start and go to completion.
153
- *
154
- * @returns A promise that resolves to the final BetaMessage when the iterator completes
155
- *
156
- * @example
157
- * // Start consuming the iterator
158
- * for await (const message of runner) {
159
- * console.log('Message:', message.content);
160
- * }
161
- *
162
- * // Meanwhile, wait for completion from another part of the code
163
- * const finalMessage = await runner.done();
164
- * console.log('Final response:', finalMessage.content);
165
- */
166
- done() {
167
- return tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_completion, "f").promise;
168
- }
169
- /**
170
- * Returns a promise indicating that the stream is done. Unlike .done(), this will eagerly read the stream:
171
- * * If the iterator has not been consumed, consume the entire iterator and return the final message from the
172
- * assistant.
173
- * * If the iterator has been consumed, waits for it to complete and returns the final message.
174
- *
175
- * @returns A promise that resolves to the final BetaMessage from the conversation
176
- * @throws {AnthropicError} If no messages were processed during the conversation
177
- *
178
- * @example
179
- * const finalMessage = await runner.runUntilDone();
180
- * console.log('Final response:', finalMessage.content);
181
- */
182
- async runUntilDone() {
183
- // If not yet consumed, start consuming and wait for completion
184
- if (!tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_consumed, "f")) {
185
- for await (const _ of this) {
186
- // Iterator naturally populates this.#message
187
- }
188
- }
189
- // If consumed but not completed, wait for completion
190
- return this.done();
191
- }
192
- /**
193
- * Get the current parameters being used by the ToolRunner.
194
- *
195
- * @returns A readonly view of the current ToolRunnerParams
196
- *
197
- * @example
198
- * const currentParams = runner.params;
199
- * console.log('Current model:', currentParams.model);
200
- * console.log('Message count:', currentParams.messages.length);
201
- */
202
- get params() {
203
- return tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
204
- }
205
- /**
206
- * Add one or more messages to the conversation history.
207
- *
208
- * @param messages - One or more BetaMessageParam objects to add to the conversation
209
- *
210
- * @example
211
- * runner.pushMessages(
212
- * { role: 'user', content: 'Also, what about the weather in NYC?' }
213
- * );
214
- *
215
- * @example
216
- * // Adding multiple messages
217
- * runner.pushMessages(
218
- * { role: 'user', content: 'What about NYC?' },
219
- * { role: 'user', content: 'And Boston?' }
220
- * );
221
- */
222
- pushMessages(...messages) {
223
- this.setMessagesParams((params) => ({
224
- ...params,
225
- messages: [...params.messages, ...messages],
226
- }));
227
- }
228
- /**
229
- * Makes the ToolRunner directly awaitable, equivalent to calling .runUntilDone()
230
- * This allows using `await runner` instead of `await runner.runUntilDone()`
231
- */
232
- then(onfulfilled, onrejected) {
233
- return this.runUntilDone().then(onfulfilled, onrejected);
234
- }
235
- }
236
- exports.BetaToolRunner = BetaToolRunner;
237
- _BetaToolRunner_generateToolResponse = async function _BetaToolRunner_generateToolResponse(lastMessage) {
238
- if (tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f") !== undefined) {
239
- return tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
240
- }
241
- tslib_1.__classPrivateFieldSet(this, _BetaToolRunner_toolResponse, generateToolResponse(tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params, lastMessage), "f");
242
- return tslib_1.__classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
243
- };
244
- async function generateToolResponse(params, lastMessage = params.messages.at(-1)) {
245
- // Only process if the last message is from the assistant and has tool use blocks
246
- if (!lastMessage ||
247
- lastMessage.role !== 'assistant' ||
248
- !lastMessage.content ||
249
- typeof lastMessage.content === 'string') {
250
- return null;
251
- }
252
- const toolUseBlocks = lastMessage.content.filter((content) => content.type === 'tool_use');
253
- if (toolUseBlocks.length === 0) {
254
- return null;
255
- }
256
- const toolResults = await Promise.all(toolUseBlocks.map(async (toolUse) => {
257
- const tool = params.tools.find((t) => ('name' in t ? t.name : t.mcp_server_name) === toolUse.name);
258
- if (!tool || !('run' in tool)) {
259
- return {
260
- type: 'tool_result',
261
- tool_use_id: toolUse.id,
262
- content: `Error: Tool '${toolUse.name}' not found`,
263
- is_error: true,
264
- };
265
- }
266
- try {
267
- let input = toolUse.input;
268
- if ('parse' in tool && tool.parse) {
269
- input = tool.parse(input);
270
- }
271
- const result = await tool.run(input);
272
- return {
273
- type: 'tool_result',
274
- tool_use_id: toolUse.id,
275
- content: result,
276
- };
277
- }
278
- catch (error) {
279
- return {
280
- type: 'tool_result',
281
- tool_use_id: toolUse.id,
282
- content: error instanceof ToolError_1.ToolError ?
283
- error.content
284
- : `Error: ${error instanceof Error ? error.message : String(error)}`,
285
- is_error: true,
286
- };
287
- }
288
- }));
289
- return {
290
- role: 'user',
291
- content: toolResults,
292
- };
293
- }
294
- //# sourceMappingURL=ToolRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolRunner.js","sourceRoot":"","sources":["../../src/lib/tools/ToolRunner.ts"],"names":[],"mappings":"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"}
@@ -1,290 +0,0 @@
1
- var _BetaToolRunner_instances, _BetaToolRunner_consumed, _BetaToolRunner_mutated, _BetaToolRunner_state, _BetaToolRunner_message, _BetaToolRunner_toolResponse, _BetaToolRunner_completion, _BetaToolRunner_iterationCount, _BetaToolRunner_generateToolResponse;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "../../internal/tslib.mjs";
3
- import { ToolError } from "./ToolError.mjs";
4
- import { AnthropicError } from "../../core/error.mjs";
5
- /**
6
- * Just Promise.withResolvers(), which is not available in all environments.
7
- */
8
- function promiseWithResolvers() {
9
- let resolve;
10
- let reject;
11
- const promise = new Promise((res, rej) => {
12
- resolve = res;
13
- reject = rej;
14
- });
15
- return { promise, resolve: resolve, reject: reject };
16
- }
17
- /**
18
- * A ToolRunner handles the automatic conversation loop between the assistant and tools.
19
- *
20
- * A ToolRunner is an async iterable that yields either BetaMessage or BetaMessageStream objects
21
- * depending on the streaming configuration.
22
- */
23
- export class BetaToolRunner {
24
- constructor(client, params) {
25
- _BetaToolRunner_instances.add(this);
26
- this.client = client;
27
- /** Whether the async iterator has been consumed */
28
- _BetaToolRunner_consumed.set(this, false);
29
- /** Whether parameters have been mutated since the last API call */
30
- _BetaToolRunner_mutated.set(this, false);
31
- /** Current state containing the request parameters */
32
- _BetaToolRunner_state.set(this, void 0);
33
- /** Promise for the last message received from the assistant */
34
- _BetaToolRunner_message.set(this, void 0);
35
- /** Cached tool response to avoid redundant executions */
36
- _BetaToolRunner_toolResponse.set(this, void 0);
37
- /** Promise resolvers for waiting on completion */
38
- _BetaToolRunner_completion.set(this, void 0);
39
- /** Number of iterations (API requests) made so far */
40
- _BetaToolRunner_iterationCount.set(this, 0);
41
- __classPrivateFieldSet(this, _BetaToolRunner_state, {
42
- params: {
43
- // You can't clone the entire params since there are functions as handlers.
44
- // You also don't really need to clone params.messages, but it probably will prevent a foot gun
45
- // somewhere.
46
- ...params,
47
- messages: structuredClone(params.messages),
48
- },
49
- }, "f");
50
- __classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
51
- }
52
- async *[(_BetaToolRunner_consumed = new WeakMap(), _BetaToolRunner_mutated = new WeakMap(), _BetaToolRunner_state = new WeakMap(), _BetaToolRunner_message = new WeakMap(), _BetaToolRunner_toolResponse = new WeakMap(), _BetaToolRunner_completion = new WeakMap(), _BetaToolRunner_iterationCount = new WeakMap(), _BetaToolRunner_instances = new WeakSet(), Symbol.asyncIterator)]() {
53
- var _a;
54
- if (__classPrivateFieldGet(this, _BetaToolRunner_consumed, "f")) {
55
- throw new AnthropicError('Cannot iterate over a consumed stream');
56
- }
57
- __classPrivateFieldSet(this, _BetaToolRunner_consumed, true, "f");
58
- __classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
59
- __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
60
- try {
61
- while (true) {
62
- let stream;
63
- try {
64
- if (__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations &&
65
- __classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f") >= __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations) {
66
- break;
67
- }
68
- __classPrivateFieldSet(this, _BetaToolRunner_mutated, false, "f");
69
- __classPrivateFieldSet(this, _BetaToolRunner_message, undefined, "f");
70
- __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
71
- __classPrivateFieldSet(this, _BetaToolRunner_iterationCount, (_a = __classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f"), _a++, _a), "f");
72
- const { max_iterations, ...params } = __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
73
- if (params.stream) {
74
- stream = this.client.beta.messages.stream({ ...params });
75
- __classPrivateFieldSet(this, _BetaToolRunner_message, stream.finalMessage(), "f");
76
- // Make sure that this promise doesn't throw before we get the option to do something about it.
77
- // Error will be caught when we call await this.#message ultimately
78
- __classPrivateFieldGet(this, _BetaToolRunner_message, "f").catch(() => { });
79
- yield stream;
80
- }
81
- else {
82
- __classPrivateFieldSet(this, _BetaToolRunner_message, this.client.beta.messages.create({ ...params, stream: false }), "f");
83
- yield __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
84
- }
85
- if (!__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
86
- const { role, content } = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
87
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push({ role, content });
88
- }
89
- const toolMessage = await __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.at(-1));
90
- if (toolMessage) {
91
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push(toolMessage);
92
- }
93
- if (!toolMessage && !__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
94
- break;
95
- }
96
- }
97
- finally {
98
- if (stream) {
99
- stream.abort();
100
- }
101
- }
102
- }
103
- if (!__classPrivateFieldGet(this, _BetaToolRunner_message, "f")) {
104
- throw new AnthropicError('ToolRunner concluded without a message from the server');
105
- }
106
- __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").resolve(await __classPrivateFieldGet(this, _BetaToolRunner_message, "f"));
107
- }
108
- catch (error) {
109
- __classPrivateFieldSet(this, _BetaToolRunner_consumed, false, "f");
110
- // Silence unhandled promise errors
111
- __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").promise.catch(() => { });
112
- __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").reject(error);
113
- __classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
114
- throw error;
115
- }
116
- }
117
- setMessagesParams(paramsOrMutator) {
118
- if (typeof paramsOrMutator === 'function') {
119
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params = paramsOrMutator(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params);
120
- }
121
- else {
122
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params = paramsOrMutator;
123
- }
124
- __classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
125
- // Invalidate cached tool response since parameters changed
126
- __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
127
- }
128
- /**
129
- * Get the tool response for the last message from the assistant.
130
- * Avoids redundant tool executions by caching results.
131
- *
132
- * @returns A promise that resolves to a BetaMessageParam containing tool results, or null if no tools need to be executed
133
- *
134
- * @example
135
- * const toolResponse = await runner.generateToolResponse();
136
- * if (toolResponse) {
137
- * console.log('Tool results:', toolResponse.content);
138
- * }
139
- */
140
- async generateToolResponse() {
141
- const message = (await __classPrivateFieldGet(this, _BetaToolRunner_message, "f")) ?? this.params.messages.at(-1);
142
- if (!message) {
143
- return null;
144
- }
145
- return __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, message);
146
- }
147
- /**
148
- * Wait for the async iterator to complete. This works even if the async iterator hasn't yet started, and
149
- * will wait for an instance to start and go to completion.
150
- *
151
- * @returns A promise that resolves to the final BetaMessage when the iterator completes
152
- *
153
- * @example
154
- * // Start consuming the iterator
155
- * for await (const message of runner) {
156
- * console.log('Message:', message.content);
157
- * }
158
- *
159
- * // Meanwhile, wait for completion from another part of the code
160
- * const finalMessage = await runner.done();
161
- * console.log('Final response:', finalMessage.content);
162
- */
163
- done() {
164
- return __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").promise;
165
- }
166
- /**
167
- * Returns a promise indicating that the stream is done. Unlike .done(), this will eagerly read the stream:
168
- * * If the iterator has not been consumed, consume the entire iterator and return the final message from the
169
- * assistant.
170
- * * If the iterator has been consumed, waits for it to complete and returns the final message.
171
- *
172
- * @returns A promise that resolves to the final BetaMessage from the conversation
173
- * @throws {AnthropicError} If no messages were processed during the conversation
174
- *
175
- * @example
176
- * const finalMessage = await runner.runUntilDone();
177
- * console.log('Final response:', finalMessage.content);
178
- */
179
- async runUntilDone() {
180
- // If not yet consumed, start consuming and wait for completion
181
- if (!__classPrivateFieldGet(this, _BetaToolRunner_consumed, "f")) {
182
- for await (const _ of this) {
183
- // Iterator naturally populates this.#message
184
- }
185
- }
186
- // If consumed but not completed, wait for completion
187
- return this.done();
188
- }
189
- /**
190
- * Get the current parameters being used by the ToolRunner.
191
- *
192
- * @returns A readonly view of the current ToolRunnerParams
193
- *
194
- * @example
195
- * const currentParams = runner.params;
196
- * console.log('Current model:', currentParams.model);
197
- * console.log('Message count:', currentParams.messages.length);
198
- */
199
- get params() {
200
- return __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
201
- }
202
- /**
203
- * Add one or more messages to the conversation history.
204
- *
205
- * @param messages - One or more BetaMessageParam objects to add to the conversation
206
- *
207
- * @example
208
- * runner.pushMessages(
209
- * { role: 'user', content: 'Also, what about the weather in NYC?' }
210
- * );
211
- *
212
- * @example
213
- * // Adding multiple messages
214
- * runner.pushMessages(
215
- * { role: 'user', content: 'What about NYC?' },
216
- * { role: 'user', content: 'And Boston?' }
217
- * );
218
- */
219
- pushMessages(...messages) {
220
- this.setMessagesParams((params) => ({
221
- ...params,
222
- messages: [...params.messages, ...messages],
223
- }));
224
- }
225
- /**
226
- * Makes the ToolRunner directly awaitable, equivalent to calling .runUntilDone()
227
- * This allows using `await runner` instead of `await runner.runUntilDone()`
228
- */
229
- then(onfulfilled, onrejected) {
230
- return this.runUntilDone().then(onfulfilled, onrejected);
231
- }
232
- }
233
- _BetaToolRunner_generateToolResponse = async function _BetaToolRunner_generateToolResponse(lastMessage) {
234
- if (__classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f") !== undefined) {
235
- return __classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
236
- }
237
- __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, generateToolResponse(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params, lastMessage), "f");
238
- return __classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
239
- };
240
- async function generateToolResponse(params, lastMessage = params.messages.at(-1)) {
241
- // Only process if the last message is from the assistant and has tool use blocks
242
- if (!lastMessage ||
243
- lastMessage.role !== 'assistant' ||
244
- !lastMessage.content ||
245
- typeof lastMessage.content === 'string') {
246
- return null;
247
- }
248
- const toolUseBlocks = lastMessage.content.filter((content) => content.type === 'tool_use');
249
- if (toolUseBlocks.length === 0) {
250
- return null;
251
- }
252
- const toolResults = await Promise.all(toolUseBlocks.map(async (toolUse) => {
253
- const tool = params.tools.find((t) => ('name' in t ? t.name : t.mcp_server_name) === toolUse.name);
254
- if (!tool || !('run' in tool)) {
255
- return {
256
- type: 'tool_result',
257
- tool_use_id: toolUse.id,
258
- content: `Error: Tool '${toolUse.name}' not found`,
259
- is_error: true,
260
- };
261
- }
262
- try {
263
- let input = toolUse.input;
264
- if ('parse' in tool && tool.parse) {
265
- input = tool.parse(input);
266
- }
267
- const result = await tool.run(input);
268
- return {
269
- type: 'tool_result',
270
- tool_use_id: toolUse.id,
271
- content: result,
272
- };
273
- }
274
- catch (error) {
275
- return {
276
- type: 'tool_result',
277
- tool_use_id: toolUse.id,
278
- content: error instanceof ToolError ?
279
- error.content
280
- : `Error: ${error instanceof Error ? error.message : String(error)}`,
281
- is_error: true,
282
- };
283
- }
284
- }));
285
- return {
286
- role: 'user',
287
- content: toolResults,
288
- };
289
- }
290
- //# sourceMappingURL=ToolRunner.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolRunner.mjs","sourceRoot":"","sources":["../../src/lib/tools/ToolRunner.ts"],"names":[],"mappings":"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"}