@jsonstudio/rcc 0.89.1189 → 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 (337) 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 +314 -71
  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.d.ts +18 -0
  176. package/dist/server/runtime/http-server/hub-shadow-compare.js +256 -0
  177. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -0
  178. package/dist/server/runtime/http-server/index.d.ts +7 -2
  179. package/dist/server/runtime/http-server/index.js +287 -49
  180. package/dist/server/runtime/http-server/index.js.map +1 -1
  181. package/dist/server/runtime/http-server/middleware.js +19 -1
  182. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  183. package/dist/server/runtime/http-server/request-executor.js +10 -19
  184. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  185. package/dist/server/runtime/http-server/routes.js +8 -2
  186. package/dist/server/runtime/http-server/routes.js.map +1 -1
  187. package/dist/server/runtime/http-server/session-dir.d.ts +2 -0
  188. package/dist/server/runtime/http-server/session-dir.js +59 -0
  189. package/dist/server/runtime/http-server/session-dir.js.map +1 -0
  190. package/dist/server/runtime/http-server/types.d.ts +0 -4
  191. package/dist/server/utils/utf8-chunk-buffer.js +6 -3
  192. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
  193. package/dist/server/utils/warmup-storm-tracker.js +1 -1
  194. package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
  195. package/dist/server-factory.d.ts +6 -28
  196. package/dist/server-factory.js +8 -93
  197. package/dist/server-factory.js.map +1 -1
  198. package/dist/token-daemon/index.js +2 -2
  199. package/dist/token-daemon/index.js.map +1 -1
  200. package/dist/token-daemon/provider-registry.js +0 -1
  201. package/dist/token-daemon/provider-registry.js.map +1 -1
  202. package/dist/token-daemon/server-utils.js +8 -9
  203. package/dist/token-daemon/server-utils.js.map +1 -1
  204. package/dist/token-daemon/token-utils.js +1 -1
  205. package/dist/token-daemon/token-utils.js.map +1 -1
  206. package/dist/tools/semantic-replay.js +2 -2
  207. package/dist/tools/semantic-replay.js.map +1 -1
  208. package/dist/tools/stats-request-events.d.ts +1 -1
  209. package/dist/tools/stats-usage.js +6 -3
  210. package/dist/tools/stats-usage.js.map +1 -1
  211. package/dist/utils/errorsamples.d.ts +5 -0
  212. package/dist/utils/errorsamples.js +27 -0
  213. package/dist/utils/errorsamples.js.map +1 -0
  214. package/dist/utils/llms-engine-shadow.d.ts +19 -0
  215. package/dist/utils/llms-engine-shadow.js +209 -0
  216. package/dist/utils/llms-engine-shadow.js.map +1 -0
  217. package/dist/utils/runtime-versions.d.ts +1 -0
  218. package/dist/utils/runtime-versions.js +39 -0
  219. package/dist/utils/runtime-versions.js.map +1 -0
  220. package/docs/ARCHITECTURE.md +402 -0
  221. package/docs/CODEX_AND_CLAUDE_CODE.md +69 -0
  222. package/docs/CONFIG_ARCHITECTURE.md +517 -0
  223. package/docs/ERROR_HANDLING_AUDIT.md +0 -0
  224. package/docs/GCLI2API_PARITY_GAPS.md +98 -0
  225. package/docs/INSTALLATION_AND_QUICKSTART.md +74 -0
  226. package/docs/INSTRUCTION_MARKUP.md +89 -0
  227. package/docs/MODULE_ENHANCEMENT_SYSTEM.md +666 -0
  228. package/docs/PORTS.md +36 -0
  229. package/docs/PROVIDERS_BUILTIN.md +111 -0
  230. package/docs/PROVIDER_TYPES.md +55 -0
  231. package/docs/SERVERTOOL_CLOCK_DESIGN.md +233 -0
  232. package/docs/USAGE_HANDLING_ANALYSIS.md +335 -0
  233. package/docs/USER_CONFIG_PARSER_CHANGES.md +175 -0
  234. package/docs/V3_INBOUND_OUTBOUND_DESIGN.md +86 -0
  235. package/docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md +125 -0
  236. package/docs/anthropic-request-golden-samples.md +50 -0
  237. package/docs/ccr-alignment-enhancetool.md +105 -0
  238. package/docs/chat-glm-500-analysis.md +79 -0
  239. package/docs/chat-request-golden-samples.md +42 -0
  240. package/docs/chat-semantic-expansion-plan.md +82 -0
  241. package/docs/cli-command-inventory.md +76 -0
  242. package/docs/codex-samples-replay.md +50 -0
  243. package/docs/daemon-admin-api-design.md +350 -0
  244. package/docs/daemon-admin-module-structure.md +169 -0
  245. package/docs/daemon-admin-ui.html +3394 -0
  246. package/docs/debug-system-design.md +734 -0
  247. package/docs/debugging/gemini-sse-root-cause.md +52 -0
  248. package/docs/debugging/sse_encoding_failure_analysis.md +53 -0
  249. package/docs/dry-run/README.md +721 -0
  250. package/docs/error-handling-v2.md +92 -0
  251. package/docs/exec-command-guard-policy.example.v1.json +42 -0
  252. package/docs/fixes/gemini-protocol-mapping.md +57 -0
  253. package/docs/fixes/oauth-portal-timing-fix.md +202 -0
  254. package/docs/fixes/web-search-hop3-fix.md +265 -0
  255. package/docs/glm-api-reference.md +390 -0
  256. package/docs/glm-chat-completions.md +1779 -0
  257. package/docs/glm-history-inline-images.md +44 -0
  258. package/docs/golden-ci-library.md +66 -0
  259. package/docs/lmstudio-dry-run-summary.md +203 -0
  260. package/docs/lmstudio-tool-calling.md +214 -0
  261. package/docs/mapping-tables/anthropic-to-openai.json +290 -0
  262. package/docs/mapping-tables/iflow-to-openai.json +215 -0
  263. package/docs/mapping-tables/openai-passthrough.json +190 -0
  264. package/docs/mapping-tables/openai-to-iflow.json +227 -0
  265. package/docs/monitoring/Design.md +61 -0
  266. package/docs/multi-token-auth-guide.md +66 -0
  267. package/docs/oauth-authentication-guide.md +168 -0
  268. package/docs/oauth-iflow-implementation.md +153 -0
  269. package/docs/pipeline-routing-report.md +209 -0
  270. package/docs/plans/manager-daemon/PLAN.md +86 -0
  271. package/docs/plans/provider-config-v2-plan.md +176 -0
  272. package/docs/plans/provider-runtime-manager-plan.md +209 -0
  273. package/docs/plans/transparent-429-failover.md +89 -0
  274. package/docs/plans/unified-hub-framework-v1.md +245 -0
  275. package/docs/provider-config-v2-ui-design.md +181 -0
  276. package/docs/provider-quota-design.md +129 -0
  277. package/docs/providers/gemini-provider.md +62 -0
  278. package/docs/providers/lmstudio-v2-migration-report.md +102 -0
  279. package/docs/providers/provider-composite-design.md +142 -0
  280. package/docs/providers/provider-composite-testing.md +98 -0
  281. package/docs/providers/provider-type-only-migration.md +111 -0
  282. package/docs/rccx-wasm-migration.md +74 -0
  283. package/docs/refactoring/architecture-comparison-diagram.md +140 -0
  284. package/docs/refactoring/compatibility-v2-architecture-design.md +738 -0
  285. package/docs/refactoring/workflow-compatibility-refactoring-design.md +361 -0
  286. package/docs/reports/routing-classification-report.json +24 -0
  287. package/docs/reports/routing-classification-report.md +18 -0
  288. package/docs/reports/thinking-keywords-report.json +19 -0
  289. package/docs/responses/README.md +156 -0
  290. package/docs/responses-generic-provider.md +86 -0
  291. package/docs/responses-passthrough-provider-design.md +202 -0
  292. package/docs/routing-awrr-health-weighted-round-robin.md +179 -0
  293. package/docs/routing-instructions.md +393 -0
  294. package/docs/stop-message-auto.md +225 -0
  295. package/docs/streaming-flow.html +30 -0
  296. package/docs/streaming-flow.md +182 -0
  297. package/docs/token-daemon-preview.html +490 -0
  298. package/docs/token-refresh-daemon-plan.md +269 -0
  299. package/docs/transformation-tables/Gemini-FinishReason/345/256/214/346/225/264/350/275/254/346/215/242/350/241/250.json +233 -0
  300. package/docs/transformation-tables/README.md +225 -0
  301. package/docs/transformation-tables/claude-code-router-anthropic-to-gemini.json +283 -0
  302. package/docs/transformation-tables/claude-code-router-anthropic-to-openai.json +208 -0
  303. package/docs/transformation-tables/claude-code-router-openai-to-anthropic.json +261 -0
  304. package/docs/transformation-tables/claude-code-router-openai-to-gemini.json +208 -0
  305. package/docs/transformation-tables/claude-code-router-openai-to-lmstudio.json +182 -0
  306. package/docs/transformation-tables/claude-code-router-openai-to-ollama.json +250 -0
  307. package/docs/transformation-tables/claude-code-router-openai-to-textgenwebui.json +295 -0
  308. package/docs/transformation-tables/claude-code-router-provider-conversions.json +193 -0
  309. 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
  310. 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
  311. 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
  312. 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
  313. 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
  314. 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
  315. 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
  316. package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +367 -0
  317. package/docs/v2-architecture/OPTIMIZED-DESIGN.md +827 -0
  318. package/docs/v2-architecture/PRERUN-CONNECTION-DESIGN.md +716 -0
  319. package/docs/v2-architecture/README.md +551 -0
  320. package/docs/verification/modelscope-verify.md +59 -0
  321. package/docs/web-search-service-design.md +322 -0
  322. package/package.json +12 -7
  323. package/scripts/camoufox/launch-auth.mjs +193 -58
  324. package/scripts/monitor-diff.mjs +126 -0
  325. package/scripts/pack-mode.mjs +19 -1
  326. package/scripts/pack-rcc.mjs +63 -0
  327. package/scripts/unified-hub-shadow-compare.mjs +33 -13
  328. package/scripts/verify-e2e-toolcall.mjs +115 -26
  329. package/dist/modules/llmswitch/pipeline-registry.d.ts +0 -57
  330. package/dist/modules/llmswitch/pipeline-registry.js +0 -229
  331. package/dist/modules/llmswitch/pipeline-registry.js.map +0 -1
  332. package/dist/server/RouteCodexServer.d.ts +0 -13
  333. package/dist/server/RouteCodexServer.js +0 -25
  334. package/dist/server/RouteCodexServer.js.map +0 -1
  335. package/dist/v2/conversion/hub/snapshot-recorder.d.ts +0 -12
  336. package/dist/v2/conversion/hub/snapshot-recorder.js +0 -22
  337. package/dist/v2/conversion/hub/snapshot-recorder.js.map +0 -1
