ai-protocol-adapters 1.0.0-alpha.3 → 1.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -61,9 +61,17 @@ declare class StreamingProtocolAdapter {
61
61
  */
62
62
  private processStreamChunk;
63
63
  /**
64
- * 处理工具调用
64
+ * 处理工具调用 - 支持OpenAI流式分块累积
65
+ * OpenAI流式API会将tool_calls分多个chunk发送:
66
+ * - Chunk 1: {index:0, id:"call_xxx", type:"function", function:{name:"web_search"}}
67
+ * - Chunk 2: {index:0, function:{arguments:"{\"query\":\"xxx\"}"}}
68
+ * - Chunk N: 继续累积arguments
65
69
  */
66
70
  private processToolCalls;
71
+ /**
72
+ * 在流结束时关闭所有未关闭的工具调用块
73
+ */
74
+ private closeAllToolCallBlocks;
67
75
  /**
68
76
  * 添加最终事件 - 支持thinking+content双模式
69
77
  */
@@ -2646,9 +2654,9 @@ declare const AnthropicImageSourceSchema: z.ZodObject<{
2646
2654
  declare const AnthropicContentBlockBaseSchema: z.ZodObject<{
2647
2655
  type: z.ZodEnum<["text", "image", "tool_use", "tool_result"]>;
2648
2656
  }, "strip", z.ZodTypeAny, {
2649
- type?: "text" | "image" | "tool_use" | "tool_result";
2657
+ type?: "text" | "tool_use" | "image" | "tool_result";
2650
2658
  }, {
2651
- type?: "text" | "image" | "tool_use" | "tool_result";
2659
+ type?: "text" | "tool_use" | "image" | "tool_result";
2652
2660
  }>;
2653
2661
  declare const AnthropicTextContentBlockSchema: z.ZodObject<{} & {
2654
2662
  type: z.ZodLiteral<"text">;
@@ -3784,7 +3792,7 @@ declare const AnthropicResponseSchema: z.ZodObject<{
3784
3792
  cache_read_input_tokens?: number;
3785
3793
  };
3786
3794
  stop_sequence?: string;
3787
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
3795
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
3788
3796
  }, {
3789
3797
  role?: "assistant";
3790
3798
  content?: ({
@@ -3828,7 +3836,7 @@ declare const AnthropicResponseSchema: z.ZodObject<{
3828
3836
  cache_read_input_tokens?: number;
3829
3837
  };
3830
3838
  stop_sequence?: string;
3831
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
3839
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
3832
3840
  }>;
3833
3841
  declare const AnthropicStreamEventBaseSchema: z.ZodObject<{
3834
3842
  type: z.ZodString;
@@ -4160,7 +4168,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4160
4168
  cache_read_input_tokens?: number;
4161
4169
  };
4162
4170
  stop_sequence?: string;
4163
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4171
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4164
4172
  }, {
4165
4173
  role?: "assistant";
4166
4174
  content?: ({
@@ -4204,7 +4212,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4204
4212
  cache_read_input_tokens?: number;
4205
4213
  };
4206
4214
  stop_sequence?: string;
4207
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4215
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4208
4216
  }>;
4209
4217
  }, "strip", z.ZodTypeAny, {
4210
4218
  message?: {
@@ -4250,7 +4258,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4250
4258
  cache_read_input_tokens?: number;
4251
4259
  };
4252
4260
  stop_sequence?: string;
4253
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4261
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4254
4262
  };
4255
4263
  type?: "message_start";
4256
4264
  }, {
@@ -4297,7 +4305,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4297
4305
  cache_read_input_tokens?: number;
4298
4306
  };
4299
4307
  stop_sequence?: string;
4300
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4308
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4301
4309
  };
4302
4310
  type?: "message_start";
4303
4311
  }>;
@@ -4560,10 +4568,10 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4560
4568
  stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4561
4569
  }, "strip", z.ZodTypeAny, {
4562
4570
  stop_sequence?: string;
4563
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4571
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4564
4572
  }, {
4565
4573
  stop_sequence?: string;
4566
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4574
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4567
4575
  }>;
