@jsonstudio/rcc 0.89.1205 → 0.89.1348

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 (332) hide show
  1. package/README.md +17 -0
  2. package/configsamples/config.json +426 -0
  3. package/configsamples/config.reference.json +58 -0
  4. package/configsamples/provider/crs/config.v1.json +46 -0
  5. package/configsamples/provider/glm/config.v1.json +81 -0
  6. package/configsamples/provider/glm-anthropic/config.v1.json +45 -0
  7. package/configsamples/provider/iflow/config.v1.json +74 -0
  8. package/configsamples/provider/kimi/config.v1.json +41 -0
  9. package/configsamples/provider/lmstudio/config.v1.json +101 -0
  10. package/configsamples/provider/mimo/config.v1.json +35 -0
  11. package/configsamples/provider/modelscope/config.v1.json +96 -0
  12. package/configsamples/provider/qwen/config.v1.json +38 -0
  13. package/configsamples/provider/tab/config.v1.json +50 -0
  14. package/configsamples/provider/tabglm/config.v1.json +49 -0
  15. package/dist/build-info.js +2 -2
  16. package/dist/cli/commands/code.js +12 -6
  17. package/dist/cli/commands/code.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -1
  19. package/dist/cli/commands/config.js +74 -103
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/examples.js +6 -6
  22. package/dist/cli/commands/examples.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +28 -0
  24. package/dist/cli/commands/init.js +91 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/port.js +10 -2
  27. package/dist/cli/commands/port.js.map +1 -1
  28. package/dist/cli/commands/restart.js +5 -2
  29. package/dist/cli/commands/restart.js.map +1 -1
  30. package/dist/cli/commands/start.js +25 -22
  31. package/dist/cli/commands/start.js.map +1 -1
  32. package/dist/cli/commands/status.js +1 -0
  33. package/dist/cli/commands/status.js.map +1 -1
  34. package/dist/cli/commands/stop.js +1 -0
  35. package/dist/cli/commands/stop.js.map +1 -1
  36. package/dist/cli/config/bundled-docs.d.ts +20 -0
  37. package/dist/cli/config/bundled-docs.js +91 -0
  38. package/dist/cli/config/bundled-docs.js.map +1 -0
  39. package/dist/cli/config/init-config.d.ts +36 -0
  40. package/dist/cli/config/init-config.js +180 -0
  41. package/dist/cli/config/init-config.js.map +1 -0
  42. package/dist/cli/config/init-provider-catalog.d.ts +8 -0
  43. package/dist/cli/config/init-provider-catalog.js +187 -0
  44. package/dist/cli/config/init-provider-catalog.js.map +1 -0
  45. package/dist/cli/register/init-command.d.ts +3 -0
  46. package/dist/cli/register/init-command.js +5 -0
  47. package/dist/cli/register/init-command.js.map +1 -0
  48. package/dist/cli.js +28 -3
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client/gemini-cli/gemini-cli-protocol-client.js +1 -1
  51. package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
  52. package/dist/config/risk-control-config.d.ts +94 -0
  53. package/dist/config/risk-control-config.js +196 -0
  54. package/dist/config/risk-control-config.js.map +1 -0
  55. package/dist/constants/index.d.ts +6 -0
  56. package/dist/constants/index.js +13 -0
  57. package/dist/constants/index.js.map +1 -1
  58. package/dist/docs/daemon-admin-ui.html +2113 -190
  59. package/dist/index.js +0 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/manager/modules/health/index.d.ts +1 -1
  62. package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +70 -0
  63. package/dist/manager/modules/quota/antigravity-quota-manager.js +442 -0
  64. package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -0
  65. package/dist/manager/modules/quota/index.d.ts +3 -127
  66. package/dist/manager/modules/quota/index.js +2 -1093
  67. package/dist/manager/modules/quota/index.js.map +1 -1
  68. package/dist/manager/modules/quota/provider-key-normalization.d.ts +3 -0
  69. package/dist/manager/modules/quota/provider-key-normalization.js +155 -0
  70. package/dist/manager/modules/quota/provider-key-normalization.js.map +1 -0
  71. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.d.ts +9 -0
  72. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js +115 -0
  73. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js.map +1 -0
  74. package/dist/manager/modules/quota/provider-quota-daemon.d.ts +77 -0
  75. package/dist/manager/modules/quota/provider-quota-daemon.events.d.ts +12 -0
  76. package/dist/manager/modules/quota/provider-quota-daemon.events.js +237 -0
  77. package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -0
  78. package/dist/manager/modules/quota/provider-quota-daemon.js +404 -0
  79. package/dist/manager/modules/quota/provider-quota-daemon.js.map +1 -0
  80. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.d.ts +11 -0
  81. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js +189 -0
  82. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js.map +1 -0
  83. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.d.ts +8 -0
  84. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js +96 -0
  85. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js.map +1 -0
  86. package/dist/manager/modules/quota/provider-quota-daemon.view.d.ts +19 -0
  87. package/dist/manager/modules/quota/provider-quota-daemon.view.js +37 -0
  88. package/dist/manager/modules/quota/provider-quota-daemon.view.js.map +1 -0
  89. package/dist/manager/modules/routing/index.d.ts +1 -0
  90. package/dist/manager/modules/routing/index.js +11 -25
  91. package/dist/manager/modules/routing/index.js.map +1 -1
  92. package/dist/manager/quota/provider-quota-center.d.ts +2 -0
  93. package/dist/manager/quota/provider-quota-center.js +80 -82
  94. package/dist/manager/quota/provider-quota-center.js.map +1 -1
  95. package/dist/modules/llmswitch/bridge.d.ts +16 -18
  96. package/dist/modules/llmswitch/bridge.js +293 -94
  97. package/dist/modules/llmswitch/bridge.js.map +1 -1
  98. package/dist/modules/llmswitch/core-loader.d.ts +4 -2
  99. package/dist/modules/llmswitch/core-loader.js +32 -20
  100. package/dist/modules/llmswitch/core-loader.js.map +1 -1
  101. package/dist/modules/pipeline/utils/colored-logger.js +3 -2
  102. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  103. package/dist/modules/pipeline/utils/debug-logger.js +1 -1
  104. package/dist/modules/pipeline/utils/debug-logger.js.map +1 -1
  105. package/dist/providers/auth/iflow-cookie-auth.js +0 -2
  106. package/dist/providers/auth/iflow-cookie-auth.js.map +1 -1
  107. package/dist/providers/auth/oauth-lifecycle.js +2 -23
  108. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  109. package/dist/providers/core/config/camoufox-launcher.js +35 -4
  110. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  111. package/dist/providers/core/runtime/antigravity-quota-client.js +6 -3
  112. package/dist/providers/core/runtime/antigravity-quota-client.js.map +1 -1
  113. package/dist/providers/core/runtime/base-provider.d.ts +2 -2
  114. package/dist/providers/core/runtime/base-provider.js +74 -69
  115. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  116. package/dist/providers/core/runtime/gemini-cli-http-provider.js +6 -4
  117. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  118. package/dist/providers/core/runtime/http-request-executor.js +2 -2
  119. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  120. package/dist/providers/core/runtime/http-transport-provider.d.ts +14 -0
  121. package/dist/providers/core/runtime/http-transport-provider.js +111 -5
  122. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  123. package/dist/providers/core/runtime/provider-error-classifier.js +10 -0
  124. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  125. package/dist/providers/core/runtime/provider-factory.js +7 -5
  126. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  127. package/dist/providers/core/runtime/provider-runtime-metadata.d.ts +6 -0
  128. package/dist/providers/core/runtime/provider-runtime-metadata.js.map +1 -1
  129. package/dist/providers/core/runtime/responses-provider.d.ts +1 -7
  130. package/dist/providers/core/runtime/responses-provider.js +12 -93
  131. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  132. package/dist/providers/core/strategies/oauth-auth-code-flow.js +12 -8
  133. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  134. package/dist/providers/core/utils/http-client.js +16 -3
  135. package/dist/providers/core/utils/http-client.js.map +1 -1
  136. package/dist/providers/core/utils/provider-error-logger.d.ts +1 -1
  137. package/dist/providers/core/utils/provider-error-reporter.d.ts +3 -1
  138. package/dist/providers/core/utils/provider-error-reporter.js +3 -0
  139. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  140. package/dist/providers/core/utils/snapshot-writer.js +1 -4
  141. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  142. package/dist/providers/mock/mock-provider-runtime.js +57 -27
  143. package/dist/providers/mock/mock-provider-runtime.js.map +1 -1
  144. package/dist/scripts/camoufox/launch-auth.mjs +193 -58
  145. package/dist/server/handlers/handler-utils.js +3 -2
  146. package/dist/server/handlers/handler-utils.js.map +1 -1
  147. package/dist/server/runtime/http-server/daemon-admin/auth-handler.d.ts +2 -0
  148. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +103 -0
  149. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -0
  150. package/dist/server/runtime/http-server/daemon-admin/auth-session.d.ts +5 -0
  151. package/dist/server/runtime/http-server/daemon-admin/auth-session.js +77 -0
  152. package/dist/server/runtime/http-server/daemon-admin/auth-session.js.map +1 -0
  153. package/dist/server/runtime/http-server/daemon-admin/auth-store.d.ts +18 -0
  154. package/dist/server/runtime/http-server/daemon-admin/auth-store.js +89 -0
  155. package/dist/server/runtime/http-server/daemon-admin/auth-store.js.map +1 -0
  156. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +1 -2
  157. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  158. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +226 -24
  159. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  160. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +47 -8
  161. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
  162. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js +1 -1
  163. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js.map +1 -1
  164. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +1 -1
  165. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
  166. package/dist/server/runtime/http-server/daemon-admin/status-handler.js +68 -4
  167. package/dist/server/runtime/http-server/daemon-admin/status-handler.js.map +1 -1
  168. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +3 -4
  169. package/dist/server/runtime/http-server/daemon-admin-routes.js +9 -14
  170. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  171. package/dist/server/runtime/http-server/executor-metadata.js +1 -1
  172. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  173. package/dist/server/runtime/http-server/executor-response.js +0 -16
  174. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  175. package/dist/server/runtime/http-server/hub-shadow-compare.js +110 -34
  176. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
  177. package/dist/server/runtime/http-server/index.d.ts +5 -3
  178. package/dist/server/runtime/http-server/index.js +215 -109
  179. package/dist/server/runtime/http-server/index.js.map +1 -1
  180. package/dist/server/runtime/http-server/middleware.js +19 -1
  181. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  182. package/dist/server/runtime/http-server/request-executor.js +10 -19
  183. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  184. package/dist/server/runtime/http-server/routes.js +8 -2
  185. package/dist/server/runtime/http-server/routes.js.map +1 -1
  186. package/dist/server/runtime/http-server/session-dir.d.ts +2 -0
  187. package/dist/server/runtime/http-server/session-dir.js +59 -0
  188. package/dist/server/runtime/http-server/session-dir.js.map +1 -0
  189. package/dist/server/runtime/http-server/types.d.ts +0 -4
  190. package/dist/server/utils/utf8-chunk-buffer.js +6 -3
  191. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
  192. package/dist/server/utils/warmup-storm-tracker.js +1 -1
  193. package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
  194. package/dist/server-factory.d.ts +6 -28
  195. package/dist/server-factory.js +8 -93
  196. package/dist/server-factory.js.map +1 -1
  197. package/dist/token-daemon/index.js +2 -2
  198. package/dist/token-daemon/index.js.map +1 -1
  199. package/dist/token-daemon/provider-registry.js +0 -1
  200. package/dist/token-daemon/provider-registry.js.map +1 -1
  201. package/dist/token-daemon/server-utils.js +8 -9
  202. package/dist/token-daemon/server-utils.js.map +1 -1
  203. package/dist/token-daemon/token-utils.js +1 -1
  204. package/dist/token-daemon/token-utils.js.map +1 -1
  205. package/dist/tools/semantic-replay.js +2 -2
  206. package/dist/tools/semantic-replay.js.map +1 -1
  207. package/dist/tools/stats-request-events.d.ts +1 -1
  208. package/dist/tools/stats-usage.js +6 -3
  209. package/dist/tools/stats-usage.js.map +1 -1
  210. package/dist/utils/llms-engine-shadow.d.ts +19 -0
  211. package/dist/utils/llms-engine-shadow.js +209 -0
  212. package/dist/utils/llms-engine-shadow.js.map +1 -0
  213. package/dist/utils/runtime-versions.js +2 -1
  214. package/dist/utils/runtime-versions.js.map +1 -1
  215. package/docs/ARCHITECTURE.md +402 -0
  216. package/docs/CODEX_AND_CLAUDE_CODE.md +69 -0
  217. package/docs/CONFIG_ARCHITECTURE.md +517 -0
  218. package/docs/ERROR_HANDLING_AUDIT.md +0 -0
  219. package/docs/GCLI2API_PARITY_GAPS.md +98 -0
  220. package/docs/INSTALLATION_AND_QUICKSTART.md +74 -0
  221. package/docs/INSTRUCTION_MARKUP.md +89 -0
  222. package/docs/MODULE_ENHANCEMENT_SYSTEM.md +666 -0
  223. package/docs/PORTS.md +36 -0
  224. package/docs/PROVIDERS_BUILTIN.md +111 -0
  225. package/docs/PROVIDER_TYPES.md +55 -0
  226. package/docs/SERVERTOOL_CLOCK_DESIGN.md +233 -0
  227. package/docs/USAGE_HANDLING_ANALYSIS.md +335 -0
  228. package/docs/USER_CONFIG_PARSER_CHANGES.md +175 -0
  229. package/docs/V3_INBOUND_OUTBOUND_DESIGN.md +86 -0
  230. package/docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md +125 -0
  231. package/docs/anthropic-request-golden-samples.md +50 -0
  232. package/docs/ccr-alignment-enhancetool.md +105 -0
  233. package/docs/chat-glm-500-analysis.md +79 -0
  234. package/docs/chat-request-golden-samples.md +42 -0
  235. package/docs/chat-semantic-expansion-plan.md +82 -0
  236. package/docs/cli-command-inventory.md +76 -0
  237. package/docs/codex-samples-replay.md +50 -0
  238. package/docs/daemon-admin-api-design.md +350 -0
  239. package/docs/daemon-admin-module-structure.md +169 -0
  240. package/docs/daemon-admin-ui.html +3394 -0
  241. package/docs/debug-system-design.md +734 -0
  242. package/docs/debugging/gemini-sse-root-cause.md +52 -0
  243. package/docs/debugging/sse_encoding_failure_analysis.md +53 -0
  244. package/docs/dry-run/README.md +721 -0
  245. package/docs/error-handling-v2.md +92 -0
  246. package/docs/exec-command-guard-policy.example.v1.json +42 -0
  247. package/docs/fixes/gemini-protocol-mapping.md +57 -0
  248. package/docs/fixes/oauth-portal-timing-fix.md +202 -0
  249. package/docs/fixes/web-search-hop3-fix.md +265 -0
  250. package/docs/glm-api-reference.md +390 -0
  251. package/docs/glm-chat-completions.md +1779 -0
  252. package/docs/glm-history-inline-images.md +44 -0
  253. package/docs/golden-ci-library.md +66 -0
  254. package/docs/lmstudio-dry-run-summary.md +203 -0
  255. package/docs/lmstudio-tool-calling.md +214 -0
  256. package/docs/mapping-tables/anthropic-to-openai.json +290 -0
  257. package/docs/mapping-tables/iflow-to-openai.json +215 -0
  258. package/docs/mapping-tables/openai-passthrough.json +190 -0
  259. package/docs/mapping-tables/openai-to-iflow.json +227 -0
  260. package/docs/monitoring/Design.md +61 -0
  261. package/docs/multi-token-auth-guide.md +66 -0
  262. package/docs/oauth-authentication-guide.md +168 -0
  263. package/docs/oauth-iflow-implementation.md +153 -0
  264. package/docs/pipeline-routing-report.md +209 -0
  265. package/docs/plans/manager-daemon/PLAN.md +86 -0
  266. package/docs/plans/provider-config-v2-plan.md +176 -0
  267. package/docs/plans/provider-runtime-manager-plan.md +209 -0
  268. package/docs/plans/transparent-429-failover.md +89 -0
  269. package/docs/plans/unified-hub-framework-v1.md +245 -0
  270. package/docs/provider-config-v2-ui-design.md +181 -0
  271. package/docs/provider-quota-design.md +129 -0
  272. package/docs/providers/gemini-provider.md +62 -0
  273. package/docs/providers/lmstudio-v2-migration-report.md +102 -0
  274. package/docs/providers/provider-composite-design.md +142 -0
  275. package/docs/providers/provider-composite-testing.md +98 -0
  276. package/docs/providers/provider-type-only-migration.md +111 -0
  277. package/docs/rccx-wasm-migration.md +74 -0
  278. package/docs/refactoring/architecture-comparison-diagram.md +140 -0
  279. package/docs/refactoring/compatibility-v2-architecture-design.md +738 -0
  280. package/docs/refactoring/workflow-compatibility-refactoring-design.md +361 -0
  281. package/docs/reports/routing-classification-report.json +24 -0
  282. package/docs/reports/routing-classification-report.md +18 -0
  283. package/docs/reports/thinking-keywords-report.json +19 -0
  284. package/docs/responses/README.md +156 -0
  285. package/docs/responses-generic-provider.md +86 -0
  286. package/docs/responses-passthrough-provider-design.md +202 -0
  287. package/docs/routing-awrr-health-weighted-round-robin.md +179 -0
  288. package/docs/routing-instructions.md +393 -0
  289. package/docs/stop-message-auto.md +225 -0
  290. package/docs/streaming-flow.html +30 -0
  291. package/docs/streaming-flow.md +182 -0
  292. package/docs/token-daemon-preview.html +490 -0
  293. package/docs/token-refresh-daemon-plan.md +269 -0
  294. package/docs/transformation-tables/Gemini-FinishReason/345/256/214/346/225/264/350/275/254/346/215/242/350/241/250.json +233 -0
  295. package/docs/transformation-tables/README.md +225 -0
  296. package/docs/transformation-tables/claude-code-router-anthropic-to-gemini.json +283 -0
  297. package/docs/transformation-tables/claude-code-router-anthropic-to-openai.json +208 -0
  298. package/docs/transformation-tables/claude-code-router-openai-to-anthropic.json +261 -0
  299. package/docs/transformation-tables/claude-code-router-openai-to-gemini.json +208 -0
  300. package/docs/transformation-tables/claude-code-router-openai-to-lmstudio.json +182 -0
  301. package/docs/transformation-tables/claude-code-router-openai-to-ollama.json +250 -0
  302. package/docs/transformation-tables/claude-code-router-openai-to-textgenwebui.json +295 -0
  303. package/docs/transformation-tables/claude-code-router-provider-conversions.json +193 -0
  304. package/docs/transformation-tables//345/256/214/346/225/264/347/232/204/345/267/245/345/205/267/346/211/247/350/241/214/346/265/201/347/250/213/350/275/254/346/215/242/350/241/250.json +299 -0
  305. package/docs/transformation-tables//345/257/271/350/257/235/345/216/206/345/217/262/347/273/264/346/212/244/345/210/206/346/236/220.md +134 -0
  306. package/docs/transformation-tables//345/267/245/345/205/267/350/260/203/347/224/250/346/250/241/345/274/217/345/210/206/346/236/220.md +158 -0
  307. package/docs/transformation-tables//347/212/266/346/200/201/347/256/241/347/220/206/351/234/200/346/261/202/345/210/206/346/236/220.md +175 -0
  308. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250vs/345/212/250/346/200/201/345/210/206/346/236/220.md +189 -0
  309. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250/345/207/206/347/241/256/346/200/247/350/257/204/344/274/260.md +179 -0
  310. package/docs/transformation-tables//351/235/236/346/265/201/345/274/217/345/234/272/346/231/257/345/210/206/346/236/220.md +189 -0
  311. package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +367 -0
  312. package/docs/v2-architecture/OPTIMIZED-DESIGN.md +827 -0
  313. package/docs/v2-architecture/PRERUN-CONNECTION-DESIGN.md +716 -0
  314. package/docs/v2-architecture/README.md +551 -0
  315. package/docs/verification/modelscope-verify.md +59 -0
  316. package/docs/web-search-service-design.md +322 -0
  317. package/package.json +12 -7
  318. package/scripts/camoufox/launch-auth.mjs +193 -58
  319. package/scripts/monitor-diff.mjs +126 -0
  320. package/scripts/pack-mode.mjs +19 -1
  321. package/scripts/pack-rcc.mjs +63 -0
  322. package/scripts/unified-hub-shadow-compare.mjs +33 -13
  323. package/scripts/verify-e2e-toolcall.mjs +115 -26
  324. package/dist/modules/llmswitch/pipeline-registry.d.ts +0 -57
  325. package/dist/modules/llmswitch/pipeline-registry.js +0 -229
  326. package/dist/modules/llmswitch/pipeline-registry.js.map +0 -1
  327. package/dist/server/RouteCodexServer.d.ts +0 -13
  328. package/dist/server/RouteCodexServer.js +0 -25
  329. package/dist/server/RouteCodexServer.js.map +0 -1
  330. package/dist/v2/conversion/hub/snapshot-recorder.d.ts +0 -12
  331. package/dist/v2/conversion/hub/snapshot-recorder.js +0 -22
  332. package/dist/v2/conversion/hub/snapshot-recorder.js.map +0 -1
