@jsonstudio/llms 0.6.795 → 0.6.938

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 (184) hide show
  1. package/dist/bridge/routecodex-adapter.d.ts +74 -0
  2. package/dist/config-unified/enhanced-path-resolver.d.ts +5 -0
  3. package/dist/config-unified/unified-config.d.ts +26 -0
  4. package/dist/conversion/codec-registry.d.ts +10 -0
  5. package/dist/conversion/codecs/gemini-openai-codec.d.ts +16 -0
  6. package/dist/conversion/codecs/openai-openai-codec.d.ts +12 -0
  7. package/dist/conversion/codecs/responses-openai-codec.d.ts +12 -0
  8. package/dist/conversion/compat/profiles/chat-gemini.json +12 -0
  9. package/dist/conversion/config/config-manager.d.ts +212 -0
  10. package/dist/conversion/hub/config/types.d.ts +26 -0
  11. package/dist/conversion/hub/core/detour-registry.d.ts +9 -0
  12. package/dist/conversion/hub/core/hub-context.d.ts +21 -0
  13. package/dist/conversion/hub/core/index.d.ts +3 -0
  14. package/dist/conversion/hub/core/stage-driver.d.ts +30 -0
  15. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +16 -0
  16. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +17 -0
  17. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +16 -0
  18. package/dist/conversion/hub/format-adapters/index.d.ts +21 -0
  19. package/dist/conversion/hub/hub-feature.d.ts +1 -0
  20. package/dist/conversion/hub/node-support.d.ts +19 -0
  21. package/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +11 -0
  22. package/dist/conversion/hub/pipeline/compat/compat-types.d.ts +3 -0
  23. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +7 -0
  24. package/dist/conversion/hub/pipeline/hub-pipeline.js +71 -14
  25. package/dist/conversion/hub/pipeline/stages/req_process/req_process_stage1_tool_governance/index.js +4 -0
  26. package/dist/conversion/hub/pipeline/stages/resp_outbound/resp_outbound_stage1_client_remap/index.js +23 -1
  27. package/dist/conversion/hub/pipelines/inbound.d.ts +22 -0
  28. package/dist/conversion/hub/pipelines/outbound.d.ts +22 -0
  29. package/dist/conversion/hub/policy/policy-engine.d.ts +46 -0
  30. package/dist/conversion/hub/policy/policy-engine.js +176 -0
  31. package/dist/conversion/hub/policy/protocol-spec.d.ts +50 -0
  32. package/dist/conversion/hub/policy/protocol-spec.js +105 -0
  33. package/dist/conversion/hub/process/chat-process.d.ts +32 -0
  34. package/dist/conversion/hub/registry.d.ts +28 -0
  35. package/dist/conversion/hub/response/chat-response-utils.d.ts +6 -0
  36. package/dist/conversion/hub/response/provider-response.js +31 -0
  37. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +7 -0
  38. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +87 -1
  39. package/dist/conversion/hub/semantic-mappers/index.d.ts +4 -0
  40. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +21 -0
  41. package/dist/conversion/hub/standardized-bridge.d.ts +12 -0
  42. package/dist/conversion/hub/types/chat-schema.d.ts +112 -0
  43. package/dist/conversion/hub/types/errors.d.ts +5 -0
  44. package/dist/conversion/hub/types/format-envelope.d.ts +7 -0
  45. package/dist/conversion/hub/types/index.d.ts +6 -0
  46. package/dist/conversion/hub/types/json.d.ts +9 -0
  47. package/dist/conversion/hub/types/node.d.ts +31 -0
  48. package/dist/conversion/responses/responses-openai-bridge.js +263 -10
  49. package/dist/conversion/schema-validator.d.ts +7 -0
  50. package/dist/conversion/shared/args-mapping.d.ts +18 -0
  51. package/dist/conversion/shared/chat-request-filters.d.ts +9 -0
  52. package/dist/conversion/shared/errors.d.ts +1 -1
  53. package/dist/conversion/shared/gemini-tool-utils.js +61 -0
  54. package/dist/conversion/shared/jsonish.d.ts +3 -0
  55. package/dist/conversion/shared/mcp-injection.d.ts +2 -0
  56. package/dist/conversion/shared/media.d.ts +1 -0
  57. package/dist/conversion/shared/openai-message-normalize.d.ts +1 -0
  58. package/dist/conversion/shared/payload-budget.d.ts +13 -0
  59. package/dist/conversion/shared/reasoning-mapping.d.ts +5 -0
  60. package/dist/conversion/shared/responses-request-adapter.d.ts +1 -28
  61. package/dist/conversion/shared/responses-request-adapter.js +1 -430
  62. package/dist/conversion/shared/snapshot-hooks.js +112 -4
  63. package/dist/conversion/shared/tool-governor.js +8 -2
  64. package/dist/conversion/shared/tool-harvester.d.ts +31 -0
  65. package/dist/conversion/shared/tool-mapping.js +10 -29
  66. package/dist/conversion/types.d.ts +33 -0
  67. package/dist/filters/builtin/add-fields-filter.d.ts +8 -0
  68. package/dist/filters/builtin/blacklist-filter.d.ts +8 -0
  69. package/dist/filters/builtin/whitelist-filter.d.ts +8 -0
  70. package/dist/filters/engine.d.ts +16 -0
  71. package/dist/filters/special/request-tool-choice-policy.d.ts +11 -0
  72. package/dist/filters/special/response-finish-invariants.d.ts +11 -0
  73. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +13 -0
  74. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +12 -0
  75. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +13 -0
  76. package/dist/filters/special/response-tool-arguments-stringify.d.ts +9 -0
  77. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +11 -0
  78. package/dist/filters/special/tool-filter-hooks.d.ts +19 -0
  79. package/dist/filters/special/tool-post-constraints.d.ts +31 -0
  80. package/dist/filters/types.d.ts +68 -0
  81. package/dist/filters/utils/fieldmap-loader.d.ts +2 -0
  82. package/dist/filters/utils/snapshot-writer.d.ts +10 -0
  83. package/dist/guidance/index.d.ts +3 -0
  84. package/dist/guidance/index.js +78 -83
  85. package/dist/http/sse-response.d.ts +22 -0
  86. package/dist/router/virtual-router/bootstrap.d.ts +6 -0
  87. package/dist/router/virtual-router/bootstrap.js +49 -5
  88. package/dist/router/virtual-router/classifier.d.ts +10 -0
  89. package/dist/router/virtual-router/engine-selection.js +147 -15
  90. package/dist/router/virtual-router/engine.js +177 -31
  91. package/dist/router/virtual-router/error-center.d.ts +10 -0
  92. package/dist/router/virtual-router/features.d.ts +3 -0
  93. package/dist/router/virtual-router/routing-instructions.d.ts +23 -1
  94. package/dist/router/virtual-router/routing-instructions.js +120 -30
  95. package/dist/router/virtual-router/types.d.ts +11 -0
  96. package/dist/servertool/engine.js +189 -16
  97. package/dist/servertool/handlers/apply-patch-guard.js +269 -0
  98. package/dist/servertool/handlers/exec-command-guard.js +558 -0
  99. package/dist/servertool/handlers/followup-message-trimmer.d.ts +16 -0
  100. package/dist/servertool/handlers/followup-message-trimmer.js +198 -0
  101. package/dist/servertool/handlers/followup-request-builder.d.ts +17 -0
  102. package/dist/servertool/handlers/followup-request-builder.js +122 -0
  103. package/dist/servertool/handlers/gemini-empty-reply-continue.js +252 -51
  104. package/dist/servertool/handlers/iflow-model-error-retry.js +12 -22
  105. package/dist/servertool/handlers/stop-message-auto.js +237 -75
  106. package/dist/servertool/handlers/vision.js +15 -27
  107. package/dist/servertool/handlers/web-search.js +17 -43
  108. package/dist/servertool/server-side-tools.d.ts +3 -0
  109. package/dist/servertool/server-side-tools.js +3 -0
  110. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +2 -1
  111. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +80 -0
  112. package/dist/sse/json-to-sse/event-generators/chat.d.ts +55 -0
  113. package/dist/sse/json-to-sse/event-generators/responses.d.ts +99 -0
  114. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +2 -1
  115. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +80 -0
  116. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +1 -1
  117. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +2 -2
  118. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +1 -1
  119. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
  120. package/dist/sse/shared/chat-serializer.d.ts +4 -0
  121. package/dist/sse/shared/constants.d.ts +272 -0
  122. package/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +1 -1
  123. package/dist/sse/shared/serializers/base-serializer.d.ts +158 -0
  124. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
  125. package/dist/sse/shared/serializers/gemini-event-serializer.d.ts +1 -1
  126. package/dist/sse/shared/serializers/index.d.ts +2 -1
  127. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +123 -0
  128. package/dist/sse/shared/serializers/types.d.ts +51 -0
  129. package/dist/sse/shared/utils.d.ts +254 -0
  130. package/dist/sse/shared/writer.d.ts +2 -2
  131. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +1 -1
  132. package/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +1 -1
  133. package/dist/sse/sse-to-json/builders/response-builder.d.ts +1 -1
  134. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +2 -1
  135. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +2 -1
  136. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
  137. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -1
  138. package/dist/sse/types/chat-types.d.ts +1 -1
  139. package/dist/sse/types/responses-types.d.ts +1 -1
  140. package/dist/tools/apply-patch/execution-capturer.d.ts +13 -0
  141. package/dist/tools/apply-patch/execution-capturer.js +158 -0
  142. package/dist/tools/apply-patch/regression-capturer.d.ts +1 -0
  143. package/dist/tools/apply-patch/regression-capturer.js +5 -4
  144. package/dist/tools/apply-patch/structured.js +109 -13
  145. package/dist/tools/apply-patch/validator.js +261 -17
  146. package/dist/tools/tool-registry.d.ts +8 -0
  147. package/dist/tools/tool-registry.js +2 -1
  148. package/package.json +4 -4
  149. package/dist/conversion/compat/actions/apply-patch-format-fixer.js +0 -233
  150. package/dist/conversion/config/compat-profiles.json +0 -38
  151. package/dist/conversion/hub/response/server-side-tools.d.ts +0 -26
  152. package/dist/conversion/hub/response/server-side-tools.js +0 -383
  153. package/dist/conversion/shared/bridge-conversation-store.d.ts +0 -41
  154. package/dist/conversion/shared/bridge-conversation-store.js +0 -279
  155. package/dist/conversion/shared/bridge-request-adapter.d.ts +0 -28
  156. package/dist/conversion/shared/bridge-request-adapter.js +0 -430
  157. package/dist/conversion/shared/responses-id-utils.js +0 -42
  158. package/dist/conversion/shared/responses-instructions.js +0 -113
  159. package/dist/conversion/shared/responses-message-utils.d.ts +0 -15
  160. package/dist/conversion/shared/responses-message-utils.js +0 -206
  161. package/dist/conversion/shared/responses-metadata.js +0 -1
  162. package/dist/conversion/shared/responses-output-utils.d.ts +0 -7
  163. package/dist/conversion/shared/responses-output-utils.js +0 -108
  164. package/dist/conversion/shared/responses-types.d.ts +0 -33
  165. package/dist/conversion/shared/tool-normalizers.d.ts +0 -4
  166. package/dist/conversion/shared/tool-normalizers.js +0 -84
  167. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -13
  168. package/dist/filters/special/request-streaming-to-nonstreaming.js +0 -39
  169. package/dist/filters/special/response-apply-patch-toon-decode.d.ts +0 -23
  170. package/dist/filters/special/response-apply-patch-toon-decode.js +0 -460
  171. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  172. package/dist/filters/special/response-tool-arguments-toon-decode.js +0 -154
  173. package/dist/servertool/flow-types.d.ts +0 -40
  174. package/dist/servertool/flow-types.js +0 -1
  175. package/dist/servertool/orchestration-types.d.ts +0 -33
  176. package/dist/servertool/orchestration-types.js +0 -1
  177. package/dist/servertool/vision-tool.d.ts +0 -2
  178. package/dist/servertool/vision-tool.js +0 -185
  179. package/dist/tools/patch-args-normalizer.d.ts +0 -15
  180. package/dist/tools/patch-args-normalizer.js +0 -472
  181. package/dist/utils/toon.d.ts +0 -4
  182. package/dist/utils/toon.js +0 -75
  183. /package/dist/{conversion/compat/actions/apply-patch-format-fixer.d.ts → servertool/handlers/apply-patch-guard.d.ts} +0 -0
  184. /package/dist/{conversion/shared/responses-types.js → servertool/handlers/exec-command-guard.d.ts} +0 -0
