@copilotkit/runtime 1.57.3 → 1.58.0-canary.thread-id-propagation
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/dist/lib/observability.d.cts +1 -1
- package/dist/lib/observability.d.cts.map +1 -1
- package/dist/lib/observability.d.mts +1 -1
- package/dist/lib/observability.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +2 -0
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +2 -0
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/package.cjs +5 -8
- package/dist/package.mjs +5 -8
- package/dist/v2/runtime/core/runtime.cjs +4 -1
- package/dist/v2/runtime/core/runtime.cjs.map +1 -1
- package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
- package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
- package/dist/v2/runtime/core/runtime.mjs +4 -1
- package/dist/v2/runtime/core/runtime.mjs.map +1 -1
- package/dist/v2/runtime/handlers/get-runtime-info.cjs +1 -1
- package/dist/v2/runtime/handlers/get-runtime-info.mjs +1 -1
- package/dist/v2/runtime/handlers/handle-connect.cjs +1 -1
- package/dist/v2/runtime/handlers/handle-connect.mjs +1 -1
- package/dist/v2/runtime/handlers/handle-run.cjs +1 -1
- package/dist/v2/runtime/handlers/handle-run.mjs +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
- package/dist/v2/runtime/telemetry/telemetry-client.cjs +22 -6
- package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -1
- package/dist/v2/runtime/telemetry/telemetry-client.mjs +27 -11
- package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -1
- package/package.json +9 -19
- package/skills/runtime/SKILL.md +98 -0
- package/skills/runtime/references/agent-runners-custom.md +161 -0
- package/skills/runtime/references/agent-runners-in-memory.md +64 -0
- package/skills/runtime/references/agent-runners-sqlite.md +90 -0
- package/skills/runtime/references/agent-runners.md +304 -0
- package/skills/runtime/references/built-in-agent-factory-modes.md +232 -0
- package/skills/runtime/references/built-in-agent-helper-utilities.md +123 -0
- package/skills/runtime/references/built-in-agent-model-identifiers.md +59 -0
- package/skills/runtime/references/built-in-agent.md +523 -0
- package/skills/runtime/references/intelligence-mode.md +336 -0
- package/skills/runtime/references/middleware.md +376 -0
- package/skills/runtime/references/server-side-tools.md +414 -0
- package/skills/runtime/references/setup-endpoint.md +503 -0
- package/skills/runtime/references/transcription.md +287 -0
- package/skills/runtime/references/wiring-a2a.md +40 -0
- package/skills/runtime/references/wiring-adk.md +45 -0
- package/skills/runtime/references/wiring-ag2.md +41 -0
- package/skills/runtime/references/wiring-agno.md +39 -0
- package/skills/runtime/references/wiring-aws-strands.md +59 -0
- package/skills/runtime/references/wiring-crewai-crews.md +51 -0
- package/skills/runtime/references/wiring-crewai-flows.md +45 -0
- package/skills/runtime/references/wiring-external-agents.md +348 -0
- package/skills/runtime/references/wiring-langgraph.md +50 -0
- package/skills/runtime/references/wiring-llamaindex.md +39 -0
- package/skills/runtime/references/wiring-mastra.md +70 -0
- package/skills/runtime/references/wiring-mcp-apps-middleware.md +68 -0
- package/skills/runtime/references/wiring-ms-agent-framework.md +41 -0
- package/skills/runtime/references/wiring-pydantic-ai.md +45 -0
- package/CHANGELOG.md +0 -3624
- package/__snapshots__/schema/schema.graphql +0 -371
- package/dist/v2/runtime/telemetry/scarf-client.cjs +0 -32
- package/dist/v2/runtime/telemetry/scarf-client.cjs.map +0 -1
- package/dist/v2/runtime/telemetry/scarf-client.mjs +0 -32
- package/dist/v2/runtime/telemetry/scarf-client.mjs.map +0 -1
- package/scripts/generate-gql-schema.ts +0 -16
- package/src/agent/__tests__/agent-test-helpers.ts +0 -476
- package/src/agent/__tests__/agent.test.ts +0 -593
- package/src/agent/__tests__/ai-sdk-v6-compat.test.ts +0 -116
- package/src/agent/__tests__/basic-agent.test.ts +0 -1698
- package/src/agent/__tests__/capabilities.test.ts +0 -81
- package/src/agent/__tests__/config-tools-execution.test.ts +0 -516
- package/src/agent/__tests__/converter-aisdk.test.ts +0 -692
- package/src/agent/__tests__/converter-custom.test.ts +0 -319
- package/src/agent/__tests__/converter-tanstack-input.test.ts +0 -211
- package/src/agent/__tests__/converter-tanstack.test.ts +0 -594
- package/src/agent/__tests__/mcp-clients.test.ts +0 -246
- package/src/agent/__tests__/mcp-servers-integration.test.ts +0 -373
- package/src/agent/__tests__/multimodal-tanstack.test.ts +0 -284
- package/src/agent/__tests__/multimodal.test.ts +0 -176
- package/src/agent/__tests__/property-overrides.test.ts +0 -598
- package/src/agent/__tests__/provider-id-collision.test.ts +0 -195
- package/src/agent/__tests__/standard-schema-tools.test.ts +0 -313
- package/src/agent/__tests__/standard-schema-types.test.ts +0 -158
- package/src/agent/__tests__/state-tools.test.ts +0 -436
- package/src/agent/__tests__/test-helpers.ts +0 -197
- package/src/agent/__tests__/utils.test.ts +0 -536
- package/src/agent/__tests__/zod-regression.test.ts +0 -350
- package/src/agent/converters/aisdk.ts +0 -326
- package/src/agent/converters/index.ts +0 -7
- package/src/agent/converters/tanstack.ts +0 -451
- package/src/agent/index.ts +0 -1743
- package/src/agents/langgraph/__tests__/event-source.test.ts +0 -256
- package/src/agents/langgraph/event-source.ts +0 -365
- package/src/agents/langgraph/events.ts +0 -394
- package/src/graphql/inputs/action.input.ts +0 -16
- package/src/graphql/inputs/agent-session.input.ts +0 -13
- package/src/graphql/inputs/agent-state.input.ts +0 -13
- package/src/graphql/inputs/cloud-guardrails.input.ts +0 -16
- package/src/graphql/inputs/cloud.input.ts +0 -8
- package/src/graphql/inputs/context-property.input.ts +0 -10
- package/src/graphql/inputs/copilot-context.input.ts +0 -10
- package/src/graphql/inputs/custom-property.input.ts +0 -15
- package/src/graphql/inputs/extensions.input.ts +0 -21
- package/src/graphql/inputs/forwarded-parameters.input.ts +0 -22
- package/src/graphql/inputs/frontend.input.ts +0 -14
- package/src/graphql/inputs/generate-copilot-response.input.ts +0 -59
- package/src/graphql/inputs/load-agent-state.input.ts +0 -10
- package/src/graphql/inputs/message.input.ts +0 -110
- package/src/graphql/inputs/meta-event.input.ts +0 -18
- package/src/graphql/message-conversion/agui-to-gql.test.ts +0 -1384
- package/src/graphql/message-conversion/agui-to-gql.ts +0 -384
- package/src/graphql/message-conversion/gql-to-agui.test.ts +0 -1653
- package/src/graphql/message-conversion/gql-to-agui.ts +0 -297
- package/src/graphql/message-conversion/index.ts +0 -2
- package/src/graphql/message-conversion/roundtrip-conversion.test.ts +0 -561
- package/src/graphql/resolvers/__tests__/resolve-message-id.test.ts +0 -25
- package/src/graphql/resolvers/copilot.resolver.ts +0 -785
- package/src/graphql/resolvers/resolve-message-id.ts +0 -14
- package/src/graphql/resolvers/state.resolver.ts +0 -30
- package/src/graphql/types/agents-response.type.ts +0 -19
- package/src/graphql/types/base/index.ts +0 -10
- package/src/graphql/types/converted/index.ts +0 -183
- package/src/graphql/types/copilot-response.type.ts +0 -141
- package/src/graphql/types/enums.ts +0 -38
- package/src/graphql/types/extensions-response.type.ts +0 -23
- package/src/graphql/types/guardrails-result.type.ts +0 -20
- package/src/graphql/types/load-agent-state-response.type.ts +0 -17
- package/src/graphql/types/message-status.type.ts +0 -48
- package/src/graphql/types/meta-events.type.ts +0 -78
- package/src/graphql/types/response-status.type.ts +0 -77
- package/src/index.ts +0 -3
- package/src/langgraph.ts +0 -1
- package/src/lib/__tests__/telemetry-disclosure.test.ts +0 -55
- package/src/lib/cloud/index.ts +0 -4
- package/src/lib/error-messages.ts +0 -211
- package/src/lib/index.ts +0 -52
- package/src/lib/integrations/index.ts +0 -6
- package/src/lib/integrations/nest/index.ts +0 -21
- package/src/lib/integrations/nextjs/app-router.ts +0 -47
- package/src/lib/integrations/nextjs/pages-router.ts +0 -45
- package/src/lib/integrations/node-express/index.ts +0 -21
- package/src/lib/integrations/node-http/__tests__/request-duck-type.test.ts +0 -66
- package/src/lib/integrations/node-http/index.ts +0 -187
- package/src/lib/integrations/node-http/request-handler.ts +0 -128
- package/src/lib/integrations/shared.ts +0 -112
- package/src/lib/logger.ts +0 -31
- package/src/lib/observability.ts +0 -167
- package/src/lib/runtime/__tests__/copilot-runtime-error.test.ts +0 -183
- package/src/lib/runtime/__tests__/handle-service-adapter.test.ts +0 -108
- package/src/lib/runtime/__tests__/mcp-tools-utils.test.ts +0 -499
- package/src/lib/runtime/__tests__/on-after-request.test.ts +0 -122
- package/src/lib/runtime/__tests__/retry-utils.test.ts +0 -137
- package/src/lib/runtime/__tests__/v1-agent-factory.test.ts +0 -109
- package/src/lib/runtime/agent-integrations/langgraph/__tests__/dispatch-event-filtering.test.ts +0 -345
- package/src/lib/runtime/agent-integrations/langgraph/__tests__/run-message-filtering.test.ts +0 -156
- package/src/lib/runtime/agent-integrations/langgraph/agent.ts +0 -263
- package/src/lib/runtime/agent-integrations/langgraph/consts.ts +0 -37
- package/src/lib/runtime/agent-integrations/langgraph/index.ts +0 -2
- package/src/lib/runtime/copilot-runtime.ts +0 -863
- package/src/lib/runtime/mcp-tools-utils.ts +0 -313
- package/src/lib/runtime/retry-utils.ts +0 -141
- package/src/lib/runtime/telemetry-agent-runner.ts +0 -151
- package/src/lib/runtime/types.ts +0 -48
- package/src/lib/runtime/utils.ts +0 -93
- package/src/lib/streaming.ts +0 -220
- package/src/lib/telemetry-client.ts +0 -66
- package/src/lib/telemetry-disclosure.ts +0 -53
- package/src/service-adapters/anthropic/anthropic-adapter.ts +0 -532
- package/src/service-adapters/anthropic/utils.ts +0 -219
- package/src/service-adapters/bedrock/bedrock-adapter.ts +0 -73
- package/src/service-adapters/conversion.test.ts +0 -56
- package/src/service-adapters/conversion.ts +0 -69
- package/src/service-adapters/empty/empty-adapter.ts +0 -38
- package/src/service-adapters/events.ts +0 -337
- package/src/service-adapters/experimental/ollama/ollama-adapter.ts +0 -84
- package/src/service-adapters/google/google-genai-adapter.test.ts +0 -151
- package/src/service-adapters/google/google-genai-adapter.ts +0 -95
- package/src/service-adapters/groq/groq-adapter.ts +0 -229
- package/src/service-adapters/index.ts +0 -18
- package/src/service-adapters/langchain/langchain-adapter.ts +0 -113
- package/src/service-adapters/langchain/langserve.ts +0 -88
- package/src/service-adapters/langchain/types.ts +0 -20
- package/src/service-adapters/langchain/utils.ts +0 -330
- package/src/service-adapters/openai/__tests__/openai-v5-compat.test.ts +0 -177
- package/src/service-adapters/openai/openai-adapter.ts +0 -324
- package/src/service-adapters/openai/openai-assistant-adapter.ts +0 -385
- package/src/service-adapters/openai/utils.ts +0 -305
- package/src/service-adapters/service-adapter.ts +0 -50
- package/src/service-adapters/shared/error-utils.ts +0 -64
- package/src/service-adapters/shared/index.ts +0 -2
- package/src/service-adapters/shared/sdk-client-utils.ts +0 -19
- package/src/service-adapters/unify/unify-adapter.ts +0 -165
- package/src/utils/failed-response-status-reasons.ts +0 -70
- package/src/utils/index.ts +0 -1
- package/src/v2/express.ts +0 -1
- package/src/v2/hono.ts +0 -1
- package/src/v2/index.ts +0 -5
- package/src/v2/node.ts +0 -1
- package/src/v2/runtime/__tests__/agents-factory.test.ts +0 -136
- package/src/v2/runtime/__tests__/backward-compat.test.ts +0 -261
- package/src/v2/runtime/__tests__/code-review-fixes.test.ts +0 -500
- package/src/v2/runtime/__tests__/cors-credentials.test.ts +0 -320
- package/src/v2/runtime/__tests__/debug-sse-response.test.ts +0 -302
- package/src/v2/runtime/__tests__/express-adapter.test.ts +0 -188
- package/src/v2/runtime/__tests__/express-body-order.test.ts +0 -76
- package/src/v2/runtime/__tests__/express-fetch-bridge.test.ts +0 -344
- package/src/v2/runtime/__tests__/express-single-sse.test.ts +0 -122
- package/src/v2/runtime/__tests__/express-single-telemetry.integration.test.ts +0 -65
- package/src/v2/runtime/__tests__/express-telemetry.integration.test.ts +0 -101
- package/src/v2/runtime/__tests__/fetch-cors.test.ts +0 -205
- package/src/v2/runtime/__tests__/fetch-handler-validation.test.ts +0 -440
- package/src/v2/runtime/__tests__/fetch-handler.test.ts +0 -456
- package/src/v2/runtime/__tests__/fetch-router.test.ts +0 -276
- package/src/v2/runtime/__tests__/get-runtime-info.test.ts +0 -335
- package/src/v2/runtime/__tests__/handle-connect.test.ts +0 -585
- package/src/v2/runtime/__tests__/handle-run.test.ts +0 -1388
- package/src/v2/runtime/__tests__/handle-threads.test.ts +0 -930
- package/src/v2/runtime/__tests__/handle-transcribe.test.ts +0 -301
- package/src/v2/runtime/__tests__/header-utils.test.ts +0 -88
- package/src/v2/runtime/__tests__/hono-adapter.test.ts +0 -150
- package/src/v2/runtime/__tests__/hono-single-telemetry.integration.test.ts +0 -46
- package/src/v2/runtime/__tests__/hono-telemetry.integration.test.ts +0 -99
- package/src/v2/runtime/__tests__/hooks-edge-cases.test.ts +0 -457
- package/src/v2/runtime/__tests__/hooks.test.ts +0 -557
- package/src/v2/runtime/__tests__/in-process-agent-runner-messages.test.ts +0 -230
- package/src/v2/runtime/__tests__/in-process-agent-runner.test.ts +0 -1030
- package/src/v2/runtime/__tests__/integration/bun/bun-servers.integration.test.ts +0 -27
- package/src/v2/runtime/__tests__/integration/bun/elysia-multi.ts +0 -32
- package/src/v2/runtime/__tests__/integration/bun/elysia-single.ts +0 -33
- package/src/v2/runtime/__tests__/integration/bun/hono-bun-multi.ts +0 -25
- package/src/v2/runtime/__tests__/integration/bun/hono-bun-single.ts +0 -32
- package/src/v2/runtime/__tests__/integration/helpers/create-test-runtime.ts +0 -15
- package/src/v2/runtime/__tests__/integration/helpers/sse-reader.ts +0 -45
- package/src/v2/runtime/__tests__/integration/helpers/test-agent.ts +0 -58
- package/src/v2/runtime/__tests__/integration/node-servers.integration.test.ts +0 -58
- package/src/v2/runtime/__tests__/integration/servers/express-multi.ts +0 -35
- package/src/v2/runtime/__tests__/integration/servers/express-single.ts +0 -36
- package/src/v2/runtime/__tests__/integration/servers/fetch-direct.ts +0 -39
- package/src/v2/runtime/__tests__/integration/servers/hono-multi.ts +0 -30
- package/src/v2/runtime/__tests__/integration/servers/hono-single.ts +0 -37
- package/src/v2/runtime/__tests__/integration/servers/node-multi.ts +0 -45
- package/src/v2/runtime/__tests__/integration/servers/node-single.ts +0 -46
- package/src/v2/runtime/__tests__/integration/servers/types.ts +0 -18
- package/src/v2/runtime/__tests__/integration/suites/debug-events.suite.ts +0 -253
- package/src/v2/runtime/__tests__/integration/suites/multi-endpoint.suite.ts +0 -358
- package/src/v2/runtime/__tests__/integration/suites/single-endpoint.suite.ts +0 -363
- package/src/v2/runtime/__tests__/intelligence-run-telemetry.test.ts +0 -194
- package/src/v2/runtime/__tests__/mcp-apps-middleware-integration.test.ts +0 -275
- package/src/v2/runtime/__tests__/middleware-express.test.ts +0 -208
- package/src/v2/runtime/__tests__/middleware-single-express.test.ts +0 -213
- package/src/v2/runtime/__tests__/middleware-single.test.ts +0 -225
- package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +0 -237
- package/src/v2/runtime/__tests__/middleware.test.ts +0 -250
- package/src/v2/runtime/__tests__/node-fetch-handler.test.ts +0 -157
- package/src/v2/runtime/__tests__/open-generative-ui-middleware.e2e.test.ts +0 -728
- package/src/v2/runtime/__tests__/router-edge-cases.test.ts +0 -217
- package/src/v2/runtime/__tests__/routing-express.test.ts +0 -174
- package/src/v2/runtime/__tests__/routing-single-express.test.ts +0 -168
- package/src/v2/runtime/__tests__/routing-single.test.ts +0 -193
- package/src/v2/runtime/__tests__/routing.test.ts +0 -257
- package/src/v2/runtime/__tests__/runtime.test.ts +0 -234
- package/src/v2/runtime/__tests__/sse-response-telemetry.test.ts +0 -108
- package/src/v2/runtime/__tests__/telemetry.test.ts +0 -167
- package/src/v2/runtime/__tests__/thread-names.test.ts +0 -188
- package/src/v2/runtime/core/__tests__/debug-event-bus.test.ts +0 -156
- package/src/v2/runtime/core/debug-event-bus.ts +0 -45
- package/src/v2/runtime/core/fetch-cors.ts +0 -136
- package/src/v2/runtime/core/fetch-handler.ts +0 -492
- package/src/v2/runtime/core/fetch-router.ts +0 -203
- package/src/v2/runtime/core/hooks.ts +0 -160
- package/src/v2/runtime/core/middleware-sse-parser.ts +0 -210
- package/src/v2/runtime/core/middleware.ts +0 -115
- package/src/v2/runtime/core/runtime.ts +0 -432
- package/src/v2/runtime/endpoints/express-fetch-bridge.ts +0 -137
- package/src/v2/runtime/endpoints/express-single.ts +0 -54
- package/src/v2/runtime/endpoints/express.ts +0 -179
- package/src/v2/runtime/endpoints/hono-single.ts +0 -60
- package/src/v2/runtime/endpoints/hono.ts +0 -89
- package/src/v2/runtime/endpoints/index.ts +0 -4
- package/src/v2/runtime/endpoints/node-fetch-handler.ts +0 -48
- package/src/v2/runtime/endpoints/node.ts +0 -28
- package/src/v2/runtime/endpoints/single-route-helpers.ts +0 -125
- package/src/v2/runtime/express.ts +0 -2
- package/src/v2/runtime/handlers/__tests__/handle-debug-events.test.ts +0 -176
- package/src/v2/runtime/handlers/get-runtime-info.ts +0 -101
- package/src/v2/runtime/handlers/handle-connect.ts +0 -80
- package/src/v2/runtime/handlers/handle-debug-events.ts +0 -52
- package/src/v2/runtime/handlers/handle-run.ts +0 -111
- package/src/v2/runtime/handlers/handle-stop.ts +0 -77
- package/src/v2/runtime/handlers/handle-threads.ts +0 -11
- package/src/v2/runtime/handlers/handle-transcribe.ts +0 -269
- package/src/v2/runtime/handlers/header-utils.ts +0 -24
- package/src/v2/runtime/handlers/intelligence/connect.ts +0 -102
- package/src/v2/runtime/handlers/intelligence/run.ts +0 -351
- package/src/v2/runtime/handlers/intelligence/thread-names.ts +0 -246
- package/src/v2/runtime/handlers/intelligence/threads.ts +0 -420
- package/src/v2/runtime/handlers/shared/agent-utils.ts +0 -154
- package/src/v2/runtime/handlers/shared/intelligence-utils.ts +0 -41
- package/src/v2/runtime/handlers/shared/json-response.ts +0 -9
- package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +0 -28
- package/src/v2/runtime/handlers/shared/sse-response.ts +0 -215
- package/src/v2/runtime/handlers/sse/__tests__/sse-connect-agent-id.test.ts +0 -71
- package/src/v2/runtime/handlers/sse/connect.ts +0 -30
- package/src/v2/runtime/handlers/sse/run.ts +0 -40
- package/src/v2/runtime/hono.ts +0 -2
- package/src/v2/runtime/index.ts +0 -51
- package/src/v2/runtime/intelligence-platform/__tests__/client.test.ts +0 -601
- package/src/v2/runtime/intelligence-platform/__tests__/intelligence-mcp-helper.test.ts +0 -246
- package/src/v2/runtime/intelligence-platform/client.ts +0 -818
- package/src/v2/runtime/intelligence-platform/index.ts +0 -10
- package/src/v2/runtime/node.ts +0 -6
- package/src/v2/runtime/open-generative-ui-middleware.ts +0 -373
- package/src/v2/runtime/runner/__tests__/finalize-events.test.ts +0 -109
- package/src/v2/runtime/runner/__tests__/in-memory-runner.e2e.test.ts +0 -775
- package/src/v2/runtime/runner/__tests__/in-memory-runner.test.ts +0 -777
- package/src/v2/runtime/runner/__tests__/intelligence-runner.test.ts +0 -1039
- package/src/v2/runtime/runner/agent-runner.ts +0 -35
- package/src/v2/runtime/runner/in-memory.ts +0 -467
- package/src/v2/runtime/runner/index.ts +0 -4
- package/src/v2/runtime/runner/intelligence.ts +0 -498
- package/src/v2/runtime/telemetry/__tests__/instance-created.test.ts +0 -96
- package/src/v2/runtime/telemetry/events.ts +0 -35
- package/src/v2/runtime/telemetry/index.ts +0 -7
- package/src/v2/runtime/telemetry/instance-created.ts +0 -44
- package/src/v2/runtime/telemetry/scarf-client.ts +0 -39
- package/src/v2/runtime/telemetry/telemetry-client.ts +0 -70
- package/src/v2/runtime/transcription-service/transcription-service.ts +0 -11
- package/tests/global.d.ts +0 -1
- package/tests/service-adapters/anthropic/allowlist-approach.test.ts +0 -259
- package/tests/service-adapters/anthropic/anthropic-adapter-language-model.test.ts +0 -101
- package/tests/service-adapters/anthropic/anthropic-adapter.test.ts +0 -645
- package/tests/service-adapters/anthropic/utils-token-trimming.test.ts +0 -301
- package/tests/service-adapters/groq/groq-adapter-language-model.test.ts +0 -102
- package/tests/service-adapters/openai/allowlist-approach.test.ts +0 -294
- package/tests/service-adapters/openai/openai-adapter-language-model.test.ts +0 -122
- package/tests/service-adapters/openai/openai-adapter.test.ts +0 -291
- package/tests/service-adapters/shared/sdk-client-utils.test.ts +0 -36
- package/tests/setup.vitest.ts +0 -8
- package/tests/tsconfig.json +0 -10
- package/tsconfig.json +0 -20
- package/tsdown.config.ts +0 -45
- package/typedoc.json +0 -4
- package/vitest.config.mjs +0 -13
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import type { CopilotRuntimeLike } from "../core/runtime";
|
|
2
|
-
import {
|
|
3
|
-
TranscriptionErrorCode,
|
|
4
|
-
TranscriptionErrors,
|
|
5
|
-
type TranscriptionErrorResponse,
|
|
6
|
-
} from "@copilotkit/shared";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* HTTP status codes for transcription error codes
|
|
10
|
-
*/
|
|
11
|
-
const ERROR_STATUS_CODES: Record<TranscriptionErrorCode, number> = {
|
|
12
|
-
[TranscriptionErrorCode.SERVICE_NOT_CONFIGURED]: 503,
|
|
13
|
-
[TranscriptionErrorCode.INVALID_AUDIO_FORMAT]: 400,
|
|
14
|
-
[TranscriptionErrorCode.AUDIO_TOO_LONG]: 400,
|
|
15
|
-
[TranscriptionErrorCode.AUDIO_TOO_SHORT]: 400,
|
|
16
|
-
[TranscriptionErrorCode.RATE_LIMITED]: 429,
|
|
17
|
-
[TranscriptionErrorCode.AUTH_FAILED]: 401,
|
|
18
|
-
[TranscriptionErrorCode.PROVIDER_ERROR]: 500,
|
|
19
|
-
[TranscriptionErrorCode.NETWORK_ERROR]: 502,
|
|
20
|
-
[TranscriptionErrorCode.INVALID_REQUEST]: 400,
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
interface HandleTranscribeParameters {
|
|
24
|
-
runtime: CopilotRuntimeLike;
|
|
25
|
-
request: Request;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface Base64AudioInput {
|
|
29
|
-
audio: string; // base64-encoded audio data
|
|
30
|
-
mimeType: string;
|
|
31
|
-
filename?: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const VALID_AUDIO_TYPES = [
|
|
35
|
-
"audio/mpeg",
|
|
36
|
-
"audio/mp3",
|
|
37
|
-
"audio/mp4",
|
|
38
|
-
"audio/wav",
|
|
39
|
-
"audio/webm",
|
|
40
|
-
"audio/ogg",
|
|
41
|
-
"audio/flac",
|
|
42
|
-
"audio/aac",
|
|
43
|
-
];
|
|
44
|
-
|
|
45
|
-
function isValidAudioType(type: string): boolean {
|
|
46
|
-
// Extract base MIME type (before semicolon) to handle types like "audio/webm; codecs=opus"
|
|
47
|
-
const baseType = type.split(";")[0]?.trim() ?? "";
|
|
48
|
-
return (
|
|
49
|
-
VALID_AUDIO_TYPES.includes(baseType) ||
|
|
50
|
-
baseType === "" ||
|
|
51
|
-
baseType === "application/octet-stream"
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function createErrorResponse(
|
|
56
|
-
errorResponse: TranscriptionErrorResponse,
|
|
57
|
-
): Response {
|
|
58
|
-
const status = ERROR_STATUS_CODES[errorResponse.error] ?? 500;
|
|
59
|
-
return new Response(JSON.stringify(errorResponse), {
|
|
60
|
-
status,
|
|
61
|
-
headers: { "Content-Type": "application/json" },
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function base64ToFile(
|
|
66
|
-
base64: string,
|
|
67
|
-
mimeType: string,
|
|
68
|
-
filename: string,
|
|
69
|
-
): File {
|
|
70
|
-
// Remove data URL prefix if present (e.g., "data:audio/webm;base64,")
|
|
71
|
-
const base64Data = base64.includes(",")
|
|
72
|
-
? (base64.split(",")[1] ?? base64)
|
|
73
|
-
: base64;
|
|
74
|
-
|
|
75
|
-
// Decode base64 to binary
|
|
76
|
-
const binaryString = atob(base64Data);
|
|
77
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
78
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
79
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Create File object
|
|
83
|
-
return new File([bytes], filename, { type: mimeType });
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async function extractAudioFromFormData(
|
|
87
|
-
request: Request,
|
|
88
|
-
): Promise<{ file: File } | { error: Response }> {
|
|
89
|
-
const formData = await request.formData();
|
|
90
|
-
let audioFile = formData.get("audio") as File | null;
|
|
91
|
-
|
|
92
|
-
if (!audioFile || !(audioFile instanceof File)) {
|
|
93
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
94
|
-
"No audio file found in form data. Please include an 'audio' field.",
|
|
95
|
-
);
|
|
96
|
-
return { error: createErrorResponse(err) };
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (!isValidAudioType(audioFile.type)) {
|
|
100
|
-
const err = TranscriptionErrors.invalidAudioFormat(
|
|
101
|
-
audioFile.type,
|
|
102
|
-
VALID_AUDIO_TYPES,
|
|
103
|
-
);
|
|
104
|
-
return { error: createErrorResponse(err) };
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Browser MediaRecorder Blobs often arrive at the server with their
|
|
108
|
-
// `type` field empty (and `application/octet-stream` is also accepted by
|
|
109
|
-
// isValidAudioType for compatibility). OpenAI Whisper rejects files
|
|
110
|
-
// without a recognizable MIME / extension with a 502 "Invalid file
|
|
111
|
-
// format" — even though the bytes themselves are valid WebM Opus.
|
|
112
|
-
// Stamp `audio/webm` (the standard MediaRecorder default in Chromium /
|
|
113
|
-
// Firefox / Safari) so Whisper can pick the right decoder.
|
|
114
|
-
if (!audioFile.type || audioFile.type === "application/octet-stream") {
|
|
115
|
-
audioFile = new File([audioFile], audioFile.name || "recording.webm", {
|
|
116
|
-
type: "audio/webm",
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return { file: audioFile };
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
async function extractAudioFromJson(
|
|
124
|
-
request: Request,
|
|
125
|
-
): Promise<{ file: File } | { error: Response }> {
|
|
126
|
-
let body: Base64AudioInput;
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
body = await request.json();
|
|
130
|
-
} catch {
|
|
131
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
132
|
-
"Request body must be valid JSON",
|
|
133
|
-
);
|
|
134
|
-
return { error: createErrorResponse(err) };
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (!body.audio || typeof body.audio !== "string") {
|
|
138
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
139
|
-
"Request must include 'audio' field with base64-encoded audio data",
|
|
140
|
-
);
|
|
141
|
-
return { error: createErrorResponse(err) };
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (!body.mimeType || typeof body.mimeType !== "string") {
|
|
145
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
146
|
-
"Request must include 'mimeType' field (e.g., 'audio/webm')",
|
|
147
|
-
);
|
|
148
|
-
return { error: createErrorResponse(err) };
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (!isValidAudioType(body.mimeType)) {
|
|
152
|
-
const err = TranscriptionErrors.invalidAudioFormat(
|
|
153
|
-
body.mimeType,
|
|
154
|
-
VALID_AUDIO_TYPES,
|
|
155
|
-
);
|
|
156
|
-
return { error: createErrorResponse(err) };
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
try {
|
|
160
|
-
const filename = body.filename || "recording.webm";
|
|
161
|
-
const file = base64ToFile(body.audio, body.mimeType, filename);
|
|
162
|
-
return { file };
|
|
163
|
-
} catch {
|
|
164
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
165
|
-
"Failed to decode base64 audio data",
|
|
166
|
-
);
|
|
167
|
-
return { error: createErrorResponse(err) };
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Categorize provider errors into appropriate transcription error responses.
|
|
173
|
-
*/
|
|
174
|
-
function categorizeProviderError(error: unknown): TranscriptionErrorResponse {
|
|
175
|
-
const message =
|
|
176
|
-
error instanceof Error ? error.message : "Unknown error occurred";
|
|
177
|
-
const errorStr = String(error).toLowerCase();
|
|
178
|
-
|
|
179
|
-
// Check for rate limiting
|
|
180
|
-
if (
|
|
181
|
-
errorStr.includes("rate") ||
|
|
182
|
-
errorStr.includes("429") ||
|
|
183
|
-
errorStr.includes("too many")
|
|
184
|
-
) {
|
|
185
|
-
return TranscriptionErrors.rateLimited();
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Check for auth errors
|
|
189
|
-
if (
|
|
190
|
-
errorStr.includes("auth") ||
|
|
191
|
-
errorStr.includes("401") ||
|
|
192
|
-
errorStr.includes("api key") ||
|
|
193
|
-
errorStr.includes("unauthorized")
|
|
194
|
-
) {
|
|
195
|
-
return TranscriptionErrors.authFailed();
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Check for audio too long
|
|
199
|
-
if (
|
|
200
|
-
errorStr.includes("too long") ||
|
|
201
|
-
errorStr.includes("duration") ||
|
|
202
|
-
errorStr.includes("length")
|
|
203
|
-
) {
|
|
204
|
-
return TranscriptionErrors.audioTooLong();
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Default to provider error
|
|
208
|
-
return TranscriptionErrors.providerError(message);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
export async function handleTranscribe({
|
|
212
|
-
runtime,
|
|
213
|
-
request,
|
|
214
|
-
}: HandleTranscribeParameters) {
|
|
215
|
-
try {
|
|
216
|
-
// Check if transcription service is configured
|
|
217
|
-
if (!runtime.transcriptionService) {
|
|
218
|
-
const err = TranscriptionErrors.serviceNotConfigured();
|
|
219
|
-
return createErrorResponse(err);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Determine input type based on content-type header
|
|
223
|
-
const contentType = request.headers.get("content-type") || "";
|
|
224
|
-
|
|
225
|
-
let extractResult: { file: File } | { error: Response };
|
|
226
|
-
|
|
227
|
-
if (contentType.includes("multipart/form-data")) {
|
|
228
|
-
// Handle multipart/form-data (REST mode)
|
|
229
|
-
extractResult = await extractAudioFromFormData(request);
|
|
230
|
-
} else if (contentType.includes("application/json")) {
|
|
231
|
-
// Handle JSON with base64 audio (single-endpoint mode)
|
|
232
|
-
extractResult = await extractAudioFromJson(request);
|
|
233
|
-
} else {
|
|
234
|
-
const err = TranscriptionErrors.invalidRequest(
|
|
235
|
-
"Request must be multipart/form-data or application/json with base64 audio",
|
|
236
|
-
);
|
|
237
|
-
return createErrorResponse(err);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Check for extraction errors
|
|
241
|
-
if ("error" in extractResult) {
|
|
242
|
-
return extractResult.error;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
const audioFile = extractResult.file;
|
|
246
|
-
|
|
247
|
-
// Transcribe the audio file
|
|
248
|
-
const transcription = await runtime.transcriptionService.transcribeFile({
|
|
249
|
-
audioFile,
|
|
250
|
-
mimeType: audioFile.type,
|
|
251
|
-
size: audioFile.size,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return new Response(
|
|
255
|
-
JSON.stringify({
|
|
256
|
-
text: transcription,
|
|
257
|
-
size: audioFile.size,
|
|
258
|
-
type: audioFile.type,
|
|
259
|
-
}),
|
|
260
|
-
{
|
|
261
|
-
status: 200,
|
|
262
|
-
headers: { "Content-Type": "application/json" },
|
|
263
|
-
},
|
|
264
|
-
);
|
|
265
|
-
} catch (error) {
|
|
266
|
-
// Categorize the error for better client-side handling
|
|
267
|
-
return createErrorResponse(categorizeProviderError(error));
|
|
268
|
-
}
|
|
269
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Determines if a header should be forwarded based on the allowlist.
|
|
3
|
-
* Forwards: authorization header and all x-* custom headers.
|
|
4
|
-
*/
|
|
5
|
-
export function shouldForwardHeader(headerName: string): boolean {
|
|
6
|
-
const lower = headerName.toLowerCase();
|
|
7
|
-
return lower === "authorization" || lower.startsWith("x-");
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Extracts headers that should be forwarded from a Request object.
|
|
12
|
-
* Forwards only authorization and x-* headers.
|
|
13
|
-
*/
|
|
14
|
-
export function extractForwardableHeaders(
|
|
15
|
-
request: Request,
|
|
16
|
-
): Record<string, string> {
|
|
17
|
-
const forwardableHeaders: Record<string, string> = {};
|
|
18
|
-
request.headers.forEach((value, key) => {
|
|
19
|
-
if (shouldForwardHeader(key)) {
|
|
20
|
-
forwardableHeaders[key] = value;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return forwardableHeaders;
|
|
24
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { CopilotIntelligenceRuntimeLike } from "../../core/runtime";
|
|
2
|
-
import { getPlatformErrorStatus } from "../shared/intelligence-utils";
|
|
3
|
-
import { resolveIntelligenceUser } from "../shared/resolve-intelligence-user";
|
|
4
|
-
import { isHandlerResponse } from "../shared/json-response";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Builds browser-facing realtime connection metadata owned by the runtime.
|
|
8
|
-
*/
|
|
9
|
-
function buildRealtimeConnectionInfo(params: {
|
|
10
|
-
clientUrl: string;
|
|
11
|
-
threadId: string;
|
|
12
|
-
}): { clientUrl: string; topic: string } {
|
|
13
|
-
return {
|
|
14
|
-
clientUrl: params.clientUrl,
|
|
15
|
-
topic: `thread:${params.threadId}`,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface HandleIntelligenceConnectParams {
|
|
20
|
-
runtime: CopilotIntelligenceRuntimeLike;
|
|
21
|
-
request: Request;
|
|
22
|
-
agentId: string;
|
|
23
|
-
threadId: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function handleIntelligenceConnect({
|
|
27
|
-
runtime,
|
|
28
|
-
request,
|
|
29
|
-
agentId,
|
|
30
|
-
threadId,
|
|
31
|
-
}: HandleIntelligenceConnectParams): Promise<Response> {
|
|
32
|
-
if (!runtime.intelligence) {
|
|
33
|
-
return Response.json(
|
|
34
|
-
{
|
|
35
|
-
error: "Intelligence not configured",
|
|
36
|
-
message: "Intelligence mode requires a CopilotKitIntelligence",
|
|
37
|
-
},
|
|
38
|
-
{ status: 500 },
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
const user = await resolveIntelligenceUser({ runtime, request });
|
|
44
|
-
if (isHandlerResponse(user)) {
|
|
45
|
-
return user;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const result = await runtime.intelligence.ɵconnectThread({
|
|
49
|
-
threadId,
|
|
50
|
-
userId: user.id,
|
|
51
|
-
agentId,
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
if (result === null) {
|
|
55
|
-
return new Response(null, {
|
|
56
|
-
status: 204,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return Response.json(
|
|
61
|
-
{
|
|
62
|
-
threadId: result.threadId,
|
|
63
|
-
joinToken: result.joinToken,
|
|
64
|
-
realtime: buildRealtimeConnectionInfo({
|
|
65
|
-
clientUrl: runtime.intelligence.ɵgetClientWsUrl(),
|
|
66
|
-
threadId: result.threadId,
|
|
67
|
-
}),
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
headers: { "Cache-Control": "no-cache", Connection: "keep-alive" },
|
|
71
|
-
},
|
|
72
|
-
);
|
|
73
|
-
} catch (error) {
|
|
74
|
-
const status = getPlatformErrorStatus(error);
|
|
75
|
-
if (
|
|
76
|
-
status === 400 ||
|
|
77
|
-
status === 401 ||
|
|
78
|
-
status === 403 ||
|
|
79
|
-
status === 404 ||
|
|
80
|
-
status === 409
|
|
81
|
-
) {
|
|
82
|
-
return Response.json(
|
|
83
|
-
{
|
|
84
|
-
error: "Connect request rejected",
|
|
85
|
-
message:
|
|
86
|
-
error instanceof Error
|
|
87
|
-
? error.message
|
|
88
|
-
: "Intelligence platform rejected the connect request",
|
|
89
|
-
},
|
|
90
|
-
{ status },
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
console.error("Connect plan not available:", error);
|
|
95
|
-
return Response.json(
|
|
96
|
-
{
|
|
97
|
-
error: "Connect plan not available",
|
|
98
|
-
},
|
|
99
|
-
{ status: 404 },
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
}
|