@jsonstudio/llms 0.4.2
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 +265 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.js +11 -0
- package/dist/api/llmswitch-config.d.ts +15 -0
- package/dist/api/llmswitch-config.js +415 -0
- package/dist/api/llmswitch-types.d.ts +412 -0
- package/dist/api/llmswitch-types.js +60 -0
- package/dist/bridge/routecodex-adapter.d.ts +74 -0
- package/dist/bridge/routecodex-adapter.js +226 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.js +5 -0
- package/dist/config-unified/enhanced-path-resolver.d.ts +5 -0
- package/dist/config-unified/enhanced-path-resolver.js +38 -0
- package/dist/config-unified/unified-config.d.ts +26 -0
- package/dist/config-unified/unified-config.js +187 -0
- package/dist/conversion/codec-registry.d.ts +10 -0
- package/dist/conversion/codec-registry.js +25 -0
- package/dist/conversion/codecs/anthropic-openai-codec.d.ts +23 -0
- package/dist/conversion/codecs/anthropic-openai-codec.js +546 -0
- package/dist/conversion/codecs/gemini-openai-codec.d.ts +16 -0
- package/dist/conversion/codecs/gemini-openai-codec.js +437 -0
- package/dist/conversion/codecs/openai-openai-codec.d.ts +12 -0
- package/dist/conversion/codecs/openai-openai-codec.js +125 -0
- package/dist/conversion/codecs/responses-openai-codec.d.ts +12 -0
- package/dist/conversion/codecs/responses-openai-codec.js +154 -0
- package/dist/conversion/config/config-manager.d.ts +212 -0
- package/dist/conversion/config/config-manager.js +310 -0
- package/dist/conversion/conversion-v3/adapters/index.d.ts +2 -0
- package/dist/conversion/conversion-v3/adapters/index.js +1 -0
- package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +38 -0
- package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +55 -0
- package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +22 -0
- package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +84 -0
- package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +4 -0
- package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +285 -0
- package/dist/conversion/conversion-v3/compatibility/index.d.ts +3 -0
- package/dist/conversion/conversion-v3/compatibility/index.js +2 -0
- package/dist/conversion/conversion-v3/config/default-configs.d.ts +48 -0
- package/dist/conversion/conversion-v3/config/default-configs.js +1083 -0
- package/dist/conversion/conversion-v3/config/index.d.ts +5 -0
- package/dist/conversion/conversion-v3/config/index.js +5 -0
- package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +49 -0
- package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +65 -0
- package/dist/conversion/conversion-v3/index.d.ts +11 -0
- package/dist/conversion/conversion-v3/index.js +17 -0
- package/dist/conversion/conversion-v3/nodes/index.d.ts +56 -0
- package/dist/conversion/conversion-v3/nodes/index.js +149 -0
- package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +25 -0
- package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +56 -0
- package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +75 -0
- package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +237 -0
- package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +25 -0
- package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +56 -0
- package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +4 -0
- package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +197 -0
- package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +16 -0
- package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +125 -0
- package/dist/conversion/conversion-v3/nodes/input/index.d.ts +8 -0
- package/dist/conversion/conversion-v3/nodes/input/index.js +8 -0
- package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +46 -0
- package/dist/conversion/conversion-v3/nodes/input/input-decision.js +125 -0
- package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +20 -0
- package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +51 -0
- package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +71 -0
- package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +320 -0
- package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +116 -0
- package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +512 -0
- package/dist/conversion/conversion-v3/nodes/output/index.d.ts +7 -0
- package/dist/conversion/conversion-v3/nodes/output/index.js +7 -0
- package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +71 -0
- package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +293 -0
- package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +68 -0
- package/dist/conversion/conversion-v3/nodes/output/output-decision.js +161 -0
- package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +64 -0
- package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +323 -0
- package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +72 -0
- package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +246 -0
- package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +135 -0
- package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +854 -0
- package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +29 -0
- package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +181 -0
- package/dist/conversion/conversion-v3/nodes/process/index.d.ts +10 -0
- package/dist/conversion/conversion-v3/nodes/process/index.js +10 -0
- package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +59 -0
- package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +243 -0
- package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +17 -0
- package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +213 -0
- package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +26 -0
- package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +299 -0
- package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +40 -0
- package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +430 -0
- package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +12 -0
- package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +129 -0
- package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +15 -0
- package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +57 -0
- package/dist/conversion/conversion-v3/nodes/response/index.d.ts +4 -0
- package/dist/conversion/conversion-v3/nodes/response/index.js +4 -0
- package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +15 -0
- package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +87 -0
- package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +1 -0
- package/dist/conversion/conversion-v3/nodes/response/response-utils.js +1 -0
- package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +12 -0
- package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +67 -0
- package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +3 -0
- package/dist/conversion/conversion-v3/nodes/sse/index.js +3 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +27 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +165 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +19 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +267 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +18 -0
- package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +48 -0
- package/dist/conversion/conversion-v3/pipelines/index.d.ts +6 -0
- package/dist/conversion/conversion-v3/pipelines/index.js +6 -0
- package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +112 -0
- package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +566 -0
- package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +28 -0
- package/dist/conversion/conversion-v3/response/provider-response-converter.js +249 -0
- package/dist/conversion/conversion-v3/sse/index.d.ts +140 -0
- package/dist/conversion/conversion-v3/sse/index.js +115 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +11 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +79 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +79 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +296 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +55 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +233 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +99 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +599 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +6 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +7 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +79 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +322 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +37 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +218 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +263 -0
- package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +32 -0
- package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +106 -0
- package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +4 -0
- package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +40 -0
- package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +272 -0
- package/dist/conversion/conversion-v3/sse/shared/constants.js +321 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +158 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +210 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +275 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +39 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +54 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +123 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +356 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +51 -0
- package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +4 -0
- package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +254 -0
- package/dist/conversion/conversion-v3/sse/shared/utils.js +543 -0
- package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +111 -0
- package/dist/conversion/conversion-v3/sse/shared/writer.js +268 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +13 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +139 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +165 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +776 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +106 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +540 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +6 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +7 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +332 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +59 -0
- package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +270 -0
- package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +87 -0
- package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +5 -0
- package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +308 -0
- package/dist/conversion/conversion-v3/sse/types/chat-types.js +32 -0
- package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +211 -0
- package/dist/conversion/conversion-v3/sse/types/conversion-context.js +20 -0
- package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +90 -0
- package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +5 -0
- package/dist/conversion/conversion-v3/sse/types/index.d.ts +14 -0
- package/dist/conversion/conversion-v3/sse/types/index.js +7 -0
- package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +328 -0
- package/dist/conversion/conversion-v3/sse/types/responses-types.js +38 -0
- package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +180 -0
- package/dist/conversion/conversion-v3/sse/types/sse-events.js +150 -0
- package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +204 -0
- package/dist/conversion/conversion-v3/sse/types/stream-state.js +44 -0
- package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +230 -0
- package/dist/conversion/conversion-v3/sse/types/utility-types.js +49 -0
- package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +146 -0
- package/dist/conversion/conversion-v3/standards/context-adapter.js +438 -0
- package/dist/conversion/conversion-v3/standards/errors.d.ts +38 -0
- package/dist/conversion/conversion-v3/standards/errors.js +27 -0
- package/dist/conversion/conversion-v3/standards/index.d.ts +15 -0
- package/dist/conversion/conversion-v3/standards/index.js +11 -0
- package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +123 -0
- package/dist/conversion/conversion-v3/standards/node-capabilities.js +330 -0
- package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +237 -0
- package/dist/conversion/conversion-v3/standards/pipeline-context.js +84 -0
- package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +196 -0
- package/dist/conversion/conversion-v3/standards/pipeline-node.js +316 -0
- package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +24 -0
- package/dist/conversion/conversion-v3/standards/snapshot-handles.js +49 -0
- package/dist/conversion/conversion-v3/types/config-types.d.ts +242 -0
- package/dist/conversion/conversion-v3/types/config-types.js +13 -0
- package/dist/conversion/conversion-v3/types/index.d.ts +8 -0
- package/dist/conversion/conversion-v3/types/index.js +11 -0
- package/dist/conversion/conversion-v3/types/node-types.d.ts +211 -0
- package/dist/conversion/conversion-v3/types/node-types.js +20 -0
- package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +246 -0
- package/dist/conversion/conversion-v3/types/pipeline-types.js +26 -0
- package/dist/conversion/conversion-v3/types/request-types.d.ts +293 -0
- package/dist/conversion/conversion-v3/types/request-types.js +26 -0
- package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +10 -0
- package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +103 -0
- package/dist/conversion/conversion-v3/validations/index.d.ts +8 -0
- package/dist/conversion/conversion-v3/validations/index.js +7 -0
- package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +116 -0
- package/dist/conversion/conversion-v3/validations/node-graph-validator.js +505 -0
- package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +139 -0
- package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +338 -0
- package/dist/conversion/hub/config/types.d.ts +26 -0
- package/dist/conversion/hub/config/types.js +1 -0
- package/dist/conversion/hub/core/detour-registry.d.ts +9 -0
- package/dist/conversion/hub/core/detour-registry.js +23 -0
- package/dist/conversion/hub/core/hub-context.d.ts +21 -0
- package/dist/conversion/hub/core/hub-context.js +1 -0
- package/dist/conversion/hub/core/index.d.ts +3 -0
- package/dist/conversion/hub/core/index.js +3 -0
- package/dist/conversion/hub/core/stage-driver.d.ts +30 -0
- package/dist/conversion/hub/core/stage-driver.js +31 -0
- package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +16 -0
- package/dist/conversion/hub/format-adapters/anthropic-format-adapter.js +23 -0
- package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +17 -0
- package/dist/conversion/hub/format-adapters/chat-format-adapter.js +23 -0
- package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +16 -0
- package/dist/conversion/hub/format-adapters/gemini-format-adapter.js +23 -0
- package/dist/conversion/hub/format-adapters/index.d.ts +21 -0
- package/dist/conversion/hub/format-adapters/index.js +4 -0
- package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +17 -0
- package/dist/conversion/hub/format-adapters/responses-format-adapter.js +23 -0
- package/dist/conversion/hub/hub-feature.d.ts +1 -0
- package/dist/conversion/hub/hub-feature.js +25 -0
- package/dist/conversion/hub/node-support.d.ts +19 -0
- package/dist/conversion/hub/node-support.js +115 -0
- package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +68 -0
- package/dist/conversion/hub/pipeline/hub-pipeline.js +421 -0
- package/dist/conversion/hub/pipelines/inbound.d.ts +22 -0
- package/dist/conversion/hub/pipelines/inbound.js +64 -0
- package/dist/conversion/hub/pipelines/outbound.d.ts +22 -0
- package/dist/conversion/hub/pipelines/outbound.js +57 -0
- package/dist/conversion/hub/process/chat-process.d.ts +13 -0
- package/dist/conversion/hub/process/chat-process.js +50 -0
- package/dist/conversion/hub/registry.d.ts +28 -0
- package/dist/conversion/hub/registry.js +98 -0
- package/dist/conversion/hub/response/chat-response-utils.d.ts +6 -0
- package/dist/conversion/hub/response/chat-response-utils.js +89 -0
- package/dist/conversion/hub/response/provider-response.d.ts +20 -0
- package/dist/conversion/hub/response/provider-response.js +196 -0
- package/dist/conversion/hub/response/response-mappers.d.ts +19 -0
- package/dist/conversion/hub/response/response-mappers.js +23 -0
- package/dist/conversion/hub/response/response-runtime.d.ts +3 -0
- package/dist/conversion/hub/response/response-runtime.js +206 -0
- package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +7 -0
- package/dist/conversion/hub/semantic-mappers/anthropic-mapper.js +308 -0
- package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +7 -0
- package/dist/conversion/hub/semantic-mappers/chat-mapper.js +304 -0
- package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +7 -0
- package/dist/conversion/hub/semantic-mappers/gemini-mapper.js +477 -0
- package/dist/conversion/hub/semantic-mappers/index.d.ts +4 -0
- package/dist/conversion/hub/semantic-mappers/index.js +4 -0
- package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +21 -0
- package/dist/conversion/hub/semantic-mappers/responses-mapper.js +379 -0
- package/dist/conversion/hub/snapshot-recorder.d.ts +12 -0
- package/dist/conversion/hub/snapshot-recorder.js +69 -0
- package/dist/conversion/hub/standardized-bridge.d.ts +12 -0
- package/dist/conversion/hub/standardized-bridge.js +248 -0
- package/dist/conversion/hub/types/chat-envelope.d.ts +67 -0
- package/dist/conversion/hub/types/chat-envelope.js +1 -0
- package/dist/conversion/hub/types/chat-schema.d.ts +112 -0
- package/dist/conversion/hub/types/chat-schema.js +1 -0
- package/dist/conversion/hub/types/errors.d.ts +5 -0
- package/dist/conversion/hub/types/errors.js +13 -0
- package/dist/conversion/hub/types/format-envelope.d.ts +7 -0
- package/dist/conversion/hub/types/format-envelope.js +1 -0
- package/dist/conversion/hub/types/index.d.ts +6 -0
- package/dist/conversion/hub/types/index.js +6 -0
- package/dist/conversion/hub/types/json.d.ts +9 -0
- package/dist/conversion/hub/types/json.js +9 -0
- package/dist/conversion/hub/types/node.d.ts +31 -0
- package/dist/conversion/hub/types/node.js +1 -0
- package/dist/conversion/hub/types/standardized.d.ts +94 -0
- package/dist/conversion/hub/types/standardized.js +1 -0
- package/dist/conversion/index.d.ts +28 -0
- package/dist/conversion/index.js +28 -0
- package/dist/conversion/responses/responses-openai-bridge.d.ts +95 -0
- package/dist/conversion/responses/responses-openai-bridge.js +1330 -0
- package/dist/conversion/schema-validator.d.ts +7 -0
- package/dist/conversion/schema-validator.js +67 -0
- package/dist/conversion/shared/args-mapping.d.ts +18 -0
- package/dist/conversion/shared/args-mapping.js +213 -0
- package/dist/conversion/shared/chat-request-filters.d.ts +9 -0
- package/dist/conversion/shared/chat-request-filters.js +74 -0
- package/dist/conversion/shared/jsonish.d.ts +3 -0
- package/dist/conversion/shared/jsonish.js +177 -0
- package/dist/conversion/shared/mcp-injection.d.ts +2 -0
- package/dist/conversion/shared/mcp-injection.js +89 -0
- package/dist/conversion/shared/media.d.ts +1 -0
- package/dist/conversion/shared/media.js +9 -0
- package/dist/conversion/shared/openai-finalizer.d.ts +9 -0
- package/dist/conversion/shared/openai-finalizer.js +104 -0
- package/dist/conversion/shared/openai-message-normalize.d.ts +1 -0
- package/dist/conversion/shared/openai-message-normalize.js +442 -0
- package/dist/conversion/shared/payload-budget.d.ts +13 -0
- package/dist/conversion/shared/payload-budget.js +248 -0
- package/dist/conversion/shared/reasoning-mapping.d.ts +5 -0
- package/dist/conversion/shared/reasoning-mapping.js +8 -0
- package/dist/conversion/shared/responses-conversation-store.d.ts +41 -0
- package/dist/conversion/shared/responses-conversation-store.js +285 -0
- package/dist/conversion/shared/responses-id-utils.d.ts +7 -0
- package/dist/conversion/shared/responses-id-utils.js +29 -0
- package/dist/conversion/shared/responses-instructions.d.ts +1 -0
- package/dist/conversion/shared/responses-instructions.js +113 -0
- package/dist/conversion/shared/responses-metadata.d.ts +1 -0
- package/dist/conversion/shared/responses-metadata.js +1 -0
- package/dist/conversion/shared/responses-request-adapter.d.ts +66 -0
- package/dist/conversion/shared/responses-request-adapter.js +461 -0
- package/dist/conversion/shared/snapshot-hooks.d.ts +12 -0
- package/dist/conversion/shared/snapshot-hooks.js +7 -0
- package/dist/conversion/shared/streaming-text-extractor.d.ts +26 -0
- package/dist/conversion/shared/streaming-text-extractor.js +145 -0
- package/dist/conversion/shared/text-markup-normalizer.d.ts +9 -0
- package/dist/conversion/shared/text-markup-normalizer.js +319 -0
- package/dist/conversion/shared/tool-canonicalizer.d.ts +2 -0
- package/dist/conversion/shared/tool-canonicalizer.js +50 -0
- package/dist/conversion/shared/tool-filter-pipeline.d.ts +17 -0
- package/dist/conversion/shared/tool-filter-pipeline.js +79 -0
- package/dist/conversion/shared/tool-governor.d.ts +27 -0
- package/dist/conversion/shared/tool-governor.js +269 -0
- package/dist/conversion/shared/tool-harvester.d.ts +31 -0
- package/dist/conversion/shared/tool-harvester.js +321 -0
- package/dist/conversion/shared/tool-mapping.d.ts +10 -0
- package/dist/conversion/shared/tool-mapping.js +10 -0
- package/dist/conversion/shared/tooling.d.ts +26 -0
- package/dist/conversion/shared/tooling.js +143 -0
- package/dist/conversion/types.d.ts +33 -0
- package/dist/conversion/types.js +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.js +9 -0
- package/dist/core/llmswitch-engine-v2.d.ts +132 -0
- package/dist/core/llmswitch-engine-v2.js +649 -0
- package/dist/core/llmswitch-factory-v2.d.ts +123 -0
- package/dist/core/llmswitch-factory-v2.js +521 -0
- package/dist/endpoints/base-endpoint-handler.d.ts +128 -0
- package/dist/endpoints/base-endpoint-handler.js +545 -0
- package/dist/endpoints/chat-endpoint-handler.d.ts +115 -0
- package/dist/endpoints/chat-endpoint-handler.js +218 -0
- package/dist/endpoints/endpoint-router.d.ts +127 -0
- package/dist/endpoints/endpoint-router.js +438 -0
- package/dist/endpoints/index.d.ts +13 -0
- package/dist/endpoints/index.js +11 -0
- package/dist/endpoints/messages-endpoint-handler.d.ts +171 -0
- package/dist/endpoints/messages-endpoint-handler.js +238 -0
- package/dist/endpoints/responses-endpoint-handler.d.ts +147 -0
- package/dist/endpoints/responses-endpoint-handler.js +233 -0
- package/dist/filters/builtin/add-fields-filter.d.ts +8 -0
- package/dist/filters/builtin/add-fields-filter.js +16 -0
- package/dist/filters/builtin/blacklist-filter.d.ts +8 -0
- package/dist/filters/builtin/blacklist-filter.js +19 -0
- package/dist/filters/builtin/whitelist-filter.d.ts +8 -0
- package/dist/filters/builtin/whitelist-filter.js +19 -0
- package/dist/filters/engine.d.ts +16 -0
- package/dist/filters/engine.js +167 -0
- package/dist/filters/index.d.ts +19 -0
- package/dist/filters/index.js +24 -0
- package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +12 -0
- package/dist/filters/special/request-streaming-to-nonstreaming.js +27 -0
- package/dist/filters/special/request-tool-choice-policy.d.ts +11 -0
- package/dist/filters/special/request-tool-choice-policy.js +27 -0
- package/dist/filters/special/request-tool-list-filter.d.ts +11 -0
- package/dist/filters/special/request-tool-list-filter.js +167 -0
- package/dist/filters/special/request-toolcalls-stringify.d.ts +10 -0
- package/dist/filters/special/request-toolcalls-stringify.js +44 -0
- package/dist/filters/special/request-tools-normalize.d.ts +12 -0
- package/dist/filters/special/request-tools-normalize.js +140 -0
- package/dist/filters/special/response-finish-invariants.d.ts +11 -0
- package/dist/filters/special/response-finish-invariants.js +30 -0
- package/dist/filters/special/response-openai-to-responses-bridge.d.ts +13 -0
- package/dist/filters/special/response-openai-to-responses-bridge.js +24 -0
- package/dist/filters/special/response-tool-arguments-blacklist.d.ts +12 -0
- package/dist/filters/special/response-tool-arguments-blacklist.js +63 -0
- package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +13 -0
- package/dist/filters/special/response-tool-arguments-schema-converge.js +63 -0
- package/dist/filters/special/response-tool-arguments-stringify.d.ts +9 -0
- package/dist/filters/special/response-tool-arguments-stringify.js +134 -0
- package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +10 -0
- package/dist/filters/special/response-tool-arguments-toon-decode.js +94 -0
- package/dist/filters/special/response-tool-arguments-whitelist.d.ts +11 -0
- package/dist/filters/special/response-tool-arguments-whitelist.js +56 -0
- package/dist/filters/special/response-tool-text-canonicalize.d.ts +10 -0
- package/dist/filters/special/response-tool-text-canonicalize.js +20 -0
- package/dist/filters/special/tool-filter-hooks.d.ts +19 -0
- package/dist/filters/special/tool-filter-hooks.js +341 -0
- package/dist/filters/special/tool-post-constraints.d.ts +31 -0
- package/dist/filters/special/tool-post-constraints.js +120 -0
- package/dist/filters/types.d.ts +68 -0
- package/dist/filters/types.js +3 -0
- package/dist/filters/utils/fieldmap-loader.d.ts +2 -0
- package/dist/filters/utils/fieldmap-loader.js +16 -0
- package/dist/filters/utils/snapshot-writer.d.ts +10 -0
- package/dist/filters/utils/snapshot-writer.js +47 -0
- package/dist/guidance/index.d.ts +3 -0
- package/dist/guidance/index.js +228 -0
- package/dist/hooks/hooks-integration.d.ts +161 -0
- package/dist/hooks/hooks-integration.js +519 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.js +13 -0
- package/dist/html-to-markdown.d.ts +5 -0
- package/dist/html-to-markdown.js +66 -0
- package/dist/http/sse-response.d.ts +22 -0
- package/dist/http/sse-response.js +103 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/router/virtual-router/bootstrap.d.ts +6 -0
- package/dist/router/virtual-router/bootstrap.js +620 -0
- package/dist/router/virtual-router/classifier.d.ts +10 -0
- package/dist/router/virtual-router/classifier.js +99 -0
- package/dist/router/virtual-router/engine.d.ts +35 -0
- package/dist/router/virtual-router/engine.js +260 -0
- package/dist/router/virtual-router/error-center.d.ts +10 -0
- package/dist/router/virtual-router/error-center.js +39 -0
- package/dist/router/virtual-router/features.d.ts +3 -0
- package/dist/router/virtual-router/features.js +162 -0
- package/dist/router/virtual-router/health-manager.d.ts +18 -0
- package/dist/router/virtual-router/health-manager.js +98 -0
- package/dist/router/virtual-router/load-balancer.d.ts +18 -0
- package/dist/router/virtual-router/load-balancer.js +67 -0
- package/dist/router/virtual-router/provider-registry.d.ts +11 -0
- package/dist/router/virtual-router/provider-registry.js +74 -0
- package/dist/router/virtual-router/types.d.ts +206 -0
- package/dist/router/virtual-router/types.js +31 -0
- package/dist/sse/index.d.ts +140 -0
- package/dist/sse/index.js +115 -0
- package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +11 -0
- package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.js +79 -0
- package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +79 -0
- package/dist/sse/json-to-sse/chat-json-to-sse-converter.js +296 -0
- package/dist/sse/json-to-sse/event-generators/chat.d.ts +55 -0
- package/dist/sse/json-to-sse/event-generators/chat.js +233 -0
- package/dist/sse/json-to-sse/event-generators/responses.d.ts +99 -0
- package/dist/sse/json-to-sse/event-generators/responses.js +599 -0
- package/dist/sse/json-to-sse/index.d.ts +6 -0
- package/dist/sse/json-to-sse/index.js +7 -0
- package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +79 -0
- package/dist/sse/json-to-sse/responses-json-to-sse-converter.js +322 -0
- package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +37 -0
- package/dist/sse/json-to-sse/sequencers/chat-sequencer.js +218 -0
- package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +40 -0
- package/dist/sse/json-to-sse/sequencers/responses-sequencer.js +263 -0
- package/dist/sse/registry/sse-codec-registry.d.ts +32 -0
- package/dist/sse/registry/sse-codec-registry.js +106 -0
- package/dist/sse/shared/chat-serializer.d.ts +4 -0
- package/dist/sse/shared/chat-serializer.js +40 -0
- package/dist/sse/shared/constants.d.ts +272 -0
- package/dist/sse/shared/constants.js +321 -0
- package/dist/sse/shared/serializers/base-serializer.d.ts +158 -0
- package/dist/sse/shared/serializers/base-serializer.js +210 -0
- package/dist/sse/shared/serializers/chat-event-serializer.d.ts +82 -0
- package/dist/sse/shared/serializers/chat-event-serializer.js +275 -0
- package/dist/sse/shared/serializers/index.d.ts +39 -0
- package/dist/sse/shared/serializers/index.js +54 -0
- package/dist/sse/shared/serializers/responses-event-serializer.d.ts +123 -0
- package/dist/sse/shared/serializers/responses-event-serializer.js +356 -0
- package/dist/sse/shared/serializers/types.d.ts +51 -0
- package/dist/sse/shared/serializers/types.js +4 -0
- package/dist/sse/shared/utils.d.ts +254 -0
- package/dist/sse/shared/utils.js +543 -0
- package/dist/sse/shared/writer.d.ts +111 -0
- package/dist/sse/shared/writer.js +268 -0
- package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +13 -0
- package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.js +139 -0
- package/dist/sse/sse-to-json/builders/response-builder.d.ts +165 -0
- package/dist/sse/sse-to-json/builders/response-builder.js +776 -0
- package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +106 -0
- package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +540 -0
- package/dist/sse/sse-to-json/index.d.ts +6 -0
- package/dist/sse/sse-to-json/index.js +7 -0
- package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +73 -0
- package/dist/sse/sse-to-json/parsers/sse-parser.js +340 -0
- package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +59 -0
- package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +270 -0
- package/dist/sse/types/anthropic-types.d.ts +87 -0
- package/dist/sse/types/anthropic-types.js +5 -0
- package/dist/sse/types/chat-types.d.ts +308 -0
- package/dist/sse/types/chat-types.js +32 -0
- package/dist/sse/types/conversion-context.d.ts +211 -0
- package/dist/sse/types/conversion-context.js +20 -0
- package/dist/sse/types/core-interfaces.d.ts +90 -0
- package/dist/sse/types/core-interfaces.js +5 -0
- package/dist/sse/types/index.d.ts +14 -0
- package/dist/sse/types/index.js +7 -0
- package/dist/sse/types/responses-types.d.ts +328 -0
- package/dist/sse/types/responses-types.js +38 -0
- package/dist/sse/types/sse-events.d.ts +180 -0
- package/dist/sse/types/sse-events.js +150 -0
- package/dist/sse/types/stream-state.d.ts +204 -0
- package/dist/sse/types/stream-state.js +44 -0
- package/dist/sse/types/utility-types.d.ts +230 -0
- package/dist/sse/types/utility-types.js +49 -0
- package/dist/tools/proxy/anthropic-tool-proxy.d.ts +19 -0
- package/dist/tools/proxy/anthropic-tool-proxy.js +57 -0
- package/dist/tools/proxy/executors/web-fetch.d.ts +6 -0
- package/dist/tools/proxy/executors/web-fetch.js +39 -0
- package/dist/tools/proxy/registry.d.ts +8 -0
- package/dist/tools/proxy/registry.js +14 -0
- package/dist/tools/proxy/types.d.ts +29 -0
- package/dist/tools/proxy/types.js +1 -0
- package/dist/tools/tool-registry.d.ts +8 -0
- package/dist/tools/tool-registry.js +154 -0
- package/dist/tools/web-fetch-html.d.ts +15 -0
- package/dist/tools/web-fetch-html.js +83 -0
- package/dist/utils/conversion-adapter.d.ts +65 -0
- package/dist/utils/conversion-adapter.js +183 -0
- package/dist/utils/error-factory.d.ts +88 -0
- package/dist/utils/error-factory.js +138 -0
- package/dist/utils/error-utils.d.ts +334 -0
- package/dist/utils/error-utils.js +782 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/performance-utils.d.ts +205 -0
- package/dist/utils/performance-utils.js +440 -0
- package/dist/utils/profile-mapper.d.ts +32 -0
- package/dist/utils/profile-mapper.js +269 -0
- package/dist/utils/request-processor.d.ts +52 -0
- package/dist/utils/request-processor.js +210 -0
- package/dist/utils/request-utils.d.ts +117 -0
- package/dist/utils/request-utils.js +333 -0
- package/dist/utils/response-utils.d.ts +127 -0
- package/dist/utils/response-utils.js +516 -0
- package/dist/utils/token-counter.d.ts +89 -0
- package/dist/utils/token-counter.js +541 -0
- package/package.json +65 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { buildResponsesPayloadFromChat, runStandardChatRequestFilters } from '../index.js';
|
|
2
|
+
import { captureResponsesContext, buildChatRequestFromResponses } from '../shared/responses-request-adapter.js';
|
|
3
|
+
import { FilterEngine, ResponseToolTextCanonicalizeFilter, ResponseToolArgumentsStringifyFilter, ResponseFinishInvariantsFilter } from '../../filters/index.js';
|
|
4
|
+
// Ported from root package (no behavior change). Types relaxed.
|
|
5
|
+
export class ResponsesOpenAIConversionCodec {
|
|
6
|
+
dependencies;
|
|
7
|
+
id = 'responses-openai';
|
|
8
|
+
initialized = false;
|
|
9
|
+
ctxMap = new Map();
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
constructor(dependencies) {
|
|
12
|
+
this.dependencies = dependencies;
|
|
13
|
+
}
|
|
14
|
+
async initialize() { this.initialized = true; }
|
|
15
|
+
async convertRequest(payload, profile, context) {
|
|
16
|
+
await this.ensureInit();
|
|
17
|
+
const dto = {
|
|
18
|
+
data: payload,
|
|
19
|
+
route: {
|
|
20
|
+
providerId: 'unknown',
|
|
21
|
+
modelId: (payload && typeof payload === 'object' && payload.model) ? String(payload.model) : 'unknown',
|
|
22
|
+
requestId: context.requestId ?? `req_${Date.now()}`,
|
|
23
|
+
timestamp: Date.now()
|
|
24
|
+
},
|
|
25
|
+
metadata: {
|
|
26
|
+
endpoint: context.endpoint ?? context.entryEndpoint,
|
|
27
|
+
entryEndpoint: context.entryEndpoint,
|
|
28
|
+
targetProtocol: profile.outgoingProtocol
|
|
29
|
+
},
|
|
30
|
+
debug: { enabled: false, stages: {} }
|
|
31
|
+
};
|
|
32
|
+
// Build context and convert to OpenAI Chat request
|
|
33
|
+
const ctx = captureResponsesContext(dto.data, dto);
|
|
34
|
+
let { request: chatRequest, toolsNormalized } = buildChatRequestFromResponses(dto.data, ctx);
|
|
35
|
+
// V3 专用:确保进入下游 Provider 的是“非流式 Chat”形状。
|
|
36
|
+
// Responses 入口的流式语义由 llmswitch-core/上层 SSE 合成处理;
|
|
37
|
+
// 这里显式移除 Chat 请求上的顶层 stream 标记,避免部分上游 Provider
|
|
38
|
+
// 因为 stream=true 直接切换到 SSE,而下游仍按 JSON 客户端解析。
|
|
39
|
+
try {
|
|
40
|
+
if (chatRequest && typeof chatRequest === 'object' && 'stream' in chatRequest) {
|
|
41
|
+
delete chatRequest.stream;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// best-effort:失败时保留原样,但不会阻断请求
|
|
46
|
+
}
|
|
47
|
+
if (toolsNormalized)
|
|
48
|
+
ctx.toolsNormalized = toolsNormalized;
|
|
49
|
+
// Capture tool results from Responses request input for pairing on response mapping
|
|
50
|
+
try {
|
|
51
|
+
const inputArr = Array.isArray(dto.data?.input) ? dto.data.input : [];
|
|
52
|
+
const results = [];
|
|
53
|
+
for (const it of inputArr) {
|
|
54
|
+
if (!it || typeof it !== 'object')
|
|
55
|
+
continue;
|
|
56
|
+
const t = String(it.type || '').toLowerCase();
|
|
57
|
+
if (t === 'tool_result' || t === 'tool_message' || t === 'function_call_output') {
|
|
58
|
+
const tool_call_id = it.tool_call_id || it.call_id || it.tool_use_id;
|
|
59
|
+
let output = undefined;
|
|
60
|
+
const rawOut = it.output;
|
|
61
|
+
if (typeof rawOut === 'string')
|
|
62
|
+
output = rawOut;
|
|
63
|
+
else if (rawOut && typeof rawOut === 'object') {
|
|
64
|
+
try {
|
|
65
|
+
output = JSON.stringify(rawOut);
|
|
66
|
+
}
|
|
67
|
+
catch { /* ignore */ }
|
|
68
|
+
}
|
|
69
|
+
results.push({ tool_call_id, output });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (results.length > 0)
|
|
73
|
+
ctx.__captured_tool_results = results;
|
|
74
|
+
}
|
|
75
|
+
catch { /* ignore */ }
|
|
76
|
+
if (context.requestId)
|
|
77
|
+
this.ctxMap.set(context.requestId, ctx);
|
|
78
|
+
// 统一走 Chat 请求过滤链路,保证 /v1/responses 与 /v1/chat 在工具治理上的一致性
|
|
79
|
+
const ctxForFilters = {
|
|
80
|
+
...context,
|
|
81
|
+
requestId: dto.route.requestId,
|
|
82
|
+
entryEndpoint: context.entryEndpoint ?? dto.metadata?.entryEndpoint ?? context.endpoint,
|
|
83
|
+
endpoint: context.endpoint ?? dto.metadata?.endpoint
|
|
84
|
+
};
|
|
85
|
+
return runStandardChatRequestFilters(chatRequest, profile, ctxForFilters);
|
|
86
|
+
}
|
|
87
|
+
async convertResponse(payload, _profile, context) {
|
|
88
|
+
await this.ensureInit();
|
|
89
|
+
// unwrap nested { data: {...} } wrappers until we reach an object
|
|
90
|
+
const unwrap = (obj) => {
|
|
91
|
+
let cur = obj;
|
|
92
|
+
const guard = new Set();
|
|
93
|
+
while (cur && typeof cur === 'object' && !Array.isArray(cur) && !guard.has(cur)) {
|
|
94
|
+
guard.add(cur);
|
|
95
|
+
if ('choices' in cur || 'id' in cur || 'object' in cur) {
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
if ('data' in cur && cur.data && typeof cur.data === 'object') {
|
|
99
|
+
cur = cur.data;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
return cur;
|
|
105
|
+
};
|
|
106
|
+
const unwrapped = unwrap(payload);
|
|
107
|
+
const dto = {
|
|
108
|
+
data: unwrapped,
|
|
109
|
+
metadata: {
|
|
110
|
+
requestId: context.requestId ?? `req_${Date.now()}`,
|
|
111
|
+
pipelineId: context.metadata?.pipelineId ?? 'conversion-router',
|
|
112
|
+
processingTime: 0,
|
|
113
|
+
stages: []
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const ctx = context.requestId ? this.ctxMap.get(context.requestId) : undefined;
|
|
117
|
+
if (context.requestId)
|
|
118
|
+
this.ctxMap.delete(context.requestId);
|
|
119
|
+
// Run response-side filter pipeline与 Chat 通路保持一致(工具治理统一在 Chat canonical 上完成)
|
|
120
|
+
const resCtxBase = {
|
|
121
|
+
requestId: context.requestId ?? dto.metadata.requestId,
|
|
122
|
+
model: undefined,
|
|
123
|
+
endpoint: context.entryEndpoint || context.endpoint,
|
|
124
|
+
profile: 'openai-chat',
|
|
125
|
+
debug: { emit: () => { } }
|
|
126
|
+
};
|
|
127
|
+
const engine = new FilterEngine();
|
|
128
|
+
// Response-side filters:文本标准化 → TOON decode(可选)→ shell/basics → finish_reason 不变式
|
|
129
|
+
engine.registerFilter(new ResponseToolTextCanonicalizeFilter()); // response_pre
|
|
130
|
+
try {
|
|
131
|
+
const { ResponseToolArgumentsToonDecodeFilter } = await import('../../filters/index.js');
|
|
132
|
+
engine.registerFilter(new ResponseToolArgumentsToonDecodeFilter()); // response_pre, runs before stringify
|
|
133
|
+
}
|
|
134
|
+
catch { /* optional */ }
|
|
135
|
+
engine.registerFilter(new ResponseToolArgumentsStringifyFilter()); // response_post
|
|
136
|
+
engine.registerFilter(new ResponseFinishInvariantsFilter()); // response_post
|
|
137
|
+
let staged = await engine.run('response_pre', dto.data, resCtxBase);
|
|
138
|
+
staged = await engine.run('response_map', staged, resCtxBase);
|
|
139
|
+
staged = await engine.run('response_post', staged, resCtxBase);
|
|
140
|
+
const governedChat = staged;
|
|
141
|
+
// Convert provider chat response back to Responses payload using captured context(仅做形状映射)
|
|
142
|
+
const responsesJson = buildResponsesPayloadFromChat(governedChat, ctx);
|
|
143
|
+
// No fallback append here: pairing must be produced upstream or by standard bridge mapping.
|
|
144
|
+
// Debug snapshot after mapping to Responses JSON (non-stream)
|
|
145
|
+
try {
|
|
146
|
+
const { writeSnapshotViaHooks } = await import('../shared/snapshot-hooks.js');
|
|
147
|
+
await writeSnapshotViaHooks({ endpoint: '/v1/responses', stage: 'response_mapped_json', requestId: context.requestId || `req_${Date.now()}`, data: responsesJson, verbosity: 'verbose' });
|
|
148
|
+
}
|
|
149
|
+
catch { /* ignore */ }
|
|
150
|
+
return responsesJson;
|
|
151
|
+
}
|
|
152
|
+
async ensureInit() { if (!this.initialized)
|
|
153
|
+
await this.initialize(); }
|
|
154
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置管理模块
|
|
3
|
+
*
|
|
4
|
+
* 提供统一的配置读取、设置和管理功能
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 配置接口定义
|
|
8
|
+
*/
|
|
9
|
+
export interface ConversionConfig {
|
|
10
|
+
/** HTTP服务器配置 */
|
|
11
|
+
httpserver?: {
|
|
12
|
+
port: number;
|
|
13
|
+
host: string;
|
|
14
|
+
};
|
|
15
|
+
/** 虚拟路由器配置 */
|
|
16
|
+
virtualrouter?: {
|
|
17
|
+
inputProtocol?: string;
|
|
18
|
+
outputProtocol?: string;
|
|
19
|
+
providers?: Record<string, ProviderConfig>;
|
|
20
|
+
routing?: {
|
|
21
|
+
default?: string[];
|
|
22
|
+
[key: string]: string[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
/** 服务工具配置 */
|
|
26
|
+
serverTools?: {
|
|
27
|
+
replace?: Record<string, {
|
|
28
|
+
enabled: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
};
|
|
32
|
+
/** 转换配置(V2/V3 版本切换相关) */
|
|
33
|
+
conversion?: {
|
|
34
|
+
/** 默认使用的转换版本 */
|
|
35
|
+
defaultVersion?: 'v2' | 'v3' | 'auto';
|
|
36
|
+
/** 允许附加自定义配置字段 */
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Provider 配置接口
|
|
42
|
+
*/
|
|
43
|
+
export interface ProviderConfig {
|
|
44
|
+
id: string;
|
|
45
|
+
enabled: boolean;
|
|
46
|
+
type: 'openai' | 'anthropic' | 'responses' | 'gemini' | 'custom';
|
|
47
|
+
baseUrl?: string;
|
|
48
|
+
apiKey?: string[];
|
|
49
|
+
auth?: {
|
|
50
|
+
type: 'apikey' | 'oauth';
|
|
51
|
+
apiKey?: string;
|
|
52
|
+
};
|
|
53
|
+
models?: Record<string, ModelConfig>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 模型配置接口
|
|
57
|
+
*/
|
|
58
|
+
export interface ModelConfig {
|
|
59
|
+
supportsStreaming?: boolean;
|
|
60
|
+
compatibility?: {
|
|
61
|
+
type?: string;
|
|
62
|
+
config?: any;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 配置管理器类
|
|
67
|
+
*/
|
|
68
|
+
export declare class ConfigManager {
|
|
69
|
+
private static instance;
|
|
70
|
+
private config;
|
|
71
|
+
private constructor();
|
|
72
|
+
/**
|
|
73
|
+
* 获取单例实例
|
|
74
|
+
*/
|
|
75
|
+
static getInstance(): ConfigManager;
|
|
76
|
+
/**
|
|
77
|
+
* 设置配置
|
|
78
|
+
*
|
|
79
|
+
* @param config 要设置的配置
|
|
80
|
+
* @param options 选项
|
|
81
|
+
*/
|
|
82
|
+
static setConfig(config: Partial<ConversionConfig>, options?: {
|
|
83
|
+
merge?: boolean;
|
|
84
|
+
validate?: boolean;
|
|
85
|
+
save?: boolean;
|
|
86
|
+
source?: string;
|
|
87
|
+
}): void;
|
|
88
|
+
/**
|
|
89
|
+
* 获取配置
|
|
90
|
+
*
|
|
91
|
+
* @param path 指定配置路径(可选)
|
|
92
|
+
* @returns 配置对象
|
|
93
|
+
*/
|
|
94
|
+
static getConfig(path?: string): Promise<ConversionConfig>;
|
|
95
|
+
/**
|
|
96
|
+
* 重新加载配置
|
|
97
|
+
*/
|
|
98
|
+
static reloadConfig(): Promise<ConversionConfig>;
|
|
99
|
+
/**
|
|
100
|
+
* 验证配置
|
|
101
|
+
*/
|
|
102
|
+
private validateConfig;
|
|
103
|
+
/**
|
|
104
|
+
* 深度合并对象(仅在内存中操作,不做任何持久化)
|
|
105
|
+
*/
|
|
106
|
+
private deepMerge;
|
|
107
|
+
/**
|
|
108
|
+
* 获取配置摘要
|
|
109
|
+
*/
|
|
110
|
+
static getConfigSummary(): {
|
|
111
|
+
totalProviders: number;
|
|
112
|
+
enabledProviders: string[];
|
|
113
|
+
outputProtocol: string;
|
|
114
|
+
inputProtocol: string;
|
|
115
|
+
routingDefaults: string[];
|
|
116
|
+
hasConversionConfig: boolean;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* 获取 provider 配置
|
|
120
|
+
*/
|
|
121
|
+
static getProviderConfig(providerName: string): ProviderConfig | null;
|
|
122
|
+
/**
|
|
123
|
+
* 检查 provider 是否可用
|
|
124
|
+
*/
|
|
125
|
+
static isProviderEnabled(providerName: string): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* 设置 provider 启用状态
|
|
128
|
+
*/
|
|
129
|
+
static setProviderEnabled(providerName: string, enabled: boolean): void;
|
|
130
|
+
/**
|
|
131
|
+
/**
|
|
132
|
+
* 获取输出协议
|
|
133
|
+
*/
|
|
134
|
+
static getOutputProtocol(): string;
|
|
135
|
+
/**
|
|
136
|
+
* 设置输出协议
|
|
137
|
+
*/
|
|
138
|
+
static setOutputProtocol(protocol: string): void;
|
|
139
|
+
/**
|
|
140
|
+
* 获取输入协议
|
|
141
|
+
*/
|
|
142
|
+
static getInputProtocol(): string;
|
|
143
|
+
/**
|
|
144
|
+
* 设置输入协议
|
|
145
|
+
*/
|
|
146
|
+
static setInputProtocol(protocol: string): void;
|
|
147
|
+
/**
|
|
148
|
+
* 获取路由配置
|
|
149
|
+
*/
|
|
150
|
+
static getRoutingConfig(): any;
|
|
151
|
+
/**
|
|
152
|
+
* 设置路由配置
|
|
153
|
+
*/
|
|
154
|
+
static setRoutingConfig(routing: any): void;
|
|
155
|
+
/**
|
|
156
|
+
* 获取 V3 转换配置
|
|
157
|
+
*/
|
|
158
|
+
static getConversionConfig(): any;
|
|
159
|
+
/**
|
|
160
|
+
* 设置 V3 转换配置
|
|
161
|
+
*/
|
|
162
|
+
static setConversionConfig(conversion: any): void;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 便捷函数:设置配置
|
|
166
|
+
*/
|
|
167
|
+
export declare function setConfig(config: Partial<ConversionConfig>, options?: {
|
|
168
|
+
merge?: boolean;
|
|
169
|
+
validate?: boolean;
|
|
170
|
+
save?: boolean;
|
|
171
|
+
source?: string;
|
|
172
|
+
}): void;
|
|
173
|
+
/**
|
|
174
|
+
* 便捷函数:获取配置
|
|
175
|
+
*/
|
|
176
|
+
export declare function getConfig(path?: string): Promise<ConversionConfig>;
|
|
177
|
+
/**
|
|
178
|
+
* 便捷函数:重新加载配置
|
|
179
|
+
*/
|
|
180
|
+
export declare function reloadConfig(): Promise<ConversionConfig>;
|
|
181
|
+
/**
|
|
182
|
+
* 便捷函数:获取配置摘要
|
|
183
|
+
*/
|
|
184
|
+
export declare function getConfigSummary(): ReturnType<typeof ConfigManager.getConfigSummary>;
|
|
185
|
+
/**
|
|
186
|
+
* 便捷函数:获取 Provider 配置
|
|
187
|
+
*/
|
|
188
|
+
export declare function getProviderConfig(providerName: string): ProviderConfig | null;
|
|
189
|
+
/**
|
|
190
|
+
* 便捷函数:检查 Provider 状态
|
|
191
|
+
*/
|
|
192
|
+
export declare function isProviderEnabled(providerName: string): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* 便捷函数:设置 Provider 状态
|
|
195
|
+
*/
|
|
196
|
+
export declare function setProviderEnabled(providerName: string, enabled: boolean): void;
|
|
197
|
+
/**
|
|
198
|
+
* 便捷函数:获取输出协议
|
|
199
|
+
*/
|
|
200
|
+
export declare function getOutputProtocol(): string;
|
|
201
|
+
/**
|
|
202
|
+
* 便捷函数:设置输出协议
|
|
203
|
+
*/
|
|
204
|
+
export declare function setOutputProtocol(protocol: string): void;
|
|
205
|
+
/**
|
|
206
|
+
* 便捷函数:获取输入协议
|
|
207
|
+
*/
|
|
208
|
+
export declare function getInputProtocol(): string;
|
|
209
|
+
/**
|
|
210
|
+
* 便捷函数:设置输入协议
|
|
211
|
+
*/
|
|
212
|
+
export declare function setInputProtocol(protocol: string): void;
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置管理模块
|
|
3
|
+
*
|
|
4
|
+
* 提供统一的配置读取、设置和管理功能
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 配置管理器类
|
|
8
|
+
*/
|
|
9
|
+
export class ConfigManager {
|
|
10
|
+
static instance;
|
|
11
|
+
config = null;
|
|
12
|
+
constructor() {
|
|
13
|
+
// 不在构造函数中建立任何默认配置,必须由外部显式调用 setConfig
|
|
14
|
+
// 注入配置,避免 llmswitch-core 内部产生隐式默认行为。
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 获取单例实例
|
|
18
|
+
*/
|
|
19
|
+
static getInstance() {
|
|
20
|
+
if (!ConfigManager.instance) {
|
|
21
|
+
ConfigManager.instance = new ConfigManager();
|
|
22
|
+
}
|
|
23
|
+
return ConfigManager.instance;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 设置配置
|
|
27
|
+
*
|
|
28
|
+
* @param config 要设置的配置
|
|
29
|
+
* @param options 选项
|
|
30
|
+
*/
|
|
31
|
+
static setConfig(config, options = {}) {
|
|
32
|
+
const manager = ConfigManager.getInstance();
|
|
33
|
+
try {
|
|
34
|
+
// 合并配置
|
|
35
|
+
const base = manager.config ?? {};
|
|
36
|
+
manager.config = options.merge === false
|
|
37
|
+
? { ...base, ...config }
|
|
38
|
+
: manager.deepMerge(base, config);
|
|
39
|
+
// 验证配置
|
|
40
|
+
if (options.validate !== false) {
|
|
41
|
+
manager.validateConfig(manager.config);
|
|
42
|
+
}
|
|
43
|
+
console.log(`Config updated successfully (source: ${options.source || 'manual'})`);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Failed to set config:', error);
|
|
47
|
+
throw new Error(`Failed to set config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取配置
|
|
52
|
+
*
|
|
53
|
+
* @param path 指定配置路径(可选)
|
|
54
|
+
* @returns 配置对象
|
|
55
|
+
*/
|
|
56
|
+
static async getConfig(path) {
|
|
57
|
+
const manager = ConfigManager.getInstance();
|
|
58
|
+
// 为保持签名兼容,保留 path 参数但忽略它;
|
|
59
|
+
// 真正的配置加载应由上层完成后通过 setConfig 注入。
|
|
60
|
+
if (!manager.config) {
|
|
61
|
+
throw new Error('Conversion config has not been initialized. Use ConfigManager.setConfig() before getConfig().');
|
|
62
|
+
}
|
|
63
|
+
return manager.config;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 重新加载配置
|
|
67
|
+
*/
|
|
68
|
+
static async reloadConfig() {
|
|
69
|
+
// 不再尝试从磁盘重载配置,仅简单委托给 getConfig,
|
|
70
|
+
// 由外部在调用前决定是否需要更新内存中的配置快照。
|
|
71
|
+
return ConfigManager.getConfig();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 验证配置
|
|
75
|
+
*/
|
|
76
|
+
validateConfig(config) {
|
|
77
|
+
if (!config) {
|
|
78
|
+
throw new Error('Config cannot be null');
|
|
79
|
+
}
|
|
80
|
+
// 验证虚拟路由器配置
|
|
81
|
+
if (config.virtualrouter) {
|
|
82
|
+
if (!config.virtualrouter.outputProtocol) {
|
|
83
|
+
throw new Error('virtualrouter.outputProtocol is required');
|
|
84
|
+
}
|
|
85
|
+
if (!config.virtualrouter.providers) {
|
|
86
|
+
throw new Error('virtualrouter.providers is required');
|
|
87
|
+
}
|
|
88
|
+
// 验证每个 provider 配置
|
|
89
|
+
for (const [name, provider] of Object.entries(config.virtualrouter.providers)) {
|
|
90
|
+
if (!provider.id) {
|
|
91
|
+
throw new Error(`Provider ${name} missing id`);
|
|
92
|
+
}
|
|
93
|
+
if (typeof provider.type !== 'string') {
|
|
94
|
+
throw new Error(`Provider ${name} type must be a string`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 深度合并对象(仅在内存中操作,不做任何持久化)
|
|
101
|
+
*/
|
|
102
|
+
deepMerge(target, source) {
|
|
103
|
+
if (!source)
|
|
104
|
+
return target;
|
|
105
|
+
const result = { ...target };
|
|
106
|
+
for (const key in source) {
|
|
107
|
+
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
108
|
+
result[key] = this.deepMerge(result[key] || {}, source[key]);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
result[key] = source[key];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 获取配置摘要
|
|
118
|
+
*/
|
|
119
|
+
static getConfigSummary() {
|
|
120
|
+
const manager = ConfigManager.getInstance();
|
|
121
|
+
const config = manager.config || {};
|
|
122
|
+
const providers = config.virtualrouter?.providers || {};
|
|
123
|
+
const enabled = Object.entries(providers)
|
|
124
|
+
.filter(([_, provider]) => provider.enabled)
|
|
125
|
+
.map(([name, _]) => name);
|
|
126
|
+
return {
|
|
127
|
+
totalProviders: Object.keys(providers).length,
|
|
128
|
+
enabledProviders: enabled,
|
|
129
|
+
outputProtocol: config.virtualrouter?.outputProtocol || 'unknown',
|
|
130
|
+
inputProtocol: config.virtualrouter?.inputProtocol || 'unknown',
|
|
131
|
+
routingDefaults: config.virtualrouter?.routing?.default || [],
|
|
132
|
+
hasConversionConfig: !!config.conversion
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 获取 provider 配置
|
|
137
|
+
*/
|
|
138
|
+
static getProviderConfig(providerName) {
|
|
139
|
+
const manager = ConfigManager.getInstance();
|
|
140
|
+
return manager.config?.virtualrouter?.providers?.[providerName] || null;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 检查 provider 是否可用
|
|
144
|
+
*/
|
|
145
|
+
static isProviderEnabled(providerName) {
|
|
146
|
+
const provider = ConfigManager.getProviderConfig(providerName);
|
|
147
|
+
return provider?.enabled || false;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 设置 provider 启用状态
|
|
151
|
+
*/
|
|
152
|
+
static setProviderEnabled(providerName, enabled) {
|
|
153
|
+
const manager = ConfigManager.getInstance();
|
|
154
|
+
if (!manager.config || !manager.config.virtualrouter?.providers?.[providerName]) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
manager.config.virtualrouter.providers[providerName].enabled = enabled;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
/**
|
|
161
|
+
* 获取输出协议
|
|
162
|
+
*/
|
|
163
|
+
static getOutputProtocol() {
|
|
164
|
+
const manager = ConfigManager.getInstance();
|
|
165
|
+
return manager.config?.virtualrouter?.outputProtocol || 'openai';
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 设置输出协议
|
|
169
|
+
*/
|
|
170
|
+
static setOutputProtocol(protocol) {
|
|
171
|
+
const manager = ConfigManager.getInstance();
|
|
172
|
+
if (!manager.config) {
|
|
173
|
+
manager.config = {};
|
|
174
|
+
}
|
|
175
|
+
if (!manager.config.virtualrouter) {
|
|
176
|
+
manager.config.virtualrouter = {};
|
|
177
|
+
}
|
|
178
|
+
manager.config.virtualrouter.outputProtocol = protocol;
|
|
179
|
+
console.log(`Output protocol changed to: ${protocol}`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 获取输入协议
|
|
183
|
+
*/
|
|
184
|
+
static getInputProtocol() {
|
|
185
|
+
const manager = ConfigManager.getInstance();
|
|
186
|
+
return manager.config?.virtualrouter?.inputProtocol || 'openai';
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 设置输入协议
|
|
190
|
+
*/
|
|
191
|
+
static setInputProtocol(protocol) {
|
|
192
|
+
const manager = ConfigManager.getInstance();
|
|
193
|
+
if (!manager.config) {
|
|
194
|
+
manager.config = {};
|
|
195
|
+
}
|
|
196
|
+
if (!manager.config.virtualrouter) {
|
|
197
|
+
manager.config.virtualrouter = {};
|
|
198
|
+
}
|
|
199
|
+
manager.config.virtualrouter.inputProtocol = protocol;
|
|
200
|
+
console.log(`Input protocol changed to: ${protocol}`);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 获取路由配置
|
|
204
|
+
*/
|
|
205
|
+
static getRoutingConfig() {
|
|
206
|
+
const manager = ConfigManager.getInstance();
|
|
207
|
+
return manager.config?.virtualrouter?.routing || {};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* 设置路由配置
|
|
211
|
+
*/
|
|
212
|
+
static setRoutingConfig(routing) {
|
|
213
|
+
const manager = ConfigManager.getInstance();
|
|
214
|
+
if (!manager.config) {
|
|
215
|
+
manager.config = {};
|
|
216
|
+
}
|
|
217
|
+
if (!manager.config.virtualrouter) {
|
|
218
|
+
manager.config.virtualrouter = {};
|
|
219
|
+
}
|
|
220
|
+
manager.config.virtualrouter.routing = routing;
|
|
221
|
+
console.log('Routing config updated');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 获取 V3 转换配置
|
|
225
|
+
*/
|
|
226
|
+
static getConversionConfig() {
|
|
227
|
+
const manager = ConfigManager.getInstance();
|
|
228
|
+
return manager.config?.conversion || {};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* 设置 V3 转换配置
|
|
232
|
+
*/
|
|
233
|
+
static setConversionConfig(conversion) {
|
|
234
|
+
const manager = ConfigManager.getInstance();
|
|
235
|
+
if (!manager.config) {
|
|
236
|
+
manager.config = {};
|
|
237
|
+
}
|
|
238
|
+
if (!manager.config.conversion) {
|
|
239
|
+
manager.config.conversion = {};
|
|
240
|
+
}
|
|
241
|
+
manager.config.conversion = manager.deepMerge(manager.config.conversion, conversion);
|
|
242
|
+
console.log('Conversion config updated');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* 便捷函数:设置配置
|
|
247
|
+
*/
|
|
248
|
+
export function setConfig(config, options) {
|
|
249
|
+
ConfigManager.setConfig(config, options);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 便捷函数:获取配置
|
|
253
|
+
*/
|
|
254
|
+
export async function getConfig(path) {
|
|
255
|
+
return ConfigManager.getConfig(path);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* 便捷函数:重新加载配置
|
|
259
|
+
*/
|
|
260
|
+
export async function reloadConfig() {
|
|
261
|
+
return ConfigManager.reloadConfig();
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 便捷函数:获取配置摘要
|
|
265
|
+
*/
|
|
266
|
+
export function getConfigSummary() {
|
|
267
|
+
return ConfigManager.getConfigSummary();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 便捷函数:获取 Provider 配置
|
|
271
|
+
*/
|
|
272
|
+
export function getProviderConfig(providerName) {
|
|
273
|
+
return ConfigManager.getProviderConfig(providerName);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* 便捷函数:检查 Provider 状态
|
|
277
|
+
*/
|
|
278
|
+
export function isProviderEnabled(providerName) {
|
|
279
|
+
return ConfigManager.isProviderEnabled(providerName);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* 便捷函数:设置 Provider 状态
|
|
283
|
+
*/
|
|
284
|
+
export function setProviderEnabled(providerName, enabled) {
|
|
285
|
+
ConfigManager.setProviderEnabled(providerName, enabled);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* 便捷函数:获取输出协议
|
|
289
|
+
*/
|
|
290
|
+
export function getOutputProtocol() {
|
|
291
|
+
return ConfigManager.getOutputProtocol();
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* 便捷函数:设置输出协议
|
|
295
|
+
*/
|
|
296
|
+
export function setOutputProtocol(protocol) {
|
|
297
|
+
ConfigManager.setOutputProtocol(protocol);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 便捷函数:获取输入协议
|
|
301
|
+
*/
|
|
302
|
+
export function getInputProtocol() {
|
|
303
|
+
return ConfigManager.getInputProtocol();
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* 便捷函数:设置输入协议
|
|
307
|
+
*/
|
|
308
|
+
export function setInputProtocol(protocol) {
|
|
309
|
+
ConfigManager.setInputProtocol(protocol);
|
|
310
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { V3ToStandardNodeAdapter } from './v3-to-standard-adapter.js';
|