@copilotkit/runtime 1.55.0-next.8 → 1.55.0
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/CHANGELOG.md +28 -0
- package/dist/agent/index.cjs +101 -12
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts.map +1 -1
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs +102 -13
- package/dist/agent/index.mjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +4 -841
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +4 -841
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +3 -2
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts +3 -3
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +3 -2
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/package.cjs +70 -47
- package/dist/package.mjs +70 -47
- package/dist/v2/express.cjs +8 -0
- package/dist/v2/express.d.cts +5 -0
- package/dist/v2/express.d.mts +5 -0
- package/dist/v2/express.mjs +5 -0
- package/dist/v2/hono.cjs +9 -0
- package/dist/v2/hono.d.cts +5 -0
- package/dist/v2/hono.d.mts +5 -0
- package/dist/v2/hono.mjs +5 -0
- package/dist/v2/index.cjs +8 -3
- package/dist/v2/index.d.cts +8 -5
- package/dist/v2/index.d.mts +8 -5
- package/dist/v2/index.mjs +5 -4
- package/dist/v2/node.cjs +8 -0
- package/dist/v2/node.d.cts +5 -0
- package/dist/v2/node.d.mts +5 -0
- package/dist/v2/node.mjs +5 -0
- package/dist/v2/runtime/core/fetch-cors.cjs +72 -0
- package/dist/v2/runtime/core/fetch-cors.cjs.map +1 -0
- package/dist/v2/runtime/core/fetch-cors.d.cts +20 -0
- package/dist/v2/runtime/core/fetch-cors.d.cts.map +1 -0
- package/dist/v2/runtime/core/fetch-cors.d.mts +20 -0
- package/dist/v2/runtime/core/fetch-cors.d.mts.map +1 -0
- package/dist/v2/runtime/core/fetch-cors.mjs +70 -0
- package/dist/v2/runtime/core/fetch-cors.mjs.map +1 -0
- package/dist/v2/runtime/core/fetch-handler.cjs +232 -0
- package/dist/v2/runtime/core/fetch-handler.cjs.map +1 -0
- package/dist/v2/runtime/core/fetch-handler.d.cts +40 -0
- package/dist/v2/runtime/core/fetch-handler.d.cts.map +1 -0
- package/dist/v2/runtime/core/fetch-handler.d.mts +40 -0
- package/dist/v2/runtime/core/fetch-handler.d.mts.map +1 -0
- package/dist/v2/runtime/core/fetch-handler.mjs +231 -0
- package/dist/v2/runtime/core/fetch-handler.mjs.map +1 -0
- package/dist/v2/runtime/core/fetch-router.cjs +68 -0
- package/dist/v2/runtime/core/fetch-router.cjs.map +1 -0
- package/dist/v2/runtime/core/fetch-router.mjs +67 -0
- package/dist/v2/runtime/core/fetch-router.mjs.map +1 -0
- package/dist/v2/runtime/core/hooks.cjs +29 -0
- package/dist/v2/runtime/core/hooks.cjs.map +1 -0
- package/dist/v2/runtime/core/hooks.d.cts +78 -0
- package/dist/v2/runtime/core/hooks.d.cts.map +1 -0
- package/dist/v2/runtime/core/hooks.d.mts +78 -0
- package/dist/v2/runtime/core/hooks.d.mts.map +1 -0
- package/dist/v2/runtime/core/hooks.mjs +25 -0
- package/dist/v2/runtime/core/hooks.mjs.map +1 -0
- package/dist/v2/runtime/{middleware-sse-parser.cjs → core/middleware-sse-parser.cjs} +2 -2
- package/dist/v2/runtime/core/middleware-sse-parser.cjs.map +1 -0
- package/dist/v2/runtime/{middleware-sse-parser.d.cts → core/middleware-sse-parser.d.cts} +1 -1
- package/dist/v2/runtime/core/middleware-sse-parser.d.cts.map +1 -0
- package/dist/v2/runtime/{middleware-sse-parser.d.mts → core/middleware-sse-parser.d.mts} +1 -1
- package/dist/v2/runtime/core/middleware-sse-parser.d.mts.map +1 -0
- package/dist/v2/runtime/{middleware-sse-parser.mjs → core/middleware-sse-parser.mjs} +1 -1
- package/dist/v2/runtime/core/middleware-sse-parser.mjs.map +1 -0
- package/dist/v2/runtime/{middleware.cjs → core/middleware.cjs} +2 -2
- package/dist/v2/runtime/core/middleware.cjs.map +1 -0
- package/dist/v2/runtime/{middleware.d.cts → core/middleware.d.cts} +1 -1
- package/dist/v2/runtime/core/middleware.d.cts.map +1 -0
- package/dist/v2/runtime/{middleware.d.mts → core/middleware.d.mts} +1 -1
- package/dist/v2/runtime/core/middleware.d.mts.map +1 -0
- package/dist/v2/runtime/{middleware.mjs → core/middleware.mjs} +1 -1
- package/dist/v2/runtime/core/middleware.mjs.map +1 -0
- package/dist/v2/runtime/{runtime.cjs → core/runtime.cjs} +35 -10
- package/dist/v2/runtime/core/runtime.cjs.map +1 -0
- package/dist/v2/runtime/{runtime.d.cts → core/runtime.d.cts} +41 -7
- package/dist/v2/runtime/core/runtime.d.cts.map +1 -0
- package/dist/v2/runtime/{runtime.d.mts → core/runtime.d.mts} +42 -8
- package/dist/v2/runtime/core/runtime.d.mts.map +1 -0
- package/dist/v2/runtime/{runtime.mjs → core/runtime.mjs} +36 -11
- package/dist/v2/runtime/core/runtime.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs +83 -0
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs +82 -0
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/express-single.cjs +35 -181
- package/dist/v2/runtime/endpoints/express-single.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/express-single.d.cts +35 -2
- package/dist/v2/runtime/endpoints/express-single.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/express-single.d.mts +35 -2
- package/dist/v2/runtime/endpoints/express-single.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/express-single.mjs +35 -178
- package/dist/v2/runtime/endpoints/express-single.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.cjs +41 -195
- package/dist/v2/runtime/endpoints/express.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.d.cts +26 -4
- package/dist/v2/runtime/endpoints/express.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/express.d.mts +26 -4
- package/dist/v2/runtime/endpoints/express.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/express.mjs +41 -195
- package/dist/v2/runtime/endpoints/express.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/hono-single.cjs +11 -123
- package/dist/v2/runtime/endpoints/hono-single.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/hono-single.d.cts +14 -11
- package/dist/v2/runtime/endpoints/hono-single.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/hono-single.d.mts +14 -11
- package/dist/v2/runtime/endpoints/hono-single.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/hono-single.mjs +11 -123
- package/dist/v2/runtime/endpoints/hono-single.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/hono.cjs +23 -237
- package/dist/v2/runtime/endpoints/hono.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/hono.d.cts +29 -120
- package/dist/v2/runtime/endpoints/hono.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/hono.d.mts +29 -120
- package/dist/v2/runtime/endpoints/hono.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/hono.mjs +22 -238
- package/dist/v2/runtime/endpoints/hono.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/index.d.cts +2 -2
- package/dist/v2/runtime/endpoints/index.d.mts +2 -2
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs +26 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts +12 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts +12 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs +24 -0
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs.map +1 -0
- package/dist/v2/runtime/endpoints/node.cjs +30 -0
- package/dist/v2/runtime/endpoints/node.cjs.map +1 -0
- package/dist/v2/runtime/endpoints/node.d.cts +27 -0
- package/dist/v2/runtime/endpoints/node.d.cts.map +1 -0
- package/dist/v2/runtime/endpoints/node.d.mts +27 -0
- package/dist/v2/runtime/endpoints/node.d.mts.map +1 -0
- package/dist/v2/runtime/endpoints/node.mjs +30 -0
- package/dist/v2/runtime/endpoints/node.mjs.map +1 -0
- package/dist/v2/runtime/express.d.cts +3 -0
- package/dist/v2/runtime/express.d.mts +3 -0
- package/dist/v2/runtime/handlers/get-runtime-info.cjs +2 -1
- package/dist/v2/runtime/handlers/get-runtime-info.cjs.map +1 -1
- package/dist/v2/runtime/handlers/get-runtime-info.mjs +2 -1
- package/dist/v2/runtime/handlers/get-runtime-info.mjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-connect.cjs +6 -3
- package/dist/v2/runtime/handlers/handle-connect.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-connect.mjs +6 -3
- package/dist/v2/runtime/handlers/handle-connect.mjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-run.cjs +6 -3
- package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-run.mjs +6 -3
- package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-stop.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-stop.mjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-transcribe.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-transcribe.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/connect.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/connect.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.cjs +22 -1
- package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.mjs +22 -1
- package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/thread-names.cjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/thread-names.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/thread-names.mjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/thread-names.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +21 -6
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +21 -6
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/json-response.cjs +4 -1
- package/dist/v2/runtime/handlers/shared/json-response.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/json-response.mjs +4 -1
- package/dist/v2/runtime/handlers/shared/json-response.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/connect.cjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/connect.mjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -1
- package/dist/v2/runtime/hono.d.cts +3 -0
- package/dist/v2/runtime/hono.d.mts +3 -0
- package/dist/v2/runtime/index.d.cts +16 -4
- package/dist/v2/runtime/index.d.cts.map +1 -0
- package/dist/v2/runtime/index.d.mts +16 -4
- package/dist/v2/runtime/index.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/client.cjs +10 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts +22 -0
- package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts +22 -0
- package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs +10 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
- package/dist/v2/runtime/node.d.cts +3 -0
- package/dist/v2/runtime/node.d.mts +3 -0
- package/dist/v2/runtime/open-generative-ui-middleware.cjs +282 -0
- package/dist/v2/runtime/open-generative-ui-middleware.cjs.map +1 -0
- package/dist/v2/runtime/open-generative-ui-middleware.mjs +280 -0
- package/dist/v2/runtime/open-generative-ui-middleware.mjs.map +1 -0
- package/dist/v2/runtime/runner/intelligence.cjs +4 -4
- package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.cts +6 -2
- package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.mts +6 -2
- package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.mjs +4 -4
- package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
- package/dist/v2/runtime/telemetry/telemetry-client.cjs +37 -0
- package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -1
- package/dist/v2/runtime/telemetry/telemetry-client.mjs +36 -0
- package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -1
- package/dist/v2/runtime/telemetry/utils.cjs +15 -0
- package/dist/v2/runtime/telemetry/utils.cjs.map +1 -0
- package/dist/v2/runtime/telemetry/utils.mjs +14 -0
- package/dist/v2/runtime/telemetry/utils.mjs.map +1 -0
- package/package.json +81 -48
- package/src/agent/__tests__/multimodal.test.ts +176 -0
- package/src/agent/index.ts +130 -19
- package/src/lib/runtime/agent-integrations/langgraph/agent.ts +3 -3
- package/src/lib/runtime/copilot-runtime.ts +1 -0
- package/src/v2/express.ts +1 -0
- package/src/v2/hono.ts +1 -0
- package/src/v2/node.ts +1 -0
- package/src/v2/runtime/__tests__/backward-compat.test.ts +261 -0
- package/src/v2/runtime/__tests__/code-review-fixes.test.ts +500 -0
- package/src/v2/runtime/__tests__/cors-credentials.test.ts +2 -2
- package/src/v2/runtime/__tests__/express-adapter.test.ts +188 -0
- package/src/v2/runtime/__tests__/express-body-order.test.ts +1 -1
- package/src/v2/runtime/__tests__/express-fetch-bridge.test.ts +344 -0
- package/src/v2/runtime/__tests__/express-single-sse.test.ts +1 -1
- package/src/v2/runtime/__tests__/fetch-cors.test.ts +205 -0
- package/src/v2/runtime/__tests__/fetch-handler-validation.test.ts +372 -0
- package/src/v2/runtime/__tests__/fetch-handler.test.ts +456 -0
- package/src/v2/runtime/__tests__/fetch-router.test.ts +132 -0
- package/src/v2/runtime/__tests__/get-runtime-info.test.ts +4 -1
- package/src/v2/runtime/__tests__/handle-connect.test.ts +15 -13
- package/src/v2/runtime/__tests__/handle-run.test.ts +21 -17
- package/src/v2/runtime/__tests__/handle-threads.test.ts +1 -1
- package/src/v2/runtime/__tests__/handle-transcribe.test.ts +1 -1
- package/src/v2/runtime/__tests__/hono-adapter.test.ts +150 -0
- package/src/v2/runtime/__tests__/hooks-edge-cases.test.ts +457 -0
- package/src/v2/runtime/__tests__/hooks.test.ts +557 -0
- package/src/v2/runtime/__tests__/integration/bun/bun-servers.integration.test.ts +27 -0
- package/src/v2/runtime/__tests__/integration/bun/elysia-multi.ts +32 -0
- package/src/v2/runtime/__tests__/integration/bun/elysia-single.ts +33 -0
- package/src/v2/runtime/__tests__/integration/bun/hono-bun-multi.ts +25 -0
- package/src/v2/runtime/__tests__/integration/bun/hono-bun-single.ts +32 -0
- package/src/v2/runtime/__tests__/integration/helpers/create-test-runtime.ts +15 -0
- package/src/v2/runtime/__tests__/integration/helpers/sse-reader.ts +45 -0
- package/src/v2/runtime/__tests__/integration/helpers/test-agent.ts +58 -0
- package/src/v2/runtime/__tests__/integration/node-servers.integration.test.ts +39 -0
- package/src/v2/runtime/__tests__/integration/servers/express-multi.ts +35 -0
- package/src/v2/runtime/__tests__/integration/servers/express-single.ts +36 -0
- package/src/v2/runtime/__tests__/integration/servers/fetch-direct.ts +39 -0
- package/src/v2/runtime/__tests__/integration/servers/hono-multi.ts +30 -0
- package/src/v2/runtime/__tests__/integration/servers/hono-single.ts +37 -0
- package/src/v2/runtime/__tests__/integration/servers/node-multi.ts +45 -0
- package/src/v2/runtime/__tests__/integration/servers/node-single.ts +46 -0
- package/src/v2/runtime/__tests__/integration/servers/types.ts +18 -0
- package/src/v2/runtime/__tests__/integration/suites/multi-endpoint.suite.ts +358 -0
- package/src/v2/runtime/__tests__/integration/suites/single-endpoint.suite.ts +363 -0
- package/src/v2/runtime/__tests__/middleware-express.test.ts +25 -23
- package/src/v2/runtime/__tests__/middleware-single-express.test.ts +25 -23
- package/src/v2/runtime/__tests__/middleware-single.test.ts +1 -1
- package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +1 -1
- package/src/v2/runtime/__tests__/middleware.test.ts +1 -2
- package/src/v2/runtime/__tests__/node-fetch-handler.test.ts +157 -0
- package/src/v2/runtime/__tests__/open-generative-ui-middleware.e2e.test.ts +728 -0
- package/src/v2/runtime/__tests__/router-edge-cases.test.ts +217 -0
- package/src/v2/runtime/__tests__/routing-express.test.ts +1 -1
- package/src/v2/runtime/__tests__/routing-single-express.test.ts +1 -1
- package/src/v2/runtime/__tests__/routing-single.test.ts +1 -1
- package/src/v2/runtime/__tests__/routing.test.ts +1 -1
- package/src/v2/runtime/__tests__/runtime.test.ts +110 -1
- package/src/v2/runtime/__tests__/telemetry.test.ts +62 -1
- package/src/v2/runtime/core/fetch-cors.ts +136 -0
- package/src/v2/runtime/core/fetch-handler.ts +415 -0
- package/src/v2/runtime/core/fetch-router.ts +112 -0
- package/src/v2/runtime/core/hooks.ts +151 -0
- package/src/v2/runtime/{runtime.ts → core/runtime.ts} +79 -10
- package/src/v2/runtime/endpoints/express-fetch-bridge.ts +137 -0
- package/src/v2/runtime/endpoints/express-single.ts +42 -219
- package/src/v2/runtime/endpoints/express.ts +128 -230
- package/src/v2/runtime/endpoints/hono-single.ts +19 -171
- package/src/v2/runtime/endpoints/hono.ts +45 -270
- package/src/v2/runtime/endpoints/node-fetch-handler.ts +48 -0
- package/src/v2/runtime/endpoints/node.ts +28 -0
- package/src/v2/runtime/handlers/get-runtime-info.ts +3 -2
- package/src/v2/runtime/handlers/handle-connect.ts +7 -4
- package/src/v2/runtime/handlers/handle-run.ts +7 -4
- package/src/v2/runtime/handlers/handle-stop.ts +1 -1
- package/src/v2/runtime/handlers/handle-transcribe.ts +1 -1
- package/src/v2/runtime/handlers/intelligence/connect.ts +1 -1
- package/src/v2/runtime/handlers/intelligence/run.ts +31 -1
- package/src/v2/runtime/handlers/intelligence/thread-names.ts +2 -2
- package/src/v2/runtime/handlers/intelligence/threads.ts +1 -1
- package/src/v2/runtime/handlers/shared/agent-utils.ts +29 -10
- package/src/v2/runtime/handlers/shared/json-response.ts +4 -1
- package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +1 -1
- package/src/v2/runtime/handlers/sse/connect.ts +1 -1
- package/src/v2/runtime/handlers/sse/run.ts +1 -1
- package/src/v2/runtime/hono.ts +2 -0
- package/src/v2/runtime/index.ts +27 -1
- package/src/v2/runtime/intelligence-platform/client.ts +50 -1
- package/src/v2/runtime/node.ts +6 -0
- package/src/v2/runtime/open-generative-ui-middleware.ts +373 -0
- package/src/v2/runtime/runner/intelligence.ts +14 -4
- package/src/v2/runtime/telemetry/telemetry-client.ts +56 -0
- package/src/v2/runtime/telemetry/utils.ts +15 -0
- package/tsdown.config.ts +8 -1
- package/vitest.config.mjs +2 -5
- package/.eslintrc.js +0 -7
- package/dist/v2/runtime/endpoints/express-utils.cjs +0 -119
- package/dist/v2/runtime/endpoints/express-utils.cjs.map +0 -1
- package/dist/v2/runtime/endpoints/express-utils.mjs +0 -117
- package/dist/v2/runtime/endpoints/express-utils.mjs.map +0 -1
- package/dist/v2/runtime/handlers/intelligence/threads.cjs +0 -159
- package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +0 -1
- package/dist/v2/runtime/handlers/intelligence/threads.mjs +0 -154
- package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +0 -1
- package/dist/v2/runtime/middleware-sse-parser.cjs.map +0 -1
- package/dist/v2/runtime/middleware-sse-parser.d.cts.map +0 -1
- package/dist/v2/runtime/middleware-sse-parser.d.mts.map +0 -1
- package/dist/v2/runtime/middleware-sse-parser.mjs.map +0 -1
- package/dist/v2/runtime/middleware.cjs.map +0 -1
- package/dist/v2/runtime/middleware.d.cts.map +0 -1
- package/dist/v2/runtime/middleware.d.mts.map +0 -1
- package/dist/v2/runtime/middleware.mjs.map +0 -1
- package/dist/v2/runtime/runtime.cjs.map +0 -1
- package/dist/v2/runtime/runtime.d.cts.map +0 -1
- package/dist/v2/runtime/runtime.d.mts.map +0 -1
- package/dist/v2/runtime/runtime.mjs.map +0 -1
- package/src/v2/runtime/__tests__/express-abort-signal.test.ts +0 -25
- package/src/v2/runtime/endpoints/express-utils.ts +0 -182
- package/src/v2/runtime/handler.ts +0 -3
- /package/src/v2/runtime/{middleware-sse-parser.ts → core/middleware-sse-parser.ts} +0 -0
- /package/src/v2/runtime/{middleware.ts → core/middleware.ts} +0 -0
|
@@ -1,15 +1,48 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import { CopilotRuntimeLike } from "../runtime.mjs";
|
|
2
|
+
import { CopilotRuntimeLike } from "../core/runtime.mjs";
|
|
3
|
+
import { CopilotRuntimeHooks } from "../core/hooks.mjs";
|
|
3
4
|
import { Router } from "express";
|
|
4
5
|
|
|
5
6
|
//#region src/v2/runtime/endpoints/express-single.d.ts
|
|
6
7
|
interface CopilotSingleRouteExpressParams {
|
|
7
8
|
runtime: CopilotRuntimeLike;
|
|
8
9
|
basePath: string;
|
|
10
|
+
/**
|
|
11
|
+
* Lifecycle hooks for request processing.
|
|
12
|
+
*/
|
|
13
|
+
hooks?: CopilotRuntimeHooks;
|
|
9
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates an Express router that serves the CopilotKit runtime as a single
|
|
17
|
+
* POST endpoint. Clients send a JSON envelope with `{ method, params, body }`
|
|
18
|
+
* to dispatch to the appropriate handler.
|
|
19
|
+
*
|
|
20
|
+
* This is a convenience wrapper around {@link createCopilotExpressHandler}
|
|
21
|
+
* with `mode: "single-route"` and `cors: true`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import express from "express";
|
|
26
|
+
* import { CopilotRuntime } from "@copilotkit/runtime/v2";
|
|
27
|
+
* import { createCopilotEndpointSingleRouteExpress } from "@copilotkit/runtime/v2/express";
|
|
28
|
+
*
|
|
29
|
+
* const runtime = new CopilotRuntime({
|
|
30
|
+
* agents: { default: new BuiltInAgent({ model: "openai/gpt-4o-mini" }) },
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* const app = express();
|
|
34
|
+
* app.use(createCopilotEndpointSingleRouteExpress({
|
|
35
|
+
* runtime,
|
|
36
|
+
* basePath: "/api/copilotkit",
|
|
37
|
+
* }));
|
|
38
|
+
* app.listen(4000);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
/** @deprecated Use `createCopilotExpressHandler` with `mode: "single-route"` instead. */
|
|
10
42
|
declare function createCopilotEndpointSingleRouteExpress({
|
|
11
43
|
runtime,
|
|
12
|
-
basePath
|
|
44
|
+
basePath,
|
|
45
|
+
hooks
|
|
13
46
|
}: CopilotSingleRouteExpressParams): Router;
|
|
14
47
|
//#endregion
|
|
15
48
|
export { createCopilotEndpointSingleRouteExpress };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-single.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express-single.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"express-single.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express-single.ts"],"mappings":";;;;;;UAKU,+BAAA;EACR,OAAA,EAAS,kBAAA;EACT,QAAA;EAFuC;;;EAMvC,KAAA,GAAQ,mBAAA;AAAA;;;;;;AA8BV;;;;;;;;;;;;;;;;;;;;;;iBAAgB,uCAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA;AAAA,GACC,+BAAA,GAAkC,MAAA"}
|
|
@@ -1,185 +1,42 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import {
|
|
3
|
-
import { handleGetRuntimeInfo } from "../handlers/get-runtime-info.mjs";
|
|
4
|
-
import { handleTranscribe } from "../handlers/handle-transcribe.mjs";
|
|
5
|
-
import { callAfterRequestMiddleware, callBeforeRequestMiddleware } from "../middleware.mjs";
|
|
6
|
-
import { handleConnectAgent } from "../handlers/handle-connect.mjs";
|
|
7
|
-
import { handleStopAgent } from "../handlers/handle-stop.mjs";
|
|
8
|
-
import { createJsonRequest, expectString, parseMethodCall } from "./single-route-helpers.mjs";
|
|
9
|
-
import { createFetchRequestFromExpress, sendFetchResponse } from "./express-utils.mjs";
|
|
10
|
-
import { logger } from "@copilotkit/shared";
|
|
11
|
-
import express from "express";
|
|
12
|
-
import cors from "cors";
|
|
2
|
+
import { createCopilotExpressHandler } from "./express.mjs";
|
|
13
3
|
|
|
14
4
|
//#region src/v2/runtime/endpoints/express-single.ts
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Creates an Express router that serves the CopilotKit runtime as a single
|
|
7
|
+
* POST endpoint. Clients send a JSON envelope with `{ method, params, body }`
|
|
8
|
+
* to dispatch to the appropriate handler.
|
|
9
|
+
*
|
|
10
|
+
* This is a convenience wrapper around {@link createCopilotExpressHandler}
|
|
11
|
+
* with `mode: "single-route"` and `cors: true`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import express from "express";
|
|
16
|
+
* import { CopilotRuntime } from "@copilotkit/runtime/v2";
|
|
17
|
+
* import { createCopilotEndpointSingleRouteExpress } from "@copilotkit/runtime/v2/express";
|
|
18
|
+
*
|
|
19
|
+
* const runtime = new CopilotRuntime({
|
|
20
|
+
* agents: { default: new BuiltInAgent({ model: "openai/gpt-4o-mini" }) },
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* const app = express();
|
|
24
|
+
* app.use(createCopilotEndpointSingleRouteExpress({
|
|
25
|
+
* runtime,
|
|
26
|
+
* basePath: "/api/copilotkit",
|
|
27
|
+
* }));
|
|
28
|
+
* app.listen(4000);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
/** @deprecated Use `createCopilotExpressHandler` with `mode: "single-route"` instead. */
|
|
32
|
+
function createCopilotEndpointSingleRouteExpress({ runtime, basePath, hooks }) {
|
|
33
|
+
return createCopilotExpressHandler({
|
|
34
|
+
runtime,
|
|
35
|
+
basePath,
|
|
36
|
+
mode: "single-route",
|
|
37
|
+
cors: true,
|
|
38
|
+
hooks
|
|
34
39
|
});
|
|
35
|
-
return router;
|
|
36
|
-
}
|
|
37
|
-
function createSingleRouteHandler(runtime) {
|
|
38
|
-
return async (req, res, next) => {
|
|
39
|
-
const path = req.originalUrl ?? req.path;
|
|
40
|
-
let request = createFetchRequestFromExpress(req);
|
|
41
|
-
try {
|
|
42
|
-
const maybeModifiedRequest = await callBeforeRequestMiddleware({
|
|
43
|
-
runtime,
|
|
44
|
-
request,
|
|
45
|
-
path
|
|
46
|
-
});
|
|
47
|
-
if (maybeModifiedRequest) request = maybeModifiedRequest;
|
|
48
|
-
} catch (error) {
|
|
49
|
-
logger.error({
|
|
50
|
-
err: error,
|
|
51
|
-
url: request.url,
|
|
52
|
-
path
|
|
53
|
-
}, "Error running before request middleware");
|
|
54
|
-
if (error instanceof Response) {
|
|
55
|
-
try {
|
|
56
|
-
await sendFetchResponse(res, error);
|
|
57
|
-
} catch (streamError) {
|
|
58
|
-
next(streamError);
|
|
59
|
-
}
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
next(error);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
let methodCall;
|
|
66
|
-
try {
|
|
67
|
-
methodCall = await parseMethodCall(request);
|
|
68
|
-
} catch (error) {
|
|
69
|
-
if (error instanceof Response) {
|
|
70
|
-
logger.warn({ url: request.url }, "Invalid single-route payload");
|
|
71
|
-
try {
|
|
72
|
-
await sendFetchResponse(res, error);
|
|
73
|
-
} catch (streamError) {
|
|
74
|
-
next(streamError);
|
|
75
|
-
}
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
logger.warn({
|
|
79
|
-
err: error,
|
|
80
|
-
url: request.url
|
|
81
|
-
}, "Invalid single-route payload");
|
|
82
|
-
res.status(400).json({
|
|
83
|
-
error: "invalid_request",
|
|
84
|
-
message: error instanceof Error ? error.message : "Invalid request payload"
|
|
85
|
-
});
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
let response;
|
|
90
|
-
switch (methodCall.method) {
|
|
91
|
-
case "agent/run": {
|
|
92
|
-
const agentId = expectString(methodCall.params, "agentId");
|
|
93
|
-
response = await handleRunAgent({
|
|
94
|
-
runtime,
|
|
95
|
-
request: createJsonRequest(request, methodCall.body),
|
|
96
|
-
agentId
|
|
97
|
-
});
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
case "agent/connect": {
|
|
101
|
-
const agentId = expectString(methodCall.params, "agentId");
|
|
102
|
-
response = await handleConnectAgent({
|
|
103
|
-
runtime,
|
|
104
|
-
request: createJsonRequest(request, methodCall.body),
|
|
105
|
-
agentId
|
|
106
|
-
});
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
case "agent/stop": {
|
|
110
|
-
const agentId = expectString(methodCall.params, "agentId");
|
|
111
|
-
const threadId = expectString(methodCall.params, "threadId");
|
|
112
|
-
response = await handleStopAgent({
|
|
113
|
-
runtime,
|
|
114
|
-
request,
|
|
115
|
-
agentId,
|
|
116
|
-
threadId
|
|
117
|
-
});
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
case "info":
|
|
121
|
-
response = await handleGetRuntimeInfo({
|
|
122
|
-
runtime,
|
|
123
|
-
request
|
|
124
|
-
});
|
|
125
|
-
break;
|
|
126
|
-
case "transcribe":
|
|
127
|
-
response = await handleTranscribe({
|
|
128
|
-
runtime,
|
|
129
|
-
request: createJsonRequest(request, methodCall.body)
|
|
130
|
-
});
|
|
131
|
-
break;
|
|
132
|
-
default: return methodCall.method;
|
|
133
|
-
}
|
|
134
|
-
const responseForMiddleware = response.clone();
|
|
135
|
-
await sendFetchResponse(res, response);
|
|
136
|
-
callAfterRequestMiddleware({
|
|
137
|
-
runtime,
|
|
138
|
-
response: responseForMiddleware,
|
|
139
|
-
path
|
|
140
|
-
}).catch((error) => {
|
|
141
|
-
logger.error({
|
|
142
|
-
err: error,
|
|
143
|
-
url: req.originalUrl ?? req.url,
|
|
144
|
-
path
|
|
145
|
-
}, "Error running after request middleware");
|
|
146
|
-
});
|
|
147
|
-
} catch (error) {
|
|
148
|
-
if (error instanceof Response) {
|
|
149
|
-
const errorResponseForMiddleware = error.clone();
|
|
150
|
-
try {
|
|
151
|
-
await sendFetchResponse(res, error);
|
|
152
|
-
} catch (streamError) {
|
|
153
|
-
next(streamError);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
callAfterRequestMiddleware({
|
|
157
|
-
runtime,
|
|
158
|
-
response: errorResponseForMiddleware,
|
|
159
|
-
path
|
|
160
|
-
}).catch((mwError) => {
|
|
161
|
-
logger.error({
|
|
162
|
-
err: mwError,
|
|
163
|
-
url: req.originalUrl ?? req.url,
|
|
164
|
-
path
|
|
165
|
-
}, "Error running after request middleware");
|
|
166
|
-
});
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
logger.error({
|
|
170
|
-
err: error,
|
|
171
|
-
url: request.url,
|
|
172
|
-
path
|
|
173
|
-
}, "Error running single-route handler");
|
|
174
|
-
next(error);
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
function normalizeSingleRoutePath(path) {
|
|
179
|
-
if (!path) throw new Error("basePath must be provided for Express single-route endpoint");
|
|
180
|
-
if (!path.startsWith("/")) return `/${path}`;
|
|
181
|
-
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
|
|
182
|
-
return path;
|
|
183
40
|
}
|
|
184
41
|
|
|
185
42
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-single.mjs","names":[],"sources":["../../../../src/v2/runtime/endpoints/express-single.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"express-single.mjs","names":[],"sources":["../../../../src/v2/runtime/endpoints/express-single.ts"],"sourcesContent":["import type { Router } from \"express\";\nimport { createCopilotExpressHandler } from \"./express\";\nimport type { CopilotRuntimeLike } from \"../core/runtime\";\nimport type { CopilotRuntimeHooks } from \"../core/hooks\";\n\ninterface CopilotSingleRouteExpressParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n /**\n * Lifecycle hooks for request processing.\n */\n hooks?: CopilotRuntimeHooks;\n}\n\n/**\n * Creates an Express router that serves the CopilotKit runtime as a single\n * POST endpoint. Clients send a JSON envelope with `{ method, params, body }`\n * to dispatch to the appropriate handler.\n *\n * This is a convenience wrapper around {@link createCopilotExpressHandler}\n * with `mode: \"single-route\"` and `cors: true`.\n *\n * @example\n * ```typescript\n * import express from \"express\";\n * import { CopilotRuntime } from \"@copilotkit/runtime/v2\";\n * import { createCopilotEndpointSingleRouteExpress } from \"@copilotkit/runtime/v2/express\";\n *\n * const runtime = new CopilotRuntime({\n * agents: { default: new BuiltInAgent({ model: \"openai/gpt-4o-mini\" }) },\n * });\n *\n * const app = express();\n * app.use(createCopilotEndpointSingleRouteExpress({\n * runtime,\n * basePath: \"/api/copilotkit\",\n * }));\n * app.listen(4000);\n * ```\n */\n/** @deprecated Use `createCopilotExpressHandler` with `mode: \"single-route\"` instead. */\nexport function createCopilotEndpointSingleRouteExpress({\n runtime,\n basePath,\n hooks,\n}: CopilotSingleRouteExpressParams): Router {\n return createCopilotExpressHandler({\n runtime,\n basePath,\n mode: \"single-route\",\n cors: true,\n hooks,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,SAAgB,wCAAwC,EACtD,SACA,UACA,SAC0C;AAC1C,QAAO,4BAA4B;EACjC;EACA;EACA,MAAM;EACN,MAAM;EACN;EACD,CAAC"}
|
|
@@ -1,203 +1,55 @@
|
|
|
1
1
|
require("reflect-metadata");
|
|
2
2
|
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
|
|
3
|
-
const
|
|
4
|
-
const
|
|
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");
|
|
3
|
+
const require_fetch_handler = require('../core/fetch-handler.cjs');
|
|
4
|
+
const require_express_fetch_bridge = require('./express-fetch-bridge.cjs');
|
|
13
5
|
let express = require("express");
|
|
14
6
|
express = require_runtime.__toESM(express);
|
|
15
7
|
let cors = require("cors");
|
|
16
8
|
cors = require_runtime.__toESM(cors);
|
|
17
9
|
|
|
18
10
|
//#region src/v2/runtime/endpoints/express.ts
|
|
19
|
-
function
|
|
20
|
-
const router = express.default.Router();
|
|
11
|
+
function createCopilotExpressHandler({ runtime, basePath, mode = "multi-route", cors: corsOption = true, hooks }) {
|
|
21
12
|
const normalizedBase = normalizeBasePath(basePath);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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);
|
|
13
|
+
const nodeHandler = require_express_fetch_bridge.createExpressNodeHandler(require_fetch_handler.createCopilotRuntimeHandler({
|
|
14
|
+
runtime,
|
|
15
|
+
basePath: normalizedBase,
|
|
16
|
+
mode,
|
|
17
|
+
cors: false,
|
|
18
|
+
hooks
|
|
19
|
+
}));
|
|
20
|
+
const expressHandler = async (req, res, next) => {
|
|
129
21
|
try {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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);
|
|
22
|
+
await nodeHandler(req, res);
|
|
23
|
+
} catch (err) {
|
|
24
|
+
next(err);
|
|
199
25
|
}
|
|
200
26
|
};
|
|
27
|
+
const router = express.default.Router();
|
|
28
|
+
if (corsOption) {
|
|
29
|
+
const corsConfig = corsOption === true ? {
|
|
30
|
+
origin: "*",
|
|
31
|
+
methods: [
|
|
32
|
+
"GET",
|
|
33
|
+
"HEAD",
|
|
34
|
+
"PUT",
|
|
35
|
+
"POST",
|
|
36
|
+
"DELETE",
|
|
37
|
+
"PATCH",
|
|
38
|
+
"OPTIONS"
|
|
39
|
+
],
|
|
40
|
+
allowedHeaders: ["*"]
|
|
41
|
+
} : corsOption;
|
|
42
|
+
router.use((0, cors.default)(corsConfig));
|
|
43
|
+
}
|
|
44
|
+
if (mode === "single-route") {
|
|
45
|
+
router.post(normalizedBase, expressHandler);
|
|
46
|
+
router.options(normalizedBase, expressHandler);
|
|
47
|
+
} else if (normalizedBase === "/") router.all("*", expressHandler);
|
|
48
|
+
else {
|
|
49
|
+
router.all(`${normalizedBase}/*`, expressHandler);
|
|
50
|
+
router.all(normalizedBase, expressHandler);
|
|
51
|
+
}
|
|
52
|
+
return router;
|
|
201
53
|
}
|
|
202
54
|
function normalizeBasePath(path) {
|
|
203
55
|
if (!path) throw new Error("basePath must be provided for Express endpoint");
|
|
@@ -205,13 +57,7 @@ function normalizeBasePath(path) {
|
|
|
205
57
|
if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
|
|
206
58
|
return path;
|
|
207
59
|
}
|
|
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
60
|
|
|
215
61
|
//#endregion
|
|
216
|
-
exports.
|
|
62
|
+
exports.createCopilotExpressHandler = createCopilotExpressHandler;
|
|
217
63
|
//# sourceMappingURL=express.cjs.map
|
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"file":"express.cjs","names":["createExpressNodeHandler","createCopilotRuntimeHandler"],"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\";\nimport type { CorsOptions } from \"cors\";\nimport type { CopilotRuntimeLike } from \"../core/runtime\";\nimport { createCopilotRuntimeHandler } from \"../core/fetch-handler\";\nimport { createExpressNodeHandler } from \"./express-fetch-bridge\";\nimport type { CopilotRuntimeHooks } from \"../core/hooks\";\n\nexport interface CopilotExpressEndpointParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n\n /**\n * Endpoint mode.\n * - `\"multi-route\"` (default): separate routes for each operation\n * - `\"single-route\"`: single POST endpoint with JSON envelope dispatch\n */\n mode?: \"multi-route\" | \"single-route\";\n\n /**\n * CORS configuration for the Express router.\n * - `true` (default): permissive CORS (`origin: \"*\"`, all methods, all headers).\n * - `false`: no CORS middleware is applied — handle it yourself.\n * - object: passed directly to the Express `cors()` middleware.\n */\n cors?: boolean | CorsOptions;\n\n /**\n * Lifecycle hooks for request processing.\n */\n hooks?: CopilotRuntimeHooks;\n}\n\n/**\n * Creates an Express router that serves the CopilotKit runtime.\n *\n * In **multi-route** mode (default) the router exposes:\n * - `GET {basePath}/info` — runtime info\n * - `POST {basePath}/agent/:agentId/run` — start an agent run\n * - `POST {basePath}/agent/:agentId/connect` — connect to an agent run\n * - `POST {basePath}/agent/:agentId/stop/:threadId` — stop an agent run\n * - `POST {basePath}/transcribe` — transcribe audio\n *\n * In **single-route** mode a single `POST {basePath}` endpoint accepts a JSON\n * envelope `{ method, params, body }` and dispatches to the appropriate handler.\n *\n * @example\n * ```typescript\n * import express from \"express\";\n * import { CopilotRuntime } from \"@copilotkit/runtime/v2\";\n * import { createCopilotExpressHandler } from \"@copilotkit/runtime/v2/express\";\n *\n * const runtime = new CopilotRuntime({\n * agents: { default: new BuiltInAgent({ model: \"openai/gpt-4o-mini\" }) },\n * });\n *\n * const app = express();\n * app.use(createCopilotExpressHandler({\n * runtime,\n * basePath: \"/api/copilotkit\",\n * cors: true,\n * }));\n * app.listen(4000);\n * ```\n *\n * @example Single-route mode with lifecycle hooks\n * ```typescript\n * app.use(createCopilotExpressHandler({\n * runtime,\n * basePath: \"/api/copilotkit\",\n * mode: \"single-route\",\n * hooks: {\n * onRequest: ({ request }) => {\n * if (!request.headers.get(\"authorization\")) {\n * throw new Response(\"Unauthorized\", { status: 401 });\n * }\n * },\n * },\n * }));\n * ```\n */\n/** @deprecated Use `createCopilotExpressHandler` instead. */\nexport { createCopilotExpressHandler as createCopilotEndpointExpress };\n\nexport function createCopilotExpressHandler({\n runtime,\n basePath,\n mode = \"multi-route\",\n cors: corsOption = true,\n hooks,\n}: CopilotExpressEndpointParams): Router {\n const normalizedBase = normalizeBasePath(basePath);\n\n const handler = createCopilotRuntimeHandler({\n runtime,\n basePath: normalizedBase,\n mode,\n cors: false, // CORS is handled at the Express middleware layer\n hooks,\n });\n\n const nodeHandler = createExpressNodeHandler(handler);\n\n const expressHandler = async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n try {\n await nodeHandler(req, res);\n } catch (err) {\n next(err);\n }\n };\n\n const router = express.Router();\n\n // CORS middleware\n if (corsOption) {\n const corsConfig: CorsOptions =\n corsOption === true\n ? {\n origin: \"*\",\n methods: [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"PATCH\",\n \"OPTIONS\",\n ],\n allowedHeaders: [\"*\"],\n }\n : corsOption;\n router.use(cors(corsConfig));\n }\n\n // Route mounting\n if (mode === \"single-route\") {\n router.post(normalizedBase, expressHandler);\n router.options(normalizedBase, expressHandler);\n } else if (normalizedBase === \"/\") {\n router.all(\"*\", expressHandler);\n } else {\n router.all(`${normalizedBase}/*`, expressHandler);\n router.all(normalizedBase, expressHandler);\n }\n\n return router;\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"],"mappings":";;;;;;;;;;AA0FA,SAAgB,4BAA4B,EAC1C,SACA,UACA,OAAO,eACP,MAAM,aAAa,MACnB,SACuC;CACvC,MAAM,iBAAiB,kBAAkB,SAAS;CAUlD,MAAM,cAAcA,sDARJC,kDAA4B;EAC1C;EACA,UAAU;EACV;EACA,MAAM;EACN;EACD,CAAC,CAEmD;CAErD,MAAM,iBAAiB,OACrB,KACA,KACA,SACG;AACH,MAAI;AACF,SAAM,YAAY,KAAK,IAAI;WACpB,KAAK;AACZ,QAAK,IAAI;;;CAIb,MAAM,SAAS,gBAAQ,QAAQ;AAG/B,KAAI,YAAY;EACd,MAAM,aACJ,eAAe,OACX;GACE,QAAQ;GACR,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;IACA;IACD;GACD,gBAAgB,CAAC,IAAI;GACtB,GACD;AACN,SAAO,sBAAS,WAAW,CAAC;;AAI9B,KAAI,SAAS,gBAAgB;AAC3B,SAAO,KAAK,gBAAgB,eAAe;AAC3C,SAAO,QAAQ,gBAAgB,eAAe;YACrC,mBAAmB,IAC5B,QAAO,IAAI,KAAK,eAAe;MAC1B;AACL,SAAO,IAAI,GAAG,eAAe,KAAK,eAAe;AACjD,SAAO,IAAI,gBAAgB,eAAe;;AAG5C,QAAO;;AAGT,SAAS,kBAAkB,MAAsB;AAC/C,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,iDAAiD;AAGnE,KAAI,CAAC,KAAK,WAAW,IAAI,CACvB,QAAO,IAAI;AAGb,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,IAAI,CACvC,QAAO,KAAK,MAAM,GAAG,GAAG;AAG1B,QAAO"}
|
|
@@ -1,16 +1,38 @@
|
|
|
1
1
|
|
|
2
|
-
import { CopilotRuntimeLike } from "../runtime.cjs";
|
|
2
|
+
import { CopilotRuntimeLike } from "../core/runtime.cjs";
|
|
3
|
+
import { CopilotRuntimeHooks } from "../core/hooks.cjs";
|
|
3
4
|
import { Router } from "express";
|
|
5
|
+
import { CorsOptions } from "cors";
|
|
4
6
|
|
|
5
7
|
//#region src/v2/runtime/endpoints/express.d.ts
|
|
6
8
|
interface CopilotExpressEndpointParams {
|
|
7
9
|
runtime: CopilotRuntimeLike;
|
|
8
10
|
basePath: string;
|
|
11
|
+
/**
|
|
12
|
+
* Endpoint mode.
|
|
13
|
+
* - `"multi-route"` (default): separate routes for each operation
|
|
14
|
+
* - `"single-route"`: single POST endpoint with JSON envelope dispatch
|
|
15
|
+
*/
|
|
16
|
+
mode?: "multi-route" | "single-route";
|
|
17
|
+
/**
|
|
18
|
+
* CORS configuration for the Express router.
|
|
19
|
+
* - `true` (default): permissive CORS (`origin: "*"`, all methods, all headers).
|
|
20
|
+
* - `false`: no CORS middleware is applied — handle it yourself.
|
|
21
|
+
* - object: passed directly to the Express `cors()` middleware.
|
|
22
|
+
*/
|
|
23
|
+
cors?: boolean | CorsOptions;
|
|
24
|
+
/**
|
|
25
|
+
* Lifecycle hooks for request processing.
|
|
26
|
+
*/
|
|
27
|
+
hooks?: CopilotRuntimeHooks;
|
|
9
28
|
}
|
|
10
|
-
declare function
|
|
29
|
+
declare function createCopilotExpressHandler({
|
|
11
30
|
runtime,
|
|
12
|
-
basePath
|
|
31
|
+
basePath,
|
|
32
|
+
mode,
|
|
33
|
+
cors: corsOption,
|
|
34
|
+
hooks
|
|
13
35
|
}: CopilotExpressEndpointParams): Router;
|
|
14
36
|
//#endregion
|
|
15
|
-
export {
|
|
37
|
+
export { CopilotExpressEndpointParams, createCopilotExpressHandler };
|
|
16
38
|
//# sourceMappingURL=express.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.cts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"express.d.cts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":";;;;;;;UAciB,4BAAA;EACf,OAAA,EAAS,kBAAA;EACT,QAAA;EAF2C;;;;;EAS3C,IAAA;EAa2B;;;;;;EAL3B,IAAA,aAAiB,WAAA;EAKjB;;;EAAA,KAAA,GAAQ,mBAAA;AAAA;AAAA,iBAsDM,2BAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA;EACA,IAAA,EAAM,UAAA;EACN;AAAA,GACC,4BAAA,GAA+B,MAAA"}
|