@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
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# CopilotKit Transcription
|
|
2
|
+
|
|
3
|
+
Subclass `TranscriptionService`, pass an instance to `CopilotRuntime({ transcriptionService })`,
|
|
4
|
+
and the `POST /transcribe` endpoint lights up. The service has a single method,
|
|
5
|
+
`transcribeFile`, that returns the transcript as a plain string.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import {
|
|
11
|
+
CopilotRuntime,
|
|
12
|
+
createCopilotRuntimeHandler,
|
|
13
|
+
TranscriptionService,
|
|
14
|
+
type TranscribeFileOptions,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import OpenAI from "openai";
|
|
17
|
+
|
|
18
|
+
class OpenAIWhisperTranscription extends TranscriptionService {
|
|
19
|
+
private client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
20
|
+
|
|
21
|
+
async transcribeFile({ audioFile }: TranscribeFileOptions): Promise<string> {
|
|
22
|
+
const result = await this.client.audio.transcriptions.create({
|
|
23
|
+
file: audioFile,
|
|
24
|
+
model: "whisper-1",
|
|
25
|
+
});
|
|
26
|
+
return result.text;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const runtime = new CopilotRuntime({
|
|
31
|
+
agents: {
|
|
32
|
+
/* ... */
|
|
33
|
+
} as any,
|
|
34
|
+
transcriptionService: new OpenAIWhisperTranscription(),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const handler = createCopilotRuntimeHandler({
|
|
38
|
+
runtime,
|
|
39
|
+
basePath: "/api/copilotkit",
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export default { fetch: handler };
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Core Patterns
|
|
46
|
+
|
|
47
|
+
### Abstract contract
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// packages/runtime/src/v2/runtime/transcription-service/transcription-service.ts
|
|
51
|
+
export interface TranscribeFileOptions {
|
|
52
|
+
audioFile: File;
|
|
53
|
+
mimeType?: string;
|
|
54
|
+
size?: number;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export abstract class TranscriptionService {
|
|
58
|
+
abstract transcribeFile(options: TranscribeFileOptions): Promise<string>;
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Supported request shapes
|
|
63
|
+
|
|
64
|
+
Multipart (REST mode):
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
const form = new FormData();
|
|
68
|
+
form.append("audio", blob, "recording.webm");
|
|
69
|
+
await fetch("/api/copilotkit/transcribe", { method: "POST", body: form });
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
JSON (works in both multi-route and single-endpoint modes — dispatch is by
|
|
73
|
+
`Content-Type: application/json`; `mimeType` is required in the payload):
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
await fetch("/api/copilotkit/transcribe", {
|
|
77
|
+
method: "POST",
|
|
78
|
+
headers: { "Content-Type": "application/json" },
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
audio: base64String,
|
|
81
|
+
mimeType: "audio/webm",
|
|
82
|
+
filename: "recording.webm", // optional
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Reject oversize audio with a graceful 400
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
class OpenAIWhisperTranscription extends TranscriptionService {
|
|
91
|
+
private client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
92
|
+
|
|
93
|
+
async transcribeFile({
|
|
94
|
+
audioFile,
|
|
95
|
+
size,
|
|
96
|
+
}: TranscribeFileOptions): Promise<string> {
|
|
97
|
+
const max = 25 * 1024 * 1024; // 25 MB
|
|
98
|
+
if ((size ?? audioFile.size) > max) {
|
|
99
|
+
// "too long" keyword → audio_too_long response
|
|
100
|
+
throw new Error("Audio duration too long — max 25MB per upload");
|
|
101
|
+
}
|
|
102
|
+
const result = await this.client.audio.transcriptions.create({
|
|
103
|
+
file: audioFile,
|
|
104
|
+
model: "whisper-1",
|
|
105
|
+
});
|
|
106
|
+
return result.text;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Error auto-categorization
|
|
112
|
+
|
|
113
|
+
The runtime inspects `String(error).toLowerCase()` thrown by your service and maps keywords
|
|
114
|
+
to error codes. Let the provider error bubble up — do not re-categorize inside the service.
|
|
115
|
+
|
|
116
|
+
| Keyword substrings | Maps to |
|
|
117
|
+
| ---------------------------------------- | -------------------------------- |
|
|
118
|
+
| `rate`, `429`, `too many` | `rate_limited` (retryable) |
|
|
119
|
+
| `auth`, `401`, `api key`, `unauthorized` | `auth_failed` (not retryable) |
|
|
120
|
+
| `too long`, `duration`, `length` | `audio_too_long` (not retryable) |
|
|
121
|
+
| (anything else) | `provider_error` (retryable) |
|
|
122
|
+
|
|
123
|
+
Full error-code enum:
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// packages/shared/src/transcription-errors.ts
|
|
127
|
+
export enum TranscriptionErrorCode {
|
|
128
|
+
SERVICE_NOT_CONFIGURED = "service_not_configured",
|
|
129
|
+
INVALID_AUDIO_FORMAT = "invalid_audio_format",
|
|
130
|
+
AUDIO_TOO_LONG = "audio_too_long",
|
|
131
|
+
AUDIO_TOO_SHORT = "audio_too_short",
|
|
132
|
+
RATE_LIMITED = "rate_limited",
|
|
133
|
+
AUTH_FAILED = "auth_failed",
|
|
134
|
+
PROVIDER_ERROR = "provider_error",
|
|
135
|
+
NETWORK_ERROR = "network_error",
|
|
136
|
+
INVALID_REQUEST = "invalid_request",
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Common Mistakes
|
|
141
|
+
|
|
142
|
+
### HIGH Calling /transcribe without configuring transcriptionService
|
|
143
|
+
|
|
144
|
+
Wrong:
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
new CopilotRuntime({ agents });
|
|
148
|
+
// client calls /api/copilotkit/transcribe → 503
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Correct:
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
new CopilotRuntime({
|
|
155
|
+
agents,
|
|
156
|
+
transcriptionService: new MyWhisperService(),
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Unconfigured runtime returns HTTP 503 with
|
|
161
|
+
`{ error: "service_not_configured" }`. The frontend gets no transcript with no obvious
|
|
162
|
+
server-side failure.
|
|
163
|
+
|
|
164
|
+
Source: `packages/runtime/src/v2/runtime/handlers/handle-transcribe.ts:203-207`.
|
|
165
|
+
|
|
166
|
+
### MEDIUM Form field named "file" instead of "audio"
|
|
167
|
+
|
|
168
|
+
Wrong:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
const form = new FormData();
|
|
172
|
+
form.append("file", blob, "recording.webm");
|
|
173
|
+
await fetch("/api/copilotkit/transcribe", { method: "POST", body: form });
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Correct:
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
const form = new FormData();
|
|
180
|
+
form.append("audio", blob, "recording.webm");
|
|
181
|
+
await fetch("/api/copilotkit/transcribe", { method: "POST", body: form });
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
The handler reads `formData.get("audio")` — any other field name yields `null` and returns
|
|
185
|
+
`invalid_request`.
|
|
186
|
+
|
|
187
|
+
Source: `packages/runtime/src/v2/runtime/handlers/handle-transcribe.ts:91-97`.
|
|
188
|
+
|
|
189
|
+
### MEDIUM Base64 payload missing mimeType
|
|
190
|
+
|
|
191
|
+
Wrong:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
await fetch("/api/copilotkit/transcribe", {
|
|
195
|
+
method: "POST",
|
|
196
|
+
headers: { "Content-Type": "application/json" },
|
|
197
|
+
body: JSON.stringify({ audio: b64 }),
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Correct:
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
await fetch("/api/copilotkit/transcribe", {
|
|
205
|
+
method: "POST",
|
|
206
|
+
headers: { "Content-Type": "application/json" },
|
|
207
|
+
body: JSON.stringify({ audio: b64, mimeType: "audio/webm" }),
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
JSON mode requires `mimeType` — the handler explicitly rejects payloads missing it with
|
|
212
|
+
`invalid_request`.
|
|
213
|
+
|
|
214
|
+
Source: `packages/runtime/src/v2/runtime/handlers/handle-transcribe.ts:131-136`.
|
|
215
|
+
|
|
216
|
+
### LOW Re-categorizing errors inside the service
|
|
217
|
+
|
|
218
|
+
Wrong:
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
class MyService extends TranscriptionService {
|
|
222
|
+
async transcribeFile(opts: TranscribeFileOptions): Promise<string> {
|
|
223
|
+
try {
|
|
224
|
+
return await doTranscribe(opts);
|
|
225
|
+
} catch (e) {
|
|
226
|
+
// trying to hand-pick error codes
|
|
227
|
+
throw new Error("RATE_LIMITED");
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Correct:
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
class MyService extends TranscriptionService {
|
|
237
|
+
async transcribeFile(opts: TranscribeFileOptions): Promise<string> {
|
|
238
|
+
return doTranscribe(opts); // let provider errors bubble up verbatim
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
The runtime scans `String(error).toLowerCase()` for `"rate"`, `"429"`, `"auth"`, `"too long"`
|
|
244
|
+
etc. Provider-native messages (`"OpenAI returned 429 rate limited"`) auto-map to the right
|
|
245
|
+
code. Hand-crafted codes bypass the keyword matcher and end up as `provider_error`.
|
|
246
|
+
|
|
247
|
+
Source: `packages/runtime/src/v2/runtime/handlers/handle-transcribe.ts:160-196`.
|
|
248
|
+
|
|
249
|
+
### MEDIUM Returning a rich object instead of a string
|
|
250
|
+
|
|
251
|
+
Wrong:
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
class MyService extends TranscriptionService {
|
|
255
|
+
async transcribeFile(opts: TranscribeFileOptions): Promise<string> {
|
|
256
|
+
// @ts-expect-error returning the wrong shape
|
|
257
|
+
return {
|
|
258
|
+
text: "hi",
|
|
259
|
+
segments: [
|
|
260
|
+
/* ... */
|
|
261
|
+
],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Correct:
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
class MyService extends TranscriptionService {
|
|
271
|
+
async transcribeFile(opts: TranscribeFileOptions): Promise<string> {
|
|
272
|
+
const result = await provider.transcribe(opts.audioFile);
|
|
273
|
+
return result.text;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
`transcribeFile` returns `Promise<string>`. The handler sends
|
|
279
|
+
`{ transcription: string }` back to the client — any other shape is a TypeScript error and
|
|
280
|
+
would be JSON-stringified wrongly at runtime.
|
|
281
|
+
|
|
282
|
+
Source: `packages/runtime/src/v2/runtime/transcription-service/transcription-service.ts:9-11`.
|
|
283
|
+
|
|
284
|
+
## See also
|
|
285
|
+
|
|
286
|
+
- `copilotkit/setup-endpoint` — `/transcribe` is one of the routes the handler mounts
|
|
287
|
+
- `copilotkit/debug-and-troubleshoot` — `TranscriptionErrorCode` catalog
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
A2A (Agent2Agent) — wired via `@ag-ui/a2a`. Requires a pre-built `A2AClient` (not a URL).
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/a2a @a2a-js/sdk
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { A2AAgent } from "@ag-ui/a2a";
|
|
17
|
+
import { A2AClient } from "@a2a-js/sdk/client";
|
|
18
|
+
|
|
19
|
+
const a2aClient = new A2AClient(process.env.A2A_URL!);
|
|
20
|
+
|
|
21
|
+
const runtime = new CopilotRuntime({
|
|
22
|
+
agents: {
|
|
23
|
+
default: new A2AAgent({ a2aClient }),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const handler = createCopilotRuntimeHandler({
|
|
28
|
+
runtime,
|
|
29
|
+
basePath: "/api/copilotkit",
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default { fetch: handler };
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Gotcha — do NOT pass `{ url }`
|
|
36
|
+
|
|
37
|
+
`A2AAgent` takes `{ a2aClient }`. The A2A protocol has its own handshake; the client
|
|
38
|
+
object handles it. Passing `{ url: "..." }` is a type error and will fail at runtime.
|
|
39
|
+
|
|
40
|
+
Source: `examples/integrations/a2a-a2ui/app/api/copilotkit/[[...slug]]/route.tsx:12`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Google ADK (Agent Development Kit) — wired via the bare `HttpAgent` from `@ag-ui/client`.
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/client
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { HttpAgent } from "@ag-ui/client";
|
|
17
|
+
|
|
18
|
+
const runtime = new CopilotRuntime({
|
|
19
|
+
agents: {
|
|
20
|
+
default: new HttpAgent({
|
|
21
|
+
url: process.env.ADK_URL ?? "http://localhost:8000/",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const handler = createCopilotRuntimeHandler({
|
|
27
|
+
runtime,
|
|
28
|
+
basePath: "/api/copilotkit",
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default { fetch: handler };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Server side
|
|
35
|
+
|
|
36
|
+
Your ADK Python agent must speak AG-UI. ADK ships an AG-UI FastAPI adapter — use it
|
|
37
|
+
and point `HttpAgent({ url })` at the FastAPI route.
|
|
38
|
+
|
|
39
|
+
## Gotcha — env-sourced credentials
|
|
40
|
+
|
|
41
|
+
ADK typically authenticates to Google Cloud via service-account credentials
|
|
42
|
+
(`GOOGLE_APPLICATION_CREDENTIALS`). Those live on the ADK Python server, not in the
|
|
43
|
+
CopilotKit runtime. The runtime just forwards AG-UI events.
|
|
44
|
+
|
|
45
|
+
Source: `docs/content/docs/integrations/adk/quickstart.mdx`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
AG2 — wired via the bare `HttpAgent` from `@ag-ui/client`. No dedicated `@ag-ui/ag2`
|
|
2
|
+
package exists; AG2 is a standard HTTP AG-UI framework.
|
|
3
|
+
|
|
4
|
+
## Install
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
pnpm add @ag-ui/client
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Minimal wire-up
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import {
|
|
14
|
+
CopilotRuntime,
|
|
15
|
+
createCopilotRuntimeHandler,
|
|
16
|
+
} from "@copilotkit/runtime/v2";
|
|
17
|
+
import { HttpAgent } from "@ag-ui/client";
|
|
18
|
+
|
|
19
|
+
const runtime = new CopilotRuntime({
|
|
20
|
+
agents: {
|
|
21
|
+
default: new HttpAgent({
|
|
22
|
+
url: process.env.AG2_URL ?? "http://localhost:8000/",
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const handler = createCopilotRuntimeHandler({
|
|
28
|
+
runtime,
|
|
29
|
+
basePath: "/api/copilotkit",
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default { fetch: handler };
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Gotcha — no dedicated package
|
|
36
|
+
|
|
37
|
+
Unlike Mastra / LangGraph / CrewAI / LlamaIndex / Agno, AG2 has no `@ag-ui/ag2` package.
|
|
38
|
+
Always use the generic `HttpAgent`. If an older doc references a dedicated AG2 package,
|
|
39
|
+
treat it as stale.
|
|
40
|
+
|
|
41
|
+
Source: `docs/content/docs/integrations/ag2/quickstart.mdx`; maintainer Phase 4 resolution.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Agno — wired via `@ag-ui/agno`. Requires an `/agui` URL suffix.
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/agno
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { AgnoAgent } from "@ag-ui/agno";
|
|
17
|
+
|
|
18
|
+
const runtime = new CopilotRuntime({
|
|
19
|
+
agents: {
|
|
20
|
+
default: new AgnoAgent({
|
|
21
|
+
url: process.env.AGNO_URL ?? "http://localhost:8000/agui",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const handler = createCopilotRuntimeHandler({
|
|
27
|
+
runtime,
|
|
28
|
+
basePath: "/api/copilotkit",
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default { fetch: handler };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Gotcha — the `/agui` suffix is mandatory
|
|
35
|
+
|
|
36
|
+
Agno's AG-UI FastAPI app mounts at `/agui`. Pointing `url` at the server root
|
|
37
|
+
(`http://localhost:8000`) returns 404. Always include `/agui`.
|
|
38
|
+
|
|
39
|
+
Source: `docs/content/docs/integrations/agno/quickstart.mdx:215`.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
AWS Strands — wired via the bare `HttpAgent` from `@ag-ui/client`.
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/client
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { HttpAgent } from "@ag-ui/client";
|
|
17
|
+
|
|
18
|
+
const runtime = new CopilotRuntime({
|
|
19
|
+
agents: {
|
|
20
|
+
default: new HttpAgent({
|
|
21
|
+
url: process.env.STRANDS_URL ?? "http://localhost:8000",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const handler = createCopilotRuntimeHandler({
|
|
27
|
+
runtime,
|
|
28
|
+
basePath: "/api/copilotkit",
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default { fetch: handler };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Server side
|
|
35
|
+
|
|
36
|
+
Strands agents run on AWS and typically expose an AG-UI-speaking endpoint (API Gateway or
|
|
37
|
+
Lambda Function URL). Point `HttpAgent({ url })` at that endpoint.
|
|
38
|
+
|
|
39
|
+
## Gotcha — AWS auth
|
|
40
|
+
|
|
41
|
+
Strands deployments often require IAM SigV4 or a custom header. `HttpAgent` accepts a
|
|
42
|
+
`headers: Record<string, string>` option that is attached to every outbound runtime →
|
|
43
|
+
Strands call:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
new HttpAgent({
|
|
47
|
+
url: process.env.STRANDS_URL!,
|
|
48
|
+
headers: { Authorization: `Bearer ${process.env.STRANDS_TOKEN!}` },
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`hooks.onBeforeHandler` will NOT work for this — those hooks run on the inbound frontend
|
|
53
|
+
→ runtime request, not on the outbound runtime → Strands call that `HttpAgent` issues.
|
|
54
|
+
For SigV4 (which needs a per-request signature over the body), front Strands with a
|
|
55
|
+
lightweight Lambda / API Gateway authorizer that strips client credentials and adds the
|
|
56
|
+
IAM signing, then point `HttpAgent({ url })` at that shim.
|
|
57
|
+
|
|
58
|
+
Source: `node_modules/@ag-ui/client/dist/index.d.ts` (`HttpAgentConfig.headers`);
|
|
59
|
+
`docs/content/docs/integrations/aws-strands/quickstart.mdx`.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
CrewAI Crews — multi-agent crews wired via `@ag-ui/crewai`.
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/crewai
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { CrewAIAgent } from "@ag-ui/crewai";
|
|
17
|
+
|
|
18
|
+
const runtime = new CopilotRuntime({
|
|
19
|
+
agents: {
|
|
20
|
+
default: new CrewAIAgent({
|
|
21
|
+
url: process.env.CREWAI_URL ?? "http://localhost:8000/",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const handler = createCopilotRuntimeHandler({
|
|
27
|
+
runtime,
|
|
28
|
+
basePath: "/api/copilotkit",
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default { fetch: handler };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Crews vs Flows
|
|
35
|
+
|
|
36
|
+
CrewAI ships two products:
|
|
37
|
+
|
|
38
|
+
- **Crews** — multi-agent orchestration. Use `CrewAIAgent` from `@ag-ui/crewai`.
|
|
39
|
+
- **Flows** — event-driven pipelines. Use the generic `HttpAgent` from `@ag-ui/client`
|
|
40
|
+
(there's no framework-specific wrapper). See [crewai-flows.md](crewai-flows.md).
|
|
41
|
+
|
|
42
|
+
## Gotcha — trailing slash
|
|
43
|
+
|
|
44
|
+
The `url` for `CrewAIAgent` traditionally ends with a trailing slash
|
|
45
|
+
(`http://localhost:8000/`). Follow whatever your CrewAI server exposes — don't strip it.
|
|
46
|
+
|
|
47
|
+
Source: `@ag-ui/crewai` package types (`CrewAIAgent` constructor);
|
|
48
|
+
`docs/content/docs/reference/v1/sdk/python/CrewAIAgent.mdx` for v1 Python-side
|
|
49
|
+
reference. The v2 integrations docs currently ship only a Flows quickstart at
|
|
50
|
+
`docs/content/docs/integrations/crewai-flows/quickstart.mdx` — there is no dedicated
|
|
51
|
+
Crews quickstart yet.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
CrewAI Flows — wired via the bare `HttpAgent` from `@ag-ui/client`. No dedicated wrapper.
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pnpm add @ag-ui/client
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Minimal wire-up
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
import {
|
|
13
|
+
CopilotRuntime,
|
|
14
|
+
createCopilotRuntimeHandler,
|
|
15
|
+
} from "@copilotkit/runtime/v2";
|
|
16
|
+
import { HttpAgent } from "@ag-ui/client";
|
|
17
|
+
|
|
18
|
+
const runtime = new CopilotRuntime({
|
|
19
|
+
agents: {
|
|
20
|
+
default: new HttpAgent({
|
|
21
|
+
url: process.env.CREWAI_FLOWS_URL ?? "http://localhost:8000/",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const handler = createCopilotRuntimeHandler({
|
|
27
|
+
runtime,
|
|
28
|
+
basePath: "/api/copilotkit",
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export default { fetch: handler };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Flows vs Crews
|
|
35
|
+
|
|
36
|
+
Flows is the event-driven pipeline product. For multi-agent Crews orchestration, use
|
|
37
|
+
`CrewAIAgent` from `@ag-ui/crewai` instead — see [crewai-crews.md](crewai-crews.md).
|
|
38
|
+
|
|
39
|
+
## Gotcha — AG-UI compatibility
|
|
40
|
+
|
|
41
|
+
Your CrewAI Flows server must speak AG-UI over HTTP. If you control the server, use the
|
|
42
|
+
official CrewAI Python AG-UI adapter. `HttpAgent` is a thin bridge — any server that
|
|
43
|
+
emits AG-UI events at the URL works.
|
|
44
|
+
|
|
45
|
+
Source: `docs/content/docs/integrations/crewai-flows/quickstart.mdx`.
|