@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,263 +0,0 @@
1
- /**
2
- * Responses协议事件编排器
3
- * 负责将Responses响应数据转换为有序的SSE事件流
4
- */
5
- import { buildResponseStartEvents, buildResponseDoneEvent, buildOutputItemStartEvent, buildOutputItemDoneEvent, buildContentPartStartEvent, buildContentPartDeltas, buildContentPartDoneEvent, buildOutputTextDoneEvent, buildFunctionCallArgsDeltas, buildFunctionCallDoneEvent, buildReasoningStartEvent, buildReasoningDeltas, buildReasoningDoneEvent, buildRequiredActionEvent, buildResponseCompletedEvent, buildErrorEvent, DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG, createDefaultResponsesContext } from '../event-generators/responses.js';
6
- // 默认配置
7
- export const DEFAULT_RESPONSES_SEQUENCER_CONFIG = {
8
- ...DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG,
9
- enableValidation: true,
10
- enableRecovery: true,
11
- enableDelay: false,
12
- maxOutputItems: 50,
13
- maxContentParts: 100,
14
- submittedToolOutputs: undefined
15
- };
16
- /**
17
- * 验证响应格式
18
- */
19
- function validateResponse(response, config) {
20
- if (!config.enableValidation)
21
- return;
22
- if (!response.id || !response.model) {
23
- throw new Error('Invalid response: missing required fields');
24
- }
25
- if (!response.output || !Array.isArray(response.output)) {
26
- throw new Error('Invalid response: missing or invalid output array');
27
- }
28
- if (response.output.length > config.maxOutputItems) {
29
- throw new Error(`Too many output items: ${response.output.length} > ${config.maxOutputItems}`);
30
- }
31
- }
32
- /**
33
- * 异步生成器:为事件添加延迟
34
- */
35
- async function* withDelay(events, config) {
36
- for await (const event of events) {
37
- yield event;
38
- if (config.enableDelay && config.chunkDelayMs > 0) {
39
- await new Promise(resolve => setTimeout(resolve, config.chunkDelayMs));
40
- }
41
- }
42
- }
43
- /**
44
- * 序列化消息输出项
45
- */
46
- async function* sequenceMessageItem(item, context, config) {
47
- // 1. 发送output_item.start事件
48
- yield buildOutputItemStartEvent(item, context, config);
49
- // 2. 发送content_part事件序列
50
- for (let contentIndex = 0; contentIndex < item.content.length; contentIndex++) {
51
- if (contentIndex >= config.maxContentParts) {
52
- if (config.enableValidation) {
53
- throw new Error(`Too many content parts: ${contentIndex} >= ${config.maxContentParts}`);
54
- }
55
- break;
56
- }
57
- const content = item.content[contentIndex];
58
- context.contentIndexCounter.set(item.id, contentIndex);
59
- // 2a. 发送content_part.start事件
60
- yield buildContentPartStartEvent(item.id, contentIndex, content, context, config);
61
- // 2b. 发送content_part.delta事件流(仅对文本内容)
62
- const isTextContent = (content.type === 'input_text' || content.type === 'output_text') && !!content.text;
63
- if (isTextContent && content.text) {
64
- yield* withDelay(buildContentPartDeltas(item.id, contentIndex, content.text, context, config), config);
65
- if (content.type === 'output_text') {
66
- yield buildOutputTextDoneEvent(item.id, contentIndex, content.text, context, config);
67
- }
68
- }
69
- // 2c. 发送content_part.done事件
70
- yield buildContentPartDoneEvent(item.id, contentIndex, content, context, config);
71
- }
72
- // 3. 发送output_item.done事件
73
- yield buildOutputItemDoneEvent(item, context, config);
74
- }
75
- /**
76
- * 序列化函数调用输出项
77
- */
78
- async function* sequenceFunctionCallItem(item, context, config) {
79
- // 1. 发送output_item.start事件
80
- yield buildOutputItemStartEvent(item, context, config);
81
- // 2. 发送function_call.delta事件流(arguments)
82
- if (item.arguments) {
83
- yield* withDelay(buildFunctionCallArgsDeltas(item, context, config), config);
84
- }
85
- // 3. 发送function_call.done事件
86
- yield buildFunctionCallDoneEvent(item, context, config);
87
- // 4. 发送output_item.done事件
88
- yield buildOutputItemDoneEvent(item, context, config);
89
- }
90
- /**
91
- * 序列化函数调用输出项
92
- */
93
- async function* sequenceFunctionCallOutputItem(item, context, config) {
94
- yield buildOutputItemStartEvent(item, context, config);
95
- yield buildOutputItemDoneEvent(item, context, config);
96
- }
97
- /**
98
- * 序列化推理输出项
99
- */
100
- async function* sequenceReasoningItem(item, context, config) {
101
- // 1. 发送output_item.start事件
102
- yield buildOutputItemStartEvent(item, context, config);
103
- // 2. 发送reasoning.start事件
104
- yield buildReasoningStartEvent(item, context, config);
105
- // 3. 发送reasoning.delta事件流
106
- yield* withDelay(buildReasoningDeltas(item, context, config), config);
107
- // 4. 发送reasoning.done事件
108
- yield buildReasoningDoneEvent(item, context, config);
109
- // 5. 发送output_item.done事件
110
- yield buildOutputItemDoneEvent(item, context, config);
111
- }
112
- /**
113
- * 序列化单个输出项
114
- */
115
- async function* sequenceOutputItem(item, context, config) {
116
- try {
117
- switch (item.type) {
118
- case 'message':
119
- yield* sequenceMessageItem(item, context, config);
120
- break;
121
- case 'function_call':
122
- yield* sequenceFunctionCallItem(item, context, config);
123
- break;
124
- case 'function_call_output':
125
- yield* sequenceFunctionCallOutputItem(item, context, config);
126
- break;
127
- case 'reasoning':
128
- yield* sequenceReasoningItem(item, context, config);
129
- break;
130
- default:
131
- if (config.enableValidation) {
132
- throw new Error(`Unknown output item type: ${item.type}`);
133
- }
134
- }
135
- }
136
- catch (error) {
137
- if (config.enableRecovery) {
138
- yield buildErrorEvent(error, context, config);
139
- }
140
- else {
141
- throw error;
142
- }
143
- }
144
- }
145
- /**
146
- * 主编排器:将Responses响应转换为有序的SSE事件流
147
- */
148
- export async function* sequenceResponse(response, context, config = DEFAULT_RESPONSES_SEQUENCER_CONFIG) {
149
- try {
150
- // 1. 验证响应格式
151
- validateResponse(response, config);
152
- // 2. 发送response.start事件
153
- yield* buildResponseStartEvents(response, context, config);
154
- const submittedOutputs = Array.isArray(config.submittedToolOutputs)
155
- ? config.submittedToolOutputs
156
- : [];
157
- for (let i = 0; i < submittedOutputs.length; i++) {
158
- context.outputIndexCounter = i;
159
- yield* sequenceFunctionCallOutputItem(submittedOutputs[i], context, config);
160
- }
161
- const outputOffset = submittedOutputs.length;
162
- // 3. 序列化所有输出项
163
- for (let outputIndex = 0; outputIndex < response.output.length; outputIndex++) {
164
- const item = response.output[outputIndex];
165
- context.outputIndexCounter = outputOffset + outputIndex;
166
- yield* sequenceOutputItem(item, context, config);
167
- // 输出项间添加小延迟(如果启用)
168
- if (config.enableDelay && config.chunkDelayMs > 0 && outputIndex < response.output.length - 1) {
169
- await new Promise(resolve => setTimeout(resolve, config.chunkDelayMs * 2));
170
- }
171
- }
172
- // 4. 发送required_action事件(如果有)
173
- if (response.required_action) {
174
- yield buildRequiredActionEvent(response, response.required_action, context, config);
175
- }
176
- // 5. 发送response.completed + response.done事件
177
- yield buildResponseCompletedEvent(response, context, config);
178
- yield buildResponseDoneEvent(response, context, config);
179
- }
180
- catch (error) {
181
- // 发送错误事件
182
- yield buildErrorEvent(error, context, config);
183
- }
184
- }
185
- /**
186
- * 序列化Responses请求(用于请求→SSE转换)
187
- */
188
- export async function* sequenceRequest(request, context, config = DEFAULT_RESPONSES_SEQUENCER_CONFIG) {
189
- try {
190
- // 验证请求格式
191
- if (config.enableValidation && (!request.model || !request.input)) {
192
- throw new Error('Invalid request: missing required fields');
193
- }
194
- // 对于请求,我们主要回显输入内容
195
- yield* buildResponseStartEvents({
196
- id: context.requestId,
197
- object: 'response',
198
- created_at: Math.floor(Date.now() / 1000),
199
- status: 'in_progress',
200
- model: request.model,
201
- output: [],
202
- usage: { input_tokens: 0, output_tokens: 0, total_tokens: 0 }
203
- }, context, config);
204
- // 回显输入消息作为输出项
205
- if (request.input && Array.isArray(request.input)) {
206
- for (let inputIndex = 0; inputIndex < request.input.length; inputIndex++) {
207
- const inputItem = request.input[inputIndex];
208
- context.outputIndexCounter = inputIndex;
209
- // 将输入转换为输出项格式
210
- const outputItem = {
211
- id: `${context.requestId}-input-${inputIndex}`,
212
- type: 'message',
213
- status: 'completed',
214
- role: inputItem.role,
215
- content: inputItem.content
216
- };
217
- yield* sequenceMessageItem(outputItem, context, config);
218
- }
219
- }
220
- const syntheticResponse = {
221
- id: context.requestId,
222
- object: 'response',
223
- created_at: Math.floor(Date.now() / 1000),
224
- status: 'completed',
225
- model: request.model,
226
- output: [],
227
- usage: { input_tokens: 0, output_tokens: 0, total_tokens: 0 }
228
- };
229
- yield buildResponseCompletedEvent(syntheticResponse, context, config);
230
- yield buildResponseDoneEvent(syntheticResponse, context, config);
231
- }
232
- catch (error) {
233
- yield buildErrorEvent(error, context, config);
234
- }
235
- }
236
- /**
237
- * 创建Responses事件序列化器工厂
238
- */
239
- export function createResponsesSequencer(config) {
240
- const finalConfig = { ...DEFAULT_RESPONSES_SEQUENCER_CONFIG, ...config };
241
- return {
242
- /**
243
- * 序列化响应
244
- */
245
- async *sequenceResponse(response, requestId) {
246
- const context = createDefaultResponsesContext(requestId, response.model);
247
- yield* sequenceResponse(response, context, finalConfig);
248
- },
249
- /**
250
- * 序列化请求
251
- */
252
- async *sequenceRequest(request, requestId) {
253
- const context = createDefaultResponsesContext(requestId, request.model);
254
- yield* sequenceRequest(request, context, finalConfig);
255
- },
256
- /**
257
- * 获取当前配置
258
- */
259
- getConfig() {
260
- return { ...finalConfig };
261
- }
262
- };
263
- }
@@ -1,32 +0,0 @@
1
- import type { ResponsesFunctionCallOutputItem } from '../types/index.js';
2
- export type SseProtocol = 'openai-chat' | 'openai-responses' | 'anthropic-messages';
3
- export type SseStreamLike = any;
4
- export type SseStreamInput = any;
5
- export interface JsonToSseContext {
6
- requestId: string;
7
- model?: string;
8
- direction?: 'request' | 'response';
9
- resumeToolOutputs?: ResponsesFunctionCallOutputItem[];
10
- }
11
- export interface SseToJsonContext {
12
- requestId: string;
13
- model?: string;
14
- direction?: 'request' | 'response';
15
- }
16
- export interface NormalizeSseContext {
17
- requestId: string;
18
- protocol: SseProtocol;
19
- }
20
- export interface SseCodec {
21
- protocol: SseProtocol;
22
- convertJsonToSse(payload: unknown, context: JsonToSseContext): Promise<SseStreamLike>;
23
- convertSseToJson(stream: SseStreamInput, context: SseToJsonContext): Promise<unknown>;
24
- normalize?(stream: SseStreamInput, context: NormalizeSseContext): Promise<SseStreamInput>;
25
- }
26
- export declare class SseCodecRegistry {
27
- private readonly codecs;
28
- register(codec: SseCodec): void;
29
- get(protocol: SseProtocol): SseCodec;
30
- list(): SseCodec[];
31
- }
32
- export declare const defaultSseCodecRegistry: SseCodecRegistry;
@@ -1,106 +0,0 @@
1
- import { chatConverters, responsesConverters, anthropicConverters } from '../index.js';
2
- export class SseCodecRegistry {
3
- codecs = new Map();
4
- register(codec) {
5
- this.codecs.set(codec.protocol, codec);
6
- }
7
- get(protocol) {
8
- const codec = this.codecs.get(protocol);
9
- if (!codec) {
10
- throw new Error(`SSE codec for protocol "${protocol}" is not registered`);
11
- }
12
- return codec;
13
- }
14
- list() {
15
- return Array.from(this.codecs.values());
16
- }
17
- }
18
- export const defaultSseCodecRegistry = new SseCodecRegistry();
19
- function resolveModelId(payload, fallback) {
20
- if (typeof fallback === 'string' && fallback.trim()) {
21
- return fallback;
22
- }
23
- if (!payload || typeof payload !== 'object') {
24
- return 'unknown';
25
- }
26
- const record = payload;
27
- if (typeof record.model === 'string') {
28
- return record.model;
29
- }
30
- if (record.response && typeof record.response === 'object') {
31
- const inner = record.response;
32
- if (typeof inner.model === 'string') {
33
- return inner.model;
34
- }
35
- }
36
- return 'unknown';
37
- }
38
- function createChatCodec() {
39
- return {
40
- protocol: 'openai-chat',
41
- async convertJsonToSse(payload, context) {
42
- const model = resolveModelId(payload, context.model);
43
- return chatConverters.jsonToSse
44
- .convertResponseToJsonToSse(payload, {
45
- requestId: context.requestId,
46
- model
47
- });
48
- },
49
- async convertSseToJson(stream, context) {
50
- return chatConverters.sseToJson.convertSseToJson(stream, {
51
- requestId: context.requestId,
52
- model: context.model ?? 'unknown'
53
- });
54
- },
55
- async normalize(stream) {
56
- return stream;
57
- }
58
- };
59
- }
60
- function createResponsesCodec() {
61
- return {
62
- protocol: 'openai-responses',
63
- async convertJsonToSse(payload, context) {
64
- const model = resolveModelId(payload, context.model);
65
- return responsesConverters.jsonToSse
66
- .convertResponseToJsonToSse(payload, {
67
- requestId: context.requestId,
68
- model,
69
- resumeToolOutputs: context.resumeToolOutputs
70
- });
71
- },
72
- async convertSseToJson(stream, context) {
73
- return responsesConverters.sseToJson.convertSseToJson(stream, {
74
- requestId: context.requestId,
75
- model: context.model ?? 'unknown'
76
- });
77
- },
78
- async normalize(stream) {
79
- return stream;
80
- }
81
- };
82
- }
83
- function createAnthropicCodec() {
84
- return {
85
- protocol: 'anthropic-messages',
86
- async convertJsonToSse(payload, context) {
87
- const model = resolveModelId(payload, context.model);
88
- return anthropicConverters.jsonToSse
89
- .convertResponseToJsonToSse(payload, {
90
- requestId: context.requestId,
91
- model
92
- });
93
- },
94
- async convertSseToJson(stream, context) {
95
- return anthropicConverters.sseToJson.convertSseToJson(stream, {
96
- requestId: context.requestId
97
- });
98
- },
99
- async normalize(stream) {
100
- return stream;
101
- }
102
- };
103
- }
104
- defaultSseCodecRegistry.register(createChatCodec());
105
- defaultSseCodecRegistry.register(createResponsesCodec());
106
- defaultSseCodecRegistry.register(createAnthropicCodec());
@@ -1,4 +0,0 @@
1
- import { PassThrough, Readable } from 'node:stream';
2
- import { ChatSseEvent } from '../types/index.js';
3
- export declare function serializeChatEventToSSE(evt: ChatSseEvent): string;
4
- export declare function toSSETextStream(objectEventStream: Readable): PassThrough;
@@ -1,40 +0,0 @@
1
- import { PassThrough } from 'node:stream';
2
- // Serialize an internal ChatSseEvent (object-mode) to SSE wire frames
3
- export function serializeChatEventToSSE(evt) {
4
- const lines = [];
5
- // Standard SSE fields
6
- if (evt.event)
7
- lines.push(`event: ${evt.event}`);
8
- if (typeof evt.data === 'string')
9
- lines.push(`data: ${evt.data}`);
10
- else
11
- lines.push(`data: ${JSON.stringify(evt.data ?? {})}`);
12
- return lines.join('\n') + '\n\n';
13
- }
14
- // Convert a Readable of ChatSseEvent objects into a text SSE stream
15
- export function toSSETextStream(objectEventStream) {
16
- const out = new PassThrough();
17
- (async () => {
18
- try {
19
- for await (const evt of objectEventStream) {
20
- const frame = serializeChatEventToSSE(evt);
21
- if (!out.write(frame))
22
- await new Promise(r => out.once('drain', r));
23
- }
24
- }
25
- catch {
26
- // emit minimal error frame, then close
27
- try {
28
- out.write('data: {"error":"chat sse serialization failed"}\n\n');
29
- }
30
- catch { }
31
- }
32
- finally {
33
- try {
34
- out.end();
35
- }
36
- catch { }
37
- }
38
- })();
39
- return out;
40
- }