@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,123 +0,0 @@
1
- /**
2
- * LLMSwitch V2 工厂类
3
- *
4
- * 提供创建和配置LLMSwitch V2实例的工厂方法
5
- */
6
- import type { LLMSwitchV2Config } from '../api/llmswitch-types.js';
7
- import { LLMSwitchEngineV2 } from './llmswitch-engine-v2.js';
8
- /**
9
- * LLMSwitch V2 工厂类
10
- */
11
- export declare class LLMSwitchFactoryV2 {
12
- private static instances;
13
- private static defaultInstance;
14
- /**
15
- * 创建LLMSwitch V2实例
16
- */
17
- static create(config?: Partial<LLMSwitchV2Config>, instanceId?: string): Promise<LLMSwitchEngineV2>;
18
- /**
19
- * 获取默认实例
20
- */
21
- static getDefault(): Promise<LLMSwitchEngineV2>;
22
- /**
23
- * 获取指定实例
24
- */
25
- static getInstance(instanceId: string): Promise<LLMSwitchEngineV2>;
26
- /**
27
- * 创建多个实例
28
- */
29
- static createMultiple(configs: Array<{
30
- id: string;
31
- config: Partial<LLMSwitchV2Config>;
32
- }>): Promise<Map<string, LLMSwitchEngineV2>>;
33
- /**
34
- * 从配置文件创建实例
35
- */
36
- static fromConfigFile(configPath: string): Promise<LLMSwitchEngineV2>;
37
- /**
38
- * 从环境变量创建实例
39
- */
40
- static fromEnvironment(): Promise<LLMSwitchEngineV2>;
41
- /**
42
- * 创建开发环境实例
43
- */
44
- static createDevelopment(): Promise<LLMSwitchEngineV2>;
45
- /**
46
- * 创建生产环境实例
47
- */
48
- static createProduction(): Promise<LLMSwitchEngineV2>;
49
- /**
50
- * 创建测试环境实例
51
- */
52
- static createTest(): Promise<LLMSwitchEngineV2>;
53
- /**
54
- * 销毁指定实例
55
- */
56
- static destroy(instanceId: string): Promise<void>;
57
- /**
58
- * 销毁所有实例
59
- */
60
- static destroyAll(): Promise<void>;
61
- /**
62
- * 获取所有实例状态
63
- */
64
- static getInstancesStatus(): Promise<Array<{
65
- id: string;
66
- healthy: boolean;
67
- uptime: number;
68
- metrics: any;
69
- }>>;
70
- /**
71
- * 重新加载配置
72
- */
73
- static reloadConfig(instanceId: string, newConfig: Partial<LLMSwitchV2Config>): Promise<LLMSwitchEngineV2>;
74
- /**
75
- * 克隆实例
76
- */
77
- static cloneInstance(sourceId: string, targetId?: string): Promise<LLMSwitchEngineV2>;
78
- /**
79
- * 批量健康检查
80
- */
81
- static healthCheckAll(): Promise<Map<string, boolean>>;
82
- /**
83
- * 批量重启不健康的实例
84
- */
85
- static restartUnhealthy(): Promise<number>;
86
- /**
87
- * 获取实例统计信息
88
- */
89
- static getStats(): {
90
- totalInstances: number;
91
- runningInstances: number;
92
- instanceIds: string[];
93
- memoryUsage?: NodeJS.MemoryUsage;
94
- };
95
- /**
96
- * 私有方法:合并配置
97
- */
98
- private static mergeConfig;
99
- /**
100
- * 私有方法:深度合并对象
101
- */
102
- private static deepMerge;
103
- }
104
- /**
105
- * 便捷创建函数
106
- */
107
- export declare function createLLMSwitchV2(config?: Partial<LLMSwitchV2Config>, instanceId?: string): Promise<LLMSwitchEngineV2>;
108
- /**
109
- * 便捷创建函数:开发环境
110
- */
111
- export declare function createLLMSwitchV2Development(): Promise<LLMSwitchEngineV2>;
112
- /**
113
- * 便捷创建函数:生产环境
114
- */
115
- export declare function createLLMSwitchV2Production(): Promise<LLMSwitchEngineV2>;
116
- /**
117
- * 便捷创建函数:测试环境
118
- */
119
- export declare function createLLMSwitchV2Test(): Promise<LLMSwitchEngineV2>;
120
- /**
121
- * 便捷函数:获取默认实例
122
- */
123
- export declare function getDefaultLLMSwitchV2(): Promise<LLMSwitchEngineV2>;
@@ -1,521 +0,0 @@
1
- /**
2
- * LLMSwitch V2 工厂类
3
- *
4
- * 提供创建和配置LLMSwitch V2实例的工厂方法
5
- */
6
- import { DEFAULT_LLSWITCH_CONFIG, validateLLMSwitchConfig } from '../api/llmswitch-config.js';
7
- import { LLMSwitchEngineV2 } from './llmswitch-engine-v2.js';
8
- import { ErrorHandler, ErrorFactory } from '../utils/error-utils.js';
9
- /**
10
- * LLMSwitch V2 工厂类
11
- */
12
- export class LLMSwitchFactoryV2 {
13
- static instances = new Map();
14
- static defaultInstance = null;
15
- /**
16
- * 创建LLMSwitch V2实例
17
- */
18
- static async create(config = {}, instanceId) {
19
- const id = instanceId || 'default';
20
- // 验证配置
21
- const fullConfig = this.mergeConfig(config);
22
- const validation = validateLLMSwitchConfig(fullConfig);
23
- if (!validation.valid) {
24
- throw ErrorFactory.configurationError(`Invalid configuration: ${validation.errors.join(', ')}`, undefined, { validationErrors: validation.errors });
25
- }
26
- if (validation.warnings.length > 0) {
27
- console.warn('Configuration warnings:', validation.warnings);
28
- }
29
- // 创建实例
30
- const instance = new LLMSwitchEngineV2(fullConfig);
31
- // 初始化实例
32
- await instance.initialize();
33
- await instance.start();
34
- // 缓存实例
35
- this.instances.set(id, instance);
36
- // 设置默认实例
37
- if (id === 'default') {
38
- this.defaultInstance = instance;
39
- }
40
- console.log(`LLMSwitch V2 instance created: ${id}`);
41
- return instance;
42
- }
43
- /**
44
- * 获取默认实例
45
- */
46
- static async getDefault() {
47
- if (!this.defaultInstance) {
48
- this.defaultInstance = await this.create();
49
- }
50
- return this.defaultInstance;
51
- }
52
- /**
53
- * 获取指定实例
54
- */
55
- static async getInstance(instanceId) {
56
- let instance = this.instances.get(instanceId);
57
- if (!instance) {
58
- instance = await this.create(undefined, instanceId);
59
- }
60
- return instance;
61
- }
62
- /**
63
- * 创建多个实例
64
- */
65
- static async createMultiple(configs) {
66
- const instances = new Map();
67
- for (const { id, config } of configs) {
68
- try {
69
- const instance = await this.create(config, id);
70
- instances.set(id, instance);
71
- }
72
- catch (error) {
73
- const handledError = ErrorHandler.handle(error, {
74
- stage: 'factory_create_multiple',
75
- endpoint: id
76
- });
77
- console.error(`Failed to create instance ${id}:`, handledError);
78
- throw handledError;
79
- }
80
- }
81
- return instances;
82
- }
83
- /**
84
- * 从配置文件创建实例
85
- */
86
- static async fromConfigFile(configPath) {
87
- try {
88
- const fs = await import('fs/promises');
89
- const path = await import('path');
90
- const configData = await fs.readFile(path.resolve(configPath), 'utf-8');
91
- const config = JSON.parse(configData);
92
- return await this.create(config);
93
- }
94
- catch (error) {
95
- throw ErrorHandler.handle(error, {
96
- requestId: `config-load-${Date.now()}`,
97
- stage: 'factory_from_config_file'
98
- });
99
- }
100
- }
101
- /**
102
- * 从环境变量创建实例
103
- */
104
- static async fromEnvironment() {
105
- const config = {};
106
- // 从环境变量读取配置
107
- if (process.env.LLSWITCH_DEBUG) {
108
- config.enabled = process.env.LLSWITCH_DEBUG === 'true';
109
- }
110
- if (process.env.LLSWITCH_DEFAULT_PROTOCOL) {
111
- config.defaultProtocol = process.env.LLSWITCH_DEFAULT_PROTOCOL;
112
- }
113
- // 性能配置
114
- if (process.env.LLSWITCH_MAX_CONCURRENT_REQUESTS) {
115
- config.performance = {
116
- maxConcurrentRequests: parseInt(process.env.LLSWITCH_MAX_CONCURRENT_REQUESTS),
117
- requestTimeout: parseInt(process.env.LLSWITCH_REQUEST_TIMEOUT || '30000'),
118
- responseTimeout: parseInt(process.env.LLSWITCH_RESPONSE_TIMEOUT || '60000'),
119
- processingTimeout: parseInt(process.env.LLSWITCH_PROCESSING_TIMEOUT || '45000'),
120
- retryAttempts: parseInt(process.env.LLSWITCH_RETRY_ATTEMPTS || '3'),
121
- retryDelay: parseInt(process.env.LLSWITCH_RETRY_DELAY || '1000')
122
- };
123
- }
124
- // 快照配置
125
- if (process.env.LLSWITCH_SNAPSHOT_PATH) {
126
- config.hooks = {
127
- enabled: true,
128
- stages: [],
129
- snapshot: {
130
- enabled: true,
131
- basePath: process.env.LLSWITCH_SNAPSHOT_PATH,
132
- endpointIsolation: {
133
- enabled: true,
134
- pathStructure: 'endpoint/request'
135
- },
136
- pathGeneration: {
137
- includeRequestId: process.env.LLSWITCH_INCLUDE_REQUEST_ID === 'true',
138
- includeStage: process.env.LLSWITCH_INCLUDE_STAGE === 'true',
139
- includeTimestamp: process.env.LLSWITCH_INCLUDE_TIMESTAMP === 'true'
140
- },
141
- format: process.env.LLSWITCH_SNAPSHOT_FORMAT || 'json',
142
- compression: process.env.LLSWITCH_SNAPSHOT_COMPRESSION || 'gzip',
143
- retention: {
144
- maxFiles: parseInt(process.env.LLSWITCH_SNAPSHOT_MAX_FILES || '1000'),
145
- maxAge: parseInt(process.env.LLSWITCH_SNAPSHOT_MAX_AGE || '604800000')
146
- }
147
- }
148
- };
149
- }
150
- return await this.create(config);
151
- }
152
- /**
153
- * 创建开发环境实例
154
- */
155
- static async createDevelopment() {
156
- const devConfig = {
157
- enabled: true,
158
- hooks: {
159
- enabled: true,
160
- stages: [
161
- 'request_1_validation_pre',
162
- 'request_1_validation_post',
163
- 'request_2_routing_pre',
164
- 'request_2_routing_post',
165
- 'request_3_conversion_pre',
166
- 'request_3_conversion_post',
167
- 'request_4_tools_pre',
168
- 'request_4_tools_post',
169
- 'request_5_sse_pre',
170
- 'request_5_sse_post',
171
- 'request_6_snapshot_pre',
172
- 'request_6_snapshot_post',
173
- 'request_7_monitoring_pre',
174
- 'request_7_monitoring_post',
175
- 'request_8_validation_pre',
176
- 'request_8_validation_post',
177
- 'response_1_receive_pre',
178
- 'response_1_receive_post',
179
- 'response_2_conversion_pre',
180
- 'response_2_conversion_post',
181
- 'response_3_tools_pre',
182
- 'response_3_tools_post',
183
- 'response_4_sse_pre',
184
- 'response_4_sse_post',
185
- 'response_5_formatting_pre',
186
- 'response_5_formatting_post',
187
- 'response_6_snapshot_pre',
188
- 'response_6_snapshot_post',
189
- 'response_7_quality_pre',
190
- 'response_7_quality_post',
191
- 'response_8_monitoring_pre',
192
- 'response_8_monitoring_post'
193
- ],
194
- snapshot: {
195
- enabled: true,
196
- level: 'verbose',
197
- basePath: '~/.routecodex/snapshots/llmswitch-core/dev',
198
- endpointIsolation: {
199
- enabled: true,
200
- pathStructure: 'endpoint/request'
201
- },
202
- pathGeneration: {
203
- includeRequestId: true,
204
- includeStage: true,
205
- includeTimestamp: true
206
- },
207
- format: 'json',
208
- compression: 'none',
209
- retention: {
210
- maxFiles: 100,
211
- maxAge: 86400000 // 1天
212
- }
213
- }
214
- },
215
- performance: {
216
- maxConcurrentRequests: 10,
217
- requestTimeout: 10000,
218
- responseTimeout: 20000,
219
- processingTimeout: 15000,
220
- retryAttempts: 1,
221
- retryDelay: 500
222
- }
223
- };
224
- return await this.create(devConfig, 'development');
225
- }
226
- /**
227
- * 创建生产环境实例
228
- */
229
- static async createProduction() {
230
- const prodConfig = {
231
- enabled: true,
232
- hooks: {
233
- enabled: true,
234
- stages: [
235
- 'request_1_validation_pre',
236
- 'request_1_validation_post',
237
- 'request_2_routing_pre',
238
- 'request_2_routing_post',
239
- 'request_3_conversion_pre',
240
- 'request_3_conversion_post',
241
- 'request_4_tools_pre',
242
- 'request_4_tools_post',
243
- 'request_5_sse_pre',
244
- 'request_5_sse_post',
245
- 'request_6_snapshot_pre',
246
- 'request_6_snapshot_post',
247
- 'request_7_monitoring_pre',
248
- 'request_7_monitoring_post',
249
- 'request_8_validation_pre',
250
- 'request_8_validation_post',
251
- 'response_1_receive_pre',
252
- 'response_1_receive_post',
253
- 'response_2_conversion_pre',
254
- 'response_2_conversion_post',
255
- 'response_3_tools_pre',
256
- 'response_3_tools_post',
257
- 'response_4_sse_pre',
258
- 'response_4_sse_post',
259
- 'response_5_formatting_pre',
260
- 'response_5_formatting_post',
261
- 'response_6_snapshot_pre',
262
- 'response_6_snapshot_post',
263
- 'response_7_quality_pre',
264
- 'response_7_quality_post',
265
- 'response_8_monitoring_pre',
266
- 'response_8_monitoring_post'
267
- ],
268
- snapshot: {
269
- enabled: false,
270
- basePath: '~/.routecodex/snapshots/llmswitch-core/prod',
271
- endpointIsolation: {
272
- enabled: true,
273
- pathStructure: 'endpoint/request'
274
- },
275
- pathGeneration: {
276
- includeRequestId: true,
277
- includeStage: true,
278
- includeTimestamp: true
279
- },
280
- format: 'json',
281
- compression: 'gzip',
282
- retention: {
283
- maxFiles: 10000,
284
- maxAge: 2592000000 // 30天
285
- }
286
- }
287
- },
288
- performance: {
289
- maxConcurrentRequests: 200,
290
- requestTimeout: 60000,
291
- responseTimeout: 120000,
292
- processingTimeout: 90000,
293
- retryAttempts: 5,
294
- retryDelay: 2000
295
- }
296
- };
297
- return await this.create(prodConfig, 'production');
298
- }
299
- /**
300
- * 创建测试环境实例
301
- */
302
- static async createTest() {
303
- const testConfig = {
304
- enabled: true,
305
- hooks: {
306
- enabled: false, // 测试环境可以关闭hooks
307
- stages: [],
308
- snapshot: {
309
- enabled: false,
310
- basePath: '~/.routecodex/snapshots/llmswitch-core/test',
311
- endpointIsolation: {
312
- enabled: true,
313
- pathStructure: 'endpoint/request'
314
- },
315
- pathGeneration: {
316
- includeRequestId: false,
317
- includeStage: false,
318
- includeTimestamp: false
319
- },
320
- format: 'json',
321
- compression: 'none',
322
- retention: {
323
- maxFiles: 10,
324
- maxAge: 3600000 // 1小时
325
- }
326
- }
327
- },
328
- performance: {
329
- maxConcurrentRequests: 5,
330
- requestTimeout: 5000,
331
- responseTimeout: 10000,
332
- processingTimeout: 7500,
333
- retryAttempts: 0,
334
- retryDelay: 0
335
- }
336
- };
337
- return await this.create(testConfig, 'test');
338
- }
339
- /**
340
- * 销毁指定实例
341
- */
342
- static async destroy(instanceId) {
343
- const instance = this.instances.get(instanceId);
344
- if (instance) {
345
- await instance.shutdown();
346
- this.instances.delete(instanceId);
347
- if (this.defaultInstance === instance) {
348
- this.defaultInstance = null;
349
- }
350
- console.log(`LLMSwitch V2 instance destroyed: ${instanceId}`);
351
- }
352
- }
353
- /**
354
- * 销毁所有实例
355
- */
356
- static async destroyAll() {
357
- const destroyPromises = Array.from(this.instances.keys()).map(id => this.destroy(id));
358
- await Promise.all(destroyPromises);
359
- this.instances.clear();
360
- this.defaultInstance = null;
361
- console.log('All LLMSwitch V2 instances destroyed');
362
- }
363
- /**
364
- * 获取所有实例状态
365
- */
366
- static async getInstancesStatus() {
367
- const statusPromises = Array.from(this.instances.entries()).map(async ([id, instance]) => {
368
- try {
369
- const health = await instance.healthCheck();
370
- const metrics = instance.getMetrics();
371
- return {
372
- id,
373
- healthy: health.healthy,
374
- uptime: health.uptime,
375
- metrics
376
- };
377
- }
378
- catch (error) {
379
- return {
380
- id,
381
- healthy: false,
382
- uptime: 0,
383
- metrics: null
384
- };
385
- }
386
- });
387
- return Promise.all(statusPromises);
388
- }
389
- /**
390
- * 重新加载配置
391
- */
392
- static async reloadConfig(instanceId, newConfig) {
393
- // 销毁旧实例
394
- await this.destroy(instanceId);
395
- // 创建新实例
396
- return await this.create(newConfig, instanceId);
397
- }
398
- /**
399
- * 克隆实例
400
- */
401
- static async cloneInstance(sourceId, targetId) {
402
- const sourceInstance = this.instances.get(sourceId);
403
- if (!sourceInstance) {
404
- throw ErrorFactory.endpointNotFound(sourceId, {
405
- availableInstances: Array.from(this.instances.keys()),
406
- operation: 'clone_instance'
407
- });
408
- }
409
- const sourceConfig = sourceInstance.getConfig();
410
- return await this.create(sourceConfig, targetId);
411
- }
412
- /**
413
- * 批量健康检查
414
- */
415
- static async healthCheckAll() {
416
- const healthResults = new Map();
417
- for (const [id, instance] of this.instances) {
418
- try {
419
- const health = await instance.healthCheck();
420
- healthResults.set(id, health.healthy);
421
- }
422
- catch (error) {
423
- healthResults.set(id, false);
424
- console.error(`Health check failed for instance ${id}:`, error);
425
- }
426
- }
427
- return healthResults;
428
- }
429
- /**
430
- * 批量重启不健康的实例
431
- */
432
- static async restartUnhealthy() {
433
- const healthResults = await this.healthCheckAll();
434
- const unhealthyIds = Array.from(healthResults.entries()).filter(([_, healthy]) => !healthy);
435
- let restartedCount = 0;
436
- for (const [id] of unhealthyIds) {
437
- try {
438
- await this.reloadConfig(id, this.instances.get(id)?.getConfig() || {});
439
- restartedCount++;
440
- console.log(`Restarted unhealthy instance: ${id}`);
441
- }
442
- catch (error) {
443
- console.error(`Failed to restart instance ${id}:`, error);
444
- }
445
- }
446
- return restartedCount;
447
- }
448
- /**
449
- * 获取实例统计信息
450
- */
451
- static getStats() {
452
- const stats = {
453
- totalInstances: this.instances.size,
454
- runningInstances: 0,
455
- instanceIds: Array.from(this.instances.keys())
456
- };
457
- // 尝试获取内存使用情况
458
- try {
459
- if (typeof process !== 'undefined' && process.memoryUsage) {
460
- stats.memoryUsage = process.memoryUsage();
461
- }
462
- }
463
- catch (error) {
464
- // 忽略内存使用获取错误
465
- }
466
- return stats;
467
- }
468
- /**
469
- * 私有方法:合并配置
470
- */
471
- static mergeConfig(userConfig) {
472
- const defaultConfig = DEFAULT_LLSWITCH_CONFIG;
473
- // 深度合并配置
474
- return this.deepMerge(defaultConfig, userConfig);
475
- }
476
- /**
477
- * 私有方法:深度合并对象
478
- */
479
- static deepMerge(target, source) {
480
- const result = { ...target };
481
- for (const key in source) {
482
- if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
483
- result[key] = this.deepMerge(target[key] || {}, source[key]);
484
- }
485
- else {
486
- result[key] = source[key];
487
- }
488
- }
489
- return result;
490
- }
491
- }
492
- /**
493
- * 便捷创建函数
494
- */
495
- export async function createLLMSwitchV2(config, instanceId) {
496
- return LLMSwitchFactoryV2.create(config, instanceId);
497
- }
498
- /**
499
- * 便捷创建函数:开发环境
500
- */
501
- export async function createLLMSwitchV2Development() {
502
- return LLMSwitchFactoryV2.createDevelopment();
503
- }
504
- /**
505
- * 便捷创建函数:生产环境
506
- */
507
- export async function createLLMSwitchV2Production() {
508
- return LLMSwitchFactoryV2.createProduction();
509
- }
510
- /**
511
- * 便捷创建函数:测试环境
512
- */
513
- export async function createLLMSwitchV2Test() {
514
- return LLMSwitchFactoryV2.createTest();
515
- }
516
- /**
517
- * 便捷函数:获取默认实例
518
- */
519
- export async function getDefaultLLMSwitchV2() {
520
- return LLMSwitchFactoryV2.getDefault();
521
- }