@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,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
- };