@jsonstudio/llms 0.4.3 → 0.4.4
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 +3 -1
- package/dist/bridge/routecodex-adapter.js +6 -3
- package/dist/config-unified/enhanced-path-resolver.js +14 -6
- package/dist/config-unified/unified-config.js +103 -59
- package/dist/conversion/codec-registry.js +4 -2
- package/dist/conversion/hub/pipeline/hub-pipeline.js +4 -5
- package/dist/conversion/hub/process/chat-process.js +258 -41
- package/dist/conversion/hub/response/provider-response.js +8 -2
- package/dist/conversion/hub/tool-governance/engine.d.ts +16 -0
- package/dist/conversion/hub/tool-governance/engine.js +266 -0
- package/dist/conversion/hub/tool-governance/index.d.ts +3 -0
- package/dist/conversion/hub/tool-governance/index.js +2 -0
- package/dist/conversion/hub/tool-governance/rules.d.ts +2 -0
- package/dist/conversion/hub/tool-governance/rules.js +76 -0
- package/dist/conversion/hub/tool-governance/types.d.ts +38 -0
- package/dist/conversion/index.d.ts +1 -0
- package/dist/conversion/index.js +1 -0
- package/dist/conversion/responses/responses-openai-bridge.js +5 -3
- package/dist/sse/sse-to-json/builders/response-builder.js +2 -1
- package/dist/sse/sse-to-json/chat-sse-to-json-converter.js +37 -23
- package/dist/sse/sse-to-json/parsers/sse-parser.js +20 -12
- package/dist/sse/sse-to-json/responses-sse-to-json-converter.d.ts +1 -0
- package/dist/sse/sse-to-json/responses-sse-to-json-converter.js +10 -8
- package/dist/sse/types/chat-types.d.ts +9 -6
- package/dist/sse/types/conversion-context.d.ts +14 -11
- package/dist/sse/types/core-interfaces.d.ts +6 -2
- package/dist/sse/types/index.d.ts +1 -1
- package/dist/sse/types/responses-types.d.ts +20 -20
- package/dist/sse/types/sse-events.d.ts +4 -3
- package/dist/sse/types/stream-state.d.ts +34 -39
- package/dist/sse/types/utility-types.d.ts +47 -43
- package/dist/sse/types/utility-types.js +10 -13
- package/dist/tools/tool-registry.js +156 -98
- package/package.json +7 -7
- package/dist/api/index.d.ts +0 -10
- package/dist/api/index.js +0 -11
- package/dist/api/llmswitch-config.d.ts +0 -15
- package/dist/api/llmswitch-config.js +0 -415
- package/dist/api/llmswitch-types.d.ts +0 -412
- package/dist/api/llmswitch-types.js +0 -60
- package/dist/bridge/routecodex-adapter.d.ts +0 -74
- package/dist/config/index.d.ts +0 -3
- package/dist/config/index.js +0 -5
- package/dist/config-unified/enhanced-path-resolver.d.ts +0 -5
- package/dist/config-unified/unified-config.d.ts +0 -26
- package/dist/conversion/codec-registry.d.ts +0 -10
- package/dist/conversion/codecs/anthropic-openai-codec.d.ts +0 -23
- package/dist/conversion/codecs/gemini-openai-codec.d.ts +0 -16
- package/dist/conversion/codecs/openai-openai-codec.d.ts +0 -12
- package/dist/conversion/codecs/responses-openai-codec.d.ts +0 -12
- package/dist/conversion/config/config-manager.d.ts +0 -212
- package/dist/conversion/conversion-v3/adapters/index.d.ts +0 -2
- package/dist/conversion/conversion-v3/adapters/index.js +0 -1
- package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.d.ts +0 -38
- package/dist/conversion/conversion-v3/adapters/v3-to-standard-adapter.js +0 -55
- package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.d.ts +0 -22
- package/dist/conversion/conversion-v3/compatibility/compatibility-profiles.js +0 -84
- package/dist/conversion/conversion-v3/compatibility/compatibility-stages.d.ts +0 -4
- package/dist/conversion/conversion-v3/compatibility/compatibility-stages.js +0 -285
- package/dist/conversion/conversion-v3/compatibility/index.d.ts +0 -3
- package/dist/conversion/conversion-v3/compatibility/index.js +0 -2
- package/dist/conversion/conversion-v3/config/default-configs.d.ts +0 -48
- package/dist/conversion/conversion-v3/config/default-configs.js +0 -1007
- package/dist/conversion/conversion-v3/config/index.d.ts +0 -5
- package/dist/conversion/conversion-v3/config/index.js +0 -5
- package/dist/conversion/conversion-v3/config/pipeline-config-manager.d.ts +0 -49
- package/dist/conversion/conversion-v3/config/pipeline-config-manager.js +0 -65
- package/dist/conversion/conversion-v3/index.d.ts +0 -11
- package/dist/conversion/conversion-v3/index.js +0 -17
- package/dist/conversion/conversion-v3/nodes/index.d.ts +0 -56
- package/dist/conversion/conversion-v3/nodes/index.js +0 -149
- package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.d.ts +0 -25
- package/dist/conversion/conversion-v3/nodes/input/anthropic-input-node.js +0 -56
- package/dist/conversion/conversion-v3/nodes/input/base-input-node.d.ts +0 -75
- package/dist/conversion/conversion-v3/nodes/input/base-input-node.js +0 -237
- package/dist/conversion/conversion-v3/nodes/input/chat-input-node.d.ts +0 -25
- package/dist/conversion/conversion-v3/nodes/input/chat-input-node.js +0 -56
- package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.d.ts +0 -4
- package/dist/conversion/conversion-v3/nodes/input/chat-shape-helpers.js +0 -197
- package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.d.ts +0 -16
- package/dist/conversion/conversion-v3/nodes/input/gemini-input-node.js +0 -125
- package/dist/conversion/conversion-v3/nodes/input/index.d.ts +0 -8
- package/dist/conversion/conversion-v3/nodes/input/index.js +0 -8
- package/dist/conversion/conversion-v3/nodes/input/input-decision.d.ts +0 -46
- package/dist/conversion/conversion-v3/nodes/input/input-decision.js +0 -125
- package/dist/conversion/conversion-v3/nodes/input/responses-input-node.d.ts +0 -20
- package/dist/conversion/conversion-v3/nodes/input/responses-input-node.js +0 -51
- package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.d.ts +0 -71
- package/dist/conversion/conversion-v3/nodes/output/anthropic-output-node.js +0 -320
- package/dist/conversion/conversion-v3/nodes/output/base-output-node.d.ts +0 -116
- package/dist/conversion/conversion-v3/nodes/output/base-output-node.js +0 -512
- package/dist/conversion/conversion-v3/nodes/output/index.d.ts +0 -7
- package/dist/conversion/conversion-v3/nodes/output/index.js +0 -7
- package/dist/conversion/conversion-v3/nodes/output/openai-output-node.d.ts +0 -71
- package/dist/conversion/conversion-v3/nodes/output/openai-output-node.js +0 -293
- package/dist/conversion/conversion-v3/nodes/output/output-decision.d.ts +0 -68
- package/dist/conversion/conversion-v3/nodes/output/output-decision.js +0 -161
- package/dist/conversion/conversion-v3/nodes/output/responses-output-node.d.ts +0 -64
- package/dist/conversion/conversion-v3/nodes/output/responses-output-node.js +0 -323
- package/dist/conversion/conversion-v3/nodes/process/base-process-node.d.ts +0 -72
- package/dist/conversion/conversion-v3/nodes/process/base-process-node.js +0 -246
- package/dist/conversion/conversion-v3/nodes/process/chat-process-node.d.ts +0 -135
- package/dist/conversion/conversion-v3/nodes/process/chat-process-node.js +0 -854
- package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.d.ts +0 -29
- package/dist/conversion/conversion-v3/nodes/process/compatibility-process-node.js +0 -181
- package/dist/conversion/conversion-v3/nodes/process/index.d.ts +0 -10
- package/dist/conversion/conversion-v3/nodes/process/index.js +0 -10
- package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.d.ts +0 -59
- package/dist/conversion/conversion-v3/nodes/process/passthrough-process-node.js +0 -243
- package/dist/conversion/conversion-v3/nodes/process/response-process-node.d.ts +0 -17
- package/dist/conversion/conversion-v3/nodes/process/response-process-node.js +0 -213
- package/dist/conversion/conversion-v3/nodes/process/tool-process-node.d.ts +0 -30
- package/dist/conversion/conversion-v3/nodes/process/tool-process-node.js +0 -360
- package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.d.ts +0 -40
- package/dist/conversion/conversion-v3/nodes/process/virtual-router-process-node.js +0 -430
- package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.d.ts +0 -12
- package/dist/conversion/conversion-v3/nodes/response/anthropic-response-input-node.js +0 -129
- package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.d.ts +0 -15
- package/dist/conversion/conversion-v3/nodes/response/chat-to-responses-response-node.js +0 -57
- package/dist/conversion/conversion-v3/nodes/response/index.d.ts +0 -4
- package/dist/conversion/conversion-v3/nodes/response/index.js +0 -4
- package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.d.ts +0 -15
- package/dist/conversion/conversion-v3/nodes/response/openai-response-input-node.js +0 -87
- package/dist/conversion/conversion-v3/nodes/response/response-utils.d.ts +0 -1
- package/dist/conversion/conversion-v3/nodes/response/response-utils.js +0 -1
- package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.d.ts +0 -12
- package/dist/conversion/conversion-v3/nodes/response/responses-response-input-node.js +0 -67
- package/dist/conversion/conversion-v3/nodes/sse/index.d.ts +0 -3
- package/dist/conversion/conversion-v3/nodes/sse/index.js +0 -3
- package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.d.ts +0 -27
- package/dist/conversion/conversion-v3/nodes/sse/sse-input-node.js +0 -165
- package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.d.ts +0 -19
- package/dist/conversion/conversion-v3/nodes/sse/sse-output-node.js +0 -267
- package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.d.ts +0 -18
- package/dist/conversion/conversion-v3/nodes/sse/sse-passthrough-node.js +0 -48
- package/dist/conversion/conversion-v3/pipelines/index.d.ts +0 -6
- package/dist/conversion/conversion-v3/pipelines/index.js +0 -6
- package/dist/conversion/conversion-v3/pipelines/super-pipeline.d.ts +0 -112
- package/dist/conversion/conversion-v3/pipelines/super-pipeline.js +0 -566
- package/dist/conversion/conversion-v3/response/provider-response-converter.d.ts +0 -28
- package/dist/conversion/conversion-v3/response/provider-response-converter.js +0 -249
- package/dist/conversion/conversion-v3/sse/index.d.ts +0 -140
- package/dist/conversion/conversion-v3/sse/index.js +0 -115
- package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
- package/dist/conversion/conversion-v3/sse/json-to-sse/anthropic-json-to-sse-converter.js +0 -79
- package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
- package/dist/conversion/conversion-v3/sse/json-to-sse/chat-json-to-sse-converter.js +0 -296
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.d.ts +0 -55
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/chat.js +0 -233
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.d.ts +0 -99
- package/dist/conversion/conversion-v3/sse/json-to-sse/event-generators/responses.js +0 -599
- package/dist/conversion/conversion-v3/sse/json-to-sse/index.d.ts +0 -6
- package/dist/conversion/conversion-v3/sse/json-to-sse/index.js +0 -7
- package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
- package/dist/conversion/conversion-v3/sse/json-to-sse/responses-json-to-sse-converter.js +0 -322
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/chat-sequencer.js +0 -218
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
- package/dist/conversion/conversion-v3/sse/json-to-sse/sequencers/responses-sequencer.js +0 -263
- package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.d.ts +0 -32
- package/dist/conversion/conversion-v3/sse/registry/sse-codec-registry.js +0 -106
- package/dist/conversion/conversion-v3/sse/shared/chat-serializer.d.ts +0 -4
- package/dist/conversion/conversion-v3/sse/shared/chat-serializer.js +0 -40
- package/dist/conversion/conversion-v3/sse/shared/constants.d.ts +0 -272
- package/dist/conversion/conversion-v3/sse/shared/constants.js +0 -321
- package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.d.ts +0 -158
- package/dist/conversion/conversion-v3/sse/shared/serializers/base-serializer.js +0 -210
- package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
- package/dist/conversion/conversion-v3/sse/shared/serializers/chat-event-serializer.js +0 -275
- package/dist/conversion/conversion-v3/sse/shared/serializers/index.d.ts +0 -39
- package/dist/conversion/conversion-v3/sse/shared/serializers/index.js +0 -54
- package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
- package/dist/conversion/conversion-v3/sse/shared/serializers/responses-event-serializer.js +0 -356
- package/dist/conversion/conversion-v3/sse/shared/serializers/types.d.ts +0 -51
- package/dist/conversion/conversion-v3/sse/shared/serializers/types.js +0 -4
- package/dist/conversion/conversion-v3/sse/shared/utils.d.ts +0 -254
- package/dist/conversion/conversion-v3/sse/shared/utils.js +0 -543
- package/dist/conversion/conversion-v3/sse/shared/writer.d.ts +0 -111
- package/dist/conversion/conversion-v3/sse/shared/writer.js +0 -268
- package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
- package/dist/conversion/conversion-v3/sse/sse-to-json/anthropic-sse-to-json-converter.js +0 -139
- package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.d.ts +0 -165
- package/dist/conversion/conversion-v3/sse/sse-to-json/builders/response-builder.js +0 -776
- package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
- package/dist/conversion/conversion-v3/sse/sse-to-json/chat-sse-to-json-converter.js +0 -540
- package/dist/conversion/conversion-v3/sse/sse-to-json/index.d.ts +0 -6
- package/dist/conversion/conversion-v3/sse/sse-to-json/index.js +0 -7
- package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
- package/dist/conversion/conversion-v3/sse/sse-to-json/parsers/sse-parser.js +0 -332
- package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.d.ts +0 -59
- package/dist/conversion/conversion-v3/sse/sse-to-json/responses-sse-to-json-converter.js +0 -270
- package/dist/conversion/conversion-v3/sse/types/anthropic-types.d.ts +0 -87
- package/dist/conversion/conversion-v3/sse/types/anthropic-types.js +0 -5
- package/dist/conversion/conversion-v3/sse/types/chat-types.d.ts +0 -308
- package/dist/conversion/conversion-v3/sse/types/chat-types.js +0 -32
- package/dist/conversion/conversion-v3/sse/types/conversion-context.d.ts +0 -211
- package/dist/conversion/conversion-v3/sse/types/conversion-context.js +0 -20
- package/dist/conversion/conversion-v3/sse/types/core-interfaces.d.ts +0 -90
- package/dist/conversion/conversion-v3/sse/types/core-interfaces.js +0 -5
- package/dist/conversion/conversion-v3/sse/types/index.d.ts +0 -14
- package/dist/conversion/conversion-v3/sse/types/index.js +0 -7
- package/dist/conversion/conversion-v3/sse/types/responses-types.d.ts +0 -328
- package/dist/conversion/conversion-v3/sse/types/responses-types.js +0 -38
- package/dist/conversion/conversion-v3/sse/types/sse-events.d.ts +0 -180
- package/dist/conversion/conversion-v3/sse/types/sse-events.js +0 -150
- package/dist/conversion/conversion-v3/sse/types/stream-state.d.ts +0 -204
- package/dist/conversion/conversion-v3/sse/types/stream-state.js +0 -44
- package/dist/conversion/conversion-v3/sse/types/utility-types.d.ts +0 -230
- package/dist/conversion/conversion-v3/sse/types/utility-types.js +0 -49
- package/dist/conversion/conversion-v3/standards/context-adapter.d.ts +0 -146
- package/dist/conversion/conversion-v3/standards/context-adapter.js +0 -438
- package/dist/conversion/conversion-v3/standards/errors.d.ts +0 -38
- package/dist/conversion/conversion-v3/standards/errors.js +0 -27
- package/dist/conversion/conversion-v3/standards/index.d.ts +0 -15
- package/dist/conversion/conversion-v3/standards/index.js +0 -11
- package/dist/conversion/conversion-v3/standards/node-capabilities.d.ts +0 -123
- package/dist/conversion/conversion-v3/standards/node-capabilities.js +0 -330
- package/dist/conversion/conversion-v3/standards/pipeline-context.d.ts +0 -237
- package/dist/conversion/conversion-v3/standards/pipeline-context.js +0 -84
- package/dist/conversion/conversion-v3/standards/pipeline-node.d.ts +0 -196
- package/dist/conversion/conversion-v3/standards/pipeline-node.js +0 -316
- package/dist/conversion/conversion-v3/standards/snapshot-handles.d.ts +0 -24
- package/dist/conversion/conversion-v3/standards/snapshot-handles.js +0 -49
- package/dist/conversion/conversion-v3/types/config-types.d.ts +0 -242
- package/dist/conversion/conversion-v3/types/config-types.js +0 -13
- package/dist/conversion/conversion-v3/types/index.d.ts +0 -8
- package/dist/conversion/conversion-v3/types/index.js +0 -11
- package/dist/conversion/conversion-v3/types/node-types.d.ts +0 -211
- package/dist/conversion/conversion-v3/types/node-types.js +0 -20
- package/dist/conversion/conversion-v3/types/pipeline-types.d.ts +0 -246
- package/dist/conversion/conversion-v3/types/pipeline-types.js +0 -26
- package/dist/conversion/conversion-v3/types/request-types.d.ts +0 -293
- package/dist/conversion/conversion-v3/types/request-types.js +0 -26
- package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.d.ts +0 -10
- package/dist/conversion/conversion-v3/utils/provider-payload-sanitizer.js +0 -103
- package/dist/conversion/conversion-v3/validations/index.d.ts +0 -8
- package/dist/conversion/conversion-v3/validations/index.js +0 -7
- package/dist/conversion/conversion-v3/validations/node-graph-validator.d.ts +0 -116
- package/dist/conversion/conversion-v3/validations/node-graph-validator.js +0 -505
- package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.d.ts +0 -139
- package/dist/conversion/conversion-v3/validations/tool-governance-enforcer.js +0 -338
- package/dist/conversion/hub/config/types.d.ts +0 -26
- package/dist/conversion/hub/core/detour-registry.d.ts +0 -9
- package/dist/conversion/hub/core/hub-context.d.ts +0 -21
- package/dist/conversion/hub/core/index.d.ts +0 -3
- package/dist/conversion/hub/core/stage-driver.d.ts +0 -30
- package/dist/conversion/hub/format-adapters/anthropic-format-adapter.d.ts +0 -16
- package/dist/conversion/hub/format-adapters/chat-format-adapter.d.ts +0 -17
- package/dist/conversion/hub/format-adapters/gemini-format-adapter.d.ts +0 -16
- package/dist/conversion/hub/format-adapters/index.d.ts +0 -21
- package/dist/conversion/hub/format-adapters/responses-format-adapter.d.ts +0 -17
- package/dist/conversion/hub/hub-feature.d.ts +0 -1
- package/dist/conversion/hub/node-support.d.ts +0 -19
- package/dist/conversion/hub/pipeline/hub-pipeline.d.ts +0 -68
- package/dist/conversion/hub/pipelines/inbound.d.ts +0 -22
- package/dist/conversion/hub/pipelines/outbound.d.ts +0 -22
- package/dist/conversion/hub/process/chat-process.d.ts +0 -13
- package/dist/conversion/hub/registry.d.ts +0 -28
- package/dist/conversion/hub/response/chat-response-utils.d.ts +0 -6
- package/dist/conversion/hub/response/provider-response.d.ts +0 -20
- package/dist/conversion/hub/response/response-mappers.d.ts +0 -19
- package/dist/conversion/hub/response/response-runtime.d.ts +0 -3
- package/dist/conversion/hub/semantic-mappers/anthropic-mapper.d.ts +0 -7
- package/dist/conversion/hub/semantic-mappers/chat-mapper.d.ts +0 -7
- package/dist/conversion/hub/semantic-mappers/gemini-mapper.d.ts +0 -7
- package/dist/conversion/hub/semantic-mappers/index.d.ts +0 -4
- package/dist/conversion/hub/semantic-mappers/responses-mapper.d.ts +0 -21
- package/dist/conversion/hub/snapshot-recorder.d.ts +0 -12
- package/dist/conversion/hub/standardized-bridge.d.ts +0 -12
- package/dist/conversion/hub/types/chat-envelope.d.ts +0 -67
- package/dist/conversion/hub/types/chat-schema.d.ts +0 -112
- package/dist/conversion/hub/types/errors.d.ts +0 -5
- package/dist/conversion/hub/types/format-envelope.d.ts +0 -7
- package/dist/conversion/hub/types/index.d.ts +0 -6
- package/dist/conversion/hub/types/json.d.ts +0 -9
- package/dist/conversion/hub/types/node.d.ts +0 -31
- package/dist/conversion/hub/types/standardized.d.ts +0 -94
- package/dist/conversion/responses/responses-openai-bridge.d.ts +0 -95
- package/dist/conversion/schema-validator.d.ts +0 -7
- package/dist/conversion/shared/args-mapping.d.ts +0 -18
- package/dist/conversion/shared/chat-request-filters.d.ts +0 -9
- package/dist/conversion/shared/jsonish.d.ts +0 -3
- package/dist/conversion/shared/mcp-injection.d.ts +0 -2
- package/dist/conversion/shared/media.d.ts +0 -1
- package/dist/conversion/shared/openai-finalizer.d.ts +0 -9
- package/dist/conversion/shared/openai-message-normalize.d.ts +0 -1
- package/dist/conversion/shared/payload-budget.d.ts +0 -13
- package/dist/conversion/shared/reasoning-mapping.d.ts +0 -5
- package/dist/conversion/shared/responses-conversation-store.d.ts +0 -41
- package/dist/conversion/shared/responses-id-utils.d.ts +0 -7
- package/dist/conversion/shared/responses-instructions.d.ts +0 -1
- package/dist/conversion/shared/responses-metadata.d.ts +0 -1
- package/dist/conversion/shared/responses-request-adapter.d.ts +0 -66
- package/dist/conversion/shared/snapshot-hooks.d.ts +0 -12
- package/dist/conversion/shared/streaming-text-extractor.d.ts +0 -26
- package/dist/conversion/shared/text-markup-normalizer.d.ts +0 -9
- package/dist/conversion/shared/tool-canonicalizer.d.ts +0 -2
- package/dist/conversion/shared/tool-filter-pipeline.d.ts +0 -17
- package/dist/conversion/shared/tool-governor.d.ts +0 -27
- package/dist/conversion/shared/tool-harvester.d.ts +0 -31
- package/dist/conversion/shared/tool-mapping.d.ts +0 -10
- package/dist/conversion/shared/tooling.d.ts +0 -26
- package/dist/conversion/types.d.ts +0 -33
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.js +0 -9
- package/dist/core/llmswitch-engine-v2.d.ts +0 -132
- package/dist/core/llmswitch-engine-v2.js +0 -649
- package/dist/core/llmswitch-factory-v2.d.ts +0 -123
- package/dist/core/llmswitch-factory-v2.js +0 -521
- package/dist/endpoints/base-endpoint-handler.d.ts +0 -128
- package/dist/endpoints/base-endpoint-handler.js +0 -545
- package/dist/endpoints/chat-endpoint-handler.d.ts +0 -115
- package/dist/endpoints/chat-endpoint-handler.js +0 -218
- package/dist/endpoints/endpoint-router.d.ts +0 -127
- package/dist/endpoints/endpoint-router.js +0 -438
- package/dist/endpoints/index.d.ts +0 -13
- package/dist/endpoints/index.js +0 -11
- package/dist/endpoints/messages-endpoint-handler.d.ts +0 -171
- package/dist/endpoints/messages-endpoint-handler.js +0 -238
- package/dist/endpoints/responses-endpoint-handler.d.ts +0 -147
- package/dist/endpoints/responses-endpoint-handler.js +0 -233
- package/dist/filters/builtin/add-fields-filter.d.ts +0 -8
- package/dist/filters/builtin/blacklist-filter.d.ts +0 -8
- package/dist/filters/builtin/whitelist-filter.d.ts +0 -8
- package/dist/filters/engine.d.ts +0 -16
- package/dist/filters/index.d.ts +0 -19
- package/dist/filters/special/request-streaming-to-nonstreaming.d.ts +0 -12
- package/dist/filters/special/request-tool-choice-policy.d.ts +0 -11
- package/dist/filters/special/request-tool-list-filter.d.ts +0 -11
- package/dist/filters/special/request-toolcalls-stringify.d.ts +0 -10
- package/dist/filters/special/request-tools-normalize.d.ts +0 -12
- package/dist/filters/special/response-finish-invariants.d.ts +0 -11
- package/dist/filters/special/response-openai-to-responses-bridge.d.ts +0 -13
- package/dist/filters/special/response-tool-arguments-blacklist.d.ts +0 -12
- package/dist/filters/special/response-tool-arguments-schema-converge.d.ts +0 -13
- package/dist/filters/special/response-tool-arguments-stringify.d.ts +0 -9
- package/dist/filters/special/response-tool-arguments-toon-decode.d.ts +0 -10
- package/dist/filters/special/response-tool-arguments-whitelist.d.ts +0 -11
- package/dist/filters/special/response-tool-text-canonicalize.d.ts +0 -10
- package/dist/filters/special/tool-filter-hooks.d.ts +0 -19
- package/dist/filters/special/tool-post-constraints.d.ts +0 -31
- package/dist/filters/types.d.ts +0 -68
- package/dist/filters/utils/fieldmap-loader.d.ts +0 -2
- package/dist/filters/utils/snapshot-writer.d.ts +0 -10
- package/dist/guidance/index.d.ts +0 -3
- package/dist/hooks/hooks-integration.d.ts +0 -161
- package/dist/hooks/hooks-integration.js +0 -519
- package/dist/hooks/index.d.ts +0 -10
- package/dist/hooks/index.js +0 -13
- package/dist/html-to-markdown.d.ts +0 -5
- package/dist/html-to-markdown.js +0 -66
- package/dist/http/sse-response.d.ts +0 -22
- package/dist/router/virtual-router/bootstrap.d.ts +0 -6
- package/dist/router/virtual-router/classifier.d.ts +0 -10
- package/dist/router/virtual-router/engine.d.ts +0 -35
- package/dist/router/virtual-router/error-center.d.ts +0 -10
- package/dist/router/virtual-router/features.d.ts +0 -3
- package/dist/router/virtual-router/health-manager.d.ts +0 -18
- package/dist/router/virtual-router/load-balancer.d.ts +0 -18
- package/dist/router/virtual-router/provider-registry.d.ts +0 -11
- package/dist/router/virtual-router/types.d.ts +0 -206
- package/dist/sse/json-to-sse/anthropic-json-to-sse-converter.d.ts +0 -11
- package/dist/sse/json-to-sse/chat-json-to-sse-converter.d.ts +0 -79
- package/dist/sse/json-to-sse/event-generators/chat.d.ts +0 -55
- package/dist/sse/json-to-sse/event-generators/responses.d.ts +0 -99
- package/dist/sse/json-to-sse/index.d.ts +0 -6
- package/dist/sse/json-to-sse/responses-json-to-sse-converter.d.ts +0 -79
- package/dist/sse/json-to-sse/sequencers/chat-sequencer.d.ts +0 -37
- package/dist/sse/json-to-sse/sequencers/responses-sequencer.d.ts +0 -40
- package/dist/sse/registry/sse-codec-registry.d.ts +0 -32
- package/dist/sse/shared/chat-serializer.d.ts +0 -4
- package/dist/sse/shared/constants.d.ts +0 -272
- package/dist/sse/shared/serializers/base-serializer.d.ts +0 -158
- package/dist/sse/shared/serializers/chat-event-serializer.d.ts +0 -82
- package/dist/sse/shared/serializers/index.d.ts +0 -39
- package/dist/sse/shared/serializers/responses-event-serializer.d.ts +0 -123
- package/dist/sse/shared/serializers/types.d.ts +0 -51
- package/dist/sse/shared/utils.d.ts +0 -254
- package/dist/sse/shared/writer.d.ts +0 -111
- package/dist/sse/sse-to-json/anthropic-sse-to-json-converter.d.ts +0 -13
- package/dist/sse/sse-to-json/builders/response-builder.d.ts +0 -165
- package/dist/sse/sse-to-json/chat-sse-to-json-converter.d.ts +0 -106
- package/dist/sse/sse-to-json/index.d.ts +0 -6
- package/dist/sse/sse-to-json/parsers/sse-parser.d.ts +0 -73
- package/dist/sse/types/anthropic-types.d.ts +0 -87
- package/dist/tools/proxy/anthropic-tool-proxy.d.ts +0 -19
- package/dist/tools/proxy/anthropic-tool-proxy.js +0 -57
- package/dist/tools/proxy/executors/web-fetch.d.ts +0 -6
- package/dist/tools/proxy/executors/web-fetch.js +0 -39
- package/dist/tools/proxy/registry.d.ts +0 -8
- package/dist/tools/proxy/registry.js +0 -14
- package/dist/tools/proxy/types.d.ts +0 -29
- package/dist/tools/tool-registry.d.ts +0 -8
- package/dist/tools/web-fetch-html.d.ts +0 -15
- package/dist/tools/web-fetch-html.js +0 -83
- package/dist/utils/conversion-adapter.d.ts +0 -65
- package/dist/utils/conversion-adapter.js +0 -183
- package/dist/utils/error-factory.d.ts +0 -88
- package/dist/utils/error-factory.js +0 -138
- package/dist/utils/error-utils.d.ts +0 -334
- package/dist/utils/error-utils.js +0 -782
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.js +0 -13
- package/dist/utils/performance-utils.d.ts +0 -205
- package/dist/utils/performance-utils.js +0 -440
- package/dist/utils/profile-mapper.d.ts +0 -32
- package/dist/utils/profile-mapper.js +0 -269
- package/dist/utils/request-processor.d.ts +0 -52
- package/dist/utils/request-processor.js +0 -210
- package/dist/utils/request-utils.d.ts +0 -117
- package/dist/utils/request-utils.js +0 -333
- package/dist/utils/response-utils.d.ts +0 -127
- package/dist/utils/response-utils.js +0 -516
- package/dist/utils/token-counter.d.ts +0 -89
- package/dist/utils/token-counter.js +0 -541
- /package/dist/{tools/proxy → conversion/hub/tool-governance}/types.js +0 -0
|
@@ -76,16 +76,18 @@ function parseSseLine(line) {
|
|
|
76
76
|
* 将原始SSE行组装为事件
|
|
77
77
|
*/
|
|
78
78
|
export function assembleSseEvent(lines) {
|
|
79
|
-
if (lines.length === 0)
|
|
79
|
+
if (lines.length === 0) {
|
|
80
80
|
return null;
|
|
81
|
+
}
|
|
81
82
|
const event = {
|
|
82
83
|
event: 'message', // 默认事件类型
|
|
83
84
|
data: ''
|
|
84
85
|
};
|
|
85
86
|
for (const line of lines) {
|
|
86
87
|
const { field, value } = parseSseLine(line);
|
|
87
|
-
if (!field)
|
|
88
|
+
if (!field) {
|
|
88
89
|
continue;
|
|
90
|
+
}
|
|
89
91
|
switch (field) {
|
|
90
92
|
case 'id':
|
|
91
93
|
event.id = value;
|
|
@@ -94,7 +96,7 @@ export function assembleSseEvent(lines) {
|
|
|
94
96
|
event.event = value;
|
|
95
97
|
break;
|
|
96
98
|
case 'data':
|
|
97
|
-
event.data = event.data ? event.data
|
|
99
|
+
event.data = event.data ? `${event.data}\n${value}` : value;
|
|
98
100
|
break;
|
|
99
101
|
case 'retry':
|
|
100
102
|
event.retry = value;
|
|
@@ -119,7 +121,8 @@ function safeJsonParse(data) {
|
|
|
119
121
|
return JSON.parse(data);
|
|
120
122
|
}
|
|
121
123
|
catch (error) {
|
|
122
|
-
|
|
124
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
125
|
+
throw new Error(`Invalid JSON data: ${message}`);
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
/**
|
|
@@ -134,19 +137,23 @@ function validateEventType(eventType, config) {
|
|
|
134
137
|
/**
|
|
135
138
|
* 创建基础事件对象
|
|
136
139
|
*/
|
|
137
|
-
function createBaseEvent(rawEvent, config,
|
|
140
|
+
function createBaseEvent(rawEvent, config, _rawData) {
|
|
138
141
|
const baseEvent = {
|
|
139
142
|
type: rawEvent.event,
|
|
140
|
-
timestamp: rawEvent.timestamp
|
|
143
|
+
timestamp: rawEvent.timestamp ?? Date.now(),
|
|
141
144
|
data: null,
|
|
142
145
|
sequenceNumber: typeof rawEvent.id === 'string' ? Number(rawEvent.id) : 0
|
|
143
146
|
};
|
|
144
147
|
// 解析数据字段
|
|
145
148
|
try {
|
|
146
149
|
if (rawEvent.data) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
+
const parsedData = safeJsonParse(rawEvent.data);
|
|
151
|
+
baseEvent.data = parsedData;
|
|
152
|
+
if (parsedData &&
|
|
153
|
+
typeof parsedData === 'object' &&
|
|
154
|
+
'sequence_number' in parsedData &&
|
|
155
|
+
typeof parsedData.sequence_number === 'number') {
|
|
156
|
+
baseEvent.sequenceNumber = parsedData.sequence_number;
|
|
150
157
|
}
|
|
151
158
|
}
|
|
152
159
|
}
|
|
@@ -156,7 +163,7 @@ function createBaseEvent(rawEvent, config, rawData) {
|
|
|
156
163
|
baseEvent.type = 'error';
|
|
157
164
|
}
|
|
158
165
|
else {
|
|
159
|
-
throw error;
|
|
166
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
160
167
|
}
|
|
161
168
|
}
|
|
162
169
|
return baseEvent;
|
|
@@ -249,7 +256,7 @@ export function parseSseEvent(sseText, config = DEFAULT_SSE_PARSER_CONFIG) {
|
|
|
249
256
|
result.success = true;
|
|
250
257
|
}
|
|
251
258
|
catch (error) {
|
|
252
|
-
result.error = error.message;
|
|
259
|
+
result.error = error instanceof Error ? error.message : String(error);
|
|
253
260
|
}
|
|
254
261
|
return result;
|
|
255
262
|
}
|
|
@@ -276,8 +283,9 @@ export async function* parseSseStreamAsync(asyncSseData, config = DEFAULT_SSE_PA
|
|
|
276
283
|
// 查找完整的事件边界
|
|
277
284
|
while (true) {
|
|
278
285
|
const eventEnd = buffer.indexOf('\n\n');
|
|
279
|
-
if (eventEnd === -1)
|
|
286
|
+
if (eventEnd === -1) {
|
|
280
287
|
break;
|
|
288
|
+
}
|
|
281
289
|
const eventData = buffer.substring(0, eventEnd);
|
|
282
290
|
buffer = buffer.substring(eventEnd + 2);
|
|
283
291
|
const result = parseSseEvent(eventData, config);
|
|
@@ -48,14 +48,10 @@ export class ResponsesSseToJsonConverterRefactored {
|
|
|
48
48
|
const readableStream = this.createReadableStream(sseStream);
|
|
49
49
|
// 5. 流式处理SSE数据(按增量缓冲解析,避免跨 chunk 的事件被截断)
|
|
50
50
|
// 注意:不要对每个 chunk 独立 parse;必须使用一个持续的 async 解析器维持缓冲区。
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
yield typeof chunk === 'string' ? chunk : chunk.toString();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
for await (const parseResult of parser.parseStreamAsync(chunkStrings(readableStream))) {
|
|
57
|
-
if (context.isCompleted)
|
|
51
|
+
for await (const parseResult of parser.parseStreamAsync(this.chunkStrings(readableStream))) {
|
|
52
|
+
if (context.isCompleted) {
|
|
58
53
|
break;
|
|
54
|
+
}
|
|
59
55
|
if (parseResult.success && parseResult.event) {
|
|
60
56
|
const event = parseResult.event;
|
|
61
57
|
// 验证序列号
|
|
@@ -150,8 +146,14 @@ export class ResponsesSseToJsonConverterRefactored {
|
|
|
150
146
|
* 将事件对象序列化为SSE格式(简单实现)
|
|
151
147
|
*/
|
|
152
148
|
serializeEventToSSE(event) {
|
|
149
|
+
const type = typeof event.type === 'string' ? event.type : 'data';
|
|
153
150
|
const data = event.data ? JSON.stringify(event.data) : '';
|
|
154
|
-
return `event: ${
|
|
151
|
+
return `event: ${type}\ndata: ${data}\n\n`;
|
|
152
|
+
}
|
|
153
|
+
async *chunkStrings(stream) {
|
|
154
|
+
for await (const chunk of stream) {
|
|
155
|
+
yield typeof chunk === 'string' ? chunk : chunk.toString();
|
|
156
|
+
}
|
|
155
157
|
}
|
|
156
158
|
/**
|
|
157
159
|
* 验证序列号
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* 支持OpenAI Chat Completions的JSON↔SSE双向转换
|
|
4
4
|
*/
|
|
5
5
|
import { BaseSseEvent, StreamDirection } from './core-interfaces.js';
|
|
6
|
+
type JsonObject = Record<string, unknown>;
|
|
6
7
|
export type ChatSseEventType = 'chat_chunk' | 'chat.done' | 'error' | 'ping';
|
|
7
8
|
export interface ChatSseEvent extends BaseSseEvent {
|
|
8
9
|
/** 事件类型(SSE标准wire格式) */
|
|
@@ -46,6 +47,7 @@ export interface ChatChoiceChunk {
|
|
|
46
47
|
export interface ChatDelta {
|
|
47
48
|
role?: 'system' | 'user' | 'assistant' | 'tool';
|
|
48
49
|
content?: string | null;
|
|
50
|
+
reasoning?: string;
|
|
49
51
|
function_call?: ChatFunctionCall;
|
|
50
52
|
tool_calls?: ChatToolCallChunk[];
|
|
51
53
|
}
|
|
@@ -121,7 +123,7 @@ export interface ChatMessage {
|
|
|
121
123
|
export interface ChatFunction {
|
|
122
124
|
name: string;
|
|
123
125
|
description?: string;
|
|
124
|
-
parameters?: Record<string,
|
|
126
|
+
parameters?: Record<string, unknown>;
|
|
125
127
|
}
|
|
126
128
|
export interface ChatTool {
|
|
127
129
|
type: 'function';
|
|
@@ -160,8 +162,8 @@ export interface ChatJsonToSseContext {
|
|
|
160
162
|
currentChunk: Partial<ChatCompletionChunk>;
|
|
161
163
|
eventStats: ChatEventStats;
|
|
162
164
|
contentIndexCounter?: Map<string, number>;
|
|
163
|
-
currentRequest?:
|
|
164
|
-
currentResponse?:
|
|
165
|
+
currentRequest?: ChatCompletionRequest;
|
|
166
|
+
currentResponse?: ChatCompletionResponse;
|
|
165
167
|
chatResponse?: ChatCompletionResponse;
|
|
166
168
|
}
|
|
167
169
|
export interface SseToChatJsonContext {
|
|
@@ -257,7 +259,7 @@ export interface ChatConversionError extends Error {
|
|
|
257
259
|
chunkId?: string;
|
|
258
260
|
choiceIndex?: number;
|
|
259
261
|
toolCallIndex?: number;
|
|
260
|
-
context?:
|
|
262
|
+
context?: JsonObject;
|
|
261
263
|
}
|
|
262
264
|
export declare const CHAT_CONVERSION_ERROR_CODES: {
|
|
263
265
|
readonly TIMEOUT: "CHAT_TIMEOUT";
|
|
@@ -273,8 +275,8 @@ export interface ChatEventValidationRule {
|
|
|
273
275
|
requiredFields: string[];
|
|
274
276
|
optionalFields: string[];
|
|
275
277
|
dataValidation?: {
|
|
276
|
-
schema?:
|
|
277
|
-
customValidator?: (data:
|
|
278
|
+
schema?: JsonObject;
|
|
279
|
+
customValidator?: (data: JsonObject) => boolean;
|
|
278
280
|
};
|
|
279
281
|
}
|
|
280
282
|
export interface ChatConversionConfig {
|
|
@@ -306,3 +308,4 @@ export interface ChatSseEventStream extends AsyncIterable<ChatSseEvent> {
|
|
|
306
308
|
on(event: 'chunk', handler: (chunk: ChatCompletionChunk) => void): this;
|
|
307
309
|
on(event: 'stats', handler: (stats: ChatEventStats) => void): this;
|
|
308
310
|
}
|
|
311
|
+
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* 转换上下文类型定义
|
|
3
3
|
* 定义JSON<>SSE双向转换过程中的上下文信息
|
|
4
4
|
*/
|
|
5
|
+
import type { JsonObject, JsonValue } from './core-interfaces.js';
|
|
5
6
|
import type { SseEvent, SseEventStats, SseEventType } from './sse-events.js';
|
|
6
7
|
export interface BaseConversionContext {
|
|
7
8
|
requestId: string;
|
|
@@ -36,6 +37,7 @@ export interface SseToJsonContext extends BaseConversionContext {
|
|
|
36
37
|
isResponseCreated: boolean;
|
|
37
38
|
isInProgress: boolean;
|
|
38
39
|
}
|
|
40
|
+
type ConversionContextUnion = JsonToSseContext | SseToJsonContext;
|
|
39
41
|
export interface JsonToSseOptions {
|
|
40
42
|
requestId: string;
|
|
41
43
|
model: string;
|
|
@@ -104,12 +106,13 @@ export interface OutputItemBuilder {
|
|
|
104
106
|
hasContentPartAdded: boolean;
|
|
105
107
|
isTextInProgress: boolean;
|
|
106
108
|
}
|
|
109
|
+
type LoggerMetadata = Record<string, unknown>;
|
|
107
110
|
export interface ConversionLogger {
|
|
108
|
-
debug(message: string, meta?:
|
|
109
|
-
info(message: string, meta?:
|
|
110
|
-
warn(message: string, meta?:
|
|
111
|
-
error(message: string, error?: Error, meta?:
|
|
112
|
-
event(eventType: string, data?:
|
|
111
|
+
debug(message: string, meta?: LoggerMetadata): void;
|
|
112
|
+
info(message: string, meta?: LoggerMetadata): void;
|
|
113
|
+
warn(message: string, meta?: LoggerMetadata): void;
|
|
114
|
+
error(message: string, error?: Error, meta?: LoggerMetadata): void;
|
|
115
|
+
event(eventType: string, data?: LoggerMetadata): void;
|
|
113
116
|
metric(name: string, value: number, tags?: Record<string, string>): void;
|
|
114
117
|
}
|
|
115
118
|
export interface ConversionError extends Error {
|
|
@@ -117,7 +120,7 @@ export interface ConversionError extends Error {
|
|
|
117
120
|
requestId: string;
|
|
118
121
|
eventType?: string;
|
|
119
122
|
sequenceNumber?: number;
|
|
120
|
-
context?:
|
|
123
|
+
context?: JsonObject;
|
|
121
124
|
}
|
|
122
125
|
export interface StreamState {
|
|
123
126
|
isStarted: boolean;
|
|
@@ -156,20 +159,20 @@ export interface ConversionConfig {
|
|
|
156
159
|
export declare const DEFAULT_CONVERSION_CONFIG: ConversionConfig;
|
|
157
160
|
export interface EventHandler {
|
|
158
161
|
canHandle(eventType: SseEventType): boolean;
|
|
159
|
-
handle(event: SseEvent, context:
|
|
162
|
+
handle(event: SseEvent, context: ConversionContextUnion): Promise<void>;
|
|
160
163
|
}
|
|
161
164
|
export interface ConversionMiddleware {
|
|
162
165
|
name: string;
|
|
163
|
-
beforeConversion?: (context:
|
|
164
|
-
afterConversion?: (context:
|
|
165
|
-
onError?: (context:
|
|
166
|
+
beforeConversion?: (context: ConversionContextUnion) => Promise<void>;
|
|
167
|
+
afterConversion?: (context: ConversionContextUnion, result: unknown) => Promise<void>;
|
|
168
|
+
onError?: (context: ConversionContextUnion, error: Error) => Promise<void>;
|
|
166
169
|
}
|
|
167
170
|
interface OutputItem {
|
|
168
171
|
id: string;
|
|
169
172
|
type: 'reasoning' | 'message' | 'function_call' | 'system_message';
|
|
170
173
|
status?: 'in_progress' | 'completed';
|
|
171
174
|
content?: ContentPart[];
|
|
172
|
-
summary?:
|
|
175
|
+
summary?: JsonValue[];
|
|
173
176
|
role?: string;
|
|
174
177
|
arguments?: string;
|
|
175
178
|
call_id?: string;
|
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
* 核心接口定义
|
|
3
3
|
* 统一的SSE事件最小接口,供writer.ts等共享模块使用
|
|
4
4
|
*/
|
|
5
|
+
export interface JsonObject {
|
|
6
|
+
[key: string]: JsonValue;
|
|
7
|
+
}
|
|
8
|
+
export type JsonValue = string | number | boolean | null | JsonObject | JsonValue[];
|
|
5
9
|
export interface BaseSseEvent {
|
|
6
10
|
/** 事件类型 */
|
|
7
11
|
type: string;
|
|
8
12
|
/** 事件时间戳 */
|
|
9
13
|
timestamp: number;
|
|
10
14
|
/** 事件数据 */
|
|
11
|
-
data:
|
|
15
|
+
data: unknown;
|
|
12
16
|
/** 序列号(可选) */
|
|
13
17
|
sequenceNumber?: number;
|
|
14
18
|
/** 协议标识 */
|
|
@@ -56,7 +60,7 @@ export interface BaseConversionContext {
|
|
|
56
60
|
/** 模型名称 */
|
|
57
61
|
model: string;
|
|
58
62
|
/** 转换选项 */
|
|
59
|
-
options:
|
|
63
|
+
options: JsonObject;
|
|
60
64
|
/** 开始时间 */
|
|
61
65
|
startTime: number;
|
|
62
66
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 支持Responses和Chat协议的JSON↔SSE双向转换
|
|
4
4
|
*/
|
|
5
5
|
export type { BaseSseEvent, BaseSseEventStream, StreamProtocol, StreamDirection, SseProtocol, SseDirection } from './core-interfaces.js';
|
|
6
|
-
export type { ChatSseEvent, ChatSseEventType, ChatSseEventStream, ChatEventStats, ChatJsonToSseContext, SseToChatJsonContext, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatJsonToSseOptions, SseToChatJsonOptions, ChatConversionError, ChatToolCall, ChatChoiceBuilder, ChatMessageBuilder, ChatToolCallBuilder } from './chat-types.js';
|
|
6
|
+
export type { ChatSseEvent, ChatSseEventType, ChatSseEventStream, ChatEventStats, ChatJsonToSseContext, SseToChatJsonContext, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatMessage, ChatJsonToSseOptions, SseToChatJsonOptions, ChatConversionError, ChatToolCall, ChatToolCallChunk, ChatChoiceBuilder, ChatMessageBuilder, ChatToolCallBuilder } from './chat-types.js';
|
|
7
7
|
export type { ChatJsonToSseConverter } from '../json-to-sse/chat-json-to-sse-converter.js';
|
|
8
8
|
export type { ResponsesJsonToSseConverter } from '../json-to-sse/responses-json-to-sse-converter.js';
|
|
9
9
|
export type { ResponsesSseEvent, ResponsesSseEventType, ResponsesSseEventStream, ResponsesEventStats, ResponsesJsonToSseContext, SseToResponsesJsonContext, ResponsesJsonToSseOptions, SseToResponsesJsonOptions, ResponsesResponse, ResponsesRequest, ResponsesOutputItem, ResponsesMessageItem, ResponsesFunctionCallItem, ResponsesFunctionCallOutputItem, ResponsesReasoningItem, ResponsesContent, ResponsesTool, ResponsesToolCall, ResponsesUsage, OutputItemBuilder, OutputItemProcessingState } from './responses-types.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Responses协议相关类型定义
|
|
3
3
|
* 支持OpenAI Responses API的JSON↔SSE双向转换
|
|
4
4
|
*/
|
|
5
|
-
import { BaseSseEvent, StreamDirection } from './core-interfaces.js';
|
|
5
|
+
import { BaseSseEvent, StreamDirection, type JsonObject, type JsonValue } from './core-interfaces.js';
|
|
6
6
|
export * from './sse-events.js';
|
|
7
7
|
export type ResponsesSseEventType = 'response.created' | 'response.in_progress' | 'response.completed' | 'response.required_action' | 'response.done' | 'response.output_item.added' | 'response.output_item.done' | 'response.content_part.added' | 'response.content_part.done' | 'response.output_text.delta' | 'response.output_text.done' | 'response.reasoning_text.delta' | 'response.reasoning_text.done' | 'response.reasoning_signature.delta' | 'response.reasoning_image.delta' | 'response.reasoning_summary_part.added' | 'response.reasoning_summary_part.done' | 'response.reasoning_summary_text.delta' | 'response.reasoning_summary_text.done' | 'response.function_call_arguments.delta' | 'response.function_call_arguments.done' | 'response.error' | 'response.cancelled' | 'response.start' | 'content_part.delta' | 'reasoning.delta' | 'function_call.start' | 'function_call.delta' | 'function_call.done' | 'output_item.start' | 'content_part.start' | 'content_part.done' | 'output_item.done' | 'reasoning.start' | 'reasoning.done' | 'required_action' | 'error';
|
|
8
8
|
export interface ResponsesSseEvent extends BaseSseEvent {
|
|
@@ -37,7 +37,7 @@ export interface SseToResponsesJsonContext {
|
|
|
37
37
|
startTime: number;
|
|
38
38
|
endTime?: number;
|
|
39
39
|
duration?: number;
|
|
40
|
-
aggregatedEvents:
|
|
40
|
+
aggregatedEvents: ResponsesSseEvent[];
|
|
41
41
|
currentResponse: Partial<ResponsesResponse>;
|
|
42
42
|
outputItemBuilders: Map<string, OutputItemBuilder>;
|
|
43
43
|
eventStats: ResponsesEventStats;
|
|
@@ -53,7 +53,7 @@ export interface ResponsesRequest {
|
|
|
53
53
|
temperature?: number;
|
|
54
54
|
top_p?: number;
|
|
55
55
|
max_output_tokens?: number;
|
|
56
|
-
metadata?:
|
|
56
|
+
metadata?: JsonObject;
|
|
57
57
|
store?: boolean;
|
|
58
58
|
truncation?: 'auto' | 'disabled';
|
|
59
59
|
user?: string;
|
|
@@ -80,27 +80,27 @@ export type ResponsesContent = {
|
|
|
80
80
|
detail?: 'auto' | 'low' | 'high';
|
|
81
81
|
} | {
|
|
82
82
|
type: 'file_search';
|
|
83
|
-
file_search:
|
|
83
|
+
file_search: JsonObject;
|
|
84
84
|
} | {
|
|
85
85
|
type: 'computer_use';
|
|
86
|
-
computer_use:
|
|
86
|
+
computer_use: JsonObject;
|
|
87
87
|
} | {
|
|
88
88
|
type: 'function_call';
|
|
89
89
|
name: string;
|
|
90
90
|
arguments: string;
|
|
91
91
|
} | {
|
|
92
92
|
type: 'function_result';
|
|
93
|
-
result:
|
|
93
|
+
result: JsonValue;
|
|
94
94
|
tool_call_id: string;
|
|
95
95
|
} | {
|
|
96
96
|
type: 'conversation';
|
|
97
|
-
conversation:
|
|
97
|
+
conversation: JsonValue[];
|
|
98
98
|
};
|
|
99
99
|
export interface ResponsesTool {
|
|
100
100
|
type: 'function';
|
|
101
101
|
name: string;
|
|
102
102
|
description?: string;
|
|
103
|
-
parameters?:
|
|
103
|
+
parameters?: JsonObject;
|
|
104
104
|
strict?: boolean;
|
|
105
105
|
}
|
|
106
106
|
export interface ResponsesReasoningConfig {
|
|
@@ -113,7 +113,7 @@ export interface ResponsesResponse {
|
|
|
113
113
|
object: 'response';
|
|
114
114
|
created_at: number;
|
|
115
115
|
status: 'in_progress' | 'requires_action' | 'completed' | 'failed' | 'incomplete';
|
|
116
|
-
error?:
|
|
116
|
+
error?: JsonValue;
|
|
117
117
|
model: string;
|
|
118
118
|
output: ResponsesOutputItem[];
|
|
119
119
|
previous_response_id?: string;
|
|
@@ -121,7 +121,7 @@ export interface ResponsesResponse {
|
|
|
121
121
|
temperature?: number;
|
|
122
122
|
top_p?: number;
|
|
123
123
|
max_output_tokens?: number;
|
|
124
|
-
metadata?:
|
|
124
|
+
metadata?: JsonObject;
|
|
125
125
|
user?: string;
|
|
126
126
|
store?: boolean;
|
|
127
127
|
truncation?: 'auto' | 'disabled';
|
|
@@ -147,7 +147,7 @@ export type ResponsesReasoningContent = {
|
|
|
147
147
|
text: string;
|
|
148
148
|
} | {
|
|
149
149
|
type: 'reasoning_signature';
|
|
150
|
-
signature:
|
|
150
|
+
signature: JsonObject;
|
|
151
151
|
} | {
|
|
152
152
|
type: 'reasoning_image';
|
|
153
153
|
image_url: string;
|
|
@@ -164,14 +164,14 @@ export interface ResponsesFunctionCallOutputItem {
|
|
|
164
164
|
id: string;
|
|
165
165
|
type: 'function_call_output';
|
|
166
166
|
call_id: string;
|
|
167
|
-
output:
|
|
167
|
+
output: JsonValue;
|
|
168
168
|
tool_call_id?: string;
|
|
169
169
|
}
|
|
170
170
|
export interface ResponsesSystemItem {
|
|
171
171
|
id: string;
|
|
172
172
|
type: 'system';
|
|
173
173
|
name: string;
|
|
174
|
-
data:
|
|
174
|
+
data: JsonValue;
|
|
175
175
|
}
|
|
176
176
|
export interface ResponsesUsage {
|
|
177
177
|
input_tokens: number;
|
|
@@ -217,7 +217,7 @@ export interface ResponsesJsonToSseOptions {
|
|
|
217
217
|
includeSequenceNumbers?: boolean;
|
|
218
218
|
includeMetadata?: boolean;
|
|
219
219
|
validationMode?: 'none' | 'basic' | 'strict';
|
|
220
|
-
onEvent?: (event:
|
|
220
|
+
onEvent?: (event: ResponsesSseEvent) => void;
|
|
221
221
|
onError?: (error: Error) => void;
|
|
222
222
|
onComplete?: () => void;
|
|
223
223
|
resumeToolOutputs?: ResponsesFunctionCallOutputItem[];
|
|
@@ -230,7 +230,7 @@ export interface SseToResponsesJsonOptions {
|
|
|
230
230
|
enableSequenceValidation?: boolean;
|
|
231
231
|
accumulateOutputItems?: boolean;
|
|
232
232
|
onPartialResult?: (partial: Partial<ResponsesResponse>) => void;
|
|
233
|
-
onEvent?: (event:
|
|
233
|
+
onEvent?: (event: ResponsesSseEvent) => void;
|
|
234
234
|
onCompletion?: (final: ResponsesResponse) => void;
|
|
235
235
|
onError?: (error: Error) => void;
|
|
236
236
|
onTimeout?: () => void;
|
|
@@ -256,7 +256,7 @@ export interface OutputItemProcessingState {
|
|
|
256
256
|
status: 'in_progress' | 'completed';
|
|
257
257
|
contentIndex: number;
|
|
258
258
|
isContentPartAdded: boolean;
|
|
259
|
-
accumulatedContent:
|
|
259
|
+
accumulatedContent: ResponsesContent[];
|
|
260
260
|
deltaBuffer: string;
|
|
261
261
|
isTextStarted: boolean;
|
|
262
262
|
isTextCompleted: boolean;
|
|
@@ -265,9 +265,9 @@ export interface OutputItemBuilder {
|
|
|
265
265
|
id: string;
|
|
266
266
|
type: string;
|
|
267
267
|
status: 'in_progress' | 'completed';
|
|
268
|
-
contentParts:
|
|
268
|
+
contentParts: ResponsesContent[];
|
|
269
269
|
currentContentIndex: number;
|
|
270
|
-
accumulatedContent:
|
|
270
|
+
accumulatedContent: ResponsesContent[];
|
|
271
271
|
hasContentPartAdded: boolean;
|
|
272
272
|
isTextInProgress: boolean;
|
|
273
273
|
callId?: string;
|
|
@@ -281,7 +281,7 @@ export interface ResponsesConversionError extends Error {
|
|
|
281
281
|
eventId?: string;
|
|
282
282
|
outputItemId?: string;
|
|
283
283
|
sequenceNumber?: number;
|
|
284
|
-
context?:
|
|
284
|
+
context?: JsonObject;
|
|
285
285
|
}
|
|
286
286
|
export declare const RESPONSES_CONVERSION_ERROR_CODES: {
|
|
287
287
|
readonly TIMEOUT: "RESPONSES_TIMEOUT";
|
|
@@ -323,6 +323,6 @@ export interface ResponsesSseEventStream extends AsyncIterable<ResponsesSseEvent
|
|
|
323
323
|
on(event: 'complete', handler: () => void): this;
|
|
324
324
|
on(event: 'timeout', handler: () => void): this;
|
|
325
325
|
on(event: 'output_item', handler: (item: ResponsesOutputItem) => void): this;
|
|
326
|
-
on(event: 'content_part', handler: (part:
|
|
326
|
+
on(event: 'content_part', handler: (part: ResponsesContent) => void): this;
|
|
327
327
|
on(event: 'stats', handler: (stats: ResponsesEventStats) => void): this;
|
|
328
328
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* SSE事件类型定义
|
|
3
3
|
* 基于OpenAI Responses协议的事件规范
|
|
4
4
|
*/
|
|
5
|
+
import type { JsonValue } from './core-interfaces.js';
|
|
5
6
|
export type SseEventType = 'response.created' | 'response.in_progress' | 'response.completed' | 'response.required_action' | 'response.done' | 'response.output_item.added' | 'response.output_item.done' | 'response.content_part.added' | 'response.content_part.done' | 'response.output_text.delta' | 'response.output_text.done' | 'response.reasoning_text.delta' | 'response.reasoning_text.done' | 'response.function_call_arguments.delta' | 'response.function_call_arguments.done';
|
|
6
7
|
export interface BaseSseEvent {
|
|
7
8
|
type: SseEventType;
|
|
@@ -66,7 +67,7 @@ export interface OutputTextDeltaEvent extends BaseSseEvent {
|
|
|
66
67
|
output_index: number;
|
|
67
68
|
content_index: number;
|
|
68
69
|
delta: string;
|
|
69
|
-
logprobs?:
|
|
70
|
+
logprobs?: JsonValue[];
|
|
70
71
|
}
|
|
71
72
|
export interface OutputTextDoneEvent extends BaseSseEvent {
|
|
72
73
|
type: 'response.output_text.done';
|
|
@@ -118,7 +119,7 @@ export interface OutputItem {
|
|
|
118
119
|
type: 'reasoning' | 'message' | 'function_call' | 'system_message';
|
|
119
120
|
status?: 'in_progress' | 'completed';
|
|
120
121
|
content?: ContentPart[];
|
|
121
|
-
summary?:
|
|
122
|
+
summary?: JsonValue[];
|
|
122
123
|
role?: string;
|
|
123
124
|
arguments?: string;
|
|
124
125
|
call_id?: string;
|
|
@@ -173,7 +174,7 @@ export interface EventValidationRule {
|
|
|
173
174
|
optionalFields: string[];
|
|
174
175
|
dependencies: Array<{
|
|
175
176
|
field: string;
|
|
176
|
-
condition: (event:
|
|
177
|
+
condition: (event: Record<string, unknown>) => boolean;
|
|
177
178
|
requiredFields: string[];
|
|
178
179
|
}>;
|
|
179
180
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* 流状态管理类型定义
|
|
3
3
|
* 管理JSON↔SSE双向转换过程中的流状态
|
|
4
4
|
*/
|
|
5
|
+
import type { JsonToSseOptions, ResponsesJson, ResponsesPartialJson, SseToJsonOptions } from './conversion-context.js';
|
|
5
6
|
import { SseEvent, SseEventType } from './sse-events.js';
|
|
6
7
|
export declare enum StreamState {
|
|
7
8
|
IDLE = "idle",
|
|
@@ -33,8 +34,8 @@ export interface BaseStreamState {
|
|
|
33
34
|
}
|
|
34
35
|
export interface JsonToSseStreamState extends BaseStreamState {
|
|
35
36
|
direction: StreamDirection.JSON_TO_SSE;
|
|
36
|
-
inputJson:
|
|
37
|
-
options:
|
|
37
|
+
inputJson: ResponsesJson;
|
|
38
|
+
options: JsonToSseOptions;
|
|
38
39
|
currentOutputIndex: number;
|
|
39
40
|
currentSequenceNumber: number;
|
|
40
41
|
outputItemsGenerated: number;
|
|
@@ -47,7 +48,7 @@ export interface JsonToSseStreamState extends BaseStreamState {
|
|
|
47
48
|
}
|
|
48
49
|
export interface SseToJsonStreamState extends BaseStreamState {
|
|
49
50
|
direction: StreamDirection.SSE_TO_JSON;
|
|
50
|
-
options:
|
|
51
|
+
options: SseToJsonOptions;
|
|
51
52
|
expectedEventTypes: Set<SseEventType>;
|
|
52
53
|
receivedEventTypes: Set<SseEventType>;
|
|
53
54
|
lastSequenceNumber: number;
|
|
@@ -57,7 +58,7 @@ export interface SseToJsonStreamState extends BaseStreamState {
|
|
|
57
58
|
isResponseCompleted: boolean;
|
|
58
59
|
isRequiredActionReceived: boolean;
|
|
59
60
|
aggregatedEvents: SseEvent[];
|
|
60
|
-
partialJson:
|
|
61
|
+
partialJson: ResponsesPartialJson;
|
|
61
62
|
}
|
|
62
63
|
export interface StreamStatistics {
|
|
63
64
|
duration: number;
|
|
@@ -120,56 +121,50 @@ export interface StreamConfig {
|
|
|
120
121
|
gcThreshold: number;
|
|
121
122
|
}
|
|
122
123
|
export declare const DEFAULT_STREAM_CONFIG: StreamConfig;
|
|
123
|
-
export interface StreamEvent {
|
|
124
|
+
export interface StreamEvent<TPayload = unknown> {
|
|
124
125
|
type: 'state_change' | 'error' | 'timeout' | 'metrics' | 'heartbeat' | 'completion';
|
|
125
126
|
timestamp: number;
|
|
126
127
|
requestId: string;
|
|
127
|
-
data:
|
|
128
|
+
data: TPayload;
|
|
128
129
|
}
|
|
129
|
-
export interface StateChangeEvent extends StreamEvent
|
|
130
|
+
export interface StateChangeEvent extends StreamEvent<{
|
|
131
|
+
oldState: StreamState;
|
|
132
|
+
newState: StreamState;
|
|
133
|
+
reason?: string;
|
|
134
|
+
}> {
|
|
130
135
|
type: 'state_change';
|
|
131
|
-
data: {
|
|
132
|
-
oldState: StreamState;
|
|
133
|
-
newState: StreamState;
|
|
134
|
-
reason?: string;
|
|
135
|
-
};
|
|
136
136
|
}
|
|
137
|
-
export interface StreamErrorEvent extends StreamEvent
|
|
137
|
+
export interface StreamErrorEvent extends StreamEvent<{
|
|
138
|
+
error: Error;
|
|
139
|
+
eventType?: SseEventType;
|
|
140
|
+
sequenceNumber?: number;
|
|
141
|
+
recoverable: boolean;
|
|
142
|
+
}> {
|
|
138
143
|
type: 'error';
|
|
139
|
-
data: {
|
|
140
|
-
error: Error;
|
|
141
|
-
eventType?: SseEventType;
|
|
142
|
-
sequenceNumber?: number;
|
|
143
|
-
recoverable: boolean;
|
|
144
|
-
};
|
|
145
144
|
}
|
|
146
|
-
export interface StreamTimeoutEvent extends StreamEvent
|
|
145
|
+
export interface StreamTimeoutEvent extends StreamEvent<{
|
|
146
|
+
timeoutType: 'idle' | 'total' | 'heartbeat' | 'event_processing';
|
|
147
|
+
timeoutDuration: number;
|
|
148
|
+
lastActivityTime: number;
|
|
149
|
+
}> {
|
|
147
150
|
type: 'timeout';
|
|
148
|
-
data: {
|
|
149
|
-
timeoutType: 'idle' | 'total' | 'heartbeat' | 'event_processing';
|
|
150
|
-
timeoutDuration: number;
|
|
151
|
-
lastActivityTime: number;
|
|
152
|
-
};
|
|
153
151
|
}
|
|
154
|
-
export interface StreamMetricsEvent extends StreamEvent {
|
|
152
|
+
export interface StreamMetricsEvent extends StreamEvent<StreamStatistics> {
|
|
155
153
|
type: 'metrics';
|
|
156
|
-
data: StreamStatistics;
|
|
157
154
|
}
|
|
158
|
-
export interface StreamHeartbeatEvent extends StreamEvent
|
|
155
|
+
export interface StreamHeartbeatEvent extends StreamEvent<{
|
|
156
|
+
interval: number;
|
|
157
|
+
eventsSinceLastHeartbeat: number;
|
|
158
|
+
}> {
|
|
159
159
|
type: 'heartbeat';
|
|
160
|
-
data: {
|
|
161
|
-
interval: number;
|
|
162
|
-
eventsSinceLastHeartbeat: number;
|
|
163
|
-
};
|
|
164
160
|
}
|
|
165
|
-
export interface StreamCompletionEvent extends StreamEvent
|
|
161
|
+
export interface StreamCompletionEvent extends StreamEvent<{
|
|
162
|
+
finalState: StreamState;
|
|
163
|
+
totalEvents: number;
|
|
164
|
+
totalDuration: number;
|
|
165
|
+
success: boolean;
|
|
166
|
+
}> {
|
|
166
167
|
type: 'completion';
|
|
167
|
-
data: {
|
|
168
|
-
finalState: StreamState;
|
|
169
|
-
totalEvents: number;
|
|
170
|
-
totalDuration: number;
|
|
171
|
-
success: boolean;
|
|
172
|
-
};
|
|
173
168
|
}
|
|
174
169
|
export type StreamEventData = StateChangeEvent | StreamErrorEvent | StreamTimeoutEvent | StreamMetricsEvent | StreamHeartbeatEvent | StreamCompletionEvent;
|
|
175
170
|
export interface StreamStateListener {
|