@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,516 +0,0 @@
1
- /**
2
- * 响应工具函数
3
- */
4
- /**
5
- * 响应标准化工具
6
- */
7
- export class ResponseNormalizer {
8
- /**
9
- * 标准化响应格式
10
- */
11
- static normalizeResponse(response, sourceProtocol, targetProtocol) {
12
- if (!response) {
13
- return this.createErrorResponse('Empty response', 'invalid_response');
14
- }
15
- try {
16
- switch (targetProtocol) {
17
- case 'openai-chat':
18
- return this.normalizeToOpenAIChat(response, sourceProtocol);
19
- case 'openai-responses':
20
- return this.normalizeToOpenAIResponses(response, sourceProtocol);
21
- case 'anthropic-messages':
22
- return this.normalizeToAnthropicMessages(response, sourceProtocol);
23
- default:
24
- return response;
25
- }
26
- }
27
- catch (error) {
28
- return this.createErrorResponse(`Response normalization failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'normalization_error');
29
- }
30
- }
31
- /**
32
- * 转换为OpenAI Chat格式
33
- */
34
- static normalizeToOpenAIChat(response, sourceProtocol) {
35
- const baseResponse = {
36
- id: response.id || this.generateId(),
37
- object: 'chat.completion',
38
- created: response.created || Date.now(),
39
- model: response.model || 'unknown',
40
- choices: [],
41
- usage: this.normalizeUsage(response.usage || {}),
42
- system_fingerprint: response.system_fingerprint || null
43
- };
44
- // 处理choices
45
- if (response.choices && Array.isArray(response.choices)) {
46
- baseResponse.choices = response.choices.map((choice) => ({
47
- index: choice.index || 0,
48
- message: this.normalizeChatMessage(choice.message),
49
- finish_reason: choice.finish_reason || 'stop'
50
- }));
51
- }
52
- else if (response.content || response.text) {
53
- // 简单响应转换为choice格式
54
- baseResponse.choices = [{
55
- index: 0,
56
- message: {
57
- role: 'assistant',
58
- content: response.content || response.text
59
- },
60
- finish_reason: 'stop'
61
- }];
62
- }
63
- return baseResponse;
64
- }
65
- /**
66
- * 转换为OpenAI Responses格式
67
- */
68
- static normalizeToOpenAIResponses(response, sourceProtocol) {
69
- if (sourceProtocol === 'openai-responses' && response.id) {
70
- // 已经是Responses格式
71
- return response;
72
- }
73
- // 从Chat格式转换
74
- const choice = response.choices?.[0];
75
- const content = choice?.message?.content || response.content || '';
76
- return {
77
- id: response.id || this.generateId(),
78
- object: 'response',
79
- created: response.created || Date.now(),
80
- model: response.model || 'unknown',
81
- output: [{
82
- type: 'message',
83
- id: this.generateId(),
84
- role: 'assistant',
85
- content: [{
86
- type: 'text',
87
- text: content
88
- }]
89
- }],
90
- output_text: content,
91
- usage: this.normalizeUsage(response.usage || {}),
92
- tool_calls: choice?.message?.tool_calls || []
93
- };
94
- }
95
- /**
96
- * 转换为Anthropic Messages格式
97
- */
98
- static normalizeToAnthropicMessages(response, sourceProtocol) {
99
- const baseResponse = {
100
- id: response.id || this.generateId(),
101
- type: 'message',
102
- role: 'assistant',
103
- content: [],
104
- model: response.model || 'unknown',
105
- stop_reason: this.mapFinishReason(response.choices?.[0]?.finish_reason),
106
- stop_sequence: null,
107
- usage: this.normalizeAnthropicUsage(response.usage || {})
108
- };
109
- // 处理内容
110
- const choice = response.choices?.[0];
111
- if (choice?.message?.content) {
112
- baseResponse.content.push({
113
- type: 'text',
114
- text: choice.message.content
115
- });
116
- }
117
- // 处理工具调用
118
- if (choice?.message?.tool_calls) {
119
- for (const toolCall of choice.message.tool_calls) {
120
- baseResponse.content.push({
121
- type: 'tool_use',
122
- id: toolCall.id,
123
- name: toolCall.function.name,
124
- input: JSON.parse(toolCall.function.arguments)
125
- });
126
- }
127
- }
128
- return baseResponse;
129
- }
130
- /**
131
- * 标准化Chat消息
132
- */
133
- static normalizeChatMessage(message) {
134
- if (!message) {
135
- return { role: 'assistant', content: '' };
136
- }
137
- return {
138
- role: message.role || 'assistant',
139
- content: message.content || '',
140
- tool_calls: message.tool_calls || [],
141
- refusal: message.refusal || null
142
- };
143
- }
144
- /**
145
- * 标准化使用信息
146
- */
147
- static normalizeUsage(usage) {
148
- return {
149
- prompt_tokens: usage.prompt_tokens || 0,
150
- completion_tokens: usage.completion_tokens || 0,
151
- total_tokens: usage.total_tokens || (usage.prompt_tokens || 0) + (usage.completion_tokens || 0)
152
- };
153
- }
154
- /**
155
- * 标准化Anthropic使用信息
156
- */
157
- static normalizeAnthropicUsage(usage) {
158
- return {
159
- input_tokens: usage.input_tokens || usage.prompt_tokens || 0,
160
- output_tokens: usage.output_tokens || usage.completion_tokens || 0
161
- };
162
- }
163
- /**
164
- * 映射结束原因
165
- */
166
- static mapFinishReason(reason) {
167
- const mapping = {
168
- 'stop': 'end_turn',
169
- 'length': 'max_tokens',
170
- 'tool_calls': 'tool_use',
171
- 'content_filter': 'stop_sequence',
172
- 'function_call': 'tool_use'
173
- };
174
- return mapping[reason] || 'end_turn';
175
- }
176
- /**
177
- * 生成响应ID
178
- */
179
- static generateId() {
180
- return `resp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
181
- }
182
- /**
183
- * 创建错误响应
184
- */
185
- static createErrorResponse(message, type) {
186
- return {
187
- error: {
188
- message,
189
- type,
190
- code: 'response_processing_error'
191
- },
192
- id: this.generateId(),
193
- object: 'error',
194
- created: Date.now()
195
- };
196
- }
197
- }
198
- /**
199
- * 响应验证工具
200
- */
201
- export class ResponseValidator {
202
- /**
203
- * 验证响应结构
204
- */
205
- static validateResponse(response, expectedProtocol) {
206
- const errors = [];
207
- if (!response || typeof response !== 'object') {
208
- errors.push('响应必须是一个对象');
209
- return { valid: false, errors };
210
- }
211
- switch (expectedProtocol) {
212
- case 'openai-chat':
213
- return this.validateOpenAIChatResponse(response);
214
- case 'openai-responses':
215
- return this.validateOpenAIResponsesResponse(response);
216
- case 'anthropic-messages':
217
- return this.validateAnthropicMessagesResponse(response);
218
- default:
219
- return { valid: true, errors: [] };
220
- }
221
- }
222
- /**
223
- * 验证OpenAI Chat响应
224
- */
225
- static validateOpenAIChatResponse(response) {
226
- const errors = [];
227
- if (!response.id || typeof response.id !== 'string') {
228
- errors.push('响应缺少有效的id字段');
229
- }
230
- if (response.object !== 'chat.completion') {
231
- errors.push('响应object字段应为chat.completion');
232
- }
233
- if (!response.choices || !Array.isArray(response.choices) || response.choices.length === 0) {
234
- errors.push('响应必须包含有效的choices数组');
235
- }
236
- else {
237
- const choice = response.choices[0];
238
- if (!choice.message || typeof choice.message !== 'object') {
239
- errors.push('choices[0]必须包含有效的message对象');
240
- }
241
- }
242
- if (!response.usage || typeof response.usage !== 'object') {
243
- errors.push('响应必须包含有效的usage对象');
244
- }
245
- return { valid: errors.length === 0, errors };
246
- }
247
- /**
248
- * 验证OpenAI Responses响应
249
- */
250
- static validateOpenAIResponsesResponse(response) {
251
- const errors = [];
252
- if (!response.id || typeof response.id !== 'string') {
253
- errors.push('响应缺少有效的id字段');
254
- }
255
- if (response.object !== 'response') {
256
- errors.push('响应object字段应为response');
257
- }
258
- if (!response.output || !Array.isArray(response.output)) {
259
- errors.push('响应必须包含有效的output数组');
260
- }
261
- return { valid: errors.length === 0, errors };
262
- }
263
- /**
264
- * 验证Anthropic Messages响应
265
- */
266
- static validateAnthropicMessagesResponse(response) {
267
- const errors = [];
268
- if (!response.id || typeof response.id !== 'string') {
269
- errors.push('响应缺少有效的id字段');
270
- }
271
- if (response.type !== 'message') {
272
- errors.push('响应type字段应为message');
273
- }
274
- if (response.role !== 'assistant') {
275
- errors.push('响应role字段应为assistant');
276
- }
277
- if (!response.content || !Array.isArray(response.content)) {
278
- errors.push('响应必须包含有效的content数组');
279
- }
280
- return { valid: errors.length === 0, errors };
281
- }
282
- }
283
- /**
284
- * 响应处理工具
285
- */
286
- export class ResponseProcessor {
287
- /**
288
- * 处理流式响应
289
- */
290
- static processStreamingResponse(response, onChunk, onComplete, onError) {
291
- try {
292
- if (response.body) {
293
- // 处理流式响应体
294
- this.processStreamBody(response.body, onChunk, onComplete, onError);
295
- }
296
- else if (response.data) {
297
- // 处理SSE格式的数据
298
- this.processSSEData(response.data, onChunk, onComplete, onError);
299
- }
300
- else {
301
- // 处理单个响应
302
- onChunk(response);
303
- onComplete();
304
- }
305
- }
306
- catch (error) {
307
- onError(error instanceof Error ? error : new Error('Unknown streaming error'));
308
- }
309
- }
310
- /**
311
- * 处理流式响应体
312
- */
313
- static async processStreamBody(body, onChunk, onComplete, onError) {
314
- const reader = body.getReader();
315
- const decoder = new TextDecoder();
316
- let buffer = '';
317
- try {
318
- while (true) {
319
- const { done, value } = await reader.read();
320
- if (done) {
321
- onComplete();
322
- break;
323
- }
324
- buffer += decoder.decode(value, { stream: true });
325
- const lines = buffer.split('\n');
326
- buffer = lines.pop() || '';
327
- for (const line of lines) {
328
- if (line.startsWith('data: ')) {
329
- const data = line.slice(6);
330
- if (data === '[DONE]') {
331
- onComplete();
332
- return;
333
- }
334
- try {
335
- const chunk = JSON.parse(data);
336
- onChunk(chunk);
337
- }
338
- catch (e) {
339
- // 忽略解析错误的行
340
- }
341
- }
342
- }
343
- }
344
- }
345
- catch (error) {
346
- onError(error instanceof Error ? error : new Error('Stream processing error'));
347
- }
348
- finally {
349
- reader.releaseLock();
350
- }
351
- }
352
- /**
353
- * 处理SSE数据
354
- */
355
- static processSSEData(data, onChunk, onComplete, onError) {
356
- try {
357
- const lines = data.split('\n');
358
- for (const line of lines) {
359
- if (line.startsWith('data: ')) {
360
- const chunkData = line.slice(6);
361
- if (chunkData === '[DONE]') {
362
- onComplete();
363
- return;
364
- }
365
- try {
366
- const chunk = JSON.parse(chunkData);
367
- onChunk(chunk);
368
- }
369
- catch (e) {
370
- // 忽略解析错误的行
371
- }
372
- }
373
- }
374
- onComplete();
375
- }
376
- catch (error) {
377
- onError(error instanceof Error ? error : new Error('SSE processing error'));
378
- }
379
- }
380
- /**
381
- * 累积流式响应
382
- */
383
- static accumulateStreamingResponse(chunks) {
384
- if (chunks.length === 0) {
385
- return null;
386
- }
387
- const firstChunk = chunks[0];
388
- const lastChunk = chunks[chunks.length - 1];
389
- // 累积内容
390
- let accumulatedContent = '';
391
- let accumulatedToolCalls = [];
392
- let usage = {};
393
- for (const chunk of chunks) {
394
- if (chunk.choices && chunk.choices[0]) {
395
- const choice = chunk.choices[0];
396
- // 累积文本内容
397
- if (choice.delta?.content) {
398
- accumulatedContent += choice.delta.content;
399
- }
400
- // 累积工具调用
401
- if (choice.delta?.tool_calls) {
402
- for (const toolCall of choice.delta.tool_calls) {
403
- const existingCall = accumulatedToolCalls.find(tc => tc.index === toolCall.index);
404
- if (existingCall) {
405
- if (toolCall.id)
406
- existingCall.id = toolCall.id;
407
- if (toolCall.function?.name)
408
- existingCall.function.name += toolCall.function.name;
409
- if (toolCall.function?.arguments)
410
- existingCall.function.arguments += toolCall.function.arguments;
411
- }
412
- else {
413
- accumulatedToolCalls.push({
414
- index: toolCall.index,
415
- id: toolCall.id,
416
- function: {
417
- name: toolCall.function?.name || '',
418
- arguments: toolCall.function?.arguments || ''
419
- }
420
- });
421
- }
422
- }
423
- }
424
- }
425
- // 获取usage信息(通常在最后一个chunk中)
426
- if (chunk.usage) {
427
- usage = chunk.usage;
428
- }
429
- }
430
- // 构建累积的响应
431
- return {
432
- id: lastChunk.id || firstChunk.id,
433
- object: 'chat.completion',
434
- created: firstChunk.created || Date.now(),
435
- model: firstChunk.model || 'unknown',
436
- choices: [{
437
- index: 0,
438
- message: {
439
- role: 'assistant',
440
- content: accumulatedContent,
441
- tool_calls: accumulatedToolCalls.length > 0 ? accumulatedToolCalls : undefined
442
- },
443
- finish_reason: lastChunk.choices?.[0]?.finish_reason || 'stop'
444
- }],
445
- usage: usage || {
446
- prompt_tokens: 0,
447
- completion_tokens: 0,
448
- total_tokens: 0
449
- }
450
- };
451
- }
452
- }
453
- /**
454
- * 响应缓存工具
455
- */
456
- export class ResponseCache {
457
- static cache = new Map();
458
- /**
459
- * 缓存响应
460
- */
461
- static set(key, response, ttl = 300000) {
462
- this.cache.set(key, {
463
- response,
464
- timestamp: Date.now(),
465
- ttl
466
- });
467
- }
468
- /**
469
- * 获取缓存响应
470
- */
471
- static get(key) {
472
- const cached = this.cache.get(key);
473
- if (!cached) {
474
- return null;
475
- }
476
- // 检查是否过期
477
- if (Date.now() - cached.timestamp > cached.ttl) {
478
- this.cache.delete(key);
479
- return null;
480
- }
481
- return cached.response;
482
- }
483
- /**
484
- * 删除缓存
485
- */
486
- static delete(key) {
487
- return this.cache.delete(key);
488
- }
489
- /**
490
- * 清理过期缓存
491
- */
492
- static cleanup() {
493
- const now = Date.now();
494
- for (const [key, cached] of this.cache) {
495
- if (now - cached.timestamp > cached.ttl) {
496
- this.cache.delete(key);
497
- }
498
- }
499
- }
500
- /**
501
- * 获取缓存统计
502
- */
503
- static getStats() {
504
- return {
505
- size: this.cache.size,
506
- hitRate: 0, // 需要额外实现命中率统计
507
- memoryUsage: JSON.stringify([...this.cache]).length
508
- };
509
- }
510
- /**
511
- * 清空缓存
512
- */
513
- static clear() {
514
- this.cache.clear();
515
- }
516
- }
@@ -1,89 +0,0 @@
1
- /**
2
- * Token计数工具
3
- *
4
- * 基于OpenAI的标准token计算方法
5
- * 参考: https://github.com/openai/tiktoken
6
- */
7
- export declare class TokenCounter {
8
- /**
9
- * 估算文本的token数量
10
- *
11
- * 基于OpenAI的经验法则:
12
- * - 英文:1 token ≈ 4 characters
13
- * - 中文:1 token ≈ 1.5-2 characters
14
- * - 代码:1 token ≈ 3-4 characters
15
- *
16
- * @param text 要计算的文本
17
- * @param language 语言类型 (optional)
18
- * @returns 估算的token数量
19
- */
20
- static estimateTokens(text: string, language?: 'en' | 'zh' | 'code' | 'auto'): number;
21
- /**
22
- * 检测文本的主要语言类型
23
- */
24
- private static detectLanguage;
25
- /**
26
- * 计算消息的token数量
27
- */
28
- static estimateMessageTokens(message: any, language?: 'en' | 'zh' | 'code' | 'auto'): number;
29
- /**
30
- * 计算工具定义的token数量
31
- */
32
- static estimateToolTokens(tool: any): number;
33
- /**
34
- * 计算完整请求的token数量
35
- */
36
- static estimateRequestTokens(request: any): {
37
- inputTokens: number;
38
- toolTokens?: number;
39
- };
40
- /**
41
- * 计算响应的token数量
42
- */
43
- static estimateResponseTokens(response: any): number;
44
- /**
45
- * 精确计算token数量(使用tiktoken库)
46
- *
47
- * 使用tiktoken库进行精确的token计算
48
- */
49
- static calculateTokensExact(text: string, model?: string): Promise<number>;
50
- /**
51
- * 检查tiktoken库是否可用
52
- */
53
- static isTiktokenAvailable(): Promise<boolean>;
54
- /**
55
- * 智能token计算(优先使用tiktoken,回退到估算)
56
- */
57
- static calculateTokens(text: string, model?: string): Promise<number>;
58
- /**
59
- * 计算消息的精确token数量(使用tiktoken)
60
- */
61
- static calculateMessageTokensExact(message: any, model?: string): Promise<number>;
62
- /**
63
- * 计算工具定义的精确token数量(使用tiktoken)
64
- */
65
- static calculateToolTokensExact(tool: any, model?: string): Promise<number>;
66
- /**
67
- * 计算请求的精确token数量(使用tiktoken)
68
- *
69
- * 非严格版本:若tiktoken不可用或出错,则回退到估算方法。
70
- * 注意:路由/长上下文判断应优先使用 calculateRequestTokensStrict,禁止静默回退。
71
- */
72
- static calculateRequestTokensExact(request: any, model?: string): Promise<{
73
- inputTokens: number;
74
- toolTokens?: number;
75
- }>;
76
- /**
77
- * 计算请求的精确token数量(使用tiktoken,严格模式:禁止回退)
78
- *
79
- * 任何错误直接抛出,由调用方决定是否Fail Fast。
80
- */
81
- static calculateRequestTokensStrict(request: any, model?: string): Promise<{
82
- inputTokens: number;
83
- toolTokens?: number;
84
- }>;
85
- /**
86
- * 计算响应的精确token数量(使用tiktoken)
87
- */
88
- static calculateResponseTokensExact(response: any, model?: string): Promise<number>;
89
- }