@copilotkit/runtime 2.0.0-next.1 → 2.0.0-rc.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/LICENSE +21 -0
- package/README.md +135 -1
- package/dist/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/_virtual/_rolldown/runtime.mjs +20 -0
- package/dist/agent/converters/aisdk.cjs +355 -0
- package/dist/agent/converters/aisdk.cjs.map +1 -0
- package/dist/agent/converters/aisdk.d.cts +22 -0
- package/dist/agent/converters/aisdk.d.cts.map +1 -0
- package/dist/agent/converters/aisdk.d.mts +22 -0
- package/dist/agent/converters/aisdk.d.mts.map +1 -0
- package/dist/agent/converters/aisdk.mjs +351 -0
- package/dist/agent/converters/aisdk.mjs.map +1 -0
- package/dist/agent/converters/index.d.mts +2 -0
- package/dist/agent/converters/tanstack.cjs +374 -0
- package/dist/agent/converters/tanstack.cjs.map +1 -0
- package/dist/agent/converters/tanstack.d.cts +83 -0
- package/dist/agent/converters/tanstack.d.cts.map +1 -0
- package/dist/agent/converters/tanstack.d.mts +83 -0
- package/dist/agent/converters/tanstack.d.mts.map +1 -0
- package/dist/agent/converters/tanstack.mjs +372 -0
- package/dist/agent/converters/tanstack.mjs.map +1 -0
- package/dist/agent/converters/usage.cjs +68 -0
- package/dist/agent/converters/usage.cjs.map +1 -0
- package/dist/agent/converters/usage.d.cts +19 -0
- package/dist/agent/converters/usage.d.cts.map +1 -0
- package/dist/agent/converters/usage.d.mts +19 -0
- package/dist/agent/converters/usage.d.mts.map +1 -0
- package/dist/agent/converters/usage.mjs +62 -0
- package/dist/agent/converters/usage.mjs.map +1 -0
- package/dist/agent/index.cjs +1328 -0
- package/dist/agent/index.cjs.map +1 -0
- package/dist/agent/index.d.cts +467 -0
- package/dist/agent/index.d.cts.map +1 -0
- package/dist/agent/index.d.mts +468 -0
- package/dist/agent/index.d.mts.map +1 -0
- package/dist/agent/index.mjs +1318 -0
- package/dist/agent/index.mjs.map +1 -0
- package/dist/agent/learned-skills.cjs +76 -0
- package/dist/agent/learned-skills.cjs.map +1 -0
- package/dist/agent/learned-skills.d.cts +15 -0
- package/dist/agent/learned-skills.d.cts.map +1 -0
- package/dist/agent/learned-skills.d.mts +15 -0
- package/dist/agent/learned-skills.d.mts.map +1 -0
- package/dist/agent/learned-skills.mjs +74 -0
- package/dist/agent/learned-skills.mjs.map +1 -0
- package/dist/agent/mcp-tool-names.cjs +82 -0
- package/dist/agent/mcp-tool-names.cjs.map +1 -0
- package/dist/agent/mcp-tool-names.mjs +80 -0
- package/dist/agent/mcp-tool-names.mjs.map +1 -0
- package/dist/agent/state-delta.cjs +321 -0
- package/dist/agent/state-delta.cjs.map +1 -0
- package/dist/agent/state-delta.mjs +320 -0
- package/dist/agent/state-delta.mjs.map +1 -0
- package/dist/agent/url-download.cjs +503 -0
- package/dist/agent/url-download.cjs.map +1 -0
- package/dist/agent/url-download.d.cts +79 -0
- package/dist/agent/url-download.d.cts.map +1 -0
- package/dist/agent/url-download.d.mts +79 -0
- package/dist/agent/url-download.d.mts.map +1 -0
- package/dist/agent/url-download.mjs +500 -0
- package/dist/agent/url-download.mjs.map +1 -0
- package/dist/express.cjs +7 -0
- package/dist/express.d.cts +4 -0
- package/dist/express.d.mts +4 -0
- package/dist/express.mjs +4 -0
- package/dist/hono.cjs +8 -0
- package/dist/hono.d.cts +4 -0
- package/dist/hono.d.mts +4 -0
- package/dist/hono.mjs +4 -0
- package/dist/index.cjs +86 -0
- package/dist/index.d.cts +28 -0
- package/dist/index.d.mts +28 -0
- package/dist/index.mjs +21 -5598
- package/dist/internal/learned-skills.cjs +21 -0
- package/dist/internal/learned-skills.d.cts +9 -0
- package/dist/internal/learned-skills.d.mts +9 -0
- package/dist/internal/learned-skills.mjs +9 -0
- package/dist/node.cjs +7 -0
- package/dist/node.d.cts +4 -0
- package/dist/node.d.mts +4 -0
- package/dist/node.mjs +4 -0
- package/dist/runtime/core/channel-activation-config.cjs +87 -0
- package/dist/runtime/core/channel-activation-config.cjs.map +1 -0
- package/dist/runtime/core/channel-activation-config.d.cts +39 -0
- package/dist/runtime/core/channel-activation-config.d.cts.map +1 -0
- package/dist/runtime/core/channel-activation-config.d.mts +39 -0
- package/dist/runtime/core/channel-activation-config.d.mts.map +1 -0
- package/dist/runtime/core/channel-activation-config.mjs +85 -0
- package/dist/runtime/core/channel-activation-config.mjs.map +1 -0
- package/dist/runtime/core/channel-manager.cjs +973 -0
- package/dist/runtime/core/channel-manager.cjs.map +1 -0
- package/dist/runtime/core/channel-manager.d.cts +166 -0
- package/dist/runtime/core/channel-manager.d.cts.map +1 -0
- package/dist/runtime/core/channel-manager.d.mts +167 -0
- package/dist/runtime/core/channel-manager.d.mts.map +1 -0
- package/dist/runtime/core/channel-manager.mjs +972 -0
- package/dist/runtime/core/channel-manager.mjs.map +1 -0
- package/dist/runtime/core/debug-event-bus.cjs +57 -0
- package/dist/runtime/core/debug-event-bus.cjs.map +1 -0
- package/dist/runtime/core/debug-event-bus.d.cts +18 -0
- package/dist/runtime/core/debug-event-bus.d.cts.map +1 -0
- package/dist/runtime/core/debug-event-bus.d.mts +18 -0
- package/dist/runtime/core/debug-event-bus.d.mts.map +1 -0
- package/dist/runtime/core/debug-event-bus.mjs +55 -0
- package/dist/runtime/core/debug-event-bus.mjs.map +1 -0
- package/dist/runtime/core/fetch-cors.cjs +71 -0
- package/dist/runtime/core/fetch-cors.cjs.map +1 -0
- package/dist/runtime/core/fetch-cors.d.cts +19 -0
- package/dist/runtime/core/fetch-cors.d.cts.map +1 -0
- package/dist/runtime/core/fetch-cors.d.mts +19 -0
- package/dist/runtime/core/fetch-cors.d.mts.map +1 -0
- package/dist/runtime/core/fetch-cors.mjs +69 -0
- package/dist/runtime/core/fetch-cors.mjs.map +1 -0
- package/dist/runtime/core/fetch-handler.cjs +539 -0
- package/dist/runtime/core/fetch-handler.cjs.map +1 -0
- package/dist/runtime/core/fetch-handler.d.cts +100 -0
- package/dist/runtime/core/fetch-handler.d.cts.map +1 -0
- package/dist/runtime/core/fetch-handler.d.mts +100 -0
- package/dist/runtime/core/fetch-handler.d.mts.map +1 -0
- package/dist/runtime/core/fetch-handler.mjs +538 -0
- package/dist/runtime/core/fetch-handler.mjs.map +1 -0
- package/dist/runtime/core/fetch-router.cjs +141 -0
- package/dist/runtime/core/fetch-router.cjs.map +1 -0
- package/dist/runtime/core/fetch-router.mjs +140 -0
- package/dist/runtime/core/fetch-router.mjs.map +1 -0
- package/dist/runtime/core/hooks.cjs +28 -0
- package/dist/runtime/core/hooks.cjs.map +1 -0
- package/dist/runtime/core/hooks.d.cts +121 -0
- package/dist/runtime/core/hooks.d.cts.map +1 -0
- package/dist/runtime/core/hooks.d.mts +121 -0
- package/dist/runtime/core/hooks.d.mts.map +1 -0
- package/dist/runtime/core/hooks.mjs +24 -0
- package/dist/runtime/core/hooks.mjs.map +1 -0
- package/dist/runtime/core/learning.cjs +61 -0
- package/dist/runtime/core/learning.cjs.map +1 -0
- package/dist/runtime/core/learning.d.cts +61 -0
- package/dist/runtime/core/learning.d.cts.map +1 -0
- package/dist/runtime/core/learning.d.mts +61 -0
- package/dist/runtime/core/learning.d.mts.map +1 -0
- package/dist/runtime/core/learning.mjs +56 -0
- package/dist/runtime/core/learning.mjs.map +1 -0
- package/dist/runtime/core/logger.cjs +21 -0
- package/dist/runtime/core/logger.cjs.map +1 -0
- package/dist/runtime/core/logger.d.cts +12 -0
- package/dist/runtime/core/logger.d.cts.map +1 -0
- package/dist/runtime/core/logger.d.mts +12 -0
- package/dist/runtime/core/logger.d.mts.map +1 -0
- package/dist/runtime/core/logger.mjs +18 -0
- package/dist/runtime/core/logger.mjs.map +1 -0
- package/dist/runtime/core/middleware-sse-parser.cjs +149 -0
- package/dist/runtime/core/middleware-sse-parser.cjs.map +1 -0
- package/dist/runtime/core/middleware-sse-parser.d.cts +21 -0
- package/dist/runtime/core/middleware-sse-parser.d.cts.map +1 -0
- package/dist/runtime/core/middleware-sse-parser.d.mts +21 -0
- package/dist/runtime/core/middleware-sse-parser.d.mts.map +1 -0
- package/dist/runtime/core/middleware-sse-parser.mjs +148 -0
- package/dist/runtime/core/middleware-sse-parser.mjs.map +1 -0
- package/dist/runtime/core/middleware.cjs +34 -0
- package/dist/runtime/core/middleware.cjs.map +1 -0
- package/dist/runtime/core/middleware.d.cts +31 -0
- package/dist/runtime/core/middleware.d.cts.map +1 -0
- package/dist/runtime/core/middleware.d.mts +31 -0
- package/dist/runtime/core/middleware.d.mts.map +1 -0
- package/dist/runtime/core/middleware.mjs +32 -0
- package/dist/runtime/core/middleware.mjs.map +1 -0
- package/dist/runtime/core/package-info.cjs +9 -0
- package/dist/runtime/core/package-info.cjs.map +1 -0
- package/dist/runtime/core/package-info.mjs +7 -0
- package/dist/runtime/core/package-info.mjs.map +1 -0
- package/dist/runtime/core/runtime-error-reporter.cjs +21 -0
- package/dist/runtime/core/runtime-error-reporter.cjs.map +1 -0
- package/dist/runtime/core/runtime-error-reporter.mjs +18 -0
- package/dist/runtime/core/runtime-error-reporter.mjs.map +1 -0
- package/dist/runtime/core/runtime.cjs +256 -0
- package/dist/runtime/core/runtime.cjs.map +1 -0
- package/dist/runtime/core/runtime.d.cts +481 -0
- package/dist/runtime/core/runtime.d.cts.map +1 -0
- package/dist/runtime/core/runtime.d.mts +481 -0
- package/dist/runtime/core/runtime.d.mts.map +1 -0
- package/dist/runtime/core/runtime.mjs +249 -0
- package/dist/runtime/core/runtime.mjs.map +1 -0
- package/dist/runtime/endpoints/auto-start-channels.cjs +46 -0
- package/dist/runtime/endpoints/auto-start-channels.cjs.map +1 -0
- package/dist/runtime/endpoints/auto-start-channels.mjs +45 -0
- package/dist/runtime/endpoints/auto-start-channels.mjs.map +1 -0
- package/dist/runtime/endpoints/express-single.cjs +43 -0
- package/dist/runtime/endpoints/express-single.cjs.map +1 -0
- package/dist/runtime/endpoints/express-single.d.cts +48 -0
- package/dist/runtime/endpoints/express-single.d.cts.map +1 -0
- package/dist/runtime/endpoints/express-single.d.mts +48 -0
- package/dist/runtime/endpoints/express-single.d.mts.map +1 -0
- package/dist/runtime/endpoints/express-single.mjs +43 -0
- package/dist/runtime/endpoints/express-single.mjs.map +1 -0
- package/dist/runtime/endpoints/express.cjs +68 -0
- package/dist/runtime/endpoints/express.cjs.map +1 -0
- package/dist/runtime/endpoints/express.d.cts +84 -0
- package/dist/runtime/endpoints/express.d.cts.map +1 -0
- package/dist/runtime/endpoints/express.d.mts +84 -0
- package/dist/runtime/endpoints/express.d.mts.map +1 -0
- package/dist/runtime/endpoints/express.mjs +66 -0
- package/dist/runtime/endpoints/express.mjs.map +1 -0
- package/dist/runtime/endpoints/hono-single.cjs +28 -0
- package/dist/runtime/endpoints/hono-single.cjs.map +1 -0
- package/dist/runtime/endpoints/hono-single.d.cts +43 -0
- package/dist/runtime/endpoints/hono-single.d.cts.map +1 -0
- package/dist/runtime/endpoints/hono-single.d.mts +43 -0
- package/dist/runtime/endpoints/hono-single.d.mts.map +1 -0
- package/dist/runtime/endpoints/hono-single.mjs +27 -0
- package/dist/runtime/endpoints/hono-single.mjs.map +1 -0
- package/dist/runtime/endpoints/hono.cjs +37 -0
- package/dist/runtime/endpoints/hono.cjs.map +1 -0
- package/dist/runtime/endpoints/hono.d.cts +96 -0
- package/dist/runtime/endpoints/hono.d.cts.map +1 -0
- package/dist/runtime/endpoints/hono.d.mts +96 -0
- package/dist/runtime/endpoints/hono.d.mts.map +1 -0
- package/dist/runtime/endpoints/hono.mjs +34 -0
- package/dist/runtime/endpoints/hono.mjs.map +1 -0
- package/dist/runtime/endpoints/index.d.cts +4 -0
- package/dist/runtime/endpoints/index.d.mts +4 -0
- package/dist/runtime/endpoints/load-express.cjs +35 -0
- package/dist/runtime/endpoints/load-express.cjs.map +1 -0
- package/dist/runtime/endpoints/load-express.mjs +34 -0
- package/dist/runtime/endpoints/load-express.mjs.map +1 -0
- package/dist/runtime/endpoints/node-fetch-handler.cjs +75 -0
- package/dist/runtime/endpoints/node-fetch-handler.cjs.map +1 -0
- package/dist/runtime/endpoints/node-fetch-handler.d.cts +11 -0
- package/dist/runtime/endpoints/node-fetch-handler.d.cts.map +1 -0
- package/dist/runtime/endpoints/node-fetch-handler.d.mts +11 -0
- package/dist/runtime/endpoints/node-fetch-handler.d.mts.map +1 -0
- package/dist/runtime/endpoints/node-fetch-handler.mjs +73 -0
- package/dist/runtime/endpoints/node-fetch-handler.mjs.map +1 -0
- package/dist/runtime/endpoints/node.cjs +16 -0
- package/dist/runtime/endpoints/node.cjs.map +1 -0
- package/dist/runtime/endpoints/node.d.cts +104 -0
- package/dist/runtime/endpoints/node.d.cts.map +1 -0
- package/dist/runtime/endpoints/node.d.mts +104 -0
- package/dist/runtime/endpoints/node.d.mts.map +1 -0
- package/dist/runtime/endpoints/node.mjs +16 -0
- package/dist/runtime/endpoints/node.mjs.map +1 -0
- package/dist/runtime/endpoints/single-route-helpers.cjs +130 -0
- package/dist/runtime/endpoints/single-route-helpers.cjs.map +1 -0
- package/dist/runtime/endpoints/single-route-helpers.mjs +125 -0
- package/dist/runtime/endpoints/single-route-helpers.mjs.map +1 -0
- package/dist/runtime/express.d.cts +2 -0
- package/dist/runtime/express.d.mts +2 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.cjs +393 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.cjs.map +1 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.d.cts +20 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.d.cts.map +1 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.d.mts +20 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.d.mts.map +1 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.mjs +392 -0
- package/dist/runtime/generative-ui/generative-ui-middleware.mjs.map +1 -0
- package/dist/runtime/generative-ui/index.d.cts +2 -0
- package/dist/runtime/generative-ui/index.d.mts +2 -0
- package/dist/runtime/generative-ui/surface-writer.cjs +85 -0
- package/dist/runtime/generative-ui/surface-writer.cjs.map +1 -0
- package/dist/runtime/generative-ui/surface-writer.d.cts +32 -0
- package/dist/runtime/generative-ui/surface-writer.d.cts.map +1 -0
- package/dist/runtime/generative-ui/surface-writer.d.mts +32 -0
- package/dist/runtime/generative-ui/surface-writer.d.mts.map +1 -0
- package/dist/runtime/generative-ui/surface-writer.mjs +84 -0
- package/dist/runtime/generative-ui/surface-writer.mjs.map +1 -0
- package/dist/runtime/handlers/get-runtime-info.cjs +140 -0
- package/dist/runtime/handlers/get-runtime-info.cjs.map +1 -0
- package/dist/runtime/handlers/get-runtime-info.mjs +140 -0
- package/dist/runtime/handlers/get-runtime-info.mjs.map +1 -0
- package/dist/runtime/handlers/handle-connect.cjs +62 -0
- package/dist/runtime/handlers/handle-connect.cjs.map +1 -0
- package/dist/runtime/handlers/handle-connect.mjs +62 -0
- package/dist/runtime/handlers/handle-connect.mjs.map +1 -0
- package/dist/runtime/handlers/handle-debug-events.cjs +33 -0
- package/dist/runtime/handlers/handle-debug-events.cjs.map +1 -0
- package/dist/runtime/handlers/handle-debug-events.mjs +33 -0
- package/dist/runtime/handlers/handle-debug-events.mjs.map +1 -0
- package/dist/runtime/handlers/handle-inspector-learning.cjs +56 -0
- package/dist/runtime/handlers/handle-inspector-learning.cjs.map +1 -0
- package/dist/runtime/handlers/handle-inspector-learning.mjs +55 -0
- package/dist/runtime/handlers/handle-inspector-learning.mjs.map +1 -0
- package/dist/runtime/handlers/handle-inspector-metadata.cjs +36 -0
- package/dist/runtime/handlers/handle-inspector-metadata.cjs.map +1 -0
- package/dist/runtime/handlers/handle-inspector-metadata.mjs +35 -0
- package/dist/runtime/handlers/handle-inspector-metadata.mjs.map +1 -0
- package/dist/runtime/handlers/handle-run.cjs +111 -0
- package/dist/runtime/handlers/handle-run.cjs.map +1 -0
- package/dist/runtime/handlers/handle-run.mjs +110 -0
- package/dist/runtime/handlers/handle-run.mjs.map +1 -0
- package/dist/runtime/handlers/handle-stop.cjs +102 -0
- package/dist/runtime/handlers/handle-stop.cjs.map +1 -0
- package/dist/runtime/handlers/handle-stop.mjs +101 -0
- package/dist/runtime/handlers/handle-stop.mjs.map +1 -0
- package/dist/runtime/handlers/handle-suggest.cjs +83 -0
- package/dist/runtime/handlers/handle-suggest.cjs.map +1 -0
- package/dist/runtime/handlers/handle-suggest.mjs +82 -0
- package/dist/runtime/handlers/handle-suggest.mjs.map +1 -0
- package/dist/runtime/handlers/handle-trajectory-connect.cjs +40 -0
- package/dist/runtime/handlers/handle-trajectory-connect.cjs.map +1 -0
- package/dist/runtime/handlers/handle-trajectory-connect.mjs +39 -0
- package/dist/runtime/handlers/handle-trajectory-connect.mjs.map +1 -0
- package/dist/runtime/handlers/handle-transcribe.cjs +112 -0
- package/dist/runtime/handlers/handle-transcribe.cjs.map +1 -0
- package/dist/runtime/handlers/handle-transcribe.mjs +111 -0
- package/dist/runtime/handlers/handle-transcribe.mjs.map +1 -0
- package/dist/runtime/handlers/header-utils.cjs +185 -0
- package/dist/runtime/handlers/header-utils.cjs.map +1 -0
- package/dist/runtime/handlers/header-utils.d.cts +53 -0
- package/dist/runtime/handlers/header-utils.d.cts.map +1 -0
- package/dist/runtime/handlers/header-utils.d.mts +53 -0
- package/dist/runtime/handlers/header-utils.d.mts.map +1 -0
- package/dist/runtime/handlers/header-utils.mjs +183 -0
- package/dist/runtime/handlers/header-utils.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/annotate.cjs +83 -0
- package/dist/runtime/handlers/intelligence/annotate.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/annotate.mjs +82 -0
- package/dist/runtime/handlers/intelligence/annotate.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/connect.cjs +68 -0
- package/dist/runtime/handlers/intelligence/connect.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/connect.mjs +68 -0
- package/dist/runtime/handlers/intelligence/connect.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/memories.cjs +260 -0
- package/dist/runtime/handlers/intelligence/memories.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/memories.mjs +254 -0
- package/dist/runtime/handlers/intelligence/memories.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/run.cjs +283 -0
- package/dist/runtime/handlers/intelligence/run.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/run.mjs +282 -0
- package/dist/runtime/handlers/intelligence/run.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/thread-names.cjs +172 -0
- package/dist/runtime/handlers/intelligence/thread-names.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/thread-names.mjs +171 -0
- package/dist/runtime/handlers/intelligence/thread-names.mjs.map +1 -0
- package/dist/runtime/handlers/intelligence/threads.cjs +399 -0
- package/dist/runtime/handlers/intelligence/threads.cjs.map +1 -0
- package/dist/runtime/handlers/intelligence/threads.mjs +390 -0
- package/dist/runtime/handlers/intelligence/threads.mjs.map +1 -0
- package/dist/runtime/handlers/shared/agent-utils.cjs +267 -0
- package/dist/runtime/handlers/shared/agent-utils.cjs.map +1 -0
- package/dist/runtime/handlers/shared/agent-utils.mjs +262 -0
- package/dist/runtime/handlers/shared/agent-utils.mjs.map +1 -0
- package/dist/runtime/handlers/shared/cloud-telemetry.cjs +30 -0
- package/dist/runtime/handlers/shared/cloud-telemetry.cjs.map +1 -0
- package/dist/runtime/handlers/shared/cloud-telemetry.mjs +29 -0
- package/dist/runtime/handlers/shared/cloud-telemetry.mjs.map +1 -0
- package/dist/runtime/handlers/shared/describe-endpoint.cjs +25 -0
- package/dist/runtime/handlers/shared/describe-endpoint.cjs.map +1 -0
- package/dist/runtime/handlers/shared/describe-endpoint.mjs +24 -0
- package/dist/runtime/handlers/shared/describe-endpoint.mjs.map +1 -0
- package/dist/runtime/handlers/shared/intelligence-utils.cjs +24 -0
- package/dist/runtime/handlers/shared/intelligence-utils.cjs.map +1 -0
- package/dist/runtime/handlers/shared/intelligence-utils.mjs +23 -0
- package/dist/runtime/handlers/shared/intelligence-utils.mjs.map +1 -0
- package/dist/runtime/handlers/shared/json-response.cjs +14 -0
- package/dist/runtime/handlers/shared/json-response.cjs.map +1 -0
- package/dist/runtime/handlers/shared/json-response.mjs +12 -0
- package/dist/runtime/handlers/shared/json-response.mjs.map +1 -0
- package/dist/runtime/handlers/shared/mcp-apps-servers.cjs +22 -0
- package/dist/runtime/handlers/shared/mcp-apps-servers.cjs.map +1 -0
- package/dist/runtime/handlers/shared/mcp-apps-servers.mjs +22 -0
- package/dist/runtime/handlers/shared/mcp-apps-servers.mjs.map +1 -0
- package/dist/runtime/handlers/shared/memory-policy.cjs +78 -0
- package/dist/runtime/handlers/shared/memory-policy.cjs.map +1 -0
- package/dist/runtime/handlers/shared/memory-policy.mjs +77 -0
- package/dist/runtime/handlers/shared/memory-policy.mjs.map +1 -0
- package/dist/runtime/handlers/shared/platform-error.cjs +39 -0
- package/dist/runtime/handlers/shared/platform-error.cjs.map +1 -0
- package/dist/runtime/handlers/shared/platform-error.mjs +39 -0
- package/dist/runtime/handlers/shared/platform-error.mjs.map +1 -0
- package/dist/runtime/handlers/shared/resolve-intelligence-user.cjs +50 -0
- package/dist/runtime/handlers/shared/resolve-intelligence-user.cjs.map +1 -0
- package/dist/runtime/handlers/shared/resolve-intelligence-user.mjs +49 -0
- package/dist/runtime/handlers/shared/resolve-intelligence-user.mjs.map +1 -0
- package/dist/runtime/handlers/shared/sse-keep-alive.cjs +68 -0
- package/dist/runtime/handlers/shared/sse-keep-alive.cjs.map +1 -0
- package/dist/runtime/handlers/shared/sse-keep-alive.mjs +66 -0
- package/dist/runtime/handlers/shared/sse-keep-alive.mjs.map +1 -0
- package/dist/runtime/handlers/shared/sse-response.cjs +237 -0
- package/dist/runtime/handlers/shared/sse-response.cjs.map +1 -0
- package/dist/runtime/handlers/shared/sse-response.mjs +236 -0
- package/dist/runtime/handlers/shared/sse-response.mjs.map +1 -0
- package/dist/runtime/handlers/shared/thread-access.cjs +137 -0
- package/dist/runtime/handlers/shared/thread-access.cjs.map +1 -0
- package/dist/runtime/handlers/shared/thread-access.d.cts +28 -0
- package/dist/runtime/handlers/shared/thread-access.d.cts.map +1 -0
- package/dist/runtime/handlers/shared/thread-access.d.mts +28 -0
- package/dist/runtime/handlers/shared/thread-access.d.mts.map +1 -0
- package/dist/runtime/handlers/shared/thread-access.mjs +132 -0
- package/dist/runtime/handlers/shared/thread-access.mjs.map +1 -0
- package/dist/runtime/handlers/sse/connect.cjs +23 -0
- package/dist/runtime/handlers/sse/connect.cjs.map +1 -0
- package/dist/runtime/handlers/sse/connect.mjs +23 -0
- package/dist/runtime/handlers/sse/connect.mjs.map +1 -0
- package/dist/runtime/handlers/sse/run.cjs +44 -0
- package/dist/runtime/handlers/sse/run.cjs.map +1 -0
- package/dist/runtime/handlers/sse/run.mjs +44 -0
- package/dist/runtime/handlers/sse/run.mjs.map +1 -0
- package/dist/runtime/hono.d.cts +2 -0
- package/dist/runtime/hono.d.mts +2 -0
- package/dist/runtime/index.d.cts +34 -0
- package/dist/runtime/index.d.cts.map +1 -0
- package/dist/runtime/index.d.mts +34 -0
- package/dist/runtime/index.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/client.cjs +1338 -0
- package/dist/runtime/intelligence-platform/client.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/client.d.cts +824 -0
- package/dist/runtime/intelligence-platform/client.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/client.d.mts +824 -0
- package/dist/runtime/intelligence-platform/client.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/client.mjs +1334 -0
- package/dist/runtime/intelligence-platform/client.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/experimental.d.cts +26 -0
- package/dist/runtime/intelligence-platform/experimental.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/experimental.d.mts +26 -0
- package/dist/runtime/intelligence-platform/experimental.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/index.d.cts +3 -0
- package/dist/runtime/intelligence-platform/index.d.mts +3 -0
- package/dist/runtime/intelligence-platform/learned-skills.cjs +95 -0
- package/dist/runtime/intelligence-platform/learned-skills.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/learned-skills.d.cts +43 -0
- package/dist/runtime/intelligence-platform/learned-skills.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/learned-skills.d.mts +43 -0
- package/dist/runtime/intelligence-platform/learned-skills.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/learned-skills.mjs +92 -0
- package/dist/runtime/intelligence-platform/learned-skills.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/learning-management.cjs +203 -0
- package/dist/runtime/intelligence-platform/learning-management.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/learning-management.d.cts +111 -0
- package/dist/runtime/intelligence-platform/learning-management.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/learning-management.d.mts +111 -0
- package/dist/runtime/intelligence-platform/learning-management.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/learning-management.mjs +193 -0
- package/dist/runtime/intelligence-platform/learning-management.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.cjs +131 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.d.cts +10 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.d.mts +10 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.mjs +127 -0
- package/dist/runtime/intelligence-platform/skill-registry/archive.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.cjs +65 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.d.cts +47 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.d.mts +47 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.mjs +65 -0
- package/dist/runtime/intelligence-platform/skill-registry/config.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.cjs +10 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.d.cts +7 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.d.mts +7 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.mjs +10 -0
- package/dist/runtime/intelligence-platform/skill-registry/errors.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/index.d.cts +7 -0
- package/dist/runtime/intelligence-platform/skill-registry/index.d.mts +7 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.cjs +247 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.d.cts +36 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.d.mts +36 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.mjs +246 -0
- package/dist/runtime/intelligence-platform/skill-registry/registry.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.cjs +41 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.d.cts +12 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.d.mts +12 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.mjs +38 -0
- package/dist/runtime/intelligence-platform/skill-registry/skill-content.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.cjs +92 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.d.cts +27 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.d.mts +27 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.mjs +91 -0
- package/dist/runtime/intelligence-platform/skill-registry/snapshot.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/thread-lock-heartbeat.cjs +142 -0
- package/dist/runtime/intelligence-platform/thread-lock-heartbeat.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/thread-lock-heartbeat.mjs +141 -0
- package/dist/runtime/intelligence-platform/thread-lock-heartbeat.mjs.map +1 -0
- package/dist/runtime/intelligence-platform/trajectories.cjs +95 -0
- package/dist/runtime/intelligence-platform/trajectories.cjs.map +1 -0
- package/dist/runtime/intelligence-platform/trajectories.d.cts +11 -0
- package/dist/runtime/intelligence-platform/trajectories.d.cts.map +1 -0
- package/dist/runtime/intelligence-platform/trajectories.d.mts +11 -0
- package/dist/runtime/intelligence-platform/trajectories.d.mts.map +1 -0
- package/dist/runtime/intelligence-platform/trajectories.mjs +91 -0
- package/dist/runtime/intelligence-platform/trajectories.mjs.map +1 -0
- package/dist/runtime/node.d.cts +2 -0
- package/dist/runtime/node.d.mts +2 -0
- package/dist/runtime/runner/agent-runner.cjs +82 -0
- package/dist/runtime/runner/agent-runner.cjs.map +1 -0
- package/dist/runtime/runner/agent-runner.d.cts +151 -0
- package/dist/runtime/runner/agent-runner.d.cts.map +1 -0
- package/dist/runtime/runner/agent-runner.d.mts +151 -0
- package/dist/runtime/runner/agent-runner.d.mts.map +1 -0
- package/dist/runtime/runner/agent-runner.mjs +73 -0
- package/dist/runtime/runner/agent-runner.mjs.map +1 -0
- package/dist/runtime/runner/in-memory.cjs +741 -0
- package/dist/runtime/runner/in-memory.cjs.map +1 -0
- package/dist/runtime/runner/in-memory.d.cts +427 -0
- package/dist/runtime/runner/in-memory.d.cts.map +1 -0
- package/dist/runtime/runner/in-memory.d.mts +427 -0
- package/dist/runtime/runner/in-memory.d.mts.map +1 -0
- package/dist/runtime/runner/in-memory.mjs +734 -0
- package/dist/runtime/runner/in-memory.mjs.map +1 -0
- package/dist/runtime/runner/index.d.cts +5 -0
- package/dist/runtime/runner/index.d.mts +5 -0
- package/dist/runtime/runner/index.mjs +6 -0
- package/dist/runtime/runner/intelligence.cjs +617 -0
- package/dist/runtime/runner/intelligence.cjs.map +1 -0
- package/dist/runtime/runner/intelligence.d.cts +104 -0
- package/dist/runtime/runner/intelligence.d.cts.map +1 -0
- package/dist/runtime/runner/intelligence.d.mts +104 -0
- package/dist/runtime/runner/intelligence.d.mts.map +1 -0
- package/dist/runtime/runner/intelligence.mjs +616 -0
- package/dist/runtime/runner/intelligence.mjs.map +1 -0
- package/dist/runtime/telemetry/disclosure.cjs +25 -0
- package/dist/runtime/telemetry/disclosure.cjs.map +1 -0
- package/dist/runtime/telemetry/disclosure.mjs +24 -0
- package/dist/runtime/telemetry/disclosure.mjs.map +1 -0
- package/dist/runtime/telemetry/events.d.cts +66 -0
- package/dist/runtime/telemetry/events.d.cts.map +1 -0
- package/dist/runtime/telemetry/events.d.mts +66 -0
- package/dist/runtime/telemetry/events.d.mts.map +1 -0
- package/dist/runtime/telemetry/instance-created.cjs +34 -0
- package/dist/runtime/telemetry/instance-created.cjs.map +1 -0
- package/dist/runtime/telemetry/instance-created.mjs +34 -0
- package/dist/runtime/telemetry/instance-created.mjs.map +1 -0
- package/dist/runtime/telemetry/telemetry-client.cjs +108 -0
- package/dist/runtime/telemetry/telemetry-client.cjs.map +1 -0
- package/dist/runtime/telemetry/telemetry-client.d.cts +10 -0
- package/dist/runtime/telemetry/telemetry-client.d.cts.map +1 -0
- package/dist/runtime/telemetry/telemetry-client.d.mts +10 -0
- package/dist/runtime/telemetry/telemetry-client.d.mts.map +1 -0
- package/dist/runtime/telemetry/telemetry-client.mjs +107 -0
- package/dist/runtime/telemetry/telemetry-client.mjs.map +1 -0
- package/dist/runtime/telemetry/telemetry-identity.cjs +12 -0
- package/dist/runtime/telemetry/telemetry-identity.cjs.map +1 -0
- package/dist/runtime/telemetry/telemetry-identity.mjs +11 -0
- package/dist/runtime/telemetry/telemetry-identity.mjs.map +1 -0
- package/dist/runtime/transcription-service/transcription-service.cjs +7 -0
- package/dist/runtime/transcription-service/transcription-service.cjs.map +1 -0
- package/dist/runtime/transcription-service/transcription-service.d.cts +14 -0
- package/dist/runtime/transcription-service/transcription-service.d.cts.map +1 -0
- package/dist/runtime/transcription-service/transcription-service.d.mts +14 -0
- package/dist/runtime/transcription-service/transcription-service.d.mts.map +1 -0
- package/dist/runtime/transcription-service/transcription-service.mjs +6 -0
- package/dist/runtime/transcription-service/transcription-service.mjs.map +1 -0
- package/package.json +119 -104
- package/.eslintrc.js +0 -7
- package/CHANGELOG.md +0 -2920
- package/__snapshots__/schema/schema.graphql +0 -371
- package/dist/index.d.ts +0 -1494
- package/dist/index.js +0 -5641
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/langgraph.d.ts +0 -284
- package/dist/langgraph.js +0 -211
- package/dist/langgraph.js.map +0 -1
- package/dist/langgraph.mjs +0 -206
- package/dist/langgraph.mjs.map +0 -1
- package/dist/v2/index.d.ts +0 -2
- package/dist/v2/index.js +0 -22
- package/dist/v2/index.js.map +0 -1
- package/dist/v2/index.mjs +0 -5
- package/dist/v2/index.mjs.map +0 -1
- package/jest.config.js +0 -10
- package/scripts/generate-gql-schema.ts +0 -13
- package/src/agents/langgraph/event-source.ts +0 -329
- package/src/agents/langgraph/events.ts +0 -377
- package/src/graphql/inputs/action.input.ts +0 -16
- package/src/graphql/inputs/agent-session.input.ts +0 -13
- package/src/graphql/inputs/agent-state.input.ts +0 -13
- package/src/graphql/inputs/cloud-guardrails.input.ts +0 -16
- package/src/graphql/inputs/cloud.input.ts +0 -8
- package/src/graphql/inputs/context-property.input.ts +0 -10
- package/src/graphql/inputs/copilot-context.input.ts +0 -10
- package/src/graphql/inputs/custom-property.input.ts +0 -15
- package/src/graphql/inputs/extensions.input.ts +0 -21
- package/src/graphql/inputs/forwarded-parameters.input.ts +0 -22
- package/src/graphql/inputs/frontend.input.ts +0 -14
- package/src/graphql/inputs/generate-copilot-response.input.ts +0 -59
- package/src/graphql/inputs/load-agent-state.input.ts +0 -10
- package/src/graphql/inputs/message.input.ts +0 -110
- package/src/graphql/inputs/meta-event.input.ts +0 -18
- package/src/graphql/message-conversion/agui-to-gql.test.ts +0 -1263
- package/src/graphql/message-conversion/agui-to-gql.ts +0 -333
- package/src/graphql/message-conversion/gql-to-agui.test.ts +0 -1580
- package/src/graphql/message-conversion/gql-to-agui.ts +0 -278
- package/src/graphql/message-conversion/index.ts +0 -2
- package/src/graphql/message-conversion/roundtrip-conversion.test.ts +0 -526
- package/src/graphql/resolvers/copilot.resolver.ts +0 -708
- package/src/graphql/resolvers/state.resolver.ts +0 -27
- package/src/graphql/types/agents-response.type.ts +0 -19
- package/src/graphql/types/base/index.ts +0 -10
- package/src/graphql/types/converted/index.ts +0 -176
- package/src/graphql/types/copilot-response.type.ts +0 -138
- package/src/graphql/types/enums.ts +0 -38
- package/src/graphql/types/extensions-response.type.ts +0 -23
- package/src/graphql/types/guardrails-result.type.ts +0 -20
- package/src/graphql/types/load-agent-state-response.type.ts +0 -17
- package/src/graphql/types/message-status.type.ts +0 -42
- package/src/graphql/types/meta-events.type.ts +0 -71
- package/src/graphql/types/response-status.type.ts +0 -66
- package/src/index.ts +0 -4
- package/src/langgraph.ts +0 -1
- package/src/lib/cloud/index.ts +0 -4
- package/src/lib/error-messages.ts +0 -200
- package/src/lib/index.ts +0 -52
- package/src/lib/integrations/index.ts +0 -6
- package/src/lib/integrations/nest/index.ts +0 -14
- package/src/lib/integrations/nextjs/app-router.ts +0 -38
- package/src/lib/integrations/nextjs/pages-router.ts +0 -39
- package/src/lib/integrations/node-express/index.ts +0 -14
- package/src/lib/integrations/node-http/index.ts +0 -143
- package/src/lib/integrations/node-http/request-handler.ts +0 -111
- package/src/lib/integrations/shared.ts +0 -161
- package/src/lib/logger.ts +0 -28
- package/src/lib/observability.ts +0 -160
- package/src/lib/runtime/__tests__/copilot-runtime-error.test.ts +0 -169
- package/src/lib/runtime/__tests__/mcp-tools-utils.test.ts +0 -464
- package/src/lib/runtime/agent-integrations/langgraph/agent.ts +0 -209
- package/src/lib/runtime/agent-integrations/langgraph/consts.ts +0 -34
- package/src/lib/runtime/agent-integrations/langgraph/index.ts +0 -2
- package/src/lib/runtime/copilot-runtime.ts +0 -710
- package/src/lib/runtime/mcp-tools-utils.ts +0 -254
- package/src/lib/runtime/retry-utils.ts +0 -96
- package/src/lib/runtime/telemetry-agent-runner.ts +0 -139
- package/src/lib/runtime/types.ts +0 -49
- package/src/lib/runtime/utils.ts +0 -87
- package/src/lib/streaming.ts +0 -202
- package/src/lib/telemetry-client.ts +0 -64
- package/src/service-adapters/anthropic/anthropic-adapter.ts +0 -452
- package/src/service-adapters/anthropic/utils.ts +0 -152
- package/src/service-adapters/bedrock/bedrock-adapter.ts +0 -73
- package/src/service-adapters/conversion.ts +0 -67
- package/src/service-adapters/empty/empty-adapter.ts +0 -38
- package/src/service-adapters/events.ts +0 -294
- package/src/service-adapters/experimental/ollama/ollama-adapter.ts +0 -84
- package/src/service-adapters/google/google-genai-adapter.test.ts +0 -104
- package/src/service-adapters/google/google-genai-adapter.ts +0 -88
- package/src/service-adapters/groq/groq-adapter.ts +0 -203
- package/src/service-adapters/index.ts +0 -18
- package/src/service-adapters/langchain/langchain-adapter.ts +0 -111
- package/src/service-adapters/langchain/langserve.ts +0 -88
- package/src/service-adapters/langchain/types.ts +0 -14
- package/src/service-adapters/langchain/utils.ts +0 -313
- package/src/service-adapters/openai/openai-adapter.ts +0 -283
- package/src/service-adapters/openai/openai-assistant-adapter.ts +0 -344
- package/src/service-adapters/openai/utils.ts +0 -199
- package/src/service-adapters/service-adapter.ts +0 -41
- package/src/service-adapters/shared/error-utils.ts +0 -61
- package/src/service-adapters/shared/index.ts +0 -1
- package/src/service-adapters/unify/unify-adapter.ts +0 -151
- package/src/utils/failed-response-status-reasons.ts +0 -70
- package/src/utils/index.ts +0 -1
- package/src/v2/index.ts +0 -3
- package/tests/global.d.ts +0 -13
- package/tests/service-adapters/anthropic/allowlist-approach.test.ts +0 -226
- package/tests/service-adapters/anthropic/anthropic-adapter.test.ts +0 -389
- package/tests/service-adapters/openai/allowlist-approach.test.ts +0 -238
- package/tests/service-adapters/openai/openai-adapter.test.ts +0 -301
- package/tests/setup.jest.ts +0 -21
- package/tests/tsconfig.json +0 -10
- package/tsconfig.json +0 -13
- package/tsup.config.ts +0 -20
- package/typedoc.json +0 -4
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_json_response = require('../shared/json-response.cjs');
|
|
3
|
+
const require_learning = require('../../core/learning.cjs');
|
|
4
|
+
const require_intelligence_utils = require('../shared/intelligence-utils.cjs');
|
|
5
|
+
const require_resolve_intelligence_user = require('../shared/resolve-intelligence-user.cjs');
|
|
6
|
+
const require_telemetry_client = require('../../telemetry/telemetry-client.cjs');
|
|
7
|
+
const require_runtime_error_reporter = require('../../core/runtime-error-reporter.cjs');
|
|
8
|
+
const require_thread_lock_heartbeat = require('../../intelligence-platform/thread-lock-heartbeat.cjs');
|
|
9
|
+
const require_thread_names = require('./thread-names.cjs');
|
|
10
|
+
let _copilotkit_shared = require("@copilotkit/shared");
|
|
11
|
+
let _ag_ui_client = require("@ag-ui/client");
|
|
12
|
+
|
|
13
|
+
//#region src/runtime/handlers/intelligence/run.ts
|
|
14
|
+
/**
|
|
15
|
+
* Builds browser-facing realtime connection metadata owned by the runtime.
|
|
16
|
+
*/
|
|
17
|
+
function buildRealtimeConnectionInfo(params) {
|
|
18
|
+
return {
|
|
19
|
+
clientUrl: params.clientUrl,
|
|
20
|
+
topic: `thread:${params.threadId}`
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function hasRunnerStartupBoundary(runner) {
|
|
24
|
+
return typeof runner.runWithStartupBoundary === "function" && (Object.prototype.hasOwnProperty.call(runner, "runWithStartupBoundary") || Object.prototype.hasOwnProperty.call(runner, "threads"));
|
|
25
|
+
}
|
|
26
|
+
async function handleIntelligenceRun({ runtime, request, agentId, agent, input, startTime }) {
|
|
27
|
+
const runtimeTelemetry = runtime.telemetry ?? require_telemetry_client.default;
|
|
28
|
+
if (!runtime.intelligence) return Response.json({
|
|
29
|
+
error: "Intelligence not configured",
|
|
30
|
+
message: "Intelligence mode requires a CopilotKitIntelligence"
|
|
31
|
+
}, { status: 500 });
|
|
32
|
+
const user = await require_resolve_intelligence_user.resolveIntelligenceUser({
|
|
33
|
+
runtime,
|
|
34
|
+
request
|
|
35
|
+
});
|
|
36
|
+
if (require_json_response.isHandlerResponse(user)) return user;
|
|
37
|
+
const userId = user.id;
|
|
38
|
+
const proxyRequest = input.forwardedProps?.__proxiedMCPRequest;
|
|
39
|
+
const isDirectResourceRead = input.forwardedProps?.__copilotkitMcpResourceReadOnly === true && proxyRequest && typeof proxyRequest === "object" && proxyRequest.method === "resources/read";
|
|
40
|
+
const forwardedRequestId = input.forwardedProps?.__copilotkitRequestId;
|
|
41
|
+
const requestId = typeof forwardedRequestId === "string" && forwardedRequestId.length > 0 ? forwardedRequestId : void 0;
|
|
42
|
+
let learningContainerId;
|
|
43
|
+
try {
|
|
44
|
+
const selector = runtime.intelligence.ɵgetLearningContainerId?.();
|
|
45
|
+
learningContainerId = selector ? await require_learning.resolveLearningContainerSelector(selector, {
|
|
46
|
+
surface: "web",
|
|
47
|
+
user,
|
|
48
|
+
agentId,
|
|
49
|
+
input
|
|
50
|
+
}) : await require_learning.resolveLearningContainerId(runtime.learning, {
|
|
51
|
+
surface: "web",
|
|
52
|
+
request,
|
|
53
|
+
threadId: input.threadId,
|
|
54
|
+
runId: input.runId,
|
|
55
|
+
agentId,
|
|
56
|
+
userId
|
|
57
|
+
});
|
|
58
|
+
} catch (error) {
|
|
59
|
+
_copilotkit_shared.logger.error("Failed to resolve Learning Container:", error);
|
|
60
|
+
return Response.json({ error: "Failed to resolve Learning Container" }, { status: 500 });
|
|
61
|
+
}
|
|
62
|
+
let thread;
|
|
63
|
+
try {
|
|
64
|
+
const initialized = await runtime.intelligence.getOrCreateThread({
|
|
65
|
+
threadId: input.threadId,
|
|
66
|
+
userId,
|
|
67
|
+
agentId,
|
|
68
|
+
...learningContainerId !== void 0 ? { learningContainerId } : {}
|
|
69
|
+
});
|
|
70
|
+
thread = initialized.thread;
|
|
71
|
+
const { created } = initialized;
|
|
72
|
+
if (created && runtime.generateThreadNames && !thread.name?.trim()) require_thread_names.generateThreadNameForNewThread({
|
|
73
|
+
runtime,
|
|
74
|
+
request,
|
|
75
|
+
agentId,
|
|
76
|
+
sourceInput: input,
|
|
77
|
+
thread,
|
|
78
|
+
userId
|
|
79
|
+
}).catch((nameError) => {
|
|
80
|
+
_copilotkit_shared.logger.error("Failed to generate thread name:", nameError);
|
|
81
|
+
});
|
|
82
|
+
} catch (error) {
|
|
83
|
+
_copilotkit_shared.logger.error("Failed to get or create thread:", error);
|
|
84
|
+
const platformStatus = require_intelligence_utils.getPlatformErrorStatus(error);
|
|
85
|
+
return Response.json({ error: "Failed to initialize thread" }, { status: platformStatus !== void 0 && platformStatus >= 400 && platformStatus < 500 ? platformStatus : 502 });
|
|
86
|
+
}
|
|
87
|
+
if (isDirectResourceRead) try {
|
|
88
|
+
if (thread.agentId && thread.agentId !== agentId) return Response.json({ error: "Thread belongs to another agent" }, { status: 403 });
|
|
89
|
+
agent.threadId = thread.id;
|
|
90
|
+
const run = await agent.runAgent({
|
|
91
|
+
runId: input.runId,
|
|
92
|
+
tools: input.tools,
|
|
93
|
+
context: input.context,
|
|
94
|
+
forwardedProps: input.forwardedProps
|
|
95
|
+
});
|
|
96
|
+
return Response.json({
|
|
97
|
+
kind: "mcp-resource-read",
|
|
98
|
+
threadId: thread.id,
|
|
99
|
+
runId: input.runId,
|
|
100
|
+
result: run.result ?? null
|
|
101
|
+
});
|
|
102
|
+
} catch (error) {
|
|
103
|
+
_copilotkit_shared.logger.error("MCP resource read failed:", error);
|
|
104
|
+
const status = require_intelligence_utils.getPlatformErrorStatus(error);
|
|
105
|
+
return Response.json({ error: "MCP resource read failed" }, { status: status && status >= 400 && status < 500 ? status : 502 });
|
|
106
|
+
}
|
|
107
|
+
let canonicalThreadId = input.threadId;
|
|
108
|
+
let canonicalRunId = input.runId;
|
|
109
|
+
let joinToken;
|
|
110
|
+
let backendThreadId;
|
|
111
|
+
let lockTtlSeconds;
|
|
112
|
+
let lockRequestedAt = 0;
|
|
113
|
+
try {
|
|
114
|
+
lockRequestedAt = Date.now();
|
|
115
|
+
const lockResult = await runtime.intelligence.ɵacquireThreadLock({
|
|
116
|
+
supportsBackendThreadId: true,
|
|
117
|
+
threadId: input.threadId,
|
|
118
|
+
runId: input.runId,
|
|
119
|
+
userId,
|
|
120
|
+
agentId,
|
|
121
|
+
...learningContainerId !== void 0 ? { learningContainerId } : {},
|
|
122
|
+
...requestId !== void 0 ? { requestId } : {},
|
|
123
|
+
...runtime.lockKeyPrefix !== void 0 ? { lockKeyPrefix: runtime.lockKeyPrefix } : {},
|
|
124
|
+
ttlSeconds: runtime.lockTtlSeconds
|
|
125
|
+
});
|
|
126
|
+
canonicalThreadId = lockResult.threadId;
|
|
127
|
+
canonicalRunId = lockResult.runId;
|
|
128
|
+
joinToken = lockResult.joinToken;
|
|
129
|
+
backendThreadId = lockResult.backendThreadId;
|
|
130
|
+
lockTtlSeconds = lockResult.ttlSeconds;
|
|
131
|
+
} catch (error) {
|
|
132
|
+
_copilotkit_shared.logger.error("Thread lock denied:", error);
|
|
133
|
+
const platformStatus = require_intelligence_utils.getPlatformErrorStatus(error);
|
|
134
|
+
return Response.json({ error: "Thread lock denied" }, { status: platformStatus === 409 ? 409 : 502 });
|
|
135
|
+
}
|
|
136
|
+
const cleanupLock = (reason) => runtime.intelligence.ɵcleanupThreadLock({
|
|
137
|
+
threadId: canonicalThreadId || input.threadId,
|
|
138
|
+
runId: canonicalRunId || input.runId
|
|
139
|
+
}).catch((cleanupError) => {
|
|
140
|
+
_copilotkit_shared.logger.error({
|
|
141
|
+
err: cleanupError,
|
|
142
|
+
reason
|
|
143
|
+
}, "Failed to cleanup thread lock");
|
|
144
|
+
});
|
|
145
|
+
if (!canonicalThreadId || !canonicalRunId || !joinToken) {
|
|
146
|
+
await cleanupLock("malformed-lock-response");
|
|
147
|
+
return Response.json({
|
|
148
|
+
error: "Run connection credentials not available",
|
|
149
|
+
message: "Intelligence platform did not return canonical threadId, runId, and joinToken"
|
|
150
|
+
}, { status: 502 });
|
|
151
|
+
}
|
|
152
|
+
const canonicalInput = {
|
|
153
|
+
...input,
|
|
154
|
+
threadId: canonicalThreadId,
|
|
155
|
+
runId: canonicalRunId
|
|
156
|
+
};
|
|
157
|
+
let persistedInputMessages;
|
|
158
|
+
if (Array.isArray(input.messages)) try {
|
|
159
|
+
const historicMessageIds = new Set(await runtime.intelligence.ɵgetThreadMessageIds({
|
|
160
|
+
threadId: canonicalThreadId,
|
|
161
|
+
userId
|
|
162
|
+
}));
|
|
163
|
+
persistedInputMessages = input.messages.filter((message) => !historicMessageIds.has(message.id));
|
|
164
|
+
} catch (error) {
|
|
165
|
+
_copilotkit_shared.logger.error("Thread history lookup failed:", error);
|
|
166
|
+
await cleanupLock("thread-history-lookup-failed");
|
|
167
|
+
return Response.json({ error: "Thread history lookup failed" }, { status: 502 });
|
|
168
|
+
}
|
|
169
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_started", {});
|
|
170
|
+
const heartbeat = require_thread_lock_heartbeat.startThreadLockHeartbeat({
|
|
171
|
+
renew: (signal) => runtime.intelligence.ɵrenewThreadLock({
|
|
172
|
+
threadId: canonicalThreadId,
|
|
173
|
+
runId: canonicalRunId,
|
|
174
|
+
ttlSeconds: runtime.lockTtlSeconds,
|
|
175
|
+
...runtime.lockKeyPrefix !== void 0 ? { lockKeyPrefix: runtime.lockKeyPrefix } : {},
|
|
176
|
+
signal
|
|
177
|
+
}),
|
|
178
|
+
intervalMs: runtime.lockHeartbeatIntervalSeconds * 1e3,
|
|
179
|
+
fallbackTtlSeconds: runtime.lockTtlSeconds,
|
|
180
|
+
initialTtlSeconds: lockTtlSeconds === void 0 ? void 0 : lockTtlSeconds - (Date.now() - lockRequestedAt) / 1e3,
|
|
181
|
+
onLost: (err) => {
|
|
182
|
+
_copilotkit_shared.logger.error("Failed to renew thread lock:", err);
|
|
183
|
+
try {
|
|
184
|
+
agent.abortRun();
|
|
185
|
+
} catch (abortError) {
|
|
186
|
+
_copilotkit_shared.logger.error("Failed to abort agent after lock renewal failure:", abortError);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
const clearHeartbeat = () => {
|
|
191
|
+
heartbeat.stop();
|
|
192
|
+
};
|
|
193
|
+
const runStarted = { current: false };
|
|
194
|
+
let immediateStartupErrorMessage;
|
|
195
|
+
let immediateStartupCleanup;
|
|
196
|
+
const runRequest = {
|
|
197
|
+
threadId: canonicalThreadId,
|
|
198
|
+
...backendThreadId === void 0 ? {} : { backendThreadId },
|
|
199
|
+
agent,
|
|
200
|
+
input: canonicalInput,
|
|
201
|
+
...persistedInputMessages !== void 0 ? { persistedInputMessages } : {}
|
|
202
|
+
};
|
|
203
|
+
const runtimeErrorReporter = require_runtime_error_reporter.getRuntimeErrorReporter(runtime);
|
|
204
|
+
let agentErrorReported = false;
|
|
205
|
+
const reportAgentError = (error, phase) => {
|
|
206
|
+
if (agentErrorReported) return;
|
|
207
|
+
agentErrorReported = true;
|
|
208
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_errored", { error: "AGENT_EXECUTION_FAILED" });
|
|
209
|
+
runtimeErrorReporter?.report({
|
|
210
|
+
request,
|
|
211
|
+
error,
|
|
212
|
+
operation: "agent.run",
|
|
213
|
+
agentId,
|
|
214
|
+
threadId: canonicalThreadId,
|
|
215
|
+
runId: canonicalRunId,
|
|
216
|
+
phase,
|
|
217
|
+
startTime
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
try {
|
|
221
|
+
const runStart = hasRunnerStartupBoundary(runtime.runner) ? runtime.runner.runWithStartupBoundary(runRequest) : {
|
|
222
|
+
events: runtime.runner.run(runRequest),
|
|
223
|
+
startup: Promise.resolve()
|
|
224
|
+
};
|
|
225
|
+
runStart.events.subscribe({
|
|
226
|
+
next: (event) => {
|
|
227
|
+
if (event.type === _ag_ui_client.EventType.RUN_STARTED) runStarted.current = true;
|
|
228
|
+
if (event.type === _ag_ui_client.EventType.RUN_ERROR) {
|
|
229
|
+
const message = "message" in event && typeof event.message === "string" ? event.message : "Runner failed before the run started";
|
|
230
|
+
reportAgentError(new Error(message), runStarted.current ? "intelligence.subscription" : "intelligence.startup");
|
|
231
|
+
if (!runStarted.current) {
|
|
232
|
+
clearHeartbeat();
|
|
233
|
+
immediateStartupErrorMessage = message;
|
|
234
|
+
immediateStartupCleanup = cleanupLock("runner-start-failed");
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
error: (error) => {
|
|
239
|
+
reportAgentError(error, runStarted.current ? "intelligence.subscription" : "intelligence.startup");
|
|
240
|
+
clearHeartbeat();
|
|
241
|
+
if (!runStarted.current) {
|
|
242
|
+
immediateStartupErrorMessage = error instanceof Error ? error.message : String(error);
|
|
243
|
+
immediateStartupCleanup = cleanupLock("runner-start-error");
|
|
244
|
+
} else cleanupLock("runner-error");
|
|
245
|
+
_copilotkit_shared.logger.error("Error running agent:", error);
|
|
246
|
+
},
|
|
247
|
+
complete: () => {
|
|
248
|
+
clearHeartbeat();
|
|
249
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_ended", {});
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
await runStart.startup;
|
|
253
|
+
} catch (error) {
|
|
254
|
+
reportAgentError(error, "intelligence.startup");
|
|
255
|
+
clearHeartbeat();
|
|
256
|
+
await (immediateStartupCleanup ?? cleanupLock("runner-start-threw"));
|
|
257
|
+
_copilotkit_shared.logger.error("Error starting agent runner:", error);
|
|
258
|
+
return Response.json({
|
|
259
|
+
error: "Failed to start runner",
|
|
260
|
+
message: error instanceof Error ? error.message : String(error)
|
|
261
|
+
}, { status: 502 });
|
|
262
|
+
}
|
|
263
|
+
if (immediateStartupErrorMessage) {
|
|
264
|
+
await immediateStartupCleanup;
|
|
265
|
+
return Response.json({
|
|
266
|
+
error: "Failed to start runner",
|
|
267
|
+
message: immediateStartupErrorMessage
|
|
268
|
+
}, { status: 502 });
|
|
269
|
+
}
|
|
270
|
+
return Response.json({
|
|
271
|
+
threadId: canonicalThreadId,
|
|
272
|
+
runId: canonicalRunId,
|
|
273
|
+
joinToken,
|
|
274
|
+
realtime: buildRealtimeConnectionInfo({
|
|
275
|
+
clientUrl: runtime.intelligence.ɵgetClientWsUrl(),
|
|
276
|
+
threadId: canonicalThreadId
|
|
277
|
+
})
|
|
278
|
+
}, { headers: { "Cache-Control": "no-cache" } });
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
//#endregion
|
|
282
|
+
exports.handleIntelligenceRun = handleIntelligenceRun;
|
|
283
|
+
//# sourceMappingURL=run.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.cjs","names":["telemetry","resolveIntelligenceUser","isHandlerResponse","resolveLearningContainerSelector","resolveLearningContainerId","generateThreadNameForNewThread","getPlatformErrorStatus","startThreadLockHeartbeat","getRuntimeErrorReporter","EventType"],"sources":["../../../../src/runtime/handlers/intelligence/run.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport { EventType } from \"@ag-ui/client\";\nimport type { CopilotIntelligenceRuntimeLike } from \"../../core/runtime\";\nimport { generateThreadNameForNewThread } from \"./thread-names\";\nimport { logger } from \"@copilotkit/shared\";\nimport { telemetry } from \"../../telemetry\";\nimport { resolveIntelligenceUser } from \"../shared/resolve-intelligence-user\";\nimport { isHandlerResponse } from \"../shared/json-response\";\nimport type { AgentRunnerRunRequest } from \"../../runner/agent-runner\";\nimport type { Observable } from \"rxjs\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport type { RuntimeErrorPhase } from \"../../core/runtime-error-reporter\";\nimport {\n resolveLearningContainerId,\n resolveLearningContainerSelector,\n} from \"../../core/learning\";\nimport { getPlatformErrorStatus } from \"../shared/intelligence-utils\";\nimport { startThreadLockHeartbeat } from \"../../intelligence-platform/thread-lock-heartbeat\";\nimport type { ThreadSummary } from \"../../intelligence-platform\";\n\n/**\n * Builds browser-facing realtime connection metadata owned by the runtime.\n */\nfunction buildRealtimeConnectionInfo(params: {\n clientUrl: string;\n threadId: string;\n}): { clientUrl: string; topic: string } {\n return {\n clientUrl: params.clientUrl,\n topic: `thread:${params.threadId}`,\n };\n}\n\ninterface RunnerStartupBoundary {\n events: Observable<BaseEvent>;\n startup: Promise<void>;\n}\n\ninterface RunnerWithStartupBoundary {\n runWithStartupBoundary(request: AgentRunnerRunRequest): RunnerStartupBoundary;\n}\n\nfunction hasRunnerStartupBoundary(\n runner: CopilotIntelligenceRuntimeLike[\"runner\"],\n): runner is CopilotIntelligenceRuntimeLike[\"runner\"] &\n RunnerWithStartupBoundary {\n const candidate = runner as { runWithStartupBoundary?: unknown };\n\n return (\n typeof candidate.runWithStartupBoundary === \"function\" &&\n (Object.prototype.hasOwnProperty.call(runner, \"runWithStartupBoundary\") ||\n Object.prototype.hasOwnProperty.call(runner, \"threads\"))\n );\n}\n\ninterface HandleIntelligenceRunParams {\n runtime: CopilotIntelligenceRuntimeLike;\n request: Request;\n agentId: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n startTime?: number;\n}\n\nexport async function handleIntelligenceRun({\n runtime,\n request,\n agentId,\n agent,\n input,\n startTime,\n}: HandleIntelligenceRunParams): Promise<Response> {\n const runtimeTelemetry = runtime.telemetry ?? telemetry;\n\n if (!runtime.intelligence) {\n return Response.json(\n {\n error: \"Intelligence not configured\",\n message: \"Intelligence mode requires a CopilotKitIntelligence\",\n },\n { status: 500 },\n );\n }\n\n const user = await resolveIntelligenceUser({ runtime, request });\n if (isHandlerResponse(user)) {\n return user;\n }\n const userId = user.id;\n\n const proxyRequest = (\n input.forwardedProps as Record<string, unknown> | undefined\n )?.__proxiedMCPRequest;\n const isDirectResourceRead =\n input.forwardedProps?.__copilotkitMcpResourceReadOnly === true &&\n proxyRequest &&\n typeof proxyRequest === \"object\" &&\n (proxyRequest as { method?: unknown }).method === \"resources/read\";\n\n // CopilotKit core sends one request ID across a request's follow-up runs\n // and resumes. Older clients send none, and the platform then uses the run ID.\n const forwardedRequestId = input.forwardedProps?.__copilotkitRequestId;\n const requestId =\n typeof forwardedRequestId === \"string\" && forwardedRequestId.length > 0\n ? forwardedRequestId\n : undefined;\n\n let learningContainerId: string | undefined;\n try {\n const selector = runtime.intelligence.ɵgetLearningContainerId?.();\n learningContainerId = selector\n ? await resolveLearningContainerSelector(selector, {\n surface: \"web\",\n user,\n agentId,\n input,\n })\n : await resolveLearningContainerId(runtime.learning, {\n surface: \"web\",\n request,\n threadId: input.threadId,\n runId: input.runId,\n agentId,\n userId,\n });\n } catch (error) {\n logger.error(\"Failed to resolve Learning Container:\", error);\n return Response.json(\n { error: \"Failed to resolve Learning Container\" },\n { status: 500 },\n );\n }\n\n let thread: ThreadSummary;\n try {\n const initialized = await runtime.intelligence.getOrCreateThread({\n threadId: input.threadId,\n userId,\n agentId,\n ...(learningContainerId !== undefined ? { learningContainerId } : {}),\n });\n thread = initialized.thread;\n const { created } = initialized;\n\n if (created && runtime.generateThreadNames && !thread.name?.trim()) {\n void generateThreadNameForNewThread({\n runtime,\n request,\n agentId,\n sourceInput: input,\n thread,\n userId,\n }).catch((nameError) => {\n logger.error(\"Failed to generate thread name:\", nameError);\n });\n }\n } catch (error) {\n logger.error(\"Failed to get or create thread:\", error);\n const platformStatus = getPlatformErrorStatus(error);\n return Response.json(\n {\n error: \"Failed to initialize thread\",\n },\n {\n status:\n platformStatus !== undefined &&\n platformStatus >= 400 &&\n platformStatus < 500\n ? platformStatus\n : 502,\n },\n );\n }\n\n // MCP App resources are presentation data. Initialize the thread through the\n // usual path, then fetch without claiming its mutation lock so an approval\n // can continue while the resource server is still answering.\n if (isDirectResourceRead) {\n try {\n if (thread.agentId && thread.agentId !== agentId) {\n return Response.json(\n { error: \"Thread belongs to another agent\" },\n { status: 403 },\n );\n }\n agent.threadId = thread.id;\n const run = await agent.runAgent({\n runId: input.runId,\n tools: input.tools,\n context: input.context,\n forwardedProps: input.forwardedProps,\n });\n return Response.json({\n kind: \"mcp-resource-read\",\n threadId: thread.id,\n runId: input.runId,\n result: run.result ?? null,\n });\n } catch (error) {\n logger.error(\"MCP resource read failed:\", error);\n const status = getPlatformErrorStatus(error);\n return Response.json(\n { error: \"MCP resource read failed\" },\n { status: status && status >= 400 && status < 500 ? status : 502 },\n );\n }\n }\n\n let canonicalThreadId = input.threadId;\n let canonicalRunId = input.runId;\n let joinToken: string | undefined;\n let backendThreadId: string | undefined;\n let lockTtlSeconds: number | undefined;\n let lockRequestedAt = 0;\n try {\n // The platform starts the lock's TTL when it handles the request, so time\n // the lifetime from the send rather than from the response.\n lockRequestedAt = Date.now();\n const lockResult = await runtime.intelligence.ɵacquireThreadLock({\n supportsBackendThreadId: true,\n threadId: input.threadId,\n runId: input.runId,\n userId,\n agentId,\n ...(learningContainerId !== undefined ? { learningContainerId } : {}),\n ...(requestId !== undefined ? { requestId } : {}),\n ...(runtime.lockKeyPrefix !== undefined\n ? { lockKeyPrefix: runtime.lockKeyPrefix }\n : {}),\n ttlSeconds: runtime.lockTtlSeconds,\n });\n canonicalThreadId = lockResult.threadId;\n canonicalRunId = lockResult.runId;\n joinToken = lockResult.joinToken;\n backendThreadId = lockResult.backendThreadId;\n lockTtlSeconds = lockResult.ttlSeconds;\n } catch (error) {\n logger.error(\"Thread lock denied:\", error);\n const platformStatus = getPlatformErrorStatus(error);\n return Response.json(\n {\n error: \"Thread lock denied\",\n },\n {\n status: platformStatus === 409 ? 409 : 502,\n },\n );\n }\n\n const cleanupLock = (reason: string): Promise<void> =>\n runtime.intelligence\n .ɵcleanupThreadLock({\n threadId: canonicalThreadId || input.threadId,\n runId: canonicalRunId || input.runId,\n })\n .catch((cleanupError) => {\n logger.error(\n { err: cleanupError, reason },\n \"Failed to cleanup thread lock\",\n );\n });\n\n if (!canonicalThreadId || !canonicalRunId || !joinToken) {\n await cleanupLock(\"malformed-lock-response\");\n return Response.json(\n {\n error: \"Run connection credentials not available\",\n message:\n \"Intelligence platform did not return canonical threadId, runId, and joinToken\",\n },\n { status: 502 },\n );\n }\n\n const canonicalInput: RunAgentInput = {\n ...input,\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n };\n\n let persistedInputMessages: Message[] | undefined;\n if (Array.isArray(input.messages)) {\n try {\n const historicMessageIds = new Set(\n await runtime.intelligence.ɵgetThreadMessageIds({\n threadId: canonicalThreadId,\n userId,\n }),\n );\n persistedInputMessages = input.messages.filter(\n (message) => !historicMessageIds.has(message.id),\n );\n } catch (error) {\n logger.error(\"Thread history lookup failed:\", error);\n await cleanupLock(\"thread-history-lookup-failed\");\n return Response.json(\n {\n error: \"Thread history lookup failed\",\n },\n { status: 502 },\n );\n }\n }\n\n runtimeTelemetry.capture(\"oss.runtime.agent_execution_stream_started\", {});\n\n // Keep the thread lock alive while the run executes. Transient renewal\n // failures are retried within the lock's remaining TTL; only a lost lock\n // (or running out of time) aborts the run.\n const heartbeat = startThreadLockHeartbeat({\n renew: (signal) =>\n runtime.intelligence.ɵrenewThreadLock({\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n ttlSeconds: runtime.lockTtlSeconds,\n ...(runtime.lockKeyPrefix !== undefined\n ? { lockKeyPrefix: runtime.lockKeyPrefix }\n : {}),\n signal,\n }),\n intervalMs: runtime.lockHeartbeatIntervalSeconds * 1_000,\n fallbackTtlSeconds: runtime.lockTtlSeconds,\n // The acquire round trip and the history lookup above both run between\n // the lock request and now, so pass the lifetime the platform set minus\n // the time already spent.\n initialTtlSeconds:\n lockTtlSeconds === undefined\n ? undefined\n : lockTtlSeconds - (Date.now() - lockRequestedAt) / 1_000,\n onLost: (err) => {\n logger.error(\"Failed to renew thread lock:\", err);\n try {\n agent.abortRun();\n } catch (abortError) {\n logger.error(\n \"Failed to abort agent after lock renewal failure:\",\n abortError,\n );\n }\n },\n });\n\n const clearHeartbeat = () => {\n heartbeat.stop();\n };\n\n const runStarted = { current: false };\n let immediateStartupErrorMessage: string | undefined;\n let immediateStartupCleanup: Promise<void> | undefined;\n\n const runRequest: AgentRunnerRunRequest = {\n threadId: canonicalThreadId,\n ...(backendThreadId === undefined ? {} : { backendThreadId }),\n agent,\n input: canonicalInput,\n ...(persistedInputMessages !== undefined ? { persistedInputMessages } : {}),\n };\n\n const runtimeErrorReporter = getRuntimeErrorReporter(runtime);\n let agentErrorReported = false;\n const reportAgentError = (error: unknown, phase: RuntimeErrorPhase) => {\n if (agentErrorReported) return;\n agentErrorReported = true;\n // Analytics describes the outcome; only the application-owned reporter\n // receives diagnostics that may contain customer or upstream content.\n runtimeTelemetry.capture(\"oss.runtime.agent_execution_stream_errored\", {\n error: \"AGENT_EXECUTION_FAILED\",\n });\n runtimeErrorReporter?.report({\n request,\n error,\n operation: \"agent.run\",\n agentId,\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n phase,\n startTime,\n });\n };\n\n try {\n const runStart = hasRunnerStartupBoundary(runtime.runner)\n ? runtime.runner.runWithStartupBoundary(runRequest)\n : {\n events: runtime.runner.run(runRequest),\n startup: Promise.resolve(),\n };\n\n runStart.events.subscribe({\n next: (event: BaseEvent) => {\n if (event.type === EventType.RUN_STARTED) {\n runStarted.current = true;\n }\n if (event.type === EventType.RUN_ERROR) {\n const message =\n \"message\" in event && typeof event.message === \"string\"\n ? event.message\n : \"Runner failed before the run started\";\n reportAgentError(\n new Error(message),\n runStarted.current\n ? \"intelligence.subscription\"\n : \"intelligence.startup\",\n );\n if (!runStarted.current) {\n clearHeartbeat();\n immediateStartupErrorMessage = message;\n immediateStartupCleanup = cleanupLock(\"runner-start-failed\");\n }\n }\n },\n error: (error) => {\n reportAgentError(\n error,\n runStarted.current\n ? \"intelligence.subscription\"\n : \"intelligence.startup\",\n );\n clearHeartbeat();\n if (!runStarted.current) {\n immediateStartupErrorMessage =\n error instanceof Error ? error.message : String(error);\n immediateStartupCleanup = cleanupLock(\"runner-start-error\");\n } else {\n cleanupLock(\"runner-error\");\n }\n logger.error(\"Error running agent:\", error);\n },\n complete: () => {\n clearHeartbeat();\n // Preserve the existing completion count even when the stream contains\n // RUN_ERROR. Failure reporting is separate and carries only a safe code.\n runtimeTelemetry.capture(\n \"oss.runtime.agent_execution_stream_ended\",\n {},\n );\n },\n });\n\n await runStart.startup;\n } catch (error) {\n reportAgentError(error, \"intelligence.startup\");\n clearHeartbeat();\n await (immediateStartupCleanup ?? cleanupLock(\"runner-start-threw\"));\n logger.error(\"Error starting agent runner:\", error);\n return Response.json(\n {\n error: \"Failed to start runner\",\n message: error instanceof Error ? error.message : String(error),\n },\n { status: 502 },\n );\n }\n\n if (immediateStartupErrorMessage) {\n await immediateStartupCleanup;\n return Response.json(\n {\n error: \"Failed to start runner\",\n message: immediateStartupErrorMessage,\n },\n { status: 502 },\n );\n }\n\n // IntelligenceAgentRunner resolves this boundary after Phoenix channel join.\n // Other runner implementations fall back to construction/subscription errors.\n return Response.json(\n {\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n joinToken,\n realtime: buildRealtimeConnectionInfo({\n clientUrl: runtime.intelligence.ɵgetClientWsUrl(),\n threadId: canonicalThreadId,\n }),\n },\n {\n headers: { \"Cache-Control\": \"no-cache\" },\n },\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { isHandlerResponse } from "../shared/json-response.mjs";
|
|
2
|
+
import { resolveLearningContainerId, resolveLearningContainerSelector } from "../../core/learning.mjs";
|
|
3
|
+
import { getPlatformErrorStatus } from "../shared/intelligence-utils.mjs";
|
|
4
|
+
import { resolveIntelligenceUser } from "../shared/resolve-intelligence-user.mjs";
|
|
5
|
+
import telemetry from "../../telemetry/telemetry-client.mjs";
|
|
6
|
+
import { getRuntimeErrorReporter } from "../../core/runtime-error-reporter.mjs";
|
|
7
|
+
import { startThreadLockHeartbeat } from "../../intelligence-platform/thread-lock-heartbeat.mjs";
|
|
8
|
+
import { generateThreadNameForNewThread } from "./thread-names.mjs";
|
|
9
|
+
import { logger } from "@copilotkit/shared";
|
|
10
|
+
import { EventType } from "@ag-ui/client";
|
|
11
|
+
|
|
12
|
+
//#region src/runtime/handlers/intelligence/run.ts
|
|
13
|
+
/**
|
|
14
|
+
* Builds browser-facing realtime connection metadata owned by the runtime.
|
|
15
|
+
*/
|
|
16
|
+
function buildRealtimeConnectionInfo(params) {
|
|
17
|
+
return {
|
|
18
|
+
clientUrl: params.clientUrl,
|
|
19
|
+
topic: `thread:${params.threadId}`
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function hasRunnerStartupBoundary(runner) {
|
|
23
|
+
return typeof runner.runWithStartupBoundary === "function" && (Object.prototype.hasOwnProperty.call(runner, "runWithStartupBoundary") || Object.prototype.hasOwnProperty.call(runner, "threads"));
|
|
24
|
+
}
|
|
25
|
+
async function handleIntelligenceRun({ runtime, request, agentId, agent, input, startTime }) {
|
|
26
|
+
const runtimeTelemetry = runtime.telemetry ?? telemetry;
|
|
27
|
+
if (!runtime.intelligence) return Response.json({
|
|
28
|
+
error: "Intelligence not configured",
|
|
29
|
+
message: "Intelligence mode requires a CopilotKitIntelligence"
|
|
30
|
+
}, { status: 500 });
|
|
31
|
+
const user = await resolveIntelligenceUser({
|
|
32
|
+
runtime,
|
|
33
|
+
request
|
|
34
|
+
});
|
|
35
|
+
if (isHandlerResponse(user)) return user;
|
|
36
|
+
const userId = user.id;
|
|
37
|
+
const proxyRequest = input.forwardedProps?.__proxiedMCPRequest;
|
|
38
|
+
const isDirectResourceRead = input.forwardedProps?.__copilotkitMcpResourceReadOnly === true && proxyRequest && typeof proxyRequest === "object" && proxyRequest.method === "resources/read";
|
|
39
|
+
const forwardedRequestId = input.forwardedProps?.__copilotkitRequestId;
|
|
40
|
+
const requestId = typeof forwardedRequestId === "string" && forwardedRequestId.length > 0 ? forwardedRequestId : void 0;
|
|
41
|
+
let learningContainerId;
|
|
42
|
+
try {
|
|
43
|
+
const selector = runtime.intelligence.ɵgetLearningContainerId?.();
|
|
44
|
+
learningContainerId = selector ? await resolveLearningContainerSelector(selector, {
|
|
45
|
+
surface: "web",
|
|
46
|
+
user,
|
|
47
|
+
agentId,
|
|
48
|
+
input
|
|
49
|
+
}) : await resolveLearningContainerId(runtime.learning, {
|
|
50
|
+
surface: "web",
|
|
51
|
+
request,
|
|
52
|
+
threadId: input.threadId,
|
|
53
|
+
runId: input.runId,
|
|
54
|
+
agentId,
|
|
55
|
+
userId
|
|
56
|
+
});
|
|
57
|
+
} catch (error) {
|
|
58
|
+
logger.error("Failed to resolve Learning Container:", error);
|
|
59
|
+
return Response.json({ error: "Failed to resolve Learning Container" }, { status: 500 });
|
|
60
|
+
}
|
|
61
|
+
let thread;
|
|
62
|
+
try {
|
|
63
|
+
const initialized = await runtime.intelligence.getOrCreateThread({
|
|
64
|
+
threadId: input.threadId,
|
|
65
|
+
userId,
|
|
66
|
+
agentId,
|
|
67
|
+
...learningContainerId !== void 0 ? { learningContainerId } : {}
|
|
68
|
+
});
|
|
69
|
+
thread = initialized.thread;
|
|
70
|
+
const { created } = initialized;
|
|
71
|
+
if (created && runtime.generateThreadNames && !thread.name?.trim()) generateThreadNameForNewThread({
|
|
72
|
+
runtime,
|
|
73
|
+
request,
|
|
74
|
+
agentId,
|
|
75
|
+
sourceInput: input,
|
|
76
|
+
thread,
|
|
77
|
+
userId
|
|
78
|
+
}).catch((nameError) => {
|
|
79
|
+
logger.error("Failed to generate thread name:", nameError);
|
|
80
|
+
});
|
|
81
|
+
} catch (error) {
|
|
82
|
+
logger.error("Failed to get or create thread:", error);
|
|
83
|
+
const platformStatus = getPlatformErrorStatus(error);
|
|
84
|
+
return Response.json({ error: "Failed to initialize thread" }, { status: platformStatus !== void 0 && platformStatus >= 400 && platformStatus < 500 ? platformStatus : 502 });
|
|
85
|
+
}
|
|
86
|
+
if (isDirectResourceRead) try {
|
|
87
|
+
if (thread.agentId && thread.agentId !== agentId) return Response.json({ error: "Thread belongs to another agent" }, { status: 403 });
|
|
88
|
+
agent.threadId = thread.id;
|
|
89
|
+
const run = await agent.runAgent({
|
|
90
|
+
runId: input.runId,
|
|
91
|
+
tools: input.tools,
|
|
92
|
+
context: input.context,
|
|
93
|
+
forwardedProps: input.forwardedProps
|
|
94
|
+
});
|
|
95
|
+
return Response.json({
|
|
96
|
+
kind: "mcp-resource-read",
|
|
97
|
+
threadId: thread.id,
|
|
98
|
+
runId: input.runId,
|
|
99
|
+
result: run.result ?? null
|
|
100
|
+
});
|
|
101
|
+
} catch (error) {
|
|
102
|
+
logger.error("MCP resource read failed:", error);
|
|
103
|
+
const status = getPlatformErrorStatus(error);
|
|
104
|
+
return Response.json({ error: "MCP resource read failed" }, { status: status && status >= 400 && status < 500 ? status : 502 });
|
|
105
|
+
}
|
|
106
|
+
let canonicalThreadId = input.threadId;
|
|
107
|
+
let canonicalRunId = input.runId;
|
|
108
|
+
let joinToken;
|
|
109
|
+
let backendThreadId;
|
|
110
|
+
let lockTtlSeconds;
|
|
111
|
+
let lockRequestedAt = 0;
|
|
112
|
+
try {
|
|
113
|
+
lockRequestedAt = Date.now();
|
|
114
|
+
const lockResult = await runtime.intelligence.ɵacquireThreadLock({
|
|
115
|
+
supportsBackendThreadId: true,
|
|
116
|
+
threadId: input.threadId,
|
|
117
|
+
runId: input.runId,
|
|
118
|
+
userId,
|
|
119
|
+
agentId,
|
|
120
|
+
...learningContainerId !== void 0 ? { learningContainerId } : {},
|
|
121
|
+
...requestId !== void 0 ? { requestId } : {},
|
|
122
|
+
...runtime.lockKeyPrefix !== void 0 ? { lockKeyPrefix: runtime.lockKeyPrefix } : {},
|
|
123
|
+
ttlSeconds: runtime.lockTtlSeconds
|
|
124
|
+
});
|
|
125
|
+
canonicalThreadId = lockResult.threadId;
|
|
126
|
+
canonicalRunId = lockResult.runId;
|
|
127
|
+
joinToken = lockResult.joinToken;
|
|
128
|
+
backendThreadId = lockResult.backendThreadId;
|
|
129
|
+
lockTtlSeconds = lockResult.ttlSeconds;
|
|
130
|
+
} catch (error) {
|
|
131
|
+
logger.error("Thread lock denied:", error);
|
|
132
|
+
const platformStatus = getPlatformErrorStatus(error);
|
|
133
|
+
return Response.json({ error: "Thread lock denied" }, { status: platformStatus === 409 ? 409 : 502 });
|
|
134
|
+
}
|
|
135
|
+
const cleanupLock = (reason) => runtime.intelligence.ɵcleanupThreadLock({
|
|
136
|
+
threadId: canonicalThreadId || input.threadId,
|
|
137
|
+
runId: canonicalRunId || input.runId
|
|
138
|
+
}).catch((cleanupError) => {
|
|
139
|
+
logger.error({
|
|
140
|
+
err: cleanupError,
|
|
141
|
+
reason
|
|
142
|
+
}, "Failed to cleanup thread lock");
|
|
143
|
+
});
|
|
144
|
+
if (!canonicalThreadId || !canonicalRunId || !joinToken) {
|
|
145
|
+
await cleanupLock("malformed-lock-response");
|
|
146
|
+
return Response.json({
|
|
147
|
+
error: "Run connection credentials not available",
|
|
148
|
+
message: "Intelligence platform did not return canonical threadId, runId, and joinToken"
|
|
149
|
+
}, { status: 502 });
|
|
150
|
+
}
|
|
151
|
+
const canonicalInput = {
|
|
152
|
+
...input,
|
|
153
|
+
threadId: canonicalThreadId,
|
|
154
|
+
runId: canonicalRunId
|
|
155
|
+
};
|
|
156
|
+
let persistedInputMessages;
|
|
157
|
+
if (Array.isArray(input.messages)) try {
|
|
158
|
+
const historicMessageIds = new Set(await runtime.intelligence.ɵgetThreadMessageIds({
|
|
159
|
+
threadId: canonicalThreadId,
|
|
160
|
+
userId
|
|
161
|
+
}));
|
|
162
|
+
persistedInputMessages = input.messages.filter((message) => !historicMessageIds.has(message.id));
|
|
163
|
+
} catch (error) {
|
|
164
|
+
logger.error("Thread history lookup failed:", error);
|
|
165
|
+
await cleanupLock("thread-history-lookup-failed");
|
|
166
|
+
return Response.json({ error: "Thread history lookup failed" }, { status: 502 });
|
|
167
|
+
}
|
|
168
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_started", {});
|
|
169
|
+
const heartbeat = startThreadLockHeartbeat({
|
|
170
|
+
renew: (signal) => runtime.intelligence.ɵrenewThreadLock({
|
|
171
|
+
threadId: canonicalThreadId,
|
|
172
|
+
runId: canonicalRunId,
|
|
173
|
+
ttlSeconds: runtime.lockTtlSeconds,
|
|
174
|
+
...runtime.lockKeyPrefix !== void 0 ? { lockKeyPrefix: runtime.lockKeyPrefix } : {},
|
|
175
|
+
signal
|
|
176
|
+
}),
|
|
177
|
+
intervalMs: runtime.lockHeartbeatIntervalSeconds * 1e3,
|
|
178
|
+
fallbackTtlSeconds: runtime.lockTtlSeconds,
|
|
179
|
+
initialTtlSeconds: lockTtlSeconds === void 0 ? void 0 : lockTtlSeconds - (Date.now() - lockRequestedAt) / 1e3,
|
|
180
|
+
onLost: (err) => {
|
|
181
|
+
logger.error("Failed to renew thread lock:", err);
|
|
182
|
+
try {
|
|
183
|
+
agent.abortRun();
|
|
184
|
+
} catch (abortError) {
|
|
185
|
+
logger.error("Failed to abort agent after lock renewal failure:", abortError);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
const clearHeartbeat = () => {
|
|
190
|
+
heartbeat.stop();
|
|
191
|
+
};
|
|
192
|
+
const runStarted = { current: false };
|
|
193
|
+
let immediateStartupErrorMessage;
|
|
194
|
+
let immediateStartupCleanup;
|
|
195
|
+
const runRequest = {
|
|
196
|
+
threadId: canonicalThreadId,
|
|
197
|
+
...backendThreadId === void 0 ? {} : { backendThreadId },
|
|
198
|
+
agent,
|
|
199
|
+
input: canonicalInput,
|
|
200
|
+
...persistedInputMessages !== void 0 ? { persistedInputMessages } : {}
|
|
201
|
+
};
|
|
202
|
+
const runtimeErrorReporter = getRuntimeErrorReporter(runtime);
|
|
203
|
+
let agentErrorReported = false;
|
|
204
|
+
const reportAgentError = (error, phase) => {
|
|
205
|
+
if (agentErrorReported) return;
|
|
206
|
+
agentErrorReported = true;
|
|
207
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_errored", { error: "AGENT_EXECUTION_FAILED" });
|
|
208
|
+
runtimeErrorReporter?.report({
|
|
209
|
+
request,
|
|
210
|
+
error,
|
|
211
|
+
operation: "agent.run",
|
|
212
|
+
agentId,
|
|
213
|
+
threadId: canonicalThreadId,
|
|
214
|
+
runId: canonicalRunId,
|
|
215
|
+
phase,
|
|
216
|
+
startTime
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
try {
|
|
220
|
+
const runStart = hasRunnerStartupBoundary(runtime.runner) ? runtime.runner.runWithStartupBoundary(runRequest) : {
|
|
221
|
+
events: runtime.runner.run(runRequest),
|
|
222
|
+
startup: Promise.resolve()
|
|
223
|
+
};
|
|
224
|
+
runStart.events.subscribe({
|
|
225
|
+
next: (event) => {
|
|
226
|
+
if (event.type === EventType.RUN_STARTED) runStarted.current = true;
|
|
227
|
+
if (event.type === EventType.RUN_ERROR) {
|
|
228
|
+
const message = "message" in event && typeof event.message === "string" ? event.message : "Runner failed before the run started";
|
|
229
|
+
reportAgentError(new Error(message), runStarted.current ? "intelligence.subscription" : "intelligence.startup");
|
|
230
|
+
if (!runStarted.current) {
|
|
231
|
+
clearHeartbeat();
|
|
232
|
+
immediateStartupErrorMessage = message;
|
|
233
|
+
immediateStartupCleanup = cleanupLock("runner-start-failed");
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
error: (error) => {
|
|
238
|
+
reportAgentError(error, runStarted.current ? "intelligence.subscription" : "intelligence.startup");
|
|
239
|
+
clearHeartbeat();
|
|
240
|
+
if (!runStarted.current) {
|
|
241
|
+
immediateStartupErrorMessage = error instanceof Error ? error.message : String(error);
|
|
242
|
+
immediateStartupCleanup = cleanupLock("runner-start-error");
|
|
243
|
+
} else cleanupLock("runner-error");
|
|
244
|
+
logger.error("Error running agent:", error);
|
|
245
|
+
},
|
|
246
|
+
complete: () => {
|
|
247
|
+
clearHeartbeat();
|
|
248
|
+
runtimeTelemetry.capture("oss.runtime.agent_execution_stream_ended", {});
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
await runStart.startup;
|
|
252
|
+
} catch (error) {
|
|
253
|
+
reportAgentError(error, "intelligence.startup");
|
|
254
|
+
clearHeartbeat();
|
|
255
|
+
await (immediateStartupCleanup ?? cleanupLock("runner-start-threw"));
|
|
256
|
+
logger.error("Error starting agent runner:", error);
|
|
257
|
+
return Response.json({
|
|
258
|
+
error: "Failed to start runner",
|
|
259
|
+
message: error instanceof Error ? error.message : String(error)
|
|
260
|
+
}, { status: 502 });
|
|
261
|
+
}
|
|
262
|
+
if (immediateStartupErrorMessage) {
|
|
263
|
+
await immediateStartupCleanup;
|
|
264
|
+
return Response.json({
|
|
265
|
+
error: "Failed to start runner",
|
|
266
|
+
message: immediateStartupErrorMessage
|
|
267
|
+
}, { status: 502 });
|
|
268
|
+
}
|
|
269
|
+
return Response.json({
|
|
270
|
+
threadId: canonicalThreadId,
|
|
271
|
+
runId: canonicalRunId,
|
|
272
|
+
joinToken,
|
|
273
|
+
realtime: buildRealtimeConnectionInfo({
|
|
274
|
+
clientUrl: runtime.intelligence.ɵgetClientWsUrl(),
|
|
275
|
+
threadId: canonicalThreadId
|
|
276
|
+
})
|
|
277
|
+
}, { headers: { "Cache-Control": "no-cache" } });
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
//#endregion
|
|
281
|
+
export { handleIntelligenceRun };
|
|
282
|
+
//# sourceMappingURL=run.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.mjs","names":[],"sources":["../../../../src/runtime/handlers/intelligence/run.ts"],"sourcesContent":["import type {\n AbstractAgent,\n BaseEvent,\n Message,\n RunAgentInput,\n} from \"@ag-ui/client\";\nimport { EventType } from \"@ag-ui/client\";\nimport type { CopilotIntelligenceRuntimeLike } from \"../../core/runtime\";\nimport { generateThreadNameForNewThread } from \"./thread-names\";\nimport { logger } from \"@copilotkit/shared\";\nimport { telemetry } from \"../../telemetry\";\nimport { resolveIntelligenceUser } from \"../shared/resolve-intelligence-user\";\nimport { isHandlerResponse } from \"../shared/json-response\";\nimport type { AgentRunnerRunRequest } from \"../../runner/agent-runner\";\nimport type { Observable } from \"rxjs\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport type { RuntimeErrorPhase } from \"../../core/runtime-error-reporter\";\nimport {\n resolveLearningContainerId,\n resolveLearningContainerSelector,\n} from \"../../core/learning\";\nimport { getPlatformErrorStatus } from \"../shared/intelligence-utils\";\nimport { startThreadLockHeartbeat } from \"../../intelligence-platform/thread-lock-heartbeat\";\nimport type { ThreadSummary } from \"../../intelligence-platform\";\n\n/**\n * Builds browser-facing realtime connection metadata owned by the runtime.\n */\nfunction buildRealtimeConnectionInfo(params: {\n clientUrl: string;\n threadId: string;\n}): { clientUrl: string; topic: string } {\n return {\n clientUrl: params.clientUrl,\n topic: `thread:${params.threadId}`,\n };\n}\n\ninterface RunnerStartupBoundary {\n events: Observable<BaseEvent>;\n startup: Promise<void>;\n}\n\ninterface RunnerWithStartupBoundary {\n runWithStartupBoundary(request: AgentRunnerRunRequest): RunnerStartupBoundary;\n}\n\nfunction hasRunnerStartupBoundary(\n runner: CopilotIntelligenceRuntimeLike[\"runner\"],\n): runner is CopilotIntelligenceRuntimeLike[\"runner\"] &\n RunnerWithStartupBoundary {\n const candidate = runner as { runWithStartupBoundary?: unknown };\n\n return (\n typeof candidate.runWithStartupBoundary === \"function\" &&\n (Object.prototype.hasOwnProperty.call(runner, \"runWithStartupBoundary\") ||\n Object.prototype.hasOwnProperty.call(runner, \"threads\"))\n );\n}\n\ninterface HandleIntelligenceRunParams {\n runtime: CopilotIntelligenceRuntimeLike;\n request: Request;\n agentId: string;\n agent: AbstractAgent;\n input: RunAgentInput;\n startTime?: number;\n}\n\nexport async function handleIntelligenceRun({\n runtime,\n request,\n agentId,\n agent,\n input,\n startTime,\n}: HandleIntelligenceRunParams): Promise<Response> {\n const runtimeTelemetry = runtime.telemetry ?? telemetry;\n\n if (!runtime.intelligence) {\n return Response.json(\n {\n error: \"Intelligence not configured\",\n message: \"Intelligence mode requires a CopilotKitIntelligence\",\n },\n { status: 500 },\n );\n }\n\n const user = await resolveIntelligenceUser({ runtime, request });\n if (isHandlerResponse(user)) {\n return user;\n }\n const userId = user.id;\n\n const proxyRequest = (\n input.forwardedProps as Record<string, unknown> | undefined\n )?.__proxiedMCPRequest;\n const isDirectResourceRead =\n input.forwardedProps?.__copilotkitMcpResourceReadOnly === true &&\n proxyRequest &&\n typeof proxyRequest === \"object\" &&\n (proxyRequest as { method?: unknown }).method === \"resources/read\";\n\n // CopilotKit core sends one request ID across a request's follow-up runs\n // and resumes. Older clients send none, and the platform then uses the run ID.\n const forwardedRequestId = input.forwardedProps?.__copilotkitRequestId;\n const requestId =\n typeof forwardedRequestId === \"string\" && forwardedRequestId.length > 0\n ? forwardedRequestId\n : undefined;\n\n let learningContainerId: string | undefined;\n try {\n const selector = runtime.intelligence.ɵgetLearningContainerId?.();\n learningContainerId = selector\n ? await resolveLearningContainerSelector(selector, {\n surface: \"web\",\n user,\n agentId,\n input,\n })\n : await resolveLearningContainerId(runtime.learning, {\n surface: \"web\",\n request,\n threadId: input.threadId,\n runId: input.runId,\n agentId,\n userId,\n });\n } catch (error) {\n logger.error(\"Failed to resolve Learning Container:\", error);\n return Response.json(\n { error: \"Failed to resolve Learning Container\" },\n { status: 500 },\n );\n }\n\n let thread: ThreadSummary;\n try {\n const initialized = await runtime.intelligence.getOrCreateThread({\n threadId: input.threadId,\n userId,\n agentId,\n ...(learningContainerId !== undefined ? { learningContainerId } : {}),\n });\n thread = initialized.thread;\n const { created } = initialized;\n\n if (created && runtime.generateThreadNames && !thread.name?.trim()) {\n void generateThreadNameForNewThread({\n runtime,\n request,\n agentId,\n sourceInput: input,\n thread,\n userId,\n }).catch((nameError) => {\n logger.error(\"Failed to generate thread name:\", nameError);\n });\n }\n } catch (error) {\n logger.error(\"Failed to get or create thread:\", error);\n const platformStatus = getPlatformErrorStatus(error);\n return Response.json(\n {\n error: \"Failed to initialize thread\",\n },\n {\n status:\n platformStatus !== undefined &&\n platformStatus >= 400 &&\n platformStatus < 500\n ? platformStatus\n : 502,\n },\n );\n }\n\n // MCP App resources are presentation data. Initialize the thread through the\n // usual path, then fetch without claiming its mutation lock so an approval\n // can continue while the resource server is still answering.\n if (isDirectResourceRead) {\n try {\n if (thread.agentId && thread.agentId !== agentId) {\n return Response.json(\n { error: \"Thread belongs to another agent\" },\n { status: 403 },\n );\n }\n agent.threadId = thread.id;\n const run = await agent.runAgent({\n runId: input.runId,\n tools: input.tools,\n context: input.context,\n forwardedProps: input.forwardedProps,\n });\n return Response.json({\n kind: \"mcp-resource-read\",\n threadId: thread.id,\n runId: input.runId,\n result: run.result ?? null,\n });\n } catch (error) {\n logger.error(\"MCP resource read failed:\", error);\n const status = getPlatformErrorStatus(error);\n return Response.json(\n { error: \"MCP resource read failed\" },\n { status: status && status >= 400 && status < 500 ? status : 502 },\n );\n }\n }\n\n let canonicalThreadId = input.threadId;\n let canonicalRunId = input.runId;\n let joinToken: string | undefined;\n let backendThreadId: string | undefined;\n let lockTtlSeconds: number | undefined;\n let lockRequestedAt = 0;\n try {\n // The platform starts the lock's TTL when it handles the request, so time\n // the lifetime from the send rather than from the response.\n lockRequestedAt = Date.now();\n const lockResult = await runtime.intelligence.ɵacquireThreadLock({\n supportsBackendThreadId: true,\n threadId: input.threadId,\n runId: input.runId,\n userId,\n agentId,\n ...(learningContainerId !== undefined ? { learningContainerId } : {}),\n ...(requestId !== undefined ? { requestId } : {}),\n ...(runtime.lockKeyPrefix !== undefined\n ? { lockKeyPrefix: runtime.lockKeyPrefix }\n : {}),\n ttlSeconds: runtime.lockTtlSeconds,\n });\n canonicalThreadId = lockResult.threadId;\n canonicalRunId = lockResult.runId;\n joinToken = lockResult.joinToken;\n backendThreadId = lockResult.backendThreadId;\n lockTtlSeconds = lockResult.ttlSeconds;\n } catch (error) {\n logger.error(\"Thread lock denied:\", error);\n const platformStatus = getPlatformErrorStatus(error);\n return Response.json(\n {\n error: \"Thread lock denied\",\n },\n {\n status: platformStatus === 409 ? 409 : 502,\n },\n );\n }\n\n const cleanupLock = (reason: string): Promise<void> =>\n runtime.intelligence\n .ɵcleanupThreadLock({\n threadId: canonicalThreadId || input.threadId,\n runId: canonicalRunId || input.runId,\n })\n .catch((cleanupError) => {\n logger.error(\n { err: cleanupError, reason },\n \"Failed to cleanup thread lock\",\n );\n });\n\n if (!canonicalThreadId || !canonicalRunId || !joinToken) {\n await cleanupLock(\"malformed-lock-response\");\n return Response.json(\n {\n error: \"Run connection credentials not available\",\n message:\n \"Intelligence platform did not return canonical threadId, runId, and joinToken\",\n },\n { status: 502 },\n );\n }\n\n const canonicalInput: RunAgentInput = {\n ...input,\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n };\n\n let persistedInputMessages: Message[] | undefined;\n if (Array.isArray(input.messages)) {\n try {\n const historicMessageIds = new Set(\n await runtime.intelligence.ɵgetThreadMessageIds({\n threadId: canonicalThreadId,\n userId,\n }),\n );\n persistedInputMessages = input.messages.filter(\n (message) => !historicMessageIds.has(message.id),\n );\n } catch (error) {\n logger.error(\"Thread history lookup failed:\", error);\n await cleanupLock(\"thread-history-lookup-failed\");\n return Response.json(\n {\n error: \"Thread history lookup failed\",\n },\n { status: 502 },\n );\n }\n }\n\n runtimeTelemetry.capture(\"oss.runtime.agent_execution_stream_started\", {});\n\n // Keep the thread lock alive while the run executes. Transient renewal\n // failures are retried within the lock's remaining TTL; only a lost lock\n // (or running out of time) aborts the run.\n const heartbeat = startThreadLockHeartbeat({\n renew: (signal) =>\n runtime.intelligence.ɵrenewThreadLock({\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n ttlSeconds: runtime.lockTtlSeconds,\n ...(runtime.lockKeyPrefix !== undefined\n ? { lockKeyPrefix: runtime.lockKeyPrefix }\n : {}),\n signal,\n }),\n intervalMs: runtime.lockHeartbeatIntervalSeconds * 1_000,\n fallbackTtlSeconds: runtime.lockTtlSeconds,\n // The acquire round trip and the history lookup above both run between\n // the lock request and now, so pass the lifetime the platform set minus\n // the time already spent.\n initialTtlSeconds:\n lockTtlSeconds === undefined\n ? undefined\n : lockTtlSeconds - (Date.now() - lockRequestedAt) / 1_000,\n onLost: (err) => {\n logger.error(\"Failed to renew thread lock:\", err);\n try {\n agent.abortRun();\n } catch (abortError) {\n logger.error(\n \"Failed to abort agent after lock renewal failure:\",\n abortError,\n );\n }\n },\n });\n\n const clearHeartbeat = () => {\n heartbeat.stop();\n };\n\n const runStarted = { current: false };\n let immediateStartupErrorMessage: string | undefined;\n let immediateStartupCleanup: Promise<void> | undefined;\n\n const runRequest: AgentRunnerRunRequest = {\n threadId: canonicalThreadId,\n ...(backendThreadId === undefined ? {} : { backendThreadId }),\n agent,\n input: canonicalInput,\n ...(persistedInputMessages !== undefined ? { persistedInputMessages } : {}),\n };\n\n const runtimeErrorReporter = getRuntimeErrorReporter(runtime);\n let agentErrorReported = false;\n const reportAgentError = (error: unknown, phase: RuntimeErrorPhase) => {\n if (agentErrorReported) return;\n agentErrorReported = true;\n // Analytics describes the outcome; only the application-owned reporter\n // receives diagnostics that may contain customer or upstream content.\n runtimeTelemetry.capture(\"oss.runtime.agent_execution_stream_errored\", {\n error: \"AGENT_EXECUTION_FAILED\",\n });\n runtimeErrorReporter?.report({\n request,\n error,\n operation: \"agent.run\",\n agentId,\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n phase,\n startTime,\n });\n };\n\n try {\n const runStart = hasRunnerStartupBoundary(runtime.runner)\n ? runtime.runner.runWithStartupBoundary(runRequest)\n : {\n events: runtime.runner.run(runRequest),\n startup: Promise.resolve(),\n };\n\n runStart.events.subscribe({\n next: (event: BaseEvent) => {\n if (event.type === EventType.RUN_STARTED) {\n runStarted.current = true;\n }\n if (event.type === EventType.RUN_ERROR) {\n const message =\n \"message\" in event && typeof event.message === \"string\"\n ? event.message\n : \"Runner failed before the run started\";\n reportAgentError(\n new Error(message),\n runStarted.current\n ? \"intelligence.subscription\"\n : \"intelligence.startup\",\n );\n if (!runStarted.current) {\n clearHeartbeat();\n immediateStartupErrorMessage = message;\n immediateStartupCleanup = cleanupLock(\"runner-start-failed\");\n }\n }\n },\n error: (error) => {\n reportAgentError(\n error,\n runStarted.current\n ? \"intelligence.subscription\"\n : \"intelligence.startup\",\n );\n clearHeartbeat();\n if (!runStarted.current) {\n immediateStartupErrorMessage =\n error instanceof Error ? error.message : String(error);\n immediateStartupCleanup = cleanupLock(\"runner-start-error\");\n } else {\n cleanupLock(\"runner-error\");\n }\n logger.error(\"Error running agent:\", error);\n },\n complete: () => {\n clearHeartbeat();\n // Preserve the existing completion count even when the stream contains\n // RUN_ERROR. Failure reporting is separate and carries only a safe code.\n runtimeTelemetry.capture(\n \"oss.runtime.agent_execution_stream_ended\",\n {},\n );\n },\n });\n\n await runStart.startup;\n } catch (error) {\n reportAgentError(error, \"intelligence.startup\");\n clearHeartbeat();\n await (immediateStartupCleanup ?? cleanupLock(\"runner-start-threw\"));\n logger.error(\"Error starting agent runner:\", error);\n return Response.json(\n {\n error: \"Failed to start runner\",\n message: error instanceof Error ? error.message : String(error),\n },\n { status: 502 },\n );\n }\n\n if (immediateStartupErrorMessage) {\n await immediateStartupCleanup;\n return Response.json(\n {\n error: \"Failed to start runner\",\n message: immediateStartupErrorMessage,\n },\n { status: 502 },\n );\n }\n\n // IntelligenceAgentRunner resolves this boundary after Phoenix channel join.\n // Other runner implementations fall back to construction/subscription errors.\n return Response.json(\n {\n threadId: canonicalThreadId,\n runId: canonicalRunId,\n joinToken,\n realtime: buildRealtimeConnectionInfo({\n clientUrl: runtime.intelligence.ɵgetClientWsUrl(),\n threadId: canonicalThreadId,\n }),\n },\n {\n headers: { \"Cache-Control\": \"no-cache\" },\n },\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AA4BA,SAAS,4BAA4B,QAGI;AACvC,QAAO;EACL,WAAW,OAAO;EAClB,OAAO,UAAU,OAAO;EACzB;;AAYH,SAAS,yBACP,QAE0B;AAG1B,QACE,OAHgB,OAGC,2BAA2B,eAC3C,OAAO,UAAU,eAAe,KAAK,QAAQ,yBAAyB,IACrE,OAAO,UAAU,eAAe,KAAK,QAAQ,UAAU;;AAa7D,eAAsB,sBAAsB,EAC1C,SACA,SACA,SACA,OACA,OACA,aACiD;CACjD,MAAM,mBAAmB,QAAQ,aAAa;AAE9C,KAAI,CAAC,QAAQ,aACX,QAAO,SAAS,KACd;EACE,OAAO;EACP,SAAS;EACV,EACD,EAAE,QAAQ,KAAK,CAChB;CAGH,MAAM,OAAO,MAAM,wBAAwB;EAAE;EAAS;EAAS,CAAC;AAChE,KAAI,kBAAkB,KAAK,CACzB,QAAO;CAET,MAAM,SAAS,KAAK;CAEpB,MAAM,eACJ,MAAM,gBACL;CACH,MAAM,uBACJ,MAAM,gBAAgB,oCAAoC,QAC1D,gBACA,OAAO,iBAAiB,YACvB,aAAsC,WAAW;CAIpD,MAAM,qBAAqB,MAAM,gBAAgB;CACjD,MAAM,YACJ,OAAO,uBAAuB,YAAY,mBAAmB,SAAS,IAClE,qBACA;CAEN,IAAI;AACJ,KAAI;EACF,MAAM,WAAW,QAAQ,aAAa,2BAA2B;AACjE,wBAAsB,WAClB,MAAM,iCAAiC,UAAU;GAC/C,SAAS;GACT;GACA;GACA;GACD,CAAC,GACF,MAAM,2BAA2B,QAAQ,UAAU;GACjD,SAAS;GACT;GACA,UAAU,MAAM;GAChB,OAAO,MAAM;GACb;GACA;GACD,CAAC;UACC,OAAO;AACd,SAAO,MAAM,yCAAyC,MAAM;AAC5D,SAAO,SAAS,KACd,EAAE,OAAO,wCAAwC,EACjD,EAAE,QAAQ,KAAK,CAChB;;CAGH,IAAI;AACJ,KAAI;EACF,MAAM,cAAc,MAAM,QAAQ,aAAa,kBAAkB;GAC/D,UAAU,MAAM;GAChB;GACA;GACA,GAAI,wBAAwB,SAAY,EAAE,qBAAqB,GAAG,EAAE;GACrE,CAAC;AACF,WAAS,YAAY;EACrB,MAAM,EAAE,YAAY;AAEpB,MAAI,WAAW,QAAQ,uBAAuB,CAAC,OAAO,MAAM,MAAM,CAChE,CAAK,+BAA+B;GAClC;GACA;GACA;GACA,aAAa;GACb;GACA;GACD,CAAC,CAAC,OAAO,cAAc;AACtB,UAAO,MAAM,mCAAmC,UAAU;IAC1D;UAEG,OAAO;AACd,SAAO,MAAM,mCAAmC,MAAM;EACtD,MAAM,iBAAiB,uBAAuB,MAAM;AACpD,SAAO,SAAS,KACd,EACE,OAAO,+BACR,EACD,EACE,QACE,mBAAmB,UACnB,kBAAkB,OAClB,iBAAiB,MACb,iBACA,KACP,CACF;;AAMH,KAAI,qBACF,KAAI;AACF,MAAI,OAAO,WAAW,OAAO,YAAY,QACvC,QAAO,SAAS,KACd,EAAE,OAAO,mCAAmC,EAC5C,EAAE,QAAQ,KAAK,CAChB;AAEH,QAAM,WAAW,OAAO;EACxB,MAAM,MAAM,MAAM,MAAM,SAAS;GAC/B,OAAO,MAAM;GACb,OAAO,MAAM;GACb,SAAS,MAAM;GACf,gBAAgB,MAAM;GACvB,CAAC;AACF,SAAO,SAAS,KAAK;GACnB,MAAM;GACN,UAAU,OAAO;GACjB,OAAO,MAAM;GACb,QAAQ,IAAI,UAAU;GACvB,CAAC;UACK,OAAO;AACd,SAAO,MAAM,6BAA6B,MAAM;EAChD,MAAM,SAAS,uBAAuB,MAAM;AAC5C,SAAO,SAAS,KACd,EAAE,OAAO,4BAA4B,EACrC,EAAE,QAAQ,UAAU,UAAU,OAAO,SAAS,MAAM,SAAS,KAAK,CACnE;;CAIL,IAAI,oBAAoB,MAAM;CAC9B,IAAI,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI,kBAAkB;AACtB,KAAI;AAGF,oBAAkB,KAAK,KAAK;EAC5B,MAAM,aAAa,MAAM,QAAQ,aAAa,mBAAmB;GAC/D,yBAAyB;GACzB,UAAU,MAAM;GAChB,OAAO,MAAM;GACb;GACA;GACA,GAAI,wBAAwB,SAAY,EAAE,qBAAqB,GAAG,EAAE;GACpE,GAAI,cAAc,SAAY,EAAE,WAAW,GAAG,EAAE;GAChD,GAAI,QAAQ,kBAAkB,SAC1B,EAAE,eAAe,QAAQ,eAAe,GACxC,EAAE;GACN,YAAY,QAAQ;GACrB,CAAC;AACF,sBAAoB,WAAW;AAC/B,mBAAiB,WAAW;AAC5B,cAAY,WAAW;AACvB,oBAAkB,WAAW;AAC7B,mBAAiB,WAAW;UACrB,OAAO;AACd,SAAO,MAAM,uBAAuB,MAAM;EAC1C,MAAM,iBAAiB,uBAAuB,MAAM;AACpD,SAAO,SAAS,KACd,EACE,OAAO,sBACR,EACD,EACE,QAAQ,mBAAmB,MAAM,MAAM,KACxC,CACF;;CAGH,MAAM,eAAe,WACnB,QAAQ,aACL,mBAAmB;EAClB,UAAU,qBAAqB,MAAM;EACrC,OAAO,kBAAkB,MAAM;EAChC,CAAC,CACD,OAAO,iBAAiB;AACvB,SAAO,MACL;GAAE,KAAK;GAAc;GAAQ,EAC7B,gCACD;GACD;AAEN,KAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,WAAW;AACvD,QAAM,YAAY,0BAA0B;AAC5C,SAAO,SAAS,KACd;GACE,OAAO;GACP,SACE;GACH,EACD,EAAE,QAAQ,KAAK,CAChB;;CAGH,MAAM,iBAAgC;EACpC,GAAG;EACH,UAAU;EACV,OAAO;EACR;CAED,IAAI;AACJ,KAAI,MAAM,QAAQ,MAAM,SAAS,CAC/B,KAAI;EACF,MAAM,qBAAqB,IAAI,IAC7B,MAAM,QAAQ,aAAa,qBAAqB;GAC9C,UAAU;GACV;GACD,CAAC,CACH;AACD,2BAAyB,MAAM,SAAS,QACrC,YAAY,CAAC,mBAAmB,IAAI,QAAQ,GAAG,CACjD;UACM,OAAO;AACd,SAAO,MAAM,iCAAiC,MAAM;AACpD,QAAM,YAAY,+BAA+B;AACjD,SAAO,SAAS,KACd,EACE,OAAO,gCACR,EACD,EAAE,QAAQ,KAAK,CAChB;;AAIL,kBAAiB,QAAQ,8CAA8C,EAAE,CAAC;CAK1E,MAAM,YAAY,yBAAyB;EACzC,QAAQ,WACN,QAAQ,aAAa,iBAAiB;GACpC,UAAU;GACV,OAAO;GACP,YAAY,QAAQ;GACpB,GAAI,QAAQ,kBAAkB,SAC1B,EAAE,eAAe,QAAQ,eAAe,GACxC,EAAE;GACN;GACD,CAAC;EACJ,YAAY,QAAQ,+BAA+B;EACnD,oBAAoB,QAAQ;EAI5B,mBACE,mBAAmB,SACf,SACA,kBAAkB,KAAK,KAAK,GAAG,mBAAmB;EACxD,SAAS,QAAQ;AACf,UAAO,MAAM,gCAAgC,IAAI;AACjD,OAAI;AACF,UAAM,UAAU;YACT,YAAY;AACnB,WAAO,MACL,qDACA,WACD;;;EAGN,CAAC;CAEF,MAAM,uBAAuB;AAC3B,YAAU,MAAM;;CAGlB,MAAM,aAAa,EAAE,SAAS,OAAO;CACrC,IAAI;CACJ,IAAI;CAEJ,MAAM,aAAoC;EACxC,UAAU;EACV,GAAI,oBAAoB,SAAY,EAAE,GAAG,EAAE,iBAAiB;EAC5D;EACA,OAAO;EACP,GAAI,2BAA2B,SAAY,EAAE,wBAAwB,GAAG,EAAE;EAC3E;CAED,MAAM,uBAAuB,wBAAwB,QAAQ;CAC7D,IAAI,qBAAqB;CACzB,MAAM,oBAAoB,OAAgB,UAA6B;AACrE,MAAI,mBAAoB;AACxB,uBAAqB;AAGrB,mBAAiB,QAAQ,8CAA8C,EACrE,OAAO,0BACR,CAAC;AACF,wBAAsB,OAAO;GAC3B;GACA;GACA,WAAW;GACX;GACA,UAAU;GACV,OAAO;GACP;GACA;GACD,CAAC;;AAGJ,KAAI;EACF,MAAM,WAAW,yBAAyB,QAAQ,OAAO,GACrD,QAAQ,OAAO,uBAAuB,WAAW,GACjD;GACE,QAAQ,QAAQ,OAAO,IAAI,WAAW;GACtC,SAAS,QAAQ,SAAS;GAC3B;AAEL,WAAS,OAAO,UAAU;GACxB,OAAO,UAAqB;AAC1B,QAAI,MAAM,SAAS,UAAU,YAC3B,YAAW,UAAU;AAEvB,QAAI,MAAM,SAAS,UAAU,WAAW;KACtC,MAAM,UACJ,aAAa,SAAS,OAAO,MAAM,YAAY,WAC3C,MAAM,UACN;AACN,sBACE,IAAI,MAAM,QAAQ,EAClB,WAAW,UACP,8BACA,uBACL;AACD,SAAI,CAAC,WAAW,SAAS;AACvB,sBAAgB;AAChB,qCAA+B;AAC/B,gCAA0B,YAAY,sBAAsB;;;;GAIlE,QAAQ,UAAU;AAChB,qBACE,OACA,WAAW,UACP,8BACA,uBACL;AACD,oBAAgB;AAChB,QAAI,CAAC,WAAW,SAAS;AACvB,oCACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACxD,+BAA0B,YAAY,qBAAqB;UAE3D,aAAY,eAAe;AAE7B,WAAO,MAAM,wBAAwB,MAAM;;GAE7C,gBAAgB;AACd,oBAAgB;AAGhB,qBAAiB,QACf,4CACA,EAAE,CACH;;GAEJ,CAAC;AAEF,QAAM,SAAS;UACR,OAAO;AACd,mBAAiB,OAAO,uBAAuB;AAC/C,kBAAgB;AAChB,SAAO,2BAA2B,YAAY,qBAAqB;AACnE,SAAO,MAAM,gCAAgC,MAAM;AACnD,SAAO,SAAS,KACd;GACE,OAAO;GACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;GAChE,EACD,EAAE,QAAQ,KAAK,CAChB;;AAGH,KAAI,8BAA8B;AAChC,QAAM;AACN,SAAO,SAAS,KACd;GACE,OAAO;GACP,SAAS;GACV,EACD,EAAE,QAAQ,KAAK,CAChB;;AAKH,QAAO,SAAS,KACd;EACE,UAAU;EACV,OAAO;EACP;EACA,UAAU,4BAA4B;GACpC,WAAW,QAAQ,aAAa,iBAAiB;GACjD,UAAU;GACX,CAAC;EACH,EACD,EACE,SAAS,EAAE,iBAAiB,YAAY,EACzC,CACF"}
|