@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
@@ -0,0 +1,175 @@
1
+ # 重新分析:为什么claude-code-router需要状态管理?
2
+
3
+ ## 核心误解澄清
4
+
5
+ 您说得对!传统情况下,API调用确实是req/response的单次调用。但claude-code-router的特殊性在于:
6
+
7
+ ## 状态管理的真实原因
8
+
9
+ ### 1. **流式响应的内部状态** (主要原因)
10
+
11
+ ```typescript
12
+ // 问题:单个HTTP请求内需要维护跨多个SSE事件的状态
13
+ let currentAgent: undefined | IAgent;
14
+ let currentToolIndex = -1;
15
+ let currentToolName = '';
16
+ let currentToolArgs = '';
17
+ let currentToolId = '';
18
+ ```
19
+
20
+ **为什么需要状态?**
21
+ - **工具调用是分片的**:一个工具调用被分成多个SSE事件
22
+ - `content_block_start` → 工具开始
23
+ - `content_block_delta` → 参数逐步传输
24
+ - `content_block_stop` → 工具结束
25
+ - **需要跨事件组合数据**:参数在多个delta事件中逐步传输
26
+ - **需要识别同一个工具调用**:通过index和ID关联
27
+
28
+ ### 2. **工具调用的生命周期管理**
29
+
30
+ ```typescript
31
+ // 单个请求内的工具调用生命周期
32
+ 事件1: content_block_start (工具开始)
33
+ → 设置 currentToolName, currentToolId
34
+ 事件2-N: content_block_delta (参数传输)
35
+ → 累积 currentToolArgs
36
+ 事件N+1: content_block_stop (工具结束)
37
+ → 执行工具调用
38
+ → 清理状态
39
+ ```
40
+
41
+ ### 3. **图像缓存的请求级状态**
42
+
43
+ ```typescript
44
+ // 图像缓存基于请求ID
45
+ imageCache.storeImage(`${req.id}_Image#${imgId}`, msg.source);
46
+ ```
47
+
48
+ **为什么需要状态?**
49
+ - **图像替换策略**:将图像内容替换为占位符
50
+ - **缓存键管理**:确保同一请求内的图像引用正确
51
+ - **工具调用时的图像检索**:analyzeImage工具需要访问缓存的图像
52
+
53
+ ### 4. **递归调用的上下文传递**
54
+
55
+ ```typescript
56
+ // 工具调用后递归调用同一API
57
+ const response = await fetch(`http://127.0.0.1:${config.PORT}/v1/messages`, {
58
+ method: "POST",
59
+ body: JSON.stringify(req.body), // 修改后的请求体
60
+ })
61
+ ```
62
+
63
+ **为什么需要状态?**
64
+ - **消息历史管理**:需要将工具调用结果添加到消息历史
65
+ - **上下文维护**:确保递归调用时上下文连续性
66
+
67
+ ## 重新评估:静态表 vs 动态处理
68
+
69
+ ### 修正后的分析
70
+
71
+ #### 静态表能解决的(提升到60-70%):
72
+
73
+ 1. **基础协议转换** ✅
74
+ - 模型映射
75
+ - 参数转换
76
+ - 消息结构转换
77
+
78
+ 2. **工具定义转换** ✅
79
+ - 工具schema转换
80
+ - 参数格式转换
81
+
82
+ 3. **错误码映射** ✅
83
+ - 标准错误响应转换
84
+
85
+ #### 静态表不能解决的(降低到30-40%):
86
+
87
+ 1. **流式响应协调** (15%)
88
+ - 跨事件状态管理
89
+ - 工具调用生命周期
90
+
91
+ 2. **图像处理逻辑** (10%)
92
+ - 动态缓存管理
93
+ - 图像ID生成
94
+
95
+ 3. **递归调用处理** (5%)
96
+ - 消息历史更新
97
+ - 上下文维护
98
+
99
+ ## 关键洞察
100
+
101
+ ### 您是对的:单次HTTP请求
102
+
103
+ 从网络层面看,确实是:
104
+ ```
105
+ 客户端 → HTTP请求 → Claude Code Router → LLM Provider
106
+ ← HTTP响应 ←
107
+ ```
108
+
109
+ ### 但是:内部有复杂的状态机
110
+
111
+ 在单个HTTP请求内部,Claude Code Router需要:
112
+ ```
113
+ HTTP请求进入 → 解析流 → 维护状态 → 处理工具调用 → 递归调用 → 生成响应
114
+ ```
115
+
116
+ ## 优化建议
117
+
118
+ ### 1. 分离关注点
119
+ ```typescript
120
+ // 静态部分:可以用查表解决
121
+ class StaticTransformer {
122
+ transformModel(model: string): string
123
+ transformParameters(params: any): any
124
+ transformToolSchema(schema: any): any
125
+ }
126
+
127
+ // 动态部分:需要状态管理
128
+ class StreamProcessor {
129
+ private state: StreamState
130
+ processStreamEvent(event: SSEEvent): ProcessedEvent
131
+ }
132
+ ```
133
+
134
+ ### 2. 状态机标准化
135
+ ```typescript
136
+ interface StreamState {
137
+ currentTool?: {
138
+ id: string;
139
+ name: string;
140
+ args: string;
141
+ index: number;
142
+ };
143
+ imageCache: Map<string, any>;
144
+ messageHistory: any[];
145
+ }
146
+ ```
147
+
148
+ ### 3. 可配置的状态转换规则
149
+ ```json
150
+ {
151
+ "streamProcessing": {
152
+ "toolCallLifecycle": {
153
+ "startEvent": "content_block_start",
154
+ "deltaEvent": "content_block_delta",
155
+ "stopEvent": "content_block_stop",
156
+ "stateFields": {
157
+ "id": "data.content_block.id",
158
+ "name": "data.content_block.name",
159
+ "args": "data.delta.partial_json"
160
+ }
161
+ }
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## 结论
167
+
168
+ 您的观察是准确的:**从网络层面看,确实是单次req/response调用**。
169
+
170
+ 但状态管理的需求来自于:
171
+ 1. **流式响应的内部处理**(主要)
172
+ 2. **工具调用的生命周期管理**(次要)
173
+ 3. **图像缓存和递归调用**(辅助)
174
+
175
+ **修正后的评估**:静态表能解决60-70%的问题,主要是基础协议转换;剩下的30-40%需要动态处理,主要是流式响应协调。
@@ -0,0 +1,189 @@
1
+ # 静态表 vs 动态字段翻译分析报告
2
+
3
+ ## 问题分析
4
+
5
+ 基于对claude-code-router的深入分析,我需要回答:**静态表查表能否解决它动态字段翻译的行为?**
6
+
7
+ ## 答案:部分能,但不能完全解决
8
+
9
+ ### 静态表能解决的问题
10
+
11
+ #### 1. 基础协议转换
12
+ ```json
13
+ // ✅ 静态表可以处理
14
+ {
15
+ "model": {
16
+ "claude-3-5-sonnet-20241022": "gpt-4o",
17
+ "claude-3-5-haiku-20241022": "gpt-4o-mini"
18
+ },
19
+ "max_tokens": {
20
+ "sourcePath": "max_tokens",
21
+ "targetPath": "max_tokens"
22
+ }
23
+ }
24
+ ```
25
+
26
+ #### 2. 固定字段映射
27
+ - 模型名称映射
28
+ - 基础参数转换(temperature, top_p等)
29
+ - 消息角色转换
30
+ - 固定的错误码映射
31
+
32
+ #### 3. 结构化数据转换
33
+ ```json
34
+ // ✅ 静态表可以定义结构转换
35
+ {
36
+ "messageStructure": {
37
+ "anthropic": {"type": "text", "text": "content"},
38
+ "openai": {"role": "user", "content": "content"}
39
+ }
40
+ }
41
+ ```
42
+
43
+ ### 静态表不能解决的问题
44
+
45
+ #### 1. 动态图像处理和缓存
46
+ ```typescript
47
+ // ❌ 静态表无法处理动态行为
48
+ imageCache.storeImage(`${req.id}_Image#${imgId}`, msg.source);
49
+ ```
50
+ - **问题**:图像ID基于请求ID动态生成
51
+ - **原因**:需要运行时状态管理
52
+ - **影响**:无法用静态映射表表示
53
+
54
+ #### 2. 实时流处理状态管理
55
+ ```typescript
56
+ // ❌ 静态表无法处理流状态
57
+ let currentAgent: undefined | IAgent;
58
+ let currentToolIndex = -1;
59
+ let currentToolName = '';
60
+ let currentToolArgs = '';
61
+ ```
62
+ - **问题**:需要维护跨多个流事件的内部状态
63
+ - **原因**:状态转换逻辑是动态的
64
+ - **影响**:工具调用需要跨多个SSE事件协调
65
+
66
+ #### 3. 条件性Agent激活
67
+ ```typescript
68
+ // ❌ 静态表无法处理条件逻辑
69
+ if (agent.shouldHandle(req, config)) {
70
+ agent.reqHandler(req, config);
71
+ }
72
+ ```
73
+ - **问题**:Agent激活条件是动态判断的
74
+ - **原因**:基于请求内容动态决定使用哪个Agent
75
+ - **影响**:无法预定义所有可能的转换路径
76
+
77
+ #### 4. 动态工具调用处理
78
+ ```typescript
79
+ // ❌ 静态表无法处理动态工具响应
80
+ const toolResult = await currentAgent?.tools.get(currentToolName)?.handler(args, {
81
+ req,
82
+ config
83
+ });
84
+ ```
85
+ - **问题**:工具调用是异步的,结果不确定
86
+ - **原因**:需要运行时执行外部函数
87
+ - **影响**:无法用静态映射预测结果
88
+
89
+ #### 5. 递归API调用
90
+ ```typescript
91
+ // ❌ 静态表无法处理递归调用
92
+ const response = await fetch(`http://127.0.0.1:${config.PORT}/v1/messages`, {
93
+ method: "POST",
94
+ body: JSON.stringify(req.body),
95
+ })
96
+ ```
97
+ - **问题**:工具触发后需要递归调用API
98
+ - **原因**:形成了动态的调用链
99
+ - **影响**:静态表无法表示这种循环逻辑
100
+
101
+ ## 混合解决方案建议
102
+
103
+ ### 1. 静态表 + 动态处理器
104
+ ```typescript
105
+ class HybridTransformer {
106
+ private staticMappings: Map<string, any> = new Map();
107
+ private dynamicHandlers: Map<string, Function> = new Map();
108
+
109
+ async transform(request: any): Promise<any> {
110
+ // 1. 应用静态映射
111
+ let result = this.applyStaticMappings(request);
112
+
113
+ // 2. 应用动态处理
114
+ result = await this.applyDynamicHandlers(result);
115
+
116
+ return result;
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### 2. 分层转换策略
122
+ ```
123
+ 请求 → 静态表转换 → 动态处理器 → 响应
124
+ 基础字段 复杂逻辑
125
+ ```
126
+
127
+ ### 3. 可配置的动态规则
128
+ ```json
129
+ {
130
+ "staticMappings": {
131
+ "model": {"claude-3-sonnet": "gpt-4"}
132
+ },
133
+ "dynamicRules": {
134
+ "imageProcessing": {
135
+ "type": "agent",
136
+ "agentName": "image",
137
+ "conditions": [
138
+ {"field": "messages[*].content[*].type", "operator": "equals", "value": "image"}
139
+ ]
140
+ }
141
+ }
142
+ }
143
+ ```
144
+
145
+ ## 具体场景分析
146
+
147
+ ### 场景1:基础对话转换
148
+ - **静态表**:✅ 完全可以解决
149
+ - **复杂度**:低
150
+ - **原因**:字段映射固定
151
+
152
+ ### 场景2:图像处理
153
+ - **静态表**:❌ 无法完全解决
154
+ - **复杂度**:高
155
+ - **原因**:需要动态缓存和状态管理
156
+
157
+ ### 场景3:工具调用
158
+ - **静态表**:⚠️ 部分解决
159
+ - **复杂度**:中高
160
+ - **原因**:基础结构可以静态定义,但执行需要动态处理
161
+
162
+ ### 场景4:流式响应
163
+ - **静态表**:❌ 无法解决
164
+ - **复杂度**:很高
165
+ - **原因**:需要实时状态管理和事件协调
166
+
167
+ ## 结论
168
+
169
+ **静态表查表只能解决约30-40%的claude-code-router动态字段翻译行为**。
170
+
171
+ ### 能解决的(30-40%):
172
+ - 基础协议转换
173
+ - 固定字段映射
174
+ - 模型名称转换
175
+ - 简单参数转换
176
+
177
+ ### 不能解决的(60-70%):
178
+ - 动态状态管理(60%)
179
+ - 实时流处理(25%)
180
+ - 条件性逻辑(10%)
181
+ - 递归调用处理(5%)
182
+
183
+ ### 建议:
184
+ 1. **使用混合架构**:静态表处理基础转换,动态处理器处理复杂逻辑
185
+ 2. **分层设计**:将转换分为静态层和动态层
186
+ 3. **可配置规则**:将部分动态逻辑转换为可配置规则
187
+ 4. **状态管理**:引入专门的状态管理机制处理流式响应
188
+
189
+ 静态表是解决方案的重要组成部分,但不是完整的解决方案。claude-code-router的复杂性要求我们必须采用静态+动态的混合架构。
@@ -0,0 +1,179 @@
1
+ # 静态表准确性重新评估
2
+
3
+ ## 问题:我的静态表还准确吗?
4
+
5
+ **答案:部分准确,但有重大偏差**
6
+
7
+ ## 准确的部分
8
+
9
+ ### 1. **基础协议转换** ✅ 准确
10
+ ```json
11
+ {
12
+ "model": {
13
+ "claude-3-5-sonnet-20241022": "gpt-4o",
14
+ "claude-3-5-haiku-20241022": "gpt-4o-mini"
15
+ },
16
+ "max_tokens": {
17
+ "sourcePath": "max_tokens",
18
+ "targetPath": "max_tokens"
19
+ }
20
+ }
21
+ ```
22
+ 这些基础字段映射是准确的。
23
+
24
+ ### 2. **消息结构转换** ✅ 准确
25
+ ```json
26
+ {
27
+ "messages": {
28
+ "anthropic": {"type": "text", "text": "content"},
29
+ "openai": {"role": "user", "content": "content"}
30
+ }
31
+ }
32
+ ```
33
+ 消息格式转换是准确的。
34
+
35
+ ## 不准确的部分
36
+
37
+ ### 1. **流式处理映射** ❌ 不准确
38
+ ```json
39
+ {
40
+ "streamMappings": {
41
+ "contentBlockStart": {
42
+ "sourceEvent": "content_block_start",
43
+ "targetEvent": "tool_calls_start"
44
+ }
45
+ }
46
+ }
47
+ ```
48
+ **问题**:这是基于流式处理的假设,但实际上Claude Code Router的流处理是为了内部工具执行,不是协议转换。
49
+
50
+ ### 2. **工具调用转换** ❌ 不准确
51
+ ```json
52
+ {
53
+ "toolMappings": {
54
+ "toolDefinition": {
55
+ "sourceFormat": {
56
+ "name": "string",
57
+ "input_schema": "object"
58
+ },
59
+ "targetFormat": {
60
+ "function": {
61
+ "name": "string",
62
+ "parameters": "object"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ```
69
+ **问题**:Claude Code Router内部执行工具,不需要将工具定义转换给客户端。
70
+
71
+ ### 3. **误解了架构目标** ❌ 重大偏差
72
+ 我之前假设Claude Code Router是一个通用的协议转换器,但实际上它是:
73
+ - **工具执行代理**,不是协议转换器
74
+ - **内部工具调用**,不是客户端工具调用
75
+ - **透明工具执行**,不是工具定义转换
76
+
77
+ ## 重新定义的静态表
78
+
79
+ ### 真正需要的映射表
80
+ ```json
81
+ {
82
+ "description": "Claude Code Router内部工具执行映射",
83
+ "requestProcessing": {
84
+ "imageDetection": {
85
+ "condition": "messages[*].content[*].type === 'image'",
86
+ "action": "routeToImageAgent"
87
+ },
88
+ "toolDetection": {
89
+ "condition": "requiresToolExecution",
90
+ "action": "executeInternalTool"
91
+ }
92
+ },
93
+ "toolExecution": {
94
+ "analyzeImage": {
95
+ "inputMapping": {
96
+ "imageId": "cachedImageIds",
97
+ "task": "textDescription"
98
+ },
99
+ "outputMapping": {
100
+ "result": "toolResultContent"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ ## 修正后的评估
108
+
109
+ ### 静态表能解决的(60-70%):
110
+
111
+ 1. **基础请求转换** ✅
112
+ - 模型映射
113
+ - 参数转换
114
+ - 消息结构转换
115
+
116
+ 2. **工具检测规则** ✅
117
+ - 图像内容检测
118
+ - 工具调用条件
119
+
120
+ 3. **响应格式转换** ✅
121
+ - 基础响应结构
122
+ - 错误格式
123
+
124
+ ### 需要动态处理的(30-40%):
125
+
126
+ 1. **工具执行逻辑**(20%)
127
+ - 图像缓存管理
128
+ - 工具调用执行
129
+ - 结果处理
130
+
131
+ 2. **请求路由**(10%)
132
+ - 动态模型选择
133
+ - Agent激活条件
134
+
135
+ ## 更准确的静态表示
136
+
137
+ ```json
138
+ {
139
+ "requestTransformation": {
140
+ "preprocessing": {
141
+ "imageHandling": {
142
+ "detect": "content.type === 'image'",
143
+ "action": "cacheAndReplaceWithPlaceholder"
144
+ },
145
+ "toolDetection": {
146
+ "detect": "requiresToolCall",
147
+ "action": "injectToolSystemPrompt"
148
+ }
149
+ },
150
+ "routing": {
151
+ "imageModel": "config.Router.image",
152
+ "defaultModel": "config.Router.default"
153
+ }
154
+ },
155
+ "responseTransformation": {
156
+ "postprocessing": {
157
+ "toolResultInsertion": {
158
+ "condition": "hasToolResults",
159
+ "action": "insertIntoMessageHistory"
160
+ }
161
+ }
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## 结论
167
+
168
+ **静态表仍然有用,但需要重新定义**:
169
+
170
+ 1. **准确的部分**:基础协议转换、参数映射
171
+ 2. **不准确的部分**:流式处理、工具调用转换
172
+ 3. **需要补充的部分**:工具执行规则、请求路由逻辑
173
+
174
+ 静态表应该专注于:
175
+ - **预处理规则**(如图像检测、缓存)
176
+ - **路由规则**(如模型选择)
177
+ - **后处理规则**(如结果插入)
178
+
179
+ 而不是我之前假设的通用协议转换。