@copilotkit/runtime 1.54.1 → 1.55.0-next.7
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 +113 -113
- package/dist/_virtual/_rolldown/runtime.mjs +25 -1
- package/dist/agent/index.cjs +643 -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 +635 -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 +1248 -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 +178 -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 +1305 -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,217 @@
|
|
|
1
|
+
require("reflect-metadata");
|
|
2
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
const require_telemetry_client = require('../telemetry/telemetry-client.cjs');
|
|
4
|
+
const require_handle_run = require('../handlers/handle-run.cjs');
|
|
5
|
+
const require_get_runtime_info = require('../handlers/get-runtime-info.cjs');
|
|
6
|
+
const require_handle_transcribe = require('../handlers/handle-transcribe.cjs');
|
|
7
|
+
const require_middleware = require('../middleware.cjs');
|
|
8
|
+
const require_handle_connect = require('../handlers/handle-connect.cjs');
|
|
9
|
+
const require_handle_stop = require('../handlers/handle-stop.cjs');
|
|
10
|
+
const require_threads = require('../handlers/intelligence/threads.cjs');
|
|
11
|
+
const require_express_utils = require('./express-utils.cjs');
|
|
12
|
+
let _copilotkit_shared = require("@copilotkit/shared");
|
|
13
|
+
let express = require("express");
|
|
14
|
+
express = require_runtime.__toESM(express);
|
|
15
|
+
let cors = require("cors");
|
|
16
|
+
cors = require_runtime.__toESM(cors);
|
|
17
|
+
|
|
18
|
+
//#region src/v2/runtime/endpoints/express.ts
|
|
19
|
+
function createCopilotEndpointExpress({ runtime, basePath }) {
|
|
20
|
+
const router = express.default.Router();
|
|
21
|
+
const normalizedBase = normalizeBasePath(basePath);
|
|
22
|
+
Promise.resolve(runtime.agents).then((agents) => {
|
|
23
|
+
require_telemetry_client.default.capture("oss.runtime.instance_created", {
|
|
24
|
+
actionsAmount: 0,
|
|
25
|
+
endpointTypes: [],
|
|
26
|
+
endpointsAmount: 0,
|
|
27
|
+
agentsAmount: Object.keys(agents).length,
|
|
28
|
+
"cloud.api_key_provided": false
|
|
29
|
+
});
|
|
30
|
+
}).catch(() => {});
|
|
31
|
+
router.use((0, cors.default)({
|
|
32
|
+
origin: "*",
|
|
33
|
+
methods: [
|
|
34
|
+
"GET",
|
|
35
|
+
"HEAD",
|
|
36
|
+
"PUT",
|
|
37
|
+
"POST",
|
|
38
|
+
"DELETE",
|
|
39
|
+
"PATCH",
|
|
40
|
+
"OPTIONS"
|
|
41
|
+
],
|
|
42
|
+
allowedHeaders: ["*"]
|
|
43
|
+
}));
|
|
44
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/run"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
45
|
+
const agentId = req.params.agentId;
|
|
46
|
+
return require_handle_run.handleRunAgent({
|
|
47
|
+
runtime,
|
|
48
|
+
request,
|
|
49
|
+
agentId
|
|
50
|
+
});
|
|
51
|
+
}));
|
|
52
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/connect"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
53
|
+
const agentId = req.params.agentId;
|
|
54
|
+
return require_handle_connect.handleConnectAgent({
|
|
55
|
+
runtime,
|
|
56
|
+
request,
|
|
57
|
+
agentId
|
|
58
|
+
});
|
|
59
|
+
}));
|
|
60
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/stop/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
61
|
+
const agentId = req.params.agentId;
|
|
62
|
+
const threadId = req.params.threadId;
|
|
63
|
+
return require_handle_stop.handleStopAgent({
|
|
64
|
+
runtime,
|
|
65
|
+
request,
|
|
66
|
+
agentId,
|
|
67
|
+
threadId
|
|
68
|
+
});
|
|
69
|
+
}));
|
|
70
|
+
router.get(joinPath(normalizedBase, "/info"), createRouteHandler(runtime, async ({ request }) => {
|
|
71
|
+
return require_get_runtime_info.handleGetRuntimeInfo({
|
|
72
|
+
runtime,
|
|
73
|
+
request
|
|
74
|
+
});
|
|
75
|
+
}));
|
|
76
|
+
router.post(joinPath(normalizedBase, "/transcribe"), createRouteHandler(runtime, async ({ request }) => {
|
|
77
|
+
return require_handle_transcribe.handleTranscribe({
|
|
78
|
+
runtime,
|
|
79
|
+
request
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
router.get(joinPath(normalizedBase, "/threads"), createRouteHandler(runtime, async ({ request }) => {
|
|
83
|
+
return require_threads.handleListThreads({
|
|
84
|
+
runtime,
|
|
85
|
+
request
|
|
86
|
+
});
|
|
87
|
+
}));
|
|
88
|
+
router.post(joinPath(normalizedBase, "/threads/subscribe"), createRouteHandler(runtime, async ({ request }) => {
|
|
89
|
+
return require_threads.handleSubscribeToThreads({
|
|
90
|
+
runtime,
|
|
91
|
+
request
|
|
92
|
+
});
|
|
93
|
+
}));
|
|
94
|
+
router.patch(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
95
|
+
const threadId = req.params.threadId;
|
|
96
|
+
return require_threads.handleUpdateThread({
|
|
97
|
+
runtime,
|
|
98
|
+
request,
|
|
99
|
+
threadId
|
|
100
|
+
});
|
|
101
|
+
}));
|
|
102
|
+
router.post(joinPath(normalizedBase, "/threads/:threadId/archive"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
103
|
+
const threadId = req.params.threadId;
|
|
104
|
+
return require_threads.handleArchiveThread({
|
|
105
|
+
runtime,
|
|
106
|
+
request,
|
|
107
|
+
threadId
|
|
108
|
+
});
|
|
109
|
+
}));
|
|
110
|
+
router.delete(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
111
|
+
const threadId = req.params.threadId;
|
|
112
|
+
return require_threads.handleDeleteThread({
|
|
113
|
+
runtime,
|
|
114
|
+
request,
|
|
115
|
+
threadId
|
|
116
|
+
});
|
|
117
|
+
}));
|
|
118
|
+
router.use(joinPath(normalizedBase, "*"), (req, res) => {
|
|
119
|
+
res.status(404).json({ error: "Not found" });
|
|
120
|
+
});
|
|
121
|
+
return router;
|
|
122
|
+
}
|
|
123
|
+
function createRouteHandler(runtime, factory) {
|
|
124
|
+
return async (req, res, next) => {
|
|
125
|
+
const path = req.originalUrl ?? req.path;
|
|
126
|
+
let request = require_express_utils.createFetchRequestFromExpress(req);
|
|
127
|
+
const warning = (0, _copilotkit_shared.getLicenseWarningHeader)(runtime.licenseChecker);
|
|
128
|
+
if (warning) res.setHeader(warning.key, warning.value);
|
|
129
|
+
try {
|
|
130
|
+
const maybeModifiedRequest = await require_middleware.callBeforeRequestMiddleware({
|
|
131
|
+
runtime,
|
|
132
|
+
request,
|
|
133
|
+
path
|
|
134
|
+
});
|
|
135
|
+
if (maybeModifiedRequest) request = maybeModifiedRequest;
|
|
136
|
+
} catch (error) {
|
|
137
|
+
_copilotkit_shared.logger.error({
|
|
138
|
+
err: error,
|
|
139
|
+
url: request.url,
|
|
140
|
+
path
|
|
141
|
+
}, "Error running before request middleware");
|
|
142
|
+
if (error instanceof Response) {
|
|
143
|
+
try {
|
|
144
|
+
await require_express_utils.sendFetchResponse(res, error);
|
|
145
|
+
} catch (streamError) {
|
|
146
|
+
next(streamError);
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
next(error);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const response = await factory({
|
|
155
|
+
request,
|
|
156
|
+
req
|
|
157
|
+
});
|
|
158
|
+
const responseForMiddleware = response.clone();
|
|
159
|
+
await require_express_utils.sendFetchResponse(res, response);
|
|
160
|
+
require_middleware.callAfterRequestMiddleware({
|
|
161
|
+
runtime,
|
|
162
|
+
response: responseForMiddleware,
|
|
163
|
+
path
|
|
164
|
+
}).catch((error) => {
|
|
165
|
+
_copilotkit_shared.logger.error({
|
|
166
|
+
err: error,
|
|
167
|
+
url: req.originalUrl ?? req.url,
|
|
168
|
+
path
|
|
169
|
+
}, "Error running after request middleware");
|
|
170
|
+
});
|
|
171
|
+
} catch (error) {
|
|
172
|
+
if (error instanceof Response) {
|
|
173
|
+
const errorResponseForMiddleware = error.clone();
|
|
174
|
+
try {
|
|
175
|
+
await require_express_utils.sendFetchResponse(res, error);
|
|
176
|
+
} catch (streamError) {
|
|
177
|
+
next(streamError);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
require_middleware.callAfterRequestMiddleware({
|
|
181
|
+
runtime,
|
|
182
|
+
response: errorResponseForMiddleware,
|
|
183
|
+
path
|
|
184
|
+
}).catch((mwError) => {
|
|
185
|
+
_copilotkit_shared.logger.error({
|
|
186
|
+
err: mwError,
|
|
187
|
+
url: req.originalUrl ?? req.url,
|
|
188
|
+
path
|
|
189
|
+
}, "Error running after request middleware");
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
_copilotkit_shared.logger.error({
|
|
194
|
+
err: error,
|
|
195
|
+
url: request.url,
|
|
196
|
+
path
|
|
197
|
+
}, "Error running request handler");
|
|
198
|
+
next(error);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function normalizeBasePath(path) {
|
|
203
|
+
if (!path) throw new Error("basePath must be provided for Express endpoint");
|
|
204
|
+
if (!path.startsWith("/")) return `/${path}`;
|
|
205
|
+
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
|
|
206
|
+
return path;
|
|
207
|
+
}
|
|
208
|
+
function joinPath(basePath, suffix) {
|
|
209
|
+
if (basePath === "/") return suffix.startsWith("/") ? suffix : `/${suffix}`;
|
|
210
|
+
if (!suffix) return basePath;
|
|
211
|
+
if (suffix === "*") return `${basePath}/*`;
|
|
212
|
+
return `${basePath}${suffix.startsWith("/") ? suffix : `/${suffix}`}`;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
//#endregion
|
|
216
|
+
exports.createCopilotEndpointExpress = createCopilotEndpointExpress;
|
|
217
|
+
//# sourceMappingURL=express.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.cjs","names":["handleRunAgent","handleConnectAgent","handleStopAgent","handleGetRuntimeInfo","handleTranscribe","handleListThreads","handleSubscribeToThreads","handleUpdateThread","handleArchiveThread","handleDeleteThread","createFetchRequestFromExpress","callBeforeRequestMiddleware","sendFetchResponse"],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"sourcesContent":["import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntimeLike } from \"../runtime\";\nimport { telemetry } from \"../telemetry\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport {\n handleListThreads,\n handleSubscribeToThreads,\n handleUpdateThread,\n handleArchiveThread,\n handleDeleteThread,\n} from \"../handlers/handle-threads\";\nimport { logger, getLicenseWarningHeader } from \"@copilotkit/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createFetchRequestFromExpress,\n sendFetchResponse,\n} from \"./express-utils\";\n\ninterface CopilotExpressEndpointParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n}\n\nexport function createCopilotEndpointExpress({\n runtime,\n basePath,\n}: CopilotExpressEndpointParams): Router {\n const router = express.Router();\n const normalizedBase = normalizeBasePath(basePath);\n\n // Fire instance_created telemetry - resolve agents if needed\n Promise.resolve(runtime.agents)\n .then((agents) => {\n telemetry.capture(\"oss.runtime.instance_created\", {\n actionsAmount: 0,\n endpointTypes: [],\n endpointsAmount: 0,\n agentsAmount: Object.keys(agents).length,\n \"cloud.api_key_provided\": false,\n });\n })\n .catch(() => {\n // Silently fail - telemetry should not break the application\n });\n\n router.use(\n cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/run\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleRunAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/connect\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleConnectAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/stop/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n const threadId = req.params.threadId as string;\n return handleStopAgent({ runtime, request, agentId, threadId });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/info\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleGetRuntimeInfo({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/transcribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleTranscribe({ runtime, request });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/threads\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleListThreads({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/subscribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleSubscribeToThreads({ runtime, request });\n }),\n );\n\n router.patch(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleUpdateThread({ runtime, request, threadId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/:threadId/archive\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleArchiveThread({ runtime, request, threadId });\n }),\n );\n\n router.delete(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleDeleteThread({ runtime, request, threadId });\n }),\n );\n\n router.use(joinPath(normalizedBase, \"*\"), (req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\ntype RouteHandlerContext = {\n request: Request;\n req: ExpressRequest;\n};\n\ntype RouteHandlerFactory = (ctx: RouteHandlerContext) => Promise<Response>;\n\nfunction createRouteHandler(\n runtime: CopilotRuntimeLike,\n factory: RouteHandlerFactory,\n) {\n return async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n\n const warning = getLicenseWarningHeader(runtime.licenseChecker);\n if (warning) res.setHeader(warning.key, warning.value);\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n try {\n const response = await factory({ request, req });\n const responseForMiddleware = response.clone();\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({\n runtime,\n response: responseForMiddleware,\n path,\n }).catch((error) => {\n logger.error(\n { err: error, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n } catch (error) {\n if (error instanceof Response) {\n const errorResponseForMiddleware = error.clone();\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({\n runtime,\n response: errorResponseForMiddleware,\n path,\n }).catch((mwError) => {\n logger.error(\n { err: mwError, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n return;\n }\n logger.error(\n { err: error, url: request.url, path },\n \"Error running request handler\",\n );\n next(error);\n }\n };\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n\nfunction joinPath(basePath: string, suffix: string): string {\n if (basePath === \"/\") {\n return suffix.startsWith(\"/\") ? suffix : `/${suffix}`;\n }\n\n if (!suffix) {\n return basePath;\n }\n\n if (suffix === \"*\") {\n return `${basePath}/*`;\n }\n\n return `${basePath}${suffix.startsWith(\"/\") ? suffix : `/${suffix}`}`;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
import { CopilotRuntimeLike } from "../runtime.cjs";
|
|
3
|
+
import { Router } from "express";
|
|
4
|
+
|
|
5
|
+
//#region src/v2/runtime/endpoints/express.d.ts
|
|
6
|
+
interface CopilotExpressEndpointParams {
|
|
7
|
+
runtime: CopilotRuntimeLike;
|
|
8
|
+
basePath: string;
|
|
9
|
+
}
|
|
10
|
+
declare function createCopilotEndpointExpress({
|
|
11
|
+
runtime,
|
|
12
|
+
basePath
|
|
13
|
+
}: CopilotExpressEndpointParams): Router;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { createCopilotEndpointExpress };
|
|
16
|
+
//# sourceMappingURL=express.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.d.cts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":";;;;;UAiCU,4BAAA;EACR,OAAA,EAAS,kBAAA;EACT,QAAA;AAAA;AAAA,iBAGc,4BAAA,CAAA;EACd,OAAA;EACA;AAAA,GACC,4BAAA,GAA+B,MAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { CopilotRuntimeLike } from "../runtime.mjs";
|
|
3
|
+
import { Router } from "express";
|
|
4
|
+
|
|
5
|
+
//#region src/v2/runtime/endpoints/express.d.ts
|
|
6
|
+
interface CopilotExpressEndpointParams {
|
|
7
|
+
runtime: CopilotRuntimeLike;
|
|
8
|
+
basePath: string;
|
|
9
|
+
}
|
|
10
|
+
declare function createCopilotEndpointExpress({
|
|
11
|
+
runtime,
|
|
12
|
+
basePath
|
|
13
|
+
}: CopilotExpressEndpointParams): Router;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { createCopilotEndpointExpress };
|
|
16
|
+
//# sourceMappingURL=express.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":";;;;;UAiCU,4BAAA;EACR,OAAA,EAAS,kBAAA;EACT,QAAA;AAAA;AAAA,iBAGc,4BAAA,CAAA;EACd,OAAA;EACA;AAAA,GACC,4BAAA,GAA+B,MAAA"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import telemetry from "../telemetry/telemetry-client.mjs";
|
|
3
|
+
import { handleRunAgent } from "../handlers/handle-run.mjs";
|
|
4
|
+
import { handleGetRuntimeInfo } from "../handlers/get-runtime-info.mjs";
|
|
5
|
+
import { handleTranscribe } from "../handlers/handle-transcribe.mjs";
|
|
6
|
+
import { callAfterRequestMiddleware, callBeforeRequestMiddleware } from "../middleware.mjs";
|
|
7
|
+
import { handleConnectAgent } from "../handlers/handle-connect.mjs";
|
|
8
|
+
import { handleStopAgent } from "../handlers/handle-stop.mjs";
|
|
9
|
+
import { handleArchiveThread, handleDeleteThread, handleListThreads, handleSubscribeToThreads, handleUpdateThread } from "../handlers/intelligence/threads.mjs";
|
|
10
|
+
import { createFetchRequestFromExpress, sendFetchResponse } from "./express-utils.mjs";
|
|
11
|
+
import { getLicenseWarningHeader, logger } from "@copilotkit/shared";
|
|
12
|
+
import express from "express";
|
|
13
|
+
import cors from "cors";
|
|
14
|
+
|
|
15
|
+
//#region src/v2/runtime/endpoints/express.ts
|
|
16
|
+
function createCopilotEndpointExpress({ runtime, basePath }) {
|
|
17
|
+
const router = express.Router();
|
|
18
|
+
const normalizedBase = normalizeBasePath(basePath);
|
|
19
|
+
Promise.resolve(runtime.agents).then((agents) => {
|
|
20
|
+
telemetry.capture("oss.runtime.instance_created", {
|
|
21
|
+
actionsAmount: 0,
|
|
22
|
+
endpointTypes: [],
|
|
23
|
+
endpointsAmount: 0,
|
|
24
|
+
agentsAmount: Object.keys(agents).length,
|
|
25
|
+
"cloud.api_key_provided": false
|
|
26
|
+
});
|
|
27
|
+
}).catch(() => {});
|
|
28
|
+
router.use(cors({
|
|
29
|
+
origin: "*",
|
|
30
|
+
methods: [
|
|
31
|
+
"GET",
|
|
32
|
+
"HEAD",
|
|
33
|
+
"PUT",
|
|
34
|
+
"POST",
|
|
35
|
+
"DELETE",
|
|
36
|
+
"PATCH",
|
|
37
|
+
"OPTIONS"
|
|
38
|
+
],
|
|
39
|
+
allowedHeaders: ["*"]
|
|
40
|
+
}));
|
|
41
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/run"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
42
|
+
const agentId = req.params.agentId;
|
|
43
|
+
return handleRunAgent({
|
|
44
|
+
runtime,
|
|
45
|
+
request,
|
|
46
|
+
agentId
|
|
47
|
+
});
|
|
48
|
+
}));
|
|
49
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/connect"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
50
|
+
const agentId = req.params.agentId;
|
|
51
|
+
return handleConnectAgent({
|
|
52
|
+
runtime,
|
|
53
|
+
request,
|
|
54
|
+
agentId
|
|
55
|
+
});
|
|
56
|
+
}));
|
|
57
|
+
router.post(joinPath(normalizedBase, "/agent/:agentId/stop/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
58
|
+
const agentId = req.params.agentId;
|
|
59
|
+
const threadId = req.params.threadId;
|
|
60
|
+
return handleStopAgent({
|
|
61
|
+
runtime,
|
|
62
|
+
request,
|
|
63
|
+
agentId,
|
|
64
|
+
threadId
|
|
65
|
+
});
|
|
66
|
+
}));
|
|
67
|
+
router.get(joinPath(normalizedBase, "/info"), createRouteHandler(runtime, async ({ request }) => {
|
|
68
|
+
return handleGetRuntimeInfo({
|
|
69
|
+
runtime,
|
|
70
|
+
request
|
|
71
|
+
});
|
|
72
|
+
}));
|
|
73
|
+
router.post(joinPath(normalizedBase, "/transcribe"), createRouteHandler(runtime, async ({ request }) => {
|
|
74
|
+
return handleTranscribe({
|
|
75
|
+
runtime,
|
|
76
|
+
request
|
|
77
|
+
});
|
|
78
|
+
}));
|
|
79
|
+
router.get(joinPath(normalizedBase, "/threads"), createRouteHandler(runtime, async ({ request }) => {
|
|
80
|
+
return handleListThreads({
|
|
81
|
+
runtime,
|
|
82
|
+
request
|
|
83
|
+
});
|
|
84
|
+
}));
|
|
85
|
+
router.post(joinPath(normalizedBase, "/threads/subscribe"), createRouteHandler(runtime, async ({ request }) => {
|
|
86
|
+
return handleSubscribeToThreads({
|
|
87
|
+
runtime,
|
|
88
|
+
request
|
|
89
|
+
});
|
|
90
|
+
}));
|
|
91
|
+
router.patch(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
92
|
+
const threadId = req.params.threadId;
|
|
93
|
+
return handleUpdateThread({
|
|
94
|
+
runtime,
|
|
95
|
+
request,
|
|
96
|
+
threadId
|
|
97
|
+
});
|
|
98
|
+
}));
|
|
99
|
+
router.post(joinPath(normalizedBase, "/threads/:threadId/archive"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
100
|
+
const threadId = req.params.threadId;
|
|
101
|
+
return handleArchiveThread({
|
|
102
|
+
runtime,
|
|
103
|
+
request,
|
|
104
|
+
threadId
|
|
105
|
+
});
|
|
106
|
+
}));
|
|
107
|
+
router.delete(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
|
|
108
|
+
const threadId = req.params.threadId;
|
|
109
|
+
return handleDeleteThread({
|
|
110
|
+
runtime,
|
|
111
|
+
request,
|
|
112
|
+
threadId
|
|
113
|
+
});
|
|
114
|
+
}));
|
|
115
|
+
router.use(joinPath(normalizedBase, "*"), (req, res) => {
|
|
116
|
+
res.status(404).json({ error: "Not found" });
|
|
117
|
+
});
|
|
118
|
+
return router;
|
|
119
|
+
}
|
|
120
|
+
function createRouteHandler(runtime, factory) {
|
|
121
|
+
return async (req, res, next) => {
|
|
122
|
+
const path = req.originalUrl ?? req.path;
|
|
123
|
+
let request = createFetchRequestFromExpress(req);
|
|
124
|
+
const warning = getLicenseWarningHeader(runtime.licenseChecker);
|
|
125
|
+
if (warning) res.setHeader(warning.key, warning.value);
|
|
126
|
+
try {
|
|
127
|
+
const maybeModifiedRequest = await callBeforeRequestMiddleware({
|
|
128
|
+
runtime,
|
|
129
|
+
request,
|
|
130
|
+
path
|
|
131
|
+
});
|
|
132
|
+
if (maybeModifiedRequest) request = maybeModifiedRequest;
|
|
133
|
+
} catch (error) {
|
|
134
|
+
logger.error({
|
|
135
|
+
err: error,
|
|
136
|
+
url: request.url,
|
|
137
|
+
path
|
|
138
|
+
}, "Error running before request middleware");
|
|
139
|
+
if (error instanceof Response) {
|
|
140
|
+
try {
|
|
141
|
+
await sendFetchResponse(res, error);
|
|
142
|
+
} catch (streamError) {
|
|
143
|
+
next(streamError);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
next(error);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const response = await factory({
|
|
152
|
+
request,
|
|
153
|
+
req
|
|
154
|
+
});
|
|
155
|
+
const responseForMiddleware = response.clone();
|
|
156
|
+
await sendFetchResponse(res, response);
|
|
157
|
+
callAfterRequestMiddleware({
|
|
158
|
+
runtime,
|
|
159
|
+
response: responseForMiddleware,
|
|
160
|
+
path
|
|
161
|
+
}).catch((error) => {
|
|
162
|
+
logger.error({
|
|
163
|
+
err: error,
|
|
164
|
+
url: req.originalUrl ?? req.url,
|
|
165
|
+
path
|
|
166
|
+
}, "Error running after request middleware");
|
|
167
|
+
});
|
|
168
|
+
} catch (error) {
|
|
169
|
+
if (error instanceof Response) {
|
|
170
|
+
const errorResponseForMiddleware = error.clone();
|
|
171
|
+
try {
|
|
172
|
+
await sendFetchResponse(res, error);
|
|
173
|
+
} catch (streamError) {
|
|
174
|
+
next(streamError);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
callAfterRequestMiddleware({
|
|
178
|
+
runtime,
|
|
179
|
+
response: errorResponseForMiddleware,
|
|
180
|
+
path
|
|
181
|
+
}).catch((mwError) => {
|
|
182
|
+
logger.error({
|
|
183
|
+
err: mwError,
|
|
184
|
+
url: req.originalUrl ?? req.url,
|
|
185
|
+
path
|
|
186
|
+
}, "Error running after request middleware");
|
|
187
|
+
});
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
logger.error({
|
|
191
|
+
err: error,
|
|
192
|
+
url: request.url,
|
|
193
|
+
path
|
|
194
|
+
}, "Error running request handler");
|
|
195
|
+
next(error);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function normalizeBasePath(path) {
|
|
200
|
+
if (!path) throw new Error("basePath must be provided for Express endpoint");
|
|
201
|
+
if (!path.startsWith("/")) return `/${path}`;
|
|
202
|
+
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
|
|
203
|
+
return path;
|
|
204
|
+
}
|
|
205
|
+
function joinPath(basePath, suffix) {
|
|
206
|
+
if (basePath === "/") return suffix.startsWith("/") ? suffix : `/${suffix}`;
|
|
207
|
+
if (!suffix) return basePath;
|
|
208
|
+
if (suffix === "*") return `${basePath}/*`;
|
|
209
|
+
return `${basePath}${suffix.startsWith("/") ? suffix : `/${suffix}`}`;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
//#endregion
|
|
213
|
+
export { createCopilotEndpointExpress };
|
|
214
|
+
//# sourceMappingURL=express.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.mjs","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"sourcesContent":["import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntimeLike } from \"../runtime\";\nimport { telemetry } from \"../telemetry\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport {\n handleListThreads,\n handleSubscribeToThreads,\n handleUpdateThread,\n handleArchiveThread,\n handleDeleteThread,\n} from \"../handlers/handle-threads\";\nimport { logger, getLicenseWarningHeader } from \"@copilotkit/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createFetchRequestFromExpress,\n sendFetchResponse,\n} from \"./express-utils\";\n\ninterface CopilotExpressEndpointParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n}\n\nexport function createCopilotEndpointExpress({\n runtime,\n basePath,\n}: CopilotExpressEndpointParams): Router {\n const router = express.Router();\n const normalizedBase = normalizeBasePath(basePath);\n\n // Fire instance_created telemetry - resolve agents if needed\n Promise.resolve(runtime.agents)\n .then((agents) => {\n telemetry.capture(\"oss.runtime.instance_created\", {\n actionsAmount: 0,\n endpointTypes: [],\n endpointsAmount: 0,\n agentsAmount: Object.keys(agents).length,\n \"cloud.api_key_provided\": false,\n });\n })\n .catch(() => {\n // Silently fail - telemetry should not break the application\n });\n\n router.use(\n cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/run\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleRunAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/connect\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleConnectAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/stop/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n const threadId = req.params.threadId as string;\n return handleStopAgent({ runtime, request, agentId, threadId });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/info\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleGetRuntimeInfo({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/transcribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleTranscribe({ runtime, request });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/threads\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleListThreads({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/subscribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleSubscribeToThreads({ runtime, request });\n }),\n );\n\n router.patch(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleUpdateThread({ runtime, request, threadId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/:threadId/archive\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleArchiveThread({ runtime, request, threadId });\n }),\n );\n\n router.delete(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleDeleteThread({ runtime, request, threadId });\n }),\n );\n\n router.use(joinPath(normalizedBase, \"*\"), (req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\ntype RouteHandlerContext = {\n request: Request;\n req: ExpressRequest;\n};\n\ntype RouteHandlerFactory = (ctx: RouteHandlerContext) => Promise<Response>;\n\nfunction createRouteHandler(\n runtime: CopilotRuntimeLike,\n factory: RouteHandlerFactory,\n) {\n return async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n\n const warning = getLicenseWarningHeader(runtime.licenseChecker);\n if (warning) res.setHeader(warning.key, warning.value);\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n try {\n const response = await factory({ request, req });\n const responseForMiddleware = response.clone();\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({\n runtime,\n response: responseForMiddleware,\n path,\n }).catch((error) => {\n logger.error(\n { err: error, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n } catch (error) {\n if (error instanceof Response) {\n const errorResponseForMiddleware = error.clone();\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({\n runtime,\n response: errorResponseForMiddleware,\n path,\n }).catch((mwError) => {\n logger.error(\n { err: mwError, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n return;\n }\n logger.error(\n { err: error, url: request.url, path },\n \"Error running request handler\",\n );\n next(error);\n }\n };\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n\nfunction joinPath(basePath: string, suffix: string): string {\n if (basePath === \"/\") {\n return suffix.startsWith(\"/\") ? suffix : `/${suffix}`;\n }\n\n if (!suffix) {\n return basePath;\n }\n\n if (suffix === \"*\") {\n return `${basePath}/*`;\n }\n\n return `${basePath}${suffix.startsWith(\"/\") ? suffix : `/${suffix}`}`;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
require("reflect-metadata");
|
|
2
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
const require_handle_run = require('../handlers/handle-run.cjs');
|
|
4
|
+
const require_get_runtime_info = require('../handlers/get-runtime-info.cjs');
|
|
5
|
+
const require_handle_transcribe = require('../handlers/handle-transcribe.cjs');
|
|
6
|
+
const require_middleware = require('../middleware.cjs');
|
|
7
|
+
const require_handle_connect = require('../handlers/handle-connect.cjs');
|
|
8
|
+
const require_handle_stop = require('../handlers/handle-stop.cjs');
|
|
9
|
+
const require_single_route_helpers = require('./single-route-helpers.cjs');
|
|
10
|
+
let _copilotkit_shared = require("@copilotkit/shared");
|
|
11
|
+
let hono = require("hono");
|
|
12
|
+
let hono_cors = require("hono/cors");
|
|
13
|
+
|
|
14
|
+
//#region src/v2/runtime/endpoints/hono-single.ts
|
|
15
|
+
function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig }) {
|
|
16
|
+
const app = new hono.Hono();
|
|
17
|
+
const routePath = normalizePath(basePath);
|
|
18
|
+
return app.basePath(routePath).use("*", (0, hono_cors.cors)({
|
|
19
|
+
origin: corsConfig?.origin ?? "*",
|
|
20
|
+
allowMethods: [
|
|
21
|
+
"GET",
|
|
22
|
+
"HEAD",
|
|
23
|
+
"PUT",
|
|
24
|
+
"POST",
|
|
25
|
+
"DELETE",
|
|
26
|
+
"PATCH",
|
|
27
|
+
"OPTIONS"
|
|
28
|
+
],
|
|
29
|
+
allowHeaders: ["*"],
|
|
30
|
+
credentials: corsConfig?.credentials ?? false
|
|
31
|
+
})).use("*", async (c, next) => {
|
|
32
|
+
const request = c.req.raw;
|
|
33
|
+
const path = c.req.path;
|
|
34
|
+
try {
|
|
35
|
+
const maybeModifiedRequest = await require_middleware.callBeforeRequestMiddleware({
|
|
36
|
+
runtime,
|
|
37
|
+
request,
|
|
38
|
+
path
|
|
39
|
+
});
|
|
40
|
+
if (maybeModifiedRequest) c.set("modifiedRequest", maybeModifiedRequest);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
_copilotkit_shared.logger.error({
|
|
43
|
+
err: error,
|
|
44
|
+
url: request.url,
|
|
45
|
+
path
|
|
46
|
+
}, "Error running before request middleware");
|
|
47
|
+
if (error instanceof Response) return error;
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
await next();
|
|
51
|
+
}).use("*", async (c, next) => {
|
|
52
|
+
await next();
|
|
53
|
+
const response = c.res.clone();
|
|
54
|
+
const path = c.req.path;
|
|
55
|
+
require_middleware.callAfterRequestMiddleware({
|
|
56
|
+
runtime,
|
|
57
|
+
response,
|
|
58
|
+
path
|
|
59
|
+
}).catch((error) => {
|
|
60
|
+
_copilotkit_shared.logger.error({
|
|
61
|
+
err: error,
|
|
62
|
+
url: c.req.url,
|
|
63
|
+
path
|
|
64
|
+
}, "Error running after request middleware");
|
|
65
|
+
});
|
|
66
|
+
}).post("/", async (c) => {
|
|
67
|
+
const request = c.get("modifiedRequest") || c.req.raw;
|
|
68
|
+
let methodCall;
|
|
69
|
+
try {
|
|
70
|
+
methodCall = await require_single_route_helpers.parseMethodCall(request);
|
|
71
|
+
} catch (error) {
|
|
72
|
+
if (error instanceof Response) {
|
|
73
|
+
_copilotkit_shared.logger.warn({ url: request.url }, "Invalid single-route payload");
|
|
74
|
+
return error;
|
|
75
|
+
}
|
|
76
|
+
_copilotkit_shared.logger.warn({
|
|
77
|
+
err: error,
|
|
78
|
+
url: request.url
|
|
79
|
+
}, "Invalid single-route payload");
|
|
80
|
+
return c.json({
|
|
81
|
+
error: "invalid_request",
|
|
82
|
+
message: error instanceof Error ? error.message : "Invalid request payload"
|
|
83
|
+
}, 400);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
switch (methodCall.method) {
|
|
87
|
+
case "agent/run": {
|
|
88
|
+
const agentId = require_single_route_helpers.expectString(methodCall.params, "agentId");
|
|
89
|
+
return await require_handle_run.handleRunAgent({
|
|
90
|
+
runtime,
|
|
91
|
+
request: require_single_route_helpers.createJsonRequest(request, methodCall.body),
|
|
92
|
+
agentId
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
case "agent/connect": {
|
|
96
|
+
const agentId = require_single_route_helpers.expectString(methodCall.params, "agentId");
|
|
97
|
+
return await require_handle_connect.handleConnectAgent({
|
|
98
|
+
runtime,
|
|
99
|
+
request: require_single_route_helpers.createJsonRequest(request, methodCall.body),
|
|
100
|
+
agentId
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
case "agent/stop": return await require_handle_stop.handleStopAgent({
|
|
104
|
+
runtime,
|
|
105
|
+
request,
|
|
106
|
+
agentId: require_single_route_helpers.expectString(methodCall.params, "agentId"),
|
|
107
|
+
threadId: require_single_route_helpers.expectString(methodCall.params, "threadId")
|
|
108
|
+
});
|
|
109
|
+
case "info": return await require_get_runtime_info.handleGetRuntimeInfo({
|
|
110
|
+
runtime,
|
|
111
|
+
request
|
|
112
|
+
});
|
|
113
|
+
case "transcribe": return await require_handle_transcribe.handleTranscribe({
|
|
114
|
+
runtime,
|
|
115
|
+
request: require_single_route_helpers.createJsonRequest(request, methodCall.body)
|
|
116
|
+
});
|
|
117
|
+
default: return methodCall.method;
|
|
118
|
+
}
|
|
119
|
+
} catch (error) {
|
|
120
|
+
if (error instanceof Response) return error;
|
|
121
|
+
_copilotkit_shared.logger.error({
|
|
122
|
+
err: error,
|
|
123
|
+
url: request.url,
|
|
124
|
+
method: methodCall.method
|
|
125
|
+
}, "Error running single-route handler");
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}).notFound((c) => {
|
|
129
|
+
return c.json({ error: "Not found" }, 404);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function normalizePath(path) {
|
|
133
|
+
if (!path) throw new Error("basePath must be provided for single-route endpoint");
|
|
134
|
+
if (!path.startsWith("/")) return `/${path}`;
|
|
135
|
+
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
|
|
136
|
+
return path;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
//#endregion
|
|
140
|
+
exports.createCopilotEndpointSingleRoute = createCopilotEndpointSingleRoute;
|
|
141
|
+
//# sourceMappingURL=hono-single.cjs.map
|