@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,270 +0,0 @@
1
- /**
2
- * Responses SSE → JSON转换器(重构版本)
3
- * 使用函数化架构:解析 + 构建 + 验证分离
4
- */
5
- import { Readable } from 'stream';
6
- import { ErrorUtils } from '../shared/utils.js';
7
- import { createSseParser } from './parsers/sse-parser.js';
8
- import { createResponseBuilder } from './builders/response-builder.js';
9
- /**
10
- * 重构后的Responses SSE到JSON转换器
11
- * 采用函数化架构,专注于编排而非具体业务逻辑
12
- */
13
- export class ResponsesSseToJsonConverterRefactored {
14
- config = {
15
- timeoutMs: 30000,
16
- enableEventValidation: true,
17
- enableSequenceValidation: false,
18
- strictMode: false,
19
- validateOutputItems: true
20
- };
21
- contexts = new Map();
22
- constructor(config) {
23
- if (config) {
24
- this.config = { ...this.config, ...config };
25
- }
26
- }
27
- /**
28
- * 将SSE流转换为Responses响应
29
- */
30
- async convertSseToJson(sseStream, options) {
31
- // 1. 创建上下文
32
- const context = this.createContext(options);
33
- this.contexts.set(options.requestId, context);
34
- try {
35
- // 2. 创建解析器
36
- const parser = createSseParser({
37
- enableStrictValidation: this.config.enableEventValidation,
38
- enableEventRecovery: !this.config.strictMode
39
- });
40
- // 3. 创建响应构建器
41
- const responseBuilder = createResponseBuilder({
42
- enableStrictValidation: false,
43
- enableEventRecovery: !this.config.strictMode,
44
- maxOutputItems: 50,
45
- maxContentParts: 100
46
- });
47
- // 4. 创建可读流(适配不同的输入源)
48
- const readableStream = this.createReadableStream(sseStream);
49
- // 5. 流式处理SSE数据(按增量缓冲解析,避免跨 chunk 的事件被截断)
50
- // 注意:不要对每个 chunk 独立 parse;必须使用一个持续的 async 解析器维持缓冲区。
51
- async function* chunkStrings(stream) {
52
- for await (const chunk of stream) {
53
- yield typeof chunk === 'string' ? chunk : chunk.toString();
54
- }
55
- }
56
- for await (const parseResult of parser.parseStreamAsync(chunkStrings(readableStream))) {
57
- if (context.isCompleted)
58
- break;
59
- if (parseResult.success && parseResult.event) {
60
- const event = parseResult.event;
61
- // 验证序列号
62
- if (this.config.enableSequenceValidation && !this.validateSequenceNumber(event, context)) {
63
- throw new Error(`Invalid sequence number: ${event.sequenceNumber}`);
64
- }
65
- // 处理事件
66
- const success = responseBuilder.processEvent(event);
67
- if (!success && this.config.strictMode) {
68
- const result = responseBuilder.getResult();
69
- throw new Error(`Failed to process event: ${result.error?.message}`);
70
- }
71
- // 更新统计
72
- this.updateStats(context, event);
73
- // 回调
74
- if (options.onEvent) {
75
- options.onEvent(event);
76
- }
77
- }
78
- else if (!parseResult.success && this.config.strictMode) {
79
- throw new Error(`Failed to parse SSE event: ${parseResult.error}`);
80
- }
81
- }
82
- // 6. 获取最终结果
83
- const result = responseBuilder.getResult();
84
- if (!result.success) {
85
- // 容错:若已观察到 response.completed 事件或整体已完成,但构建器仍报告未完成,
86
- // 这里按已完成处理,避免上游省略 response.done 导致误报失败。
87
- const seenCompleted = context.eventStats.eventTypes['response.completed'] > 0;
88
- if (seenCompleted) {
89
- const maybe = responseBuilder.getResult();
90
- if (maybe.success && maybe.response) {
91
- return maybe.response;
92
- }
93
- }
94
- throw result.error || new Error('Failed to build response');
95
- }
96
- // 7. 标记完成
97
- context.isCompleted = true;
98
- context.endTime = Date.now();
99
- context.duration = context.endTime - context.startTime;
100
- // 8. 调用完成回调
101
- if (options.onCompletion) {
102
- options.onCompletion(result.response);
103
- }
104
- return result.response;
105
- }
106
- catch (error) {
107
- context.isCompleted = true;
108
- context.endTime = Date.now();
109
- context.duration = context.endTime - context.startTime;
110
- // 调用错误回调
111
- if (options.onError) {
112
- options.onError(error);
113
- }
114
- throw this.wrapError('SSE_TO_JSON_ERROR', error, options.requestId);
115
- }
116
- finally {
117
- // 清理上下文
118
- this.clearContext(options.requestId);
119
- }
120
- }
121
- /**
122
- * 创建可读流
123
- */
124
- createReadableStream(sseStream) {
125
- if (sseStream instanceof Readable) {
126
- return sseStream;
127
- }
128
- // 如果是异步可迭代对象,包装为流
129
- return Readable.from(this.convertAsyncIterableToStream(sseStream));
130
- }
131
- /**
132
- * 将异步可迭代对象转换为流
133
- */
134
- async *convertAsyncIterableToStream(sseStream) {
135
- for await (const chunk of sseStream) {
136
- if (typeof chunk === 'string') {
137
- yield Buffer.from(chunk);
138
- }
139
- else if (Buffer.isBuffer(chunk)) {
140
- yield chunk;
141
- }
142
- else {
143
- // 假设是SSE事件对象,序列化为SSE格式
144
- const serialized = this.serializeEventToSSE(chunk);
145
- yield Buffer.from(serialized);
146
- }
147
- }
148
- }
149
- /**
150
- * 将事件对象序列化为SSE格式(简单实现)
151
- */
152
- serializeEventToSSE(event) {
153
- const data = event.data ? JSON.stringify(event.data) : '';
154
- return `event: ${event.type}\ndata: ${data}\n\n`;
155
- }
156
- /**
157
- * 验证序列号
158
- */
159
- validateSequenceNumber(event, context) {
160
- if (typeof event.sequenceNumber !== 'number') {
161
- context.lastSequenceNumber += 1;
162
- event.sequenceNumber = context.lastSequenceNumber;
163
- return true;
164
- }
165
- if (event.sequenceNumber <= context.lastSequenceNumber) {
166
- return false;
167
- }
168
- context.lastSequenceNumber = event.sequenceNumber;
169
- return true;
170
- }
171
- /**
172
- * 更新统计信息
173
- */
174
- updateStats(context, event) {
175
- context.eventStats.totalEvents++;
176
- context.eventStats.eventTypes[event.type] = (context.eventStats.eventTypes[event.type] || 0) + 1;
177
- // 根据事件类型更新特定统计
178
- switch (event.type) {
179
- case 'response.created':
180
- case 'response.in_progress':
181
- case 'response.completed':
182
- case 'response.required_action':
183
- case 'response.done':
184
- context.eventStats.messageEventsCount++;
185
- break;
186
- case 'response.output_item.added':
187
- case 'response.output_item.done':
188
- context.eventStats.outputItemsCount++;
189
- break;
190
- case 'response.content_part.added':
191
- case 'response.content_part.done':
192
- context.eventStats.contentPartsCount++;
193
- break;
194
- case 'response.output_text.delta':
195
- case 'response.output_text.done':
196
- context.eventStats.deltaEventsCount++;
197
- break;
198
- case 'response.reasoning_text.delta':
199
- case 'response.reasoning_text.done':
200
- context.eventStats.reasoningEventsCount++;
201
- break;
202
- case 'response.function_call_arguments.delta':
203
- case 'response.function_call_arguments.done':
204
- context.eventStats.functionCallEventsCount++;
205
- break;
206
- case 'response.error':
207
- context.eventStats.errorCount++;
208
- break;
209
- }
210
- // 更新时间戳
211
- context.eventStats.lastEventTime = event.timestamp;
212
- }
213
- /**
214
- * 包装错误
215
- */
216
- wrapError(code, originalError, requestId) {
217
- return ErrorUtils.createError(`${code}: ${originalError.message}`, code, { requestId, originalError });
218
- }
219
- /**
220
- * 创建上下文
221
- */
222
- createContext(options) {
223
- const eventStats = {
224
- totalEvents: 0,
225
- eventTypes: {},
226
- startTime: Date.now(),
227
- outputItemsCount: 0,
228
- contentPartsCount: 0,
229
- deltaEventsCount: 0,
230
- reasoningEventsCount: 0,
231
- functionCallEventsCount: 0,
232
- messageEventsCount: 0,
233
- errorCount: 0
234
- };
235
- return {
236
- requestId: options.requestId,
237
- model: options.model,
238
- options,
239
- startTime: Date.now(),
240
- aggregatedEvents: [],
241
- currentResponse: {},
242
- outputItemBuilders: new Map(),
243
- eventStats,
244
- isCompleted: false,
245
- isResponseCreated: false,
246
- isInProgress: false,
247
- lastSequenceNumber: -1
248
- };
249
- }
250
- /**
251
- * 获取上下文
252
- */
253
- getContext(requestId) {
254
- return this.contexts.get(requestId);
255
- }
256
- /**
257
- * 清理上下文
258
- */
259
- clearContext(requestId) {
260
- this.contexts.delete(requestId);
261
- }
262
- /**
263
- * 获取所有活跃的上下文
264
- */
265
- getActiveContexts() {
266
- return new Map(this.contexts);
267
- }
268
- }
269
- // 为了向后兼容,导出原有名称
270
- export const ResponsesSseToJsonConverter = ResponsesSseToJsonConverterRefactored;
@@ -1,87 +0,0 @@
1
- /**
2
- * Minimal Anthropic SSE/JSON types for v3 SSE converters
3
- * Only covers text and basic tool_use blocks needed for roundtrip.
4
- */
5
- export interface AnthropicContentTextBlock {
6
- type: 'text';
7
- text: string;
8
- }
9
- export interface AnthropicContentToolUseBlock {
10
- type: 'tool_use';
11
- id: string;
12
- name: string;
13
- input: Record<string, unknown>;
14
- }
15
- export interface AnthropicContentToolResultBlock {
16
- type: 'tool_result';
17
- tool_use_id: string;
18
- content: unknown;
19
- is_error?: boolean;
20
- }
21
- export type AnthropicContentBlock = AnthropicContentTextBlock | AnthropicContentToolUseBlock | AnthropicContentToolResultBlock;
22
- export interface AnthropicMessageResponse {
23
- id: string;
24
- type: 'message';
25
- role: 'assistant' | 'user';
26
- model: string;
27
- content: AnthropicContentBlock[];
28
- usage?: {
29
- input_tokens?: number;
30
- output_tokens?: number;
31
- };
32
- stop_reason?: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use';
33
- }
34
- export type AnthropicSseEventType = 'message_start' | 'content_block_start' | 'content_block_delta' | 'content_block_stop' | 'message_delta' | 'message_stop';
35
- export interface AnthropicSseEventBase<T extends AnthropicSseEventType = AnthropicSseEventType> {
36
- type: T;
37
- }
38
- export interface AnthropicSseEventMessageStart extends AnthropicSseEventBase<'message_start'> {
39
- message: {
40
- id: string;
41
- type: 'message';
42
- role: 'assistant';
43
- model: string;
44
- };
45
- }
46
- export interface AnthropicSseEventContentBlockStart extends AnthropicSseEventBase<'content_block_start'> {
47
- index: number;
48
- content_block: {
49
- type: 'text';
50
- text?: string;
51
- } | {
52
- type: 'tool_use';
53
- id: string;
54
- name: string;
55
- input?: Record<string, unknown>;
56
- };
57
- }
58
- export interface AnthropicSseEventContentBlockDelta extends AnthropicSseEventBase<'content_block_delta'> {
59
- index: number;
60
- delta: {
61
- type: 'text_delta';
62
- text: string;
63
- } | {
64
- type: 'input_json_delta';
65
- partial_json: string;
66
- };
67
- }
68
- export interface AnthropicSseEventContentBlockStop extends AnthropicSseEventBase<'content_block_stop'> {
69
- index: number;
70
- }
71
- export interface AnthropicSseEventMessageDelta extends AnthropicSseEventBase<'message_delta'> {
72
- delta?: {
73
- stop_reason?: AnthropicMessageResponse['stop_reason'];
74
- };
75
- }
76
- export interface AnthropicSseEventMessageStop extends AnthropicSseEventBase<'message_stop'> {
77
- }
78
- export type AnthropicSseEvent = AnthropicSseEventMessageStart | AnthropicSseEventContentBlockStart | AnthropicSseEventContentBlockDelta | AnthropicSseEventContentBlockStop | AnthropicSseEventMessageDelta | AnthropicSseEventMessageStop;
79
- export type AnthropicSseEventStream = AsyncIterable<string> | AsyncIterable<Buffer>;
80
- export interface AnthropicJsonToSseOptions {
81
- requestId: string;
82
- model: string;
83
- chunkSize?: number;
84
- }
85
- export interface SseToAnthropicJsonOptions {
86
- requestId: string;
87
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Minimal Anthropic SSE/JSON types for v3 SSE converters
3
- * Only covers text and basic tool_use blocks needed for roundtrip.
4
- */
5
- export {};
@@ -1,308 +0,0 @@
1
- /**
2
- * Chat协议相关类型定义
3
- * 支持OpenAI Chat Completions的JSON↔SSE双向转换
4
- */
5
- import { BaseSseEvent, StreamDirection } from './core-interfaces.js';
6
- export type ChatSseEventType = 'chat_chunk' | 'chat.done' | 'error' | 'ping';
7
- export interface ChatSseEvent extends BaseSseEvent {
8
- /** 事件类型(SSE标准wire格式) */
9
- event: ChatSseEventType;
10
- /** 重写type字段以满足BaseSseEvent要求,与event保持一致 */
11
- type: string;
12
- /** 时间戳 */
13
- timestamp: number;
14
- /** 事件ID(SSE标准字段) */
15
- id?: string;
16
- /** 重试间隔(SSE标准字段) */
17
- retry?: number;
18
- /** 协议标识 */
19
- protocol: 'chat';
20
- /** 方向标识 */
21
- direction: StreamDirection;
22
- }
23
- export interface ChatSseEventWithEventField {
24
- id?: string;
25
- event: ChatSseEventType;
26
- data: string;
27
- timestamp?: number;
28
- retry?: number;
29
- sequenceNumber?: number;
30
- }
31
- export interface ChatCompletionChunk {
32
- id: string;
33
- object: 'chat.completion.chunk';
34
- created: number;
35
- model: string;
36
- system_fingerprint?: string;
37
- choices: ChatChoiceChunk[];
38
- usage?: ChatUsage;
39
- }
40
- export interface ChatChoiceChunk {
41
- index: number;
42
- delta: ChatDelta;
43
- finish_reason?: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call' | null;
44
- logprobs?: ChatLogProbs;
45
- }
46
- export interface ChatDelta {
47
- role?: 'system' | 'user' | 'assistant' | 'tool';
48
- content?: string | null;
49
- function_call?: ChatFunctionCall;
50
- tool_calls?: ChatToolCallChunk[];
51
- }
52
- export interface ChatFunctionCall {
53
- name?: string;
54
- arguments?: string;
55
- }
56
- export interface ChatToolCallChunk {
57
- index: number;
58
- id?: string;
59
- type?: 'function';
60
- function?: {
61
- name?: string;
62
- arguments?: string;
63
- };
64
- }
65
- export interface ChatLogProbs {
66
- content?: ChatTokenLogProb[];
67
- }
68
- export interface ChatTokenLogProb {
69
- token: string;
70
- logprob: number;
71
- bytes?: number[];
72
- top_logprobs?: ChatTopLogProb[];
73
- }
74
- export interface ChatTopLogProb {
75
- token: string;
76
- logprob: number;
77
- bytes?: number[];
78
- }
79
- export interface ChatUsage {
80
- prompt_tokens: number;
81
- completion_tokens: number;
82
- total_tokens: number;
83
- }
84
- export interface ChatCompletionRequest {
85
- model: string;
86
- messages: ChatMessage[];
87
- functions?: ChatFunction[];
88
- function_call?: 'auto' | 'none' | {
89
- name: string;
90
- };
91
- tools?: ChatTool[];
92
- tool_choice?: 'auto' | 'none' | 'required' | {
93
- type: 'function';
94
- function: {
95
- name: string;
96
- };
97
- };
98
- temperature?: number;
99
- top_p?: number;
100
- n?: number;
101
- stream?: boolean;
102
- stop?: string | string[] | null;
103
- max_tokens?: number;
104
- presence_penalty?: number;
105
- frequency_penalty?: number;
106
- logit_bias?: Record<string, number>;
107
- user?: string;
108
- response_format?: {
109
- type: 'text' | 'json_object';
110
- };
111
- seed?: number;
112
- }
113
- export interface ChatMessage {
114
- role: 'system' | 'user' | 'assistant' | 'tool';
115
- content?: string | null;
116
- name?: string;
117
- function_call?: ChatFunctionCall;
118
- tool_calls?: ChatToolCall[];
119
- tool_call_id?: string;
120
- }
121
- export interface ChatFunction {
122
- name: string;
123
- description?: string;
124
- parameters?: Record<string, any>;
125
- }
126
- export interface ChatTool {
127
- type: 'function';
128
- function: ChatFunction;
129
- }
130
- export interface ChatToolCall {
131
- id: string;
132
- type: 'function';
133
- function: ChatFunctionCall;
134
- }
135
- export interface ChatCompletionResponse {
136
- id: string;
137
- object: 'chat.completion';
138
- created: number;
139
- model: string;
140
- system_fingerprint?: string;
141
- choices: ChatChoice[];
142
- usage?: ChatUsage;
143
- }
144
- export interface ChatChoice {
145
- index: number;
146
- message: ChatMessage;
147
- finish_reason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call';
148
- logprobs?: ChatLogProbs;
149
- }
150
- export interface ChatJsonToSseContext {
151
- requestId: string;
152
- model: string;
153
- chatRequest: ChatCompletionRequest;
154
- options: ChatJsonToSseOptions;
155
- startTime: number;
156
- sequenceCounter: number;
157
- choiceIndexCounter: number;
158
- toolCallIndexCounter: number;
159
- isStreaming: boolean;
160
- currentChunk: Partial<ChatCompletionChunk>;
161
- eventStats: ChatEventStats;
162
- contentIndexCounter?: Map<string, number>;
163
- currentRequest?: any;
164
- currentResponse?: any;
165
- chatResponse?: ChatCompletionResponse;
166
- }
167
- export interface SseToChatJsonContext {
168
- requestId: string;
169
- model: string;
170
- options: SseToChatJsonOptions;
171
- startTime: number;
172
- aggregatedChunks: ChatCompletionChunk[];
173
- currentResponse: Partial<ChatCompletionResponse>;
174
- choiceIndexMap: Map<number, ChatChoiceBuilder>;
175
- toolCallIndexMap: Map<number, Map<number, ChatToolCallBuilder>>;
176
- eventStats: ChatEventStats;
177
- isCompleted: boolean;
178
- }
179
- export interface ChatChoiceBuilder {
180
- index: number;
181
- delta: ChatDelta;
182
- finishReason?: ChatChoice['finish_reason'];
183
- logprobs?: ChatLogProbs;
184
- messageBuilder: ChatMessageBuilder;
185
- isCompleted: boolean;
186
- accumulatedContent: string;
187
- toolCallBuilders: Map<number, ChatToolCallBuilder>;
188
- }
189
- export interface ChatMessageBuilder {
190
- role?: 'system' | 'user' | 'assistant' | 'tool';
191
- content?: string;
192
- name?: string;
193
- functionCall?: ChatFunctionCall;
194
- toolCalls?: ChatToolCall[];
195
- toolCallId?: string;
196
- isCompleted: boolean;
197
- }
198
- export interface ChatToolCallBuilder {
199
- index: number;
200
- id?: string;
201
- type?: 'function';
202
- function?: {
203
- name?: string;
204
- arguments?: string;
205
- };
206
- isCompleted: boolean;
207
- accumulatedArguments: string;
208
- }
209
- export interface ChatJsonToSseOptions {
210
- requestId: string;
211
- model: string;
212
- timeoutMs?: number;
213
- enableHeartbeat?: boolean;
214
- heartbeatIntervalMs?: number;
215
- chunkDelayMs?: number;
216
- includeSystemFingerprint?: boolean;
217
- includeLogprobs?: boolean;
218
- maxTokensPerChunk?: number;
219
- validationMode?: 'none' | 'basic' | 'strict';
220
- onChunk?: (chunk: ChatCompletionChunk) => void;
221
- onError?: (error: Error) => void;
222
- onComplete?: () => void;
223
- }
224
- export interface SseToChatJsonOptions {
225
- requestId: string;
226
- model: string;
227
- timeoutMs?: number;
228
- validateChunks?: boolean;
229
- enableSequenceValidation?: boolean;
230
- accumulateToolCalls?: boolean;
231
- onPartialResponse?: (partial: Partial<ChatCompletionResponse>) => void;
232
- onEvent?: (event: ChatSseEvent) => void;
233
- onChunk?: (chunk: ChatCompletionChunk) => void;
234
- onCompletion?: (final: ChatCompletionResponse) => void;
235
- onError?: (error: Error) => void;
236
- onTimeout?: () => void;
237
- }
238
- export interface ChatEventStats {
239
- totalChunks: number;
240
- totalTokens: number;
241
- totalChoices: number;
242
- totalToolCalls: number;
243
- startTime: number;
244
- endTime?: number;
245
- duration?: number;
246
- tokenRate: number;
247
- chunkRate: number;
248
- errorCount: number;
249
- retryCount: number;
250
- totalEvents?: number;
251
- eventTypes?: Record<string, number>;
252
- lastEventTime?: number;
253
- }
254
- export interface ChatConversionError extends Error {
255
- code: string;
256
- requestId: string;
257
- chunkId?: string;
258
- choiceIndex?: number;
259
- toolCallIndex?: number;
260
- context?: any;
261
- }
262
- export declare const CHAT_CONVERSION_ERROR_CODES: {
263
- readonly TIMEOUT: "CHAT_TIMEOUT";
264
- readonly INVALID_CHUNK: "CHAT_INVALID_CHUNK";
265
- readonly SEQUENCE_ERROR: "CHAT_SEQUENCE_ERROR";
266
- readonly TOOL_CALL_ERROR: "CHAT_TOOL_CALL_ERROR";
267
- readonly PARSE_ERROR: "CHAT_PARSE_ERROR";
268
- readonly VALIDATION_ERROR: "CHAT_VALIDATION_ERROR";
269
- readonly STREAM_ERROR: "CHAT_STREAM_ERROR";
270
- };
271
- export interface ChatEventValidationRule {
272
- eventType: ChatSseEventType;
273
- requiredFields: string[];
274
- optionalFields: string[];
275
- dataValidation?: {
276
- schema?: any;
277
- customValidator?: (data: any) => boolean;
278
- };
279
- }
280
- export interface ChatConversionConfig {
281
- defaultTimeoutMs: number;
282
- heartbeatIntervalMs: number;
283
- chunkTimeoutMs: number;
284
- defaultChunkDelayMs: number;
285
- maxTokensPerChunk: number;
286
- maxChunkSize: number;
287
- enableChunkValidation: boolean;
288
- strictMode: boolean;
289
- validateToolCalls: boolean;
290
- maxConcurrentChoices: number;
291
- maxConcurrentToolCalls: number;
292
- eventBufferSize: number;
293
- debugMode: boolean;
294
- logLevel: 'debug' | 'info' | 'warn' | 'error';
295
- enableMetrics: boolean;
296
- }
297
- export declare const DEFAULT_CHAT_CONVERSION_CONFIG: ChatConversionConfig;
298
- export interface ChatSseEventStream extends AsyncIterable<ChatSseEvent> {
299
- getStats(): ChatEventStats;
300
- getConfig(): ChatConversionConfig;
301
- complete(): void;
302
- abort(error?: Error): void;
303
- on(event: 'error', handler: (error: Error) => void): this;
304
- on(event: 'complete', handler: () => void): this;
305
- on(event: 'timeout', handler: () => void): this;
306
- on(event: 'chunk', handler: (chunk: ChatCompletionChunk) => void): this;
307
- on(event: 'stats', handler: (stats: ChatEventStats) => void): this;
308
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Chat协议相关类型定义
3
- * 支持OpenAI Chat Completions的JSON↔SSE双向转换
4
- */
5
- // Chat转换错误代码
6
- export const CHAT_CONVERSION_ERROR_CODES = {
7
- TIMEOUT: 'CHAT_TIMEOUT',
8
- INVALID_CHUNK: 'CHAT_INVALID_CHUNK',
9
- SEQUENCE_ERROR: 'CHAT_SEQUENCE_ERROR',
10
- TOOL_CALL_ERROR: 'CHAT_TOOL_CALL_ERROR',
11
- PARSE_ERROR: 'CHAT_PARSE_ERROR',
12
- VALIDATION_ERROR: 'CHAT_VALIDATION_ERROR',
13
- STREAM_ERROR: 'CHAT_STREAM_ERROR'
14
- };
15
- // 默认Chat转换配置
16
- export const DEFAULT_CHAT_CONVERSION_CONFIG = {
17
- defaultTimeoutMs: 30000,
18
- heartbeatIntervalMs: 15000,
19
- chunkTimeoutMs: 5000,
20
- defaultChunkDelayMs: 10,
21
- maxTokensPerChunk: 100,
22
- maxChunkSize: 1024,
23
- enableChunkValidation: true,
24
- strictMode: false,
25
- validateToolCalls: true,
26
- maxConcurrentChoices: 10,
27
- maxConcurrentToolCalls: 50,
28
- eventBufferSize: 1000,
29
- debugMode: false,
30
- logLevel: 'info',
31
- enableMetrics: true
32
- };