@@ -1,68 +1,60 @@
1
1
  import path from 'path';
2
2
  import { fileURLToPath } from 'url';
3
- import { importCoreModule } from './core-loader.js';
4
- // 单一桥接模块:这是全项目中唯一允许直接 import llmswitch-core 的地方。
5
- // 其它代码(pipeline/provider/server/virtual-router/snapshot)都只能通过这里暴露的统一接口访问 llmswitch-core。
6
- // 默认引用 @jsonstudio/llms(来自 npm 发布版本)。仓库开发场景可通过 scripts/link-llmswitch.mjs 将该依赖 link 到本地 sharedmodule。
7
- async function importCoreDist(subpath) {
8
- try {
9
- return await importCoreModule(subpath);
10
- }
11
- catch (error) {
12
- const detail = error instanceof Error ? error.message : String(error);
13
- throw new Error(`[llmswitch-bridge] Unable to load core module "${subpath}". 请确认 @jsonstudio/llms 依赖已安装(npm install)。${detail ? ` (${detail})` : ''}`);
14
- }
3
+ import { createRequire } from 'module';
4
+ import { importCoreModule, resolveCoreModulePath } from './core-loader.js';
5
+ import { writeErrorsampleJson } from '../../utils/errorsamples.js';
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(/\/+$/, ''));
15
16
  }
