@anthropic-ai/sdk 0.21.1 → 0.22.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 (76) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -1
  3. package/index.d.mts +12 -2
  4. package/index.d.ts +12 -2
  5. package/index.d.ts.map +1 -1
  6. package/index.js +0 -2
  7. package/index.js.map +1 -1
  8. package/index.mjs +0 -2
  9. package/index.mjs.map +1 -1
  10. package/lib/MessageStream.d.ts +3 -2
  11. package/lib/MessageStream.d.ts.map +1 -1
  12. package/lib/MessageStream.js +25 -2
  13. package/lib/MessageStream.js.map +1 -1
  14. package/lib/MessageStream.mjs +25 -2
  15. package/lib/MessageStream.mjs.map +1 -1
  16. package/package.json +1 -1
  17. package/resources/index.d.ts +1 -2
  18. package/resources/index.d.ts.map +1 -1
  19. package/resources/index.js +1 -3
  20. package/resources/index.js.map +1 -1
  21. package/resources/index.mjs +0 -1
  22. package/resources/index.mjs.map +1 -1
  23. package/resources/messages.d.ts +205 -211
  24. package/resources/messages.d.ts.map +1 -1
  25. package/resources/messages.js.map +1 -1
  26. package/resources/messages.mjs.map +1 -1
  27. package/src/index.ts +12 -3
  28. package/src/lib/MessageStream.ts +31 -5
  29. package/src/resources/index.ts +12 -1
  30. package/src/resources/messages.ts +258 -245
  31. package/src/version.ts +1 -1
  32. package/version.d.ts +1 -1
  33. package/version.js +1 -1
  34. package/version.mjs +1 -1
  35. package/lib/ToolsBetaMessageStream.d.ts +0 -95
  36. package/lib/ToolsBetaMessageStream.d.ts.map +0 -1
  37. package/lib/ToolsBetaMessageStream.js +0 -459
  38. package/lib/ToolsBetaMessageStream.js.map +0 -1
  39. package/lib/ToolsBetaMessageStream.mjs +0 -455
  40. package/lib/ToolsBetaMessageStream.mjs.map +0 -1
  41. package/resources/beta/beta.d.ts +0 -9
  42. package/resources/beta/beta.d.ts.map +0 -1
  43. package/resources/beta/beta.js +0 -40
  44. package/resources/beta/beta.js.map +0 -1
  45. package/resources/beta/beta.mjs +0 -13
  46. package/resources/beta/beta.mjs.map +0 -1
  47. package/resources/beta/index.d.ts +0 -3
  48. package/resources/beta/index.d.ts.map +0 -1
  49. package/resources/beta/index.js +0 -9
  50. package/resources/beta/index.js.map +0 -1
  51. package/resources/beta/index.mjs +0 -4
  52. package/resources/beta/index.mjs.map +0 -1
  53. package/resources/beta/tools/index.d.ts +0 -3
  54. package/resources/beta/tools/index.d.ts.map +0 -1
  55. package/resources/beta/tools/index.js +0 -9
  56. package/resources/beta/tools/index.js.map +0 -1
  57. package/resources/beta/tools/index.mjs +0 -4
  58. package/resources/beta/tools/index.mjs.map +0 -1
  59. package/resources/beta/tools/messages.d.ts +0 -793
  60. package/resources/beta/tools/messages.d.ts.map +0 -1
  61. package/resources/beta/tools/messages.js +0 -29
  62. package/resources/beta/tools/messages.js.map +0 -1
  63. package/resources/beta/tools/messages.mjs +0 -24
  64. package/resources/beta/tools/messages.mjs.map +0 -1
  65. package/resources/beta/tools/tools.d.ts +0 -24
  66. package/resources/beta/tools/tools.d.ts.map +0 -1
  67. package/resources/beta/tools/tools.js +0 -40
  68. package/resources/beta/tools/tools.js.map +0 -1
  69. package/resources/beta/tools/tools.mjs +0 -13
  70. package/resources/beta/tools/tools.mjs.map +0 -1
  71. package/src/lib/ToolsBetaMessageStream.ts +0 -561
  72. package/src/resources/beta/beta.ts +0 -12
  73. package/src/resources/beta/index.ts +0 -4
  74. package/src/resources/beta/tools/index.ts +0 -21
  75. package/src/resources/beta/tools/messages.ts +0 -907
  76. package/src/resources/beta/tools/tools.ts +0 -27
@@ -7,15 +7,18 @@ import {
7
7
  MessageStreamEvent,
8
8
  MessageParam,
9
9
  MessageCreateParams,
10
- MessageStreamParams,
10
+ MessageCreateParamsBase,
11
11
  } from "../resources/messages.js";
12
12
  import { type ReadableStream } from "../_shims/index.js";
13
13
  import { Stream } from "../streaming.js";
14
+ import { TextBlock } from "../resources.js";
15
+ import { partialParse } from "../_vendor/partial-json-parser/parser.js";
14
16
 