@@ -1,69 +1,60 @@
1
1
  import path from 'path';
2
2
  import { fileURLToPath } from 'url';
3
- import { importCoreModule } from './core-loader.js';
3
+ import { createRequire } from 'module';
4
+ import { importCoreModule, resolveCoreModulePath } from './core-loader.js';
4
5
  import { writeErrorsampleJson } from '../../utils/errorsamples.js';
5
- // 单一桥接模块:这是全项目中唯一允许直接 import llmswitch-core 的地方。
6
- // 其它代码(pipeline/provider/server/virtual-router/snapshot)都只能通过这里暴露的统一接口访问 llmswitch-core。
7
- // 默认引用 @jsonstudio/llms(来自 npm 发布版本)。仓库开发场景可通过 scripts/link-llmswitch.mjs 将该依赖 link 到本地 sharedmodule。
8
- async function importCoreDist(subpath) {
9
- try {
10
- return await importCoreModule(subpath);
11
- }
12
- catch (error) {
13
- const detail = error instanceof Error ? error.message : String(error);
14
- throw new Error(`[llmswitch-bridge] Unable to load core module "${subpath}". 请确认 @jsonstudio/llms 依赖已安装(npm install)。${detail ? ` (${detail})` : ''}`);
15
- }
6
+ import { isLlmsEngineShadowEnabledForSubpath, recordLlmsEngineShadowDiff, resolveLlmsEngineShadowConfig, shouldRunLlmsEngineShadowForSubpath } from '../../utils/llms-engine-shadow.js';
7
+ import { buildInfo } from '../../build-info.js';
8
+ import { resolveLlmswitchCoreVersion } from '../../utils/runtime-versions.js';
9
+ const require = createRequire(import.meta.url);
10
+ function parsePrefixList(raw) {
11
+ return String(raw || '')
12
+ .split(',')
13
+ .map((s) => s.trim())
14
+ .filter(Boolean)
15
+ .map((s) => s.replace(/^\/*/, '').replace(/\/+$/, ''));
16
16
  }
17
- async function invokeCoreBridge(method, payload, opts) {
18
- const mod = await importCoreDist('bridge/routecodex-adapter');
19
- const fn = mod[method];
20
- if (typeof fn !== 'function') {
21
- throw new Error(`[llmswitch-bridge] ${method} not available on core adapter`);
22
- }
23
- const baseDir = resolveBaseDir();
24
- const { processMode, providerProtocol, entryEndpoint, providerType } = opts;
25
- return await fn(payload, {
26
- baseDir,
27
- processMode,
28
- providerProtocol,
29
- providerType,
30
- entryEndpoint
31
- });
32
- }
33
- export async function bridgeProcessIncoming(request, opts) {
34
- return await invokeCoreBridge('processInboundRequest', request, opts);
35
- }
36
- export async function bridgeProcessOutgoing(response, opts) {
37
- return await invokeCoreBridge('processOutboundResponse', response, opts);
17
+ function matchesPrefix(subpath, prefixes) {
18
+ if (!prefixes.length) {
19
+ return false;
20
+ }
21
+ const normalized = subpath.replace(/^\/*/, '').replace(/\.js$/i, '');
22
+ return prefixes.some((prefix) => normalized === prefix || normalized.startsWith(`${prefix}/`));
38
23
  }
39
- export async function bridgeProcessInboundResponse(response, opts) {
40
- return await invokeCoreBridge('processInboundResponse', response, opts);
24
+ function isEngineEnabled() {
25
+ const raw = String(process.env.ROUTECODEX_LLMS_ENGINE_ENABLE || '').trim().toLowerCase();
26
+ return raw === '1' || raw === 'true' || raw === 'yes';
41
27
  }
42
- export async function bridgeProcessOutboundRequest(request, opts) {
43
- return await invokeCoreBridge('processOutboundRequest', request, opts);
28
+ function getEnginePrefixes() {
29
+ return parsePrefixList(process.env.ROUTECODEX_LLMS_ENGINE_PREFIXES);
44
30
  }
45
- export async function bridgeProcessOutboundResponse(response, opts) {
46
- return await invokeCoreBridge('processOutboundResponse', response, opts);
31
+ function resolveImplForSubpath(subpath) {
32
+ if (!isEngineEnabled()) {
33
+ return 'ts';
34
+ }
35
+ const enginePrefixes = getEnginePrefixes();
36
+ if (matchesPrefix(subpath, enginePrefixes)) {
37
+ return 'engine';
38
+ }
39
+ return 'ts';
47
40
  }
48
- export async function buildResponsesRequestFromChat(chatRequest, ctx) {
49
- const mod = await importCoreDist('conversion/responses/responses-openai-bridge');
50
- const builder = mod.buildResponsesRequestFromChat;
51
- if (typeof builder !== 'function') {
52
- throw new Error('[llmswitch-bridge] buildResponsesRequestFromChat not available');
53
- }
54
- const result = builder(chatRequest, ctx);
55
- return result instanceof Promise ? await result : result;
41
+ async function importCoreDist(subpath, impl = resolveImplForSubpath(subpath)) {
42
+ try {
43
+ return await importCoreModule(subpath, impl);
44
+ }
45
+ catch (error) {
46
+ const detail = error instanceof Error ? error.message : String(error);
47
+ const pkg = impl === 'engine' ? '@jsonstudio/llms-engine' : '@jsonstudio/llms';
48
+ throw new Error(`[llmswitch-bridge] Unable to load core module "${subpath}" (${impl}). 请确认 ${pkg} 依赖已安装(npm install)。${detail ? ` (${detail})` : ''}`);
49
+ }
56
50
  }
57
- /**
58
- * 确保 Responses 请求体包含规范化的 instructions 字段。
59
- * Provider 层通过该桥接函数调用 llmswitch-core ensureResponsesInstructions。
60
- */
61
- export async function ensureResponsesInstructions(body) {
62
- const mod = await importCoreDist('conversion/shared/responses-instructions');
63
- const fn = mod.ensureResponsesInstructions;
64
- if (typeof fn === 'function') {
65
- fn(body);
51
+ function requireCoreDist(subpath, impl = resolveImplForSubpath(subpath)) {
52
+ if (impl === 'engine' && !isEngineEnabled()) {
53
+ throw new Error('[llmswitch-bridge] ROUTECODEX_LLMS_ENGINE_ENABLE must be enabled to load engine core');
66
54
  }
55
+ const modulePath = resolveCoreModulePath(subpath, impl);
56
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
57
+ return require(modulePath);
67
58
  }
68
59
  export async function writeSnapshotViaHooks(channelOrOptions, payload) {
69
60
  let hooksModule = null;
@@ -111,24 +102,65 @@ export async function rebindResponsesConversationRequestId(oldId, newId) {
111
102
  fn(oldId, newId);
112
103
  }
113
104
  }
114
- let cachedConvertProviderResponse = null;
105
+ const cachedConvertProviderResponseByImpl = {
106
+ ts: null,
107
+ engine: null
108
+ };
109
+ const llmsEngineShadowConfig = resolveLlmsEngineShadowConfig();
115
110
  /**
116
111
  * Host/HTTP 侧统一使用的 provider 响应转换入口。
117
112
  * 封装 llmswitch-core 的 convertProviderResponse,避免在 Host 内部直接 import core 模块。
118
113
  */
119
114
  export async function convertProviderResponse(options) {
120
- if (!cachedConvertProviderResponse) {
121
- const mod = await importCoreDist('conversion/hub/response/provider-response');
122
- const fn = mod.convertProviderResponse;
123
- if (typeof fn !== 'function') {
124
- throw new Error('[llmswitch-bridge] convertProviderResponse not available');
115
+ const subpath = 'conversion/hub/response/provider-response';
116
+ const ensureFn = async (impl) => {
117
+ if (!cachedConvertProviderResponseByImpl[impl]) {
118
+ const mod = await importCoreDist(subpath, impl);
119
+ const fn = mod.convertProviderResponse;
120
+ if (typeof fn !== 'function') {
121
+ throw new Error('[llmswitch-bridge] convertProviderResponse not available');
122
+ }
123
+ cachedConvertProviderResponseByImpl[impl] = async (opts) => {
124
+ const result = fn(opts);
125
+ return result instanceof Promise ? await result : result;
126
+ };
125
127
  }
126
- cachedConvertProviderResponse = async (opts) => {
127
- const result = fn(opts);
128
- return result instanceof Promise ? await result : result;
129
- };
128
+ return cachedConvertProviderResponseByImpl[impl];
129
+ };
130
+ const shadowEnabled = isLlmsEngineShadowEnabledForSubpath(llmsEngineShadowConfig, 'conversion/hub/response');
131
+ if (shadowEnabled) {
132
+ // Fail fast: if shadow is enabled for this module, engine core must be available.
133
+ await ensureFn('engine');
130
134
  }
131
- return await cachedConvertProviderResponse(options);
135
+ const wantsShadow = shadowEnabled && shouldRunLlmsEngineShadowForSubpath(llmsEngineShadowConfig, 'conversion/hub/response');
136
+ if (wantsShadow) {
137
+ const baseline = await (await ensureFn('ts'))(options);
138
+ const requestId = typeof options.requestId === 'string'
139
+ ? String(options.requestId)
140
+ : (typeof options.id === 'string' ? String(options.id) : `shadow_${Date.now()}`);
141
+ void (async () => {
142
+ try {
143
+ const candidate = await (await ensureFn('engine'))(options);
144
+ await recordLlmsEngineShadowDiff({
145
+ group: 'provider-response',
146
+ requestId,
147
+ subpath: 'conversion/hub/response',
148
+ baselineImpl: 'ts',
149
+ candidateImpl: 'engine',
150
+ baselineOut: baseline,
151
+ candidateOut: candidate,
152
+ excludedComparePaths: []
153
+ });
154
+ }
155
+ catch (error) {
156
+ // eslint-disable-next-line no-console
157
+ console.error('[llms-engine-shadow] provider response shadow failed:', error);
158
+ }
159
+ })();
160
+ return baseline;
161
+ }
162
+ const impl = resolveImplForSubpath(subpath);
163
+ return await (await ensureFn(impl))(options);
132
164
  }
133
165
  let cachedSnapshotRecorderFactory = null;
134
166
  /**
@@ -156,32 +188,96 @@ export async function createSnapshotRecorder(context, endpoint) {
156
188
  try {
157
189
  if (!stage || typeof stage !== 'string')
158
190
  return;
159
- if (!stage.startsWith('hub_policy.'))
160
- return;
161
191
  const p = payload;
162
192
  if (!p || typeof p !== 'object')
163
193
  return;
164
- const violations = p.violations;
165
- if (!Array.isArray(violations) || violations.length <= 0)
194
+ if (stage.startsWith('hub_policy.')) {
195
+ const violations = p.violations;
196
+ if (!Array.isArray(violations) || violations.length <= 0)
197
+ return;
198
+ void writeErrorsampleJson({
199
+ group: 'policy',
200
+ kind: stage,
201
+ payload: {
202
+ kind: 'hub_policy_violation',
203
+ timestamp: new Date().toISOString(),
204
+ endpoint,
205
+ stage,
206
+ versions: {
207
+ routecodex: buildInfo.version,
208
+ llms: resolveLlmswitchCoreVersion(),
209
+ node: process.version
210
+ },
211
+ ...(context && typeof context === 'object'
212
+ ? {
213
+ requestId: context.requestId,
214
+ providerProtocol: context.providerProtocol,
215
+ runtime: context.runtime
216
+ }
217
+ : {}),
218
+ observation: payload
219
+ }
220
+ }).catch(() => { });
221
+ return;
222
+ }
223
+ if (stage.startsWith('hub_toolsurface.')) {
224
+ const diffCount = typeof p.diffCount === 'number' ? p.diffCount : 0;
225
+ if (!(diffCount > 0))
226
+ return;
227
+ void writeErrorsampleJson({
228
+ group: 'tool-surface',
229
+ kind: stage,
230
+ payload: {
231
+ kind: 'hub_toolsurface_diff',
232
+ timestamp: new Date().toISOString(),
233
+ endpoint,
234
+ stage,
235
+ versions: {
236
+ routecodex: buildInfo.version,
237
+ llms: resolveLlmswitchCoreVersion(),
238
+ node: process.version
239
+ },
240
+ ...(context && typeof context === 'object'
241
+ ? {
242
+ requestId: context.requestId,
243
+ providerProtocol: context.providerProtocol,
244
+ runtime: context.runtime
245
+ }
246
+ : {}),
247
+ observation: payload
248
+ }
249
+ }).catch(() => { });
166
250
  return;
167
- void writeErrorsampleJson({
168
- group: 'policy',
169
- kind: stage,
170
- payload: {
171
- kind: 'hub_policy_violation',
172
- timestamp: new Date().toISOString(),
173
- endpoint,
174
- stage,
175
- ...(context && typeof context === 'object'
176
- ? {
177
- requestId: context.requestId,
178
- providerProtocol: context.providerProtocol,
179
- runtime: context.runtime
180
- }
181
- : {}),
182
- observation: payload
183
- }
184
- }).catch(() => { });
251
+ }
252
+ if (stage.startsWith('hub_followup.')) {
253
+ const diffCount = typeof p.diffCount === 'number' ? p.diffCount : 0;
254
+ if (!(diffCount > 0))
255
+ return;
256
+ void writeErrorsampleJson({
257
+ group: 'followup',
258
+ kind: stage,
259
+ payload: {
260
+ kind: 'hub_followup_diff',
261
+ timestamp: new Date().toISOString(),
262
+ endpoint,
263
+ stage,
264
+ versions: {
265
+ routecodex: buildInfo.version,
266
+ llms: resolveLlmswitchCoreVersion(),
267
+ node: process.version
268
+ },
269
+ ...(context && typeof context === 'object'
270
+ ? {
271
+ requestId: context.requestId,
272
+ providerProtocol: context.providerProtocol,
273
+ runtime: context.runtime
274
+ }
275
+ : {}),
276
+ observation: payload
277
+ }
278
+ }).catch(() => { });
279
+ return;
280
+ }
185
281
  }
186
282
  catch {
187
283
  // best-effort only; must never break request path
@@ -220,6 +316,94 @@ export async function getProviderErrorCenter() {
220
316
  }
221
317
  return cachedProviderErrorCenter;
222
318
  }
319
+ let cachedStickySessionStore = undefined;
320
+ function getStickySessionStoreExports() {
321
+ if (cachedStickySessionStore !== undefined) {
322
+ return cachedStickySessionStore;
323
+ }
324
+ try {
325
+ // NOTE: must be sync because VirtualRouter routingStateStore expects loadSync.
326
+ // Centralized here to keep a single core import surface.
327
+ cachedStickySessionStore = requireCoreDist('router/virtual-router/sticky-session-store');
328
+ }
329
+ catch {
330
+ cachedStickySessionStore = null;
331
+ }
332
+ return cachedStickySessionStore;
333
+ }
334
+ export function loadRoutingInstructionStateSync(key) {
335
+ const mod = getStickySessionStoreExports();
336
+ const fn = mod?.loadRoutingInstructionStateSync;
337
+ if (typeof fn !== 'function') {
338
+ return null;
339
+ }
340
+ return fn(key);
341
+ }
342
+ export function saveRoutingInstructionStateAsync(key, state) {
343
+ const mod = getStickySessionStoreExports();
344
+ const fn = mod?.saveRoutingInstructionStateAsync;
345
+ if (typeof fn !== 'function') {
346
+ return;
347
+ }
348
+ fn(key, state);
349
+ }
350
+ export function saveRoutingInstructionStateSync(key, state) {
351
+ const mod = getStickySessionStoreExports();
352
+ const fn = mod?.saveRoutingInstructionStateSync;
353
+ if (typeof fn !== 'function') {
354
+ return;
355
+ }
356
+ fn(key, state);
357
+ }
358
+ let cachedSessionIdentifiersModule = undefined;
359
+ function getSessionIdentifiersModule() {
360
+ if (cachedSessionIdentifiersModule !== undefined) {
361
+ return cachedSessionIdentifiersModule;
362
+ }
363
+ try {
364
+ cachedSessionIdentifiersModule = requireCoreDist('conversion/hub/pipeline/session-identifiers');
365
+ }
366
+ catch {
367
+ cachedSessionIdentifiersModule = null;
368
+ }
369
+ return cachedSessionIdentifiersModule;
370
+ }
371
+ export function extractSessionIdentifiersFromMetadata(meta) {
372
+ const mod = getSessionIdentifiersModule();
373
+ const fn = mod?.extractSessionIdentifiersFromMetadata;
374
+ if (typeof fn !== 'function') {
375
+ return {};
376
+ }
377
+ try {
378
+ return fn(meta);
379
+ }
380
+ catch {
381
+ return {};
382
+ }
383
+ }
384
+ let cachedStatsCenter = undefined;
385
+ export function getStatsCenterSafe() {
386
+ if (cachedStatsCenter) {
387
+ return cachedStatsCenter;
388
+ }
389
+ if (cachedStatsCenter === null) {
390
+ return { recordProviderUsage: () => { } };
391
+ }
392
+ try {
393
+ const mod = requireCoreDist('telemetry/stats-center');
394
+ const fn = mod?.getStatsCenter;
395
+ const center = typeof fn === 'function' ? fn() : null;
396
+ if (center && typeof center.recordProviderUsage === 'function') {
397
+ cachedStatsCenter = center;
398
+ return center;
399
+ }
400
+ }
401
+ catch {
402
+ // fall through
403
+ }
404
+ cachedStatsCenter = null;
405
+ return { recordProviderUsage: () => { } };
406
+ }
223
407
  /**
224
408
  * 通过 llmswitch-core 的 bootstrapVirtualRouterConfig 预处理 Virtual Router 配置。
225
409
  */
@@ -231,20 +415,35 @@ export async function bootstrapVirtualRouterConfig(input) {
231
415
  }
232
416
  return fn(input);
233
417
  }
234
- let cachedHubPipelineCtor = null;
418
+ const cachedHubPipelineCtorByImpl = {
419
+ ts: null,
420
+ engine: null
421
+ };
235
422
  /**
236
423
  * 获取 HubPipeline 构造函数,供 Host 创建 HubPipeline 实例。
237
424
  */
238
425
  export async function getHubPipelineCtor() {
239
- if (!cachedHubPipelineCtor) {
240
- const mod = await importCoreDist('conversion/hub/pipeline/hub-pipeline');
426
+ const impl = resolveImplForSubpath('conversion/hub/pipeline/hub-pipeline');
427
+ if (!cachedHubPipelineCtorByImpl[impl]) {
428
+ const mod = await importCoreDist('conversion/hub/pipeline/hub-pipeline', impl);
429
+ const Ctor = mod.HubPipeline;
430
+ if (typeof Ctor !== 'function') {
431
+ throw new Error('[llmswitch-bridge] HubPipeline constructor not available');
432
+ }
433
+ cachedHubPipelineCtorByImpl[impl] = Ctor;
434
+ }
435
+ return cachedHubPipelineCtorByImpl[impl];
436
+ }
437
+ export async function getHubPipelineCtorForImpl(impl) {
438
+ if (!cachedHubPipelineCtorByImpl[impl]) {
439
+ const mod = await importCoreDist('conversion/hub/pipeline/hub-pipeline', impl);
241
440
  const Ctor = mod.HubPipeline;
242
441
  if (typeof Ctor !== 'function') {
243
442
  throw new Error('[llmswitch-bridge] HubPipeline constructor not available');
244
443
  }
245
- cachedHubPipelineCtor = Ctor;
444
+ cachedHubPipelineCtorByImpl[impl] = Ctor;
246
445
  }
247
- return cachedHubPipelineCtor;
446
+ return cachedHubPipelineCtorByImpl[impl];
248
447
  }
249
448
  function resolveBaseDir() {
250
449
  const env = String(process.env.ROUTECODEX_BASEDIR || process.env.RCC_BASEDIR || '').trim();
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,iDAAiD;AACjD,yFAAyF;AACzF,sGAAsG;AAEtG,KAAK,UAAU,cAAc,CAAqC,OAAe;IAC/E,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAU,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,8CAA8C,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtI,CAAC;IACJ,CAAC;AACH,CAAC;AAiBD,KAAK,UAAU,gBAAgB,CAC7B,MAAwB,EACxB,OAAkB,EAClB,IAA0B;IAE1B,MAAM,GAAG,GAAG,MAAM,cAAc,CAAyB,2BAA2B,CAAC,CAAC;IACtF,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,gCAAgC,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC5E,OAAO,MAAM,EAAE,CAAC,OAAO,EAAE;QACvB,OAAO;QACP,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAkB,EAAE,IAA0B;IACxF,OAAO,MAAM,gBAAgB,CAAC,uBAAuB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAmB,EAAE,IAA0B;IACzF,OAAO,MAAM,gBAAgB,CAAC,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,QAAmB,EAAE,IAA0B;IAChG,OAAO,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAAkB,EAAE,IAA0B;IAC/F,OAAO,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,QAAmB,EAAE,IAA0B;IACjG,OAAO,MAAM,gBAAgB,CAAC,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,WAAsB,EACtB,GAAe;IAEf,MAAM,GAAG,GAAG,MAAM,cAAc,CAAwB,8CAA8C,CAAC,CAAC;IACxG,MAAM,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC;IAClD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3D,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAAe;IAC/D,MAAM,GAAG,GAAG,MAAM,cAAc,CAA8B,0CAA0C,CAAC,CAAC;IAC1G,MAAM,EAAE,GAAG,GAAG,CAAC,2BAA2B,CAAC;IAC3C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,gBAAoC,EAAE,OAAmB;IACnG,IAAI,WAAW,GAA+B,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,cAAc,CAAsB,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,EAAE,qBAAqB,CAAC;IAClD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,OAA8B,CAAC;IACnC,IAAI,OAAO,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC9F,OAAO,GAAG;YACR,GAAG,OAAO;YACV,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;SAAM,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,GAAG,gBAAgB,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB,EAClB,aAAwB,EACxB,OAAgC;IAEhC,MAAM,GAAG,GAAG,MAAM,cAAc,CAA8B,gDAAgD,CAAC,CAAC;IAChH,MAAM,EAAE,GAAG,GAAG,CAAC,2BAA2B,CAAC;IAC3C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,KAAc,EAAE,KAAc;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,cAAc,CAA8B,gDAAgD,CAAC,CAAC;IAChH,MAAM,EAAE,GAAG,GAAG,CAAC,oCAAoC,CAAC;IACpD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAMD,IAAI,6BAA6B,GAEtB,IAAI,CAAC;AAEhB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAkB;IAC9D,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAmC,2CAA2C,CAAC,CAAC;QAChH,MAAM,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC;QACvC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,6BAA6B,GAAG,KAAK,EAAE,IAAe,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAMD,IAAI,6BAA6B,GAEtB,IAAI,CAAC;AAEhB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAkB,EAClB,QAAgB;IAEhB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAyB,kCAAkC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC;QAC3C,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,6BAA6B,GAAG,OAAO,CAAC;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,EAAE,QAAQ,CAAQ,CAAC;IACzE,MAAM,UAAU,GAAG,OAAO,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,CAAC,KAAa,EAAE,OAAe;YACnC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO;gBAChD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;oBAAE,OAAO;gBAC7C,MAAM,CAAC,GAAG,OAAc,CAAC;gBACzB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO;gBACxC,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;oBAAE,OAAO;gBACjE,KAAK,oBAAoB,CAAC;oBACxB,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE;wBACP,IAAI,EAAE,sBAAsB;wBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,QAAQ;wBACR,KAAK;wBACL,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;4BACxC,CAAC,CAAC;gCACE,SAAS,EAAG,OAAe,CAAC,SAAS;gCACrC,gBAAgB,EAAG,OAAe,CAAC,gBAAgB;gCACnD,OAAO,EAAG,OAAe,CAAC,OAAO;6BAClC;4BACH,CAAC,CAAC,EAAE,CAAC;wBACP,WAAW,EAAE,OAAO;qBACrB;iBACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;KACkB,CAAC;AACxB,CAAC;AAQD,IAAI,kCAAkC,GAE3B,IAAI,CAAC;AAEhB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC;IAGrD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAqB,uBAAuB,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,GAAG,CAAC,2BAA2B,CAAC;QAC7C,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,kCAAkC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,kCAAkC,EAAE,CAAC;AAC9C,CAAC;AASD,IAAI,yBAAyB,GAElB,IAAI,CAAC;AAEhB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,cAAc,CAA6B,oCAAoC,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,yBAAyB,GAAG,MAAM,CAAC;IACrC,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAMD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAAgB;IACjE,MAAM,GAAG,GAAG,MAAM,cAAc,CAA+B,iCAAiC,CAAC,CAAC;IAClG,MAAM,EAAE,GAAG,GAAG,CAAC,4BAA4B,CAAC;IAC5C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAQD,IAAI,qBAAqB,GAA8B,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,cAAc,CAAoB,sCAAsC,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3F,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAiB,MAAM,kBAAkB,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC1B,6BAA6B,EAC7B,mCAAmC,EACpC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAY9E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,SAAS,eAAe,CAAC,GAAuB;IAC9C,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,QAAkB;IACxD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzF,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC;AACxD,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,IAAI,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAe,EACf,OAAiB,qBAAqB,CAAC,OAAO,CAAC;IAE/C,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAU,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,MAAM,IAAI,UAAU,GAAG,uBAAuB,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtI,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,OAAe,EACf,OAAiB,qBAAqB,CAAC,OAAO,CAAC;IAE/C,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,8DAA8D;IAC9D,OAAO,OAAO,CAAC,UAAU,CAAY,CAAC;AACxC,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,gBAAoC,EAAE,OAAmB;IACnG,IAAI,WAAW,GAA+B,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,cAAc,CAAsB,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,EAAE,qBAAqB,CAAC;IAClD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,OAA8B,CAAC;IACnC,IAAI,OAAO,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC9F,OAAO,GAAG;YACR,GAAG,OAAO;YACV,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;SAAM,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,GAAG,gBAAgB,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB,EAClB,aAAwB,EACxB,OAAgC;IAEhC,MAAM,GAAG,GAAG,MAAM,cAAc,CAA8B,gDAAgD,CAAC,CAAC;IAChH,MAAM,EAAE,GAAG,GAAG,CAAC,2BAA2B,CAAC;IAC3C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,KAAc,EAAE,KAAc;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,cAAc,CAA8B,gDAAgD,CAAC,CAAC;IAChH,MAAM,EAAE,GAAG,GAAG,CAAC,oCAAoC,CAAC;IACpD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAMD,MAAM,mCAAmC,GAA0E;IACjH,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,sBAAsB,GAAG,6BAA6B,EAAE,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAkB;IAC9D,MAAM,OAAO,GAAG,2CAA2C,CAAC;IAE5D,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;QACxC,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,MAAM,cAAc,CAAmC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClF,MAAM,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC;YACvC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,CAAC;YACD,mCAAmC,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAe,EAAE,EAAE;gBACpE,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3D,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,mCAAmC,CAAC,IAAI,CAAE,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,mCAAmC,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;IAC7G,IAAI,aAAa,EAAE,CAAC;QAClB,kFAAkF;QAClF,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,WAAW,GAAG,aAAa,IAAI,mCAAmC,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;IAC5H,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GACb,OAAQ,OAAqB,CAAC,SAAS,KAAK,QAAQ;YAClD,CAAC,CAAC,MAAM,CAAE,OAAqB,CAAC,SAAS,CAAC;YAC1C,CAAC,CAAC,CAAC,OAAQ,OAAqB,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAE,OAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnH,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC5D,MAAM,0BAA0B,CAAC;oBAC/B,KAAK,EAAE,mBAAmB;oBAC1B,SAAS;oBACT,OAAO,EAAE,yBAAyB;oBAClC,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,QAAQ;oBACvB,WAAW,EAAE,QAAQ;oBACrB,YAAY,EAAE,SAAS;oBACvB,oBAAoB,EAAE,EAAE;iBACzB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAMD,IAAI,6BAA6B,GAEtB,IAAI,CAAC;AAEhB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAkB,EAClB,QAAgB;IAEhB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAyB,kCAAkC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC;QAC3C,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,6BAA6B,GAAG,OAAO,CAAC;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,EAAE,QAAQ,CAAQ,CAAC;IACzE,MAAM,UAAU,GAAG,OAAO,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,CAAC,KAAa,EAAE,OAAe;YACnC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO;gBAChD,MAAM,CAAC,GAAG,OAAc,CAAC;gBACzB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,OAAO;gBAExC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;wBAAE,OAAO;oBACjE,KAAK,oBAAoB,CAAC;wBACxB,KAAK,EAAE,QAAQ;wBACf,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE;4BACP,IAAI,EAAE,sBAAsB;4BAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,QAAQ;4BACR,KAAK;4BACL,QAAQ,EAAE;gCACR,UAAU,EAAE,SAAS,CAAC,OAAO;gCAC7B,IAAI,EAAE,2BAA2B,EAAE;gCACnC,IAAI,EAAE,OAAO,CAAC,OAAO;6BACtB;4BACD,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gCACxC,CAAC,CAAC;oCACE,SAAS,EAAG,OAAe,CAAC,SAAS;oCACrC,gBAAgB,EAAG,OAAe,CAAC,gBAAgB;oCACnD,OAAO,EAAG,OAAe,CAAC,OAAO;iCAClC;gCACH,CAAC,CAAC,EAAE,CAAC;4BACP,WAAW,EAAE,OAAO;yBACrB;qBACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACzC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;wBAAE,OAAO;oBAC7B,KAAK,oBAAoB,CAAC;wBACxB,KAAK,EAAE,cAAc;wBACrB,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE;4BACP,IAAI,EAAE,sBAAsB;4BAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,QAAQ;4BACR,KAAK;4BACL,QAAQ,EAAE;gCACR,UAAU,EAAE,SAAS,CAAC,OAAO;gCAC7B,IAAI,EAAE,2BAA2B,EAAE;gCACnC,IAAI,EAAE,OAAO,CAAC,OAAO;6BACtB;4BACD,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gCACxC,CAAC,CAAC;oCACE,SAAS,EAAG,OAAe,CAAC,SAAS;oCACrC,gBAAgB,EAAG,OAAe,CAAC,gBAAgB;oCACnD,OAAO,EAAG,OAAe,CAAC,OAAO;iCAClC;gCACH,CAAC,CAAC,EAAE,CAAC;4BACP,WAAW,EAAE,OAAO;yBACrB;qBACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBAED,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;wBAAE,OAAO;oBAC7B,KAAK,oBAAoB,CAAC;wBACxB,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE;4BACP,IAAI,EAAE,mBAAmB;4BACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,QAAQ;4BACR,KAAK;4BACL,QAAQ,EAAE;gCACR,UAAU,EAAE,SAAS,CAAC,OAAO;gCAC7B,IAAI,EAAE,2BAA2B,EAAE;gCACnC,IAAI,EAAE,OAAO,CAAC,OAAO;6BACtB;4BACD,GAAG,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gCACxC,CAAC,CAAC;oCACE,SAAS,EAAG,OAAe,CAAC,SAAS;oCACrC,gBAAgB,EAAG,OAAe,CAAC,gBAAgB;oCACnD,OAAO,EAAG,OAAe,CAAC,OAAO;iCAClC;gCACH,CAAC,CAAC,EAAE,CAAC;4BACP,WAAW,EAAE,OAAO;yBACrB;qBACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;KACkB,CAAC;AACxB,CAAC;AAQD,IAAI,kCAAkC,GAE3B,IAAI,CAAC;AAEhB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC;IAGrD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAqB,uBAAuB,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,GAAG,CAAC,2BAA2B,CAAC;QAC7C,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,kCAAkC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,kCAAkC,EAAE,CAAC;AAC9C,CAAC;AASD,IAAI,yBAAyB,GAElB,IAAI,CAAC;AAEhB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,cAAc,CAA6B,oCAAoC,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,yBAAyB,GAAG,MAAM,CAAC;IACrC,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAQD,IAAI,wBAAwB,GAAiD,SAAS,CAAC;AAEvF,SAAS,4BAA4B;IACnC,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,+EAA+E;QAC/E,yDAAyD;QACzD,wBAAwB,GAAG,eAAe,CAA4B,4CAA4C,CAAC,CAAC;IACtH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB,GAAG,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,GAAW;IACzD,MAAM,GAAG,GAAG,4BAA4B,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,GAAG,EAAE,+BAA+B,CAAC;IAChD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAW,EAAE,KAAqB;IACjF,MAAM,GAAG,GAAG,4BAA4B,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,GAAG,EAAE,gCAAgC,CAAC;IACjD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,GAAW,EAAE,KAAqB;IAChF,MAAM,GAAG,GAAG,4BAA4B,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,GAAG,EAAE,+BAA+B,CAAC;IAChD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjB,CAAC;AAQD,IAAI,8BAA8B,GAAgD,SAAS,CAAC;AAE5F,SAAS,2BAA2B;IAClC,IAAI,8BAA8B,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,IAAI,CAAC;QACH,8BAA8B,GAAG,eAAe,CAA2B,6CAA6C,CAAC,CAAC;IAC5H,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B,GAAG,IAAI,CAAC;IACxC,CAAC;IACD,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,IAAyC;IAEzC,MAAM,GAAG,GAAG,2BAA2B,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,GAAG,EAAE,qCAAqC,CAAC;IACtD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAUD,IAAI,iBAAiB,GAAuC,SAAS,CAAC;AAEtE,MAAM,UAAU,kBAAkB;IAChC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,eAAe,CAAoB,wBAAwB,CAAC,CAAC;QACzE,MAAM,EAAE,GAAG,GAAG,EAAE,cAAc,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;YAC/D,iBAAiB,GAAG,MAAM,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,iBAAiB,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAMD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAAgB;IACjE,MAAM,GAAG,GAAG,MAAM,cAAc,CAA+B,iCAAiC,CAAC,CAAC;IAClG,MAAM,EAAE,GAAG,GAAG,CAAC,4BAA4B,CAAC;IAC5C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAQD,MAAM,2BAA2B,GAAgD;IAC/E,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,qBAAqB,CAAC,sCAAsC,CAAC,CAAC;IAC3E,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAoB,sCAAsC,EAAE,IAAI,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,2BAA2B,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,CAAC;IACD,OAAO,2BAA2B,CAAC,IAAI,CAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAc;IAC5D,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAoB,sCAAsC,EAAE,IAAI,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,2BAA2B,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,CAAC;IACD,OAAO,2BAA2B,CAAC,IAAI,CAAE,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3F,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare function resolveCoreModuleUrl(subpath: string): string;
2
- export declare function importCoreModule<T = unknown>(subpath: string): Promise<T>;
1
+ export type LlmsImpl = 'ts' | 'engine';
2
+ export declare function resolveCoreModulePath(subpath: string, impl?: LlmsImpl): string;
3
+ export declare function resolveCoreModuleUrl(subpath: string, impl?: LlmsImpl): string;
4
+ export declare function importCoreModule<T = unknown>(subpath: string, impl?: LlmsImpl): Promise<T>;
@@ -1,22 +1,31 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { pathToFileURL, fileURLToPath } from 'node:url';
4
- const PACKAGE_CANDIDATES = [
5
- path.join('node_modules', '@jsonstudio', 'llms'),
6
- path.join('node_modules', 'rcc-llmswitch-core')
7
- ];
8
- let corePackageDir = null;
9
- function resolveCorePackageDir() {
10
- if (corePackageDir) {
11
- return corePackageDir;
4
+ const PACKAGE_CANDIDATES_BY_IMPL = {
5
+ ts: [
6
+ path.join('node_modules', '@jsonstudio', 'llms'),
7
+ path.join('node_modules', 'rcc-llmswitch-core')
8
+ ],
9
+ engine: [
10
+ path.join('node_modules', '@jsonstudio', 'llms-engine')
11
+ ]
12
+ };
13
+ const corePackageDirByImpl = {
14
+ ts: null,
15
+ engine: null
16
+ };
17
+ function resolveCorePackageDir(impl) {
18
+ const cached = corePackageDirByImpl[impl];
19
+ if (cached) {
20
+ return cached;
12
21
  }
13
22
  let currentDir = path.dirname(fileURLToPath(import.meta.url));
14
23
  while (true) {
15
- for (const pkgPath of PACKAGE_CANDIDATES) {
24
+ for (const pkgPath of PACKAGE_CANDIDATES_BY_IMPL[impl]) {
16
25
  const candidate = path.join(currentDir, pkgPath);
17
26
  if (fs.existsSync(candidate)) {
18
- corePackageDir = candidate;
19
- return corePackageDir;
27
+ corePackageDirByImpl[impl] = candidate;
28
+ return candidate;
20
29
  }
21
30
  }
22
31
  const parent = path.dirname(currentDir);
@@ -25,24 +34,27 @@ function resolveCorePackageDir() {
25
34
  }
26
35
  currentDir = parent;
27
36
  }
28
- const targets = PACKAGE_CANDIDATES.map((pkg) => path.join('<project>', pkg)).join(' 或 ');
29
- throw new Error(`[llmswitch-core-loader] 无法定位 llmswitch 核心库,请执行 npm install 或 npm run llmswitch:link 以确保 ${targets} 存在。`);
37
+ const targets = PACKAGE_CANDIDATES_BY_IMPL[impl].map((pkg) => path.join('<project>', pkg)).join(' 或 ');
38
+ throw new Error(`[llmswitch-core-loader] 无法定位 llmswitch 核心库(${impl}),请执行 npm install 以确保 ${targets} 存在。`);
30
39
  }
31
- function resolveCoreDistPath(subpath) {
40
+ function resolveCoreDistPath(subpath, impl) {
32
41
  const clean = subpath.replace(/^\/*/, '').replace(/\.js$/i, '');
33
- const distDir = path.join(resolveCorePackageDir(), 'dist');
42
+ const distDir = path.join(resolveCorePackageDir(impl), 'dist');
34
43
  const candidate = path.join(distDir, `${clean}.js`);
35
44
  if (!fs.existsSync(candidate)) {
36
- throw new Error(`[llmswitch-core-loader] 未找到 ${candidate},请确认 @jsonstudio/llms 发布版本包含该模块。`);
45
+ throw new Error(`[llmswitch-core-loader] 未找到 ${candidate},请确认对应核心库包含该模块。`);
37
46
  }
38
47
  return candidate;
39
48
  }
40
- export function resolveCoreModuleUrl(subpath) {
41
- const modulePath = resolveCoreDistPath(subpath);
49
+ export function resolveCoreModulePath(subpath, impl = 'ts') {
50
+ return resolveCoreDistPath(subpath, impl);
51
+ }
52
+ export function resolveCoreModuleUrl(subpath, impl = 'ts') {
53
+ const modulePath = resolveCoreDistPath(subpath, impl);
42
54
  return pathToFileURL(modulePath).href;
43
55
  }
44
- export async function importCoreModule(subpath) {
45
- const moduleUrl = resolveCoreModuleUrl(subpath);
56
+ export async function importCoreModule(subpath, impl = 'ts') {
57
+ const moduleUrl = resolveCoreModuleUrl(subpath, impl);
46
58
  return (await import(moduleUrl));
47
59
  }
48
60
  //# sourceMappingURL=core-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-loader.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/core-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,kBAAkB,GAAG;IACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC;IAChD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC;CAChD,CAAC;AAEF,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC,SAAS,qBAAqB;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,cAAc,GAAG,SAAS,CAAC;gBAC3B,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,MAAM,IAAI,KAAK,CACb,2FAA2F,OAAO,MAAM,CACzG,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,kCAAkC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAc,OAAe;IACjE,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAM,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"core-loader.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/core-loader.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,9 @@ export class ColoredLogger {
24
24
  };
25
25
  }
26
26
  format(data) {
27
- if (!data)
27
+ if (!data) {
28
28
  return '';
29
+ }
29
30
  return JSON.stringify(data, null, this.isDev ? 2 : 0);
30
31
  }
31
32
  logProviderRequest(requestId, action, data) {
@@ -40,7 +41,7 @@ export class ColoredLogger {
40
41
  }
41
42
  logVirtualRouterHit(routeName, providerKey, model) {
42
43
  const colorizer = this.resolveRouteColor(routeName);
43
- const line = `[virtual-router] ${routeName} -> ${providerKey}${model ? '.' + model : ''}`;
44
+ const line = `[virtual-router] ${routeName} -> ${providerKey}${model ? `.${model}` : ''}`;
44
45
  console.log(colorizer(line));
45
46
  }
46
47
  logModule(module, action, data) {
@@ -1 +1 @@
1
- {"version":3,"file":"colored-logger.js","sourceRoot":"","sources":["../../../../src/modules/pipeline/utils/colored-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colored-logger.js","sourceRoot":"","sources":["../../../../src/modules/pipeline/utils/colored-logger.ts"],"names":[],"mappings":"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"}