@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,296 +0,0 @@
1
- /**
2
- * Chat JSON → SSE转换器(重构版本)
3
- * 使用函数化架构:事件生成 + 序列化 + 写入分离
4
- */
5
- import { PassThrough } from 'stream';
6
- import { DEFAULT_CHAT_CONVERSION_CONFIG } from '../types/index.js';
7
- import { ErrorUtils } from '../shared/utils.js';
8
- import { createChatSequencer } from './sequencers/chat-sequencer.js';
9
- import { createChatStreamWriter } from '../shared/writer.js';
10
- /**
11
- * 重构后的Chat JSON到SSE转换器
12
- * 采用函数化架构,专注于编排而非具体业务逻辑
13
- */
14
- export class ChatJsonToSseConverterRefactored {
15
- config = DEFAULT_CHAT_CONVERSION_CONFIG;
16
- contexts = new Map();
17
- constructor(config) {
18
- if (config) {
19
- this.config = { ...this.config, ...config };
20
- }
21
- }
22
- /**
23
- * 将Chat Completion请求转换为SSE流
24
- */
25
- async convertRequestToJsonToSse(request, options) {
26
- // 1. 创建上下文
27
- const context = this.createRequestContext(request, options);
28
- this.contexts.set(options.requestId, context);
29
- // 2. 创建底层流
30
- const stream = new PassThrough({ objectMode: true });
31
- // 3. 创建SSE事件流接口
32
- const sseStream = Object.assign(stream, {
33
- protocol: 'chat',
34
- direction: 'json_to_sse',
35
- requestId: options.requestId,
36
- getStats: () => context.eventStats,
37
- getConfig: () => this.config,
38
- complete: () => this.completeStream(context, stream),
39
- abort: (error) => this.abortStream(context, stream, error)
40
- });
41
- // 4. 启动异步转换过程(使用函数化架构)
42
- this.processRequestToSseWithFunctions(request, context, stream).catch(error => {
43
- this.handleStreamError(context, error, stream);
44
- });
45
- return sseStream;
46
- }
47
- /**
48
- * 将Chat Completion响应转换为SSE流
49
- */
50
- async convertResponseToJsonToSse(response, options) {
51
- // 1. 创建上下文
52
- const context = this.createResponseContext(response, options);
53
- this.contexts.set(options.requestId, context);
54
- // 2. 创建底层流
55
- const stream = new PassThrough({ objectMode: true });
56
- // 3. 创建SSE事件流接口
57
- const sseStream = Object.assign(stream, {
58
- protocol: 'chat',
59
- direction: 'json_to_sse',
60
- requestId: options.requestId,
61
- getStats: () => context.eventStats,
62
- getConfig: () => this.config,
63
- complete: () => this.completeStream(context, stream),
64
- abort: (error) => this.abortStream(context, stream, error)
65
- });
66
- // 4. 启动异步转换过程(使用函数化架构)
67
- this.processResponseToSseWithFunctions(response, context, stream).catch(error => {
68
- this.handleStreamError(context, error, stream);
69
- });
70
- return sseStream;
71
- }
72
- /**
73
- * 使用函数化架构处理请求转换
74
- */
75
- async processRequestToSseWithFunctions(request, context, stream) {
76
- try {
77
- // 1. 验证请求
78
- this.validateRequest(request);
79
- // 2. 创建流写入器
80
- const writer = createChatStreamWriter(stream, {
81
- onEvent: (event) => this.updateStats(context, event),
82
- onError: (error) => this.handleStreamError(context, error, stream)
83
- });
84
- // 3. 创建事件序列化器
85
- const sequencer = createChatSequencer({
86
- chunkSize: context.options.maxTokensPerChunk || this.config.maxTokensPerChunk,
87
- chunkDelayMs: context.options.chunkDelayMs || this.config.defaultChunkDelayMs,
88
- enableDelay: !!context.options.chunkDelayMs
89
- });
90
- // 4. 生成事件序列并写入流
91
- const eventStream = sequencer.sequenceRequest(request, context.model, context.requestId);
92
- await writer.writeChatEvents(eventStream);
93
- // 5. 完成流
94
- writer.complete();
95
- }
96
- catch (error) {
97
- throw this.wrapError('REQUEST_CONVERSION_ERROR', error, context.requestId);
98
- }
99
- }
100
- /**
101
- * 使用函数化架构处理响应转换
102
- */
103
- async processResponseToSseWithFunctions(response, context, stream) {
104
- try {
105
- // 1. 验证响应
106
- this.validateResponse(response);
107
- // 2. 创建流写入器
108
- const writer = createChatStreamWriter(stream, {
109
- onEvent: (event) => this.updateStats(context, event),
110
- onError: (error) => this.handleStreamError(context, error, stream)
111
- });
112
- // 3. 创建事件序列化器
113
- const sequencer = createChatSequencer({
114
- chunkSize: context.options.maxTokensPerChunk || this.config.maxTokensPerChunk,
115
- chunkDelayMs: context.options.chunkDelayMs || this.config.defaultChunkDelayMs,
116
- enableDelay: !!context.options.chunkDelayMs
117
- });
118
- // 4. 生成事件序列并写入流
119
- const eventStream = sequencer.sequenceResponse(response, context.model, context.requestId);
120
- await writer.writeChatEvents(eventStream);
121
- // 5. 完成流
122
- writer.complete();
123
- }
124
- catch (error) {
125
- throw this.wrapError('RESPONSE_CONVERSION_ERROR', error, context.requestId);
126
- }
127
- }
128
- /**
129
- * 验证请求格式
130
- */
131
- validateRequest(request) {
132
- // 最小校验,避免依赖不存在的 ValidationUtils 方法
133
- if (!request || typeof request !== 'object' || !Array.isArray(request.messages) || !request.model) {
134
- throw new Error('Invalid ChatCompletionRequest format');
135
- }
136
- }
137
- /**
138
- * 验证响应格式
139
- */
140
- validateResponse(response) {
141
- if (!response || typeof response !== 'object' || !Array.isArray(response.choices) || !response.model) {
142
- throw new Error('Invalid ChatCompletionResponse format');
143
- }
144
- }
145
- /**
146
- * 更新统计信息
147
- */
148
- updateStats(context, event) {
149
- // 尽量兼容 event/event.type 两种字段
150
- const et = (event && (event.event || event.type)) || 'unknown';
151
- if (typeof context.eventStats.totalEvents === 'number')
152
- context.eventStats.totalEvents++;
153
- if (context.eventStats.eventTypes) {
154
- context.eventStats.eventTypes[et] = (context.eventStats.eventTypes[et] || 0) + 1;
155
- }
156
- if (et === 'error' || et === 'chat.error') {
157
- context.eventStats.errorCount++;
158
- }
159
- // 更新时间戳
160
- if (et === 'chat_chunk') {
161
- context.eventStats.totalChunks++;
162
- try {
163
- const chunkObj = typeof event?.data === 'string' ? JSON.parse(event.data) : event?.data;
164
- const choice = chunkObj?.choices?.[0];
165
- const deltaContent = choice?.delta?.content;
166
- if (typeof deltaContent === 'string') {
167
- context.eventStats.totalTokens += deltaContent.length;
168
- }
169
- }
170
- catch { /* ignore parse errors */ }
171
- }
172
- if (typeof event?.timestamp === 'number')
173
- context.eventStats.lastEventTime = event.timestamp;
174
- }
175
- /**
176
- * 包装错误
177
- */
178
- wrapError(code, originalError, requestId) {
179
- return ErrorUtils.createError(`${code}: ${originalError.message}`, code, { requestId, originalError });
180
- }
181
- /**
182
- * 处理流错误
183
- */
184
- handleStreamError(context, error, stream) {
185
- context.eventStats.errorCount++;
186
- const wrappedError = this.wrapError('STREAM_ERROR', error, context.requestId);
187
- if (stream.writable) {
188
- stream.destroy(wrappedError);
189
- }
190
- }
191
- /**
192
- * 完成流
193
- */
194
- completeStream(context, stream) {
195
- context.eventStats.endTime = Date.now();
196
- context.eventStats.duration = context.eventStats.endTime - context.eventStats.startTime;
197
- if (stream.writable) {
198
- stream.end();
199
- }
200
- }
201
- /**
202
- * 中止流
203
- */
204
- abortStream(context, stream, error) {
205
- context.eventStats.endTime = Date.now();
206
- context.eventStats.duration = context.eventStats.endTime - context.eventStats.startTime;
207
- if (error) {
208
- context.eventStats.errorCount++;
209
- }
210
- if (stream.writable) {
211
- stream.destroy(error);
212
- }
213
- }
214
- /**
215
- * 创建请求上下文
216
- */
217
- createRequestContext(request, options) {
218
- const eventStats = {
219
- totalChunks: 0,
220
- totalTokens: 0,
221
- totalChoices: 0,
222
- totalToolCalls: 0,
223
- startTime: Date.now(),
224
- tokenRate: 0,
225
- chunkRate: 0,
226
- errorCount: 0,
227
- retryCount: 0,
228
- totalEvents: 0,
229
- eventTypes: {}
230
- };
231
- return {
232
- requestId: options.requestId,
233
- model: request.model,
234
- chatRequest: request,
235
- options,
236
- startTime: Date.now(),
237
- sequenceCounter: 0,
238
- choiceIndexCounter: 0,
239
- toolCallIndexCounter: 0,
240
- currentChunk: {},
241
- isStreaming: true,
242
- eventStats
243
- };
244
- }
245
- /**
246
- * 创建响应上下文
247
- */
248
- createResponseContext(response, options) {
249
- const eventStats = {
250
- totalChunks: 0,
251
- totalTokens: 0,
252
- totalChoices: 0,
253
- totalToolCalls: 0,
254
- startTime: Date.now(),
255
- tokenRate: 0,
256
- chunkRate: 0,
257
- errorCount: 0,
258
- retryCount: 0,
259
- totalEvents: 0,
260
- eventTypes: {}
261
- };
262
- return {
263
- requestId: options.requestId,
264
- model: response.model,
265
- chatRequest: {},
266
- options,
267
- startTime: Date.now(),
268
- sequenceCounter: 0,
269
- choiceIndexCounter: 0,
270
- toolCallIndexCounter: 0,
271
- currentChunk: {},
272
- isStreaming: true,
273
- eventStats
274
- };
275
- }
276
- /**
277
- * 获取上下文
278
- */
279
- getContext(requestId) {
280
- return this.contexts.get(requestId);
281
- }
282
- /**
283
- * 清理上下文
284
- */
285
- clearContext(requestId) {
286
- this.contexts.delete(requestId);
287
- }
288
- /**
289
- * 获取所有活跃的上下文
290
- */
291
- getActiveContexts() {
292
- return new Map(this.contexts);
293
- }
294
- }
295
- // 为了向后兼容,导出原有名称
296
- export const ChatJsonToSseConverter = ChatJsonToSseConverterRefactored;
@@ -1,55 +0,0 @@
1
- /**
2
- * Chat协议事件生成器
3
- * 提供纯函数,将Chat响应数据转换为SSE事件对象,不处理流写入
4
- */
5
- import { ChatSseEvent, ChatToolCall } from '../../types/index.js';
6
- export interface ChatEventGeneratorConfig {
7
- chunkSize: number;
8
- chunkDelayMs: number;
9
- enableIdGeneration: boolean;
10
- enableTimestampGeneration: boolean;
11
- }
12
- export interface ChatEventGeneratorContext {
13
- model: string;
14
- requestId: string;
15
- choiceIndex: number;
16
- toolCallIndexCounter: number;
17
- contentIndexCounter: Map<string, number>;
18
- }
19
- export declare const DEFAULT_CHAT_EVENT_GENERATOR_CONFIG: ChatEventGeneratorConfig;
20
- /**
21
- * 创建默认上下文
22
- */
23
- export declare function createDefaultContext(model: string, requestId: string): ChatEventGeneratorContext;
24
- /**
25
- * 构建role delta事件
26
- */
27
- export declare function buildRoleDelta(role: string, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): ChatSseEvent[];
28
- /**
29
- * 构建reasoning delta事件
30
- */
31
- export declare function buildReasoningDeltas(reasoning: string, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): Generator<ChatSseEvent>;
32
- /**
33
- * 构建content delta事件
34
- */
35
- export declare function buildContentDeltas(content: string, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): Generator<ChatSseEvent>;
36
- /**
37
- * 构建tool_call开始事件
38
- */
39
- export declare function buildToolCallStart(toolCall: ChatToolCall, toolCallIndex: number, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): ChatSseEvent;
40
- /**
41
- * 构建tool_call arguments delta事件
42
- */
43
- export declare function buildToolCallArgsDeltas(args: string, toolCallIndex: number, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): Generator<ChatSseEvent>;
44
- /**
45
- * 构建finish_reason事件
46
- */
47
- export declare function buildFinishEvent(finishReason: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'function_call', context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): ChatSseEvent;
48
- /**
49
- * 构建done事件
50
- */
51
- export declare function buildDoneEvent(context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): ChatSseEvent;
52
- /**
53
- * 构建error事件
54
- */
55
- export declare function buildErrorEvent(error: Error, context: ChatEventGeneratorContext, config?: ChatEventGeneratorConfig): ChatSseEvent;
@@ -1,233 +0,0 @@
1
- /**
2
- * Chat协议事件生成器
3
- * 提供纯函数,将Chat响应数据转换为SSE事件对象,不处理流写入
4
- */
5
- import { IdUtils, TimeUtils } from '../../shared/utils.js';
6
- // 默认配置
7
- export const DEFAULT_CHAT_EVENT_GENERATOR_CONFIG = {
8
- chunkSize: 12,
9
- chunkDelayMs: 8,
10
- enableIdGeneration: true,
11
- enableTimestampGeneration: true
12
- };
13
- /**
14
- * 创建默认上下文
15
- */
16
- export function createDefaultContext(model, requestId) {
17
- return {
18
- model,
19
- requestId,
20
- choiceIndex: 0,
21
- toolCallIndexCounter: 0,
22
- contentIndexCounter: new Map()
23
- };
24
- }
25
- /**
26
- * 生成基础chunk数据
27
- */
28
- function createBaseChunk(context, config) {
29
- return {
30
- id: config.enableIdGeneration ? IdUtils.generateRequestId() : context.requestId,
31
- object: 'chat.completion.chunk',
32
- created: config.enableTimestampGeneration ? Math.floor(TimeUtils.now() / 1000) : 0,
33
- model: context.model
34
- };
35
- }
36
- /**
37
- * 构建role delta事件
38
- */
39
- export function buildRoleDelta(role, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
40
- const baseChunk = createBaseChunk(context, config);
41
- const chunk = {
42
- ...baseChunk,
43
- choices: [{
44
- index: context.choiceIndex,
45
- delta: { role: role },
46
- logprobs: null,
47
- finish_reason: null
48
- }]
49
- };
50
- return [{
51
- event: 'chat_chunk',
52
- type: 'chat_chunk',
53
- timestamp: TimeUtils.now(),
54
- data: JSON.stringify(chunk),
55
- sequenceNumber: 0,
56
- protocol: 'chat',
57
- direction: 'json_to_sse'
58
- }];
59
- }
60
- /**
61
- * 构建reasoning delta事件
62
- */
63
- export function* buildReasoningDeltas(reasoning, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
64
- if (!reasoning)
65
- return;
66
- const baseChunk = createBaseChunk(context, config);
67
- const chunk = {
68
- ...baseChunk,
69
- choices: [{
70
- index: context.choiceIndex,
71
- delta: { reasoning },
72
- logprobs: null,
73
- finish_reason: null
74
- }]
75
- };
76
- yield {
77
- event: 'chat_chunk',
78
- type: 'chat_chunk',
79
- timestamp: TimeUtils.now(),
80
- data: JSON.stringify(chunk),
81
- sequenceNumber: 0,
82
- protocol: 'chat',
83
- direction: 'json_to_sse'
84
- };
85
- }
86
- /**
87
- * 构建content delta事件
88
- */
89
- export function* buildContentDeltas(content, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
90
- if (!content)
91
- return;
92
- const baseChunk = createBaseChunk(context, config);
93
- const chunk = {
94
- ...baseChunk,
95
- choices: [{
96
- index: context.choiceIndex,
97
- delta: { content },
98
- logprobs: null,
99
- finish_reason: null
100
- }]
101
- };
102
- yield {
103
- event: 'chat_chunk',
104
- type: 'chat_chunk',
105
- timestamp: TimeUtils.now(),
106
- data: JSON.stringify(chunk),
107
- sequenceNumber: 0,
108
- protocol: 'chat',
109
- direction: 'json_to_sse'
110
- };
111
- }
112
- /**
113
- * 构建tool_call开始事件
114
- */
115
- export function buildToolCallStart(toolCall, toolCallIndex, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
116
- const baseChunk = createBaseChunk(context, config);
117
- const chunk = {
118
- ...baseChunk,
119
- choices: [{
120
- index: context.choiceIndex,
121
- delta: {
122
- tool_calls: [{
123
- index: toolCallIndex,
124
- id: toolCall.id,
125
- type: toolCall.type || 'function',
126
- function: {
127
- name: toolCall.function.name
128
- }
129
- }]
130
- },
131
- logprobs: null,
132
- finish_reason: null
133
- }]
134
- };
135
- return {
136
- event: 'chat_chunk',
137
- type: 'chat_chunk',
138
- timestamp: TimeUtils.now(),
139
- data: JSON.stringify(chunk),
140
- sequenceNumber: 0,
141
- protocol: 'chat',
142
- direction: 'json_to_sse'
143
- };
144
- }
145
- /**
146
- * 构建tool_call arguments delta事件
147
- */
148
- export function* buildToolCallArgsDeltas(args, toolCallIndex, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
149
- if (!args)
150
- return;
151
- const baseChunk = createBaseChunk(context, config);
152
- const chunk = {
153
- ...baseChunk,
154
- choices: [{
155
- index: context.choiceIndex,
156
- delta: {
157
- tool_calls: [{
158
- index: toolCallIndex,
159
- function: { arguments: args }
160
- }]
161
- },
162
- logprobs: null,
163
- finish_reason: null
164
- }]
165
- };
166
- yield {
167
- event: 'chat_chunk',
168
- type: 'chat_chunk',
169
- timestamp: TimeUtils.now(),
170
- data: JSON.stringify(chunk),
171
- sequenceNumber: 0,
172
- protocol: 'chat',
173
- direction: 'json_to_sse'
174
- };
175
- }
176
- /**
177
- * 构建finish_reason事件
178
- */
179
- export function buildFinishEvent(finishReason, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
180
- const baseChunk = createBaseChunk(context, config);
181
- const chunk = {
182
- ...baseChunk,
183
- choices: [{
184
- index: context.choiceIndex,
185
- delta: {},
186
- logprobs: null,
187
- finish_reason: finishReason
188
- }]
189
- };
190
- return {
191
- event: 'chat_chunk',
192
- type: 'chat_chunk',
193
- timestamp: TimeUtils.now(),
194
- data: JSON.stringify(chunk),
195
- sequenceNumber: 0,
196
- protocol: 'chat',
197
- direction: 'json_to_sse'
198
- };
199
- }
200
- /**
201
- * 构建done事件
202
- */
203
- export function buildDoneEvent(context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
204
- return {
205
- event: 'chat.done',
206
- type: 'chat.done',
207
- timestamp: TimeUtils.now(),
208
- data: '[DONE]',
209
- sequenceNumber: 0,
210
- protocol: 'chat',
211
- direction: 'json_to_sse'
212
- };
213
- }
214
- /**
215
- * 构建error事件
216
- */
217
- export function buildErrorEvent(error, context, config = DEFAULT_CHAT_EVENT_GENERATOR_CONFIG) {
218
- return {
219
- event: 'error',
220
- type: 'error',
221
- timestamp: TimeUtils.now(),
222
- data: JSON.stringify({
223
- error: {
224
- message: error.message,
225
- type: 'internal_error',
226
- code: 'generation_error'
227
- }
228
- }),
229
- sequenceNumber: 0,
230
- protocol: 'chat',
231
- direction: 'json_to_sse'
232
- };
233
- }
@@ -1,99 +0,0 @@
1
- /**
2
- * Responses协议事件生成器
3
- * 提供纯函数,将Responses响应数据转换为SSE事件对象,不处理流写入
4
- */
5
- import { ResponsesSseEvent, ResponsesResponse, ResponsesOutputItem, ResponsesFunctionCallItem, ResponsesReasoningItem, ResponsesContent } from '../../types/index.js';
6
- export interface ResponsesEventGeneratorConfig {
7
- chunkSize: number;
8
- chunkDelayMs: number;
9
- enableIdGeneration: boolean;
10
- enableTimestampGeneration: boolean;
11
- enableSequenceNumbers: boolean;
12
- enableDelay: boolean;
13
- }
14
- export interface ResponsesEventGeneratorContext {
15
- requestId: string;
16
- model: string;
17
- outputIndexCounter: number;
18
- contentIndexCounter: Map<string, number>;
19
- sequenceCounter: number;
20
- }
21
- export declare const DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG: ResponsesEventGeneratorConfig;
22
- /**
23
- * 创建默认上下文
24
- */
25
- export declare function createDefaultResponsesContext(requestId: string, model: string): ResponsesEventGeneratorContext;
26
- /**
27
- * 构建response.created + response.in_progress事件
28
- * 映射:response.start → response.created + response.in_progress
29
- */
30
- export declare function buildResponseStartEvents(response: ResponsesResponse, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): Generator<ResponsesSseEvent>;
31
- /**
32
- * 构建response.output_item.added事件
33
- * 映射:output_item.start → response.output_item.added
34
- */
35
- export declare function buildOutputItemStartEvent(outputItem: ResponsesOutputItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
36
- /**
37
- * 构建response.content_part.added事件
38
- * 映射:content_part.start → response.content_part.added
39
- */
40
- export declare function buildContentPartStartEvent(outputItemId: string, contentIndex: number, content: ResponsesContent, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
41
- /**
42
- * 构建response.output_text.delta事件流
43
- * 映射:content_part.delta (input_text/output_text/…) → response.output_text.delta
44
- * 对于 reasoning 使用 response.reasoning_text.delta
45
- */
46
- export declare function buildContentPartDeltas(outputItemId: string, contentIndex: number, text: string, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): Generator<ResponsesSseEvent>;
47
- /**
48
- * 构建content_part.done事件
49
- */
50
- export declare function buildContentPartDoneEvent(outputItemId: string, contentIndex: number, content: ResponsesContent | undefined, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
51
- export declare function buildOutputTextDoneEvent(outputItemId: string, contentIndex: number, fullText: string, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
52
- /**
53
- * 构建response.function_call_arguments.delta/done的start部分
54
- * 映射:function_call.start → 隐含在第一个 delta 中
55
- */
56
- /**
57
- * 构建response.function_call_arguments.delta事件流
58
- * 映射:function_call.delta → response.function_call_arguments.delta
59
- */
60
- export declare function buildFunctionCallArgsDeltas(functionCall: ResponsesFunctionCallItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): Generator<ResponsesSseEvent>;
61
- /**
62
- * 构建response.function_call_arguments.done事件
63
- * 映射:function_call.done → response.function_call_arguments.done
64
- */
65
- export declare function buildFunctionCallDoneEvent(functionCall: ResponsesFunctionCallItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
66
- /**
67
- * 构建reasoning.start事件
68
- */
69
- export declare function buildReasoningStartEvent(reasoning: ResponsesReasoningItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
70
- /**
71
- * 构建response.reasoning_text.delta事件流
72
- * 映射:reasoning.delta → response.reasoning_text.delta
73
- */
74
- export declare function buildReasoningDeltas(reasoning: ResponsesReasoningItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): Generator<ResponsesSseEvent>;
75
- /**
76
- * 构建reasoning.done事件
77
- */
78
- export declare function buildReasoningDoneEvent(reasoning: ResponsesReasoningItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
79
- /**
80
- * 构建output_item.done事件
81
- */
82
- export declare function buildOutputItemDoneEvent(outputItem: ResponsesOutputItem, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
83
- /**
84
- * 构建required_action事件
85
- */
86
- export declare function buildRequiredActionEvent(response: ResponsesResponse, requiredAction: any, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
87
- /**
88
- * 构建response.completed事件
89
- * 新增:在 done 之前增加 response.completed
90
- */
91
- export declare function buildResponseCompletedEvent(response: ResponsesResponse, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
92
- /**
93
- * 构建response.done事件
94
- */
95
- export declare function buildResponseDoneEvent(response: ResponsesResponse, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;
96
- /**
97
- * 构建error事件
98
- */
99
- export declare function buildErrorEvent(error: Error, context: ResponsesEventGeneratorContext, config?: ResponsesEventGeneratorConfig): ResponsesSseEvent;