@copilotkit/runtime 1.57.2 → 1.57.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/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 +52 -19
- package/dist/package.mjs +52 -19
- 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 +8 -18
- 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,39 +0,0 @@
|
|
|
1
|
-
import * as packageJson from "../../../../package.json";
|
|
2
|
-
|
|
3
|
-
const SCARF_BASE_URL = `https://copilotkit.gateway.scarf.sh/${packageJson.version}`;
|
|
4
|
-
|
|
5
|
-
class ScarfClient {
|
|
6
|
-
constructor() {}
|
|
7
|
-
|
|
8
|
-
async logEvent(properties: Record<string, any>): Promise<void> {
|
|
9
|
-
try {
|
|
10
|
-
const controller = new AbortController();
|
|
11
|
-
const timeoutId = setTimeout(() => controller.abort(), 3000);
|
|
12
|
-
|
|
13
|
-
const queryParams = new URLSearchParams();
|
|
14
|
-
|
|
15
|
-
Object.entries(properties).forEach(([key, value]) => {
|
|
16
|
-
if (value !== null && value !== undefined) {
|
|
17
|
-
queryParams.append(key, String(value));
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
const url = `${SCARF_BASE_URL}?${queryParams.toString()}`;
|
|
22
|
-
|
|
23
|
-
const response = await fetch(url, {
|
|
24
|
-
method: "GET",
|
|
25
|
-
signal: controller.signal,
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
clearTimeout(timeoutId);
|
|
29
|
-
|
|
30
|
-
if (!response.ok) {
|
|
31
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
32
|
-
}
|
|
33
|
-
} catch {
|
|
34
|
-
// Silently fail - telemetry should not break the application
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export default new ScarfClient();
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { AnalyticsEvents } from "./events";
|
|
2
|
-
import scarfClient from "./scarf-client";
|
|
3
|
-
|
|
4
|
-
export function isTelemetryDisabled(): boolean {
|
|
5
|
-
return (
|
|
6
|
-
(process.env as Record<string, string | undefined>)
|
|
7
|
-
.COPILOTKIT_TELEMETRY_DISABLED === "true" ||
|
|
8
|
-
(process.env as Record<string, string | undefined>)
|
|
9
|
-
.COPILOTKIT_TELEMETRY_DISABLED === "1" ||
|
|
10
|
-
(process.env as Record<string, string | undefined>).DO_NOT_TRACK ===
|
|
11
|
-
"true" ||
|
|
12
|
-
(process.env as Record<string, string | undefined>).DO_NOT_TRACK === "1"
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class TelemetryClient {
|
|
17
|
-
private telemetryDisabled: boolean = false;
|
|
18
|
-
private sampleRate: number = 0.05;
|
|
19
|
-
|
|
20
|
-
constructor({
|
|
21
|
-
telemetryDisabled,
|
|
22
|
-
sampleRate,
|
|
23
|
-
}: {
|
|
24
|
-
telemetryDisabled?: boolean;
|
|
25
|
-
sampleRate?: number;
|
|
26
|
-
} = {}) {
|
|
27
|
-
this.telemetryDisabled = telemetryDisabled ?? isTelemetryDisabled();
|
|
28
|
-
this.setSampleRate(sampleRate);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
private shouldSendEvent() {
|
|
32
|
-
if (this.telemetryDisabled) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
const randomNumber = Math.random();
|
|
36
|
-
return randomNumber < this.sampleRate;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async capture<K extends keyof AnalyticsEvents>(
|
|
40
|
-
event: K,
|
|
41
|
-
_properties: AnalyticsEvents[K],
|
|
42
|
-
) {
|
|
43
|
-
if (!this.shouldSendEvent()) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
await scarfClient.logEvent({
|
|
48
|
-
event,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private setSampleRate(sampleRate: number | undefined) {
|
|
53
|
-
let _sampleRate: number;
|
|
54
|
-
|
|
55
|
-
_sampleRate = sampleRate ?? 0.05;
|
|
56
|
-
|
|
57
|
-
if (process.env.COPILOTKIT_TELEMETRY_SAMPLE_RATE) {
|
|
58
|
-
_sampleRate = parseFloat(process.env.COPILOTKIT_TELEMETRY_SAMPLE_RATE);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (_sampleRate < 0 || _sampleRate > 1) {
|
|
62
|
-
throw new Error("Sample rate must be between 0 and 1");
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
this.sampleRate = _sampleRate;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const telemetry = new TelemetryClient();
|
|
70
|
-
export default telemetry;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface TranscribeFileOptions {
|
|
2
|
-
audioFile: File;
|
|
3
|
-
/** MIME type of the audio file */
|
|
4
|
-
mimeType?: string;
|
|
5
|
-
/** Size of the audio file in bytes */
|
|
6
|
-
size?: number;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export abstract class TranscriptionService {
|
|
10
|
-
abstract transcribeFile(options: TranscribeFileOptions): Promise<string>;
|
|
11
|
-
}
|
package/tests/global.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vitest/globals" />
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
describe("Anthropic Adapter - Allowlist Approach", () => {
|
|
2
|
-
it("should filter out tool_result messages with no corresponding tool_use ID", () => {
|
|
3
|
-
// Setup test data
|
|
4
|
-
const validToolUseIds = new Set<string>(["valid-id-1", "valid-id-2"]);
|
|
5
|
-
|
|
6
|
-
// Messages to filter - valid and invalid ones
|
|
7
|
-
const messages = [
|
|
8
|
-
{ type: "text", role: "user", content: "Hello" },
|
|
9
|
-
{
|
|
10
|
-
type: "tool_result",
|
|
11
|
-
actionExecutionId: "valid-id-1",
|
|
12
|
-
result: "result1",
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
type: "tool_result",
|
|
16
|
-
actionExecutionId: "invalid-id",
|
|
17
|
-
result: "invalid",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
type: "tool_result",
|
|
21
|
-
actionExecutionId: "valid-id-2",
|
|
22
|
-
result: "result2",
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
type: "tool_result",
|
|
26
|
-
actionExecutionId: "valid-id-1",
|
|
27
|
-
result: "duplicate",
|
|
28
|
-
}, // Duplicate ID
|
|
29
|
-
];
|
|
30
|
-
|
|
31
|
-
// Apply the allowlist filter approach
|
|
32
|
-
const filteredMessages = [];
|
|
33
|
-
const processedIds = new Set<string>();
|
|
34
|
-
|
|
35
|
-
for (const message of messages) {
|
|
36
|
-
if (message.type === "tool_result") {
|
|
37
|
-
// Skip if no corresponding valid tool_use ID
|
|
38
|
-
if (!validToolUseIds.has(message.actionExecutionId)) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Skip if we've already processed this ID
|
|
43
|
-
if (processedIds.has(message.actionExecutionId)) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Mark this ID as processed
|
|
48
|
-
processedIds.add(message.actionExecutionId);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Include all non-tool-result messages and valid tool results
|
|
52
|
-
filteredMessages.push(message);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Verify results
|
|
56
|
-
expect(filteredMessages.length).toBe(3); // text + 2 valid tool results (no duplicates or invalid)
|
|
57
|
-
|
|
58
|
-
// Valid results should be included
|
|
59
|
-
expect(
|
|
60
|
-
filteredMessages.some(
|
|
61
|
-
(m) => m.type === "tool_result" && m.actionExecutionId === "valid-id-1",
|
|
62
|
-
),
|
|
63
|
-
).toBe(true);
|
|
64
|
-
|
|
65
|
-
expect(
|
|
66
|
-
filteredMessages.some(
|
|
67
|
-
(m) => m.type === "tool_result" && m.actionExecutionId === "valid-id-2",
|
|
68
|
-
),
|
|
69
|
-
).toBe(true);
|
|
70
|
-
|
|
71
|
-
// Invalid result should be excluded
|
|
72
|
-
expect(
|
|
73
|
-
filteredMessages.some(
|
|
74
|
-
(m) => m.type === "tool_result" && m.actionExecutionId === "invalid-id",
|
|
75
|
-
),
|
|
76
|
-
).toBe(false);
|
|
77
|
-
|
|
78
|
-
// Duplicate should be excluded
|
|
79
|
-
const validId1Count = filteredMessages.filter(
|
|
80
|
-
(m) => m.type === "tool_result" && m.actionExecutionId === "valid-id-1",
|
|
81
|
-
).length;
|
|
82
|
-
|
|
83
|
-
expect(validId1Count).toBe(1);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it("should maintain correct order of messages when filtering", () => {
|
|
87
|
-
// Setup test data with specific ordering
|
|
88
|
-
const validToolUseIds = new Set<string>(["tool-1", "tool-2", "tool-3"]);
|
|
89
|
-
|
|
90
|
-
// Messages in a specific order, with some invalid/duplicate results
|
|
91
|
-
const messages = [
|
|
92
|
-
{ type: "text", role: "user", content: "Initial message" },
|
|
93
|
-
{ type: "text", role: "assistant", content: "I'll help with that" },
|
|
94
|
-
{ type: "tool_use", id: "tool-1", name: "firstTool" },
|
|
95
|
-
{ type: "tool_result", actionExecutionId: "tool-1", result: "result1" },
|
|
96
|
-
{ type: "text", role: "assistant", content: "Got the first result" },
|
|
97
|
-
{ type: "tool_use", id: "tool-2", name: "secondTool" },
|
|
98
|
-
{ type: "tool_result", actionExecutionId: "tool-2", result: "result2" },
|
|
99
|
-
{
|
|
100
|
-
type: "tool_result",
|
|
101
|
-
actionExecutionId: "invalid-id",
|
|
102
|
-
result: "invalid-result",
|
|
103
|
-
},
|
|
104
|
-
{ type: "tool_use", id: "tool-3", name: "thirdTool" },
|
|
105
|
-
{
|
|
106
|
-
type: "tool_result",
|
|
107
|
-
actionExecutionId: "tool-1",
|
|
108
|
-
result: "duplicate-result",
|
|
109
|
-
}, // Duplicate
|
|
110
|
-
{ type: "tool_result", actionExecutionId: "tool-3", result: "result3" },
|
|
111
|
-
{ type: "text", role: "user", content: "Final message" },
|
|
112
|
-
];
|
|
113
|
-
|
|
114
|
-
// Apply the allowlist filter approach
|
|
115
|
-
const filteredMessages = [];
|
|
116
|
-
const processedIds = new Set<string>();
|
|
117
|
-
|
|
118
|
-
for (const message of messages) {
|
|
119
|
-
if (message.type === "tool_result") {
|
|
120
|
-
// Skip if no corresponding valid tool_use ID
|
|
121
|
-
if (!validToolUseIds.has(message.actionExecutionId)) {
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Skip if we've already processed this ID
|
|
126
|
-
if (processedIds.has(message.actionExecutionId)) {
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Mark this ID as processed
|
|
131
|
-
processedIds.add(message.actionExecutionId);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Include all non-tool-result messages and valid tool results
|
|
135
|
-
filteredMessages.push(message);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Verify results
|
|
139
|
-
expect(filteredMessages.length).toBe(10); // 12 original - 2 filtered out
|
|
140
|
-
|
|
141
|
-
// Check that the order is preserved
|
|
142
|
-
expect(filteredMessages[0].type).toBe("text"); // Initial user message
|
|
143
|
-
expect(filteredMessages[1].type).toBe("text"); // Assistant response
|
|
144
|
-
expect(filteredMessages[2].type).toBe("tool_use"); // First tool
|
|
145
|
-
expect(filteredMessages[3].type).toBe("tool_result"); // First result
|
|
146
|
-
expect(filteredMessages[3].actionExecutionId).toBe("tool-1"); // First result
|
|
147
|
-
expect(filteredMessages[4].type).toBe("text"); // Assistant comment
|
|
148
|
-
expect(filteredMessages[5].type).toBe("tool_use"); // Second tool
|
|
149
|
-
expect(filteredMessages[6].type).toBe("tool_result"); // Second result
|
|
150
|
-
expect(filteredMessages[6].actionExecutionId).toBe("tool-2"); // Second result
|
|
151
|
-
expect(filteredMessages[7].type).toBe("tool_use"); // Third tool
|
|
152
|
-
expect(filteredMessages[8].type).toBe("tool_result"); // Third result
|
|
153
|
-
expect(filteredMessages[8].actionExecutionId).toBe("tool-3"); // Third result
|
|
154
|
-
expect(filteredMessages[9].type).toBe("text"); // Final user message
|
|
155
|
-
|
|
156
|
-
// Each valid tool ID should appear exactly once in the results
|
|
157
|
-
const toolResultCounts = {
|
|
158
|
-
"tool-1": 0,
|
|
159
|
-
"tool-2": 0,
|
|
160
|
-
"tool-3": 0,
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
filteredMessages.forEach((message) => {
|
|
164
|
-
if (
|
|
165
|
-
message.type === "tool_result" &&
|
|
166
|
-
message.actionExecutionId in toolResultCounts
|
|
167
|
-
) {
|
|
168
|
-
toolResultCounts[message.actionExecutionId]++;
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
expect(toolResultCounts["tool-1"]).toBe(1);
|
|
173
|
-
expect(toolResultCounts["tool-2"]).toBe(1);
|
|
174
|
-
expect(toolResultCounts["tool-3"]).toBe(1);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it("should handle an empty message array", () => {
|
|
178
|
-
const validToolUseIds = new Set<string>(["valid-id-1", "valid-id-2"]);
|
|
179
|
-
const messages = [];
|
|
180
|
-
|
|
181
|
-
// Apply the filtering logic
|
|
182
|
-
const filteredMessages = [];
|
|
183
|
-
const processedIds = new Set<string>();
|
|
184
|
-
|
|
185
|
-
for (const message of messages) {
|
|
186
|
-
if (message.type === "tool_result") {
|
|
187
|
-
if (
|
|
188
|
-
!validToolUseIds.has(message.actionExecutionId) ||
|
|
189
|
-
processedIds.has(message.actionExecutionId)
|
|
190
|
-
) {
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
processedIds.add(message.actionExecutionId);
|
|
194
|
-
}
|
|
195
|
-
filteredMessages.push(message);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
expect(filteredMessages.length).toBe(0);
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it("should handle edge cases with mixed message types", () => {
|
|
202
|
-
// Setup with mixed message types
|
|
203
|
-
const validToolUseIds = new Set<string>(["valid-id-1"]);
|
|
204
|
-
|
|
205
|
-
const messages = [
|
|
206
|
-
{ type: "text", role: "user", content: "Hello" },
|
|
207
|
-
{ type: "image", url: "https://example.com/image.jpg" }, // Non-tool message type
|
|
208
|
-
{
|
|
209
|
-
type: "tool_result",
|
|
210
|
-
actionExecutionId: "valid-id-1",
|
|
211
|
-
result: "result1",
|
|
212
|
-
},
|
|
213
|
-
{ type: "custom", data: { key: "value" } }, // Another custom type
|
|
214
|
-
{
|
|
215
|
-
type: "tool_result",
|
|
216
|
-
actionExecutionId: "valid-id-1",
|
|
217
|
-
result: "duplicate",
|
|
218
|
-
}, // Duplicate
|
|
219
|
-
{ type: "null", value: null }, // Edge case
|
|
220
|
-
{ type: "undefined" }, // Edge case
|
|
221
|
-
];
|
|
222
|
-
|
|
223
|
-
// Apply the filtering logic
|
|
224
|
-
const filteredMessages = [];
|
|
225
|
-
const processedIds = new Set<string>();
|
|
226
|
-
|
|
227
|
-
for (const message of messages) {
|
|
228
|
-
if (message.type === "tool_result") {
|
|
229
|
-
if (
|
|
230
|
-
!validToolUseIds.has(message.actionExecutionId) ||
|
|
231
|
-
processedIds.has(message.actionExecutionId)
|
|
232
|
-
) {
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
processedIds.add(message.actionExecutionId);
|
|
236
|
-
}
|
|
237
|
-
filteredMessages.push(message);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Should have all non-tool_result messages + 1 valid tool_result
|
|
241
|
-
expect(filteredMessages.length).toBe(6); // 7 original - 1 duplicate
|
|
242
|
-
|
|
243
|
-
// Valid tool_result should be included exactly once
|
|
244
|
-
const toolResults = filteredMessages.filter(
|
|
245
|
-
(m) => m.type === "tool_result",
|
|
246
|
-
);
|
|
247
|
-
expect(toolResults.length).toBe(1);
|
|
248
|
-
expect(toolResults[0].actionExecutionId).toBe("valid-id-1");
|
|
249
|
-
|
|
250
|
-
// All other message types should be preserved
|
|
251
|
-
expect(filteredMessages.filter((m) => m.type === "text").length).toBe(1);
|
|
252
|
-
expect(filteredMessages.filter((m) => m.type === "image").length).toBe(1);
|
|
253
|
-
expect(filteredMessages.filter((m) => m.type === "custom").length).toBe(1);
|
|
254
|
-
expect(filteredMessages.filter((m) => m.type === "null").length).toBe(1);
|
|
255
|
-
expect(filteredMessages.filter((m) => m.type === "undefined").length).toBe(
|
|
256
|
-
1,
|
|
257
|
-
);
|
|
258
|
-
});
|
|
259
|
-
});
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
-
import type { AnthropicProviderSettings } from "@ai-sdk/anthropic";
|
|
3
|
-
import { AnthropicAdapter } from "../../../src/service-adapters/anthropic/anthropic-adapter";
|
|
4
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
5
|
-
|
|
6
|
-
// Keys from AnthropicProviderSettings that we forward from the Anthropic SDK client.
|
|
7
|
-
type ForwardedAnthropicKeys = "baseURL" | "apiKey" | "headers" | "fetch";
|
|
8
|
-
|
|
9
|
-
// We don't set `name` or `generateId` — they're provider-internal concerns.
|
|
10
|
-
type ControlledAnthropicKeys = "name" | "generateId";
|
|
11
|
-
|
|
12
|
-
// Compile-time exhaustiveness check: every key in AnthropicProviderSettings
|
|
13
|
-
// must be accounted for. If this line errors, a new key was added.
|
|
14
|
-
type _exhaustive =
|
|
15
|
-
Exclude<
|
|
16
|
-
keyof AnthropicProviderSettings,
|
|
17
|
-
ForwardedAnthropicKeys | ControlledAnthropicKeys
|
|
18
|
-
> extends never
|
|
19
|
-
? true
|
|
20
|
-
: {
|
|
21
|
-
error: "AnthropicProviderSettings has unhandled keys";
|
|
22
|
-
unhandled: Exclude<
|
|
23
|
-
keyof AnthropicProviderSettings,
|
|
24
|
-
ForwardedAnthropicKeys | ControlledAnthropicKeys
|
|
25
|
-
>;
|
|
26
|
-
};
|
|
27
|
-
const _check: _exhaustive = true;
|
|
28
|
-
|
|
29
|
-
const { mockProviderFn, mockCreateAnthropic } = vi.hoisted(() => {
|
|
30
|
-
const mockProviderFn = vi.fn().mockReturnValue({ modelId: "test-model" });
|
|
31
|
-
const mockCreateAnthropic = vi.fn().mockReturnValue(mockProviderFn);
|
|
32
|
-
return { mockProviderFn, mockCreateAnthropic };
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
vi.mock("@ai-sdk/anthropic", async (importOriginal) => {
|
|
36
|
-
const actual = await importOriginal<typeof import("@ai-sdk/anthropic")>();
|
|
37
|
-
return { ...actual, createAnthropic: mockCreateAnthropic };
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
vi.mock("@anthropic-ai/sdk", () => {
|
|
41
|
-
return {
|
|
42
|
-
default: class MockAnthropic {
|
|
43
|
-
baseURL: string;
|
|
44
|
-
apiKey: string;
|
|
45
|
-
_options: Record<string, any>;
|
|
46
|
-
messages = { create: vi.fn() };
|
|
47
|
-
|
|
48
|
-
constructor(opts: any = {}) {
|
|
49
|
-
this.baseURL = opts.baseURL ?? "https://api.anthropic.com/v1";
|
|
50
|
-
this.apiKey = opts.apiKey ?? "default-key";
|
|
51
|
-
this._options = {
|
|
52
|
-
defaultHeaders: opts.defaultHeaders,
|
|
53
|
-
fetch: opts.fetch,
|
|
54
|
-
...opts,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
describe("AnthropicAdapter.getLanguageModel()", () => {
|
|
62
|
-
beforeEach(() => {
|
|
63
|
-
vi.clearAllMocks();
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("forwards all provider-relevant options from the Anthropic SDK client", () => {
|
|
67
|
-
const customFetch = vi.fn();
|
|
68
|
-
const anthropic = new Anthropic({
|
|
69
|
-
apiKey: "sk-ant-test",
|
|
70
|
-
baseURL: "https://proxy.example.com/v1",
|
|
71
|
-
defaultHeaders: { "x-custom": "value" },
|
|
72
|
-
fetch: customFetch,
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const adapter = new AnthropicAdapter({
|
|
76
|
-
anthropic,
|
|
77
|
-
model: "claude-3-5-sonnet-latest",
|
|
78
|
-
});
|
|
79
|
-
adapter.getLanguageModel();
|
|
80
|
-
|
|
81
|
-
expect(mockCreateAnthropic).toHaveBeenCalledOnce();
|
|
82
|
-
const settings = mockCreateAnthropic.mock.calls[0][0];
|
|
83
|
-
|
|
84
|
-
expect(settings.baseURL).toBe("https://proxy.example.com/v1");
|
|
85
|
-
expect(settings.apiKey).toBe("sk-ant-test");
|
|
86
|
-
expect(settings.headers).toEqual({ "x-custom": "value" });
|
|
87
|
-
expect(settings.fetch).toBe(customFetch);
|
|
88
|
-
|
|
89
|
-
expect(mockProviderFn).toHaveBeenCalledWith("claude-3-5-sonnet-latest");
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it("works with default Anthropic config (no custom options)", () => {
|
|
93
|
-
const anthropic = new Anthropic({ apiKey: "sk-ant-default" });
|
|
94
|
-
const adapter = new AnthropicAdapter({ anthropic });
|
|
95
|
-
adapter.getLanguageModel();
|
|
96
|
-
|
|
97
|
-
const settings = mockCreateAnthropic.mock.calls[0][0];
|
|
98
|
-
expect(settings.baseURL).toBe("https://api.anthropic.com/v1");
|
|
99
|
-
expect(settings.apiKey).toBe("sk-ant-default");
|
|
100
|
-
});
|
|
101
|
-
});
|