@jsonstudio/rcc 0.89.1189 → 0.89.1348
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- 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 +74 -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 +91 -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 +36 -0
- package/dist/cli/config/init-config.js +180 -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-cli/gemini-cli-protocol-client.js +1 -1
- package/dist/client/gemini-cli/gemini-cli-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/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 +237 -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 +189 -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 +314 -71
- 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/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/core/config/camoufox-launcher.js +35 -4
- package/dist/providers/core/config/camoufox-launcher.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 -2
- package/dist/providers/core/runtime/base-provider.js +74 -69
- package/dist/providers/core/runtime/base-provider.js.map +1 -1
- package/dist/providers/core/runtime/gemini-cli-http-provider.js +6 -4
- package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
- package/dist/providers/core/runtime/http-request-executor.js +2 -2
- package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
- package/dist/providers/core/runtime/http-transport-provider.d.ts +14 -0
- package/dist/providers/core/runtime/http-transport-provider.js +111 -5
- 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/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 +16 -3
- 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 +3 -2
- package/dist/server/handlers/handler-utils.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.d.ts +18 -0
- package/dist/server/runtime/http-server/hub-shadow-compare.js +256 -0
- package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -0
- package/dist/server/runtime/http-server/index.d.ts +7 -2
- package/dist/server/runtime/http-server/index.js +287 -49
- 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 +10 -19
- package/dist/server/runtime/http-server/request-executor.js.map +1 -1
- package/dist/server/runtime/http-server/routes.js +8 -2
- 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/errorsamples.d.ts +5 -0
- package/dist/utils/errorsamples.js +27 -0
- package/dist/utils/errorsamples.js.map +1 -0
- 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.d.ts +1 -0
- package/dist/utils/runtime-versions.js +39 -0
- package/dist/utils/runtime-versions.js.map +1 -0
- package/docs/ARCHITECTURE.md +402 -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/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 +82 -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/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 +551 -0
- package/docs/verification/modelscope-verify.md +59 -0
- package/docs/web-search-service-design.md +322 -0
- package/package.json +12 -7
- package/scripts/camoufox/launch-auth.mjs +193 -58
- package/scripts/monitor-diff.mjs +126 -0
- package/scripts/pack-mode.mjs +19 -1
- package/scripts/pack-rcc.mjs +63 -0
- package/scripts/unified-hub-shadow-compare.mjs +33 -13
- 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
|
@@ -3,6 +3,7 @@ import { spawn } from 'node:child_process';
|
|
|
3
3
|
import process from 'node:process';
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
+
import os from 'node:os';
|
|
6
7
|
import { fileURLToPath } from 'node:url';
|
|
7
8
|
|
|
8
9
|
if (String(process.env.ROUTECODEX_VERIFY_SKIP || '').trim() === '1') {
|
|
@@ -12,11 +13,14 @@ if (String(process.env.ROUTECODEX_VERIFY_SKIP || '').trim() === '1') {
|
|
|
12
13
|
|
|
13
14
|
const VERIFY_PORT = process.env.ROUTECODEX_VERIFY_PORT || '5580';
|
|
14
15
|
const VERIFY_BASE = process.env.ROUTECODEX_VERIFY_BASE_URL || `http://127.0.0.1:${VERIFY_PORT}`;
|
|
15
|
-
const
|
|
16
|
-
process.env.ROUTECODEX_VERIFY_CONFIG ||
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
16
|
+
const EXPLICIT_VERIFY_CONFIG = String(
|
|
17
|
+
process.env.ROUTECODEX_VERIFY_CONFIG || process.env.ROUTECODEX_CONFIG_PATH || ''
|
|
18
|
+
).trim();
|
|
19
|
+
const DEFAULT_USER_CONFIG = `${process.env.HOME || ''}/.routecodex/config.json`;
|
|
20
|
+
const USE_USER_CONFIG = String(process.env.ROUTECODEX_VERIFY_USE_USER_CONFIG || '').trim() === '1';
|
|
21
|
+
const GEMINI_CLI_CONFIG =
|
|
22
|
+
process.env.ROUTECODEX_VERIFY_GEMINI_CLI_CONFIG ||
|
|
23
|
+
`${process.env.HOME || ''}/.routecodex/provider/gemini-cli/config.v1.json`;
|
|
20
24
|
|
|
21
25
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
22
26
|
const DEFAULT_AGENTS_PATH = path.resolve(__dirname, '..', 'AGENTS.md');
|
|
@@ -48,21 +52,27 @@ function buildAuthHeaders(serverApiKey) {
|
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
async function main() {
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
const resolved = resolveVerifyConfig();
|
|
56
|
+
if (!resolved?.configPath) {
|
|
57
|
+
console.error('❌ verify config 未设置,无法运行端到端校验');
|
|
53
58
|
process.exit(1);
|
|
54
59
|
}
|
|
55
60
|
|
|
56
|
-
console.log(`[verify:e2e-toolcall] 使用配置: ${
|
|
57
|
-
const serverApiKey = readServerApiKeyFromConfig(
|
|
61
|
+
console.log(`[verify:e2e-toolcall] 使用配置: ${resolved.configPath}`);
|
|
62
|
+
const serverApiKey = readServerApiKeyFromConfig(resolved.configPath);
|
|
58
63
|
const authHeaders = buildAuthHeaders(serverApiKey);
|
|
59
64
|
const serverEnv = {
|
|
60
65
|
...process.env,
|
|
61
|
-
ROUTECODEX_CONFIG_PATH:
|
|
66
|
+
ROUTECODEX_CONFIG_PATH: resolved.configPath,
|
|
62
67
|
ROUTECODEX_PORT: VERIFY_PORT,
|
|
63
68
|
ROUTECODEX_V2_HOOKS: '0',
|
|
64
69
|
RCC_V2_HOOKS: '0'
|
|
65
70
|
};
|
|
71
|
+
if (resolved.mode === 'mock') {
|
|
72
|
+
serverEnv.ROUTECODEX_USE_MOCK = '1';
|
|
73
|
+
serverEnv.ROUTECODEX_MOCK_CONFIG_PATH = resolved.configPath;
|
|
74
|
+
serverEnv.ROUTECODEX_MOCK_VALIDATE_NAMES = '1';
|
|
75
|
+
}
|
|
66
76
|
|
|
67
77
|
const server = spawn('node', ['dist/index.js'], {
|
|
68
78
|
env: serverEnv,
|
|
@@ -82,7 +92,7 @@ async function main() {
|
|
|
82
92
|
await waitForServer();
|
|
83
93
|
await waitForRouterWarmup();
|
|
84
94
|
await runModelsSmokeCheck(authHeaders);
|
|
85
|
-
await runToolcallVerification(authHeaders);
|
|
95
|
+
await runToolcallVerification(authHeaders, resolved.defaultModel, resolved.mode);
|
|
86
96
|
console.log('✅ 端到端工具调用校验通过');
|
|
87
97
|
|
|
88
98
|
await runDaemonAdminSmokeCheck(authHeaders);
|
|
@@ -92,24 +102,85 @@ async function main() {
|
|
|
92
102
|
await runGeminiCliStartupCheck();
|
|
93
103
|
} finally {
|
|
94
104
|
shutdown();
|
|
105
|
+
if (resolved.tempDir) {
|
|
106
|
+
try {
|
|
107
|
+
fs.rmSync(resolved.tempDir, { recursive: true, force: true });
|
|
108
|
+
} catch {
|
|
109
|
+
// ignore cleanup failure
|
|
110
|
+
}
|
|
111
|
+
}
|
|
95
112
|
}
|
|
96
113
|
}
|
|
97
114
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
115
|
+
function resolveVerifyConfig() {
|
|
116
|
+
if (EXPLICIT_VERIFY_CONFIG) {
|
|
117
|
+
return { configPath: EXPLICIT_VERIFY_CONFIG, defaultModel: 'glm-4.6', mode: 'user', tempDir: null };
|
|
118
|
+
}
|
|
119
|
+
if (USE_USER_CONFIG) {
|
|
120
|
+
return { configPath: DEFAULT_USER_CONFIG, defaultModel: 'glm-4.6', mode: 'user', tempDir: null };
|
|
121
|
+
}
|
|
122
|
+
return writeTempMockVerifyConfig();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function writeTempMockVerifyConfig() {
|
|
126
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'routecodex-verify-mock-'));
|
|
127
|
+
const file = path.join(dir, 'config.json');
|
|
128
|
+
const port = Number.parseInt(String(VERIFY_PORT), 10) || 5580;
|
|
129
|
+
const config = {
|
|
130
|
+
version: '1.0.0',
|
|
131
|
+
httpserver: { host: '127.0.0.1', port, apikey: 'verify-key' },
|
|
132
|
+
virtualrouter: {
|
|
133
|
+
inputProtocol: 'openai',
|
|
134
|
+
outputProtocol: 'openai',
|
|
135
|
+
providers: {
|
|
136
|
+
mock: {
|
|
137
|
+
id: 'mock',
|
|
138
|
+
enabled: true,
|
|
139
|
+
type: 'mock-provider',
|
|
140
|
+
providerType: 'responses',
|
|
141
|
+
baseURL: 'https://mock.local/mock',
|
|
142
|
+
compatibilityProfile: 'compat:passthrough',
|
|
143
|
+
providerId: 'fai.default.gpt-5.1',
|
|
144
|
+
modelId: 'gpt-5.1',
|
|
145
|
+
auth: {
|
|
146
|
+
type: 'apikey',
|
|
147
|
+
keys: { key1: { value: 'mock-sample-key' } }
|
|
148
|
+
},
|
|
149
|
+
models: { 'gpt-5.1': { maxTokens: 32768 } },
|
|
150
|
+
responses: { toolCallIdStyle: 'fc' }
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
routing: { default: ['mock.key1.gpt-5.1'] }
|
|
103
154
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
155
|
+
};
|
|
156
|
+
fs.writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
|
|
157
|
+
return { configPath: file, defaultModel: 'gpt-5.1', mode: 'mock', tempDir: dir };
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
async function runModelsSmokeCheck(authHeaders) {
|
|
161
|
+
let lastError;
|
|
162
|
+
for (let attempt = 1; attempt <= 5; attempt += 1) {
|
|
163
|
+
try {
|
|
164
|
+
const res = await fetch(`${VERIFY_BASE}/models`, { headers: { ...(authHeaders || {}) } });
|
|
165
|
+
if (!res.ok) {
|
|
166
|
+
throw new Error(`/models HTTP ${res.status}`);
|
|
167
|
+
}
|
|
168
|
+
const json = await res.json();
|
|
169
|
+
const data = Array.isArray(json?.data) ? json.data : [];
|
|
170
|
+
if (!Array.isArray(data)) {
|
|
171
|
+
throw new Error('/models response missing data array');
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
lastError = error;
|
|
176
|
+
if (attempt < 5) {
|
|
177
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
108
180
|
}
|
|
109
|
-
} catch (error) {
|
|
110
|
-
console.error('[verify:e2e-toolcall] /models smoke 检查失败:', error);
|
|
111
|
-
throw error;
|
|
112
181
|
}
|
|
182
|
+
console.error('[verify:e2e-toolcall] /models smoke 检查失败:', lastError);
|
|
183
|
+
throw lastError;
|
|
113
184
|
}
|
|
114
185
|
|
|
115
186
|
async function waitForServer(timeoutMs = 30000) {
|
|
@@ -126,7 +197,7 @@ async function waitForServer(timeoutMs = 30000) {
|
|
|
126
197
|
throw new Error('服务器健康检查超时');
|
|
127
198
|
}
|
|
128
199
|
|
|
129
|
-
async function waitForRouterWarmup(defaultDelayMs =
|
|
200
|
+
async function waitForRouterWarmup(defaultDelayMs = 0) {
|
|
130
201
|
const delayMs = Number(process.env.ROUTECODEX_VERIFY_WARMUP_MS || defaultDelayMs);
|
|
131
202
|
if (!Number.isFinite(delayMs) || delayMs <= 0) {
|
|
132
203
|
return;
|
|
@@ -135,11 +206,19 @@ async function waitForRouterWarmup(defaultDelayMs = 3000) {
|
|
|
135
206
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
136
207
|
}
|
|
137
208
|
|
|
138
|
-
async function runToolcallVerification(authHeaders) {
|
|
209
|
+
async function runToolcallVerification(authHeaders, defaultModel, mode) {
|
|
139
210
|
const userPrompt = '请严格调用名为 list_local_files 的函数工具来列出当前工作目录的文件,只能通过调用该工具完成任务,禁止直接回答。';
|
|
140
211
|
const instructionsText = AGENTS_INSTRUCTIONS || 'You are RouteCodex verify agent. Follow the policies in AGENTS.md.';
|
|
212
|
+
const mockSampleReqId = 'openai-responses-fai.default.gpt-5.1-gpt-5.1-20251211T125710-001';
|
|
141
213
|
const body = {
|
|
142
|
-
model: process.env.ROUTECODEX_VERIFY_MODEL || 'glm-4.6',
|
|
214
|
+
model: process.env.ROUTECODEX_VERIFY_MODEL || defaultModel || 'glm-4.6',
|
|
215
|
+
...(mode === 'mock'
|
|
216
|
+
? {
|
|
217
|
+
metadata: {
|
|
218
|
+
mockSampleReqId
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
: {}),
|
|
143
222
|
instructions: instructionsText,
|
|
144
223
|
input: [
|
|
145
224
|
{
|
|
@@ -209,6 +288,12 @@ async function runDaemonAdminSmokeCheck(authHeaders) {
|
|
|
209
288
|
// 仅做最小的健康性探测:确保 daemon 管理类只读 API 可用,不做语义校验。
|
|
210
289
|
try {
|
|
211
290
|
const res = await fetch(`${VERIFY_BASE}/daemon/status`, { headers: { ...(authHeaders || {}) } });
|
|
291
|
+
if (res.status === 401) {
|
|
292
|
+
// Daemon admin endpoints are protected by password login (cookie session).
|
|
293
|
+
// Do not fail the build when the user has not logged in.
|
|
294
|
+
console.warn('[verify:e2e-toolcall] /daemon/status returned 401 (unauthorized); skip daemon-admin smoke checks');
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
212
297
|
if (!res.ok) {
|
|
213
298
|
throw new Error(`daemon/status HTTP ${res.status}`);
|
|
214
299
|
}
|
|
@@ -225,6 +310,10 @@ async function runDaemonAdminSmokeCheck(authHeaders) {
|
|
|
225
310
|
for (const path of paths) {
|
|
226
311
|
try {
|
|
227
312
|
const res = await fetch(`${VERIFY_BASE}${path}`, { headers: { ...(authHeaders || {}) } });
|
|
313
|
+
if (res.status === 401) {
|
|
314
|
+
console.warn(`[verify:e2e-toolcall] ${path} returned 401 (unauthorized); skip remaining daemon-admin smoke checks`);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
228
317
|
if (!res.ok) {
|
|
229
318
|
throw new Error(`${path} HTTP ${res.status}`);
|
|
230
319
|
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
type PipelineStage = 'inbound' | 'outbound';
|
|
2
|
-
interface PipelineRouteConfig {
|
|
3
|
-
id: string;
|
|
4
|
-
name?: string;
|
|
5
|
-
entryEndpoints?: string[];
|
|
6
|
-
providerProtocols?: string[];
|
|
7
|
-
streaming?: string;
|
|
8
|
-
processMode?: string;
|
|
9
|
-
mode?: string;
|
|
10
|
-
stage?: PipelineStage;
|
|
11
|
-
nodes?: Array<Record<string, unknown>>;
|
|
12
|
-
}
|
|
13
|
-
interface PipelineDocument {
|
|
14
|
-
pipelineConfigVersion?: string;
|
|
15
|
-
pipelines: PipelineRouteConfig[];
|
|
16
|
-
}
|
|
17
|
-
interface ResolveOptions {
|
|
18
|
-
stage?: PipelineStage;
|
|
19
|
-
providerProtocol?: string;
|
|
20
|
-
processMode?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface PipelineResolution {
|
|
23
|
-
id: string;
|
|
24
|
-
entryEndpoint: string;
|
|
25
|
-
stage?: PipelineStage;
|
|
26
|
-
processMode: 'chat' | 'passthrough';
|
|
27
|
-
providerProtocol: string;
|
|
28
|
-
streaming?: 'auto' | 'always' | 'never';
|
|
29
|
-
passthrough?: boolean;
|
|
30
|
-
source?: string;
|
|
31
|
-
}
|
|
32
|
-
declare class LLMSwitchPipelineRegistry {
|
|
33
|
-
private document;
|
|
34
|
-
private source?;
|
|
35
|
-
private version?;
|
|
36
|
-
hasDocument(): boolean;
|
|
37
|
-
setDocument(doc: PipelineDocument, meta?: {
|
|
38
|
-
source?: string;
|
|
39
|
-
version?: string;
|
|
40
|
-
}): void;
|
|
41
|
-
getVersion(): string | undefined;
|
|
42
|
-
resolve(entryEndpointRaw: string, options?: ResolveOptions): PipelineResolution | null;
|
|
43
|
-
private normalizeEndpoint;
|
|
44
|
-
private normalizeProtocol;
|
|
45
|
-
private normalizeProcess;
|
|
46
|
-
private normalizeStreaming;
|
|
47
|
-
private normalizeMode;
|
|
48
|
-
private matchesProtocol;
|
|
49
|
-
private pickProtocol;
|
|
50
|
-
}
|
|
51
|
-
export declare const llmswitchPipelineRegistry: LLMSwitchPipelineRegistry;
|
|
52
|
-
export declare function ensureLlmswitchPipelineRegistry(options?: {
|
|
53
|
-
configPath?: string;
|
|
54
|
-
baseDir?: string;
|
|
55
|
-
force?: boolean;
|
|
56
|
-
}): Promise<void>;
|
|
57
|
-
export {};
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import { resolvePipelineConfigCandidates } from '../config/pipeline-config-path.js';
|
|
5
|
-
function asRecord(value) {
|
|
6
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
7
|
-
return value;
|
|
8
|
-
}
|
|
9
|
-
return undefined;
|
|
10
|
-
}
|
|
11
|
-
class LLMSwitchPipelineRegistry {
|
|
12
|
-
document = null;
|
|
13
|
-
source;
|
|
14
|
-
version;
|
|
15
|
-
hasDocument() {
|
|
16
|
-
return !!this.document;
|
|
17
|
-
}
|
|
18
|
-
setDocument(doc, meta) {
|
|
19
|
-
if (!doc || !Array.isArray(doc.pipelines) || doc.pipelines.length === 0) {
|
|
20
|
-
throw new Error('[LLMSwitchPipelineRegistry] pipelineConfig 内容为空');
|
|
21
|
-
}
|
|
22
|
-
this.document = doc;
|
|
23
|
-
this.source = meta?.source;
|
|
24
|
-
this.version = meta?.version || doc.pipelineConfigVersion;
|
|
25
|
-
}
|
|
26
|
-
getVersion() {
|
|
27
|
-
return this.version;
|
|
28
|
-
}
|
|
29
|
-
resolve(entryEndpointRaw, options = {}) {
|
|
30
|
-
const entryEndpoint = this.normalizeEndpoint(entryEndpointRaw);
|
|
31
|
-
if (!entryEndpoint) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
const doc = this.document;
|
|
35
|
-
if (!doc) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
const stage = options.stage;
|
|
39
|
-
const providerProtocol = this.normalizeProtocol(options.providerProtocol);
|
|
40
|
-
const preferredProcess = this.normalizeProcess(options.processMode);
|
|
41
|
-
const endpointMatches = doc.pipelines.filter((pipe) => {
|
|
42
|
-
if (!Array.isArray(pipe.entryEndpoints) || pipe.entryEndpoints.length === 0) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return pipe.entryEndpoints.some((ep) => this.normalizeEndpoint(ep) === entryEndpoint);
|
|
46
|
-
});
|
|
47
|
-
if (!endpointMatches.length) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
const stageMatches = stage
|
|
51
|
-
? endpointMatches.filter((pipe) => pipe.stage && pipe.stage.toLowerCase() === stage)
|
|
52
|
-
: endpointMatches;
|
|
53
|
-
const stagePool = stage && stageMatches.length ? stageMatches : endpointMatches;
|
|
54
|
-
const providerMatches = providerProtocol
|
|
55
|
-
? stagePool.filter((pipe) => this.matchesProtocol(pipe, providerProtocol))
|
|
56
|
-
: [];
|
|
57
|
-
const pool = providerMatches.length ? providerMatches : stagePool;
|
|
58
|
-
const processMatches = preferredProcess
|
|
59
|
-
? pool.filter((pipe) => this.normalizeProcess(pipe.processMode) === preferredProcess)
|
|
60
|
-
: [];
|
|
61
|
-
const finalPool = processMatches.length ? processMatches : pool;
|
|
62
|
-
const target = finalPool[0];
|
|
63
|
-
if (!target) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
const resolvedProcess = this.normalizeProcess(target.processMode) || preferredProcess || 'chat';
|
|
67
|
-
const resolvedProtocol = this.pickProtocol(target, providerProtocol);
|
|
68
|
-
const streaming = this.normalizeStreaming(target.streaming);
|
|
69
|
-
const passthrough = resolvedProcess === 'passthrough' || this.normalizeMode(target.mode) === 'passthrough';
|
|
70
|
-
return {
|
|
71
|
-
id: target.id,
|
|
72
|
-
entryEndpoint,
|
|
73
|
-
stage: target.stage || stage,
|
|
74
|
-
processMode: resolvedProcess === 'passthrough' ? 'passthrough' : 'chat',
|
|
75
|
-
providerProtocol: resolvedProtocol,
|
|
76
|
-
streaming,
|
|
77
|
-
passthrough,
|
|
78
|
-
source: this.source
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
normalizeEndpoint(value) {
|
|
82
|
-
if (!value) {
|
|
83
|
-
return '';
|
|
84
|
-
}
|
|
85
|
-
return value.trim().toLowerCase();
|
|
86
|
-
}
|
|
87
|
-
normalizeProtocol(value) {
|
|
88
|
-
if (!value || typeof value !== 'string') {
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
const trimmed = value.trim().toLowerCase();
|
|
92
|
-
return trimmed || undefined;
|
|
93
|
-
}
|
|
94
|
-
normalizeProcess(value) {
|
|
95
|
-
if (!value || typeof value !== 'string') {
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
const normalized = value.trim().toLowerCase();
|
|
99
|
-
if (normalized === 'passthrough') {
|
|
100
|
-
return 'passthrough';
|
|
101
|
-
}
|
|
102
|
-
if (normalized === 'chat') {
|
|
103
|
-
return 'chat';
|
|
104
|
-
}
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
normalizeStreaming(value) {
|
|
108
|
-
if (!value || typeof value !== 'string') {
|
|
109
|
-
return undefined;
|
|
110
|
-
}
|
|
111
|
-
const normalized = value.trim().toLowerCase();
|
|
112
|
-
if (normalized === 'auto' || normalized === 'always' || normalized === 'never') {
|
|
113
|
-
return normalized;
|
|
114
|
-
}
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
normalizeMode(value) {
|
|
118
|
-
if (!value || typeof value !== 'string') {
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
const normalized = value.trim().toLowerCase();
|
|
122
|
-
if (normalized === 'passthrough') {
|
|
123
|
-
return 'passthrough';
|
|
124
|
-
}
|
|
125
|
-
if (normalized === 'chat') {
|
|
126
|
-
return 'chat';
|
|
127
|
-
}
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
matchesProtocol(pipe, protocol) {
|
|
131
|
-
if (!protocol) {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
if (!Array.isArray(pipe.providerProtocols) || pipe.providerProtocols.length === 0) {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
return pipe.providerProtocols.some((p) => this.normalizeProtocol(p) === protocol);
|
|
138
|
-
}
|
|
139
|
-
pickProtocol(pipe, fallback) {
|
|
140
|
-
const fromPipeline = Array.isArray(pipe.providerProtocols) && pipe.providerProtocols.length
|
|
141
|
-
? this.normalizeProtocol(pipe.providerProtocols[0])
|
|
142
|
-
: undefined;
|
|
143
|
-
return fromPipeline || this.normalizeProtocol(fallback) || 'openai-chat';
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
export const llmswitchPipelineRegistry = new LLMSwitchPipelineRegistry();
|
|
147
|
-
let initPromise = null;
|
|
148
|
-
export async function ensureLlmswitchPipelineRegistry(options) {
|
|
149
|
-
if (llmswitchPipelineRegistry.hasDocument() && !options?.force) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
if (!initPromise) {
|
|
153
|
-
initPromise = (async () => {
|
|
154
|
-
const { doc, source, version } = await loadPipelineDocument(options);
|
|
155
|
-
llmswitchPipelineRegistry.setDocument(doc, { source, version });
|
|
156
|
-
})().finally(() => {
|
|
157
|
-
initPromise = null;
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
return initPromise;
|
|
161
|
-
}
|
|
162
|
-
async function loadPipelineDocument(options) {
|
|
163
|
-
const baseDir = (options?.baseDir && options.baseDir.trim())
|
|
164
|
-
? path.resolve(options.baseDir.trim())
|
|
165
|
-
: resolveBaseDir();
|
|
166
|
-
const candidates = resolvePipelineConfigCandidates(baseDir, options?.configPath);
|
|
167
|
-
let lastError;
|
|
168
|
-
for (const candidate of candidates) {
|
|
169
|
-
try {
|
|
170
|
-
const raw = await fs.readFile(candidate, 'utf-8');
|
|
171
|
-
const parsed = JSON.parse(raw);
|
|
172
|
-
const doc = extractPipelineDocument(parsed);
|
|
173
|
-
if (!doc) {
|
|
174
|
-
throw new Error('文件缺少 llmSwitch.pipelineConfig 内容');
|
|
175
|
-
}
|
|
176
|
-
return {
|
|
177
|
-
doc,
|
|
178
|
-
source: candidate,
|
|
179
|
-
version: doc.pipelineConfigVersion || parsed?.pipelineConfigVersion || parsed?.llmSwitch?.pipelineConfigVersion
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
lastError = error;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
const err = lastError instanceof Error
|
|
187
|
-
? lastError
|
|
188
|
-
: new Error(String(lastError ?? '无法读取 pipeline-config.generated.json'));
|
|
189
|
-
throw err;
|
|
190
|
-
}
|
|
191
|
-
function extractPipelineDocument(source) {
|
|
192
|
-
const candidate = asRecord(source);
|
|
193
|
-
if (!candidate) {
|
|
194
|
-
return null;
|
|
195
|
-
}
|
|
196
|
-
const pipelines = candidate.pipelines;
|
|
197
|
-
if (Array.isArray(pipelines)) {
|
|
198
|
-
const pipelineConfigVersion = typeof candidate.pipelineConfigVersion === 'string'
|
|
199
|
-
? candidate.pipelineConfigVersion
|
|
200
|
-
: undefined;
|
|
201
|
-
return {
|
|
202
|
-
pipelineConfigVersion,
|
|
203
|
-
pipelines: pipelines
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
const llmSwitch = asRecord(candidate.llmSwitch);
|
|
207
|
-
if (llmSwitch) {
|
|
208
|
-
return extractPipelineDocument(llmSwitch);
|
|
209
|
-
}
|
|
210
|
-
const pipelineConfig = asRecord(candidate.pipelineConfig);
|
|
211
|
-
if (pipelineConfig) {
|
|
212
|
-
return extractPipelineDocument(pipelineConfig);
|
|
213
|
-
}
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
function resolveBaseDir() {
|
|
217
|
-
const env = String(process.env.ROUTECODEX_BASEDIR || process.env.RCC_BASEDIR || '').trim();
|
|
218
|
-
if (env) {
|
|
219
|
-
return path.resolve(env);
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
223
|
-
return path.resolve(path.dirname(__filename), '../../..');
|
|
224
|
-
}
|
|
225
|
-
catch {
|
|
226
|
-
return process.cwd();
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
//# sourceMappingURL=pipeline-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-registry.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/pipeline-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface ServerConfig {
|
|
2
|
-
port: number;
|
|
3
|
-
host: string;
|
|
4
|
-
}
|
|
5
|
-
export declare class RouteCodexServer {
|
|
6
|
-
constructor(_config: ServerConfig);
|
|
7
|
-
initialize(): Promise<void>;
|
|
8
|
-
start(): Promise<void>;
|
|
9
|
-
stop(): Promise<void>;
|
|
10
|
-
getStatus(): unknown;
|
|
11
|
-
isInitialized(): boolean;
|
|
12
|
-
isRunning(): boolean;
|
|
13
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export class RouteCodexServer {
|
|
2
|
-
constructor(_config) { }
|
|
3
|
-
async initialize() {
|
|
4
|
-
// no-op stub for V1 compatibility
|
|
5
|
-
}
|
|
6
|
-
async start() {
|
|
7
|
-
// no-op stub for V1 compatibility
|
|
8
|
-
}
|
|
9
|
-
async stop() {
|
|
10
|
-
// no-op stub for V1 compatibility
|
|
11
|
-
}
|
|
12
|
-
// The following helpers are provided only to satisfy the ServerInstance
|
|
13
|
-
// structural type used by ServerFactory in dev builds. V1 is effectively
|
|
14
|
-
// a no-op in this worktree.
|
|
15
|
-
getStatus() {
|
|
16
|
-
return { status: 'stub', version: 'v1' };
|
|
17
|
-
}
|
|
18
|
-
isInitialized() {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
isRunning() {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=RouteCodexServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteCodexServer.js","sourceRoot":"","sources":["../../src/server/RouteCodexServer.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IAC3B,YAAY,OAAqB,IAAG,CAAC;IAErC,KAAK,CAAC,UAAU;QACd,kCAAkC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,kCAAkC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,kCAAkC;IACpC,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,4BAA4B;IAC5B,SAAS;QACP,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { StageRecorder } from '@jsonstudio/llms/conversion/hub/format-adapters/index';
|
|
2
|
-
import type { AdapterContext } from '@jsonstudio/llms/conversion/hub/types/chat-envelope';
|
|
3
|
-
export interface SnapshotStageRecorderOptions {
|
|
4
|
-
context: AdapterContext;
|
|
5
|
-
endpoint: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class SnapshotStageRecorder implements StageRecorder {
|
|
8
|
-
private readonly options;
|
|
9
|
-
constructor(options: SnapshotStageRecorderOptions);
|
|
10
|
-
record(stage: string, payload: unknown): void;
|
|
11
|
-
}
|
|
12
|
-
export declare function createSnapshotRecorder(context: AdapterContext, endpoint: string): StageRecorder;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { writeSnapshotViaHooks } from '@jsonstudio/llms/conversion/shared/snapshot-hooks';
|
|
2
|
-
export class SnapshotStageRecorder {
|
|
3
|
-
options;
|
|
4
|
-
constructor(options) {
|
|
5
|
-
this.options = options;
|
|
6
|
-
}
|
|
7
|
-
record(stage, payload) {
|
|
8
|
-
void writeSnapshotViaHooks({
|
|
9
|
-
endpoint: this.options.endpoint,
|
|
10
|
-
stage,
|
|
11
|
-
requestId: this.options.context.requestId,
|
|
12
|
-
data: payload,
|
|
13
|
-
verbosity: 'verbose'
|
|
14
|
-
}).catch(() => {
|
|
15
|
-
/* ignore snapshot errors */
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export function createSnapshotRecorder(context, endpoint) {
|
|
20
|
-
return new SnapshotStageRecorder({ context, endpoint });
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=snapshot-recorder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-recorder.js","sourceRoot":"","sources":["../../../../src/v2/conversion/hub/snapshot-recorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAQ1F,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;IAAG,CAAC;IAEtE,MAAM,CAAC,KAAa,EAAE,OAAgB;QACpC,KAAK,qBAAqB,CAAC;YACzB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS;YACzC,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,4BAA4B;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAuB,EAAE,QAAgB;IAC9E,OAAO,IAAI,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|