@jsonstudio/llms 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/README.md +3 -1
  2. package/dist/bridge/routecodex-adapter.js +6 -3
  3. package/dist/config-unified/enhanced-path-resolver.js +14 -6
  4. package/dist/config-unified/unified-config.js +103 -59
  5. package/dist/conversion/codec-registry.js +4 -2
  6. package/dist/conversion/hub/pipeline/hub-pipeline.js +4 -5
  7. package/dist/conversion/hub/process/chat-process.js +258 -41
  8. package/dist/conversion/hub/response/provider-response.js +8 -2
  9. package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
  10. package/dist/conversion/hub/tool-governance/engine.js +266 -0
  11. package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
  12. package/dist/conversion/hub/tool-governance/index.js +2 -0
  13. package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
  14. package/dist/conversion/hub/tool-governance/rules.js +76 -0
  15. package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
  16. package/dist/conversion/index.d.ts +1 -0
  17. package/dist/conversion/index.js +1 -0
  18. package/dist/conversion/responses/responses-openai-bridge.js +5 -3
  19. package/dist/conversion/shared/responses-id-utils.js +18 -5
  20. package/dist/sse/sse-to-json/builders/response-builder.js +2 -1
  21. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
  22. package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
  23. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  24. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  25. package/dist/sse/types/chat-types.d.ts +9 -6
  26. package/dist/sse/types/conversion-context.d.ts +14 -11
  27. package/dist/sse/types/core-interfaces.d.ts +6 -2
  28. package/dist/sse/types/index.d.ts +1 -1
  29. package/dist/sse/types/responses-types.d.ts +20 -20
  30. package/dist/sse/types/sse-events.d.ts +4 -3
  31. package/dist/sse/types/stream-state.d.ts +34 -39
  32. package/dist/sse/types/utility-types.d.ts +47 -43
  33. package/dist/sse/types/utility-types.js +10 -13
  34. package/dist/tools/tool-registry.js +156 -98
  35. package/package.json +6 -6
  36. package/dist/api/index.d.ts +0 -10
  37. package/dist/api/index.js +0 -11
  38. package/dist/api/llmswitch-config.d.ts +0 -15
  39. package/dist/api/llmswitch-config.js +0 -415
  40. package/dist/api/llmswitch-types.d.ts +0 -412
  41. package/dist/api/llmswitch-types.js +0 -60
  42. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  43. package/dist/config/index.d.ts +0 -3
  44. package/dist/config/index.js +0 -5
  45. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  46. package/dist/config-unified/unified-config.d.ts +0 -26
  47. package/dist/conversion/codec-registry.d.ts +0 -10
  48. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
  49. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  50. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  51. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  52. package/dist/conversion/config/config-manager.d.ts +0 -212
  53. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  54. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  55. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  56. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  57. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  58. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  59. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  60. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  61. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  62. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  63. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  64. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1083
  65. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  66. package/dist/conversion/conversion-v3/config/index.js +0 -5
  67. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  68. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  69. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  70. package/dist/conversion/conversion-v3/index.js +0 -17
  71. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  72. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  73. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  74. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  75. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  76. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  77. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  78. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  79. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  80. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  81. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  82. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  83. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  84. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  85. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  86. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  87. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  88. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  89. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  90. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  91. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  92. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  93. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  94. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  95. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  96. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  97. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  98. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  99. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  100. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  101. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  102. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  103. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  104. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  105. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  106. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  107. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  108. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  109. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  110. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  111. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  112. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  113. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -26
  114. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -299
  115. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  116. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  117. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  118. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  119. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  120. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  121. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  122. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  123. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  124. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  125. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  126. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  127. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  128. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  129. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  130. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  131. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  132. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  133. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  134. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  135. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  136. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  137. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  138. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  139. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  140. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  141. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  142. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  143. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  144. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  145. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  146. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  147. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  148. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  149. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  150. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  151. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  152. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  153. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  154. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  155. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  156. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  157. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  158. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  159. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  160. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  161. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  162. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  163. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  164. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  165. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  166. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  167. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  168. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  169. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  170. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  171. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  172. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  173. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  174. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  175. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  176. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  177. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  178. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  179. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  180. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  181. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  182. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  183. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  184. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  185. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  186. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  187. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  188. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  189. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  190. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  191. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  192. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  193. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  194. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  195. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  196. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  197. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  198. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  199. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  200. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  201. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  202. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  203. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  204. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  205. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  206. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  207. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  208. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  209. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  210. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  211. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  212. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  213. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  214. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  215. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  216. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  217. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  218. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  219. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  220. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  221. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  222. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  223. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  224. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  225. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  226. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  227. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  228. package/dist/conversion/conversion-v3/types/index.js +0 -11
  229. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  230. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  231. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  232. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  233. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  234. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  235. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  236. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  237. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  238. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  239. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  240. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  241. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  242. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  243. package/dist/conversion/hub/config/types.d.ts +0 -26
  244. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  245. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  246. package/dist/conversion/hub/core/index.d.ts +0 -3
  247. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  248. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  249. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  250. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  251. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  252. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
  253. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  254. package/dist/conversion/hub/node-support.d.ts +0 -19
  255. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  256. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  257. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  258. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  259. package/dist/conversion/hub/registry.d.ts +0 -28
  260. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  261. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  262. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  263. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  264. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  265. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  266. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  267. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  268. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  269. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  270. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  271. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  272. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  273. package/dist/conversion/hub/types/errors.d.ts +0 -5
  274. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  275. package/dist/conversion/hub/types/index.d.ts +0 -6
  276. package/dist/conversion/hub/types/json.d.ts +0 -9
  277. package/dist/conversion/hub/types/node.d.ts +0 -31
  278. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  279. package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
  280. package/dist/conversion/schema-validator.d.ts +0 -7
  281. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  282. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  283. package/dist/conversion/shared/jsonish.d.ts +0 -3
  284. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  285. package/dist/conversion/shared/media.d.ts +0 -1
  286. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  287. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  288. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  289. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  290. package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
  291. package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
  292. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  293. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  294. package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
  295. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  296. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  297. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  298. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  299. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  300. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  301. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  302. package/dist/conversion/shared/tool-mapping.d.ts +0 -10
  303. package/dist/conversion/shared/tooling.d.ts +0 -26
  304. package/dist/conversion/types.d.ts +0 -33
  305. package/dist/core/index.d.ts +0 -6
  306. package/dist/core/index.js +0 -9
  307. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  308. package/dist/core/llmswitch-engine-v2.js +0 -649
  309. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  310. package/dist/core/llmswitch-factory-v2.js +0 -521
  311. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  312. package/dist/endpoints/base-endpoint-handler.js +0 -545
  313. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  314. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  315. package/dist/endpoints/endpoint-router.d.ts +0 -127
  316. package/dist/endpoints/endpoint-router.js +0 -438
  317. package/dist/endpoints/index.d.ts +0 -13
  318. package/dist/endpoints/index.js +0 -11
  319. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  320. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  321. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  322. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  323. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  324. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  325. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  326. package/dist/filters/engine.d.ts +0 -16
  327. package/dist/filters/index.d.ts +0 -19
  328. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  329. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  330. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  331. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  332. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  333. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  334. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  335. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  336. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  337. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  338. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  339. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  340. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  341. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  342. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  343. package/dist/filters/types.d.ts +0 -68
  344. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  345. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  346. package/dist/guidance/index.d.ts +0 -3
  347. package/dist/hooks/hooks-integration.d.ts +0 -161
  348. package/dist/hooks/hooks-integration.js +0 -519
  349. package/dist/hooks/index.d.ts +0 -10
  350. package/dist/hooks/index.js +0 -13
  351. package/dist/html-to-markdown.d.ts +0 -5
  352. package/dist/html-to-markdown.js +0 -66
  353. package/dist/http/sse-response.d.ts +0 -22
  354. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  355. package/dist/router/virtual-router/classifier.d.ts +0 -10
  356. package/dist/router/virtual-router/engine.d.ts +0 -35
  357. package/dist/router/virtual-router/error-center.d.ts +0 -10
  358. package/dist/router/virtual-router/features.d.ts +0 -3
  359. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  360. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  361. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  362. package/dist/router/virtual-router/types.d.ts +0 -206
  363. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  364. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  365. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  366. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  367. package/dist/sse/json-to-sse/index.d.ts +0 -6
  368. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  369. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  370. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  371. package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
  372. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  373. package/dist/sse/shared/constants.d.ts +0 -272
  374. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  375. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  376. package/dist/sse/shared/serializers/index.d.ts +0 -39
  377. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  378. package/dist/sse/shared/serializers/types.d.ts +0 -51
  379. package/dist/sse/shared/utils.d.ts +0 -254
  380. package/dist/sse/shared/writer.d.ts +0 -111
  381. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  382. package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  383. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  384. package/dist/sse/sse-to-json/index.d.ts +0 -6
  385. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  386. package/dist/sse/types/anthropic-types.d.ts +0 -87
  387. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  388. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  389. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  390. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  391. package/dist/tools/proxy/registry.d.ts +0 -8
  392. package/dist/tools/proxy/registry.js +0 -14
  393. package/dist/tools/proxy/types.d.ts +0 -29
  394. package/dist/tools/tool-registry.d.ts +0 -8
  395. package/dist/tools/web-fetch-html.d.ts +0 -15
  396. package/dist/tools/web-fetch-html.js +0 -83
  397. package/dist/utils/conversion-adapter.d.ts +0 -65
  398. package/dist/utils/conversion-adapter.js +0 -183
  399. package/dist/utils/error-factory.d.ts +0 -88
  400. package/dist/utils/error-factory.js +0 -138
  401. package/dist/utils/error-utils.d.ts +0 -334
  402. package/dist/utils/error-utils.js +0 -782
  403. package/dist/utils/index.d.ts +0 -8
  404. package/dist/utils/index.js +0 -13
  405. package/dist/utils/performance-utils.d.ts +0 -205
  406. package/dist/utils/performance-utils.js +0 -440
  407. package/dist/utils/profile-mapper.d.ts +0 -32
  408. package/dist/utils/profile-mapper.js +0 -269
  409. package/dist/utils/request-processor.d.ts +0 -52
  410. package/dist/utils/request-processor.js +0 -210
  411. package/dist/utils/request-utils.d.ts +0 -117
  412. package/dist/utils/request-utils.js +0 -333
  413. package/dist/utils/response-utils.d.ts +0 -127
  414. package/dist/utils/response-utils.js +0 -516
  415. package/dist/utils/token-counter.d.ts +0 -89
  416. package/dist/utils/token-counter.js +0 -541
  417. /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
