@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { rejectNonLocalOrUnauthorizedAdmin } from '../daemon-admin-routes.js';
|
|
2
2
|
export function registerRestartRoutes(app, options) {
|
|
3
3
|
app.post('/daemon/restart', async (req, res) => {
|
|
4
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
4
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
7
7
|
const restart = options.restartRuntimeFromDisk;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/restart-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,UAAU,qBAAqB,CAAC,GAAgB,EAAE,OAAgC;IACtF,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAChE,IAAI,iCAAiC,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"restart-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/restart-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,UAAU,qBAAqB,CAAC,GAAgB,EAAE,OAAgC;IACtF,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAChE,IAAI,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC/C,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACxG,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -24,7 +24,7 @@ function sumTotals(rows) {
|
|
|
24
24
|
}
|
|
25
25
|
export function registerStatsRoutes(app, options) {
|
|
26
26
|
app.get('/daemon/stats', (req, res) => {
|
|
27
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
27
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
if (typeof options.getStatsSnapshot !== 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/stats-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAW9E,SAAS,SAAS,CAAC,IAAqC;IACtD,MAAM,MAAM,GAAgB;QAC1B,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,CAAC;QACpB,qBAAqB,EAAE,CAAC;QACxB,iBAAiB,EAAE,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YAAA,SAAS;QAAA,CAAC;QACrB,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,qBAAqB,IAAI,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAgB,EAAE,OAAgC;IACpF,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACvD,IAAI,iCAAiC,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"stats-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/stats-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAW9E,SAAS,SAAS,CAAC,IAAqC;IACtD,MAAM,MAAM,GAAgB;QAC1B,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,CAAC;QACpB,qBAAqB,EAAE,CAAC;QACxB,iBAAiB,EAAE,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YAAA,SAAS;QAAA,CAAC;QACrB,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,qBAAqB,IAAI,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAgB,EAAE,OAAgC;IACpF,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACvD,IAAI,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAE1D,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAGxC,CAAC;YAEF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAEhE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC/B,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE;oBACN,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,gBAAgB;iBAC7B;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { rejectNonLocalOrUnauthorizedAdmin } from '../daemon-admin-routes.js';
|
|
2
2
|
export function registerStatusRoutes(app, options) {
|
|
3
3
|
app.get('/daemon/status', (req, res) => {
|
|
4
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
4
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
7
7
|
const manager = options.getManagerDaemon();
|
|
@@ -41,7 +41,7 @@ export function registerStatusRoutes(app, options) {
|
|
|
41
41
|
// Admin-only module control helpers (stop/restart).
|
|
42
42
|
// Intended for operational debugging (e.g. reload provider-quota snapshot after file deletion).
|
|
43
43
|
app.post('/daemon/modules/:id/stop', async (req, res) => {
|
|
44
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
44
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
const id = typeof req.params.id === 'string' ? req.params.id.trim() : '';
|
|
@@ -69,7 +69,7 @@ export function registerStatusRoutes(app, options) {
|
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
app.post('/daemon/modules/:id/restart', async (req, res) => {
|
|
72
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
72
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
const id = typeof req.params.id === 'string' ? req.params.id.trim() : '';
|
|
@@ -99,8 +99,50 @@ export function registerStatusRoutes(app, options) {
|
|
|
99
99
|
res.status(500).json({ error: { message, code: 'module_restart_failed' } });
|
|
100
100
|
}
|
|
101
101
|
});
|
|
102
|
+
// Best-effort "refresh" semantics for modules that expose refreshNow()/reset().
|
|
103
|
+
// This is primarily used by quota modules so the admin UI can force refresh without restart.
|
|
104
|
+
app.post('/daemon/modules/:id/refresh', async (req, res) => {
|
|
105
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const id = typeof req.params.id === 'string' ? req.params.id.trim() : '';
|
|
109
|
+
if (!id) {
|
|
110
|
+
res.status(400).json({ error: { message: 'id is required', code: 'bad_request' } });
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const daemon = options.getManagerDaemon();
|
|
114
|
+
if (!daemon || typeof daemon.getModule !== 'function') {
|
|
115
|
+
res.status(503).json({ error: { message: 'manager daemon not available', code: 'not_ready' } });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const mod = daemon.getModule(id);
|
|
119
|
+
if (!mod) {
|
|
120
|
+
res.status(404).json({ error: { message: 'module not found', code: 'not_found' } });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
if (typeof mod.refreshNow === 'function') {
|
|
125
|
+
const result = await mod.refreshNow();
|
|
126
|
+
res.status(200).json({ ok: true, id, action: 'refresh', refreshedAt: Date.now(), result });
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (typeof mod.reset === 'function') {
|
|
130
|
+
const result = await mod.reset({ persist: true });
|
|
131
|
+
res.status(200).json({ ok: true, id, action: 'refresh', refreshedAt: Date.now(), result, fallback: 'reset' });
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
await mod.stop();
|
|
135
|
+
await mod.init({ serverId: options.getServerId() });
|
|
136
|
+
await mod.start();
|
|
137
|
+
res.status(200).json({ ok: true, id, action: 'refresh', refreshedAt: Date.now(), fallback: 'restart' });
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
141
|
+
res.status(500).json({ error: { message, code: 'module_refresh_failed' } });
|
|
142
|
+
}
|
|
143
|
+
});
|
|
102
144
|
app.post('/daemon/modules/:id/reset', async (req, res) => {
|
|
103
|
-
if (rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
145
|
+
if (rejectNonLocalOrUnauthorizedAdmin(req, res)) {
|
|
104
146
|
return;
|
|
105
147
|
}
|
|
106
148
|
const id = typeof req.params.id === 'string' ? req.params.id.trim() : '';
|
|
@@ -121,6 +163,28 @@ export function registerStatusRoutes(app, options) {
|
|
|
121
163
|
try {
|
|
122
164
|
if (typeof mod.reset === 'function') {
|
|
123
165
|
const result = await mod.reset({ persist: true });
|
|
166
|
+
// Special-case: resetting provider-quota should immediately trigger a quota refresh
|
|
167
|
+
// so quota-aware providers (e.g. antigravity) are re-fetched instead of staying stale.
|
|
168
|
+
if (id === 'provider-quota') {
|
|
169
|
+
try {
|
|
170
|
+
const quotaMod = daemon.getModule('quota');
|
|
171
|
+
if (quotaMod && typeof quotaMod.refreshNow === 'function') {
|
|
172
|
+
const quotaRefresh = await quotaMod.refreshNow();
|
|
173
|
+
res.status(200).json({
|
|
174
|
+
ok: true,
|
|
175
|
+
id,
|
|
176
|
+
action: 'reset',
|
|
177
|
+
resetAt: Date.now(),
|
|
178
|
+
result,
|
|
179
|
+
meta: { quotaRefresh }
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// ignore quota refresh failures on provider-quota reset
|
|
186
|
+
}
|
|
187
|
+
}
|
|
124
188
|
res.status(200).json({ ok: true, id, action: 'reset', resetAt: Date.now(), result });
|
|
125
189
|
return;
|
|
126
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/status-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAQ9E,MAAM,UAAU,oBAAoB,CAAC,GAAgB,EAAE,OAAgC;IACrF,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACxD,IAAI,iCAAiC,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"status-handler.js","sourceRoot":"","sources":["../../../../../src/server/runtime/http-server/daemon-admin/status-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,7 @@ export interface DaemonAdminRouteOptions {
|
|
|
15
15
|
*/
|
|
16
16
|
getVirtualRouterArtifacts: () => unknown | null;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
* 用于允许远程访问 daemon-admin JSON API(配合 apikey 校验)。
|
|
18
|
+
* Deprecated: daemon-admin 不再使用 apikey 鉴权(改为密码登录)。
|
|
20
19
|
*/
|
|
21
20
|
getExpectedApiKey?: () => string | undefined;
|
|
22
21
|
/**
|
|
@@ -37,7 +36,7 @@ export interface DaemonAdminRouteOptions {
|
|
|
37
36
|
};
|
|
38
37
|
}
|
|
39
38
|
export declare function isLocalRequest(req: Request): boolean;
|
|
40
|
-
export declare function
|
|
39
|
+
export declare function isDaemonAdminAuthenticated(req: Request): boolean;
|
|
41
40
|
export declare function rejectNonLocal(req: Request, res: Response): boolean;
|
|
42
|
-
export declare function rejectNonLocalOrUnauthorizedAdmin(req: Request, res: Response
|
|
41
|
+
export declare function rejectNonLocalOrUnauthorizedAdmin(req: Request, res: Response): boolean;
|
|
43
42
|
export declare function registerDaemonAdminRoutes(options: DaemonAdminRouteOptions): void;
|
|
@@ -1,24 +1,17 @@
|
|
|
1
|
+
import { registerDaemonAuthRoutes } from './daemon-admin/auth-handler.js';
|
|
1
2
|
import { registerStatusRoutes } from './daemon-admin/status-handler.js';
|
|
2
3
|
import { registerCredentialRoutes } from './daemon-admin/credentials-handler.js';
|
|
3
4
|
import { registerQuotaRoutes } from './daemon-admin/quota-handler.js';
|
|
4
5
|
import { registerProviderRoutes } from './daemon-admin/providers-handler.js';
|
|
5
6
|
import { registerRestartRoutes } from './daemon-admin/restart-handler.js';
|
|
6
7
|
import { registerStatsRoutes } from './daemon-admin/stats-handler.js';
|
|
7
|
-
import {
|
|
8
|
+
import { isDaemonSessionAuthenticated } from './daemon-admin/auth-session.js';
|
|
8
9
|
export function isLocalRequest(req) {
|
|
9
10
|
const ip = req.socket?.remoteAddress || '';
|
|
10
11
|
return ip === '127.0.0.1' || ip === '::1' || ip === '::ffff:127.0.0.1';
|
|
11
12
|
}
|
|
12
|
-
export function
|
|
13
|
-
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
const expected = typeof expectedApiKey === 'string' ? expectedApiKey.trim() : '';
|
|
17
|
-
if (!expected) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
const provided = extractApiKeyFromRequest(req);
|
|
21
|
-
return Boolean(provided && provided === expected);
|
|
13
|
+
export function isDaemonAdminAuthenticated(req) {
|
|
14
|
+
return isDaemonSessionAuthenticated(req);
|
|
22
15
|
}
|
|
23
16
|
export function rejectNonLocal(req, res) {
|
|
24
17
|
if (isLocalRequest(req)) {
|
|
@@ -27,15 +20,17 @@ export function rejectNonLocal(req, res) {
|
|
|
27
20
|
res.status(403).json({ error: { message: 'forbidden', code: 'forbidden' } });
|
|
28
21
|
return true;
|
|
29
22
|
}
|
|
30
|
-
export function rejectNonLocalOrUnauthorizedAdmin(req, res
|
|
31
|
-
if (
|
|
23
|
+
export function rejectNonLocalOrUnauthorizedAdmin(req, res) {
|
|
24
|
+
if (isDaemonAdminAuthenticated(req)) {
|
|
32
25
|
return false;
|
|
33
26
|
}
|
|
34
|
-
res.status(
|
|
27
|
+
res.status(401).json({ error: { message: 'unauthorized', code: 'unauthorized' } });
|
|
35
28
|
return true;
|
|
36
29
|
}
|
|
37
30
|
export function registerDaemonAdminRoutes(options) {
|
|
38
31
|
const { app } = options;
|
|
32
|
+
// Daemon admin password auth (setup/login/logout/status)
|
|
33
|
+
registerDaemonAuthRoutes(app);
|
|
39
34
|
// Daemon / manager 状态
|
|
40
35
|
registerStatusRoutes(app, options);
|
|
41
36
|
// Token usage / provider stats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-admin-routes.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/daemon-admin-routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon-admin-routes.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/daemon-admin-routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAmC9E,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC;IAC3C,OAAO,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,kBAAkB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,GAAa;IACxD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,GAAY,EACZ,GAAa;IAEb,IAAI,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgC;IACxE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAExB,yDAAyD;IACzD,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAE9B,sBAAsB;IACtB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEnC,+BAA+B;IAC/B,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAElC,yBAAyB;IACzB,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEvC,mBAAmB;IACnB,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAElC,+BAA+B;IAC/B,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAErC,qDAAqD;IACrD,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { asRecord } from './provider-utils.js';
|
|
2
|
-
import { extractSessionIdentifiersFromMetadata } from '
|
|
2
|
+
import { extractSessionIdentifiersFromMetadata } from '../../../modules/llmswitch/bridge.js';
|
|
3
3
|
export function cloneClientHeaders(source) {
|
|
4
4
|
if (!source || typeof source !== 'object') {
|
|
5
5
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-metadata.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/executor-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"executor-metadata.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/executor-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,7 +94,6 @@ export async function convertProviderResponseIfNeeded(options, deps) {
|
|
|
94
94
|
const reenterPipeline = async (reenterOpts) => {
|
|
95
95
|
const nestedEntry = reenterOpts.entryEndpoint || options.entryEndpoint || entry;
|
|
96
96
|
const nestedExtra = asRecord(reenterOpts.metadata) ?? {};
|
|
97
|
-
const nestedEntryLower = nestedEntry.toLowerCase();
|
|
98
97
|
const nestedMetadata = {
|
|
99
98
|
...(metadataBag ?? {}),
|
|
100
99
|
...nestedExtra,
|
|
@@ -102,21 +101,6 @@ export async function convertProviderResponseIfNeeded(options, deps) {
|
|
|
102
101
|
direction: 'request',
|
|
103
102
|
stage: 'inbound'
|
|
104
103
|
};
|
|
105
|
-
if (nestedEntryLower.includes('/v1/chat/completions')) {
|
|
106
|
-
nestedMetadata.providerProtocol = 'openai-chat';
|
|
107
|
-
}
|
|
108
|
-
else if (nestedEntryLower.includes('/v1/responses')) {
|
|
109
|
-
nestedMetadata.providerProtocol = 'openai-responses';
|
|
110
|
-
}
|
|
111
|
-
else if (nestedEntryLower.includes('/v1/messages')) {
|
|
112
|
-
nestedMetadata.providerProtocol = 'anthropic-messages';
|
|
113
|
-
}
|
|
114
|
-
const followupProtocol = typeof nestedExtra.serverToolFollowupProtocol === 'string'
|
|
115
|
-
? nestedExtra.serverToolFollowupProtocol
|
|
116
|
-
: undefined;
|
|
117
|
-
if (followupProtocol) {
|
|
118
|
-
nestedMetadata.providerProtocol = followupProtocol;
|
|
119
|
-
}
|
|
120
104
|
const nestedInput = {
|
|
121
105
|
entryEndpoint: nestedEntry,
|
|
122
106
|
method: 'POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-response.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/executor-response.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor-response.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/executor-response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,uBAAuB,IAAI,6BAA6B,EACxD,sBAAsB,IAAI,4BAA4B,EACvD,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mCAAmC,EAAE,MAAM,wCAAwC,CAAC;AAkB7F,SAAS,oBAAoB,CAC3B,QAAiC,EACjC,eAAyC;IAEzC,MAAM,UAAU,GAAG;QACjB,QAAQ,CAAC,aAAa;QACtB,QAAQ,CAAC,eAAe;QACxB,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;YACrD,CAAC,CAAE,QAAQ,CAAC,MAAkC,CAAC,aAAa;YAC5D,CAAC,CAAC,SAAS,CAAC;QACd,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ;YACpD,CAAC,CAAE,eAA2C,CAAC,KAAK;YACpD,CAAC,CAAC,SAAS;QACb,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ;YACpD,CAAC,CAAE,eAA2C,CAAC,eAAe;YAC9D,CAAC,CAAC,SAAS;KACd,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAuC,EACvC,IAAiC;IAEjC,IAAI,OAAO,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,wBAAwB,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,wBAAwB,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACnE,IAAI,CAAC,wBAAwB,IAAI,CAAC,wBAAwB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnF,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACzF,MAAM,WAAW,GAA4B;YAC3C,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SACvB,CAAC;QACF,IAAI,OAAQ,WAAmD,EAAE,SAAS,KAAK,QAAQ,EAAE,CAAC;YACxF,WAAW,CAAC,OAAO,GAAI,WAAuC,CAAC,SAAmB,CAAC;QACrF,CAAC;QACD,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC1C,WAAW,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QAC3D,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAChD,WAAW,CAAC,eAAe,GAAG,eAAe,CAAC;QAC9C,mCAAmC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,WAAW,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACZ,cAA0C,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QAC9E,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,4BAA4B,CACtD,cAAc,EACd,OAAQ,cAA0C,CAAC,aAAa,KAAK,QAAQ;YAC3E,CAAC,CAAG,cAA0C,CAAC,aAAwB;YACvE,CAAC,CAAC,KAAK,CACV,CAAC;QAEF,MAAM,eAAe,GAAG,KAAK,EAAE,aAI9B,EAA0D,EAAE;YAC3D,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAiD,CAAC;gBAChF,MAAM,YAAY,GAChB,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBACtD,CAAC,CAAE,OAAO,CAAC,QAAoC;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,QAAQ,GAAG;oBACjB,GAAG,YAAY;oBACf,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;iBAC7D,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAA2B;gBAC1C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;gBAC7C,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,aAAa,CAAC,OAAO;gBAC3B,QAAQ,EAAE;oBACR,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;oBACtB,SAAS,EAAE,SAAS;oBACpB,KAAK,EAAE,iBAAiB;iBACzB;aACF,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM,UAAU,GACd,YAAY,CAAC,IAAI,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ;gBACxD,CAAC,CAAE,YAAY,CAAC,IAAgC;gBAChD,CAAC,CAAE,YAAmD,CAAC;YAC3D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;QAC1C,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,KAAK,EAAE,WAK9B,EAA2F,EAAE;YAC5F,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;YAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEzD,MAAM,cAAc,GAA4B;gBAC9C,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtB,GAAG,WAAW;gBACd,aAAa,EAAE,WAAW;gBAC1B,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,SAAS;aACjB,CAAC;YAEF,MAAM,WAAW,GAA2B;gBAC1C,aAAa,EAAE,WAAW;gBAC1B,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,QAAQ,EAAE,cAAc;aACzB,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM,UAAU,GACd,YAAY,CAAC,IAAI,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ;gBACxD,CAAC,CAAE,YAAY,CAAC,IAAgC;gBAChD,CAAC,CAAC,SAAS,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC;YACpD,gBAAgB;YAChB,gBAAgB,EAAE,IAA+B;YACjD,OAAO,EAAE,cAAc;YACvB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;YAC7C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe;YACf,aAAa;YACb,eAAe;SAChB,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO;gBACL,GAAG,OAAO,CAAC,QAAQ;gBACnB,IAAI,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE;aACrD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,OAAO,CAAC,QAAQ;YACnB,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAwB,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;QACpF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEnE,MAAM,mBAAmB,GACvB,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAElE,IAAI,gBAAgB,KAAK,aAAa,IAAI,mBAAmB,EAAE,CAAC;YAC9D,OAAO,CAAC,KAAK,CACX,sFAAsF,EACtF,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,0EAA0E,EAAE,KAAK,CAAC,CAAC;QACjG,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -2,32 +2,41 @@ import { buildInfo } from '../../../build-info.js';
|
|
|
2
2
|
import { writeErrorsampleJson } from '../../../utils/errorsamples.js';
|
|
3
3
|
import { resolveLlmswitchCoreVersion } from '../../../utils/runtime-versions.js';
|
|
4
4
|
function resolveBoolFromEnv(value, fallback) {
|
|
5
|
-
if (!value)
|
|
5
|
+
if (!value) {
|
|
6
6
|
return fallback;
|
|
7
|
+
}
|
|
7
8
|
const normalized = value.trim().toLowerCase();
|
|
8
|
-
if (['1', 'true', 'yes', 'on'].includes(normalized))
|
|
9
|
+
if (['1', 'true', 'yes', 'on'].includes(normalized)) {
|
|
9
10
|
return true;
|
|
10
|
-
|
|
11
|
+
}
|
|
12
|
+
if (['0', 'false', 'no', 'off'].includes(normalized)) {
|
|
11
13
|
return false;
|
|
14
|
+
}
|
|
12
15
|
return fallback;
|
|
13
16
|
}
|
|
14
17
|
function resolveNumberFromEnv(value, fallback) {
|
|
15
|
-
if (!value || !value.trim())
|
|
18
|
+
if (!value || !value.trim()) {
|
|
16
19
|
return fallback;
|
|
20
|
+
}
|
|
17
21
|
const n = Number(value);
|
|
18
22
|
return Number.isFinite(n) ? n : fallback;
|
|
19
23
|
}
|
|
20
24
|
function clamp01(n) {
|
|
21
|
-
if (!Number.isFinite(n))
|
|
25
|
+
if (!Number.isFinite(n)) {
|
|
22
26
|
return 1;
|
|
23
|
-
|
|
27
|
+
}
|
|
28
|
+
if (n <= 0) {
|
|
24
29
|
return 0;
|
|
25
|
-
|
|
30
|
+
}
|
|
31
|
+
if (n >= 1) {
|
|
26
32
|
return 1;
|
|
33
|
+
}
|
|
27
34
|
return n;
|
|
28
35
|
}
|
|
29
36
|
export function resolveHubShadowCompareConfig() {
|
|
30
|
-
|
|
37
|
+
// Default-on: this is a black-box gate and only writes to disk when it detects a diff.
|
|
38
|
+
// Can be disabled explicitly via ROUTECODEX_UNIFIED_HUB_SHADOW_COMPARE=0.
|
|
39
|
+
const defaultEnabled = true;
|
|
31
40
|
const enabled = resolveBoolFromEnv(process.env.ROUTECODEX_UNIFIED_HUB_SHADOW_COMPARE, defaultEnabled);
|
|
32
41
|
const sampleRate = clamp01(resolveNumberFromEnv(process.env.ROUTECODEX_UNIFIED_HUB_SHADOW_COMPARE_SAMPLE_RATE, 1));
|
|
33
42
|
const baselineModeRaw = String(process.env.ROUTECODEX_UNIFIED_HUB_SHADOW_BASELINE_MODE || 'off').trim().toLowerCase();
|
|
@@ -35,35 +44,45 @@ export function resolveHubShadowCompareConfig() {
|
|
|
35
44
|
return { enabled, sampleRate, baselineMode };
|
|
36
45
|
}
|
|
37
46
|
export function shouldRunHubShadowCompare(config) {
|
|
38
|
-
if (!config.enabled)
|
|
47
|
+
if (!config.enabled) {
|
|
39
48
|
return false;
|
|
40
|
-
|
|
49
|
+
}
|
|
50
|
+
if (config.sampleRate <= 0) {
|
|
41
51
|
return false;
|
|
42
|
-
|
|
52
|
+
}
|
|
53
|
+
if (config.sampleRate >= 1) {
|
|
43
54
|
return true;
|
|
55
|
+
}
|
|
44
56
|
return Math.random() < config.sampleRate;
|
|
45
57
|
}
|
|
46
58
|
function summarizeValue(value) {
|
|
47
|
-
if (value === undefined)
|
|
59
|
+
if (value === undefined) {
|
|
48
60
|
return 'undefined';
|
|
49
|
-
|
|
61
|
+
}
|
|
62
|
+
if (value === null) {
|
|
50
63
|
return null;
|
|
64
|
+
}
|
|
51
65
|
if (typeof value === 'string') {
|
|
52
66
|
return value.length > 240 ? `${value.slice(0, 200)}...(len=${value.length})` : value;
|
|
53
67
|
}
|
|
54
|
-
if (typeof value === 'number' || typeof value === 'boolean')
|
|
68
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
55
69
|
return value;
|
|
56
|
-
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(value)) {
|
|
57
72
|
return `[array length=${value.length}]`;
|
|
58
|
-
|
|
73
|
+
}
|
|
74
|
+
if (value && typeof value === 'object') {
|
|
59
75
|
return `[object keys=${Object.keys(value).length}]`;
|
|
76
|
+
}
|
|
60
77
|
return String(value);
|
|
61
78
|
}
|
|
62
79
|
function diffPayloads(expected, actual, p = '<root>') {
|
|
63
|
-
if (Object.is(expected, actual))
|
|
80
|
+
if (Object.is(expected, actual)) {
|
|
64
81
|
return [];
|
|
65
|
-
|
|
82
|
+
}
|
|
83
|
+
if (typeof expected !== typeof actual) {
|
|
66
84
|
return [{ path: p, expected, actual }];
|
|
85
|
+
}
|
|
67
86
|
if (Array.isArray(expected) && Array.isArray(actual)) {
|
|
68
87
|
const max = Math.max(expected.length, actual.length);
|
|
69
88
|
const diffs = [];
|
|
@@ -79,12 +98,15 @@ function diffPayloads(expected, actual, p = '<root>') {
|
|
|
79
98
|
const diffs = [];
|
|
80
99
|
for (const key of keys) {
|
|
81
100
|
const next = p === '<root>' ? key : `${p}.${key}`;
|
|
82
|
-
if (!(key in actualObj))
|
|
101
|
+
if (!(key in actualObj)) {
|
|
83
102
|
diffs.push({ path: next, expected: expectedObj[key], actual: undefined });
|
|
84
|
-
|
|
103
|
+
}
|
|
104
|
+
else if (!(key in expectedObj)) {
|
|
85
105
|
diffs.push({ path: next, expected: undefined, actual: actualObj[key] });
|
|
86
|
-
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
87
108
|
diffs.push(...diffPayloads(expectedObj[key], actualObj[key], next));
|
|
109
|
+
}
|
|
88
110
|
}
|
|
89
111
|
return diffs;
|
|
90
112
|
}
|
|
@@ -92,14 +114,23 @@ function diffPayloads(expected, actual, p = '<root>') {
|
|
|
92
114
|
}
|
|
93
115
|
export async function recordHubShadowCompareDiff(options) {
|
|
94
116
|
const ignoreInternalIds = resolveBoolFromEnv(process.env.ROUTECODEX_UNIFIED_HUB_SHADOW_COMPARE_IGNORE_INTERNAL_IDS, true);
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
117
|
+
const ignoreTargetSelection = resolveBoolFromEnv(process.env.ROUTECODEX_UNIFIED_HUB_SHADOW_COMPARE_IGNORE_TARGET_SELECTION, true);
|
|
118
|
+
const excludedComparePaths = [
|
|
119
|
+
...(ignoreInternalIds
|
|
120
|
+
? [
|
|
121
|
+
'providerPayload.requestId',
|
|
122
|
+
'providerPayload.metadata.context.requestId',
|
|
123
|
+
'providerPayload.metadata.responsesContext.requestId',
|
|
124
|
+
'providerPayload.metadata.context.__disableHubSnapshots'
|
|
125
|
+
]
|
|
126
|
+
: []),
|
|
127
|
+
...(ignoreTargetSelection ? ['target.providerKey', 'target.runtimeKey'] : []),
|
|
128
|
+
// Auxiliary / debug-only fields (not part of provider outbound contract).
|
|
129
|
+
'providerPayload.stageExpectations',
|
|
130
|
+
'providerPayload.stages',
|
|
131
|
+
'providerPayload.anthropicMirror',
|
|
132
|
+
'providerPayload.toolsFieldPresent'
|
|
133
|
+
];
|
|
103
134
|
const cloneJsonSafe = (value) => {
|
|
104
135
|
try {
|
|
105
136
|
return JSON.parse(JSON.stringify(value));
|
|
@@ -109,35 +140,80 @@ export async function recordHubShadowCompareDiff(options) {
|
|
|
109
140
|
}
|
|
110
141
|
};
|
|
111
142
|
const deletePath = (root, pathExpr) => {
|
|
112
|
-
if (!root || typeof root !== 'object')
|
|
143
|
+
if (!root || typeof root !== 'object') {
|
|
113
144
|
return;
|
|
145
|
+
}
|
|
114
146
|
const parts = pathExpr.split('.').filter(Boolean);
|
|
115
147
|
let cursor = root;
|
|
116
148
|
for (let i = 0; i < parts.length - 1; i += 1) {
|
|
117
149
|
const key = parts[i];
|
|
118
|
-
if (!cursor || typeof cursor !== 'object')
|
|
150
|
+
if (!cursor || typeof cursor !== 'object') {
|
|
119
151
|
return;
|
|
152
|
+
}
|
|
120
153
|
cursor = cursor[key];
|
|
121
154
|
}
|
|
122
155
|
const last = parts[parts.length - 1];
|
|
123
|
-
if (!last)
|
|
156
|
+
if (!last) {
|
|
124
157
|
return;
|
|
158
|
+
}
|
|
125
159
|
if (cursor && typeof cursor === 'object' && Object.prototype.hasOwnProperty.call(cursor, last)) {
|
|
126
160
|
delete cursor[last];
|
|
127
161
|
}
|
|
128
162
|
};
|
|
129
163
|
const prepareForDiff = (value) => {
|
|
130
|
-
if (!
|
|
164
|
+
if (!excludedComparePaths.length) {
|
|
131
165
|
return value;
|
|
166
|
+
}
|
|
132
167
|
const cloned = cloneJsonSafe(value);
|
|
133
168
|
for (const p of excludedComparePaths) {
|
|
134
169
|
deletePath(cloned, p);
|
|
135
170
|
}
|
|
136
171
|
return cloned;
|
|
137
172
|
};
|
|
173
|
+
const baselineTarget = options.baselineOut?.target;
|
|
174
|
+
const candidateTarget = options.candidateOut?.target;
|
|
175
|
+
const baselineProviderKey = typeof baselineTarget?.providerKey === 'string' ? String(baselineTarget.providerKey) : undefined;
|
|
176
|
+
const candidateProviderKey = typeof candidateTarget?.providerKey === 'string' ? String(candidateTarget.providerKey) : undefined;
|
|
177
|
+
const baselineRuntimeKey = typeof baselineTarget?.runtimeKey === 'string' ? String(baselineTarget.runtimeKey) : undefined;
|
|
178
|
+
const candidateRuntimeKey = typeof candidateTarget?.runtimeKey === 'string' ? String(candidateTarget.runtimeKey) : undefined;
|
|
179
|
+
const routingDrift = Boolean(baselineProviderKey && candidateProviderKey && baselineProviderKey !== candidateProviderKey) ||
|
|
180
|
+
Boolean(baselineRuntimeKey && candidateRuntimeKey && baselineRuntimeKey !== candidateRuntimeKey);
|
|
138
181
|
const diffs = diffPayloads(prepareForDiff(options.baselineOut), prepareForDiff(options.candidateOut));
|
|
139
|
-
if (!diffs.length)
|
|
182
|
+
if (!diffs.length && routingDrift && ignoreTargetSelection) {
|
|
183
|
+
const llmsVersion = resolveLlmswitchCoreVersion();
|
|
184
|
+
const record = {
|
|
185
|
+
kind: 'unified-hub-shadow-runtime-routing-drift',
|
|
186
|
+
timestamp: new Date().toISOString(),
|
|
187
|
+
requestId: options.requestId,
|
|
188
|
+
entryEndpoint: options.entryEndpoint,
|
|
189
|
+
routeHint: options.routeHint,
|
|
190
|
+
attempt: options.attempt,
|
|
191
|
+
excludedProviderKeys: options.excludedProviderKeys || [],
|
|
192
|
+
runtime: {
|
|
193
|
+
routecodex: {
|
|
194
|
+
version: buildInfo.version,
|
|
195
|
+
mode: buildInfo.mode
|
|
196
|
+
},
|
|
197
|
+
llmswitchCore: llmsVersion ? { version: llmsVersion } : undefined,
|
|
198
|
+
node: { version: process.version }
|
|
199
|
+
},
|
|
200
|
+
baselineMode: options.baselineMode,
|
|
201
|
+
candidateMode: options.candidateMode,
|
|
202
|
+
baselineTarget: baselineTarget ?? null,
|
|
203
|
+
candidateTarget: candidateTarget ?? null
|
|
204
|
+
};
|
|
205
|
+
const file = await writeErrorsampleJson({
|
|
206
|
+
group: 'unified-hub-shadow-runtime-routing',
|
|
207
|
+
kind: 'route-drift',
|
|
208
|
+
payload: record
|
|
209
|
+
});
|
|
210
|
+
// eslint-disable-next-line no-console
|
|
211
|
+
console.error(`[unified-hub-shadow-runtime] wrote routing drift errorsample: ${file}`);
|
|
140
212
|
return;
|
|
213
|
+
}
|
|
214
|
+
if (!diffs.length) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
141
217
|
const llmsVersion = resolveLlmswitchCoreVersion();
|
|
142
218
|
const record = {
|
|
143
219
|
kind: 'unified-hub-shadow-runtime-diff',
|