@jsonstudio/llms 0.4.2 → 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 (417) 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/conversion/shared/responses-id-utils.js +18 -5
  20. package/dist/sse/sse-to-json/builders/response-builder.js +2 -1
  21. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
  22. package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
  23. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  24. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  25. package/dist/sse/types/chat-types.d.ts +9 -6
  26. package/dist/sse/types/conversion-context.d.ts +14 -11
  27. package/dist/sse/types/core-interfaces.d.ts +6 -2
  28. package/dist/sse/types/index.d.ts +1 -1
  29. package/dist/sse/types/responses-types.d.ts +20 -20
  30. package/dist/sse/types/sse-events.d.ts +4 -3
  31. package/dist/sse/types/stream-state.d.ts +34 -39
  32. package/dist/sse/types/utility-types.d.ts +47 -43
  33. package/dist/sse/types/utility-types.js +10 -13
  34. package/dist/tools/tool-registry.js +156 -98
  35. package/package.json +6 -6
  36. package/dist/api/index.d.ts +0 -10
  37. package/dist/api/index.js +0 -11
  38. package/dist/api/llmswitch-config.d.ts +0 -15
  39. package/dist/api/llmswitch-config.js +0 -415
  40. package/dist/api/llmswitch-types.d.ts +0 -412
  41. package/dist/api/llmswitch-types.js +0 -60
  42. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  43. package/dist/config/index.d.ts +0 -3
  44. package/dist/config/index.js +0 -5
  45. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  46. package/dist/config-unified/unified-config.d.ts +0 -26
  47. package/dist/conversion/codec-registry.d.ts +0 -10
  48. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
  49. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  50. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  51. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  52. package/dist/conversion/config/config-manager.d.ts +0 -212
  53. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  54. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  55. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  56. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  57. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  58. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  59. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  60. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  61. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  62. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  63. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  64. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1083
  65. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  66. package/dist/conversion/conversion-v3/config/index.js +0 -5
  67. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  68. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  69. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  70. package/dist/conversion/conversion-v3/index.js +0 -17
  71. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  72. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  73. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  74. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  75. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  76. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  77. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  78. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  79. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  80. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  81. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  82. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  83. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  84. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  85. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  86. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  87. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  88. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  89. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  90. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  91. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  92. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  93. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  94. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  95. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  96. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  97. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  98. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  99. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  100. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  101. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  102. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  103. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  104. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  105. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  106. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  107. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  108. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  109. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  110. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  111. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  112. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  113. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -26
  114. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -299
  115. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  116. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  117. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  118. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  119. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  120. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  121. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  122. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  123. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  124. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  125. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  126. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  127. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  128. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  129. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  130. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  131. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  132. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  133. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  134. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  135. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  136. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  137. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  138. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  139. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  140. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  141. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  142. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  143. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  144. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  145. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  146. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  147. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  148. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  149. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  150. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  151. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  152. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  153. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  154. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  155. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  156. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  157. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  158. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  159. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  160. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  161. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  162. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  163. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  164. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  165. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  166. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  167. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  168. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  169. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  170. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  171. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  172. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  173. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  174. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  175. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  176. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  177. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  178. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  179. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  180. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  181. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  182. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  183. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  184. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  185. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  186. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  187. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  188. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  189. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  190. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  191. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  192. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  193. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  194. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  195. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  196. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  197. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  198. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  199. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  200. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  201. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  202. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  203. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  204. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  205. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  206. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  207. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  208. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  209. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  210. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  211. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  212. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  213. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  214. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  215. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  216. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  217. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  218. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  219. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  220. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  221. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  222. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  223. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  224. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  225. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  226. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  227. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  228. package/dist/conversion/conversion-v3/types/index.js +0 -11
  229. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  230. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  231. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  232. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  233. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  234. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  235. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  236. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  237. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  238. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  239. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  240. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  241. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  242. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  243. package/dist/conversion/hub/config/types.d.ts +0 -26
  244. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  245. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  246. package/dist/conversion/hub/core/index.d.ts +0 -3
  247. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  248. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  249. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  250. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  251. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  252. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
  253. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  254. package/dist/conversion/hub/node-support.d.ts +0 -19
  255. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  256. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  257. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  258. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  259. package/dist/conversion/hub/registry.d.ts +0 -28
  260. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  261. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  262. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  263. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  264. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  265. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  266. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  267. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  268. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  269. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  270. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  271. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  272. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  273. package/dist/conversion/hub/types/errors.d.ts +0 -5
  274. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  275. package/dist/conversion/hub/types/index.d.ts +0 -6
  276. package/dist/conversion/hub/types/json.d.ts +0 -9
  277. package/dist/conversion/hub/types/node.d.ts +0 -31
  278. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  279. package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
  280. package/dist/conversion/schema-validator.d.ts +0 -7
  281. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  282. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  283. package/dist/conversion/shared/jsonish.d.ts +0 -3
  284. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  285. package/dist/conversion/shared/media.d.ts +0 -1
  286. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  287. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  288. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  289. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  290. package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
  291. package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
  292. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  293. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  294. package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
  295. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  296. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  297. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  298. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  299. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  300. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  301. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  302. package/dist/conversion/shared/tool-mapping.d.ts +0 -10
  303. package/dist/conversion/shared/tooling.d.ts +0 -26
  304. package/dist/conversion/types.d.ts +0 -33
  305. package/dist/core/index.d.ts +0 -6
  306. package/dist/core/index.js +0 -9
  307. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  308. package/dist/core/llmswitch-engine-v2.js +0 -649
  309. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  310. package/dist/core/llmswitch-factory-v2.js +0 -521
  311. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  312. package/dist/endpoints/base-endpoint-handler.js +0 -545
  313. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  314. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  315. package/dist/endpoints/endpoint-router.d.ts +0 -127
  316. package/dist/endpoints/endpoint-router.js +0 -438
  317. package/dist/endpoints/index.d.ts +0 -13
  318. package/dist/endpoints/index.js +0 -11
  319. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  320. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  321. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  322. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  323. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  324. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  325. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  326. package/dist/filters/engine.d.ts +0 -16
  327. package/dist/filters/index.d.ts +0 -19
  328. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  329. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  330. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  331. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  332. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  333. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  334. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  335. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  336. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  337. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  338. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  339. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  340. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  341. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  342. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  343. package/dist/filters/types.d.ts +0 -68
  344. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  345. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  346. package/dist/guidance/index.d.ts +0 -3
  347. package/dist/hooks/hooks-integration.d.ts +0 -161
  348. package/dist/hooks/hooks-integration.js +0 -519
  349. package/dist/hooks/index.d.ts +0 -10
  350. package/dist/hooks/index.js +0 -13
  351. package/dist/html-to-markdown.d.ts +0 -5
  352. package/dist/html-to-markdown.js +0 -66
  353. package/dist/http/sse-response.d.ts +0 -22
  354. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  355. package/dist/router/virtual-router/classifier.d.ts +0 -10
  356. package/dist/router/virtual-router/engine.d.ts +0 -35
  357. package/dist/router/virtual-router/error-center.d.ts +0 -10
  358. package/dist/router/virtual-router/features.d.ts +0 -3
  359. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  360. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  361. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  362. package/dist/router/virtual-router/types.d.ts +0 -206
  363. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  364. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  365. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  366. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  367. package/dist/sse/json-to-sse/index.d.ts +0 -6
  368. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  369. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  370. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  371. package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
  372. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  373. package/dist/sse/shared/constants.d.ts +0 -272
  374. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  375. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  376. package/dist/sse/shared/serializers/index.d.ts +0 -39
  377. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  378. package/dist/sse/shared/serializers/types.d.ts +0 -51
  379. package/dist/sse/shared/utils.d.ts +0 -254
  380. package/dist/sse/shared/writer.d.ts +0 -111
  381. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  382. package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  383. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  384. package/dist/sse/sse-to-json/index.d.ts +0 -6
  385. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  386. package/dist/sse/types/anthropic-types.d.ts +0 -87
  387. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  388. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  389. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  390. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  391. package/dist/tools/proxy/registry.d.ts +0 -8
  392. package/dist/tools/proxy/registry.js +0 -14
  393. package/dist/tools/proxy/types.d.ts +0 -29
  394. package/dist/tools/tool-registry.d.ts +0 -8
  395. package/dist/tools/web-fetch-html.d.ts +0 -15
  396. package/dist/tools/web-fetch-html.js +0 -83
  397. package/dist/utils/conversion-adapter.d.ts +0 -65
  398. package/dist/utils/conversion-adapter.js +0 -183
  399. package/dist/utils/error-factory.d.ts +0 -88
  400. package/dist/utils/error-factory.js +0 -138
  401. package/dist/utils/error-utils.d.ts +0 -334
  402. package/dist/utils/error-utils.js +0 -782
  403. package/dist/utils/index.d.ts +0 -8
  404. package/dist/utils/index.js +0 -13
  405. package/dist/utils/performance-utils.d.ts +0 -205
  406. package/dist/utils/performance-utils.js +0 -440
  407. package/dist/utils/profile-mapper.d.ts +0 -32
  408. package/dist/utils/profile-mapper.js +0 -269
  409. package/dist/utils/request-processor.d.ts +0 -52
  410. package/dist/utils/request-processor.js +0 -210
  411. package/dist/utils/request-utils.d.ts +0 -117
  412. package/dist/utils/request-utils.js +0 -333
  413. package/dist/utils/response-utils.d.ts +0 -127
  414. package/dist/utils/response-utils.js +0 -516
  415. package/dist/utils/token-counter.d.ts +0 -89
  416. package/dist/utils/token-counter.js +0 -541
  417. /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;