@@ -0,0 +1,158 @@
1
+ /**
2
+ * 基础事件序列化器接口
3
+ * 定义统一的序列化/反序列化规范
4
+ */
5
+ /**
6
+ * 通用事件序列化器接口
7
+ * @template TEvent 事件类型
8
+ */
9
+ export interface EventSerializer<TEvent> {
10
+ /**
11
+ * 将事件对象序列化为SSE wire格式字符串
12
+ * @param event 要序列化的事件对象
13
+ * @returns SSE wire格式的字符串
14
+ */
15
+ serializeToWire(event: TEvent): string;
16
+ /**
17
+ * 从SSE wire格式字符串反序列化为事件对象
18
+ * @param wireData SSE wire格式的字符串
19
+ * @returns 反序列化后的事件对象
20
+ */
21
+ deserializeFromWire(wireData: string): TEvent;
22
+ /**
23
+ * 验证SSE wire格式是否有效
24
+ * @param wireData 要验证的SSE wire格式字符串
25
+ * @returns 格式是否有效
26
+ */
27
+ validateWireFormat(wireData: string): boolean;
28
+ }
29
+ /**
30
+ * 序列化选项配置
31
+ */
32
+ export interface SerializationOptions {
33
+ /**
34
+ * 是否包含时间戳
35
+ */
36
+ includeTimestamp?: boolean;
37
+ /**
38
+ * 是否包含事件ID
39
+ */
40
+ includeEventId?: boolean;
41
+ /**
42
+ * 自定义事件ID生成器
43
+ */
44
+ eventIdGenerator?: () => string;
45
+ /**
46
+ * JSON序列化配置
47
+ */
48
+ jsonReplacer?: (key: string, value: any) => any;
49
+ /**
50
+ * JSON反序列化配置
51
+ */
52
+ jsonReviver?: (key: string, value: any) => any;
53
+ }
54
+ /**
55
+ * 基础事件序列化器抽象类
56
+ * 提供通用的序列化功能实现
57
+ */
58
+ export declare abstract class BaseEventSerializer<TEvent> implements EventSerializer<TEvent> {
59
+ protected options: SerializationOptions;
60
+ constructor(options?: SerializationOptions);
61
+ /**
62
+ * 序列化事件为SSE wire格式
63
+ */
64
+ serializeToWire(event: TEvent): string;
65
+ /**
66
+ * 从SSE wire格式反序列化事件
67
+ */
68
+ deserializeFromWire(wireData: string): TEvent;
69
+ /**
70
+ * 验证SSE wire格式
71
+ */
72
+ validateWireFormat(wireData: string): boolean;
73
+ /**
74
+ * 生成当前时间戳
75
+ */
76
+ protected generateTimestamp(): string;
77
+ /**
78
+ * 序列化数据
79
+ */
80
+ protected serializeData(data: any): string;
81
+ /**
82
+ * 反序列化数据
83
+ */
84
+ protected deserializeData(dataStr: string): any;
85
+ /**
86
+ * 从事件对象中提取事件类型
87
+ */
88
+ protected abstract extractEventType(event: TEvent): string;
89
+ /**
90
+ * 从事件对象中提取事件数据
91
+ */
92
+ protected abstract extractEventData(event: TEvent): any;
93
+ /**
94
+ * 从事件对象中提取时间戳
95
+ */
96
+ protected extractTimestamp(event: TEvent): string | null;
97
+ /**
98
+ * 从事件对象中提取事件ID
99
+ */
100
+ protected extractEventId(event: TEvent): string | null;
101
+ /**
102
+ * 创建事件对象
103
+ */
104
+ protected abstract createEvent(eventType: string, eventData: any, timestamp?: string | null, eventId?: string | null): TEvent;
105
+ }
106
+ /**
107
+ * 序列化错误类
108
+ */
109
+ export declare class SerializationError extends Error {
110
+ readonly cause?: Error;
111
+ readonly eventData?: any;
112
+ constructor(message: string, cause?: Error, eventData?: any);
113
+ }
114
+ /**
115
+ * 序列化结果
116
+ */
117
+ export interface SerializationResult {
118
+ /**
119
+ * 序列化后的SSE wire格式字符串
120
+ */
121
+ wireData: string;
122
+ /**
123
+ * 序列化统计信息
124
+ */
125
+ stats: {
126
+ /**
127
+ * 序列化耗时(毫秒)
128
+ */
129
+ duration: number;
130
+ /**
131
+ * 序列化数据大小(字节)
132
+ */
133
+ size: number;
134
+ /**
135
+ * 是否成功
136
+ */
137
+ success: boolean;
138
+ /**
139
+ * 错误信息(如果有)
140
+ */
141
+ error?: string;
142
+ };
143
+ }
144
+ /**
145
+ * 批量序列化工具
146
+ */
147
+ export declare class BatchSerializer<TEvent> {
148
+ private serializer;
149
+ constructor(serializer: EventSerializer<TEvent>);
150
+ /**
151
+ * 批量序列化事件
152
+ */
153
+ serializeBatch(events: TEvent[]): Promise<SerializationResult[]>;
154
+ /**
155
+ * 批量反序列化事件
156
+ */
157
+ deserializeBatch(wireDataArray: string[]): Promise<TEvent[]>;
158
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Chat协议事件序列化适配器
3
+ * 将内部ChatSseEvent对象转换为真实的SSE wire格式
4
+ */
5
+ import type { ChatSseEvent } from '../../types/chat-types.js';
6
+ import type { EventSerializer } from './base-serializer.js';
7
+ /**
8
+ * Chat协议SSE事件序列化器
9
+ * 负责将内部事件对象转换为符合SSE标准的文本格式
10
+ */
11
+ export declare class ChatEventSerializer implements EventSerializer<ChatSseEvent> {
12
+ /**
13
+ * 将Chat事件序列化为SSE wire格式
14
+ */
15
+ serializeToWire(event: ChatSseEvent): string;
16
+ /**
17
+ * 从SSE wire格式反序列化为Chat事件
18
+ */
19
+ deserializeFromWire(wireData: string): ChatSseEvent;
20
+ /**
21
+ * 验证SSE wire格式
22
+ */
23
+ validateWireFormat(wireData: string): boolean;
24
+ /**
25
+ * 序列化Chat chunk事件
26
+ * 格式: event: chat_chunk\ndata: {...}\n\n
27
+ */
28
+ private serializeChatChunk;
29
+ /**
30
+ * 序列化Chat完成事件
31
+ * 格式: event: chat.done\ndata: {"type":"done",...}\n\n
32
+ */
33
+ private serializeChatDone;
34
+ /**
35
+ * 序列化Chat错误事件
36
+ */
37
+ private serializeChatError;
38
+ /**
39
+ * 序列化心跳事件
40
+ */
41
+ private serializeHeartbeat;
42
+ /**
43
+ * 反序列化Chat chunk事件
44
+ */
45
+ private deserializeChatChunk;
46
+ /**
47
+ * 反序列化Chat完成事件
48
+ */
49
+ private deserializeChatDone;
50
+ /**
51
+ * 反序列化Chat错误事件
52
+ */
53
+ private deserializeChatError;
54
+ /**
55
+ * 反序列化心跳事件
56
+ */
57
+ private deserializeHeartbeat;
58
+ /**
59
+ * 从wire数据中提取时间戳
60
+ */
61
+ private extractTimestamp;
62
+ /**
63
+ * 创建标准Chat chunk事件
64
+ */
65
+ static createChunkEvent(chunkData: any, timestamp?: number): ChatSseEvent;
66
+ /**
67
+ * 创建标准Chat完成事件
68
+ */
69
+ static createDoneEvent(requestId: string, totalEvents: number, timestamp?: number): ChatSseEvent;
70
+ /**
71
+ * 创建标准Chat错误事件
72
+ */
73
+ static createErrorEvent(error: Error, requestId: string, timestamp?: number): ChatSseEvent;
74
+ /**
75
+ * 创建心跳事件
76
+ */
77
+ static createHeartbeatEvent(timestamp?: number): ChatSseEvent;
78
+ }
79
+ /**
80
+ * 默认Chat事件序列化器实例
81
+ */
82
+ export declare const defaultChatEventSerializer: ChatEventSerializer;
@@ -1,2 +1,2 @@
1
- import { GeminiSseEvent } from '../../types/index.js';
1
+ import type { GeminiSseEvent } from '../../types/index.js';
2
2
  export declare function serializeGeminiEventToSSE(event: GeminiSseEvent): string;
@@ -2,7 +2,8 @@
2
2
  * 事件序列化适配器模块导出
3
3
  * 提供Chat和Responses协议的事件序列化功能
4
4
  */
5
- import { BatchSerializer, EventSerializer, SerializationOptions } from './base-serializer.js';
5
+ import { BatchSerializer } from './base-serializer.js';
6
+ import type { EventSerializer, SerializationOptions } from './base-serializer.js';
6
7
  import { ChatEventSerializer } from './chat-event-serializer.js';
7
8
  import { ResponsesEventSerializer } from './responses-event-serializer.js';
8
9
  export type { SerializationOptions, ChatSerializationOptions, ResponsesSerializationOptions, EventSerializer, ChatEventSerializer, ResponsesEventSerializer } from './types.js';
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Responses协议事件序列化适配器
3
+ * 将内部ResponsesSseEvent对象转换为真实的SSE wire格式
4
+ */
5
+ import type { ResponsesSseEvent } from '../../types/responses-types.js';
6
+ import type { EventSerializer } from './base-serializer.js';
7
+ /**
8
+ * Responses协议SSE事件序列化器
9
+ * 负责将内部事件对象转换为符合LMStudio/官方SDK习惯的SSE格式
10
+ */
11
+ export declare class ResponsesEventSerializer implements EventSerializer<ResponsesSseEvent> {
12
+ /**
13
+ * 将Responses事件序列化为SSE wire格式
14
+ */
15
+ serializeToWire(event: ResponsesSseEvent): string;
16
+ /**
17
+ * 从SSE wire格式反序列化为Responses事件
18
+ */
19
+ deserializeFromWire(wireData: string): ResponsesSseEvent;
20
+ /**
21
+ * 验证SSE wire格式
22
+ */
23
+ validateWireFormat(wireData: string): boolean;
24
+ private decorate;
25
+ /**
26
+ * 序列化response.created事件
27
+ * 格式: event: response.created\ndata: {"response": {...}}\n\n
28
+ */
29
+ private serializeResponseCreated;
30
+ /**
31
+ * 序列化response.in_progress事件
32
+ */
33
+ private serializeResponseInProgress;
34
+ /**
35
+ * 序列化response.reasoning_text.delta事件
36
+ */
37
+ private serializeReasoningTextDelta;
38
+ /**
39
+ * 序列化response.reasoning_text.done事件
40
+ */
41
+ private serializeReasoningTextDone;
42
+ /**
43
+ * 序列化response.content_part.added事件
44
+ */
45
+ private serializeContentPartAdded;
46
+ /**
47
+ * 序列化response.content_part.done事件
48
+ */
49
+ private serializeContentPartDone;
50
+ /**
51
+ * 序列化response.output_item.added事件
52
+ */
53
+ private serializeOutputItemAdded;
54
+ /**
55
+ * 序列化response.output_item.done事件
56
+ */
57
+ private serializeOutputItemDone;
58
+ /**
59
+ * 序列化response.function_call_arguments.delta事件
60
+ */
61
+ private serializeFunctionCallArgumentsDelta;
62
+ /**
63
+ * 序列化response.function_call_arguments.done事件
64
+ */
65
+ private serializeFunctionCallArgumentsDone;
66
+ /**
67
+ * 序列化response.required_action事件
68
+ */
69
+ private serializeRequiredAction;
70
+ /**
71
+ * 序列化response.completed事件
72
+ */
73
+ private serializeResponseCompleted;
74
+ /**
75
+ * 序列化response.done事件
76
+ */
77
+ private serializeResponseDone;
78
+ /**
79
+ * 序列化response.error事件
80
+ */
81
+ private serializeResponseError;
82
+ /**
83
+ * 序列化response.cancelled事件
84
+ */
85
+ private serializeResponseCancelled;
86
+ /**
87
+ * 构建标准SSE事件格式
88
+ */
89
+ private buildSSEEvent;
90
+ /**
91
+ * 创建标准response.created事件
92
+ */
93
+ static createResponseCreatedEvent(response: any, timestamp?: number): ResponsesSseEvent;
94
+ /**
95
+ * 创建标准response.in_progress事件
96
+ */
97
+ static createResponseInProgressEvent(timestamp?: number): ResponsesSseEvent;
98
+ /**
99
+ * 创建标准response.completed事件
100
+ */
101
+ static createResponseCompletedEvent(responseId: string, status: string, usage?: any, timestamp?: number): ResponsesSseEvent;
102
+ /**
103
+ * 创建标准response.required_action事件
104
+ */
105
+ static createRequiredActionEvent(toolCalls: any[], timestamp?: number): ResponsesSseEvent;
106
+ /**
107
+ * 创建标准response.done事件
108
+ */
109
+ static createResponseDoneEvent(requestId: string, totalEvents: number, timestamp?: number): ResponsesSseEvent;
110
+ /**
111
+ * 创建标准response.error事件
112
+ */
113
+ static createResponseErrorEvent(error: Error, requestId: string, timestamp?: number): ResponsesSseEvent;
114
+ private buildEventPayload;
115
+ /**
116
+ * 解析 wire 中的时间戳字符串
117
+ */
118
+ private parseTimestamp;
119
+ }
120
+ /**
121
+ * 默认Responses事件序列化器实例
122
+ */
123
+ export declare const defaultResponsesEventSerializer: ResponsesEventSerializer;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * 序列化器相关类型定义
3
+ */
4
+ export interface SerializationOptions {
5
+ /** 是否启用格式化 */
6
+ pretty?: boolean;
7
+ /** 是否启用压缩 */
8
+ compress?: boolean;
9
+ /** 字符编码 */
10
+ encoding?: 'utf8' | 'ascii' | 'base64';
11
+ /** 自定义分隔符 */
12
+ delimiter?: string;
13
+ }
14
+ export interface ChatSerializationOptions extends SerializationOptions {
15
+ /** 是否包含系统指纹 */
16
+ includeSystemFingerprint?: boolean;
17
+ /** 是否包含logprobs */
18
+ includeLogprobs?: boolean;
19
+ /** 自定义事件映射 */
20
+ eventMapping?: Record<string, string>;
21
+ }
22
+ export interface ResponsesSerializationOptions extends SerializationOptions {
23
+ /** 是否包含元数据 */
24
+ includeMetadata?: boolean;
25
+ /** 是否包含统计信息 */
26
+ includeStats?: boolean;
27
+ /** 自定义事件过滤 */
28
+ eventFilter?: (event: any) => boolean;
29
+ }
30
+ export interface EventSerializer<TOptions extends SerializationOptions = SerializationOptions> {
31
+ /** 序列化单个事件 */
32
+ serialize(event: any, options?: TOptions): string;
33
+ /** 反序列化单个事件 */
34
+ deserialize(data: string, options?: TOptions): any;
35
+ /** 批量序列化 */
36
+ serializeBatch(events: any[], options?: TOptions): string[];
37
+ /** 批量反序列化 */
38
+ deserializeBatch(data: string[], options?: TOptions): any[];
39
+ }
40
+ export interface ChatEventSerializer extends EventSerializer<ChatSerializationOptions> {
41
+ /** 序列化Chat Completion Chunk */
42
+ serializeChatChunk(chunk: any, options?: ChatSerializationOptions): string;
43
+ /** 反序列化Chat Completion Chunk */
44
+ deserializeChatChunk(data: string, options?: ChatSerializationOptions): any;
45
+ }
46
+ export interface ResponsesEventSerializer extends EventSerializer<ResponsesSerializationOptions> {
47
+ /** 序列化Responses事件 */
48
+ serializeResponsesEvent(event: any, options?: ResponsesSerializationOptions): string;
49
+ /** 反序列化Responses事件 */
50
+ deserializeResponsesEvent(data: string, options?: ResponsesSerializationOptions): any;
51
+ }
@@ -0,0 +1,254 @@
1
+ /**
2
+ * 共享工具函数
3
+ * 提供JSON↔SSE双向转换中常用的工具函数
4
+ */
5
+ import { Readable } from 'stream';
6
+ /**
7
+ * 字符串工具
8
+ */
9
+ export declare class StringUtils {
10
+ /**
11
+ * 安全地将值转换为字符串
12
+ */
13
+ static safeStringify(value: unknown): string;
14
+ /**
15
+ * 安全地解析JSON字符串
16
+ */
17
+ static safeParse<T = any>(text: string): T | null;
18
+ /**
19
+ * 检查字符串是否为空或只包含空白字符
20
+ */
21
+ static isEmpty(str: string): boolean;
22
+ /**
23
+ * 检查字符串是否为有效的JSON
24
+ */
25
+ static isValidJson(str: string): boolean;
26
+ /**
27
+ * 截断字符串到指定长度
28
+ */
29
+ static truncate(str: string, maxLength: number, suffix?: string): string;
30
+ /**
31
+ * 生成随机字符串
32
+ */
33
+ static random(length?: number): string;
34
+ /**
35
+ * 分割字符串为块
36
+ */
37
+ static chunkString(text: string, chunkSize: number, boundary: RegExp): string[];
38
+ }
39
+ /**
40
+ * 对象工具
41
+ */
42
+ export declare class ObjectUtils {
43
+ /**
44
+ * 深度冻结对象
45
+ */
46
+ static deepFreeze<T>(obj: T): T;
47
+ /**
48
+ * 深度克隆对象
49
+ */
50
+ static deepClone<T>(obj: T): T;
51
+ /**
52
+ * 安全地获取嵌套对象属性
53
+ */
54
+ static get(obj: any, path: string, defaultValue?: any): any;
55
+ /**
56
+ * 安全地设置嵌套对象属性
57
+ */
58
+ static set(obj: any, path: string, value: any): void;
59
+ /**
60
+ * 检查对象是否为空
61
+ */
62
+ static isEmpty(obj: any): boolean;
63
+ /**
64
+ * 合并对象
65
+ */
66
+ static merge<T extends Record<string, any>>(target: T, source: Partial<T>): T;
67
+ }
68
+ /**
69
+ * 数组工具
70
+ */
71
+ export declare class ArrayUtils {
72
+ /**
73
+ * 数组去重
74
+ */
75
+ static unique<T>(arr: T[]): T[];
76
+ /**
77
+ * 分组数组
78
+ */
79
+ static groupBy<T, K extends string | number>(arr: T[], keyFn: (item: T) => K): Record<K, T[]>;
80
+ /**
81
+ * 分块数组
82
+ */
83
+ static chunk<T>(arr: T[], size: number): T[][];
84
+ /**
85
+ * 扁平化数组
86
+ */
87
+ static flatten<T>(arr: (T | T[])[]): T[];
88
+ /**
89
+ * 找到数组中的差异
90
+ */
91
+ static diff<T>(arr1: T[], arr2: T[]): {
92
+ added: T[];
93
+ removed: T[];
94
+ common: T[];
95
+ };
96
+ }
97
+ /**
98
+ * 时间工具
99
+ */
100
+ export declare class TimeUtils {
101
+ /**
102
+ * 获取当前时间戳(毫秒)
103
+ */
104
+ static now(): number;
105
+ /**
106
+ * 获取当前时间戳(秒)
107
+ */
108
+ static nowSeconds(): number;
109
+ /**
110
+ * 格式化时间戳
111
+ */
112
+ static formatTimestamp(timestamp: number, format?: string): string;
113
+ /**
114
+ * 延迟指定时间
115
+ */
116
+ static delay(ms: number): Promise<void>;
117
+ /**
118
+ * 带超时的Promise
119
+ */
120
+ static timeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
121
+ }
122
+ /**
123
+ * 验证工具
124
+ */
125
+ export declare class ValidationUtils {
126
+ /**
127
+ * 检查值是否为对象
128
+ */
129
+ static isObject(value: unknown): value is Record<string, unknown>;
130
+ /**
131
+ * 检查值是否为有效的ID
132
+ */
133
+ static isValidId(value: string, pattern: RegExp): boolean;
134
+ /**
135
+ * 验证序列号
136
+ */
137
+ static isValidSequenceNumber(value: number, max?: number): boolean;
138
+ /**
139
+ * 验证时间戳
140
+ */
141
+ static isValidTimestamp(value: number): boolean;
142
+ /**
143
+ * 验证JSON结构
144
+ */
145
+ static validateJsonStructure(obj: any, schema: any): {
146
+ valid: boolean;
147
+ errors: string[];
148
+ };
149
+ }
150
+ /**
151
+ * 流工具
152
+ */
153
+ export declare class StreamUtils {
154
+ /**
155
+ * 创建可读流
156
+ */
157
+ static createReadable<T>(data: T[]): Readable;
158
+ /**
159
+ * 将异步生成器转换为流
160
+ */
161
+ static asyncGeneratorToStream<T>(generator: AsyncGenerator<T>): Readable;
162
+ /**
163
+ * 将流转换为数组
164
+ */
165
+ static streamToArray<T>(stream: Readable): Promise<T[]>;
166
+ /**
167
+ * 管道流超时
168
+ */
169
+ static pipeWithTimeout<T>(source: Readable, destination: NodeJS.WritableStream, timeoutMs: number): Promise<void>;
170
+ }
171
+ /**
172
+ * ID生成工具
173
+ */
174
+ export declare class IdUtils {
175
+ /**
176
+ * 生成请求ID
177
+ */
178
+ static generateRequestId(): string;
179
+ /**
180
+ * 生成响应ID
181
+ */
182
+ static generateResponseId(): string;
183
+ /**
184
+ * 生成推理项目ID
185
+ */
186
+ static generateReasoningId(): string;
187
+ /**
188
+ * 生成函数调用ID
189
+ */
190
+ static generateFunctionCallId(): string;
191
+ /**
192
+ * 生成工具调用ID
193
+ */
194
+ static generateToolCallId(): string;
195
+ /**
196
+ * 生成消息ID
197
+ */
198
+ static generateMessageId(): string;
199
+ }
200
+ /**
201
+ * 错误处理工具
202
+ */
203
+ export declare class ErrorUtils {
204
+ /**
205
+ * 创建标准错误
206
+ */
207
+ static createError(message: string, code: string, context?: any): Error & {
208
+ code: string;
209
+ context?: any;
210
+ };
211
+ /**
212
+ * 包装错误
213
+ */
214
+ static wrapError(error: unknown, context?: string): Error;
215
+ /**
216
+ * 判断是否为超时错误
217
+ */
218
+ static isTimeoutError(error: Error): boolean;
219
+ /**
220
+ * 判断是否为网络错误
221
+ */
222
+ static isNetworkError(error: Error): boolean;
223
+ }
224
+ /**
225
+ * 正则表达式模式
226
+ */
227
+ export declare const REGEX_PATTERNS: {
228
+ readonly WORD_BOUNDARY: RegExp;
229
+ };
230
+ /**
231
+ * 性能监控工具
232
+ */
233
+ export declare class PerformanceUtils {
234
+ /**
235
+ * 创建性能计时器
236
+ */
237
+ static createTimer(): () => number;
238
+ /**
239
+ * 测量函数执行时间
240
+ */
241
+ static measureTime<T>(fn: () => T | Promise<T>): Promise<{
242
+ result: T;
243
+ duration: number;
244
+ }>;
245
+ /**
246
+ * 创建内存使用快照
247
+ */
248
+ static createMemorySnapshot(): {
249
+ rss: number;
250
+ heapUsed: number;
251
+ heapTotal: number;
252
+ external: number;
253
+ };
254
+ }
@@ -3,8 +3,8 @@
3
3
  * 处理backpressure、超时、心跳、错误处理等通用流管理逻辑
4
4
  */
5
5
  import { PassThrough } from 'stream';
6
- import { BaseSseEvent } from '../types/core-interfaces.js';
7
- import { ChatSseEvent, ResponsesSseEvent, AnthropicSseEvent, GeminiSseEvent } from '../types/index.js';
6
+ import type { BaseSseEvent } from '../types/core-interfaces.js';
7
+ import type { ChatSseEvent, ResponsesSseEvent, AnthropicSseEvent, GeminiSseEvent } from '../types/index.js';
8
8
  export interface StreamWriterConfig {
9
9
  timeoutMs?: number;
10
10
  enableHeartbeat?: boolean;
@@ -1,4 +1,4 @@
1
- import { AnthropicMessageResponse, SseToAnthropicJsonOptions } from '../types/index.js';
1
+ import type { AnthropicMessageResponse, SseToAnthropicJsonOptions } from '../types/index.js';
2
2
  export declare class AnthropicSseToJsonConverter {
3
3
  private config;
4
4
  private contexts;