@jsonstudio/llms 0.4.3 → 0.4.4

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 (416) hide show
  1. package/README.md +3 -1
  2. package/dist/bridge/routecodex-adapter.js +6 -3
  3. package/dist/config-unified/enhanced-path-resolver.js +14 -6
  4. package/dist/config-unified/unified-config.js +103 -59
  5. package/dist/conversion/codec-registry.js +4 -2
  6. package/dist/conversion/hub/pipeline/hub-pipeline.js +4 -5
  7. package/dist/conversion/hub/process/chat-process.js +258 -41
  8. package/dist/conversion/hub/response/provider-response.js +8 -2
  9. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  10. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  11. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  12. package/dist/conversion/hub/tool-governance/index.js +2 -0
  13. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  14. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  15. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  16. package/dist/conversion/index.d.ts +1 -0
  17. package/dist/conversion/index.js +1 -0
  18. package/dist/conversion/responses/responses-openai-bridge.js +5 -3
  19. package/dist/sse/sse-to-json/builders/response-builder.js +2 -1
  20. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
  21. package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
  22. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  23. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  24. package/dist/sse/types/chat-types.d.ts +9 -6
  25. package/dist/sse/types/conversion-context.d.ts +14 -11
  26. package/dist/sse/types/core-interfaces.d.ts +6 -2
  27. package/dist/sse/types/index.d.ts +1 -1
  28. package/dist/sse/types/responses-types.d.ts +20 -20
  29. package/dist/sse/types/sse-events.d.ts +4 -3
  30. package/dist/sse/types/stream-state.d.ts +34 -39
  31. package/dist/sse/types/utility-types.d.ts +47 -43
  32. package/dist/sse/types/utility-types.js +10 -13
  33. package/dist/tools/tool-registry.js +156 -98
  34. package/package.json +7 -7
  35. package/dist/api/index.d.ts +0 -10
  36. package/dist/api/index.js +0 -11
  37. package/dist/api/llmswitch-config.d.ts +0 -15
  38. package/dist/api/llmswitch-config.js +0 -415
  39. package/dist/api/llmswitch-types.d.ts +0 -412
  40. package/dist/api/llmswitch-types.js +0 -60
  41. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  42. package/dist/config/index.d.ts +0 -3
  43. package/dist/config/index.js +0 -5
  44. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  45. package/dist/config-unified/unified-config.d.ts +0 -26
  46. package/dist/conversion/codec-registry.d.ts +0 -10
  47. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
  48. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  49. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  50. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  51. package/dist/conversion/config/config-manager.d.ts +0 -212
  52. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  53. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  54. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  55. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  56. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  57. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  58. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  59. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  60. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  61. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  62. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  63. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
  64. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  65. package/dist/conversion/conversion-v3/config/index.js +0 -5
  66. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  67. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  68. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  69. package/dist/conversion/conversion-v3/index.js +0 -17
  70. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  71. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  72. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  73. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  74. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  75. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  76. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  77. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  78. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  79. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  80. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  81. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  82. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  83. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  84. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  85. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  86. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  87. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  88. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  89. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  90. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  91. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  92. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  93. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  94. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  95. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  96. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  97. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  98. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  99. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  100. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  101. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  102. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  103. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  104. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  105. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  106. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  107. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  108. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  109. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  110. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  111. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  112. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
  113. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
  114. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  115. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  116. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  117. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  118. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  119. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  120. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  121. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  122. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  123. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  124. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  125. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  126. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  127. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  128. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  129. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  130. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  131. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  132. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  133. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  134. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  135. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  136. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  137. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  138. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  139. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  140. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  141. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  142. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  143. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  144. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  145. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  146. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  147. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  148. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  149. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  150. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  151. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  152. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  153. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  154. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  155. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  156. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  157. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  158. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  159. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  160. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  161. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  162. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  163. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  164. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  165. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  166. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  167. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  168. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  169. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  170. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  171. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  172. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  173. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  174. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  175. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  176. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  177. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  178. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  179. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  180. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  181. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  182. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  183. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  184. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  185. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  186. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  187. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  188. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  189. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  190. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  191. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  192. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  193. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  194. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  195. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  196. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  197. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  198. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  199. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  200. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  201. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  202. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  203. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  204. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  205. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  206. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  207. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  208. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  209. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  210. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  211. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  212. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  213. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  214. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  215. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  216. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  217. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  218. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  219. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  220. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  221. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  222. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  223. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  224. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  225. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  226. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  227. package/dist/conversion/conversion-v3/types/index.js +0 -11
  228. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  229. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  230. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  231. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  232. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  233. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  234. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  235. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  236. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  237. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  238. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  239. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  240. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  241. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  242. package/dist/conversion/hub/config/types.d.ts +0 -26
  243. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  244. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  245. package/dist/conversion/hub/core/index.d.ts +0 -3
  246. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  247. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  248. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  249. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  250. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  251. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
  252. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  253. package/dist/conversion/hub/node-support.d.ts +0 -19
  254. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  255. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  256. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  257. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  258. package/dist/conversion/hub/registry.d.ts +0 -28
  259. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  260. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  261. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  262. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  263. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  264. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  265. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  266. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  267. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  268. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  269. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  270. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  271. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  272. package/dist/conversion/hub/types/errors.d.ts +0 -5
  273. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  274. package/dist/conversion/hub/types/index.d.ts +0 -6
  275. package/dist/conversion/hub/types/json.d.ts +0 -9
  276. package/dist/conversion/hub/types/node.d.ts +0 -31
  277. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  278. package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
  279. package/dist/conversion/schema-validator.d.ts +0 -7
  280. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  281. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  282. package/dist/conversion/shared/jsonish.d.ts +0 -3
  283. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  284. package/dist/conversion/shared/media.d.ts +0 -1
  285. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  286. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  287. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  288. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  289. package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
  290. package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
  291. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  292. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  293. package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
  294. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  295. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  296. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  297. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  298. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  299. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  300. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  301. package/dist/conversion/shared/tool-mapping.d.ts +0 -10
  302. package/dist/conversion/shared/tooling.d.ts +0 -26
  303. package/dist/conversion/types.d.ts +0 -33
  304. package/dist/core/index.d.ts +0 -6
  305. package/dist/core/index.js +0 -9
  306. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  307. package/dist/core/llmswitch-engine-v2.js +0 -649
  308. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  309. package/dist/core/llmswitch-factory-v2.js +0 -521
  310. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  311. package/dist/endpoints/base-endpoint-handler.js +0 -545
  312. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  313. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  314. package/dist/endpoints/endpoint-router.d.ts +0 -127
  315. package/dist/endpoints/endpoint-router.js +0 -438
  316. package/dist/endpoints/index.d.ts +0 -13
  317. package/dist/endpoints/index.js +0 -11
  318. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  319. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  320. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  321. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  322. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  323. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  324. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  325. package/dist/filters/engine.d.ts +0 -16
  326. package/dist/filters/index.d.ts +0 -19
  327. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  328. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  329. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  330. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  331. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  332. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  333. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  334. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  335. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  336. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  337. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  338. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  339. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  340. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  341. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  342. package/dist/filters/types.d.ts +0 -68
  343. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  344. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  345. package/dist/guidance/index.d.ts +0 -3
  346. package/dist/hooks/hooks-integration.d.ts +0 -161
  347. package/dist/hooks/hooks-integration.js +0 -519
  348. package/dist/hooks/index.d.ts +0 -10
  349. package/dist/hooks/index.js +0 -13
  350. package/dist/html-to-markdown.d.ts +0 -5
  351. package/dist/html-to-markdown.js +0 -66
  352. package/dist/http/sse-response.d.ts +0 -22
  353. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  354. package/dist/router/virtual-router/classifier.d.ts +0 -10
  355. package/dist/router/virtual-router/engine.d.ts +0 -35
  356. package/dist/router/virtual-router/error-center.d.ts +0 -10
  357. package/dist/router/virtual-router/features.d.ts +0 -3
  358. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  359. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  360. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  361. package/dist/router/virtual-router/types.d.ts +0 -206
  362. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  363. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  364. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  365. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  366. package/dist/sse/json-to-sse/index.d.ts +0 -6
  367. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  368. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  369. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  370. package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
  371. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  372. package/dist/sse/shared/constants.d.ts +0 -272
  373. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  374. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  375. package/dist/sse/shared/serializers/index.d.ts +0 -39
  376. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  377. package/dist/sse/shared/serializers/types.d.ts +0 -51
  378. package/dist/sse/shared/utils.d.ts +0 -254
  379. package/dist/sse/shared/writer.d.ts +0 -111
  380. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  381. package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  382. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  383. package/dist/sse/sse-to-json/index.d.ts +0 -6
  384. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  385. package/dist/sse/types/anthropic-types.d.ts +0 -87
  386. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  387. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  388. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  389. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  390. package/dist/tools/proxy/registry.d.ts +0 -8
  391. package/dist/tools/proxy/registry.js +0 -14
  392. package/dist/tools/proxy/types.d.ts +0 -29
  393. package/dist/tools/tool-registry.d.ts +0 -8
  394. package/dist/tools/web-fetch-html.d.ts +0 -15
  395. package/dist/tools/web-fetch-html.js +0 -83
  396. package/dist/utils/conversion-adapter.d.ts +0 -65
  397. package/dist/utils/conversion-adapter.js +0 -183
  398. package/dist/utils/error-factory.d.ts +0 -88
  399. package/dist/utils/error-factory.js +0 -138
  400. package/dist/utils/error-utils.d.ts +0 -334
  401. package/dist/utils/error-utils.js +0 -782
  402. package/dist/utils/index.d.ts +0 -8
  403. package/dist/utils/index.js +0 -13
  404. package/dist/utils/performance-utils.d.ts +0 -205
  405. package/dist/utils/performance-utils.js +0 -440
  406. package/dist/utils/profile-mapper.d.ts +0 -32
  407. package/dist/utils/profile-mapper.js +0 -269
  408. package/dist/utils/request-processor.d.ts +0 -52
  409. package/dist/utils/request-processor.js +0 -210
  410. package/dist/utils/request-utils.d.ts +0 -117
  411. package/dist/utils/request-utils.js +0 -333
  412. package/dist/utils/response-utils.d.ts +0 -127
  413. package/dist/utils/response-utils.js +0 -516
  414. package/dist/utils/token-counter.d.ts +0 -89
  415. package/dist/utils/token-counter.js +0 -541
  416. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
