@jsonstudio/llms 0.4.3 → 0.4.4

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