@jsonstudio/llms 0.4.3 → 0.4.5

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 (542) 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 +15 -3
  6. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +3 -13
  7. package/dist/conversion/codecs/anthropic-openai-codec.js +18 -473
  8. package/dist/conversion/codecs/gemini-openai-codec.js +91 -48
  9. package/dist/conversion/codecs/responses-openai-codec.js +9 -2
  10. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +3 -0
  11. package/dist/conversion/hub/format-adapters/chat-format-adapter.js +3 -0
  12. package/dist/conversion/hub/format-adapters/gemini-format-adapter.js +3 -0
  13. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +2 -0
  14. package/dist/conversion/hub/format-adapters/responses-format-adapter.js +9 -0
  15. package/dist/conversion/hub/node-support.js +3 -1
  16. package/dist/conversion/hub/pipeline/hub-pipeline.js +41 -37
  17. package/dist/conversion/hub/process/chat-process.js +258 -41
  18. package/dist/conversion/hub/response/provider-response.js +9 -3
  19. package/dist/conversion/hub/response/response-mappers.js +1 -1
  20. package/dist/conversion/hub/response/response-runtime.js +109 -10
  21. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +70 -156
  22. package/dist/conversion/hub/semantic-mappers/chat-mapper.js +63 -52
  23. package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +76 -143
  24. package/dist/conversion/hub/semantic-mappers/responses-mapper.js +40 -160
  25. package/dist/conversion/hub/standardized-bridge.js +3 -0
  26. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  27. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  28. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  29. package/dist/conversion/hub/tool-governance/index.js +2 -0
  30. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  31. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  32. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  33. package/dist/conversion/index.d.ts +6 -0
  34. package/dist/conversion/index.js +6 -0
  35. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.d.ts +12 -0
  36. package/dist/conversion/pipeline/codecs/v2/anthropic-openai-pipeline.js +100 -0
  37. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.d.ts +15 -0
  38. package/dist/conversion/pipeline/codecs/v2/openai-openai-pipeline.js +174 -0
  39. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.d.ts +14 -0
  40. package/dist/conversion/pipeline/codecs/v2/responses-openai-pipeline.js +166 -0
  41. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.d.ts +13 -0
  42. package/dist/conversion/pipeline/codecs/v2/shared/openai-chat-helpers.js +66 -0
  43. package/dist/conversion/pipeline/hooks/adapter-context.d.ts +7 -0
  44. package/dist/conversion/pipeline/hooks/adapter-context.js +18 -0
  45. package/dist/conversion/pipeline/hooks/protocol-hooks.d.ts +67 -0
  46. package/dist/conversion/pipeline/hooks/protocol-hooks.js +1 -0
  47. package/dist/conversion/pipeline/index.d.ts +35 -0
  48. package/dist/conversion/pipeline/index.js +103 -0
  49. package/dist/conversion/pipeline/meta/meta-bag.d.ts +20 -0
  50. package/dist/conversion/pipeline/meta/meta-bag.js +81 -0
  51. package/dist/conversion/pipeline/schema/canonical-chat.d.ts +18 -0
  52. package/dist/conversion/pipeline/schema/canonical-chat.js +1 -0
  53. package/dist/conversion/pipeline/schema/index.d.ts +1 -0
  54. package/dist/conversion/pipeline/schema/index.js +1 -0
  55. package/dist/conversion/responses/responses-openai-bridge.d.ts +11 -58
  56. package/dist/conversion/responses/responses-openai-bridge.js +157 -1144
  57. package/dist/conversion/shared/anthropic-message-utils.d.ts +12 -0
  58. package/dist/conversion/shared/anthropic-message-utils.js +587 -0
  59. package/dist/conversion/shared/bridge-actions.d.ts +39 -0
  60. package/dist/conversion/shared/bridge-actions.js +709 -0
  61. package/dist/conversion/shared/{responses-conversation-store.d.ts → bridge-conversation-store.d.ts} +7 -7
  62. package/dist/conversion/shared/bridge-conversation-store.js +279 -0
  63. package/dist/conversion/shared/bridge-id-utils.js +42 -0
  64. package/dist/conversion/shared/bridge-instructions.d.ts +1 -0
  65. package/dist/conversion/shared/bridge-instructions.js +113 -0
  66. package/dist/conversion/shared/bridge-message-types.d.ts +39 -0
  67. package/dist/conversion/shared/bridge-message-types.js +1 -0
  68. package/dist/conversion/shared/bridge-message-utils.d.ts +22 -0
  69. package/dist/conversion/shared/bridge-message-utils.js +473 -0
  70. package/dist/conversion/shared/bridge-metadata.d.ts +1 -0
  71. package/dist/conversion/shared/bridge-metadata.js +1 -0
  72. package/dist/conversion/shared/bridge-policies.d.ts +18 -0
  73. package/dist/conversion/shared/bridge-policies.js +276 -0
  74. package/dist/conversion/shared/bridge-request-adapter.d.ts +28 -0
  75. package/dist/conversion/shared/bridge-request-adapter.js +430 -0
  76. package/dist/conversion/shared/chat-output-normalizer.d.ts +4 -0
  77. package/dist/conversion/shared/chat-output-normalizer.js +56 -0
  78. package/dist/conversion/shared/chat-request-filters.js +24 -1
  79. package/dist/conversion/shared/gemini-tool-utils.d.ts +5 -0
  80. package/dist/conversion/shared/gemini-tool-utils.js +130 -0
  81. package/dist/conversion/shared/metadata-passthrough.d.ts +11 -0
  82. package/dist/conversion/shared/metadata-passthrough.js +57 -0
  83. package/dist/conversion/shared/output-content-normalizer.d.ts +12 -0
  84. package/dist/conversion/shared/output-content-normalizer.js +119 -0
  85. package/dist/conversion/shared/reasoning-normalizer.d.ts +21 -0
  86. package/dist/conversion/shared/reasoning-normalizer.js +368 -0
  87. package/dist/conversion/shared/reasoning-tool-normalizer.d.ts +12 -0
  88. package/dist/conversion/shared/reasoning-tool-normalizer.js +132 -0
  89. package/dist/conversion/shared/reasoning-tool-parser.d.ts +10 -0
  90. package/dist/conversion/shared/reasoning-tool-parser.js +95 -0
  91. package/dist/conversion/shared/reasoning-utils.d.ts +2 -0
  92. package/dist/conversion/shared/reasoning-utils.js +42 -0
  93. package/dist/conversion/shared/responses-conversation-store.js +5 -11
  94. package/dist/conversion/shared/responses-message-utils.d.ts +15 -0
  95. package/dist/conversion/shared/responses-message-utils.js +206 -0
  96. package/dist/conversion/shared/responses-output-builder.d.ts +15 -0
  97. package/dist/conversion/shared/responses-output-builder.js +179 -0
  98. package/dist/conversion/shared/responses-output-utils.d.ts +7 -0
  99. package/dist/conversion/shared/responses-output-utils.js +108 -0
  100. package/dist/conversion/shared/responses-request-adapter.d.ts +3 -41
  101. package/dist/conversion/shared/responses-request-adapter.js +9 -40
  102. package/dist/conversion/shared/responses-response-utils.d.ts +3 -0
  103. package/dist/conversion/shared/responses-response-utils.js +209 -0
  104. package/dist/conversion/shared/responses-tool-utils.d.ts +12 -0
  105. package/dist/conversion/shared/responses-tool-utils.js +90 -0
  106. package/dist/conversion/shared/responses-types.d.ts +33 -0
  107. package/dist/conversion/shared/responses-types.js +1 -0
  108. package/dist/conversion/shared/tool-call-utils.d.ts +11 -0
  109. package/dist/conversion/shared/tool-call-utils.js +56 -0
  110. package/dist/conversion/shared/tool-mapping.d.ts +9 -0
  111. package/dist/conversion/shared/tool-mapping.js +124 -0
  112. package/dist/conversion/shared/tool-normalizers.d.ts +4 -0
  113. package/dist/conversion/shared/tool-normalizers.js +84 -0
  114. package/dist/router/virtual-router/bootstrap.js +18 -3
  115. package/dist/router/virtual-router/provider-registry.js +4 -2
  116. package/dist/router/virtual-router/types.d.ts +6 -0
  117. package/dist/sse/index.d.ts +38 -2
  118. package/dist/sse/index.js +27 -0
  119. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +12 -9
  120. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +106 -73
  121. package/dist/sse/json-to-sse/chat-json-to-sse-converter.js +6 -2
  122. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.d.ts +14 -0
  123. package/dist/sse/json-to-sse/gemini-json-to-sse-converter.js +99 -0
  124. package/dist/sse/json-to-sse/index.d.ts +2 -1
  125. package/dist/sse/json-to-sse/index.js +2 -0
  126. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.d.ts +13 -0
  127. package/dist/sse/json-to-sse/sequencers/anthropic-sequencer.js +150 -0
  128. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +3 -1
  129. package/dist/sse/json-to-sse/sequencers/chat-sequencer.js +49 -3
  130. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.d.ts +10 -0
  131. package/dist/sse/json-to-sse/sequencers/gemini-sequencer.js +95 -0
  132. package/dist/sse/json-to-sse/sequencers/responses-sequencer.js +31 -5
  133. package/dist/sse/registry/sse-codec-registry.d.ts +1 -1
  134. package/dist/sse/registry/sse-codec-registry.js +30 -1
  135. package/dist/sse/shared/reasoning-dispatcher.d.ts +10 -0
  136. package/dist/sse/shared/reasoning-dispatcher.js +25 -0
  137. package/dist/sse/shared/responses-output-normalizer.d.ts +12 -0
  138. package/dist/sse/shared/responses-output-normalizer.js +45 -0
  139. package/dist/sse/shared/serializers/anthropic-event-serializer.d.ts +2 -0
  140. package/dist/sse/shared/serializers/anthropic-event-serializer.js +9 -0
  141. package/dist/sse/shared/serializers/gemini-event-serializer.d.ts +2 -0
  142. package/dist/sse/shared/serializers/gemini-event-serializer.js +5 -0
  143. package/dist/sse/shared/serializers/index.d.ts +2 -0
  144. package/dist/sse/shared/serializers/index.js +2 -0
  145. package/dist/sse/shared/writer.d.ts +17 -1
  146. package/dist/sse/shared/writer.js +37 -1
  147. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +9 -11
  148. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +92 -127
  149. package/dist/sse/sse-to-json/builders/anthropic-response-builder.d.ts +16 -0
  150. package/dist/sse/sse-to-json/builders/anthropic-response-builder.js +151 -0
  151. package/dist/sse/sse-to-json/builders/response-builder.d.ts +1 -1
  152. package/dist/sse/sse-to-json/builders/response-builder.js +29 -7
  153. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +8 -0
  154. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +116 -26
  155. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.d.ts +13 -0
  156. package/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +160 -0
  157. package/dist/sse/sse-to-json/index.d.ts +2 -1
  158. package/dist/sse/sse-to-json/index.js +2 -0
  159. package/dist/sse/sse-to-json/parsers/sse-parser.js +73 -13
  160. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  161. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  162. package/dist/sse/types/anthropic-types.d.ts +119 -36
  163. package/dist/sse/types/anthropic-types.js +8 -5
  164. package/dist/sse/types/chat-types.d.ts +19 -6
  165. package/dist/sse/types/chat-types.js +2 -1
  166. package/dist/sse/types/conversion-context.d.ts +14 -11
  167. package/dist/sse/types/core-interfaces.d.ts +7 -3
  168. package/dist/sse/types/gemini-types.d.ts +116 -0
  169. package/dist/sse/types/gemini-types.js +5 -0
  170. package/dist/sse/types/index.d.ts +5 -2
  171. package/dist/sse/types/index.js +2 -0
  172. package/dist/sse/types/responses-types.d.ts +20 -20
  173. package/dist/sse/types/sse-events.d.ts +4 -3
  174. package/dist/sse/types/stream-state.d.ts +34 -39
  175. package/dist/sse/types/utility-types.d.ts +47 -43
  176. package/dist/sse/types/utility-types.js +10 -13
  177. package/dist/tools/tool-registry.js +156 -98
  178. package/package.json +7 -7
  179. package/dist/api/index.d.ts +0 -10
  180. package/dist/api/index.js +0 -11
  181. package/dist/api/llmswitch-config.d.ts +0 -15
  182. package/dist/api/llmswitch-config.js +0 -415
  183. package/dist/api/llmswitch-types.d.ts +0 -412
  184. package/dist/api/llmswitch-types.js +0 -60
  185. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  186. package/dist/config/index.d.ts +0 -3
  187. package/dist/config/index.js +0 -5
  188. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  189. package/dist/config-unified/unified-config.d.ts +0 -26
  190. package/dist/conversion/codec-registry.d.ts +0 -10
  191. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  192. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  193. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  194. package/dist/conversion/config/config-manager.d.ts +0 -212
  195. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  196. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  197. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  198. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  199. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  200. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  201. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  202. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  203. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  204. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  205. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  206. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
  207. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  208. package/dist/conversion/conversion-v3/config/index.js +0 -5
  209. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  210. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  211. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  212. package/dist/conversion/conversion-v3/index.js +0 -17
  213. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  214. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  215. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  216. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  217. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  218. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  219. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  220. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  221. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  222. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  223. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  224. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  225. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  226. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  227. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  228. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  229. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  230. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  231. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  232. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  233. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  234. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  235. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  236. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  237. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  238. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  239. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  240. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  241. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  242. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  243. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  244. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  245. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  246. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  247. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  248. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  249. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  250. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  251. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  252. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  253. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  254. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  255. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
  256. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
  257. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  258. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  259. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  260. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  261. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  262. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  263. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  264. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  265. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  266. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  267. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  268. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  269. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  270. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  271. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  272. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  273. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  274. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  275. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  276. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  277. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  278. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  279. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  280. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  281. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  282. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  283. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  284. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  285. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  286. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  287. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  288. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  289. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  290. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  291. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  292. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  293. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  294. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  295. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  296. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  297. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  298. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  299. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  300. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  301. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  302. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  303. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  304. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  305. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  306. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  307. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  308. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  309. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  310. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  311. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  312. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  313. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  314. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  315. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  316. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  317. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  318. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  319. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  320. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  321. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  322. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  323. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  324. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  325. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  326. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  327. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  328. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  329. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  330. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  331. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  332. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  333. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  334. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  335. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  336. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  337. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  338. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  339. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  340. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  341. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  342. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  343. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  344. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  345. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  346. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  347. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  348. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  349. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  350. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  351. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  352. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  353. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  354. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  355. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  356. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  357. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  358. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  359. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  360. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  361. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  362. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  363. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  364. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  365. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  366. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  367. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  368. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  369. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  370. package/dist/conversion/conversion-v3/types/index.js +0 -11
  371. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  372. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  373. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  374. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  375. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  376. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  377. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  378. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  379. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  380. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  381. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  382. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  383. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  384. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  385. package/dist/conversion/hub/config/types.d.ts +0 -26
  386. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  387. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  388. package/dist/conversion/hub/core/index.d.ts +0 -3
  389. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  390. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  391. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  392. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  393. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  394. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  395. package/dist/conversion/hub/node-support.d.ts +0 -19
  396. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  397. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  398. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  399. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  400. package/dist/conversion/hub/registry.d.ts +0 -28
  401. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  402. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  403. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  404. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  405. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  406. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  407. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  408. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  409. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  410. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  411. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  412. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  413. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  414. package/dist/conversion/hub/types/errors.d.ts +0 -5
  415. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  416. package/dist/conversion/hub/types/index.d.ts +0 -6
  417. package/dist/conversion/hub/types/json.d.ts +0 -9
  418. package/dist/conversion/hub/types/node.d.ts +0 -31
  419. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  420. package/dist/conversion/schema-validator.d.ts +0 -7
  421. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  422. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  423. package/dist/conversion/shared/jsonish.d.ts +0 -3
  424. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  425. package/dist/conversion/shared/media.d.ts +0 -1
  426. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  427. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  428. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  429. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  430. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  431. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  432. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  433. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  434. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  435. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  436. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  437. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  438. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  439. package/dist/conversion/shared/tooling.d.ts +0 -26
  440. package/dist/conversion/types.d.ts +0 -33
  441. package/dist/core/index.d.ts +0 -6
  442. package/dist/core/index.js +0 -9
  443. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  444. package/dist/core/llmswitch-engine-v2.js +0 -649
  445. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  446. package/dist/core/llmswitch-factory-v2.js +0 -521
  447. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  448. package/dist/endpoints/base-endpoint-handler.js +0 -545
  449. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  450. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  451. package/dist/endpoints/endpoint-router.d.ts +0 -127
  452. package/dist/endpoints/endpoint-router.js +0 -438
  453. package/dist/endpoints/index.d.ts +0 -13
  454. package/dist/endpoints/index.js +0 -11
  455. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  456. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  457. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  458. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  459. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  460. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  461. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  462. package/dist/filters/engine.d.ts +0 -16
  463. package/dist/filters/index.d.ts +0 -19
  464. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  465. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  466. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  467. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  468. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  469. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  470. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  471. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  472. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  473. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  474. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  475. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  476. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  477. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  478. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  479. package/dist/filters/types.d.ts +0 -68
  480. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  481. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  482. package/dist/guidance/index.d.ts +0 -3
  483. package/dist/hooks/hooks-integration.d.ts +0 -161
  484. package/dist/hooks/hooks-integration.js +0 -519
  485. package/dist/hooks/index.d.ts +0 -10
  486. package/dist/hooks/index.js +0 -13
  487. package/dist/html-to-markdown.d.ts +0 -5
  488. package/dist/html-to-markdown.js +0 -66
  489. package/dist/http/sse-response.d.ts +0 -22
  490. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  491. package/dist/router/virtual-router/classifier.d.ts +0 -10
  492. package/dist/router/virtual-router/engine.d.ts +0 -35
  493. package/dist/router/virtual-router/error-center.d.ts +0 -10
  494. package/dist/router/virtual-router/features.d.ts +0 -3
  495. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  496. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  497. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  498. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  499. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  500. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  501. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  502. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  503. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  504. package/dist/sse/shared/constants.d.ts +0 -272
  505. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  506. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  507. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  508. package/dist/sse/shared/serializers/types.d.ts +0 -51
  509. package/dist/sse/shared/utils.d.ts +0 -254
  510. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  511. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  512. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  513. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  514. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  515. package/dist/tools/proxy/registry.d.ts +0 -8
  516. package/dist/tools/proxy/registry.js +0 -14
  517. package/dist/tools/proxy/types.d.ts +0 -29
  518. package/dist/tools/tool-registry.d.ts +0 -8
  519. package/dist/tools/web-fetch-html.d.ts +0 -15
  520. package/dist/tools/web-fetch-html.js +0 -83
  521. package/dist/utils/conversion-adapter.d.ts +0 -65
  522. package/dist/utils/conversion-adapter.js +0 -183
  523. package/dist/utils/error-factory.d.ts +0 -88
  524. package/dist/utils/error-factory.js +0 -138
  525. package/dist/utils/error-utils.d.ts +0 -334
  526. package/dist/utils/error-utils.js +0 -782
  527. package/dist/utils/index.d.ts +0 -8
  528. package/dist/utils/index.js +0 -13
  529. package/dist/utils/performance-utils.d.ts +0 -205
  530. package/dist/utils/performance-utils.js +0 -440
  531. package/dist/utils/profile-mapper.d.ts +0 -32
  532. package/dist/utils/profile-mapper.js +0 -269
  533. package/dist/utils/request-processor.d.ts +0 -52
  534. package/dist/utils/request-processor.js +0 -210
  535. package/dist/utils/request-utils.d.ts +0 -117
  536. package/dist/utils/request-utils.js +0 -333
  537. package/dist/utils/response-utils.d.ts +0 -127
  538. package/dist/utils/response-utils.js +0 -516
  539. package/dist/utils/token-counter.d.ts +0 -89
  540. package/dist/utils/token-counter.js +0 -541
  541. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
  542. /package/dist/conversion/shared/{responses-id-utils.d.ts → bridge-id-utils.d.ts} +0 -0