16
- async function invokeCoreBridge(method, payload, opts) {
17
- const mod = await importCoreDist('bridge/routecodex-adapter');
18
- const fn = mod[method];
19
- if (typeof fn !== 'function') {
20
- throw new Error(`[llmswitch-bridge] ${method} not available on core adapter`);
17
+ function matchesPrefix(subpath, prefixes) {
18
+ if (!prefixes.length) {
19
+ return false;
21
20
  }
22
- const baseDir = resolveBaseDir();
23
- const { processMode, providerProtocol, entryEndpoint, providerType } = opts;
24
- return await fn(payload, {
25
- baseDir,
26
- processMode,
27
- providerProtocol,
28
- providerType,
29
- entryEndpoint
30
- });
31
- }
32
- export async function bridgeProcessIncoming(request, opts) {
33
- return await invokeCoreBridge('processInboundRequest', request, opts);
21
+ const normalized = subpath.replace(/^\/*/, '').replace(/\.js$/i, '');
22
+ return prefixes.some((prefix) => normalized === prefix || normalized.startsWith(`${prefix}/`));
34
23
  }
35
- export async function bridgeProcessOutgoing(response, opts) {
36
- return await invokeCoreBridge('processOutboundResponse', 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';
37
27
  }
38
- export async function bridgeProcessInboundResponse(response, opts) {
39
- return await invokeCoreBridge('processInboundResponse', response, opts);
28
+ function getEnginePrefixes() {
29
+ return parsePrefixList(process.env.ROUTECODEX_LLMS_ENGINE_PREFIXES);
40
30
  }
41
- export async function bridgeProcessOutboundRequest(request, opts) {
42
- return await invokeCoreBridge('processOutboundRequest', request, opts);
43
- }
44
- export async function bridgeProcessOutboundResponse(response, opts) {
45
- 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';
46
40
  }
47
- export async function buildResponsesRequestFromChat(chatRequest, ctx) {
48
- const mod = await importCoreDist('conversion/responses/responses-openai-bridge');
49
- const builder = mod.buildResponsesRequestFromChat;
50
- if (typeof builder !== 'function') {
51
- throw new Error('[llmswitch-bridge] buildResponsesRequestFromChat not available');
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})` : ''}`);
52
49
  }
53
- const result = builder(chatRequest, ctx);
54
- return result instanceof Promise ? await result : result;
55
50
  }
56
- /**
57
- * 确保 Responses 请求体包含规范化的 instructions 字段。
58
- * Provider 层通过该桥接函数调用 llmswitch-core ensureResponsesInstructions。
59
- */
60
- export async function ensureResponsesInstructions(body) {
61
- const mod = await importCoreDist('conversion/shared/responses-instructions');
62
- const fn = mod.ensureResponsesInstructions;
63
- if (typeof fn === 'function') {
64
- 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');
65
54
  }
55
+ const modulePath = resolveCoreModulePath(subpath, impl);
56
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
57
+ return require(modulePath);
66
58
  }
67
59
  export async function writeSnapshotViaHooks(channelOrOptions, payload) {
68
60
  let hooksModule = null;
@@ -110,24 +102,65 @@ export async function rebindResponsesConversationRequestId(oldId, newId) {
110
102
  fn(oldId, newId);
111
103
  }
112
104
  }
113
- let cachedConvertProviderResponse = null;
105
+ const cachedConvertProviderResponseByImpl = {
106
+ ts: null,
107
+ engine: null
108
+ };
109
+ const llmsEngineShadowConfig = resolveLlmsEngineShadowConfig();
114
110
  /**
115
111
  * Host/HTTP 侧统一使用的 provider 响应转换入口。
116
112
  * 封装 llmswitch-core 的 convertProviderResponse,避免在 Host 内部直接 import core 模块。
117
113
  */
118
114
  export async function convertProviderResponse(options) {
119
- if (!cachedConvertProviderResponse) {
120
- const mod = await importCoreDist('conversion/hub/response/provider-response');
121
- const fn = mod.convertProviderResponse;
122
- if (typeof fn !== 'function') {
123
- 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
+ };
124
127
  }
125
- cachedConvertProviderResponse = async (opts) => {
126
- const result = fn(opts);
127
- return result instanceof Promise ? await result : result;
128
- };
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');
134
+ }
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;
129
161
  }
130
- return await cachedConvertProviderResponse(options);
162
+ const impl = resolveImplForSubpath(subpath);
163
+ return await (await ensureFn(impl))(options);
131
164
  }
132
165
  let cachedSnapshotRecorderFactory = null;
133
166
  /**
@@ -143,7 +176,114 @@ export async function createSnapshotRecorder(context, endpoint) {
143
176
  }
144
177
  cachedSnapshotRecorderFactory = factory;
145
178
  }
146
- return cachedSnapshotRecorderFactory(context, endpoint);
179
+ const recorder = cachedSnapshotRecorderFactory(context, endpoint);
180
+ const baseRecord = typeof recorder?.record === 'function' ? recorder.record.bind(recorder) : null;
181
+ if (!baseRecord) {
182
+ return recorder;
183
+ }
184
+ return {
185
+ ...recorder,
186
+ record(stage, payload) {
187
+ baseRecord(stage, payload);
188
+ try {
189
+ if (!stage || typeof stage !== 'string')
190
+ return;
191
+ const p = payload;
192
+ if (!p || typeof p !== 'object')
193
+ return;
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(() => { });
250
+ return;
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
+ }
281
+ }
282
+ catch {
283
+ // best-effort only; must never break request path
284
+ }
285
+ }
286
+ };
147
287
  }
148
288
  let cachedResponsesSseConverterFactory = null;
149
289
  /**
@@ -176,6 +316,94 @@ export async function getProviderErrorCenter() {
176
316
  }
177
317
  return cachedProviderErrorCenter;
178
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
+ }
179
407
  /**
180
408
  * 通过 llmswitch-core 的 bootstrapVirtualRouterConfig 预处理 Virtual Router 配置。
181
409
  */
@@ -187,20 +415,35 @@ export async function bootstrapVirtualRouterConfig(input) {
187
415
  }
188
416
  return fn(input);
189
417
  }
190
- let cachedHubPipelineCtor = null;
418
+ const cachedHubPipelineCtorByImpl = {
419
+ ts: null,
420
+ engine: null
421
+ };
191
422
  /**
192
423
  * 获取 HubPipeline 构造函数,供 Host 创建 HubPipeline 实例。
193
424
  */
194
425
  export async function getHubPipelineCtor() {
195
- if (!cachedHubPipelineCtor) {
196
- 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);
197
440
  const Ctor = mod.HubPipeline;
198
441
  if (typeof Ctor !== 'function') {
199
442
  throw new Error('[llmswitch-bridge] HubPipeline constructor not available');
200
443
  }
201
- cachedHubPipelineCtor = Ctor;
444
+ cachedHubPipelineCtorByImpl[impl] = Ctor;
202
445
  }
203
- return cachedHubPipelineCtor;
446
+ return cachedHubPipelineCtorByImpl[impl];
204
447
  }
205
448
  function resolveBaseDir() {
206
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":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/bridge.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -82,7 +82,7 @@ export class PipelineDebugLogger {
82
82
  timestamp: Date.now(),
83
83
  level: 'info',
84
84
  category: 'virtual-router-hit',
85
- message: `${routeName} -> ${providerKey}${model ? '.' + model : ''}`
85
+ message: `${routeName} -> ${providerKey}${model ? `.${model}` : ''}`
86
86
  });
87
87
  }
88
88
  logResponse(requestId, action, data) {