@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,21 +1,77 @@
1
- function tryParse(s) {
1
+ // Tool registry and validator (single source of truth)
2
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ const asString = (value) => {
4
+ if (typeof value === 'string' && value.trim().length > 0) {
5
+ return value;
6
+ }
7
+ return null;
8
+ };
9
+ const asStringArray = (value) => {
10
+ if (!Array.isArray(value)) {
11
+ return null;
12
+ }
13
+ const normalized = [];
14
+ for (const entry of value) {
15
+ if (typeof entry !== 'string' || entry.trim().length === 0) {
16
+ return null;
17
+ }
18
+ normalized.push(entry);
19
+ }
20
+ return normalized;
21
+ };
22
+ const readBoolean = (value) => typeof value === 'boolean' ? value : undefined;
23
+ const readNumber = (value) => {
24
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
25
+ return undefined;
26
+ }
27
+ return value;
28
+ };
29
+ const tryParseJson = (input) => {
2
30
  try {
3
- const v = JSON.parse(s);
4
- return (v && typeof v === 'object') ? v : {};
31
+ const parsed = JSON.parse(input);
32
+ return isRecord(parsed) ? parsed : {};
5
33
  }
6
34
  catch {
7
35
  return {};
8
36
  }
9
- }
10
- function isImagePath(p) {
37
+ };
38
+ const toJson = (value) => {
11
39
  try {
12
- const s = String(p || '').toLowerCase();
13
- return /\.(png|jpg|jpeg|gif|webp|bmp|svg|tiff?|ico|heic|jxl)$/.test(s);
40
+ return JSON.stringify(value ?? {});
14
41
  }
15
42
  catch {
43
+ return '{}';
44
+ }
45
+ };
46
+ const detectForbiddenWrite = (script) => {
47
+ const normalized = script.toLowerCase();
48
+ if (!normalized) {
16
49
  return false;
17
50
  }
18
- }
51
+ if (/>\s*[^\s<]/.test(normalized)) {
52
+ return true;
53
+ }
54
+ if (/<<</.test(normalized) || /<</.test(normalized)) {
55
+ return true;
56
+ }
57
+ if (/\bsed\b[^\n]*-i\b/.test(normalized)) {
58
+ return true;
59
+ }
60
+ if (/\bed\b[^\n]*-s\b/.test(normalized)) {
61
+ return true;
62
+ }
63
+ if (/\btee\b\s+/.test(normalized)) {
64
+ return true;
65
+ }
66
+ return false;
67
+ };
68
+ const isImagePath = (value) => {
69
+ const pathValue = asString(value);
70
+ if (!pathValue) {
71
+ return false;
72
+ }
73
+ return /\.(png|jpg|jpeg|gif|webp|bmp|svg|tiff?|ico|heic|jxl)$/i.test(pathValue);
74
+ };
19
75
  export function getAllowedToolNames() {
20
76
  return [
21
77
  'shell',
@@ -24,131 +80,133 @@ export function getAllowedToolNames() {
24
80
  'view_image',
25
81
  'list_mcp_resources',
26
82
  'read_mcp_resource',
27
- 'list_mcp_resource_templates',
83
+ 'list_mcp_resource_templates'
28
84
  ];
29
85
  }
30
- function detectForbiddenWrite(script) {
31
- const s = script.toLowerCase();
32
- if (!s)
33
- return false;
34
- // forbid common write patterns via shell
35
- if (/>\s*[^\s<]/.test(s))
36
- return true; // redirection
37
- if (/<<</.test(s) || /<</.test(s))
38
- return true; // heredoc
39
- if (/\bsed\b[^\n]*\-i\b/.test(s))
40
- return true;
41
- if (/\bed\b[^\n]*\-s\b/.test(s))
42
- return true;
43
- if (/\btee\b\s+/.test(s))
44
- return true;
45
- return false;
46
- }
47
86
  export function validateToolCall(name, argsString) {
48
- const nm = String(name || '').trim();
49
- if (!nm)
87
+ const normalizedName = String(name || '').trim();
88
+ if (!normalizedName) {
50
89
  return { ok: false, reason: 'empty_tool_name' };
90
+ }
51
91
  const allowed = new Set(getAllowedToolNames());
52
- if (!allowed.has(nm))
92
+ if (!allowed.has(normalizedName)) {
53
93
  return { ok: false, reason: 'unknown_tool' };
54
- // Parse args once
55
- const rawObj = tryParse(typeof argsString === 'string' ? argsString : '{}');
56
- const toJson = (v) => { try {
57
- return JSON.stringify(v ?? {});
58
94
  }
59
- catch {
60
- return '{}';
61
- } };
62
- switch (nm) {
95
+ const rawArgs = tryParseJson(typeof argsString === 'string' ? argsString : '{}');
96
+ switch (normalizedName) {
63
97
  case 'apply_patch': {
64
- const patch = rawObj?.patch;
65
- if (typeof patch !== 'string' || patch.trim().length === 0) {
98
+ const patch = asString(rawArgs.patch);
99
+ if (!patch) {
66
100
  return { ok: false, reason: 'missing_patch' };
67
101
  }
68
102
  return { ok: true, normalizedArgs: toJson({ patch }) };
69
103
  }
70
104
  case 'shell': {
71
- let cmd = rawObj?.command;
72
- // Accept string command and coerce to argv array
73
- if (typeof cmd === 'string' && cmd.trim().length) {
74
- cmd = [cmd];
105
+ const rawCommand = rawArgs.command;
106
+ let normalizedCommand = null;
107
+ if (typeof rawCommand === 'string') {
108
+ normalizedCommand = [rawCommand];
109
+ }
110
+ else {
111
+ normalizedCommand = asStringArray(rawCommand);
75
112
  }
76
- if (!Array.isArray(cmd) || !cmd.every((x) => typeof x === 'string')) {
113
+ if (!normalizedCommand) {
77
114
  return { ok: false, reason: 'invalid_command' };
78
115
  }
79
- // 统一 bash -lc 处理:
80
- // - 当命令包含管道/与或/分号等元字符时,若未显式使用 bash -lc,则折叠为 ['bash','-lc','<script>']
81
- // - 对写入型重定向/heredoc/sed -i 等仍然严格拒绝(要求使用 apply_patch)
82
- const joinScript = (arr) => arr.join(' ');
83
- const looksBashLc = (arr) => arr.length >= 2 && arr[0] === 'bash' && arr[1] === '-lc';
84
- const hasMeta = (s) => /[|;&]/.test(s) || s.includes('&&') || s.includes('||');
85
- const scriptJoined = joinScript(cmd);
86
- // 拒绝危险写入模式
116
+ const scriptJoined = normalizedCommand.join(' ');
87
117
  if (detectForbiddenWrite(scriptJoined)) {
88
118
  return { ok: false, reason: 'forbidden_write_redirection' };
89
119
  }
90
- let finalCmd = cmd.slice();
91
- if (!looksBashLc(finalCmd) && hasMeta(scriptJoined)) {
92
- finalCmd = ['bash', '-lc', scriptJoined];
93
- }
94
- const out = { command: finalCmd };
95
- if (typeof rawObj?.workdir === 'string')
96
- out.workdir = rawObj.workdir;
97
- if (typeof rawObj?.timeout_ms === 'number')
98
- out.timeout_ms = rawObj.timeout_ms;
99
- if (typeof rawObj?.with_escalated_permissions === 'boolean')
100
- out.with_escalated_permissions = rawObj.with_escalated_permissions;
101
- if (typeof rawObj?.justification === 'string')
102
- out.justification = rawObj.justification;
103
- return { ok: true, normalizedArgs: toJson(out) };
120
+ const looksBashLc = (arr) => arr.length >= 2 && arr[0] === 'bash' && arr[1] === '-lc';
121
+ const hasMetaChars = (script) => /[|;&]/.test(script) || script.includes('&&') || script.includes('||');
122
+ let finalCommand = normalizedCommand.slice();
123
+ if (!looksBashLc(finalCommand) && hasMetaChars(scriptJoined)) {
124
+ finalCommand = ['bash', '-lc', scriptJoined];
125
+ }
126
+ const shellArgs = { command: finalCommand };
127
+ const workdir = asString(rawArgs.workdir);
128
+ if (workdir) {
129
+ shellArgs.workdir = workdir;
130
+ }
131
+ const timeout = readNumber(rawArgs.timeout_ms);
132
+ if (timeout !== undefined) {
133
+ shellArgs.timeout_ms = timeout;
134
+ }
135
+ const escalated = readBoolean(rawArgs.with_escalated_permissions);
136
+ if (typeof escalated === 'boolean') {
137
+ shellArgs.with_escalated_permissions = escalated;
138
+ }
139
+ const justification = asString(rawArgs.justification);
140
+ if (justification) {
141
+ shellArgs.justification = justification;
142
+ }
143
+ return { ok: true, normalizedArgs: toJson(shellArgs) };
104
144
  }
105
145
  case 'update_plan': {
106
- const plan = rawObj?.plan;
107
- if (!Array.isArray(plan))
146
+ if (!Array.isArray(rawArgs.plan)) {
108
147
  return { ok: false, reason: 'missing_plan' };
109
- // warn for >1 in_progress
110
- let inProg = 0;
111
- for (const it of plan) {
112
- if (it && typeof it === 'object' && it.status === 'in_progress')
113
- inProg += 1;
148
+ }
149
+ let inProgressCount = 0;
150
+ for (const entry of rawArgs.plan) {
151
+ if (isRecord(entry) && entry.status === 'in_progress') {
152
+ inProgressCount += 1;
153
+ }
114
154
  }
115
155
  const warnings = [];
116
- if (inProg > 1)
117
- warnings.push({ kind: 'multiple_in_progress', count: inProg });
118
- return { ok: true, warnings: warnings.length ? warnings : undefined, normalizedArgs: toJson({ explanation: rawObj?.explanation, plan }) };
156
+ if (inProgressCount > 1) {
157
+ warnings.push({ kind: 'multiple_in_progress', count: inProgressCount });
158
+ }
159
+ const explanation = asString(rawArgs.explanation);
160
+ return {
161
+ ok: true,
162
+ warnings: warnings.length ? warnings : undefined,
163
+ normalizedArgs: toJson({ explanation, plan: rawArgs.plan })
164
+ };
119
165
  }
120
166
  case 'view_image': {
121
- const path = rawObj?.path;
122
- if (typeof path !== 'string' || !isImagePath(path))
167
+ const pathValue = asString(rawArgs.path);
168
+ if (!pathValue || !isImagePath(pathValue)) {
123
169
  return { ok: false, reason: 'invalid_image_path' };
124
- return { ok: true, normalizedArgs: toJson({ path }) };
170
+ }
171
+ return { ok: true, normalizedArgs: toJson({ path: pathValue }) };
125
172
  }
126
173
  case 'list_mcp_resources': {
127
- // all optional; no heavy validation here
128
- const out = {};
129
- if (typeof rawObj?.server === 'string')
130
- out.server = rawObj.server;
131
- if (typeof rawObj?.filter === 'string')
132
- out.filter = rawObj.filter;
133
- if (typeof rawObj?.root === 'string')
134
- out.root = rawObj.root;
135
- return { ok: true, normalizedArgs: toJson(out) };
174
+ const payload = {};
175
+ const server = asString(rawArgs.server);
176
+ if (server) {
177
+ payload.server = server;
178
+ }
179
+ const filter = asString(rawArgs.filter);
180
+ if (filter) {
181
+ payload.filter = filter;
182
+ }
183
+ const root = asString(rawArgs.root);
184
+ if (root) {
185
+ payload.root = root;
186
+ }
187
+ return { ok: true, normalizedArgs: toJson(payload) };
136
188
  }
137
189
  case 'read_mcp_resource': {
138
- const server = rawObj?.server;
139
- const uri = rawObj?.uri;
140
- if (typeof server !== 'string' || typeof uri !== 'string')
190
+ const server = asString(rawArgs.server);
191
+ const uri = asString(rawArgs.uri);
192
+ if (!server || !uri) {
141
193
  return { ok: false, reason: 'missing_server_or_uri' };
194
+ }
142
195
  return { ok: true, normalizedArgs: toJson({ server, uri }) };
143
196
  }
144
197
  case 'list_mcp_resource_templates': {
145
- const out = {};
146
- if (typeof rawObj?.server === 'string')
147
- out.server = rawObj.server;
148
- if (typeof rawObj?.cursor === 'string')
149
- out.cursor = rawObj.cursor;
150
- return { ok: true, normalizedArgs: toJson(out) };
198
+ const payload = {};
199
+ const server = asString(rawArgs.server);
200
+ if (server) {
201
+ payload.server = server;
202
+ }
203
+ const cursor = asString(rawArgs.cursor);
204
+ if (cursor) {
205
+ payload.cursor = cursor;
206
+ }
207
+ return { ok: true, normalizedArgs: toJson(payload) };
151
208
  }
209
+ default:
210
+ return { ok: false, reason: 'unknown_tool' };
152
211
  }
153
- return { ok: false, reason: 'unknown_tool' };
154
212
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsonstudio/llms",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -8,6 +8,8 @@
8
8
  "scripts": {
9
9
  "build": "tsc -p tsconfig.json",
10
10
  "build:dev": "tsc -p tsconfig.json",
11
+ "lint": "eslint --no-eslintrc -c .eslintrc.json src --ext .ts --no-cache",
12
+ "lint:fix": "eslint --no-eslintrc -c .eslintrc.json src --ext .ts --no-cache --fix",
11
13
  "postbuild": "node scripts/tests/run-matrix-ci.mjs",
12
14
  "verif": "node scripts/tests/run-matrix-ci.mjs",
13
15
  "verif:bridge": "node scripts/tests/run-cross-bridge-ci.mjs",
@@ -18,16 +20,11 @@
18
20
  "capture:chat:lmstudio": "node scripts/tools/capture-chat-golden-lmstudio.mjs",
19
21
  "capture:chat:modelscope": "node scripts/tools/capture-chat-golden-modelscope.mjs",
20
22
  "test:matrix": "npm run build:dev && node scripts/tests/run-matrix-ci.mjs",
21
- "test:phase2": "npm run build && node scripts/tests/run-phase2a.mjs",
22
- "test:phase3-sse": "npm run build && node scripts/tests/sse-node-roundtrip.mjs",
23
- "test:anthropic-sse": "npm run build && node scripts/tests/anthropic-sse-node-roundtrip.mjs",
24
- "test:anthropic-node": "npm run build && node scripts/tests/anthropic-node-roundtrip.mjs",
25
23
  "capture:anthropic:golden": "node scripts/tools/capture-anthropic-golden.mjs --config $HOME/.routecodex/provider/glm-anthropic/config.json --prompt 'Say hi in one sentence'",
26
24
  "test:anthropic-golden": "npm run build && node scripts/tests/anthropic-golden-roundtrip.mjs",
27
25
  "test:looprt:gemini": "npm run build && node scripts/tests/loop-rt-gemini.mjs",
28
26
  "replay:responses:chat-sse": "node scripts/exp3-responses-sse-to-chat-sse.mjs",
29
27
  "replay:responses:loop": "node scripts/exp4-responses-sse-loop.mjs",
30
- "replay:chat:bridge": "node scripts/exp5-chat-direct-bridge.mjs",
31
28
  "test:virtual-router": "npm run build:dev && node scripts/tests/virtual-router-dry-run.mjs",
32
29
  "test:virtual-router-health": "npm run build:dev && node scripts/tests/virtual-router-health.mjs"
33
30
  },
@@ -56,6 +53,9 @@
56
53
  },
57
54
  "devDependencies": {
58
55
  "@types/node": "^20.11.25",
56
+ "@typescript-eslint/eslint-plugin": "^6.7.4",
57
+ "@typescript-eslint/parser": "^6.7.4",
58
+ "eslint": "^8.50.0",
59
59
  "typescript": "^5.4.0"
60
60
  },
61
61
  "files": [
@@ -1,10 +0,0 @@
1
- /**
2
- * LLMSwitch V2 API - 统一对外接口
3
- *
4
- * 提供 V2 版统一对外接口,保持向后兼容,同时支持新功能
5
- */
6
- export { LLMSwitchEngineV2 } from '../core/llmswitch-engine-v2.js';
7
- export { LLMSwitchFactoryV2, createLLMSwitchV2 } from '../core/llmswitch-factory-v2.js';
8
- export type { LLMSwitchV2Config, EndpointType, ProtocolType, ProcessingMode, LLMSwitchHookContext, LLMSwitchHookStage, SSEEvent, SSEProcessingResult, ProtocolConversionData, ToolProcessingData, LLMSwitchProcessingResult, LLMSwitchErrorInfo as LLMSwitchError, LLMSwitchMetrics, LLMSwitchHealthCheck, ILLMSwitchV2 } from './llmswitch-types.js';
9
- export type { ConfigValidationResult } from './llmswitch-config.js';
10
- export { DEFAULT_LLSWITCH_CONFIG, validateLLMSwitchConfig, mergeConfig, createConfigFromEnvironment } from './llmswitch-config.js';
package/dist/api/index.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * LLMSwitch V2 API - 统一对外接口
3
- *
4
- * 提供 V2 版统一对外接口,保持向后兼容,同时支持新功能
5
- */
6
- // 核心实现
7
- export { LLMSwitchEngineV2 } from '../core/llmswitch-engine-v2.js';
8
- export { LLMSwitchFactoryV2, createLLMSwitchV2 } from '../core/llmswitch-factory-v2.js';
9
- // 默认配置和验证
10
- export { DEFAULT_LLSWITCH_CONFIG, validateLLMSwitchConfig, mergeConfig, createConfigFromEnvironment } from './llmswitch-config.js';
11
- // V2 与 V1 解耦:不再从此处导出任何 V1 相关接口
@@ -1,15 +0,0 @@
1
- /**
2
- * LLMSwitch V2 配置类型和默认配置
3
- *
4
- * 定义LLMSwitch V2的配置结构、验证和默认值
5
- */
6
- import type { LLMSwitchV2Config } from './llmswitch-types.js';
7
- export declare const DEFAULT_LLSWITCH_CONFIG: LLMSwitchV2Config;
8
- export interface ConfigValidationResult {
9
- valid: boolean;
10
- errors: string[];
11
- warnings: string[];
12
- }
13
- export declare function validateLLMSwitchConfig(config: Partial<LLMSwitchV2Config>): ConfigValidationResult;
14
- export declare function mergeConfig(base: LLMSwitchV2Config, override: Partial<LLMSwitchV2Config>): LLMSwitchV2Config;
15
- export declare function createConfigFromEnvironment(): Partial<LLMSwitchV2Config>;