@@ -1,543 +0,0 @@
1
- /**
2
- * 共享工具函数
3
- * 提供JSON↔SSE双向转换中常用的工具函数
4
- */
5
- import { randomUUID } from 'crypto';
6
- import { Readable } from 'stream';
7
- /**
8
- * 字符串工具
9
- */
10
- export class StringUtils {
11
- /**
12
- * 安全地将值转换为字符串
13
- */
14
- static safeStringify(value) {
15
- try {
16
- return JSON.stringify(value ?? {});
17
- }
18
- catch {
19
- return '{}';
20
- }
21
- }
22
- /**
23
- * 安全地解析JSON字符串
24
- */
25
- static safeParse(text) {
26
- try {
27
- return JSON.parse(text);
28
- }
29
- catch {
30
- return null;
31
- }
32
- }
33
- /**
34
- * 检查字符串是否为空或只包含空白字符
35
- */
36
- static isEmpty(str) {
37
- return !str || str.trim().length === 0;
38
- }
39
- /**
40
- * 检查字符串是否为有效的JSON
41
- */
42
- static isValidJson(str) {
43
- try {
44
- JSON.parse(str);
45
- return true;
46
- }
47
- catch {
48
- return false;
49
- }
50
- }
51
- /**
52
- * 截断字符串到指定长度
53
- */
54
- static truncate(str, maxLength, suffix = '...') {
55
- if (str.length <= maxLength)
56
- return str;
57
- return str.slice(0, maxLength - suffix.length) + suffix;
58
- }
59
- /**
60
- * 生成随机字符串
61
- */
62
- static random(length = 8) {
63
- return randomUUID().replace(/-/g, '').slice(0, length);
64
- }
65
- /**
66
- * 分割字符串为块
67
- */
68
- static chunkString(text, chunkSize, boundary) {
69
- const chunks = [];
70
- let buf = '';
71
- const boundaryCharMatcher = /[\s,.!?;:]/;
72
- const flush = () => {
73
- if (buf.length) {
74
- chunks.push(buf);
75
- buf = '';
76
- }
77
- };
78
- for (const ch of Array.from(text)) {
79
- buf += ch;
80
- const matchesBoundary = boundaryCharMatcher.test(ch) ||
81
- (boundary.test(ch) && !/\\b/.test(boundary.source));
82
- if (buf.length >= chunkSize || (matchesBoundary && buf.length >= Math.max(4, Math.floor(chunkSize / 2)))) {
83
- flush();
84
- }
85
- boundary.lastIndex = 0;
86
- }
87
- flush();
88
- return chunks;
89
- }
90
- }
91
- /**
92
- * 对象工具
93
- */
94
- export class ObjectUtils {
95
- /**
96
- * 深度冻结对象
97
- */
98
- static deepFreeze(obj) {
99
- Object.getOwnPropertyNames(obj).forEach(prop => {
100
- const value = obj[prop];
101
- if (value && typeof value === 'object' && !Object.isFrozen(value)) {
102
- ObjectUtils.deepFreeze(value);
103
- }
104
- });
105
- return Object.freeze(obj);
106
- }
107
- /**
108
- * 深度克隆对象
109
- */
110
- static deepClone(obj) {
111
- if (obj === null || typeof obj !== 'object')
112
- return obj;
113
- if (obj instanceof Date)
114
- return new Date(obj.getTime());
115
- if (obj instanceof Array)
116
- return obj.map(item => ObjectUtils.deepClone(item));
117
- if (typeof obj === 'object') {
118
- const cloned = {};
119
- Object.keys(obj).forEach(key => {
120
- cloned[key] = ObjectUtils.deepClone(obj[key]);
121
- });
122
- return cloned;
123
- }
124
- return obj;
125
- }
126
- /**
127
- * 安全地获取嵌套对象属性
128
- */
129
- static get(obj, path, defaultValue = undefined) {
130
- const keys = path.split('.');
131
- let result = obj;
132
- for (const key of keys) {
133
- if (result == null || typeof result !== 'object') {
134
- return defaultValue;
135
- }
136
- result = result[key];
137
- }
138
- return result !== undefined ? result : defaultValue;
139
- }
140
- /**
141
- * 安全地设置嵌套对象属性
142
- */
143
- static set(obj, path, value) {
144
- const keys = path.split('.');
145
- let current = obj;
146
- for (let i = 0; i < keys.length - 1; i++) {
147
- const key = keys[i];
148
- if (current[key] == null || typeof current[key] !== 'object') {
149
- current[key] = {};
150
- }
151
- current = current[key];
152
- }
153
- current[keys[keys.length - 1]] = value;
154
- }
155
- /**
156
- * 检查对象是否为空
157
- */
158
- static isEmpty(obj) {
159
- if (obj == null)
160
- return true;
161
- if (Array.isArray(obj))
162
- return obj.length === 0;
163
- if (typeof obj === 'object')
164
- return Object.keys(obj).length === 0;
165
- return false;
166
- }
167
- /**
168
- * 合并对象
169
- */
170
- static merge(target, source) {
171
- return { ...target, ...source };
172
- }
173
- }
174
- /**
175
- * 数组工具
176
- */
177
- export class ArrayUtils {
178
- /**
179
- * 数组去重
180
- */
181
- static unique(arr) {
182
- return [...new Set(arr)];
183
- }
184
- /**
185
- * 分组数组
186
- */
187
- static groupBy(arr, keyFn) {
188
- return arr.reduce((groups, item) => {
189
- const key = keyFn(item);
190
- groups[key] = groups[key] || [];
191
- groups[key].push(item);
192
- return groups;
193
- }, {});
194
- }
195
- /**
196
- * 分块数组
197
- */
198
- static chunk(arr, size) {
199
- const chunks = [];
200
- for (let i = 0; i < arr.length; i += size) {
201
- chunks.push(arr.slice(i, i + size));
202
- }
203
- return chunks;
204
- }
205
- /**
206
- * 扁平化数组
207
- */
208
- static flatten(arr) {
209
- const result = [];
210
- for (const item of arr) {
211
- if (Array.isArray(item)) {
212
- result.push(...ArrayUtils.flatten(item));
213
- }
214
- else {
215
- result.push(item);
216
- }
217
- }
218
- return result;
219
- }
220
- /**
221
- * 找到数组中的差异
222
- */
223
- static diff(arr1, arr2) {
224
- const set1 = new Set(arr1);
225
- const set2 = new Set(arr2);
226
- return {
227
- added: arr2.filter(item => !set1.has(item)),
228
- removed: arr1.filter(item => !set2.has(item)),
229
- common: arr1.filter(item => set2.has(item))
230
- };
231
- }
232
- }
233
- /**
234
- * 时间工具
235
- */
236
- export class TimeUtils {
237
- /**
238
- * 获取当前时间戳(毫秒)
239
- */
240
- static now() {
241
- return Date.now();
242
- }
243
- /**
244
- * 获取当前时间戳(秒)
245
- */
246
- static nowSeconds() {
247
- return Math.floor(Date.now() / 1000);
248
- }
249
- /**
250
- * 格式化时间戳
251
- */
252
- static formatTimestamp(timestamp, format = 'ISO') {
253
- const date = new Date(timestamp);
254
- switch (format) {
255
- case 'ISO':
256
- return date.toISOString();
257
- case 'locale':
258
- return date.toLocaleString();
259
- case 'time':
260
- return date.toTimeString();
261
- case 'date':
262
- return date.toDateString();
263
- default:
264
- return date.toString();
265
- }
266
- }
267
- /**
268
- * 延迟指定时间
269
- */
270
- static delay(ms) {
271
- return new Promise(resolve => setTimeout(resolve, ms));
272
- }
273
- /**
274
- * 带超时的Promise
275
- */
276
- static timeout(promise, timeoutMs) {
277
- return Promise.race([
278
- promise,
279
- new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout after ${timeoutMs}ms`)), timeoutMs))
280
- ]);
281
- }
282
- }
283
- /**
284
- * 验证工具
285
- */
286
- export class ValidationUtils {
287
- /**
288
- * 检查值是否为对象
289
- */
290
- static isObject(value) {
291
- return !!value && typeof value === 'object' && !Array.isArray(value);
292
- }
293
- /**
294
- * 检查值是否为有效的ID
295
- */
296
- static isValidId(value, pattern) {
297
- return pattern.test(value);
298
- }
299
- /**
300
- * 验证序列号
301
- */
302
- static isValidSequenceNumber(value, max = 10000) {
303
- return Number.isInteger(value) && value >= 0 && value < max;
304
- }
305
- /**
306
- * 验证时间戳
307
- */
308
- static isValidTimestamp(value) {
309
- return Number.isInteger(value) && value > 0 && value <= Date.now() + 86400000; // 允许未来1天
310
- }
311
- /**
312
- * 验证JSON结构
313
- */
314
- static validateJsonStructure(obj, schema) {
315
- const errors = [];
316
- const validate = (value, schemaNode, path = '') => {
317
- if (schemaNode.required && (value == null || value === '')) {
318
- errors.push(`${path}: Required field missing`);
319
- return;
320
- }
321
- if (value == null)
322
- return; // 可选字段且为空
323
- if (schemaNode.type) {
324
- const actualType = Array.isArray(value) ? 'array' : typeof value;
325
- if (actualType !== schemaNode.type) {
326
- errors.push(`${path}: Expected ${schemaNode.type}, got ${actualType}`);
327
- return;
328
- }
329
- }
330
- if (schemaNode.properties && typeof value === 'object') {
331
- Object.entries(schemaNode.properties).forEach(([key, subSchema]) => {
332
- validate(value[key], subSchema, path ? `${path}.${key}` : key);
333
- });
334
- }
335
- };
336
- validate(obj, schema);
337
- return {
338
- valid: errors.length === 0,
339
- errors
340
- };
341
- }
342
- }
343
- /**
344
- * 流工具
345
- */
346
- export class StreamUtils {
347
- /**
348
- * 创建可读流
349
- */
350
- static createReadable(data) {
351
- let index = 0;
352
- return new Readable({
353
- objectMode: true,
354
- read() {
355
- if (index < data.length) {
356
- this.push(data[index++]);
357
- }
358
- else {
359
- this.push(null);
360
- }
361
- }
362
- });
363
- }
364
- /**
365
- * 将异步生成器转换为流
366
- */
367
- static asyncGeneratorToStream(generator) {
368
- return new Readable({
369
- objectMode: true,
370
- async read() {
371
- try {
372
- const { value, done } = await generator.next();
373
- if (done) {
374
- this.push(null);
375
- }
376
- else {
377
- this.push(value);
378
- }
379
- }
380
- catch (error) {
381
- this.destroy(error);
382
- }
383
- }
384
- });
385
- }
386
- /**
387
- * 将流转换为数组
388
- */
389
- static async streamToArray(stream) {
390
- const chunks = [];
391
- for await (const chunk of stream) {
392
- chunks.push(chunk);
393
- }
394
- return chunks;
395
- }
396
- /**
397
- * 管道流超时
398
- */
399
- static pipeWithTimeout(source, destination, timeoutMs) {
400
- return new Promise((resolve, reject) => {
401
- const timeout = setTimeout(() => {
402
- source.destroy();
403
- const destroy = destination.destroy;
404
- if (typeof destroy === 'function') {
405
- destroy.call(destination);
406
- }
407
- reject(new Error(`Pipe timeout after ${timeoutMs}ms`));
408
- }, timeoutMs);
409
- source.pipe(destination);
410
- destination.on('finish', () => {
411
- clearTimeout(timeout);
412
- resolve();
413
- });
414
- destination.on('error', (error) => {
415
- clearTimeout(timeout);
416
- reject(error);
417
- });
418
- });
419
- }
420
- }
421
- /**
422
- * ID生成工具
423
- */
424
- export class IdUtils {
425
- /**
426
- * 生成请求ID
427
- */
428
- static generateRequestId() {
429
- return `req_${Date.now()}`;
430
- }
431
- /**
432
- * 生成响应ID
433
- */
434
- static generateResponseId() {
435
- return `resp_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
436
- }
437
- /**
438
- * 生成推理项目ID
439
- */
440
- static generateReasoningId() {
441
- return `rs_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
442
- }
443
- /**
444
- * 生成函数调用ID
445
- */
446
- static generateFunctionCallId() {
447
- return `fc_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
448
- }
449
- /**
450
- * 生成工具调用ID
451
- */
452
- static generateToolCallId() {
453
- return `call_${randomUUID().replace(/-/g, '').slice(0, 8)}`;
454
- }
455
- /**
456
- * 生成消息ID
457
- */
458
- static generateMessageId() {
459
- return `msg_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
460
- }
461
- }
462
- /**
463
- * 错误处理工具
464
- */
465
- export class ErrorUtils {
466
- /**
467
- * 创建标准错误
468
- */
469
- static createError(message, code, context) {
470
- const error = new Error(message);
471
- error.code = code;
472
- error.context = context;
473
- return error;
474
- }
475
- /**
476
- * 包装错误
477
- */
478
- static wrapError(error, context) {
479
- if (error instanceof Error) {
480
- if (context) {
481
- error.message = `${context}: ${error.message}`;
482
- }
483
- return error;
484
- }
485
- return new Error(`${context || 'Unknown'}: ${String(error)}`);
486
- }
487
- /**
488
- * 判断是否为超时错误
489
- */
490
- static isTimeoutError(error) {
491
- return error.message.toLowerCase().includes('timeout') ||
492
- error.name === 'TimeoutError' ||
493
- error.code === 'TIMEOUT';
494
- }
495
- /**
496
- * 判断是否为网络错误
497
- */
498
- static isNetworkError(error) {
499
- return error.message.toLowerCase().includes('network') ||
500
- error.message.toLowerCase().includes('connection') ||
501
- error.code === 'ECONNRESET' ||
502
- error.code === 'ENOTFOUND';
503
- }
504
- }
505
- /**
506
- * 正则表达式模式
507
- */
508
- export const REGEX_PATTERNS = {
509
- WORD_BOUNDARY: /\s|\b|[,.!?;:]/
510
- };
511
- /**
512
- * 性能监控工具
513
- */
514
- export class PerformanceUtils {
515
- /**
516
- * 创建性能计时器
517
- */
518
- static createTimer() {
519
- const start = performance.now();
520
- return () => performance.now() - start;
521
- }
522
- /**
523
- * 测量函数执行时间
524
- */
525
- static async measureTime(fn) {
526
- const timer = PerformanceUtils.createTimer();
527
- const result = await fn();
528
- const duration = timer();
529
- return { result, duration };
530
- }
531
- /**
532
- * 创建内存使用快照
533
- */
534
- static createMemorySnapshot() {
535
- const usage = process.memoryUsage();
536
- return {
537
- rss: usage.rss,
538
- heapUsed: usage.heapUsed,
539
- heapTotal: usage.heapTotal,
540
- external: usage.external
541
- };
542
- }
543
- }
@@ -1,111 +0,0 @@
1
- /**
2
- * 统一的SSE事件流写入器
3
- * 处理backpressure、超时、心跳、错误处理等通用流管理逻辑
4
- */
5
- import { PassThrough } from 'stream';
6
- import { BaseSseEvent } from '../types/core-interfaces.js';
7
- import { ChatSseEvent, ResponsesSseEvent } from '../types/index.js';
8
- export interface StreamWriterConfig {
9
- timeoutMs?: number;
10
- enableHeartbeat?: boolean;
11
- heartbeatIntervalMs?: number;
12
- maxBufferSize?: number;
13
- enableBackpressure?: boolean;
14
- onEvent?: (event: BaseSseEvent) => void;
15
- onError?: (error: Error) => void;
16
- onComplete?: () => void;
17
- }
18
- export interface StreamWriterStats {
19
- totalEvents: number;
20
- bytesWritten: number;
21
- startTime: number;
22
- lastWriteTime: number;
23
- errors: number;
24
- }
25
- /**
26
- * 统一的SSE流写入器
27
- */
28
- export declare class StreamWriter {
29
- private stream;
30
- private config;
31
- private stats;
32
- private heartbeatInterval?;
33
- private isActive;
34
- private writeQueue;
35
- private isWriting;
36
- constructor(stream: PassThrough, config?: StreamWriterConfig);
37
- /**
38
- * 设置心跳
39
- */
40
- private setupHeartbeat;
41
- /**
42
- * 设置错误处理
43
- */
44
- private setupErrorHandling;
45
- /**
46
- * 发送心跳事件
47
- */
48
- private sendHeartbeat;
49
- /**
50
- * 写入单个事件
51
- */
52
- private writeEvent;
53
- /**
54
- * 处理背压
55
- */
56
- private handleBackpressure;
57
- /**
58
- * 序列化Responses事件(临时实现,需要 ResponsesSerializer)
59
- * TODO: 等Responses协议修复后,实现完整的ResponsesSerializer
60
- * 当前为临时实现,仅用于避免编译错误
61
- */
62
- private serializeResponsesEvent;
63
- /**
64
- * 异步写入事件流
65
- */
66
- writeEventStream(events: AsyncIterable<BaseSseEvent>): Promise<void>;
67
- /**
68
- * 同步写入事件数组
69
- */
70
- writeEvents(events: BaseSseEvent[]): Promise<void>;
71
- /**
72
- * 写入Chat事件流
73
- */
74
- writeChatEvents(events: AsyncIterable<ChatSseEvent> | ChatSseEvent[]): Promise<void>;
75
- /**
76
- * 写入Responses事件流
77
- */
78
- writeResponsesEvents(events: AsyncIterable<ResponsesSseEvent> | ResponsesSseEvent[]): Promise<void>;
79
- /**
80
- * 完成流写入
81
- */
82
- complete(): void;
83
- /**
84
- * 中止流写入
85
- */
86
- abort(error?: Error): void;
87
- /**
88
- * 获取写入统计
89
- */
90
- getStats(): StreamWriterStats;
91
- /**
92
- * 检查流是否活跃
93
- */
94
- isStreamActive(): boolean;
95
- /**
96
- * 清理资源
97
- */
98
- private cleanup;
99
- /**
100
- * 获取底层流
101
- */
102
- getUnderlyingStream(): PassThrough;
103
- }
104
- /**
105
- * 创建Chat流写入器工厂函数
106
- */
107
- export declare function createChatStreamWriter(stream: PassThrough, config?: StreamWriterConfig): StreamWriter;
108
- /**
109
- * 创建Responses流写入器工厂函数
110
- */
111
- export declare function createResponsesStreamWriter(stream: PassThrough, config?: StreamWriterConfig): StreamWriter;