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