15
17
  export interface MessageStreamEvents {
16
18
  connect: () => void;
17
19
  streamEvent: (event: MessageStreamEvent, snapshot: Message) => void;
18
20
  text: (textDelta: string, textSnapshot: string) => void;
21
+ inputJson: (partialJson: string, jsonSnapshot: unknown) => void;
19
22
  message: (message: Message) => void;
20
23
  contentBlock: (content: ContentBlock) => void;
21
24
  finalMessage: (message: Message) => void;
@@ -29,6 +32,8 @@ type MessageStreamEventListeners<Event extends keyof MessageStreamEvents> = {
29
32
  once?: boolean;
30
33
  }[];
31
34
 
35
+ const JSON_BUF_PROPERTY = '__json_buf';
36
+
32
37
  export class MessageStream implements AsyncIterable<MessageStreamEvent> {
33
38
  messages: MessageParam[] = [];
34
39
  receivedMessages: Message[] = [];
@@ -85,7 +90,7 @@ export class MessageStream implements AsyncIterable<MessageStreamEvent> {
85
90
 
86
91
  static createMessage(
87
92
  messages: Messages,
88
- params: MessageStreamParams,
93
+ params: MessageCreateParamsBase,
89
94
  options?: Core.RequestOptions,
90
95
  ): MessageStream {
91
96
  const runner = new MessageStream();
@@ -264,7 +269,7 @@ export class MessageStream implements AsyncIterable<MessageStreamEvent> {
264
269
  }
265
270
  const textBlocks = this.receivedMessages
266
271
  .at(-1)!
267
- .content.filter((block) => block.type === 'text')
272
+ .content.filter((block): block is TextBlock => block.type === 'text')
268
273
  .map((block) => block.text);
269
274
  if (textBlocks.length === 0) {
270
275
  throw new AnthropicError('stream ended without producing a content block with type=text');
@@ -369,8 +374,13 @@ export class MessageStream implements AsyncIterable<MessageStreamEvent> {
369
374
 
370
375
  switch (event.type) {
371
376
  case 'content_block_delta': {
372
- if (event.delta.type === 'text_delta') {
373
- this._emit('text', event.delta.text, messageSnapshot.content.at(-1)!.text || '');
377
+ const content = messageSnapshot.content.at(-1)!;
378
+ if (event.delta.type === 'text_delta' && content.type === 'text') {
379
+ this._emit('text', event.delta.text, content.text || '');
380
+ } else if (event.delta.type === 'input_json_delta' && content.type === 'tool_use') {
381
+ if (content.input) {
382
+ this._emit('inputJson', event.delta.partial_json, content.input);
383
+ }
374
384
  }
375
385
  break;
376
386
  }
@@ -459,6 +469,22 @@ export class MessageStream implements AsyncIterable<MessageStreamEvent> {
459
469
  const snapshotContent = snapshot.content.at(event.index);
460
470
  if (snapshotContent?.type === 'text' && event.delta.type === 'text_delta') {
461
471
  snapshotContent.text += event.delta.text;
472
+ } else if (snapshotContent?.type === 'tool_use' && event.delta.type === 'input_json_delta') {
473
+ // we need to keep track of the raw JSON string as well so that we can
474
+ // re-parse it for each delta, for now we just store it as an untyped
475
+ // non-enumerable property on the snapshot
476
+ let jsonBuf = (snapshotContent as any)[JSON_BUF_PROPERTY] || '';
477
+ jsonBuf += event.delta.partial_json;
478
+
479
+ Object.defineProperty(snapshotContent, JSON_BUF_PROPERTY, {
480
+ value: jsonBuf,
481
+ enumerable: false,
482
+ writable: true,
483
+ });
484
+
485
+ if (jsonBuf) {
486
+ snapshotContent.input = partialParse(jsonBuf);
487
+ }
462
488
  }
463
489
  return snapshot;
464
490
  }
@@ -1,6 +1,5 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- export { Beta } from "./beta/beta.js";
4
3
  export {
5
4
  Completion,
6
5
  CompletionCreateParams,
@@ -14,6 +13,7 @@ export {
14
13
  ContentBlockStartEvent,
15
14
  ContentBlockStopEvent,
16
15
  ImageBlockParam,
16
+ InputJsonDelta,
17
17
  Message,
18
18
  MessageDeltaEvent,
19
19
  MessageDeltaUsage,
@@ -21,9 +21,20 @@ export {
21
21
  MessageStartEvent,
22
22
  MessageStopEvent,
23
23
  MessageStreamEvent,
24
+ RawContentBlockDeltaEvent,
25
+ RawContentBlockStartEvent,
26
+ RawContentBlockStopEvent,
27
+ RawMessageDeltaEvent,
28
+ RawMessageStartEvent,
29
+ RawMessageStopEvent,
30
+ RawMessageStreamEvent,
24
31
  TextBlock,
25
32
  TextBlockParam,
26
33
  TextDelta,
34
+ Tool,
35
+ ToolResultBlockParam,
36
+ ToolUseBlock,
37
+ ToolUseBlockParam,
27
38
  Usage,
28
39
  MessageCreateParams,
29
40
  MessageCreateParamsNonStreaming,