@jsonstudio/llms 0.4.3 → 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 (416) 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/sse/sse-to-json/builders/response-builder.js +2 -1
  20. package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
  21. package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
  22. package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
  23. package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
  24. package/dist/sse/types/chat-types.d.ts +9 -6
  25. package/dist/sse/types/conversion-context.d.ts +14 -11
  26. package/dist/sse/types/core-interfaces.d.ts +6 -2
  27. package/dist/sse/types/index.d.ts +1 -1
  28. package/dist/sse/types/responses-types.d.ts +20 -20
  29. package/dist/sse/types/sse-events.d.ts +4 -3
  30. package/dist/sse/types/stream-state.d.ts +34 -39
  31. package/dist/sse/types/utility-types.d.ts +47 -43
  32. package/dist/sse/types/utility-types.js +10 -13
  33. package/dist/tools/tool-registry.js +156 -98
  34. package/package.json +7 -7
  35. package/dist/api/index.d.ts +0 -10
  36. package/dist/api/index.js +0 -11
  37. package/dist/api/llmswitch-config.d.ts +0 -15
  38. package/dist/api/llmswitch-config.js +0 -415
  39. package/dist/api/llmswitch-types.d.ts +0 -412
  40. package/dist/api/llmswitch-types.js +0 -60
  41. package/dist/bridge/routecodex-adapter.d.ts +0 -74
  42. package/dist/config/index.d.ts +0 -3
  43. package/dist/config/index.js +0 -5
  44. package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
  45. package/dist/config-unified/unified-config.d.ts +0 -26
  46. package/dist/conversion/codec-registry.d.ts +0 -10
  47. package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
  48. package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
  49. package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
  50. package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
  51. package/dist/conversion/config/config-manager.d.ts +0 -212
  52. package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
  53. package/dist/conversion/conversion-v3/adapters/index.js +0 -1
  54. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
  55. package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
  56. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
  57. package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
  58. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
  59. package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
  60. package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
  61. package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
  62. package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
  63. package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
  64. package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
  65. package/dist/conversion/conversion-v3/config/index.js +0 -5
  66. package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
  67. package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
  68. package/dist/conversion/conversion-v3/index.d.ts +0 -11
  69. package/dist/conversion/conversion-v3/index.js +0 -17
  70. package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
  71. package/dist/conversion/conversion-v3/nodes/index.js +0 -149
  72. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
  73. package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
  74. package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
  75. package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
  76. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
  77. package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
  78. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
  79. package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
  80. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
  81. package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
  82. package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
  83. package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
  84. package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
  85. package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
  86. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
  87. package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
  88. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
  89. package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
  90. package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
  91. package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
  92. package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
  93. package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
  94. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
  95. package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
  96. package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
  97. package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
  98. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
  99. package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
  100. package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
  101. package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
  102. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
  103. package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
  104. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
  105. package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
  106. package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
  107. package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
  108. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
  109. package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
  110. package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
  111. package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
  112. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
  113. package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
  114. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
  115. package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
  116. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
  117. package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
  118. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
  119. package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
  120. package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
  121. package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
  122. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
  123. package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
  124. package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
  125. package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
  126. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
  127. package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
  128. package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
  129. package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
  130. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
  131. package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
  132. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
  133. package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
  134. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
  135. package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
  136. package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
  137. package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
  138. package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
  139. package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
  140. package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
  141. package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
  142. package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
  143. package/dist/conversion/conversion-v3/sse/index.js +0 -115
  144. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  145. package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
  146. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  147. package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
  148. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  149. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
  150. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  151. package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
  152. package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
  153. package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
  154. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  155. package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
  156. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  157. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
  158. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  159. package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
  160. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
  161. package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
  162. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
  163. package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
  164. package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
  165. package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
  166. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
  167. package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
  168. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  169. package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
  170. package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
  171. package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
  172. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  173. package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
  174. package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
  175. package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
  176. package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
  177. package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
  178. package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
  179. package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
  180. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  181. package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
  182. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  183. package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
  184. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  185. package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
  186. package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
  187. package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
  188. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  189. package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
  190. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
  191. package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
  192. package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
  193. package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
  194. package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
  195. package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
  196. package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
  197. package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
  198. package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
  199. package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
  200. package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
  201. package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
  202. package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
  203. package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
  204. package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
  205. package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
  206. package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
  207. package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
  208. package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
  209. package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
  210. package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
  211. package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
  212. package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
  213. package/dist/conversion/conversion-v3/standards/errors.js +0 -27
  214. package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
  215. package/dist/conversion/conversion-v3/standards/index.js +0 -11
  216. package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
  217. package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
  218. package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
  219. package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
  220. package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
  221. package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
  222. package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
  223. package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
  224. package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
  225. package/dist/conversion/conversion-v3/types/config-types.js +0 -13
  226. package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
  227. package/dist/conversion/conversion-v3/types/index.js +0 -11
  228. package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
  229. package/dist/conversion/conversion-v3/types/node-types.js +0 -20
  230. package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
  231. package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
  232. package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
  233. package/dist/conversion/conversion-v3/types/request-types.js +0 -26
  234. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
  235. package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
  236. package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
  237. package/dist/conversion/conversion-v3/validations/index.js +0 -7
  238. package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
  239. package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
  240. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
  241. package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
  242. package/dist/conversion/hub/config/types.d.ts +0 -26
  243. package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
  244. package/dist/conversion/hub/core/hub-context.d.ts +0 -21
  245. package/dist/conversion/hub/core/index.d.ts +0 -3
  246. package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
  247. package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
  248. package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
  249. package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
  250. package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
  251. package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
  252. package/dist/conversion/hub/hub-feature.d.ts +0 -1
  253. package/dist/conversion/hub/node-support.d.ts +0 -19
  254. package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
  255. package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
  256. package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
  257. package/dist/conversion/hub/process/chat-process.d.ts +0 -13
  258. package/dist/conversion/hub/registry.d.ts +0 -28
  259. package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
  260. package/dist/conversion/hub/response/provider-response.d.ts +0 -20
  261. package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
  262. package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
  263. package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
  264. package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
  265. package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
  266. package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
  267. package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
  268. package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
  269. package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
  270. package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
  271. package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
  272. package/dist/conversion/hub/types/errors.d.ts +0 -5
  273. package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
  274. package/dist/conversion/hub/types/index.d.ts +0 -6
  275. package/dist/conversion/hub/types/json.d.ts +0 -9
  276. package/dist/conversion/hub/types/node.d.ts +0 -31
  277. package/dist/conversion/hub/types/standardized.d.ts +0 -94
  278. package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
  279. package/dist/conversion/schema-validator.d.ts +0 -7
  280. package/dist/conversion/shared/args-mapping.d.ts +0 -18
  281. package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
  282. package/dist/conversion/shared/jsonish.d.ts +0 -3
  283. package/dist/conversion/shared/mcp-injection.d.ts +0 -2
  284. package/dist/conversion/shared/media.d.ts +0 -1
  285. package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
  286. package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
  287. package/dist/conversion/shared/payload-budget.d.ts +0 -13
  288. package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
  289. package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
  290. package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
  291. package/dist/conversion/shared/responses-instructions.d.ts +0 -1
  292. package/dist/conversion/shared/responses-metadata.d.ts +0 -1
  293. package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
  294. package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
  295. package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
  296. package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
  297. package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
  298. package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
  299. package/dist/conversion/shared/tool-governor.d.ts +0 -27
  300. package/dist/conversion/shared/tool-harvester.d.ts +0 -31
  301. package/dist/conversion/shared/tool-mapping.d.ts +0 -10
  302. package/dist/conversion/shared/tooling.d.ts +0 -26
  303. package/dist/conversion/types.d.ts +0 -33
  304. package/dist/core/index.d.ts +0 -6
  305. package/dist/core/index.js +0 -9
  306. package/dist/core/llmswitch-engine-v2.d.ts +0 -132
  307. package/dist/core/llmswitch-engine-v2.js +0 -649
  308. package/dist/core/llmswitch-factory-v2.d.ts +0 -123
  309. package/dist/core/llmswitch-factory-v2.js +0 -521
  310. package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
  311. package/dist/endpoints/base-endpoint-handler.js +0 -545
  312. package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
  313. package/dist/endpoints/chat-endpoint-handler.js +0 -218
  314. package/dist/endpoints/endpoint-router.d.ts +0 -127
  315. package/dist/endpoints/endpoint-router.js +0 -438
  316. package/dist/endpoints/index.d.ts +0 -13
  317. package/dist/endpoints/index.js +0 -11
  318. package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
  319. package/dist/endpoints/messages-endpoint-handler.js +0 -238
  320. package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
  321. package/dist/endpoints/responses-endpoint-handler.js +0 -233
  322. package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
  323. package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
  324. package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
  325. package/dist/filters/engine.d.ts +0 -16
  326. package/dist/filters/index.d.ts +0 -19
  327. package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
  328. package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
  329. package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
  330. package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
  331. package/dist/filters/special/request-tools-normalize.d.ts +0 -12
  332. package/dist/filters/special/response-finish-invariants.d.ts +0 -11
  333. package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
  334. package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
  335. package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
  336. package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
  337. package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
  338. package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
  339. package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
  340. package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
  341. package/dist/filters/special/tool-post-constraints.d.ts +0 -31
  342. package/dist/filters/types.d.ts +0 -68
  343. package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
  344. package/dist/filters/utils/snapshot-writer.d.ts +0 -10
  345. package/dist/guidance/index.d.ts +0 -3
  346. package/dist/hooks/hooks-integration.d.ts +0 -161
  347. package/dist/hooks/hooks-integration.js +0 -519
  348. package/dist/hooks/index.d.ts +0 -10
  349. package/dist/hooks/index.js +0 -13
  350. package/dist/html-to-markdown.d.ts +0 -5
  351. package/dist/html-to-markdown.js +0 -66
  352. package/dist/http/sse-response.d.ts +0 -22
  353. package/dist/router/virtual-router/bootstrap.d.ts +0 -6
  354. package/dist/router/virtual-router/classifier.d.ts +0 -10
  355. package/dist/router/virtual-router/engine.d.ts +0 -35
  356. package/dist/router/virtual-router/error-center.d.ts +0 -10
  357. package/dist/router/virtual-router/features.d.ts +0 -3
  358. package/dist/router/virtual-router/health-manager.d.ts +0 -18
  359. package/dist/router/virtual-router/load-balancer.d.ts +0 -18
  360. package/dist/router/virtual-router/provider-registry.d.ts +0 -11
  361. package/dist/router/virtual-router/types.d.ts +0 -206
  362. package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
  363. package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
  364. package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
  365. package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
  366. package/dist/sse/json-to-sse/index.d.ts +0 -6
  367. package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
  368. package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
  369. package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
  370. package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
  371. package/dist/sse/shared/chat-serializer.d.ts +0 -4
  372. package/dist/sse/shared/constants.d.ts +0 -272
  373. package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
  374. package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
  375. package/dist/sse/shared/serializers/index.d.ts +0 -39
  376. package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
  377. package/dist/sse/shared/serializers/types.d.ts +0 -51
  378. package/dist/sse/shared/utils.d.ts +0 -254
  379. package/dist/sse/shared/writer.d.ts +0 -111
  380. package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
  381. package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
  382. package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
  383. package/dist/sse/sse-to-json/index.d.ts +0 -6
  384. package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
  385. package/dist/sse/types/anthropic-types.d.ts +0 -87
  386. package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
  387. package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
  388. package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
  389. package/dist/tools/proxy/executors/web-fetch.js +0 -39
  390. package/dist/tools/proxy/registry.d.ts +0 -8
  391. package/dist/tools/proxy/registry.js +0 -14
  392. package/dist/tools/proxy/types.d.ts +0 -29
  393. package/dist/tools/tool-registry.d.ts +0 -8
  394. package/dist/tools/web-fetch-html.d.ts +0 -15
  395. package/dist/tools/web-fetch-html.js +0 -83
  396. package/dist/utils/conversion-adapter.d.ts +0 -65
  397. package/dist/utils/conversion-adapter.js +0 -183
  398. package/dist/utils/error-factory.d.ts +0 -88
  399. package/dist/utils/error-factory.js +0 -138
  400. package/dist/utils/error-utils.d.ts +0 -334
  401. package/dist/utils/error-utils.js +0 -782
  402. package/dist/utils/index.d.ts +0 -8
  403. package/dist/utils/index.js +0 -13
  404. package/dist/utils/performance-utils.d.ts +0 -205
  405. package/dist/utils/performance-utils.js +0 -440
  406. package/dist/utils/profile-mapper.d.ts +0 -32
  407. package/dist/utils/profile-mapper.js +0 -269
  408. package/dist/utils/request-processor.d.ts +0 -52
  409. package/dist/utils/request-processor.js +0 -210
  410. package/dist/utils/request-utils.d.ts +0 -117
  411. package/dist/utils/request-utils.js +0 -333
  412. package/dist/utils/response-utils.d.ts +0 -127
  413. package/dist/utils/response-utils.js +0 -516
  414. package/dist/utils/token-counter.d.ts +0 -89
  415. package/dist/utils/token-counter.js +0 -541
  416. /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
- }