@@ -1,238 +0,0 @@
1
- /**
2
- * Messages端点处理器
3
- *
4
- * 处理/v1/messages端点的请求和响应 (Anthropic Messages API)
5
- */
6
- import { BaseEndpointHandler } from './base-endpoint-handler.js';
7
- import { TokenCounter } from '../utils/token-counter.js';
8
- import { RequestLogicProcessor } from '../utils/request-processor.js';
9
- /**
10
- * Messages端点处理器
11
- */
12
- export class MessagesEndpointHandler extends BaseEndpointHandler {
13
- constructor(hooksAdapter) {
14
- const config = {
15
- endpoint: 'messages',
16
- protocol: 'anthropic-messages',
17
- enabled: true,
18
- sse: {
19
- enabled: true,
20
- accumulateMs: 500,
21
- maxEvents: 100,
22
- timeout: 30000
23
- },
24
- hooks: {
25
- enabled: true,
26
- stages: [
27
- 'request_1_validation_pre',
28
- 'request_1_validation_post',
29
- 'request_2_routing_pre',
30
- 'request_2_routing_post',
31
- 'request_3_conversion_pre',
32
- 'request_3_conversion_post',
33
- 'request_4_tools_pre',
34
- 'request_4_tools_post',
35
- 'request_5_sse_pre',
36
- 'request_5_sse_post',
37
- 'request_6_snapshot_pre',
38
- 'request_6_snapshot_post',
39
- 'request_7_monitoring_pre',
40
- 'request_7_monitoring_post',
41
- 'request_8_validation_pre',
42
- 'request_8_validation_post',
43
- 'response_1_receive_pre',
44
- 'response_1_receive_post',
45
- 'response_2_conversion_pre',
46
- 'response_2_conversion_post',
47
- 'response_3_tools_pre',
48
- 'response_3_tools_post',
49
- 'response_4_sse_pre',
50
- 'response_4_sse_post',
51
- 'response_5_formatting_pre',
52
- 'response_5_formatting_post',
53
- 'response_6_snapshot_pre',
54
- 'response_6_snapshot_post',
55
- 'response_7_quality_pre',
56
- 'response_7_quality_post',
57
- 'response_8_monitoring_pre',
58
- 'response_8_monitoring_post'
59
- ],
60
- timeout: 5000
61
- },
62
- conversion: {
63
- autoDetect: true,
64
- fallbackToOriginal: true
65
- }
66
- };
67
- super(config, hooksAdapter);
68
- }
69
- /**
70
- * 处理Messages端点请求预处理 - llmswitch-core只负责预处理
71
- */
72
- async processEndpointRequest(request, context) {
73
- const startTime = Date.now();
74
- try {
75
- // 1. 验证请求格式
76
- this.validateMessagesRequest(request);
77
- // 2. 预处理请求(协议转换、工具调用规范化等)
78
- const processedRequest = await this.preprocessRequest(request, context);
79
- // 3. 返回预处理后的请求,传递给workflow
80
- return {
81
- success: true,
82
- data: processedRequest, // 预处理后的请求,给workflow处理
83
- executionTime: Date.now() - startTime,
84
- metadata: {
85
- endpoint: 'messages',
86
- originalProtocol: this.config.protocol,
87
- targetProtocol: this.config.protocol,
88
- processingMode: context.processingMode,
89
- stage: 'messages_request_preprocessing_completed'
90
- }
91
- };
92
- }
93
- catch (error) {
94
- return {
95
- success: false,
96
- error: error,
97
- executionTime: Date.now() - startTime,
98
- metadata: {
99
- endpoint: 'messages',
100
- originalProtocol: this.config.protocol,
101
- targetProtocol: this.config.protocol,
102
- processingMode: context.processingMode,
103
- stage: 'messages_request_preprocessing_failed'
104
- }
105
- };
106
- }
107
- }
108
- /**
109
- * 处理流式Messages请求
110
- */
111
- async *processStreamingEndpointRequest(request, context) {
112
- try {
113
- // 验证请求格式
114
- this.validateMessagesRequest(request);
115
- // 预处理请求
116
- const processedRequest = await this.preprocessRequest(request, context);
117
- // 生成流式响应
118
- yield* this.generateStreamingResponse(processedRequest, context);
119
- }
120
- catch (error) {
121
- // 发出错误事件
122
- yield {
123
- event: 'error',
124
- data: JSON.stringify({
125
- error: {
126
- message: error.message,
127
- type: 'messages_processing_error'
128
- }
129
- }),
130
- timestamp: Date.now()
131
- };
132
- }
133
- }
134
- /**
135
- * 验证Messages请求格式
136
- */
137
- validateMessagesRequest(request) {
138
- // 验证请求格式(V2)
139
- const validation = RequestLogicProcessor.validateRequest(request, 'messages');
140
- if (!validation.valid) {
141
- throw new Error(`Messages请求验证失败: ${validation.errors.join(', ')}`);
142
- }
143
- }
144
- /**
145
- * 预处理请求 - 协议转换、工具调用规范化等
146
- */
147
- async preprocessRequest(request, context) {
148
- // 使用V2逻辑处理Messages请求规范化
149
- return RequestLogicProcessor.processMessagesRequest(request);
150
- }
151
- /**
152
- * 规范化工具调用
153
- */
154
- async normalizeTools(request) {
155
- // 这里可以实现工具调用的规范化逻辑
156
- // 例如:Anthropic工具格式转换等
157
- return request;
158
- }
159
- /**
160
- * 规范化消息
161
- */
162
- async normalizeMessages(request) {
163
- // 这里可以实现消息的规范化逻辑
164
- // 例如:内容格式转换、图片处理等
165
- return request;
166
- }
167
- /**
168
- * 处理内容项
169
- */
170
- async processContentItems(response) {
171
- // 这里可以实现内容项的处理逻辑
172
- return response;
173
- }
174
- /**
175
- * 验证响应格式
176
- */
177
- validateResponse(response) {
178
- if (!response.id) {
179
- throw new Error('Response missing required field: id');
180
- }
181
- if (!response.type) {
182
- throw new Error('Response missing required field: type');
183
- }
184
- if (!response.content || !Array.isArray(response.content) || response.content.length === 0) {
185
- throw new Error('Response missing required field: content');
186
- }
187
- }
188
- /**
189
- * 生成模拟响应内容
190
- */
191
- generateMockResponse(request) {
192
- const lastMessage = request.messages[request.messages.length - 1];
193
- const content = typeof lastMessage.content === 'string'
194
- ? lastMessage.content
195
- : lastMessage.content?.[0]?.text || 'Hello!';
196
- return `这是Messages端点的模拟响应,基于您的输入:${content.substring(0, 50)}...`;
197
- }
198
- /**
199
- * 计算Token数量(使用精确计算)
200
- */
201
- async calculateTokens(text, model = 'gpt-3.5-turbo') {
202
- return await TokenCounter.calculateTokens(text, model);
203
- }
204
- /**
205
- * 计算请求的token数量(使用精确计算)
206
- */
207
- async calculateRequestTokens(request) {
208
- // 将Messages请求转换为Chat格式进行计算
209
- const chatRequest = {
210
- model: request.model,
211
- messages: [
212
- ...(request.system ? [{ role: 'system', content: request.system }] : []),
213
- ...request.messages
214
- ],
215
- tools: request.tools
216
- };
217
- const { inputTokens, toolTokens } = await TokenCounter.calculateRequestTokensExact(chatRequest, request.model);
218
- return inputTokens + (toolTokens || 0);
219
- }
220
- /**
221
- * 生成路径标识符
222
- */
223
- generatePathIdentifier(request) {
224
- // 使用模型名和消息数量生成标识符
225
- const messageCount = request.messages?.length || 0;
226
- const toolCount = request.tools?.length || 0;
227
- return `messages-${request.model.replace(/[^a-zA-Z0-9]/g, '-')}-${messageCount}msg-${toolCount}tools`;
228
- }
229
- /**
230
- * 检测处理模式
231
- */
232
- detectProcessingMode(request) {
233
- if (request.stream === true) {
234
- return 'streaming';
235
- }
236
- return 'non-streaming';
237
- }
238
- }
@@ -1,147 +0,0 @@
1
- /**
2
- * Responses端点处理器
3
- *
4
- * 处理/v1/responses端点的请求和响应
5
- */
6
- import type { LLMSwitchHookContext, LLMSwitchProcessingResult, ProcessingMode, SSEEvent } from '../api/llmswitch-types.js';
7
- import { BaseEndpointHandler } from './base-endpoint-handler.js';
8
- import type { HooksIntegration } from '../hooks/hooks-integration.js';
9
- /**
10
- * OpenAI Responses请求接口
11
- */
12
- export interface ResponsesRequest {
13
- input: string;
14
- instructions?: string;
15
- tools?: any[];
16
- temperature?: number;
17
- max_tokens?: number;
18
- stream?: boolean;
19
- previous_response_id?: string;
20
- truncation_strategy?: any;
21
- metadata?: any;
22
- }
23
- /**
24
- * OpenAI Responses响应接口
25
- */
26
- export interface ResponsesResponse {
27
- id: string;
28
- object: 'response';
29
- created: number;
30
- model: string;
31
- output: Array<{
32
- type: 'message';
33
- id: string;
34
- role: 'assistant';
35
- content: Array<{
36
- type: 'text';
37
- text: string;
38
- }>;
39
- }>;
40
- output_text: string;
41
- usage: {
42
- prompt_tokens: number;
43
- completion_tokens: number;
44
- total_tokens: number;
45
- };
46
- tool_calls?: any[];
47
- error?: any;
48
- }
49
- /**
50
- * Responses请求格式
51
- */
52
- export interface ResponsesRequest {
53
- model: string;
54
- input: string;
55
- instructions?: string;
56
- tools?: any[];
57
- temperature?: number;
58
- max_tokens?: number;
59
- stream?: boolean;
60
- top_p?: number;
61
- user?: string;
62
- response_format?: any;
63
- truncation?: string;
64
- }
65
- /**
66
- * Responses响应格式
67
- */
68
- export interface ResponsesResponse {
69
- id: string;
70
- object: 'response';
71
- created: number;
72
- model: string;
73
- status: 'in_progress' | 'completed' | 'failed';
74
- output: Array<{
75
- type: 'message';
76
- id: string;
77
- role: 'assistant';
78
- content: Array<{
79
- type: 'text';
80
- text: string;
81
- }>;
82
- }>;
83
- output_text: string;
84
- usage: {
85
- prompt_tokens: number;
86
- completion_tokens: number;
87
- total_tokens: number;
88
- };
89
- }
90
- /**
91
- * Responses端点处理器
92
- */
93
- export declare class ResponsesEndpointHandler extends BaseEndpointHandler {
94
- constructor(hooksAdapter: HooksIntegration);
95
- /**
96
- * 处理Responses端点请求预处理 - llmswitch-core只负责预处理
97
- */
98
- protected processEndpointRequest(request: any, context: LLMSwitchHookContext): Promise<LLMSwitchProcessingResult>;
99
- /**
100
- * 处理流式Responses请求
101
- */
102
- protected processStreamingEndpointRequest(request: any, context: LLMSwitchHookContext): AsyncIterable<SSEEvent>;
103
- /**
104
- * 验证Responses请求格式
105
- */
106
- private validateResponsesRequest;
107
- /**
108
- * 预处理请求 - 协议转换、工具调用规范化等
109
- */
110
- protected preprocessRequest(request: any, context: LLMSwitchHookContext): Promise<any>;
111
- /**
112
- * 规范化工具调用
113
- */
114
- private normalizeTools;
115
- /**
116
- * 规范化输入内容
117
- */
118
- private normalizeInput;
119
- /**
120
- * 处理输出内容
121
- */
122
- private processOutputContent;
123
- /**
124
- * 验证响应格式
125
- */
126
- private validateResponse;
127
- /**
128
- * 生成模拟响应内容
129
- */
130
- private generateMockResponse;
131
- /**
132
- * 估算Token数量
133
- */
134
- private estimateTokens;
135
- /**
136
- * 计算请求的token数量
137
- */
138
- private calculateRequestTokens;
139
- /**
140
- * 生成路径标识符
141
- */
142
- protected generatePathIdentifier(request: any): string;
143
- /**
144
- * 检测处理模式
145
- */
146
- protected detectProcessingMode(request: any): ProcessingMode;
147
- }
@@ -1,233 +0,0 @@
1
- /**
2
- * Responses端点处理器
3
- *
4
- * 处理/v1/responses端点的请求和响应
5
- */
6
- import { BaseEndpointHandler } from './base-endpoint-handler.js';
7
- import { TokenCounter } from '../utils/token-counter.js';
8
- import { RequestLogicProcessor } from '../utils/request-processor.js';
9
- /**
10
- * Responses端点处理器
11
- */
12
- export class ResponsesEndpointHandler extends BaseEndpointHandler {
13
- constructor(hooksAdapter) {
14
- const config = {
15
- endpoint: 'responses',
16
- protocol: 'openai-responses',
17
- enabled: true,
18
- sse: {
19
- enabled: true,
20
- accumulateMs: 500,
21
- maxEvents: 100,
22
- timeout: 30000
23
- },
24
- hooks: {
25
- enabled: true,
26
- stages: [
27
- 'request_1_validation_pre',
28
- 'request_1_validation_post',
29
- 'request_2_routing_pre',
30
- 'request_2_routing_post',
31
- 'request_3_conversion_pre',
32
- 'request_3_conversion_post',
33
- 'request_4_tools_pre',
34
- 'request_4_tools_post',
35
- 'request_5_sse_pre',
36
- 'request_5_sse_post',
37
- 'request_6_snapshot_pre',
38
- 'request_6_snapshot_post',
39
- 'request_7_monitoring_pre',
40
- 'request_7_monitoring_post',
41
- 'request_8_validation_pre',
42
- 'request_8_validation_post',
43
- 'response_1_receive_pre',
44
- 'response_1_receive_post',
45
- 'response_2_conversion_pre',
46
- 'response_2_conversion_post',
47
- 'response_3_tools_pre',
48
- 'response_3_tools_post',
49
- 'response_4_sse_pre',
50
- 'response_4_sse_post',
51
- 'response_5_formatting_pre',
52
- 'response_5_formatting_post',
53
- 'response_6_snapshot_pre',
54
- 'response_6_snapshot_post',
55
- 'response_7_quality_pre',
56
- 'response_7_quality_post',
57
- 'response_8_monitoring_pre',
58
- 'response_8_monitoring_post'
59
- ],
60
- timeout: 5000
61
- },
62
- conversion: {
63
- autoDetect: true,
64
- fallbackToOriginal: true
65
- }
66
- };
67
- super(config, hooksAdapter);
68
- }
69
- /**
70
- * 处理Responses端点请求预处理 - llmswitch-core只负责预处理
71
- */
72
- async processEndpointRequest(request, context) {
73
- const startTime = Date.now();
74
- try {
75
- // 1. 验证请求格式
76
- this.validateResponsesRequest(request);
77
- // 2. 预处理请求(协议转换、工具调用规范化等)
78
- const processedRequest = await this.preprocessRequest(request, context);
79
- // 3. 返回预处理后的请求,传递给workflow
80
- return {
81
- success: true,
82
- data: processedRequest, // 预处理后的请求,给workflow处理
83
- executionTime: Date.now() - startTime,
84
- metadata: {
85
- endpoint: 'responses',
86
- originalProtocol: this.config.protocol,
87
- targetProtocol: this.config.protocol,
88
- processingMode: context.processingMode,
89
- stage: 'responses_request_preprocessing_completed'
90
- }
91
- };
92
- }
93
- catch (error) {
94
- return {
95
- success: false,
96
- error: error,
97
- executionTime: Date.now() - startTime,
98
- metadata: {
99
- endpoint: 'responses',
100
- originalProtocol: this.config.protocol,
101
- targetProtocol: this.config.protocol,
102
- processingMode: context.processingMode,
103
- stage: 'responses_request_preprocessing_failed'
104
- }
105
- };
106
- }
107
- }
108
- /**
109
- * 处理流式Responses请求
110
- */
111
- async *processStreamingEndpointRequest(request, context) {
112
- try {
113
- // 验证请求格式
114
- this.validateResponsesRequest(request);
115
- // 预处理请求
116
- const processedRequest = await this.preprocessRequest(request, context);
117
- // 生成流式响应
118
- yield* this.generateStreamingResponse(processedRequest, context);
119
- }
120
- catch (error) {
121
- // 发出错误事件
122
- yield {
123
- event: 'error',
124
- data: JSON.stringify({
125
- error: {
126
- message: error.message,
127
- type: 'responses_processing_error'
128
- }
129
- }),
130
- timestamp: Date.now()
131
- };
132
- }
133
- }
134
- /**
135
- * 验证Responses请求格式
136
- */
137
- validateResponsesRequest(request) {
138
- // 验证请求格式(V2)
139
- const validation = RequestLogicProcessor.validateRequest(request, 'responses');
140
- if (!validation.valid) {
141
- throw new Error(`Responses请求验证失败: ${validation.errors.join(', ')}`);
142
- }
143
- }
144
- /**
145
- * 预处理请求 - 协议转换、工具调用规范化等
146
- */
147
- async preprocessRequest(request, context) {
148
- // 使用V2逻辑处理Responses请求规范化
149
- return RequestLogicProcessor.processResponsesRequest(request);
150
- }
151
- /**
152
- * 规范化工具调用
153
- */
154
- async normalizeTools(request) {
155
- // 这里可以实现工具调用的规范化逻辑
156
- return request;
157
- }
158
- /**
159
- * 规范化输入内容
160
- */
161
- async normalizeInput(request) {
162
- // 这里可以实现输入内容的规范化逻辑
163
- return request;
164
- }
165
- /**
166
- * 处理输出内容
167
- */
168
- async processOutputContent(response) {
169
- // 这里可以实现输出内容的处理逻辑
170
- return response;
171
- }
172
- /**
173
- * 验证响应格式
174
- */
175
- validateResponse(response) {
176
- if (!response.id) {
177
- throw new Error('Response missing required field: id');
178
- }
179
- if (!response.object) {
180
- throw new Error('Response missing required field: object');
181
- }
182
- if (!response.output || !Array.isArray(response.output) || response.output.length === 0) {
183
- throw new Error('Response missing required field: output');
184
- }
185
- }
186
- /**
187
- * 生成模拟响应内容
188
- */
189
- generateMockResponse(request) {
190
- const inputText = typeof request.input === 'string' ? request.input : JSON.stringify(request.input);
191
- return `这是Responses端点的模拟响应,基于您的输入:${inputText.substring(0, 50)}...`;
192
- }
193
- /**
194
- * 估算Token数量
195
- */
196
- estimateTokens(text) {
197
- return TokenCounter.estimateTokens(text);
198
- }
199
- /**
200
- * 计算请求的token数量
201
- */
202
- calculateRequestTokens(request) {
203
- // 将Responses请求转换为Chat格式进行计算
204
- const chatRequest = {
205
- model: request.model,
206
- messages: [
207
- ...(request.instructions ? [{ role: 'system', content: request.instructions }] : []),
208
- { role: 'user', content: request.input }
209
- ],
210
- tools: request.tools
211
- };
212
- const { inputTokens, toolTokens } = TokenCounter.estimateRequestTokens(chatRequest);
213
- return inputTokens + (toolTokens || 0);
214
- }
215
- /**
216
- * 生成路径标识符
217
- */
218
- generatePathIdentifier(request) {
219
- // 使用模型名和输入长度生成标识符
220
- const inputLength = typeof request.input === 'string' ? request.input.length : JSON.stringify(request.input).length;
221
- const toolCount = request.tools?.length || 0;
222
- return `responses-${request.model.replace(/[^a-zA-Z0-9]/g, '-')}-${inputLength}char-${toolCount}tools`;
223
- }
224
- /**
225
- * 检测处理模式
226
- */
227
- detectProcessingMode(request) {
228
- if (request.stream === true) {
229
- return 'streaming';
230
- }
231
- return 'non-streaming';
232
- }
233
- }
@@ -1,8 +0,0 @@
1
- import type { Filter, FilterContext, FilterResult, JsonObject } from '../types.js';
2
- export declare class AddFieldsFilter implements Filter<JsonObject> {
3
- readonly name = "add_fields";
4
- readonly stage: any;
5
- private readonly fields;
6
- constructor(stage: FilterContext['stage'], fields: Record<string, unknown>);
7
- apply(input: JsonObject): FilterResult<JsonObject>;
8
- }
@@ -1,8 +0,0 @@
1
- import type { Filter, FilterContext, FilterResult, JsonObject } from '../types.js';
2
- export declare class BlacklistFilter implements Filter<JsonObject> {
3
- readonly name = "blacklist";
4
- readonly stage: any;
5
- private readonly deny;
6
- constructor(stage: FilterContext['stage'], deny: string[]);
7
- apply(input: JsonObject): FilterResult<JsonObject>;
8
- }
@@ -1,8 +0,0 @@
1
- import type { Filter, FilterContext, FilterResult, JsonObject } from '../types.js';
2
- export declare class WhitelistFilter implements Filter<JsonObject> {
3
- readonly name = "whitelist";
4
- readonly stage: any;
5
- private readonly allow;
6
- constructor(stage: FilterContext['stage'], allow: string[]);
7
- apply(input: JsonObject): FilterResult<JsonObject>;
8
- }
@@ -1,16 +0,0 @@
1
- import type { Filter, FilterContext, FieldMapConfig, JsonObject } from './types.js';
2
- export declare class FilterEngine {
3
- private readonly filters;
4
- private fieldMap?;
5
- private readonly transforms;
6
- registerFilter(filter: Filter): void;
7
- setFieldMap(config: FieldMapConfig): void;
8
- registerTransform(name: string, fn: (v: unknown) => unknown): void;
9
- run(stage: FilterContext['stage'], payload: JsonObject, ctxBase: Omit<FilterContext, 'stage'>): Promise<JsonObject>;
10
- private applyFieldMap;
11
- private coerce;
12
- private deepClone;
13
- private mutateWildcardPath;
14
- private getByPath;
15
- private setByPath;
16
- }
@@ -1,19 +0,0 @@
1
- export * from './types.js';
2
- export * from './engine.js';
3
- export * from './builtin/whitelist-filter.js';
4
- export * from './builtin/blacklist-filter.js';
5
- export * from './builtin/add-fields-filter.js';
6
- export * from './special/request-toolcalls-stringify.js';
7
- export * from './special/request-tool-choice-policy.js';
8
- export * from './special/request-tool-list-filter.js';
9
- export * from './special/tool-filter-hooks.js';
10
- export * from './special/request-streaming-to-nonstreaming.js';
11
- export * from './special/response-tool-text-canonicalize.js';
12
- export * from './special/response-tool-arguments-stringify.js';
13
- export * from './special/response-finish-invariants.js';
14
- export * from './special/request-tools-normalize.js';
15
- export * from './special/response-tool-arguments-toon-decode.js';
16
- export * from './special/response-tool-arguments-blacklist.js';
17
- export * from './special/response-tool-arguments-schema-converge.js';
18
- export * from './special/response-tool-arguments-whitelist.js';
19
- export * from './special/tool-post-constraints.js';
@@ -1,12 +0,0 @@
1
- import type { Filter, FilterContext, FilterResult, JsonObject } from '../types.js';
2
- /**
3
- * RequestStreamingToNonStreamingFilter (request_post)
4
- * - Unifies provider requests to non-streaming regardless of inbound stream flag.
5
- * - Preserves original intent via `originalStream` and `_originalStreamOptions`,
6
- * but ensures `stream: false` is sent to providers.
7
- */
8
- export declare class RequestStreamingToNonStreamingFilter implements Filter<JsonObject> {
9
- readonly name = "request_streaming_to_nonstreaming";
10
- readonly stage: FilterContext['stage'];
11
- apply(input: JsonObject): FilterResult<JsonObject>;
12
- }