@jsonstudio/rcc 0.89.1205 → 0.89.1457
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.
- package/README.md +53 -1412
- package/configsamples/config.json +426 -0
- package/configsamples/config.reference.json +58 -0
- package/configsamples/provider/crs/config.v1.json +46 -0
- package/configsamples/provider/glm/config.v1.json +81 -0
- package/configsamples/provider/glm-anthropic/config.v1.json +45 -0
- package/configsamples/provider/iflow/config.v1.json +74 -0
- package/configsamples/provider/kimi/config.v1.json +41 -0
- package/configsamples/provider/lmstudio/config.v1.json +101 -0
- package/configsamples/provider/mimo/config.v1.json +35 -0
- package/configsamples/provider/modelscope/config.v1.json +96 -0
- package/configsamples/provider/qwen/config.v1.json +38 -0
- package/configsamples/provider/tab/config.v1.json +50 -0
- package/configsamples/provider/tabglm/config.v1.json +49 -0
- package/dist/build-info.js +2 -2
- package/dist/cli/commands/code.js +12 -6
- package/dist/cli/commands/code.js.map +1 -1
- package/dist/cli/commands/config.d.ts +2 -1
- package/dist/cli/commands/config.js +77 -103
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/examples.js +6 -6
- package/dist/cli/commands/examples.js.map +1 -1
- package/dist/cli/commands/init.d.ts +28 -0
- package/dist/cli/commands/init.js +94 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/port.js +10 -2
- package/dist/cli/commands/port.js.map +1 -1
- package/dist/cli/commands/restart.js +5 -2
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/start.js +25 -22
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +1 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.js +1 -0
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/config/bundled-docs.d.ts +20 -0
- package/dist/cli/config/bundled-docs.js +91 -0
- package/dist/cli/config/bundled-docs.js.map +1 -0
- package/dist/cli/config/init-config.d.ts +37 -0
- package/dist/cli/config/init-config.js +212 -0
- package/dist/cli/config/init-config.js.map +1 -0
- package/dist/cli/config/init-provider-catalog.d.ts +8 -0
- package/dist/cli/config/init-provider-catalog.js +187 -0
- package/dist/cli/config/init-provider-catalog.js.map +1 -0
- package/dist/cli/register/init-command.d.ts +3 -0
- package/dist/cli/register/init-command.js +5 -0
- package/dist/cli/register/init-command.js.map +1 -0
- package/dist/cli.js +28 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/gemini/gemini-protocol-client.js +2 -1
- package/dist/client/gemini/gemini-protocol-client.js.map +1 -1
- package/dist/client/gemini-cli/gemini-cli-protocol-client.js +40 -16
- package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
- package/dist/client/openai/chat-protocol-client.js +2 -1
- package/dist/client/openai/chat-protocol-client.js.map +1 -1
- package/dist/client/responses/responses-protocol-client.js +2 -1
- package/dist/client/responses/responses-protocol-client.js.map +1 -1
- package/dist/config/risk-control-config.d.ts +94 -0
- package/dist/config/risk-control-config.js +196 -0
- package/dist/config/risk-control-config.js.map +1 -0
- package/dist/constants/index.d.ts +6 -0
- package/dist/constants/index.js +13 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/docs/daemon-admin-ui.html +2113 -190
- package/dist/error-handling/quiet-error-handling-center.js +46 -8
- package/dist/error-handling/quiet-error-handling-center.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/manager/modules/health/index.d.ts +1 -1
- package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +70 -0
- package/dist/manager/modules/quota/antigravity-quota-manager.js +442 -0
- package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -0
- package/dist/manager/modules/quota/index.d.ts +3 -127
- package/dist/manager/modules/quota/index.js +2 -1093
- package/dist/manager/modules/quota/index.js.map +1 -1
- package/dist/manager/modules/quota/provider-key-normalization.d.ts +3 -0
- package/dist/manager/modules/quota/provider-key-normalization.js +155 -0
- package/dist/manager/modules/quota/provider-key-normalization.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.cooldown.d.ts +9 -0
- package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js +115 -0
- package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.d.ts +77 -0
- package/dist/manager/modules/quota/provider-quota-daemon.events.d.ts +12 -0
- package/dist/manager/modules/quota/provider-quota-daemon.events.js +239 -0
- package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.js +404 -0
- package/dist/manager/modules/quota/provider-quota-daemon.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.d.ts +11 -0
- package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js +192 -0
- package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.snapshot.d.ts +8 -0
- package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js +96 -0
- package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js.map +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.view.d.ts +19 -0
- package/dist/manager/modules/quota/provider-quota-daemon.view.js +37 -0
- package/dist/manager/modules/quota/provider-quota-daemon.view.js.map +1 -0
- package/dist/manager/modules/routing/index.d.ts +1 -0
- package/dist/manager/modules/routing/index.js +11 -25
- package/dist/manager/modules/routing/index.js.map +1 -1
- package/dist/manager/quota/provider-quota-center.d.ts +2 -0
- package/dist/manager/quota/provider-quota-center.js +80 -82
- package/dist/manager/quota/provider-quota-center.js.map +1 -1
- package/dist/modules/llmswitch/bridge.d.ts +16 -18
- package/dist/modules/llmswitch/bridge.js +293 -94
- package/dist/modules/llmswitch/bridge.js.map +1 -1
- package/dist/modules/llmswitch/core-loader.d.ts +4 -2
- package/dist/modules/llmswitch/core-loader.js +32 -20
- package/dist/modules/llmswitch/core-loader.js.map +1 -1
- package/dist/modules/pipeline/utils/colored-logger.js +3 -2
- package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
- package/dist/modules/pipeline/utils/debug-logger.js +1 -1
- package/dist/modules/pipeline/utils/debug-logger.js.map +1 -1
- package/dist/providers/auth/antigravity-userinfo-helper.d.ts +2 -1
- package/dist/providers/auth/antigravity-userinfo-helper.js +25 -4
- package/dist/providers/auth/antigravity-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/iflow-cookie-auth.js +0 -2
- package/dist/providers/auth/iflow-cookie-auth.js.map +1 -1
- package/dist/providers/auth/oauth-lifecycle.js +2 -23
- package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
- package/dist/providers/auth/tokenfile-auth.d.ts +2 -0
- package/dist/providers/auth/tokenfile-auth.js +33 -1
- package/dist/providers/auth/tokenfile-auth.js.map +1 -1
- package/dist/providers/core/config/camoufox-launcher.d.ts +5 -0
- package/dist/providers/core/config/camoufox-launcher.js +40 -4
- package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
- package/dist/providers/core/config/service-profiles.js +7 -18
- package/dist/providers/core/config/service-profiles.js.map +1 -1
- package/dist/providers/core/runtime/antigravity-quota-client.js +6 -3
- package/dist/providers/core/runtime/antigravity-quota-client.js.map +1 -1
- package/dist/providers/core/runtime/base-provider.d.ts +2 -7
- package/dist/providers/core/runtime/base-provider.js +84 -165
- package/dist/providers/core/runtime/base-provider.js.map +1 -1
- package/dist/providers/core/runtime/gemini-cli-http-provider.d.ts +7 -0
- package/dist/providers/core/runtime/gemini-cli-http-provider.js +368 -97
- package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
- package/dist/providers/core/runtime/http-request-executor.d.ts +3 -0
- package/dist/providers/core/runtime/http-request-executor.js +110 -38
- package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
- package/dist/providers/core/runtime/http-transport-provider.d.ts +17 -0
- package/dist/providers/core/runtime/http-transport-provider.js +165 -16
- package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
- package/dist/providers/core/runtime/provider-error-classifier.js +10 -0
- package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
- package/dist/providers/core/runtime/provider-factory.js +7 -5
- package/dist/providers/core/runtime/provider-factory.js.map +1 -1
- package/dist/providers/core/runtime/provider-runtime-metadata.d.ts +6 -0
- package/dist/providers/core/runtime/provider-runtime-metadata.js.map +1 -1
- package/dist/providers/core/runtime/rate-limit-manager.d.ts +1 -12
- package/dist/providers/core/runtime/rate-limit-manager.js +4 -77
- package/dist/providers/core/runtime/rate-limit-manager.js.map +1 -1
- package/dist/providers/core/runtime/responses-provider.d.ts +1 -7
- package/dist/providers/core/runtime/responses-provider.js +12 -93
- package/dist/providers/core/runtime/responses-provider.js.map +1 -1
- package/dist/providers/core/strategies/oauth-auth-code-flow.js +12 -8
- package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
- package/dist/providers/core/utils/http-client.js +36 -46
- package/dist/providers/core/utils/http-client.js.map +1 -1
- package/dist/providers/core/utils/provider-error-logger.d.ts +1 -1
- package/dist/providers/core/utils/provider-error-reporter.d.ts +3 -1
- package/dist/providers/core/utils/provider-error-reporter.js +3 -0
- package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
- package/dist/providers/core/utils/snapshot-writer.js +1 -4
- package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
- package/dist/providers/mock/mock-provider-runtime.js +57 -27
- package/dist/providers/mock/mock-provider-runtime.js.map +1 -1
- package/dist/scripts/camoufox/launch-auth.mjs +193 -58
- package/dist/server/handlers/handler-utils.js +8 -3
- package/dist/server/handlers/handler-utils.js.map +1 -1
- package/dist/server/handlers/responses-handler.js +1 -1
- package/dist/server/handlers/responses-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/auth-handler.d.ts +2 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +103 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-session.d.ts +5 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-session.js +77 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-session.js.map +1 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-store.d.ts +18 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-store.js +89 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-store.js.map +1 -0
- package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +1 -2
- package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +226 -24
- package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +47 -8
- package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/restart-handler.js +1 -1
- package/dist/server/runtime/http-server/daemon-admin/restart-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +1 -1
- package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/status-handler.js +68 -4
- package/dist/server/runtime/http-server/daemon-admin/status-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +3 -4
- package/dist/server/runtime/http-server/daemon-admin-routes.js +9 -14
- package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
- package/dist/server/runtime/http-server/executor-metadata.js +1 -1
- package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
- package/dist/server/runtime/http-server/executor-response.js +0 -16
- package/dist/server/runtime/http-server/executor-response.js.map +1 -1
- package/dist/server/runtime/http-server/hub-shadow-compare.js +110 -34
- package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
- package/dist/server/runtime/http-server/index.d.ts +5 -3
- package/dist/server/runtime/http-server/index.js +281 -136
- package/dist/server/runtime/http-server/index.js.map +1 -1
- package/dist/server/runtime/http-server/middleware.js +19 -1
- package/dist/server/runtime/http-server/middleware.js.map +1 -1
- package/dist/server/runtime/http-server/request-executor.js +59 -24
- package/dist/server/runtime/http-server/request-executor.js.map +1 -1
- package/dist/server/runtime/http-server/routes.js +12 -3
- package/dist/server/runtime/http-server/routes.js.map +1 -1
- package/dist/server/runtime/http-server/session-dir.d.ts +2 -0
- package/dist/server/runtime/http-server/session-dir.js +59 -0
- package/dist/server/runtime/http-server/session-dir.js.map +1 -0
- package/dist/server/runtime/http-server/types.d.ts +0 -4
- package/dist/server/utils/utf8-chunk-buffer.js +6 -3
- package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
- package/dist/server/utils/warmup-storm-tracker.js +1 -1
- package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
- package/dist/server-factory.d.ts +6 -28
- package/dist/server-factory.js +8 -93
- package/dist/server-factory.js.map +1 -1
- package/dist/token-daemon/index.js +2 -2
- package/dist/token-daemon/index.js.map +1 -1
- package/dist/token-daemon/provider-registry.js +0 -1
- package/dist/token-daemon/provider-registry.js.map +1 -1
- package/dist/token-daemon/server-utils.js +8 -9
- package/dist/token-daemon/server-utils.js.map +1 -1
- package/dist/token-daemon/token-utils.js +1 -1
- package/dist/token-daemon/token-utils.js.map +1 -1
- package/dist/tools/semantic-replay.js +2 -2
- package/dist/tools/semantic-replay.js.map +1 -1
- package/dist/tools/stats-request-events.d.ts +1 -1
- package/dist/tools/stats-usage.js +6 -3
- package/dist/tools/stats-usage.js.map +1 -1
- package/dist/utils/llms-engine-shadow.d.ts +19 -0
- package/dist/utils/llms-engine-shadow.js +209 -0
- package/dist/utils/llms-engine-shadow.js.map +1 -0
- package/dist/utils/runtime-versions.js +2 -1
- package/dist/utils/runtime-versions.js.map +1 -1
- package/dist/utils/strip-internal-keys.d.ts +12 -0
- package/dist/utils/strip-internal-keys.js +28 -0
- package/dist/utils/strip-internal-keys.js.map +1 -0
- package/docs/ARCHITECTURE.md +402 -0
- package/docs/CHAT_PROCESS_PROTOCOL_AND_PIPELINE.md +221 -0
- package/docs/CODEX_AND_CLAUDE_CODE.md +69 -0
- package/docs/CONFIG_ARCHITECTURE.md +517 -0
- package/docs/ERROR_HANDLING_AUDIT.md +0 -0
- package/docs/GCLI2API_PARITY_GAPS.md +98 -0
- package/docs/INSTALLATION_AND_QUICKSTART.md +74 -0
- package/docs/INSTRUCTION_MARKUP.md +89 -0
- package/docs/MODULE_ENHANCEMENT_SYSTEM.md +666 -0
- package/docs/PORTS.md +36 -0
- package/docs/PROVIDERS_BUILTIN.md +111 -0
- package/docs/PROVIDER_TYPES.md +55 -0
- package/docs/SERVERTOOL_CLOCK_DESIGN.md +233 -0
- package/docs/USAGE_HANDLING_ANALYSIS.md +335 -0
- package/docs/USER_CONFIG_PARSER_CHANGES.md +175 -0
- package/docs/V3_INBOUND_OUTBOUND_DESIGN.md +86 -0
- package/docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md +125 -0
- package/docs/anthropic-request-golden-samples.md +50 -0
- package/docs/antigravity-gemini-format-cleanup.md +102 -0
- package/docs/antigravity-routing-contract.md +31 -0
- package/docs/ccr-alignment-enhancetool.md +105 -0
- package/docs/chat-glm-500-analysis.md +79 -0
- package/docs/chat-request-golden-samples.md +42 -0
- package/docs/chat-semantic-expansion-plan.md +84 -0
- package/docs/cli-command-inventory.md +76 -0
- package/docs/codex-samples-replay.md +50 -0
- package/docs/daemon-admin-api-design.md +350 -0
- package/docs/daemon-admin-module-structure.md +169 -0
- package/docs/daemon-admin-ui.html +3394 -0
- package/docs/debug-system-design.md +734 -0
- package/docs/debugging/gemini-sse-root-cause.md +52 -0
- package/docs/debugging/sse_encoding_failure_analysis.md +53 -0
- package/docs/dry-run/README.md +721 -0
- package/docs/error-handling-v2.md +92 -0
- package/docs/exec-command-guard-policy.example.v1.json +42 -0
- package/docs/fixes/gemini-protocol-mapping.md +57 -0
- package/docs/fixes/oauth-portal-timing-fix.md +202 -0
- package/docs/fixes/web-search-hop3-fix.md +265 -0
- package/docs/glm-api-reference.md +390 -0
- package/docs/glm-chat-completions.md +1779 -0
- package/docs/glm-history-inline-images.md +44 -0
- package/docs/golden-ci-library.md +66 -0
- package/docs/lmstudio-dry-run-summary.md +203 -0
- package/docs/lmstudio-tool-calling.md +214 -0
- package/docs/mapping-tables/anthropic-to-openai.json +290 -0
- package/docs/mapping-tables/iflow-to-openai.json +215 -0
- package/docs/mapping-tables/openai-passthrough.json +190 -0
- package/docs/mapping-tables/openai-to-iflow.json +227 -0
- package/docs/monitoring/Design.md +61 -0
- package/docs/multi-token-auth-guide.md +66 -0
- package/docs/oauth-authentication-guide.md +168 -0
- package/docs/oauth-iflow-implementation.md +153 -0
- package/docs/pipeline-routing-report.md +209 -0
- package/docs/plans/manager-daemon/PLAN.md +86 -0
- package/docs/plans/provider-config-v2-plan.md +176 -0
- package/docs/plans/provider-runtime-manager-plan.md +209 -0
- package/docs/plans/transparent-429-failover.md +89 -0
- package/docs/plans/unified-hub-framework-v1.md +245 -0
- package/docs/provider-config-v2-ui-design.md +181 -0
- package/docs/provider-quota-design.md +129 -0
- package/docs/providers/gemini-provider.md +62 -0
- package/docs/providers/lmstudio-v2-migration-report.md +102 -0
- package/docs/providers/provider-composite-design.md +142 -0
- package/docs/providers/provider-composite-testing.md +98 -0
- package/docs/providers/provider-type-only-migration.md +111 -0
- package/docs/rccx-wasm-migration.md +74 -0
- package/docs/refactoring/architecture-comparison-diagram.md +140 -0
- package/docs/refactoring/compatibility-v2-architecture-design.md +738 -0
- package/docs/refactoring/workflow-compatibility-refactoring-design.md +361 -0
- package/docs/reports/routing-classification-report.json +24 -0
- package/docs/reports/routing-classification-report.md +18 -0
- package/docs/reports/thinking-keywords-report.json +19 -0
- package/docs/responses/README.md +156 -0
- package/docs/responses-generic-provider.md +86 -0
- package/docs/responses-passthrough-provider-design.md +202 -0
- package/docs/routing-awrr-health-weighted-round-robin.md +179 -0
- package/docs/routing-instructions.md +393 -0
- package/docs/servertool-framework.md +65 -0
- package/docs/stop-message-auto.md +225 -0
- package/docs/streaming-flow.html +30 -0
- package/docs/streaming-flow.md +182 -0
- package/docs/token-daemon-preview.html +490 -0
- package/docs/token-refresh-daemon-plan.md +269 -0
- package/docs/transformation-tables/Gemini-FinishReason/345/256/214/346/225/264/350/275/254/346/215/242/350/241/250.json +233 -0
- package/docs/transformation-tables/README.md +225 -0
- package/docs/transformation-tables/claude-code-router-anthropic-to-gemini.json +283 -0
- package/docs/transformation-tables/claude-code-router-anthropic-to-openai.json +208 -0
- package/docs/transformation-tables/claude-code-router-openai-to-anthropic.json +261 -0
- package/docs/transformation-tables/claude-code-router-openai-to-gemini.json +208 -0
- package/docs/transformation-tables/claude-code-router-openai-to-lmstudio.json +182 -0
- package/docs/transformation-tables/claude-code-router-openai-to-ollama.json +250 -0
- package/docs/transformation-tables/claude-code-router-openai-to-textgenwebui.json +295 -0
- package/docs/transformation-tables/claude-code-router-provider-conversions.json +193 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +367 -0
- package/docs/v2-architecture/OPTIMIZED-DESIGN.md +827 -0
- package/docs/v2-architecture/PRERUN-CONNECTION-DESIGN.md +716 -0
- package/docs/v2-architecture/README.md +549 -0
- package/docs/verification/modelscope-verify.md +59 -0
- package/docs/verified-configs/README.md +60 -0
- package/docs/verified-configs/v0.45.0/README.md +244 -0
- package/docs/verified-configs/v0.45.0/lmstudio-5521-gpt-oss-20b-mlx.json +135 -0
- package/docs/verified-configs/v0.45.0/merged-config.5521.json +1205 -0
- package/docs/verified-configs/v0.45.0/merged-config.qwen-5522.json +1559 -0
- package/docs/verified-configs/v0.45.0/qwen-5522-qwen3-coder-plus-final.json +221 -0
- package/docs/verified-configs/v0.45.0/qwen-5522-qwen3-coder-plus-fixed.json +242 -0
- package/docs/verified-configs/v0.45.0/qwen-5522-qwen3-coder-plus.json +242 -0
- package/docs/web-search-service-design.md +322 -0
- package/package.json +26 -15
- package/scripts/build-core.mjs +3 -1
- package/scripts/camoufox/launch-auth.mjs +193 -58
- package/scripts/ci/repo-sanity.mjs +138 -0
- package/scripts/mock-provider/run-regressions.mjs +157 -1
- package/scripts/monitor-diff.mjs +126 -0
- package/scripts/pack-mode.mjs +19 -1
- package/scripts/pack-rcc.mjs +63 -0
- package/scripts/run-bg.sh +0 -14
- package/scripts/tests/ci-jest.mjs +119 -0
- package/scripts/tools-dev/responses-debug-client/README.md +23 -0
- package/scripts/tools-dev/responses-debug-client/payloads/poem.json +13 -0
- package/scripts/tools-dev/responses-debug-client/payloads/sample-no-tools.json +98 -0
- package/scripts/tools-dev/responses-debug-client/payloads/text.json +13 -0
- package/scripts/tools-dev/responses-debug-client/payloads/tool.json +27 -0
- package/scripts/tools-dev/responses-debug-client/run.mjs +65 -0
- package/scripts/tools-dev/responses-debug-client/src/index.ts +281 -0
- package/scripts/tools-dev/run-llmswitch-chat.mjs +53 -0
- package/scripts/tools-dev/server-tools-dev/run-web-fetch.mjs +65 -0
- package/scripts/unified-hub-shadow-compare.mjs +33 -13
- package/scripts/vendor-core.mjs +13 -3
- package/scripts/verify-e2e-toolcall.mjs +115 -26
- package/dist/modules/llmswitch/pipeline-registry.d.ts +0 -57
- package/dist/modules/llmswitch/pipeline-registry.js +0 -229
- package/dist/modules/llmswitch/pipeline-registry.js.map +0 -1
- package/dist/server/RouteCodexServer.d.ts +0 -13
- package/dist/server/RouteCodexServer.js +0 -25
- package/dist/server/RouteCodexServer.js.map +0 -1
- package/dist/v2/conversion/hub/snapshot-recorder.d.ts +0 -12
- package/dist/v2/conversion/hub/snapshot-recorder.js +0 -22
- package/dist/v2/conversion/hub/snapshot-recorder.js.map +0 -1
- package/scripts/test-fc-responses.mjs +0 -66
- package/scripts/test-guidance.mjs +0 -100
- package/scripts/test-iflow-web-search.mjs +0 -141
- package/scripts/test-iflow.mjs +0 -379
- package/scripts/test-tool-exec.mjs +0 -26
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<title>/v1/messages Streaming Flow</title>
|
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
|
|
7
|
+
<script>mermaid.initialize({ startOnLoad: true, theme: 'default' });</script>
|
|
8
|
+
<style>
|
|
9
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; margin: 24px; }
|
|
10
|
+
pre { background: #f5f5f5; padding: 16px; overflow: auto; }
|
|
11
|
+
</style>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<h1>/v1/messages Streaming Pipeline</h1>
|
|
15
|
+
<pre class="mermaid">
|
|
16
|
+
flowchart TD
|
|
17
|
+
A["Client Request\n(JSON or SSE body)\nfields: messages/tools/tool_choice/stream"] --> B
|
|
18
|
+
B["HTTP Handler\nsrc/server/handlers/messages-handler.ts\nstream := body.stream\nmetadata.stream/inbound/outbound := stream"] --> C
|
|
19
|
+
C["req_inbound_stage1/2\nChatEnvelope parameters.stream := stream\ncollect tools/tool_outputs/tool_choice"] --> D
|
|
20
|
+
D["req_process_stage1_tool_governance\nTool filters adjust tool list/tool_choice\nstream untouched"] --> E
|
|
21
|
+
E["req_outbound_stage1/2\nBuild provider payload\npayload.stream := override(supportsStreaming) or stream"] --> F
|
|
22
|
+
F["Provider Upstream\nSSE or JSON depending on payload.stream\nreturns SSE/JSON with tool_calls & finish_reason"] --> G
|
|
23
|
+
G["resp_inbound stages\nDecode SSE, map to Chat response\ncapture tool_calls/tool outputs"] --> H
|
|
24
|
+
H["resp_process stages\nTool governance validation\nBuild final Chat response"] --> I
|
|
25
|
+
I["resp_outbound_stage1\nMap Chat response to client protocol\n(Anthropic/OpenAI/Responses)"] --> J
|
|
26
|
+
J["resp_outbound_stage2\nif metadata.stream == true -> emit SSE\nelse -> JSON"] --> K
|
|
27
|
+
K["HTTP Response\nsendPipelineResponse\nforceSSE := metadata.stream"]
|
|
28
|
+
</pre>
|
|
29
|
+
</body>
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
## `/v1/messages` Streaming/Tool Flow
|
|
2
|
+
|
|
3
|
+
### HTTP Entry → `req_inbound` Stages
|
|
4
|
+
|
|
5
|
+
| Stage | Payload focus | Key fields |
|
|
6
|
+
|-------|---------------|------------|
|
|
7
|
+
| HTTP handler (`src/server/handlers/messages-handler.ts`) | Raw JSON/SSE body | `jsonPayload.stream`, `rawRequestMetadata`, `metadata.stream/inboundStream/outboundStream`, `clientHeaders` |
|
|
8
|
+
| `req_inbound_stage1_format_parse` | Format envelope | Mirrors request body (Anthropic/Chat/Responses → canonical format) |
|
|
9
|
+
| `req_inbound_stage2_semantic_map` | `ChatEnvelope` + `StandardizedRequest` | `parameters.stream`, `messages`, `tools`, `metadata.context` |
|
|
10
|
+
| `req_inbound_stage3_context_capture` | Adapter context | Captures protocol-specific hints, `toolCallIdStyle`, alias maps |
|
|
11
|
+
|
|
12
|
+
**Flow**
|
|
13
|
+
|
|
14
|
+
1. Client body `stream` is taken as ground truth. Handler copies it into `jsonPayload.stream` and marks `metadata.stream/inboundStream/outboundStream`.
|
|
15
|
+
2. Format adapter normalises body into Chat envelope (Anthropic messages → canonical chat).
|
|
16
|
+
3. Semantic mapper builds `ChatEnvelope`, collecting `tools`, `tool_outputs`, `tool_choice`, `parameters.stream`.
|
|
17
|
+
4. `ChatEnvelope → StandardizedRequest` copies `parameters.stream`, `messages`, `tools`, metadata.
|
|
18
|
+
|
|
19
|
+
### Request Process (`req_process_stage1_tool_governance`)
|
|
20
|
+
|
|
21
|
+
* Input: `StandardizedRequest` with `parameters.stream` from client.
|
|
22
|
+
* Tool filters (`runChatRequestToolFilters`) govern tool list/tool choice without touching `stream`.
|
|
23
|
+
* `ProcessedRequest.processingMetadata.toolCalls` records governed tool call plan.
|
|
24
|
+
|
|
25
|
+
### Request Outbound (`req_outbound_stage*`)
|
|
26
|
+
|
|
27
|
+
| Stage | Effect |
|
|
28
|
+
|-------|--------|
|
|
29
|
+
| `req_outbound_stage1_semantic_map` | Reconstruct ChatEnvelope for provider protocol (`AdapterContext.providerProtocol`). |
|
|
30
|
+
| `req_outbound_stage2_format_build` | Produce provider payload, map `tools` & `tool_choice`. Apply provider `supportsStreaming` override. |
|
|
31
|
+
|
|
32
|
+
**Streaming rule**
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
if provider.profile.supportsStreaming === true => payload.stream = true
|
|
36
|
+
if provider.profile.supportsStreaming === false => payload.stream = false
|
|
37
|
+
else => payload.stream = StandardizedRequest.parameters.stream
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Provider Layer
|
|
41
|
+
|
|
42
|
+
* Request uses final `payload.stream`.
|
|
43
|
+
* Response can be SSE or JSON. Driver normalises it to JSON before handing to Hub.
|
|
44
|
+
|
|
45
|
+
### Response Inbound
|
|
46
|
+
|
|
47
|
+
| Stage | Effect |
|
|
48
|
+
|-------|--------|
|
|
49
|
+
| `resp_inbound_stage1_sse_decode` | Decode SSE if provider returned stream. |
|
|
50
|
+
| `resp_inbound_stage2_format_parse` | Map provider payload to format envelope. |
|
|
51
|
+
| `resp_inbound_stage3_semantic_map` | Build Chat response (tool_calls, tool outputs, finish reason). |
|
|
52
|
+
|
|
53
|
+
### Response Process
|
|
54
|
+
|
|
55
|
+
| Stage | Effect |
|
|
56
|
+
|-------|--------|
|
|
57
|
+
| `resp_process_stage1_tool_governance` | Validates provider tool calls (IDs, schema, arguments). |
|
|
58
|
+
| `resp_process_stage2_finalize` | Builds final Chat response JSON (`choices`, `usage`, `finish_reason`). |
|
|
59
|
+
|
|
60
|
+
### Response Outbound
|
|
61
|
+
|
|
62
|
+
| Stage | Effect |
|
|
63
|
+
|-------|--------|
|
|
64
|
+
| `resp_outbound_stage1_client_remap` | Convert final Chat response into client protocol (`Anthropic Messages`, `OpenAI Chat`, `Responses`). |
|
|
65
|
+
| `resp_outbound_stage2_sse_stream` | Emits SSE iff `metadata.stream === true` (entrance value). Otherwise returns JSON. |
|
|
66
|
+
|
|
67
|
+
**Important**: Outbound streaming decision ignores provider response type; it only checks client entrance metadata.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Stage Reference (request → response)
|
|
72
|
+
|
|
73
|
+
| Pipeline section | Stages |
|
|
74
|
+
|------------------|--------|
|
|
75
|
+
| Request inbound | `req_inbound_stage1_format_parse`, `req_inbound_stage2_semantic_map`, `req_inbound_stage3_context_capture` |
|
|
76
|
+
| Request process | `req_process_stage1_tool_governance`, `req_process_stage2_route_select` |
|
|
77
|
+
| Request outbound | `req_outbound_stage1_semantic_map`, `req_outbound_stage2_format_build` |
|
|
78
|
+
| Response inbound | `resp_inbound_stage1_sse_decode`, `resp_inbound_stage2_format_parse`, `resp_inbound_stage3_semantic_map` |
|
|
79
|
+
| Response process | `resp_process_stage1_tool_governance`, `resp_process_stage2_finalize` |
|
|
80
|
+
| Response outbound| `resp_outbound_stage1_client_remap`, `resp_outbound_stage2_sse_stream` |
|
|
81
|
+
|
|
82
|
+
SSE/JSON selection happens at `resp_outbound_stage2_sse_stream` based solely on `metadata.stream`.
|
|
83
|
+
|
|
84
|
+
### HTTP Response
|
|
85
|
+
|
|
86
|
+
`sendPipelineResponse` uses `options.forceSSE = metadata.stream`. SSE events follow client protocol (Anthropic `message_start/content_block_delta`, OpenAI `chat.completion.chunk`, etc.). JSON includes canonical `choices/tool_calls/tool_outputs/finish_reason`.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Field / Stage State Summary
|
|
91
|
+
|
|
92
|
+
| Field | HTTP handler | req_inbound | req_process | req_outbound | provider resp | resp_inbound | resp_process | resp_outbound |
|
|
93
|
+
|-------|--------------|-------------|-------------|--------------|---------------|--------------|--------------|---------------|
|
|
94
|
+
| `stream` | Set from client body | Copied to `parameters.stream` | Unchanged | Override only if provider config forces | n/a | Remains in metadata | Drives `wantsStream` | Controls SSE vs JSON |
|
|
95
|
+
| `tools` | Raw array | Normalised Chat tools | Tool governance (policy) | Mapped to provider schema | Provider call result | Normalised Chat tool calls | Validated/strictified | Mapped back to client schema |
|
|
96
|
+
| `tool_choice` | Raw | Stored in parameters | Governed | Provider schema | — | — | Included in final Chat response | Client schema |
|
|
97
|
+
| `tool outputs` | Raw (Responses) | Stored as `toolOutputs` | — | Provider payload (if needed) | Provider result frames | Normalised to Chat tool role msg | Packaged | Client schema (Messages, Responses) |
|
|
98
|
+
| `finish_reason` | — | — | — | Provider dependent | Provided by provider | Normalised to Chat finish reason | Finalised | Returned in client schema |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Protocol-specific Conversion Details
|
|
103
|
+
|
|
104
|
+
### OpenAI Chat (`/v1/chat/completions`)
|
|
105
|
+
|
|
106
|
+
**Inbound**
|
|
107
|
+
1. `req_inbound_stage1_format_parse` accepts OpenAI Chat JSON.
|
|
108
|
+
2. `req_inbound_stage2_semantic_map` flattens `choices[].messages` into ChatEnvelope, collects `tool_calls`, `tool_choice`.
|
|
109
|
+
3. `req_inbound_stage3_context_capture` stores `toolCallIdStyle` hints.
|
|
110
|
+
|
|
111
|
+
**Outbound**
|
|
112
|
+
1. `req_outbound_stage1_semantic_map` reconstructs OpenAI Chat payload with governed `tools`.
|
|
113
|
+
2. `req_outbound_stage2_format_build` serialises `function` schema, `tool_choice`, `stream`.
|
|
114
|
+
3. `resp_outbound_stage1_client_remap` writes `choices[].delta`, `finish_reason`, `tool_calls`.
|
|
115
|
+
4. `resp_outbound_stage2_sse_stream` emits `chat.completion.chunk` events when `stream === true`.
|
|
116
|
+
|
|
117
|
+
### Anthropic Messages (`/v1/messages`)
|
|
118
|
+
|
|
119
|
+
**Inbound**
|
|
120
|
+
1. `req_inbound_stage1_format_parse` parses Anthropic `messages[]/content_block` structure.
|
|
121
|
+
2. `req_inbound_stage2_semantic_map` converts to ChatEnvelope, capturing `anthropicMirror`, alias map, metadata.
|
|
122
|
+
3. `req_inbound_stage3_context_capture` stores Anthropics-specific aliasing + tool ID style.
|
|
123
|
+
|
|
124
|
+
**Outbound**
|
|
125
|
+
1. `req_outbound_stage1_semantic_map` builds Anthropics message list (system blocks, tool_use, tool_result).
|
|
126
|
+
2. `req_outbound_stage2_format_build` sets `tools`, `tool_choice`, `stream` (respecting provider override).
|
|
127
|
+
3. Provider response SSE → `resp_inbound_stage1_sse_decode`.
|
|
128
|
+
4. `resp_outbound_stage1_client_remap` emits `message_start`, `content_block_start/delta`, tool_use/tool_result, `message_delta.stop_reason`.
|
|
129
|
+
5. `resp_outbound_stage2_sse_stream` uses entrance `stream` to send SSE; otherwise JSON matches Anthropic schema.
|
|
130
|
+
|
|
131
|
+
### OpenAI Responses (`/v1/responses`)
|
|
132
|
+
|
|
133
|
+
**Inbound**
|
|
134
|
+
1. Handler routes `/v1/responses` to `responses-format-adapter`.
|
|
135
|
+
2. `req_inbound_stage2_semantic_map` maps `input[]` into ChatEnvelope (`messages/tools`), `tool_outputs`.
|
|
136
|
+
3. `req_inbound_stage3_context_capture` records responses context for bridging (multi-modal).
|
|
137
|
+
|
|
138
|
+
**Outbound**
|
|
139
|
+
1. `req_outbound_stage1_semantic_map` converts ChatEnvelope to Responses `input[]`.
|
|
140
|
+
2. `req_outbound_stage2_format_build` writes `metadata`, `modalities`, `instructions`, `stream`.
|
|
141
|
+
3. Provider SSE or JSON feeds `resp_inbound_*`; tool outputs appear as `response.output[]`.
|
|
142
|
+
4. `resp_outbound_stage1_client_remap` rebuilds Responses `output[]` array (tool calls, tool results, reasoning, finish status).
|
|
143
|
+
5. `resp_outbound_stage2_sse_stream` emits Responses SSE events when entrance `stream === true`.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Streaming / Tool Pipeline Flow
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Client (/v1/messages)
|
|
153
|
+
→ HTTP handler
|
|
154
|
+
stream := body.stream
|
|
155
|
+
metadata.stream/inbound/outbound := stream
|
|
156
|
+
→ req_inbound_stage1 (format parse)
|
|
157
|
+
→ req_inbound_stage2 (semantic map)
|
|
158
|
+
ChatEnvelope.parameters.stream := stream
|
|
159
|
+
→ StandardizedRequest.parameters.stream := stream
|
|
160
|
+
→ req_process_stage1_tool_governance
|
|
161
|
+
tools/tool_choice governed (stream untouched)
|
|
162
|
+
→ req_outbound_stage1/2
|
|
163
|
+
apply provider supportsStreaming override
|
|
164
|
+
payload.stream := override or stream
|
|
165
|
+
→ Provider
|
|
166
|
+
sends SSE/JSON accordingly
|
|
167
|
+
returns SSE/JSON (tool_calls, finish_reason)
|
|
168
|
+
→ resp_inbound stages
|
|
169
|
+
decode SSE, build Chat response
|
|
170
|
+
→ resp_process
|
|
171
|
+
tool governance, final Chat response
|
|
172
|
+
→ resp_outbound_stage1
|
|
173
|
+
map Chat response -> client protocol
|
|
174
|
+
→ resp_outbound_stage2
|
|
175
|
+
if entrance stream === true -> emit client SSE
|
|
176
|
+
else -> emit JSON
|
|
177
|
+
→ HTTP response
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
See `streaming-flow.html` for a Mermaid diagram illustrating the above.
|