4568
4576
  usage: z.ZodObject<{
4569
4577
  input_tokens: z.ZodOptional<z.ZodNumber>;
@@ -4585,7 +4593,7 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4585
4593
  type?: "message_delta";
4586
4594
  delta?: {
4587
4595
  stop_sequence?: string;
4588
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4596
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4589
4597
  };
4590
4598
  usage?: {
4591
4599
  input_tokens?: number;
@@ -4597,7 +4605,7 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4597
4605
  type?: "message_delta";
4598
4606
  delta?: {
4599
4607
  stop_sequence?: string;
4600
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4608
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4601
4609
  };
4602
4610
  usage?: {
4603
4611
  input_tokens?: number;
@@ -4968,7 +4976,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
4968
4976
  cache_read_input_tokens?: number;
4969
4977
  };
4970
4978
  stop_sequence?: string;
4971
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4979
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4972
4980
  }, {
4973
4981
  role?: "assistant";
4974
4982
  content?: ({
@@ -5012,7 +5020,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5012
5020
  cache_read_input_tokens?: number;
5013
5021
  };
5014
5022
  stop_sequence?: string;
5015
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5023
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5016
5024
  }>;
5017
5025
  }, "strip", z.ZodTypeAny, {
5018
5026
  message?: {
@@ -5058,7 +5066,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5058
5066
  cache_read_input_tokens?: number;
5059
5067
  };
5060
5068
  stop_sequence?: string;
5061
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5069
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5062
5070
  };
5063
5071
  type?: "message_start";
5064
5072
  }, {
@@ -5105,7 +5113,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5105
5113
  cache_read_input_tokens?: number;
5106
5114
  };
5107
5115
  stop_sequence?: string;
5108
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5116
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5109
5117
  };
5110
5118
  type?: "message_start";
5111
5119
  }>, z.ZodObject<{} & {
@@ -5364,10 +5372,10 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5364
5372
  stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5365
5373
  }, "strip", z.ZodTypeAny, {
5366
5374
  stop_sequence?: string;
5367
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5375
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5368
5376
  }, {
5369
5377
  stop_sequence?: string;
5370
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5378
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5371
5379
  }>;
