@copilotkit/runtime 1.54.1 → 1.55.0-next.8
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/.eslintrc.js +4 -4
- package/CHANGELOG.md +125 -113
- package/dist/_virtual/_rolldown/runtime.mjs +25 -1
- package/dist/agent/index.cjs +654 -0
- package/dist/agent/index.cjs.map +1 -0
- package/dist/agent/index.d.cts +263 -0
- package/dist/agent/index.d.cts.map +1 -0
- package/dist/agent/index.d.mts +263 -0
- package/dist/agent/index.d.mts.map +1 -0
- package/dist/agent/index.mjs +646 -0
- package/dist/agent/index.mjs.map +1 -0
- package/dist/graphql/message-conversion/agui-to-gql.cjs.map +1 -1
- package/dist/graphql/message-conversion/agui-to-gql.mjs.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.cjs +2 -2
- package/dist/lib/integrations/nextjs/app-router.cjs.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.mjs +1 -1
- package/dist/lib/integrations/nextjs/app-router.mjs.map +1 -1
- package/dist/lib/integrations/node-http/index.cjs +2 -3
- package/dist/lib/integrations/node-http/index.cjs.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +1 -1
- package/dist/lib/integrations/node-http/index.mjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +2 -2
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +3 -3
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +7 -5
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts +10 -8
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts +10 -8
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +7 -5
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.cjs +2 -2
- package/dist/lib/runtime/telemetry-agent-runner.cjs.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.cts +2 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.cts.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.mts +2 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.mts.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.mjs +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.mjs.map +1 -1
- package/dist/lib/telemetry-client.cjs +1 -1
- package/dist/lib/telemetry-client.mjs +1 -1
- package/dist/package.cjs +21 -4
- package/dist/package.mjs +21 -4
- package/dist/service-adapters/anthropic/anthropic-adapter.d.mts +1 -1
- package/dist/v2/index.cjs +41 -15
- package/dist/v2/index.d.cts +14 -2
- package/dist/v2/index.d.mts +14 -2
- package/dist/v2/index.mjs +13 -4
- package/dist/v2/runtime/endpoints/express-single.cjs +190 -0
- package/dist/v2/runtime/endpoints/express-single.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-single.d.cts +16 -0
- package/dist/v2/runtime/endpoints/express-single.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/express-single.d.mts +16 -0
- package/dist/v2/runtime/endpoints/express-single.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/express-single.mjs +187 -0
- package/dist/v2/runtime/endpoints/express-single.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-utils.cjs +119 -0
- package/dist/v2/runtime/endpoints/express-utils.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-utils.mjs +117 -0
- package/dist/v2/runtime/endpoints/express-utils.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/express.cjs +217 -0
- package/dist/v2/runtime/endpoints/express.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/express.d.cts +16 -0
- package/dist/v2/runtime/endpoints/express.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/express.d.mts +16 -0
- package/dist/v2/runtime/endpoints/express.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/express.mjs +214 -0
- package/dist/v2/runtime/endpoints/express.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/hono-single.cjs +141 -0
- package/dist/v2/runtime/endpoints/hono-single.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/hono-single.d.cts +41 -0
- package/dist/v2/runtime/endpoints/hono-single.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/hono-single.d.mts +41 -0
- package/dist/v2/runtime/endpoints/hono-single.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/hono-single.mjs +140 -0
- package/dist/v2/runtime/endpoints/hono-single.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/hono.cjs +248 -0
- package/dist/v2/runtime/endpoints/hono.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/hono.d.cts +164 -0
- package/dist/v2/runtime/endpoints/hono.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/hono.d.mts +164 -0
- package/dist/v2/runtime/endpoints/hono.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/hono.mjs +247 -0
- package/dist/v2/runtime/endpoints/hono.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/index.d.cts +5 -0
- package/dist/v2/runtime/endpoints/index.d.mts +5 -0
- package/dist/v2/runtime/endpoints/single-route-helpers.cjs +68 -0
- package/dist/v2/runtime/endpoints/single-route-helpers.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/single-route-helpers.mjs +65 -0
- package/dist/v2/runtime/endpoints/single-route-helpers.mjs.map +1 -0
- package/dist/v2/runtime/handlers/get-runtime-info.cjs +51 -0
- package/dist/v2/runtime/handlers/get-runtime-info.cjs.map +1 -0
- package/dist/v2/runtime/handlers/get-runtime-info.mjs +51 -0
- package/dist/v2/runtime/handlers/get-runtime-info.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-connect.cjs +49 -0
- package/dist/v2/runtime/handlers/handle-connect.cjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-connect.mjs +49 -0
- package/dist/v2/runtime/handlers/handle-connect.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-run.cjs +61 -0
- package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-run.mjs +61 -0
- package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-stop.cjs +47 -0
- package/dist/v2/runtime/handlers/handle-stop.cjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-stop.mjs +46 -0
- package/dist/v2/runtime/handlers/handle-stop.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-transcribe.cjs +112 -0
- package/dist/v2/runtime/handlers/handle-transcribe.cjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-transcribe.mjs +111 -0
- package/dist/v2/runtime/handlers/handle-transcribe.mjs.map +1 -0
- package/dist/v2/runtime/handlers/header-utils.cjs +26 -0
- package/dist/v2/runtime/handlers/header-utils.cjs.map +1 -0
- package/dist/v2/runtime/handlers/header-utils.mjs +25 -0
- package/dist/v2/runtime/handlers/header-utils.mjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/connect.cjs +37 -0
- package/dist/v2/runtime/handlers/intelligence/connect.cjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/connect.mjs +37 -0
- package/dist/v2/runtime/handlers/intelligence/connect.mjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/run.cjs +89 -0
- package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/run.mjs +88 -0
- package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/thread-names.cjs +146 -0
- package/dist/v2/runtime/handlers/intelligence/thread-names.cjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/thread-names.mjs +145 -0
- package/dist/v2/runtime/handlers/intelligence/thread-names.mjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/threads.cjs +159 -0
- package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +1 -0
- package/dist/v2/runtime/handlers/intelligence/threads.mjs +154 -0
- package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +74 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +70 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/intelligence-utils.cjs +21 -0
- package/dist/v2/runtime/handlers/shared/intelligence-utils.cjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/intelligence-utils.mjs +20 -0
- package/dist/v2/runtime/handlers/shared/intelligence-utils.mjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/json-response.cjs +12 -0
- package/dist/v2/runtime/handlers/shared/json-response.cjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/json-response.mjs +10 -0
- package/dist/v2/runtime/handlers/shared/json-response.mjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs +20 -0
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs +20 -0
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/sse-response.cjs +69 -0
- package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -0
- package/dist/v2/runtime/handlers/shared/sse-response.mjs +68 -0
- package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -0
- package/dist/v2/runtime/handlers/sse/connect.cjs +18 -0
- package/dist/v2/runtime/handlers/sse/connect.cjs.map +1 -0
- package/dist/v2/runtime/handlers/sse/connect.mjs +18 -0
- package/dist/v2/runtime/handlers/sse/connect.mjs.map +1 -0
- package/dist/v2/runtime/handlers/sse/run.cjs +18 -0
- package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -0
- package/dist/v2/runtime/handlers/sse/run.mjs +18 -0
- package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -0
- package/dist/v2/runtime/index.d.cts +13 -0
- package/dist/v2/runtime/index.d.mts +14 -0
- package/dist/v2/runtime/intelligence-platform/client.cjs +333 -0
- package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -0
- package/dist/v2/runtime/intelligence-platform/client.d.cts +336 -0
- package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/client.d.mts +336 -0
- package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/client.mjs +331 -0
- package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -0
- package/dist/v2/runtime/intelligence-platform/index.d.mts +2 -0
- package/dist/v2/runtime/middleware-sse-parser.cjs +138 -0
- package/dist/v2/runtime/middleware-sse-parser.cjs.map +1 -0
- package/dist/v2/runtime/middleware-sse-parser.d.cts +22 -0
- package/dist/v2/runtime/middleware-sse-parser.d.cts.map +1 -0
- package/dist/v2/runtime/middleware-sse-parser.d.mts +22 -0
- package/dist/v2/runtime/middleware-sse-parser.d.mts.map +1 -0
- package/dist/v2/runtime/middleware-sse-parser.mjs +137 -0
- package/dist/v2/runtime/middleware-sse-parser.mjs.map +1 -0
- package/dist/v2/runtime/middleware.cjs +35 -0
- package/dist/v2/runtime/middleware.cjs.map +1 -0
- package/dist/v2/runtime/middleware.d.cts +32 -0
- package/dist/v2/runtime/middleware.d.cts.map +1 -0
- package/dist/v2/runtime/middleware.d.mts +32 -0
- package/dist/v2/runtime/middleware.d.mts.map +1 -0
- package/dist/v2/runtime/middleware.mjs +33 -0
- package/dist/v2/runtime/middleware.mjs.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.cjs +8 -0
- package/dist/v2/runtime/runner/agent-runner.cjs.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.d.cts +32 -0
- package/dist/v2/runtime/runner/agent-runner.d.cts.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.d.mts +32 -0
- package/dist/v2/runtime/runner/agent-runner.d.mts.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.mjs +7 -0
- package/dist/v2/runtime/runner/agent-runner.mjs.map +1 -0
- package/dist/v2/runtime/runner/in-memory.cjs +223 -0
- package/dist/v2/runtime/runner/in-memory.cjs.map +1 -0
- package/dist/v2/runtime/runner/in-memory.d.cts +15 -0
- package/dist/v2/runtime/runner/in-memory.d.cts.map +1 -0
- package/dist/v2/runtime/runner/in-memory.d.mts +15 -0
- package/dist/v2/runtime/runner/in-memory.d.mts.map +1 -0
- package/dist/v2/runtime/runner/in-memory.mjs +222 -0
- package/dist/v2/runtime/runner/in-memory.mjs.map +1 -0
- package/dist/v2/runtime/runner/index.d.cts +6 -0
- package/dist/v2/runtime/runner/index.d.mts +6 -0
- package/dist/v2/runtime/runner/index.mjs +7 -0
- package/dist/v2/runtime/runner/intelligence.cjs +246 -0
- package/dist/v2/runtime/runner/intelligence.cjs.map +1 -0
- package/dist/v2/runtime/runner/intelligence.d.cts +57 -0
- package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -0
- package/dist/v2/runtime/runner/intelligence.d.mts +57 -0
- package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -0
- package/dist/v2/runtime/runner/intelligence.mjs +245 -0
- package/dist/v2/runtime/runner/intelligence.mjs.map +1 -0
- package/dist/v2/runtime/runtime.cjs +101 -0
- package/dist/v2/runtime/runtime.cjs.map +1 -0
- package/dist/v2/runtime/runtime.d.cts +132 -0
- package/dist/v2/runtime/runtime.d.cts.map +1 -0
- package/dist/v2/runtime/runtime.d.mts +133 -0
- package/dist/v2/runtime/runtime.d.mts.map +1 -0
- package/dist/v2/runtime/runtime.mjs +97 -0
- package/dist/v2/runtime/runtime.mjs.map +1 -0
- package/dist/v2/runtime/telemetry/scarf-client.cjs +32 -0
- package/dist/v2/runtime/telemetry/scarf-client.cjs.map +1 -0
- package/dist/v2/runtime/telemetry/scarf-client.mjs +32 -0
- package/dist/v2/runtime/telemetry/scarf-client.mjs.map +1 -0
- package/dist/v2/runtime/telemetry/telemetry-client.cjs +35 -0
- package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -0
- package/dist/v2/runtime/telemetry/telemetry-client.mjs +35 -0
- package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -0
- package/dist/v2/runtime/transcription-service/transcription-service.cjs +8 -0
- package/dist/v2/runtime/transcription-service/transcription-service.cjs.map +1 -0
- package/dist/v2/runtime/transcription-service/transcription-service.d.cts +15 -0
- package/dist/v2/runtime/transcription-service/transcription-service.d.cts.map +1 -0
- package/dist/v2/runtime/transcription-service/transcription-service.d.mts +15 -0
- package/dist/v2/runtime/transcription-service/transcription-service.d.mts.map +1 -0
- package/dist/v2/runtime/transcription-service/transcription-service.mjs +7 -0
- package/dist/v2/runtime/transcription-service/transcription-service.mjs.map +1 -0
- package/package.json +24 -7
- package/src/agent/__tests__/ai-sdk-v6-compat.test.ts +116 -0
- package/src/agent/__tests__/basic-agent.test.ts +1698 -0
- package/src/agent/__tests__/config-tools-execution.test.ts +516 -0
- package/src/agent/__tests__/mcp-clients.test.ts +260 -0
- package/src/agent/__tests__/property-overrides.test.ts +598 -0
- package/src/agent/__tests__/standard-schema-tools.test.ts +313 -0
- package/src/agent/__tests__/standard-schema-types.test.ts +158 -0
- package/src/agent/__tests__/state-tools.test.ts +436 -0
- package/src/agent/__tests__/test-helpers.ts +193 -0
- package/src/agent/__tests__/utils.test.ts +536 -0
- package/src/agent/__tests__/zod-regression.test.ts +350 -0
- package/src/agent/index.ts +1329 -0
- package/src/graphql/message-conversion/agui-to-gql.test.ts +1 -1
- package/src/graphql/message-conversion/agui-to-gql.ts +1 -1
- package/src/graphql/message-conversion/gql-to-agui.ts +1 -1
- package/src/graphql/message-conversion/roundtrip-conversion.test.ts +1 -1
- package/src/lib/integrations/nextjs/app-router.ts +2 -2
- package/src/lib/integrations/node-http/index.ts +2 -2
- package/src/lib/runtime/copilot-runtime.ts +3 -5
- package/src/lib/runtime/telemetry-agent-runner.ts +1 -1
- package/src/service-adapters/conversion.test.ts +1 -1
- package/src/service-adapters/conversion.ts +1 -28
- package/src/v2/index.ts +5 -2
- package/src/v2/runtime/__tests__/cors-credentials.test.ts +320 -0
- package/src/v2/runtime/__tests__/express-abort-signal.test.ts +25 -0
- package/src/v2/runtime/__tests__/express-body-order.test.ts +76 -0
- package/src/v2/runtime/__tests__/express-single-sse.test.ts +122 -0
- package/src/v2/runtime/__tests__/get-runtime-info.test.ts +141 -0
- package/src/v2/runtime/__tests__/handle-connect.test.ts +423 -0
- package/src/v2/runtime/__tests__/handle-run.test.ts +910 -0
- package/src/v2/runtime/__tests__/handle-threads.test.ts +388 -0
- package/src/v2/runtime/__tests__/handle-transcribe.test.ts +301 -0
- package/src/v2/runtime/__tests__/header-utils.test.ts +88 -0
- package/src/v2/runtime/__tests__/in-process-agent-runner-messages.test.ts +230 -0
- package/src/v2/runtime/__tests__/in-process-agent-runner.test.ts +1030 -0
- package/src/v2/runtime/__tests__/middleware-express.test.ts +206 -0
- package/src/v2/runtime/__tests__/middleware-single-express.test.ts +211 -0
- package/src/v2/runtime/__tests__/middleware-single.test.ts +225 -0
- package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +187 -0
- package/src/v2/runtime/__tests__/middleware.test.ts +251 -0
- package/src/v2/runtime/__tests__/routing-express.test.ts +174 -0
- package/src/v2/runtime/__tests__/routing-single-express.test.ts +168 -0
- package/src/v2/runtime/__tests__/routing-single.test.ts +193 -0
- package/src/v2/runtime/__tests__/routing.test.ts +257 -0
- package/src/v2/runtime/__tests__/runtime.test.ts +123 -0
- package/src/v2/runtime/__tests__/telemetry.test.ts +167 -0
- package/src/v2/runtime/__tests__/thread-names.test.ts +188 -0
- package/src/v2/runtime/endpoints/express-single.ts +231 -0
- package/src/v2/runtime/endpoints/express-utils.ts +182 -0
- package/src/v2/runtime/endpoints/express.ts +275 -0
- package/src/v2/runtime/endpoints/hono-single.ts +212 -0
- package/src/v2/runtime/endpoints/hono.ts +314 -0
- package/src/v2/runtime/endpoints/index.ts +4 -0
- package/src/v2/runtime/endpoints/single-route-helpers.ts +125 -0
- package/src/v2/runtime/express.ts +2 -0
- package/src/v2/runtime/handler.ts +3 -0
- package/src/v2/runtime/handlers/get-runtime-info.ts +79 -0
- package/src/v2/runtime/handlers/handle-connect.ts +76 -0
- package/src/v2/runtime/handlers/handle-run.ts +89 -0
- package/src/v2/runtime/handlers/handle-stop.ts +76 -0
- package/src/v2/runtime/handlers/handle-threads.ts +7 -0
- package/src/v2/runtime/handlers/handle-transcribe.ts +256 -0
- package/src/v2/runtime/handlers/header-utils.ts +24 -0
- package/src/v2/runtime/handlers/intelligence/connect.ts +65 -0
- package/src/v2/runtime/handlers/intelligence/run.ts +152 -0
- package/src/v2/runtime/handlers/intelligence/thread-names.ts +246 -0
- package/src/v2/runtime/handlers/intelligence/threads.ts +233 -0
- package/src/v2/runtime/handlers/shared/agent-utils.ts +136 -0
- package/src/v2/runtime/handlers/shared/intelligence-utils.ts +21 -0
- package/src/v2/runtime/handlers/shared/json-response.ts +6 -0
- package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +25 -0
- package/src/v2/runtime/handlers/shared/sse-response.ts +100 -0
- package/src/v2/runtime/handlers/sse/connect.ts +24 -0
- package/src/v2/runtime/handlers/sse/run.ts +27 -0
- package/src/v2/runtime/index.ts +20 -0
- package/src/v2/runtime/intelligence-platform/__tests__/client.test.ts +605 -0
- package/src/v2/runtime/intelligence-platform/client.ts +659 -0
- package/src/v2/runtime/intelligence-platform/index.ts +10 -0
- package/src/v2/runtime/middleware-sse-parser.ts +200 -0
- package/src/v2/runtime/middleware.ts +115 -0
- package/src/v2/runtime/runner/__tests__/finalize-events.test.ts +109 -0
- package/src/v2/runtime/runner/__tests__/in-memory-runner.e2e.test.ts +775 -0
- package/src/v2/runtime/runner/__tests__/in-memory-runner.test.ts +363 -0
- package/src/v2/runtime/runner/__tests__/intelligence-runner.test.ts +981 -0
- package/src/v2/runtime/runner/agent-runner.ts +36 -0
- package/src/v2/runtime/runner/in-memory.ts +381 -0
- package/src/v2/runtime/runner/index.ts +4 -0
- package/src/v2/runtime/runner/intelligence.ts +429 -0
- package/src/v2/runtime/runtime.ts +260 -0
- package/src/v2/runtime/telemetry/events.ts +35 -0
- package/src/v2/runtime/telemetry/index.ts +7 -0
- package/src/v2/runtime/telemetry/scarf-client.ts +39 -0
- package/src/v2/runtime/telemetry/telemetry-client.ts +70 -0
- package/src/v2/runtime/transcription-service/transcription-service.ts +11 -0
- package/tsconfig.json +9 -2
- package/tsdown.config.ts +1 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { cors } from "hono/cors";
|
|
3
|
+
import { CopilotRuntimeLike } from "../runtime";
|
|
4
|
+
import { telemetry } from "../telemetry";
|
|
5
|
+
import { handleRunAgent } from "../handlers/handle-run";
|
|
6
|
+
import { handleGetRuntimeInfo } from "../handlers/get-runtime-info";
|
|
7
|
+
import { handleTranscribe } from "../handlers/handle-transcribe";
|
|
8
|
+
import { logger, getLicenseWarningHeader } from "@copilotkit/shared";
|
|
9
|
+
import {
|
|
10
|
+
callBeforeRequestMiddleware,
|
|
11
|
+
callAfterRequestMiddleware,
|
|
12
|
+
} from "../middleware";
|
|
13
|
+
import { handleConnectAgent } from "../handlers/handle-connect";
|
|
14
|
+
import { handleStopAgent } from "../handlers/handle-stop";
|
|
15
|
+
import {
|
|
16
|
+
handleListThreads,
|
|
17
|
+
handleSubscribeToThreads,
|
|
18
|
+
handleUpdateThread,
|
|
19
|
+
handleArchiveThread,
|
|
20
|
+
handleDeleteThread,
|
|
21
|
+
} from "../handlers/handle-threads";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* CORS configuration for CopilotKit endpoints.
|
|
25
|
+
* When using credentials (e.g., HTTP-only cookies), you must specify an explicit origin.
|
|
26
|
+
*/
|
|
27
|
+
export interface CopilotEndpointCorsConfig {
|
|
28
|
+
/**
|
|
29
|
+
* Allowed origin(s) for CORS. Can be:
|
|
30
|
+
* - A string: exact origin (e.g., "https://myapp.com")
|
|
31
|
+
* - An array: list of allowed origins
|
|
32
|
+
* - A function: dynamic origin resolution
|
|
33
|
+
*
|
|
34
|
+
* Note: When credentials is true, origin cannot be "*"
|
|
35
|
+
*/
|
|
36
|
+
origin:
|
|
37
|
+
| string
|
|
38
|
+
| string[]
|
|
39
|
+
| ((origin: string, c: any) => string | undefined | null);
|
|
40
|
+
/**
|
|
41
|
+
* Whether to allow credentials (cookies, HTTP authentication).
|
|
42
|
+
* When true, origin must be explicitly specified (not "*").
|
|
43
|
+
*/
|
|
44
|
+
credentials?: boolean;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
interface CopilotEndpointParams {
|
|
48
|
+
runtime: CopilotRuntimeLike;
|
|
49
|
+
basePath: string;
|
|
50
|
+
/**
|
|
51
|
+
* Optional CORS configuration. When not provided, defaults to allowing all origins without credentials.
|
|
52
|
+
* To support HTTP-only cookies, provide cors config with credentials: true and explicit origin.
|
|
53
|
+
*/
|
|
54
|
+
cors?: CopilotEndpointCorsConfig;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Define the context variables type
|
|
58
|
+
type CopilotEndpointContext = {
|
|
59
|
+
Variables: {
|
|
60
|
+
modifiedRequest?: Request;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export function createCopilotEndpoint({
|
|
65
|
+
runtime,
|
|
66
|
+
basePath,
|
|
67
|
+
cors: corsConfig,
|
|
68
|
+
}: CopilotEndpointParams) {
|
|
69
|
+
const app = new Hono<CopilotEndpointContext>();
|
|
70
|
+
|
|
71
|
+
// Fire instance_created telemetry - resolve agents if needed
|
|
72
|
+
Promise.resolve(runtime.agents)
|
|
73
|
+
.then((agents) => {
|
|
74
|
+
telemetry.capture("oss.runtime.instance_created", {
|
|
75
|
+
actionsAmount: 0,
|
|
76
|
+
endpointTypes: [],
|
|
77
|
+
endpointsAmount: 0,
|
|
78
|
+
agentsAmount: Object.keys(agents).length,
|
|
79
|
+
"cloud.api_key_provided": false,
|
|
80
|
+
});
|
|
81
|
+
})
|
|
82
|
+
.catch(() => {
|
|
83
|
+
// Silently fail - telemetry should not break the application
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
return app
|
|
87
|
+
.basePath(basePath)
|
|
88
|
+
.use(
|
|
89
|
+
"*",
|
|
90
|
+
cors({
|
|
91
|
+
origin: corsConfig?.origin ?? "*",
|
|
92
|
+
allowMethods: [
|
|
93
|
+
"GET",
|
|
94
|
+
"HEAD",
|
|
95
|
+
"PUT",
|
|
96
|
+
"POST",
|
|
97
|
+
"DELETE",
|
|
98
|
+
"PATCH",
|
|
99
|
+
"OPTIONS",
|
|
100
|
+
],
|
|
101
|
+
allowHeaders: ["*"],
|
|
102
|
+
credentials: corsConfig?.credentials ?? false,
|
|
103
|
+
}),
|
|
104
|
+
)
|
|
105
|
+
.use("*", async (c, next) => {
|
|
106
|
+
const request = c.req.raw;
|
|
107
|
+
const path = c.req.path;
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
const maybeModifiedRequest = await callBeforeRequestMiddleware({
|
|
111
|
+
runtime,
|
|
112
|
+
request,
|
|
113
|
+
path,
|
|
114
|
+
});
|
|
115
|
+
if (maybeModifiedRequest) {
|
|
116
|
+
c.set("modifiedRequest", maybeModifiedRequest);
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
logger.error(
|
|
120
|
+
{ err: error, url: request.url, path },
|
|
121
|
+
"Error running before request middleware",
|
|
122
|
+
);
|
|
123
|
+
if (error instanceof Response) {
|
|
124
|
+
return error;
|
|
125
|
+
}
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const warning = getLicenseWarningHeader(runtime.licenseChecker);
|
|
130
|
+
if (warning) c.header(warning.key, warning.value);
|
|
131
|
+
|
|
132
|
+
await next();
|
|
133
|
+
})
|
|
134
|
+
.use("*", async (c, next) => {
|
|
135
|
+
await next();
|
|
136
|
+
|
|
137
|
+
const response = c.res.clone();
|
|
138
|
+
const path = c.req.path;
|
|
139
|
+
|
|
140
|
+
// Non-blocking after middleware
|
|
141
|
+
callAfterRequestMiddleware({
|
|
142
|
+
runtime,
|
|
143
|
+
response,
|
|
144
|
+
path,
|
|
145
|
+
}).catch((error) => {
|
|
146
|
+
logger.error(
|
|
147
|
+
{ err: error, url: c.req.url, path },
|
|
148
|
+
"Error running after request middleware",
|
|
149
|
+
);
|
|
150
|
+
});
|
|
151
|
+
})
|
|
152
|
+
.post("/agent/:agentId/run", async (c) => {
|
|
153
|
+
const agentId = c.req.param("agentId");
|
|
154
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
return await handleRunAgent({
|
|
158
|
+
runtime,
|
|
159
|
+
request,
|
|
160
|
+
agentId,
|
|
161
|
+
});
|
|
162
|
+
} catch (error) {
|
|
163
|
+
logger.error(
|
|
164
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
165
|
+
"Error running request handler",
|
|
166
|
+
);
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
.post("/agent/:agentId/connect", async (c) => {
|
|
171
|
+
const agentId = c.req.param("agentId");
|
|
172
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
return await handleConnectAgent({
|
|
176
|
+
runtime,
|
|
177
|
+
request,
|
|
178
|
+
agentId,
|
|
179
|
+
});
|
|
180
|
+
} catch (error) {
|
|
181
|
+
logger.error(
|
|
182
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
183
|
+
"Error running request handler",
|
|
184
|
+
);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
.post("/agent/:agentId/stop/:threadId", async (c) => {
|
|
190
|
+
const agentId = c.req.param("agentId");
|
|
191
|
+
const threadId = c.req.param("threadId");
|
|
192
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
return await handleStopAgent({
|
|
196
|
+
runtime,
|
|
197
|
+
request,
|
|
198
|
+
agentId,
|
|
199
|
+
threadId,
|
|
200
|
+
});
|
|
201
|
+
} catch (error) {
|
|
202
|
+
logger.error(
|
|
203
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
204
|
+
"Error running request handler",
|
|
205
|
+
);
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
.get("/info", async (c) => {
|
|
210
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
211
|
+
|
|
212
|
+
try {
|
|
213
|
+
return await handleGetRuntimeInfo({
|
|
214
|
+
runtime,
|
|
215
|
+
request,
|
|
216
|
+
});
|
|
217
|
+
} catch (error) {
|
|
218
|
+
logger.error(
|
|
219
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
220
|
+
"Error running request handler",
|
|
221
|
+
);
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
})
|
|
225
|
+
.post("/transcribe", async (c) => {
|
|
226
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
227
|
+
|
|
228
|
+
try {
|
|
229
|
+
return await handleTranscribe({
|
|
230
|
+
runtime,
|
|
231
|
+
request,
|
|
232
|
+
});
|
|
233
|
+
} catch (error) {
|
|
234
|
+
logger.error(
|
|
235
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
236
|
+
"Error running request handler",
|
|
237
|
+
);
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
})
|
|
241
|
+
.get("/threads", async (c) => {
|
|
242
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
return await handleListThreads({ runtime, request });
|
|
246
|
+
} catch (error) {
|
|
247
|
+
logger.error(
|
|
248
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
249
|
+
"Error running request handler",
|
|
250
|
+
);
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
})
|
|
254
|
+
.post("/threads/subscribe", async (c) => {
|
|
255
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
256
|
+
|
|
257
|
+
try {
|
|
258
|
+
return await handleSubscribeToThreads({ runtime, request });
|
|
259
|
+
} catch (error) {
|
|
260
|
+
logger.error(
|
|
261
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
262
|
+
"Error running request handler",
|
|
263
|
+
);
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
})
|
|
267
|
+
.patch("/threads/:threadId", async (c) => {
|
|
268
|
+
const threadId = c.req.param("threadId");
|
|
269
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
270
|
+
|
|
271
|
+
try {
|
|
272
|
+
return await handleUpdateThread({ runtime, request, threadId });
|
|
273
|
+
} catch (error) {
|
|
274
|
+
logger.error(
|
|
275
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
276
|
+
"Error running request handler",
|
|
277
|
+
);
|
|
278
|
+
throw error;
|
|
279
|
+
}
|
|
280
|
+
})
|
|
281
|
+
.post("/threads/:threadId/archive", async (c) => {
|
|
282
|
+
const threadId = c.req.param("threadId");
|
|
283
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
284
|
+
|
|
285
|
+
try {
|
|
286
|
+
return await handleArchiveThread({ runtime, request, threadId });
|
|
287
|
+
} catch (error) {
|
|
288
|
+
logger.error(
|
|
289
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
290
|
+
"Error running request handler",
|
|
291
|
+
);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
})
|
|
295
|
+
.delete("/threads/:threadId", async (c) => {
|
|
296
|
+
const threadId = c.req.param("threadId");
|
|
297
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
298
|
+
|
|
299
|
+
try {
|
|
300
|
+
return await handleDeleteThread({ runtime, request, threadId });
|
|
301
|
+
} catch (error) {
|
|
302
|
+
logger.error(
|
|
303
|
+
{ err: error, url: request.url, path: c.req.path },
|
|
304
|
+
"Error running request handler",
|
|
305
|
+
);
|
|
306
|
+
throw error;
|
|
307
|
+
}
|
|
308
|
+
})
|
|
309
|
+
.notFound((c) => {
|
|
310
|
+
return c.json({ error: "Not found" }, 404);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// return app;
|
|
314
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
const METHOD_NAMES = [
|
|
2
|
+
"agent/run",
|
|
3
|
+
"agent/connect",
|
|
4
|
+
"agent/stop",
|
|
5
|
+
"info",
|
|
6
|
+
"transcribe",
|
|
7
|
+
] as const;
|
|
8
|
+
|
|
9
|
+
export type EndpointMethod = (typeof METHOD_NAMES)[number];
|
|
10
|
+
|
|
11
|
+
interface JsonEnvelope {
|
|
12
|
+
method?: string;
|
|
13
|
+
params?: Record<string, unknown>;
|
|
14
|
+
body?: unknown;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface MethodCall {
|
|
18
|
+
method: EndpointMethod;
|
|
19
|
+
params?: Record<string, unknown>;
|
|
20
|
+
body?: unknown;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function parseMethodCall(request: Request): Promise<MethodCall> {
|
|
24
|
+
const contentType = request.headers.get("content-type") || "";
|
|
25
|
+
|
|
26
|
+
if (!contentType.includes("application/json")) {
|
|
27
|
+
throw createResponseError(
|
|
28
|
+
"Single-route endpoint expects JSON payloads",
|
|
29
|
+
415,
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let jsonEnvelope: JsonEnvelope;
|
|
34
|
+
try {
|
|
35
|
+
jsonEnvelope = (await request.clone().json()) as JsonEnvelope;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
throw createResponseError("Invalid JSON payload", 400);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const method = validateMethod(jsonEnvelope.method);
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
method,
|
|
44
|
+
params: jsonEnvelope.params,
|
|
45
|
+
body: jsonEnvelope.body,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function expectString(
|
|
50
|
+
params: Record<string, unknown> | undefined,
|
|
51
|
+
key: string,
|
|
52
|
+
): string {
|
|
53
|
+
const value = params?.[key];
|
|
54
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
throw createResponseError(`Missing or invalid parameter '${key}'`, 400);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function createJsonRequest(base: Request, body: unknown): Request {
|
|
62
|
+
if (body === undefined || body === null) {
|
|
63
|
+
throw createResponseError("Missing request body for JSON handler", 400);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const headers = new Headers(base.headers);
|
|
67
|
+
headers.set("content-type", "application/json");
|
|
68
|
+
headers.delete("content-length");
|
|
69
|
+
|
|
70
|
+
const serializedBody = serializeJsonBody(body);
|
|
71
|
+
|
|
72
|
+
return new Request(base.url, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers,
|
|
75
|
+
body: serializedBody,
|
|
76
|
+
signal: base.signal,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function createResponseError(message: string, status: number): Response {
|
|
81
|
+
return new Response(
|
|
82
|
+
JSON.stringify({
|
|
83
|
+
error: "invalid_request",
|
|
84
|
+
message,
|
|
85
|
+
}),
|
|
86
|
+
{
|
|
87
|
+
status,
|
|
88
|
+
headers: {
|
|
89
|
+
"Content-Type": "application/json",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function validateMethod(method: string | undefined): EndpointMethod {
|
|
96
|
+
if (!method) {
|
|
97
|
+
throw createResponseError("Missing method field", 400);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if ((METHOD_NAMES as readonly string[]).includes(method)) {
|
|
101
|
+
return method as EndpointMethod;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
throw createResponseError(`Unsupported method '${method}'`, 400);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function serializeJsonBody(body: unknown): BodyInit {
|
|
108
|
+
if (typeof body === "string") {
|
|
109
|
+
return body;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (
|
|
113
|
+
body instanceof Blob ||
|
|
114
|
+
body instanceof ArrayBuffer ||
|
|
115
|
+
body instanceof Uint8Array
|
|
116
|
+
) {
|
|
117
|
+
return body;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (body instanceof FormData || body instanceof URLSearchParams) {
|
|
121
|
+
return body;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return JSON.stringify(body);
|
|
125
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CopilotRuntimeLike, isIntelligenceRuntime } from "../runtime";
|
|
2
|
+
import {
|
|
3
|
+
AgentDescription,
|
|
4
|
+
RuntimeInfo,
|
|
5
|
+
type RuntimeLicenseStatus,
|
|
6
|
+
} from "@copilotkit/shared";
|
|
7
|
+
import { VERSION } from "../runtime";
|
|
8
|
+
|
|
9
|
+
function resolveLicenseStatus(
|
|
10
|
+
runtime: CopilotRuntimeLike,
|
|
11
|
+
): RuntimeLicenseStatus {
|
|
12
|
+
if (!runtime.licenseChecker) return "none";
|
|
13
|
+
const status = runtime.licenseChecker.getStatus();
|
|
14
|
+
if (status.warningSeverity === "none") return "valid";
|
|
15
|
+
if (status.error === "expired") return "expired";
|
|
16
|
+
if (status.warningSeverity === "warning") return "expiring";
|
|
17
|
+
if (status.error) return "invalid";
|
|
18
|
+
if (status.warningSeverity === "info") return "none";
|
|
19
|
+
return "unknown";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface HandleGetRuntimeInfoParameters {
|
|
23
|
+
runtime: CopilotRuntimeLike;
|
|
24
|
+
request: Request;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export async function handleGetRuntimeInfo({
|
|
28
|
+
runtime,
|
|
29
|
+
}: HandleGetRuntimeInfoParameters) {
|
|
30
|
+
try {
|
|
31
|
+
const agents = await runtime.agents;
|
|
32
|
+
|
|
33
|
+
const agentsDict = Object.entries(agents).reduce(
|
|
34
|
+
(acc, [name, agent]) => {
|
|
35
|
+
acc[name] = {
|
|
36
|
+
name,
|
|
37
|
+
description: agent.description,
|
|
38
|
+
className: agent.constructor.name,
|
|
39
|
+
};
|
|
40
|
+
return acc;
|
|
41
|
+
},
|
|
42
|
+
{} as Record<string, AgentDescription>,
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const runtimeInfo: RuntimeInfo = {
|
|
46
|
+
version: VERSION,
|
|
47
|
+
agents: agentsDict,
|
|
48
|
+
audioFileTranscriptionEnabled: !!runtime.transcriptionService,
|
|
49
|
+
mode: runtime.mode,
|
|
50
|
+
...(isIntelligenceRuntime(runtime)
|
|
51
|
+
? {
|
|
52
|
+
intelligence: {
|
|
53
|
+
wsUrl: runtime.intelligence.ɵgetClientWsUrl(),
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
: {}),
|
|
57
|
+
a2uiEnabled: !!runtime.a2ui,
|
|
58
|
+
...(isIntelligenceRuntime(runtime)
|
|
59
|
+
? { licenseStatus: resolveLicenseStatus(runtime) }
|
|
60
|
+
: {}),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return new Response(JSON.stringify(runtimeInfo), {
|
|
64
|
+
status: 200,
|
|
65
|
+
headers: { "Content-Type": "application/json" },
|
|
66
|
+
});
|
|
67
|
+
} catch (error) {
|
|
68
|
+
return new Response(
|
|
69
|
+
JSON.stringify({
|
|
70
|
+
error: "Failed to retrieve runtime information",
|
|
71
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
72
|
+
}),
|
|
73
|
+
{
|
|
74
|
+
status: 500,
|
|
75
|
+
headers: { "Content-Type": "application/json" },
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { handleIntelligenceConnect } from "./intelligence/connect";
|
|
2
|
+
import { handleSseConnect } from "./sse/connect";
|
|
3
|
+
import { isIntelligenceRuntime } from "../runtime";
|
|
4
|
+
import { telemetry } from "../telemetry";
|
|
5
|
+
import {
|
|
6
|
+
parseConnectRequest,
|
|
7
|
+
RunAgentParameters as ConnectAgentParameters,
|
|
8
|
+
cloneAgentForRequest,
|
|
9
|
+
} from "./shared/agent-utils";
|
|
10
|
+
|
|
11
|
+
export async function handleConnectAgent({
|
|
12
|
+
runtime,
|
|
13
|
+
request,
|
|
14
|
+
agentId,
|
|
15
|
+
}: ConnectAgentParameters) {
|
|
16
|
+
telemetry.capture("oss.runtime.copilot_request_created", {
|
|
17
|
+
"cloud.guardrails.enabled": false,
|
|
18
|
+
requestType: "connect",
|
|
19
|
+
"cloud.api_key_provided": !!request.headers.get(
|
|
20
|
+
"x-copilotcloud-public-api-key",
|
|
21
|
+
),
|
|
22
|
+
...(request.headers.get("x-copilotcloud-public-api-key")
|
|
23
|
+
? {
|
|
24
|
+
"cloud.public_api_key": request.headers.get(
|
|
25
|
+
"x-copilotcloud-public-api-key",
|
|
26
|
+
)!,
|
|
27
|
+
}
|
|
28
|
+
: {}),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
const agent = await cloneAgentForRequest(runtime, agentId);
|
|
33
|
+
if (agent instanceof Response) {
|
|
34
|
+
return agent;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const connectRequest = await parseConnectRequest(request);
|
|
38
|
+
if (connectRequest instanceof Response) {
|
|
39
|
+
return connectRequest;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (isIntelligenceRuntime(runtime)) {
|
|
43
|
+
return handleIntelligenceConnect({
|
|
44
|
+
runtime,
|
|
45
|
+
request,
|
|
46
|
+
threadId: connectRequest.input.threadId,
|
|
47
|
+
lastSeenEventId: connectRequest.lastSeenEventId,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return handleSseConnect({
|
|
52
|
+
runtime,
|
|
53
|
+
request,
|
|
54
|
+
threadId: connectRequest.input.threadId,
|
|
55
|
+
});
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error("Error running agent:", error);
|
|
58
|
+
console.error(
|
|
59
|
+
"Error stack:",
|
|
60
|
+
error instanceof Error ? error.stack : "No stack trace",
|
|
61
|
+
);
|
|
62
|
+
console.error("Error details:", {
|
|
63
|
+
name: error instanceof Error ? error.name : "Unknown",
|
|
64
|
+
message: error instanceof Error ? error.message : String(error),
|
|
65
|
+
cause: error instanceof Error ? error.cause : undefined,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
return Response.json(
|
|
69
|
+
{
|
|
70
|
+
error: "Failed to run agent",
|
|
71
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
72
|
+
},
|
|
73
|
+
{ status: 500 },
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { isIntelligenceRuntime } from "../runtime";
|
|
2
|
+
import { telemetry } from "../telemetry";
|
|
3
|
+
import {
|
|
4
|
+
cloneAgentForRequest,
|
|
5
|
+
configureAgentForRequest,
|
|
6
|
+
parseRunRequest,
|
|
7
|
+
RunAgentParameters,
|
|
8
|
+
} from "./shared/agent-utils";
|
|
9
|
+
import { handleIntelligenceRun } from "./intelligence/run";
|
|
10
|
+
import { handleSseRun } from "./sse/run";
|
|
11
|
+
|
|
12
|
+
export async function handleRunAgent({
|
|
13
|
+
runtime,
|
|
14
|
+
request,
|
|
15
|
+
agentId,
|
|
16
|
+
}: RunAgentParameters) {
|
|
17
|
+
telemetry.capture("oss.runtime.copilot_request_created", {
|
|
18
|
+
"cloud.guardrails.enabled": false,
|
|
19
|
+
requestType: "run",
|
|
20
|
+
"cloud.api_key_provided": !!request.headers.get(
|
|
21
|
+
"x-copilotcloud-public-api-key",
|
|
22
|
+
),
|
|
23
|
+
...(request.headers.get("x-copilotcloud-public-api-key")
|
|
24
|
+
? {
|
|
25
|
+
"cloud.public_api_key": request.headers.get(
|
|
26
|
+
"x-copilotcloud-public-api-key",
|
|
27
|
+
)!,
|
|
28
|
+
}
|
|
29
|
+
: {}),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
try {
|
|
33
|
+
const agent = await cloneAgentForRequest(runtime, agentId);
|
|
34
|
+
if (agent instanceof Response) {
|
|
35
|
+
return agent;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
configureAgentForRequest({ runtime, request, agentId, agent });
|
|
39
|
+
|
|
40
|
+
if (
|
|
41
|
+
runtime.licenseChecker &&
|
|
42
|
+
!runtime.licenseChecker.checkFeature("agents")
|
|
43
|
+
) {
|
|
44
|
+
console.warn(
|
|
45
|
+
'[CopilotKit Runtime] Warning: "agents" feature is not licensed. Visit copilotkit.ai/pricing',
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const input = await parseRunRequest(request);
|
|
50
|
+
if (input instanceof Response) {
|
|
51
|
+
return input;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
agent.setMessages(input.messages);
|
|
55
|
+
agent.setState(input.state);
|
|
56
|
+
agent.threadId = input.threadId;
|
|
57
|
+
|
|
58
|
+
if (isIntelligenceRuntime(runtime)) {
|
|
59
|
+
return handleIntelligenceRun({
|
|
60
|
+
runtime,
|
|
61
|
+
request,
|
|
62
|
+
agentId,
|
|
63
|
+
agent,
|
|
64
|
+
input,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return handleSseRun({ runtime, request, agent, input });
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error("Error running agent:", error);
|
|
71
|
+
console.error(
|
|
72
|
+
"Error stack:",
|
|
73
|
+
error instanceof Error ? error.stack : "No stack trace",
|
|
74
|
+
);
|
|
75
|
+
console.error("Error details:", {
|
|
76
|
+
name: error instanceof Error ? error.name : "Unknown",
|
|
77
|
+
message: error instanceof Error ? error.message : String(error),
|
|
78
|
+
cause: error instanceof Error ? error.cause : undefined,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
return Response.json(
|
|
82
|
+
{
|
|
83
|
+
error: "Failed to run agent",
|
|
84
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
85
|
+
},
|
|
86
|
+
{ status: 500 },
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|