@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,87 +0,0 @@
1
- import { NodeType, NodeStatus } from '../../types/index.js';
2
- function unwrapOpenAIResponse(payload) {
3
- let current = payload;
4
- const seen = new Set();
5
- while (current && typeof current === 'object' && !Array.isArray(current) && !seen.has(current)) {
6
- seen.add(current);
7
- if ('choices' in current || 'id' in current || 'object' in current)
8
- break;
9
- if ('data' in current && current.data && typeof current.data === 'object') {
10
- current = current.data;
11
- continue;
12
- }
13
- break;
14
- }
15
- return current;
16
- }
17
- /**
18
- * OpenAI provider response → canonical chat response输入节点
19
- */
20
- export class OpenAIResponseInputNode {
21
- id;
22
- config;
23
- type = NodeType.INPUT;
24
- status = NodeStatus.IDLE;
25
- name;
26
- constructor(id, config) {
27
- this.id = id;
28
- this.config = config;
29
- this.name = config.name || 'OpenAI Response Input Node';
30
- }
31
- async execute(context) {
32
- const start = Date.now();
33
- this.status = NodeStatus.RUNNING;
34
- try {
35
- const payload = context.data?.payload ?? context.data ?? context.request.payload;
36
- const chatShape = unwrapOpenAIResponse(payload);
37
- const responseContext = {
38
- toolContext: {
39
- originalRequest: context.request.context?.metadata?.originalRequest,
40
- requestId: context.request.id,
41
- entryEndpoint: context.request.context?.entryEndpoint || context.request.endpoint
42
- }
43
- };
44
- this.status = NodeStatus.COMPLETED;
45
- return {
46
- success: true,
47
- data: {
48
- responsePayload: chatShape,
49
- responseContext
50
- },
51
- metadata: {
52
- node: this.id,
53
- executionTime: Date.now() - start,
54
- startTime: start,
55
- endTime: Date.now()
56
- }
57
- };
58
- }
59
- catch (error) {
60
- this.status = NodeStatus.FAILED;
61
- return {
62
- success: false,
63
- error: {
64
- code: 'OPENAI_RESPONSE_INPUT_ERROR',
65
- message: error instanceof Error ? error.message : 'Failed to normalize OpenAI response',
66
- cause: error instanceof Error ? error : undefined
67
- },
68
- metadata: {
69
- node: this.id,
70
- executionTime: Date.now() - start,
71
- startTime: start,
72
- endTime: Date.now()
73
- }
74
- };
75
- }
76
- }
77
- validate() {
78
- return {
79
- valid: true,
80
- errors: [],
81
- warnings: []
82
- };
83
- }
84
- async cleanup() {
85
- this.status = NodeStatus.IDLE;
86
- }
87
- }
@@ -1 +0,0 @@
1
- export { buildProcessedRequestFromChatResponse } from '../../../hub/response/chat-response-utils.js';
@@ -1 +0,0 @@
1
- export { buildProcessedRequestFromChatResponse } from '../../../hub/response/chat-response-utils.js';
@@ -1,12 +0,0 @@
1
- import { NodeType, NodeStatus, type NodeConfig, type NodeContext, type NodeResult, type PipelineNode, type ValidationResult } from '../../types/index.js';
2
- export declare class ResponsesResponseInputNode implements PipelineNode {
3
- readonly id: string;
4
- readonly config: NodeConfig;
5
- readonly type = NodeType.INPUT;
6
- status: NodeStatus;
7
- readonly name: string;
8
- constructor(id: string, config: NodeConfig);
9
- execute(context: NodeContext): Promise<NodeResult>;
10
- validate(): ValidationResult;
11
- cleanup(): Promise<void>;
12
- }
@@ -1,67 +0,0 @@
1
- import { NodeType, NodeStatus } from '../../types/index.js';
2
- import { buildChatResponseFromResponses } from '../../../responses/responses-openai-bridge.js';
3
- export class ResponsesResponseInputNode {
4
- id;
5
- config;
6
- type = NodeType.INPUT;
7
- status = NodeStatus.IDLE;
8
- name;
9
- constructor(id, config) {
10
- this.id = id;
11
- this.config = config;
12
- this.name = config.name || 'Responses Response Input Node';
13
- }
14
- async execute(context) {
15
- const start = Date.now();
16
- this.status = NodeStatus.RUNNING;
17
- try {
18
- const payload = context.data?.payload ?? context.data ?? context.request.payload;
19
- const chatShape = buildChatResponseFromResponses(payload);
20
- const responseContext = {
21
- toolContext: {
22
- originalRequest: context.request.context?.metadata?.originalRequest,
23
- requestId: context.request.id,
24
- entryEndpoint: context.request.context?.entryEndpoint || context.request.endpoint
25
- }
26
- };
27
- this.status = NodeStatus.COMPLETED;
28
- return {
29
- success: true,
30
- data: {
31
- responsePayload: chatShape,
32
- rawResponsesPayload: payload,
33
- responseContext
34
- },
35
- metadata: {
36
- node: this.id,
37
- executionTime: Date.now() - start,
38
- startTime: start,
39
- endTime: Date.now()
40
- }
41
- };
42
- }
43
- catch (error) {
44
- this.status = NodeStatus.FAILED;
45
- return {
46
- success: false,
47
- error: {
48
- code: 'RESPONSES_RESPONSE_INPUT_ERROR',
49
- message: error instanceof Error ? error.message : 'Failed to normalize OpenAI Responses payload',
50
- cause: error instanceof Error ? error : undefined
51
- },
52
- metadata: {
53
- node: this.id,
54
- executionTime: Date.now() - start,
55
- startTime: start,
56
- endTime: Date.now()
57
- }
58
- };
59
- }
60
- }
61
- validate() {
62
- return { valid: true, errors: [], warnings: [] };
63
- }
64
- async cleanup() {
65
- this.status = NodeStatus.IDLE;
66
- }
67
- }
@@ -1,3 +0,0 @@
1
- export { SSEInputNode } from './sse-input-node.js';
2
- export { SSEOutputNode } from './sse-output-node.js';
3
- export { SSEPassthroughNode } from './sse-passthrough-node.js';
@@ -1,3 +0,0 @@
1
- export { SSEInputNode } from './sse-input-node.js';
2
- export { SSEOutputNode } from './sse-output-node.js';
3
- export { SSEPassthroughNode } from './sse-passthrough-node.js';
@@ -1,27 +0,0 @@
1
- import { NodeType, NodeStatus, type NodeConfig, type NodeContext, type NodeResult, type PipelineNode, type ValidationResult } from '../../types/index.js';
2
- /**
3
- * SSE 输入节点(重构版本)
4
- *
5
- * 将上游 SSE 请求上下文转换为标准 JSON 载荷。
6
- * 基于配置驱动的轻量级编排器,使用标准化的 codec registry。
7
- */
8
- export declare class SSEInputNode implements PipelineNode {
9
- readonly id: string;
10
- readonly config: NodeConfig;
11
- readonly type = NodeType.INPUT;
12
- status: NodeStatus;
13
- readonly name: string;
14
- constructor(id: string, config: NodeConfig);
15
- execute(context: NodeContext): Promise<NodeResult>;
16
- private getParserConfig;
17
- private resolveSseProtocol;
18
- private applyCompatibilityFilters;
19
- private detectInputFormat;
20
- private convertSSEToJson;
21
- private createSseEventStream;
22
- private unwrapReadable;
23
- private passThroughJson;
24
- private wrapError;
25
- validate(): ValidationResult;
26
- cleanup(): Promise<void>;
27
- }
@@ -1,165 +0,0 @@
1
- import { Readable } from 'stream';
2
- import { NodeType, NodeStatus, ConversionError } from '../../types/index.js';
3
- import { defaultSseCodecRegistry } from '../../../../sse/index.js';
4
- /**
5
- * SSE 输入节点(重构版本)
6
- *
7
- * 将上游 SSE 请求上下文转换为标准 JSON 载荷。
8
- * 基于配置驱动的轻量级编排器,使用标准化的 codec registry。
9
- */
10
- export class SSEInputNode {
11
- id;
12
- config;
13
- type = NodeType.INPUT;
14
- status = NodeStatus.IDLE;
15
- name;
16
- constructor(id, config) {
17
- this.id = id;
18
- this.config = config;
19
- this.name = config.name || 'SSE Input Node';
20
- }
21
- async execute(context) {
22
- const start = Date.now();
23
- this.status = NodeStatus.RUNNING;
24
- try {
25
- const parserConfig = this.getParserConfig(context);
26
- const filteredConfig = await this.applyCompatibilityFilters(parserConfig, context);
27
- const inputFormat = this.detectInputFormat(context);
28
- if (inputFormat === 'sse-stream') {
29
- const result = await this.convertSSEToJson(context, filteredConfig);
30
- this.status = NodeStatus.COMPLETED;
31
- return {
32
- success: true,
33
- data: result,
34
- metadata: {
35
- node: this.id,
36
- executionTime: Date.now() - start,
37
- startTime: start,
38
- endTime: Date.now()
39
- }
40
- };
41
- }
42
- return this.passThroughJson(context, start);
43
- }
44
- catch (error) {
45
- this.status = NodeStatus.FAILED;
46
- throw this.wrapError(error);
47
- }
48
- }
49
- getParserConfig(context) {
50
- const requestContext = context.request.context;
51
- const nestedMetadata = requestContext?.metadata;
52
- const metadataSource = nestedMetadata ?? requestContext;
53
- const provider = metadataSource?.provider ?? requestContext?.provider;
54
- const profile = provider?.profile;
55
- const providedModel = typeof metadataSource?.model === 'string' ? metadataSource.model : undefined;
56
- const providerProtocol = typeof metadataSource?.providerProtocol === 'string'
57
- ? metadataSource.providerProtocol
58
- : undefined;
59
- const entryEndpoint = typeof metadataSource?.entryEndpoint === 'string'
60
- ? metadataSource.entryEndpoint
61
- : context.request.endpoint;
62
- return {
63
- protocol: this.resolveSseProtocol(profile, providerProtocol, entryEndpoint),
64
- model: providedModel
65
- };
66
- }
67
- resolveSseProtocol(profile, providerProtocol, entryEndpoint) {
68
- const candidates = [
69
- profile,
70
- providerProtocol,
71
- entryEndpoint
72
- ].filter((value) => typeof value === 'string');
73
- for (const value of candidates) {
74
- const lowered = value.toLowerCase();
75
- if (lowered.includes('responses')) {
76
- return 'openai-responses';
77
- }
78
- if (lowered.includes('messages') || lowered.includes('anthropic')) {
79
- return 'anthropic-messages';
80
- }
81
- }
82
- return 'openai-chat';
83
- }
84
- async applyCompatibilityFilters(config, _context) {
85
- return config;
86
- }
87
- detectInputFormat(context) {
88
- const payload = context.request.payload;
89
- if (payload && typeof payload === 'object' && 'readable' in payload) {
90
- return 'sse-stream';
91
- }
92
- if (payload && typeof payload === 'object') {
93
- return 'json-object';
94
- }
95
- return 'json-object';
96
- }
97
- async convertSSEToJson(context, config) {
98
- const readable = this.unwrapReadable(context.request.payload);
99
- const codec = defaultSseCodecRegistry.get(config.protocol);
100
- try {
101
- const result = await codec.convertSseToJson(this.createSseEventStream(readable), {
102
- requestId: context.request.id,
103
- model: config.model,
104
- direction: 'request'
105
- });
106
- if (!result || typeof result !== 'object') {
107
- throw new ConversionError('SSE converter returned empty payload', this.id);
108
- }
109
- return result;
110
- }
111
- catch (error) {
112
- throw new ConversionError(`${config.protocol} SSE conversion failed: ${error.message}`, this.id);
113
- }
114
- }
115
- createSseEventStream(sseStream) {
116
- const iterator = async function* () {
117
- for await (const chunk of sseStream) {
118
- yield typeof chunk === 'string' ? chunk : chunk.toString();
119
- }
120
- };
121
- return iterator();
122
- }
123
- unwrapReadable(payload) {
124
- if (payload && typeof payload === 'object' && 'readable' in payload) {
125
- const candidate = payload.readable;
126
- if (candidate instanceof Readable) {
127
- return candidate;
128
- }
129
- }
130
- return payload;
131
- }
132
- passThroughJson(context, startTime) {
133
- const payload = context.request.payload;
134
- if (!payload || typeof payload !== 'object') {
135
- throw new ConversionError('JSON payload must be an object', this.id);
136
- }
137
- this.status = NodeStatus.COMPLETED;
138
- return {
139
- success: true,
140
- data: payload,
141
- metadata: {
142
- node: this.id,
143
- executionTime: Date.now() - startTime,
144
- startTime,
145
- endTime: Date.now()
146
- }
147
- };
148
- }
149
- wrapError(error) {
150
- if (error instanceof ConversionError) {
151
- return error;
152
- }
153
- return new ConversionError(`SSE input conversion failed: ${error.message}`, this.id);
154
- }
155
- validate() {
156
- return {
157
- valid: true,
158
- errors: [],
159
- warnings: []
160
- };
161
- }
162
- async cleanup() {
163
- this.status = NodeStatus.IDLE;
164
- }
165
- }
@@ -1,19 +0,0 @@
1
- import { NodeStatus, NodeType, type NodeConfig, type NodeContext, type NodeResult, type PipelineNode, type ValidationResult } from '../../types/index.js';
2
- /**
3
- * SSE 输出节点
4
- *
5
- * 将转换后的响应根据是否流式输出为 JSON 或 Readable SSE 流。
6
- */
7
- export declare class SSEOutputNode implements PipelineNode {
8
- readonly id: string;
9
- readonly config: NodeConfig;
10
- readonly type = NodeType.OUTPUT;
11
- status: NodeStatus;
12
- readonly name: string;
13
- constructor(id: string, config: NodeConfig);
14
- execute(context: NodeContext): Promise<NodeResult>;
15
- validate(): ValidationResult;
16
- cleanup(): Promise<void>;
17
- private createStreamingResponse;
18
- private resolveModelId;
19
- }
@@ -1,267 +0,0 @@
1
- import { PassThrough } from 'node:stream';
2
- import { NodeStatus, NodeType } from '../../types/index.js';
3
- import { defaultSseCodecRegistry } from '../../../../sse/index.js';
4
- function getPipelineDirection(context) {
5
- const metadata = context.request.context?.metadata;
6
- const direction = typeof metadata?.direction === 'string' ? metadata.direction.toLowerCase() : '';
7
- return direction === 'response' ? 'response' : 'request';
8
- }
9
- function mapResumeToolOutputs(meta) {
10
- if (!Array.isArray(meta))
11
- return [];
12
- const mapped = [];
13
- meta.forEach((entry, index) => {
14
- if (!entry || typeof entry !== 'object')
15
- return;
16
- const rec = entry;
17
- const originalId = typeof rec.originalId === 'string' && rec.originalId.trim()
18
- ? rec.originalId.trim()
19
- : undefined;
20
- const callIdRaw = typeof rec.callId === 'string' && rec.callId.trim()
21
- ? rec.callId.trim()
22
- : undefined;
23
- const callId = callIdRaw || (originalId ? (originalId.startsWith('fc_') ? originalId : `fc_${originalId}`) : `fc_resume_${index}`);
24
- const outputText = typeof rec.outputText === 'string' ? rec.outputText : '';
25
- mapped.push({
26
- id: callId,
27
- type: 'function_call_output',
28
- call_id: callId,
29
- tool_call_id: originalId,
30
- output: outputText
31
- });
32
- });
33
- return mapped;
34
- }
35
- function resolveMetadata(context) {
36
- const ctx = context.request.context?.metadata;
37
- return (ctx && typeof ctx === 'object') ? ctx : {};
38
- }
39
- function getOriginalRequest(metadata) {
40
- const original = metadata?.originalRequest;
41
- return original && typeof original === 'object' ? original : undefined;
42
- }
43
- function normalizeStreamingFlag(value) {
44
- if (typeof value === 'boolean')
45
- return value;
46
- if (typeof value === 'string') {
47
- const lowered = value.trim().toLowerCase();
48
- if (['true', '1', 'yes', 'always'].includes(lowered))
49
- return true;
50
- if (['false', '0', 'no', 'never'].includes(lowered))
51
- return false;
52
- }
53
- return undefined;
54
- }
55
- function metadataRequestsStreaming(meta) {
56
- if (!meta)
57
- return false;
58
- const inboundFlag = normalizeStreamingFlag(meta.inboundStream);
59
- if (inboundFlag)
60
- return true;
61
- const directFlag = normalizeStreamingFlag(meta.stream);
62
- if (directFlag)
63
- return true;
64
- const clientFlag = normalizeStreamingFlag(meta.clientStream);
65
- if (clientFlag)
66
- return true;
67
- if (typeof meta.streaming === 'string') {
68
- const lowered = meta.streaming.toLowerCase();
69
- if (lowered === 'always')
70
- return true;
71
- if (lowered === 'auto' && clientFlag)
72
- return true;
73
- }
74
- return false;
75
- }
76
- function shouldStreamResponse(context, conversionResponse) {
77
- const metadata = resolveMetadata(context);
78
- if (metadataRequestsStreaming(metadata))
79
- return true;
80
- const orig = getOriginalRequest(metadata);
81
- if (orig) {
82
- const origStream = normalizeStreamingFlag(orig.stream);
83
- if (origStream === true)
84
- return true;
85
- }
86
- if (conversionResponse?.metadata && conversionResponse.metadata?.streaming === true)
87
- return true;
88
- return false;
89
- }
90
- function fallbackSSE(payload, requestId) {
91
- const stream = new PassThrough();
92
- try {
93
- stream.write(`data: ${JSON.stringify({ error: payload, requestId })}\n\n`);
94
- }
95
- catch {
96
- stream.write('data: {"error":{"message":"sse_fallback"}}\n\n');
97
- }
98
- stream.write('data: [DONE]\n\n');
99
- stream.end();
100
- return stream;
101
- }
102
- function resolveFormat(contextData) {
103
- const conversionResponse = contextData?.conversionResponse;
104
- const explicit = typeof conversionResponse?.format === 'string' ? conversionResponse.format : undefined;
105
- if (explicit)
106
- return explicit;
107
- const outputFormat = contextData?.outputFormat;
108
- return typeof outputFormat === 'string' ? outputFormat : '';
109
- }
110
- function normalizeFormatToProtocol(format) {
111
- if (!format) {
112
- return 'openai-chat';
113
- }
114
- const lowered = format.toLowerCase();
115
- if (lowered === 'openai-chat' || lowered === 'processed-chat') {
116
- return 'openai-chat';
117
- }
118
- if (lowered === 'openai-responses') {
119
- return 'openai-responses';
120
- }
121
- if (lowered === 'anthropic-messages' || lowered === 'anthropic') {
122
- return 'anthropic-messages';
123
- }
124
- return null;
125
- }
126
- function resolveResponsePayload(contextData) {
127
- const conversionResponse = contextData?.conversionResponse;
128
- if (conversionResponse?.data && typeof conversionResponse.data === 'object') {
129
- return conversionResponse.data;
130
- }
131
- const outputData = contextData?.outputData;
132
- if (outputData && typeof outputData === 'object') {
133
- return outputData;
134
- }
135
- return undefined;
136
- }
137
- /**
138
- * SSE 输出节点
139
- *
140
- * 将转换后的响应根据是否流式输出为 JSON 或 Readable SSE 流。
141
- */
142
- export class SSEOutputNode {
143
- id;
144
- config;
145
- type = NodeType.OUTPUT;
146
- status = NodeStatus.IDLE;
147
- name;
148
- constructor(id, config) {
149
- this.id = id;
150
- this.config = config;
151
- this.name = config.name || 'SSE Output Node';
152
- }
153
- async execute(context) {
154
- const start = Date.now();
155
- this.status = NodeStatus.RUNNING;
156
- const direction = getPipelineDirection(context);
157
- if (direction !== 'response') {
158
- this.status = NodeStatus.COMPLETED;
159
- return {
160
- success: true,
161
- data: context.data ?? {},
162
- metadata: {
163
- node: this.id,
164
- executionTime: Date.now() - start,
165
- startTime: start,
166
- endTime: Date.now()
167
- }
168
- };
169
- }
170
- const data = context.data;
171
- const conversionResponse = data?.conversionResponse;
172
- const responsePayload = resolveResponsePayload(data ?? {});
173
- const format = resolveFormat(data ?? {});
174
- const wantsStream = shouldStreamResponse(context, conversionResponse);
175
- const metadata = resolveMetadata(context);
176
- if (wantsStream) {
177
- const stream = await this.createStreamingResponse(format, responsePayload, context.request.id, metadata);
178
- this.status = NodeStatus.COMPLETED;
179
- return {
180
- success: true,
181
- data: {
182
- __sse_responses: stream,
183
- passthrough: context.pipeline.isPassthrough,
184
- format
185
- },
186
- metadata: {
187
- node: this.id,
188
- executionTime: Date.now() - start,
189
- startTime: start,
190
- endTime: Date.now()
191
- }
192
- };
193
- }
194
- // 非流式路径:
195
- // - Responses 输出:返回标准 Responses JSON(response 节点),并保留 sseStream 供快照/调试。
196
- // - 其他输出:保持原有 sseStream 形状,避免干扰 Chat / Anthropic 等路径。
197
- this.status = NodeStatus.COMPLETED;
198
- const responsePayloadData = conversionResponse?.data ?? responsePayload;
199
- const includeResponsePayload = typeof format === 'string' && format.toLowerCase() === 'openai-responses';
200
- return {
201
- success: true,
202
- data: {
203
- ...(includeResponsePayload ? {
204
- response: responsePayloadData,
205
- responseMetadata: conversionResponse?.metadata
206
- } : {}),
207
- sseStream: conversionResponse ?? responsePayload,
208
- passthrough: context.pipeline.isPassthrough,
209
- format
210
- },
211
- metadata: {
212
- node: this.id,
213
- executionTime: Date.now() - start,
214
- startTime: start,
215
- endTime: Date.now()
216
- }
217
- };
218
- }
219
- validate() {
220
- return {
221
- valid: true,
222
- errors: [],
223
- warnings: []
224
- };
225
- }
226
- async cleanup() {
227
- this.status = NodeStatus.IDLE;
228
- }
229
- async createStreamingResponse(format, payload, requestId, metadata) {
230
- if (!payload) {
231
- return fallbackSSE({ message: 'sse_not_available', format }, requestId);
232
- }
233
- const protocol = normalizeFormatToProtocol(format);
234
- if (!protocol) {
235
- return fallbackSSE({ message: 'sse_protocol_unsupported', format }, requestId);
236
- }
237
- try {
238
- const codec = defaultSseCodecRegistry.get(protocol);
239
- const resumeItems = mapResumeToolOutputs(metadata?.responsesResume?.toolOutputsDetailed);
240
- const stream = await codec.convertJsonToSse(payload, {
241
- requestId,
242
- model: this.resolveModelId(payload),
243
- direction: 'response',
244
- resumeToolOutputs: resumeItems.length ? resumeItems : undefined
245
- });
246
- return stream;
247
- }
248
- catch (error) {
249
- console.error('[SSEOutputNode] Error creating streaming response:', error);
250
- return fallbackSSE({
251
- error: 'sse_conversion_failed',
252
- message: error instanceof Error ? error.message : 'Unknown error',
253
- format,
254
- protocol
255
- }, requestId);
256
- }
257
- }
258
- resolveModelId(payload) {
259
- if ('model' in payload && typeof payload.model === 'string') {
260
- return payload.model;
261
- }
262
- if ('response' in payload && payload.response && typeof payload.response.model === 'string') {
263
- return payload.response.model;
264
- }
265
- return 'unknown';
266
- }
267
- }
@@ -1,18 +0,0 @@
1
- import { NodeStatus, NodeType, type NodeConfig, type NodeContext, type NodeResult, type PipelineNode, type ValidationResult } from '../../types/index.js';
2
- /**
3
- * SSE 直通节点
4
- *
5
- * 在需要保持 SSE 原样透传时使用。
6
- * 仅做元数据记录,不改变数据内容。
7
- */
8
- export declare class SSEPassthroughNode implements PipelineNode {
9
- readonly id: string;
10
- readonly config: NodeConfig;
11
- readonly type = NodeType.PROCESS;
12
- status: NodeStatus;
13
- readonly name: string;
14
- constructor(id: string, config: NodeConfig);
15
- execute(context: NodeContext): Promise<NodeResult>;
16
- validate(): ValidationResult;
17
- cleanup(): Promise<void>;
18
- }