5372
5380
  usage: z.ZodObject<{
5373
5381
  input_tokens: z.ZodOptional<z.ZodNumber>;
@@ -5389,7 +5397,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5389
5397
  type?: "message_delta";
5390
5398
  delta?: {
5391
5399
  stop_sequence?: string;
5392
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5400
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5393
5401
  };
5394
5402
  usage?: {
5395
5403
  input_tokens?: number;
@@ -5401,7 +5409,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5401
5409
  type?: "message_delta";
5402
5410
  delta?: {
5403
5411
  stop_sequence?: string;
5404
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5412
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5405
5413
  };
5406
5414
  usage?: {
5407
5415
  input_tokens?: number;
@@ -5572,7 +5580,7 @@ declare const validateAnthropicResponse: (data: unknown) => {
5572
5580
  cache_read_input_tokens?: number;
5573
5581
  };
5574
5582
  stop_sequence?: string;
5575
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5583
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5576
5584
  };
5577
5585
  declare const validateAnthropicStreamEvent: (data: unknown) => {
5578
5586
  message?: {
@@ -5618,7 +5626,7 @@ declare const validateAnthropicStreamEvent: (data: unknown) => {
5618
5626
  cache_read_input_tokens?: number;
5619
5627
  };
5620
5628
  stop_sequence?: string;
5621
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5629
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5622
5630
  };
5623
5631
  type?: "message_start";
5624
5632
  } | {
@@ -5672,7 +5680,7 @@ declare const validateAnthropicStreamEvent: (data: unknown) => {
5672
5680
  type?: "message_delta";
5673
5681
  delta?: {
5674
5682
  stop_sequence?: string;
5675
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5683
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5676
5684
  };
5677
5685
  usage?: {
5678
5686
  input_tokens?: number;
@@ -6475,7 +6483,7 @@ declare const validateO2AConversion: (openaiData: unknown, convertedData: unknow
6475
6483
  cache_read_input_tokens?: number;
6476
6484
  };
6477
6485
  stop_sequence?: string;
6478
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
6486
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
6479
6487
  }>;
6480
6488
  declare const validateStreamConversion: (inputChunks: unknown[], outputEvents: unknown[], direction: "openai-to-anthropic" | "anthropic-to-openai", useHealing?: boolean) => ConversionResult<unknown[]>;
6481
6489
 
@@ -6736,7 +6744,7 @@ declare const healO2AResponse: (data: unknown, maxAttempts?: number) => Promise<
6736
6744
  cache_read_input_tokens?: number;
6737
6745
  };
6738
6746
  stop_sequence?: string;
6739
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
6747
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
6740
6748
  }>>;
6741
6749
 
6742
6750
  /**
package/dist/index.d.ts CHANGED
@@ -61,9 +61,17 @@ declare class StreamingProtocolAdapter {
61
61
  */
62
62
  private processStreamChunk;
63
63
  /**
64
- * 处理工具调用
64
+ * 处理工具调用 - 支持OpenAI流式分块累积
65
+ * OpenAI流式API会将tool_calls分多个chunk发送:
66
+ * - Chunk 1: {index:0, id:"call_xxx", type:"function", function:{name:"web_search"}}
67
+ * - Chunk 2: {index:0, function:{arguments:"{\"query\":\"xxx\"}"}}
68
+ * - Chunk N: 继续累积arguments
65
69
  */
66
70
  private processToolCalls;
71
+ /**
72
+ * 在流结束时关闭所有未关闭的工具调用块
73
+ */
74
+ private closeAllToolCallBlocks;
67
75
  /**
68
76
  * 添加最终事件 - 支持thinking+content双模式
69
77
  */
@@ -2646,9 +2654,9 @@ declare const AnthropicImageSourceSchema: z.ZodObject<{
2646
2654
  declare const AnthropicContentBlockBaseSchema: z.ZodObject<{
2647
2655
  type: z.ZodEnum<["text", "image", "tool_use", "tool_result"]>;
2648
2656
  }, "strip", z.ZodTypeAny, {
2649
- type?: "text" | "image" | "tool_use" | "tool_result";
2657
+ type?: "text" | "tool_use" | "image" | "tool_result";
2650
2658
  }, {
2651
- type?: "text" | "image" | "tool_use" | "tool_result";
2659
+ type?: "text" | "tool_use" | "image" | "tool_result";
2652
2660
  }>;
2653
2661
  declare const AnthropicTextContentBlockSchema: z.ZodObject<{} & {
2654
2662
  type: z.ZodLiteral<"text">;
@@ -3784,7 +3792,7 @@ declare const AnthropicResponseSchema: z.ZodObject<{
3784
3792
  cache_read_input_tokens?: number;
3785
3793
  };
3786
3794
  stop_sequence?: string;
3787
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
3795
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
3788
3796
  }, {
3789
3797
  role?: "assistant";
3790
3798
  content?: ({
@@ -3828,7 +3836,7 @@ declare const AnthropicResponseSchema: z.ZodObject<{
3828
3836
  cache_read_input_tokens?: number;
3829
3837
  };
3830
3838
  stop_sequence?: string;
3831
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
3839
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
3832
3840
  }>;
3833
3841
  declare const AnthropicStreamEventBaseSchema: z.ZodObject<{
3834
3842
  type: z.ZodString;
@@ -4160,7 +4168,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4160
4168
  cache_read_input_tokens?: number;
4161
4169
  };
4162
4170
  stop_sequence?: string;
4163
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4171
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4164
4172
  }, {
4165
4173
  role?: "assistant";
4166
4174
  content?: ({
@@ -4204,7 +4212,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4204
4212
  cache_read_input_tokens?: number;
4205
4213
  };
4206
4214
  stop_sequence?: string;
4207
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4215
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4208
4216
  }>;
4209
4217
  }, "strip", z.ZodTypeAny, {
4210
4218
  message?: {
@@ -4250,7 +4258,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4250
4258
  cache_read_input_tokens?: number;
4251
4259
  };
4252
4260
  stop_sequence?: string;
4253
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4261
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4254
4262
  };
4255
4263
  type?: "message_start";
4256
4264
  }, {
@@ -4297,7 +4305,7 @@ declare const AnthropicMessageStartEventSchema: z.ZodObject<{} & {
4297
4305
  cache_read_input_tokens?: number;
4298
4306
  };
4299
4307
  stop_sequence?: string;
4300
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4308
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4301
4309
  };
4302
4310
  type?: "message_start";
4303
4311
  }>;
@@ -4560,10 +4568,10 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4560
4568
  stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4561
4569
  }, "strip", z.ZodTypeAny, {
4562
4570
  stop_sequence?: string;
4563
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4571
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4564
4572
  }, {
4565
4573
  stop_sequence?: string;
4566
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4574
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4567
4575
  }>;
4568
4576
  usage: z.ZodObject<{
4569
4577
  input_tokens: z.ZodOptional<z.ZodNumber>;
@@ -4585,7 +4593,7 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4585
4593
  type?: "message_delta";
4586
4594
  delta?: {
4587
4595
  stop_sequence?: string;
4588
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4596
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4589
4597
  };
4590
4598
  usage?: {
4591
4599
  input_tokens?: number;
@@ -4597,7 +4605,7 @@ declare const AnthropicMessageDeltaEventSchema: z.ZodObject<{} & {
4597
4605
  type?: "message_delta";
4598
4606
  delta?: {
4599
4607
  stop_sequence?: string;
4600
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4608
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4601
4609
  };
4602
4610
  usage?: {
4603
4611
  input_tokens?: number;
@@ -4968,7 +4976,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
4968
4976
  cache_read_input_tokens?: number;
4969
4977
  };
4970
4978
  stop_sequence?: string;
4971
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
4979
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
4972
4980
  }, {
4973
4981
  role?: "assistant";
4974
4982
  content?: ({
@@ -5012,7 +5020,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5012
5020
  cache_read_input_tokens?: number;
5013
5021
  };
5014
5022
  stop_sequence?: string;
5015
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5023
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5016
5024
  }>;
5017
5025
  }, "strip", z.ZodTypeAny, {
5018
5026
  message?: {
@@ -5058,7 +5066,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5058
5066
  cache_read_input_tokens?: number;
5059
5067
  };
5060
5068
  stop_sequence?: string;
5061
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5069
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5062
5070
  };
5063
5071
  type?: "message_start";
5064
5072
  }, {
@@ -5105,7 +5113,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5105
5113
  cache_read_input_tokens?: number;
5106
5114
  };
5107
5115
  stop_sequence?: string;
5108
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5116
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5109
5117
  };
5110
5118
  type?: "message_start";
5111
5119
  }>, z.ZodObject<{} & {
@@ -5364,10 +5372,10 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5364
5372
  stop_sequence: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5365
5373
  }, "strip", z.ZodTypeAny, {
5366
5374
  stop_sequence?: string;
5367
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5375
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5368
5376
  }, {
5369
5377
  stop_sequence?: string;
5370
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5378
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5371
5379
  }>;