@@ -1,599 +0,0 @@
1
- /**
2
- * Responses协议事件生成器
3
- * 提供纯函数,将Responses响应数据转换为SSE事件对象,不处理流写入
4
- */
5
- import { TimeUtils, StringUtils } from '../../shared/utils.js';
6
- const TEXT_CHUNK_BOUNDARY = /[\n\r\t,。、“”‘’!?,\.\-:\u3000\s]/;
7
- function cloneRegex(source) {
8
- return new RegExp(source.source, source.flags);
9
- }
10
- function getChunkSize(config) {
11
- return Math.max(1, config.chunkSize || DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG.chunkSize);
12
- }
13
- function chunkText(text, config) {
14
- try {
15
- return StringUtils.chunkString(text, getChunkSize(config), cloneRegex(TEXT_CHUNK_BOUNDARY));
16
- }
17
- catch {
18
- return [text];
19
- }
20
- }
21
- function createResponsePayload(response, overrides = {}) {
22
- const raw = response;
23
- const usage = normalizeUsage(response.usage);
24
- const payload = {
25
- id: response.id,
26
- object: response.object ?? 'response',
27
- created_at: response.created_at ?? Math.floor(Date.now() / 1000),
28
- status: response.status ?? 'in_progress',
29
- model: response.model,
30
- output: response.output ?? [],
31
- usage,
32
- temperature: response.temperature,
33
- top_p: response.top_p,
34
- max_output_tokens: response.max_output_tokens,
35
- metadata: response.metadata,
36
- user: response.user,
37
- store: response.store,
38
- truncation: response.truncation,
39
- include: response.include,
40
- parallel_tool_calls: response.parallel_tool_calls,
41
- previous_response_id: response.previous_response_id
42
- };
43
- payload.background = raw.background ?? false;
44
- payload.error = Object.prototype.hasOwnProperty.call(raw, 'error') ? raw.error : null;
45
- payload.incomplete_details = Object.prototype.hasOwnProperty.call(raw, 'incomplete_details') ? raw.incomplete_details : null;
46
- if (Object.prototype.hasOwnProperty.call(raw, 'instructions')) {
47
- payload.instructions = raw.instructions;
48
- }
49
- if (Object.prototype.hasOwnProperty.call(raw, 'include')) {
50
- payload.include = raw.include;
51
- }
52
- Object.entries(overrides).forEach(([key, value]) => {
53
- if (value === undefined) {
54
- delete payload[key];
55
- }
56
- else {
57
- payload[key] = value;
58
- }
59
- });
60
- Object.keys(payload).forEach(key => {
61
- if (payload[key] === undefined) {
62
- delete payload[key];
63
- }
64
- });
65
- return payload;
66
- }
67
- function normalizeUsage(usage) {
68
- const fallback = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
69
- if (!usage || typeof usage !== 'object') {
70
- return fallback;
71
- }
72
- const asAny = usage;
73
- const inputRaw = Number((asAny.input_tokens ?? asAny.prompt_tokens));
74
- const outputRaw = Number((asAny.output_tokens ?? asAny.completion_tokens));
75
- const input = Number.isFinite(inputRaw) ? inputRaw : 0;
76
- const output = Number.isFinite(outputRaw) ? outputRaw : 0;
77
- const totalRaw = Number(asAny.total_tokens);
78
- const total = Number.isFinite(totalRaw) ? totalRaw : input + output;
79
- return {
80
- input_tokens: input,
81
- output_tokens: output,
82
- total_tokens: total
83
- };
84
- }
85
- // 默认配置
86
- export const DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG = {
87
- chunkSize: 12,
88
- chunkDelayMs: 8,
89
- enableIdGeneration: true,
90
- enableTimestampGeneration: true,
91
- enableSequenceNumbers: true,
92
- enableDelay: false
93
- };
94
- /**
95
- * 创建默认上下文
96
- */
97
- export function createDefaultResponsesContext(requestId, model) {
98
- return {
99
- requestId,
100
- model,
101
- outputIndexCounter: 0,
102
- contentIndexCounter: new Map(),
103
- sequenceCounter: 0
104
- };
105
- }
106
- /**
107
- * 生成下一个序列号
108
- */
109
- function getNextSequenceNumber(context, config) {
110
- return config.enableSequenceNumbers ? context.sequenceCounter++ : 0;
111
- }
112
- /**
113
- * 创建基础事件数据
114
- */
115
- function createBaseEvent(context, config) {
116
- return {
117
- requestId: context.requestId,
118
- timestamp: config.enableTimestampGeneration ? TimeUtils.now() : 0,
119
- sequenceNumber: getNextSequenceNumber(context, config),
120
- protocol: 'responses',
121
- direction: 'json_to_sse'
122
- };
123
- }
124
- /**
125
- * 构建response.created + response.in_progress事件
126
- * 映射:response.start → response.created + response.in_progress
127
- */
128
- export function* buildResponseStartEvents(response, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
129
- // 第一个事件:response.created
130
- const createdEvent = createBaseEvent(context, config);
131
- yield {
132
- type: 'response.created',
133
- timestamp: createdEvent.timestamp,
134
- protocol: createdEvent.protocol,
135
- direction: createdEvent.direction,
136
- data: {
137
- response: createResponsePayload(response, { status: 'in_progress' })
138
- },
139
- sequenceNumber: createdEvent.sequenceNumber
140
- };
141
- // 第二个事件:response.in_progress
142
- const inProgressEvent = createBaseEvent(context, config);
143
- yield {
144
- type: 'response.in_progress',
145
- timestamp: inProgressEvent.timestamp,
146
- protocol: inProgressEvent.protocol,
147
- direction: inProgressEvent.direction,
148
- data: {
149
- response: createResponsePayload(response, { status: 'in_progress' })
150
- },
151
- sequenceNumber: inProgressEvent.sequenceNumber
152
- };
153
- }
154
- /**
155
- * 构建response.output_item.added事件
156
- * 映射:output_item.start → response.output_item.added
157
- */
158
- export function buildOutputItemStartEvent(outputItem, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
159
- const baseEvent = createBaseEvent(context, config);
160
- const itemDescriptor = {
161
- id: outputItem.id,
162
- type: outputItem.type,
163
- status: 'in_progress'
164
- };
165
- if (outputItem.type === 'message') {
166
- const message = outputItem;
167
- if (message.role) {
168
- itemDescriptor.role = message.role;
169
- }
170
- itemDescriptor.content = [];
171
- }
172
- if (outputItem.type === 'function_call') {
173
- const functionCall = outputItem;
174
- if (functionCall.name) {
175
- itemDescriptor.name = functionCall.name;
176
- }
177
- if (functionCall.call_id) {
178
- itemDescriptor.call_id = functionCall.call_id;
179
- }
180
- itemDescriptor.arguments = '';
181
- }
182
- if (outputItem.type === 'function_call_output') {
183
- const functionCallOutput = outputItem;
184
- if (functionCallOutput.call_id) {
185
- itemDescriptor.call_id = functionCallOutput.call_id;
186
- }
187
- if (functionCallOutput.tool_call_id) {
188
- itemDescriptor.tool_call_id = functionCallOutput.tool_call_id;
189
- }
190
- itemDescriptor.output = functionCallOutput.output;
191
- }
192
- if (outputItem.type === 'reasoning') {
193
- const reasoning = outputItem;
194
- if (reasoning.summary) {
195
- itemDescriptor.summary = reasoning.summary;
196
- }
197
- }
198
- return {
199
- type: 'response.output_item.added',
200
- timestamp: baseEvent.timestamp,
201
- protocol: baseEvent.protocol,
202
- direction: baseEvent.direction,
203
- data: {
204
- output_index: context.outputIndexCounter,
205
- item: itemDescriptor
206
- },
207
- sequenceNumber: baseEvent.sequenceNumber
208
- };
209
- }
210
- /**
211
- * 构建response.content_part.added事件
212
- * 映射:content_part.start → response.content_part.added
213
- */
214
- export function buildContentPartStartEvent(outputItemId, contentIndex, content, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
215
- const baseEvent = createBaseEvent(context, config);
216
- const partDescriptor = { type: content.type };
217
- if (content.type === 'input_text') {
218
- partDescriptor.text = content.text ?? '';
219
- }
220
- else if (content.type === 'output_text') {
221
- partDescriptor.text = '';
222
- partDescriptor.annotations = content.annotations ?? [];
223
- partDescriptor.logprobs = content.logprobs ?? [];
224
- }
225
- else if (content.type === 'input_image') {
226
- partDescriptor.image_url = content.image_url;
227
- if (content.detail) {
228
- partDescriptor.detail = content.detail;
229
- }
230
- }
231
- else if (content.type === 'file_search') {
232
- partDescriptor.file_search = content.file_search;
233
- }
234
- else if (content.type === 'computer_use') {
235
- partDescriptor.computer_use = content.computer_use;
236
- }
237
- else if (content.type === 'function_call') {
238
- partDescriptor.name = content.name;
239
- partDescriptor.arguments = content.arguments;
240
- }
241
- else if (content.type === 'function_result') {
242
- partDescriptor.result = content.result;
243
- partDescriptor.tool_call_id = content.tool_call_id;
244
- }
245
- else if (content.type === 'conversation') {
246
- partDescriptor.conversation = content.conversation;
247
- }
248
- return {
249
- type: 'response.content_part.added',
250
- timestamp: baseEvent.timestamp,
251
- protocol: baseEvent.protocol,
252
- direction: baseEvent.direction,
253
- data: {
254
- output_index: context.outputIndexCounter,
255
- item_id: outputItemId,
256
- content_index: contentIndex,
257
- part: partDescriptor
258
- },
259
- sequenceNumber: baseEvent.sequenceNumber
260
- };
261
- }
262
- /**
263
- * 构建response.output_text.delta事件流
264
- * 映射:content_part.delta (input_text/output_text/…) → response.output_text.delta
265
- * 对于 reasoning 使用 response.reasoning_text.delta
266
- */
267
- export function* buildContentPartDeltas(outputItemId, contentIndex, text, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
268
- if (!text)
269
- return;
270
- const chunks = chunkText(text, config);
271
- for (const chunk of chunks) {
272
- const baseEvent = createBaseEvent(context, config);
273
- yield {
274
- type: 'response.output_text.delta',
275
- timestamp: baseEvent.timestamp,
276
- protocol: baseEvent.protocol,
277
- direction: baseEvent.direction,
278
- data: {
279
- output_index: context.outputIndexCounter,
280
- item_id: outputItemId,
281
- content_index: contentIndex,
282
- delta: chunk,
283
- logprobs: []
284
- },
285
- sequenceNumber: baseEvent.sequenceNumber
286
- };
287
- }
288
- }
289
- /**
290
- * 构建content_part.done事件
291
- */
292
- export function buildContentPartDoneEvent(outputItemId, contentIndex, content, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
293
- const baseEvent = createBaseEvent(context, config);
294
- const partDescriptor = {};
295
- if (content) {
296
- partDescriptor.type = content.type;
297
- if (content.type === 'input_text' || content.type === 'output_text') {
298
- partDescriptor.text = content.text ?? '';
299
- if (content.type === 'output_text') {
300
- partDescriptor.annotations = content.annotations ?? [];
301
- partDescriptor.logprobs = content.logprobs ?? [];
302
- }
303
- }
304
- else if (content.type === 'input_image') {
305
- partDescriptor.image_url = content.image_url;
306
- if (content.detail) {
307
- partDescriptor.detail = content.detail;
308
- }
309
- }
310
- else if (content.type === 'function_call') {
311
- partDescriptor.name = content.name;
312
- partDescriptor.arguments = content.arguments;
313
- }
314
- else if (content.type === 'function_result') {
315
- partDescriptor.result = content.result;
316
- partDescriptor.tool_call_id = content.tool_call_id;
317
- }
318
- else if (content.type === 'conversation') {
319
- partDescriptor.conversation = content.conversation;
320
- }
321
- }
322
- return {
323
- type: 'response.content_part.done',
324
- timestamp: baseEvent.timestamp,
325
- protocol: baseEvent.protocol,
326
- direction: baseEvent.direction,
327
- data: {
328
- output_index: context.outputIndexCounter,
329
- item_id: outputItemId,
330
- content_index: contentIndex,
331
- ...(Object.keys(partDescriptor).length ? { part: partDescriptor } : {})
332
- },
333
- sequenceNumber: baseEvent.sequenceNumber
334
- };
335
- }
336
- export function buildOutputTextDoneEvent(outputItemId, contentIndex, fullText, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
337
- const baseEvent = createBaseEvent(context, config);
338
- return {
339
- type: 'response.output_text.done',
340
- timestamp: baseEvent.timestamp,
341
- protocol: baseEvent.protocol,
342
- direction: baseEvent.direction,
343
- data: {
344
- output_index: context.outputIndexCounter,
345
- item_id: outputItemId,
346
- content_index: contentIndex,
347
- text: fullText,
348
- logprobs: []
349
- },
350
- sequenceNumber: baseEvent.sequenceNumber
351
- };
352
- }
353
- /**
354
- * 构建response.function_call_arguments.delta/done的start部分
355
- * 映射:function_call.start → 隐含在第一个 delta 中
356
- */
357
- /**
358
- * 构建response.function_call_arguments.delta事件流
359
- * 映射:function_call.delta → response.function_call_arguments.delta
360
- */
361
- export function* buildFunctionCallArgsDeltas(functionCall, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
362
- if (!functionCall.arguments)
363
- return;
364
- const chunks = chunkText(functionCall.arguments, config);
365
- for (const chunk of chunks) {
366
- const baseEvent = createBaseEvent(context, config);
367
- yield {
368
- type: 'response.function_call_arguments.delta',
369
- timestamp: baseEvent.timestamp,
370
- protocol: baseEvent.protocol,
371
- direction: baseEvent.direction,
372
- data: {
373
- output_index: context.outputIndexCounter,
374
- item_id: functionCall.id,
375
- call_id: functionCall.call_id,
376
- delta: chunk
377
- },
378
- sequenceNumber: baseEvent.sequenceNumber
379
- };
380
- }
381
- }
382
- /**
383
- * 构建response.function_call_arguments.done事件
384
- * 映射:function_call.done → response.function_call_arguments.done
385
- */
386
- export function buildFunctionCallDoneEvent(functionCall, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
387
- const baseEvent = createBaseEvent(context, config);
388
- return {
389
- type: 'response.function_call_arguments.done',
390
- timestamp: baseEvent.timestamp,
391
- protocol: baseEvent.protocol,
392
- direction: baseEvent.direction,
393
- data: {
394
- output_index: context.outputIndexCounter,
395
- item_id: functionCall.id,
396
- call_id: functionCall.call_id,
397
- name: functionCall.name,
398
- arguments: functionCall.arguments // done 时包含完整 arguments
399
- },
400
- sequenceNumber: baseEvent.sequenceNumber
401
- };
402
- }
403
- /**
404
- * 构建reasoning.start事件
405
- */
406
- export function buildReasoningStartEvent(reasoning, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
407
- const baseEvent = createBaseEvent(context, config);
408
- return {
409
- type: 'reasoning.start',
410
- timestamp: baseEvent.timestamp,
411
- protocol: baseEvent.protocol,
412
- direction: baseEvent.direction,
413
- data: {
414
- item_id: reasoning.id,
415
- summary: reasoning.summary
416
- },
417
- sequenceNumber: baseEvent.sequenceNumber
418
- };
419
- }
420
- /**
421
- * 构建response.reasoning_text.delta事件流
422
- * 映射:reasoning.delta → response.reasoning_text.delta
423
- */
424
- export function* buildReasoningDeltas(reasoning, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
425
- for (const content of reasoning.content) {
426
- if (content.type === 'reasoning_text') {
427
- if (!content.text)
428
- continue;
429
- const baseEvent = createBaseEvent(context, config);
430
- yield {
431
- type: 'response.reasoning_text.delta',
432
- timestamp: baseEvent.timestamp,
433
- protocol: baseEvent.protocol,
434
- direction: baseEvent.direction,
435
- data: {
436
- output_index: context.outputIndexCounter,
437
- item_id: reasoning.id,
438
- delta: content.text
439
- },
440
- sequenceNumber: baseEvent.sequenceNumber
441
- };
442
- }
443
- else if (content.type === 'reasoning_signature') {
444
- const baseEvent = createBaseEvent(context, config);
445
- yield {
446
- type: 'response.reasoning_signature.delta',
447
- timestamp: baseEvent.timestamp,
448
- protocol: baseEvent.protocol,
449
- direction: baseEvent.direction,
450
- data: {
451
- output_index: context.outputIndexCounter,
452
- item_id: reasoning.id,
453
- signature: content.signature
454
- },
455
- sequenceNumber: baseEvent.sequenceNumber
456
- };
457
- }
458
- else if (content.type === 'reasoning_image') {
459
- const baseEvent = createBaseEvent(context, config);
460
- yield {
461
- type: 'response.reasoning_image.delta',
462
- timestamp: baseEvent.timestamp,
463
- protocol: baseEvent.protocol,
464
- direction: baseEvent.direction,
465
- data: {
466
- output_index: context.outputIndexCounter,
467
- item_id: reasoning.id,
468
- image_url: content.image_url
469
- },
470
- sequenceNumber: baseEvent.sequenceNumber
471
- };
472
- }
473
- }
474
- }
475
- /**
476
- * 构建reasoning.done事件
477
- */
478
- export function buildReasoningDoneEvent(reasoning, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
479
- const baseEvent = createBaseEvent(context, config);
480
- return {
481
- type: 'reasoning.done',
482
- timestamp: baseEvent.timestamp,
483
- protocol: baseEvent.protocol,
484
- direction: baseEvent.direction,
485
- data: {
486
- item_id: reasoning.id
487
- },
488
- sequenceNumber: baseEvent.sequenceNumber
489
- };
490
- }
491
- /**
492
- * 构建output_item.done事件
493
- */
494
- export function buildOutputItemDoneEvent(outputItem, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
495
- const baseEvent = createBaseEvent(context, config);
496
- const itemDescriptor = {
497
- id: outputItem.id,
498
- type: outputItem.type,
499
- status: 'completed'
500
- };
501
- if (outputItem.name) {
502
- itemDescriptor.name = outputItem.name;
503
- }
504
- if (outputItem.arguments) {
505
- itemDescriptor.arguments = outputItem.arguments;
506
- }
507
- if (outputItem.call_id) {
508
- itemDescriptor.call_id = outputItem.call_id;
509
- }
510
- if (outputItem.type === 'function_call_output') {
511
- const result = outputItem;
512
- if (result.call_id) {
513
- itemDescriptor.call_id = result.call_id;
514
- }
515
- if (result.tool_call_id) {
516
- itemDescriptor.tool_call_id = result.tool_call_id;
517
- }
518
- itemDescriptor.output = result.output;
519
- }
520
- return {
521
- type: 'response.output_item.done',
522
- timestamp: baseEvent.timestamp,
523
- protocol: baseEvent.protocol,
524
- direction: baseEvent.direction,
525
- data: {
526
- output_index: context.outputIndexCounter,
527
- item: itemDescriptor
528
- },
529
- sequenceNumber: baseEvent.sequenceNumber
530
- };
531
- }
532
- /**
533
- * 构建required_action事件
534
- */
535
- export function buildRequiredActionEvent(response, requiredAction, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
536
- const baseEvent = createBaseEvent(context, config);
537
- return {
538
- type: 'response.required_action',
539
- timestamp: baseEvent.timestamp,
540
- protocol: baseEvent.protocol,
541
- direction: baseEvent.direction,
542
- data: {
543
- response: createResponsePayload(response, { status: response.status ?? 'requires_action' }),
544
- required_action: requiredAction
545
- },
546
- sequenceNumber: baseEvent.sequenceNumber
547
- };
548
- }
549
- /**
550
- * 构建response.completed事件
551
- * 新增:在 done 之前增加 response.completed
552
- */
553
- export function buildResponseCompletedEvent(response, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
554
- const baseEvent = createBaseEvent(context, config);
555
- return {
556
- type: 'response.completed',
557
- timestamp: baseEvent.timestamp,
558
- protocol: baseEvent.protocol,
559
- direction: baseEvent.direction,
560
- data: {
561
- response: createResponsePayload(response, { status: response.status ?? 'completed' })
562
- },
563
- sequenceNumber: baseEvent.sequenceNumber
564
- };
565
- }
566
- /**
567
- * 构建response.done事件
568
- */
569
- export function buildResponseDoneEvent(response, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
570
- const baseEvent = createBaseEvent(context, config);
571
- return {
572
- type: 'response.done',
573
- timestamp: baseEvent.timestamp,
574
- protocol: baseEvent.protocol,
575
- direction: baseEvent.direction,
576
- data: '[DONE]',
577
- sequenceNumber: baseEvent.sequenceNumber
578
- };
579
- }
580
- /**
581
- * 构建error事件
582
- */
583
- export function buildErrorEvent(error, context, config = DEFAULT_RESPONSES_EVENT_GENERATOR_CONFIG) {
584
- const baseEvent = createBaseEvent(context, config);
585
- return {
586
- type: 'error',
587
- timestamp: baseEvent.timestamp,
588
- protocol: baseEvent.protocol,
589
- direction: baseEvent.direction,
590
- data: {
591
- error: {
592
- message: error.message,
593
- type: 'internal_error',
594
- code: 'generation_error'
595
- }
596
- },
597
- sequenceNumber: baseEvent.sequenceNumber
598
- };
599
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * JSON→SSE转换模块导出
3
- */
4
- export { ChatJsonToSseConverter } from './chat-json-to-sse-converter.js';
5
- export { ResponsesJsonToSseConverter } from './responses-json-to-sse-converter.js';
6
- export type { ChatJsonToSseOptions, ChatJsonToSseContext, ChatEventStats, ResponsesJsonToSseOptions, ResponsesJsonToSseContext, ResponsesEventStats } from '../types/index.js';
@@ -1,7 +0,0 @@
1
- /**
2
- * JSON→SSE转换模块导出
3
- */
4
- // Chat协议转换器(重构版本)
5
- export { ChatJsonToSseConverter } from './chat-json-to-sse-converter.js';
6
- // Responses协议转换器(重构版本)
7
- export { ResponsesJsonToSseConverter } from './responses-json-to-sse-converter.js';
@@ -1,79 +0,0 @@
1
- /**
2
- * Responses JSON → SSE转换器(重构版本)
3
- * 使用函数化架构:事件生成 + 序列化 + 写入分离
4
- */
5
- import { ResponsesRequest, ResponsesResponse, ResponsesJsonToSseContext, ResponsesJsonToSseOptions, ResponsesSseEventStream, DEFAULT_RESPONSES_CONVERSION_CONFIG } from '../types/index.js';
6
- /**
7
- * 重构后的Responses JSON到SSE转换器
8
- * 采用函数化架构,专注于编排而非具体业务逻辑
9
- */
10
- export declare class ResponsesJsonToSseConverterRefactored {
11
- private config;
12
- private contexts;
13
- constructor(config?: Partial<typeof DEFAULT_RESPONSES_CONVERSION_CONFIG>);
14
- /**
15
- * 将Responses请求转换为SSE流
16
- */
17
- convertRequestToJsonToSse(request: ResponsesRequest, options: ResponsesJsonToSseOptions): Promise<ResponsesSseEventStream>;
18
- /**
19
- * 将Responses响应转换为SSE流
20
- */
21
- convertResponseToJsonToSse(response: ResponsesResponse, options: ResponsesJsonToSseOptions): Promise<ResponsesSseEventStream>;
22
- /**
23
- * 使用函数化架构处理请求转换
24
- */
25
- private processRequestToSseWithFunctions;
26
- /**
27
- * 使用函数化架构处理响应转换
28
- */
29
- private processResponseToSseWithFunctions;
30
- /**
31
- * 验证请求格式
32
- */
33
- private validateRequest;
34
- /**
35
- * 验证响应格式
36
- */
37
- private validateResponse;
38
- /**
39
- * 更新统计信息
40
- */
41
- private updateStats;
42
- /**
43
- * 包装错误
44
- */
45
- private wrapError;
46
- /**
47
- * 处理流错误
48
- */
49
- private handleStreamError;
50
- /**
51
- * 完成流
52
- */
53
- private completeStream;
54
- /**
55
- * 中止流
56
- */
57
- private abortStream;
58
- /**
59
- * 创建请求上下文
60
- */
61
- private createRequestContext;
62
- /**
63
- * 创建响应上下文
64
- */
65
- private createResponseContext;
66
- /**
67
- * 获取上下文
68
- */
69
- getContext(requestId: string): ResponsesJsonToSseContext | undefined;
70
- /**
71
- * 清理上下文
72
- */
73
- clearContext(requestId: string): void;
74
- /**
75
- * 获取所有活跃的上下文
76
- */
77
- getActiveContexts(): Map<string, ResponsesJsonToSseContext>;
78
- }
79
- export declare const ResponsesJsonToSseConverter: typeof ResponsesJsonToSseConverterRefactored;