@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
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Server-side Web Search Tool – Design
|
|
2
|
+
|
|
3
|
+
## Goals
|
|
4
|
+
|
|
5
|
+
- Provide a single, server-side `web_search` tool that any provider/model can call as a normal function/tool.
|
|
6
|
+
- Use Virtual Router to pick which *search backend* (GLM / Gemini / others) actually performs web search.
|
|
7
|
+
- Keep the main model routing unchanged: normal routes decide the “brain” model; `web_search` only plugs in as a tool.
|
|
8
|
+
- Make search backends pluggable and config-driven; allow multiple engines with clear semantics (e.g. GLM vs Google/Gemini).
|
|
9
|
+
|
|
10
|
+
## High-level Architecture
|
|
11
|
+
|
|
12
|
+
### Roles
|
|
13
|
+
|
|
14
|
+
- **Main model**
|
|
15
|
+
- Selected by existing virtual router routes (`default`, `coding`, `longcontext`, …).
|
|
16
|
+
- Sees a standard `web_search` function tool in its `tools` list when search is enabled.
|
|
17
|
+
- Decides when to call `web_search` and with which arguments (including engine choice when multiple are exposed).
|
|
18
|
+
|
|
19
|
+
- **Server-side `web_search` tool**
|
|
20
|
+
- Implemented inside llmswitch-core / Hub Pipeline.
|
|
21
|
+
- Intercepts `web_search` tool calls from the main model and runs the actual web search via a *search backend*.
|
|
22
|
+
- Returns a normalized result payload back to the main model as a tool result (tool role / function_call_output).
|
|
23
|
+
|
|
24
|
+
- **Search backend(s)**
|
|
25
|
+
- One or more “search-capable” models, managed by Virtual Router:
|
|
26
|
+
- v1: `glm.glm-4.7` (via GLM WebSearchToolSchema).
|
|
27
|
+
- Future: Gemini (`gemini-2.5-flash-lite`, `gemini-3-flash`, …).
|
|
28
|
+
- Only used for the *secondary* “search” call, not as the main model for the user request.
|
|
29
|
+
|
|
30
|
+
### Routing Responsibilities
|
|
31
|
+
|
|
32
|
+
- **Main route (`chatRoute`)**
|
|
33
|
+
- Same as today: virtual router chooses providers for `/v1/chat/completions` / `/v1/responses` etc.
|
|
34
|
+
- `web_search` does **not** override the main route or main provider/model.
|
|
35
|
+
|
|
36
|
+
- **Search intent route (`web_search` intent)**
|
|
37
|
+
- A separate “intent flag” carried in pipeline metadata, derived from classifier output based on **the latest user message** (text-only).
|
|
38
|
+
- Intent rules (substring match, not regex):
|
|
39
|
+
- **Chinese – hard hits (100%):** `"谷歌搜索"`, `"谷歌一下"`, `"百度一下"` 一旦出现,即视为联网搜索意图;这三种说法都会被视为 “Google‑preferred”(优先尝试谷歌系搜索后端)。
|
|
40
|
+
- **Chinese – soft hits:**
|
|
41
|
+
- 包含 `"上网"` 视为联网搜索意图;
|
|
42
|
+
- 或者同时包含动词 {`"搜索"`, `"查找"`, `"搜"`} 与名词 {`"网络"`, `"联网"`, `"新闻"`, `"信息"`, `"报道"`} 中任意组合。
|
|
43
|
+
- **English – hard hits:** `"/search"`, `"web search"`, `"websearch"`, `"internet search"`, `"search the web"`, `"web-search"`, `"internet-search"` 等常见短语。
|
|
44
|
+
- **English – soft hits:** 当文本里同时包含动词 {`"search"`, `"find"`, `"look up"`, `"look for"`, `"google"`} 与名词 {`"web"`, `"internet"`, `"online"`, `"news"`, `"information"`, `"info"`, `"report"`, `"reports"`, `"article"`, `"articles"`} 时,也视为联网搜索意图;其中包含 `"google"` 时会被视为 “Google 优先”。
|
|
45
|
+
- Controls whether the server injects the `web_search` tool for the main model (and whether the intent is marked as “Google‑preferred” for engine filtering).
|
|
46
|
+
|
|
47
|
+
- **Search backend route (`routing.web_search`)**
|
|
48
|
+
- Dedicated VR route that lists search backend targets (e.g. `glm.glm-4.7`, later Gemini).
|
|
49
|
+
- Used only for the *secondary* search call, inside the server-side `web_search` tool implementation.
|
|
50
|
+
- Not exposed as a direct model name to clients.
|
|
51
|
+
|
|
52
|
+
### Separation from existing `search`
|
|
53
|
+
|
|
54
|
+
- Existing “search files / code / knowledge base” behaviour currently wired via `websearch` routes should be:
|
|
55
|
+
- Renamed to `search` (config + docs), as it is not “web search” but internal search.
|
|
56
|
+
- Kept functionally identical (same providers/behaviour).
|
|
57
|
+
- New `web_search` is strictly *web* search:
|
|
58
|
+
- Uses external search-capable models / services.
|
|
59
|
+
- Implemented as a server-side tool that internally fans out to GLM / Gemini / others.
|
|
60
|
+
|
|
61
|
+
## Configuration Model
|
|
62
|
+
|
|
63
|
+
### Web Search Engines
|
|
64
|
+
|
|
65
|
+
At the virtual router / host config level, expose a compact `webSearch` section that enumerates available engines and how they map to providers:
|
|
66
|
+
|
|
67
|
+
```jsonc
|
|
68
|
+
{
|
|
69
|
+
"webSearch": {
|
|
70
|
+
"engines": [
|
|
71
|
+
{
|
|
72
|
+
"id": "glm",
|
|
73
|
+
"providerKey": "glm.glm-4.7",
|
|
74
|
+
"description": "GLM 4.7 – better for Chinese / domestic news",
|
|
75
|
+
"default": true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "google",
|
|
79
|
+
"providerKey": "antigravity.geetasamodgeetasamoda.gemini-3-flash",
|
|
80
|
+
"description": "Gemini – broader global web coverage",
|
|
81
|
+
"default": false
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"injectPolicy": "selective" // or "always"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Behaviour:
|
|
90
|
+
|
|
91
|
+
- `engines` may contain:
|
|
92
|
+
- Only one engine → server can treat it as implicit default; `engine` argument becomes optional.
|
|
93
|
+
- Multiple engines, no `default:true` → server does **not** choose for the model; instead, enumerates all engine ids and descriptions in the tool schema, so the main model can pick.
|
|
94
|
+
- `injectPolicy`:
|
|
95
|
+
- `"selective"`: only inject `web_search` when the classifier detects web search intent (or a sticky flag is set).
|
|
96
|
+
- `"always"`: whenever this route/provider is used, always inject `web_search` into `tools`.
|
|
97
|
+
- **Google‑preferred selection (中文 “谷歌搜索 / 谷歌一下”):**
|
|
98
|
+
- When the intent classifier detects explicit “Google search” wording (e.g. 中文 `"谷歌搜索"`, `"谷歌一下"` or English text mentioning `"google"` together with search verbs), the server treats this as a **Google‑preferred** web search intent.
|
|
99
|
+
- In Google‑preferred mode, the injected `web_search` tool’s `engine.enum` is **narrowed** to:
|
|
100
|
+
- Engines whose `providerKey` is backed by Gemini CLI / Antigravity search backends (e.g. `gemini-cli.*`, `antigravity.*`); and
|
|
101
|
+
- Engines whose `id` contains `"google"` (to support configs that encode Google in the id).
|
|
102
|
+
- If this filtered set is non‑empty, only these engines are exposed to the main model for this call. If the filtered set is empty, the server falls back to the full `engines` list.
|
|
103
|
+
|
|
104
|
+
### Search Backend Route
|
|
105
|
+
|
|
106
|
+
The actual “search backend” route is declared as:
|
|
107
|
+
|
|
108
|
+
```jsonc
|
|
109
|
+
{
|
|
110
|
+
"virtualrouter": {
|
|
111
|
+
"routing": {
|
|
112
|
+
"web_search": [
|
|
113
|
+
{
|
|
114
|
+
"id": "web-search-backends",
|
|
115
|
+
"priority": 200,
|
|
116
|
+
"targets": [
|
|
117
|
+
"glm.glm-4.7"
|
|
118
|
+
// later: "antigravity.geetasamodgeetasamoda.gemini-3-flash", ...
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- This route is used only for the *secondary* search call from the server-side `web_search` tool.
|
|
128
|
+
- The mapping `engine.id → providerKey` is read from `webSearch.engines` and used to:
|
|
129
|
+
- Validate that the configured engines are present in `routing.web_search`.
|
|
130
|
+
- Find the correct backend when executing a web search.
|
|
131
|
+
|
|
132
|
+
## Server-side `web_search` Tool Schema
|
|
133
|
+
|
|
134
|
+
This is the unified tool presented to main models (OpenAI Chat / Responses shape):
|
|
135
|
+
|
|
136
|
+
```jsonc
|
|
137
|
+
{
|
|
138
|
+
"type": "function",
|
|
139
|
+
"function": {
|
|
140
|
+
"name": "web_search",
|
|
141
|
+
"description": "Perform web search for news and web pages using configured search engines.",
|
|
142
|
+
"parameters": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"properties": {
|
|
145
|
+
"engine": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"enum": ["glm", "google"], // generated from config.webSearch.engines
|
|
148
|
+
"description": "Search engine id. For example: glm=better for Chinese/domestic information; google=better for global web coverage."
|
|
149
|
+
},
|
|
150
|
+
"query": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"description": "Search query or user question."
|
|
153
|
+
},
|
|
154
|
+
"recency": {
|
|
155
|
+
"type": "string",
|
|
156
|
+
"enum": ["oneDay", "oneWeek", "oneMonth", "oneYear", "noLimit"],
|
|
157
|
+
"description": "Time range filter; maps to backend-specific recency options."
|
|
158
|
+
},
|
|
159
|
+
"count": {
|
|
160
|
+
"type": "integer",
|
|
161
|
+
"minimum": 1,
|
|
162
|
+
"maximum": 50,
|
|
163
|
+
"description": "Number of results to retrieve."
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"required": ["query"]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Notes:
|
|
173
|
+
|
|
174
|
+
- If only one engine is configured:
|
|
175
|
+
- `engine` can be omitted by the main model; the server uses the sole engine as default.
|
|
176
|
+
- If multiple engines are configured and no `default:true` is present:
|
|
177
|
+
- The server does **not** pick an engine; it expects the main model to choose.
|
|
178
|
+
|
|
179
|
+
## Execution Flow
|
|
180
|
+
|
|
181
|
+
### 1. First request – main model
|
|
182
|
+
|
|
183
|
+
1. Client sends a standard `/v1/chat/completions` or `/v1/responses` request (no explicit `web_search` tool).
|
|
184
|
+
2. Hub Pipeline / Virtual Router:
|
|
185
|
+
- Runs the normal route classifier to pick `chatRoute` and main provider/model (e.g. `tab.gpt-5.2-codex`).
|
|
186
|
+
- Runs intent classification; if web search intent is detected (or `injectPolicy="always"`), it:
|
|
187
|
+
- Marks metadata with `searchIntentRoute = 'web_search'`.
|
|
188
|
+
- Appends the unified `web_search` function tool to `tools` for the main model.
|
|
189
|
+
3. Request is sent to the main provider with:
|
|
190
|
+
- The chosen model (from `chatRoute`).
|
|
191
|
+
- An augmented `tools` list containing `web_search`.
|
|
192
|
+
|
|
193
|
+
### 2. Main model emits `web_search` tool call
|
|
194
|
+
|
|
195
|
+
- The main provider responds with a function/tool call:
|
|
196
|
+
|
|
197
|
+
```jsonc
|
|
198
|
+
{
|
|
199
|
+
"role": "assistant",
|
|
200
|
+
"tool_calls": [
|
|
201
|
+
{
|
|
202
|
+
"id": "call_1",
|
|
203
|
+
"type": "function",
|
|
204
|
+
"function": {
|
|
205
|
+
"name": "web_search",
|
|
206
|
+
"arguments": "{\"engine\":\"glm\",\"query\":\"今天的国际新闻头条\",\"count\":3}"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
- Hub Pipeline detects `function.name === "web_search"` and *intercepts* it as a server-side tool:
|
|
214
|
+
- Parses `engine`, `query`, `recency`, `count` and validates against `webSearch.engines`.
|
|
215
|
+
|
|
216
|
+
### 3. Secondary request – search backend
|
|
217
|
+
|
|
218
|
+
- Based on the parsed `engine`:
|
|
219
|
+
- Look up the selected engine in `config.webSearch.engines`.
|
|
220
|
+
- Resolve its `providerKey` (e.g. `glm.glm-4.7`).
|
|
221
|
+
- A secondary request is constructed and sent via the internal pipeline:
|
|
222
|
+
|
|
223
|
+
```jsonc
|
|
224
|
+
{
|
|
225
|
+
"route": "web_search", // search backend route
|
|
226
|
+
"model": "glm.glm-4.7",
|
|
227
|
+
"messages": [
|
|
228
|
+
{
|
|
229
|
+
"role": "user",
|
|
230
|
+
"content": "今天的国际新闻头条"
|
|
231
|
+
}
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
- For each backend family, compat will:
|
|
237
|
+
- GLM: inject GLM’s `tools.web_search` schema (`type: "web_search"`, `web_search.search_engine`, `enable`, `search_result`, etc.) before sending upstream.
|
|
238
|
+
- Gemini: use Gemini’s equivalent search-specific schema when we add it.
|
|
239
|
+
|
|
240
|
+
### 4. Backend response → tool result
|
|
241
|
+
|
|
242
|
+
- The search backend returns:
|
|
243
|
+
- Answer text summarizing the news.
|
|
244
|
+
- Backend-specific metadata (e.g. GLM `web_search` field with hits, URLs, publish dates, etc.).
|
|
245
|
+
- Server-side `web_search` handler:
|
|
246
|
+
- Normalizes this response into a tool result JSON, e.g.:
|
|
247
|
+
|
|
248
|
+
```jsonc
|
|
249
|
+
{
|
|
250
|
+
"summary": "<model-written summary>",
|
|
251
|
+
"hits": [
|
|
252
|
+
{ "title": "...", "url": "...", "source": "...", "date": "..." },
|
|
253
|
+
...
|
|
254
|
+
],
|
|
255
|
+
"engine": "glm"
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
- Wraps it as a tool result message associated with the original tool call id:
|
|
260
|
+
|
|
261
|
+
```jsonc
|
|
262
|
+
{
|
|
263
|
+
"role": "tool",
|
|
264
|
+
"tool_call_id": "call_1",
|
|
265
|
+
"name": "web_search",
|
|
266
|
+
"content": [
|
|
267
|
+
{
|
|
268
|
+
"type": "output_json",
|
|
269
|
+
"output": { /* normalized result as above */ }
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 5. Third request – back to the main model
|
|
276
|
+
|
|
277
|
+
- Hub constructs a new request to the *same* main provider:
|
|
278
|
+
- `messages` = original messages + assistant tool_call + tool result (standard OpenAI tool-calling pattern).
|
|
279
|
+
- Main model receives the web_search result as if the client had executed the tool locally.
|
|
280
|
+
- Main model generates the final answer to the user.
|
|
281
|
+
- When the final assistant message has `finish_reason == "stop"`, the server:
|
|
282
|
+
- Resets the “sticky web_search enabled” flag for this call chain.
|
|
283
|
+
|
|
284
|
+
## Sticky Behaviour
|
|
285
|
+
|
|
286
|
+
- During a single call chain (including tool calls and retries):
|
|
287
|
+
- Once web search intent is detected, or a `web_search` tool call has occurred, the session is considered “web_search-enabled” for this chain.
|
|
288
|
+
- Web search tools continue to be injected for the main model within this chain as needed.
|
|
289
|
+
- Reset:
|
|
290
|
+
- When the final assistant response for the call has `finish_reason == "stop"`, the sticky state is reset.
|
|
291
|
+
- A subsequent user turn may re-trigger web search injection based on intent and `injectPolicy`.
|
|
292
|
+
|
|
293
|
+
## Backends
|
|
294
|
+
|
|
295
|
+
### GLM (`glm.glm-4.7`)
|
|
296
|
+
|
|
297
|
+
- First production backend.
|
|
298
|
+
- Implementation details:
|
|
299
|
+
- Maps canonical `web_search` parameters to GLM’s `web_search` schema:
|
|
300
|
+
- `engine` → choice of GLM backend (if GLM exposes multiple search engines).
|
|
301
|
+
- `query` → GLM prompt content.
|
|
302
|
+
- `recency` / `count` → `web_search` fields (`search_recency_filter`, `count`, etc.).
|
|
303
|
+
- Allows reading `web_search` field from GLM response and converting it into the normalized hit list.
|
|
304
|
+
|
|
305
|
+
### Gemini (future)
|
|
306
|
+
|
|
307
|
+
- Candidate models: `gemini-2.5-flash-lite`, `gemini-3-flash`, etc.
|
|
308
|
+
- Many Gemini models restrict tools to *search tools only*; we need to:
|
|
309
|
+
- Ensure `web_search` backend requests use the correct Gemini schema and obey tool constraints.
|
|
310
|
+
- Treat these models as pure web search engines in the backend pool.
|
|
311
|
+
|
|
312
|
+
## Summary of Changes vs. Current Behaviour
|
|
313
|
+
|
|
314
|
+
- Introduce a server-side `web_search` tool:
|
|
315
|
+
- Main models see a standard function; actual web search execution runs via a separate search backend route.
|
|
316
|
+
- Split “search” responsibilities:
|
|
317
|
+
- `search`: existing file/code/knowledge search (renamed from current websearch usage).
|
|
318
|
+
- `web_search`: true web search via GLM/Gemini backends.
|
|
319
|
+
- Keep main routing unchanged:
|
|
320
|
+
- Main provider selection remains fully owned by the existing Virtual Router route logic.
|
|
321
|
+
- Provide sticky but bounded web search capability:
|
|
322
|
+
- Enabled per call chain; automatically reset when final `finish_reason == "stop"` is observed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsonstudio/rcc",
|
|
3
|
-
"version": "0.89.
|
|
3
|
+
"version": "0.89.1348",
|
|
4
4
|
"description": "Multi-provider OpenAI proxy server with anthropic/responses/chat support (release)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"scripts/",
|
|
21
21
|
"rcc",
|
|
22
22
|
"README.md",
|
|
23
|
-
"LICENSE"
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"docs/",
|
|
25
|
+
"configsamples/"
|
|
24
26
|
],
|
|
25
27
|
"bundledDependencies": [],
|
|
26
28
|
"engines": {
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
},
|
|
29
31
|
"scripts": {
|
|
30
32
|
"build": "npm run llmswitch:ensure && node scripts/build-core.mjs && node scripts/vendor-core.mjs && npm run clean && node scripts/gen-build-info.mjs && tsc && node scripts/copy-compat-assets.mjs && node scripts/copy-modules-config.mjs",
|
|
31
|
-
"build:dev": "BUILD_MODE=dev npm run build && npm run verify:e2e-toolcall && npm run verify:apply-patch && npm run verify:apply-patch-regressions && npm run verify:exec-command && npm run test:routing-instructions && npm run test:cli && npm run install:global && npm run mock:regressions && npm run verify:errorsamples && npm run verify:e2e-gemini-followup-sample",
|
|
33
|
+
"build:dev": "bash -lc 'export BUILD_MODE=dev; npm run build && npm run test:unified-hub-shadow && npm run verify:e2e-toolcall && npm run verify:apply-patch && npm run verify:apply-patch-regressions && npm run verify:exec-command && npm run test:routing-instructions && npm run test:cli && npm run install:global && npm run mock:regressions && npm run verify:errorsamples && npm run verify:e2e-gemini-followup-sample'",
|
|
32
34
|
"build:min": "npm run llmswitch:ensure && node scripts/build-core.mjs && node scripts/vendor-core.mjs && npm run clean && node scripts/gen-build-info.mjs && tsc && node scripts/copy-compat-assets.mjs && node scripts/copy-modules-config.mjs",
|
|
33
35
|
"prepack": "echo skip-prepack",
|
|
34
36
|
"postbuild": "chmod +x dist/cli.js || true",
|
|
@@ -37,7 +39,7 @@
|
|
|
37
39
|
"dev": "tsx watch src/index.ts",
|
|
38
40
|
"jest:run": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js",
|
|
39
41
|
"test": "npm run test:routing-instructions && npm run mock:regressions",
|
|
40
|
-
"test:routing-instructions": "npm run jest:run -- --runTestsByPath tests/server/runtime/request-executor.single-attempt.spec.ts tests/server/runtime/executor-provider.retryable.spec.ts tests/providers/core/runtime/gemini-cli-http-provider.unit.test.ts tests/
|
|
42
|
+
"test:routing-instructions": "npm run jest:run -- --runTestsByPath tests/server/runtime/request-executor.single-attempt.spec.ts tests/server/runtime/executor-provider.retryable.spec.ts tests/providers/core/runtime/gemini-cli-http-provider.unit.test.ts tests/providers/core/runtime/antigravity-quota-client.unit.test.ts tests/manager/quota/provider-quota-center.spec.ts tests/manager/quota/provider-quota-store.spec.ts tests/manager/quota/quota-manager-refresh.spec.ts tests/manager/quota/provider-quota-daemon-module.spec.ts tests/manager/quota/provider-key-normalization.spec.ts tests/server/http-server/daemon-admin.e2e.spec.ts tests/server/http-server/quota-view-injection.spec.ts tests/server/http-server/quota-refresh-triggers.e2e.spec.ts tests/server/http-server/hub-policy-injection.spec.ts tests/server/http-server/session-header-injection.spec.ts tests/server/http-server/session-dir.spec.ts tests/server/handlers/sse-timeout.spec.ts tests/utils/is-direct-execution.test.ts tests/utils/windows-netstat.test.ts tests/servertool/virtual-router-context-fallback.spec.ts tests/servertool/virtual-router-longcontext-fallback.spec.ts tests/servertool/virtual-router-series-cooldown.spec.ts tests/servertool/recursive-detection-guard.spec.ts tests/servertool/routing-instructions.spec.ts tests/servertool/stop-message-auto.spec.ts tests/servertool/stopmessage-session-scope.spec.ts tests/servertool/stopmessage-anthropic-stop-sequence.spec.ts tests/servertool/servertool-progress-logging.spec.ts tests/unified-hub/hub-v1-single-path-imports.spec.ts",
|
|
41
43
|
"test:cli": "npm run jest:run -- --runTestsByPath tests/cli/clean-command.spec.ts tests/cli/code-command.spec.ts tests/cli/config-command.spec.ts tests/cli/env-command.spec.ts tests/cli/env-output.spec.ts tests/cli/examples-command.spec.ts tests/cli/port-command.spec.ts tests/cli/port-utils.spec.ts tests/cli/restart-command.spec.ts tests/cli/smoke.spec.ts tests/cli/start-command.spec.ts tests/cli/status-command.spec.ts tests/cli/stop-command.spec.ts",
|
|
42
44
|
"test:watch": "npm run jest:run -- --watch",
|
|
43
45
|
"test:coverage": "npm run jest:run -- --coverage",
|
|
@@ -124,7 +126,7 @@
|
|
|
124
126
|
"test:v2:protocol": "node tests/v2/dist/protocol-conversion-test.js",
|
|
125
127
|
"test:comprehensive": "node scripts/v2-consistency/comprehensive-consistency-test.mjs",
|
|
126
128
|
"test:golden": "node scripts/tests/golden-provider-cycle.mjs",
|
|
127
|
-
"test:sharedmodule": "
|
|
129
|
+
"test:sharedmodule": "echo 'sharedmodule tests moved to llmswitch-core repo; see scripts/move-tests-to-llmswitch.mjs for details'",
|
|
128
130
|
"sync:ci-goldens": "node scripts/tools/sync-ci-goldens.mjs",
|
|
129
131
|
"sync:apply-patch-regressions": "node scripts/tools/sync-apply-patch-regressions.mjs",
|
|
130
132
|
"mock:extract": "node scripts/mock-provider/extract.mjs",
|
|
@@ -132,13 +134,13 @@
|
|
|
132
134
|
"mock:regressions": "node scripts/mock-provider/run-regressions.mjs",
|
|
133
135
|
"mock:clean": "node scripts/mock-provider/clean.mjs",
|
|
134
136
|
"publish:rcc": "node scripts/publish-rcc.mjs",
|
|
137
|
+
"pack:rcc": "node scripts/pack-rcc.mjs",
|
|
135
138
|
"build:rccx": "npm run build:min && node scripts/pack-mode.mjs --name @jsonstudio/rccx --bin rccx",
|
|
136
139
|
"compare:codex:rccx": "node scripts/compare-codex-rccx.mjs"
|
|
137
140
|
},
|
|
138
141
|
"dependencies": {
|
|
139
142
|
"@anthropic-ai/sdk": "^0.65.0",
|
|
140
|
-
"@jsonstudio/llms": "^0.6.
|
|
141
|
-
"@jsonstudio/rcc": "^0.89.555",
|
|
143
|
+
"@jsonstudio/llms": "^0.6.1172",
|
|
142
144
|
"@lmstudio/sdk": "^1.5.0",
|
|
143
145
|
"@radix-ui/react-switch": "^1.2.6",
|
|
144
146
|
"@types/socket.io": "^3.0.1",
|
|
@@ -163,6 +165,9 @@
|
|
|
163
165
|
"socket.io": "^4.8.1",
|
|
164
166
|
"zod": "^3.23.8"
|
|
165
167
|
},
|
|
168
|
+
"optionalDependencies": {
|
|
169
|
+
"@jsonstudio/llms-engine": "^0.3.0"
|
|
170
|
+
},
|
|
166
171
|
"peerDependencies": {
|
|
167
172
|
"@jest/globals": "^30.1.2"
|
|
168
173
|
},
|