5372
5380
  usage: z.ZodObject<{
5373
5381
  input_tokens: z.ZodOptional<z.ZodNumber>;
@@ -5389,7 +5397,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5389
5397
  type?: "message_delta";
5390
5398
  delta?: {
5391
5399
  stop_sequence?: string;
5392
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5400
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5393
5401
  };
5394
5402
  usage?: {
5395
5403
  input_tokens?: number;
@@ -5401,7 +5409,7 @@ declare const AnthropicStreamEventSchema: z.ZodUnion<[z.ZodObject<{} & {
5401
5409
  type?: "message_delta";
5402
5410
  delta?: {
5403
5411
  stop_sequence?: string;
5404
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5412
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5405
5413
  };
5406
5414
  usage?: {
5407
5415
  input_tokens?: number;
@@ -5572,7 +5580,7 @@ declare const validateAnthropicResponse: (data: unknown) => {
5572
5580
  cache_read_input_tokens?: number;
5573
5581
  };
5574
5582
  stop_sequence?: string;
5575
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5583
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5576
5584
  };
5577
5585
  declare const validateAnthropicStreamEvent: (data: unknown) => {
5578
5586
  message?: {
@@ -5618,7 +5626,7 @@ declare const validateAnthropicStreamEvent: (data: unknown) => {
5618
5626
  cache_read_input_tokens?: number;
5619
5627
  };
5620
5628
  stop_sequence?: string;
5621
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5629
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5622
5630
  };
5623
5631
  type?: "message_start";
5624
5632
  } | {
@@ -5672,7 +5680,7 @@ declare const validateAnthropicStreamEvent: (data: unknown) => {
5672
5680
  type?: "message_delta";
5673
5681
  delta?: {
5674
5682
  stop_sequence?: string;
5675
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
5683
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
5676
5684
  };
5677
5685
  usage?: {
5678
5686
  input_tokens?: number;
@@ -6475,7 +6483,7 @@ declare const validateO2AConversion: (openaiData: unknown, convertedData: unknow
6475
6483
  cache_read_input_tokens?: number;
6476
6484
  };
6477
6485
  stop_sequence?: string;
6478
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
6486
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
6479
6487
  }>;
6480
6488
  declare const validateStreamConversion: (inputChunks: unknown[], outputEvents: unknown[], direction: "openai-to-anthropic" | "anthropic-to-openai", useHealing?: boolean) => ConversionResult<unknown[]>;
6481
6489
 
@@ -6736,7 +6744,7 @@ declare const healO2AResponse: (data: unknown, maxAttempts?: number) => Promise<
6736
6744
  cache_read_input_tokens?: number;
6737
6745
  };
6738
6746
  stop_sequence?: string;
6739
- stop_reason?: "end_turn" | "max_tokens" | "tool_use" | "stop_sequence";
6747
+ stop_reason?: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
6740
6748
  }>>;
6741
6749
 
6742
6750
  /**
package/dist/index.js CHANGED
@@ -626,6 +626,14 @@ var StreamingProtocolAdapter = class {
626
626
  */
627
627
  processStreamChunk(chunk, state, sseLines) {
628
628
  const choice = chunk.choices?.[0];
629
+ if (choice) {
630
+ const hasToolCalls = choice.delta?.tool_calls;
631
+ const hasFinishReason = choice.finish_reason;
632
+ const isNonText = !choice.delta?.content;
633
+ if (hasToolCalls || hasFinishReason || isNonText && choice.delta) {
634
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [StreamingProtocolAdapter] CHUNK:", JSON.stringify(chunk, null, 2));
635
+ }
636
+ }
629
637
  if (!choice) return;
630
638
  const delta = choice.delta;
631
639
  if (delta.reasoning_content) {
@@ -683,22 +691,82 @@ var StreamingProtocolAdapter = class {
683
691
  }
684
692
  }
685
693
  /**
686
- * 处理工具调用
694
+ * 处理工具调用 - 支持OpenAI流式分块累积
695
+ * OpenAI流式API会将tool_calls分多个chunk发送:
696
+ * - Chunk 1: {index:0, id:"call_xxx", type:"function", function:{name:"web_search"}}
697
+ * - Chunk 2: {index:0, function:{arguments:"{\"query\":\"xxx\"}"}}
698
+ * - Chunk N: 继续累积arguments
687
699
  */
688
700
  processToolCalls(toolCalls, state, sseLines) {
701
+ console.log("\u{1F50D} [StreamingProtocolAdapter] processToolCalls called:", JSON.stringify(toolCalls, null, 2));
689
702
  for (const toolCall of toolCalls) {
690
- if (toolCall.id && toolCall.function?.name) {
691
- const toolData = {
692
- id: toolCall.id,
693
- name: toolCall.function.name,
694
- input: toolCall.function.arguments || ""
703
+ const index = toolCall.index ?? 0;
704
+ const toolId = toolCall.id;
705
+ const toolName = toolCall.function?.name;
706
+ const toolArgs = toolCall.function?.arguments;
707
+ console.log(`\u{1F50D} [StreamingProtocolAdapter] Processing chunk for index ${index}:`, {
708
+ hasId: !!toolId,
709
+ hasName: !!toolName,
710
+ hasArgs: !!toolArgs,
711
+ argsLength: toolArgs?.length
712
+ });
713
+ const stateKey = `tool_${index}`;
714
+ let toolData = state.toolCallsMap.get(stateKey);
715
+ if (!toolData) {
716
+ toolData = {
717
+ id: toolId || "",
718
+ name: toolName || "",
719
+ input: "",
720
+ blockStartSent: false,
721
+ blockStopSent: false
695
722
  };
696
- state.toolCallsMap.set(toolCall.id, toolData);
723
+ state.toolCallsMap.set(stateKey, toolData);
724
+ } else {
725
+ if (toolId) toolData.id = toolId;
726
+ if (toolName) toolData.name = toolName;
727
+ }
728
+ if (toolArgs) {
729
+ toolData.input += toolArgs;
730
+ console.log(`\u{1F50D} [StreamingProtocolAdapter] Accumulated arguments for index ${index}:`, {
731
+ currentLength: toolData.input.length,
732
+ totalArgs: toolData.input
733
+ });
734
+ }
735
+ if (toolData.id && toolData.name && !toolData.blockStartSent) {
736
+ const blockIndex = state.completedToolCalls.length + 1;
737
+ toolData.blockIndex = blockIndex;
697
738
  sseLines.push(
698
739
  "event: content_block_start",
699
- `data: {"type":"content_block_start","index":${state.completedToolCalls.length + 1},"content_block":{"type":"tool_use","id":"${toolCall.id}","name":"${toolCall.function.name}","input":{}}}`,
740
+ `data: {"type":"content_block_start","index":${blockIndex},"content_block":{"type":"tool_use","id":"${toolData.id}","name":"${toolData.name}","input":{}}}`,
700
741
  ""
701
742
  );
743
+ toolData.blockStartSent = true;
744
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent content_block_start for ${toolData.name} at index ${blockIndex}`);
745
+ }
746
+ if (toolArgs && toolData.blockStartSent && toolData.blockIndex !== void 0) {
747
+ sseLines.push(
748
+ "event: content_block_delta",
749
+ `data: {"type":"content_block_delta","index":${toolData.blockIndex},"delta":{"type":"input_json_delta","partial_json":${JSON.stringify(toolArgs)}}}`,
750
+ ""
751
+ );
752
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent input_json_delta for index ${toolData.blockIndex}`);
753
+ }
754
+ }
755
+ }
756
+ /**
757
+ * 在流结束时关闭所有未关闭的工具调用块
758
+ */
759
+ closeAllToolCallBlocks(state, sseLines) {
760
+ for (const [key, toolData] of state.toolCallsMap.entries()) {
761
+ if (toolData.blockStartSent && !toolData.blockStopSent && toolData.blockIndex !== void 0) {
762
+ sseLines.push(
763
+ "event: content_block_stop",
764
+ `data: {"type":"content_block_stop","index":${toolData.blockIndex}}`,
765
+ ""
766
+ );
767
+ toolData.blockStopSent = true;
768
+ state.completedToolCalls.push(toolData.id);
769
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent content_block_stop for ${toolData.name} at index ${toolData.blockIndex}`);
702
770
  }
703
771
  }
704
772
  }
@@ -706,6 +774,7 @@ var StreamingProtocolAdapter = class {
706
774
  * 添加最终事件 - 支持thinking+content双模式
707
775
  */
708
776
  addFinalEvents(state, sseLines) {
777
+ this.closeAllToolCallBlocks(state, sseLines);
709
778
  if (state.contentBlockStarted) {
710
779
  const blockIndex = state.thinkingBlockStarted ? 1 : 0;
711
780
  sseLines.push(
@@ -723,9 +792,10 @@ var StreamingProtocolAdapter = class {
723
792
  ""
724
793
  );
725
794
  }
795
+ const stopReason = state.completedToolCalls.length > 0 ? "tool_use" : "end_turn";
726
796
  sseLines.push(
727
797
  "event: message_delta",
728
- `data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":${state.usage.output_tokens}}}`,
798
+ `data: {"type":"message_delta","delta":{"stop_reason":"${stopReason}","stop_sequence":null},"usage":{"output_tokens":${state.usage.output_tokens}}}`,
729
799
  "",
730
800
  "event: message_stop",
731
801
  'data: {"type":"message_stop"}',
@@ -4258,15 +4328,28 @@ var ToolCallProcessor = class _ToolCallProcessor {
4258
4328
  * 处理增量工具调用
4259
4329
  */
4260
4330
  static processIncrementalToolCalls(toolCalls, state, sseLines) {
4331
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [ToolProcessor] processIncrementalToolCalls called with:", JSON.stringify(toolCalls, null, 2));
4261
4332
  for (const toolCall of toolCalls) {
4262
4333
  const toolId = toolCall.id;
4263
4334
  const toolName = toolCall.function?.name;
4264
4335
  const toolArgs = toolCall.function?.arguments;
4336
+ console.log("\u{1F50D} [ToolProcessor] Processing tool call:", {
4337
+ toolId,
4338
+ toolName,
4339
+ toolArgs: toolArgs || "UNDEFINED",
4340
+ toolArgsType: typeof toolArgs,
4341
+ toolArgsLength: toolArgs?.length || 0,
4342
+ hasArgs: !!toolArgs
4343
+ });
4265
4344
  if (toolName && toolId && !state.toolCallsMap.has(toolId)) {
4345
+ console.log("\u2705 [ToolProcessor] Starting new tool call:", toolName);
4266
4346
  _ToolCallProcessor.processToolCallStart(toolId, toolName, state, sseLines);
4267
4347
  }
4268
4348
  if (toolArgs) {
4349
+ console.log("\u2705 [ToolProcessor] Processing tool args, calling processToolArgs");
4269
4350
  _ToolCallProcessor.processToolArgs(toolId, toolArgs, state, sseLines);
4351
+ } else {
4352
+ console.warn("\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F [ToolProcessor] No tool args to process! This will result in empty input!");
4270
4353
  }
4271
4354
  }
4272
4355
  }
@@ -4274,15 +4357,28 @@ var ToolCallProcessor = class _ToolCallProcessor {
4274
4357
  * 处理工具调用
4275
4358
  */
4276
4359
  static processBatchToolCalls(toolCalls, state, sseLines) {
4360
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [ToolProcessor] processBatchToolCalls called with:", JSON.stringify(toolCalls, null, 2));
4277
4361
  for (const toolCall of toolCalls) {
4278
4362
  const toolId = toolCall.id;
4279
4363
  const toolName = toolCall.function?.name;
4280
4364
  const toolArgs = toolCall.function?.arguments;
4365
+ console.log("\u{1F50D} [ToolProcessor] Processing batch tool call:", {
4366
+ toolId,
4367
+ toolName,
4368
+ toolArgs: toolArgs || "UNDEFINED",
4369
+ toolArgsType: typeof toolArgs,
4370
+ toolArgsLength: toolArgs?.length || 0,
4371
+ hasArgs: !!toolArgs
4372
+ });
4281
4373
  if (toolName && toolId && !state.toolCallsMap.has(toolId)) {
4374
+ console.log("\u2705 [ToolProcessor] Starting new batch tool call:", toolName);
4282
4375
  _ToolCallProcessor.processToolCallStart(toolId, toolName, state, sseLines);
4283
4376
  }
4284
4377
  if (toolArgs) {
4378
+ console.log("\u2705 [ToolProcessor] Processing batch tool args, calling processToolArgs");
4285
4379
  _ToolCallProcessor.processToolArgs(toolId, toolArgs, state, sseLines);
4380
+ } else {
4381
+ console.warn("\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F [ToolProcessor] No batch tool args to process! This will result in empty input!");
4286
4382
  }
4287
4383
  }
4288
4384
  }
package/dist/index.mjs CHANGED
@@ -519,6 +519,14 @@ var StreamingProtocolAdapter = class {
519
519
  */
520
520
  processStreamChunk(chunk, state, sseLines) {
521
521
  const choice = chunk.choices?.[0];
522
+ if (choice) {
523
+ const hasToolCalls = choice.delta?.tool_calls;
524
+ const hasFinishReason = choice.finish_reason;
525
+ const isNonText = !choice.delta?.content;
526
+ if (hasToolCalls || hasFinishReason || isNonText && choice.delta) {
527
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [StreamingProtocolAdapter] CHUNK:", JSON.stringify(chunk, null, 2));
528
+ }
529
+ }
522
530
  if (!choice) return;
523
531
  const delta = choice.delta;
524
532
  if (delta.reasoning_content) {
@@ -576,22 +584,82 @@ var StreamingProtocolAdapter = class {
576
584
  }
577
585
  }
578
586
  /**
579
- * 处理工具调用
587
+ * 处理工具调用 - 支持OpenAI流式分块累积
588
+ * OpenAI流式API会将tool_calls分多个chunk发送:
589
+ * - Chunk 1: {index:0, id:"call_xxx", type:"function", function:{name:"web_search"}}
590
+ * - Chunk 2: {index:0, function:{arguments:"{\"query\":\"xxx\"}"}}
591
+ * - Chunk N: 继续累积arguments
580
592
  */
581
593
  processToolCalls(toolCalls, state, sseLines) {
594
+ console.log("\u{1F50D} [StreamingProtocolAdapter] processToolCalls called:", JSON.stringify(toolCalls, null, 2));
582
595
  for (const toolCall of toolCalls) {
583
- if (toolCall.id && toolCall.function?.name) {
584
- const toolData = {
585
- id: toolCall.id,
586
- name: toolCall.function.name,
587
- input: toolCall.function.arguments || ""
596
+ const index = toolCall.index ?? 0;
597
+ const toolId = toolCall.id;
598
+ const toolName = toolCall.function?.name;
599
+ const toolArgs = toolCall.function?.arguments;
600
+ console.log(`\u{1F50D} [StreamingProtocolAdapter] Processing chunk for index ${index}:`, {
601
+ hasId: !!toolId,
602
+ hasName: !!toolName,
603
+ hasArgs: !!toolArgs,
604
+ argsLength: toolArgs?.length
605
+ });
606
+ const stateKey = `tool_${index}`;
607
+ let toolData = state.toolCallsMap.get(stateKey);
608
+ if (!toolData) {
609
+ toolData = {
610
+ id: toolId || "",
611
+ name: toolName || "",
612
+ input: "",
613
+ blockStartSent: false,
614
+ blockStopSent: false
588
615
  };
589
- state.toolCallsMap.set(toolCall.id, toolData);
616
+ state.toolCallsMap.set(stateKey, toolData);
617
+ } else {
618
+ if (toolId) toolData.id = toolId;
619
+ if (toolName) toolData.name = toolName;
620
+ }
621
+ if (toolArgs) {
622
+ toolData.input += toolArgs;
623
+ console.log(`\u{1F50D} [StreamingProtocolAdapter] Accumulated arguments for index ${index}:`, {
624
+ currentLength: toolData.input.length,
625
+ totalArgs: toolData.input
626
+ });
627
+ }
628
+ if (toolData.id && toolData.name && !toolData.blockStartSent) {
629
+ const blockIndex = state.completedToolCalls.length + 1;
630
+ toolData.blockIndex = blockIndex;
590
631
  sseLines.push(
591
632
  "event: content_block_start",
592
- `data: {"type":"content_block_start","index":${state.completedToolCalls.length + 1},"content_block":{"type":"tool_use","id":"${toolCall.id}","name":"${toolCall.function.name}","input":{}}}`,
633
+ `data: {"type":"content_block_start","index":${blockIndex},"content_block":{"type":"tool_use","id":"${toolData.id}","name":"${toolData.name}","input":{}}}`,
593
634
  ""
594
635
  );
636
+ toolData.blockStartSent = true;
637
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent content_block_start for ${toolData.name} at index ${blockIndex}`);
638
+ }
639
+ if (toolArgs && toolData.blockStartSent && toolData.blockIndex !== void 0) {
640
+ sseLines.push(
641
+ "event: content_block_delta",
642
+ `data: {"type":"content_block_delta","index":${toolData.blockIndex},"delta":{"type":"input_json_delta","partial_json":${JSON.stringify(toolArgs)}}}`,
643
+ ""
644
+ );
645
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent input_json_delta for index ${toolData.blockIndex}`);
646
+ }
647
+ }
648
+ }
649
+ /**
650
+ * 在流结束时关闭所有未关闭的工具调用块
651
+ */
652
+ closeAllToolCallBlocks(state, sseLines) {
653
+ for (const [key, toolData] of state.toolCallsMap.entries()) {
654
+ if (toolData.blockStartSent && !toolData.blockStopSent && toolData.blockIndex !== void 0) {
655
+ sseLines.push(
656
+ "event: content_block_stop",
657
+ `data: {"type":"content_block_stop","index":${toolData.blockIndex}}`,
658
+ ""
659
+ );
660
+ toolData.blockStopSent = true;
661
+ state.completedToolCalls.push(toolData.id);
662
+ console.log(`\u2705 [StreamingProtocolAdapter] Sent content_block_stop for ${toolData.name} at index ${toolData.blockIndex}`);
595
663
  }
596
664
  }
597
665
  }
@@ -599,6 +667,7 @@ var StreamingProtocolAdapter = class {
599
667
  * 添加最终事件 - 支持thinking+content双模式
600
668
  */
601
669
  addFinalEvents(state, sseLines) {
670
+ this.closeAllToolCallBlocks(state, sseLines);
602
671
  if (state.contentBlockStarted) {
603
672
  const blockIndex = state.thinkingBlockStarted ? 1 : 0;
604
673
  sseLines.push(
@@ -616,9 +685,10 @@ var StreamingProtocolAdapter = class {
616
685
  ""
617
686
  );
618
687
  }
688
+ const stopReason = state.completedToolCalls.length > 0 ? "tool_use" : "end_turn";
619
689
  sseLines.push(
620
690
  "event: message_delta",
621
- `data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":${state.usage.output_tokens}}}`,
691
+ `data: {"type":"message_delta","delta":{"stop_reason":"${stopReason}","stop_sequence":null},"usage":{"output_tokens":${state.usage.output_tokens}}}`,
622
692
  "",
623
693
  "event: message_stop",
624
694
  'data: {"type":"message_stop"}',
@@ -4151,15 +4221,28 @@ var ToolCallProcessor = class _ToolCallProcessor {
4151
4221
  * 处理增量工具调用
4152
4222
  */
4153
4223
  static processIncrementalToolCalls(toolCalls, state, sseLines) {
4224
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [ToolProcessor] processIncrementalToolCalls called with:", JSON.stringify(toolCalls, null, 2));
4154
4225
  for (const toolCall of toolCalls) {
4155
4226
  const toolId = toolCall.id;
4156
4227
  const toolName = toolCall.function?.name;
4157
4228
  const toolArgs = toolCall.function?.arguments;
4229
+ console.log("\u{1F50D} [ToolProcessor] Processing tool call:", {
4230
+ toolId,
4231
+ toolName,
4232
+ toolArgs: toolArgs || "UNDEFINED",
4233
+ toolArgsType: typeof toolArgs,
4234
+ toolArgsLength: toolArgs?.length || 0,
4235
+ hasArgs: !!toolArgs
4236
+ });
4158
4237
  if (toolName && toolId && !state.toolCallsMap.has(toolId)) {
4238
+ console.log("\u2705 [ToolProcessor] Starting new tool call:", toolName);
4159
4239
  _ToolCallProcessor.processToolCallStart(toolId, toolName, state, sseLines);
4160
4240
  }
4161
4241
  if (toolArgs) {
4242
+ console.log("\u2705 [ToolProcessor] Processing tool args, calling processToolArgs");
4162
4243
  _ToolCallProcessor.processToolArgs(toolId, toolArgs, state, sseLines);
4244
+ } else {
4245
+ console.warn("\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F [ToolProcessor] No tool args to process! This will result in empty input!");
4163
4246
  }
4164
4247
  }
4165
4248
  }
@@ -4167,15 +4250,28 @@ var ToolCallProcessor = class _ToolCallProcessor {
4167
4250
  * 处理工具调用
4168
4251
  */
4169
4252
  static processBatchToolCalls(toolCalls, state, sseLines) {
4253
+ console.log("\u{1F50D}\u{1F50D}\u{1F50D} [ToolProcessor] processBatchToolCalls called with:", JSON.stringify(toolCalls, null, 2));
4170
4254
  for (const toolCall of toolCalls) {
4171
4255
  const toolId = toolCall.id;
4172
4256
  const toolName = toolCall.function?.name;
4173
4257
  const toolArgs = toolCall.function?.arguments;
4258
+ console.log("\u{1F50D} [ToolProcessor] Processing batch tool call:", {
4259
+ toolId,
4260
+ toolName,
4261
+ toolArgs: toolArgs || "UNDEFINED",
4262
+ toolArgsType: typeof toolArgs,
4263
+ toolArgsLength: toolArgs?.length || 0,
4264
+ hasArgs: !!toolArgs
4265
+ });
4174
4266
  if (toolName && toolId && !state.toolCallsMap.has(toolId)) {
4267
+ console.log("\u2705 [ToolProcessor] Starting new batch tool call:", toolName);
4175
4268
  _ToolCallProcessor.processToolCallStart(toolId, toolName, state, sseLines);
4176
4269
  }
4177
4270
  if (toolArgs) {
4271
+ console.log("\u2705 [ToolProcessor] Processing batch tool args, calling processToolArgs");
4178
4272
  _ToolCallProcessor.processToolArgs(toolId, toolArgs, state, sseLines);
4273
+ } else {
4274
+ console.warn("\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F [ToolProcessor] No batch tool args to process! This will result in empty input!");
4179
4275
  }
4180
4276
  }
4181
4277
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-protocol-adapters",
3
- "version": "1.0.0-alpha.3",
3
+ "version": "1.0.0-alpha.5",
4
4
  "description": "Universal AI Protocol Converter - OpenAI ⇄ Anthropic with full TypeScript support",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",