@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
@@ -201,7 +201,8 @@ export class ChatSseToJsonConverter {
201
201
  */
202
202
  async processChatChunk(event, context) {
203
203
  try {
204
- const chunk = JSON.parse(event.data);
204
+ const payload = typeof event.data === 'string' ? event.data : JSON.stringify(event.data ?? {});
205
+ const chunk = JSON.parse(payload);
205
206
  // 验证chunk格式
206
207
  if (context.options.validateChunks) {
207
208
  this.validateChatChunk(chunk);
@@ -237,8 +238,11 @@ export class ChatSseToJsonConverter {
237
238
  context.choiceIndexMap.set(choiceIndex, choiceBuilder);
238
239
  context.currentResponse.choices?.push({
239
240
  index: choiceIndex,
240
- message: {},
241
- finish_reason: null,
241
+ message: {
242
+ role: 'assistant',
243
+ content: ''
244
+ },
245
+ finish_reason: 'stop',
242
246
  logprobs: choice.logprobs
243
247
  });
244
248
  }
@@ -261,8 +265,8 @@ export class ChatSseToJsonConverter {
261
265
  return {
262
266
  index,
263
267
  delta: {},
264
- finishReason: null,
265
- logprobs: null,
268
+ finishReason: undefined,
269
+ logprobs: undefined,
266
270
  messageBuilder: {
267
271
  role: undefined,
268
272
  content: '',
@@ -280,7 +284,7 @@ export class ChatSseToJsonConverter {
280
284
  /**
281
285
  * 处理delta
282
286
  */
283
- async processDelta(delta, choiceBuilder, context) {
287
+ async processDelta(delta, choiceBuilder, _context) {
284
288
  const messageBuilder = choiceBuilder.messageBuilder;
285
289
  // 处理role
286
290
  if (delta.role) {
@@ -314,7 +318,7 @@ export class ChatSseToJsonConverter {
314
318
  // 处理tool_calls
315
319
  if (delta.tool_calls && Array.isArray(delta.tool_calls)) {
316
320
  for (const toolCallDelta of delta.tool_calls) {
317
- await this.processToolCallDelta(toolCallDelta, choiceBuilder, context);
321
+ await this.processToolCallDelta(toolCallDelta, choiceBuilder);
318
322
  }
319
323
  }
320
324
  // 合并delta到choiceBuilder
@@ -323,7 +327,7 @@ export class ChatSseToJsonConverter {
323
327
  /**
324
328
  * 处理tool_call delta
325
329
  */
326
- async processToolCallDelta(toolCallDelta, choiceBuilder, context) {
330
+ async processToolCallDelta(toolCallDelta, choiceBuilder) {
327
331
  const toolCallIndex = toolCallDelta.index;
328
332
  // 获取或创建tool_call构建器
329
333
  let toolCallBuilder = choiceBuilder.toolCallBuilders.get(toolCallIndex);
@@ -367,8 +371,9 @@ export class ChatSseToJsonConverter {
367
371
  */
368
372
  updateResponseChoice(choiceIndex, choiceBuilder, context) {
369
373
  const responseChoice = context.currentResponse.choices?.[choiceIndex];
370
- if (!responseChoice)
374
+ if (!responseChoice) {
371
375
  return;
376
+ }
372
377
  const messageBuilder = choiceBuilder.messageBuilder;
373
378
  // 构建message
374
379
  const message = {
@@ -382,12 +387,15 @@ export class ChatSseToJsonConverter {
382
387
  }
383
388
  // 构建tool_calls
384
389
  const toolCalls = [];
385
- for (const [_, toolCallBuilder] of choiceBuilder.toolCallBuilders) {
386
- if (toolCallBuilder.id) {
390
+ for (const toolCallBuilder of choiceBuilder.toolCallBuilders.values()) {
391
+ if (toolCallBuilder.id && toolCallBuilder.function) {
387
392
  toolCalls.push({
388
393
  id: toolCallBuilder.id,
389
394
  type: toolCallBuilder.type || 'function',
390
- function: toolCallBuilder.function
395
+ function: {
396
+ name: toolCallBuilder.function.name ?? '',
397
+ arguments: toolCallBuilder.function.arguments ?? ''
398
+ }
391
399
  });
392
400
  }
393
401
  }
@@ -395,7 +403,7 @@ export class ChatSseToJsonConverter {
395
403
  message.tool_calls = toolCalls;
396
404
  }
397
405
  responseChoice.message = message;
398
- responseChoice.finish_reason = choiceBuilder.finishReason;
406
+ responseChoice.finish_reason = choiceBuilder.finishReason ?? responseChoice.finish_reason;
399
407
  context.eventStats.totalToolCalls += toolCalls.length;
400
408
  }
401
409
  /**
@@ -405,9 +413,11 @@ export class ChatSseToJsonConverter {
405
413
  context.isCompleted = true;
406
414
  // 解析done事件数据(如果有的话)
407
415
  try {
408
- const doneData = JSON.parse(event.data);
409
- if (doneData.totalTokens) {
410
- context.eventStats.totalTokens = doneData.totalTokens;
416
+ if (typeof event.data === 'string') {
417
+ const doneData = JSON.parse(event.data);
418
+ if (typeof doneData.totalTokens === 'number') {
419
+ context.eventStats.totalTokens = doneData.totalTokens;
420
+ }
411
421
  }
412
422
  }
413
423
  catch (e) {
@@ -417,12 +427,15 @@ export class ChatSseToJsonConverter {
417
427
  /**
418
428
  * 处理error事件
419
429
  */
420
- async processErrorEvent(event, context) {
430
+ async processErrorEvent(event, _context) {
421
431
  try {
422
- const errorData = JSON.parse(event.data);
423
- const error = new Error(errorData.error || 'Unknown SSE error');
424
- error.code = errorData.code || 'SSE_ERROR';
425
- throw ErrorUtils.createError(error.message, CHAT_CONVERSION_ERROR_CODES.STREAM_ERROR, { errorData, event });
432
+ const rawPayload = typeof event.data === 'string' ? event.data : JSON.stringify(event.data ?? {});
433
+ const errorData = JSON.parse(rawPayload);
434
+ const errorMessage = typeof errorData.error === 'string' ? errorData.error : 'Unknown SSE error';
435
+ const code = typeof errorData.code === 'string' ? errorData.code : 'SSE_ERROR';
436
+ const typedError = new Error(errorMessage);
437
+ typedError.code = code;
438
+ throw ErrorUtils.createError(typedError.message, CHAT_CONVERSION_ERROR_CODES.STREAM_ERROR, { errorData, event });
426
439
  }
427
440
  catch (parseError) {
428
441
  throw ErrorUtils.createError(`SSE error event: ${event.data}`, CHAT_CONVERSION_ERROR_CODES.STREAM_ERROR, { event });
@@ -433,8 +446,9 @@ export class ChatSseToJsonConverter {
433
446
  */
434
447
  buildPartialResponse(context) {
435
448
  const choices = context.currentResponse.choices || [];
436
- if (choices.length === 0)
449
+ if (choices.length === 0) {
437
450
  return null;
451
+ }
438
452
  return {
439
453
  id: context.currentResponse.id || '',
440
454
  object: 'chat.completion',
@@ -475,7 +489,7 @@ export class ChatSseToJsonConverter {
475
489
  /**
476
490
  * 构建使用量信息
477
491
  */
478
- buildUsageInfo(context) {
492
+ buildUsageInfo(_context) {
479
493
  // 这里可以基于token计数来计算usage
480
494
  // 暂时返回null,后续可以实现更精确的token计数
481
495
  return null;
@@ -76,16 +76,18 @@ function parseSseLine(line) {
76
76
  * 将原始SSE行组装为事件
77
77
  */
78
78
  export function assembleSseEvent(lines) {
79
- if (lines.length === 0)
79
+ if (lines.length === 0) {
80
80
  return null;
81
+ }
81
82
  const event = {
82
83
  event: 'message', // 默认事件类型
83
84
  data: ''
84
85
  };
85
86
  for (const line of lines) {
86
87
  const { field, value } = parseSseLine(line);
87
- if (!field)
88
+ if (!field) {
88
89
  continue;
90
+ }
89
91
  switch (field) {
90
92
  case 'id':
91
93
  event.id = value;
@@ -94,7 +96,7 @@ export function assembleSseEvent(lines) {
94
96
  event.event = value;
95
97
  break;
96
98
  case 'data':
97
- event.data = event.data ? event.data + '\n' + value : value;
99
+ event.data = event.data ? `${event.data}\n${value}` : value;
98
100
  break;
99
101
  case 'retry':
100
102
  event.retry = value;
@@ -119,7 +121,8 @@ function safeJsonParse(data) {
119
121
  return JSON.parse(data);
120
122
  }
121
123
  catch (error) {
122
- throw new Error(`Invalid JSON data: ${error.message}`);
124
+ const message = error instanceof Error ? error.message : String(error);
125
+ throw new Error(`Invalid JSON data: ${message}`);
123
126
  }
124
127
  }
125
128
  /**
@@ -134,19 +137,23 @@ function validateEventType(eventType, config) {
134
137
  /**
135
138
  * 创建基础事件对象
136
139
  */
137
- function createBaseEvent(rawEvent, config, rawData) {
140
+ function createBaseEvent(rawEvent, config, _rawData) {
138
141
  const baseEvent = {
139
142
  type: rawEvent.event,
140
- timestamp: rawEvent.timestamp || Date.now(),
143
+ timestamp: rawEvent.timestamp ?? Date.now(),
141
144
  data: null,
142
145
  sequenceNumber: typeof rawEvent.id === 'string' ? Number(rawEvent.id) : 0
143
146
  };
144
147
  // 解析数据字段
145
148
  try {
146
149
  if (rawEvent.data) {
147
- baseEvent.data = safeJsonParse(rawEvent.data);
148
- if (baseEvent.data && typeof baseEvent.data.sequence_number === 'number') {
149
- baseEvent.sequenceNumber = baseEvent.data.sequence_number;
150
+ const parsedData = safeJsonParse(rawEvent.data);
151
+ baseEvent.data = parsedData;
152
+ if (parsedData &&
153
+ typeof parsedData === 'object' &&
154
+ 'sequence_number' in parsedData &&
155
+ typeof parsedData.sequence_number === 'number') {
156
+ baseEvent.sequenceNumber = parsedData.sequence_number;
150
157
  }
151
158
  }
152
159
  }
@@ -156,7 +163,7 @@ function createBaseEvent(rawEvent, config, rawData) {
156
163
  baseEvent.type = 'error';
157
164
  }
158
165
  else {
159
- throw error;
166
+ throw error instanceof Error ? error : new Error(String(error));
160
167
  }
161
168
  }
162
169
  return baseEvent;
@@ -249,7 +256,7 @@ export function parseSseEvent(sseText, config = DEFAULT_SSE_PARSER_CONFIG) {
249
256
  result.success = true;
250
257
  }
251
258
  catch (error) {
252
- result.error = error.message;
259
+ result.error = error instanceof Error ? error.message : String(error);
253
260
  }
254
261
  return result;
255
262
  }
@@ -276,8 +283,9 @@ export async function* parseSseStreamAsync(asyncSseData, config = DEFAULT_SSE_PA
276
283
  // 查找完整的事件边界
277
284
  while (true) {
278
285
  const eventEnd = buffer.indexOf('\n\n');
279
- if (eventEnd === -1)
286
+ if (eventEnd === -1) {
280
287
  break;
288
+ }
281
289
  const eventData = buffer.substring(0, eventEnd);
282
290
  buffer = buffer.substring(eventEnd + 2);
283
291
  const result = parseSseEvent(eventData, config);
@@ -27,6 +27,7 @@ export declare class ResponsesSseToJsonConverterRefactored {
27
27
  * 将事件对象序列化为SSE格式(简单实现)
28
28
  */
29
29
  private serializeEventToSSE;
30
+ private chunkStrings;
30
31
  /**
31
32
  * 验证序列号
32
33
  */
@@ -48,14 +48,10 @@ export class ResponsesSseToJsonConverterRefactored {
48
48
  const readableStream = this.createReadableStream(sseStream);
49
49
  // 5. 流式处理SSE数据(按增量缓冲解析,避免跨 chunk 的事件被截断)
50
50
  // 注意:不要对每个 chunk 独立 parse;必须使用一个持续的 async 解析器维持缓冲区。
51
- async function* chunkStrings(stream) {
52
- for await (const chunk of stream) {
53
- yield typeof chunk === 'string' ? chunk : chunk.toString();
54
- }
55
- }
56
- for await (const parseResult of parser.parseStreamAsync(chunkStrings(readableStream))) {
57
- if (context.isCompleted)
51
+ for await (const parseResult of parser.parseStreamAsync(this.chunkStrings(readableStream))) {
52
+ if (context.isCompleted) {
58
53
  break;
54
+ }
59
55
  if (parseResult.success && parseResult.event) {
60
56
  const event = parseResult.event;
61
57
  // 验证序列号
@@ -150,8 +146,14 @@ export class ResponsesSseToJsonConverterRefactored {
150
146
  * 将事件对象序列化为SSE格式(简单实现)
151
147
  */
152
148
  serializeEventToSSE(event) {
149
+ const type = typeof event.type === 'string' ? event.type : 'data';
153
150
  const data = event.data ? JSON.stringify(event.data) : '';
154
- return `event: ${event.type}\ndata: ${data}\n\n`;
151
+ return `event: ${type}\ndata: ${data}\n\n`;
152
+ }
153
+ async *chunkStrings(stream) {
154
+ for await (const chunk of stream) {
155
+ yield typeof chunk === 'string' ? chunk : chunk.toString();
156
+ }
155
157
  }
156
158
  /**
157
159
  * 验证序列号
@@ -3,6 +3,7 @@
3
3
  * 支持OpenAI Chat Completions的JSON↔SSE双向转换
4
4
  */
5
5
  import { BaseSseEvent, StreamDirection } from './core-interfaces.js';
6
+ type JsonObject = Record<string, unknown>;
6
7
  export type ChatSseEventType = 'chat_chunk' | 'chat.done' | 'error' | 'ping';
7
8
  export interface ChatSseEvent extends BaseSseEvent {
8
9
  /** 事件类型(SSE标准wire格式) */
@@ -46,6 +47,7 @@ export interface ChatChoiceChunk {
46
47
  export interface ChatDelta {
47
48
  role?: 'system' | 'user' | 'assistant' | 'tool';
48
49
  content?: string | null;
50
+ reasoning?: string;
49
51
  function_call?: ChatFunctionCall;
50
52
  tool_calls?: ChatToolCallChunk[];
51
53
  }
@@ -121,7 +123,7 @@ export interface ChatMessage {
121
123
  export interface ChatFunction {
122
124
  name: string;
123
125
  description?: string;
124
- parameters?: Record<string, any>;
126
+ parameters?: Record<string, unknown>;
125
127
  }
126
128
  export interface ChatTool {
127
129
  type: 'function';
@@ -160,8 +162,8 @@ export interface ChatJsonToSseContext {
160
162
  currentChunk: Partial<ChatCompletionChunk>;
161
163
  eventStats: ChatEventStats;
162
164
  contentIndexCounter?: Map<string, number>;
163
- currentRequest?: any;
164
- currentResponse?: any;
165
+ currentRequest?: ChatCompletionRequest;
166
+ currentResponse?: ChatCompletionResponse;
165
167
  chatResponse?: ChatCompletionResponse;
166
168
  }
167
169
  export interface SseToChatJsonContext {
@@ -257,7 +259,7 @@ export interface ChatConversionError extends Error {
257
259
  chunkId?: string;
258
260
  choiceIndex?: number;
259
261
  toolCallIndex?: number;
260
- context?: any;
262
+ context?: JsonObject;
261
263
  }
262
264
  export declare const CHAT_CONVERSION_ERROR_CODES: {
263
265
  readonly TIMEOUT: "CHAT_TIMEOUT";
@@ -273,8 +275,8 @@ export interface ChatEventValidationRule {
273
275
  requiredFields: string[];
274
276
  optionalFields: string[];
275
277
  dataValidation?: {
276
- schema?: any;
277
- customValidator?: (data: any) => boolean;
278
+ schema?: JsonObject;
279
+ customValidator?: (data: JsonObject) => boolean;
278
280
  };
279
281
  }
280
282
  export interface ChatConversionConfig {
@@ -306,3 +308,4 @@ export interface ChatSseEventStream extends AsyncIterable<ChatSseEvent> {
306
308
  on(event: 'chunk', handler: (chunk: ChatCompletionChunk) => void): this;
307
309
  on(event: 'stats', handler: (stats: ChatEventStats) => void): this;
308
310
  }
311
+ export {};
@@ -2,6 +2,7 @@
2
2
  * 转换上下文类型定义
3
3
  * 定义JSON<>SSE双向转换过程中的上下文信息
4
4
  */
5
+ import type { JsonObject, JsonValue } from './core-interfaces.js';
5
6
  import type { SseEvent, SseEventStats, SseEventType } from './sse-events.js';
6
7
  export interface BaseConversionContext {
7
8
  requestId: string;
@@ -36,6 +37,7 @@ export interface SseToJsonContext extends BaseConversionContext {
36
37
  isResponseCreated: boolean;
37
38
  isInProgress: boolean;
38
39
  }
40
+ type ConversionContextUnion = JsonToSseContext | SseToJsonContext;
39
41
  export interface JsonToSseOptions {
40
42
  requestId: string;
41
43
  model: string;
@@ -104,12 +106,13 @@ export interface OutputItemBuilder {
104
106
  hasContentPartAdded: boolean;
105
107
  isTextInProgress: boolean;
106
108
  }
109
+ type LoggerMetadata = Record<string, unknown>;
107
110
  export interface ConversionLogger {
108
- debug(message: string, meta?: any): void;
109
- info(message: string, meta?: any): void;
110
- warn(message: string, meta?: any): void;
111
- error(message: string, error?: Error, meta?: any): void;
112
- event(eventType: string, data?: any): void;
111
+ debug(message: string, meta?: LoggerMetadata): void;
112
+ info(message: string, meta?: LoggerMetadata): void;
113
+ warn(message: string, meta?: LoggerMetadata): void;
114
+ error(message: string, error?: Error, meta?: LoggerMetadata): void;
115
+ event(eventType: string, data?: LoggerMetadata): void;
113
116
  metric(name: string, value: number, tags?: Record<string, string>): void;
114
117
  }
115
118
  export interface ConversionError extends Error {
@@ -117,7 +120,7 @@ export interface ConversionError extends Error {
117
120
  requestId: string;
118
121
  eventType?: string;
119
122
  sequenceNumber?: number;
120
- context?: any;
123
+ context?: JsonObject;
121
124
  }
122
125
  export interface StreamState {
123
126
  isStarted: boolean;
@@ -156,20 +159,20 @@ export interface ConversionConfig {
156
159
  export declare const DEFAULT_CONVERSION_CONFIG: ConversionConfig;
157
160
  export interface EventHandler {
158
161
  canHandle(eventType: SseEventType): boolean;
159
- handle(event: SseEvent, context: any): Promise<void>;
162
+ handle(event: SseEvent, context: ConversionContextUnion): Promise<void>;
160
163
  }
161
164
  export interface ConversionMiddleware {
162
165
  name: string;
163
- beforeConversion?: (context: any) => Promise<void>;
164
- afterConversion?: (context: any, result: any) => Promise<void>;
165
- onError?: (context: any, error: Error) => Promise<void>;
166
+ beforeConversion?: (context: ConversionContextUnion) => Promise<void>;
167
+ afterConversion?: (context: ConversionContextUnion, result: unknown) => Promise<void>;
168
+ onError?: (context: ConversionContextUnion, error: Error) => Promise<void>;
166
169
  }
167
170
  interface OutputItem {
168
171
  id: string;
169
172
  type: 'reasoning' | 'message' | 'function_call' | 'system_message';
170
173
  status?: 'in_progress' | 'completed';
171
174
  content?: ContentPart[];
172
- summary?: any[];
175
+ summary?: JsonValue[];
173
176
  role?: string;
174
177
  arguments?: string;
175
178
  call_id?: string;
@@ -2,13 +2,17 @@
2
2
  * 核心接口定义
3
3
  * 统一的SSE事件最小接口,供writer.ts等共享模块使用
4
4
  */
5
+ export interface JsonObject {
6
+ [key: string]: JsonValue;
7
+ }
8
+ export type JsonValue = string | number | boolean | null | JsonObject | JsonValue[];
5
9
  export interface BaseSseEvent {
6
10
  /** 事件类型 */
7
11
  type: string;
8
12
  /** 事件时间戳 */
9
13
  timestamp: number;
10
14
  /** 事件数据 */
11
- data: any;
15
+ data: unknown;
12
16
  /** 序列号(可选) */
13
17
  sequenceNumber?: number;
14
18
  /** 协议标识 */
@@ -56,7 +60,7 @@ export interface BaseConversionContext {
56
60
  /** 模型名称 */
57
61
  model: string;
58
62
  /** 转换选项 */
59
- options: any;
63
+ options: JsonObject;
60
64
  /** 开始时间 */
61
65
  startTime: number;
62
66
  }
@@ -3,7 +3,7 @@
3
3
  * 支持Responses和Chat协议的JSON↔SSE双向转换
4
4
  */
5
5
  export type { BaseSseEvent, BaseSseEventStream, StreamProtocol, StreamDirection, SseProtocol, SseDirection } from './core-interfaces.js';
6
- export type { ChatSseEvent, ChatSseEventType, ChatSseEventStream, ChatEventStats, ChatJsonToSseContext, SseToChatJsonContext, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatJsonToSseOptions, SseToChatJsonOptions, ChatConversionError, ChatToolCall, ChatChoiceBuilder, ChatMessageBuilder, ChatToolCallBuilder } from './chat-types.js';
6
+ export type { ChatSseEvent, ChatSseEventType, ChatSseEventStream, ChatEventStats, ChatJsonToSseContext, SseToChatJsonContext, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatMessage, ChatJsonToSseOptions, SseToChatJsonOptions, ChatConversionError, ChatToolCall, ChatToolCallChunk, ChatChoiceBuilder, ChatMessageBuilder, ChatToolCallBuilder } from './chat-types.js';
7
7
  export type { ChatJsonToSseConverter } from '../json-to-sse/chat-json-to-sse-converter.js';
8
8
  export type { ResponsesJsonToSseConverter } from '../json-to-sse/responses-json-to-sse-converter.js';
9
9
  export type { ResponsesSseEvent, ResponsesSseEventType, ResponsesSseEventStream, ResponsesEventStats, ResponsesJsonToSseContext, SseToResponsesJsonContext, ResponsesJsonToSseOptions, SseToResponsesJsonOptions, ResponsesResponse, ResponsesRequest, ResponsesOutputItem, ResponsesMessageItem, ResponsesFunctionCallItem, ResponsesFunctionCallOutputItem, ResponsesReasoningItem, ResponsesContent, ResponsesTool, ResponsesToolCall, ResponsesUsage, OutputItemBuilder, OutputItemProcessingState } from './responses-types.js';
@@ -2,7 +2,7 @@
2
2
  * Responses协议相关类型定义
3
3
  * 支持OpenAI Responses API的JSON↔SSE双向转换
4
4
  */
5
- import { BaseSseEvent, StreamDirection } from './core-interfaces.js';
5
+ import { BaseSseEvent, StreamDirection, type JsonObject, type JsonValue } from './core-interfaces.js';
6
6
  export * from './sse-events.js';
7
7
  export type ResponsesSseEventType = 'response.created' | 'response.in_progress' | 'response.completed' | 'response.required_action' | 'response.done' | 'response.output_item.added' | 'response.output_item.done' | 'response.content_part.added' | 'response.content_part.done' | 'response.output_text.delta' | 'response.output_text.done' | 'response.reasoning_text.delta' | 'response.reasoning_text.done' | 'response.reasoning_signature.delta' | 'response.reasoning_image.delta' | 'response.reasoning_summary_part.added' | 'response.reasoning_summary_part.done' | 'response.reasoning_summary_text.delta' | 'response.reasoning_summary_text.done' | 'response.function_call_arguments.delta' | 'response.function_call_arguments.done' | 'response.error' | 'response.cancelled' | 'response.start' | 'content_part.delta' | 'reasoning.delta' | 'function_call.start' | 'function_call.delta' | 'function_call.done' | 'output_item.start' | 'content_part.start' | 'content_part.done' | 'output_item.done' | 'reasoning.start' | 'reasoning.done' | 'required_action' | 'error';
8
8
  export interface ResponsesSseEvent extends BaseSseEvent {
@@ -37,7 +37,7 @@ export interface SseToResponsesJsonContext {
37
37
  startTime: number;
38
38
  endTime?: number;
39
39
  duration?: number;
40
- aggregatedEvents: any[];
40
+ aggregatedEvents: ResponsesSseEvent[];
41
41
  currentResponse: Partial<ResponsesResponse>;
42
42
  outputItemBuilders: Map<string, OutputItemBuilder>;
43
43
  eventStats: ResponsesEventStats;
@@ -53,7 +53,7 @@ export interface ResponsesRequest {
53
53
  temperature?: number;
54
54
  top_p?: number;
55
55
  max_output_tokens?: number;
56
- metadata?: Record<string, any>;
56
+ metadata?: JsonObject;
57
57
  store?: boolean;
58
58
  truncation?: 'auto' | 'disabled';
59
59
  user?: string;
@@ -80,27 +80,27 @@ export type ResponsesContent = {
80
80
  detail?: 'auto' | 'low' | 'high';
81
81
  } | {
82
82
  type: 'file_search';
83
- file_search: any;
83
+ file_search: JsonObject;
84
84
  } | {
85
85
  type: 'computer_use';
86
- computer_use: any;
86
+ computer_use: JsonObject;
87
87
  } | {
88
88
  type: 'function_call';
89
89
  name: string;
90
90
  arguments: string;
91
91
  } | {
92
92
  type: 'function_result';
93
- result: any;
93
+ result: JsonValue;
94
94
  tool_call_id: string;
95
95
  } | {
96
96
  type: 'conversation';
97
- conversation: any[];
97
+ conversation: JsonValue[];
98
98
  };
99
99
  export interface ResponsesTool {
100
100
  type: 'function';
101
101
  name: string;
102
102
  description?: string;
103
- parameters?: any;
103
+ parameters?: JsonObject;
104
104
  strict?: boolean;
105
105
  }
106
106
  export interface ResponsesReasoningConfig {
@@ -113,7 +113,7 @@ export interface ResponsesResponse {
113
113
  object: 'response';
114
114
  created_at: number;
115
115
  status: 'in_progress' | 'requires_action' | 'completed' | 'failed' | 'incomplete';
116
- error?: any;
116
+ error?: JsonValue;
117
117
  model: string;
118
118
  output: ResponsesOutputItem[];
119
119
  previous_response_id?: string;
@@ -121,7 +121,7 @@ export interface ResponsesResponse {
121
121
  temperature?: number;
122
122
  top_p?: number;
123
123
  max_output_tokens?: number;
124
- metadata?: Record<string, any>;
124
+ metadata?: JsonObject;
125
125
  user?: string;
126
126
  store?: boolean;
127
127
  truncation?: 'auto' | 'disabled';
@@ -147,7 +147,7 @@ export type ResponsesReasoningContent = {
147
147
  text: string;
148
148
  } | {
149
149
  type: 'reasoning_signature';
150
- signature: any;
150
+ signature: JsonObject;
151
151
  } | {
152
152
  type: 'reasoning_image';
153
153
  image_url: string;
@@ -164,14 +164,14 @@ export interface ResponsesFunctionCallOutputItem {
164
164
  id: string;
165
165
  type: 'function_call_output';
166
166
  call_id: string;
167
- output: any;
167
+ output: JsonValue;
168
168
  tool_call_id?: string;
169
169
  }
170
170
  export interface ResponsesSystemItem {
171
171
  id: string;
172
172
  type: 'system';
173
173
  name: string;
174
- data: any;
174
+ data: JsonValue;
175
175
  }
176
176
  export interface ResponsesUsage {
177
177
  input_tokens: number;
@@ -217,7 +217,7 @@ export interface ResponsesJsonToSseOptions {
217
217
  includeSequenceNumbers?: boolean;
218
218
  includeMetadata?: boolean;
219
219
  validationMode?: 'none' | 'basic' | 'strict';
220
- onEvent?: (event: any) => void;
220
+ onEvent?: (event: ResponsesSseEvent) => void;
221
221
  onError?: (error: Error) => void;
222
222
  onComplete?: () => void;
223
223
  resumeToolOutputs?: ResponsesFunctionCallOutputItem[];
@@ -230,7 +230,7 @@ export interface SseToResponsesJsonOptions {
230
230
  enableSequenceValidation?: boolean;
231
231
  accumulateOutputItems?: boolean;
232
232
  onPartialResult?: (partial: Partial<ResponsesResponse>) => void;
233
- onEvent?: (event: any) => void;
233
+ onEvent?: (event: ResponsesSseEvent) => void;
234
234
  onCompletion?: (final: ResponsesResponse) => void;
235
235
  onError?: (error: Error) => void;
236
236
  onTimeout?: () => void;
@@ -256,7 +256,7 @@ export interface OutputItemProcessingState {
256
256
  status: 'in_progress' | 'completed';
257
257
  contentIndex: number;
258
258
  isContentPartAdded: boolean;
259
- accumulatedContent: any[];
259
+ accumulatedContent: ResponsesContent[];
260
260
  deltaBuffer: string;
261
261
  isTextStarted: boolean;
262
262
  isTextCompleted: boolean;
@@ -265,9 +265,9 @@ export interface OutputItemBuilder {
265
265
  id: string;
266
266
  type: string;
267
267
  status: 'in_progress' | 'completed';
268
- contentParts: any[];
268
+ contentParts: ResponsesContent[];
269
269
  currentContentIndex: number;
270
- accumulatedContent: any[];
270
+ accumulatedContent: ResponsesContent[];
271
271
  hasContentPartAdded: boolean;
272
272
  isTextInProgress: boolean;
273
273
  callId?: string;
@@ -281,7 +281,7 @@ export interface ResponsesConversionError extends Error {
281
281
  eventId?: string;
282
282
  outputItemId?: string;
283
283
  sequenceNumber?: number;
284
- context?: any;
284
+ context?: JsonObject;
285
285
  }
286
286
  export declare const RESPONSES_CONVERSION_ERROR_CODES: {
287
287
  readonly TIMEOUT: "RESPONSES_TIMEOUT";
@@ -323,6 +323,6 @@ export interface ResponsesSseEventStream extends AsyncIterable<ResponsesSseEvent
323
323
  on(event: 'complete', handler: () => void): this;
324
324
  on(event: 'timeout', handler: () => void): this;
325
325
  on(event: 'output_item', handler: (item: ResponsesOutputItem) => void): this;
326
- on(event: 'content_part', handler: (part: any) => void): this;
326
+ on(event: 'content_part', handler: (part: ResponsesContent) => void): this;
327
327
  on(event: 'stats', handler: (stats: ResponsesEventStats) => void): this;
328
328
  }
@@ -2,6 +2,7 @@
2
2
  * SSE事件类型定义
3
3
  * 基于OpenAI Responses协议的事件规范
4
4
  */
5
+ import type { JsonValue } from './core-interfaces.js';
5
6
  export type SseEventType = 'response.created' | 'response.in_progress' | 'response.completed' | 'response.required_action' | 'response.done' | 'response.output_item.added' | 'response.output_item.done' | 'response.content_part.added' | 'response.content_part.done' | 'response.output_text.delta' | 'response.output_text.done' | 'response.reasoning_text.delta' | 'response.reasoning_text.done' | 'response.function_call_arguments.delta' | 'response.function_call_arguments.done';
6
7
  export interface BaseSseEvent {
7
8
  type: SseEventType;
@@ -66,7 +67,7 @@ export interface OutputTextDeltaEvent extends BaseSseEvent {
66
67
  output_index: number;
67
68
  content_index: number;
68
69
  delta: string;
69
- logprobs?: any[];
70
+ logprobs?: JsonValue[];
70
71
  }
71
72
  export interface OutputTextDoneEvent extends BaseSseEvent {
72
73
  type: 'response.output_text.done';
@@ -118,7 +119,7 @@ export interface OutputItem {
118
119
  type: 'reasoning' | 'message' | 'function_call' | 'system_message';
119
120
  status?: 'in_progress' | 'completed';
120
121
  content?: ContentPart[];
121
- summary?: any[];
122
+ summary?: JsonValue[];
122
123
  role?: string;
123
124
  arguments?: string;
124
125
  call_id?: string;
@@ -173,7 +174,7 @@ export interface EventValidationRule {
173
174
  optionalFields: string[];
174
175
  dependencies: Array<{
175
176
  field: string;
176
- condition: (event: any) => boolean;
177
+ condition: (event: Record<string, unknown>) => boolean;
177
178
  requiredFields: string[];
178
179
  }>;
179
180
  }