@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,213 +0,0 @@
1
- import { NodeStatus, NodeType } from '../../types/index.js';
2
- import { runChatResponseToolFilters } from '../../../shared/tool-filter-pipeline.js';
3
- import { finalizeOpenAIChatResponse } from '../../../shared/openai-finalizer.js';
4
- import { buildProcessedRequestFromChatResponse } from '../response/response-utils.js';
5
- function normalizeFlag(value) {
6
- if (typeof value === 'boolean')
7
- return value;
8
- if (typeof value === 'string') {
9
- const lowered = value.trim().toLowerCase();
10
- if (['true', '1', 'yes', 'always'].includes(lowered))
11
- return true;
12
- if (['false', '0', 'no', 'never'].includes(lowered))
13
- return false;
14
- }
15
- return undefined;
16
- }
17
- function metadataWantsStreaming(meta) {
18
- if (!meta)
19
- return false;
20
- const inboundFlag = normalizeFlag(meta['inboundStream']);
21
- if (inboundFlag)
22
- return true;
23
- const direct = normalizeFlag(meta['stream']);
24
- if (direct)
25
- return true;
26
- const client = normalizeFlag(meta['clientStream']);
27
- if (client)
28
- return true;
29
- const streamingMode = meta['streaming'];
30
- if (typeof streamingMode === 'string') {
31
- const lowered = streamingMode.toLowerCase();
32
- if (lowered === 'always')
33
- return true;
34
- if (lowered === 'auto' && client)
35
- return true;
36
- }
37
- return false;
38
- }
39
- export class ResponseProcessNode {
40
- id;
41
- config;
42
- type = NodeType.PROCESS;
43
- status = NodeStatus.IDLE;
44
- name;
45
- constructor(id, config) {
46
- this.id = id;
47
- this.config = config;
48
- this.name = config.name || 'Response Process Node';
49
- }
50
- async execute(context) {
51
- const start = Date.now();
52
- this.status = NodeStatus.RUNNING;
53
- try {
54
- const { payload, responseContext } = this.extractPayload(context.data);
55
- const wantsStream = this.detectStreamingIntent(context);
56
- const toolCtx = this.buildToolContext(context, responseContext);
57
- const governed = await runChatResponseToolFilters(payload, {
58
- entryEndpoint: toolCtx.entryEndpoint,
59
- requestId: context.request.id,
60
- profile: 'openai-chat'
61
- });
62
- const finalized = await finalizeOpenAIChatResponse(governed, {
63
- requestId: context.request.id,
64
- endpoint: toolCtx.entryEndpoint,
65
- processingMode: wantsStream ? 'streaming' : 'non-streaming',
66
- stream: wantsStream
67
- });
68
- const processedRequest = buildProcessedRequestFromChatResponse(finalized, { stream: wantsStream });
69
- this.status = NodeStatus.COMPLETED;
70
- return {
71
- success: true,
72
- data: { processedRequest },
73
- metadata: {
74
- node: this.id,
75
- executionTime: Date.now() - start,
76
- startTime: start,
77
- endTime: Date.now()
78
- }
79
- };
80
- }
81
- catch (error) {
82
- this.status = NodeStatus.FAILED;
83
- return {
84
- success: false,
85
- error: {
86
- code: 'RESPONSE_PROCESS_ERROR',
87
- message: error instanceof Error ? error.message : 'Failed to process provider response',
88
- cause: error instanceof Error ? error : undefined
89
- },
90
- metadata: {
91
- node: this.id,
92
- executionTime: Date.now() - start,
93
- startTime: start,
94
- endTime: Date.now()
95
- }
96
- };
97
- }
98
- }
99
- validate() {
100
- return { valid: true, errors: [], warnings: [] };
101
- }
102
- async cleanup() {
103
- this.status = NodeStatus.IDLE;
104
- }
105
- extractPayload(data) {
106
- if (!data || typeof data !== 'object') {
107
- throw new Error('Response payload is required before processing');
108
- }
109
- const obj = data;
110
- if (!obj.responsePayload || typeof obj.responsePayload !== 'object') {
111
- throw new Error('responsePayload must be provided by response input node');
112
- }
113
- return { payload: obj.responsePayload, responseContext: obj.responseContext };
114
- }
115
- buildToolContext(context, responseContext) {
116
- const pipelineCtx = context.request.context ?? {};
117
- const metadata = pipelineCtx.metadata && typeof pipelineCtx.metadata === 'object'
118
- ? pipelineCtx.metadata
119
- : undefined;
120
- const baseEntry = typeof pipelineCtx.entryEndpoint === 'string'
121
- ? pipelineCtx.entryEndpoint
122
- : context.request.endpoint;
123
- const toolContext = responseContext?.toolContext && typeof responseContext.toolContext === 'object'
124
- ? responseContext.toolContext
125
- : {};
126
- const resolvedEntry = typeof toolContext.entryEndpoint === 'string'
127
- ? toolContext.entryEndpoint
128
- : baseEntry;
129
- const resolvedRequestId = typeof toolContext.requestId === 'string'
130
- ? toolContext.requestId
131
- : context.request.id;
132
- // 构建基础工具上下文
133
- const baseContext = {
134
- originalRequest: toolContext.originalRequest ?? metadata?.originalRequest,
135
- requestId: resolvedRequestId,
136
- entryEndpoint: typeof resolvedEntry === 'string' && resolvedEntry.length
137
- ? resolvedEntry
138
- : context.request.endpoint
139
- };
140
- // 传递所有桥接回调,确保服务器工具自动循环和web_fetch执行路径正常
141
- const bridgeCallbacks = {};
142
- // 传递invokeSecondRound用于服务器工具自动循环
143
- if (context.request.context && typeof context.request.context === 'object') {
144
- const ctx = context.request.context;
145
- if (typeof ctx.invokeSecondRound === 'function') {
146
- bridgeCallbacks.invokeSecondRound = ctx.invokeSecondRound;
147
- }
148
- // 传递其他可能的桥接回调
149
- const callbackKeys = ['webFetch', 'toolExecute', 'getCredentials'];
150
- for (const key of callbackKeys) {
151
- if (typeof ctx[key] === 'function') {
152
- bridgeCallbacks[key] = ctx[key];
153
- }
154
- }
155
- }
156
- return {
157
- ...baseContext,
158
- ...bridgeCallbacks
159
- };
160
- }
161
- detectStreamingIntent(context) {
162
- try {
163
- const payload = context.request.payload;
164
- if (payload && typeof payload === 'object') {
165
- const payloadStream = payload['stream'];
166
- if (normalizeFlag(payloadStream) === true) {
167
- return true;
168
- }
169
- const payloadMeta = payload['metadata'];
170
- if (payloadMeta && typeof payloadMeta === 'object' && normalizeFlag(payloadMeta['stream']) === true) {
171
- return true;
172
- }
173
- }
174
- const directMeta = this.extractDirectMetadata(context);
175
- if (metadataWantsStreaming(directMeta)) {
176
- return true;
177
- }
178
- const ctxMetadata = this.extractRequestMetadata(context);
179
- if (metadataWantsStreaming(ctxMetadata)) {
180
- return true;
181
- }
182
- if (ctxMetadata) {
183
- const originalRequest = ctxMetadata.originalRequest;
184
- if (originalRequest && typeof originalRequest === 'object' && normalizeFlag(originalRequest.stream) === true) {
185
- return true;
186
- }
187
- }
188
- if (context.request.options?.streamingFormat === 'sse') {
189
- return true;
190
- }
191
- }
192
- catch {
193
- // ignore detection errors
194
- }
195
- return false;
196
- }
197
- extractDirectMetadata(context) {
198
- const container = context.request;
199
- if (container && typeof container.metadata === 'object') {
200
- return container.metadata;
201
- }
202
- return undefined;
203
- }
204
- extractRequestMetadata(context) {
205
- if (context.request?.context && typeof context.request.context === 'object') {
206
- const metadata = context.request.context.metadata;
207
- if (metadata && typeof metadata === 'object') {
208
- return metadata;
209
- }
210
- }
211
- return undefined;
212
- }
213
- }
@@ -1,30 +0,0 @@
1
- import { BasePipelineNode } from '../../standards/pipeline-node.js';
2
- import type { PipelineContext } from '../../standards/pipeline-context.js';
3
- /**
4
- * 标准 PipelineNode - ToolProcessNode
5
- *
6
- * 负责集中化的工具治理:
7
- * 1. 规范 tools 定义(去重、名称标准化、参数补全)
8
- * 2. 规范 messages 中的 tool_calls(生成ID、序列化 arguments)
9
- * 3. tool 角色消息补全 tool_call_id,并将 content 序列化为字符串
10
- * 4. 对响应侧做一次工具 canonicalization,避免 finish_reason/tool_calls 失配
11
- */
12
- export declare class ToolProcessNode extends BasePipelineNode {
13
- constructor(id: string, options?: Record<string, unknown>);
14
- protected executeLogic(ctx: PipelineContext): Promise<PipelineContext>;
15
- private canonicalizeTools;
16
- private normalizeSingleTool;
17
- private convertCustomTool;
18
- private normalizeToolParameters;
19
- private harvestMessages;
20
- private enforceToolResponseOrdering;
21
- private normalizeToolCall;
22
- private ensureArgumentsString;
23
- private ensureToolChoiceIntegrity;
24
- private buildToolCallId;
25
- private sanitizeToolIdentifier;
26
- private ensureUniqueToolCallId;
27
- private generateToolCallId;
28
- private resolveToolCallId;
29
- private normalizeResponse;
30
- }
@@ -1,360 +0,0 @@
1
- import { BasePipelineNode } from '../../standards/pipeline-node.js';
2
- import { PREDEFINED_CAPABILITIES } from '../../standards/node-capabilities.js';
3
- import { ToolGovernanceEnforcer } from '../../validations/tool-governance-enforcer.js';
4
- import { canonicalizeChatResponseTools } from '../../../shared/tool-canonicalizer.js';
5
- const TOOL_CALL_ID_PREFIX = 'tool_call';
6
- /**
7
- * 标准 PipelineNode - ToolProcessNode
8
- *
9
- * 负责集中化的工具治理:
10
- * 1. 规范 tools 定义(去重、名称标准化、参数补全)
11
- * 2. 规范 messages 中的 tool_calls(生成ID、序列化 arguments)
12
- * 3. tool 角色消息补全 tool_call_id,并将 content 序列化为字符串
13
- * 4. 对响应侧做一次工具 canonicalization,避免 finish_reason/tool_calls 失配
14
- */
15
- export class ToolProcessNode extends BasePipelineNode {
16
- constructor(id, options = {}) {
17
- super(id, 'process', 'tool-governance', options, PREDEFINED_CAPABILITIES.TOOL_GOVERNANCE, 'Tool Governance Node');
18
- }
19
- async executeLogic(ctx) {
20
- ToolGovernanceEnforcer.validateNodeExecution(this.id, this.kind, this.capabilities, ctx);
21
- if (!ctx.request) {
22
- return ctx;
23
- }
24
- const normalizedTools = this.canonicalizeTools(ctx.request.tools);
25
- if (normalizedTools) {
26
- ctx.request.tools = normalizedTools;
27
- }
28
- const normalizedMessages = this.harvestMessages(ctx.request.messages);
29
- if (normalizedMessages) {
30
- ctx.request.messages = normalizedMessages;
31
- }
32
- this.ensureToolChoiceIntegrity(ctx);
33
- if (ctx.response) {
34
- ctx.response = canonicalizeChatResponseTools(ctx.response);
35
- this.normalizeResponse(ctx.response);
36
- }
37
- ToolGovernanceEnforcer.markToolGovernanceApplied(ctx);
38
- this.debugLog('tool-governance', {
39
- tools: ctx.request.tools?.length ?? 0,
40
- messages: ctx.request.messages?.length ?? 0
41
- }, ctx);
42
- return ctx;
43
- }
44
- canonicalizeTools(tools) {
45
- if (!Array.isArray(tools)) {
46
- return undefined;
47
- }
48
- const seen = new Set();
49
- const normalized = [];
50
- for (const raw of tools) {
51
- const coerced = this.normalizeSingleTool(raw);
52
- if (!coerced)
53
- continue;
54
- const fn = coerced.function;
55
- const name = fn.name.trim();
56
- if (!name || seen.has(name))
57
- continue;
58
- const parameters = this.normalizeToolParameters(fn.parameters);
59
- normalized.push({
60
- type: 'function',
61
- function: {
62
- name,
63
- description: typeof fn.description === 'string' ? fn.description : undefined,
64
- parameters
65
- }
66
- });
67
- seen.add(name);
68
- }
69
- return normalized;
70
- }
71
- normalizeSingleTool(tool) {
72
- if (!tool || typeof tool !== 'object') {
73
- return null;
74
- }
75
- const raw = tool;
76
- const type = typeof raw.type === 'string' ? raw.type.toLowerCase() : 'function';
77
- if (type === 'function' && raw.function && typeof raw.function === 'object') {
78
- const fnObj = raw.function;
79
- const name = typeof fnObj.name === 'string' ? fnObj.name : '';
80
- if (!name.trim())
81
- return null;
82
- return {
83
- type: 'function',
84
- function: {
85
- name: name.trim(),
86
- description: typeof fnObj.description === 'string' ? fnObj.description : undefined,
87
- parameters: fnObj.parameters,
88
- strict: fnObj.strict === true || raw.strict === true ? true : undefined
89
- }
90
- };
91
- }
92
- if (type === 'custom') {
93
- return this.convertCustomTool(raw);
94
- }
95
- return null;
96
- }
97
- convertCustomTool(tool) {
98
- const name = typeof tool.name === 'string' ? tool.name.trim() : '';
99
- if (!name)
100
- return null;
101
- if (name !== 'apply_patch')
102
- return null;
103
- const description = typeof tool.description === 'string' ? tool.description.trim() : undefined;
104
- const format = tool.format && typeof tool.format === 'object' ? tool.format : undefined;
105
- const grammarDefinition = format && typeof format.definition === 'string' ? format.definition.trim() : undefined;
106
- const grammarSyntax = format && typeof format.syntax === 'string' ? format.syntax.trim() : undefined;
107
- const combinedDescription = [description, grammarSyntax && grammarDefinition
108
- ? `Grammar (${grammarSyntax}):\n${grammarDefinition}`
109
- : grammarDefinition
110
- ? `Grammar:\n${grammarDefinition}`
111
- : undefined]
112
- .filter(Boolean)
113
- .join('\n\n');
114
- return {
115
- type: 'function',
116
- function: {
117
- name: 'apply_patch',
118
- description: combinedDescription || description,
119
- parameters: {
120
- type: 'object',
121
- properties: {
122
- patch: {
123
- type: 'string',
124
- description: 'Unified diff patch body (FREEFORM string)'
125
- }
126
- },
127
- required: ['patch'],
128
- additionalProperties: false
129
- },
130
- strict: true
131
- }
132
- };
133
- }
134
- normalizeToolParameters(parameters) {
135
- if (parameters && typeof parameters === 'object') {
136
- const paramObj = parameters;
137
- const type = typeof paramObj.type === 'string' ? paramObj.type : 'object';
138
- const properties = (paramObj.properties && typeof paramObj.properties === 'object')
139
- ? paramObj.properties
140
- : {};
141
- const required = Array.isArray(paramObj.required) ? paramObj.required : undefined;
142
- const additionalProperties = typeof paramObj.additionalProperties === 'boolean'
143
- ? paramObj.additionalProperties
144
- : true;
145
- return {
146
- type: type,
147
- properties: properties,
148
- required,
149
- additionalProperties
150
- };
151
- }
152
- return {
153
- type: 'object',
154
- properties: {},
155
- additionalProperties: true
156
- };
157
- }
158
- harvestMessages(messages) {
159
- if (!Array.isArray(messages)) {
160
- return undefined;
161
- }
162
- const normalized = [];
163
- const toolIdRegistry = new Set();
164
- const toolIdAliasMap = new Map();
165
- let lastToolCallId = null;
166
- let callCounter = 0;
167
- for (const msg of messages) {
168
- if (!msg || typeof msg !== 'object')
169
- continue;
170
- const next = { ...msg };
171
- if (Array.isArray(next.tool_calls) && next.tool_calls.length > 0) {
172
- next.content = null;
173
- next.tool_calls = next.tool_calls
174
- .map(call => this.normalizeToolCall(call, callCounter++, toolIdRegistry, toolIdAliasMap))
175
- .filter(Boolean);
176
- if (next.tool_calls.length) {
177
- lastToolCallId = next.tool_calls[next.tool_calls.length - 1].id;
178
- }
179
- }
180
- if (next.role === 'tool') {
181
- if (!lastToolCallId) {
182
- lastToolCallId = this.generateToolCallId(undefined, this.buildToolCallId(callCounter++), toolIdRegistry, toolIdAliasMap);
183
- }
184
- const resolvedId = this.resolveToolCallId(next.tool_call_id, lastToolCallId, toolIdRegistry, toolIdAliasMap);
185
- next.tool_call_id = resolvedId;
186
- if (next.content !== null && typeof next.content !== 'string') {
187
- try {
188
- next.content = JSON.stringify(next.content);
189
- }
190
- catch {
191
- next.content = String(next.content);
192
- }
193
- }
194
- }
195
- normalized.push(next);
196
- }
197
- return this.enforceToolResponseOrdering(normalized);
198
- }
199
- enforceToolResponseOrdering(messages) {
200
- if (!messages.length) {
201
- return messages;
202
- }
203
- const ordered = [];
204
- const assistantMap = new Map();
205
- const appendMessage = (message) => {
206
- ordered.push(message);
207
- };
208
- for (const message of messages) {
209
- if (message.role === 'assistant' && Array.isArray(message.tool_calls) && message.tool_calls.length > 0) {
210
- appendMessage(message);
211
- for (const toolCall of message.tool_calls) {
212
- if (toolCall?.id) {
213
- assistantMap.set(toolCall.id, { message, inserted: 0 });
214
- }
215
- }
216
- continue;
217
- }
218
- if (message.role === 'tool' && typeof message.tool_call_id === 'string' && message.tool_call_id.trim()) {
219
- const meta = assistantMap.get(message.tool_call_id.trim());
220
- if (meta) {
221
- const baseIndex = ordered.indexOf(meta.message);
222
- if (baseIndex >= 0) {
223
- const insertPos = baseIndex + 1 + meta.inserted;
224
- ordered.splice(insertPos, 0, message);
225
- meta.inserted += 1;
226
- continue;
227
- }
228
- }
229
- }
230
- appendMessage(message);
231
- }
232
- return ordered;
233
- }
234
- normalizeToolCall(call, counter, registry, aliasMap) {
235
- if (!call || typeof call !== 'object')
236
- return null;
237
- const id = this.generateToolCallId(call.id, this.buildToolCallId(counter), registry, aliasMap);
238
- const fn = call.function || { name: '', arguments: '' };
239
- const name = typeof fn.name === 'string' ? fn.name.trim() : '';
240
- const args = this.ensureArgumentsString(fn.arguments);
241
- if (!name)
242
- return null;
243
- return {
244
- id,
245
- type: call.type ?? 'function',
246
- function: {
247
- name,
248
- arguments: args
249
- }
250
- };
251
- }
252
- ensureArgumentsString(args) {
253
- if (typeof args === 'string') {
254
- return args;
255
- }
256
- try {
257
- return JSON.stringify(args ?? {});
258
- }
259
- catch {
260
- return String(args ?? '');
261
- }
262
- }
263
- ensureToolChoiceIntegrity(ctx) {
264
- if (!ctx.request?.parameters?.tool_choice)
265
- return;
266
- const choice = ctx.request.parameters.tool_choice;
267
- if (typeof choice === 'string') {
268
- if (choice === 'none' && ctx.request.tools && ctx.request.tools.length === 0) {
269
- return;
270
- }
271
- return;
272
- }
273
- if (choice && typeof choice === 'object' && 'function' in choice) {
274
- const fnChoice = choice.function;
275
- if (typeof fnChoice.name === 'string' && ctx.request.tools?.length) {
276
- const target = ctx.request.tools.find(tool => tool.function.name === fnChoice.name);
277
- if (!target) {
278
- // 如果工具列表中不存在该工具,则降级为 auto。
279
- ctx.request.parameters.tool_choice = 'auto';
280
- }
281
- }
282
- }
283
- }
284
- buildToolCallId(counter) {
285
- return `${TOOL_CALL_ID_PREFIX}_${counter}_${Date.now()}`;
286
- }
287
- sanitizeToolIdentifier(value) {
288
- if (!value)
289
- return '';
290
- const trimmed = value.trim();
291
- if (!trimmed)
292
- return '';
293
- const sanitized = trimmed.replace(/[^A-Za-z0-9_-]/g, '_');
294
- return sanitized || '';
295
- }
296
- ensureUniqueToolCallId(base, registry) {
297
- if (!registry.has(base)) {
298
- return base;
299
- }
300
- let suffix = 1;
301
- let candidate = `${base}_${suffix}`;
302
- while (registry.has(candidate)) {
303
- suffix += 1;
304
- candidate = `${base}_${suffix}`;
305
- }
306
- return candidate;
307
- }
308
- generateToolCallId(rawCandidate, fallbackBase, registry, aliasMap) {
309
- const candidate = typeof rawCandidate === 'string' ? rawCandidate.trim() : '';
310
- const sanitizedCandidate = this.sanitizeToolIdentifier(candidate);
311
- const sanitizedFallback = this.sanitizeToolIdentifier(fallbackBase) || this.buildToolCallId(Date.now());
312
- const base = sanitizedCandidate || sanitizedFallback;
313
- const unique = this.ensureUniqueToolCallId(base, registry);
314
- registry.add(unique);
315
- if (candidate)
316
- aliasMap.set(candidate, unique);
317
- aliasMap.set(unique, unique);
318
- if (sanitizedCandidate && sanitizedCandidate !== candidate) {
319
- aliasMap.set(sanitizedCandidate, unique);
320
- }
321
- return unique;
322
- }
323
- resolveToolCallId(rawCandidate, fallbackId, registry, aliasMap) {
324
- const candidate = typeof rawCandidate === 'string' ? rawCandidate.trim() : '';
325
- if (candidate) {
326
- const cached = aliasMap.get(candidate);
327
- if (cached) {
328
- return cached;
329
- }
330
- const sanitized = this.sanitizeToolIdentifier(candidate);
331
- if (sanitized) {
332
- const cachedSanitized = aliasMap.get(sanitized);
333
- if (cachedSanitized) {
334
- aliasMap.set(candidate, cachedSanitized);
335
- return cachedSanitized;
336
- }
337
- const unique = this.ensureUniqueToolCallId(sanitized, registry);
338
- registry.add(unique);
339
- aliasMap.set(candidate, unique);
340
- aliasMap.set(sanitized, unique);
341
- aliasMap.set(unique, unique);
342
- return unique;
343
- }
344
- }
345
- return fallbackId;
346
- }
347
- normalizeResponse(response) {
348
- if (!response?.message)
349
- return;
350
- const toolCalls = response.message.tool_calls;
351
- if (Array.isArray(toolCalls)) {
352
- for (const call of toolCalls) {
353
- const fn = call?.function;
354
- if (fn) {
355
- fn.arguments = this.ensureArgumentsString(fn.arguments);
356
- }
357
- }
358
- }
359
- }
360
- }
@@ -1,40 +0,0 @@
1
- import { type VirtualRouterConfig } from '../../../../router/virtual-router/types.js';
2
- import type { NodeConfig, NodeContext, NodeResult, PipelineNode, ValidationResult } from '../../types/index.js';
3
- import { NodeStatus, NodeType } from '../../types/index.js';
4
- export declare class VirtualRouterProcessNode implements PipelineNode {
5
- readonly id: string;
6
- readonly type = NodeType.PROCESS;
7
- readonly name: string;
8
- status: NodeStatus;
9
- config: NodeConfig;
10
- private readonly engine;
11
- private unsubscribeFromErrors;
12
- private watchedProviders;
13
- constructor(nodeId: string, config: NodeConfig);
14
- execute(context: NodeContext): Promise<NodeResult>;
15
- validate(data: Record<string, unknown>): ValidationResult;
16
- cleanup(): Promise<void>;
17
- updateConfig(newConfig: VirtualRouterConfig): void;
18
- getStatus(): {
19
- routes: Record<string, {
20
- providers: string[];
21
- hits: number;
22
- lastUsedProvider?: string;
23
- }>;
24
- health: import("../../../../index.js").ProviderHealthState[];
25
- node: string;
26
- status: NodeStatus;
27
- };
28
- private initialize;
29
- private extractRouterConfig;
30
- private registerProviderFailureListener;
31
- private handleProviderErrorEvent;
32
- private extractStandardizedRequest;
33
- private extractRoutingSubject;
34
- private ensureRequestMetadata;
35
- private buildRouterMetadata;
36
- private applyTargetToMetadata;
37
- private applyTargetToSubject;
38
- private attachDiagnostics;
39
- private isProcessedRequest;
40
- }